<?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>10871</bug_id>
          
          <creation_ts>2006-09-15 09:22:21 -0700</creation_ts>
          <short_desc>REGRESSION: IME key events different in nightly</short_desc>
          <delta_ts>2007-03-07 15:07:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://gmail.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug, InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Davidson">mdavids</reporter>
          <assigned_to name="Adele Peterson">adele</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>kevino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>55597</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Davidson">mdavids</who>
    <bug_when>2006-09-15 09:22:21 -0700</bug_when>
    <thetext>When typing into a textarea using an IME, current Safari gives only keyup events (not keydown or keypress) when the IME is active. Nightly webkit builds give normal key events for all keys pressed.

This is a problem for Gmail. In the compose textarea, for example, it performs an autocomplete when the enter key is pressed. In current Safari it can detect when the enter key is pressed in order to commit an IME character because it doesn&apos;t get a keydown. In the nightly build, it&apos;s impossible to detect this enter from the following enter, which should trigger a the autocomplete.

To see this, set the input method to &quot;Katakana&quot; and create a contact in Gmail with the first character of the name &quot;&amp;#12459;&quot; (obtained by pressing k-a-enter). With Safari on 10.4, if you type this character in the compose box, the enter key will bring up the autocomplete filtered by the first character as expected. In nightly webkit, however, the first enter key will actually do the autocompletion, which is the problem.

I have set up a page at http://bantha.org/~mdavids/ime.html to demonstrate the problem. When you type k-a-enter-enter with current Safari on 10.4, these are the key events you get:

down keycode: 75 which: 75 length: 0
press keycode: 107 which: 107 length: 0
up keycode: 75 which: 75 length: 0
up keycode: 65 which: 65 length: 0
up keycode: 13 which: 13 length: 1    // first enter, commits the character
down keycode: 13 which: 13 length: 1  // second enter, commits the autocomplete
press keycode: 13 which: 13 length: 1
up keycode: 13 which: 13 length: 1


With nightly webkit, this is what you get:

down keycode: 75 which: 75 length: 0
press keycode: 107 which: 107 length: 0
up keycode: 75 which: 75 length: 1
down keycode: 65 which: 65 length: 1
press keycode: 97 which: 97 length: 1
up keycode: 65 which: 65 length: 1
down keycode: 13 which: 13 length: 1     // first enter
press keycode: 13 which: 13 length: 1
up keycode: 13 which: 13 length: 1
down keycode: 13 which: 13 length: 1     // second enter
press keycode: 13 which: 13 length: 1
up keycode: 13 which: 13 length: 1

There is no way to distinguish the first and second enter, which is the problem.

The behavior doesn&apos;t have to revert to current Safari&apos;s behavior, but Gmail needs a way to distinguish enter in IME from regular enter. Any difference in the key events can be exploited, but there has to be some difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55671</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-09-16 10:46:05 -0700</bug_when>
    <thetext>When verifying this, I saw that the behavior was different even before pressing Enter - in stock Safari, a suggestion appeared right after I typed k-a.

See also: bug 10010 (not all IMs use Enter as a special key to confirm the input area, some pass it forward).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55686</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Davidson">mdavids</who>
    <bug_when>2006-09-16 18:51:06 -0700</bug_when>
    <thetext>Indeed, stock Safari isn&apos;t perfect, but at least it has information that can be used to fix the behavior. Current trunk WebKit can&apos;t be worked around (that I can see).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46665</commentid>
    <comment_count>3</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2006-11-06 21:38:14 -0800</bug_when>
    <thetext>radar 4823129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41355</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-12-18 12:07:04 -0800</bug_when>
    <thetext>I looked into this some more, and I start thinking that we should try to match Firefox behavior, with keyup/keydown being always sent, and keypress only being sent if IME didn&apos;t handle the event. Ideally, we should also send DOM3 textInput event (which would let you support Character Palette, Ink etc.)

What do you think about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41341</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Davidson">mdavids</who>
    <bug_when>2006-12-18 12:40:48 -0800</bug_when>
    <thetext>That sounds good to me. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35793</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-01-11 09:27:23 -0800</bug_when>
    <thetext>See also: bug 10010.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35798</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-01-11 09:56:27 -0800</bug_when>
    <thetext>To clarify on the model a bit more, and to stir further discussion:
1) keydown/keyup are the lowest level keyboard events which map directly to physical keypresses.
2) keypress is sent when an input method doesn&apos;t handle the event (i.e. when the IM has returned a &quot;not handled&quot; status, or a plain keyboard layout is being used). This is also when form submission etc takes place. Canceling the event cancels default processing.
3) I&apos;m not really sure when textInput is supposed to be sent. I guess it&apos;s only meaningful for final text, i.e., typing into inline hole shouldn&apos;t dispatch this event, but confirming it should do so. Typing with a plain keyboard or entering text via Character Palette should probably dispatch it, as well. Pasting from clipboard probably shouldn&apos;t.

Looks like canceling textInput cannot prevent the text from being inserted - after all, DOM already has the inline hole content, correct? Canceling keypress prevents typing with a plain keyboard and default actions.

See also: &lt;http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onkeypress.asp&gt; (same for up and down). Seems to be quite different from what Firefox does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24186</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-02-11 13:20:42 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; 2) keypress is sent when an input method doesn&apos;t handle the event (i.e. when
&gt; the IM has returned a &quot;not handled&quot; status, or a plain keyboard layout is being
&gt; used). This is also when form submission etc takes place. Canceling the event
&gt; cancels default processing.

This is quite difficult to implement given the way we work with AppKit. In AppKit, a single interpretKeyEvents: method both sends events to input methods and dispatches commands. So if we want to interpret the key event before sending a keypress, so we can tell if the input method handles it or not, then we will also be dispatching commands like cut, motion with arrow keys, and the delete keys. That means there won&apos;t be a keypress for delete or arrow key presses, and I think there should be. This is going to be tricky to get right.

&gt; 3) I&apos;m not really sure when textInput is supposed to be sent. I guess it&apos;s only
&gt; meaningful for final text, i.e., typing into inline hole shouldn&apos;t dispatch
&gt; this event, but confirming it should do so. Typing with a plain keyboard or
&gt; entering text via Character Palette should probably dispatch it, as well.
&gt; Pasting from clipboard probably shouldn&apos;t.

That&apos;s right. My patch attached to bug 10010 implements the rule you mention here.

The DOM Level 3 specification says that pasting should dispatch it if the pasted text is plain text, but I think that&apos;s a bad idea. Whether text is styled or not should not affect which events are dispatched!

&gt; Looks like canceling textInput cannot prevent the text from being inserted -
&gt; after all, DOM already has the inline hole content, correct? Canceling keypress
&gt; prevents typing with a plain keyboard and default actions.

In my opinion preventing default behavior on a textInput event should cause the content from the inline hole to be discarded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24103</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-02-11 21:44:49 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; That means there won&apos;t be a keypress for delete or arrow key
&gt; presses, and I think there should be. This is going to be tricky to get right.

In Firefox, delete and arrow keypresses are also sent only if they are not handled by the IM. I guess this is a side effect of Carbon not treating those as commands?

But the behavior still sounds desirable to me.

&gt; In my opinion preventing default behavior on a textInput event should cause the
&gt; content from the inline hole to be discarded.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24074</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-02-12 10:03:51 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; That means there won&apos;t be a keypress for delete or arrow key
&gt; &gt; presses, and I think there should be. This is going to be tricky to get right.
&gt; 
&gt; In Firefox, delete and arrow keypresses are also sent only if they are not
&gt; handled by the IM. I guess this is a side effect of Carbon not treating those
&gt; as commands?
&gt; 
&gt; But the behavior still sounds desirable to me.

Yes, I think it&apos;s probably required.

And yes, the AppKit issues are AppKit-specific and presumably do not arise in the Carbon equivalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20342</commentid>
    <comment_count>11</comment_count>
      <attachid>13494</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-06 14:18:36 -0800</bug_when>
    <thetext>Created attachment 13494
initial patch

This is my first cut at a fix for this bug and for bug #12677.

I tried to implement Alexey&apos;s suggestions, but I may be missing something about how this works.  So hopefully a few of you will try this out, and we can work out the kinks.

Basically, this patch will only dispatch a keypress event if the input method has not handled the event.

Here are the results from Michael&apos;s testcase, after typing &quot;k-a-enter-enter&quot; using Katakana:
(http://bantha.org/~mdavids/ime.html)

down keycode: 75 which: 75 length: 0
up keycode: 75 which: 75 length: 1
// &apos;k&apos;

down keycode: 65 which: 65 length: 1
up keycode: 65 which: 65 length: 1
// &apos;a&apos;

down keycode: 13 which: 13 length: 1
press keycode: 13 which: 13 length: 1
up keycode: 13 which: 13 length: 1
// &apos;enter&apos; that confirms the marked text

down keycode: 13 which: 13 length: 1
press keycode: 13 which: 13 length: 1
// &apos;enter that submits the form

There are a few differences from our old behavior that I&apos;d like to discuss.

1) Now we will fire a keydown *and* a keyup for marked text that is set by the input method.  I think this follows Alexey&apos;s proposal that keydown/keyup should correspond to the physical keyboard events.

2)  For the input methods that I tested with, Katakana and 2-set Korean, it appears that instead of calling &quot;unmarkText&quot; for that first enter key, they call &quot;insertText&quot; with the actual committed character.  This means that we must dispatch a keypress event.  The keyCode is still 13 since that comes from the physical key pressed, not the text that&apos;s inserted.  So this may be hard to detect from Gmail...

3) The last &apos;enter&apos; that submits the form doesn&apos;t get a keyup.  This isn&apos;t a new effect from my patch, but I thought I should mention it here to clear up any confusion.  This happens because the keypress causes a blur to occur.  Since the input is no longer focused, the keyup event gets dispatched to the body instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20343</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-06 14:50:23 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; down keycode: 13 which: 13 length: 1
&gt; press keycode: 13 which: 13 length: 1
&gt; up keycode: 13 which: 13 length: 1
&gt; // &apos;enter&apos; that confirms the marked text

This seems clearly wrong. For the Katakana input method a return does not result in form submission and thus should not result in a keypress event.

That&apos;s different for the Korean input method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20327</commentid>
    <comment_count>13</comment_count>
      <attachid>13497</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-06 15:17:06 -0800</bug_when>
    <thetext>Created attachment 13497
new patch

new patch.  Darin and I talked about how if input methods call insert text, then we need to detect that, and let the insert text happen immediately.

With this new change,  here&apos;s the output from the testcase:

down keycode: 75 which: 75 length: 0
up keycode: 75 which: 75 length: 1
// &apos;k&apos;
down keycode: 65 which: 65 length: 1
up keycode: 65 which: 65 length: 1
// &apos;a&apos;
down keycode: 13 which: 13 length: 1
up keycode: 13 which: 13 length: 1
// &apos;enter&apos; that confirms the text
down keycode: 13 which: 13 length: 1
press keycode: 13 which: 13 length: 1
// &apos;enter&apos; that submits the form

this seems like the right results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20324</commentid>
    <comment_count>14</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-06 15:19:57 -0800</bug_when>
    <thetext>ha! I just found a bug with this while editing in Bugzilla.  If you hold down the delete key, triggering an autorepeat event, instead of deleting, the browser will go back in history a few times.

Oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20302</commentid>
    <comment_count>15</comment_count>
      <attachid>13499</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-06 17:10:26 -0800</bug_when>
    <thetext>Created attachment 13499
patch that doesn&apos;t break autorepeat

