<?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>35702</bug_id>
          
          <creation_ts>2010-03-03 14:00:10 -0800</creation_ts>
          <short_desc>[Qt] Add more support for InputTextController</short_desc>
          <delta_ts>2010-10-22 11:16:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Hogan">robert</reporter>
          <assigned_to name="Robert Hogan">robert</assigned_to>
          <cc>ademar</cc>
    
    <cc>benjamin</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>ossy</cc>
    
    <cc>shenyi2006</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>195746</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-03 14:00:10 -0800</bug_when>
    <thetext>Add support for selectedRange(), setMarkedText(), insertText(),
and partial support for firstRectForCharacterRange().

Unskip tests:

fast/forms/input-maxlength-ime-preedit.html
fast/forms/input-maxlength-ime-completed.html
fast/text/international/thai-cursor-position.html
fast/events/ime-composition-events-001.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195752</commentid>
    <comment_count>1</comment_count>
      <attachid>49946</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-03 14:05:57 -0800</bug_when>
    <thetext>Created attachment 49946
Patch

I&apos;m not entirely sure of some of the changes I&apos;ve made here: the changes in inputMethodEvent in qwebpage may have side-effects I&apos;m not aware of, also I&apos;d appreciate it if someone has any pointers the FIXME in firstRectForCharacterRange!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195754</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-03 14:08:54 -0800</bug_when>
    <thetext>Attachment 49946 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/DumpRenderTree/qt/TextInputControllerQt.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/DumpRenderTree/qt/TextInputControllerQt.cpp:159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitTools/DumpRenderTree/qt/TextInputControllerQt.cpp:160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitTools/DumpRenderTree/qt/TextInputControllerQt.cpp:161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitTools/DumpRenderTree/qt/TextInputControllerQt.cpp:162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitTools/DumpRenderTree/qt/TextInputControllerQt.cpp:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitTools/DumpRenderTree/qt/TextInputControllerQt.cpp:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
Total errors found: 7 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195801</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-03 15:59:12 -0800</bug_when>
    <thetext>Attachment 49946 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/331053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196892</commentid>
    <comment_count>4</comment_count>
      <attachid>50150</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-06 05:35:37 -0800</bug_when>
    <thetext>Created attachment 50150
Patch

OK, I&apos;ve got everything working now I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196895</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-06 05:39:36 -0800</bug_when>
    <thetext>Attachment 50150 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/DumpRenderTree/qt/TextInputControllerQt.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196898</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-06 06:01:26 -0800</bug_when>
    <thetext>Attachment 50150 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/343162</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196902</commentid>
    <comment_count>7</comment_count>
      <attachid>50152</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-06 06:25:12 -0800</bug_when>
    <thetext>Created attachment 50152
Patch

Fix style and &lt; 4.6 build.

The bot is running 4.5 or less, and the tests won&apos;t pass on less than 4.6 due to the need to QInputMethodQuery::Selection. So maybe this patch is blocked until the bot upgrades? How does this sort of thing usually work, when a fix is Qt version dependent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197524</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-03-09 03:38:29 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=50152) [details]
&gt; Patch

On buidbots we run Qt 4.6.0, so it shouldn&apos;t be blocked. Only Qt-EWS bot runs Qt 4.5, but it is only a builder and not a tester. Additionally I tested your patch on buildbot, it works without regressions. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198334</commentid>
    <comment_count>9</comment_count>
      <attachid>50152</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-10 14:03:52 -0800</bug_when>
    <thetext>Comment on attachment 50152
Patch



&gt; +QVariantList QWEBKIT_EXPORT qt_drt_selectedRange(QWebPage* page)
&gt; +{
&gt; +    WebCore::Frame *frame = page-&gt;handle()-&gt;page-&gt;focusController()-&gt;focusedOrMainFrame();

Coding style nitpick, * placement :)

&gt; +    WebCore::Frame *frame = page-&gt;handle()-&gt;page-&gt;focusController()-&gt;focusedOrMainFrame();

Same here.

