<?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>25253</bug_id>
          
          <creation_ts>2009-04-16 16:52:39 -0700</creation_ts>
          <short_desc>REGRESSION: &apos;maxLength&apos; of input text field doesn&apos;t work for CJK characters</short_desc>
          <delta_ts>2009-09-03 02:29:51 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>xlyuan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>hbono</cc>
    
    <cc>jshin</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>117841</commentid>
    <comment_count>0</comment_count>
    <who name="">xlyuan</who>
    <bug_when>2009-04-16 16:52:39 -0700</bug_when>
    <thetext>Build: WebKit-r42377 2009-04-15
   OS: Windows, not test on Mac

Other Browsers:
Chromium: Fail
Firefox3: Fail
     IE8: OK

Steps:
1. Launch Safari
2. Open the attached test file
   &gt;&gt;It includes &lt;input type=&quot;text&quot; maxLength=&quot;10&quot; /&gt;
3. Try to type double byte characters, any CCJK language is fine
4. Observe

Result:
There is no limitation of the numbers when typing double byte characters

Expected:
Should only allow typing 10 characters

Notes:
When you copy/paste in this case, the length limits in 10 characters correctly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117842</commentid>
    <comment_count>1</comment_count>
      <attachid>29562</attachid>
    <who name="">xlyuan</who>
    <bug_when>2009-04-16 16:53:32 -0700</bug_when>
    <thetext>Created attachment 29562
Test file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117843</commentid>
    <comment_count>2</comment_count>
    <who name="">xlyuan</who>
    <bug_when>2009-04-16 16:54:43 -0700</bug_when>
    <thetext>This is also tracked in Chromium as crbug.com/10612</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119408</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-04-29 17:40:17 -0700</bug_when>
    <thetext>This works in Safari 3.2. I loaded the following page (has an input with maxLength=3):
http://www.plexode.com/cgi-bin/eval3.py#ht=%3Cinput%20type%3D%22text%22%20maxLength%3D%223%22%20%2F%3E

In Safari 3.2, I can type three Chinese characters. Then further typing brings up the IME, but hitting enter doesn&apos;t insert a character.

In today&apos;s nightly, I can type as many Chinese characters as I want. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142549</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-25 02:31:35 -0700</bug_when>
    <thetext>I&apos;m investigating this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142558</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-25 04:18:09 -0700</bug_when>
    <thetext>Bono-san gave me some information.
InputElement::handleBeforeTextInsertedEvent() makes this problem.

void InputElement::handleBeforeTextInsertedEvent(InputElementData&amp; data, InputElement* inputElement, Document* document, Event* event)
{
    ASSERT(event-&gt;isBeforeTextInsertedEvent());

    // Make sure that the text to be inserted will not violate the maxLength.
    int oldLength = numGraphemeClusters(inputElement-&gt;value().impl());
    ASSERT(oldLength &lt;= data.maxLength());
    int selectionLength = numGraphemeClusters(plainText(document-&gt;frame()-&gt;selection()-&gt;selection().toNormalizedRange().get()).impl());
    ASSERT(oldLength &gt;= selectionLength);
    int maxNewLength = data.maxLength() - (oldLength - selectionLength);

    // Truncate the inserted text to avoid violating the maxLength and other constraints.
    BeforeTextInsertedEvent* textEvent = static_cast&lt;BeforeTextInsertedEvent*&gt;(event);
    textEvent-&gt;setText(constrainValue(inputElement, textEvent-&gt;text(), maxNewLength));
}

selectionLength represents the length to be removed by the next text insertion.  However, frame()-&gt;selection()-&gt;selection() can be IME&apos;s pre-edit text, which is outside of the current inputElement-&gt;value().  So maxNewLength can be larger than expectation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143079</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-27 00:34:19 -0700</bug_when>
    <thetext>A pre-edit text can be outside the InputElment::value() because IME inputs change subtree without firing BeforeTextInsertedEvents.  RenderTextControlSingleLine::subtreeHasChanged() calls input-&gt;constrainValue(text()).  It makes a mismatch of InputElement::value() and visible text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143083</commentid>
    <comment_count>7</comment_count>
      <attachid>38662</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-27 01:10:58 -0700</bug_when>
    <thetext>Created attachment 38662
Proposed patch

I have no idea how to write automated tests for this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143193</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-27 14:06:41 -0700</bug_when>
    <thetext>I thought that we had some fake IME tests somewhere... Ojan, do you remember?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143196</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-08-27 14:13:53 -0700</bug_when>
    <thetext>The support for fake IME is only available on the Mac, so look at the tests in platform/mac/editing/input for examples. I&apos;m not 100% sure what&apos;s there will actually work for this case since it really fakes out IME. It does do marked text, but when you accept a composition, it just puts in the plain latin characters that you typed. It never actually does the conversion to characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143263</commentid>
    <comment_count>10</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-08-27 17:40:52 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The support for fake IME is only available on the Mac, so look at the tests in
&gt; platform/mac/editing/input for examples. I&apos;m not 100% sure what&apos;s there will
&gt; actually work for this case since it really fakes out IME. It does do marked
&gt; text, but when you accept a composition, it just puts in the plain latin
&gt; characters that you typed. It never actually does the conversion to characters.

Right. We can call IME functions of WebKit through TextInputController on Mac and I assume we can write an automated text for this issue. (I&apos;m not sure whether or not it becomes a text test or a pixel test, though.) Let me talk with him about the test.

By the way, do we need to port the above IME test feature to the test_shell of Chrome? If so, I&apos;m happy to implement it. (Sorry for my off-the-wall question in advance.)

Regards,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143274</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-27 18:44:30 -0700</bug_when>
    <thetext>Thanks.
LayoutTests/platform/mac/editing/input/text-control-ime-input.html seems very helpful.

BTW, my fix strongly depends on the current behavior that IME input modifies DOM before text insertion events, and it is the root cause of this regression.
bug#25119 might change this behavior.  So we shouldn&apos;t commit this patch for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143393</commentid>
    <comment_count>12</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-08-28 09:46:03 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Thanks.
&gt; LayoutTests/platform/mac/editing/input/text-control-ime-input.html seems very
&gt; helpful.
&gt; 
&gt; BTW, my fix strongly depends on the current behavior that IME input modifies
&gt; DOM before text insertion events, and it is the root cause of this regression.
&gt; bug#25119 might change this behavior.  So we shouldn&apos;t commit this patch for
&gt; now.

Bug 25119 is only about key events, not text insertion events. Also, that bug is not actively being worked on. I don&apos;t think you should block this bug on that one. As long as this patch comes with a layout test, then it will be the responsibility of whoever fixes bug 25119 to keep the layout test passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144109</commentid>
    <comment_count>13</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-01 21:52:24 -0700</bug_when>
    <thetext>(In reply to comment #12)

Ok, I understand.  I&apos;ll upload the patch with tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144110</commentid>
    <comment_count>14</comment_count>
      <attachid>38909</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-01 21:54:07 -0700</bug_when>
    <thetext>Created attachment 38909
Proposed patch (rev.2)

run-webkit-tests and check-webkit-style passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144113</commentid>
    <comment_count>15</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-09-01 22:19:21 -0700</bug_when>
    <thetext>I think there are better people to review this patch but I&apos;ll note that this is a typo that would be nice to fix &quot;RednerTextControlSingleLine::subtreeHasChanged()&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144114</commentid>
    <comment_count>16</comment_count>
      <attachid>38910</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-01 22:23:42 -0700</bug_when>
    <thetext>Created attachment 38910
Proposed patch (rev.3)

- Fix a typo in a comment
- Use numGraphemeClusters() instead of .length()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144414</commentid>
    <comment_count>17</comment_count>
      <attachid>38910</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 00:52:02 -0700</bug_when>
    <thetext>Comment on attachment 38910
Proposed patch (rev.3)

These tests look like they can be dumpAsText() tests.  That&apos;s much preferred over render tree dump tests.

Why do we need to pass Document* now that we&apos;re passing Element*?  you can get element-&gt;document(). :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144448</commentid>
    <comment_count>18</comment_count>
      <attachid>38974</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-03 02:02:26 -0700</bug_when>
    <thetext>Created attachment 38974
Proposed patch (rev.4)

&gt; These tests look like they can be dumpAsText() tests.  That&apos;s much preferred
&gt; over render tree dump tests.

dumpAsText() didn&apos;t show text in &lt;input&gt;.
Bono-san gave me an advice of using document.getSelection().  I have updated the tests for document.getSelection().

&gt; Why do we need to pass Document* now that we&apos;re passing Element*?  you can get
&gt; element-&gt;document(). :)

That&apos;s right.  I removed the Document* parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144459</commentid>
    <comment_count>19</comment_count>
      <attachid>38974</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 02:18:26 -0700</bug_when>
    <thetext>Comment on attachment 38974