ok- this patch fixes the autorepeat problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20226</commentid>
    <comment_count>16</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-06 22:55:22 -0800</bug_when>
    <thetext>It would be nice to be able to test this with DumpRenderTree.  Not quite sure how that would work though.  The machine running the tests would have to have input methods installed, and we&apos;d have to have a way to switch to an input method through javascript, using the layoutTestController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20165</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-03-07 02:33:55 -0800</bug_when>
    <thetext>Could this be tested with a custom NSInputManager (see bug 5305)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20148</commentid>
    <comment_count>18</comment_count>
      <attachid>13499</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-07 06:19:43 -0800</bug_when>
    <thetext>Comment on attachment 13499
patch that doesn&apos;t break autorepeat

I would like to see handleKeyPress divided into two separate calls rather than a single one with a boolean. In my mind, one of the calls is &quot;allow input methods to handle key&quot;; because of AppKit that one has a side effect of determining what the action is, but that&apos;s not the purpose of the call, rather an unfortunate side effect. Another call is &quot;do the usual key press handling&quot;. I don&apos;t know what names to use but I think it&apos;s better to not use one call for both.

The second call could be the one to use the &quot;saved action&quot;.

The name keypressSelectorString is Macintosh-specific. If it&apos;s really going to be Mac-specific, then maybe it should be in #if PLATFORM(MAC) and be a SEL. On the other hand, if it&apos;s going to be platform-independent then it should be called &quot;command&quot; rather than selector. I don&apos;t think the names &quot;saved action&quot; and &quot;keypressSelectorString&quot; and &quot;keypressText&quot; are named in a way that makes it clear they&apos;re connected; if the keypressSelectorString and keypressText were instead a struct named SavedAction or something along those lines it would be clearer. I think terminology could be important here for people understanding this, especially people on platforms that don&apos;t have the strange quirk Mac does where we have to do both things! We could treat this need to cache the command on the keyboard event as a Mac-specific thing -- that might make things easier for people on other platforms who don&apos;t need this although it would make KeyboardEvent.h uglier.

This breaks non-Mac platforms, right, because of the new parameter to the EditorClient function?

+        event-&gt;setKeypressSelectorString(String((char*)aSelector));

The above code is incorrect. You need to either use NSStringFromSelector or sel_getName. I think the above code might even fail on Leopard, although it will work on Tiger.

+        // The only way we know if its from an input method is to check hasMarkedText.  There might be a better way to do this.

I think &quot;there might be a better way&quot; is confusing, even though it&apos;s true. I think the comment should say, &quot;We assume it&apos;s from the input method if we have marked text.&quot; and an on another line &quot;FIXME: In theory that could be wrong for some input methods, so we should look for another way to determine if the call is from the input method.&quot;

The substance of the code looks great.

I&apos;d like to see some new layout tests -- is there no way to activate an input method from a layout test? We should consider how to make this part of regression tests.

review- specifically because of the &quot;cast selector to char*&quot; issue. If you resolve that it&apos;s OK to land without further review, but please consider my other comments too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19979</commentid>
    <comment_count>19</comment_count>
      <attachid>13499</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-07 15:06:51 -0800</bug_when>
    <thetext>Comment on attachment 13499
patch that doesn&apos;t break autorepeat

Darin reviewed a newer version of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19980</commentid>
    <comment_count>20</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-07 15:07:13 -0800</bug_when>
    <thetext>Committed revision 20030.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13494</attachid>
            <date>2007-03-06 14:18:36 -0800</date>
            <delta_ts>2007-03-06 15:17:06 -0800</delta_ts>
            <desc>initial patch</desc>
            <filename>patch_3_6-2.txt</filename>
            <type>text/plain</type>
            <size>11178</size>
            <attacher name="Adele Peterson">adele</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTk4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMDctMDMtMDYgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