&gt; +    int max = InputElement::s_maximumLength;
&gt; +    if (frame-&gt;document() &amp;&amp; frame-&gt;document()-&gt;focusedNode()) {
&gt; +        if (frame-&gt;document()-&gt;focusedNode()-&gt;hasTagName(HTMLNames::inputTag)) {
&gt; +            HTMLInputElement* inputElement = static_cast&lt;HTMLInputElement*&gt;(frame-&gt;document()-&gt;focusedNode());
&gt; +            max = inputElement-&gt;maxLength();
&gt; +        }
&gt; +    }
&gt; +
&gt;      if (!ev-&gt;commitString().isEmpty())
&gt;          editor-&gt;confirmComposition(ev-&gt;commitString());
&gt; -    else if (!ev-&gt;preeditString().isEmpty()) {
&gt; +    else {
&gt;          QString preedit = ev-&gt;preeditString();
&gt; -        editor-&gt;setComposition(preedit, underlines, preedit.length(), 0);
&gt; +        editor-&gt;setComposition(preedit, underlines, (preedit.length() &gt; max) ? max : preedit.length(), 0);
&gt;      }

Instead of this logic it might be better to use InputElement::sanitizeValue instead, which AFAICS
would provide a similar cut-off with the extra advantage of handling grapheme clusters, i.e.
cutting off more characters than needed to avoid invalid character combinations.

The cut-off sounds like a good idea in general, but I think this should be also tested
with a unit-test. Sorry, I know this is asking for more than you intented to actually
fix, but the input method handling is unfortunately fragile :(. On the upside there are already
a few unit tests in tst_qwebpage.cpp.

&gt; +#if QT_VERSION &gt;= 0x040600
&gt; +    if (renderTextControl &amp;&amp; (selection.length &gt; 0)) {

Probably more of a style nitpick, but I&apos;d leave out the extra pair of parentheses :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199461</commentid>
    <comment_count>10</comment_count>
      <attachid>50670</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-14 04:19:06 -0700</bug_when>
    <thetext>Created attachment 50670
Updated Patch

The previous patch didn&apos;t pass tst_qwebpage - now it does. I&apos;ve removed the maxlength check for now - will do it as a separate patch (promise!).

Ossy - I&apos;ve added a couple of Qt-specific results. The cursor position is certainly correct from the point of view of the test, though it might be that the actual number reported is specific to my system so would appreciate if you, or anyone else, could check whether you match the existing test results or mine when running with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200221</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-03-16 08:44:57 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Ossy - I&apos;ve added a couple of Qt-specific results. The cursor position is
&gt; certainly correct from the point of view of the test, though it might be that
&gt; the actual number reported is specific to my system so would appreciate if you,
&gt; or anyone else, could check whether you match the existing test results or mine
&gt; when running with this patch.

I tested it, works correctly for me. But you should land it manually, because WebKit/qt/Api/qwebpages.cpp conflicts. (Only the context changed in this file.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203850</commentid>
    <comment_count>12</comment_count>
      <attachid>50670</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-24 23:59:02 -0700</bug_when>
    <thetext>Comment on attachment 50670
Updated Patch

This patch does not seem to apply.  Looks like we&apos;ll need another update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204975</commentid>
    <comment_count>13</comment_count>
      <attachid>51824</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-27 05:03:00 -0700</bug_when>
    <thetext>Created attachment 51824
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205238</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-28 14:06:21 -0700</bug_when>
    <thetext>I&apos;d like to include this in the release branch to make it easier to cherry-pick test fixes in the future, due to the DRT changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205240</commentid>
    <comment_count>15</comment_count>
      <attachid>51824</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-28 14:10:24 -0700</bug_when>
    <thetext>Comment on attachment 51824
Updated Patch


&gt; -            if (renderTextControl) {
&gt; -                renderTextControl-&gt;setSelectionStart(qMin(a.start, (a.start + a.length)));
&gt; -                renderTextControl-&gt;setSelectionEnd(qMax(a.start, (a.start + a.length)));
&gt; -            }
&gt; +            selection = a;
&gt; +            hasSelection = true;
&gt;              break;
&gt;          }
&gt;  #endif
&gt; @@ -1334,10 +1382,23 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)

&gt; +#if QT_VERSION &gt;= 0x040600
&gt; +        if (hasSelection) {
&gt; +            QString text = (renderTextControl) ? QString(renderTextControl-&gt;text()) : QString();
&gt; +            if (preedit.isEmpty() &amp;&amp; selection.start + selection.length &gt; 0)
&gt; +                preedit = text;
&gt; +            editor-&gt;setComposition(preedit, underlines, selection.start, selection.start + selection.length);
&gt; +        } else
&gt; +#endif
&gt; +            editor-&gt;setComposition(preedit, underlines, preedit.length(), 0);

Looks good to me, but before landing please verify that the above two hunks don&apos;t break the auto-test added in http://trac.webkit.org/changeset/56334 , which verifies that selection start/end are swapped correctly if they are reversed (see the qMin/qMax usage).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205581</commentid>
    <comment_count>16</comment_count>
      <attachid>51824</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-29 11:41:34 -0700</bug_when>
    <thetext>Comment on attachment 51824
Updated Patch

robert@webkit.org is not in http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/common/config/committers.py so I would cq+, however it sounds like the reviewer has comments left to address, so cq-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206651</commentid>
    <comment_count>17</comment_count>
      <attachid>52196</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-31 12:40:02 -0700</bug_when>
    <thetext>Created attachment 52196
Updated Patch - Needs a Look!

I&apos;ve made a couple of modifications to cope with the test added to tst_qwepage by Yi Shen. The first is in qwebpage itself, but I have also had to add a step to tst_qwebpage where it cancels the current composition before performing the negative selection. I believe this is correct but would like someone more conversant with the expected behaviour of input methods (Yi Shen?) to take a look first!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206708</commentid>
    <comment_count>18</comment_count>
    <who name="Shen Yi">shenyi2006</who>
    <bug_when>2010-03-31 13:56:25 -0700</bug_when>
    <thetext>I am OK with your changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207358</commentid>
    <comment_count>19</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-04-01 13:38:16 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I am OK with your changes.

Thanks Shen. Simon, OK to commit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209471</commentid>
    <comment_count>20</comment_count>
      <attachid>51824</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-06 23:43:54 -0700</bug_when>
    <thetext>Comment on attachment 51824
Updated Patch

Cleared Simon Hausmann&apos;s review+ from obsolete attachment 51824 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214373</commentid>
    <comment_count>21</comment_count>
      <attachid>52196</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-04-19 17:35:03 -0700</bug_when>
    <thetext>Comment on attachment 52196
Updated Patch - Needs a Look!

&gt; From ccf816858c724e4235fc5b359b1b175d321ef77b Mon Sep 17 00:00:00 2001
&gt; From: Robert Hogan &lt;robert@webkit.org&gt;
&gt; Date: Mon, 29 Mar 2010 18:57:59 +0100
&gt; Subject: [PATCH] 2010-03-29  Robert Hogan  &lt;robert@webkit.org&gt;
&gt; 
&gt;         Reviewed by Simon Hausmann.

I have r+ed an earlier patch, but not reviewed this one.

In general I still agree with this patch, but it doesn&apos;t apply anymore after the recent refactorings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214989</commentid>
    <comment_count>22</comment_count>
      <attachid>53889</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-04-20 15:10:46 -0700</bug_when>
    <thetext>Created attachment 53889
Updated Patch

Sorry Simon, that was a waste of review! Updated patch attached. I&apos;ll land this manually at the weekend in case any buildbot/my build differences crop up in the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215069</commentid>
    <comment_count>23</comment_count>
      <attachid>53889</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-04-20 17:06:57 -0700</bug_when>
    <thetext>Comment on attachment 53889
Updated Patch


&gt; +++ b/LayoutTests/ChangeLog
&gt; @@ -1,3 +1,24 @@
&gt; +2010-04-20  Robert Hogan  &lt;robert@webkit.org&gt;
&gt; +
&gt; +        [Qt] Add more support for textInputController
&gt; +

This part of the ChangeLog is missing the reviewed by bit ;-)

&gt; +        Add support for selectedRange(), setMarkedText(), insertText(),
&gt; +        and firstRectForCharacterRange().
&gt; +
&gt; +        Unskip tests:
&gt; +
&gt; +        fast/forms/input-maxlength-ime-preedit.html
&gt; +        fast/forms/input-maxlength-ime-completed.html
&gt; +        fast/text/international/thai-cursor-position.html
&gt; +        fast/events/ime-composition-events-001.html
&gt; +        editing/selection/5825350-1.html
&gt; +        editing/selection/5825350-2.html
&gt; +        editing/selection/mixed-editability-10.html
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=35702
&gt; +
&gt; +        * platform/qt/Skipped:
&gt; +
&gt;  2010-04-20  James Robinson  &lt;jamesr@chromium.org&gt;
&gt;  
&gt;          Unreviewed.  Update chromium test expectations to reflect changes

&gt;      WebCore::Frame *frame = page-&gt;focusController()-&gt;focusedOrMainFrame();
&gt;      WebCore::Editor *editor = frame-&gt;editor();
&gt; +#if QT_VERSION &gt;= 0x040600
&gt; +    QInputMethodEvent::Attribute selection(QInputMethodEvent::Selection, 0, 0, QVariant());
&gt; +#endif
&gt;  
&gt;      if (!editor-&gt;canEdit()) {
&gt;          ev-&gt;ignore();
&gt; @@ -1264,6 +1267,7 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
&gt;          renderTextControl = toRenderTextControl(renderer);
&gt;  
&gt;      Vector&lt;CompositionUnderline&gt; underlines;
&gt; +    bool hasSelection = false;

I suggest to move the boolean next to the definition of the &quot;selection&quot; variable, for clarity.

&gt; @@ -1299,10 +1301,25 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
&gt;  
&gt;      if (!ev-&gt;commitString().isEmpty())
&gt;          editor-&gt;confirmComposition(ev-&gt;commitString());
&gt; -    else if (!ev-&gt;preeditString().isEmpty()) {
&gt; +    else {
&gt; +        // 1. empty preedit with a selection attribute, and start/end of 0 cancels composition
&gt; +        // 2. empty preedit with a selection attribute, and start/end of non-0 updates selection of current preedit text
&gt; +        // 3. populated preedit with a selection attribute, and start/end of 0 or non-0 updates selection of supplied preedit text
&gt; +        // 4. otherwise event is updating supplied pre-edit text
&gt;          QString preedit = ev-&gt;preeditString();
&gt; -        editor-&gt;setComposition(preedit, underlines, preedit.length(), 0);
&gt; +#if QT_VERSION &gt;= 0x040600
&gt; +        if (hasSelection) {
&gt; +            QString text = (renderTextControl) ? QString(renderTextControl-&gt;text()) : QString();

I think you can leave out the parenthese around renderTextControl.


r=me. Feel free to fix my nitpicks when landing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215607</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-21 18:15:07 -0700</bug_when>
    <thetext>Attachment 53889 was posted by a committer and has review+, assigning to Robert Hogan for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216796</commentid>
    <comment_count>25</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-04-25 00:27:15 -0700</bug_when>
    <thetext>Landed as r52818</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298084</commentid>
    <comment_count>26</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-10-22 11:16:46 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Landed as r52818

Typo correction:
Landed in r58218</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49946</attachid>
            <date>2010-03-03 14:05:57 -0800</date>
            <delta_ts>2010-03-06 05:35:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Add-more-support-for-textInputController.patch</filename>
            <type>text/plain</type>
            <size>12472</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA1ODQ2OWFhYTRkZGEwYTdmMzcyNjc5Y2FlNzczZWQ4NjA2NzgxMDQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDMgTWFyIDIwMTAgMjA6Mjg6MDMgKzAwMDAKU3ViamVjdDogW1BBVENIXSBbUXRdIEFk
ZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKCkFkZCBzdXBwb3J0IGZvciBz
ZWxlY3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAphbmQgcGFydGlh
bCBzdXBwb3J0IGZvciBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgpLgoKVW5za2lwIHRlc3Rz
OgoKZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbApmYXN0L2Zvcm1z
L2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbApmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24t
ZXZlbnRzLTAwMS5odG1sCgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzU3MDIKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMjAgKysrKysrCiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkICAgICAg
ICAgICAgICAgICAgICB8ICAgIDkgKy0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNjcgKysrKysrKysrKysrKysrKysrLS0KIFdlYktpdC9x
dC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMyArKysrKysr
CiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MjUgKysrKysrKwogLi4uL0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5j
cHAgICAgfCAgIDM3ICsrKysrKysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0
Q29udHJvbGxlclF0LmggICAgICB8ICAgIDkgKystCiA3IGZpbGVzIGNoYW5nZWQsIDE3MyBpbnNl
cnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDQwNmRjZC4uNDEwOGVjZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTAzLTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbUXRdIEFkZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3Igc2VsZWN0ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0KCksIGluc2Vy
dFRleHQoKSwKKyAgICAgICAgYW5kIHBhcnRpYWwgc3VwcG9ydCBmb3IgZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UoKS4KKworICAgICAgICBVbnNraXAgdGVzdHM6CisKKyAgICAgICAgZmFzdC9m
b3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAorICAgICAgICBmYXN0L2Zvcm1z
L2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKKyAgICAgICAgZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAorICAgICAgICBmYXN0L2V2ZW50
cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NzAyCisKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9Ta2lwcGVkOgorCiAyMDEwLTAzLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQKaW5kZXggZWViYTY0Mi4uYWFjMDJiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0x
NjQsMTcgKzE2NCwxMiBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNvdXJjZS1m
cm9tLXJlbW90ZS5odG1sCiAjICAgICAgICAgICAgTWlzc2luZyBmZWF0dXJlcyBpbiBvdXIgRHVt
cFJlbmRlclRyZWUgaW1wbGVtZW50YXRpb24gICAgICAgICAgICAgICMKICMgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0gIwogCi0jIE1pc3NpbmcgdGV4dElucHV0Q29udHJvbGxlci5zZWxlY3RlZFJhbmdl
KCkKKyMgTWlzc2luZyB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKCkKKyMgU2VlIAogZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLmh0bWwKIGVkaXRpbmcv
c2VsZWN0aW9uLzU4MjUzNTAtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJp
bGl0eS0xMC5odG1sCiAKLSMgTWlzc2luZyB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRl
eHQoKQotZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAotZmFzdC9m
b3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCi1mYXN0L3RleHQvaW50ZXJu
YXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCi1mYXN0L2V2ZW50cy9pbWUtY29tcG9z
aXRpb24tZXZlbnRzLTAwMS5odG1sCi0KICMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci5v
dmVycmlkZVByZWZlcmVuY2UoKQogZmFzdC9ldmVudHMvbXVsdGlsaW5lLWxpbmstYXJyb3ctbmF2
aWdhdGlvbi5odG1sCiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hl
ZC5odG1sCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDJhOGFjZWQuLmI3MTgzYmMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
CkBAIC0xOTMsOCArMTkzLDUxIEBAIHZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3NldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFiCiAgICAgZWxzZQog
ICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9maWxlcigpOwogfQorCiAjZW5kaWYK
IAorUVZhcmlhbnRMaXN0IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZWxlY3RlZFJhbmdlKFFXZWJQ
YWdlKiBwYWdlKQoreworICAgIFdlYkNvcmU6OkZyYW1lICpmcmFtZSA9IHBhZ2UtPmhhbmRsZSgp
LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgV2Vi
Q29yZTo6RWRpdG9yICplZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisgICAgUVZhcmlhbnRMaXN0
IHNlbGVjdGlvbjsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAwOworICAgIFJlbmRl
clRleHRDb250cm9sKiByZW5kZXJUZXh0Q29udHJvbCA9IDA7CisKKyAgICBpZiAoZnJhbWUtPnNl
bGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCkpCisgICAgICAgIHJlbmRlcmVyID0gZnJh
bWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCktPnNoYWRvd0FuY2VzdG9yTm9k
ZSgpLT5yZW5kZXJlcigpOworCisgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1RleHRD
b250cm9sKCkpIHsKKyAgICAgICAgcmVuZGVyVGV4dENvbnRyb2wgPSB0b1JlbmRlclRleHRDb250
cm9sKHJlbmRlcmVyKTsKKyAgICAgICAgc2VsZWN0aW9uLmFwcGVuZChyZW5kZXJUZXh0Q29udHJv
bC0+c2VsZWN0aW9uU3RhcnQoKSk7CisgICAgICAgIHNlbGVjdGlvbi5hcHBlbmQocmVuZGVyVGV4
dENvbnRyb2wtPnNlbGVjdGlvbkVuZCgpKTsKKyAgICAgICAgcmV0dXJuICBzZWxlY3Rpb247Cisg
ICAgfQorICAgIHJldHVybiBRVmFyaWFudExpc3QoKTsKK30KKworUVZhcmlhbnRMaXN0IFFXRUJL
SVRfRVhQT1JUIHF0X2RydF9maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShRV2ViUGFnZSogcGFn
ZSwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIFdlYkNvcmU6OkZyYW1lICpmcmFt
ZSA9IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CisgICAgUVZhcmlhbnRMaXN0IHJlY3Q7CisKKyAgICBpZiAoKGxvY2F0aW9uICsg
bGVuZ3RoIDwgbG9jYXRpb24pICYmIChsb2NhdGlvbiArIGxlbmd0aCAhPSAwKSkKKyAgICAgICAg
bGVuZ3RoID0gMDsKKworICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0
aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVj
dGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxl
bWVudCgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKworICAgIGlmICgh
cmFuZ2UpCisgICAgICAgIHJldHVybiBRVmFyaWFudExpc3QoKTsKKworICAgIFFSZWN0IHJlc3Vs
dFJlY3QgPSBmcmFtZS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgIHJlY3Qg
PDwgcmVzdWx0UmVjdC54KCkgPDwgcmVzdWx0UmVjdC55KCkgPDwgcmVzdWx0UmVjdC53aWR0aCgp
IDw8IHJlc3VsdFJlY3QuaGVpZ2h0KCk7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisKKwogY2xhc3Mg
UVdlYlBhZ2VXaWRnZXRDbGllbnQgOiBwdWJsaWMgUVdlYlBhZ2VDbGllbnQgewogcHVibGljOgog
ICAgIFFXZWJQYWdlV2lkZ2V0Q2xpZW50KFFXaWRnZXQqIHZpZXcpCkBAIC0xMjg3LDYgKzEzMzAs
NyBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RF
dmVudCAqZXYpCiAgICAgICAgIHJlbmRlclRleHRDb250cm9sID0gdG9SZW5kZXJUZXh0Q29udHJv
bChyZW5kZXJlcik7CiAKICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGlu
ZXM7CisgICAgUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSBzZWxlY3Rpb24oUUlucHV0TWV0
aG9kRXZlbnQ6OlNlbGVjdGlvbiwgMCwgMCwgUVZhcmlhbnQoKSk7CiAKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGV2LT5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3Qg
UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSYgYSA9IGV2LT5hdHRyaWJ1dGVzKCkuYXQoaSk7
CkBAIC0xMzEwLDIyICsxMzU0LDMzIEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhv
ZEV2ZW50KFFJbnB1dE1ldGhvZEV2ZW50ICpldikKICAgICAgICAgfQogI2lmIFFUX1ZFUlNJT04g
Pj0gMHgwNDA2MDAKICAgICAgICAgY2FzZSBRSW5wdXRNZXRob2RFdmVudDo6U2VsZWN0aW9uOiB7
Ci0gICAgICAgICAgICBpZiAocmVuZGVyVGV4dENvbnRyb2wpIHsKLSAgICAgICAgICAgICAgICBy
ZW5kZXJUZXh0Q29udHJvbC0+c2V0U2VsZWN0aW9uU3RhcnQoYS5zdGFydCk7Ci0gICAgICAgICAg
ICAgICAgcmVuZGVyVGV4dENvbnRyb2wtPnNldFNlbGVjdGlvbkVuZChhLnN0YXJ0ICsgYS5sZW5n
dGgpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VsZWN0aW9uID0gYTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgfQogICAgIH0KIAorICAgIGlu
dCBtYXggPSBJbnB1dEVsZW1lbnQ6OnNfbWF4aW11bUxlbmd0aDsKKyAgICBpZiAoZnJhbWUtPmRv
Y3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkpIHsKKyAgICAgICAg
aWYgKGZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6aW5wdXRUYWcpKSB7CisgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCktPmZv
Y3VzZWROb2RlKCkpOworICAgICAgICAgICAgbWF4ID0gaW5wdXRFbGVtZW50LT5tYXhMZW5ndGgo
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmICghZXYtPmNvbW1pdFN0cmluZygpLmlzRW1w
dHkoKSkKICAgICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oZXYtPmNvbW1pdFN0cmlu
ZygpKTsKLSAgICBlbHNlIGlmICghZXYtPnByZWVkaXRTdHJpbmcoKS5pc0VtcHR5KCkpIHsKKyAg
ICBlbHNlIHsKICAgICAgICAgUVN0cmluZyBwcmVlZGl0ID0gZXYtPnByZWVkaXRTdHJpbmcoKTsK
LSAgICAgICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihwcmVlZGl0LCB1bmRlcmxpbmVzLCBwcmVl
ZGl0Lmxlbmd0aCgpLCAwKTsKKyAgICAgICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihwcmVlZGl0
LCB1bmRlcmxpbmVzLCAocHJlZWRpdC5sZW5ndGgoKSA+IG1heCkgPyBtYXggOiBwcmVlZGl0Lmxl
bmd0aCgpLCAwKTsKICAgICB9CisKKyAgICBpZiAocmVuZGVyVGV4dENvbnRyb2wgJiYgKHNlbGVj
dGlvbi5sZW5ndGggPiAwKSkgeworICAgICAgICByZW5kZXJUZXh0Q29udHJvbC0+c2V0U2VsZWN0
aW9uU3RhcnQoc2VsZWN0aW9uLnN0YXJ0KTsKKyAgICAgICAgcmVuZGVyVGV4dENvbnRyb2wtPnNl
dFNlbGVjdGlvbkVuZChzZWxlY3Rpb24uc3RhcnQgKyBzZWxlY3Rpb24ubGVuZ3RoKTsKKyAgICB9
CisKICAgICBldi0+YWNjZXB0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VM
b2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDljM2U2OWIuLjNjOGQ1NWIgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI2IEBACisyMDEwLTAzLTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFk
ZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3Igc2VsZWN0ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0KCksIGluc2VydFRleHQoKSwK
KyAgICAgICAgYW5kIHBhcnRpYWwgc3VwcG9ydCBmb3IgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UoKS4KKworICAgICAgICBVbnNraXAgdGVzdHM6CisKKyAgICAgICAgZmFzdC9mb3Jtcy9pbnB1
dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAorICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LW1h
eGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKKyAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAorICAgICAgICBmYXN0L2V2ZW50cy9pbWUtY29t
cG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM1NzAyCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAocXRfZHJ0X3NlbGVjdGVkUmFuZ2UpOgorICAgICAgICAocXRfZHJ0X2ZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRo
b2RFdmVudCk6CisKIDIwMTAtMDMtMDIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5A
bm9raWEuY29tPgogCiAgICAgICAgIFN5bWJpYW4gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk5NWFjMjUu
LjlmYzg1NmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMy0wMyAgUm9iZXJ0IEhvZ2Fu
ICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1F0XSBBZGQgbW9yZSBzdXBwb3J0IGZvciB0ZXh0SW5wdXRDb250cm9s
bGVyCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGVkUmFuZ2UoKSwgc2V0TWFya2Vk
VGV4dCgpLCBpbnNlcnRUZXh0KCksCisgICAgICAgIGFuZCBwYXJ0aWFsIHN1cHBvcnQgZm9yIGZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkuCisKKyAgICAgICAgVW5za2lwIHRlc3RzOgorCisg
ICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKKyAgICAg
ICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCisgICAgICAg
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKKyAgICAg
ICAgZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcwMgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAg
KFRleHRJbnB1dENvbnRyb2xsZXI6OnNldE1hcmtlZFRleHQpOgorICAgICAgICAoVGV4dElucHV0
Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCk6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjpz
ZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRD
b250cm9sbGVyUXQuaDoKKwogMjAxMC0wMy0wMiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3Vz
dGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHAKaW5kZXggN2I4ZjEyMC4uYzg5NjI1ZSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxl
clF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250
cm9sbGVyUXQuY3BwCkBAIC0zMSw2ICszMSwxMCBAQAogCiAjaW5jbHVkZSA8UUFwcGxpY2F0aW9u
PgogI2luY2x1ZGUgPFFLZXlFdmVudD4KKyNpbmNsdWRlIDxRSW5wdXRNZXRob2RFdmVudD4KKwor
ZXh0ZXJuIFFWYXJpYW50TGlzdCBxdF9kcnRfc2VsZWN0ZWRSYW5nZShRV2ViUGFnZSogcGFnZSk7
CitleHRlcm4gUVZhcmlhbnRMaXN0IHF0X2RydF9maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShR
V2ViUGFnZSogcGFnZSwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKTsKIAogVGV4dElucHV0Q29u
dHJvbGxlcjo6VGV4dElucHV0Q29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KQogICAgIDogUU9i
amVjdChwYXJlbnQpCkBAIC0xMjcsMyArMTMxLDM2IEBAIHZvaWQgVGV4dElucHV0Q29udHJvbGxl
cjo6ZG9Db21tYW5kKGNvbnN0IFFTdHJpbmcmIGNvbW1hbmQpCiAgICAgUUtleUV2ZW50IGV2ZW50
MihRRXZlbnQ6OktleVJlbGVhc2UsIGtleWNvZGUsIG1vZGlmaWVycyk7CiAgICAgUUFwcGxpY2F0
aW9uOjpzZW5kRXZlbnQocGFyZW50KCksICZldmVudDIpOwogfQorCit2b2lkIFRleHRJbnB1dENv
bnRyb2xsZXI6OnNldE1hcmtlZFRleHQoY29uc3QgUVN0cmluZyYgc3RyaW5nLCBpbnQgc3RhcnQs
IGludCBlbmQpCit7CisgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0
cmlidXRlczsKKyAgICBRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlIHNlbGVjdGlvbihRSW5w
dXRNZXRob2RFdmVudDo6U2VsZWN0aW9uLCBzdGFydCwgZW5kLCBRVmFyaWFudCgpKTsKKyAgICBh
dHRyaWJ1dGVzIDw8IHNlbGVjdGlvbjsKKyAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudChzdHJp
bmcsIGF0dHJpYnV0ZXMpOworICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KHBhcmVudCgpLCAm
ZXZlbnQpOworfQorCit2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Omluc2VydFRleHQoY29uc3Qg
UVN0cmluZyYgc3RyaW5nKQoreworICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1
dGU+IGF0dHJpYnV0ZXM7CisgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoc3RyaW5nLCBhdHRy
aWJ1dGVzKTsKKyAgICBldmVudC5zZXRDb21taXRTdHJpbmcoc3RyaW5nKTsKKyAgICBRQXBwbGlj
YXRpb246OnNlbmRFdmVudChwYXJlbnQoKSwgJmV2ZW50KTsKK30KKworUVZhcmlhbnRMaXN0IFRl
eHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UoKQoreworICAgIHJldHVybiBxdF9kcnRf
c2VsZWN0ZWRSYW5nZShxb2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihwYXJlbnQoKSkpOworfQorCitR
VmFyaWFudExpc3QgVGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAvLyBGSVhNRTogV2hlbiBjYWxsZWQg
d2l0aCB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHRleHRJ
bnB1dENvbnRyb2xsZXIuc2VsZWN0ZWRSYW5nZSgpWzBdLCAwKTsKKyAgLy8gICAgICAgIHRoaXMg
ZmFpbHMgd2l0aCBtZXNzYWdlOgorICAvLyAgICAgICAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0
OiBUeXBlRXJyb3I6IGluY29tcGF0aWJsZSB0eXBlIG9mIGFyZ3VtZW50KHMpIGluIGNhbGwgdG8g
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKTsgY2FuZGlkYXRlcyB3ZXJlCisgIC8vICAgICAg
ICBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShpbnQsaW50KQorICAvLyAgICAgICAgSXQgd29y
a3MgZmluZSB3aGVuIGNhbGxlZCBsaWtlOiB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDAsIDApOworCisgIHJldHVybiBxdF9kcnRfZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UocW9iamVjdF9jYXN0PFFXZWJQYWdlKj4ocGFyZW50KCkpLCBsb2NhdGlvbiwg
bGVuZ3RoKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rl
eHRJbnB1dENvbnRyb2xsZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4
dElucHV0Q29udHJvbGxlclF0LmgKaW5kZXggN2M3NDMzZS4uMDIxMDk4NCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmgKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmgK
QEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgPFFMaXN0PgogI2luY2x1ZGUgPFFPYmplY3Q+
CisjaW5jbHVkZSA8UVZhcmlhbnQ+CiAjaW5jbHVkZSA8UVN0cmluZz4KICNpbmNsdWRlICJxd2Vi
cGFnZS5oIgogCkBAIC00MSwxNCArNDIsMTQgQEAgcHVibGljOgogCiBwdWJsaWMgc2xvdHM6CiAg
ICAgdm9pZCBkb0NvbW1hbmQoY29uc3QgUVN0cmluZyYgY29tbWFuZCk7Ci0vLyAgICAgdm9pZCBz
ZXRNYXJrZWRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0ciwgaW50IGZyb20sIGludCBsZW5ndGgpOwor
ICAgIHZvaWQgc2V0TWFya2VkVGV4dChjb25zdCBRU3RyaW5nJiBzdHJpbmcsIGludCBzdGFydCwg
aW50IGVuZCk7CiAvLyAgICAgYm9vbCBoYXNNYXJrZWRUZXh0KCk7CiAvLyAgICAgdm9pZCB1bm1h
cmtUZXh0KCk7CiAvLyAgICAgUUxpc3Q8aW50PiBtYXJrZWRSYW5nZSgpOwotLy8gICAgIFFMaXN0
PGludD4gc2VsZWN0ZWRSYW5nZSgpOworICAgIFFWYXJpYW50TGlzdCBzZWxlY3RlZFJhbmdlKCk7
CiAvLyAgICAgdm9pZCB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0KCk7Ci0vLyAgICAgdm9p
ZCBpbnNlclRleHQoY29uc3QgUVN0cmluZyYpOwotLy8gICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UoKTsKKyAgICB2b2lkIGluc2VydFRleHQoY29uc3QgUVN0cmluZyYgc3RyaW5n
KTsKKyAgICBRVmFyaWFudExpc3QgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoaW50IGxvY2F0
aW9uLCBpbnQgbGVuZ3RoKTsKIC8vICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnQoaW50
LCBpbnQpOwogLy8gICAgIHZvaWQgc3Vic3RyaW5nRnJvbVJhbmdlKGludCwgaW50KTsKIC8vICAg
ICB2b2lkIGNvbnZlcnNhdGlvbklkZW50aWZpZXIoKTsKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50150</attachid>
            <date>2010-03-06 05:35:37 -0800</date>
            <delta_ts>2010-03-06 06:25:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Add-more-support-for-textInputController.patch</filename>
            <type>text/plain</type>
            <size>15590</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAwMTgzZGU4MmFmMDMxZmVkZDUzN2IyMzdkMTJmYTViMzU0MjJlNDNiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDMgTWFyIDIwMTAgMjA6Mjg6MDMgKzAwMDAKU3ViamVjdDogW1BBVENIXSBbUXRdIEFk
ZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKCkFkZCBzdXBwb3J0IGZvciBz
ZWxlY3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAphbmQgZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKS4KClVuc2tpcCB0ZXN0czoKCmZhc3QvZm9ybXMvaW5wdXQt
bWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1l
LWNvbXBsZXRlZC5odG1sCmZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0
aW9uLmh0bWwKZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAplZGl0
aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAplZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTIu
aHRtbAplZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC5odG1sCgpodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MDIKLS0tCiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKwogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAgICAgICAgICAgICAgICAgfCAgIDExIC0t
LQogLi4uL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQgICAgfCAg
ICAzICsKIC4uLi9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0ICAg
IHwgICAgMyArCiAuLi4vc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4
dCAgICB8ICAgMjUgKysrKysrKwogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDc0ICsrKysrKysrKysrKysrKysrKy0tCiBXZWJLaXQvcXQvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKwogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsr
KysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcCAg
ICB8ICAgMzEgKysrKysrKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9s
bGVyUXQuaCAgICAgIHwgICAgOSArKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDIxNSBpbnNlcnRpb25z
KCspLCAyMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEtZXhwZWN0ZWQudHh0CiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgy
NTM1MC0yLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRm
b3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4
dAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBkNDA2ZGNkLi5mNjgzYWJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAt
MDMtMDYgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIG1vcmUgc3VwcG9ydCBm
b3IgdGV4dElucHV0Q29udHJvbGxlcgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzZWxlY3Rl
ZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAorICAgICAgICBhbmQgZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKS4KKworICAgICAgICBVbnNraXAgdGVzdHM6CisKKyAg
ICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAorICAgICAg
ICBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKKyAgICAgICAg
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAorICAgICAg
ICBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCisgICAgICAgIGVk
aXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9u
LzU4MjUzNTAtMi5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRhYmls
aXR5LTEwLmh0bWwKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzU3MDIKKworICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rp
b24vbWl4ZWQtZWRpdGFiaWxpdHktMTAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMC0wMy0w
MiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGVlYmE2NDIuLmVlNTQz
NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTY0LDE3ICsxNjQsNiBAQCBodHRwL3Rl
c3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNvdXJjZS1mcm9tLXJlbW90ZS5odG1sCiAjICAgICAg
ICAgICAgTWlzc2luZyBmZWF0dXJlcyBpbiBvdXIgRHVtcFJlbmRlclRyZWUgaW1wbGVtZW50YXRp
b24gICAgICAgICAgICAgICMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogCi0jIE1pc3Npbmcg
dGV4dElucHV0Q29udHJvbGxlci5zZWxlY3RlZFJhbmdlKCkKLWVkaXRpbmcvc2VsZWN0aW9uLzU4
MjUzNTAtMS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTIuaHRtbAotZWRpdGluZy9z
ZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbAotCi0jIE1pc3NpbmcgdGV4dElucHV0
Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCkKLWZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWlt
ZS1wcmVlZGl0Lmh0bWwKLWZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQu
aHRtbAotZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAot
ZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAotCiAjIE1pc3Npbmcg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCkKIGZhc3QvZXZlbnRzL211
bHRpbGluZS1saW5rLWFycm93LW5hdmlnYXRpb24uaHRtbAogZmFzdC9ldmVudHMvcGFnZXNob3ct
cGFnZWhpZGUtb24tYmFjay1jYWNoZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NlNTNmNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUz
NTAtMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3
aGVyZSBtb3ZpbmcgdGhlIGNhcmV0IGxlZnQgdG93YXJkcyBhIG5vbi1lZGl0YWJsZSBwb2NrZXQg
b2YgYW4gZWRpdGFibGUgcmVnaW9uIHdvdWxkIG1ha2UgdGhlIGNhcmV0IGRpc2FwcGVhci4gVGhl
IGNhcmV0IHNob3VsZCBiZSBqdXN0IGJlZm9yZSB0aGUgJ0InIGluICJCb2IiLgorCitDYXJldDog
KDgsIDQ4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxl
Y3Rpb24vNTgyNTM1MC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Vk
aXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDRjNmUzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACitUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBtb3ZpbmcgdGhlIGNhcmV0
IHJpZ2h0IHRvd2FyZHMgYSBub24tZWRpdGFibGUgcG9ja2V0IG9mIGFuIGVkaXRhYmxlIHJlZ2lv
biB3b3VsZCBtYWtlIHRoZSBjYXJldCBkaXNhcHBlYXIuIFRoZSBjYXJldCBzaG91bGQgYmUganVz
dCBhZnRlciB0aGUgJ3knIGluICJTYWxseSIuCisKK0NhcmV0OiAoODUsIDQ4KQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFi
aWxpdHktMTAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9z
ZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MzY2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorIzEgRElWIGVsZW1lbnQgd2l0aCBhIG5vbi1l
ZGl0YWJsZSBlbGVtZW50IG9ubHkgYWxpZ24gY2VudGVyOgorCitIZWxsbworIzIgRElWIGVsZW1l
bnQgd2l0aCBhIG5vbi1lZGl0YWJsZSBlbGVtZW50IG9ubHkgYWxpZ24gbGVmdDoKKworSGVsbG8K
KyMzIERJViBlbGVtZW50IHdpdGggYSBub24tZWRpdGFibGUgZWxlbWVudCBvbmx5IGFsaWduIHJp
Z2h0OgorCitIZWxsbworIzQgRElWIGVsZW1lbnQgd2l0aCB0d28gbm9uLWVkaXRhYmxlIGVsZW1l
bnR3aXRoIHBhZGRpbmc6CisKK0hlbGxvIFdvcmxkCisjNSBESVYgZWxlbWVudCBlbXB0eQorCisj
NiBub24gZWRpdGFibGUgRElWIGVsZW1lbnQgd2l0aCBhbiBlZGl0YWJsZSBlbXB0eSBzcGFuIGVs
ZW1lbnQKKworSGVsbG86wqAKK0FuY2hvciAoW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIDAgY2Fy
ZXRbMzksNDRdIHJlZnBvcz0zOSkgaXMgY29ycmVjdC4KK0FuY2hvciAoW29iamVjdCBIVE1MRGl2
RWxlbWVudF0sIDMgY2FyZXRbNzcsNDRdIHJlZnBvcz03NykgaXMgY29ycmVjdC4KK0FuY2hvciAo
W29iamVjdCBIVE1MRGl2RWxlbWVudF0sIDEgY2FyZXRbNDYsMTE2XSByZWZwb3M9NDYpIGlzIGNv
cnJlY3QuCitBbmNob3IgKFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCAwIGNhcmV0WzgsMTE2XSBy
ZWZwb3M9OCkgaXMgY29ycmVjdC4KK0FuY2hvciAoW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIDAg
Y2FyZXRbNzAsMTg4XSByZWZwb3M9NzApIGlzIGNvcnJlY3QuCitBbmNob3IgKFtvYmplY3QgSFRN
TERpdkVsZW1lbnRdLCAzIGNhcmV0WzUwLDI2MF0gcmVmcG9zPTUwKSBpcyBjb3JyZWN0LgorQW5j
aG9yIChbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgMCBjYXJldFs1OCwzMzJdIHJlZnBvcz01OCkg
aXMgY29ycmVjdC4KK0FuY2hvciAoW29iamVjdCBIVE1MRWxlbWVudF0sIDAgY2FyZXRbMCwwXSBy
ZWZwb3M9MCkgaXMgY29ycmVjdC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
Y3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggMmE4YWNlZC4uZDQ3ZWVkYiAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAKQEAgLTE5Myw4ICsxOTMsNTQgQEAgdm9pZCBRV0VCS0lUX0VYUE9SVCBx
dF9kcnRfc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVu
YWIKICAgICBlbHNlCiAgICAgICAgIGNvbnRyb2xsZXItPnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7
CiB9CisKICNlbmRpZgogCitRVmFyaWFudExpc3QgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3NlbGVj
dGVkUmFuZ2UoUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAgV2ViQ29yZTo6RnJhbWUgKmZyYW1lID0g
cGFnZS0+aGFuZGxlKCktPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKKyAgICBRVmFyaWFudExpc3Qgc2VsZWN0ZWRSYW5nZTsKKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpOwor
CisgICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNl
bGVjdGlvblJvb3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisKKyAg
ICBSZWZQdHI8UmFuZ2U+IHRlc3RSYW5nZSA9IFJhbmdlOjpjcmVhdGUoc2NvcGUtPmRvY3VtZW50
KCksIHNjb3BlLCAwLCByYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0
KCkpOworICAgIEFTU0VSVCh0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwor
ICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFu
Z2UuZ2V0KCkpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICB0ZXN0UmFuZ2UtPnNldEVu
ZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQoKSwgZWMpOworICAgIEFT
U0VSVCh0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOworICAgIGludCBlbmRQ
b3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKwor
ICAgIHNlbGVjdGVkUmFuZ2UgPDwgc3RhcnRQb3NpdGlvbiA8PCAoZW5kUG9zaXRpb24gLSBzdGFy
dFBvc2l0aW9uKTsKKworICAgIHJldHVybiBzZWxlY3RlZFJhbmdlOworCit9CisKK1FWYXJpYW50
TGlzdCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoUVdl
YlBhZ2UqIHBhZ2UsIGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkKK3sKKyAgICBXZWJDb3JlOjpG
cmFtZSAqZnJhbWUgPSBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOworICAgIFFWYXJpYW50TGlzdCByZWN0OworCisgICAgaWYgKChs
b2NhdGlvbiArIGxlbmd0aCA8IGxvY2F0aW9uKSAmJiAobG9jYXRpb24gKyBsZW5ndGggIT0gMCkp
CisgICAgICAgIGxlbmd0aCA9IDA7CisKKyAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJh
bWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgRWxlbWVudCogc2Nv
cGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGZyYW1lLT5kb2N1bWVudCgpLT5k
b2N1bWVudEVsZW1lbnQoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgbG9jYXRpb24sIGxlbmd0aCk7CisK
KyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gUVZhcmlhbnRMaXN0KCk7CisKKyAgICBR
UmVjdCByZXN1bHRSZWN0ID0gZnJhbWUtPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsK
KyAgICByZWN0IDw8IHJlc3VsdFJlY3QueCgpIDw8IHJlc3VsdFJlY3QueSgpIDw8IHJlc3VsdFJl
Y3Qud2lkdGgoKSA8PCByZXN1bHRSZWN0LmhlaWdodCgpOworICAgIHJldHVybiByZWN0OworfQor
CisKIGNsYXNzIFFXZWJQYWdlV2lkZ2V0Q2xpZW50IDogcHVibGljIFFXZWJQYWdlQ2xpZW50IHsK
IHB1YmxpYzoKICAgICBRV2ViUGFnZVdpZGdldENsaWVudChRV2lkZ2V0KiB2aWV3KQpAQCAtMTI3
MSw2ICsxMzE3LDkgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlu
cHV0TWV0aG9kRXZlbnQgKmV2KQogewogICAgIFdlYkNvcmU6OkZyYW1lICpmcmFtZSA9IHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBXZWJDb3JlOjpF
ZGl0b3IgKmVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKKyNpZiBRVF9WRVJTSU9OID49IDB4MDQw
NjAwCisgICAgUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSBzZWxlY3Rpb24oUUlucHV0TWV0
aG9kRXZlbnQ6OlNlbGVjdGlvbiwgMCwgMCwgUVZhcmlhbnQoKSk7CisjZW5kaWYKIAogICAgIGlm
ICghZWRpdG9yLT5jYW5FZGl0KCkpIHsKICAgICAgICAgZXYtPmlnbm9yZSgpOwpAQCAtMTMxMCwy
MiArMTM1OSwzNSBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudChRSW5w
dXRNZXRob2RFdmVudCAqZXYpCiAgICAgICAgIH0KICNpZiBRVF9WRVJTSU9OID49IDB4MDQwNjAw
CiAgICAgICAgIGNhc2UgUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVjdGlvbjogewotICAgICAgICAg
ICAgaWYgKHJlbmRlclRleHRDb250cm9sKSB7Ci0gICAgICAgICAgICAgICAgcmVuZGVyVGV4dENv
bnRyb2wtPnNldFNlbGVjdGlvblN0YXJ0KGEuc3RhcnQpOwotICAgICAgICAgICAgICAgIHJlbmRl
clRleHRDb250cm9sLT5zZXRTZWxlY3Rpb25FbmQoYS5zdGFydCArIGEubGVuZ3RoKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHNlbGVjdGlvbiA9IGE7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpbnQgbWF4ID0gSW5w
dXRFbGVtZW50OjpzX21heGltdW1MZW5ndGg7CisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYm
IGZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKSB7CisgICAgICAgIGlmIChmcmFtZS0+
ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFn
KSkgeworICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgp
KTsKKyAgICAgICAgICAgIG1heCA9IGlucHV0RWxlbWVudC0+bWF4TGVuZ3RoKCk7CisgICAgICAg
IH0KKyAgICB9CisKICAgICBpZiAoIWV2LT5jb21taXRTdHJpbmcoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0aW9uKGV2LT5jb21taXRTdHJpbmcoKSk7Ci0gICAg
ZWxzZSBpZiAoIWV2LT5wcmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpKSB7CisgICAgZWxzZSB7CiAg
ICAgICAgIFFTdHJpbmcgcHJlZWRpdCA9IGV2LT5wcmVlZGl0U3RyaW5nKCk7Ci0gICAgICAgIGVk
aXRvci0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdCwgdW5kZXJsaW5lcywgcHJlZWRpdC5sZW5ndGgo
KSwgMCk7CisgICAgICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdCwgdW5kZXJsaW5l
cywgKHByZWVkaXQubGVuZ3RoKCkgPiBtYXgpID8gbWF4IDogcHJlZWRpdC5sZW5ndGgoKSwgMCk7
CiAgICAgfQorCisjaWYgUVRfVkVSU0lPTiA+PSAweDA0MDYwMAorICAgIGlmIChyZW5kZXJUZXh0
Q29udHJvbCAmJiAoc2VsZWN0aW9uLmxlbmd0aCA+IDApKSB7CisgICAgICAgIHJlbmRlclRleHRD
b250cm9sLT5zZXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb24uc3RhcnQpOworICAgICAgICByZW5k
ZXJUZXh0Q29udHJvbC0+c2V0U2VsZWN0aW9uRW5kKHNlbGVjdGlvbi5zdGFydCArIHNlbGVjdGlv
bi5sZW5ndGgpOworICAgIH0KKyNlbmRpZgorCiAgICAgZXYtPmFjY2VwdCgpOwogfQogCmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5
YzNlNjliLi4xNTgxOTQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wMy0wNiAgUm9iZXJ0IEhv
Z2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQgbW9yZSBzdXBwb3J0IGZvciB0ZXh0SW5wdXRDb250
cm9sbGVyCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGVkUmFuZ2UoKSwgc2V0TWFy
a2VkVGV4dCgpLCBpbnNlcnRUZXh0KCksCisgICAgICAgIGFuZCBmaXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSgpLgorCisgICAgICAgIFVuc2tpcCB0ZXN0czoKKworICAgICAgICBmYXN0L2Zvcm1z
L2lucHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1sCisgICAgICAgIGZhc3QvZm9ybXMvaW5w
dXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbAorICAgICAgICBmYXN0L3RleHQvaW50ZXJu
YXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCisgICAgICAgIGZhc3QvZXZlbnRzL2lt
ZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24v
NTgyNTM1MC0xLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwK
KyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbAorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcwMgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHF0X2RydF9zZWxlY3RlZFJhbmdl
KToKKyAgICAgICAgKHF0X2RydF9maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQpOgorCiAyMDEwLTAzLTAyICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBTeW1iaWFu
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwppbmRleCA5OTVhYzI1Li5kZTEyM2I0IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTAtMDMtMDYgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIG1vcmUg
c3VwcG9ydCBmb3IgdGV4dElucHV0Q29udHJvbGxlcgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBzZWxlY3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAorICAgICAg
ICBhbmQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKS4KKworICAgICAgICBVbnNraXAgdGVz
dHM6CisKKyAgICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRt
bAorICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwK
KyAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRt
bAorICAgICAgICBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCisg
ICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5odG1sCisgICAgICAgIGVkaXRpbmcv
c2VsZWN0aW9uLzU4MjUzNTAtMi5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL21peGVk
LWVkaXRhYmlsaXR5LTEwLmh0bWwKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU3MDIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1RleHRJ
bnB1dENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjpzZXRN
YXJrZWRUZXh0KToKKyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6Omluc2VydFRleHQpOgor
ICAgICAgICAoVGV4dElucHV0Q29udHJvbGxlcjo6c2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChU
ZXh0SW5wdXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0Lmg6CisKIDIwMTAtMDMt
MDIgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28u
dWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQu
Y3BwCmluZGV4IDdiOGYxMjAuLjhlMDMxNTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcApAQCAtMzEsNiArMzEs
MTAgQEAKIAogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRS2V5RXZlbnQ+Cisj
aW5jbHVkZSA8UUlucHV0TWV0aG9kRXZlbnQ+CisKK2V4dGVybiBRVmFyaWFudExpc3QgcXRfZHJ0
X3NlbGVjdGVkUmFuZ2UoUVdlYlBhZ2UqIHBhZ2UpOworZXh0ZXJuIFFWYXJpYW50TGlzdCBxdF9k
cnRfZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoUVdlYlBhZ2UqIHBhZ2UsIGludCBsb2NhdGlv
biwgaW50IGxlbmd0aCk7CiAKIFRleHRJbnB1dENvbnRyb2xsZXI6OlRleHRJbnB1dENvbnRyb2xs
ZXIoUVdlYlBhZ2UqIHBhcmVudCkKICAgICA6IFFPYmplY3QocGFyZW50KQpAQCAtMTI3LDMgKzEz
MSwzMCBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6OmRvQ29tbWFuZChjb25zdCBRU3RyaW5n
JiBjb21tYW5kKQogICAgIFFLZXlFdmVudCBldmVudDIoUUV2ZW50OjpLZXlSZWxlYXNlLCBrZXlj
b2RlLCBtb2RpZmllcnMpOwogICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KHBhcmVudCgpLCAm
ZXZlbnQyKTsKIH0KKwordm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjpzZXRNYXJrZWRUZXh0KGNv
bnN0IFFTdHJpbmcmIHN0cmluZywgaW50IHN0YXJ0LCBpbnQgZW5kKQoreworICAgIFFMaXN0PFFJ
bnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgUUlucHV0TWV0aG9k
RXZlbnQ6OkF0dHJpYnV0ZSBzZWxlY3Rpb24oUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVjdGlvbiwg
c3RhcnQsIGVuZCwgUVZhcmlhbnQoKSk7CisgICAgYXR0cmlidXRlcyA8PCBzZWxlY3Rpb247Cisg
ICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoc3RyaW5nLCBhdHRyaWJ1dGVzKTsKKyAgICBRQXBw
bGljYXRpb246OnNlbmRFdmVudChwYXJlbnQoKSwgJmV2ZW50KTsKK30KKwordm9pZCBUZXh0SW5w
dXRDb250cm9sbGVyOjppbnNlcnRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0cmluZykKK3sKKyAgICBR
TGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworICAgIFFJbnB1
dE1ldGhvZEV2ZW50IGV2ZW50KHN0cmluZywgYXR0cmlidXRlcyk7CisgICAgZXZlbnQuc2V0Q29t
bWl0U3RyaW5nKHN0cmluZyk7CisgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQocGFyZW50KCks
ICZldmVudCk7Cit9CisKK1FWYXJpYW50TGlzdCBUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxlY3Rl
ZFJhbmdlKCkKK3sKKyAgICByZXR1cm4gcXRfZHJ0X3NlbGVjdGVkUmFuZ2UocW9iamVjdF9jYXN0
PFFXZWJQYWdlKj4ocGFyZW50KCkpKTsKK30KKworUVZhcmlhbnRMaXN0IFRleHRJbnB1dENvbnRy
b2xsZXI6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGludCBsb2NhdGlvbiwgaW50IGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gcXRfZHJ0X2ZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHFvYmpl
Y3RfY2FzdDxRV2ViUGFnZSo+KHBhcmVudCgpKSwgbG9jYXRpb24sIGxlbmd0aCk7Cit9CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVy
UXQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJR
dC5oCmluZGV4IDdjNzQzM2UuLjAyMTA5ODQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5oCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlIDxRTGlzdD4KICNpbmNsdWRlIDxRT2JqZWN0PgorI2luY2x1ZGUgPFFWYXJp
YW50PgogI2luY2x1ZGUgPFFTdHJpbmc+CiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKIApAQCAtNDEs
MTQgKzQyLDE0IEBAIHB1YmxpYzoKIAogcHVibGljIHNsb3RzOgogICAgIHZvaWQgZG9Db21tYW5k
KGNvbnN0IFFTdHJpbmcmIGNvbW1hbmQpOwotLy8gICAgIHZvaWQgc2V0TWFya2VkVGV4dChjb25z
dCBRU3RyaW5nJiBzdHIsIGludCBmcm9tLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIHNldE1hcmtl
ZFRleHQoY29uc3QgUVN0cmluZyYgc3RyaW5nLCBpbnQgc3RhcnQsIGludCBlbmQpOwogLy8gICAg
IGJvb2wgaGFzTWFya2VkVGV4dCgpOwogLy8gICAgIHZvaWQgdW5tYXJrVGV4dCgpOwogLy8gICAg
IFFMaXN0PGludD4gbWFya2VkUmFuZ2UoKTsKLS8vICAgICBRTGlzdDxpbnQ+IHNlbGVjdGVkUmFu
Z2UoKTsKKyAgICBRVmFyaWFudExpc3Qgc2VsZWN0ZWRSYW5nZSgpOwogLy8gICAgIHZvaWQgdmFs
aWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCgpOwotLy8gICAgIHZvaWQgaW5zZXJUZXh0KGNvbnN0
IFFTdHJpbmcmKTsKLS8vICAgICB2b2lkIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCk7Cisg
ICAgdm9pZCBpbnNlcnRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0cmluZyk7CisgICAgUVZhcmlhbnRM
aXN0IGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCk7
CiAvLyAgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50KGludCwgaW50KTsKIC8vICAgICB2
b2lkIHN1YnN0cmluZ0Zyb21SYW5nZShpbnQsIGludCk7CiAvLyAgICAgdm9pZCBjb252ZXJzYXRp
b25JZGVudGlmaWVyKCk7Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50152</attachid>
            <date>2010-03-06 06:25:12 -0800</date>
            <delta_ts>2010-03-14 04:19:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Add-more-support-for-textInputController.patch</filename>
            <type>text/plain</type>
            <size>15666</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA5NDZkNDhjZGU1ZGQ0ZDYyNzY5YTQxOTY1NTQzMDVhYTY3NTFkMmUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDMgTWFyIDIwMTAgMjA6Mjg6MDMgKzAwMDAKU3ViamVjdDogW1BBVENIXSBbUXRdIEFk
ZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKCkFkZCBzdXBwb3J0IGZvciBz
ZWxlY3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAphbmQgZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKS4KClVuc2tpcCB0ZXN0czoKCmZhc3QvZm9ybXMvaW5wdXQt
bWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1l
LWNvbXBsZXRlZC5odG1sCmZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0
aW9uLmh0bWwKZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAplZGl0
aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAplZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTIu
aHRtbAplZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC5odG1sCgpodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MDIKLS0tCiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKwogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAgICAgICAgICAgICAgICAgfCAgIDExIC0t
LQogLi4uL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQgICAgfCAg
ICAzICsKIC4uLi9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0ICAg
IHwgICAgMyArCiAuLi4vc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4
dCAgICB8ICAgMjUgKysrKysrKwogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDc0ICsrKysrKysrKysrKysrKysrKy0tCiBXZWJLaXQvcXQvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKwogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsr
KysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcCAg
ICB8ICAgMzMgKysrKysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJv
bGxlclF0LmggICAgICB8ICAgIDkgKystCiAxMCBmaWxlcyBjaGFuZ2VkLCAyMTcgaW5zZXJ0aW9u
cygrKSwgMjEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLWV4cGVjdGVkLnR4dAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4
MjUzNTAtMi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC1leHBlY3RlZC50
eHQKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZDQwNmRjZC4uZjY4M2FiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEw
LTAzLTA2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFkZCBtb3JlIHN1cHBvcnQg
Zm9yIHRleHRJbnB1dENvbnRyb2xsZXIKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2VsZWN0
ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0KCksIGluc2VydFRleHQoKSwKKyAgICAgICAgYW5kIGZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkuCisKKyAgICAgICAgVW5za2lwIHRlc3RzOgorCisg
ICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKKyAgICAg
ICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCisgICAgICAg
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKKyAgICAg
ICAgZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorICAgICAgICBl
ZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlv
bi81ODI1MzUwLTIuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJp
bGl0eS0xMC5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1NzAyCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAq
IHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0
aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMDMt
MDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBlZWJhNjQyLi5lZTU0
MzVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTE2NCwxNyArMTY0LDYgQEAgaHR0cC90
ZXN0cy9zZWN1cml0eS9sb2NhbC12aWRlby1zb3VyY2UtZnJvbS1yZW1vdGUuaHRtbAogIyAgICAg
ICAgICAgIE1pc3NpbmcgZmVhdHVyZXMgaW4gb3VyIER1bXBSZW5kZXJUcmVlIGltcGxlbWVudGF0
aW9uICAgICAgICAgICAgICAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKIAotIyBNaXNzaW5n
IHRleHRJbnB1dENvbnRyb2xsZXIuc2VsZWN0ZWRSYW5nZSgpCi1lZGl0aW5nL3NlbGVjdGlvbi81
ODI1MzUwLTEuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKLWVkaXRpbmcv
c2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKLQotIyBNaXNzaW5nIHRleHRJbnB1
dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgpCi1mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1p
bWUtcHJlZWRpdC5odG1sCi1mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVk
Lmh0bWwKLWZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwK
LWZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKLQogIyBNaXNzaW5n
IGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgpCiBmYXN0L2V2ZW50cy9t
dWx0aWxpbmUtbGluay1hcnJvdy1uYXZpZ2F0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL3BhZ2VzaG93
LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZTUzZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1
MzUwLTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyBmb3IgYSBidWcg
d2hlcmUgbW92aW5nIHRoZSBjYXJldCBsZWZ0IHRvd2FyZHMgYSBub24tZWRpdGFibGUgcG9ja2V0
IG9mIGFuIGVkaXRhYmxlIHJlZ2lvbiB3b3VsZCBtYWtlIHRoZSBjYXJldCBkaXNhcHBlYXIuIFRo
ZSBjYXJldCBzaG91bGQgYmUganVzdCBiZWZvcmUgdGhlICdCJyBpbiAiQm9iIi4KKworQ2FyZXQ6
ICg4LCA0OCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2Vs
ZWN0aW9uLzU4MjUzNTAtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9l
ZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ0YzZlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgbW92aW5nIHRoZSBjYXJl
dCByaWdodCB0b3dhcmRzIGEgbm9uLWVkaXRhYmxlIHBvY2tldCBvZiBhbiBlZGl0YWJsZSByZWdp
b24gd291bGQgbWFrZSB0aGUgY2FyZXQgZGlzYXBwZWFyLiBUaGUgY2FyZXQgc2hvdWxkIGJlIGp1
c3QgYWZ0ZXIgdGhlICd5JyBpbiAiU2FsbHkiLgorCitDYXJldDogKDg1LCA0OCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRh
YmlsaXR5LTEwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcv
c2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzM2NjM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyMxIERJViBlbGVtZW50IHdpdGggYSBub24t
ZWRpdGFibGUgZWxlbWVudCBvbmx5IGFsaWduIGNlbnRlcjoKKworSGVsbG8KKyMyIERJViBlbGVt
ZW50IHdpdGggYSBub24tZWRpdGFibGUgZWxlbWVudCBvbmx5IGFsaWduIGxlZnQ6CisKK0hlbGxv
CisjMyBESVYgZWxlbWVudCB3aXRoIGEgbm9uLWVkaXRhYmxlIGVsZW1lbnQgb25seSBhbGlnbiBy
aWdodDoKKworSGVsbG8KKyM0IERJViBlbGVtZW50IHdpdGggdHdvIG5vbi1lZGl0YWJsZSBlbGVt
ZW50d2l0aCBwYWRkaW5nOgorCitIZWxsbyBXb3JsZAorIzUgRElWIGVsZW1lbnQgZW1wdHkKKwor
IzYgbm9uIGVkaXRhYmxlIERJViBlbGVtZW50IHdpdGggYW4gZWRpdGFibGUgZW1wdHkgc3BhbiBl
bGVtZW50CisKK0hlbGxvOsKgCitBbmNob3IgKFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCAwIGNh
cmV0WzM5LDQ0XSByZWZwb3M9MzkpIGlzIGNvcnJlY3QuCitBbmNob3IgKFtvYmplY3QgSFRNTERp
dkVsZW1lbnRdLCAzIGNhcmV0Wzc3LDQ0XSByZWZwb3M9NzcpIGlzIGNvcnJlY3QuCitBbmNob3Ig
KFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCAxIGNhcmV0WzQ2LDExNl0gcmVmcG9zPTQ2KSBpcyBj
b3JyZWN0LgorQW5jaG9yIChbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgMCBjYXJldFs4LDExNl0g
cmVmcG9zPTgpIGlzIGNvcnJlY3QuCitBbmNob3IgKFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCAw
IGNhcmV0WzcwLDE4OF0gcmVmcG9zPTcwKSBpcyBjb3JyZWN0LgorQW5jaG9yIChbb2JqZWN0IEhU
TUxEaXZFbGVtZW50XSwgMyBjYXJldFs1MCwyNjBdIHJlZnBvcz01MCkgaXMgY29ycmVjdC4KK0Fu
Y2hvciAoW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIDAgY2FyZXRbNTgsMzMyXSByZWZwb3M9NTgp
IGlzIGNvcnJlY3QuCitBbmNob3IgKFtvYmplY3QgSFRNTEVsZW1lbnRdLCAwIGNhcmV0WzAsMF0g
cmVmcG9zPTApIGlzIGNvcnJlY3QuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDJhOGFjZWQuLmQ0N2VlZGIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwCkBAIC0xOTMsOCArMTkzLDU0IEBAIHZvaWQgUVdFQktJVF9FWFBPUlQg
cXRfZHJ0X3NldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBl
bmFiCiAgICAgZWxzZQogICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9maWxlcigp
OwogfQorCiAjZW5kaWYKIAorUVZhcmlhbnRMaXN0IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZWxl
Y3RlZFJhbmdlKFFXZWJQYWdlKiBwYWdlKQoreworICAgIFdlYkNvcmU6OkZyYW1lICpmcmFtZSA9
IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7CisgICAgUVZhcmlhbnRMaXN0IHNlbGVjdGVkUmFuZ2U7CisgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKTsK
KworICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBz
ZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworCisg
ICAgUmVmUHRyPFJhbmdlPiB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVu
dCgpLCBzY29wZSwgMCwgcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNl
dCgpKTsKKyAgICBBU1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsK
KyAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJh
bmdlLmdldCgpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgdGVzdFJhbmdlLT5zZXRF
bmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCksIGVjKTsKKyAgICBB
U1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKKyAgICBpbnQgZW5k
UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5nZXQoKSk7CisK
KyAgICBzZWxlY3RlZFJhbmdlIDw8IHN0YXJ0UG9zaXRpb24gPDwgKGVuZFBvc2l0aW9uIC0gc3Rh
cnRQb3NpdGlvbik7CisKKyAgICByZXR1cm4gc2VsZWN0ZWRSYW5nZTsKKworfQorCitRVmFyaWFu
dExpc3QgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2ZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKFFX
ZWJQYWdlKiBwYWdlLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpCit7CisgICAgV2ViQ29yZTo6
RnJhbWUgKmZyYW1lID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBRVmFyaWFudExpc3QgcmVjdDsKKworICAgIGlmICgo
bG9jYXRpb24gKyBsZW5ndGggPCBsb2NhdGlvbikgJiYgKGxvY2F0aW9uICsgbGVuZ3RoICE9IDAp
KQorICAgICAgICBsZW5ndGggPSAwOworCisgICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZy
YW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIEVsZW1lbnQqIHNj
b3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGxvY2F0aW9uLCBsZW5ndGgpOwor
CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50TGlzdCgpOworCisgICAg
UVJlY3QgcmVzdWx0UmVjdCA9IGZyYW1lLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7
CisgICAgcmVjdCA8PCByZXN1bHRSZWN0LngoKSA8PCByZXN1bHRSZWN0LnkoKSA8PCByZXN1bHRS
ZWN0LndpZHRoKCkgPDwgcmVzdWx0UmVjdC5oZWlnaHQoKTsKKyAgICByZXR1cm4gcmVjdDsKK30K
KworCiBjbGFzcyBRV2ViUGFnZVdpZGdldENsaWVudCA6IHB1YmxpYyBRV2ViUGFnZUNsaWVudCB7
CiBwdWJsaWM6CiAgICAgUVdlYlBhZ2VXaWRnZXRDbGllbnQoUVdpZGdldCogdmlldykKQEAgLTEy
NzEsNiArMTMxNyw5IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KFFJ
bnB1dE1ldGhvZEV2ZW50ICpldikKIHsKICAgICBXZWJDb3JlOjpGcmFtZSAqZnJhbWUgPSBwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgV2ViQ29yZTo6
RWRpdG9yICplZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisjaWYgUVRfVkVSU0lPTiA+PSAweDA0
MDYwMAorICAgIFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUgc2VsZWN0aW9uKFFJbnB1dE1l
dGhvZEV2ZW50OjpTZWxlY3Rpb24sIDAsIDAsIFFWYXJpYW50KCkpOworI2VuZGlmCiAKICAgICBp
ZiAoIWVkaXRvci0+Y2FuRWRpdCgpKSB7CiAgICAgICAgIGV2LT5pZ25vcmUoKTsKQEAgLTEzMTAs
MjIgKzEzNTksMzUgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlu
cHV0TWV0aG9kRXZlbnQgKmV2KQogICAgICAgICB9CiAjaWYgUVRfVkVSU0lPTiA+PSAweDA0MDYw
MAogICAgICAgICBjYXNlIFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rpb246IHsKLSAgICAgICAg
ICAgIGlmIChyZW5kZXJUZXh0Q29udHJvbCkgewotICAgICAgICAgICAgICAgIHJlbmRlclRleHRD
b250cm9sLT5zZXRTZWxlY3Rpb25TdGFydChhLnN0YXJ0KTsKLSAgICAgICAgICAgICAgICByZW5k
ZXJUZXh0Q29udHJvbC0+c2V0U2VsZWN0aW9uRW5kKGEuc3RhcnQgKyBhLmxlbmd0aCk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICBzZWxlY3Rpb24gPSBhOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICB9CiAgICAgfQogCisgICAgaW50IG1heCA9IElu
cHV0RWxlbWVudDo6c19tYXhpbXVtTGVuZ3RoOworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAm
JiBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSkgeworICAgICAgICBpZiAoZnJhbWUt
PmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRh
ZykpIHsKKyAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KSk7CisgICAgICAgICAgICBtYXggPSBpbnB1dEVsZW1lbnQtPm1heExlbmd0aCgpOworICAgICAg
ICB9CisgICAgfQorCiAgICAgaWYgKCFldi0+Y29tbWl0U3RyaW5nKCkuaXNFbXB0eSgpKQogICAg
ICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihldi0+Y29tbWl0U3RyaW5nKCkpOwotICAg
IGVsc2UgaWYgKCFldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSkgeworICAgIGVsc2Ugewog
ICAgICAgICBRU3RyaW5nIHByZWVkaXQgPSBldi0+cHJlZWRpdFN0cmluZygpOwotICAgICAgICBl
ZGl0b3ItPnNldENvbXBvc2l0aW9uKHByZWVkaXQsIHVuZGVybGluZXMsIHByZWVkaXQubGVuZ3Ro
KCksIDApOworICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKHByZWVkaXQsIHVuZGVybGlu
ZXMsIChwcmVlZGl0Lmxlbmd0aCgpID4gbWF4KSA/IG1heCA6IHByZWVkaXQubGVuZ3RoKCksIDAp
OwogICAgIH0KKworI2lmIFFUX1ZFUlNJT04gPj0gMHgwNDA2MDAKKyAgICBpZiAocmVuZGVyVGV4
dENvbnRyb2wgJiYgKHNlbGVjdGlvbi5sZW5ndGggPiAwKSkgeworICAgICAgICByZW5kZXJUZXh0
Q29udHJvbC0+c2V0U2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uLnN0YXJ0KTsKKyAgICAgICAgcmVu
ZGVyVGV4dENvbnRyb2wtPnNldFNlbGVjdGlvbkVuZChzZWxlY3Rpb24uc3RhcnQgKyBzZWxlY3Rp
b24ubGVuZ3RoKTsKKyAgICB9CisjZW5kaWYKKwogICAgIGV2LT5hY2NlcHQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
OWMzZTY5Yi4uMTU4MTk0NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDMtMDYgIFJvYmVydCBI
b2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIG1vcmUgc3VwcG9ydCBmb3IgdGV4dElucHV0Q29u
dHJvbGxlcgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzZWxlY3RlZFJhbmdlKCksIHNldE1h
cmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAorICAgICAgICBhbmQgZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoKS4KKworICAgICAgICBVbnNraXAgdGVzdHM6CisKKyAgICAgICAgZmFzdC9mb3Jt
cy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAorICAgICAgICBmYXN0L2Zvcm1zL2lu
cHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKKyAgICAgICAgZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAorICAgICAgICBmYXN0L2V2ZW50cy9p
bWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9u
LzU4MjUzNTAtMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi5odG1s
CisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MDIKKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChxdF9kcnRfc2VsZWN0ZWRSYW5n
ZSk6CisgICAgICAgIChxdF9kcnRfZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KToKKwogMjAxMC0wMy0wMiAgU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgU3ltYmlh
biBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKaW5kZXggOTk1YWMyNS4uZGUxMjNiNCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEwLTAzLTA2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFkZCBtb3Jl
IHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3Igc2VsZWN0ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0KCksIGluc2VydFRleHQoKSwKKyAgICAg
ICAgYW5kIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkuCisKKyAgICAgICAgVW5za2lwIHRl
c3RzOgorCisgICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0
bWwKKyAgICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1s
CisgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0
bWwKKyAgICAgICAgZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAor
ICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAorICAgICAgICBlZGl0aW5n
L3NlbGVjdGlvbi81ODI1MzUwLTIuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9taXhl
ZC1lZGl0YWJpbGl0eS0xMC5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1NzAyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXh0
SW5wdXRDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoVGV4dElucHV0Q29udHJvbGxlcjo6c2V0
TWFya2VkVGV4dCk6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjppbnNlcnRUZXh0KToK
KyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAo
VGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5oOgorCiAyMDEwLTAz
LTAyICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNv
LnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0
LmNwcAppbmRleCA3YjhmMTIwLi4wYWYxYzk1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHAKQEAgLTMwLDggKzMw
LDEyIEBACiAjaW5jbHVkZSAiVGV4dElucHV0Q29udHJvbGxlclF0LmgiCiAKICNpbmNsdWRlIDxR
QXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUlucHV0TWV0aG9kRXZlbnQ+CiAjaW5jbHVkZSA8UUtl
eUV2ZW50PgogCitleHRlcm4gUVZhcmlhbnRMaXN0IHF0X2RydF9zZWxlY3RlZFJhbmdlKFFXZWJQ
YWdlKiBwYWdlKTsKK2V4dGVybiBRVmFyaWFudExpc3QgcXRfZHJ0X2ZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKFFXZWJQYWdlKiBwYWdlLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpOworCiBU
ZXh0SW5wdXRDb250cm9sbGVyOjpUZXh0SW5wdXRDb250cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQp
CiAgICAgOiBRT2JqZWN0KHBhcmVudCkKIHsKQEAgLTEyNywzICsxMzEsMzIgQEAgdm9pZCBUZXh0
SW5wdXRDb250cm9sbGVyOjpkb0NvbW1hbmQoY29uc3QgUVN0cmluZyYgY29tbWFuZCkKICAgICBR
S2V5RXZlbnQgZXZlbnQyKFFFdmVudDo6S2V5UmVsZWFzZSwga2V5Y29kZSwgbW9kaWZpZXJzKTsK
ICAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudChwYXJlbnQoKSwgJmV2ZW50Mik7CiB9CisKK3Zv
aWQgVGV4dElucHV0Q29udHJvbGxlcjo6c2V0TWFya2VkVGV4dChjb25zdCBRU3RyaW5nJiBzdHJp
bmcsIGludCBzdGFydCwgaW50IGVuZCkKK3sKKyAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6
QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworI2lmIFFUX1ZFUlNJT04gPj0gMHgwNDA2MDAKKyAgICBR
SW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlIHNlbGVjdGlvbihRSW5wdXRNZXRob2RFdmVudDo6
U2VsZWN0aW9uLCBzdGFydCwgZW5kLCBRVmFyaWFudCgpKTsKKyAgICBhdHRyaWJ1dGVzIDw8IHNl
bGVjdGlvbjsKKyNlbmRpZgorICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KHN0cmluZywgYXR0
cmlidXRlcyk7CisgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQocGFyZW50KCksICZldmVudCk7
Cit9CisKK3ZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dChjb25zdCBRU3RyaW5n
JiBzdHJpbmcpCit7CisgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0
cmlidXRlczsKKyAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudChzdHJpbmcsIGF0dHJpYnV0ZXMp
OworICAgIGV2ZW50LnNldENvbW1pdFN0cmluZyhzdHJpbmcpOworICAgIFFBcHBsaWNhdGlvbjo6
c2VuZEV2ZW50KHBhcmVudCgpLCAmZXZlbnQpOworfQorCitRVmFyaWFudExpc3QgVGV4dElucHV0
Q29udHJvbGxlcjo6c2VsZWN0ZWRSYW5nZSgpCit7CisgICAgcmV0dXJuIHF0X2RydF9zZWxlY3Rl
ZFJhbmdlKHFvYmplY3RfY2FzdDxRV2ViUGFnZSo+KHBhcmVudCgpKSk7Cit9CisKK1FWYXJpYW50
TGlzdCBUZXh0SW5wdXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShpbnQg
bG9jYXRpb24sIGludCBsZW5ndGgpCit7CisgICAgcmV0dXJuIHF0X2RydF9maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZShxb2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihwYXJlbnQoKSksIGxvY2F0aW9u
LCBsZW5ndGgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
VGV4dElucHV0Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9U
ZXh0SW5wdXRDb250cm9sbGVyUXQuaAppbmRleCA3Yzc0MzNlLi4wMjEwOTg0IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuaAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQu
aApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSA8UUxpc3Q+CiAjaW5jbHVkZSA8UU9iamVj
dD4KKyNpbmNsdWRlIDxRVmFyaWFudD4KICNpbmNsdWRlIDxRU3RyaW5nPgogI2luY2x1ZGUgInF3
ZWJwYWdlLmgiCiAKQEAgLTQxLDE0ICs0MiwxNCBAQCBwdWJsaWM6CiAKIHB1YmxpYyBzbG90czoK
ICAgICB2b2lkIGRvQ29tbWFuZChjb25zdCBRU3RyaW5nJiBjb21tYW5kKTsKLS8vICAgICB2b2lk
IHNldE1hcmtlZFRleHQoY29uc3QgUVN0cmluZyYgc3RyLCBpbnQgZnJvbSwgaW50IGxlbmd0aCk7
CisgICAgdm9pZCBzZXRNYXJrZWRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0cmluZywgaW50IHN0YXJ0
LCBpbnQgZW5kKTsKIC8vICAgICBib29sIGhhc01hcmtlZFRleHQoKTsKIC8vICAgICB2b2lkIHVu
bWFya1RleHQoKTsKIC8vICAgICBRTGlzdDxpbnQ+IG1hcmtlZFJhbmdlKCk7Ci0vLyAgICAgUUxp
c3Q8aW50PiBzZWxlY3RlZFJhbmdlKCk7CisgICAgUVZhcmlhbnRMaXN0IHNlbGVjdGVkUmFuZ2Uo
KTsKIC8vICAgICB2b2lkIHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQoKTsKLS8vICAgICB2
b2lkIGluc2VyVGV4dChjb25zdCBRU3RyaW5nJik7Ci0vLyAgICAgdm9pZCBmaXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSgpOworICAgIHZvaWQgaW5zZXJ0VGV4dChjb25zdCBRU3RyaW5nJiBzdHJp
bmcpOworICAgIFFWYXJpYW50TGlzdCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShpbnQgbG9j
YXRpb24sIGludCBsZW5ndGgpOwogLy8gICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludChp
bnQsIGludCk7CiAvLyAgICAgdm9pZCBzdWJzdHJpbmdGcm9tUmFuZ2UoaW50LCBpbnQpOwogLy8g
ICAgIHZvaWQgY29udmVyc2F0aW9uSWRlbnRpZmllcigpOwotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="33223"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50670</attachid>
            <date>2010-03-14 04:19:06 -0700</date>
            <delta_ts>2010-03-27 05:03:00 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Qt-Add-more-support-for-textInputController.patch</filename>
            <type>text/plain</type>
            <size>16293</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBkZTc4ZTZhOWRlYWI5MGI0ZDUyMTEzYWVkYzNhZDBjMzc0M2JjNDk1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDMgTWFyIDIwMTAgMjA6Mjg6MDMgKzAwMDAKU3ViamVjdDogW1BBVENIXSBbUXRdIEFk
ZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKCkFkZCBzdXBwb3J0IGZvciBz
ZWxlY3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAphbmQgZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKS4KClVuc2tpcCB0ZXN0czoKCmZhc3QvZm9ybXMvaW5wdXQt
bWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1l
LWNvbXBsZXRlZC5odG1sCmZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0
aW9uLmh0bWwKZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAplZGl0
aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAplZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTIu
aHRtbAplZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC5odG1sCgpodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MDIKLS0tCiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKwogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAgICAgICAgICAgICAgICAgfCAgIDExIC0t
LQogLi4uL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQgICAgfCAg
ICAzICsKIC4uLi9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0ICAg
IHwgICAgMyArCiAuLi4vc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4
dCAgICB8ICAgMjUgKysrKysrKwogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDczICsrKysrKysrKysrKysrKysrKy0tCiBXZWJLaXQvcXQvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKwogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsr
KysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcCAg
ICB8ICAgMzMgKysrKysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJv
bGxlclF0LmggICAgICB8ICAgIDkgKystCiAxMCBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9u
cygrKSwgMjEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLWV4cGVjdGVkLnR4dAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4
MjUzNTAtMi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC1leHBlY3RlZC50
eHQKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZDQwNmRjZC4uZjY4M2FiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEw
LTAzLTA2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFkZCBtb3JlIHN1cHBvcnQg
Zm9yIHRleHRJbnB1dENvbnRyb2xsZXIKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2VsZWN0
ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0KCksIGluc2VydFRleHQoKSwKKyAgICAgICAgYW5kIGZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkuCisKKyAgICAgICAgVW5za2lwIHRlc3RzOgorCisg
ICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKKyAgICAg
ICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCisgICAgICAg
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKKyAgICAg
ICAgZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorICAgICAgICBl
ZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlv
bi81ODI1MzUwLTIuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJp
bGl0eS0xMC5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1NzAyCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAq
IHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0
aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMDMt
MDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBlZWJhNjQyLi5lZTU0
MzVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTE2NCwxNyArMTY0LDYgQEAgaHR0cC90
ZXN0cy9zZWN1cml0eS9sb2NhbC12aWRlby1zb3VyY2UtZnJvbS1yZW1vdGUuaHRtbAogIyAgICAg
ICAgICAgIE1pc3NpbmcgZmVhdHVyZXMgaW4gb3VyIER1bXBSZW5kZXJUcmVlIGltcGxlbWVudGF0
aW9uICAgICAgICAgICAgICAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKIAotIyBNaXNzaW5n
IHRleHRJbnB1dENvbnRyb2xsZXIuc2VsZWN0ZWRSYW5nZSgpCi1lZGl0aW5nL3NlbGVjdGlvbi81
ODI1MzUwLTEuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKLWVkaXRpbmcv
c2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKLQotIyBNaXNzaW5nIHRleHRJbnB1
dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgpCi1mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1p
bWUtcHJlZWRpdC5odG1sCi1mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVk
Lmh0bWwKLWZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwK
LWZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKLQogIyBNaXNzaW5n
IGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgpCiBmYXN0L2V2ZW50cy9t
dWx0aWxpbmUtbGluay1hcnJvdy1uYXZpZ2F0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL3BhZ2VzaG93
LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZTUzZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1
MzUwLTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyBmb3IgYSBidWcg
d2hlcmUgbW92aW5nIHRoZSBjYXJldCBsZWZ0IHRvd2FyZHMgYSBub24tZWRpdGFibGUgcG9ja2V0
IG9mIGFuIGVkaXRhYmxlIHJlZ2lvbiB3b3VsZCBtYWtlIHRoZSBjYXJldCBkaXNhcHBlYXIuIFRo
ZSBjYXJldCBzaG91bGQgYmUganVzdCBiZWZvcmUgdGhlICdCJyBpbiAiQm9iIi4KKworQ2FyZXQ6
ICg4LCA0OCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2Vs
ZWN0aW9uLzU4MjUzNTAtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9l
ZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ0YzZlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgbW92aW5nIHRoZSBjYXJl
dCByaWdodCB0b3dhcmRzIGEgbm9uLWVkaXRhYmxlIHBvY2tldCBvZiBhbiBlZGl0YWJsZSByZWdp
b24gd291bGQgbWFrZSB0aGUgY2FyZXQgZGlzYXBwZWFyLiBUaGUgY2FyZXQgc2hvdWxkIGJlIGp1
c3QgYWZ0ZXIgdGhlICd5JyBpbiAiU2FsbHkiLgorCitDYXJldDogKDg1LCA0OCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRh
YmlsaXR5LTEwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcv
c2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzM2NjM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyMxIERJViBlbGVtZW50IHdpdGggYSBub24t
ZWRpdGFibGUgZWxlbWVudCBvbmx5IGFsaWduIGNlbnRlcjoKKworSGVsbG8KKyMyIERJViBlbGVt
ZW50IHdpdGggYSBub24tZWRpdGFibGUgZWxlbWVudCBvbmx5IGFsaWduIGxlZnQ6CisKK0hlbGxv
CisjMyBESVYgZWxlbWVudCB3aXRoIGEgbm9uLWVkaXRhYmxlIGVsZW1lbnQgb25seSBhbGlnbiBy
aWdodDoKKworSGVsbG8KKyM0IERJViBlbGVtZW50IHdpdGggdHdvIG5vbi1lZGl0YWJsZSBlbGVt
ZW50d2l0aCBwYWRkaW5nOgorCitIZWxsbyBXb3JsZAorIzUgRElWIGVsZW1lbnQgZW1wdHkKKwor
IzYgbm9uIGVkaXRhYmxlIERJViBlbGVtZW50IHdpdGggYW4gZWRpdGFibGUgZW1wdHkgc3BhbiBl
bGVtZW50CisKK0hlbGxvOsKgCitBbmNob3IgKFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCAwIGNh
cmV0WzM5LDQ0XSByZWZwb3M9MzkpIGlzIGNvcnJlY3QuCitBbmNob3IgKFtvYmplY3QgSFRNTERp
dkVsZW1lbnRdLCAzIGNhcmV0Wzc3LDQ0XSByZWZwb3M9NzcpIGlzIGNvcnJlY3QuCitBbmNob3Ig
KFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCAxIGNhcmV0WzQ2LDExNl0gcmVmcG9zPTQ2KSBpcyBj
b3JyZWN0LgorQW5jaG9yIChbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgMCBjYXJldFs4LDExNl0g
cmVmcG9zPTgpIGlzIGNvcnJlY3QuCitBbmNob3IgKFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCAw
IGNhcmV0WzcwLDE4OF0gcmVmcG9zPTcwKSBpcyBjb3JyZWN0LgorQW5jaG9yIChbb2JqZWN0IEhU
TUxEaXZFbGVtZW50XSwgMyBjYXJldFs1MCwyNjBdIHJlZnBvcz01MCkgaXMgY29ycmVjdC4KK0Fu
Y2hvciAoW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIDAgY2FyZXRbNTgsMzMyXSByZWZwb3M9NTgp
IGlzIGNvcnJlY3QuCitBbmNob3IgKFtvYmplY3QgSFRNTEVsZW1lbnRdLCAwIGNhcmV0WzAsMF0g
cmVmcG9zPTApIGlzIGNvcnJlY3QuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDJhOGFjZWQuLmMzN2VkYmIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwCkBAIC0xOTMsOCArMTkzLDU0IEBAIHZvaWQgUVdFQktJVF9FWFBPUlQg
cXRfZHJ0X3NldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBl
bmFiCiAgICAgZWxzZQogICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9maWxlcigp
OwogfQorCiAjZW5kaWYKIAorUVZhcmlhbnRMaXN0IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZWxl
Y3RlZFJhbmdlKFFXZWJQYWdlKiBwYWdlKQoreworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9
IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7CisgICAgUVZhcmlhbnRMaXN0IHNlbGVjdGVkUmFuZ2U7CisgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKTsK
KworICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBz
ZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworCisg
ICAgUmVmUHRyPFJhbmdlPiB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVu
dCgpLCBzY29wZSwgMCwgcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNl
dCgpKTsKKyAgICBBU1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsK
KyAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJh
bmdlLmdldCgpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgdGVzdFJhbmdlLT5zZXRF
bmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCksIGVjKTsKKyAgICBB
U1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKKyAgICBpbnQgZW5k
UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5nZXQoKSk7CisK
KyAgICBzZWxlY3RlZFJhbmdlIDw8IHN0YXJ0UG9zaXRpb24gPDwgKGVuZFBvc2l0aW9uIC0gc3Rh
cnRQb3NpdGlvbik7CisKKyAgICByZXR1cm4gc2VsZWN0ZWRSYW5nZTsKKworfQorCitRVmFyaWFu
dExpc3QgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2ZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKFFX
ZWJQYWdlKiBwYWdlLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpCit7CisgICAgV2ViQ29yZTo6
RnJhbWUqIGZyYW1lID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBRVmFyaWFudExpc3QgcmVjdDsKKworICAgIGlmICgo
bG9jYXRpb24gKyBsZW5ndGggPCBsb2NhdGlvbikgJiYgKGxvY2F0aW9uICsgbGVuZ3RoICE9IDAp
KQorICAgICAgICBsZW5ndGggPSAwOworCisgICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZy
YW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIEVsZW1lbnQqIHNj
b3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGxvY2F0aW9uLCBsZW5ndGgpOwor
CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50TGlzdCgpOworCisgICAg
UVJlY3QgcmVzdWx0UmVjdCA9IGZyYW1lLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7
CisgICAgcmVjdCA8PCByZXN1bHRSZWN0LngoKSA8PCByZXN1bHRSZWN0LnkoKSA8PCByZXN1bHRS
ZWN0LndpZHRoKCkgPDwgcmVzdWx0UmVjdC5oZWlnaHQoKTsKKyAgICByZXR1cm4gcmVjdDsKK30K
KworCiBjbGFzcyBRV2ViUGFnZVdpZGdldENsaWVudCA6IHB1YmxpYyBRV2ViUGFnZUNsaWVudCB7
CiBwdWJsaWM6CiAgICAgUVdlYlBhZ2VXaWRnZXRDbGllbnQoUVdpZGdldCogdmlldykKQEAgLTEy
NzEsNiArMTMxNyw5IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KFFJ
bnB1dE1ldGhvZEV2ZW50ICpldikKIHsKICAgICBXZWJDb3JlOjpGcmFtZSAqZnJhbWUgPSBwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgV2ViQ29yZTo6
RWRpdG9yICplZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisjaWYgUVRfVkVSU0lPTiA+PSAweDA0
MDYwMAorICAgIFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUgc2VsZWN0aW9uKFFJbnB1dE1l
dGhvZEV2ZW50OjpTZWxlY3Rpb24sIDAsIDAsIFFWYXJpYW50KCkpOworI2VuZGlmCiAKICAgICBp
ZiAoIWVkaXRvci0+Y2FuRWRpdCgpKSB7CiAgICAgICAgIGV2LT5pZ25vcmUoKTsKQEAgLTEyODcs
NiArMTMzNiw3IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KFFJbnB1
dE1ldGhvZEV2ZW50ICpldikKICAgICAgICAgcmVuZGVyVGV4dENvbnRyb2wgPSB0b1JlbmRlclRl
eHRDb250cm9sKHJlbmRlcmVyKTsKIAogICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4g
dW5kZXJsaW5lczsKKyAgICBib29sIGhhc1NlbGVjdGlvbiA9IGZhbHNlOwogCiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBldi0+YXR0cmlidXRlcygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNv
bnN0IFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUmIGEgPSBldi0+YXR0cmlidXRlcygpLmF0
KGkpOwpAQCAtMTMxMCwxMCArMTM2MCw4IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1l
dGhvZEV2ZW50KFFJbnB1dE1ldGhvZEV2ZW50ICpldikKICAgICAgICAgfQogI2lmIFFUX1ZFUlNJ
T04gPj0gMHgwNDA2MDAKICAgICAgICAgY2FzZSBRSW5wdXRNZXRob2RFdmVudDo6U2VsZWN0aW9u
OiB7Ci0gICAgICAgICAgICBpZiAocmVuZGVyVGV4dENvbnRyb2wpIHsKLSAgICAgICAgICAgICAg
ICByZW5kZXJUZXh0Q29udHJvbC0+c2V0U2VsZWN0aW9uU3RhcnQoYS5zdGFydCk7Ci0gICAgICAg
ICAgICAgICAgcmVuZGVyVGV4dENvbnRyb2wtPnNldFNlbGVjdGlvbkVuZChhLnN0YXJ0ICsgYS5s
ZW5ndGgpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VsZWN0aW9uID0gYTsKKyAgICAg
ICAgICAgIGhhc1NlbGVjdGlvbiA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogI2VuZGlmCkBAIC0xMzIyLDEwICsxMzcwLDIzIEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjpp
bnB1dE1ldGhvZEV2ZW50KFFJbnB1dE1ldGhvZEV2ZW50ICpldikKIAogICAgIGlmICghZXYtPmNv
bW1pdFN0cmluZygpLmlzRW1wdHkoKSkKICAgICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRp
b24oZXYtPmNvbW1pdFN0cmluZygpKTsKLSAgICBlbHNlIGlmICghZXYtPnByZWVkaXRTdHJpbmco
KS5pc0VtcHR5KCkpIHsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gMS4gZW1wdHkgcHJlZWRpdCB3
aXRoIGEgc2VsZWN0aW9uIGF0dHJpYnV0ZSwgYW5kIHN0YXJ0L2VuZCBvZiAwIGNhbmNlbHMgY29t
cG9zaXRpb24KKyAgICAgICAgLy8gMi4gZW1wdHkgcHJlZWRpdCB3aXRoIGEgc2VsZWN0aW9uIGF0
dHJpYnV0ZSwgYW5kIHN0YXJ0L2VuZCBvZiBub24tMCB1cGRhdGVzIHNlbGVjdGlvbiBvZiBjdXJy
ZW50IHByZWVkaXQgdGV4dAorICAgICAgICAvLyAzLiBwb3B1bGF0ZWQgcHJlZWRpdCB3aXRoIGEg
c2VsZWN0aW9uIGF0dHJpYnV0ZSwgYW5kIHN0YXJ0L2VuZCBvZiAwIG9yIG5vbi0wIHVwZGF0ZXMg
c2VsZWN0aW9uIG9mIHN1cHBsaWVkIHByZWVkaXQgdGV4dAorICAgICAgICAvLyA0LiBvdGhlcndp
c2UgZXZlbnQgaXMgdXBkYXRpbmcgc3VwcGxpZWQgcHJlLWVkaXQgdGV4dAogICAgICAgICBRU3Ry
aW5nIHByZWVkaXQgPSBldi0+cHJlZWRpdFN0cmluZygpOwotICAgICAgICBlZGl0b3ItPnNldENv
bXBvc2l0aW9uKHByZWVkaXQsIHVuZGVybGluZXMsIHByZWVkaXQubGVuZ3RoKCksIDApOworI2lm
IFFUX1ZFUlNJT04gPj0gMHgwNDA2MDAKKyAgICAgICAgaWYgKGhhc1NlbGVjdGlvbikgeworICAg
ICAgICAgICAgUVN0cmluZyB0ZXh0ID0gKHJlbmRlclRleHRDb250cm9sKSA/IFFTdHJpbmcocmVu
ZGVyVGV4dENvbnRyb2wtPnRleHQoKSkgOiBRU3RyaW5nKCk7CisgICAgICAgICAgICBpZiAocHJl
ZWRpdC5pc0VtcHR5KCkgJiYgc2VsZWN0aW9uLnN0YXJ0ICsgc2VsZWN0aW9uLmxlbmd0aCA+IDAp
CisgICAgICAgICAgICAgICAgcHJlZWRpdCA9IHRleHQ7CisgICAgICAgICAgICBlZGl0b3ItPnNl
dENvbXBvc2l0aW9uKHByZWVkaXQsIHVuZGVybGluZXMsIHNlbGVjdGlvbi5zdGFydCwgc2VsZWN0
aW9uLnN0YXJ0ICsgc2VsZWN0aW9uLmxlbmd0aCk7CisgICAgICAgIH0gZWxzZQorI2VuZGlmCisg
ICAgICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKHByZWVkaXQsIHVuZGVybGluZXMsIHBy
ZWVkaXQubGVuZ3RoKCksIDApOwogICAgIH0KKwogICAgIGV2LT5hY2NlcHQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
OWMzZTY5Yi4uMTU4MTk0NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDMtMDYgIFJvYmVydCBI
b2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIG1vcmUgc3VwcG9ydCBmb3IgdGV4dElucHV0Q29u
dHJvbGxlcgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzZWxlY3RlZFJhbmdlKCksIHNldE1h
cmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAorICAgICAgICBhbmQgZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoKS4KKworICAgICAgICBVbnNraXAgdGVzdHM6CisKKyAgICAgICAgZmFzdC9mb3Jt
cy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAorICAgICAgICBmYXN0L2Zvcm1zL2lu
cHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKKyAgICAgICAgZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAorICAgICAgICBmYXN0L2V2ZW50cy9p
bWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9u
LzU4MjUzNTAtMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi5odG1s
CisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MDIKKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChxdF9kcnRfc2VsZWN0ZWRSYW5n
ZSk6CisgICAgICAgIChxdF9kcnRfZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KToKKwogMjAxMC0wMy0wMiAgU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgU3ltYmlh
biBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKaW5kZXggOTk1YWMyNS4uZGUxMjNiNCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEwLTAzLTA2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFkZCBtb3Jl
IHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3Igc2VsZWN0ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0KCksIGluc2VydFRleHQoKSwKKyAgICAg
ICAgYW5kIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkuCisKKyAgICAgICAgVW5za2lwIHRl
c3RzOgorCisgICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0
bWwKKyAgICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1s
CisgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0
bWwKKyAgICAgICAgZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAor
ICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAorICAgICAgICBlZGl0aW5n
L3NlbGVjdGlvbi81ODI1MzUwLTIuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9taXhl
ZC1lZGl0YWJpbGl0eS0xMC5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1NzAyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXh0
SW5wdXRDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoVGV4dElucHV0Q29udHJvbGxlcjo6c2V0
TWFya2VkVGV4dCk6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjppbnNlcnRUZXh0KToK
KyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAo
VGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5oOgorCiAyMDEwLTAz
LTAyICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNv
LnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0
LmNwcAppbmRleCA3YjhmMTIwLi4wYWYxYzk1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHAKQEAgLTMwLDggKzMw
LDEyIEBACiAjaW5jbHVkZSAiVGV4dElucHV0Q29udHJvbGxlclF0LmgiCiAKICNpbmNsdWRlIDxR
QXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUlucHV0TWV0aG9kRXZlbnQ+CiAjaW5jbHVkZSA8UUtl
eUV2ZW50PgogCitleHRlcm4gUVZhcmlhbnRMaXN0IHF0X2RydF9zZWxlY3RlZFJhbmdlKFFXZWJQ
YWdlKiBwYWdlKTsKK2V4dGVybiBRVmFyaWFudExpc3QgcXRfZHJ0X2ZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKFFXZWJQYWdlKiBwYWdlLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpOworCiBU
ZXh0SW5wdXRDb250cm9sbGVyOjpUZXh0SW5wdXRDb250cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQp
CiAgICAgOiBRT2JqZWN0KHBhcmVudCkKIHsKQEAgLTEyNywzICsxMzEsMzIgQEAgdm9pZCBUZXh0
SW5wdXRDb250cm9sbGVyOjpkb0NvbW1hbmQoY29uc3QgUVN0cmluZyYgY29tbWFuZCkKICAgICBR
S2V5RXZlbnQgZXZlbnQyKFFFdmVudDo6S2V5UmVsZWFzZSwga2V5Y29kZSwgbW9kaWZpZXJzKTsK
ICAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudChwYXJlbnQoKSwgJmV2ZW50Mik7CiB9CisKK3Zv
aWQgVGV4dElucHV0Q29udHJvbGxlcjo6c2V0TWFya2VkVGV4dChjb25zdCBRU3RyaW5nJiBzdHJp
bmcsIGludCBzdGFydCwgaW50IGVuZCkKK3sKKyAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6
QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworI2lmIFFUX1ZFUlNJT04gPj0gMHgwNDA2MDAKKyAgICBR
SW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlIHNlbGVjdGlvbihRSW5wdXRNZXRob2RFdmVudDo6
U2VsZWN0aW9uLCBzdGFydCwgZW5kLCBRVmFyaWFudCgpKTsKKyAgICBhdHRyaWJ1dGVzIDw8IHNl
bGVjdGlvbjsKKyNlbmRpZgorICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KHN0cmluZywgYXR0
cmlidXRlcyk7CisgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQocGFyZW50KCksICZldmVudCk7
Cit9CisKK3ZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dChjb25zdCBRU3RyaW5n
JiBzdHJpbmcpCit7CisgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0
cmlidXRlczsKKyAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudChzdHJpbmcsIGF0dHJpYnV0ZXMp
OworICAgIGV2ZW50LnNldENvbW1pdFN0cmluZyhzdHJpbmcpOworICAgIFFBcHBsaWNhdGlvbjo6
c2VuZEV2ZW50KHBhcmVudCgpLCAmZXZlbnQpOworfQorCitRVmFyaWFudExpc3QgVGV4dElucHV0
Q29udHJvbGxlcjo6c2VsZWN0ZWRSYW5nZSgpCit7CisgICAgcmV0dXJuIHF0X2RydF9zZWxlY3Rl
ZFJhbmdlKHFvYmplY3RfY2FzdDxRV2ViUGFnZSo+KHBhcmVudCgpKSk7Cit9CisKK1FWYXJpYW50
TGlzdCBUZXh0SW5wdXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShpbnQg
bG9jYXRpb24sIGludCBsZW5ndGgpCit7CisgICAgcmV0dXJuIHF0X2RydF9maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZShxb2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihwYXJlbnQoKSksIGxvY2F0aW9u
LCBsZW5ndGgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
VGV4dElucHV0Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9U
ZXh0SW5wdXRDb250cm9sbGVyUXQuaAppbmRleCA3Yzc0MzNlLi4wMjEwOTg0IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuaAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQu
aApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSA8UUxpc3Q+CiAjaW5jbHVkZSA8UU9iamVj
dD4KKyNpbmNsdWRlIDxRVmFyaWFudD4KICNpbmNsdWRlIDxRU3RyaW5nPgogI2luY2x1ZGUgInF3
ZWJwYWdlLmgiCiAKQEAgLTQxLDE0ICs0MiwxNCBAQCBwdWJsaWM6CiAKIHB1YmxpYyBzbG90czoK
ICAgICB2b2lkIGRvQ29tbWFuZChjb25zdCBRU3RyaW5nJiBjb21tYW5kKTsKLS8vICAgICB2b2lk
IHNldE1hcmtlZFRleHQoY29uc3QgUVN0cmluZyYgc3RyLCBpbnQgZnJvbSwgaW50IGxlbmd0aCk7
CisgICAgdm9pZCBzZXRNYXJrZWRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0cmluZywgaW50IHN0YXJ0
LCBpbnQgZW5kKTsKIC8vICAgICBib29sIGhhc01hcmtlZFRleHQoKTsKIC8vICAgICB2b2lkIHVu
bWFya1RleHQoKTsKIC8vICAgICBRTGlzdDxpbnQ+IG1hcmtlZFJhbmdlKCk7Ci0vLyAgICAgUUxp
c3Q8aW50PiBzZWxlY3RlZFJhbmdlKCk7CisgICAgUVZhcmlhbnRMaXN0IHNlbGVjdGVkUmFuZ2Uo
KTsKIC8vICAgICB2b2lkIHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQoKTsKLS8vICAgICB2
b2lkIGluc2VyVGV4dChjb25zdCBRU3RyaW5nJik7Ci0vLyAgICAgdm9pZCBmaXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSgpOworICAgIHZvaWQgaW5zZXJ0VGV4dChjb25zdCBRU3RyaW5nJiBzdHJp
bmcpOworICAgIFFWYXJpYW50TGlzdCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShpbnQgbG9j
YXRpb24sIGludCBsZW5ndGgpOwogLy8gICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludChp
bnQsIGludCk7CiAvLyAgICAgdm9pZCBzdWJzdHJpbmdGcm9tUmFuZ2UoaW50LCBpbnQpOwogLy8g
ICAgIHZvaWQgY29udmVyc2F0aW9uSWRlbnRpZmllcigpOwotLSAKMS42LjMuMwoK
</data>
<flag name="commit-queue"
          id="34881"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51824</attachid>
            <date>2010-03-27 05:03:00 -0700</date>
            <delta_ts>2010-04-06 23:43:53 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Qt-Add-more-support-for-textInputController.patch</filename>
            <type>text/plain</type>
            <size>16570</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBlNjMwMzhmMTg3Y2M1Y2RhYjcxYjg0OGU4ZmU5Y2VjMGRjZDI1NzRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDMgTWFyIDIwMTAgMjA6Mjg6MDMgKzAwMDAKU3ViamVjdDogW1BBVENIXSBbUXRdIEFk
ZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKCkFkZCBzdXBwb3J0IGZvciBz
ZWxlY3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAphbmQgZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKS4KClVuc2tpcCB0ZXN0czoKCmZhc3QvZm9ybXMvaW5wdXQt
bWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1l
LWNvbXBsZXRlZC5odG1sCmZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0
aW9uLmh0bWwKZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAplZGl0
aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAplZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTIu
aHRtbAplZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC5odG1sCgpodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MDIKLS0tCiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKwogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAgICAgICAgICAgICAgICAgfCAgIDExIC0t
LQogLi4uL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQgICAgfCAg
ICAzICsKIC4uLi9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0ICAg
IHwgICAgMyArCiAuLi4vc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4
dCAgICB8ICAgMjUgKysrKysrKwogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDczICsrKysrKysrKysrKysrKysrKy0tCiBXZWJLaXQvcXQvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKwogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsr
KysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcCAg
ICB8ICAgMzMgKysrKysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJv
bGxlclF0LmggICAgICB8ICAgIDkgKystCiAxMCBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9u
cygrKSwgMjEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLWV4cGVjdGVkLnR4dAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4
MjUzNTAtMi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC1leHBlY3RlZC50
eHQKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNjA2NmRmNC4uYzM1ZWMzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEw
LTAzLTA2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFkZCBtb3JlIHN1cHBvcnQg
Zm9yIHRleHRJbnB1dENvbnRyb2xsZXIKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2VsZWN0
ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0KCksIGluc2VydFRleHQoKSwKKyAgICAgICAgYW5kIGZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkuCisKKyAgICAgICAgVW5za2lwIHRlc3RzOgorCisg
ICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKKyAgICAg
ICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCisgICAgICAg
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKKyAgICAg
ICAgZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorICAgICAgICBl
ZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlv
bi81ODI1MzUwLTIuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJp
bGl0eS0xMC5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1NzAyCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAq
IHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0
aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMDMt
MjYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEJldGggRGFraW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCAxNzJlYWFkLi5hODVkYjE0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTI2OCwxNyArMjY4LDYgQEAgaHR0cC90ZXN0
cy9zZWN1cml0eS9sb2NhbC12aWRlby1zb3VyY2UtZnJvbS1yZW1vdGUuaHRtbAogIyAgICAgICAg
ICAgIE1pc3NpbmcgZmVhdHVyZXMgaW4gb3VyIER1bXBSZW5kZXJUcmVlIGltcGxlbWVudGF0aW9u
ICAgICAgICAgICAgICAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKIAotIyBNaXNzaW5nIHRl
eHRJbnB1dENvbnRyb2xsZXIuc2VsZWN0ZWRSYW5nZSgpCi1lZGl0aW5nL3NlbGVjdGlvbi81ODI1
MzUwLTEuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKLWVkaXRpbmcvc2Vs
ZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKLQotIyBNaXNzaW5nIHRleHRJbnB1dENv
bnRyb2xsZXIuc2V0TWFya2VkVGV4dCgpCi1mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUt
cHJlZWRpdC5odG1sCi1mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0
bWwKLWZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKLWZh
c3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKLQogIyBNaXNzaW5nIGxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgpCiBmYXN0L2V2ZW50cy9wYWdl
c2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sCiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1w
YWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0x
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2U1M2Y0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxl
Y3Rpb24vNTgyNTM1MC0xLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdHMg
Zm9yIGEgYnVnIHdoZXJlIG1vdmluZyB0aGUgY2FyZXQgbGVmdCB0b3dhcmRzIGEgbm9uLWVkaXRh
YmxlIHBvY2tldCBvZiBhbiBlZGl0YWJsZSByZWdpb24gd291bGQgbWFrZSB0aGUgY2FyZXQgZGlz
YXBwZWFyLiBUaGUgY2FyZXQgc2hvdWxkIGJlIGp1c3QgYmVmb3JlIHRoZSAnQicgaW4gIkJvYiIu
CisKK0NhcmV0OiAoOCwgNDgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9l
ZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGM2ZTMzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIG1vdmlu
ZyB0aGUgY2FyZXQgcmlnaHQgdG93YXJkcyBhIG5vbi1lZGl0YWJsZSBwb2NrZXQgb2YgYW4gZWRp
dGFibGUgcmVnaW9uIHdvdWxkIG1ha2UgdGhlIGNhcmV0IGRpc2FwcGVhci4gVGhlIGNhcmV0IHNo
b3VsZCBiZSBqdXN0IGFmdGVyIHRoZSAneScgaW4gIlNhbGx5Ii4KKworQ2FyZXQ6ICg4NSwgNDgp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9t
aXhlZC1lZGl0YWJpbGl0eS0xMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9lZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTczNjYzNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRh
YmlsaXR5LTEwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACisjMSBESVYgZWxlbWVudCB3
aXRoIGEgbm9uLWVkaXRhYmxlIGVsZW1lbnQgb25seSBhbGlnbiBjZW50ZXI6CisKK0hlbGxvCisj
MiBESVYgZWxlbWVudCB3aXRoIGEgbm9uLWVkaXRhYmxlIGVsZW1lbnQgb25seSBhbGlnbiBsZWZ0
OgorCitIZWxsbworIzMgRElWIGVsZW1lbnQgd2l0aCBhIG5vbi1lZGl0YWJsZSBlbGVtZW50IG9u
bHkgYWxpZ24gcmlnaHQ6CisKK0hlbGxvCisjNCBESVYgZWxlbWVudCB3aXRoIHR3byBub24tZWRp
dGFibGUgZWxlbWVudHdpdGggcGFkZGluZzoKKworSGVsbG8gV29ybGQKKyM1IERJViBlbGVtZW50
IGVtcHR5CisKKyM2IG5vbiBlZGl0YWJsZSBESVYgZWxlbWVudCB3aXRoIGFuIGVkaXRhYmxlIGVt
cHR5IHNwYW4gZWxlbWVudAorCitIZWxsbzrCoAorQW5jaG9yIChbb2JqZWN0IEhUTUxEaXZFbGVt
ZW50XSwgMCBjYXJldFszOSw0NF0gcmVmcG9zPTM5KSBpcyBjb3JyZWN0LgorQW5jaG9yIChbb2Jq
ZWN0IEhUTUxEaXZFbGVtZW50XSwgMyBjYXJldFs3Nyw0NF0gcmVmcG9zPTc3KSBpcyBjb3JyZWN0
LgorQW5jaG9yIChbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgMSBjYXJldFs0NiwxMTZdIHJlZnBv
cz00NikgaXMgY29ycmVjdC4KK0FuY2hvciAoW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIDAgY2Fy
ZXRbOCwxMTZdIHJlZnBvcz04KSBpcyBjb3JyZWN0LgorQW5jaG9yIChbb2JqZWN0IEhUTUxEaXZF
bGVtZW50XSwgMCBjYXJldFs3MCwxODhdIHJlZnBvcz03MCkgaXMgY29ycmVjdC4KK0FuY2hvciAo
W29iamVjdCBIVE1MRGl2RWxlbWVudF0sIDMgY2FyZXRbNTAsMjYwXSByZWZwb3M9NTApIGlzIGNv
cnJlY3QuCitBbmNob3IgKFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCAwIGNhcmV0WzU4LDMzMl0g
cmVmcG9zPTU4KSBpcyBjb3JyZWN0LgorQW5jaG9yIChbb2JqZWN0IEhUTUxFbGVtZW50XSwgMCBj
YXJldFswLDBdIHJlZnBvcz0wKSBpcyBjb3JyZWN0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBmZGJiMzI0
Li5mZTNlMzFkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTkzLDYgKzE5Myw3IEBAIHZvaWQgUVdFQktJ
VF9FWFBPUlQgcXRfZHJ0X3NldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSogcGFn
ZSwgYm9vbCBlbmFiCiAgICAgZWxzZQogICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQ
cm9maWxlcigpOwogfQorCiAjZW5kaWYKIAogdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfZW5h
YmxlQ2FyZXRCcm93c2luZyhRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1ZSkKQEAgLTIwMCw2ICsy
MDEsNTEgQEAgdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfZW5hYmxlQ2FyZXRCcm93c2luZyhR
V2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1ZSkKICAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+c2V0
dGluZ3MoKS0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQodmFsdWUpOwogfQogCitRVmFyaWFudExp
c3QgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3NlbGVjdGVkUmFuZ2UoUVdlYlBhZ2UqIHBhZ2UpCit7
CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBRVmFyaWFudExpc3Qgc2Vs
ZWN0ZWRSYW5nZTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPnNlbGVjdGlvbigp
LT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpOworCisgICAgRWxlbWVudCogc2VsZWN0aW9uUm9v
dCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIEVsZW1l
bnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHRlc3RSYW5nZSA9
IFJhbmdlOjpjcmVhdGUoc2NvcGUtPmRvY3VtZW50KCksIHNjb3BlLCAwLCByYW5nZS0+c3RhcnRD
b250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgIEFTU0VSVCh0ZXN0UmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOworICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOworCisgICAgRXhjZXB0aW9u
Q29kZSBlYzsKKyAgICB0ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJh
bmdlLT5lbmRPZmZzZXQoKSwgZWMpOworICAgIEFTU0VSVCh0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCkgPT0gc2NvcGUpOworICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKworICAgIHNlbGVjdGVkUmFuZ2UgPDwgc3RhcnRQ
b3NpdGlvbiA8PCAoZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uKTsKKworICAgIHJldHVybiBz
ZWxlY3RlZFJhbmdlOworCit9CisKK1FWYXJpYW50TGlzdCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRf
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoUVdlYlBhZ2UqIHBhZ2UsIGludCBsb2NhdGlvbiwg
aW50IGxlbmd0aCkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBwYWdlLT5oYW5kbGUo
KS0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFFW
YXJpYW50TGlzdCByZWN0OworCisgICAgaWYgKChsb2NhdGlvbiArIGxlbmd0aCA8IGxvY2F0aW9u
KSAmJiAobG9jYXRpb24gKyBsZW5ndGggIT0gMCkpCisgICAgICAgIGxlbmd0aCA9IDA7CisKKyAg
ICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFi
bGVFbGVtZW50KCk7CisgICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0
aW9uUm9vdCA6IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChzY29wZSwgbG9jYXRpb24sIGxlbmd0aCk7CisKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICBy
ZXR1cm4gUVZhcmlhbnRMaXN0KCk7CisKKyAgICBRUmVjdCByZXN1bHRSZWN0ID0gZnJhbWUtPmZp
cnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICByZWN0IDw8IHJlc3VsdFJlY3QueCgp
IDw8IHJlc3VsdFJlY3QueSgpIDw8IHJlc3VsdFJlY3Qud2lkdGgoKSA8PCByZXN1bHRSZWN0Lmhl
aWdodCgpOworICAgIHJldHVybiByZWN0OworfQorCisKIGNsYXNzIFFXZWJQYWdlV2lkZ2V0Q2xp
ZW50IDogcHVibGljIFFXZWJQYWdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBRV2ViUGFnZVdpZGdl
dENsaWVudChRV2lkZ2V0KiB2aWV3KQpAQCAtMTI4Myw2ICsxMzI5LDkgQEAgdm9pZCBRV2ViUGFn
ZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQgKmV2KQogewogICAg
IFdlYkNvcmU6OkZyYW1lICpmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICBXZWJDb3JlOjpFZGl0b3IgKmVkaXRvciA9IGZyYW1lLT5lZGl0
b3IoKTsKKyNpZiBRVF9WRVJTSU9OID49IDB4MDQwNjAwCisgICAgUUlucHV0TWV0aG9kRXZlbnQ6
OkF0dHJpYnV0ZSBzZWxlY3Rpb24oUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVjdGlvbiwgMCwgMCwg
UVZhcmlhbnQoKSk7CisjZW5kaWYKIAogICAgIGlmICghZWRpdG9yLT5jYW5FZGl0KCkpIHsKICAg
ICAgICAgZXYtPmlnbm9yZSgpOwpAQCAtMTI5OSw2ICsxMzQ4LDcgQEAgdm9pZCBRV2ViUGFnZVBy
aXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQgKmV2KQogICAgICAgICBy
ZW5kZXJUZXh0Q29udHJvbCA9IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIpOwogCiAgICAg
VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOworICAgIGJvb2wgaGFzU2Vs
ZWN0aW9uID0gZmFsc2U7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV2LT5hdHRyaWJ1dGVz
KCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJp
YnV0ZSYgYSA9IGV2LT5hdHRyaWJ1dGVzKCkuYXQoaSk7CkBAIC0xMzIyLDEwICsxMzcyLDggQEAg
dm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQg
KmV2KQogICAgICAgICB9CiAjaWYgUVRfVkVSU0lPTiA+PSAweDA0MDYwMAogICAgICAgICBjYXNl
IFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rpb246IHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJU
ZXh0Q29udHJvbCkgewotICAgICAgICAgICAgICAgIHJlbmRlclRleHRDb250cm9sLT5zZXRTZWxl
Y3Rpb25TdGFydChxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSk7Ci0gICAgICAg
ICAgICAgICAgcmVuZGVyVGV4dENvbnRyb2wtPnNldFNlbGVjdGlvbkVuZChxTWF4KGEuc3RhcnQs
IChhLnN0YXJ0ICsgYS5sZW5ndGgpKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzZWxl
Y3Rpb24gPSBhOworICAgICAgICAgICAgaGFzU2VsZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzMzQsMTAgKzEzODIsMjMgQEAgdm9pZCBR
V2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQgKmV2KQog
CiAgICAgaWYgKCFldi0+Y29tbWl0U3RyaW5nKCkuaXNFbXB0eSgpKQogICAgICAgICBlZGl0b3It
PmNvbmZpcm1Db21wb3NpdGlvbihldi0+Y29tbWl0U3RyaW5nKCkpOwotICAgIGVsc2UgaWYgKCFl
di0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSkgeworICAgIGVsc2UgeworICAgICAgICAvLyAx
LiBlbXB0eSBwcmVlZGl0IHdpdGggYSBzZWxlY3Rpb24gYXR0cmlidXRlLCBhbmQgc3RhcnQvZW5k
IG9mIDAgY2FuY2VscyBjb21wb3NpdGlvbgorICAgICAgICAvLyAyLiBlbXB0eSBwcmVlZGl0IHdp
dGggYSBzZWxlY3Rpb24gYXR0cmlidXRlLCBhbmQgc3RhcnQvZW5kIG9mIG5vbi0wIHVwZGF0ZXMg
c2VsZWN0aW9uIG9mIGN1cnJlbnQgcHJlZWRpdCB0ZXh0CisgICAgICAgIC8vIDMuIHBvcHVsYXRl
ZCBwcmVlZGl0IHdpdGggYSBzZWxlY3Rpb24gYXR0cmlidXRlLCBhbmQgc3RhcnQvZW5kIG9mIDAg
b3Igbm9uLTAgdXBkYXRlcyBzZWxlY3Rpb24gb2Ygc3VwcGxpZWQgcHJlZWRpdCB0ZXh0CisgICAg
ICAgIC8vIDQuIG90aGVyd2lzZSBldmVudCBpcyB1cGRhdGluZyBzdXBwbGllZCBwcmUtZWRpdCB0
ZXh0CiAgICAgICAgIFFTdHJpbmcgcHJlZWRpdCA9IGV2LT5wcmVlZGl0U3RyaW5nKCk7Ci0gICAg
ICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdCwgdW5kZXJsaW5lcywgcHJlZWRpdC5s
ZW5ndGgoKSwgMCk7CisjaWYgUVRfVkVSU0lPTiA+PSAweDA0MDYwMAorICAgICAgICBpZiAoaGFz
U2VsZWN0aW9uKSB7CisgICAgICAgICAgICBRU3RyaW5nIHRleHQgPSAocmVuZGVyVGV4dENvbnRy
b2wpID8gUVN0cmluZyhyZW5kZXJUZXh0Q29udHJvbC0+dGV4dCgpKSA6IFFTdHJpbmcoKTsKKyAg
ICAgICAgICAgIGlmIChwcmVlZGl0LmlzRW1wdHkoKSAmJiBzZWxlY3Rpb24uc3RhcnQgKyBzZWxl
Y3Rpb24ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgICAgICBwcmVlZGl0ID0gdGV4dDsKKyAgICAg
ICAgICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdCwgdW5kZXJsaW5lcywgc2VsZWN0
aW9uLnN0YXJ0LCBzZWxlY3Rpb24uc3RhcnQgKyBzZWxlY3Rpb24ubGVuZ3RoKTsKKyAgICAgICAg
fSBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24ocHJlZWRp
dCwgdW5kZXJsaW5lcywgcHJlZWRpdC5sZW5ndGgoKSwgMCk7CiAgICAgfQorCiAgICAgZXYtPmFj
Y2VwdCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCAyYTZlYzlkLi5kNDI4OGJmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAx
MC0wMy0wNiAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQgbW9yZSBzdXBwb3J0
IGZvciB0ZXh0SW5wdXRDb250cm9sbGVyCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbGVj
dGVkUmFuZ2UoKSwgc2V0TWFya2VkVGV4dCgpLCBpbnNlcnRUZXh0KCksCisgICAgICAgIGFuZCBm
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgpLgorCisgICAgICAgIFVuc2tpcCB0ZXN0czoKKwor
ICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1sCisgICAg
ICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbAorICAgICAg
ICBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCisgICAg
ICAgIGZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKKyAgICAgICAg
ZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rp
b24vNTgyNTM1MC0yLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFi
aWxpdHktMTAuaHRtbAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNTcwMgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHF0
X2RydF9zZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKHF0X2RydF9maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQpOgor
CiAyMDEwLTAzLTI2ICBPbGl2aWVyIEdvZmZhcnQgIDxvZ29mZmFydEB0cm9sbHRlY2guY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZiMjlmNmQuLjhj
ZjE0MTUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wMy0wNiAgUm9iZXJ0IEhvZ2FuICA8
cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XSBBZGQgbW9yZSBzdXBwb3J0IGZvciB0ZXh0SW5wdXRDb250cm9sbGVy
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGVkUmFuZ2UoKSwgc2V0TWFya2VkVGV4
dCgpLCBpbnNlcnRUZXh0KCksCisgICAgICAgIGFuZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZSgpLgorCisgICAgICAgIFVuc2tpcCB0ZXN0czoKKworICAgICAgICBmYXN0L2Zvcm1zL2lucHV0
LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1sCisgICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4
bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbAorICAgICAgICBmYXN0L3RleHQvaW50ZXJuYXRpb25h
bC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCisgICAgICAgIGZhc3QvZXZlbnRzL2ltZS1jb21w
b3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1
MC0xLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKKyAgICAg
ICAgZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbAorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcwMgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAg
KFRleHRJbnB1dENvbnRyb2xsZXI6OnNldE1hcmtlZFRleHQpOgorICAgICAgICAoVGV4dElucHV0
Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCk6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjpz
ZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRD
b250cm9sbGVyUXQuaDoKKwogMjAxMC0wMy0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHAKaW5k
ZXggN2I4ZjEyMC4uMGFmMWM5NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuY3BwCkBAIC0zMCw4ICszMCwxMiBAQAog
I2luY2x1ZGUgIlRleHRJbnB1dENvbnRyb2xsZXJRdC5oIgogCiAjaW5jbHVkZSA8UUFwcGxpY2F0
aW9uPgorI2luY2x1ZGUgPFFJbnB1dE1ldGhvZEV2ZW50PgogI2luY2x1ZGUgPFFLZXlFdmVudD4K
IAorZXh0ZXJuIFFWYXJpYW50TGlzdCBxdF9kcnRfc2VsZWN0ZWRSYW5nZShRV2ViUGFnZSogcGFn
ZSk7CitleHRlcm4gUVZhcmlhbnRMaXN0IHF0X2RydF9maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZShRV2ViUGFnZSogcGFnZSwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKTsKKwogVGV4dElucHV0
Q29udHJvbGxlcjo6VGV4dElucHV0Q29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KQogICAgIDog
UU9iamVjdChwYXJlbnQpCiB7CkBAIC0xMjcsMyArMTMxLDMyIEBAIHZvaWQgVGV4dElucHV0Q29u
dHJvbGxlcjo6ZG9Db21tYW5kKGNvbnN0IFFTdHJpbmcmIGNvbW1hbmQpCiAgICAgUUtleUV2ZW50
IGV2ZW50MihRRXZlbnQ6OktleVJlbGVhc2UsIGtleWNvZGUsIG1vZGlmaWVycyk7CiAgICAgUUFw
cGxpY2F0aW9uOjpzZW5kRXZlbnQocGFyZW50KCksICZldmVudDIpOwogfQorCit2b2lkIFRleHRJ
bnB1dENvbnRyb2xsZXI6OnNldE1hcmtlZFRleHQoY29uc3QgUVN0cmluZyYgc3RyaW5nLCBpbnQg
c3RhcnQsIGludCBlbmQpCit7CisgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0
ZT4gYXR0cmlidXRlczsKKyNpZiBRVF9WRVJTSU9OID49IDB4MDQwNjAwCisgICAgUUlucHV0TWV0
aG9kRXZlbnQ6OkF0dHJpYnV0ZSBzZWxlY3Rpb24oUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVjdGlv
biwgc3RhcnQsIGVuZCwgUVZhcmlhbnQoKSk7CisgICAgYXR0cmlidXRlcyA8PCBzZWxlY3Rpb247
CisjZW5kaWYKKyAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudChzdHJpbmcsIGF0dHJpYnV0ZXMp
OworICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KHBhcmVudCgpLCAmZXZlbnQpOworfQorCit2
b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Omluc2VydFRleHQoY29uc3QgUVN0cmluZyYgc3RyaW5n
KQoreworICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7
CisgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoc3RyaW5nLCBhdHRyaWJ1dGVzKTsKKyAgICBl
dmVudC5zZXRDb21taXRTdHJpbmcoc3RyaW5nKTsKKyAgICBRQXBwbGljYXRpb246OnNlbmRFdmVu
dChwYXJlbnQoKSwgJmV2ZW50KTsKK30KKworUVZhcmlhbnRMaXN0IFRleHRJbnB1dENvbnRyb2xs
ZXI6OnNlbGVjdGVkUmFuZ2UoKQoreworICAgIHJldHVybiBxdF9kcnRfc2VsZWN0ZWRSYW5nZShx
b2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihwYXJlbnQoKSkpOworfQorCitRVmFyaWFudExpc3QgVGV4
dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoaW50IGxvY2F0aW9u
LCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBxdF9kcnRfZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UocW9iamVjdF9jYXN0PFFXZWJQYWdlKj4ocGFyZW50KCkpLCBsb2NhdGlvbiwgbGVuZ3Ro
KTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1
dENvbnRyb2xsZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0
Q29udHJvbGxlclF0LmgKaW5kZXggN2M3NDMzZS4uMDIxMDk4NCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmgKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmgKQEAgLTMx
LDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgPFFMaXN0PgogI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5j
bHVkZSA8UVZhcmlhbnQ+CiAjaW5jbHVkZSA8UVN0cmluZz4KICNpbmNsdWRlICJxd2VicGFnZS5o
IgogCkBAIC00MSwxNCArNDIsMTQgQEAgcHVibGljOgogCiBwdWJsaWMgc2xvdHM6CiAgICAgdm9p
ZCBkb0NvbW1hbmQoY29uc3QgUVN0cmluZyYgY29tbWFuZCk7Ci0vLyAgICAgdm9pZCBzZXRNYXJr
ZWRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0ciwgaW50IGZyb20sIGludCBsZW5ndGgpOworICAgIHZv
aWQgc2V0TWFya2VkVGV4dChjb25zdCBRU3RyaW5nJiBzdHJpbmcsIGludCBzdGFydCwgaW50IGVu
ZCk7CiAvLyAgICAgYm9vbCBoYXNNYXJrZWRUZXh0KCk7CiAvLyAgICAgdm9pZCB1bm1hcmtUZXh0
KCk7CiAvLyAgICAgUUxpc3Q8aW50PiBtYXJrZWRSYW5nZSgpOwotLy8gICAgIFFMaXN0PGludD4g
c2VsZWN0ZWRSYW5nZSgpOworICAgIFFWYXJpYW50TGlzdCBzZWxlY3RlZFJhbmdlKCk7CiAvLyAg
ICAgdm9pZCB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0KCk7Ci0vLyAgICAgdm9pZCBpbnNl
clRleHQoY29uc3QgUVN0cmluZyYpOwotLy8gICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UoKTsKKyAgICB2b2lkIGluc2VydFRleHQoY29uc3QgUVN0cmluZyYgc3RyaW5nKTsKKyAg
ICBRVmFyaWFudExpc3QgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoaW50IGxvY2F0aW9uLCBp
bnQgbGVuZ3RoKTsKIC8vICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnQoaW50LCBpbnQp
OwogLy8gICAgIHZvaWQgc3Vic3RyaW5nRnJvbVJhbmdlKGludCwgaW50KTsKIC8vICAgICB2b2lk
IGNvbnZlcnNhdGlvbklkZW50aWZpZXIoKTsKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52196</attachid>
            <date>2010-03-31 12:40:02 -0700</date>
            <delta_ts>2010-04-20 15:10:46 -0700</delta_ts>
            <desc>Updated Patch - Needs a Look!</desc>
            <filename>0001-2010-03-29-Robert-Hogan-robert-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>16756</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBjY2Y4MTY4NThjNzI0ZTQyMzVmYzViMzU5YjFiMTc1ZDMyMWVmNzdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDI5IE1hciAyMDEwIDE4OjU3OjU5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0w
My0yOSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CgogICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgoKICAgICAgICBbUXRdIEFkZCBtb3JlIHN1cHBvcnQgZm9yIHRl
eHRJbnB1dENvbnRyb2xsZXIKCiAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGVkUmFuZ2Uo
KSwgc2V0TWFya2VkVGV4dCgpLCBpbnNlcnRUZXh0KCksCiAgICAgICAgYW5kIGZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKCkuCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTcwMgoKICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CiAgICAgICAgKHF0
X2RydF9zZWxlY3RlZFJhbmdlKToKICAgICAgICAocXRfZHJ0X2ZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKToKICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KToKCjIw
MTAtMDMtMjkgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgoKICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KCiAgICAgICAgW1F0XSBBZGQgbW9yZSBzdXBwb3J0IGZv
ciB0ZXh0SW5wdXRDb250cm9sbGVyCgogICAgICAgIEFkZCBzdXBwb3J0IGZvciBzZWxlY3RlZFJh
bmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAogICAgICAgIGFuZCBmaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSgpLgoKICAgICAgICBVbnNraXAgdGVzdHM6CgogICAgICAgIGZh
c3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKICAgICAgICBmYXN0L2Zv
cm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKICAgICAgICBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCiAgICAgICAgZmFzdC9ldmVu
dHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0
aW9uLzU4MjUzNTAtMS5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0
bWwKICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC5odG1sCgog
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcwMgoKICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHA6CiAgICAg
ICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OnNldE1hcmtlZFRleHQpOgogICAgICAgIChUZXh0SW5w
dXRDb250cm9sbGVyOjppbnNlcnRUZXh0KToKICAgICAgICAoVGV4dElucHV0Q29udHJvbGxlcjo6
c2VsZWN0ZWRSYW5nZSk6CiAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKToKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENv
bnRyb2xsZXJRdC5oOgoKMjAxMC0wMy0yOSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5v
cmc+CgogICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgoKICAgICAgICBbUXRdIEFk
ZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKCiAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIHNlbGVjdGVkUmFuZ2UoKSwgc2V0TWFya2VkVGV4dCgpLCBpbnNlcnRUZXh0KCksCiAg
ICAgICAgYW5kIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkuCgogICAgICAgIFVuc2tpcCB0
ZXN0czoKCiAgICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRt
bAogICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbAog
ICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwK
ICAgICAgICBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCiAgICAg
ICAgZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLmh0bWwKICAgICAgICBlZGl0aW5nL3NlbGVj
dGlvbi81ODI1MzUwLTIuaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRh
YmlsaXR5LTEwLmh0bWwKCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1NzAyCgogICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKICAgICAgICAqIHBs
YXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQ6IEFkZGVk
LgogICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9t
aXhlZC1lZGl0YWJpbGl0eS0xMC1leHBlY3RlZC50eHQ6IEFkZGVkLgotLS0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNiArKysrKysrCiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkICAgICAgICAgICAgICAgICAgICB8ICAgMTEg
LS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgNzQgKysrKysrKysrKysrKysrKysrLS0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiArKysrCiBXZWJLaXQvcXQvdGVzdHMvcXdlYnBh
Z2UvdHN0X3F3ZWJwYWdlLmNwcCAgICAgICAgICB8ICAgIDkgKystCiBXZWJLaXRUb29scy9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjggKysrKysrKysKIC4uLi9E
dW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuY3BwICAgIHwgICAzMyArKysr
KysrKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuaCAgICAg
IHwgICAgOSArKy0KIDggZmlsZXMgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDIzIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBjY2UxMWE0Li44M2NiOTI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTAtMDMtMjkgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gQWRkIG1vcmUgc3Vw
cG9ydCBmb3IgdGV4dElucHV0Q29udHJvbGxlcgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
ZWxlY3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAorICAgICAgICBh
bmQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKS4KKworICAgICAgICBVbnNraXAgdGVzdHM6
CisKKyAgICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAor
ICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKKyAg
ICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAor
ICAgICAgICBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCisgICAg
ICAgIGVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2Vs
ZWN0aW9uLzU4MjUzNTAtMi5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVk
aXRhYmlsaXR5LTEwLmh0bWwKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzU3MDIKKworICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAg
ICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1
MC0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9z
ZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
MC0wMy0yOSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRl
eCAxOWQ5YjI2Li44ZjI5YzNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTI3MiwxNyAr
MjcyLDYgQEAgaHR0cC90ZXN0cy9zZWN1cml0eS9sb2NhbC12aWRlby1zb3VyY2UtZnJvbS1yZW1v
dGUuaHRtbAogIyAgICAgICAgICAgIE1pc3NpbmcgZmVhdHVyZXMgaW4gb3VyIER1bXBSZW5kZXJU
cmVlIGltcGxlbWVudGF0aW9uICAgICAgICAgICAgICAjCiAjID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ICMKIAotIyBNaXNzaW5nIHRleHRJbnB1dENvbnRyb2xsZXIuc2VsZWN0ZWRSYW5nZSgpCi1lZGl0
aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0y
Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKLQotIyBN
aXNzaW5nIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgpCi1mYXN0L2Zvcm1zL2lu
cHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1sCi1mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0
aC1pbWUtY29tcGxldGVkLmh0bWwKLWZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29y
LXBvc2l0aW9uLmh0bWwKLWZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0
bWwKLQogIyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgp
CiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sCiBmYXN0
L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1s
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuY3BwCmluZGV4IGVkZmVjZWUuLjFiYzc3MGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0x
OTMsNiArMTkzLDcgQEAgdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0VGltZWxpbmVQcm9m
aWxpbmdFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVuYWIKICAgICBlbHNlCiAgICAgICAg
IGNvbnRyb2xsZXItPnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7CiB9CisKICNlbmRpZgogCiB2b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9lbmFibGVDYXJldEJyb3dzaW5nKFFXZWJQYWdlKiBwYWdl
LCBib29sIHZhbHVlKQpAQCAtMjAwLDYgKzIwMSw1MCBAQCB2b2lkIFFXRUJLSVRfRVhQT1JUIHF0
X2RydF9lbmFibGVDYXJldEJyb3dzaW5nKFFXZWJQYWdlKiBwYWdlLCBib29sIHZhbHVlKQogICAg
IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxl
ZCh2YWx1ZSk7CiB9CiAKK1FWYXJpYW50TGlzdCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2VsZWN0
ZWRSYW5nZShRV2ViUGFnZSogcGFnZSkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBw
YWdlLT5oYW5kbGUoKS0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOworICAgIFFWYXJpYW50TGlzdCBzZWxlY3RlZFJhbmdlOworICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCk7CisK
KyAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50KCk7CisgICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2Vs
ZWN0aW9uUm9vdCA6IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKworICAg
IFJlZlB0cjxSYW5nZT4gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQo
KSwgc2NvcGUsIDAsIHJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQo
KSk7CisgICAgQVNTRVJUKHRlc3RSYW5nZS0+c3RhcnRDb250YWluZXIoKSA9PSBzY29wZSk7Cisg
ICAgaW50IHN0YXJ0UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5n
ZS5nZXQoKSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIHRlc3RSYW5nZS0+c2V0RW5k
KHJhbmdlLT5lbmRDb250YWluZXIoKSwgcmFuZ2UtPmVuZE9mZnNldCgpLCBlYyk7CisgICAgQVNT
RVJUKHRlc3RSYW5nZS0+c3RhcnRDb250YWluZXIoKSA9PSBzY29wZSk7CisgICAgaW50IGVuZFBv
c2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOworCisg
ICAgc2VsZWN0ZWRSYW5nZSA8PCBzdGFydFBvc2l0aW9uIDw8IChlbmRQb3NpdGlvbiAtIHN0YXJ0
UG9zaXRpb24pOworCisgICAgcmV0dXJuIHNlbGVjdGVkUmFuZ2U7CisKK30KKworUVZhcmlhbnRM
aXN0IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShRV2Vi
UGFnZSogcGFnZSwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIFdlYkNvcmU6OkZy
YW1lKiBmcmFtZSA9IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7CisgICAgUVZhcmlhbnRMaXN0IHJlY3Q7CisKKyAgICBpZiAoKGxv
Y2F0aW9uICsgbGVuZ3RoIDwgbG9jYXRpb24pICYmIChsb2NhdGlvbiArIGxlbmd0aCAhPSAwKSkK
KyAgICAgICAgbGVuZ3RoID0gMDsKKworICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFt
ZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBzY29w
ZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRv
Y3VtZW50RWxlbWVudCgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKwor
ICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBRVmFyaWFudExpc3QoKTsKKworICAgIFFS
ZWN0IHJlc3VsdFJlY3QgPSBmcmFtZS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOwor
ICAgIHJlY3QgPDwgcmVzdWx0UmVjdC54KCkgPDwgcmVzdWx0UmVjdC55KCkgPDwgcmVzdWx0UmVj
dC53aWR0aCgpIDw8IHJlc3VsdFJlY3QuaGVpZ2h0KCk7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisK
IGNsYXNzIFFXZWJQYWdlV2lkZ2V0Q2xpZW50IDogcHVibGljIFFXZWJQYWdlQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBRV2ViUGFnZVdpZGdldENsaWVudChRV2lkZ2V0KiB2aWV3KQpAQCAtMTI4Myw2
ICsxMzI4LDkgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0
TWV0aG9kRXZlbnQgKmV2KQogewogICAgIFdlYkNvcmU6OkZyYW1lICpmcmFtZSA9IHBhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBXZWJDb3JlOjpFZGl0
b3IgKmVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKKyNpZiBRVF9WRVJTSU9OID49IDB4MDQwNjAw
CisgICAgUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSBzZWxlY3Rpb24oUUlucHV0TWV0aG9k
RXZlbnQ6OlNlbGVjdGlvbiwgMCwgMCwgUVZhcmlhbnQoKSk7CisjZW5kaWYKIAogICAgIGlmICgh
ZWRpdG9yLT5jYW5FZGl0KCkpIHsKICAgICAgICAgZXYtPmlnbm9yZSgpOwpAQCAtMTI5OSw2ICsx
MzQ3LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0
aG9kRXZlbnQgKmV2KQogICAgICAgICByZW5kZXJUZXh0Q29udHJvbCA9IHRvUmVuZGVyVGV4dENv
bnRyb2wocmVuZGVyZXIpOwogCiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRl
cmxpbmVzOworICAgIGJvb2wgaGFzU2VsZWN0aW9uID0gZmFsc2U7CiAKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGV2LT5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3Qg
UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSYgYSA9IGV2LT5hdHRyaWJ1dGVzKCkuYXQoaSk7
CkBAIC0xMzIyLDEwICsxMzcxLDggQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9k
RXZlbnQoUUlucHV0TWV0aG9kRXZlbnQgKmV2KQogICAgICAgICB9CiAjaWYgUVRfVkVSU0lPTiA+
PSAweDA0MDYwMAogICAgICAgICBjYXNlIFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rpb246IHsK
LSAgICAgICAgICAgIGlmIChyZW5kZXJUZXh0Q29udHJvbCkgewotICAgICAgICAgICAgICAgIHJl
bmRlclRleHRDb250cm9sLT5zZXRTZWxlY3Rpb25TdGFydChxTWluKGEuc3RhcnQsIChhLnN0YXJ0
ICsgYS5sZW5ndGgpKSk7Ci0gICAgICAgICAgICAgICAgcmVuZGVyVGV4dENvbnRyb2wtPnNldFNl
bGVjdGlvbkVuZChxTWF4KGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBzZWxlY3Rpb24gPSBhOworICAgICAgICAgICAgaGFzU2VsZWN0
aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEz
MzQsMTAgKzEzODEsMjUgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQo
UUlucHV0TWV0aG9kRXZlbnQgKmV2KQogCiAgICAgaWYgKCFldi0+Y29tbWl0U3RyaW5nKCkuaXNF
bXB0eSgpKQogICAgICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihldi0+Y29tbWl0U3Ry
aW5nKCkpOwotICAgIGVsc2UgaWYgKCFldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSkgewor
ICAgIGVsc2UgeworICAgICAgICAvLyAxLiBlbXB0eSBwcmVlZGl0IHdpdGggYSBzZWxlY3Rpb24g
YXR0cmlidXRlLCBhbmQgc3RhcnQvZW5kIG9mIDAgY2FuY2VscyBjb21wb3NpdGlvbgorICAgICAg
ICAvLyAyLiBlbXB0eSBwcmVlZGl0IHdpdGggYSBzZWxlY3Rpb24gYXR0cmlidXRlLCBhbmQgc3Rh
cnQvZW5kIG9mIG5vbi0wIHVwZGF0ZXMgc2VsZWN0aW9uIG9mIGN1cnJlbnQgcHJlZWRpdCB0ZXh0
CisgICAgICAgIC8vIDMuIHBvcHVsYXRlZCBwcmVlZGl0IHdpdGggYSBzZWxlY3Rpb24gYXR0cmli
dXRlLCBhbmQgc3RhcnQvZW5kIG9mIDAgb3Igbm9uLTAgdXBkYXRlcyBzZWxlY3Rpb24gb2Ygc3Vw
cGxpZWQgcHJlZWRpdCB0ZXh0CisgICAgICAgIC8vIDQuIG90aGVyd2lzZSBldmVudCBpcyB1cGRh
dGluZyBzdXBwbGllZCBwcmUtZWRpdCB0ZXh0CiAgICAgICAgIFFTdHJpbmcgcHJlZWRpdCA9IGV2
LT5wcmVlZGl0U3RyaW5nKCk7Ci0gICAgICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24ocHJlZWRp
dCwgdW5kZXJsaW5lcywgcHJlZWRpdC5sZW5ndGgoKSwgMCk7CisjaWYgUVRfVkVSU0lPTiA+PSAw
eDA0MDYwMAorICAgICAgICBpZiAoaGFzU2VsZWN0aW9uKSB7CisgICAgICAgICAgICBRU3RyaW5n
IHRleHQgPSAocmVuZGVyVGV4dENvbnRyb2wpID8gUVN0cmluZyhyZW5kZXJUZXh0Q29udHJvbC0+
dGV4dCgpKSA6IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGlmIChwcmVlZGl0LmlzRW1wdHkoKSAm
JiBzZWxlY3Rpb24uc3RhcnQgKyBzZWxlY3Rpb24ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgICAg
ICBwcmVlZGl0ID0gdGV4dDsKKyAgICAgICAgICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24ocHJl
ZWRpdCwgdW5kZXJsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNl
bGVjdGlvbi5sZW5ndGggPCAwKSA/IHNlbGVjdGlvbi5zdGFydCArIHNlbGVjdGlvbi5sZW5ndGgg
OiBzZWxlY3Rpb24uc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
ZWxlY3Rpb24ubGVuZ3RoIDwgMCkgPyBzZWxlY3Rpb24uc3RhcnQgOiBzZWxlY3Rpb24uc3RhcnQg
KyBzZWxlY3Rpb24ubGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgICAg
IGVkaXRvci0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdCwgdW5kZXJsaW5lcywgcHJlZWRpdC5sZW5n
dGgoKSwgMCk7CiAgICAgfQorCiAgICAgZXYtPmFjY2VwdCgpOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA0YmFkZDVmLi41
YmIzMWRmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wMy0yOSAgUm9iZXJ0IEhvZ2FuICA8cm9i
ZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgW1F0XSBBZGQgbW9yZSBzdXBwb3J0IGZvciB0ZXh0SW5wdXRDb250cm9sbGVyCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGVkUmFuZ2UoKSwgc2V0TWFya2VkVGV4dCgp
LCBpbnNlcnRUZXh0KCksCisgICAgICAgIGFuZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcw
MgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHF0X2RydF9zZWxlY3Rl
ZFJhbmdlKToKKyAgICAgICAgKHF0X2RydF9maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQpOgorCiAyMDEwLTAzLTI5
ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90
ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHAKaW5kZXggNDQyNWJhYy4uNTE2NjAyNyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKQEAgLTE0MDQsMTEgKzE0MDQsMTYgQEAgdm9p
ZCB0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcygpCiAgICAgUVN0cmluZyBzZWxlY3Rpb25WYWx1
ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKICAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1
ZSwgUVN0cmluZygiZWIiKSk7CiAKLSAgICAvL1NldCBzZWxlY3Rpb24gd2l0aCBuZWdhdGl2ZSBs
ZW5ndGgKLSAgICBpbnB1dEF0dHJpYnV0ZXMgPDwgUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0
ZShRSW5wdXRNZXRob2RFdmVudDo6U2VsZWN0aW9uLCA2LCAtNSwgUVZhcmlhbnQoKSk7CisgICAg
Ly9DYW5jZWwgY3VycmVudCBjb21wb3NpdGlvbiBmaXJzdAorICAgIGlucHV0QXR0cmlidXRlcyA8
PCBRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rp
b24sIDAsIDAsIFFWYXJpYW50KCkpOwogICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50U2VsZWN0
aW9uMigiIixpbnB1dEF0dHJpYnV0ZXMpOwogICAgIHBhZ2UtPmV2ZW50KCZldmVudFNlbGVjdGlv
bjIpOwogCisgICAgLy9TZXQgc2VsZWN0aW9uIHdpdGggbmVnYXRpdmUgbGVuZ3RoCisgICAgaW5w
dXRBdHRyaWJ1dGVzIDw8IFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9k
RXZlbnQ6OlNlbGVjdGlvbiwgNiwgLTUsIFFWYXJpYW50KCkpOworICAgIFFJbnB1dE1ldGhvZEV2
ZW50IGV2ZW50U2VsZWN0aW9uMygiIixpbnB1dEF0dHJpYnV0ZXMpOworICAgIHBhZ2UtPmV2ZW50
KCZldmVudFNlbGVjdGlvbjMpOworCiAgICAgLy9JbUFuY2hvclBvc2l0aW9uCiAgICAgdmFyaWFu
dCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOwogICAgIGFu
Y2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBjZWZmYmIxLi4zYzBkOGY4
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMtMjkgIFJvYmVydCBIb2dhbiAgPHJvYmVy
dEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIFtRdF0gQWRkIG1vcmUgc3VwcG9ydCBmb3IgdGV4dElucHV0Q29udHJvbGxlcgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBzZWxlY3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwg
aW5zZXJ0VGV4dCgpLAorICAgICAgICBhbmQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKS4K
KworICAgICAgICBVbnNraXAgdGVzdHM6CisKKyAgICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhs
ZW5ndGgtaW1lLXByZWVkaXQuaHRtbAorICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0
aC1pbWUtY29tcGxldGVkLmh0bWwKKyAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhh
aS1jdXJzb3ItcG9zaXRpb24uaHRtbAorICAgICAgICBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRp
b24tZXZlbnRzLTAwMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5o
dG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi5odG1sCisgICAgICAgIGVk
aXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MDIKKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChUZXh0
SW5wdXRDb250cm9sbGVyOjpzZXRNYXJrZWRUZXh0KToKKyAgICAgICAgKFRleHRJbnB1dENvbnRy
b2xsZXI6Omluc2VydFRleHQpOgorICAgICAgICAoVGV4dElucHV0Q29udHJvbGxlcjo6c2VsZWN0
ZWRSYW5nZSk6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJv
bGxlclF0Lmg6CisKIDIwMTAtMDMtMjYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2Vu
bmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJv
bGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRy
b2xsZXJRdC5jcHAKaW5kZXggN2I4ZjEyMC4uMGFmMWM5NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuY3BwCkBAIC0z
MCw4ICszMCwxMiBAQAogI2luY2x1ZGUgIlRleHRJbnB1dENvbnRyb2xsZXJRdC5oIgogCiAjaW5j
bHVkZSA8UUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFJbnB1dE1ldGhvZEV2ZW50PgogI2luY2x1
ZGUgPFFLZXlFdmVudD4KIAorZXh0ZXJuIFFWYXJpYW50TGlzdCBxdF9kcnRfc2VsZWN0ZWRSYW5n
ZShRV2ViUGFnZSogcGFnZSk7CitleHRlcm4gUVZhcmlhbnRMaXN0IHF0X2RydF9maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZShRV2ViUGFnZSogcGFnZSwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3Ro
KTsKKwogVGV4dElucHV0Q29udHJvbGxlcjo6VGV4dElucHV0Q29udHJvbGxlcihRV2ViUGFnZSog
cGFyZW50KQogICAgIDogUU9iamVjdChwYXJlbnQpCiB7CkBAIC0xMjcsMyArMTMxLDMyIEBAIHZv
aWQgVGV4dElucHV0Q29udHJvbGxlcjo6ZG9Db21tYW5kKGNvbnN0IFFTdHJpbmcmIGNvbW1hbmQp
CiAgICAgUUtleUV2ZW50IGV2ZW50MihRRXZlbnQ6OktleVJlbGVhc2UsIGtleWNvZGUsIG1vZGlm
aWVycyk7CiAgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQocGFyZW50KCksICZldmVudDIpOwog
fQorCit2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6OnNldE1hcmtlZFRleHQoY29uc3QgUVN0cmlu
ZyYgc3RyaW5nLCBpbnQgc3RhcnQsIGludCBlbmQpCit7CisgICAgUUxpc3Q8UUlucHV0TWV0aG9k
RXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyNpZiBRVF9WRVJTSU9OID49IDB4MDQwNjAw
CisgICAgUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSBzZWxlY3Rpb24oUUlucHV0TWV0aG9k
RXZlbnQ6OlNlbGVjdGlvbiwgc3RhcnQsIGVuZCwgUVZhcmlhbnQoKSk7CisgICAgYXR0cmlidXRl
cyA8PCBzZWxlY3Rpb247CisjZW5kaWYKKyAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudChzdHJp
bmcsIGF0dHJpYnV0ZXMpOworICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KHBhcmVudCgpLCAm
ZXZlbnQpOworfQorCit2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Omluc2VydFRleHQoY29uc3Qg
UVN0cmluZyYgc3RyaW5nKQoreworICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1
dGU+IGF0dHJpYnV0ZXM7CisgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoc3RyaW5nLCBhdHRy
aWJ1dGVzKTsKKyAgICBldmVudC5zZXRDb21taXRTdHJpbmcoc3RyaW5nKTsKKyAgICBRQXBwbGlj
YXRpb246OnNlbmRFdmVudChwYXJlbnQoKSwgJmV2ZW50KTsKK30KKworUVZhcmlhbnRMaXN0IFRl
eHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UoKQoreworICAgIHJldHVybiBxdF9kcnRf
c2VsZWN0ZWRSYW5nZShxb2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihwYXJlbnQoKSkpOworfQorCitR
VmFyaWFudExpc3QgVGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBxdF9kcnRfZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UocW9iamVjdF9jYXN0PFFXZWJQYWdlKj4ocGFyZW50KCkpLCBs
b2NhdGlvbiwgbGVuZ3RoKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmgKaW5kZXggN2M3NDMzZS4uMDIxMDk4NCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxl
clF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJv
bGxlclF0LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgPFFMaXN0PgogI2luY2x1ZGUg
PFFPYmplY3Q+CisjaW5jbHVkZSA8UVZhcmlhbnQ+CiAjaW5jbHVkZSA8UVN0cmluZz4KICNpbmNs
dWRlICJxd2VicGFnZS5oIgogCkBAIC00MSwxNCArNDIsMTQgQEAgcHVibGljOgogCiBwdWJsaWMg
c2xvdHM6CiAgICAgdm9pZCBkb0NvbW1hbmQoY29uc3QgUVN0cmluZyYgY29tbWFuZCk7Ci0vLyAg
ICAgdm9pZCBzZXRNYXJrZWRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0ciwgaW50IGZyb20sIGludCBs
ZW5ndGgpOworICAgIHZvaWQgc2V0TWFya2VkVGV4dChjb25zdCBRU3RyaW5nJiBzdHJpbmcsIGlu
dCBzdGFydCwgaW50IGVuZCk7CiAvLyAgICAgYm9vbCBoYXNNYXJrZWRUZXh0KCk7CiAvLyAgICAg
dm9pZCB1bm1hcmtUZXh0KCk7CiAvLyAgICAgUUxpc3Q8aW50PiBtYXJrZWRSYW5nZSgpOwotLy8g
ICAgIFFMaXN0PGludD4gc2VsZWN0ZWRSYW5nZSgpOworICAgIFFWYXJpYW50TGlzdCBzZWxlY3Rl
ZFJhbmdlKCk7CiAvLyAgICAgdm9pZCB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0KCk7Ci0v
LyAgICAgdm9pZCBpbnNlclRleHQoY29uc3QgUVN0cmluZyYpOwotLy8gICAgIHZvaWQgZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKTsKKyAgICB2b2lkIGluc2VydFRleHQoY29uc3QgUVN0cmlu
ZyYgc3RyaW5nKTsKKyAgICBRVmFyaWFudExpc3QgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
aW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKTsKIC8vICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9y
UG9pbnQoaW50LCBpbnQpOwogLy8gICAgIHZvaWQgc3Vic3RyaW5nRnJvbVJhbmdlKGludCwgaW50
KTsKIC8vICAgICB2b2lkIGNvbnZlcnNhdGlvbklkZW50aWZpZXIoKTsKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="35611"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53889</attachid>
            <date>2010-04-20 15:10:46 -0700</date>
            <delta_ts>2010-04-25 00:27:35 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Qt-Add-more-support-for-textInputController.patch</filename>
            <type>text/plain</type>
            <size>17980</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAyZDc0MTExYzNhNjJkYWUyOTVmYWMxZDM3MGJjMjM2YTBmMmU5YTllIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDI5IE1hciAyMDEwIDE4OjU3OjU5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gW1F0XSBB
ZGQgbW9yZSBzdXBwb3J0IGZvciB0ZXh0SW5wdXRDb250cm9sbGVyCgoyMDEwLTA0LTIwICBSb2Jl
cnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KCiAgICAgICAgW1F0XSBBZGQgbW9yZSBzdXBw
b3J0IGZvciB0ZXh0SW5wdXRDb250cm9sbGVyCgogICAgICAgIEFkZCBzdXBwb3J0IGZvciBzZWxl
Y3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAogICAgICAgIGFuZCBm
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgpLgoKICAgICAgICBVbnNraXAgdGVzdHM6CgogICAg
ICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKICAgICAgICBm
YXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKICAgICAgICBmYXN0
L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCiAgICAgICAgZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAogICAgICAgIGVkaXRpbmcv
c2VsZWN0aW9uLzU4MjUzNTAtMS5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1
MC0yLmh0bWwKICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC5o
dG1sCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcw
MgoKICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CgoyMDEwLTA0LTIwICBSb2JlcnQgSG9n
YW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCgogICAgICAgIFtRdF0gQWRkIG1vcmUgc3VwcG9ydCBmb3IgdGV4dElucHV0Q29udHJvbGxl
cgoKICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2VsZWN0ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0
KCksIGluc2VydFRleHQoKSwKICAgICAgICBhbmQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
KS4KCiAgICAgICAgVW5za2lwIHRlc3RzOgoKICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LW1heGxl
bmd0aC1pbWUtcHJlZWRpdC5odG1sCiAgICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgt
aW1lLWNvbXBsZXRlZC5odG1sCiAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1j
dXJzb3ItcG9zaXRpb24uaHRtbAogICAgICAgIGZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1l
dmVudHMtMDAxLmh0bWwKICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAog
ICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi5odG1sCiAgICAgICAgZWRpdGluZy9z
ZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbAoKICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MDIKCiAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuY3BwOgogICAgICAgIChUZXh0SW5wdXRDb250cm9s
bGVyOjpzZXRNYXJrZWRUZXh0KToKICAgICAgICAoVGV4dElucHV0Q29udHJvbGxlcjo6aW5zZXJ0
VGV4dCk6CiAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgogICAg
ICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CiAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRDb250cm9sbGVyUXQuaDoKCjIwMTAt
MDQtMjAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgoKICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkoT09QUyEpLgoKICAgICAgICBbUXRdIEFkZCBtb3JlIHN1cHBvcnQgZm9yIHRl
eHRJbnB1dENvbnRyb2xsZXIKCiAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGVkUmFuZ2Uo
KSwgc2V0TWFya2VkVGV4dCgpLCBpbnNlcnRUZXh0KCksCiAgICAgICAgYW5kIGZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKCkuCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTcwMgoKICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CiAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudCk6CiAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CiAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpzZWxlY3RlZFJhbmdlKToKICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CiAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdl
YnBhZ2UuY3BwOgogICAgICAgICh0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6Ci0tLQogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIxICsr
KysrKysrKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAgICAgICAgICAgICAg
ICAgfCAgIDExIC0tLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKy0tLQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsrKysrKysrKwogLi4uL3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCAgfCAgIDQ1ICsrKysrKysrKysr
KysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaCB8ICAgIDMgKwogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAg
ICAgICAgICAgfCAgICA5ICsrKy0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAyOCArKysrKysrKysrKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9x
dC9UZXh0SW5wdXRDb250cm9sbGVyUXQuY3BwICAgIHwgICAzMSArKysrKysrKysrKysrCiAuLi4v
RHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmggICAgICB8ICAgIDkgKyst
LQogMTAgZmlsZXMgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNTVjYjQ4Li4zZDMxMzQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDQt
MjAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gQWRk
IG1vcmUgc3VwcG9ydCBmb3IgdGV4dElucHV0Q29udHJvbGxlcgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBzZWxlY3RlZFJhbmdlKCksIHNldE1hcmtlZFRleHQoKSwgaW5zZXJ0VGV4dCgpLAor
ICAgICAgICBhbmQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKS4KKworICAgICAgICBVbnNr
aXAgdGVzdHM6CisKKyAgICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVk
aXQuaHRtbAorICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVk
Lmh0bWwKKyAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRp
b24uaHRtbAorICAgICAgICBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5o
dG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5odG1sCisgICAgICAgIGVk
aXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9u
L21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MDIKKworICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBw
ZWQ6CisKIDIwMTAtMDQtMjAgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiAgVXBkYXRlIGNocm9taXVtIHRlc3QgZXhwZWN0YXRpb25z
IHRvIHJlZmxlY3QgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMjNmZWY4OS4u
YWUxM2NkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yNjksMTcgKzI2OSw2IEBAIGh0
dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291cmNlLWZyb20tcmVtb3RlLmh0bWwKICMg
ICAgICAgICAgICBNaXNzaW5nIGZlYXR1cmVzIGluIG91ciBEdW1wUmVuZGVyVHJlZSBpbXBsZW1l
bnRhdGlvbiAgICAgICAgICAgICAgIwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAKLSMgTWlz
c2luZyB0ZXh0SW5wdXRDb250cm9sbGVyLnNlbGVjdGVkUmFuZ2UoKQotZWRpdGluZy9zZWxlY3Rp
b24vNTgyNTM1MC0xLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi5odG1sCi1lZGl0
aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC5odG1sCi0KLSMgTWlzc2luZyB0ZXh0
SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQoKQotZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5n
dGgtaW1lLXByZWVkaXQuaHRtbAotZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBs
ZXRlZC5odG1sCi1mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5o
dG1sCi1mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCi0KICMgTWlz
c2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoKQogZmFzdC9ldmVu
dHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQuaHRtbAogZmFzdC9ldmVudHMvcGFn
ZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbApkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cAppbmRleCAwZTExYzE1Li5jZDRiYWYwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTI0OCw2ICsxMjQ4
LDkgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9k
RXZlbnQgKmV2KQogewogICAgIFdlYkNvcmU6OkZyYW1lICpmcmFtZSA9IHBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBXZWJDb3JlOjpFZGl0b3IgKmVk
aXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKKyNpZiBRVF9WRVJTSU9OID49IDB4MDQwNjAwCisgICAg
UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSBzZWxlY3Rpb24oUUlucHV0TWV0aG9kRXZlbnQ6
OlNlbGVjdGlvbiwgMCwgMCwgUVZhcmlhbnQoKSk7CisjZW5kaWYKIAogICAgIGlmICghZWRpdG9y
LT5jYW5FZGl0KCkpIHsKICAgICAgICAgZXYtPmlnbm9yZSgpOwpAQCAtMTI2NCw2ICsxMjY3LDcg
QEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZl
bnQgKmV2KQogICAgICAgICByZW5kZXJUZXh0Q29udHJvbCA9IHRvUmVuZGVyVGV4dENvbnRyb2wo
cmVuZGVyZXIpOwogCiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVz
OworICAgIGJvb2wgaGFzU2VsZWN0aW9uID0gZmFsc2U7CiAKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGV2LT5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgUUlucHV0
TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSYgYSA9IGV2LT5hdHRyaWJ1dGVzKCkuYXQoaSk7CkBAIC0x
Mjg3LDEwICsxMjkxLDggQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQo
UUlucHV0TWV0aG9kRXZlbnQgKmV2KQogICAgICAgICB9CiAjaWYgUVRfVkVSU0lPTiA+PSAweDA0
MDYwMAogICAgICAgICBjYXNlIFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rpb246IHsKLSAgICAg
ICAgICAgIGlmIChyZW5kZXJUZXh0Q29udHJvbCkgewotICAgICAgICAgICAgICAgIHJlbmRlclRl
eHRDb250cm9sLT5zZXRTZWxlY3Rpb25TdGFydChxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5s
ZW5ndGgpKSk7Ci0gICAgICAgICAgICAgICAgcmVuZGVyVGV4dENvbnRyb2wtPnNldFNlbGVjdGlv
bkVuZChxTWF4KGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSk7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBzZWxlY3Rpb24gPSBhOworICAgICAgICAgICAgaGFzU2VsZWN0aW9uID0g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEyOTksMTAg
KzEzMDEsMjUgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0
TWV0aG9kRXZlbnQgKmV2KQogCiAgICAgaWYgKCFldi0+Y29tbWl0U3RyaW5nKCkuaXNFbXB0eSgp
KQogICAgICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihldi0+Y29tbWl0U3RyaW5nKCkp
OwotICAgIGVsc2UgaWYgKCFldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSkgeworICAgIGVs
c2UgeworICAgICAgICAvLyAxLiBlbXB0eSBwcmVlZGl0IHdpdGggYSBzZWxlY3Rpb24gYXR0cmli
dXRlLCBhbmQgc3RhcnQvZW5kIG9mIDAgY2FuY2VscyBjb21wb3NpdGlvbgorICAgICAgICAvLyAy
LiBlbXB0eSBwcmVlZGl0IHdpdGggYSBzZWxlY3Rpb24gYXR0cmlidXRlLCBhbmQgc3RhcnQvZW5k
IG9mIG5vbi0wIHVwZGF0ZXMgc2VsZWN0aW9uIG9mIGN1cnJlbnQgcHJlZWRpdCB0ZXh0CisgICAg
ICAgIC8vIDMuIHBvcHVsYXRlZCBwcmVlZGl0IHdpdGggYSBzZWxlY3Rpb24gYXR0cmlidXRlLCBh
bmQgc3RhcnQvZW5kIG9mIDAgb3Igbm9uLTAgdXBkYXRlcyBzZWxlY3Rpb24gb2Ygc3VwcGxpZWQg
cHJlZWRpdCB0ZXh0CisgICAgICAgIC8vIDQuIG90aGVyd2lzZSBldmVudCBpcyB1cGRhdGluZyBz
dXBwbGllZCBwcmUtZWRpdCB0ZXh0CiAgICAgICAgIFFTdHJpbmcgcHJlZWRpdCA9IGV2LT5wcmVl
ZGl0U3RyaW5nKCk7Ci0gICAgICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdCwgdW5k
ZXJsaW5lcywgcHJlZWRpdC5sZW5ndGgoKSwgMCk7CisjaWYgUVRfVkVSU0lPTiA+PSAweDA0MDYw
MAorICAgICAgICBpZiAoaGFzU2VsZWN0aW9uKSB7CisgICAgICAgICAgICBRU3RyaW5nIHRleHQg
PSAocmVuZGVyVGV4dENvbnRyb2wpID8gUVN0cmluZyhyZW5kZXJUZXh0Q29udHJvbC0+dGV4dCgp
KSA6IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGlmIChwcmVlZGl0LmlzRW1wdHkoKSAmJiBzZWxl
Y3Rpb24uc3RhcnQgKyBzZWxlY3Rpb24ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgICAgICBwcmVl
ZGl0ID0gdGV4dDsKKyAgICAgICAgICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdCwg
dW5kZXJsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlv
bi5sZW5ndGggPCAwKSA/IHNlbGVjdGlvbi5zdGFydCArIHNlbGVjdGlvbi5sZW5ndGggOiBzZWxl
Y3Rpb24uc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rp
b24ubGVuZ3RoIDwgMCkgPyBzZWxlY3Rpb24uc3RhcnQgOiBzZWxlY3Rpb24uc3RhcnQgKyBzZWxl
Y3Rpb24ubGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIGVkaXRv
ci0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdCwgdW5kZXJsaW5lcywgcHJlZWRpdC5sZW5ndGgoKSwg
MCk7CiAgICAgfQorCiAgICAgZXYtPmFjY2VwdCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAxZDIwMDk0Li43NWFkZGQz
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNC0yMCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZKE9PUFMhKS4KKworICAgICAg
ICBbUXRdIEFkZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3Igc2VsZWN0ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0KCksIGluc2Vy
dFRleHQoKSwKKyAgICAgICAgYW5kIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NzAyCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjppbnB1
dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2VsZWN0ZWRS
YW5nZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Zmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0Lmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzKToKKwogMjAxMC0wNC0yMCAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAppbmRleCA4YzIxMTdlLi4zOTU3OWI0IDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTQzLDYg
KzQzLDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAj
ZW5kaWYKKyNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQu
aCIKIAogI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgpAQCAtMzY0LDMgKzM2NSw0NyBAQCBib29sIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojppc0NvbW1hbmRFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBj
b25zdCBRU3RyaW5nJiBuYQogewogICAgIHJldHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChu
YW1lKS5pc0VuYWJsZWQoKTsKIH0KKworUVZhcmlhbnRMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpzZWxlY3RlZFJhbmdlKFFXZWJQYWdlKiBwYWdlKQoreworICAgIFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSA9IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CisgICAgUVZhcmlhbnRMaXN0IHNlbGVjdGVkUmFuZ2U7CisgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKTsKKworICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9u
KCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlv
blJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpOworCisgICAgUmVmUHRyPFJhbmdlPiB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3Bl
LT5kb2N1bWVudCgpLCBzY29wZSwgMCwgcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5z
dGFydE9mZnNldCgpKTsKKyAgICBBU1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09
IHNjb3BlKTsKKyAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgodGVzdFJhbmdlLmdldCgpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgdGVzdFJh
bmdlLT5zZXRFbmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCksIGVj
KTsKKyAgICBBU1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKKyAg
ICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5n
ZXQoKSk7CisKKyAgICBzZWxlY3RlZFJhbmdlIDw8IHN0YXJ0UG9zaXRpb24gPDwgKGVuZFBvc2l0
aW9uIC0gc3RhcnRQb3NpdGlvbik7CisKKyAgICByZXR1cm4gc2VsZWN0ZWRSYW5nZTsKKworfQor
CitRVmFyaWFudExpc3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKFFXZWJQYWdlKiBwYWdlLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpCit7Cisg
ICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBRVmFyaWFudExpc3QgcmVjdDsK
KworICAgIGlmICgobG9jYXRpb24gKyBsZW5ndGggPCBsb2NhdGlvbikgJiYgKGxvY2F0aW9uICsg
bGVuZ3RoICE9IDApKQorICAgICAgICBsZW5ndGggPSAwOworCisgICAgRWxlbWVudCogc2VsZWN0
aW9uUm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAg
IEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGxvY2F0aW9u
LCBsZW5ndGgpOworCisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50TGlz
dCgpOworCisgICAgUVJlY3QgcmVzdWx0UmVjdCA9IGZyYW1lLT5maXJzdFJlY3RGb3JSYW5nZShy
YW5nZS5nZXQoKSk7CisgICAgcmVjdCA8PCByZXN1bHRSZWN0LngoKSA8PCByZXN1bHRSZWN0Lnko
KSA8PCByZXN1bHRSZWN0LndpZHRoKCkgPDwgcmVzdWx0UmVjdC5oZWlnaHQoKTsKKyAgICByZXR1
cm4gcmVjdDsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmgKaW5kZXggMGMzY2Y5YS4uMjZkMzJhZiAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTI0LDYgKzI0
LDcgQEAKICNkZWZpbmUgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXRfaAogCiAjaW5jbHVkZSAicXdl
YmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFFWYXJpYW50PgogCiBjbGFzcyBRV2ViUGFnZTsKIGNs
YXNzIFFXZWJGcmFtZTsKQEAgLTQwLDYgKzQxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGlzQ29tbWFuZEVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUpOwog
ICAgIHN0YXRpYyB2b2lkIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChRV2ViUGFnZSogcGFn
ZSwgYm9vbCBlbmFibGVkKTsKICAgICBzdGF0aWMgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpOworICAgIHN0YXRpYyBR
VmFyaWFudExpc3Qgc2VsZWN0ZWRSYW5nZShRV2ViUGFnZSogcGFnZSk7CisgICAgc3RhdGljIFFW
YXJpYW50TGlzdCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShRV2ViUGFnZSogcGFnZSwgaW50
IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKTsKIAogICAgIHN0YXRpYyBib29sIHBhdXNlQW5pbWF0aW9u
KFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3Ry
aW5nJiBlbGVtZW50SWQpOwogICAgIHN0YXRpYyBib29sIHBhdXNlVHJhbnNpdGlvbk9mUHJvcGVy
dHkoUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFT
dHJpbmcmIGVsZW1lbnRJZCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2Uu
Y3BwCmluZGV4IGM4NTdiMDAuLjU2YWRmMGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC90ZXN0cy9x
d2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90
c3RfcXdlYnBhZ2UuY3BwCkBAIC0xNDA0LDExICsxNDA0LDE2IEBAIHZvaWQgdHN0X1FXZWJQYWdl
OjppbnB1dE1ldGhvZHMoKQogICAgIFFTdHJpbmcgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZh
bHVlPFFTdHJpbmc+KCk7CiAgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoImVi
IikpOwogCi0gICAgLy9TZXQgc2VsZWN0aW9uIHdpdGggbmVnYXRpdmUgbGVuZ3RoCi0gICAgaW5w
dXRBdHRyaWJ1dGVzIDw8IFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9k
RXZlbnQ6OlNlbGVjdGlvbiwgNiwgLTUsIFFWYXJpYW50KCkpOworICAgIC8vQ2FuY2VsIGN1cnJl
bnQgY29tcG9zaXRpb24gZmlyc3QKKyAgICBpbnB1dEF0dHJpYnV0ZXMgPDwgUUlucHV0TWV0aG9k
RXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6U2VsZWN0aW9uLCAwLCAwLCBRVmFy
aWFudCgpKTsKICAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudFNlbGVjdGlvbjIoIiIsaW5wdXRB
dHRyaWJ1dGVzKTsKICAgICBwYWdlLT5ldmVudCgmZXZlbnRTZWxlY3Rpb24yKTsKIAorICAgIC8v
U2V0IHNlbGVjdGlvbiB3aXRoIG5lZ2F0aXZlIGxlbmd0aAorICAgIGlucHV0QXR0cmlidXRlcyA8
PCBRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rp
b24sIDYsIC01LCBRVmFyaWFudCgpKTsKKyAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudFNlbGVj
dGlvbjMoIiIsaW5wdXRBdHRyaWJ1dGVzKTsKKyAgICBwYWdlLT5ldmVudCgmZXZlbnRTZWxlY3Rp
b24zKTsKKwogICAgIC8vSW1BbmNob3JQb3NpdGlvbgogICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKICAgICBhbmNob3JQb3NpdGlvbiA9
ICB2YXJpYW50LnRvSW50KCk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggOTUzNjgxMi4uZGE2Mzc3MiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDEwLTA0LTIwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFk
ZCBtb3JlIHN1cHBvcnQgZm9yIHRleHRJbnB1dENvbnRyb2xsZXIKKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3Igc2VsZWN0ZWRSYW5nZSgpLCBzZXRNYXJrZWRUZXh0KCksIGluc2VydFRleHQoKSwK
KyAgICAgICAgYW5kIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkuCisKKyAgICAgICAgVW5z
a2lwIHRlc3RzOgorCisgICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVl
ZGl0Lmh0bWwKKyAgICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRl
ZC5odG1sCisgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0
aW9uLmh0bWwKKyAgICAgICAgZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEu
aHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAorICAgICAgICBl
ZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTIuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlv
bi9taXhlZC1lZGl0YWJpbGl0eS0xMC5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NzAyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9UZXh0SW5wdXRDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoVGV4dElucHV0Q29udHJvbGxl
cjo6c2V0TWFya2VkVGV4dCk6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjppbnNlcnRU
ZXh0KToKKyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgorICAg
ICAgICAoVGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5oOgorCiAy
MDEwLTA0LTIwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHAKaW5kZXggN2I4ZjEyMC4uZTBjOWI2MSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJv
bGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXh0SW5wdXRD
b250cm9sbGVyUXQuY3BwCkBAIC0yOCw4ICsyOCwxMCBAQAogICovCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiVGV4dElucHV0Q29udHJvbGxlclF0LmgiCisjaW5jbHVkZSAiLi4vLi4v
Li4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgiCiAK
ICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUlucHV0TWV0aG9kRXZlbnQ+CiAj
aW5jbHVkZSA8UUtleUV2ZW50PgogCiBUZXh0SW5wdXRDb250cm9sbGVyOjpUZXh0SW5wdXRDb250
cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQpCkBAIC0xMjcsMyArMTI5LDMyIEBAIHZvaWQgVGV4dElu
cHV0Q29udHJvbGxlcjo6ZG9Db21tYW5kKGNvbnN0IFFTdHJpbmcmIGNvbW1hbmQpCiAgICAgUUtl
eUV2ZW50IGV2ZW50MihRRXZlbnQ6OktleVJlbGVhc2UsIGtleWNvZGUsIG1vZGlmaWVycyk7CiAg
ICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQocGFyZW50KCksICZldmVudDIpOwogfQorCit2b2lk
IFRleHRJbnB1dENvbnRyb2xsZXI6OnNldE1hcmtlZFRleHQoY29uc3QgUVN0cmluZyYgc3RyaW5n
LCBpbnQgc3RhcnQsIGludCBlbmQpCit7CisgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0
dHJpYnV0ZT4gYXR0cmlidXRlczsKKyNpZiBRVF9WRVJTSU9OID49IDB4MDQwNjAwCisgICAgUUlu
cHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSBzZWxlY3Rpb24oUUlucHV0TWV0aG9kRXZlbnQ6OlNl
bGVjdGlvbiwgc3RhcnQsIGVuZCwgUVZhcmlhbnQoKSk7CisgICAgYXR0cmlidXRlcyA8PCBzZWxl
Y3Rpb247CisjZW5kaWYKKyAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudChzdHJpbmcsIGF0dHJp
YnV0ZXMpOworICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KHBhcmVudCgpLCAmZXZlbnQpOwor
fQorCit2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Omluc2VydFRleHQoY29uc3QgUVN0cmluZyYg
c3RyaW5nKQoreworICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJp
YnV0ZXM7CisgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoc3RyaW5nLCBhdHRyaWJ1dGVzKTsK
KyAgICBldmVudC5zZXRDb21taXRTdHJpbmcoc3RyaW5nKTsKKyAgICBRQXBwbGljYXRpb246OnNl
bmRFdmVudChwYXJlbnQoKSwgJmV2ZW50KTsKK30KKworUVZhcmlhbnRMaXN0IFRleHRJbnB1dENv
bnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UoKQoreworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2VsZWN0ZWRSYW5nZShxb2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihwYXJlbnQoKSkp
OworfQorCitRVmFyaWFudExpc3QgVGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UocW9iamVjdF9j
YXN0PFFXZWJQYWdlKj4ocGFyZW50KCkpLCBsb2NhdGlvbiwgbGVuZ3RoKTsKK30KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5o
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmgK
aW5kZXggN2M3NDMzZS4uMDIxMDk4NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2luY2x1ZGUgPFFMaXN0PgogI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVZhcmlhbnQ+
CiAjaW5jbHVkZSA8UVN0cmluZz4KICNpbmNsdWRlICJxd2VicGFnZS5oIgogCkBAIC00MSwxNCAr
NDIsMTQgQEAgcHVibGljOgogCiBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBkb0NvbW1hbmQoY29u
c3QgUVN0cmluZyYgY29tbWFuZCk7Ci0vLyAgICAgdm9pZCBzZXRNYXJrZWRUZXh0KGNvbnN0IFFT
dHJpbmcmIHN0ciwgaW50IGZyb20sIGludCBsZW5ndGgpOworICAgIHZvaWQgc2V0TWFya2VkVGV4
dChjb25zdCBRU3RyaW5nJiBzdHJpbmcsIGludCBzdGFydCwgaW50IGVuZCk7CiAvLyAgICAgYm9v
bCBoYXNNYXJrZWRUZXh0KCk7CiAvLyAgICAgdm9pZCB1bm1hcmtUZXh0KCk7CiAvLyAgICAgUUxp
c3Q8aW50PiBtYXJrZWRSYW5nZSgpOwotLy8gICAgIFFMaXN0PGludD4gc2VsZWN0ZWRSYW5nZSgp
OworICAgIFFWYXJpYW50TGlzdCBzZWxlY3RlZFJhbmdlKCk7CiAvLyAgICAgdm9pZCB2YWxpZEF0
dHJpYnV0ZXNGb3JNYXJrZWRUZXh0KCk7Ci0vLyAgICAgdm9pZCBpbnNlclRleHQoY29uc3QgUVN0
cmluZyYpOwotLy8gICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoKTsKKyAgICB2
b2lkIGluc2VydFRleHQoY29uc3QgUVN0cmluZyYgc3RyaW5nKTsKKyAgICBRVmFyaWFudExpc3Qg
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKTsKIC8v
ICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnQoaW50LCBpbnQpOwogLy8gICAgIHZvaWQg
c3Vic3RyaW5nRnJvbVJhbmdlKGludCwgaW50KTsKIC8vICAgICB2b2lkIGNvbnZlcnNhdGlvbklk
ZW50aWZpZXIoKTsKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>