Proposed patch (rev.4)

This looks fine, but it seems input.textLength or input.value would have been simpler than doing a selectAll. :)

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144461</commentid>
    <comment_count>20</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-03 02:27:41 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; This looks fine, but it seems input.textLength or input.value would have been
&gt; simpler than doing a selectAll. :)

Actually DOM properties have been working well even without this patch.  This bug is a kind of mismatch of a DOM value and a renderer value.

Thank you for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144463</commentid>
    <comment_count>21</comment_count>
      <attachid>38974</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 02:29:45 -0700</bug_when>
    <thetext>Comment on attachment 38974
Proposed patch (rev.4)

Clearing flags on attachment: 38974

Committed r48011: &lt;http://trac.webkit.org/changeset/48011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144464</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 02:29:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>29562</attachid>
            <date>2009-04-16 16:53:32 -0700</date>
            <delta_ts>2009-04-16 16:53:32 -0700</delta_ts>
            <desc>Test file</desc>
            <filename>maxLength_Test.html</filename>
            <type>text/html</type>
            <size>176</size>
            <attacher>xlyuan</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PWdiMjMxMiIgLz4NCjwvaGVhZD4NCjxib2R5Pg0KPGZvcm0+DQo8
aW5wdXQgdHlwZT0idGV4dCIgbWF4TGVuZ3RoPSIxMCIgLz4NCjwvZm9ybT4NCjwvYm9keT4NCjwv
aHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38662</attachid>
            <date>2009-08-27 01:10:58 -0700</date>
            <delta_ts>2009-09-01 21:54:07 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>maxlength-ime-1.diff</filename>
            <type>text/plain</type>
            <size>6270</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjZhNzBlNi4uYWE5OWMwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wOC0yNyAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRml4IGEgcmVncmVzc2lvbiBidWcgdGhhdCBtYXhMZW5ndGggZG9lc24n
dCB3b3JrIGZvciBJTUUgaW5wdXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTI1MworCisgICAgICAgICogZG9tL0lucHV0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogd21sL1dNTElucHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorCiAyMDA5LTA4LTI2ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL0lucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCmlu
ZGV4IGFlMGE2NTAuLjYxZmE3NzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcApAQCAtMjE4LDIwICsyMTgs
MjcgQEAgc3RhdGljIGludCBudW1HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ0ltcGwqIHMpCiAgICAg
cmV0dXJuIG51bTsKIH0KIAotdm9pZCBJbnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50KElucHV0RWxlbWVudERhdGEmIGRhdGEsIElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50LCBEb2N1bWVudCogZG9jdW1lbnQsIEV2ZW50KiBldmVudCkKK3ZvaWQgSW5wdXRFbGVtZW50
OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBFdmVudCogZXZlbnQpCiB7CisgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHRleHQg
dG8gYmUgaW5zZXJ0ZWQgd2lsbCBub3QgdmlvbGF0ZSB0aGUgbWF4TGVuZ3RoLgorCiAgICAgQVNT
RVJUKGV2ZW50LT5pc0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkpOwogCi0gICAgLy8gTWFrZSBz
dXJlIHRoYXQgdGhlIHRleHQgdG8gYmUgaW5zZXJ0ZWQgd2lsbCBub3QgdmlvbGF0ZSB0aGUgbWF4
TGVuZ3RoLgotICAgIGludCBvbGRMZW5ndGggPSBudW1HcmFwaGVtZUNsdXN0ZXJzKGlucHV0RWxl
bWVudC0+dmFsdWUoKS5pbXBsKCkpOwotICAgIEFTU0VSVChvbGRMZW5ndGggPD0gZGF0YS5tYXhM
ZW5ndGgoKSk7CisgICAgLy8gV2UgZG9uJ3QgdXNlIElucHV0RWxlbWVudDo6dmFsdWUoKSBoZXJl
IGJlY2F1c2UgaXQgZG9lc24ndCBjb250YWluIElNRSdzIHByZS1lZGl0IHRleHQuCisgICAgLy8g
b2xkTGVuZ3RoIGNhbiBiZSBsYXJnZXIgdGhhbiBtYXhMZW5ndGgoKS4KKyAgICBpbnQgb2xkTGVu
Z3RoID0gdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVudC0+cmVuZGVyZXIoKSkt
PnRleHQoKS5sZW5ndGgoKTsKKworICAgIC8vIHNlbGVjdGlvbigpIG1heSBiZSBhIHByZS1lZGl0
IHRleHQuCiAgICAgaW50IHNlbGVjdGlvbkxlbmd0aCA9IG51bUdyYXBoZW1lQ2x1c3RlcnMocGxh
aW5UZXh0KGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkudG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSkuaW1wbCgpKTsKICAgICBBU1NFUlQob2xkTGVuZ3RoID49IHNl
bGVjdGlvbkxlbmd0aCk7Ci0gICAgaW50IG1heE5ld0xlbmd0aCA9IGRhdGEubWF4TGVuZ3RoKCkg
LSAob2xkTGVuZ3RoIC0gc2VsZWN0aW9uTGVuZ3RoKTsKKworICAgIC8vIFNlbGVjdGVkIGNoYXJh
Y3RlcnMgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBuZXh0IHRleHQgZXZlbnQuCisgICAgaW50IGJh
c2VMZW5ndGggPSBvbGRMZW5ndGggLSBzZWxlY3Rpb25MZW5ndGg7CisgICAgaW50IGFwcGVuZGFi
bGVMZW5ndGggPSBkYXRhLm1heExlbmd0aCgpIC0gYmFzZUxlbmd0aDsKIAogICAgIC8vIFRydW5j
YXRlIHRoZSBpbnNlcnRlZCB0ZXh0IHRvIGF2b2lkIHZpb2xhdGluZyB0aGUgbWF4TGVuZ3RoIGFu
ZCBvdGhlciBjb25zdHJhaW50cy4KICAgICBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCogdGV4dEV2
ZW50ID0gc3RhdGljX2Nhc3Q8QmVmb3JlVGV4dEluc2VydGVkRXZlbnQqPihldmVudCk7Ci0gICAg
dGV4dEV2ZW50LT5zZXRUZXh0KGNvbnN0cmFpblZhbHVlKGlucHV0RWxlbWVudCwgdGV4dEV2ZW50
LT50ZXh0KCksIG1heE5ld0xlbmd0aCkpOworICAgIHRleHRFdmVudC0+c2V0VGV4dChjb25zdHJh
aW5WYWx1ZShpbnB1dEVsZW1lbnQsIHRleHRFdmVudC0+dGV4dCgpLCBhcHBlbmRhYmxlTGVuZ3Ro
KSk7CiB9CiAKIHZvaWQgSW5wdXRFbGVtZW50OjpwYXJzZVNpemVBdHRyaWJ1dGUoSW5wdXRFbGVt
ZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgTWFwcGVkQXR0cmlidXRlKiBhdHRyaWJ1
dGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvZG9t
L0lucHV0RWxlbWVudC5oCmluZGV4IDBiZDEwMmUuLmY2NjVhMmYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0lucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCkBA
IC03Myw3ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBhYm91dFRvVW5sb2Fk
KElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZyb21S
ZW5kZXJlcihJbnB1dEVsZW1lbnREYXRhJiwgSW5wdXRFbGVtZW50KiwgRWxlbWVudCosIGNvbnN0
IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29uc3RyYWluVmFsdWUoY29uc3QgSW5wdXRF
bGVtZW50KiwgY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlLCBpbnQgbWF4TGVuZ3RoKTsKLSAg
ICBzdGF0aWMgdm9pZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChJbnB1dEVsZW1lbnRE
YXRhJiwgSW5wdXRFbGVtZW50KiwgRG9jdW1lbnQqLCBFdmVudCopOworICAgIHN0YXRpYyB2b2lk
IGhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KElucHV0RWxlbWVudERhdGEmLCBJbnB1dEVs
ZW1lbnQqLCBFbGVtZW50KiwgRG9jdW1lbnQqLCBFdmVudCopOwogICAgIHN0YXRpYyB2b2lkIHBh
cnNlU2l6ZUF0dHJpYnV0ZShJbnB1dEVsZW1lbnREYXRhJiwgRWxlbWVudCosIE1hcHBlZEF0dHJp
YnV0ZSopOwogICAgIHN0YXRpYyB2b2lkIHBhcnNlTWF4TGVuZ3RoQXR0cmlidXRlKElucHV0RWxl
bWVudERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50KiwgTWFwcGVkQXR0cmlidXRlKik7CiAg
ICAgc3RhdGljIHZvaWQgdXBkYXRlVmFsdWVJZk5lZWRlZChJbnB1dEVsZW1lbnREYXRhJiwgSW5w
dXRFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNWZmZTRiZi4uMjEy
MzgxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTUwNSw3ICsxNTA1LDcgQEAg
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAg
ICAgfQogCiAgICAgaWYgKGV2dC0+aXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpKQotICAgICAg
ICBJbnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KG1fZGF0YSwgdGhp
cywgZG9jdW1lbnQoKSwgZXZ0KTsKKyAgICAgICAgSW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudChtX2RhdGEsIHRoaXMsIHRoaXMsIGRvY3VtZW50KCksIGV2dCk7CiAK
ICAgICBpZiAoaXNUZXh0RmllbGQoKSAmJiByZW5kZXJlcigpICYmIChldnQtPmlzTW91c2VFdmVu
dCgpIHx8IGV2dC0+aXNEcmFnRXZlbnQoKSB8fCBldnQtPmlzV2hlZWxFdmVudCgpIHx8IGV2dC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmZvY3VzRXZlbnQpKQogICAgICAgICB0b1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZShyZW5kZXJlcigpKS0+Zm9yd2FyZEV2ZW50KGV2dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCBiYzk4YjhhLi44OTM4YTFm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKQEAgLTE1Nyw3ICsxNTcsMTEgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICBSZW5kZXJUZXh0Q29udHJvbDo6c3VidHJlZUhh
c0NoYW5nZWQoKTsKIAogICAgIElucHV0RWxlbWVudCogaW5wdXQgPSBpbnB1dEVsZW1lbnQoKTsK
LSAgICBpbnB1dC0+c2V0VmFsdWVGcm9tUmVuZGVyZXIoaW5wdXQtPmNvbnN0cmFpblZhbHVlKHRl
eHQoKSkpOworICAgIFN0cmluZyBjdXJyZW50VGV4dCA9IHRleHQoKTsKKyAgICAvLyBDYWxsIHNl
dFZhbHVlRnJvbVJlbmRlcmVyKGNvbnN0cmFpblZhbHVlKCkpIG9ubHkgaWYgdGhlIHZhbHVlIGlz
IHNocmlua2VkLgorICAgIC8vIEZvciBvdGhlciBjYXNlcywgSW5wdXRFbGVtZW50OjpoYW5kbGVC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpIGlzIGVub3VnaC4KKyAgICBpZiAoY3VycmVudFRleHQu
bGVuZ3RoKCkgPCBpbnB1dC0+dmFsdWUoKS5sZW5ndGgoKSkKKyAgICAgICAgaW5wdXQtPnNldFZh
bHVlRnJvbVJlbmRlcmVyKGlucHV0LT5jb25zdHJhaW5WYWx1ZShjdXJyZW50VGV4dCkpOwogCiAg
ICAgaWYgKG1fY2FuY2VsQnV0dG9uKQogICAgICAgICB1cGRhdGVDYW5jZWxCdXR0b25WaXNpYmls
aXR5KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2Vi
Q29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAppbmRleCBmZWVkNWE1Li5mZjQxYWY5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvd21s
L1dNTElucHV0RWxlbWVudC5jcHAKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFdNTElucHV0RWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQogICAgIH0KIAogICAgIGlmIChl
dnQtPmlzQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoKSkKLSAgICAgICAgSW5wdXRFbGVtZW50Ojpo
YW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChtX2RhdGEsIHRoaXMsIGRvY3VtZW50KCksIGV2
dCk7CisgICAgICAgIElucHV0RWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQo
bV9kYXRhLCB0aGlzLCB0aGlzLCBkb2N1bWVudCgpLCBldnQpOwogCiAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgKGV2dC0+aXNNb3VzZUV2ZW50KCkgfHwgZXZ0LT5pc0RyYWdFdmVudCgpIHx8IGV2dC0+
aXNXaGVlbEV2ZW50KCkgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCB8
fCBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZm9jdXNFdmVudCkpCiAgICAgICAgIHRvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHJlbmRlcmVyKCkpLT5mb3J3YXJkRXZlbnQoZXZ0KTsK
</data>
<flag name="review"
          id="19662"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38909</attachid>
            <date>2009-09-01 21:54:07 -0700</date>
            <delta_ts>2009-09-01 22:23:42 -0700</delta_ts>
            <desc>Proposed patch (rev.2)</desc>
            <filename>maxlength-ime-2.diff</filename>
            <type>text/plain</type>
            <size>11702</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MWI5MzhhLi4zYTU5YWI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDkt
MDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBtYXhMZW5ndGggYW5kIElN
RSBpbnB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1MjUzCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxl
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWlt
ZS1wcmVlZGl0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29t
cGxldGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
Zm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMDktMDgtMzEgIEJyaWFuIFdlaW5z
dGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5n
dGgtaW1lLWNvbXBsZXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhs
ZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg0MWE4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+VGhlcmUgd2FzIGEgYnVnIHRoYXQgdXNlcnMgY291bGQgaW5w
dXQgdGV4dCBsb25nZXIgdGhhbiBtYXhsZW5ndGggdmlhIElNRS4gIFRoaXMgdGVzdCBjb25maXJt
cyBpdCB3YXMgZml4ZWQuPC9wPgorCis8aW5wdXQgaWQ9ImkxIiBtYXhsZW5ndGg9Mj4KKzxwPlRo
ZSBmaWVsZCB2YWx1ZSBzaG91ZCBiZSAnYWInLjwvcD4KKzxzY3JpcHQ+Cit2YXIgaW5wdXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsKK2lucHV0LmZvY3VzKCk7Cit0ZXh0SW5wdXRD
b250cm9sbGVyLnNldE1hcmtlZFRleHQoJ2FiY2QnLCAwLCA0KTsKK3RleHRJbnB1dENvbnRyb2xs
ZXIuaW5zZXJ0VGV4dCgnYWJjZCcpOyAgLy8gV2ViS2l0IGNyYXNoZWQgYnkgdGhpcyB3aXRob3V0
IHRoZSBjaGFuZ2Ugb2YgYnVnIzI1MjUzLgorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtcHJl
ZWRpdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXBy
ZWVkaXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTlhZTQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgt
aW1lLXByZWVkaXQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj5UaGlzIHRlc3QgY2hlY2tzIHVzZXJzIGNhbiBpbnB1dCBwcmUtZWRpdCB0ZXh0IGxvbmdl
ciB0aGFuIG1heGxlbmd0aC48L3A+CisKKzxpbnB1dCBpZD0iaTEiIG1heGxlbmd0aD0yPgorPHA+
VGhlIGZpZWxkIHNob3VsZCBoYXZlIDQgc2VsZWN0ZWQgY2hhcmFjdGVycy48L3A+CisKKzxzY3Jp
cHQ+Cit2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsKK2lucHV0LmZv
Y3VzKCk7Cit0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQoJ2FiY2QnLCAwLCA0KTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmlu
ZGV4IDkxOWZhOWEuLjU2YWUzNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC01OTA0
LDMgKzU5MDQsNyBAQCBtZWRpYS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi5odG1sCiBmYXN0
L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sCiBmYXN0L2V2ZW50
cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLXVuY2FjaGVkLmh0bWwKIGZhc3QvZXZlbnRzL3Bh
Z2VzaG93LXBhZ2VoaWRlLmh0bWwKKworIyBObyBUZXh0SW5wdXRDb250cm9sbGVyCitmYXN0L2Zv
cm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKK2Zhc3QvZm9ybXMvaW5wdXQt
bWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0
aC1pbWUtY29tcGxldGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41NzY2YjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjAgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJW
aWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA2NzJ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0Nzk6ICJUaGVyZSB3
YXMgYSBidWcgdGhhdCB1c2VycyBjb3VsZCBpbnB1dCB0ZXh0IGxvbmdlciB0aGFuIG1heGxlbmd0
aCB2aWEgSU1FLiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDQ3OSwwKSB3aWR0aCAxOTM6ICJU
aGlzIHRlc3QgY29uZmlybXMgaXQgd2FzIGZpeGVkLiIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDM0KSBzaXplIDc4NHgyMworICAgICAgICBSZW5kZXJUZXh0Q29udHJvbCB7
SU5QVVR9IGF0ICgyLDIpIHNpemUgMTI4eDE5IFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgy
cHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDB4MAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDczKSBzaXplIDc4NHgxOAorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxODV4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxODU6ICJUaGUgZmllbGQgdmFsdWUgc2hvdWQgYmUgJ2Fi
Jy4iCitsYXllciBhdCAoMTMsNDcpIHNpemUgMTIyeDEzCisgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgzLDMpIHNpemUgMTIyeDEzCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUg
MTN4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDEzOiAiYWIiCitjYXJldDogcG9z
aXRpb24gMiBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAzIHtJ
TlBVVH0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMSB7SFRNTH0gb2YgZG9jdW1lbnQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW1heGxl
bmd0aC1pbWUtcHJlZWRpdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMGMwNTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1l
LXByZWVkaXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MjZ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA0MjY6ICJUaGlzIHRlc3QgY2hlY2tzIHVzZXJzIGNhbiBpbnB1dCBwcmUtZWRpdCB0
ZXh0IGxvbmdlciB0aGFuIG1heGxlbmd0aC4iCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3Vz
KSBhdCAoMCwzNCkgc2l6ZSA3ODR4MjMKKyAgICAgICAgUmVuZGVyVGV4dENvbnRyb2wge0lOUFVU
fSBhdCAoMiwyKSBzaXplIDEyOHgxOSBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGlu
c2V0ICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAw
eDAKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw3Mykgc2l6ZSA3ODR4MTgKKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjc0eDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMjc0OiAiVGhlIGZpZWxkIHNob3VsZCBoYXZlIDQgc2VsZWN0ZWQg
Y2hhcmFjdGVycy4iCitsYXllciBhdCAoMTMsNDcpIHNpemUgMTIyeDEzCisgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgzLDMpIHNpemUgMTIyeDEzCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgx
LDApIHNpemUgMjZ4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI2OiAiYWJjZCIK
K3NlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQg
MCB7RElWfSBvZiBjaGlsZCAzIHtJTlBVVH0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMSB7
SFRNTH0gb2YgZG9jdW1lbnQKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNCBvZiBjaGlsZCAw
IHsjdGV4dH0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAzIHtJTlBVVH0gb2YgY2hpbGQgMSB7
Qk9EWX0gb2YgY2hpbGQgMSB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKaW5kZXggNTRiZTczOC4uMTk2MjRlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAg
LTY1MCwzICs2NTAsNiBAQCBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi13aGl0ZWxp
c3RpbmctaXAtYWRkcmVzc2VzLmh0bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2lu
LXdoaXRlbGlzdGluZy1pcC1hZGRyZXNzZXMtd2l0aC1zdWJkb21haW5zLmh0bWwKIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLXdoaXRlbGlzdGluZy1zdWJkb21haW5zLmh0bWwKIAor
IyBObyBUZXh0SW5wdXRDb250cm9sbGVyCitmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUt
Y29tcGxldGVkLmh0bWwKK2Zhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0
bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZDAxMDIxZC4uMTBiMzQ4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wOS0wMSAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4IGEgcmVncmVzc2lvbiBidWcgdGhhdCBtYXhMZW5ndGggZG9l
c24ndCB3b3JrIGZvciBJTUUgaW5wdXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTI1MworCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2lucHV0
LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMv
aW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKKworICAgICAgICAqIGRvbS9JbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudCk6CisgICAgICAgICogZG9tL0lucHV0RWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiB3bWwvV01MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6CisKIDIwMDktMDgtMzEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rh
dm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5
IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCmluZGV4IGFlMGE2NTAuLjYxYmVjYzYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20v
SW5wdXRFbGVtZW50LmNwcApAQCAtMjE4LDIwICsyMTgsMjggQEAgc3RhdGljIGludCBudW1HcmFw
aGVtZUNsdXN0ZXJzKFN0cmluZ0ltcGwqIHMpCiAgICAgcmV0dXJuIG51bTsKIH0KIAotdm9pZCBJ
bnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KElucHV0RWxlbWVudERh
dGEmIGRhdGEsIElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBEb2N1bWVudCogZG9jdW1lbnQs
IEV2ZW50KiBldmVudCkKK3ZvaWQgSW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0
ZWRFdmVudChJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCwgRWxlbWVudCogZWxlbWVudCwgRG9jdW1lbnQqIGRvY3VtZW50LCBFdmVudCogZXZlbnQpCiB7
CiAgICAgQVNTRVJUKGV2ZW50LT5pc0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkpOwotCiAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIHRleHQgdG8gYmUgaW5zZXJ0ZWQgd2lsbCBub3QgdmlvbGF0
ZSB0aGUgbWF4TGVuZ3RoLgotICAgIGludCBvbGRMZW5ndGggPSBudW1HcmFwaGVtZUNsdXN0ZXJz
KGlucHV0RWxlbWVudC0+dmFsdWUoKS5pbXBsKCkpOwotICAgIEFTU0VSVChvbGRMZW5ndGggPD0g
ZGF0YS5tYXhMZW5ndGgoKSk7CisKKyAgICAvLyBXZSB1c2UgdGhlIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6dGV4dCgpIGluc3RlYWQgb2YKKyAgICAvLyBJbnB1dEVsZW1lbnQ6OnZhbHVl
KCkgYmVjYXVzZSB0aGV5IGNhbiBiZSBtaXNtYXRjaGVkIGJ5CisgICAgLy8gY29uc3RyYWluVmFs
dWUoKSBpbiBSZWRuZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnN1YnRyZWVIYXNDaGFuZ2VkKCkK
KyAgICAvLyBpbiBhIGNhc2Ugb2YgSU1FIGlucHV0LgorICAgIGludCBvbGRMZW5ndGggPSB0b1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVtZW50LT5yZW5kZXJlcigpKS0+dGV4dCgpLmxl
bmd0aCgpOworCisgICAgLy8gc2VsZWN0aW9uKCkgbWF5IGJlIGEgcHJlLWVkaXQgdGV4dC4KICAg
ICBpbnQgc2VsZWN0aW9uTGVuZ3RoID0gbnVtR3JhcGhlbWVDbHVzdGVycyhwbGFpblRleHQoZG9j
dW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKS5pbXBsKCkpOwogICAgIEFTU0VSVChvbGRMZW5ndGggPj0gc2VsZWN0aW9uTGVu
Z3RoKTsKLSAgICBpbnQgbWF4TmV3TGVuZ3RoID0gZGF0YS5tYXhMZW5ndGgoKSAtIChvbGRMZW5n
dGggLSBzZWxlY3Rpb25MZW5ndGgpOworCisgICAgLy8gU2VsZWN0ZWQgY2hhcmFjdGVycyB3aWxs
IGJlIHJlbW92ZWQgYnkgdGhlIG5leHQgdGV4dCBldmVudC4KKyAgICBpbnQgYmFzZUxlbmd0aCA9
IG9sZExlbmd0aCAtIHNlbGVjdGlvbkxlbmd0aDsKKyAgICBpbnQgYXBwZW5kYWJsZUxlbmd0aCA9
IGRhdGEubWF4TGVuZ3RoKCkgLSBiYXNlTGVuZ3RoOwogCiAgICAgLy8gVHJ1bmNhdGUgdGhlIGlu
c2VydGVkIHRleHQgdG8gYXZvaWQgdmlvbGF0aW5nIHRoZSBtYXhMZW5ndGggYW5kIG90aGVyIGNv
bnN0cmFpbnRzLgogICAgIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KiB0ZXh0RXZlbnQgPSBzdGF0
aWNfY2FzdDxCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCo+KGV2ZW50KTsKLSAgICB0ZXh0RXZlbnQt
PnNldFRleHQoY29uc3RyYWluVmFsdWUoaW5wdXRFbGVtZW50LCB0ZXh0RXZlbnQtPnRleHQoKSwg
bWF4TmV3TGVuZ3RoKSk7CisgICAgdGV4dEV2ZW50LT5zZXRUZXh0KGNvbnN0cmFpblZhbHVlKGlu
cHV0RWxlbWVudCwgdGV4dEV2ZW50LT50ZXh0KCksIGFwcGVuZGFibGVMZW5ndGgpKTsKIH0KIAog
dm9pZCBJbnB1dEVsZW1lbnQ6OnBhcnNlU2l6ZUF0dHJpYnV0ZShJbnB1dEVsZW1lbnREYXRhJiBk
YXRhLCBFbGVtZW50KiBlbGVtZW50LCBNYXBwZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVt
ZW50LmgKaW5kZXggMGJkMTAyZS4uZjY2NWEyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vSW5w
dXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKQEAgLTczLDcgKzcz
LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGFib3V0VG9VbmxvYWQoSW5wdXRFbGVt
ZW50KiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRnJvbVJlbmRlcmVyKElu
cHV0RWxlbWVudERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50KiwgY29uc3QgU3RyaW5nJik7
CiAgICAgc3RhdGljIFN0cmluZyBjb25zdHJhaW5WYWx1ZShjb25zdCBJbnB1dEVsZW1lbnQqLCBj
b25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUsIGludCBtYXhMZW5ndGgpOwotICAgIHN0YXRpYyB2
b2lkIGhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KElucHV0RWxlbWVudERhdGEmLCBJbnB1
dEVsZW1lbnQqLCBEb2N1bWVudCosIEV2ZW50Kik7CisgICAgc3RhdGljIHZvaWQgaGFuZGxlQmVm
b3JlVGV4dEluc2VydGVkRXZlbnQoSW5wdXRFbGVtZW50RGF0YSYsIElucHV0RWxlbWVudCosIEVs
ZW1lbnQqLCBEb2N1bWVudCosIEV2ZW50Kik7CiAgICAgc3RhdGljIHZvaWQgcGFyc2VTaXplQXR0
cmlidXRlKElucHV0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgTWFwcGVkQXR0cmlidXRlKik7CiAg
ICAgc3RhdGljIHZvaWQgcGFyc2VNYXhMZW5ndGhBdHRyaWJ1dGUoSW5wdXRFbGVtZW50RGF0YSYs
IElucHV0RWxlbWVudCosIEVsZW1lbnQqLCBNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICBzdGF0aWMg
dm9pZCB1cGRhdGVWYWx1ZUlmTmVlZGVkKElucHV0RWxlbWVudERhdGEmLCBJbnB1dEVsZW1lbnQq
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBiNGRmMDlkLi40MTM5ODRlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNTA1LDcgKzE1MDUsNyBAQCB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICB9CiAKICAg
ICBpZiAoZXZ0LT5pc0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkpCi0gICAgICAgIElucHV0RWxl
bWVudDo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQobV9kYXRhLCB0aGlzLCBkb2N1bWVu
dCgpLCBldnQpOworICAgICAgICBJbnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRl
ZEV2ZW50KG1fZGF0YSwgdGhpcywgdGhpcywgZG9jdW1lbnQoKSwgZXZ0KTsKIAogICAgIGlmIChp
c1RleHRGaWVsZCgpICYmIHJlbmRlcmVyKCkgJiYgKGV2dC0+aXNNb3VzZUV2ZW50KCkgfHwgZXZ0
LT5pc0RyYWdFdmVudCgpIHx8IGV2dC0+aXNXaGVlbEV2ZW50KCkgfHwgZXZ0LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZm9j
dXNFdmVudCkpCiAgICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHJlbmRlcmVy
KCkpLT5mb3J3YXJkRXZlbnQoZXZ0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTElucHV0
RWxlbWVudC5jcHAgYi9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGZlZWQ1
YTUuLmZmNDFhZjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAK
KysrIGIvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBA
IHZvaWQgV01MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAg
ICAgfQogCiAgICAgaWYgKGV2dC0+aXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpKQotICAgICAg
ICBJbnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KG1fZGF0YSwgdGhp
cywgZG9jdW1lbnQoKSwgZXZ0KTsKKyAgICAgICAgSW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudChtX2RhdGEsIHRoaXMsIHRoaXMsIGRvY3VtZW50KCksIGV2dCk7CiAK
ICAgICBpZiAocmVuZGVyZXIoKSAmJiAoZXZ0LT5pc01vdXNlRXZlbnQoKSB8fCBldnQtPmlzRHJh
Z0V2ZW50KCkgfHwgZXZ0LT5pc1doZWVsRXZlbnQoKSB8fCBldnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuYmx1ckV2ZW50IHx8IGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50
KSkKICAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUocmVuZGVyZXIoKSktPmZv
cndhcmRFdmVudChldnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38910</attachid>
            <date>2009-09-01 22:23:42 -0700</date>
            <delta_ts>2009-09-03 02:02:26 -0700</delta_ts>
            <desc>Proposed patch (rev.3)</desc>
            <filename>maxlength-ime-3.diff</filename>
            <type>text/plain</type>
            <size>11709</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MWI5MzhhLi4zYTU5YWI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDkt
MDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBtYXhMZW5ndGggYW5kIElN
RSBpbnB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1MjUzCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxl
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWlt
ZS1wcmVlZGl0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29t
cGxldGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
Zm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMDktMDgtMzEgIEJyaWFuIFdlaW5z
dGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5n
dGgtaW1lLWNvbXBsZXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhs
ZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg0MWE4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+VGhlcmUgd2FzIGEgYnVnIHRoYXQgdXNlcnMgY291bGQgaW5w
dXQgdGV4dCBsb25nZXIgdGhhbiBtYXhsZW5ndGggdmlhIElNRS4gIFRoaXMgdGVzdCBjb25maXJt
cyBpdCB3YXMgZml4ZWQuPC9wPgorCis8aW5wdXQgaWQ9ImkxIiBtYXhsZW5ndGg9Mj4KKzxwPlRo
ZSBmaWVsZCB2YWx1ZSBzaG91ZCBiZSAnYWInLjwvcD4KKzxzY3JpcHQ+Cit2YXIgaW5wdXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsKK2lucHV0LmZvY3VzKCk7Cit0ZXh0SW5wdXRD
b250cm9sbGVyLnNldE1hcmtlZFRleHQoJ2FiY2QnLCAwLCA0KTsKK3RleHRJbnB1dENvbnRyb2xs
ZXIuaW5zZXJ0VGV4dCgnYWJjZCcpOyAgLy8gV2ViS2l0IGNyYXNoZWQgYnkgdGhpcyB3aXRob3V0
IHRoZSBjaGFuZ2Ugb2YgYnVnIzI1MjUzLgorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtcHJl
ZWRpdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXBy
ZWVkaXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTlhZTQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgt
aW1lLXByZWVkaXQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj5UaGlzIHRlc3QgY2hlY2tzIHVzZXJzIGNhbiBpbnB1dCBwcmUtZWRpdCB0ZXh0IGxvbmdl
ciB0aGFuIG1heGxlbmd0aC48L3A+CisKKzxpbnB1dCBpZD0iaTEiIG1heGxlbmd0aD0yPgorPHA+
VGhlIGZpZWxkIHNob3VsZCBoYXZlIDQgc2VsZWN0ZWQgY2hhcmFjdGVycy48L3A+CisKKzxzY3Jp
cHQ+Cit2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsKK2lucHV0LmZv
Y3VzKCk7Cit0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQoJ2FiY2QnLCAwLCA0KTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmlu
ZGV4IDkxOWZhOWEuLjU2YWUzNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC01OTA0
LDMgKzU5MDQsNyBAQCBtZWRpYS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi5odG1sCiBmYXN0
L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sCiBmYXN0L2V2ZW50
cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLXVuY2FjaGVkLmh0bWwKIGZhc3QvZXZlbnRzL3Bh
Z2VzaG93LXBhZ2VoaWRlLmh0bWwKKworIyBObyBUZXh0SW5wdXRDb250cm9sbGVyCitmYXN0L2Zv
cm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKK2Zhc3QvZm9ybXMvaW5wdXQt
bWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0
aC1pbWUtY29tcGxldGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41NzY2YjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjAgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJW
aWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA2NzJ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0Nzk6ICJUaGVyZSB3
YXMgYSBidWcgdGhhdCB1c2VycyBjb3VsZCBpbnB1dCB0ZXh0IGxvbmdlciB0aGFuIG1heGxlbmd0
aCB2aWEgSU1FLiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDQ3OSwwKSB3aWR0aCAxOTM6ICJU
aGlzIHRlc3QgY29uZmlybXMgaXQgd2FzIGZpeGVkLiIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDM0KSBzaXplIDc4NHgyMworICAgICAgICBSZW5kZXJUZXh0Q29udHJvbCB7
SU5QVVR9IGF0ICgyLDIpIHNpemUgMTI4eDE5IFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgy
cHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDB4MAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDczKSBzaXplIDc4NHgxOAorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxODV4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxODU6ICJUaGUgZmllbGQgdmFsdWUgc2hvdWQgYmUgJ2Fi
Jy4iCitsYXllciBhdCAoMTMsNDcpIHNpemUgMTIyeDEzCisgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgzLDMpIHNpemUgMTIyeDEzCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUg
MTN4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDEzOiAiYWIiCitjYXJldDogcG9z
aXRpb24gMiBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAzIHtJ
TlBVVH0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMSB7SFRNTH0gb2YgZG9jdW1lbnQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW1heGxl
bmd0aC1pbWUtcHJlZWRpdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMGMwNTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1l
LXByZWVkaXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MjZ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA0MjY6ICJUaGlzIHRlc3QgY2hlY2tzIHVzZXJzIGNhbiBpbnB1dCBwcmUtZWRpdCB0
ZXh0IGxvbmdlciB0aGFuIG1heGxlbmd0aC4iCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3Vz
KSBhdCAoMCwzNCkgc2l6ZSA3ODR4MjMKKyAgICAgICAgUmVuZGVyVGV4dENvbnRyb2wge0lOUFVU
fSBhdCAoMiwyKSBzaXplIDEyOHgxOSBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGlu
c2V0ICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAw
eDAKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw3Mykgc2l6ZSA3ODR4MTgKKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjc0eDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMjc0OiAiVGhlIGZpZWxkIHNob3VsZCBoYXZlIDQgc2VsZWN0ZWQg
Y2hhcmFjdGVycy4iCitsYXllciBhdCAoMTMsNDcpIHNpemUgMTIyeDEzCisgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgzLDMpIHNpemUgMTIyeDEzCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgx
LDApIHNpemUgMjZ4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI2OiAiYWJjZCIK
K3NlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQg
MCB7RElWfSBvZiBjaGlsZCAzIHtJTlBVVH0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMSB7
SFRNTH0gb2YgZG9jdW1lbnQKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNCBvZiBjaGlsZCAw
IHsjdGV4dH0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAzIHtJTlBVVH0gb2YgY2hpbGQgMSB7
Qk9EWX0gb2YgY2hpbGQgMSB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKaW5kZXggNTRiZTczOC4uMTk2MjRlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAg
LTY1MCwzICs2NTAsNiBAQCBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi13aGl0ZWxp
c3RpbmctaXAtYWRkcmVzc2VzLmh0bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2lu
LXdoaXRlbGlzdGluZy1pcC1hZGRyZXNzZXMtd2l0aC1zdWJkb21haW5zLmh0bWwKIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLXdoaXRlbGlzdGluZy1zdWJkb21haW5zLmh0bWwKIAor
IyBObyBUZXh0SW5wdXRDb250cm9sbGVyCitmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUt
Y29tcGxldGVkLmh0bWwKK2Zhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0
bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZDAxMDIxZC4uMTBiMzQ4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wOS0wMSAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4IGEgcmVncmVzc2lvbiBidWcgdGhhdCBtYXhMZW5ndGggZG9l
c24ndCB3b3JrIGZvciBJTUUgaW5wdXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTI1MworCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2lucHV0
LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMv
aW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKKworICAgICAgICAqIGRvbS9JbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudCk6CisgICAgICAgICogZG9tL0lucHV0RWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiB3bWwvV01MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6CisKIDIwMDktMDgtMzEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rh
dm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5
IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCmluZGV4IGFlMGE2NTAuLmRiYjY1ZWYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20v
SW5wdXRFbGVtZW50LmNwcApAQCAtMjE4LDIwICsyMTgsMjcgQEAgc3RhdGljIGludCBudW1HcmFw
aGVtZUNsdXN0ZXJzKFN0cmluZ0ltcGwqIHMpCiAgICAgcmV0dXJuIG51bTsKIH0KIAotdm9pZCBJ
bnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KElucHV0RWxlbWVudERh
dGEmIGRhdGEsIElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBEb2N1bWVudCogZG9jdW1lbnQs
IEV2ZW50KiBldmVudCkKK3ZvaWQgSW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0
ZWRFdmVudChJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCwgRWxlbWVudCogZWxlbWVudCwgRG9jdW1lbnQqIGRvY3VtZW50LCBFdmVudCogZXZlbnQpCiB7
CiAgICAgQVNTRVJUKGV2ZW50LT5pc0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkpOwotCiAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIHRleHQgdG8gYmUgaW5zZXJ0ZWQgd2lsbCBub3QgdmlvbGF0
ZSB0aGUgbWF4TGVuZ3RoLgotICAgIGludCBvbGRMZW5ndGggPSBudW1HcmFwaGVtZUNsdXN0ZXJz
KGlucHV0RWxlbWVudC0+dmFsdWUoKS5pbXBsKCkpOwotICAgIEFTU0VSVChvbGRMZW5ndGggPD0g
ZGF0YS5tYXhMZW5ndGgoKSk7CisKKyAgICAvLyBXZSB1c2UgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjp0ZXh0KCkgaW5zdGVhZCBvZiBJbnB1dEVsZW1lbnQ6OnZhbHVlKCkKKyAgICAvLyBi
ZWNhdXNlIHRoZXkgY2FuIGJlIG1pc21hdGNoZWQgYnkgY29uc3RyYWluVmFsdWUoKSBpbgorICAg
IC8vIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c3VidHJlZUhhc0NoYW5nZWQoKSBpbiBh
IGNhc2Ugb2YgSU1FIGlucHV0LgorICAgIGludCBvbGRMZW5ndGggPSBudW1HcmFwaGVtZUNsdXN0
ZXJzKHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGVsZW1lbnQtPnJlbmRlcmVyKCkpLT50
ZXh0KCkuaW1wbCgpKTsKKworICAgIC8vIHNlbGVjdGlvbigpIG1heSBiZSBhIHByZS1lZGl0IHRl
eHQuCiAgICAgaW50IHNlbGVjdGlvbkxlbmd0aCA9IG51bUdyYXBoZW1lQ2x1c3RlcnMocGxhaW5U
ZXh0KGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSkuaW1wbCgpKTsKICAgICBBU1NFUlQob2xkTGVuZ3RoID49IHNlbGVj
dGlvbkxlbmd0aCk7Ci0gICAgaW50IG1heE5ld0xlbmd0aCA9IGRhdGEubWF4TGVuZ3RoKCkgLSAo
b2xkTGVuZ3RoIC0gc2VsZWN0aW9uTGVuZ3RoKTsKKworICAgIC8vIFNlbGVjdGVkIGNoYXJhY3Rl
cnMgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBuZXh0IHRleHQgZXZlbnQuCisgICAgaW50IGJhc2VM
ZW5ndGggPSBvbGRMZW5ndGggLSBzZWxlY3Rpb25MZW5ndGg7CisgICAgaW50IGFwcGVuZGFibGVM
ZW5ndGggPSBkYXRhLm1heExlbmd0aCgpIC0gYmFzZUxlbmd0aDsKIAogICAgIC8vIFRydW5jYXRl
IHRoZSBpbnNlcnRlZCB0ZXh0IHRvIGF2b2lkIHZpb2xhdGluZyB0aGUgbWF4TGVuZ3RoIGFuZCBv
dGhlciBjb25zdHJhaW50cy4KICAgICBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCogdGV4dEV2ZW50
ID0gc3RhdGljX2Nhc3Q8QmVmb3JlVGV4dEluc2VydGVkRXZlbnQqPihldmVudCk7Ci0gICAgdGV4
dEV2ZW50LT5zZXRUZXh0KGNvbnN0cmFpblZhbHVlKGlucHV0RWxlbWVudCwgdGV4dEV2ZW50LT50
ZXh0KCksIG1heE5ld0xlbmd0aCkpOworICAgIHRleHRFdmVudC0+c2V0VGV4dChjb25zdHJhaW5W
YWx1ZShpbnB1dEVsZW1lbnQsIHRleHRFdmVudC0+dGV4dCgpLCBhcHBlbmRhYmxlTGVuZ3RoKSk7
CiB9CiAKIHZvaWQgSW5wdXRFbGVtZW50OjpwYXJzZVNpemVBdHRyaWJ1dGUoSW5wdXRFbGVtZW50
RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgTWFwcGVkQXR0cmlidXRlKiBhdHRyaWJ1dGUp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL0lu
cHV0RWxlbWVudC5oCmluZGV4IDBiZDEwMmUuLmY2NjVhMmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL0lucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCkBAIC03
Myw3ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBhYm91dFRvVW5sb2FkKElu
cHV0RWxlbWVudCosIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZyb21SZW5k
ZXJlcihJbnB1dEVsZW1lbnREYXRhJiwgSW5wdXRFbGVtZW50KiwgRWxlbWVudCosIGNvbnN0IFN0
cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29uc3RyYWluVmFsdWUoY29uc3QgSW5wdXRFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlLCBpbnQgbWF4TGVuZ3RoKTsKLSAgICBz
dGF0aWMgdm9pZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChJbnB1dEVsZW1lbnREYXRh
JiwgSW5wdXRFbGVtZW50KiwgRG9jdW1lbnQqLCBFdmVudCopOworICAgIHN0YXRpYyB2b2lkIGhh
bmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KElucHV0RWxlbWVudERhdGEmLCBJbnB1dEVsZW1l
bnQqLCBFbGVtZW50KiwgRG9jdW1lbnQqLCBFdmVudCopOwogICAgIHN0YXRpYyB2b2lkIHBhcnNl
U2l6ZUF0dHJpYnV0ZShJbnB1dEVsZW1lbnREYXRhJiwgRWxlbWVudCosIE1hcHBlZEF0dHJpYnV0
ZSopOwogICAgIHN0YXRpYyB2b2lkIHBhcnNlTWF4TGVuZ3RoQXR0cmlidXRlKElucHV0RWxlbWVu
dERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50KiwgTWFwcGVkQXR0cmlidXRlKik7CiAgICAg
c3RhdGljIHZvaWQgdXBkYXRlVmFsdWVJZk5lZWRlZChJbnB1dEVsZW1lbnREYXRhJiwgSW5wdXRF
bGVtZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggYjRkZjA5ZC4uNDEzOTg0
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTUwNSw3ICsxNTA1LDcgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAgICAg
fQogCiAgICAgaWYgKGV2dC0+aXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpKQotICAgICAgICBJ
bnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KG1fZGF0YSwgdGhpcywg
ZG9jdW1lbnQoKSwgZXZ0KTsKKyAgICAgICAgSW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0
SW5zZXJ0ZWRFdmVudChtX2RhdGEsIHRoaXMsIHRoaXMsIGRvY3VtZW50KCksIGV2dCk7CiAKICAg
ICBpZiAoaXNUZXh0RmllbGQoKSAmJiByZW5kZXJlcigpICYmIChldnQtPmlzTW91c2VFdmVudCgp
IHx8IGV2dC0+aXNEcmFnRXZlbnQoKSB8fCBldnQtPmlzV2hlZWxFdmVudCgpIHx8IGV2dC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmZvY3VzRXZlbnQpKQogICAgICAgICB0b1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShy
ZW5kZXJlcigpKS0+Zm9yd2FyZEV2ZW50KGV2dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dtbC9X
TUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCBmZWVkNWE1Li5mZjQxYWY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1l
bnQuY3BwCisrKyBiL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAKQEAgLTI5NSw3ICsy
OTUsNyBAQCB2b2lkIFdNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZ0KQogICAgIH0KIAogICAgIGlmIChldnQtPmlzQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoKSkK
LSAgICAgICAgSW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChtX2Rh
dGEsIHRoaXMsIGRvY3VtZW50KCksIGV2dCk7CisgICAgICAgIElucHV0RWxlbWVudDo6aGFuZGxl
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQobV9kYXRhLCB0aGlzLCB0aGlzLCBkb2N1bWVudCgpLCBl
dnQpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgKGV2dC0+aXNNb3VzZUV2ZW50KCkgfHwgZXZ0
LT5pc0RyYWdFdmVudCgpIHx8IGV2dC0+aXNXaGVlbEV2ZW50KCkgfHwgZXZ0LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZm9j
dXNFdmVudCkpCiAgICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHJlbmRlcmVy
KCkpLT5mb3J3YXJkRXZlbnQoZXZ0KTsK
</data>
<flag name="review"
          id="19897"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38974</attachid>
            <date>2009-09-03 02:02:26 -0700</date>
            <delta_ts>2009-09-03 02:29:45 -0700</delta_ts>
            <desc>Proposed patch (rev.4)</desc>
            <filename>maxlength-ime-4.diff</filename>
            <type>text/plain</type>
            <size>11686</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MWI5MzhhLi41YmUzMjAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDkt
MDMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBtYXhMZW5ndGggYW5kIElN
RSBpbnB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1MjUzCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxl
dGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1tYXhs
ZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lu
cHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVk
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3Jlc291cmNlcy9pbnB1dC1tYXhsZW5n
dGgtaW1lLXByZWVkaXQuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDA5LTA4LTMxICBCcmlhbiBX
ZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbWF4
bGVuZ3RoLWltZS1jb21wbGV0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5N2U3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoZXJlIHdhcyBhIGJ1ZyB0aGF0IHVzZXJzIGNvdWxkIGlu
cHV0IHRleHQgbG9uZ2VyIHRoYW4gbWF4bGVuZ3RoIHZpYSBJTUUuIFRoaXMgdGVzdCBjb25maXJt
cyBpdCB3YXMgZml4ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRv
Y3VtZW50LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImFiIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmMxMWZiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5o
dG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxl
dGVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVk
aXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZGI3
ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW1heGxl
bmd0aC1pbWUtcHJlZWRpdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0
IGNoZWNrcyB1c2VycyBjYW4gaW5wdXQgcHJlLWVkaXQgdGV4dCBsb25nZXIgdGhhbiBtYXhsZW5n
dGguCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImFiY2QiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDNmODM2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKQEAgLTAsMCArMSwx
MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9yZXNvdXJjZXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDg2MmM3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvaW5wdXQtbWF4bGVuZ3Ro
LWltZS1jb21wbGV0ZWQuanMKQEAgLTAsMCArMSwxNCBAQAorZGVzY3JpcHRpb24oJ1RoZXJlIHdh
cyBhIGJ1ZyB0aGF0IHVzZXJzIGNvdWxkIGlucHV0IHRleHQgbG9uZ2VyIHRoYW4gbWF4bGVuZ3Ro
IHZpYSBJTUUuICBUaGlzIHRlc3QgY29uZmlybXMgaXQgd2FzIGZpeGVkLicpOworCit2YXIgaW5w
dXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworaW5wdXQubWF4TGVuZ3RoID0g
MjsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOworaW5wdXQuZm9jdXMoKTsKK3Rl
eHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnYWJjZCcsIDAsIDQpOwordGV4dElucHV0
Q29udHJvbGxlci5pbnNlcnRUZXh0KCdhYmNkJyk7ICAvLyBEZWJ1ZyBXZWJLaXQgY3Jhc2hlZCBi
eSB0aGlzIHdpdGhvdXQgdGhlIGNoYW5nZSBvZiBidWcjMjUyNTMuCisvLyBDaGVjayB0aGUgY3Vy
cmVudCB2YWx1ZSB3aXRob3V0IGlucHV0LnZhbHVlLgorLy8gSW4gUmVsZWFzZSBXZWJLaXQsIGlu
cHV0LnZhbHVlIHdhcyAnYWInIHRob3VnaCB0aGUgdXNlci12aXNpYmxlIHZhbHVlIHdhcyAnYWJj
ZCcuCitkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJyk7CitzaG91bGRCZSgnZG9jdW1l
bnQuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKScsICciYWIiJyk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNv
dXJjZXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9yZXNvdXJjZXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZjMyOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQu
anMKQEAgLTAsMCArMSwxMSBAQAorZGVzY3JpcHRpb24oJ1RoaXMgdGVzdCBjaGVja3MgdXNlcnMg
Y2FuIGlucHV0IHByZS1lZGl0IHRleHQgbG9uZ2VyIHRoYW4gbWF4bGVuZ3RoLicpOworCit2YXIg
aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpbnB1dCk7CitpbnB1dC5tYXhMZW5ndGggPSAyOworaW5wdXQuZm9jdXMoKTsK
K3RleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnYWJjZCcsIDAsIDQpOworLy8gVGhl
IHNlbGVjdGlvbiBzaG91bGQgaGF2ZSA0IGNoYXJhY3RlcnMgdGhvdWdoIG1heExlbmd0aCBpcyAy
Lgorc2hvdWxkQmUoJ2RvY3VtZW50LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCknLCAnImFiY2Qi
Jyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tp
cHBlZAppbmRleCA5MTlmYTlhLi41NmFlMzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApA
QCAtNTkwNCwzICs1OTA0LDcgQEAgbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24uaHRt
bAogZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQuaHRtbAogZmFz
dC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay11bmNhY2hlZC5odG1sCiBmYXN0L2V2
ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS5odG1sCisKKyMgTm8gVGV4dElucHV0Q29udHJvbGxlcgor
ZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCitmYXN0L2Zvcm1z
L2lucHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVk
CmluZGV4IDU0YmU3MzguLjE5NjI0ZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC02
NTAsMyArNjUwLDYgQEAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4td2hpdGVsaXN0
aW5nLWlwLWFkZHJlc3Nlcy5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi13
aGl0ZWxpc3RpbmctaXAtYWRkcmVzc2VzLXdpdGgtc3ViZG9tYWlucy5odG1sCiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L29yaWdpbi13aGl0ZWxpc3Rpbmctc3ViZG9tYWlucy5odG1sCiAKKyMg
Tm8gVGV4dElucHV0Q29udHJvbGxlcgorZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNv
bXBsZXRlZC5odG1sCitmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1s
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGQwMTAyMWQuLjEwYjM0ODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMDktMDEgIEtlbnQgVGFtdXJh
ICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCBhIHJlZ3Jlc3Npb24gYnVnIHRoYXQgbWF4TGVuZ3RoIGRvZXNu
J3Qgd29yayBmb3IgSU1FIGlucHV0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjUyNTMKKworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9pbnB1dC1t
YXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2lu
cHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1sCisKKyAgICAgICAgKiBkb20vSW5wdXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4
dEluc2VydGVkRXZlbnQpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICogd21sL1dNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIpOgorCiAyMDA5LTA4LTMxICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZv
Lm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQ
cm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcAppbmRleCBhZTBhNjUwLi5iMjljYjQ1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0lu
cHV0RWxlbWVudC5jcHAKQEAgLTIxOCwyMCArMjE4LDI3IEBAIHN0YXRpYyBpbnQgbnVtR3JhcGhl
bWVDbHVzdGVycyhTdHJpbmdJbXBsKiBzKQogICAgIHJldHVybiBudW07CiB9CiAKLXZvaWQgSW5w
dXRFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChJbnB1dEVsZW1lbnREYXRh
JiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRG9jdW1lbnQqIGRvY3VtZW50LCBF
dmVudCogZXZlbnQpCit2b2lkIElucHV0RWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVk
RXZlbnQoSW5wdXRFbGVtZW50RGF0YSYgZGF0YSwgSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQs
IEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiBldmVudCkKIHsKICAgICBBU1NFUlQoZXZlbnQtPmlz
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQoKSk7Ci0KICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUg
dGV4dCB0byBiZSBpbnNlcnRlZCB3aWxsIG5vdCB2aW9sYXRlIHRoZSBtYXhMZW5ndGguCi0gICAg
aW50IG9sZExlbmd0aCA9IG51bUdyYXBoZW1lQ2x1c3RlcnMoaW5wdXRFbGVtZW50LT52YWx1ZSgp
LmltcGwoKSk7Ci0gICAgQVNTRVJUKG9sZExlbmd0aCA8PSBkYXRhLm1heExlbmd0aCgpKTsKLSAg
ICBpbnQgc2VsZWN0aW9uTGVuZ3RoID0gbnVtR3JhcGhlbWVDbHVzdGVycyhwbGFpblRleHQoZG9j
dW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKS5pbXBsKCkpOworCisgICAgLy8gV2UgdXNlIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6dGV4dCgpIGluc3RlYWQgb2YgSW5wdXRFbGVtZW50Ojp2YWx1ZSgpCisgICAgLy8g
YmVjYXVzZSB0aGV5IGNhbiBiZSBtaXNtYXRjaGVkIGJ5IGNvbnN0cmFpblZhbHVlKCkgaW4KKyAg
ICAvLyBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnN1YnRyZWVIYXNDaGFuZ2VkKCkgaW4g
YSBjYXNlIG9mIElNRSBpbnB1dC4KKyAgICBpbnQgb2xkTGVuZ3RoID0gbnVtR3JhcGhlbWVDbHVz
dGVycyh0b1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVtZW50LT5yZW5kZXJlcigpKS0+
dGV4dCgpLmltcGwoKSk7CisKKyAgICAvLyBzZWxlY3Rpb24oKSBtYXkgYmUgYSBwcmUtZWRpdCB0
ZXh0LgorICAgIGludCBzZWxlY3Rpb25MZW5ndGggPSBudW1HcmFwaGVtZUNsdXN0ZXJzKHBsYWlu
VGV4dChlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
KCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSkuaW1wbCgpKTsKICAgICBBU1NFUlQob2xkTGVu
Z3RoID49IHNlbGVjdGlvbkxlbmd0aCk7Ci0gICAgaW50IG1heE5ld0xlbmd0aCA9IGRhdGEubWF4
TGVuZ3RoKCkgLSAob2xkTGVuZ3RoIC0gc2VsZWN0aW9uTGVuZ3RoKTsKKworICAgIC8vIFNlbGVj
dGVkIGNoYXJhY3RlcnMgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBuZXh0IHRleHQgZXZlbnQuCisg
ICAgaW50IGJhc2VMZW5ndGggPSBvbGRMZW5ndGggLSBzZWxlY3Rpb25MZW5ndGg7CisgICAgaW50
IGFwcGVuZGFibGVMZW5ndGggPSBkYXRhLm1heExlbmd0aCgpIC0gYmFzZUxlbmd0aDsKIAogICAg
IC8vIFRydW5jYXRlIHRoZSBpbnNlcnRlZCB0ZXh0IHRvIGF2b2lkIHZpb2xhdGluZyB0aGUgbWF4
TGVuZ3RoIGFuZCBvdGhlciBjb25zdHJhaW50cy4KICAgICBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dCogdGV4dEV2ZW50ID0gc3RhdGljX2Nhc3Q8QmVmb3JlVGV4dEluc2VydGVkRXZlbnQqPihldmVu
dCk7Ci0gICAgdGV4dEV2ZW50LT5zZXRUZXh0KGNvbnN0cmFpblZhbHVlKGlucHV0RWxlbWVudCwg
dGV4dEV2ZW50LT50ZXh0KCksIG1heE5ld0xlbmd0aCkpOworICAgIHRleHRFdmVudC0+c2V0VGV4
dChjb25zdHJhaW5WYWx1ZShpbnB1dEVsZW1lbnQsIHRleHRFdmVudC0+dGV4dCgpLCBhcHBlbmRh
YmxlTGVuZ3RoKSk7CiB9CiAKIHZvaWQgSW5wdXRFbGVtZW50OjpwYXJzZVNpemVBdHRyaWJ1dGUo
SW5wdXRFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgTWFwcGVkQXR0cmlidXRl
KiBhdHRyaWJ1dGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBiL1dl
YkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCmluZGV4IDBiZDEwMmUuLmNkNWY0ZTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0lucHV0RWxl
bWVudC5oCkBAIC03Myw3ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBhYm91
dFRvVW5sb2FkKElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRW
YWx1ZUZyb21SZW5kZXJlcihJbnB1dEVsZW1lbnREYXRhJiwgSW5wdXRFbGVtZW50KiwgRWxlbWVu
dCosIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29uc3RyYWluVmFsdWUoY29u
c3QgSW5wdXRFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlLCBpbnQgbWF4TGVu
Z3RoKTsKLSAgICBzdGF0aWMgdm9pZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChJbnB1
dEVsZW1lbnREYXRhJiwgSW5wdXRFbGVtZW50KiwgRG9jdW1lbnQqLCBFdmVudCopOworICAgIHN0
YXRpYyB2b2lkIGhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KElucHV0RWxlbWVudERhdGEm
LCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50KiwgRXZlbnQqKTsKICAgICBzdGF0aWMgdm9pZCBwYXJz
ZVNpemVBdHRyaWJ1dGUoSW5wdXRFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBNYXBwZWRBdHRyaWJ1
dGUqKTsKICAgICBzdGF0aWMgdm9pZCBwYXJzZU1heExlbmd0aEF0dHJpYnV0ZShJbnB1dEVsZW1l
bnREYXRhJiwgSW5wdXRFbGVtZW50KiwgRWxlbWVudCosIE1hcHBlZEF0dHJpYnV0ZSopOwogICAg
IHN0YXRpYyB2b2lkIHVwZGF0ZVZhbHVlSWZOZWVkZWQoSW5wdXRFbGVtZW50RGF0YSYsIElucHV0
RWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGI0ZGYwOWQuLmY3NGY3
ODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE1MDUsNyArMTUwNSw3IEBAIHZv
aWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQogICAg
IH0KIAogICAgIGlmIChldnQtPmlzQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoKSkKLSAgICAgICAg
SW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChtX2RhdGEsIHRoaXMs
IGRvY3VtZW50KCksIGV2dCk7CisgICAgICAgIElucHV0RWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4
dEluc2VydGVkRXZlbnQobV9kYXRhLCB0aGlzLCB0aGlzLCBldnQpOwogCiAgICAgaWYgKGlzVGV4
dEZpZWxkKCkgJiYgcmVuZGVyZXIoKSAmJiAoZXZ0LT5pc01vdXNlRXZlbnQoKSB8fCBldnQtPmlz
RHJhZ0V2ZW50KCkgfHwgZXZ0LT5pc1doZWVsRXZlbnQoKSB8fCBldnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuYmx1ckV2ZW50IHx8IGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5mb2N1c0V2
ZW50KSkKICAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUocmVuZGVyZXIoKSkt
PmZvcndhcmRFdmVudChldnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZmVlZDVhNS4u
MmM1YTk5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9p
ZCBXTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICB9
CiAKICAgICBpZiAoZXZ0LT5pc0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkpCi0gICAgICAgIElu
cHV0RWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQobV9kYXRhLCB0aGlzLCBk
b2N1bWVudCgpLCBldnQpOworICAgICAgICBJbnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJ
bnNlcnRlZEV2ZW50KG1fZGF0YSwgdGhpcywgdGhpcywgZXZ0KTsKIAogICAgIGlmIChyZW5kZXJl
cigpICYmIChldnQtPmlzTW91c2VFdmVudCgpIHx8IGV2dC0+aXNEcmFnRXZlbnQoKSB8fCBldnQt
PmlzV2hlZWxFdmVudCgpIHx8IGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQg
fHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQpKQogICAgICAgICB0b1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZShyZW5kZXJlcigpKS0+Zm9yd2FyZEV2ZW50KGV2dCk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>