YkNvcmUgcGFydCBvZiBmaXggZm9yOgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDg3MQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjY3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgyMzEyOT4gUkVHUkVT
U0lPTjogSU1FIGtleSBldmVudHMgZGlmZmVyZW50IGluIG5pZ2h0bHkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ3NTk1NjM+IFJFR1JFU1NJT046IFJldHVybiBrZXkgaXMgYWx3YXlzIHNlbnQg
d2hlbiB5b3UgY29uZmlybSBhIGNsYXVzZSBpbiBrb3RvZXJpCisKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5jcHA6IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2
ZW50SGFuZGxlcik6IENhbGwgaGFuZGxlS2V5UHJlc3Mgc28gdGhhdCBpbnB1dCBtZXRob2RzIGhh
dmUgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBldmVudC4gIAorICAgICAgICAgIElmIHRoZSBpbnB1
dCBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQgKGJ5IG1hcmtpbmcgb3IgdW5tYXJraW5nIHRleHQp
LCB0aGVuICB3ZSBkb24ndCBuZWVkIHRvIHNlbmQgdGhlIGtleXByZXNzIGV2ZW50LgorICAgICAg
ICAgIElmIGFuIGlucHV0IG1ldGhvZCBkb2Vzbid0IGhhbmRsZSB0aGUgZXZlbnQsIHRoZW4gd2Un
bGwgc2F2ZSB0aGUgZGF0YSB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgYWN0aW9uIChs
aWtlIHdoYXQgdGV4dCB0byBpbnNlcnQgb3Igd2hhdCBzZWxlY3RvciB0byB1c2UpIAorICAgICAg
ICAgIHdoZW4gd2UgZGlzcGF0Y2ggdGhlIGtleXByZXNzIGV2ZW50LgorCisgICAgICAgICogZG9t
L0tleWJvYXJkRXZlbnQuaDogQWRkZWQgZ2V0dGVycyBhbmQgc2V0dGVycyBmb3Iga2V5cHJlc3Mg
YWN0aW9uIGluZm9ybWF0aW9uIHNvIHdlIGNhbiBzdG9yZSBpdCBkdXJpbmcgdGhlIGtleWRvd24s
IGFuZCB1c2UgaXQgZHVyaW5nIHRoZSBrZXlwcmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OktleWJv
YXJkRXZlbnQ6OmtleXByZXNzU2VsZWN0b3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudDo6c2V0S2V5cHJlc3NTZWxlY3RvclN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlib2FyZEV2ZW50OjprZXlwcmVzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9h
cmRFdmVudDo6c2V0S2V5cHJlc3NUZXh0KToKKworCiAyMDA3LTAzLTA2ICBLZXZpbiBNY0N1bGxv
dWdoICA8a21jY3VsbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
LgpJbmRleDogV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuaAkocmV2aXNpb24gMTk5NjUpCisrKyBXZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDEyICs2NywyMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRXZlbnQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBpbnQgd2hpY2goKSBjb25zdDsKKyAgICAgICAgCisg
ICAgICAgIFN0cmluZyBrZXlwcmVzc1NlbGVjdG9yU3RyaW5nKCkgeyByZXR1cm4gbV9rZXlwcmVz
c1NlbGVjdG9yU3RyaW5nOyB9CisgICAgICAgIHZvaWQgc2V0S2V5cHJlc3NTZWxlY3RvclN0cmlu
Zyhjb25zdCBTdHJpbmcmIHNlbCkgeyBtX2tleXByZXNzU2VsZWN0b3JTdHJpbmcgPSBzZWw7IH0K
KworICAgICAgICBTdHJpbmcga2V5cHJlc3NUZXh0KCkgeyByZXR1cm4gbV9rZXlwcmVzc1RleHQ7
IH0KKyAgICAgICAgdm9pZCBzZXRLZXlwcmVzc1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1f
a2V5cHJlc3NUZXh0ID0gdGV4dDsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KiBtX2tleUV2ZW50OwogICAgICAgICBTdHJpbmcgbV9rZXlJZGVudGlmaWVy
OwogICAgICAgICB1bnNpZ25lZCBtX2tleUxvY2F0aW9uOwogICAgICAgICBib29sIG1fYWx0R3Jh
cGhLZXkgOiAxOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIG1fa2V5cHJlc3NTZWxlY3RvclN0
cmluZzsKKyAgICAgICAgU3RyaW5nIG1fa2V5cHJlc3NUZXh0OwogICAgIH07CiAKICAgICBLZXli
b2FyZEV2ZW50KiBmaW5kS2V5Ym9hcmRFdmVudChFdmVudCopOwpJbmRleDogV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAJKHJldmlzaW9uIDE5OTY1KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyODIsMTAgKzEyODIsMTggQEAgdm9pZCBFdmVudEhhbmRsZXI6
OmRlZmF1bHRLZXlib2FyZEV2ZW50SAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBldmVudC0+Y3RybEtleSgpLCBldmVudC0+YWx0S2V5KCksIGV2ZW50LT5zaGlm
dEtleSgpLCBldmVudC0+bWV0YUtleSgpLCBldmVudC0+YWx0R3JhcGhLZXkoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBrZXlwcmVzcy0+c2V0VW5kZXJseWluZ0V2ZW50KGV2ZW50KTsg
ICAKLSAgICAgICAgCi0gICAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgbmV3IGtleXByZXNzIGV2
ZW50Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAgbm9kZS0+ZGlz
cGF0Y2hFdmVudChrZXlwcmVzcywgZWMsIHRydWUpOworICAgICAgICAgICAga2V5cHJlc3MtPnNl
dFRhcmdldChub2RlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2FsbCBoYW5kbGVL
ZXlQcmVzcyBzbyB0aGF0IGlucHV0IG1ldGhvZHMgaGF2ZSBhIGNoYW5jZSB0byBoYW5kbGUgdGhl
IGV2ZW50LiAgSWYgdGhhdCBoYXBwZW5zLCB0aGVuCisgICAgICAgICAgICAvLyB3ZSBkb24ndCBu
ZWVkIHRvIHNlbmQgdGhlIGtleXByZXNzIGV2ZW50LiAgSWYgYW4gaW5wdXQgbWV0aG9kIGRvZXNu
J3QgaGFuZGxlIHRoZSBldmVudCwgdGhlbiB3ZSdsbAorICAgICAgICAgICAgLy8gc2F2ZSB0aGUg
ZGF0YSB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgYWN0aW9uIChsaWtlIGluc2VydGlu
ZyB0ZXh0KSB3aGVuIHdlIGRpc3BhdGNoIHRoZSBrZXlwcmVzcyBldmVudC4KKyAgICAgICAgICAg
IG1fZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVLZXlQcmVzcyhrZXlwcmVzcy5nZXQoKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmICgha2V5cHJlc3MtPmRlZmF1bHRIYW5kbGVkKCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgbmV3IGtleXByZXNzIGV2ZW50CisgICAg
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgICAgICAgICBub2RlLT5kaXNw
YXRjaEV2ZW50KGtleXByZXNzLCBlYywgdHJ1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoa2V5cHJlc3MtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIH0KSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTk5ODYpCisrKyBXZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDctMDMtMDYg
IEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdCBwYXJ0IG9mIGZpeCBmb3I6CisgICAg
ICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODcxCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjc3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODIzMTI5PiBSRUdSRVNTSU9OOiBJTUUga2V5IGV2ZW50cyBkaWZmZXJl
bnQgaW4gbmlnaHRseQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc1OTU2Mz4gUkVHUkVTU0lP
TjogUmV0dXJuIGtleSBpcyBhbHdheXMgc2VudCB3aGVuIHlvdSBjb25maXJtIGEgY2xhdXNlIGlu
IGtvdG9lcmkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbTog
KFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5UHJlc3MpOiBDYWxsIF9pbnRlcmNlcHRFZGl0aW5n
S2V5RXZlbnQgd2l0aCB0aGUgc2F2ZUFjdGlvbiBhcmd1bWVudCBiYXNlZCBvbiB3aGV0aGVyIG9y
IG5vdCB0aGUgS2V5Ym9hcmRFdmVudCBoYXMgc2F2ZWQga2V5cHJlc3MgaW5mb3JtYXRpb24uCisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X2ludGVyY2VwdEVkaXRpbmdLZXlFdmVudDpzYXZlQWN0aW9uOl0pOiBBZGRlZCBzYXZlQWN0aW9u
IGFyZ3VtZW50LgorICAgICAgICAgIFdoZW4gc2F2ZUFjdGlvbiBpcyB0cnVlLCB3ZSBjYWxsIGlu
dGVycHJldEtleUV2ZW50cyBhbmQgaW4gZG9Db21tYW5kQnlTZWxlY3RvciBhbmQgaW5zZXJ0VGV4
dCwgd2UganVzdCBzYXZlIHRoZSBpbmZvcm1hdGlvbiB3aXRob3V0IHBlcmZvcm1pbmcgYW55IGFj
dGlvbi4KKyAgICAgICAgICBXaGVuIHNhdmVBY3Rpb24gaXMgZmFsc2UsIHdlIHVzZWQgdGhlIHNh
dmVkIGluZm9ybWF0aW9uIGFuZCBjYWxsIGRvQ29tbWFuZEJ5U2VsZWN0b3IgYW5kIGluc2VydFRl
eHQgZGlyZWN0bHkuCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRvQ29tbWFuZEJ5U2VsZWN0b3I6
XSk6IElmIHRoZSBXZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgc2F2ZUFj
dGlvbiBmaWVsZCBpcyBzZXQsIHRoZW4KKyAgICAgICAgICBqdXN0IHNhdmUgdGhlIHNlbGVjdG9y
IGluZm9ybWF0aW9uIGluIHRoZSBLZXlib2FyZEV2ZW50LCBhbmQgZG9uJ3QgcGVyZm9ybSB0aGUg
YWN0aW9uLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpbnNlcnRUZXh0Ol0pOiBkaXR0by4KKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaDogQWRkZWQgc2F2ZUFjdGlvbiBh
cmd1bWVudCB0byBfaW50ZXJjZXB0RWRpdGluZ0tleUV2ZW50OnNhdmVBY3Rpb24uCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDogZGl0dG8uCisKIDIwMDctMDMtMDYgIEpvaG4g
U3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4KSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNp
b24gMTk5NjUpCisrKyBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MTIsNyArNDEyLDggQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6Omhh
bmRsZUtleVByZXNzKEtleQogewogICAgIEZyYW1lKiBmcmFtZSA9IGV2ZW50LT50YXJnZXQoKS0+
dG9Ob2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgV2ViSFRNTFZpZXcgKndlYkhUTUxW
aWV3ID0gW1traXQoZnJhbWUpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKLSAgICBpZiAoW3dl
YkhUTUxWaWV3IF9pbnRlcmNlcHRFZGl0aW5nS2V5RXZlbnQ6ZXZlbnRdKQorICAgIEJPT0wgc2F2
ZSA9IGV2ZW50LT5rZXlwcmVzc1NlbGVjdG9yU3RyaW5nKCkuaXNFbXB0eSgpICYmIGV2ZW50LT5r
ZXlwcmVzc1RleHQoKS5pc0VtcHR5KCk7CisgICAgaWYgKFt3ZWJIVE1MVmlldyBfaW50ZXJjZXB0
RWRpdGluZ0tleUV2ZW50OmV2ZW50IHNhdmVBY3Rpb246c2F2ZV0pCiAgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNp
b24gMTk5NjUpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjg3LDYgKzI4Nyw3IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqbGFzdEhpdFZpZXc7CiBz
dHJ1Y3QgV2ViSFRNTFZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKICAgICBLZXli
b2FyZEV2ZW50KiBldmVudDsKICAgICBCT09MIGV2ZW50V2FzSGFuZGxlZDsKKyAgICBCT09MIHNh
dmVBY3Rpb247CiB9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViSFRNTFZpZXdQcml2YXRlCkBAIC01
MjQ2LDE4ICs1MjQ3LDI5IEBAIHN0YXRpYyBDR1BvaW50IGNvcmVHcmFwaGljc1NjcmVlblBvaW50
Rm8KICAgICBbc2VsZiBfdXBkYXRlTW91c2VvdmVyV2l0aEZha2VFdmVudF07CiB9CiAKLS0gKEJP
T0wpX2ludGVyY2VwdEVkaXRpbmdLZXlFdmVudDooS2V5Ym9hcmRFdmVudCAqKWV2ZW50CistIChC
T09MKV9pbnRlcmNlcHRFZGl0aW5nS2V5RXZlbnQ6KEtleWJvYXJkRXZlbnQgKilldmVudCBzYXZl
QWN0aW9uOihCT09MKXNhdmUKIHsKICAgICAvLyBBc2sgQXBwS2l0IHRvIHByb2Nlc3MgdGhlIGtl
eSBldmVudCAtLSBpdCB3aWxsIGNhbGwgYmFjayB3aXRoIGVpdGhlciBpbnNlcnRUZXh0IG9yIGRv
Q29tbWFuZEJ5U2VsZWN0b3IuCiAgICAgV2ViSFRNTFZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5ldmVudFdhc0hhbmRsZWQgPSBmYWxz
ZTsKKyAgICBwYXJhbWV0ZXJzLnNhdmVBY3Rpb24gPSBzYXZlOworICAgICAgICAKICAgICBpZiAo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBwbGF0Zm9ybUV2ZW50ID0gZXZlbnQtPmtleUV2
ZW50KCkpIHsKICAgICAgICAgTlNFdmVudCAqbWFjRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5tYWNF
dmVudCgpOwogICAgICAgICBpZiAoW21hY0V2ZW50IHR5cGVdID09IE5TS2V5RG93biAmJiBbX3By
aXZhdGUtPmNvbXBDb250cm9sbGVyIGZpbHRlcktleURvd246bWFjRXZlbnRdKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHBhcmFtZXRlcnMuZXZlbnQgPSBldmVudDsKICAgICAg
ICAgX3ByaXZhdGUtPmludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgPSAmcGFyYW1ldGVyczsK
LSAgICAgICAgW3NlbGYgaW50ZXJwcmV0S2V5RXZlbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVj
dDptYWNFdmVudF1dOworICAgICAgICBpZiAocGFyYW1ldGVycy5zYXZlQWN0aW9uKQorICAgICAg
ICAgICAgW3NlbGYgaW50ZXJwcmV0S2V5RXZlbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpt
YWNFdmVudF1dOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBzZWwgPSBldmVu
dC0+a2V5cHJlc3NTZWxlY3RvclN0cmluZygpOworICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBl
dmVudC0+a2V5cHJlc3NUZXh0KCk7CisgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIFtzZWxmIGluc2VydFRleHQ6dGV4dF07CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgW3NlbGYgZG9Db21tYW5kQnlTZWxlY3RvcjpOU1NlbGVjdG9yRnJv
bVN0cmluZyhzZWwpXTsKKyAgICAgICAgfQogICAgICAgICBfcHJpdmF0ZS0+aW50ZXJwcmV0S2V5
RXZlbnRzUGFyYW1ldGVycyA9IDA7CiAgICAgfQogICAgIHJldHVybiBwYXJhbWV0ZXJzLmV2ZW50
V2FzSGFuZGxlZDsKQEAgLTU0NzYsMTEgKzU0ODgsMTcgQEAgc3RhdGljIENHUG9pbnQgY29yZUdy
YXBoaWNzU2NyZWVuUG9pbnRGbwogICAgIC8vIFVzZSBwb2ludGVyIHRvIGdldCBwYXJhbWV0ZXJz
IHBhc3NlZCB0byB1cyBieSB0aGUgY2FsbGVyIG9mIGludGVycHJldEtleUV2ZW50cy4KICAgICBX
ZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMqIHBhcmFtZXRlcnMgPSBfcHJp
dmF0ZS0+aW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVyczsKICAgICBfcHJpdmF0ZS0+aW50ZXJw
cmV0S2V5RXZlbnRzUGFyYW1ldGVycyA9IDA7Ci0KKyAgICBLZXlib2FyZEV2ZW50KiBldmVudCA9
IHBhcmFtZXRlcnMgPyBwYXJhbWV0ZXJzLT5ldmVudCA6IDA7CisgICAgCisgICAgYm9vbCBzYXZl
QWN0aW9uID0gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMtPnNhdmVBY3Rpb24gOiBmYWxzZTsKKyAg
ICBpZiAoZXZlbnQgJiYgc2F2ZUFjdGlvbikgeworICAgICAgICBldmVudC0+c2V0S2V5cHJlc3NT
ZWxlY3RvclN0cmluZyhTdHJpbmcoKGNoYXIqKWFTZWxlY3RvcikpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKG5vb3A6KSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgS2V5Ym9hcmRFdmVudCogZXZlbnQgPSBwYXJhbWV0ZXJzID8g
cGFyYW1ldGVycy0+ZXZlbnQgOiAwOwogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0gdHJ1ZTsK
IAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbc2VsZiBfd2ViVmlld107CkBAIC01NTE2LDkgKzU1
MzQsMTUgQEAgc3RhdGljIENHUG9pbnQgY29yZUdyYXBoaWNzU2NyZWVuUG9pbnRGbwogCiAgICAg
Ym9vbCBldmVudEhhbmRsZWQgPSBmYWxzZTsKICAgICBpZiAoW3RleHQgbGVuZ3RoXSkgewotICAg
ICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICAgICAgS2V5
Ym9hcmRFdmVudCogZXZlbnQgPSBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy0+ZXZlbnQgOiAwOwog
ICAgICAgICBTdHJpbmcgZXZlbnRUZXh0ID0gdGV4dDsKKyAgICAgICAgYm9vbCBzYXZlQWN0aW9u
ID0gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMtPnNhdmVBY3Rpb24gOiBmYWxzZTsKKyAgICAgICAg
aWYgKHNhdmVBY3Rpb24pIHsKKyAgICAgICAgICAgIGV2ZW50LT5zZXRLZXlwcmVzc1RleHQoZXZl
bnRUZXh0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgICAgIGV2ZW50
VGV4dC5yZXBsYWNlKE5TQmFja1RhYkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0ZXIpOyAvLyBzYW1l
IHRoaW5nIGlzIGRvbmUgaW4gS2V5RXZlbnRNYWMubW0gaW4gV2ViQ29yZQogICAgICAgICBldmVu
dEhhbmRsZWQgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxl
VGV4dElucHV0RXZlbnQoZXZlbnRUZXh0LCBldmVudCk7CiAgICAgfQpJbmRleDogV2ViS2l0L1dl
YlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3
L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMTk5NjUpCisrKyBXZWJLaXQvV2ViVmll
dy9XZWJIVE1MVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBA
QCBzdHJ1Y3QgV2ViSFRNTFZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhCiAtICh2b2lkKWNsb3Nl
SWZOb3RDdXJyZW50VmlldzsKIC0gKHZvaWQpX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51Oihp
ZClzZW5kZXI7CiAtICh2b2lkKV9ob3ZlckZlZWRiYWNrU3VzcGVuZGVkQ2hhbmdlZDsKLS0gKEJP
T0wpX2ludGVyY2VwdEVkaXRpbmdLZXlFdmVudDooV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCAqKWV2
ZW50OworLSAoQk9PTClfaW50ZXJjZXB0RWRpdGluZ0tleUV2ZW50OihXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50ICopZXZlbnQgc2F2ZUFjdGlvbjooQk9PTClzYXZlOwogLSAoRE9NRG9jdW1lbnRGcmFn
bWVudCopX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFz
dGVib2FyZDsKIC0gKE5TRXZlbnQgKilfbW91c2VEb3duRXZlbnQ7CiAjaWZuZGVmIEJVSUxESU5H
X09OX1RJR0VSCkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMTk5NjUp
CisrKyBXZWJLaXQvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCB0eXBlZGVmIFdlYkNvcmU6OlBhZ2UgV2ViQ29yZVBhZ2U7CiBAY2xhc3Mg
V2ViQmFzZVBsdWdpblBhY2thZ2U7CiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld0VkaXRp
bmdFeHRyYXMpCi0tIChCT09MKV9pbnRlcmNlcHRFZGl0aW5nS2V5RXZlbnQ6KFdlYkNvcmVLZXli
b2FyZEV2ZW50ICopZXZlbnQ7CistIChCT09MKV9pbnRlcmNlcHRFZGl0aW5nS2V5RXZlbnQ6KFdl
YkNvcmVLZXlib2FyZEV2ZW50ICopZXZlbnQgc2F2ZUFjdGlvbjooQk9PTClzYXZlOwogLSAoQk9P
TClfc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTooRE9NUmFuZ2UgKiljdXJyZW50UmFuZ2Ug
dG9ET01SYW5nZTooRE9NUmFuZ2UgKilwcm9wb3NlZFJhbmdlIGFmZmluaXR5OihOU1NlbGVjdGlv
bkFmZmluaXR5KXNlbGVjdGlvbkFmZmluaXR5IHN0aWxsU2VsZWN0aW5nOihCT09MKWZsYWc7CiBA
ZW5kCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13497</attachid>
            <date>2007-03-06 15:17:06 -0800</date>
            <delta_ts>2007-03-06 15:17:06 -0800</delta_ts>
            <desc>new patch</desc>
            <filename>patch_3_6-3.txt</filename>
            <type>text/plain</type>
            <size>12119</size>
            <attacher name="Adele Peterson">adele</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTk4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMDctMDMtMDYgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
YkNvcmUgcGFydCBvZiBmaXggZm9yOgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDg3MQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjY3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgyMzEyOT4gUkVHUkVT
U0lPTjogSU1FIGtleSBldmVudHMgZGlmZmVyZW50IGluIG5pZ2h0bHkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ3NTk1NjM+IFJFR1JFU1NJT046IFJldHVybiBrZXkgaXMgYWx3YXlzIHNlbnQg
d2hlbiB5b3UgY29uZmlybSBhIGNsYXVzZSBpbiBrb3RvZXJpCisKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5jcHA6IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2
ZW50SGFuZGxlcik6IENhbGwgaGFuZGxlS2V5UHJlc3Mgc28gdGhhdCBpbnB1dCBtZXRob2RzIGhh
dmUgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBldmVudC4gIAorICAgICAgICAgIElmIHRoZSBpbnB1
dCBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQgKGJ5IG1hcmtpbmcgb3IgdW5tYXJraW5nIHRleHQp
LCB0aGVuICB3ZSBkb24ndCBuZWVkIHRvIHNlbmQgdGhlIGtleXByZXNzIGV2ZW50LgorICAgICAg
ICAgIElmIGFuIGlucHV0IG1ldGhvZCBkb2Vzbid0IGhhbmRsZSB0aGUgZXZlbnQsIHRoZW4gd2Un
bGwgc2F2ZSB0aGUgZGF0YSB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgYWN0aW9uIChs
aWtlIHdoYXQgdGV4dCB0byBpbnNlcnQgb3Igd2hhdCBzZWxlY3RvciB0byB1c2UpIAorICAgICAg
ICAgIHdoZW4gd2UgZGlzcGF0Y2ggdGhlIGtleXByZXNzIGV2ZW50LgorCisgICAgICAgICogZG9t
L0tleWJvYXJkRXZlbnQuaDogQWRkZWQgZ2V0dGVycyBhbmQgc2V0dGVycyBmb3Iga2V5cHJlc3Mg
YWN0aW9uIGluZm9ybWF0aW9uIHNvIHdlIGNhbiBzdG9yZSBpdCBkdXJpbmcgdGhlIGtleWRvd24s
IGFuZCB1c2UgaXQgZHVyaW5nIHRoZSBrZXlwcmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OktleWJv
YXJkRXZlbnQ6OmtleXByZXNzU2VsZWN0b3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudDo6c2V0S2V5cHJlc3NTZWxlY3RvclN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlib2FyZEV2ZW50OjprZXlwcmVzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9h
cmRFdmVudDo6c2V0S2V5cHJlc3NUZXh0KToKKworCiAyMDA3LTAzLTA2ICBLZXZpbiBNY0N1bGxv
dWdoICA8a21jY3VsbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
LgpJbmRleDogV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuaAkocmV2aXNpb24gMTk5NjUpCisrKyBXZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDEyICs2NywyMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRXZlbnQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBpbnQgd2hpY2goKSBjb25zdDsKKyAgICAgICAgCisg
ICAgICAgIFN0cmluZyBrZXlwcmVzc1NlbGVjdG9yU3RyaW5nKCkgeyByZXR1cm4gbV9rZXlwcmVz
c1NlbGVjdG9yU3RyaW5nOyB9CisgICAgICAgIHZvaWQgc2V0S2V5cHJlc3NTZWxlY3RvclN0cmlu
Zyhjb25zdCBTdHJpbmcmIHNlbCkgeyBtX2tleXByZXNzU2VsZWN0b3JTdHJpbmcgPSBzZWw7IH0K
KworICAgICAgICBTdHJpbmcga2V5cHJlc3NUZXh0KCkgeyByZXR1cm4gbV9rZXlwcmVzc1RleHQ7
IH0KKyAgICAgICAgdm9pZCBzZXRLZXlwcmVzc1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1f
a2V5cHJlc3NUZXh0ID0gdGV4dDsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KiBtX2tleUV2ZW50OwogICAgICAgICBTdHJpbmcgbV9rZXlJZGVudGlmaWVy
OwogICAgICAgICB1bnNpZ25lZCBtX2tleUxvY2F0aW9uOwogICAgICAgICBib29sIG1fYWx0R3Jh
cGhLZXkgOiAxOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIG1fa2V5cHJlc3NTZWxlY3RvclN0
cmluZzsKKyAgICAgICAgU3RyaW5nIG1fa2V5cHJlc3NUZXh0OwogICAgIH07CiAKICAgICBLZXli
b2FyZEV2ZW50KiBmaW5kS2V5Ym9hcmRFdmVudChFdmVudCopOwpJbmRleDogV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAJKHJldmlzaW9uIDE5OTY1KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyODIsMTAgKzEyODIsMTggQEAgdm9pZCBFdmVudEhhbmRsZXI6
OmRlZmF1bHRLZXlib2FyZEV2ZW50SAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBldmVudC0+Y3RybEtleSgpLCBldmVudC0+YWx0S2V5KCksIGV2ZW50LT5zaGlm
dEtleSgpLCBldmVudC0+bWV0YUtleSgpLCBldmVudC0+YWx0R3JhcGhLZXkoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBrZXlwcmVzcy0+c2V0VW5kZXJseWluZ0V2ZW50KGV2ZW50KTsg
ICAKLSAgICAgICAgCi0gICAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgbmV3IGtleXByZXNzIGV2
ZW50Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAgbm9kZS0+ZGlz
cGF0Y2hFdmVudChrZXlwcmVzcywgZWMsIHRydWUpOworICAgICAgICAgICAga2V5cHJlc3MtPnNl
dFRhcmdldChub2RlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2FsbCBoYW5kbGVL
ZXlQcmVzcyBzbyB0aGF0IGlucHV0IG1ldGhvZHMgaGF2ZSBhIGNoYW5jZSB0byBoYW5kbGUgdGhl
IGV2ZW50LiAgSWYgdGhhdCBoYXBwZW5zLCB0aGVuCisgICAgICAgICAgICAvLyB3ZSBkb24ndCBu
ZWVkIHRvIHNlbmQgdGhlIGtleXByZXNzIGV2ZW50LiAgSWYgYW4gaW5wdXQgbWV0aG9kIGRvZXNu
J3QgaGFuZGxlIHRoZSBldmVudCwgdGhlbiB3ZSdsbAorICAgICAgICAgICAgLy8gc2F2ZSB0aGUg
ZGF0YSB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgYWN0aW9uIChsaWtlIGluc2VydGlu
ZyB0ZXh0KSB3aGVuIHdlIGRpc3BhdGNoIHRoZSBrZXlwcmVzcyBldmVudC4KKyAgICAgICAgICAg
IG1fZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVLZXlQcmVzcyhrZXlwcmVzcy5nZXQoKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmICgha2V5cHJlc3MtPmRlZmF1bHRIYW5kbGVkKCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgbmV3IGtleXByZXNzIGV2ZW50CisgICAg
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgICAgICAgICBub2RlLT5kaXNw
YXRjaEV2ZW50KGtleXByZXNzLCBlYywgdHJ1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoa2V5cHJlc3MtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIH0KSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTk5ODYpCisrKyBXZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDctMDMtMDYg
IEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdCBwYXJ0IG9mIGZpeCBmb3I6CisgICAg
ICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODcxCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjc3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODIzMTI5PiBSRUdSRVNTSU9OOiBJTUUga2V5IGV2ZW50cyBkaWZmZXJl
bnQgaW4gbmlnaHRseQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc1OTU2Mz4gUkVHUkVTU0lP
TjogUmV0dXJuIGtleSBpcyBhbHdheXMgc2VudCB3aGVuIHlvdSBjb25maXJtIGEgY2xhdXNlIGlu
IGtvdG9lcmkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbTog
KFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5UHJlc3MpOiBDYWxsIF9pbnRlcmNlcHRFZGl0aW5n
S2V5RXZlbnQgd2l0aCB0aGUgc2hvdWxkU2F2ZUFjdGlvbiBhcmd1bWVudCBiYXNlZCBvbiB3aGV0
aGVyIG9yIG5vdCB0aGUgS2V5Ym9hcmRFdmVudCBoYXMgc2F2ZWQga2V5cHJlc3MgaW5mb3JtYXRp
b24uCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgX2ludGVyY2VwdEVkaXRpbmdLZXlFdmVudDogc2hvdWxkU2F2ZUFjdGlvbjpdKTogQWRk
ZWQgc2hvdWxkU2F2ZUFjdGlvbiBhcmd1bWVudC4KKyAgICAgICAgICBXaGVuIHNob3VsZFNhdmVB
Y3Rpb24gaXMgdHJ1ZSwgd2UgY2FsbCBpbnRlcnByZXRLZXlFdmVudHMgYW5kIGluIGRvQ29tbWFu
ZEJ5U2VsZWN0b3IgYW5kIGluc2VydFRleHQsIHdlIGp1c3Qgc2F2ZSB0aGUgaW5mb3JtYXRpb24g
d2l0aG91dCBwZXJmb3JtaW5nIGFueSBhY3Rpb24uCisgICAgICAgICAgV2hlbiBzaG91bGRTYXZl
QWN0aW9uIGlzIGZhbHNlLCB3ZSB1c2VkIHRoZSBzYXZlZCBpbmZvcm1hdGlvbiBhbmQgY2FsbCBk
b0NvbW1hbmRCeVNlbGVjdG9yIGFuZCBpbnNlcnRUZXh0IGRpcmVjdGx5LgorICAgICAgICAoLVtX
ZWJIVE1MVmlldyBkb0NvbW1hbmRCeVNlbGVjdG9yOl0pOiBJZiB0aGUgV2ViSFRNTFZpZXdJbnRl
cnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHNob3VsZFNhdmVBY3Rpb24gZmllbGQgaXMgc2V0LCB0
aGVuCisgICAgICAgICAganVzdCBzYXZlIHRoZSBzZWxlY3RvciBpbmZvcm1hdGlvbiBpbiB0aGUg
S2V5Ym9hcmRFdmVudCwgYW5kIGRvbid0IHBlcmZvcm0gdGhlIGFjdGlvbi4KKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKTogZGl0dG8uIAorICAgICAgICAgIGluc2VydFRleHQg
Y2FuIGJlIGNhbGxlZCBmcm9tIGFuIGlucHV0IG1ldGhvZCBvciBmcm9tIG5vcm1hbCBrZXkgZXZl
bnQgcHJvY2Vzc2luZworICAgICAgICAgIElmIGl0cyBmcm9tIGFuIGlucHV0IG1ldGhvZCwgdGhl
biB3ZSBzaG91bGQgZ28gYWhlYWQgYW5kIGluc2VydCB0aGUgdGV4dCBub3cuICAKKyAgICAgICAg
ICBUaGUgb25seSB3YXkgd2Uga25vdyBpZiBpdHMgZnJvbSBhbiBpbnB1dCBtZXRob2QgaXMgdG8g
Y2hlY2sgaGFzTWFya2VkVGV4dC4gIFRoZXJlIG1pZ2h0IGJlIGEgYmV0dGVyIHdheSB0byBkbyB0
aGlzLgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oOiBBZGRlZCBzaG91
bGRTYXZlQWN0aW9uIGFyZ3VtZW50IHRvIF9pbnRlcmNlcHRFZGl0aW5nS2V5RXZlbnQ6c2F2ZUFj
dGlvbi4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOiBkaXR0by4KKwogMjAw
Ny0wMy0wNiAgSm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbgpJbmRleDogV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCShyZXZpc2lvbiAxOTk2NSkKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxMiw3ICs0MTIsOCBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6aGFuZGxlS2V5UHJlc3MoS2V5CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZXZl
bnQtPnRhcmdldCgpLT50b05vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBXZWJIVE1M
VmlldyAqd2ViSFRNTFZpZXcgPSBbW2tpdChmcmFtZSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXdd
OwotICAgIGlmIChbd2ViSFRNTFZpZXcgX2ludGVyY2VwdEVkaXRpbmdLZXlFdmVudDpldmVudF0p
CisgICAgQk9PTCBzaG91bGRTYXZlID0gZXZlbnQtPmtleXByZXNzU2VsZWN0b3JTdHJpbmcoKS5p
c0VtcHR5KCkgJiYgZXZlbnQtPmtleXByZXNzVGV4dCgpLmlzRW1wdHkoKTsKKyAgICBpZiAoW3dl
YkhUTUxWaWV3IF9pbnRlcmNlcHRFZGl0aW5nS2V5RXZlbnQ6ZXZlbnQgc2hvdWxkU2F2ZUFjdGlv
bjpzaG91bGRTYXZlXSkKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAK
SW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAxOTk2NSkKKysrIFdlYktpdC9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNiArMjg3LDcgQEAgc3Rh
dGljIFdlYkhUTUxWaWV3ICpsYXN0SGl0VmlldzsKIHN0cnVjdCBXZWJIVE1MVmlld0ludGVycHJl
dEtleUV2ZW50c1BhcmFtZXRlcnMgewogICAgIEtleWJvYXJkRXZlbnQqIGV2ZW50OwogICAgIEJP
T0wgZXZlbnRXYXNIYW5kbGVkOworICAgIEJPT0wgc2hvdWxkU2F2ZUFjdGlvbjsKIH07CiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJIVE1MVmlld1ByaXZhdGUKQEAgLTUyNDYsMTggKzUyNDcsMjkgQEAg
c3RhdGljIENHUG9pbnQgY29yZUdyYXBoaWNzU2NyZWVuUG9pbnRGbwogICAgIFtzZWxmIF91cGRh
dGVNb3VzZW92ZXJXaXRoRmFrZUV2ZW50XTsKIH0KIAotLSAoQk9PTClfaW50ZXJjZXB0RWRpdGlu
Z0tleUV2ZW50OihLZXlib2FyZEV2ZW50ICopZXZlbnQKKy0gKEJPT0wpX2ludGVyY2VwdEVkaXRp
bmdLZXlFdmVudDooS2V5Ym9hcmRFdmVudCAqKWV2ZW50IHNob3VsZFNhdmVBY3Rpb246KEJPT0wp
c2F2ZQogewogICAgIC8vIEFzayBBcHBLaXQgdG8gcHJvY2VzcyB0aGUga2V5IGV2ZW50IC0tIGl0
IHdpbGwgY2FsbCBiYWNrIHdpdGggZWl0aGVyIGluc2VydFRleHQgb3IgZG9Db21tYW5kQnlTZWxl
Y3Rvci4KICAgICBXZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgcGFyYW1l
dGVyczsKICAgICBwYXJhbWV0ZXJzLmV2ZW50V2FzSGFuZGxlZCA9IGZhbHNlOworICAgIHBhcmFt
ZXRlcnMuc2hvdWxkU2F2ZUFjdGlvbiA9IHNhdmU7CisgICAgICAgIAogICAgIGlmIChjb25zdCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQqIHBsYXRmb3JtRXZlbnQgPSBldmVudC0+a2V5RXZlbnQoKSkg
ewogICAgICAgICBOU0V2ZW50ICptYWNFdmVudCA9IHBsYXRmb3JtRXZlbnQtPm1hY0V2ZW50KCk7
CiAgICAgICAgIGlmIChbbWFjRXZlbnQgdHlwZV0gPT0gTlNLZXlEb3duICYmIFtfcHJpdmF0ZS0+
Y29tcENvbnRyb2xsZXIgZmlsdGVyS2V5RG93bjptYWNFdmVudF0pCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgcGFyYW1ldGVycy5ldmVudCA9IGV2ZW50OwogICAgICAgICBfcHJp
dmF0ZS0+aW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyA9ICZwYXJhbWV0ZXJzOwotICAgICAg
ICBbc2VsZiBpbnRlcnByZXRLZXlFdmVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Om1hY0V2
ZW50XV07CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFNhdmVBY3Rpb24pCisgICAgICAg
ICAgICBbc2VsZiBpbnRlcnByZXRLZXlFdmVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Om1h
Y0V2ZW50XV07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIHNlbCA9IGV2ZW50
LT5rZXlwcmVzc1NlbGVjdG9yU3RyaW5nKCk7CisgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IGV2
ZW50LT5rZXlwcmVzc1RleHQoKTsKKyAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgW3NlbGYgaW5zZXJ0VGV4dDp0ZXh0XTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBbc2VsZiBkb0NvbW1hbmRCeVNlbGVjdG9yOk5TU2VsZWN0b3JGcm9t
U3RyaW5nKHNlbCldOworICAgICAgICB9CiAgICAgICAgIF9wcml2YXRlLT5pbnRlcnByZXRLZXlF
dmVudHNQYXJhbWV0ZXJzID0gMDsKICAgICB9CiAgICAgcmV0dXJuIHBhcmFtZXRlcnMuZXZlbnRX
YXNIYW5kbGVkOwpAQCAtNTQ3NiwxMSArNTQ4OCwxNyBAQCBzdGF0aWMgQ0dQb2ludCBjb3JlR3Jh
cGhpY3NTY3JlZW5Qb2ludEZvCiAgICAgLy8gVXNlIHBvaW50ZXIgdG8gZ2V0IHBhcmFtZXRlcnMg
cGFzc2VkIHRvIHVzIGJ5IHRoZSBjYWxsZXIgb2YgaW50ZXJwcmV0S2V5RXZlbnRzLgogICAgIFdl
YkhUTUxWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyogcGFyYW1ldGVycyA9IF9wcml2
YXRlLT5pbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzOwogICAgIF9wcml2YXRlLT5pbnRlcnBy
ZXRLZXlFdmVudHNQYXJhbWV0ZXJzID0gMDsKLQorICAgIEtleWJvYXJkRXZlbnQqIGV2ZW50ID0g
cGFyYW1ldGVycyA/IHBhcmFtZXRlcnMtPmV2ZW50IDogMDsKKyAgICAKKyAgICBib29sIHNob3Vs
ZFNhdmVBY3Rpb24gPSBwYXJhbWV0ZXJzICYmIHBhcmFtZXRlcnMtPnNob3VsZFNhdmVBY3Rpb247
CisgICAgaWYgKGV2ZW50ICYmIHNob3VsZFNhdmVBY3Rpb24pIHsKKyAgICAgICAgZXZlbnQtPnNl
dEtleXByZXNzU2VsZWN0b3JTdHJpbmcoU3RyaW5nKChjaGFyKilhU2VsZWN0b3IpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcihu
b29wOikpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtleWJvYXJkRXZlbnQqIGV2ZW50ID0gcGFy
YW1ldGVycyA/IHBhcmFtZXRlcnMtPmV2ZW50IDogMDsKICAgICBib29sIGV2ZW50V2FzSGFuZGxl
ZCA9IHRydWU7CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3NlbGYgX3dlYlZpZXddOwpAQCAt
NTUxNiw4ICs1NTM0LDIwIEBAIHN0YXRpYyBDR1BvaW50IGNvcmVHcmFwaGljc1NjcmVlblBvaW50
Rm8KIAogICAgIGJvb2wgZXZlbnRIYW5kbGVkID0gZmFsc2U7CiAgICAgaWYgKFt0ZXh0IGxlbmd0
aF0pIHsKLSAgICAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAg
ICAgICAgIEtleWJvYXJkRXZlbnQqIGV2ZW50ID0gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMtPmV2
ZW50IDogMDsKKworICAgICAgICAvLyBpbnNlcnRUZXh0IGNhbiBiZSBjYWxsZWQgZnJvbSBhbiBp
bnB1dCBtZXRob2Qgb3IgZnJvbSBub3JtYWwga2V5IGV2ZW50IHByb2Nlc3NpbmcKKyAgICAgICAg
Ly8gSWYgaXRzIGZyb20gYW4gaW5wdXQgbWV0aG9kLCB0aGVuIHdlIHNob3VsZCBnbyBhaGVhZCBh
bmQgaW5zZXJ0IHRoZSB0ZXh0IG5vdy4gIAorICAgICAgICAvLyBUaGUgb25seSB3YXkgd2Uga25v
dyBpZiBpdHMgZnJvbSBhbiBpbnB1dCBtZXRob2QgaXMgdG8gY2hlY2sgaGFzTWFya2VkVGV4dC4g
IFRoZXJlIG1pZ2h0IGJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLgorICAgICAgICAvLyBJZiBp
dHMgZnJvbSBub3JtYWwga2V5IGV2ZW50IHByb2Nlc3NpbmcsIHdlIG1heSBuZWVkIHRvIHNhdmUg
dGhlIGFjdGlvbiB0byBwZXJmb3JtIGl0IGxhdGVyLgorICAgICAgICBib29sIHNob3VsZFNhdmVB
Y3Rpb24gPSBwYXJhbWV0ZXJzICYmIHBhcmFtZXRlcnMtPnNob3VsZFNhdmVBY3Rpb247CisgICAg
ICAgIGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBbc2VsZiBoYXNNYXJrZWRUZXh0XTsKKyAgICAg
ICAgaWYgKGV2ZW50ICYmIHNob3VsZFNhdmVBY3Rpb24gJiYgIWlzRnJvbUlucHV0TWV0aG9kKSB7
CisgICAgICAgICAgICBldmVudC0+c2V0S2V5cHJlc3NUZXh0KHRleHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKTsKICAgICAgICAgU3RyaW5nIGV2ZW50VGV4dCA9IHRleHQ7CiAg
ICAgICAgIGV2ZW50VGV4dC5yZXBsYWNlKE5TQmFja1RhYkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0
ZXIpOyAvLyBzYW1lIHRoaW5nIGlzIGRvbmUgaW4gS2V5RXZlbnRNYWMubW0gaW4gV2ViQ29yZQog
ICAgICAgICBldmVudEhhbmRsZWQgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGFuZGxlVGV4dElucHV0RXZlbnQoZXZlbnRUZXh0LCBldmVudCk7CkluZGV4OiBXZWJL
aXQvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dl
YlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiAxOTk2NSkKKysrIFdlYktpdC9X
ZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzEx
MCw3IEBAIHN0cnVjdCBXZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50c1BhcmEKIC0gKHZvaWQp
Y2xvc2VJZk5vdEN1cnJlbnRWaWV3OwogLSAodm9pZClfbG9va1VwSW5EaWN0aW9uYXJ5RnJvbU1l
bnU6KGlkKXNlbmRlcjsKIC0gKHZvaWQpX2hvdmVyRmVlZGJhY2tTdXNwZW5kZWRDaGFuZ2VkOwot
LSAoQk9PTClfaW50ZXJjZXB0RWRpdGluZ0tleUV2ZW50OihXZWJDb3JlOjpLZXlib2FyZEV2ZW50
ICopZXZlbnQ7CistIChCT09MKV9pbnRlcmNlcHRFZGl0aW5nS2V5RXZlbnQ6KFdlYkNvcmU6Oktl
eWJvYXJkRXZlbnQgKilldmVudCBzaG91bGRTYXZlQWN0aW9uOihCT09MKXNob3VsZFNhdmU7CiAt
IChET01Eb2N1bWVudEZyYWdtZW50KilfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOihO
U1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkOwogLSAoTlNFdmVudCAqKV9tb3VzZURvd25FdmVudDsK
ICNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5o
CShyZXZpc2lvbiAxOTk2NSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHR5cGVkZWYgV2ViQ29yZTo6UGFnZSBXZWJD
b3JlUGFnZTsKIEBjbGFzcyBXZWJCYXNlUGx1Z2luUGFja2FnZTsKIAogQGludGVyZmFjZSBXZWJW
aWV3IChXZWJWaWV3RWRpdGluZ0V4dHJhcykKLS0gKEJPT0wpX2ludGVyY2VwdEVkaXRpbmdLZXlF
dmVudDooV2ViQ29yZUtleWJvYXJkRXZlbnQgKilldmVudDsKKy0gKEJPT0wpX2ludGVyY2VwdEVk
aXRpbmdLZXlFdmVudDooV2ViQ29yZUtleWJvYXJkRXZlbnQgKilldmVudCBzaG91bGRTYXZlQWN0
aW9uOihCT09MKXNob3VsZFNhdmU7CiAtIChCT09MKV9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOihET01SYW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJhbmdlOihET01SYW5nZSAqKXByb3Bv
c2VkUmFuZ2UgYWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkg
c3RpbGxTZWxlY3Rpbmc6KEJPT0wpZmxhZzsKIEBlbmQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13499</attachid>
            <date>2007-03-06 17:10:26 -0800</date>
            <delta_ts>2007-03-07 15:06:51 -0800</delta_ts>
            <desc>patch that doesn&apos;t break autorepeat</desc>
            <filename>patch_3_6_ime.txt</filename>
            <type>text/plain</type>
            <size>15929</size>
            <attacher name="Adele Peterson">adele</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTk5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDctMDMtMDYgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
YkNvcmUgcGFydCBvZiBmaXggZm9yOgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDg3MQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjY3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgyMzEyOT4gUkVHUkVT
U0lPTjogSU1FIGtleSBldmVudHMgZGlmZmVyZW50IGluIG5pZ2h0bHkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ3NTk1NjM+IFJFR1JFU1NJT046IFJldHVybiBrZXkgaXMgYWx3YXlzIHNlbnQg
d2hlbiB5b3UgY29uZmlybSBhIGNsYXVzZSBpbiBrb3RvZXJpCisKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5jcHA6IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2
ZW50SGFuZGxlcik6IENhbGwgaGFuZGxlS2V5UHJlc3MgYmVmb3JlIGFjdHVhbGx5IGRpc3BhdGNo
aW5nIHRoZSBrZXlwcmVzcyBldmVudAorICAgICAgICAgIHNvIHRoYXQgaW5wdXQgbWV0aG9kcyBo
YXZlIGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUgZXZlbnQuICAKKyAgICAgICAgICBJZiB0aGUgaW5w
dXQgbWV0aG9kIGhhbmRsZXMgdGhlIGV2ZW50IChieSBtYXJraW5nIG9yIHVubWFya2luZyB0ZXh0
KSwgdGhlbiAgd2UgZG9uJ3QgbmVlZCB0byBzZW5kIHRoZSBrZXlwcmVzcyBldmVudC4KKyAgICAg
ICAgICBJZiBhbiBpbnB1dCBtZXRob2QgZG9lc24ndCBoYW5kbGUgdGhlIGV2ZW50LCB0aGVuIHdl
J2xsIHNhdmUgdGhlIGRhdGEgd2UgbmVlZCB0byBwZXJmb3JtIHRoZSBjb3JyZWN0IGFjdGlvbiAo
bGlrZSB3aGF0IHRleHQgdG8gaW5zZXJ0IG9yIHdoYXQgc2VsZWN0b3IgdG8gdXNlKSAKKyAgICAg
ICAgICB3aGVuIHdlIGRpc3BhdGNoIHRoZSBrZXlwcmVzcyBldmVudC4KKworICAgICAgICAqIGRv
bS9LZXlib2FyZEV2ZW50Lmg6IEFkZGVkIGdldHRlcnMgYW5kIHNldHRlcnMgZm9yIGtleXByZXNz
IGFjdGlvbiBpbmZvcm1hdGlvbiBzbyB3ZSBjYW4gc3RvcmUgaXQgZHVyaW5nIHRoZSBrZXlkb3du
LCBhbmQgdXNlIGl0IGR1cmluZyB0aGUga2V5cHJlc3MuCisgICAgICAgIChXZWJDb3JlOjpLZXli
b2FyZEV2ZW50OjprZXlwcmVzc1NlbGVjdG9yU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWJvYXJkRXZlbnQ6OnNldEtleXByZXNzU2VsZWN0b3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6S2V5Ym9hcmRFdmVudDo6a2V5cHJlc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWJv
YXJkRXZlbnQ6OnNldEtleXByZXNzVGV4dCk6CisKKyAgICAgICAgKiBicmlkZ2UvRWRpdG9yQ2xp
ZW50Lmg6IEFkZGVkIHNob3VsZFNhdmVBY3Rpb24gYXJndW1lbnQuCisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuY3BwOiAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVLZXlQcmVzcyk6IGRpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3N2Zy9TVkdJbWFnZUVtcHR5Q2xpZW50cy5oOiAoV2ViQ29yZTo6U1ZHRW1wdHlFZGl0
b3JDbGllbnQ6OmhhbmRsZUtleVByZXNzKTogZGl0dG8uCisKIDIwMDctMDMtMDcgIE5pa29sYXMg
WmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBS
b2IgJiBPbGl2ZXIuCkBAIC04Miw3ICsxMDksNiBAQAogICAgICAgICAga2V5Z2VuIGVsZW1lbnQg
d2hlbiBzZWxlY3RpbmcgZGlmZmVyZW50IGl0ZW1zLiBBbHNvIHJlbW92ZWQgbV90eXBlZFN0cmlu
ZyhTdHJpbmcoKSkgZnJvbSB0aGUgY29uc3RydWN0b3IKICAgICAgICAgIGluaXRpYWxpemF0aW9u
IGJlY2F1c2UgdGhpcyBpcyBub3QgbmVlZGVkLgogCi0KIDIwMDctMDMtMDYgIEtldmluIE1jQ3Vs
bG91Z2ggIDxrbWNjdWxsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4uCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JyaWRnZS9FZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTk5NjUpCisrKyBXZWJDb3Jl
L2JyaWRnZS9FZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuZG8oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
ZG8oKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5UHJlc3MoS2V5Ym9hcmRFdmVu
dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5UHJlc3MoS2V5Ym9hcmRFdmVudCos
IGJvb2wgc2hvdWxkU2F2ZUFjdGlvbikgPSAwOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCB0ZXh0
RmllbGREaWRCZWdpbkVkaXRpbmcoRWxlbWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4
dEZpZWxkRGlkRW5kRWRpdGluZyhFbGVtZW50KikgPSAwOwpJbmRleDogV2ViQ29yZS9kb20vS2V5
Ym9hcmRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAko
cmV2aXNpb24gMTk5NjUpCisrKyBXZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDEyICs2NywyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVh
bCBpbnQgd2hpY2goKSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBrZXlwcmVzc1Nl
bGVjdG9yU3RyaW5nKCkgeyByZXR1cm4gbV9rZXlwcmVzc1NlbGVjdG9yU3RyaW5nOyB9CisgICAg
ICAgIHZvaWQgc2V0S2V5cHJlc3NTZWxlY3RvclN0cmluZyhjb25zdCBTdHJpbmcmIHNlbCkgeyBt
X2tleXByZXNzU2VsZWN0b3JTdHJpbmcgPSBzZWw7IH0KKworICAgICAgICBTdHJpbmcga2V5cHJl
c3NUZXh0KCkgeyByZXR1cm4gbV9rZXlwcmVzc1RleHQ7IH0KKyAgICAgICAgdm9pZCBzZXRLZXlw
cmVzc1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fa2V5cHJlc3NUZXh0ID0gdGV4dDsgfQog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBtX2tleUV2ZW50
OwogICAgICAgICBTdHJpbmcgbV9rZXlJZGVudGlmaWVyOwogICAgICAgICB1bnNpZ25lZCBtX2tl
eUxvY2F0aW9uOwogICAgICAgICBib29sIG1fYWx0R3JhcGhLZXkgOiAxOworICAgICAgICAKKyAg
ICAgICAgU3RyaW5nIG1fa2V5cHJlc3NTZWxlY3RvclN0cmluZzsKKyAgICAgICAgU3RyaW5nIG1f
a2V5cHJlc3NUZXh0OwogICAgIH07CiAKICAgICBLZXlib2FyZEV2ZW50KiBmaW5kS2V5Ym9hcmRF
dmVudChFdmVudCopOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDE5OTY1KQorKysgV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMSArMTAxLDEx
IEBAIEVkaXRvckNsaWVudCogRWRpdG9yOjpjbGllbnQoKSBjb25zdAogICAgIHJldHVybiAwOwog
fQogCi12b2lkIEVkaXRvcjo6aGFuZGxlS2V5UHJlc3MoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit2
b2lkIEVkaXRvcjo6aGFuZGxlS2V5UHJlc3MoS2V5Ym9hcmRFdmVudCogZXZlbnQsIGJvb2wgc2hv
dWxkU2F2ZUFjdGlvbikKIHsKICAgICBpZiAoRWRpdG9yQ2xpZW50KiBjID0gY2xpZW50KCkpCiAg
ICAgICAgIGlmIChzZWxlY3Rpb25Gb3JFdmVudChtX2ZyYW1lLCBldmVudCkuaXNDb250ZW50RWRp
dGFibGUoKSkKLSAgICAgICAgICAgIGMtPmhhbmRsZUtleVByZXNzKGV2ZW50KTsKKyAgICAgICAg
ICAgIGMtPmhhbmRsZUtleVByZXNzKGV2ZW50LCBzaG91bGRTYXZlQWN0aW9uKTsKIH0KIAogYm9v
bCBFZGl0b3I6OmNhbkVkaXQoKSBjb25zdApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkocmV2aXNpb24gMTk5NjUp
CisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIqIGRlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuZ2V0KCk7
IH0KICAgICBFZGl0Q29tbWFuZCogbGFzdEVkaXRDb21tYW5kKCkgeyByZXR1cm4gbV9sYXN0RWRp
dENvbW1hbmQuZ2V0KCk7IH0KIAotICAgIHZvaWQgaGFuZGxlS2V5UHJlc3MoS2V5Ym9hcmRFdmVu
dCopOworICAgIHZvaWQgaGFuZGxlS2V5UHJlc3MoS2V5Ym9hcmRFdmVudCosIGJvb2wgc2hvdWxk
U2F2ZUFjdGlvbiA9IGZhbHNlKTsKIAogICAgIGJvb2wgY2FuRWRpdCgpIGNvbnN0OwogICAgIGJv
b2wgY2FuRWRpdFJpY2hseSgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlz
aW9uIDE5OTY1KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyODIsMTAgKzEyODIsMTggQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXli
b2FyZEV2ZW50SAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudC0+Y3RybEtleSgpLCBldmVudC0+YWx0S2V5KCksIGV2ZW50LT5zaGlmdEtleSgpLCBldmVu
dC0+bWV0YUtleSgpLCBldmVudC0+YWx0R3JhcGhLZXkoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBrZXlwcmVzcy0+c2V0VW5kZXJseWluZ0V2ZW50KGV2ZW50KTsgICAKLSAgICAgICAg
Ci0gICAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgbmV3IGtleXByZXNzIGV2ZW50Ci0gICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChr
ZXlwcmVzcywgZWMsIHRydWUpOworICAgICAgICAgICAga2V5cHJlc3MtPnNldFRhcmdldChub2Rl
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2FsbCBoYW5kbGVLZXlQcmVzcyBzbyB0
aGF0IGlucHV0IG1ldGhvZHMgaGF2ZSBhIGNoYW5jZSB0byBoYW5kbGUgdGhlIGV2ZW50LiAgSWYg
dGhhdCBoYXBwZW5zLCB0aGVuCisgICAgICAgICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIHNlbmQg
dGhlIGtleXByZXNzIGV2ZW50LiAgSWYgYW4gaW5wdXQgbWV0aG9kIGRvZXNuJ3QgaGFuZGxlIHRo
ZSBldmVudCwgdGhlbiB3ZSdsbAorICAgICAgICAgICAgLy8gc2F2ZSB0aGUgZGF0YSB3ZSBuZWVk
IHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgYWN0aW9uIChsaWtlIGluc2VydGluZyB0ZXh0KSB3aGVu
IHdlIGRpc3BhdGNoIHRoZSBrZXlwcmVzcyBldmVudC4KKyAgICAgICAgICAgIG1fZnJhbWUtPmVk
aXRvcigpLT5oYW5kbGVLZXlQcmVzcyhrZXlwcmVzcy5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmICgha2V5cHJlc3MtPmRlZmF1bHRIYW5kbGVkKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgbmV3IGtleXByZXNzIGV2ZW50CisgICAgICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgICAgICAgICBub2RlLT5kaXNwYXRjaEV2
ZW50KGtleXByZXNzLCBlYywgdHJ1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
a2V5cHJlc3MtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3ZnL1NWR0ltYWdlRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdmcvU1ZHSW1hZ2VFbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTk5NjUp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdJbWFnZUVtcHR5Q2xpZW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNyArMzE2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB1bmRvKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZG8oKSB7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVLZXlQcmVzcyhLZXlib2FyZEV2ZW50KikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUtleVByZXNzKEtleWJvYXJkRXZlbnQqLCBib29sIHNob3VsZFNhdmVBY3Rpb24p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50
KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoRWxlbWVudCop
IHsgfQpJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxOTk5MikKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMCBAQAorMjAwNy0wMy0wNiAgQWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViS2l0IHBhcnQgb2YgZml4IGZvcjoKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA4NzEKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4MjMxMjk+IFJFR1JF
U1NJT046IElNRSBrZXkgZXZlbnRzIGRpZmZlcmVudCBpbiBuaWdodGx5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80NzU5NTYzPiBSRUdSRVNTSU9OOiBSZXR1cm4ga2V5IGlzIGFsd2F5cyBzZW50
IHdoZW4geW91IGNvbmZpcm0gYSBjbGF1c2UgaW4ga290b2VyaQorCisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ludGVyY2VwdEVkaXRp
bmdLZXlFdmVudDogc2hvdWxkU2F2ZUFjdGlvbjpdKTogQWRkZWQgc2hvdWxkU2F2ZUFjdGlvbiBm
aWVsZCB0byBXZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMuCisgICAgICAg
ICAgV2hlbiBzaG91bGRTYXZlQWN0aW9uIGlzIHRydWUsIHdlIGNhbGwgaW50ZXJwcmV0S2V5RXZl
bnRzIGFuZCBpbiBkb0NvbW1hbmRCeVNlbGVjdG9yIGFuZCBpbnNlcnRUZXh0LCB3ZSBqdXN0IHNh
dmUgdGhlIGluZm9ybWF0aW9uIHdpdGhvdXQgcGVyZm9ybWluZyBhbnkgYWN0aW9uLgorICAgICAg
ICAgIFdoZW4gc2hvdWxkU2F2ZUFjdGlvbiBpcyBmYWxzZSwgd2UgdXNlZCB0aGUgc2F2ZWQgaW5m
b3JtYXRpb24gYW5kIGNhbGwgZG9Db21tYW5kQnlTZWxlY3RvciBhbmQgaW5zZXJ0VGV4dCBkaXJl
Y3RseS4KKyAgICAgICAgICBJZiB0aGVyZSdzIG5vIHNhdmVkIGRhdGEgaW4gdGhlIEtleWJvYXJk
RXZlbnQsIGNhbGwgaW50ZXJwcmV0S2V5RXZlbnRzLCBhbmQgaG9ub3IgdGhlIHNob3VsZFNhdmVB
Y3Rpb24gYXJndW1lbnQuICBUaGlzIGFsbG93cyByZXBlYXRpbmcga2V5cHJlc3MgZXZlbnRzCisg
ICAgICAgICAgdG8gZnVuY3Rpb24gbm9ybWFsbHkuCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRv
Q29tbWFuZEJ5U2VsZWN0b3I6XSk6IElmIHRoZSBXZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50
c1BhcmFtZXRlcnMgc2hvdWxkU2F2ZUFjdGlvbiBmaWVsZCBpcyBzZXQsIHRoZW4KKyAgICAgICAg
ICBqdXN0IHNhdmUgdGhlIHNlbGVjdG9yIGluZm9ybWF0aW9uIGluIHRoZSBLZXlib2FyZEV2ZW50
LCBhbmQgZG9uJ3QgcGVyZm9ybSB0aGUgYWN0aW9uLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBp
bnNlcnRUZXh0Ol0pOiBkaXR0by4gCisgICAgICAgICAgaW5zZXJ0VGV4dCBjYW4gYmUgY2FsbGVk
IGZyb20gYW4gaW5wdXQgbWV0aG9kIG9yIGZyb20gbm9ybWFsIGtleSBldmVudCBwcm9jZXNzaW5n
CisgICAgICAgICAgSWYgaXRzIGZyb20gYW4gaW5wdXQgbWV0aG9kLCB0aGVuIHdlIHNob3VsZCBn
byBhaGVhZCBhbmQgaW5zZXJ0IHRoZSB0ZXh0IG5vdy4gIAorICAgICAgICAgIFRoZSBvbmx5IHdh
eSB3ZSBrbm93IGlmIGl0cyBmcm9tIGFuIGlucHV0IG1ldGhvZCBpcyB0byBjaGVjayBoYXNNYXJr
ZWRUZXh0LiAgVGhlcmUgbWlnaHQgYmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuCisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmg6IEFkZGVkIHNob3VsZFNhdmVBY3Rpb24g
YXJndW1lbnQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDogZGl0dG8uCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6IGRpdHRvLiAKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06IChXZWJFZGl0b3JDbGllbnQ6
OmhhbmRsZUtleVByZXNzKTogZGl0dG8uCisKIDIwMDctMDMtMDYgIEpvaG4gU3VsbGl2YW4gIDxz
dWxsaXZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4KSW5kZXg6IFdl
YktpdC9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDE5OTY1KQorKysg
V2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5kbygpOwogICAgIHZp
cnR1YWwgdm9pZCByZWRvKCk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleVByZXNz
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5UHJl
c3MoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCosIGJvb2wgc2hvdWxkU2F2ZUFjdGlvbik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgbWFya2VkVGV4dEFiYW5kb25lZChXZWJDb3JlOjpGcmFtZSopOwogCklu
ZGV4OiBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDE5
OTY1KQorKysgV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDA4LDExICs0MDgsMTEgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZG8o
KQogICAgICAgICBbW21fd2ViVmlldyB1bmRvTWFuYWdlcl0gcmVkb107ICAgIAogfQogCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5UHJlc3MoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5UHJlc3MoS2V5Ym9hcmRFdmVudCogZXZlbnQs
IGJvb2wgc2hvdWxkU2F2ZUFjdGlvbikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBldmVudC0+dGFy
Z2V0KCktPnRvTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIFdlYkhUTUxWaWV3ICp3
ZWJIVE1MVmlldyA9IFtba2l0KGZyYW1lKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107Ci0gICAg
aWYgKFt3ZWJIVE1MVmlldyBfaW50ZXJjZXB0RWRpdGluZ0tleUV2ZW50OmV2ZW50XSkKKyAgICBp
ZiAoW3dlYkhUTUxWaWV3IF9pbnRlcmNlcHRFZGl0aW5nS2V5RXZlbnQ6ZXZlbnQgc2hvdWxkU2F2
ZUFjdGlvbjpzaG91bGRTYXZlQWN0aW9uXSkKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiB9CiAKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAxOTk2NSkKKysr
IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNiAr
Mjg3LDcgQEAgc3RhdGljIFdlYkhUTUxWaWV3ICpsYXN0SGl0VmlldzsKIHN0cnVjdCBXZWJIVE1M
Vmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogICAgIEtleWJvYXJkRXZlbnQqIGV2
ZW50OwogICAgIEJPT0wgZXZlbnRXYXNIYW5kbGVkOworICAgIEJPT0wgc2hvdWxkU2F2ZUFjdGlv
bjsKIH07CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJIVE1MVmlld1ByaXZhdGUKQEAgLTUyNDYsMTgg
KzUyNDcsMzEgQEAgc3RhdGljIENHUG9pbnQgY29yZUdyYXBoaWNzU2NyZWVuUG9pbnRGbwogICAg
IFtzZWxmIF91cGRhdGVNb3VzZW92ZXJXaXRoRmFrZUV2ZW50XTsKIH0KIAotLSAoQk9PTClfaW50
ZXJjZXB0RWRpdGluZ0tleUV2ZW50OihLZXlib2FyZEV2ZW50ICopZXZlbnQKKy0gKEJPT0wpX2lu
dGVyY2VwdEVkaXRpbmdLZXlFdmVudDooS2V5Ym9hcmRFdmVudCAqKWV2ZW50IHNob3VsZFNhdmVB
Y3Rpb246KEJPT0wpc2hvdWxkU2F2ZQogewogICAgIC8vIEFzayBBcHBLaXQgdG8gcHJvY2VzcyB0
aGUga2V5IGV2ZW50IC0tIGl0IHdpbGwgY2FsbCBiYWNrIHdpdGggZWl0aGVyIGluc2VydFRleHQg
b3IgZG9Db21tYW5kQnlTZWxlY3Rvci4KICAgICBXZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50
c1BhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmV2ZW50V2FzSGFuZGxlZCA9
IGZhbHNlOworICAgIHBhcmFtZXRlcnMuc2hvdWxkU2F2ZUFjdGlvbiA9IHNob3VsZFNhdmU7Cisg
ICAgICAgIAogICAgIGlmIChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIHBsYXRmb3JtRXZl
bnQgPSBldmVudC0+a2V5RXZlbnQoKSkgewogICAgICAgICBOU0V2ZW50ICptYWNFdmVudCA9IHBs
YXRmb3JtRXZlbnQtPm1hY0V2ZW50KCk7CiAgICAgICAgIGlmIChbbWFjRXZlbnQgdHlwZV0gPT0g
TlNLZXlEb3duICYmIFtfcHJpdmF0ZS0+Y29tcENvbnRyb2xsZXIgZmlsdGVyS2V5RG93bjptYWNF
dmVudF0pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcGFyYW1ldGVycy5ldmVu
dCA9IGV2ZW50OwogICAgICAgICBfcHJpdmF0ZS0+aW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVy
cyA9ICZwYXJhbWV0ZXJzOwotICAgICAgICBbc2VsZiBpbnRlcnByZXRLZXlFdmVudHM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0Om1hY0V2ZW50XV07CisgICAgICAgIFN0cmluZyBzZWwgPSBldmVu
dC0+a2V5cHJlc3NTZWxlY3RvclN0cmluZygpOworICAgICAgICBTdHJpbmcgdGV4dCA9IGV2ZW50
LT5rZXlwcmVzc1RleHQoKTsKKyAgICAgICAgYm9vbCBoYXNLZXlwcmVzc0RhdGEgPSAhc2VsLmlz
RW1wdHkoKSB8fCAhdGV4dC5pc0VtcHR5KCk7CisKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hv
dWxkU2F2ZUFjdGlvbiB8fCAhaGFzS2V5cHJlc3NEYXRhKQorICAgICAgICAgICAgW3NlbGYgaW50
ZXJwcmV0S2V5RXZlbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDptYWNFdmVudF1dOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgW3NlbGYgaW5zZXJ0VGV4dDp0ZXh0XTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBbc2VsZiBkb0NvbW1hbmRCeVNlbGVjdG9yOk5TU2VsZWN0b3JGcm9tU3RyaW5nKHNl
bCldOworICAgICAgICB9CiAgICAgICAgIF9wcml2YXRlLT5pbnRlcnByZXRLZXlFdmVudHNQYXJh
bWV0ZXJzID0gMDsKICAgICB9CiAgICAgcmV0dXJuIHBhcmFtZXRlcnMuZXZlbnRXYXNIYW5kbGVk
OwpAQCAtNTQ3NiwxMSArNTQ5MCwxNyBAQCBzdGF0aWMgQ0dQb2ludCBjb3JlR3JhcGhpY3NTY3Jl
ZW5Qb2ludEZvCiAgICAgLy8gVXNlIHBvaW50ZXIgdG8gZ2V0IHBhcmFtZXRlcnMgcGFzc2VkIHRv
IHVzIGJ5IHRoZSBjYWxsZXIgb2YgaW50ZXJwcmV0S2V5RXZlbnRzLgogICAgIFdlYkhUTUxWaWV3
SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyogcGFyYW1ldGVycyA9IF9wcml2YXRlLT5pbnRl
cnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzOwogICAgIF9wcml2YXRlLT5pbnRlcnByZXRLZXlFdmVu
dHNQYXJhbWV0ZXJzID0gMDsKLQorICAgIEtleWJvYXJkRXZlbnQqIGV2ZW50ID0gcGFyYW1ldGVy
cyA/IHBhcmFtZXRlcnMtPmV2ZW50IDogMDsKKyAgICAKKyAgICBib29sIHNob3VsZFNhdmVBY3Rp
b24gPSBwYXJhbWV0ZXJzICYmIHBhcmFtZXRlcnMtPnNob3VsZFNhdmVBY3Rpb247CisgICAgaWYg
KGV2ZW50ICYmIHNob3VsZFNhdmVBY3Rpb24pIHsKKyAgICAgICAgZXZlbnQtPnNldEtleXByZXNz
U2VsZWN0b3JTdHJpbmcoU3RyaW5nKChjaGFyKilhU2VsZWN0b3IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcihub29wOikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEtleWJvYXJkRXZlbnQqIGV2ZW50ID0gcGFyYW1ldGVycyA/
IHBhcmFtZXRlcnMtPmV2ZW50IDogMDsKICAgICBib29sIGV2ZW50V2FzSGFuZGxlZCA9IHRydWU7
CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3NlbGYgX3dlYlZpZXddOwpAQCAtNTUxNiw4ICs1
NTM2LDIwIEBAIHN0YXRpYyBDR1BvaW50IGNvcmVHcmFwaGljc1NjcmVlblBvaW50Rm8KIAogICAg
IGJvb2wgZXZlbnRIYW5kbGVkID0gZmFsc2U7CiAgICAgaWYgKFt0ZXh0IGxlbmd0aF0pIHsKLSAg
ICAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgICAgIEtl
eWJvYXJkRXZlbnQqIGV2ZW50ID0gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMtPmV2ZW50IDogMDsK
KworICAgICAgICAvLyBpbnNlcnRUZXh0IGNhbiBiZSBjYWxsZWQgZnJvbSBhbiBpbnB1dCBtZXRo
b2Qgb3IgZnJvbSBub3JtYWwga2V5IGV2ZW50IHByb2Nlc3NpbmcKKyAgICAgICAgLy8gSWYgaXRz
IGZyb20gYW4gaW5wdXQgbWV0aG9kLCB0aGVuIHdlIHNob3VsZCBnbyBhaGVhZCBhbmQgaW5zZXJ0
IHRoZSB0ZXh0IG5vdy4gIAorICAgICAgICAvLyBUaGUgb25seSB3YXkgd2Uga25vdyBpZiBpdHMg
ZnJvbSBhbiBpbnB1dCBtZXRob2QgaXMgdG8gY2hlY2sgaGFzTWFya2VkVGV4dC4gIFRoZXJlIG1p
Z2h0IGJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLgorICAgICAgICAvLyBJZiBpdHMgZnJvbSBu
b3JtYWwga2V5IGV2ZW50IHByb2Nlc3NpbmcsIHdlIG1heSBuZWVkIHRvIHNhdmUgdGhlIGFjdGlv
biB0byBwZXJmb3JtIGl0IGxhdGVyLgorICAgICAgICBib29sIHNob3VsZFNhdmVBY3Rpb24gPSBw
YXJhbWV0ZXJzICYmIHBhcmFtZXRlcnMtPnNob3VsZFNhdmVBY3Rpb247CisgICAgICAgIGJvb2wg
aXNGcm9tSW5wdXRNZXRob2QgPSBbc2VsZiBoYXNNYXJrZWRUZXh0XTsKKyAgICAgICAgaWYgKGV2
ZW50ICYmIHNob3VsZFNhdmVBY3Rpb24gJiYgIWlzRnJvbUlucHV0TWV0aG9kKSB7CisgICAgICAg
ICAgICBldmVudC0+c2V0S2V5cHJlc3NUZXh0KHRleHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2Vs
ZiBfZnJhbWVdKTsKICAgICAgICAgU3RyaW5nIGV2ZW50VGV4dCA9IHRleHQ7CiAgICAgICAgIGV2
ZW50VGV4dC5yZXBsYWNlKE5TQmFja1RhYkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0ZXIpOyAvLyBz
YW1lIHRoaW5nIGlzIGRvbmUgaW4gS2V5RXZlbnRNYWMubW0gaW4gV2ViQ29yZQogICAgICAgICBl
dmVudEhhbmRsZWQgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFu
ZGxlVGV4dElucHV0RXZlbnQoZXZlbnRUZXh0LCBldmVudCk7CkluZGV4OiBXZWJLaXQvV2ViVmll
dy9XZWJIVE1MVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2Vi
SFRNTFZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiAxOTk2NSkKKysrIFdlYktpdC9XZWJWaWV3L1dl
YkhUTUxWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0
cnVjdCBXZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50c1BhcmEKIC0gKHZvaWQpY2xvc2VJZk5v
dEN1cnJlbnRWaWV3OwogLSAodm9pZClfbG9va1VwSW5EaWN0aW9uYXJ5RnJvbU1lbnU6KGlkKXNl
bmRlcjsKIC0gKHZvaWQpX2hvdmVyRmVlZGJhY2tTdXNwZW5kZWRDaGFuZ2VkOwotLSAoQk9PTClf
aW50ZXJjZXB0RWRpdGluZ0tleUV2ZW50OihXZWJDb3JlOjpLZXlib2FyZEV2ZW50ICopZXZlbnQ7
CistIChCT09MKV9pbnRlcmNlcHRFZGl0aW5nS2V5RXZlbnQ6KFdlYkNvcmU6OktleWJvYXJkRXZl
bnQgKilldmVudCBzaG91bGRTYXZlQWN0aW9uOihCT09MKXNob3VsZFNhdmU7CiAtIChET01Eb2N1
bWVudEZyYWdtZW50KilfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9h
cmQgKilwYXN0ZWJvYXJkOwogLSAoTlNFdmVudCAqKV9tb3VzZURvd25FdmVudDsKICNpZm5kZWYg
QlVJTERJTkdfT05fVElHRVIKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCShyZXZpc2lv
biAxOTk2NSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHR5cGVkZWYgV2ViQ29yZTo6UGFnZSBXZWJDb3JlUGFnZTsK
IEBjbGFzcyBXZWJCYXNlUGx1Z2luUGFja2FnZTsKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJW
aWV3RWRpdGluZ0V4dHJhcykKLS0gKEJPT0wpX2ludGVyY2VwdEVkaXRpbmdLZXlFdmVudDooV2Vi
Q29yZUtleWJvYXJkRXZlbnQgKilldmVudDsKKy0gKEJPT0wpX2ludGVyY2VwdEVkaXRpbmdLZXlF
dmVudDooV2ViQ29yZUtleWJvYXJkRXZlbnQgKilldmVudCBzaG91bGRTYXZlQWN0aW9uOihCT09M
KXNob3VsZFNhdmU7CiAtIChCT09MKV9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihET01S
YW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJhbmdlOihET01SYW5nZSAqKXByb3Bvc2VkUmFuZ2Ug
YWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkgc3RpbGxTZWxl
Y3Rpbmc6KEJPT0wpZmxhZzsKIEBlbmQKIAo=
</data>
<flag name="review"
          id="5330"
          type_id="1"
          status="+"
          setter="adele"
    />
          </attachment>
      

    </bug>

</bugzilla>