<?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>69410</bug_id>
          
          <creation_ts>2011-10-05 04:06:48 -0700</creation_ts>
          <short_desc>[WK2] [GTK] Implement KeyDown function for WebKit2 EventSender.</short_desc>
          <delta_ts>2011-10-23 00:27:00 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>69523</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alex</cc>
    
    <cc>gustavo</cc>
    
    <cc>kaustubh.ra</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>478265</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-10-05 04:06:48 -0700</bug_when>
    <thetext>The summary explains the issue, check bugs:

   - https://bugs.webkit.org/show_bug.cgi?id=56485
   - https://bugs.webkit.org/show_bug.cgi?id=57515</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485940</commentid>
    <comment_count>1</comment_count>
      <attachid>111416</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-18 03:47:03 -0700</bug_when>
    <thetext>Created attachment 111416
Work in progress patch

Implementation for KeyDown function for WebKit2 EventSender</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486017</commentid>
    <comment_count>2</comment_count>
      <attachid>111416</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-18 06:54:10 -0700</bug_when>
    <thetext>Comment on attachment 111416
Work in progress patch

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

Just a couple quick comments. Don&apos;t set the review bit on WIP patches, since they aren&apos;t ready for commit.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:8
&gt; +/*
&gt; + * Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without modification,
&gt; + * are permitted provided that the following conditions are met:
&gt; + *
&gt; + * Redistributions of source code must retain the above copyright notice,
&gt; + * this list of conditions and the following disclaimer.

This code appears to be based on code from EventSender.cpp. You need to copy the header from that file and add your own Copyright line.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:48
&gt; +    DOM_KEY_LOCATION_STANDARD      = 0x00,
&gt; +    DOM_KEY_LOCATION_LEFT          = 0x01,
&gt; +    DOM_KEY_LOCATION_RIGHT         = 0x02,
&gt; +    DOM_KEY_LOCATION_NUMPAD        = 0x03
&gt; +};

The enum values here are incorrectly named. enums values must be camel case, DOMKeyLocationStandard, etc.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:52
&gt; +static void dispatchEvent(GdkEvent*);
&gt; +static guint getModifiers(WKEventModifiers);
&gt; +

You don&apos;t need these forward declarations at this point, I think.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:82
&gt; +    size_t size = WKStringGetLength(keyRef);

Would prefer stringSize.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:94
&gt; +    if (location == DOM_KEY_LOCATION_NUMPAD) {
&gt; +        if (WKStringIsEqualToUTF8CString(keyRef, &quot;leftArrow&quot;))
&gt; +            gdkKeySym = GDK_KEY_KP_Left;
&gt; +        else if (WKStringIsEqualToUTF8CString(keyRef, &quot;rightArror&quot;))
&gt; +            gdkKeySym = GDK_KEY_KP_Right;
&gt; +        else if (WKStringIsEqualToUTF8CString(keyRef, &quot;upArrow&quot;))

It&apos;d be better to split this off into a helper function called something like getGDKKeySymForKeyRef.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:175
&gt; +    // create and send the event

This comment needs to begin with a capital letter and end with a period. You can probably just omit it though. It doesn&apos;t provide much over the code itself.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:183
&gt; +    gint n_keys;

n_keys does not follow WebKit naming conventions. Take a look at: http://www.webkit.org/coding/coding-style.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486061</commentid>
    <comment_count>3</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-10-18 08:18:33 -0700</bug_when>
    <thetext>Thanks for the patch, I would add to Martin comments that you should try to add the modification of the Skipped file, because we are passing more tests with this feature implemented. Test which ones and remove them from the Skipped file and check the reason we are not passing other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486573</commentid>
    <comment_count>4</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-18 23:06:40 -0700</bug_when>
    <thetext>Thanks Martin &amp; Alejandro for quick review. I will incorporate all the suggested changes and will update the patch soon. The only reason I added r+ for the patch was to get the bot testing done :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487371</commentid>
    <comment_count>5</comment_count>
      <attachid>111732</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-20 00:19:39 -0700</bug_when>
    <thetext>Created attachment 111732
Patch

Completed patch with removing skipped tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488174</commentid>
    <comment_count>6</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-20 22:59:41 -0700</bug_when>
    <thetext>Martin/Alejandro can you review once? I have added changes suggested by you. And patch is completed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488181</commentid>
    <comment_count>7</comment_count>
      <attachid>111732</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-20 23:08:31 -0700</bug_when>
    <thetext>Comment on attachment 111732
Patch

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

&gt; Tools/WebKitTestRunner/GNUmakefile.am:15
&gt;  	Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp \
&gt; +	Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp \
&gt;  	Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp \

We try to keep the source lists in alphabetical order. That means that EventSenderProxyGtk.cpp would be before PlatformWebViewGtk.cpp.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:83
&gt; +        if (WKStringIsEqualToUTF8CString(keyRef, &quot;leftArrow&quot;))
&gt; +            gdkKeySym = GDK_KEY_KP_Left;
&gt; +        else if (WKStringIsEqualToUTF8CString(keyRef, &quot;rightArror&quot;))
&gt; +            gdkKeySym = GDK_KEY_KP_Right;
&gt; +        else if (WKStringIsEqualToUTF8CString(keyRef, &quot;upArrow&quot;))
&gt; +            gdkKeySym = GDK_KEY_KP_Up;

Typically we use early returns to do this sort of thing. Do you mind doing that and modifying the &quot;else if&quot; statements to be simply if?

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:96
&gt; +            gdkKeySym = GDK_KEY_KP_Insert;
&gt; +        else if (WKStringIsEqualToUTF8CString(keyRef, &quot;delete&quot;))

You&apos;ll need a final else here to return GDK_KEY_VoidSymbol. You might want to ASSERT_NOT_REACHED.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:101
&gt; +    } else {
&gt; +        if (WKStringIsEqualToUTF8CString(keyRef, &quot;leftArrow&quot;))
&gt; +            gdkKeySym = GDK_KEY_Left;
&gt; +        else if (WKStringIsEqualToUTF8CString(keyRef, &quot;rightArror&quot;))

After which, you can move this out of the else block.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:153
&gt; +            size_t stringSize = WKStringGetLength(keyRef);
&gt; +            char* buffer = new char[stringSize];
&gt; +            WKStringGetUTF8CString(keyRef, buffer, stringSize);
&gt; +            int charCode = buffer[0];
&gt; +
&gt; +            if (charCode == &apos;\n&apos; || charCode == &apos;\r&apos;)

And this will also be out of the else block as well.

&gt; Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:127
&gt; +bool PlatformWebView::dispatchEvent(GdkEvent* event)
&gt; +{
&gt; +    if (event-&gt;type == GDK_KEY_PRESS || event-&gt;type == GDK_KEY_RELEASE) {
&gt; +        event-&gt;key.window = gtk_widget_get_window(GTK_WIDGET(m_view));
&gt; +        g_object_ref(event-&gt;key.window);

Why can&apos;t this be in the EventSender?

&gt; Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:130
&gt; +#ifndef GTK_API_VERSION_2
&gt; +        gdk_event_set_device(event, getDefaultGDKPointerDevice(event-&gt;key.window));
&gt; +#endif

There is no GTK+ 2 support in Webkit2, so you can remove this #ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488189</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-20 23:18:04 -0700</bug_when>
    <thetext>Looks pretty good! I&apos;m not certain why we need dispatchEvent. Don&apos;t we have a handle on the widget in the EventSenderProxy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488193</commentid>
    <comment_count>9</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-20 23:22:29 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Looks pretty good! I&apos;m not certain why we need dispatchEvent. Don&apos;t we have a handle on the widget in the EventSenderProxy?

We have WebView handle from testController. But somehow when i had that code in EventSenderProxyGtk.cpp I was getting assert for not a GtkWidget. Then I looked at qt port code how then have done and found that they also have made implementation for dispatching event in PlatformWebViewQt.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488202</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-20 23:30:43 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Looks pretty good! I&apos;m not certain why we need dispatchEvent. Don&apos;t we have a handle on the widget in the EventSenderProxy?
&gt; 
&gt; We have WebView handle from testController. But somehow when i had that code in EventSenderProxyGtk.cpp I was getting assert for not a GtkWidget. Then I looked at qt port code how then have done and found that they also have made implementation for dispatching event in PlatformWebViewQt.cpp

Do you mind investigating a bit further? If the WebView doesn&apos;t have a widget than moving this code to WebView is still an issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488332</commentid>
    <comment_count>11</comment_count>
      <attachid>111951</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 05:24:28 -0700</bug_when>
    <thetext>Created attachment 111951
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488438</commentid>
    <comment_count>12</comment_count>
      <attachid>111951</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-21 09:36:39 -0700</bug_when>
    <thetext>Comment on attachment 111951
Updated Patch

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

Looks good, but I have a couple questions below.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:63
&gt; +bool dispatchEvent(GdkEvent* event)
&gt; +{
&gt; +    gtk_main_do_event(event);
&gt; +    gdk_event_free(event);
&gt; +    return 0;
&gt; +}

This function should be static. Why does it return a bool, while you unconditionally return 0?

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:193
&gt; +    GdkKeymapKey* keys;
&gt; +    gint nKeys;
&gt; +    if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeySym, &amp;keys, &amp;nKeys)) {
&gt; +        pressEvent-&gt;key.hardware_keycode = keys[0].keycode;
&gt; +        g_free(keys);
&gt; +    }

Can you use GOwnPtr and .outPtr() for keys?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488829</commentid>
    <comment_count>13</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 20:12:32 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 111951 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111951&amp;action=review
&gt; 
&gt; Looks good, but I have a couple questions below.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:63
&gt; &gt; +bool dispatchEvent(GdkEvent* event)
&gt; &gt; +{
&gt; &gt; +    gtk_main_do_event(event);
&gt; &gt; +    gdk_event_free(event);
&gt; &gt; +    return 0;
&gt; &gt; +}
&gt; 
&gt; This function should be static. Why does it return a bool, while you unconditionally return 0?
&gt; 
Yes, I can make it static. I was returning bool only considering further more addition of Events like Mouse click/move/drag might add return values/error codes. 

&gt; &gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:193
&gt; &gt; +    GdkKeymapKey* keys;
&gt; &gt; +    gint nKeys;
&gt; &gt; +    if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeySym, &amp;keys, &amp;nKeys)) {
&gt; &gt; +        pressEvent-&gt;key.hardware_keycode = keys[0].keycode;
&gt; &gt; +        g_free(keys);
&gt; &gt; +    }
&gt; 
&gt; Can you use GOwnPtr and .outPtr() for keys?

Yes, I will make that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488840</commentid>
    <comment_count>14</comment_count>
      <attachid>112065</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 20:48:48 -0700</bug_when>
    <thetext>Created attachment 112065
Patch with Review Changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488844</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 20:54:03 -0700</bug_when>
    <thetext>Attachment 112065 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:234:  &quot;config.h&quot; already included at Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:33  [build/include] [4]
Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:235:  &quot;EventSenderProxy.h&quot; already included at Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:34  [build/include] [4]
Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:237:  &quot;PlatformWebView.h&quot; already included at Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:36  [build/include] [4]
Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:238:  &quot;TestController.h&quot; already included at Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:37  [build/include] [4]
Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:239:  &quot;gdk/gdk.h&quot; already included at Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:39  [build/include] [4]
Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:240:  &quot;gdk/gdkkeysyms.h&quot; already included at Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:40  [build/include] [4]
Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:241:  &quot;gtk/gtk.h&quot; already included at Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:41  [build/include] [4]
Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:242:  &quot;wtf/text/WTFString.h&quot; already included at Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:42  [build/include] [4]
Total errors found: 8 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488852</commentid>
    <comment_count>16</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-21 21:03:25 -0700</bug_when>
    <thetext>(In reply to comment #13)

&gt; &gt; This function should be static. Why does it return a bool, while you unconditionally return 0?
&gt; &gt; 
&gt; Yes, I can make it static. I was returning bool only considering further more addition of Events like Mouse click/move/drag might add return values/error codes.

For now, since the return value is not used, just have it return void. Furthermore, bool functions should return either &quot;true&quot; or &quot;false&quot; :)

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488857</commentid>
    <comment_count>17</comment_count>
      <attachid>112070</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 21:16:35 -0700</bug_when>
    <thetext>Created attachment 112070
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488859</commentid>
    <comment_count>18</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 21:17:25 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; 
&gt; For now, since the return value is not used, just have it return void. Furthermore, bool functions should return either &quot;true&quot; or &quot;false&quot; :)
&gt; 
&gt; Thanks!

Ok Done :) Will change it later when required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488863</commentid>
    <comment_count>19</comment_count>
      <attachid>112070</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-21 21:29:02 -0700</bug_when>
    <thetext>Comment on attachment 112070
Updated Patch

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

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:63
&gt; +static void dispatchEvent(GdkEvent* event)
&gt; +{
&gt; +    gtk_main_do_event(event);
&gt; +    gdk_event_free(event);
&gt; +    return 0;
&gt; +}

You also need to remove the &quot;return 0&quot; to avoid a warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488865</commentid>
    <comment_count>20</comment_count>
      <attachid>112071</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 21:31:16 -0700</bug_when>
    <thetext>Created attachment 112071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488866</commentid>
    <comment_count>21</comment_count>
      <attachid>112071</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-21 21:35:22 -0700</bug_when>
    <thetext>Comment on attachment 112071
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488868</commentid>
    <comment_count>22</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 21:38:04 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 112071 [details])
&gt; Thanks!

Thanks Martin :) I will start extending now for the bug  https://bugs.webkit.org/show_bug.cgi?id=69411. You can assign that to me if u wish :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488869</commentid>
    <comment_count>23</comment_count>
      <attachid>112071</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 21:38:42 -0700</bug_when>
    <thetext>Comment on attachment 112071
Patch

Rejecting attachment 112071 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
tTestRunner/TestController.cpp
patching file Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp
patch: **** unexpected end of file in patch
fatal: pathspec &apos;Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp&apos; did not match any files
Failed to git add Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp. at /mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply line 439.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Martin Robinson&apos;, u&apos;--...&quot; exit_code: 2

Full output: http://queues.webkit.org/results/10198159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488870</commentid>
    <comment_count>24</comment_count>
      <attachid>112071</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 21:44:13 -0700</bug_when>
    <thetext>Comment on attachment 112071
Patch

Rejecting attachment 112071 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
tTestRunner/TestController.cpp
patching file Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp
patch: **** unexpected end of file in patch
fatal: pathspec &apos;Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp&apos; did not match any files
Failed to git add Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp. at /mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply line 439.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Martin Robinson&apos;, u&apos;--...&quot; exit_code: 2

Full output: http://queues.webkit.org/results/10200143</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488871</commentid>
    <comment_count>25</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-21 21:50:51 -0700</bug_when>
    <thetext>I&apos;m not sure why the patch is failing to apply. Do you mind rebasing onto the latest from the repository?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488872</commentid>
    <comment_count>26</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 21:54:33 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; I&apos;m not sure why the patch is failing to apply. Do you mind rebasing onto the latest from the repository?
Yep doing that only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488876</commentid>
    <comment_count>27</comment_count>
      <attachid>112073</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 22:04:24 -0700</bug_when>
    <thetext>Created attachment 112073
Updated Patch

Rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488877</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 22:08:06 -0700</bug_when>
    <thetext>Attachment 112073 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:191:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488878</commentid>
    <comment_count>29</comment_count>
      <attachid>112074</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 22:11:59 -0700</bug_when>
    <thetext>Created attachment 112074
Updated Patch

Really sorry for that. This wont fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488887</commentid>
    <comment_count>30</comment_count>
      <attachid>112077</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-21 23:03:54 -0700</bug_when>
    <thetext>Created attachment 112077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488889</commentid>
    <comment_count>31</comment_count>
      <attachid>112077</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-10-21 23:19:48 -0700</bug_when>
    <thetext>Comment on attachment 112077
Patch

Attachment 112077 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10200169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488899</commentid>
    <comment_count>32</comment_count>
      <attachid>112080</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-22 00:27:53 -0700</bug_when>
    <thetext>Created attachment 112080
Fixed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488901</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-22 00:30:08 -0700</bug_when>
    <thetext>Attachment 112080 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488904</commentid>
    <comment_count>34</comment_count>
      <attachid>112082</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-22 00:48:35 -0700</bug_when>
    <thetext>Created attachment 112082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488911</commentid>
    <comment_count>35</comment_count>
      <attachid>112082</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-10-22 03:10:12 -0700</bug_when>
    <thetext>Comment on attachment 112082
Patch

Just one comment, you are removing the tests from the Keydown section of the Skipped file, some of the tests are still failing it is because some other reason, I think if we want to keep the things a little bit tidy in the file it would be great to reclassify the tests, even if it means adding them to the &quot;Unchecked failure&quot; section. If you can do a small review and add them to other sections in the patch it would be great. Thanks for the work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488921</commentid>
    <comment_count>36</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-22 04:53:42 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (From update of attachment 112082 [details])
&gt; Just one comment, you are removing the tests from the Keydown section of the Skipped file, some of the tests are still failing it is because some other reason, I think if we want to keep the things a little bit tidy in the file it would be great to reclassify the tests, even if it means adding them to the &quot;Unchecked failure&quot; section. If you can do a small review and add them to other sections in the patch it would be great. Thanks for the work!

Sure Alejandro, I will make the patch and will upload in different bug. Thanks :) This current patch is final and ready to be committed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488990</commentid>
    <comment_count>37</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-10-22 20:34:05 -0700</bug_when>
    <thetext>Hi Martin, Can you r+ &amp; c+ this updated patch? This is final updated patch. THanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488999</commentid>
    <comment_count>38</comment_count>
      <attachid>112082</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-23 00:26:54 -0700</bug_when>
    <thetext>Comment on attachment 112082
Patch

Clearing flags on attachment: 112082

Committed r98200: &lt;http://trac.webkit.org/changeset/98200&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489000</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-23 00:27:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111416</attachid>
            <date>2011-10-18 03:47:03 -0700</date>
            <delta_ts>2011-10-20 00:19:39 -0700</delta_ts>
            <desc>Work in progress patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>11698</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk3NzM1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMTAtMTggIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5j
dGlvbiBvbiBHdGsgcGxhdGZvcm0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJv
eHlHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6RXZlbnRT
ZW5kZXJQcm94eSk6CisgICAgICAgIChXVFI6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV1RS
OjpnZXRNb2RpZmllcnMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjprZXlEb3du
KToKKwogMjAxMS0xMC0xOCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tp
YS5jb20+CiAKICAgICAgICAgW1F0XSBSZW1vdmUgZGVhZCBjb2RlIGluIGJ1aWxkLXdlYmtpdApJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA5NzczNSkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTExLDYgKzExLDcgQEAgbm9pbnN0X1BST0dSQU1TICs9IFwKIFByb2dyYW1zX1dlYktpdFRl
c3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9tYWluLmNw
cCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcCBc
CisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAgXAog
CVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcCBcCiAJVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBcCiAJVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9DeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIFwKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNpb24gOTc3MzUpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFBsYXRmb3JtV2ViVmlld19oCiAKICNpbmNsdWRl
IDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CiAK
ICNpZiBkZWZpbmVkKEJVSUxESU5HX1FUX18pCiBjbGFzcyBRRGVza3RvcFdlYlZpZXc7CkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gOTc3
MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAjaW5jbHVk
ZSAiRXZlbnRTZW5kZXJQcm94eS5oIgogI2VuZGlmCiAKQEAgLTc0LDcgKzc0LDcgQEAgVGVzdENv
bnRyb2xsZXI6OlRlc3RDb250cm9sbGVyKGludCBhcmdjLAogICAgICwgbV9kaWRQcmludFdlYlBy
b2Nlc3NDcmFzaGVkTWVzc2FnZShmYWxzZSkKICAgICAsIG1fc2hvdWxkRXhpdFdoZW5XZWJQcm9j
ZXNzQ3Jhc2hlcyh0cnVlKQogICAgICwgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSh0cnVlKQot
I2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogICAgICwgbV9ldmVudFNlbmRlclByb3h5KG5l
dyBFdmVudFNlbmRlclByb3h5KHRoaXMpKQogI2VuZGlmCiB7CkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA5NzczNSkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogI2lmbmRlZiBUZXN0Q29udHJvbGxlcl9oCiAjZGVmaW5lIFRlc3RDb250cm9sbGVyX2gK
IAorI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJ
KHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclBy
b3h5R3RrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQorICogYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorICog
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXJQcm94eS5oIgorCisjaW5jbHVkZSAi
UGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
IDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxndGsv
Z3RrLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVFIg
eworLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4KK2Vu
dW0gS2V5TG9jYXRpb25Db2RlIHsKKyAgICBET01fS0VZX0xPQ0FUSU9OX1NUQU5EQVJEICAgICAg
PSAweDAwLAorICAgIERPTV9LRVlfTE9DQVRJT05fTEVGVCAgICAgICAgICA9IDB4MDEsCisgICAg
RE9NX0tFWV9MT0NBVElPTl9SSUdIVCAgICAgICAgID0gMHgwMiwKKyAgICBET01fS0VZX0xPQ0FU
SU9OX05VTVBBRCAgICAgICAgPSAweDAzCit9OworCitzdGF0aWMgdm9pZCBkaXNwYXRjaEV2ZW50
KEdka0V2ZW50Kik7CitzdGF0aWMgZ3VpbnQgZ2V0TW9kaWZpZXJzKFdLRXZlbnRNb2RpZmllcnMp
OworCitFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0
ZXN0Q29udHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xsZXIpCit7
Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZlbnQqIGV2ZW50KQoreworICAg
IGd0a19tYWluX2RvX2V2ZW50KGV2ZW50KTsKKyAgICBnZGtfZXZlbnRfZnJlZShldmVudCk7Cit9
CisKK3N0YXRpYyBndWludCBnZXRNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnNS
ZWYpCit7CisgICAgZ3VpbnQgbW9kaWZpZXJzID0gMDsKKworICAgIGlmIChtb2RpZmllcnNSZWYg
JiBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tF
dmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50
TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVy
c1NoaWZ0S2V5OworICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc0FsdEtl
eSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5OworICAgIGlm
IChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkpCisgICAgICAgIG1vZGlm
aWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXk7CisKKyAgICByZXR1cm4gbW9kaWZpZXJz
OworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5UmVm
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5zaWduZWQgbG9jYXRpb24pCit7Cisg
ICAgc2l6ZV90IHNpemUgPSBXS1N0cmluZ0dldExlbmd0aChrZXlSZWYpOworICAgIGNoYXIqIGJ1
ZmZlciA9IG5ldyBjaGFyW3NpemVdOworICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVm
LCBidWZmZXIsIHNpemUpOworCisgICAgZ3VpbnQgbW9kaWZpZXJzID0gZ2V0TW9kaWZpZXJzKG1v
ZGlmaWVyc1JlZik7CisgICAgaW50IGdka0tleVN5bSA9IEdES19LRVlfVm9pZFN5bWJvbDsKKwor
ICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkgeworICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJsZWZ0QXJyb3ciKSkKKyAg
ICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfS1BfTGVmdDsKKyAgICAgICAgZWxzZSBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJyaWdodEFycm9yIikpCisgICAg
ICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0tQX1JpZ2h0OworICAgICAgICBlbHNlIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInVwQXJyb3ciKSkKKyAgICAgICAg
ICAgIGdka0tleVN5bSA9IEdES19LRVlfS1BfVXA7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZG93bkFycm93IikpCisgICAgICAgICAgICBn
ZGtLZXlTeW0gPSBHREtfS0VZX0tQX0Rvd247CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZVVwIikpCisgICAgICAgICAgICBnZGtLZXlT
eW0gPSBHREtfS0VZX0tQX1BhZ2VfVXA7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZURvd24iKSkKKyAgICAgICAgICAgIGdka0tleVN5
bSA9IEdES19LRVlfS1BfUGFnZV9Eb3duOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImhvbWUiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9
IEdES19LRVlfS1BfSG9tZTsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhrZXlSZWYsICJlbmQiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlf
S1BfRW5kOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgImluc2VydCIpKQorICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9LUF9JbnNl
cnQ7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVm
LCAiZGVsZXRlIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0tQX0RlbGV0ZTsK
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhr
ZXlSZWYsICJsZWZ0QXJyb3ciKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfTGVm
dDsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYs
ICJyaWdodEFycm9yIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX1JpZ2h0Owor
ICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInVw
QXJyb3ciKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfVXA7CisgICAgICAgIGVs
c2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZG93bkFycm93Iikp
CisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0Rvd247CisgICAgICAgIGVsc2UgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZVVwIikpCisgICAgICAg
ICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX1BhZ2VfVXA7CisgICAgICAgIGVsc2UgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZURvd24iKSkKKyAgICAgICAgICAg
IGdka0tleVN5bSA9IEdES19LRVlfUGFnZV9Eb3duOworICAgICAgICBlbHNlIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImhvbWUiKSkKKyAgICAgICAgICAgIGdka0tl
eVN5bSA9IEdES19LRVlfSG9tZTsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJlbmQiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19L
RVlfRW5kOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgImluc2VydCIpKQorICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9JbnNlcnQ7
CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
ZGVsZXRlIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0RlbGV0ZTsKKyAgICAg
ICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJwcmludFNj
cmVlbiIpKQorICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9QcmludDsKKyAgICAgICAg
ZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJtZW51IikpCisg
ICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX01lbnU7CisgICAgICAgIGVsc2UgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjEiKSkKKyAgICAgICAgICAgIGdk
a0tleVN5bSA9IEdES19LRVlfRjE7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoa2V5UmVmLCAiRjIiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19L
RVlfRjI7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5
UmVmLCAiRjMiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjM7CisgICAgICAg
IGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjQiKSkKKyAg
ICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjQ7CisgICAgICAgIGVsc2UgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjUiKSkKKyAgICAgICAgICAgIGdka0tl
eVN5bSA9IEdES19LRVlfRjU7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcoa2V5UmVmLCAiRjYiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlf
RjY7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVm
LCAiRjciKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjc7CisgICAgICAgIGVs
c2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjgiKSkKKyAgICAg
ICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjg7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjkiKSkKKyAgICAgICAgICAgIGdka0tleVN5
bSA9IEdES19LRVlfRjk7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoa2V5UmVmLCAiRjEwIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0Yx
MDsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYs
ICJGMTEiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjExOworICAgICAgICBl
bHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxMiIpKQorICAg
ICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9GMTI7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgaW50IGNoYXJDb2RlID0gYnVmZmVyWzBdOworICAgICAgICAgICAgaWYgKGNoYXJDb2Rl
ID09ICdcbicgfHwgY2hhckNvZGUgPT0gJ1xyJykKKyAgICAgICAgICAgICAgICBnZGtLZXlTeW0g
PSBHREtfS0VZX1JldHVybjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoYXJDb2RlID09ICdcdCcp
CisgICAgICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9UYWI7CisgICAgICAgICAgICBl
bHNlIGlmIChjaGFyQ29kZSA9PSAnXHg4JykKKyAgICAgICAgICAgICAgICBnZGtLZXlTeW0gPSBH
REtfS0VZX0JhY2tTcGFjZTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGdk
a0tleVN5bSA9IGdka191bmljb2RlX3RvX2tleXZhbChjaGFyQ29kZSk7CisgICAgICAgICAgICAg
ICAgaWYgKFdURjo6aXNBU0NJSVVwcGVyKGNoYXJDb2RlKSkKKyAgICAgICAgICAgICAgICAgICAg
bW9kaWZpZXJzIHw9IEdES19TSElGVF9NQVNLOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gY3JlYXRlIGFuZCBzZW5kIHRoZSBldmVudAorICAgIEdka0V2ZW50KiBw
cmVzc0V2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfS0VZX1BSRVNTKTsKKyAgICBwcmVzc0V2ZW50
LT5rZXkua2V5dmFsID0gZ2RrS2V5U3ltOworICAgIHByZXNzRXZlbnQtPmtleS5zdGF0ZSA9IG1v
ZGlmaWVyczsKKyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2lu
ZG93KEdUS19XSURHRVQobV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKSkpOworICAgIGdf
b2JqZWN0X3JlZihwcmVzc0V2ZW50LT5rZXkud2luZG93KTsKKworICAgIEdka0tleW1hcEtleSog
a2V5czsKKyAgICBnaW50IG5fa2V5czsKKyAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19m
b3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5U3ltLCAma2V5cywgJm5f
a2V5cykpIHsKKyAgICAgICAgcHJlc3NFdmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlz
WzBdLmtleWNvZGU7CisgICAgICAgIGdfZnJlZShrZXlzKTsKKyAgICB9CisKKyAgICBHZGtFdmVu
dCogcmVsZWFzZUV2ZW50ID0gZ2RrX2V2ZW50X2NvcHkocHJlc3NFdmVudCk7CisgICAgZGlzcGF0
Y2hFdmVudChwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0gR0RLX0tF
WV9SRUxFQVNFOworICAgIGRpc3BhdGNoRXZlbnQocmVsZWFzZUV2ZW50KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111732</attachid>
            <date>2011-10-20 00:19:39 -0700</date>
            <delta_ts>2011-10-21 05:24:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20333</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk3OTQzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTEtMTAtMjAgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5j
dGlvbiBvbiBHdGsgcGxhdGZvcm0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToKKyAgICAgICAgKFdUUjo6Z2V0TW9k
aWZpZXJzKToKKyAgICAgICAgKFdUUjo6Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1X
ZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJW
aWV3OjpkaXNwYXRjaEV2ZW50KToKKwogMjAxMS0xMC0xOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gOTc5MzkpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsx
MSw3IEBAIG5vaW5zdF9QUk9HUkFNUyArPSBcCiBQcm9ncmFtc19XZWJLaXRUZXN0UnVubmVyX1NP
VVJDRVMgPSBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvbWFpbi5jcHAgXAogCVRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAgXAorCVRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIFwKIAlUb29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAgXAogCVRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCBcCkBAIC0yMiwxMSArMjMsMTMgQEAg
UHJvZ3JhbXNfV2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTID0gXAogCVRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
IFwKLQlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKwlUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtWZXJzaW9uaW5nLmMKIAogUHJvZ3JhbXNfV2ViS2l0VGVzdFJ1bm5lcl9DUFBGTEFH
UyA9IFwKIAktaW5jbHVkZSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQ
cmVmaXguaCBcCiAJLUkkKHNyY2RpcikvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lciBcCisJLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrIFwKIAktSSQodG9wX2J1aWxkZGlyKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUgXAogCS1EV0VCS0lUX0VYRUNfUEFUSD1cIiR7
c2hlbGwgcHdkfS8kKHRvcF9idWlsZGRpcikvUHJvZ3JhbXMvXCIgXAogCSQoZ2xvYmFsX2NwcGZs
YWdzKSBcCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgJKHJl
dmlzaW9uIDk3OTM5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQbGF0Zm9ybVdlYlZp
ZXdfaAogCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV2ViS2l0Mi5oPgogCiAjaWYgZGVmaW5lZChCVUlMRElOR19RVF9fKQogY2xhc3MgUURlc2t0
b3BXZWJWaWV3OwpAQCAtNzAsMTUgKzcxLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RFdmVu
dChRRXZlbnQqKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wgZGlzcGF0
Y2hFdmVudChHZGtFdmVudCopOworI2VuZGlmCisKICAgICBXS1JlY3Qgd2luZG93RnJhbWUoKTsK
ICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKFdLUmVjdCk7Ci0gICAgCisKICAgICB2b2lkIGFkZENo
cm9tZUlucHV0RmllbGQoKTsKICAgICB2b2lkIHJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKICAg
ICB2b2lkIG1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIHNldFdpbmRvd0lz
S2V5KGJvb2wgaXNLZXkpIHsgbV93aW5kb3dJc0tleSA9IGlzS2V5OyB9CiAgICAgYm9vbCB3aW5k
b3dJc0tleSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93SXNLZXk7IH0KLSAgICAKKwogICAgIFdL
UmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdpbmRvd1NuYXBzaG90SW1hZ2UoKTsKIAogcHJpdmF0ZToK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biA5NzkzOSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFU
KQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICNp
bmNsdWRlICJFdmVudFNlbmRlclByb3h5LmgiCiAjZW5kaWYKIApAQCAtNzQsNyArNzQsNyBAQCBU
ZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIoaW50IGFyZ2MsCiAgICAgLCBtX2RpZFByaW50
V2ViUHJvY2Vzc0NyYXNoZWRNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRFeGl0V2hlbldl
YlByb2Nlc3NDcmFzaGVzKHRydWUpCiAgICAgLCBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVlKHRy
dWUpCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgLCBtX2V2ZW50U2VuZGVyUHJv
eHkobmV3IEV2ZW50U2VuZGVyUHJveHkodGhpcykpCiAjZW5kaWYKIHsKQEAgLTU0MCw3ICs1NDAs
NyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAKIFdLUmV0YWlu
UHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBt
ZXNzYWdlQm9keSkKIHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkV2ZW50U2VuZGVyIikpIHsK
ICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlH
ZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25h
cnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKQEAgLTU2NSw2
ICs1NjUsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShRVCkKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVz
c2FnZU5hbWUsICJNb3VzZURvd24iKSB8fCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1
Yk1lc3NhZ2VOYW1lLCAiTW91c2VVcCIpKSB7CiAgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gYnV0dG9uS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQnV0dG9uIikpOwogICAgICAgICAgICAgdW5zaWduZWQgYnV0dG9uID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBidXR0b25LZXkuZ2V0
KCkpKSkpOwpAQCAtNjE3LDcgKzYxOCw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENv
bnRyb2xsZXI6OmQKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQo
dGltZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA5NzkzOSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBUZXN0Q29udHJvbGxlcl9oCiAjZGVmaW5lIFRlc3RDb250cm9sbGVy
X2gKIAorI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tS
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5j
cHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRl
clByb3h5R3RrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IFphbiBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29tPgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9s
YSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRXZlbnRTZW5kZXJQcm94eS5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJW
aWV3LmgiCisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+
CisjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVFIgeworLy8gS2V5IGV2
ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4KK2VudW0gS2V5TG9jYXRp
b25Db2RlIHsKKyAgICBET01LZXlMb2NhdGlvblN0YW5kYXJkICAgICAgPSAweDAwLAorICAgIERP
TUtleUxvY2F0aW9uTGVmdCAgICAgICAgICA9IDB4MDEsCisgICAgRE9NS2V5TG9jYXRpb25SaWdo
dCAgICAgICAgID0gMHgwMiwKKyAgICBET01LZXlMb2NhdGlvbk51bXBhZCAgICAgICAgPSAweDAz
Cit9OworCitFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVy
KiB0ZXN0Q29udHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xsZXIp
Cit7Cit9CisKK3N0YXRpYyBndWludCBnZXRNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnNSZWYpCit7CisgICAgZ3VpbnQgbW9kaWZpZXJzID0gMDsKKworICAgIGlmIChtb2RpZmll
cnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpCisgICAgICAgIG1vZGlmaWVycyB8
PSBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtX
S0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1v
ZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVy
c0FsdEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5Owor
ICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkpCisgICAgICAg
IG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXk7CisKKyAgICByZXR1cm4gbW9k
aWZpZXJzOworfQorCitpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJl
ZiwgdW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2RpZmllcnMpCit7CisgICAgaW50IGdka0tl
eVN5bSA9IEdES19LRVlfVm9pZFN5bWJvbDsKKworICAgIGlmIChsb2NhdGlvbiA9PSBET01LZXlM
b2NhdGlvbk51bXBhZCkgeworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhrZXlSZWYsICJsZWZ0QXJyb3ciKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlf
S1BfTGVmdDsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhr
ZXlSZWYsICJyaWdodEFycm9yIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0tQ
X1JpZ2h0OworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgInVwQXJyb3ciKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfS1BfVXA7
CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
ZG93bkFycm93IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0tQX0Rvd247Cisg
ICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFn
ZVVwIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0tQX1BhZ2VfVXA7CisgICAg
ICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZURv
d24iKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfS1BfUGFnZV9Eb3duOworICAg
ICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImhvbWUi
KSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfS1BfSG9tZTsKKyAgICAgICAgZWxz
ZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJlbmQiKSkKKyAgICAg
ICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfS1BfRW5kOworICAgICAgICBlbHNlIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImluc2VydCIpKQorICAgICAgICAgICAg
Z2RrS2V5U3ltID0gR0RLX0tFWV9LUF9JbnNlcnQ7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZGVsZXRlIikpCisgICAgICAgICAgICBnZGtL
ZXlTeW0gPSBHREtfS0VZX0tQX0RlbGV0ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJsZWZ0QXJyb3ciKSkKKyAgICAgICAg
ICAgIGdka0tleVN5bSA9IEdES19LRVlfTGVmdDsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJyaWdodEFycm9yIikpCisgICAgICAgICAgICBn
ZGtLZXlTeW0gPSBHREtfS0VZX1JpZ2h0OworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInVwQXJyb3ciKSkKKyAgICAgICAgICAgIGdka0tleVN5
bSA9IEdES19LRVlfVXA7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoa2V5UmVmLCAiZG93bkFycm93IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtf
S0VZX0Rvd247CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
a2V5UmVmLCAicGFnZVVwIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX1BhZ2Vf
VXA7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVm
LCAicGFnZURvd24iKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfUGFnZV9Eb3du
OworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwg
ImhvbWUiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfSG9tZTsKKyAgICAgICAg
ZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJlbmQiKSkKKyAg
ICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRW5kOworICAgICAgICBlbHNlIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImluc2VydCIpKQorICAgICAgICAgICAg
Z2RrS2V5U3ltID0gR0RLX0tFWV9JbnNlcnQ7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZGVsZXRlIikpCisgICAgICAgICAgICBnZGtLZXlT
eW0gPSBHREtfS0VZX0RlbGV0ZTsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJwcmludFNjcmVlbiIpKQorICAgICAgICAgICAgZ2RrS2V5U3lt
ID0gR0RLX0tFWV9QcmludDsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhrZXlSZWYsICJtZW51IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZ
X01lbnU7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5
UmVmLCAiRjEiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjE7CisgICAgICAg
IGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjIiKSkKKyAg
ICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjI7CisgICAgICAgIGVsc2UgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjMiKSkKKyAgICAgICAgICAgIGdka0tl
eVN5bSA9IEdES19LRVlfRjM7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcoa2V5UmVmLCAiRjQiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlf
RjQ7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVm
LCAiRjUiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjU7CisgICAgICAgIGVs
c2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjYiKSkKKyAgICAg
ICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjY7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjciKSkKKyAgICAgICAgICAgIGdka0tleVN5
bSA9IEdES19LRVlfRjc7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoa2V5UmVmLCAiRjgiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjg7
CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
RjkiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfRjk7CisgICAgICAgIGVsc2Ug
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjEwIikpCisgICAgICAg
ICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0YxMDsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMTEiKSkKKyAgICAgICAgICAgIGdka0tleVN5
bSA9IEdES19LRVlfRjExOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKGtleVJlZiwgIkYxMiIpKQorICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9G
MTI7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2l6ZV90IHN0cmluZ1NpemUgPSBXS1N0
cmluZ0dldExlbmd0aChrZXlSZWYpOworICAgICAgICAgICAgY2hhciogYnVmZmVyID0gbmV3IGNo
YXJbc3RyaW5nU2l6ZV07CisgICAgICAgICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtleVJl
ZiwgYnVmZmVyLCBzdHJpbmdTaXplKTsKKyAgICAgICAgICAgIGludCBjaGFyQ29kZSA9IGJ1ZmZl
clswXTsKKworICAgICAgICAgICAgaWYgKGNoYXJDb2RlID09ICdcbicgfHwgY2hhckNvZGUgPT0g
J1xyJykKKyAgICAgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX1JldHVybjsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGNoYXJDb2RlID09ICdcdCcpCisgICAgICAgICAgICAgICAgZ2RrS2V5
U3ltID0gR0RLX0tFWV9UYWI7CisgICAgICAgICAgICBlbHNlIGlmIChjaGFyQ29kZSA9PSAnXHg4
JykKKyAgICAgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0JhY2tTcGFjZTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGdka0tleVN5bSA9IGdka191bmljb2RlX3Rv
X2tleXZhbChjaGFyQ29kZSk7CisgICAgICAgICAgICAgICAgaWYgKFdURjo6aXNBU0NJSVVwcGVy
KGNoYXJDb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgKm1vZGlmaWVycyB8PSBHREtfU0hJRlRf
TUFTSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBnZGtL
ZXlTeW07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBr
ZXlSZWYsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzUmVmLCB1bnNpZ25lZCBsb2NhdGlvbikK
K3sKKyAgICBndWludCBtb2RpZmllcnMgPSBnZXRNb2RpZmllcnMobW9kaWZpZXJzUmVmKTsKKyAg
ICBpbnQgZ2RrS2V5U3ltID0gZ2V0R0RLS2V5U3ltRm9yS2V5UmVmKGtleVJlZiwgbG9jYXRpb24s
ICZtb2RpZmllcnMpOworCisgICAgLy8gQ3JlYXRlIGFuZCBzZW5kIHRoZSBldmVudC4KKyAgICBH
ZGtFdmVudCogcHJlc3NFdmVudCA9IGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUyk7CisgICAg
cHJlc3NFdmVudC0+a2V5LmtleXZhbCA9IGdka0tleVN5bTsKKyAgICBwcmVzc0V2ZW50LT5rZXku
c3RhdGUgPSBtb2RpZmllcnM7CisKKyAgICBHZGtLZXltYXBLZXkqIGtleXM7CisgICAgZ2ludCBu
S2V5czsKKyAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXlt
YXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5U3ltLCAma2V5cywgJm5LZXlzKSkgeworICAgICAgICBw
cmVzc0V2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXNbMF0ua2V5Y29kZTsKKyAgICAg
ICAgZ19mcmVlKGtleXMpOworICAgIH0KKworICAgIEdka0V2ZW50KiByZWxlYXNlRXZlbnQgPSBn
ZGtfZXZlbnRfY29weShwcmVzc0V2ZW50KTsKKyAgICBtX3Rlc3RDb250cm9sbGVyLT5tYWluV2Vi
VmlldygpLT5kaXNwYXRjaEV2ZW50KHByZXNzRXZlbnQpOworICAgIHJlbGVhc2VFdmVudC0+a2V5
LnR5cGUgPSBHREtfS0VZX1JFTEVBU0U7CisgICAgbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZp
ZXcoKS0+ZGlzcGF0Y2hFdmVudChyZWxlYXNlRXZlbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJW
aWV3R3RrLmNwcAkocmV2aXNpb24gOTc5MzkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0
ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAKKyNp
bmNsdWRlIDxHdGtWZXJzaW9uaW5nLmg+CisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUg
PGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiBuYW1lc3BhY2UgV1RS
IHsKQEAgLTExNyw1ICsxMjAsMjAgQEAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1X
ZWJWaWV3OgogICAgIHJldHVybiAwOwogfQogCitib29sIFBsYXRmb3JtV2ViVmlldzo6ZGlzcGF0
Y2hFdmVudChHZGtFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlID09IEdES19L
RVlfUFJFU1MgfHwgZXZlbnQtPnR5cGUgPT0gR0RLX0tFWV9SRUxFQVNFKSB7CisgICAgICAgIGV2
ZW50LT5rZXkud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV92aWV3
KSk7CisgICAgICAgIGdfb2JqZWN0X3JlZihldmVudC0+a2V5LndpbmRvdyk7CisjaWZuZGVmIEdU
S19BUElfVkVSU0lPTl8yCisgICAgICAgIGdka19ldmVudF9zZXRfZGV2aWNlKGV2ZW50LCBnZXRE
ZWZhdWx0R0RLUG9pbnRlckRldmljZShldmVudC0+a2V5LndpbmRvdykpOworI2VuZGlmCisgICAg
fQorCisgICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQpOworICAgIGdka19ldmVudF9mcmVlKGV2
ZW50KTsKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCiAKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDk3OTQzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMjAgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVz
dHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVu
Y3Rpb24gZm9yIFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIFVuc2tpcCBwYXNzZWQgdGVz
dHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGstd2syL1NraXBwZWQ6CisKIDIwMTEtMTAtMTkgIENzYWJhIE9zenRyb2dvbsOh
YyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgbW9ybmluZyBn
YXJkbmluZy4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQJKHJldmlzaW9u
IDk3OTM5KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCSh3b3JraW5n
IGNvcHkpCkBAIC04NywxOCArODcsMTIgQEAgZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUu
aHRtbAogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi16SW5kZXgtYWZ0ZXIuaHRtbAogcGx1Z2lucy9m
dWxsc2NyZWVuLXBsdWdpbnMtZG9udC1yZWxvYWQuaHRtbAogcGx1Z2lucy9rZXlib2FyZC1ldmVu
dHMuaHRtbAotZmFzdC9kb20vSFRNTFNlbGVjdEVsZW1lbnQvY2xpY2stc2l6ZS16ZXJvLW5vLWNy
YXNoLmh0bWwKIGZhc3QvZG9tL2FjY2Vzcy1rZXktaWZyYW1lLmh0bWwKIGZhc3QvZG9tL2hpZGRl
bi1pZnJhbWUtbm8tZm9jdXMuaHRtbAotZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4t
cnRsLmh0bWwKIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAotZmFzdC9l
dmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLmh0bWwKLWZhc3QvZXZlbnRzL2F0dGVtcHQtc2Vs
ZWN0LWFsbC13aXRoLXdyb25nLW1vZGlmaWVyLmh0bWwKLWZhc3QvZXZlbnRzL2tleWV2ZW50LWlm
cmFtZS1yZW1vdmVkLWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRzL2tleS1ldmVudHMtaW4taW5wdXQt
dGV4dC5odG1sCiBmYXN0L2V2ZW50cy9pbWFnZW1hcC1ub3JlbmRlci1jcmFzaC5odG1sCiBmYXN0
L2V2ZW50cy9zcGVjaWFsLWtleS1ldmVudHMtaW4taW5wdXQtdGV4dC5odG1sCi1mYXN0L2V2ZW50
cy9zZWxlY3QtZWxlbWVudC5odG1sCiBmYXN0L2V2ZW50cy9hY2Nlc3Mta2V5LXNlbGYtZGVzdHJ1
Y3QuaHRtbAogZmFzdC9ldmVudHMvbXVsdGlsaW5lLWxpbmstYXJyb3ctbmF2aWdhdGlvbi5odG1s
CiBmYXN0L2V2ZW50cy9jaGVjay1kZWZvY3VzLWV2ZW50LW9yZGVyLXdoZW4tdHJpZ2dlcmVkLWJ5
LXRhYi5odG1sCkBAIC0xMDcsMjAgKzEwMSwxNiBAQCBmYXN0L2V2ZW50cy9zZWxlY3Rpb25jaGFu
Z2UtdXNlci1pbml0aWF0CiBmYXN0L2V2ZW50cy9zY3JvbGwtYWZ0ZXItY2xpY2stb24tdGFiLWlu
ZGV4Lmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMuaHRtbAogZmFz
dC9ldmVudHMvdGFiLWlzLWZvY3VzYWJsZS1hc3NlcnQuaHRtbAotZmFzdC9ldmVudHMva2V5ZG93
bi1rZXlwcmVzcy1wcmV2ZW50RGVmYXVsdC5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLTEuaHRt
bAogZmFzdC9ldmVudHMvZm9jdXNpbmdVbmxvYWRlZEZyYW1lLmh0bWwKIGZhc3QvZXZlbnRzL29u
c2VhcmNoLWVudGVyLmh0bWwKIGZhc3QvZXZlbnRzL2lucHV0VGV4dC1uZXZlci1maXJlZC1vbi1r
ZXlkb3duLWNhbmNlbC5odG1sCiBmYXN0L2V2ZW50cy9rZXlkb3duLW51bXBhZC1rZXlzLmh0bWwK
LWZhc3QvZXZlbnRzL3NlbGVjdC1vbmNoYW5nZS1jcmFzaC5odG1sCiBmYXN0L2V2ZW50cy9zZWxl
Y3RzdGFydC1ieS1hcnJvdy1rZXlzLXByZXZlbnQtZGVmYXVsdC5odG1sCiBmYXN0L2V2ZW50cy9v
bmNoYW5nZS10ZXh0ZmllbGQuaHRtbAogZmFzdC9ldmVudHMvbWVkaWEtZWxlbWVudC1mb2N1cy10
YWIuaHRtbAogZmFzdC9ldmVudHMvZm9jdXMtY2hhbmdlLWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRz
L3RhYmluZGV4LWZvY3VzLWNoYWluLmh0bWwKIGZhc3QvZXZlbnRzL25vZGUtZXZlbnQtYW5jaG9y
LWxvY2suaHRtbAotZmFzdC9ldmVudHMvYXJyb3ctbmF2aWdhdGlvbi5odG1sCiBmYXN0L2V2ZW50
cy9rZXlkb3duLWtleXByZXNzLWZvY3VzLWNoYW5nZS5odG1sCiBmYXN0L2V2ZW50cy9qcy1rZXli
b2FyZC1ldmVudC1jcmVhdGlvbi5odG1sCiBmYXN0L2V2ZW50cy90YWItZm9jdXMtaGlkZGVuLmh0
bWwKQEAgLTEzMSwxNiArMTIxLDkgQEAgZmFzdC9ldmVudHMvY2hlY2stZGVmb2N1cy1ldmVudC1v
cmRlci13aAogZmFzdC9ldmVudHMvb25jaGFuZ2Utc2VsZWN0LXBvcHVwLmh0bWwKIGZhc3QvZXZl
bnRzL29uY2hhbmdlLXNlYXJjaGZpZWxkLmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdlLXRleHQt
Zm9ybS1maWVsZC5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLXJlbW92ZS1mcmFtZS5odG1sCiBm
YXN0L2V2ZW50cy9rZXlwcmVzcy1mb2N1cy1jaGFuZ2UuaHRtbAotZmFzdC9ldmVudHMva2V5ZG93
bi1mdW5jdGlvbi1rZXlzLmh0bWwKLWZhc3QvZXZlbnRzL3NwYWNlLXNjcm9sbC1ldmVudC5odG1s
Ci1mYXN0L2V2ZW50cy9hcnJvdy1rZXlzLW9uLWJvZHkuaHRtbAotZmFzdC9ldmVudHMvcmVjb3Jk
ZWQta2V5ZG93bi1ldmVudC5odG1sCiBmYXN0L2V2ZW50cy9wb3B1cC13aGVuLXNlbGVjdC1jaGFu
Z2UuaHRtbAogZmFzdC9ldmVudHMvdGFiLWltYWdlbWFwLmh0bWwKLWZhc3QvZXZlbnRzL21lbnUt
a2V5ZG93bi1vbi1oaWRkZW4tZWxlbWVudC5odG1sCi1mYXN0L2V2ZW50cy9hbmNob3ItZW1wdHkt
Zm9jdXMuaHRtbAogZmFzdC9ldmVudHMva2V5LWV2ZW50cy1pbi1pbnB1dC1idXR0b24uaHRtbAog
ZmFzdC9yZXBhaW50L2ZpeGVkLW1vdmUtYWZ0ZXIta2V5Ym9hcmQtc2Nyb2xsLmh0bWwKIGZhc3Qv
Zm9ybXMvb25jaGFuZ2UtZW50ZXItc3VibWl0Lmh0bWwKQEAgLTIwMCw5ICsxODMsNyBAQCBlZGl0
aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEuaHRtCiBlZGl0aW5nL2RlbGV0aW5nL2Rl
bGV0ZS1ieS13b3JkLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0w
MDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9za2lwLXZpcmFtYS0wMDEuaHRtbAotZWRpdGluZy9k
ZWxldGluZy9mb3J3YXJkLWRlbGV0ZS1rZXkuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUt
Ynktd29yZC0wMDIuaHRtbAotZWRpdGluZy9kZWxldGluZy81NzI5NjgwLmh0bWwKIGVkaXRpbmcv
aW5zZXJ0aW5nL3R5cGluZy10YWItZGVzaWdubW9kZS1mb3Jtcy5odG1sCiBlZGl0aW5nL2luc2Vy
dGluZy90eXBpbmctdGFiLWRlc2lnbm1vZGUuaHRtbAogZWRpdGluZy91bmRvL3VuZG8tZGVsZXRl
V29yZC5odG1sCkBAIC0yMTUsNyArMTk2LDYgQEAgZWRpdGluZy9pbnB1dC9lbWFjcy1jdHJsLW8u
aHRtbAogZWRpdGluZy9pbnB1dC9zY3JvbGwtdmlld3BvcnQtcGFnZS11cC1kb3duLmh0bWwKIGVk
aXRpbmcvaW5wdXQvb3B0aW9uLXBhZ2UtdXAtZG93bi5odG1sCiBlZGl0aW5nL2lucHV0L3N0eWxl
LWNoYW5nZS1kdXJpbmctaW5wdXQuaHRtbAotZWRpdGluZy9pbnB1dC9wYWdlLXVwLWRvd24tc2Ny
b2xscy5odG1sCiAKICMgW0dUS10gSW1wbGVtZW50IGRyYWcgYW5kIGRyb3Agc3VwcG9ydCBpbiBX
ZWJLaXQyCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzcwNgpA
QCAtMzkxLDcgKzM3MSw2IEBAIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAogZmFz
dC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLmh0bWwKIGZhc3QvZXZlbnRzL3Jlc291
cmNlcy9kcmFnLW91dHNpZGUtd2luZG93LWZyYW1lLmh0bWwKIGZhc3QvZXZlbnRzL21vdXNlb3Zl
ci1tb3VzZW91dDIuaHRtbAotZmFzdC9ldmVudHMvbm9kZS1ldmVudC1hbmNob3ItbG9jay5odG1s
CiBmYXN0L2V2ZW50cy9tb3VzZW92ZXItYnV0dG9uLmh0bWwKIGZhc3QvZXZlbnRzL2NsaWNrLWZv
Y3VzLWFuY2hvci5odG1sCiBmYXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTguaHRtbApA
QCAtNjE1LDEwICs1OTQsOCBAQCBlZGl0aW5nL3NlbGVjdGlvbi81MjA5OTg0Lmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL2NhcmV0LWF0LWJpZGktYm91bmRhcnkuaHRtbAogZWRpdGluZy9zZWxlY3Rp
b24vZmFrZS1kcmFnLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3BhcmFncmFwaC1ncmFudWxhcml0
eS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81MTMxNzE2LTMuaHRtbAogZWRpdGluZy9zZWxlY3Rp
b24vYWZ0ZXItbGluZS1icmVhay5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hbmNob3ItZm9jdXMz
Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uLzUwNTc1MDYtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9hbmNob3ItZm9jdXMxLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4cGFuZGluZy1zZWxlY3Rp
b25zLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUyMzIxNTkuaHRtbAo=
</data>
<flag name="review"
          id="109634"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111951</attachid>
            <date>2011-10-21 05:24:28 -0700</date>
            <delta_ts>2011-10-21 20:48:48 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17362</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk4MDk0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMTAtMjEgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5jdGlvbiBvbiBHdGsgcGxhdGZv
cm0uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXVFI6OmdldE1vZGlmaWVy
cyk6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorCiAyMDExLTEwLTIxICBTaW1vbiBIYXVzbWFu
biAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZW1vdmUgUXRTY3JpcHQg
c291cmNlIGNvZGUgZnJvbSBXZWJLaXQuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dO
VW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDk4MDk0KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVt
YWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTAsNiArMTAsNyBAQCBub2luc3RfUFJPR1JB
TVMgKz0gXAogCiBQcm9ncmFtc19XZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMgPSBcCiAJVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9ndGsvbWFpbi5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Z3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0
ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9U
ZXN0Q29udHJvbGxlckd0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVz
dEludm9jYXRpb25DYWlyby5jcHAgXApAQCAtMjIsMTEgKzIzLDEzIEBAIFByb2dyYW1zX1dlYktp
dFRlc3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIFwK
IAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBcCi0JVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lv
bmluZy5jCiAKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfQ1BQRkxBR1MgPSBcCiAJLWluY2x1
ZGUgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1J
JChzcmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9pbmNsdWRlIFwKIAktRFdFQktJVF9FWEVDX1BBVEg9XCIke3NoZWxsIHB3ZH0vJCh0
b3BfYnVpbGRkaXIpL1Byb2dyYW1zL1wiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk4MDk0
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUg
IkV2ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCkBAIC03NCw3ICs3NCw3IEBAIFRlc3RDb250
cm9sbGVyOjpUZXN0Q29udHJvbGxlcihpbnQgYXJnYywKICAgICAsIG1fZGlkUHJpbnRXZWJQcm9j
ZXNzQ3Jhc2hlZE1lc3NhZ2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEV4aXRXaGVuV2ViUHJvY2Vz
c0NyYXNoZXModHJ1ZSkKICAgICAsIG1fYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUodHJ1ZSkKLSNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICAsIG1fZXZlbnRTZW5kZXJQcm94eShuZXcg
RXZlbnRTZW5kZXJQcm94eSh0aGlzKSkKICNlbmRpZgogewpAQCAtNTQwLDcgKzU0MCw3IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnIKIAogV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VC
b2R5KQogewotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRXZlbnRTZW5kZXIiKSkgewogICAgICAg
ICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJ
RCgpKTsKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0
YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOwpAQCAtNTY1LDYgKzU2NSw3
IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmQKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICB9CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFU
KQogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFt
ZSwgIk1vdXNlRG93biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2Fn
ZU5hbWUsICJNb3VzZVVwIikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBidXR0b25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCdXR0
b24iKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBidXR0b24gPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGJ1dHRvbktleS5nZXQoKSkpKSk7
CkBAIC02MTcsNyArNjE4LDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxl
cjo6ZAogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5sZWFwRm9yd2FyZCh0aW1lKTsK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0KKyNlbmRpZgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDEwIEln
YWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50
U2VuZGVyUHJveHkuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUg
IlRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8R3RrVmVyc2lvbmluZy5oPgorI2luY2x1ZGUg
PGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgorI2luY2x1ZGUgPGd0ay9n
dGsuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdUUiB7
CisvLyBLZXkgZXZlbnQgbG9jYXRpb24gY29kZSBkZWZpbmVkIGluIERPTSBMZXZlbCAzLgorZW51
bSBLZXlMb2NhdGlvbkNvZGUgeworICAgIERPTUtleUxvY2F0aW9uU3RhbmRhcmQgICAgICA9IDB4
MDAsCisgICAgRE9NS2V5TG9jYXRpb25MZWZ0ICAgICAgICAgID0gMHgwMSwKKyAgICBET01LZXlM
b2NhdGlvblJpZ2h0ICAgICAgICAgPSAweDAyLAorICAgIERPTUtleUxvY2F0aW9uTnVtcGFkICAg
ICAgICA9IDB4MDMKK307CisKK0V2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVz
dENvbnRyb2xsZXIqIHRlc3RDb250cm9sbGVyKQorICAgIDogbV90ZXN0Q29udHJvbGxlcih0ZXN0
Q29udHJvbGxlcikKK3sKK30KKworYm9vbCBkaXNwYXRjaEV2ZW50KEdka0V2ZW50KiBldmVudCkK
K3sKKyAgICBndGtfbWFpbl9kb19ldmVudChldmVudCk7CisgICAgZ2RrX2V2ZW50X2ZyZWUoZXZl
bnQpOworICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBndWludCBnZXRNb2RpZmllcnMoV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnNSZWYpCit7CisgICAgZ3VpbnQgbW9kaWZpZXJzID0gMDsK
KworICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYg
KG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIG1vZGlm
aWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChtb2RpZmllcnNSZWYg
JiBrV0tFdmVudE1vZGlmaWVyc0FsdEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50
TW9kaWZpZXJzQWx0S2V5OworICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVy
c01ldGFLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXk7
CisKKyAgICByZXR1cm4gbW9kaWZpZXJzOworfQorCitpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5UmVm
KFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2RpZmllcnMp
Cit7CisgICAgaWYgKGxvY2F0aW9uID09IERPTUtleUxvY2F0aW9uTnVtcGFkKSB7CisgICAgICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImxlZnRBcnJvdyIpKQor
ICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfTGVmdDsKKyAgICAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicmlnaHRBcnJvciIpKQorICAgICAgICAgICAg
cmV0dXJuIEdES19LRVlfS1BfUmlnaHQ7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGtleVJlZiwgInVwQXJyb3ciKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZ
X0tQX1VwOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYs
ICJkb3duQXJyb3ciKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX0Rvd247CisgICAg
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBhZ2VVcCIpKQor
ICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfUGFnZV9VcDsKKyAgICAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZURvd24iKSkKKyAgICAgICAgICAg
IHJldHVybiBHREtfS0VZX0tQX1BhZ2VfRG93bjsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaG9tZSIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19L
RVlfS1BfSG9tZTsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5
UmVmLCAiZW5kIikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9FbmQ7CisgICAgICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImluc2VydCIpKQorICAg
ICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfSW5zZXJ0OworICAgICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkZWxldGUiKSkKKyAgICAgICAgICAgIHJldHVy
biBHREtfS0VZX0tQX0RlbGV0ZTsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gR0RLX0tF
WV9Wb2lkU3ltYm9sOworICAgIH0gCisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcoa2V5UmVmLCAibGVmdEFycm93IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0xl
ZnQ7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicmlnaHRB
cnJvciIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9SaWdodDsKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJ1cEFycm93IikpCisgICAgICAgIHJldHVybiBH
REtfS0VZX1VwOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwg
ImRvd25BcnJvdyIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9Eb3duOworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAgICByZXR1
cm4gR0RLX0tFWV9QYWdlX1VwOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgInBhZ2VEb3duIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX1BhZ2VfRG93bjsK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJob21lIikpCisg
ICAgICAgIHJldHVybiBHREtfS0VZX0hvbWU7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcoa2V5UmVmLCAiZW5kIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0VuZDsKKyAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJpbnNlcnQiKSkKKyAg
ICAgICAgcmV0dXJuIEdES19LRVlfSW5zZXJ0OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9EZWxl
dGU7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicHJpbnRT
Y3JlZW4iKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfUHJpbnQ7CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibWVudSIpKQorICAgICAgICByZXR1cm4gR0RL
X0tFWV9NZW51OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwg
IkYxIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YxOworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYyIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Yy
OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYzIikpCisg
ICAgICAgIHJldHVybiBHREtfS0VZX0YzOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKGtleVJlZiwgIkY0IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y0OworICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY1IikpCisgICAgICAgIHJl
dHVybiBHREtfS0VZX0Y1OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgIkY2IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y2OworICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY3IikpCisgICAgICAgIHJldHVybiBHREtf
S0VZX0Y3OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY4
IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y4OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgIkY5IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y5Owor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxMCIpKQorICAg
ICAgICByZXR1cm4gR0RLX0tFWV9GMTA7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoa2V5UmVmLCAiRjExIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YxMTsKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMTIiKSkKKyAgICAgICAg
cmV0dXJuIEdES19LRVlfRjEyOworICAgICAgICAgICAgCisgICAgc2l6ZV90IHN0cmluZ1NpemUg
PSBXS1N0cmluZ0dldExlbmd0aChrZXlSZWYpOworICAgIGNoYXIqIGJ1ZmZlciA9IG5ldyBjaGFy
W3N0cmluZ1NpemVdOworICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIs
IHN0cmluZ1NpemUpOworICAgIGludCBjaGFyQ29kZSA9IGJ1ZmZlclswXTsKKyAgICAKKyAgICBp
ZiAoY2hhckNvZGUgPT0gJ1xuJyB8fCBjaGFyQ29kZSA9PSAnXHInKQorICAgICAgICByZXR1cm4g
R0RLX0tFWV9SZXR1cm47CisgICAgaWYgKGNoYXJDb2RlID09ICdcdCcpCisgICAgICAgIHJldHVy
biBHREtfS0VZX1RhYjsKKyAgICBpZiAoY2hhckNvZGUgPT0gJ1x4OCcpCisgICAgICAgIHJldHVy
biBHREtfS0VZX0JhY2tTcGFjZTsKKworICAgIGlmIChXVEY6OmlzQVNDSUlVcHBlcihjaGFyQ29k
ZSkpCisgICAgICAgICptb2RpZmllcnMgfD0gR0RLX1NISUZUX01BU0s7CisKKyAgICByZXR1cm4g
Z2RrX3VuaWNvZGVfdG9fa2V5dmFsKGNoYXJDb2RlKTsKK30KKwordm9pZCBFdmVudFNlbmRlclBy
b3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleVJlZiwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnNSZWYsIHVuc2lnbmVkIGxvY2F0aW9uKQoreworICAgIGd1aW50IG1vZGlmaWVycyA9IGdldE1v
ZGlmaWVycyhtb2RpZmllcnNSZWYpOworICAgIGludCBnZGtLZXlTeW0gPSBnZXRHREtLZXlTeW1G
b3JLZXlSZWYoa2V5UmVmLCBsb2NhdGlvbiwgJm1vZGlmaWVycyk7CisKKyAgICBHZGtFdmVudCog
cHJlc3NFdmVudCA9IGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUyk7CisgICAgcHJlc3NFdmVu
dC0+a2V5LmtleXZhbCA9IGdka0tleVN5bTsKKyAgICBwcmVzc0V2ZW50LT5rZXkuc3RhdGUgPSBt
b2RpZmllcnM7CisgICAgcHJlc3NFdmVudC0+a2V5LndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dp
bmRvdyhHVEtfV0lER0VUKG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpKSk7CisgICAgZ19vYmplY3RfcmVmKHByZXNzRXZlbnQtPmtleS53aW5kb3cpOworICAg
IGdka19ldmVudF9zZXRfZGV2aWNlKHByZXNzRXZlbnQsIGdldERlZmF1bHRHREtQb2ludGVyRGV2
aWNlKHByZXNzRXZlbnQtPmtleS53aW5kb3cpKTsKKworICAgIEdka0tleW1hcEtleSoga2V5czsK
KyAgICBnaW50IG5LZXlzOworICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2
YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBnZGtLZXlTeW0sICZrZXlzLCAmbktleXMpKSB7
CisgICAgICAgIHByZXNzRXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5c1swXS5rZXlj
b2RlOworICAgICAgICBnX2ZyZWUoa2V5cyk7CisgICAgfQorCisgICAgR2RrRXZlbnQqIHJlbGVh
c2VFdmVudCA9IGdka19ldmVudF9jb3B5KHByZXNzRXZlbnQpOworICAgIGRpc3BhdGNoRXZlbnQo
cHJlc3NFdmVudCk7CisgICAgcmVsZWFzZUV2ZW50LT5rZXkudHlwZSA9IEdES19LRVlfUkVMRUFT
RTsKKyAgICBkaXNwYXRjaEV2ZW50KHJlbGVhc2VFdmVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdUUgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTgwOTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yMSAgS2F1c3R1YmggQXRy
YXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgS2V5RG93biBmdW5jdGlvbiBmb3IgV2ViS2l0MiBFdmVudFNlbmRlci4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDEwCisKKyAgICAgICAgVW5z
a2lwIHBhc3NlZCB0ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvU2tpcHBlZDoKKwogMjAxMS0xMC0yMSAgWm9s
dGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIGZhc3QvZXZl
bnRzL3RvdWNoL3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBpcyBmYWlsaW5n
IApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAkocmV2aXNpb24gOTgwOTQp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkK
QEAgLTg3LDE4ICs4NywxMiBAQCBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS5odG1sCiBm
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXpJbmRleC1hZnRlci5odG1sCiBwbHVnaW5zL2Z1bGxzY3Jl
ZW4tcGx1Z2lucy1kb250LXJlbG9hZC5odG1sCiBwbHVnaW5zL2tleWJvYXJkLWV2ZW50cy5odG1s
Ci1mYXN0L2RvbS9IVE1MU2VsZWN0RWxlbWVudC9jbGljay1zaXplLXplcm8tbm8tY3Jhc2guaHRt
bAogZmFzdC9kb20vYWNjZXNzLWtleS1pZnJhbWUuaHRtbAogZmFzdC9kb20vaGlkZGVuLWlmcmFt
ZS1uby1mb2N1cy5odG1sCi1mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRt
bAogZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCi1mYXN0L2V2ZW50cy9r
ZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbAotZmFzdC9ldmVudHMvYXR0ZW1wdC1zZWxlY3QtYWxs
LXdpdGgtd3JvbmctbW9kaWZpZXIuaHRtbAotZmFzdC9ldmVudHMva2V5ZXZlbnQtaWZyYW1lLXJl
bW92ZWQtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMva2V5LWV2ZW50cy1pbi1pbnB1dC10ZXh0Lmh0
bWwKIGZhc3QvZXZlbnRzL2ltYWdlbWFwLW5vcmVuZGVyLWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRz
L3NwZWNpYWwta2V5LWV2ZW50cy1pbi1pbnB1dC10ZXh0Lmh0bWwKLWZhc3QvZXZlbnRzL3NlbGVj
dC1lbGVtZW50Lmh0bWwKIGZhc3QvZXZlbnRzL2FjY2Vzcy1rZXktc2VsZi1kZXN0cnVjdC5odG1s
CiBmYXN0L2V2ZW50cy9tdWx0aWxpbmUtbGluay1hcnJvdy1uYXZpZ2F0aW9uLmh0bWwKIGZhc3Qv
ZXZlbnRzL2NoZWNrLWRlZm9jdXMtZXZlbnQtb3JkZXItd2hlbi10cmlnZ2VyZWQtYnktdGFiLmh0
bWwKQEAgLTEwNywyMCArMTAxLDE2IEBAIGZhc3QvZXZlbnRzL3NlbGVjdGlvbmNoYW5nZS11c2Vy
LWluaXRpYXQKIGZhc3QvZXZlbnRzL3Njcm9sbC1hZnRlci1jbGljay1vbi10YWItaW5kZXguaHRt
bAogZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy5odG1sCiBmYXN0L2V2ZW50
cy90YWItaXMtZm9jdXNhYmxlLWFzc2VydC5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLWtleXBy
ZXNzLXByZXZlbnREZWZhdWx0Lmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tMS5odG1sCiBmYXN0
L2V2ZW50cy9mb2N1c2luZ1VubG9hZGVkRnJhbWUuaHRtbAogZmFzdC9ldmVudHMvb25zZWFyY2gt
ZW50ZXIuaHRtbAogZmFzdC9ldmVudHMvaW5wdXRUZXh0LW5ldmVyLWZpcmVkLW9uLWtleWRvd24t
Y2FuY2VsLmh0bWwKIGZhc3QvZXZlbnRzL2tleWRvd24tbnVtcGFkLWtleXMuaHRtbAotZmFzdC9l
dmVudHMvc2VsZWN0LW9uY2hhbmdlLWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0
LWJ5LWFycm93LWtleXMtcHJldmVudC1kZWZhdWx0Lmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdl
LXRleHRmaWVsZC5odG1sCiBmYXN0L2V2ZW50cy9tZWRpYS1lbGVtZW50LWZvY3VzLXRhYi5odG1s
CiBmYXN0L2V2ZW50cy9mb2N1cy1jaGFuZ2UtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMvdGFiaW5k
ZXgtZm9jdXMtY2hhaW4uaHRtbAogZmFzdC9ldmVudHMvbm9kZS1ldmVudC1hbmNob3ItbG9jay5o
dG1sCi1mYXN0L2V2ZW50cy9hcnJvdy1uYXZpZ2F0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL2tleWRv
d24ta2V5cHJlc3MtZm9jdXMtY2hhbmdlLmh0bWwKIGZhc3QvZXZlbnRzL2pzLWtleWJvYXJkLWV2
ZW50LWNyZWF0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL3RhYi1mb2N1cy1oaWRkZW4uaHRtbApAQCAt
MTMxLDE2ICsxMjEsOSBAQCBmYXN0L2V2ZW50cy9jaGVjay1kZWZvY3VzLWV2ZW50LW9yZGVyLXdo
CiBmYXN0L2V2ZW50cy9vbmNoYW5nZS1zZWxlY3QtcG9wdXAuaHRtbAogZmFzdC9ldmVudHMvb25j
aGFuZ2Utc2VhcmNoZmllbGQuaHRtbAogZmFzdC9ldmVudHMvb25jaGFuZ2UtdGV4dC1mb3JtLWZp
ZWxkLmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tcmVtb3ZlLWZyYW1lLmh0bWwKIGZhc3QvZXZl
bnRzL2tleXByZXNzLWZvY3VzLWNoYW5nZS5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLWZ1bmN0
aW9uLWtleXMuaHRtbAotZmFzdC9ldmVudHMvc3BhY2Utc2Nyb2xsLWV2ZW50Lmh0bWwKLWZhc3Qv
ZXZlbnRzL2Fycm93LWtleXMtb24tYm9keS5odG1sCi1mYXN0L2V2ZW50cy9yZWNvcmRlZC1rZXlk
b3duLWV2ZW50Lmh0bWwKIGZhc3QvZXZlbnRzL3BvcHVwLXdoZW4tc2VsZWN0LWNoYW5nZS5odG1s
CiBmYXN0L2V2ZW50cy90YWItaW1hZ2VtYXAuaHRtbAotZmFzdC9ldmVudHMvbWVudS1rZXlkb3du
LW9uLWhpZGRlbi1lbGVtZW50Lmh0bWwKLWZhc3QvZXZlbnRzL2FuY2hvci1lbXB0eS1mb2N1cy5o
dG1sCiBmYXN0L2V2ZW50cy9rZXktZXZlbnRzLWluLWlucHV0LWJ1dHRvbi5odG1sCiBmYXN0L3Jl
cGFpbnQvZml4ZWQtbW92ZS1hZnRlci1rZXlib2FyZC1zY3JvbGwuaHRtbAogZmFzdC9mb3Jtcy9v
bmNoYW5nZS1lbnRlci1zdWJtaXQuaHRtbApAQCAtMjAwLDkgKzE4Myw3IEBAIGVkaXRpbmcvZGVs
ZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMS5odG0KIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJ5
LXdvcmQtMDAxLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMi5odG1s
CiBlZGl0aW5nL2RlbGV0aW5nL3NraXAtdmlyYW1hLTAwMS5odG1sCi1lZGl0aW5nL2RlbGV0aW5n
L2ZvcndhcmQtZGVsZXRlLWtleS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ieS13b3Jk
LTAwMi5odG1sCi1lZGl0aW5nL2RlbGV0aW5nLzU3Mjk2ODAuaHRtbAogZWRpdGluZy9pbnNlcnRp
bmcvdHlwaW5nLXRhYi1kZXNpZ25tb2RlLWZvcm1zLmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nL3R5
cGluZy10YWItZGVzaWdubW9kZS5odG1sCiBlZGl0aW5nL3VuZG8vdW5kby1kZWxldGVXb3JkLmh0
bWwKQEAgLTIxNSw3ICsxOTYsNiBAQCBlZGl0aW5nL2lucHV0L2VtYWNzLWN0cmwtby5odG1sCiBl
ZGl0aW5nL2lucHV0L3Njcm9sbC12aWV3cG9ydC1wYWdlLXVwLWRvd24uaHRtbAogZWRpdGluZy9p
bnB1dC9vcHRpb24tcGFnZS11cC1kb3duLmh0bWwKIGVkaXRpbmcvaW5wdXQvc3R5bGUtY2hhbmdl
LWR1cmluZy1pbnB1dC5odG1sCi1lZGl0aW5nL2lucHV0L3BhZ2UtdXAtZG93bi1zY3JvbGxzLmh0
bWwKIAogIyBbR1RLXSBJbXBsZW1lbnQgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IGluIFdlYktpdDIK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNzA2CkBAIC0zOTEs
NyArMzcxLDYgQEAgZmFzdC9ldmVudHMvb25kcm9wLXRleHQtaHRtbC5odG1sCiBmYXN0L2V2ZW50
cy9yZW1vdmUtdGFyZ2V0LWluLW1vdXNldXAuaHRtbAogZmFzdC9ldmVudHMvcmVzb3VyY2VzL2Ry
YWctb3V0c2lkZS13aW5kb3ctZnJhbWUuaHRtbAogZmFzdC9ldmVudHMvbW91c2VvdmVyLW1vdXNl
b3V0Mi5odG1sCi1mYXN0L2V2ZW50cy9ub2RlLWV2ZW50LWFuY2hvci1sb2NrLmh0bWwKIGZhc3Qv
ZXZlbnRzL21vdXNlb3Zlci1idXR0b24uaHRtbAogZmFzdC9ldmVudHMvY2xpY2stZm9jdXMtYW5j
aG9yLmh0bWwKIGZhc3QvZW5jb2RpbmcvbWFpbHRvLWFsd2F5cy11dGYtOC5odG1sCkBAIC02MTUs
MTAgKzU5NCw4IEBAIGVkaXRpbmcvc2VsZWN0aW9uLzUyMDk5ODQuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vY2FyZXQtYXQtYmlkaS1ib3VuZGFyeS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9mYWtl
LWRyYWcuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vcGFyYWdyYXBoLWdyYW51bGFyaXR5Lmh0bWwK
LWVkaXRpbmcvc2VsZWN0aW9uLzUxMzE3MTYtMy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hZnRl
ci1saW5lLWJyZWFrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FuY2hvci1mb2N1czMuaHRtbAot
ZWRpdGluZy9zZWxlY3Rpb24vNTA1NzUwNi0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FuY2hv
ci1mb2N1czEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMuaHRt
bAogZWRpdGluZy9zZWxlY3Rpb24vNTIzMjE1OS5odG1sCg==
</data>
<flag name="review"
          id="109899"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112065</attachid>
            <date>2011-10-21 20:48:48 -0700</date>
            <delta_ts>2011-10-21 21:16:35 -0700</delta_ts>
            <desc>Patch with Review Changes</desc>
            <filename>Update_patch.txt</filename>
            <type>text/plain</type>
            <size>25199</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk4MTg2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMTAtMjEgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5jdGlvbiBvbiBHdGsgcGxhdGZv
cm0uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXVFI6OmdldE1vZGlmaWVy
cyk6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorCiAyMDExLTEwLTIxICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmVuY2hlciBzY3JpcHQgZG9lc24ndCBtZWFz
dXJlIEdDIHRpbWVzIGFjY3VyYXRlbHkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gOTgxODYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiAKIFByb2dyYW1zX1dl
YktpdFRlc3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9t
YWluLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0
ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5j
cHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcCBc
CiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBc
CkBAIC0yMiwxMSArMjMsMTMgQEAKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIFwKIAlU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBcCi0JVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmlu
Zy5jCiAKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfQ1BQRkxBR1MgPSBcCiAJLWluY2x1ZGUg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1JJChz
cmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9pbmNsdWRlIFwKIAktRFdFQktJVF9FWEVDX1BBVEg9XCIke3NoZWxsIHB3ZH0vJCh0b3Bf
YnVpbGRkaXIpL1Byb2dyYW1zL1wiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk4MTg2KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkV2
ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCkBAIC03NCw3ICs3NCw3IEBACiAgICAgLCBtX2Rp
ZFByaW50V2ViUHJvY2Vzc0NyYXNoZWRNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRFeGl0
V2hlbldlYlByb2Nlc3NDcmFzaGVzKHRydWUpCiAgICAgLCBtX2JlZm9yZVVubG9hZFJldHVyblZh
bHVlKHRydWUpCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgLCBtX2V2ZW50U2Vu
ZGVyUHJveHkobmV3IEV2ZW50U2VuZGVyUHJveHkodGhpcykpCiAjZW5kaWYKIHsKQEAgLTU0MCw3
ICs1NDAsNyBAQAogCiBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShHVEspCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJFdmVudFNlbmRlciIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlS
ZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPiht
ZXNzYWdlQm9keSk7CkBAIC01NjUsNiArNTY1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93
biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3Vz
ZVVwIikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBidXR0b24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIGJ1dHRvbktleS5nZXQoKSkpKSk7CkBAIC02MTcsNyAr
NjE4LDcgQEAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGlt
ZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJF
dmVudFNlbmRlclByb3h5LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEd0a1ZlcnNpb25pbmcuaD4KKyNpbmNs
dWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
VFIgeworLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4K
K2VudW0gS2V5TG9jYXRpb25Db2RlIHsKKyAgICBET01LZXlMb2NhdGlvblN0YW5kYXJkICAgICAg
PSAweDAwLAorICAgIERPTUtleUxvY2F0aW9uTGVmdCAgICAgICAgICA9IDB4MDEsCisgICAgRE9N
S2V5TG9jYXRpb25SaWdodCAgICAgICAgID0gMHgwMiwKKyAgICBET01LZXlMb2NhdGlvbk51bXBh
ZCAgICAgICAgPSAweDAzCit9OworCitFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5
KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIo
dGVzdENvbnRyb2xsZXIpCit7Cit9CisKK3N0YXRpYyBib29sIGRpc3BhdGNoRXZlbnQoR2RrRXZl
bnQqIGV2ZW50KQoreworICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50KTsKKyAgICBnZGtfZXZl
bnRfZnJlZShldmVudCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGd1aW50IGdldE1v
ZGlmaWVycyhXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZikKK3sKKyAgICBndWludCBtb2Rp
ZmllcnMgPSAwOworCisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzQ29u
dHJvbEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtl
eTsKKyAgICBpZiAobW9kaWZpZXJzUmVmICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAg
ICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXk7CisgICAgaWYgKG1v
ZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5KQorICAgICAgICBtb2RpZmllcnMg
fD0ga1dLRXZlbnRNb2RpZmllcnNBbHRLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2
ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZp
ZXJzTWV0YUtleTsKKworICAgIHJldHVybiBtb2RpZmllcnM7Cit9CisKK2ludCBnZXRHREtLZXlT
eW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3VpbnQq
IG1vZGlmaWVycykKK3sKKyAgICBpZiAobG9jYXRpb24gPT0gRE9NS2V5TG9jYXRpb25OdW1wYWQp
IHsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVm
dEFycm93IikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9MZWZ0OworICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJyaWdodEFycm9yIikpCisg
ICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9SaWdodDsKKyAgICAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAidXBBcnJvdyIpKQorICAgICAgICAgICAgcmV0
dXJuIEdES19LRVlfS1BfVXA7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKGtleVJlZiwgImRvd25BcnJvdyIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1Bf
RG93bjsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
cGFnZVVwIikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9QYWdlX1VwOworICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJwYWdlRG93biIpKQor
ICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfUGFnZV9Eb3duOworICAgICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJob21lIikpCisgICAgICAgICAgICBy
ZXR1cm4gR0RLX0tFWV9LUF9Ib21lOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhrZXlSZWYsICJlbmQiKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX0Vu
ZDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaW5z
ZXJ0IikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9JbnNlcnQ7CisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAg
ICAgICAgcmV0dXJuIEdES19LRVlfS1BfRGVsZXRlOworICAgICAgICAgICAgCisgICAgICAgIHJl
dHVybiBHREtfS0VZX1ZvaWRTeW1ib2w7CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVmdEFycm93IikpCisgICAgICAgIHJldHVybiBHREtf
S0VZX0xlZnQ7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
cmlnaHRBcnJvciIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9SaWdodDsKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJ1cEFycm93IikpCisgICAgICAgIHJl
dHVybiBHREtfS0VZX1VwOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgImRvd25BcnJvdyIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9Eb3duOworICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAg
ICByZXR1cm4gR0RLX0tFWV9QYWdlX1VwOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKGtleVJlZiwgInBhZ2VEb3duIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX1BhZ2Vf
RG93bjsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJob21l
IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0hvbWU7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5kIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Vu
ZDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJpbnNlcnQi
KSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfSW5zZXJ0OworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAgICByZXR1cm4gR0RLX0tF
WV9EZWxldGU7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
cHJpbnRTY3JlZW4iKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfUHJpbnQ7CisgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibWVudSIpKQorICAgICAgICByZXR1
cm4gR0RLX0tFWV9NZW51OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgIkYxIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YxOworICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYyIikpCisgICAgICAgIHJldHVybiBHREtf
S0VZX0YyOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYz
IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YzOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgIkY0IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y0Owor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY1IikpCisgICAg
ICAgIHJldHVybiBHREtfS0VZX0Y1OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKGtleVJlZiwgIkY2IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y2OworICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY3IikpCisgICAgICAgIHJldHVy
biBHREtfS0VZX0Y3OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJl
ZiwgIkY4IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y4OworICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY5IikpCisgICAgICAgIHJldHVybiBHREtfS0VZ
X0Y5OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxMCIp
KQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTA7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoa2V5UmVmLCAiRjExIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YxMTsK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMTIiKSkKKyAg
ICAgICAgcmV0dXJuIEdES19LRVlfRjEyOworCisgICAgc2l6ZV90IHN0cmluZ1NpemUgPSBXS1N0
cmluZ0dldExlbmd0aChrZXlSZWYpOworICAgIGNoYXIqIGJ1ZmZlciA9IG5ldyBjaGFyW3N0cmlu
Z1NpemVdOworICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIsIHN0cmlu
Z1NpemUpOworICAgIGludCBjaGFyQ29kZSA9IGJ1ZmZlclswXTsKKworICAgIGlmIChjaGFyQ29k
ZSA9PSAnXG4nIHx8IGNoYXJDb2RlID09ICdccicpCisgICAgICAgIHJldHVybiBHREtfS0VZX1Jl
dHVybjsKKyAgICBpZiAoY2hhckNvZGUgPT0gJ1x0JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlf
VGFiOworICAgIGlmIChjaGFyQ29kZSA9PSAnXHg4JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlf
QmFja1NwYWNlOworCisgICAgaWYgKFdURjo6aXNBU0NJSVVwcGVyKGNoYXJDb2RlKSkKKyAgICAg
ICAgKm1vZGlmaWVycyB8PSBHREtfU0hJRlRfTUFTSzsKKworICAgIHJldHVybiBnZGtfdW5pY29k
ZV90b19rZXl2YWwoY2hhckNvZGUpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURv
d24oV0tTdHJpbmdSZWYga2V5UmVmLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5z
aWduZWQgbG9jYXRpb24pCit7CisgICAgZ3VpbnQgbW9kaWZpZXJzID0gZ2V0TW9kaWZpZXJzKG1v
ZGlmaWVyc1JlZik7CisgICAgaW50IGdka0tleVN5bSA9IGdldEdES0tleVN5bUZvcktleVJlZihr
ZXlSZWYsIGxvY2F0aW9uLCAmbW9kaWZpZXJzKTsKKworICAgIEdka0V2ZW50KiBwcmVzc0V2ZW50
ID0gZ2RrX2V2ZW50X25ldyhHREtfS0VZX1BSRVNTKTsKKyAgICBwcmVzc0V2ZW50LT5rZXkua2V5
dmFsID0gZ2RrS2V5U3ltOworICAgIHByZXNzRXZlbnQtPmtleS5zdGF0ZSA9IG1vZGlmaWVyczsK
KyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19X
SURHRVQobV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpKTsK
KyAgICBnX29iamVjdF9yZWYocHJlc3NFdmVudC0+a2V5LndpbmRvdyk7CisgICAgZ2RrX2V2ZW50
X3NldF9kZXZpY2UocHJlc3NFdmVudCwgZ2V0RGVmYXVsdEdES1BvaW50ZXJEZXZpY2UocHJlc3NF
dmVudC0+a2V5LndpbmRvdykpOworCisgICAgR2RrS2V5bWFwS2V5KiBrZXlzOworICAgIGdpbnQg
bktleXM7CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5
bWFwX2dldF9kZWZhdWx0KCksIGdka0tleVN5bSwgJmtleXMsICZuS2V5cykpIHsKKyAgICAgICAg
cHJlc3NFdmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlzWzBdLmtleWNvZGU7CisgICAg
ICAgIGdfZnJlZShrZXlzKTsKKyAgICB9CisKKyAgICBHZGtFdmVudCogcmVsZWFzZUV2ZW50ID0g
Z2RrX2V2ZW50X2NvcHkocHJlc3NFdmVudCk7CisgICAgZGlzcGF0Y2hFdmVudChwcmVzc0V2ZW50
KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0gR0RLX0tFWV9SRUxFQVNFOworICAgIGRp
c3BhdGNoRXZlbnQocmVsZWFzZUV2ZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdtYWls
LmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50U2VuZGVyUHJveHkuaCIKKworI2luY2x1ZGUgIlBsYXRm
b3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8Z2Rr
L2dkay5oPgorI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RSIHsKKy8v
IEtleSBldmVudCBsb2NhdGlvbiBjb2RlIGRlZmluZWQgaW4gRE9NIExldmVsIDMuCitlbnVtIEtl
eUxvY2F0aW9uQ29kZSB7CisgICAgRE9NS2V5TG9jYXRpb25TdGFuZGFyZCAgICAgID0gMHgwMCwK
KyAgICBET01LZXlMb2NhdGlvbkxlZnQgICAgICAgICAgPSAweDAxLAorICAgIERPTUtleUxvY2F0
aW9uUmlnaHQgICAgICAgICA9IDB4MDIsCisgICAgRE9NS2V5TG9jYXRpb25OdW1wYWQgICAgICAg
ID0gMHgwMworfTsKKworRXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0Q29u
dHJvbGxlciogdGVzdENvbnRyb2xsZXIpCisgICAgOiBtX3Rlc3RDb250cm9sbGVyKHRlc3RDb250
cm9sbGVyKQoreworfQorCitzdGF0aWMgZ3VpbnQgZ2V0TW9kaWZpZXJzKFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzUmVmKQoreworICAgIGd1aW50IG1vZGlmaWVycyA9IDA7CisKKyAgICBpZiAo
bW9kaWZpZXJzUmVmICYga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5KQorICAgICAgICBtb2Rp
ZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5OworICAgIGlmIChtb2RpZmllcnNS
ZWYgJiBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0ga1dL
RXZlbnRNb2RpZmllcnNTaGlmdEtleTsKKyAgICBpZiAobW9kaWZpZXJzUmVmICYga1dLRXZlbnRN
b2RpZmllcnNBbHRLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc0Fs
dEtleTsKKyAgICBpZiAobW9kaWZpZXJzUmVmICYga1dLRXZlbnRNb2RpZmllcnNNZXRhS2V5KQor
ICAgICAgICBtb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNNZXRhS2V5OworCisgICAgcmV0
dXJuIG1vZGlmaWVyczsKK30KKworaW50IGdldEdES0tleVN5bUZvcktleVJlZihXS1N0cmluZ1Jl
ZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCBndWludCogbW9kaWZpZXJzKQoreworICAgIGlu
dCBnZGtLZXlTeW0gPSBHREtfS0VZX1ZvaWRTeW1ib2w7CisKKyAgICBpZiAobG9jYXRpb24gPT0g
RE9NS2V5TG9jYXRpb25OdW1wYWQpIHsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcoa2V5UmVmLCAibGVmdEFycm93IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBH
REtfS0VZX0tQX0xlZnQ7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoa2V5UmVmLCAicmlnaHRBcnJvciIpKQorICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RL
X0tFWV9LUF9SaWdodDsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhrZXlSZWYsICJ1cEFycm93IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZ
X0tQX1VwOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgImRvd25BcnJvdyIpKQorICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9LUF9E
b3duOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJl
ZiwgInBhZ2VVcCIpKQorICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9LUF9QYWdlX1Vw
OworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwg
InBhZ2VEb3duIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0tQX1BhZ2VfRG93
bjsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYs
ICJob21lIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0tQX0hvbWU7CisgICAg
ICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5kIikp
CisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0tQX0VuZDsKKyAgICAgICAgZWxzZSBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJpbnNlcnQiKSkKKyAgICAg
ICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfS1BfSW5zZXJ0OworICAgICAgICBlbHNlIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAgICAg
ICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9LUF9EZWxldGU7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVmdEFycm93IikpCisg
ICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0xlZnQ7CisgICAgICAgIGVsc2UgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicmlnaHRBcnJvciIpKQorICAgICAg
ICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9SaWdodDsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJ1cEFycm93IikpCisgICAgICAgICAgICBn
ZGtLZXlTeW0gPSBHREtfS0VZX1VwOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgImRvd25BcnJvdyIpKQorICAgICAgICAgICAgZ2RrS2V5U3lt
ID0gR0RLX0tFWV9Eb3duOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tF
WV9QYWdlX1VwOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgInBhZ2VEb3duIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX1Bh
Z2VfRG93bjsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhr
ZXlSZWYsICJob21lIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0hvbWU7Cisg
ICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5k
IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0VuZDsKKyAgICAgICAgZWxzZSBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJpbnNlcnQiKSkKKyAgICAg
ICAgICAgIGdka0tleVN5bSA9IEdES19LRVlfSW5zZXJ0OworICAgICAgICBlbHNlIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAgICAgICAg
Z2RrS2V5U3ltID0gR0RLX0tFWV9EZWxldGU7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicHJpbnRTY3JlZW4iKSkKKyAgICAgICAgICAgIGdk
a0tleVN5bSA9IEdES19LRVlfUHJpbnQ7CisgICAgICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibWVudSIpKQorICAgICAgICAgICAgZ2RrS2V5U3ltID0g
R0RLX0tFWV9NZW51OworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKGtleVJlZiwgIkYxIikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0YxOwor
ICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYy
IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0YyOworICAgICAgICBlbHNlIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYzIikpCisgICAgICAgICAg
ICBnZGtLZXlTeW0gPSBHREtfS0VZX0YzOworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY0IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBH
REtfS0VZX0Y0OworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgIkY1IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0Y1OworICAg
ICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY2Iikp
CisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0Y2OworICAgICAgICBlbHNlIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY3IikpCisgICAgICAgICAgICBn
ZGtLZXlTeW0gPSBHREtfS0VZX0Y3OworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgIkY4IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtf
S0VZX0Y4OworICAgICAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgIkY5IikpCisgICAgICAgICAgICBnZGtLZXlTeW0gPSBHREtfS0VZX0Y5OworICAgICAg
ICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxMCIpKQor
ICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9GMTA7CisgICAgICAgIGVsc2UgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjExIikpCisgICAgICAgICAgICBn
ZGtLZXlTeW0gPSBHREtfS0VZX0YxMTsKKyAgICAgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMTIiKSkKKyAgICAgICAgICAgIGdka0tleVN5bSA9IEdE
S19LRVlfRjEyOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNpemVfdCBzdHJpbmdTaXpl
ID0gV0tTdHJpbmdHZXRMZW5ndGgoa2V5UmVmKTsKKyAgICAgICAgICAgIGNoYXIqIGJ1ZmZlciA9
IG5ldyBjaGFyW3N0cmluZ1NpemVdOworICAgICAgICAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmlu
ZyhrZXlSZWYsIGJ1ZmZlciwgc3RyaW5nU2l6ZSk7CisgICAgICAgICAgICBpbnQgY2hhckNvZGUg
PSBidWZmZXJbMF07CisKKyAgICAgICAgICAgIGlmIChjaGFyQ29kZSA9PSAnXG4nIHx8IGNoYXJD
b2RlID09ICdccicpCisgICAgICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9SZXR1cm47
CisgICAgICAgICAgICBlbHNlIGlmIChjaGFyQ29kZSA9PSAnXHQnKQorICAgICAgICAgICAgICAg
IGdka0tleVN5bSA9IEdES19LRVlfVGFiOworICAgICAgICAgICAgZWxzZSBpZiAoY2hhckNvZGUg
PT0gJ1x4OCcpCisgICAgICAgICAgICAgICAgZ2RrS2V5U3ltID0gR0RLX0tFWV9CYWNrU3BhY2U7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBnZGtLZXlTeW0gPSBnZGtfdW5p
Y29kZV90b19rZXl2YWwoY2hhckNvZGUpOworICAgICAgICAgICAgICAgIGlmIChXVEY6OmlzQVND
SUlVcHBlcihjaGFyQ29kZSkpCisgICAgICAgICAgICAgICAgICAgICptb2RpZmllcnMgfD0gR0RL
X1NISUZUX01BU0s7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gZ2RrS2V5U3ltOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJp
bmdSZWYga2V5UmVmLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5zaWduZWQgbG9j
YXRpb24pCit7CisgICAgZ3VpbnQgbW9kaWZpZXJzID0gZ2V0TW9kaWZpZXJzKG1vZGlmaWVyc1Jl
Zik7CisgICAgaW50IGdka0tleVN5bSA9IGdldEdES0tleVN5bUZvcktleVJlZihrZXlSZWYsIGxv
Y2F0aW9uLCAmbW9kaWZpZXJzKTsKKworICAgIC8vIENyZWF0ZSBhbmQgc2VuZCB0aGUgZXZlbnQu
CisgICAgR2RrRXZlbnQqIHByZXNzRXZlbnQgPSBnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1Mp
OworICAgIHByZXNzRXZlbnQtPmtleS5rZXl2YWwgPSBnZGtLZXlTeW07CisgICAgcHJlc3NFdmVu
dC0+a2V5LnN0YXRlID0gbW9kaWZpZXJzOworCisgICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtl
eXM7CisgICAgZ2ludCBuS2V5czsKKyAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jf
a2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5U3ltLCAma2V5cy5vdXRQdHIo
KSwgJm5LZXlzKSkKKyAgICAgICAgcHJlc3NFdmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBr
ZXlzWzBdLmtleWNvZGU7CisKKyAgICBHZGtFdmVudCogcmVsZWFzZUV2ZW50ID0gZ2RrX2V2ZW50
X2NvcHkocHJlc3NFdmVudCk7CisgICAgbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
ZGlzcGF0Y2hFdmVudChwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0g
R0RLX0tFWV9SRUxFQVNFOworICAgIG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPmRp
c3BhdGNoRXZlbnQocmVsZWFzZUV2ZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5ODE4NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEwLTIxICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8
a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBLZXlEb3du
IGZ1bmN0aW9uIGZvciBXZWJLaXQyIEV2ZW50U2VuZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0MTAKKworICAgICAgICBVbnNraXAgcGFzc2Vk
IHRlc3RzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkOgorCiAyMDExLTEwLTIxICBPamFuIFZhZmFpICA8
b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4dXAgdGVzdCBleHBlY3RhdGlvbnMgbm93
IHRoYXQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTgxNzMgaGFzIGxhbmRlZC4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQJKHJldmlzaW9uIDk4MTg2KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBA
IC04NywxOCArODcsMTIgQEAKIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tekluZGV4LWFmdGVyLmh0
bWwKIHBsdWdpbnMvZnVsbHNjcmVlbi1wbHVnaW5zLWRvbnQtcmVsb2FkLmh0bWwKIHBsdWdpbnMv
a2V5Ym9hcmQtZXZlbnRzLmh0bWwKLWZhc3QvZG9tL0hUTUxTZWxlY3RFbGVtZW50L2NsaWNrLXNp
emUtemVyby1uby1jcmFzaC5odG1sCiBmYXN0L2RvbS9hY2Nlc3Mta2V5LWlmcmFtZS5odG1sCiBm
YXN0L2RvbS9oaWRkZW4taWZyYW1lLW5vLWZvY3VzLmh0bWwKLWZhc3QvZG9tL2hvcml6b250YWwt
c2Nyb2xsYmFyLWluLXJ0bC5odG1sCiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRs
Lmh0bWwKLWZhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS5odG1sCi1mYXN0L2V2ZW50
cy9hdHRlbXB0LXNlbGVjdC1hbGwtd2l0aC13cm9uZy1tb2RpZmllci5odG1sCi1mYXN0L2V2ZW50
cy9rZXlldmVudC1pZnJhbWUtcmVtb3ZlZC1jcmFzaC5odG1sCiBmYXN0L2V2ZW50cy9rZXktZXZl
bnRzLWluLWlucHV0LXRleHQuaHRtbAogZmFzdC9ldmVudHMvaW1hZ2VtYXAtbm9yZW5kZXItY3Jh
c2guaHRtbAogZmFzdC9ldmVudHMvc3BlY2lhbC1rZXktZXZlbnRzLWluLWlucHV0LXRleHQuaHRt
bAotZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbAogZmFzdC9ldmVudHMvYWNjZXNzLWtl
eS1zZWxmLWRlc3RydWN0Lmh0bWwKIGZhc3QvZXZlbnRzL211bHRpbGluZS1saW5rLWFycm93LW5h
dmlnYXRpb24uaHRtbAogZmFzdC9ldmVudHMvY2hlY2stZGVmb2N1cy1ldmVudC1vcmRlci13aGVu
LXRyaWdnZXJlZC1ieS10YWIuaHRtbApAQCAtMTA3LDIwICsxMDEsMTYgQEAKIGZhc3QvZXZlbnRz
L3Njcm9sbC1hZnRlci1jbGljay1vbi10YWItaW5kZXguaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0
c3RhcnQtYnktYXJyb3cta2V5cy5odG1sCiBmYXN0L2V2ZW50cy90YWItaXMtZm9jdXNhYmxlLWFz
c2VydC5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLWtleXByZXNzLXByZXZlbnREZWZhdWx0Lmh0
bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tMS5odG1sCiBmYXN0L2V2ZW50cy9mb2N1c2luZ1VubG9h
ZGVkRnJhbWUuaHRtbAogZmFzdC9ldmVudHMvb25zZWFyY2gtZW50ZXIuaHRtbAogZmFzdC9ldmVu
dHMvaW5wdXRUZXh0LW5ldmVyLWZpcmVkLW9uLWtleWRvd24tY2FuY2VsLmh0bWwKIGZhc3QvZXZl
bnRzL2tleWRvd24tbnVtcGFkLWtleXMuaHRtbAotZmFzdC9ldmVudHMvc2VsZWN0LW9uY2hhbmdl
LWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtcHJldmVu
dC1kZWZhdWx0Lmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdlLXRleHRmaWVsZC5odG1sCiBmYXN0
L2V2ZW50cy9tZWRpYS1lbGVtZW50LWZvY3VzLXRhYi5odG1sCiBmYXN0L2V2ZW50cy9mb2N1cy1j
aGFuZ2UtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMvdGFiaW5kZXgtZm9jdXMtY2hhaW4uaHRtbAog
ZmFzdC9ldmVudHMvbm9kZS1ldmVudC1hbmNob3ItbG9jay5odG1sCi1mYXN0L2V2ZW50cy9hcnJv
dy1uYXZpZ2F0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL2tleWRvd24ta2V5cHJlc3MtZm9jdXMtY2hh
bmdlLmh0bWwKIGZhc3QvZXZlbnRzL2pzLWtleWJvYXJkLWV2ZW50LWNyZWF0aW9uLmh0bWwKIGZh
c3QvZXZlbnRzL3RhYi1mb2N1cy1oaWRkZW4uaHRtbApAQCAtMTMxLDE2ICsxMjEsOSBAQAogZmFz
dC9ldmVudHMvb25jaGFuZ2Utc2VsZWN0LXBvcHVwLmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdl
LXNlYXJjaGZpZWxkLmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdlLXRleHQtZm9ybS1maWVsZC5o
dG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLXJlbW92ZS1mcmFtZS5odG1sCiBmYXN0L2V2ZW50cy9r
ZXlwcmVzcy1mb2N1cy1jaGFuZ2UuaHRtbAotZmFzdC9ldmVudHMva2V5ZG93bi1mdW5jdGlvbi1r
ZXlzLmh0bWwKLWZhc3QvZXZlbnRzL3NwYWNlLXNjcm9sbC1ldmVudC5odG1sCi1mYXN0L2V2ZW50
cy9hcnJvdy1rZXlzLW9uLWJvZHkuaHRtbAotZmFzdC9ldmVudHMvcmVjb3JkZWQta2V5ZG93bi1l
dmVudC5odG1sCiBmYXN0L2V2ZW50cy9wb3B1cC13aGVuLXNlbGVjdC1jaGFuZ2UuaHRtbAogZmFz
dC9ldmVudHMvdGFiLWltYWdlbWFwLmh0bWwKLWZhc3QvZXZlbnRzL21lbnUta2V5ZG93bi1vbi1o
aWRkZW4tZWxlbWVudC5odG1sCi1mYXN0L2V2ZW50cy9hbmNob3ItZW1wdHktZm9jdXMuaHRtbAog
ZmFzdC9ldmVudHMva2V5LWV2ZW50cy1pbi1pbnB1dC1idXR0b24uaHRtbAogZmFzdC9yZXBhaW50
L2ZpeGVkLW1vdmUtYWZ0ZXIta2V5Ym9hcmQtc2Nyb2xsLmh0bWwKIGZhc3QvZm9ybXMvb25jaGFu
Z2UtZW50ZXItc3VibWl0Lmh0bWwKQEAgLTIwMCw5ICsxODMsNyBAQAogZWRpdGluZy9kZWxldGlu
Zy9kZWxldGUtYnktd29yZC0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1
cmUtMDAyLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvc2tpcC12aXJhbWEtMDAxLmh0bWwKLWVkaXRp
bmcvZGVsZXRpbmcvZm9yd2FyZC1kZWxldGUta2V5Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRlLWJ5LXdvcmQtMDAyLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvNTcyOTY4MC5odG1sCiBlZGl0
aW5nL2luc2VydGluZy90eXBpbmctdGFiLWRlc2lnbm1vZGUtZm9ybXMuaHRtbAogZWRpdGluZy9p
bnNlcnRpbmcvdHlwaW5nLXRhYi1kZXNpZ25tb2RlLmh0bWwKIGVkaXRpbmcvdW5kby91bmRvLWRl
bGV0ZVdvcmQuaHRtbApAQCAtMjE1LDcgKzE5Niw2IEBACiBlZGl0aW5nL2lucHV0L3Njcm9sbC12
aWV3cG9ydC1wYWdlLXVwLWRvd24uaHRtbAogZWRpdGluZy9pbnB1dC9vcHRpb24tcGFnZS11cC1k
b3duLmh0bWwKIGVkaXRpbmcvaW5wdXQvc3R5bGUtY2hhbmdlLWR1cmluZy1pbnB1dC5odG1sCi1l
ZGl0aW5nL2lucHV0L3BhZ2UtdXAtZG93bi1zY3JvbGxzLmh0bWwKIAogIyBbR1RLXSBJbXBsZW1l
bnQgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IGluIFdlYktpdDIKICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNzA2CkBAIC0zOTEsNyArMzcxLDYgQEAKIGZhc3QvZXZl
bnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC5odG1sCiBmYXN0L2V2ZW50cy9yZXNvdXJjZXMv
ZHJhZy1vdXRzaWRlLXdpbmRvdy1mcmFtZS5odG1sCiBmYXN0L2V2ZW50cy9tb3VzZW92ZXItbW91
c2VvdXQyLmh0bWwKLWZhc3QvZXZlbnRzL25vZGUtZXZlbnQtYW5jaG9yLWxvY2suaHRtbAogZmFz
dC9ldmVudHMvbW91c2VvdmVyLWJ1dHRvbi5odG1sCiBmYXN0L2V2ZW50cy9jbGljay1mb2N1cy1h
bmNob3IuaHRtbAogZmFzdC9lbmNvZGluZy9tYWlsdG8tYWx3YXlzLXV0Zi04Lmh0bWwKQEAgLTYx
NSwxMCArNTk0LDggQEAKIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWF0LWJpZGktYm91bmRhcnku
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZmFrZS1kcmFnLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L3BhcmFncmFwaC1ncmFudWxhcml0eS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81MTMxNzE2LTMu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vYWZ0ZXItbGluZS1icmVhay5odG1sCiBlZGl0aW5nL3Nl
bGVjdGlvbi9hbmNob3ItZm9jdXMzLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uLzUwNTc1MDYtMi5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hbmNob3ItZm9jdXMxLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL2V4cGFuZGluZy1zZWxlY3Rpb25zLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUyMzIxNTku
aHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112070</attachid>
            <date>2011-10-21 21:16:35 -0700</date>
            <delta_ts>2011-10-21 21:31:16 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>Update_patch.txt</filename>
            <type>text/plain</type>
            <size>16877</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk4MTg2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMTAtMjEgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5jdGlvbiBvbiBHdGsgcGxhdGZv
cm0uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXVFI6OmdldE1vZGlmaWVy
cyk6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorCiAyMDExLTEwLTIxICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmVuY2hlciBzY3JpcHQgZG9lc24ndCBtZWFz
dXJlIEdDIHRpbWVzIGFjY3VyYXRlbHkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gOTgxODYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiAKIFByb2dyYW1zX1dl
YktpdFRlc3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9t
YWluLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0
ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5j
cHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcCBc
CiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBc
CkBAIC0yMiwxMSArMjMsMTMgQEAKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIFwKIAlU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBcCi0JVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmlu
Zy5jCiAKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfQ1BQRkxBR1MgPSBcCiAJLWluY2x1ZGUg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1JJChz
cmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9pbmNsdWRlIFwKIAktRFdFQktJVF9FWEVDX1BBVEg9XCIke3NoZWxsIHB3ZH0vJCh0b3Bf
YnVpbGRkaXIpL1Byb2dyYW1zL1wiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk4MTg2KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkV2
ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCkBAIC03NCw3ICs3NCw3IEBACiAgICAgLCBtX2Rp
ZFByaW50V2ViUHJvY2Vzc0NyYXNoZWRNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRFeGl0
V2hlbldlYlByb2Nlc3NDcmFzaGVzKHRydWUpCiAgICAgLCBtX2JlZm9yZVVubG9hZFJldHVyblZh
bHVlKHRydWUpCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgLCBtX2V2ZW50U2Vu
ZGVyUHJveHkobmV3IEV2ZW50U2VuZGVyUHJveHkodGhpcykpCiAjZW5kaWYKIHsKQEAgLTU0MCw3
ICs1NDAsNyBAQAogCiBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShHVEspCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJFdmVudFNlbmRlciIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlS
ZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPiht
ZXNzYWdlQm9keSk7CkBAIC01NjUsNiArNTY1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93
biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3Vz
ZVVwIikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBidXR0b24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIGJ1dHRvbktleS5nZXQoKSkpKSk7CkBAIC02MTcsNyAr
NjE4LDcgQEAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGlt
ZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJF
dmVudFNlbmRlclByb3h5LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEd0a1ZlcnNpb25pbmcuaD4KKyNpbmNs
dWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
VFIgeworLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4K
K2VudW0gS2V5TG9jYXRpb25Db2RlIHsKKyAgICBET01LZXlMb2NhdGlvblN0YW5kYXJkICAgICAg
PSAweDAwLAorICAgIERPTUtleUxvY2F0aW9uTGVmdCAgICAgICAgICA9IDB4MDEsCisgICAgRE9N
S2V5TG9jYXRpb25SaWdodCAgICAgICAgID0gMHgwMiwKKyAgICBET01LZXlMb2NhdGlvbk51bXBh
ZCAgICAgICAgPSAweDAzCit9OworCitFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5
KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIo
dGVzdENvbnRyb2xsZXIpCit7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZl
bnQqIGV2ZW50KQoreworICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50KTsKKyAgICBnZGtfZXZl
bnRfZnJlZShldmVudCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGd1aW50IGdldE1v
ZGlmaWVycyhXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZikKK3sKKyAgICBndWludCBtb2Rp
ZmllcnMgPSAwOworCisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzQ29u
dHJvbEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtl
eTsKKyAgICBpZiAobW9kaWZpZXJzUmVmICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAg
ICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXk7CisgICAgaWYgKG1v
ZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5KQorICAgICAgICBtb2RpZmllcnMg
fD0ga1dLRXZlbnRNb2RpZmllcnNBbHRLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2
ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZp
ZXJzTWV0YUtleTsKKworICAgIHJldHVybiBtb2RpZmllcnM7Cit9CisKK2ludCBnZXRHREtLZXlT
eW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3VpbnQq
IG1vZGlmaWVycykKK3sKKyAgICBpZiAobG9jYXRpb24gPT0gRE9NS2V5TG9jYXRpb25OdW1wYWQp
IHsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVm
dEFycm93IikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9MZWZ0OworICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJyaWdodEFycm9yIikpCisg
ICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9SaWdodDsKKyAgICAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAidXBBcnJvdyIpKQorICAgICAgICAgICAgcmV0
dXJuIEdES19LRVlfS1BfVXA7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKGtleVJlZiwgImRvd25BcnJvdyIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1Bf
RG93bjsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
cGFnZVVwIikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9QYWdlX1VwOworICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJwYWdlRG93biIpKQor
ICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfUGFnZV9Eb3duOworICAgICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJob21lIikpCisgICAgICAgICAgICBy
ZXR1cm4gR0RLX0tFWV9LUF9Ib21lOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhrZXlSZWYsICJlbmQiKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX0Vu
ZDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaW5z
ZXJ0IikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9JbnNlcnQ7CisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAg
ICAgICAgcmV0dXJuIEdES19LRVlfS1BfRGVsZXRlOworICAgICAgICAgICAgCisgICAgICAgIHJl
dHVybiBHREtfS0VZX1ZvaWRTeW1ib2w7CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVmdEFycm93IikpCisgICAgICAgIHJldHVybiBHREtf
S0VZX0xlZnQ7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
cmlnaHRBcnJvciIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9SaWdodDsKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJ1cEFycm93IikpCisgICAgICAgIHJl
dHVybiBHREtfS0VZX1VwOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgImRvd25BcnJvdyIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9Eb3duOworICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAg
ICByZXR1cm4gR0RLX0tFWV9QYWdlX1VwOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKGtleVJlZiwgInBhZ2VEb3duIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX1BhZ2Vf
RG93bjsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJob21l
IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0hvbWU7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5kIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Vu
ZDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJpbnNlcnQi
KSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfSW5zZXJ0OworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAgICByZXR1cm4gR0RLX0tF
WV9EZWxldGU7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
cHJpbnRTY3JlZW4iKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfUHJpbnQ7CisgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibWVudSIpKQorICAgICAgICByZXR1
cm4gR0RLX0tFWV9NZW51OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgIkYxIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YxOworICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYyIikpCisgICAgICAgIHJldHVybiBHREtf
S0VZX0YyOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYz
IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YzOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgIkY0IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y0Owor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY1IikpCisgICAg
ICAgIHJldHVybiBHREtfS0VZX0Y1OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKGtleVJlZiwgIkY2IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y2OworICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY3IikpCisgICAgICAgIHJldHVy
biBHREtfS0VZX0Y3OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJl
ZiwgIkY4IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y4OworICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY5IikpCisgICAgICAgIHJldHVybiBHREtfS0VZ
X0Y5OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxMCIp
KQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTA7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoa2V5UmVmLCAiRjExIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YxMTsK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMTIiKSkKKyAg
ICAgICAgcmV0dXJuIEdES19LRVlfRjEyOworCisgICAgc2l6ZV90IHN0cmluZ1NpemUgPSBXS1N0
cmluZ0dldExlbmd0aChrZXlSZWYpOworICAgIGNoYXIqIGJ1ZmZlciA9IG5ldyBjaGFyW3N0cmlu
Z1NpemVdOworICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIsIHN0cmlu
Z1NpemUpOworICAgIGludCBjaGFyQ29kZSA9IGJ1ZmZlclswXTsKKworICAgIGlmIChjaGFyQ29k
ZSA9PSAnXG4nIHx8IGNoYXJDb2RlID09ICdccicpCisgICAgICAgIHJldHVybiBHREtfS0VZX1Jl
dHVybjsKKyAgICBpZiAoY2hhckNvZGUgPT0gJ1x0JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlf
VGFiOworICAgIGlmIChjaGFyQ29kZSA9PSAnXHg4JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlf
QmFja1NwYWNlOworCisgICAgaWYgKFdURjo6aXNBU0NJSVVwcGVyKGNoYXJDb2RlKSkKKyAgICAg
ICAgKm1vZGlmaWVycyB8PSBHREtfU0hJRlRfTUFTSzsKKworICAgIHJldHVybiBnZGtfdW5pY29k
ZV90b19rZXl2YWwoY2hhckNvZGUpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURv
d24oV0tTdHJpbmdSZWYga2V5UmVmLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5z
aWduZWQgbG9jYXRpb24pCit7CisgICAgZ3VpbnQgbW9kaWZpZXJzID0gZ2V0TW9kaWZpZXJzKG1v
ZGlmaWVyc1JlZik7CisgICAgaW50IGdka0tleVN5bSA9IGdldEdES0tleVN5bUZvcktleVJlZihr
ZXlSZWYsIGxvY2F0aW9uLCAmbW9kaWZpZXJzKTsKKworICAgIEdka0V2ZW50KiBwcmVzc0V2ZW50
ID0gZ2RrX2V2ZW50X25ldyhHREtfS0VZX1BSRVNTKTsKKyAgICBwcmVzc0V2ZW50LT5rZXkua2V5
dmFsID0gZ2RrS2V5U3ltOworICAgIHByZXNzRXZlbnQtPmtleS5zdGF0ZSA9IG1vZGlmaWVyczsK
KyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19X
SURHRVQobV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpKTsK
KyAgICBnX29iamVjdF9yZWYocHJlc3NFdmVudC0+a2V5LndpbmRvdyk7CisgICAgZ2RrX2V2ZW50
X3NldF9kZXZpY2UocHJlc3NFdmVudCwgZ2V0RGVmYXVsdEdES1BvaW50ZXJEZXZpY2UocHJlc3NF
dmVudC0+a2V5LndpbmRvdykpOworCisgICAgR2RrS2V5bWFwS2V5KiBrZXlzOworICAgIGdpbnQg
bktleXM7CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5
bWFwX2dldF9kZWZhdWx0KCksIGdka0tleVN5bSwgJmtleXMsICZuS2V5cykpIHsKKyAgICAgICAg
cHJlc3NFdmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlzWzBdLmtleWNvZGU7CisgICAg
ICAgIGdfZnJlZShrZXlzKTsKKyAgICB9CisKKyAgICBHZGtFdmVudCogcmVsZWFzZUV2ZW50ID0g
Z2RrX2V2ZW50X2NvcHkocHJlc3NFdmVudCk7CisgICAgZGlzcGF0Y2hFdmVudChwcmVzc0V2ZW50
KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0gR0RLX0tFWV9SRUxFQVNFOworICAgIGRp
c3BhdGNoRXZlbnQocmVsZWFzZUV2ZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5ODE4NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEwLTIxICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8
a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBLZXlEb3du
IGZ1bmN0aW9uIGZvciBXZWJLaXQyIEV2ZW50U2VuZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0MTAKKworICAgICAgICBVbnNraXAgcGFzc2Vk
IHRlc3RzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkOgorCiAyMDExLTEwLTIxICBPamFuIFZhZmFpICA8
b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4dXAgdGVzdCBleHBlY3RhdGlvbnMgbm93
IHRoYXQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTgxNzMgaGFzIGxhbmRlZC4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQJKHJldmlzaW9uIDk4MTg2KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBA
IC04NywxOCArODcsMTIgQEAKIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tekluZGV4LWFmdGVyLmh0
bWwKIHBsdWdpbnMvZnVsbHNjcmVlbi1wbHVnaW5zLWRvbnQtcmVsb2FkLmh0bWwKIHBsdWdpbnMv
a2V5Ym9hcmQtZXZlbnRzLmh0bWwKLWZhc3QvZG9tL0hUTUxTZWxlY3RFbGVtZW50L2NsaWNrLXNp
emUtemVyby1uby1jcmFzaC5odG1sCiBmYXN0L2RvbS9hY2Nlc3Mta2V5LWlmcmFtZS5odG1sCiBm
YXN0L2RvbS9oaWRkZW4taWZyYW1lLW5vLWZvY3VzLmh0bWwKLWZhc3QvZG9tL2hvcml6b250YWwt
c2Nyb2xsYmFyLWluLXJ0bC5odG1sCiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRs
Lmh0bWwKLWZhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS5odG1sCi1mYXN0L2V2ZW50
cy9hdHRlbXB0LXNlbGVjdC1hbGwtd2l0aC13cm9uZy1tb2RpZmllci5odG1sCi1mYXN0L2V2ZW50
cy9rZXlldmVudC1pZnJhbWUtcmVtb3ZlZC1jcmFzaC5odG1sCiBmYXN0L2V2ZW50cy9rZXktZXZl
bnRzLWluLWlucHV0LXRleHQuaHRtbAogZmFzdC9ldmVudHMvaW1hZ2VtYXAtbm9yZW5kZXItY3Jh
c2guaHRtbAogZmFzdC9ldmVudHMvc3BlY2lhbC1rZXktZXZlbnRzLWluLWlucHV0LXRleHQuaHRt
bAotZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbAogZmFzdC9ldmVudHMvYWNjZXNzLWtl
eS1zZWxmLWRlc3RydWN0Lmh0bWwKIGZhc3QvZXZlbnRzL211bHRpbGluZS1saW5rLWFycm93LW5h
dmlnYXRpb24uaHRtbAogZmFzdC9ldmVudHMvY2hlY2stZGVmb2N1cy1ldmVudC1vcmRlci13aGVu
LXRyaWdnZXJlZC1ieS10YWIuaHRtbApAQCAtMTA3LDIwICsxMDEsMTYgQEAKIGZhc3QvZXZlbnRz
L3Njcm9sbC1hZnRlci1jbGljay1vbi10YWItaW5kZXguaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0
c3RhcnQtYnktYXJyb3cta2V5cy5odG1sCiBmYXN0L2V2ZW50cy90YWItaXMtZm9jdXNhYmxlLWFz
c2VydC5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLWtleXByZXNzLXByZXZlbnREZWZhdWx0Lmh0
bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tMS5odG1sCiBmYXN0L2V2ZW50cy9mb2N1c2luZ1VubG9h
ZGVkRnJhbWUuaHRtbAogZmFzdC9ldmVudHMvb25zZWFyY2gtZW50ZXIuaHRtbAogZmFzdC9ldmVu
dHMvaW5wdXRUZXh0LW5ldmVyLWZpcmVkLW9uLWtleWRvd24tY2FuY2VsLmh0bWwKIGZhc3QvZXZl
bnRzL2tleWRvd24tbnVtcGFkLWtleXMuaHRtbAotZmFzdC9ldmVudHMvc2VsZWN0LW9uY2hhbmdl
LWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtcHJldmVu
dC1kZWZhdWx0Lmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdlLXRleHRmaWVsZC5odG1sCiBmYXN0
L2V2ZW50cy9tZWRpYS1lbGVtZW50LWZvY3VzLXRhYi5odG1sCiBmYXN0L2V2ZW50cy9mb2N1cy1j
aGFuZ2UtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMvdGFiaW5kZXgtZm9jdXMtY2hhaW4uaHRtbAog
ZmFzdC9ldmVudHMvbm9kZS1ldmVudC1hbmNob3ItbG9jay5odG1sCi1mYXN0L2V2ZW50cy9hcnJv
dy1uYXZpZ2F0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL2tleWRvd24ta2V5cHJlc3MtZm9jdXMtY2hh
bmdlLmh0bWwKIGZhc3QvZXZlbnRzL2pzLWtleWJvYXJkLWV2ZW50LWNyZWF0aW9uLmh0bWwKIGZh
c3QvZXZlbnRzL3RhYi1mb2N1cy1oaWRkZW4uaHRtbApAQCAtMTMxLDE2ICsxMjEsOSBAQAogZmFz
dC9ldmVudHMvb25jaGFuZ2Utc2VsZWN0LXBvcHVwLmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdl
LXNlYXJjaGZpZWxkLmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdlLXRleHQtZm9ybS1maWVsZC5o
dG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLXJlbW92ZS1mcmFtZS5odG1sCiBmYXN0L2V2ZW50cy9r
ZXlwcmVzcy1mb2N1cy1jaGFuZ2UuaHRtbAotZmFzdC9ldmVudHMva2V5ZG93bi1mdW5jdGlvbi1r
ZXlzLmh0bWwKLWZhc3QvZXZlbnRzL3NwYWNlLXNjcm9sbC1ldmVudC5odG1sCi1mYXN0L2V2ZW50
cy9hcnJvdy1rZXlzLW9uLWJvZHkuaHRtbAotZmFzdC9ldmVudHMvcmVjb3JkZWQta2V5ZG93bi1l
dmVudC5odG1sCiBmYXN0L2V2ZW50cy9wb3B1cC13aGVuLXNlbGVjdC1jaGFuZ2UuaHRtbAogZmFz
dC9ldmVudHMvdGFiLWltYWdlbWFwLmh0bWwKLWZhc3QvZXZlbnRzL21lbnUta2V5ZG93bi1vbi1o
aWRkZW4tZWxlbWVudC5odG1sCi1mYXN0L2V2ZW50cy9hbmNob3ItZW1wdHktZm9jdXMuaHRtbAog
ZmFzdC9ldmVudHMva2V5LWV2ZW50cy1pbi1pbnB1dC1idXR0b24uaHRtbAogZmFzdC9yZXBhaW50
L2ZpeGVkLW1vdmUtYWZ0ZXIta2V5Ym9hcmQtc2Nyb2xsLmh0bWwKIGZhc3QvZm9ybXMvb25jaGFu
Z2UtZW50ZXItc3VibWl0Lmh0bWwKQEAgLTIwMCw5ICsxODMsNyBAQAogZWRpdGluZy9kZWxldGlu
Zy9kZWxldGUtYnktd29yZC0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1
cmUtMDAyLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvc2tpcC12aXJhbWEtMDAxLmh0bWwKLWVkaXRp
bmcvZGVsZXRpbmcvZm9yd2FyZC1kZWxldGUta2V5Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRlLWJ5LXdvcmQtMDAyLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvNTcyOTY4MC5odG1sCiBlZGl0
aW5nL2luc2VydGluZy90eXBpbmctdGFiLWRlc2lnbm1vZGUtZm9ybXMuaHRtbAogZWRpdGluZy9p
bnNlcnRpbmcvdHlwaW5nLXRhYi1kZXNpZ25tb2RlLmh0bWwKIGVkaXRpbmcvdW5kby91bmRvLWRl
bGV0ZVdvcmQuaHRtbApAQCAtMjE1LDcgKzE5Niw2IEBACiBlZGl0aW5nL2lucHV0L3Njcm9sbC12
aWV3cG9ydC1wYWdlLXVwLWRvd24uaHRtbAogZWRpdGluZy9pbnB1dC9vcHRpb24tcGFnZS11cC1k
b3duLmh0bWwKIGVkaXRpbmcvaW5wdXQvc3R5bGUtY2hhbmdlLWR1cmluZy1pbnB1dC5odG1sCi1l
ZGl0aW5nL2lucHV0L3BhZ2UtdXAtZG93bi1zY3JvbGxzLmh0bWwKIAogIyBbR1RLXSBJbXBsZW1l
bnQgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IGluIFdlYktpdDIKICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNzA2CkBAIC0zOTEsNyArMzcxLDYgQEAKIGZhc3QvZXZl
bnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC5odG1sCiBmYXN0L2V2ZW50cy9yZXNvdXJjZXMv
ZHJhZy1vdXRzaWRlLXdpbmRvdy1mcmFtZS5odG1sCiBmYXN0L2V2ZW50cy9tb3VzZW92ZXItbW91
c2VvdXQyLmh0bWwKLWZhc3QvZXZlbnRzL25vZGUtZXZlbnQtYW5jaG9yLWxvY2suaHRtbAogZmFz
dC9ldmVudHMvbW91c2VvdmVyLWJ1dHRvbi5odG1sCiBmYXN0L2V2ZW50cy9jbGljay1mb2N1cy1h
bmNob3IuaHRtbAogZmFzdC9lbmNvZGluZy9tYWlsdG8tYWx3YXlzLXV0Zi04Lmh0bWwKQEAgLTYx
NSwxMCArNTk0LDggQEAKIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWF0LWJpZGktYm91bmRhcnku
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZmFrZS1kcmFnLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L3BhcmFncmFwaC1ncmFudWxhcml0eS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81MTMxNzE2LTMu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vYWZ0ZXItbGluZS1icmVhay5odG1sCiBlZGl0aW5nL3Nl
bGVjdGlvbi9hbmNob3ItZm9jdXMzLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uLzUwNTc1MDYtMi5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hbmNob3ItZm9jdXMxLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL2V4cGFuZGluZy1zZWxlY3Rpb25zLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUyMzIxNTku
aHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112071</attachid>
            <date>2011-10-21 21:31:16 -0700</date>
            <delta_ts>2011-10-21 22:06:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Update_patch.txt</filename>
            <type>text/plain</type>
            <size>16049</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXVFI6OmdldE1vZGlmaWVycyk6CisgICAgICAgIChX
VFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OmtleURvd24pOgorCiAyMDExLTEwLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgQmVuY2hlciBzY3JpcHQgZG9lc24ndCBtZWFzdXJlIEdDIHRpbWVzIGFj
Y3VyYXRlbHkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQkocmV2aXNp
b24gOTgxODYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiAKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJf
U09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9tYWluLmNwcCBcCisJVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAgXAogCVRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAgXAogCVRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcCBcCiAJVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBcCkBAIC0yMiwxMSArMjMs
MTMgQEAKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBcCiAJVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIFwKIAlUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBcCi0JVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jCiAKIFByb2dyYW1z
X1dlYktpdFRlc3RSdW5uZXJfQ1BQRkxBR1MgPSBcCiAJLWluY2x1ZGUgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1JJChzcmNkaXIpL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9pbmNsdWRlIFwK
IAktRFdFQktJVF9FWEVDX1BBVEg9XCIke3NoZWxsIHB3ZH0vJCh0b3BfYnVpbGRkaXIpL1Byb2dy
YW1zL1wiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk4MTg2KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDcgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAot
I2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkV2ZW50U2VuZGVyUHJveHku
aCIKICNlbmRpZgogCkBAIC03NCw3ICs3NCw3IEBACiAgICAgLCBtX2RpZFByaW50V2ViUHJvY2Vz
c0NyYXNoZWRNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRFeGl0V2hlbldlYlByb2Nlc3ND
cmFzaGVzKHRydWUpCiAgICAgLCBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVlKHRydWUpCi0jaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgLCBtX2V2ZW50U2VuZGVyUHJveHkobmV3IEV2
ZW50U2VuZGVyUHJveHkodGhpcykpCiAjZW5kaWYKIHsKQEAgLTU0MCw3ICs1NDAsNyBAQAogCiBX
S1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5
cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkK
KyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJFdmVudFNlbmRl
ciIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlE
aWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CkBA
IC01NjUsNiArNTY1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKKyNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93biIpIHx8IFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZVVwIikpIHsKICAgICAg
ICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBidXR0b24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNf
Y2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURp
Y3Rpb25hcnksIGJ1dHRvbktleS5nZXQoKSkpKSk7CkBAIC02MTcsNyArNjE4LDcgQEAKICAgICAg
ICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGltZSk7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9F
dmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgWmFuIERvYmVy
c2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2Vy
IEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgor
ICogQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmVudFNlbmRlclByb3h5
LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJv
bGxlci5oIgorI2luY2x1ZGUgPEd0a1ZlcnNpb25pbmcuaD4KKyNpbmNsdWRlIDxnZGsvZ2RrLmg+
CisjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVFIgeworLy8gS2V5IGV2
ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4KK2VudW0gS2V5TG9jYXRp
b25Db2RlIHsKKyAgICBET01LZXlMb2NhdGlvblN0YW5kYXJkICAgICAgPSAweDAwLAorICAgIERP
TUtleUxvY2F0aW9uTGVmdCAgICAgICAgICA9IDB4MDEsCisgICAgRE9NS2V5TG9jYXRpb25SaWdo
dCAgICAgICAgID0gMHgwMiwKKyAgICBET01LZXlMb2NhdGlvbk51bXBhZCAgICAgICAgPSAweDAz
Cit9OworCitFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVy
KiB0ZXN0Q29udHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xsZXIp
Cit7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZlbnQqIGV2ZW50KQorewor
ICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50KTsKKyAgICBnZGtfZXZlbnRfZnJlZShldmVudCk7
Cit9CisKKworc3RhdGljIGd1aW50IGdldE1vZGlmaWVycyhXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVyc1JlZikKK3sKKyAgICBndWludCBtb2RpZmllcnMgPSAwOworCisgICAgaWYgKG1vZGlmaWVy
c1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9
IGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleTsKKyAgICBpZiAobW9kaWZpZXJzUmVmICYga1dL
RXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9k
aWZpZXJzU2hpZnRLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJz
QWx0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNBbHRLZXk7Cisg
ICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAg
bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleTsKKworICAgIHJldHVybiBtb2Rp
ZmllcnM7Cit9CisKK2ludCBnZXRHREtLZXlTeW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVm
LCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3VpbnQqIG1vZGlmaWVycykKK3sKKyAgICBpZiAobG9jYXRp
b24gPT0gRE9NS2V5TG9jYXRpb25OdW1wYWQpIHsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVmdEFycm93IikpCisgICAgICAgICAgICByZXR1cm4g
R0RLX0tFWV9LUF9MZWZ0OworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhrZXlSZWYsICJyaWdodEFycm9yIikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9S
aWdodDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAi
dXBBcnJvdyIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfVXA7CisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRvd25BcnJvdyIpKQorICAg
ICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfRG93bjsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZVVwIikpCisgICAgICAgICAgICByZXR1cm4g
R0RLX0tFWV9LUF9QYWdlX1VwOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhrZXlSZWYsICJwYWdlRG93biIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1Bf
UGFnZV9Eb3duOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlS
ZWYsICJob21lIikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9Ib21lOworICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJlbmQiKSkKKyAgICAg
ICAgICAgIHJldHVybiBHREtfS0VZX0tQX0VuZDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaW5zZXJ0IikpCisgICAgICAgICAgICByZXR1cm4gR0RL
X0tFWV9LUF9JbnNlcnQ7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfRGVsZXRl
OworICAgICAgICAgICAgCisgICAgICAgIHJldHVybiBHREtfS0VZX1ZvaWRTeW1ib2w7CisgICAg
fQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVmdEFy
cm93IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0xlZnQ7CisgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicmlnaHRBcnJvciIpKQorICAgICAgICByZXR1cm4g
R0RLX0tFWV9SaWdodDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlS
ZWYsICJ1cEFycm93IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX1VwOworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRvd25BcnJvdyIpKQorICAgICAgICBy
ZXR1cm4gR0RLX0tFWV9Eb3duOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9QYWdlX1VwOworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBhZ2VEb3duIikpCisg
ICAgICAgIHJldHVybiBHREtfS0VZX1BhZ2VfRG93bjsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhrZXlSZWYsICJob21lIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0hv
bWU7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5kIikp
CisgICAgICAgIHJldHVybiBHREtfS0VZX0VuZDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJpbnNlcnQiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfSW5z
ZXJ0OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRlbGV0
ZSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9EZWxldGU7CisgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicHJpbnRTY3JlZW4iKSkKKyAgICAgICAgcmV0dXJu
IEdES19LRVlfUHJpbnQ7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5
UmVmLCAibWVudSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9NZW51OworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxIikpCisgICAgICAgIHJldHVybiBH
REtfS0VZX0YxOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwg
IkYyIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YyOworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYzIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Yz
OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY0IikpCisg
ICAgICAgIHJldHVybiBHREtfS0VZX0Y0OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKGtleVJlZiwgIkY1IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y1OworICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY2IikpCisgICAgICAgIHJl
dHVybiBHREtfS0VZX0Y2OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgIkY3IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y3OworICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY4IikpCisgICAgICAgIHJldHVybiBHREtf
S0VZX0Y4OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY5
IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y5OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgIkYxMCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTA7
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjExIikpCisg
ICAgICAgIHJldHVybiBHREtfS0VZX0YxMTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhrZXlSZWYsICJGMTIiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfRjEyOworCisg
ICAgc2l6ZV90IHN0cmluZ1NpemUgPSBXS1N0cmluZ0dldExlbmd0aChrZXlSZWYpOworICAgIGNo
YXIqIGJ1ZmZlciA9IG5ldyBjaGFyW3N0cmluZ1NpemVdOworICAgIFdLU3RyaW5nR2V0VVRGOENT
dHJpbmcoa2V5UmVmLCBidWZmZXIsIHN0cmluZ1NpemUpOworICAgIGludCBjaGFyQ29kZSA9IGJ1
ZmZlclswXTsKKworICAgIGlmIChjaGFyQ29kZSA9PSAnXG4nIHx8IGNoYXJDb2RlID09ICdccicp
CisgICAgICAgIHJldHVybiBHREtfS0VZX1JldHVybjsKKyAgICBpZiAoY2hhckNvZGUgPT0gJ1x0
JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlfVGFiOworICAgIGlmIChjaGFyQ29kZSA9PSAnXHg4
JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlfQmFja1NwYWNlOworCisgICAgaWYgKFdURjo6aXNB
U0NJSVVwcGVyKGNoYXJDb2RlKSkKKyAgICAgICAgKm1vZGlmaWVycyB8PSBHREtfU0hJRlRfTUFT
SzsKKworICAgIHJldHVybiBnZGtfdW5pY29kZV90b19rZXl2YWwoY2hhckNvZGUpOworfQorCit2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5UmVmLCBXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5zaWduZWQgbG9jYXRpb24pCit7CisgICAgZ3VpbnQg
bW9kaWZpZXJzID0gZ2V0TW9kaWZpZXJzKG1vZGlmaWVyc1JlZik7CisgICAgaW50IGdka0tleVN5
bSA9IGdldEdES0tleVN5bUZvcktleVJlZihrZXlSZWYsIGxvY2F0aW9uLCAmbW9kaWZpZXJzKTsK
KworICAgIEdka0V2ZW50KiBwcmVzc0V2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfS0VZX1BSRVNT
KTsKKyAgICBwcmVzc0V2ZW50LT5rZXkua2V5dmFsID0gZ2RrS2V5U3ltOworICAgIHByZXNzRXZl
bnQtPmtleS5zdGF0ZSA9IG1vZGlmaWVyczsKKyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93ID0g
Z3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV90ZXN0Q29udHJvbGxlci0+bWFpbldl
YlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpKTsKKyAgICBnX29iamVjdF9yZWYocHJlc3NFdmVudC0+
a2V5LndpbmRvdyk7CisgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UocHJlc3NFdmVudCwgZ2V0RGVm
YXVsdEdES1BvaW50ZXJEZXZpY2UocHJlc3NFdmVudC0+a2V5LndpbmRvdykpOworCisgICAgR2Rr
S2V5bWFwS2V5KiBrZXlzOworICAgIGdpbnQgbktleXM7CisgICAgaWYgKGdka19rZXltYXBfZ2V0
X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGdka0tleVN5bSwg
JmtleXMsICZuS2V5cykpIHsKKyAgICAgICAgcHJlc3NFdmVudC0+a2V5LmhhcmR3YXJlX2tleWNv
ZGUgPSBrZXlzWzBdLmtleWNvZGU7CisgICAgICAgIGdfZnJlZShrZXlzKTsKKyAgICB9CisKKyAg
ICBHZGtFdmVudCogcmVsZWFzZUV2ZW50ID0gZ2RrX2V2ZW50X2NvcHkocHJlc3NFdmVudCk7Cisg
ICAgZGlzcGF0Y2hFdmVudChwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBl
ID0gR0RLX0tFWV9SRUxFQVNFOworICAgIGRpc3BhdGNoRXZlbnQocmVsZWFzZUV2ZW50KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODE4NikKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEw
LTIxICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAg
ICAgIFtHVEtdIEltcGxlbWVudCBLZXlEb3duIGZ1bmN0aW9uIGZvciBXZWJLaXQyIEV2ZW50U2Vu
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0
MTAKKworICAgICAgICBVbnNraXAgcGFzc2VkIHRlc3RzLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkOgor
CiAyMDExLTEwLTIxICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
Rml4dXAgdGVzdCBleHBlY3RhdGlvbnMgbm93IHRoYXQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvOTgxNzMgaGFzIGxhbmRlZC4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sy
L1NraXBwZWQJKHJldmlzaW9uIDk4MTg2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdr
Mi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC04NywxOCArODcsMTIgQEAKIGZ1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tekluZGV4LWFmdGVyLmh0bWwKIHBsdWdpbnMvZnVsbHNjcmVlbi1wbHVnaW5z
LWRvbnQtcmVsb2FkLmh0bWwKIHBsdWdpbnMva2V5Ym9hcmQtZXZlbnRzLmh0bWwKLWZhc3QvZG9t
L0hUTUxTZWxlY3RFbGVtZW50L2NsaWNrLXNpemUtemVyby1uby1jcmFzaC5odG1sCiBmYXN0L2Rv
bS9hY2Nlc3Mta2V5LWlmcmFtZS5odG1sCiBmYXN0L2RvbS9oaWRkZW4taWZyYW1lLW5vLWZvY3Vz
Lmh0bWwKLWZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCiBmYXN0L2Rv
bS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKLWZhc3QvZXZlbnRzL2tleXByZXNzLXJl
bW92ZWQtbm9kZS5odG1sCi1mYXN0L2V2ZW50cy9hdHRlbXB0LXNlbGVjdC1hbGwtd2l0aC13cm9u
Zy1tb2RpZmllci5odG1sCi1mYXN0L2V2ZW50cy9rZXlldmVudC1pZnJhbWUtcmVtb3ZlZC1jcmFz
aC5odG1sCiBmYXN0L2V2ZW50cy9rZXktZXZlbnRzLWluLWlucHV0LXRleHQuaHRtbAogZmFzdC9l
dmVudHMvaW1hZ2VtYXAtbm9yZW5kZXItY3Jhc2guaHRtbAogZmFzdC9ldmVudHMvc3BlY2lhbC1r
ZXktZXZlbnRzLWluLWlucHV0LXRleHQuaHRtbAotZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQu
aHRtbAogZmFzdC9ldmVudHMvYWNjZXNzLWtleS1zZWxmLWRlc3RydWN0Lmh0bWwKIGZhc3QvZXZl
bnRzL211bHRpbGluZS1saW5rLWFycm93LW5hdmlnYXRpb24uaHRtbAogZmFzdC9ldmVudHMvY2hl
Y2stZGVmb2N1cy1ldmVudC1vcmRlci13aGVuLXRyaWdnZXJlZC1ieS10YWIuaHRtbApAQCAtMTA3
LDIwICsxMDEsMTYgQEAKIGZhc3QvZXZlbnRzL3Njcm9sbC1hZnRlci1jbGljay1vbi10YWItaW5k
ZXguaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy5odG1sCiBmYXN0
L2V2ZW50cy90YWItaXMtZm9jdXNhYmxlLWFzc2VydC5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3du
LWtleXByZXNzLXByZXZlbnREZWZhdWx0Lmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tMS5odG1s
CiBmYXN0L2V2ZW50cy9mb2N1c2luZ1VubG9hZGVkRnJhbWUuaHRtbAogZmFzdC9ldmVudHMvb25z
ZWFyY2gtZW50ZXIuaHRtbAogZmFzdC9ldmVudHMvaW5wdXRUZXh0LW5ldmVyLWZpcmVkLW9uLWtl
eWRvd24tY2FuY2VsLmh0bWwKIGZhc3QvZXZlbnRzL2tleWRvd24tbnVtcGFkLWtleXMuaHRtbAot
ZmFzdC9ldmVudHMvc2VsZWN0LW9uY2hhbmdlLWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVj
dHN0YXJ0LWJ5LWFycm93LWtleXMtcHJldmVudC1kZWZhdWx0Lmh0bWwKIGZhc3QvZXZlbnRzL29u
Y2hhbmdlLXRleHRmaWVsZC5odG1sCiBmYXN0L2V2ZW50cy9tZWRpYS1lbGVtZW50LWZvY3VzLXRh
Yi5odG1sCiBmYXN0L2V2ZW50cy9mb2N1cy1jaGFuZ2UtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMv
dGFiaW5kZXgtZm9jdXMtY2hhaW4uaHRtbAogZmFzdC9ldmVudHMvbm9kZS1ldmVudC1hbmNob3It
bG9jay5odG1sCi1mYXN0L2V2ZW50cy9hcnJvdy1uYXZpZ2F0aW9uLmh0bWwKIGZhc3QvZXZlbnRz
L2tleWRvd24ta2V5cHJlc3MtZm9jdXMtY2hhbmdlLmh0bWwKIGZhc3QvZXZlbnRzL2pzLWtleWJv
YXJkLWV2ZW50LWNyZWF0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL3RhYi1mb2N1cy1oaWRkZW4uaHRt
bApAQCAtMTMxLDE2ICsxMjEsOSBAQAogZmFzdC9ldmVudHMvb25jaGFuZ2Utc2VsZWN0LXBvcHVw
Lmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdlLXNlYXJjaGZpZWxkLmh0bWwKIGZhc3QvZXZlbnRz
L29uY2hhbmdlLXRleHQtZm9ybS1maWVsZC5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLXJlbW92
ZS1mcmFtZS5odG1sCiBmYXN0L2V2ZW50cy9rZXlwcmVzcy1mb2N1cy1jaGFuZ2UuaHRtbAotZmFz
dC9ldmVudHMva2V5ZG93bi1mdW5jdGlvbi1rZXlzLmh0bWwKLWZhc3QvZXZlbnRzL3NwYWNlLXNj
cm9sbC1ldmVudC5odG1sCi1mYXN0L2V2ZW50cy9hcnJvdy1rZXlzLW9uLWJvZHkuaHRtbAotZmFz
dC9ldmVudHMvcmVjb3JkZWQta2V5ZG93bi1ldmVudC5odG1sCiBmYXN0L2V2ZW50cy9wb3B1cC13
aGVuLXNlbGVjdC1jaGFuZ2UuaHRtbAogZmFzdC9ldmVudHMvdGFiLWltYWdlbWFwLmh0bWwKLWZh
c3QvZXZlbnRzL21lbnUta2V5ZG93bi1vbi1oaWRkZW4tZWxlbWVudC5odG1sCi1mYXN0L2V2ZW50
cy9hbmNob3ItZW1wdHktZm9jdXMuaHRtbAogZmFzdC9ldmVudHMva2V5LWV2ZW50cy1pbi1pbnB1
dC1idXR0b24uaHRtbAogZmFzdC9yZXBhaW50L2ZpeGVkLW1vdmUtYWZ0ZXIta2V5Ym9hcmQtc2Ny
b2xsLmh0bWwKIGZhc3QvZm9ybXMvb25jaGFuZ2UtZW50ZXItc3VibWl0Lmh0bWwKQEAgLTIwMCw5
ICsxODMsNyBAQAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtYnktd29yZC0wMDEuaHRtbAogZWRp
dGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAyLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcv
c2tpcC12aXJhbWEtMDAxLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvZm9yd2FyZC1kZWxldGUta2V5
Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJ5LXdvcmQtMDAyLmh0bWwKLWVkaXRpbmcv
ZGVsZXRpbmcvNTcyOTY4MC5odG1sCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctdGFiLWRlc2ln
bm1vZGUtZm9ybXMuaHRtbAogZWRpdGluZy9pbnNlcnRpbmcvdHlwaW5nLXRhYi1kZXNpZ25tb2Rl
Lmh0bWwKIGVkaXRpbmcvdW5kby91bmRvLWRlbGV0ZVdvcmQuaHRtbApAQCAtMjE1LDcgKzE5Niw2
IEBACiBlZGl0aW5nL2lucHV0L3Njcm9sbC12aWV3cG9ydC1wYWdlLXVwLWRvd24uaHRtbAogZWRp
dGluZy9pbnB1dC9vcHRpb24tcGFnZS11cC1kb3duLmh0bWwKIGVkaXRpbmcvaW5wdXQvc3R5bGUt
Y2hhbmdlLWR1cmluZy1pbnB1dC5odG1sCi1lZGl0aW5nL2lucHV0L3BhZ2UtdXAtZG93bi1zY3Jv
bGxzLmh0bWwKIAogIyBbR1RLXSBJbXBsZW1lbnQgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IGluIFdl
YktpdDIKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNzA2CkBA
IC0zOTEsNyArMzcxLDYgQEAKIGZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC5o
dG1sCiBmYXN0L2V2ZW50cy9yZXNvdXJjZXMvZHJhZy1vdXRzaWRlLXdpbmRvdy1mcmFtZS5odG1s
CiBmYXN0L2V2ZW50cy9tb3VzZW92ZXItbW91c2VvdXQyLmh0bWwKLWZhc3QvZXZlbnRzL25vZGUt
ZXZlbnQtYW5jaG9yLWxvY2suaHRtbAogZmFzdC9ldmVudHMvbW91c2VvdmVyLWJ1dHRvbi5odG1s
CiBmYXN0L2V2ZW50cy9jbGljay1mb2N1cy1hbmNob3IuaHRtbAogZmFzdC9lbmNvZGluZy9tYWls
dG8tYWx3YXlzLXV0Zi04Lmh0bWwKQEAgLTYxNSwxMCArNTk0LDggQEAKIGVkaXRpbmcvc2VsZWN0
aW9uL2NhcmV0LWF0LWJpZGktYm91bmRhcnkuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZmFrZS1k
cmFnLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3BhcmFncmFwaC1ncmFudWxhcml0eS5odG1sCi1l
ZGl0aW5nL3NlbGVjdGlvbi81MTMxNzE2LTMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vYWZ0ZXIt
bGluZS1icmVhay5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hbmNob3ItZm9jdXMzLmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uLzUwNTc1MDYtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hbmNob3It
Zm9jdXMxLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4cGFuZGluZy1zZWxlY3Rpb25zLmh0bWwK
IGVkaXRpbmcvc2VsZWN0aW9uLzUyMzIxNTkuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112073</attachid>
            <date>2011-10-21 22:04:24 -0700</date>
            <delta_ts>2011-10-21 22:11:59 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>Updated_patch.txt</filename>
            <type>text/plain</type>
            <size>16818</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk4MTg4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMTAtMjEgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5jdGlvbiBvbiBHdGsgcGxhdGZv
cm0uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXVFI6OmdldE1vZGlmaWVy
cyk6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorCiAyMDExLTEwLTIxICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmVuY2hlciBzY3JpcHQgZG9lc24ndCBtZWFz
dXJlIEdDIHRpbWVzIGFjY3VyYXRlbHkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gOTgxODgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiAKIFByb2dyYW1zX1dl
YktpdFRlc3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9t
YWluLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0
ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5j
cHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcCBc
CiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBc
CkBAIC0yMiwxMSArMjMsMTMgQEAKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIFwKIAlU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBcCi0JVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmlu
Zy5jCiAKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfQ1BQRkxBR1MgPSBcCiAJLWluY2x1ZGUg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1JJChz
cmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9pbmNsdWRlIFwKIAktRFdFQktJVF9FWEVDX1BBVEg9XCIke3NoZWxsIHB3ZH0vJCh0b3Bf
YnVpbGRkaXIpL1Byb2dyYW1zL1wiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk4MTg4KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkV2
ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCkBAIC03NCw3ICs3NCw3IEBACiAgICAgLCBtX2Rp
ZFByaW50V2ViUHJvY2Vzc0NyYXNoZWRNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRFeGl0
V2hlbldlYlByb2Nlc3NDcmFzaGVzKHRydWUpCiAgICAgLCBtX2JlZm9yZVVubG9hZFJldHVyblZh
bHVlKHRydWUpCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgLCBtX2V2ZW50U2Vu
ZGVyUHJveHkobmV3IEV2ZW50U2VuZGVyUHJveHkodGhpcykpCiAjZW5kaWYKIHsKQEAgLTU0MCw3
ICs1NDAsNyBAQAogCiBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShHVEspCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJFdmVudFNlbmRlciIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlS
ZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPiht
ZXNzYWdlQm9keSk7CkBAIC01NjUsNiArNTY1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93
biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3Vz
ZVVwIikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBidXR0b24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIGJ1dHRvbktleS5nZXQoKSkpKSk7CkBAIC02MTcsNyAr
NjE4LDcgQEAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGlt
ZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJF
dmVudFNlbmRlclByb3h5LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEd0a1ZlcnNpb25pbmcuaD4KKyNpbmNs
dWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
VFIgeworLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4K
K2VudW0gS2V5TG9jYXRpb25Db2RlIHsKKyAgICBET01LZXlMb2NhdGlvblN0YW5kYXJkICAgICAg
PSAweDAwLAorICAgIERPTUtleUxvY2F0aW9uTGVmdCAgICAgICAgICA9IDB4MDEsCisgICAgRE9N
S2V5TG9jYXRpb25SaWdodCAgICAgICAgID0gMHgwMiwKKyAgICBET01LZXlMb2NhdGlvbk51bXBh
ZCAgICAgICAgPSAweDAzCit9OworCitFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5
KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIo
dGVzdENvbnRyb2xsZXIpCit7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZl
bnQqIGV2ZW50KQoreworICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50KTsKKyAgICBnZGtfZXZl
bnRfZnJlZShldmVudCk7Cit9CisKKworc3RhdGljIGd1aW50IGdldE1vZGlmaWVycyhXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVyc1JlZikKK3sKKyAgICBndWludCBtb2RpZmllcnMgPSAwOworCisg
ICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKKyAgICAg
ICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleTsKKyAgICBpZiAobW9k
aWZpZXJzUmVmICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAgICAgICAgbW9kaWZpZXJz
IHw9IGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtX
S0V2ZW50TW9kaWZpZXJzQWx0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0ga1dLRXZlbnRNb2Rp
ZmllcnNBbHRLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0
YUtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleTsKKwor
ICAgIHJldHVybiBtb2RpZmllcnM7Cit9CisKK2ludCBnZXRHREtLZXlTeW1Gb3JLZXlSZWYoV0tT
dHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3VpbnQqIG1vZGlmaWVycykKK3sK
KyAgICBpZiAobG9jYXRpb24gPT0gRE9NS2V5TG9jYXRpb25OdW1wYWQpIHsKKyAgICAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVmdEFycm93IikpCisgICAg
ICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9MZWZ0OworICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJyaWdodEFycm9yIikpCisgICAgICAgICAgICByZXR1
cm4gR0RLX0tFWV9LUF9SaWdodDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoa2V5UmVmLCAidXBBcnJvdyIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1Bf
VXA7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRv
d25BcnJvdyIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfRG93bjsKKyAgICAgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZVVwIikpCisgICAg
ICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9QYWdlX1VwOworICAgICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJwYWdlRG93biIpKQorICAgICAgICAgICAgcmV0
dXJuIEdES19LRVlfS1BfUGFnZV9Eb3duOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJob21lIikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9L
UF9Ib21lOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYs
ICJlbmQiKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX0VuZDsKKyAgICAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaW5zZXJ0IikpCisgICAgICAg
ICAgICByZXR1cm4gR0RLX0tFWV9LUF9JbnNlcnQ7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAgICAgICAgcmV0dXJuIEdE
S19LRVlfS1BfRGVsZXRlOworCisgICAgICAgIHJldHVybiBHREtfS0VZX1ZvaWRTeW1ib2w7Cisg
ICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVm
dEFycm93IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0xlZnQ7CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicmlnaHRBcnJvciIpKQorICAgICAgICByZXR1
cm4gR0RLX0tFWV9SaWdodDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhr
ZXlSZWYsICJ1cEFycm93IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX1VwOworICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRvd25BcnJvdyIpKQorICAgICAg
ICByZXR1cm4gR0RLX0tFWV9Eb3duOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9QYWdlX1VwOwor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBhZ2VEb3duIikp
CisgICAgICAgIHJldHVybiBHREtfS0VZX1BhZ2VfRG93bjsKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJob21lIikpCisgICAgICAgIHJldHVybiBHREtfS0VZ
X0hvbWU7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5k
IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0VuZDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhrZXlSZWYsICJpbnNlcnQiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlf
SW5zZXJ0OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRl
bGV0ZSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9EZWxldGU7CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicHJpbnRTY3JlZW4iKSkKKyAgICAgICAgcmV0
dXJuIEdES19LRVlfUHJpbnQ7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
a2V5UmVmLCAibWVudSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9NZW51OworICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxIikpCisgICAgICAgIHJldHVy
biBHREtfS0VZX0YxOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJl
ZiwgIkYyIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YyOworICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYzIikpCisgICAgICAgIHJldHVybiBHREtfS0VZ
X0YzOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY0Iikp
CisgICAgICAgIHJldHVybiBHREtfS0VZX0Y0OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGtleVJlZiwgIkY1IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y1OworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY2IikpCisgICAgICAg
IHJldHVybiBHREtfS0VZX0Y2OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgIkY3IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y3OworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY4IikpCisgICAgICAgIHJldHVybiBH
REtfS0VZX0Y4OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwg
IkY5IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y5OworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxMCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9G
MTA7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjExIikp
CisgICAgICAgIHJldHVybiBHREtfS0VZX0YxMTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJGMTIiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfRjEyOwor
CisgICAgc2l6ZV90IHN0cmluZ1NpemUgPSBXS1N0cmluZ0dldExlbmd0aChrZXlSZWYpOworICAg
IGNoYXIqIGJ1ZmZlciA9IG5ldyBjaGFyW3N0cmluZ1NpemVdOworICAgIFdLU3RyaW5nR2V0VVRG
OENTdHJpbmcoa2V5UmVmLCBidWZmZXIsIHN0cmluZ1NpemUpOworICAgIGludCBjaGFyQ29kZSA9
IGJ1ZmZlclswXTsKKworICAgIGlmIChjaGFyQ29kZSA9PSAnXG4nIHx8IGNoYXJDb2RlID09ICdc
cicpCisgICAgICAgIHJldHVybiBHREtfS0VZX1JldHVybjsKKyAgICBpZiAoY2hhckNvZGUgPT0g
J1x0JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlfVGFiOworICAgIGlmIChjaGFyQ29kZSA9PSAn
XHg4JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlfQmFja1NwYWNlOworCisgICAgaWYgKFdURjo6
aXNBU0NJSVVwcGVyKGNoYXJDb2RlKSkKKyAgICAgICAgKm1vZGlmaWVycyB8PSBHREtfU0hJRlRf
TUFTSzsKKworICAgIHJldHVybiBnZGtfdW5pY29kZV90b19rZXl2YWwoY2hhckNvZGUpOworfQor
Cit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5UmVmLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5zaWduZWQgbG9jYXRpb24pCit7CisgICAgZ3Vp
bnQgbW9kaWZpZXJzID0gZ2V0TW9kaWZpZXJzKG1vZGlmaWVyc1JlZik7CisgICAgaW50IGdka0tl
eVN5bSA9IGdldEdES0tleVN5bUZvcktleVJlZihrZXlSZWYsIGxvY2F0aW9uLCAmbW9kaWZpZXJz
KTsKKworICAgIEdka0V2ZW50KiBwcmVzc0V2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfS0VZX1BS
RVNTKTsKKyAgICBwcmVzc0V2ZW50LT5rZXkua2V5dmFsID0gZ2RrS2V5U3ltOworICAgIHByZXNz
RXZlbnQtPmtleS5zdGF0ZSA9IG1vZGlmaWVyczsKKyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93
ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV90ZXN0Q29udHJvbGxlci0+bWFp
bldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpKTsKKyAgICBnX29iamVjdF9yZWYocHJlc3NFdmVu
dC0+a2V5LndpbmRvdyk7CisgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UocHJlc3NFdmVudCwgZ2V0
RGVmYXVsdEdES1BvaW50ZXJEZXZpY2UocHJlc3NFdmVudC0+a2V5LndpbmRvdykpOworCisgICAg
R093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAgZ2ludCBuS2V5czsKKyAgICBpZiAoZ2Rr
X2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwg
Z2RrS2V5U3ltLCAma2V5cy5vdXRQdHIoKSwgJm5LZXlzKSkgeworICAgICAgICBwcmVzc0V2ZW50
LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXNbMF0ua2V5Y29kZTsKKyAgICB9CisKKyAgICBH
ZGtFdmVudCogcmVsZWFzZUV2ZW50ID0gZ2RrX2V2ZW50X2NvcHkocHJlc3NFdmVudCk7CisgICAg
ZGlzcGF0Y2hFdmVudChwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0g
R0RLX0tFWV9SRUxFQVNFOworICAgIGRpc3BhdGNoRXZlbnQocmVsZWFzZUV2ZW50KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODE4OCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEwLTIx
ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAg
IFtHVEtdIEltcGxlbWVudCBLZXlEb3duIGZ1bmN0aW9uIGZvciBXZWJLaXQyIEV2ZW50U2VuZGVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0MTAK
KworICAgICAgICBVbnNraXAgcGFzc2VkIHRlc3RzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkOgorCiAy
MDExLTEwLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZH
IGlubGluaW5nIHNvbWV0aW1lcyBmYWlscyB0byByZXNldCBjb25zdGFudCByZWZlcmVuY2VzCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA5ODE4OCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAt
ODcsMTggKzg3LDEyIEBACiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXpJbmRleC1hZnRlci5odG1s
CiBwbHVnaW5zL2Z1bGxzY3JlZW4tcGx1Z2lucy1kb250LXJlbG9hZC5odG1sCiBwbHVnaW5zL2tl
eWJvYXJkLWV2ZW50cy5odG1sCi1mYXN0L2RvbS9IVE1MU2VsZWN0RWxlbWVudC9jbGljay1zaXpl
LXplcm8tbm8tY3Jhc2guaHRtbAogZmFzdC9kb20vYWNjZXNzLWtleS1pZnJhbWUuaHRtbAogZmFz
dC9kb20vaGlkZGVuLWlmcmFtZS1uby1mb2N1cy5odG1sCi1mYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci1pbi1ydGwuaHRtbAogZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5o
dG1sCi1mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbAotZmFzdC9ldmVudHMv
YXR0ZW1wdC1zZWxlY3QtYWxsLXdpdGgtd3JvbmctbW9kaWZpZXIuaHRtbAotZmFzdC9ldmVudHMv
a2V5ZXZlbnQtaWZyYW1lLXJlbW92ZWQtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMva2V5LWV2ZW50
cy1pbi1pbnB1dC10ZXh0Lmh0bWwKIGZhc3QvZXZlbnRzL2ltYWdlbWFwLW5vcmVuZGVyLWNyYXNo
Lmh0bWwKIGZhc3QvZXZlbnRzL3NwZWNpYWwta2V5LWV2ZW50cy1pbi1pbnB1dC10ZXh0Lmh0bWwK
LWZhc3QvZXZlbnRzL3NlbGVjdC1lbGVtZW50Lmh0bWwKIGZhc3QvZXZlbnRzL2FjY2Vzcy1rZXkt
c2VsZi1kZXN0cnVjdC5odG1sCiBmYXN0L2V2ZW50cy9tdWx0aWxpbmUtbGluay1hcnJvdy1uYXZp
Z2F0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL2NoZWNrLWRlZm9jdXMtZXZlbnQtb3JkZXItd2hlbi10
cmlnZ2VyZWQtYnktdGFiLmh0bWwKQEAgLTEwNywyMCArMTAxLDE2IEBACiBmYXN0L2V2ZW50cy9z
Y3JvbGwtYWZ0ZXItY2xpY2stb24tdGFiLWluZGV4Lmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0
YXJ0LWJ5LWFycm93LWtleXMuaHRtbAogZmFzdC9ldmVudHMvdGFiLWlzLWZvY3VzYWJsZS1hc3Nl
cnQuaHRtbAotZmFzdC9ldmVudHMva2V5ZG93bi1rZXlwcmVzcy1wcmV2ZW50RGVmYXVsdC5odG1s
Ci1mYXN0L2V2ZW50cy9rZXlkb3duLTEuaHRtbAogZmFzdC9ldmVudHMvZm9jdXNpbmdVbmxvYWRl
ZEZyYW1lLmh0bWwKIGZhc3QvZXZlbnRzL29uc2VhcmNoLWVudGVyLmh0bWwKIGZhc3QvZXZlbnRz
L2lucHV0VGV4dC1uZXZlci1maXJlZC1vbi1rZXlkb3duLWNhbmNlbC5odG1sCiBmYXN0L2V2ZW50
cy9rZXlkb3duLW51bXBhZC1rZXlzLmh0bWwKLWZhc3QvZXZlbnRzL3NlbGVjdC1vbmNoYW5nZS1j
cmFzaC5odG1sCiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLXByZXZlbnQt
ZGVmYXVsdC5odG1sCiBmYXN0L2V2ZW50cy9vbmNoYW5nZS10ZXh0ZmllbGQuaHRtbAogZmFzdC9l
dmVudHMvbWVkaWEtZWxlbWVudC1mb2N1cy10YWIuaHRtbAogZmFzdC9ldmVudHMvZm9jdXMtY2hh
bmdlLWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRzL3RhYmluZGV4LWZvY3VzLWNoYWluLmh0bWwKIGZh
c3QvZXZlbnRzL25vZGUtZXZlbnQtYW5jaG9yLWxvY2suaHRtbAotZmFzdC9ldmVudHMvYXJyb3ct
bmF2aWdhdGlvbi5odG1sCiBmYXN0L2V2ZW50cy9rZXlkb3duLWtleXByZXNzLWZvY3VzLWNoYW5n
ZS5odG1sCiBmYXN0L2V2ZW50cy9qcy1rZXlib2FyZC1ldmVudC1jcmVhdGlvbi5odG1sCiBmYXN0
L2V2ZW50cy90YWItZm9jdXMtaGlkZGVuLmh0bWwKQEAgLTEzMSwxNiArMTIxLDkgQEAKIGZhc3Qv
ZXZlbnRzL29uY2hhbmdlLXNlbGVjdC1wb3B1cC5odG1sCiBmYXN0L2V2ZW50cy9vbmNoYW5nZS1z
ZWFyY2hmaWVsZC5odG1sCiBmYXN0L2V2ZW50cy9vbmNoYW5nZS10ZXh0LWZvcm0tZmllbGQuaHRt
bAotZmFzdC9ldmVudHMva2V5ZG93bi1yZW1vdmUtZnJhbWUuaHRtbAogZmFzdC9ldmVudHMva2V5
cHJlc3MtZm9jdXMtY2hhbmdlLmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tZnVuY3Rpb24ta2V5
cy5odG1sCi1mYXN0L2V2ZW50cy9zcGFjZS1zY3JvbGwtZXZlbnQuaHRtbAotZmFzdC9ldmVudHMv
YXJyb3cta2V5cy1vbi1ib2R5Lmh0bWwKLWZhc3QvZXZlbnRzL3JlY29yZGVkLWtleWRvd24tZXZl
bnQuaHRtbAogZmFzdC9ldmVudHMvcG9wdXAtd2hlbi1zZWxlY3QtY2hhbmdlLmh0bWwKIGZhc3Qv
ZXZlbnRzL3RhYi1pbWFnZW1hcC5odG1sCi1mYXN0L2V2ZW50cy9tZW51LWtleWRvd24tb24taGlk
ZGVuLWVsZW1lbnQuaHRtbAotZmFzdC9ldmVudHMvYW5jaG9yLWVtcHR5LWZvY3VzLmh0bWwKIGZh
c3QvZXZlbnRzL2tleS1ldmVudHMtaW4taW5wdXQtYnV0dG9uLmh0bWwKIGZhc3QvcmVwYWludC9m
aXhlZC1tb3ZlLWFmdGVyLWtleWJvYXJkLXNjcm9sbC5odG1sCiBmYXN0L2Zvcm1zL29uY2hhbmdl
LWVudGVyLXN1Ym1pdC5odG1sCkBAIC0yMDAsOSArMTgzLDcgQEAKIGVkaXRpbmcvZGVsZXRpbmcv
ZGVsZXRlLWJ5LXdvcmQtMDAxLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJl
LTAwMi5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL3NraXAtdmlyYW1hLTAwMS5odG1sCi1lZGl0aW5n
L2RlbGV0aW5nL2ZvcndhcmQtZGVsZXRlLWtleS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS1ieS13b3JkLTAwMi5odG1sCi1lZGl0aW5nL2RlbGV0aW5nLzU3Mjk2ODAuaHRtbAogZWRpdGlu
Zy9pbnNlcnRpbmcvdHlwaW5nLXRhYi1kZXNpZ25tb2RlLWZvcm1zLmh0bWwKIGVkaXRpbmcvaW5z
ZXJ0aW5nL3R5cGluZy10YWItZGVzaWdubW9kZS5odG1sCiBlZGl0aW5nL3VuZG8vdW5kby1kZWxl
dGVXb3JkLmh0bWwKQEAgLTIxNSw3ICsxOTYsNiBAQAogZWRpdGluZy9pbnB1dC9zY3JvbGwtdmll
d3BvcnQtcGFnZS11cC1kb3duLmh0bWwKIGVkaXRpbmcvaW5wdXQvb3B0aW9uLXBhZ2UtdXAtZG93
bi5odG1sCiBlZGl0aW5nL2lucHV0L3N0eWxlLWNoYW5nZS1kdXJpbmctaW5wdXQuaHRtbAotZWRp
dGluZy9pbnB1dC9wYWdlLXVwLWRvd24tc2Nyb2xscy5odG1sCiAKICMgW0dUS10gSW1wbGVtZW50
IGRyYWcgYW5kIGRyb3Agc3VwcG9ydCBpbiBXZWJLaXQyCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MzcwNgpAQCAtMzkxLDcgKzM3MSw2IEBACiBmYXN0L2V2ZW50
cy9yZW1vdmUtdGFyZ2V0LWluLW1vdXNldXAuaHRtbAogZmFzdC9ldmVudHMvcmVzb3VyY2VzL2Ry
YWctb3V0c2lkZS13aW5kb3ctZnJhbWUuaHRtbAogZmFzdC9ldmVudHMvbW91c2VvdmVyLW1vdXNl
b3V0Mi5odG1sCi1mYXN0L2V2ZW50cy9ub2RlLWV2ZW50LWFuY2hvci1sb2NrLmh0bWwKIGZhc3Qv
ZXZlbnRzL21vdXNlb3Zlci1idXR0b24uaHRtbAogZmFzdC9ldmVudHMvY2xpY2stZm9jdXMtYW5j
aG9yLmh0bWwKIGZhc3QvZW5jb2RpbmcvbWFpbHRvLWFsd2F5cy11dGYtOC5odG1sCkBAIC02MTUs
MTAgKzU5NCw4IEBACiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1hdC1iaWRpLWJvdW5kYXJ5Lmh0
bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9w
YXJhZ3JhcGgtZ3JhbnVsYXJpdHkuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTEzMTcxNi0zLmh0
bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FmdGVyLWxpbmUtYnJlYWsuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vYW5jaG9yLWZvY3VzMy5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81MDU3NTA2LTIuaHRt
bAogZWRpdGluZy9zZWxlY3Rpb24vYW5jaG9yLWZvY3VzMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9leHBhbmRpbmctc2VsZWN0aW9ucy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi81MjMyMTU5Lmh0
bWwK
</data>
<flag name="review"
          id="110061"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="110062"
          type_id="3"
          status="+"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112074</attachid>
            <date>2011-10-21 22:11:59 -0700</date>
            <delta_ts>2011-10-21 23:03:54 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>Updated_patch.txt</filename>
            <type>text/plain</type>
            <size>16809</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk4MTg4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMTAtMjEgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5jdGlvbiBvbiBHdGsgcGxhdGZv
cm0uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXVFI6OmdldE1vZGlmaWVy
cyk6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorCiAyMDExLTEwLTIxICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmVuY2hlciBzY3JpcHQgZG9lc24ndCBtZWFz
dXJlIEdDIHRpbWVzIGFjY3VyYXRlbHkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gOTgxODgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiAKIFByb2dyYW1zX1dl
YktpdFRlc3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9t
YWluLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0
ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5j
cHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcCBc
CiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBc
CkBAIC0yMiwxMSArMjMsMTMgQEAKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIFwKIAlU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBcCi0JVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmlu
Zy5jCiAKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfQ1BQRkxBR1MgPSBcCiAJLWluY2x1ZGUg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1JJChz
cmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9pbmNsdWRlIFwKIAktRFdFQktJVF9FWEVDX1BBVEg9XCIke3NoZWxsIHB3ZH0vJCh0b3Bf
YnVpbGRkaXIpL1Byb2dyYW1zL1wiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk4MTg4KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkV2
ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCkBAIC03NCw3ICs3NCw3IEBACiAgICAgLCBtX2Rp
ZFByaW50V2ViUHJvY2Vzc0NyYXNoZWRNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRFeGl0
V2hlbldlYlByb2Nlc3NDcmFzaGVzKHRydWUpCiAgICAgLCBtX2JlZm9yZVVubG9hZFJldHVyblZh
bHVlKHRydWUpCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgLCBtX2V2ZW50U2Vu
ZGVyUHJveHkobmV3IEV2ZW50U2VuZGVyUHJveHkodGhpcykpCiAjZW5kaWYKIHsKQEAgLTU0MCw3
ICs1NDAsNyBAQAogCiBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShHVEspCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJFdmVudFNlbmRlciIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlS
ZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPiht
ZXNzYWdlQm9keSk7CkBAIC01NjUsNiArNTY1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93
biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3Vz
ZVVwIikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBidXR0b24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIGJ1dHRvbktleS5nZXQoKSkpKSk7CkBAIC02MTcsNyAr
NjE4LDcgQEAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGlt
ZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJF
dmVudFNlbmRlclByb3h5LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEd0a1ZlcnNpb25pbmcuaD4KKyNpbmNs
dWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
VFIgeworLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4K
K2VudW0gS2V5TG9jYXRpb25Db2RlIHsKKyAgICBET01LZXlMb2NhdGlvblN0YW5kYXJkICAgICAg
PSAweDAwLAorICAgIERPTUtleUxvY2F0aW9uTGVmdCAgICAgICAgICA9IDB4MDEsCisgICAgRE9N
S2V5TG9jYXRpb25SaWdodCAgICAgICAgID0gMHgwMiwKKyAgICBET01LZXlMb2NhdGlvbk51bXBh
ZCAgICAgICAgPSAweDAzCit9OworCitFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5
KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIo
dGVzdENvbnRyb2xsZXIpCit7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZl
bnQqIGV2ZW50KQoreworICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50KTsKKyAgICBnZGtfZXZl
bnRfZnJlZShldmVudCk7Cit9CisKKworc3RhdGljIGd1aW50IGdldE1vZGlmaWVycyhXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVyc1JlZikKK3sKKyAgICBndWludCBtb2RpZmllcnMgPSAwOworCisg
ICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKKyAgICAg
ICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleTsKKyAgICBpZiAobW9k
aWZpZXJzUmVmICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAgICAgICAgbW9kaWZpZXJz
IHw9IGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtX
S0V2ZW50TW9kaWZpZXJzQWx0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0ga1dLRXZlbnRNb2Rp
ZmllcnNBbHRLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0
YUtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleTsKKwor
ICAgIHJldHVybiBtb2RpZmllcnM7Cit9CisKK2ludCBnZXRHREtLZXlTeW1Gb3JLZXlSZWYoV0tT
dHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3VpbnQqIG1vZGlmaWVycykKK3sK
KyAgICBpZiAobG9jYXRpb24gPT0gRE9NS2V5TG9jYXRpb25OdW1wYWQpIHsKKyAgICAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVmdEFycm93IikpCisgICAg
ICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9MZWZ0OworICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJyaWdodEFycm9yIikpCisgICAgICAgICAgICByZXR1
cm4gR0RLX0tFWV9LUF9SaWdodDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoa2V5UmVmLCAidXBBcnJvdyIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1Bf
VXA7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRv
d25BcnJvdyIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfRG93bjsKKyAgICAgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZVVwIikpCisgICAg
ICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9QYWdlX1VwOworICAgICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJwYWdlRG93biIpKQorICAgICAgICAgICAgcmV0
dXJuIEdES19LRVlfS1BfUGFnZV9Eb3duOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJob21lIikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9L
UF9Ib21lOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYs
ICJlbmQiKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX0VuZDsKKyAgICAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaW5zZXJ0IikpCisgICAgICAg
ICAgICByZXR1cm4gR0RLX0tFWV9LUF9JbnNlcnQ7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRlbGV0ZSIpKQorICAgICAgICAgICAgcmV0dXJuIEdE
S19LRVlfS1BfRGVsZXRlOworCisgICAgICAgIHJldHVybiBHREtfS0VZX1ZvaWRTeW1ib2w7Cisg
ICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAibGVm
dEFycm93IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0xlZnQ7CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicmlnaHRBcnJvciIpKQorICAgICAgICByZXR1
cm4gR0RLX0tFWV9SaWdodDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhr
ZXlSZWYsICJ1cEFycm93IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX1VwOworICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRvd25BcnJvdyIpKQorICAgICAg
ICByZXR1cm4gR0RLX0tFWV9Eb3duOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9QYWdlX1VwOwor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBhZ2VEb3duIikp
CisgICAgICAgIHJldHVybiBHREtfS0VZX1BhZ2VfRG93bjsKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJob21lIikpCisgICAgICAgIHJldHVybiBHREtfS0VZ
X0hvbWU7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5k
IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0VuZDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhrZXlSZWYsICJpbnNlcnQiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlf
SW5zZXJ0OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImRl
bGV0ZSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9EZWxldGU7CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicHJpbnRTY3JlZW4iKSkKKyAgICAgICAgcmV0
dXJuIEdES19LRVlfUHJpbnQ7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
a2V5UmVmLCAibWVudSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9NZW51OworICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxIikpCisgICAgICAgIHJldHVy
biBHREtfS0VZX0YxOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJl
ZiwgIkYyIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YyOworICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYzIikpCisgICAgICAgIHJldHVybiBHREtfS0VZ
X0YzOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY0Iikp
CisgICAgICAgIHJldHVybiBHREtfS0VZX0Y0OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGtleVJlZiwgIkY1IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y1OworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY2IikpCisgICAgICAg
IHJldHVybiBHREtfS0VZX0Y2OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgIkY3IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y3OworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkY4IikpCisgICAgICAgIHJldHVybiBH
REtfS0VZX0Y4OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwg
IkY5IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Y5OworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxMCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9G
MTA7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjExIikp
CisgICAgICAgIHJldHVybiBHREtfS0VZX0YxMTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJGMTIiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfRjEyOwor
CisgICAgc2l6ZV90IHN0cmluZ1NpemUgPSBXS1N0cmluZ0dldExlbmd0aChrZXlSZWYpOworICAg
IGNoYXIqIGJ1ZmZlciA9IG5ldyBjaGFyW3N0cmluZ1NpemVdOworICAgIFdLU3RyaW5nR2V0VVRG
OENTdHJpbmcoa2V5UmVmLCBidWZmZXIsIHN0cmluZ1NpemUpOworICAgIGludCBjaGFyQ29kZSA9
IGJ1ZmZlclswXTsKKworICAgIGlmIChjaGFyQ29kZSA9PSAnXG4nIHx8IGNoYXJDb2RlID09ICdc
cicpCisgICAgICAgIHJldHVybiBHREtfS0VZX1JldHVybjsKKyAgICBpZiAoY2hhckNvZGUgPT0g
J1x0JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlfVGFiOworICAgIGlmIChjaGFyQ29kZSA9PSAn
XHg4JykKKyAgICAgICAgcmV0dXJuIEdES19LRVlfQmFja1NwYWNlOworCisgICAgaWYgKFdURjo6
aXNBU0NJSVVwcGVyKGNoYXJDb2RlKSkKKyAgICAgICAgKm1vZGlmaWVycyB8PSBHREtfU0hJRlRf
TUFTSzsKKworICAgIHJldHVybiBnZGtfdW5pY29kZV90b19rZXl2YWwoY2hhckNvZGUpOworfQor
Cit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5UmVmLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5zaWduZWQgbG9jYXRpb24pCit7CisgICAgZ3Vp
bnQgbW9kaWZpZXJzID0gZ2V0TW9kaWZpZXJzKG1vZGlmaWVyc1JlZik7CisgICAgaW50IGdka0tl
eVN5bSA9IGdldEdES0tleVN5bUZvcktleVJlZihrZXlSZWYsIGxvY2F0aW9uLCAmbW9kaWZpZXJz
KTsKKworICAgIEdka0V2ZW50KiBwcmVzc0V2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfS0VZX1BS
RVNTKTsKKyAgICBwcmVzc0V2ZW50LT5rZXkua2V5dmFsID0gZ2RrS2V5U3ltOworICAgIHByZXNz
RXZlbnQtPmtleS5zdGF0ZSA9IG1vZGlmaWVyczsKKyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93
ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV90ZXN0Q29udHJvbGxlci0+bWFp
bldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpKTsKKyAgICBnX29iamVjdF9yZWYocHJlc3NFdmVu
dC0+a2V5LndpbmRvdyk7CisgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UocHJlc3NFdmVudCwgZ2V0
RGVmYXVsdEdES1BvaW50ZXJEZXZpY2UocHJlc3NFdmVudC0+a2V5LndpbmRvdykpOworCisgICAg
R093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAgZ2ludCBuS2V5czsKKyAgICBpZiAoZ2Rr
X2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwg
Z2RrS2V5U3ltLCAma2V5cy5vdXRQdHIoKSwgJm5LZXlzKSkKKyAgICAgICAgcHJlc3NFdmVudC0+
a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlzWzBdLmtleWNvZGU7CisKKyAgICBHZGtFdmVudCog
cmVsZWFzZUV2ZW50ID0gZ2RrX2V2ZW50X2NvcHkocHJlc3NFdmVudCk7CisgICAgZGlzcGF0Y2hF
dmVudChwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0gR0RLX0tFWV9S
RUxFQVNFOworICAgIGRpc3BhdGNoRXZlbnQocmVsZWFzZUV2ZW50KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RSCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODE4OCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEwLTIxICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdIElt
cGxlbWVudCBLZXlEb3duIGZ1bmN0aW9uIGZvciBXZWJLaXQyIEV2ZW50U2VuZGVyLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0MTAKKworICAgICAg
ICBVbnNraXAgcGFzc2VkIHRlc3RzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkOgorCiAyMDExLTEwLTIx
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIGlubGluaW5n
IHNvbWV0aW1lcyBmYWlscyB0byByZXNldCBjb25zdGFudCByZWZlcmVuY2VzCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA5ODE4OCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtODcsMTggKzg3
LDEyIEBACiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXpJbmRleC1hZnRlci5odG1sCiBwbHVnaW5z
L2Z1bGxzY3JlZW4tcGx1Z2lucy1kb250LXJlbG9hZC5odG1sCiBwbHVnaW5zL2tleWJvYXJkLWV2
ZW50cy5odG1sCi1mYXN0L2RvbS9IVE1MU2VsZWN0RWxlbWVudC9jbGljay1zaXplLXplcm8tbm8t
Y3Jhc2guaHRtbAogZmFzdC9kb20vYWNjZXNzLWtleS1pZnJhbWUuaHRtbAogZmFzdC9kb20vaGlk
ZGVuLWlmcmFtZS1uby1mb2N1cy5odG1sCi1mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwuaHRtbAogZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCi1mYXN0
L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbAotZmFzdC9ldmVudHMvYXR0ZW1wdC1z
ZWxlY3QtYWxsLXdpdGgtd3JvbmctbW9kaWZpZXIuaHRtbAotZmFzdC9ldmVudHMva2V5ZXZlbnQt
aWZyYW1lLXJlbW92ZWQtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMva2V5LWV2ZW50cy1pbi1pbnB1
dC10ZXh0Lmh0bWwKIGZhc3QvZXZlbnRzL2ltYWdlbWFwLW5vcmVuZGVyLWNyYXNoLmh0bWwKIGZh
c3QvZXZlbnRzL3NwZWNpYWwta2V5LWV2ZW50cy1pbi1pbnB1dC10ZXh0Lmh0bWwKLWZhc3QvZXZl
bnRzL3NlbGVjdC1lbGVtZW50Lmh0bWwKIGZhc3QvZXZlbnRzL2FjY2Vzcy1rZXktc2VsZi1kZXN0
cnVjdC5odG1sCiBmYXN0L2V2ZW50cy9tdWx0aWxpbmUtbGluay1hcnJvdy1uYXZpZ2F0aW9uLmh0
bWwKIGZhc3QvZXZlbnRzL2NoZWNrLWRlZm9jdXMtZXZlbnQtb3JkZXItd2hlbi10cmlnZ2VyZWQt
YnktdGFiLmh0bWwKQEAgLTEwNywyMCArMTAxLDE2IEBACiBmYXN0L2V2ZW50cy9zY3JvbGwtYWZ0
ZXItY2xpY2stb24tdGFiLWluZGV4Lmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFy
cm93LWtleXMuaHRtbAogZmFzdC9ldmVudHMvdGFiLWlzLWZvY3VzYWJsZS1hc3NlcnQuaHRtbAot
ZmFzdC9ldmVudHMva2V5ZG93bi1rZXlwcmVzcy1wcmV2ZW50RGVmYXVsdC5odG1sCi1mYXN0L2V2
ZW50cy9rZXlkb3duLTEuaHRtbAogZmFzdC9ldmVudHMvZm9jdXNpbmdVbmxvYWRlZEZyYW1lLmh0
bWwKIGZhc3QvZXZlbnRzL29uc2VhcmNoLWVudGVyLmh0bWwKIGZhc3QvZXZlbnRzL2lucHV0VGV4
dC1uZXZlci1maXJlZC1vbi1rZXlkb3duLWNhbmNlbC5odG1sCiBmYXN0L2V2ZW50cy9rZXlkb3du
LW51bXBhZC1rZXlzLmh0bWwKLWZhc3QvZXZlbnRzL3NlbGVjdC1vbmNoYW5nZS1jcmFzaC5odG1s
CiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLXByZXZlbnQtZGVmYXVsdC5o
dG1sCiBmYXN0L2V2ZW50cy9vbmNoYW5nZS10ZXh0ZmllbGQuaHRtbAogZmFzdC9ldmVudHMvbWVk
aWEtZWxlbWVudC1mb2N1cy10YWIuaHRtbAogZmFzdC9ldmVudHMvZm9jdXMtY2hhbmdlLWNyYXNo
Lmh0bWwKIGZhc3QvZXZlbnRzL3RhYmluZGV4LWZvY3VzLWNoYWluLmh0bWwKIGZhc3QvZXZlbnRz
L25vZGUtZXZlbnQtYW5jaG9yLWxvY2suaHRtbAotZmFzdC9ldmVudHMvYXJyb3ctbmF2aWdhdGlv
bi5odG1sCiBmYXN0L2V2ZW50cy9rZXlkb3duLWtleXByZXNzLWZvY3VzLWNoYW5nZS5odG1sCiBm
YXN0L2V2ZW50cy9qcy1rZXlib2FyZC1ldmVudC1jcmVhdGlvbi5odG1sCiBmYXN0L2V2ZW50cy90
YWItZm9jdXMtaGlkZGVuLmh0bWwKQEAgLTEzMSwxNiArMTIxLDkgQEAKIGZhc3QvZXZlbnRzL29u
Y2hhbmdlLXNlbGVjdC1wb3B1cC5odG1sCiBmYXN0L2V2ZW50cy9vbmNoYW5nZS1zZWFyY2hmaWVs
ZC5odG1sCiBmYXN0L2V2ZW50cy9vbmNoYW5nZS10ZXh0LWZvcm0tZmllbGQuaHRtbAotZmFzdC9l
dmVudHMva2V5ZG93bi1yZW1vdmUtZnJhbWUuaHRtbAogZmFzdC9ldmVudHMva2V5cHJlc3MtZm9j
dXMtY2hhbmdlLmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tZnVuY3Rpb24ta2V5cy5odG1sCi1m
YXN0L2V2ZW50cy9zcGFjZS1zY3JvbGwtZXZlbnQuaHRtbAotZmFzdC9ldmVudHMvYXJyb3cta2V5
cy1vbi1ib2R5Lmh0bWwKLWZhc3QvZXZlbnRzL3JlY29yZGVkLWtleWRvd24tZXZlbnQuaHRtbAog
ZmFzdC9ldmVudHMvcG9wdXAtd2hlbi1zZWxlY3QtY2hhbmdlLmh0bWwKIGZhc3QvZXZlbnRzL3Rh
Yi1pbWFnZW1hcC5odG1sCi1mYXN0L2V2ZW50cy9tZW51LWtleWRvd24tb24taGlkZGVuLWVsZW1l
bnQuaHRtbAotZmFzdC9ldmVudHMvYW5jaG9yLWVtcHR5LWZvY3VzLmh0bWwKIGZhc3QvZXZlbnRz
L2tleS1ldmVudHMtaW4taW5wdXQtYnV0dG9uLmh0bWwKIGZhc3QvcmVwYWludC9maXhlZC1tb3Zl
LWFmdGVyLWtleWJvYXJkLXNjcm9sbC5odG1sCiBmYXN0L2Zvcm1zL29uY2hhbmdlLWVudGVyLXN1
Ym1pdC5odG1sCkBAIC0yMDAsOSArMTgzLDcgQEAKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJ5
LXdvcmQtMDAxLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMi5odG1s
CiBlZGl0aW5nL2RlbGV0aW5nL3NraXAtdmlyYW1hLTAwMS5odG1sCi1lZGl0aW5nL2RlbGV0aW5n
L2ZvcndhcmQtZGVsZXRlLWtleS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ieS13b3Jk
LTAwMi5odG1sCi1lZGl0aW5nL2RlbGV0aW5nLzU3Mjk2ODAuaHRtbAogZWRpdGluZy9pbnNlcnRp
bmcvdHlwaW5nLXRhYi1kZXNpZ25tb2RlLWZvcm1zLmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nL3R5
cGluZy10YWItZGVzaWdubW9kZS5odG1sCiBlZGl0aW5nL3VuZG8vdW5kby1kZWxldGVXb3JkLmh0
bWwKQEAgLTIxNSw3ICsxOTYsNiBAQAogZWRpdGluZy9pbnB1dC9zY3JvbGwtdmlld3BvcnQtcGFn
ZS11cC1kb3duLmh0bWwKIGVkaXRpbmcvaW5wdXQvb3B0aW9uLXBhZ2UtdXAtZG93bi5odG1sCiBl
ZGl0aW5nL2lucHV0L3N0eWxlLWNoYW5nZS1kdXJpbmctaW5wdXQuaHRtbAotZWRpdGluZy9pbnB1
dC9wYWdlLXVwLWRvd24tc2Nyb2xscy5odG1sCiAKICMgW0dUS10gSW1wbGVtZW50IGRyYWcgYW5k
IGRyb3Agc3VwcG9ydCBpbiBXZWJLaXQyCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MzcwNgpAQCAtMzkxLDcgKzM3MSw2IEBACiBmYXN0L2V2ZW50cy9yZW1vdmUt
dGFyZ2V0LWluLW1vdXNldXAuaHRtbAogZmFzdC9ldmVudHMvcmVzb3VyY2VzL2RyYWctb3V0c2lk
ZS13aW5kb3ctZnJhbWUuaHRtbAogZmFzdC9ldmVudHMvbW91c2VvdmVyLW1vdXNlb3V0Mi5odG1s
Ci1mYXN0L2V2ZW50cy9ub2RlLWV2ZW50LWFuY2hvci1sb2NrLmh0bWwKIGZhc3QvZXZlbnRzL21v
dXNlb3Zlci1idXR0b24uaHRtbAogZmFzdC9ldmVudHMvY2xpY2stZm9jdXMtYW5jaG9yLmh0bWwK
IGZhc3QvZW5jb2RpbmcvbWFpbHRvLWFsd2F5cy11dGYtOC5odG1sCkBAIC02MTUsMTAgKzU5NCw4
IEBACiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1hdC1iaWRpLWJvdW5kYXJ5Lmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9wYXJhZ3JhcGgt
Z3JhbnVsYXJpdHkuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTEzMTcxNi0zLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL2FmdGVyLWxpbmUtYnJlYWsuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vYW5j
aG9yLWZvY3VzMy5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81MDU3NTA2LTIuaHRtbAogZWRpdGlu
Zy9zZWxlY3Rpb24vYW5jaG9yLWZvY3VzMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9leHBhbmRp
bmctc2VsZWN0aW9ucy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi81MjMyMTU5Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112077</attachid>
            <date>2011-10-21 23:03:54 -0700</date>
            <delta_ts>2011-10-22 00:27:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17287</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk4MTg4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMTAtMjEgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5jdGlvbiBvbiBHdGsgcGxhdGZv
cm0uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXVFI6OmdldE1vZGlmaWVy
cyk6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorCiAyMDExLTEwLTIxICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmVuY2hlciBzY3JpcHQgZG9lc24ndCBtZWFz
dXJlIEdDIHRpbWVzIGFjY3VyYXRlbHkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gOTgxODgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBAIG5vaW5zdF9QUk9HUkFN
UyArPSBcCiAKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9X
ZWJLaXRUZXN0UnVubmVyL2d0ay9tYWluLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3Rr
L1BsYXRmb3JtV2ViVmlld0d0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rl
c3RDb250cm9sbGVyR3RrLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0
SW52b2NhdGlvbkNhaXJvLmNwcCBcCkBAIC0yMiwxMSArMjMsMTMgQEAgUHJvZ3JhbXNfV2ViS2l0
VGVzdFJ1bm5lcl9TT1VSQ0VTID0gXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggXAog
CVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIFwKLQlUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9u
aW5nLmMKIAogUHJvZ3JhbXNfV2ViS2l0VGVzdFJ1bm5lcl9DUFBGTEFHUyA9IFwKIAktaW5jbHVk
ZSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaCBcCiAJLUkk
KHNyY2RpcikvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lciBcCisJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL2luY2x1ZGUgXAogCS1EV0VCS0lUX0VYRUNfUEFUSD1cIiR7c2hlbGwgcHdkfS8kKHRv
cF9idWlsZGRpcikvUHJvZ3JhbXMvXCIgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gOTgxODgp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAjaW5jbHVkZSAi
RXZlbnRTZW5kZXJQcm94eS5oIgogI2VuZGlmCiAKQEAgLTc0LDcgKzc0LDcgQEAgVGVzdENvbnRy
b2xsZXI6OlRlc3RDb250cm9sbGVyKGludCBhcmdjLAogICAgICwgbV9kaWRQcmludFdlYlByb2Nl
c3NDcmFzaGVkTWVzc2FnZShmYWxzZSkKICAgICAsIG1fc2hvdWxkRXhpdFdoZW5XZWJQcm9jZXNz
Q3Jhc2hlcyh0cnVlKQogICAgICwgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSh0cnVlKQotI2lm
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogICAgICwgbV9ldmVudFNlbmRlclByb3h5KG5ldyBF
dmVudFNlbmRlclByb3h5KHRoaXMpKQogI2VuZGlmCiB7CkBAIC01NDAsNyArNTQwLDcgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcgogCiBXS1JldGFpblB0cjxXS1R5
cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJv
ZHkpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJFdmVudFNlbmRlciIpKSB7CiAgICAgICAg
IEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlE
KCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3Rh
dGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CkBAIC01NjUsNiArNTY1LDcg
QEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZAogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIH0KIAorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQp
CiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1l
LCAiTW91c2VEb3duIikgfHwgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdl
TmFtZSwgIk1vdXNlVXAiKSkgewogICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IGJ1dHRvbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJ1dHRv
biIpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ1dHRvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYnV0dG9uS2V5LmdldCgpKSkpKTsK
QEAgLTYxNyw3ICs2MTgsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVy
OjpkCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPmxlYXBGb3J3YXJkKHRpbWUpOwog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLQorI2VuZGlmCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICNlbmRpZgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJKHJldmlzaW9uIDApCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IFphbiBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdh
bGlhIFMuTC4KKyAqIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRT
ZW5kZXJQcm94eS5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAi
VGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxHdGtWZXJzaW9uaW5nLmg+CisjaW5jbHVkZSA8
Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RSIHsK
Ky8vIEtleSBldmVudCBsb2NhdGlvbiBjb2RlIGRlZmluZWQgaW4gRE9NIExldmVsIDMuCitlbnVt
IEtleUxvY2F0aW9uQ29kZSB7CisgICAgRE9NS2V5TG9jYXRpb25TdGFuZGFyZCAgICAgID0gMHgw
MCwKKyAgICBET01LZXlMb2NhdGlvbkxlZnQgICAgICAgICAgPSAweDAxLAorICAgIERPTUtleUxv
Y2F0aW9uUmlnaHQgICAgICAgICA9IDB4MDIsCisgICAgRE9NS2V5TG9jYXRpb25OdW1wYWQgICAg
ICAgID0gMHgwMworfTsKKworRXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0
Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIpCisgICAgOiBtX3Rlc3RDb250cm9sbGVyKHRlc3RD
b250cm9sbGVyKQoreworfQorCitzdGF0aWMgdm9pZCBkaXNwYXRjaEV2ZW50KEdka0V2ZW50KiBl
dmVudCkKK3sKKyAgICBndGtfbWFpbl9kb19ldmVudChldmVudCk7CisgICAgZ2RrX2V2ZW50X2Zy
ZWUoZXZlbnQpOworfQorCisKK3N0YXRpYyBndWludCBnZXRNb2RpZmllcnMoV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnNSZWYpCit7CisgICAgZ3VpbnQgbW9kaWZpZXJzID0gMDsKKworICAgIGlm
IChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpCisgICAgICAgIG1v
ZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYgKG1vZGlmaWVy
c1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBr
V0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVu
dE1vZGlmaWVyc0FsdEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJz
QWx0S2V5OworICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkp
CisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXk7CisKKyAgICBy
ZXR1cm4gbW9kaWZpZXJzOworfQorCitpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5n
UmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2RpZmllcnMpCit7CisgICAg
aWYgKGxvY2F0aW9uID09IERPTUtleUxvY2F0aW9uTnVtcGFkKSB7CisgICAgICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImxlZnRBcnJvdyIpKQorICAgICAgICAg
ICAgcmV0dXJuIEdES19LRVlfS1BfTGVmdDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoa2V5UmVmLCAicmlnaHRBcnJvciIpKQorICAgICAgICAgICAgcmV0dXJuIEdE
S19LRVlfS1BfUmlnaHQ7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgInVwQXJyb3ciKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX1VwOwor
ICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkb3duQXJy
b3ciKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX0Rvd247CisgICAgICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAgICAg
ICAgcmV0dXJuIEdES19LRVlfS1BfUGFnZV9VcDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFnZURvd24iKSkKKyAgICAgICAgICAgIHJldHVybiBH
REtfS0VZX0tQX1BhZ2VfRG93bjsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoa2V5UmVmLCAiaG9tZSIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfSG9t
ZTsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5k
IikpCisgICAgICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9FbmQ7CisgICAgICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImluc2VydCIpKQorICAgICAgICAgICAg
cmV0dXJuIEdES19LRVlfS1BfSW5zZXJ0OworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJkZWxldGUiKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZ
X0tQX0RlbGV0ZTsKKworICAgICAgICByZXR1cm4gR0RLX0tFWV9Wb2lkU3ltYm9sOworICAgIH0K
KworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImxlZnRBcnJv
dyIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9MZWZ0OworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInJpZ2h0QXJyb3IiKSkKKyAgICAgICAgcmV0dXJuIEdE
S19LRVlfUmlnaHQ7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVm
LCAidXBBcnJvdyIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9VcDsKKyAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkb3duQXJyb3ciKSkKKyAgICAgICAgcmV0
dXJuIEdES19LRVlfRG93bjsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhr
ZXlSZWYsICJwYWdlVXAiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfUGFnZV9VcDsKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJwYWdlRG93biIpKQorICAg
ICAgICByZXR1cm4gR0RLX0tFWV9QYWdlX0Rvd247CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoa2V5UmVmLCAiaG9tZSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9Ib21l
OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgImVuZCIpKQor
ICAgICAgICByZXR1cm4gR0RLX0tFWV9FbmQ7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcoa2V5UmVmLCAiaW5zZXJ0IikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0luc2Vy
dDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkZWxldGUi
KSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfRGVsZXRlOworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInByaW50U2NyZWVuIikpCisgICAgICAgIHJldHVybiBH
REtfS0VZX1ByaW50OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJl
ZiwgIm1lbnUiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfTWVudTsKKyAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMSIpKQorICAgICAgICByZXR1cm4gR0RL
X0tFWV9GMTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJG
MiIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMjsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMyIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMzsK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGNCIpKQorICAg
ICAgICByZXR1cm4gR0RLX0tFWV9GNDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhrZXlSZWYsICJGNSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GNTsKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGNiIpKQorICAgICAgICByZXR1
cm4gR0RLX0tFWV9GNjsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlS
ZWYsICJGNyIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GNzsKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGOCIpKQorICAgICAgICByZXR1cm4gR0RLX0tF
WV9GODsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGOSIp
KQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GOTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJGMTAiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfRjEwOwor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIkYxMSIpKQorICAg
ICAgICByZXR1cm4gR0RLX0tFWV9GMTE7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoa2V5UmVmLCAiRjEyIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX0YxMjsKKworICAg
IHNpemVfdCBzdHJpbmdTaXplID0gV0tTdHJpbmdHZXRMZW5ndGgoa2V5UmVmKTsKKyAgICBjaGFy
KiBidWZmZXIgPSBuZXcgY2hhcltzdHJpbmdTaXplXTsKKyAgICBXS1N0cmluZ0dldFVURjhDU3Ry
aW5nKGtleVJlZiwgYnVmZmVyLCBzdHJpbmdTaXplKTsKKyAgICBpbnQgY2hhckNvZGUgPSBidWZm
ZXJbMF07CisKKyAgICBpZiAoY2hhckNvZGUgPT0gJ1xuJyB8fCBjaGFyQ29kZSA9PSAnXHInKQor
ICAgICAgICByZXR1cm4gR0RLX0tFWV9SZXR1cm47CisgICAgaWYgKGNoYXJDb2RlID09ICdcdCcp
CisgICAgICAgIHJldHVybiBHREtfS0VZX1RhYjsKKyAgICBpZiAoY2hhckNvZGUgPT0gJ1x4OCcp
CisgICAgICAgIHJldHVybiBHREtfS0VZX0JhY2tTcGFjZTsKKworICAgIGlmIChXVEY6OmlzQVND
SUlVcHBlcihjaGFyQ29kZSkpCisgICAgICAgICptb2RpZmllcnMgfD0gR0RLX1NISUZUX01BU0s7
CisKKyAgICByZXR1cm4gZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKGNoYXJDb2RlKTsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleVJlZiwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnNSZWYsIHVuc2lnbmVkIGxvY2F0aW9uKQoreworICAgIGd1aW50IG1v
ZGlmaWVycyA9IGdldE1vZGlmaWVycyhtb2RpZmllcnNSZWYpOworICAgIGludCBnZGtLZXlTeW0g
PSBnZXRHREtLZXlTeW1Gb3JLZXlSZWYoa2V5UmVmLCBsb2NhdGlvbiwgJm1vZGlmaWVycyk7CisK
KyAgICBHZGtFdmVudCogcHJlc3NFdmVudCA9IGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUyk7
CisgICAgcHJlc3NFdmVudC0+a2V5LmtleXZhbCA9IGdka0tleVN5bTsKKyAgICBwcmVzc0V2ZW50
LT5rZXkuc3RhdGUgPSBtb2RpZmllcnM7CisgICAgcHJlc3NFdmVudC0+a2V5LndpbmRvdyA9IGd0
a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtVmlldygpKSk7CisgICAgZ19vYmplY3RfcmVmKHByZXNzRXZlbnQtPmtl
eS53aW5kb3cpOworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHByZXNzRXZlbnQsIGdldERlZmF1
bHRHREtQb2ludGVyRGV2aWNlKHByZXNzRXZlbnQtPmtleS53aW5kb3cpKTsKKworICAgIEdPd25Q
dHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAgIGdpbnQgbktleXM7CisgICAgaWYgKGdka19rZXlt
YXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGdka0tl
eVN5bSwgJmtleXMub3V0UHRyKCksICZuS2V5cykpCisgICAgICAgIHByZXNzRXZlbnQtPmtleS5o
YXJkd2FyZV9rZXljb2RlID0ga2V5c1swXS5rZXljb2RlOworCisgICAgR2RrRXZlbnQqIHJlbGVh
c2VFdmVudCA9IGdka19ldmVudF9jb3B5KHByZXNzRXZlbnQpOworICAgIGRpc3BhdGNoRXZlbnQo
cHJlc3NFdmVudCk7CisgICAgcmVsZWFzZUV2ZW50LT5rZXkudHlwZSA9IEdES19LRVlfUkVMRUFT
RTsKKyAgICBkaXNwYXRjaEV2ZW50KHJlbGVhc2VFdmVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdUUgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTgxODgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yMSAgS2F1c3R1YmggQXRy
YXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgS2V5RG93biBmdW5jdGlvbiBmb3IgV2ViS2l0MiBFdmVudFNlbmRlci4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDEwCisKKyAgICAgICAgVW5z
a2lwIHBhc3NlZCB0ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvU2tpcHBlZDoKKwogMjAxMS0xMC0yMSAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBpbmxpbmluZyBzb21l
dGltZXMgZmFpbHMgdG8gcmVzZXQgY29uc3RhbnQgcmVmZXJlbmNlcwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay13azIvU2tpcHBlZAkocmV2aXNpb24gOTgxODgpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGstd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTg3LDE4ICs4NywxMiBA
QCBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS5odG1sCiBmdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXpJbmRleC1hZnRlci5odG1sCiBwbHVnaW5zL2Z1bGxzY3JlZW4tcGx1Z2lucy1kb250LXJl
bG9hZC5odG1sCiBwbHVnaW5zL2tleWJvYXJkLWV2ZW50cy5odG1sCi1mYXN0L2RvbS9IVE1MU2Vs
ZWN0RWxlbWVudC9jbGljay1zaXplLXplcm8tbm8tY3Jhc2guaHRtbAogZmFzdC9kb20vYWNjZXNz
LWtleS1pZnJhbWUuaHRtbAogZmFzdC9kb20vaGlkZGVuLWlmcmFtZS1uby1mb2N1cy5odG1sCi1m
YXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAogZmFzdC9kb20vdmVydGlj
YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCi1mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5v
ZGUuaHRtbAotZmFzdC9ldmVudHMvYXR0ZW1wdC1zZWxlY3QtYWxsLXdpdGgtd3JvbmctbW9kaWZp
ZXIuaHRtbAotZmFzdC9ldmVudHMva2V5ZXZlbnQtaWZyYW1lLXJlbW92ZWQtY3Jhc2guaHRtbAog
ZmFzdC9ldmVudHMva2V5LWV2ZW50cy1pbi1pbnB1dC10ZXh0Lmh0bWwKIGZhc3QvZXZlbnRzL2lt
YWdlbWFwLW5vcmVuZGVyLWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRzL3NwZWNpYWwta2V5LWV2ZW50
cy1pbi1pbnB1dC10ZXh0Lmh0bWwKLWZhc3QvZXZlbnRzL3NlbGVjdC1lbGVtZW50Lmh0bWwKIGZh
c3QvZXZlbnRzL2FjY2Vzcy1rZXktc2VsZi1kZXN0cnVjdC5odG1sCiBmYXN0L2V2ZW50cy9tdWx0
aWxpbmUtbGluay1hcnJvdy1uYXZpZ2F0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL2NoZWNrLWRlZm9j
dXMtZXZlbnQtb3JkZXItd2hlbi10cmlnZ2VyZWQtYnktdGFiLmh0bWwKQEAgLTEwNywyMCArMTAx
LDE2IEBAIGZhc3QvZXZlbnRzL3NlbGVjdGlvbmNoYW5nZS11c2VyLWluaXRpYXQKIGZhc3QvZXZl
bnRzL3Njcm9sbC1hZnRlci1jbGljay1vbi10YWItaW5kZXguaHRtbAogZmFzdC9ldmVudHMvc2Vs
ZWN0c3RhcnQtYnktYXJyb3cta2V5cy5odG1sCiBmYXN0L2V2ZW50cy90YWItaXMtZm9jdXNhYmxl
LWFzc2VydC5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLWtleXByZXNzLXByZXZlbnREZWZhdWx0
Lmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tMS5odG1sCiBmYXN0L2V2ZW50cy9mb2N1c2luZ1Vu
bG9hZGVkRnJhbWUuaHRtbAogZmFzdC9ldmVudHMvb25zZWFyY2gtZW50ZXIuaHRtbAogZmFzdC9l
dmVudHMvaW5wdXRUZXh0LW5ldmVyLWZpcmVkLW9uLWtleWRvd24tY2FuY2VsLmh0bWwKIGZhc3Qv
ZXZlbnRzL2tleWRvd24tbnVtcGFkLWtleXMuaHRtbAotZmFzdC9ldmVudHMvc2VsZWN0LW9uY2hh
bmdlLWNyYXNoLmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtcHJl
dmVudC1kZWZhdWx0Lmh0bWwKIGZhc3QvZXZlbnRzL29uY2hhbmdlLXRleHRmaWVsZC5odG1sCiBm
YXN0L2V2ZW50cy9tZWRpYS1lbGVtZW50LWZvY3VzLXRhYi5odG1sCiBmYXN0L2V2ZW50cy9mb2N1
cy1jaGFuZ2UtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMvdGFiaW5kZXgtZm9jdXMtY2hhaW4uaHRt
bAogZmFzdC9ldmVudHMvbm9kZS1ldmVudC1hbmNob3ItbG9jay5odG1sCi1mYXN0L2V2ZW50cy9h
cnJvdy1uYXZpZ2F0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL2tleWRvd24ta2V5cHJlc3MtZm9jdXMt
Y2hhbmdlLmh0bWwKIGZhc3QvZXZlbnRzL2pzLWtleWJvYXJkLWV2ZW50LWNyZWF0aW9uLmh0bWwK
IGZhc3QvZXZlbnRzL3RhYi1mb2N1cy1oaWRkZW4uaHRtbApAQCAtMTMxLDE2ICsxMjEsOSBAQCBm
YXN0L2V2ZW50cy9jaGVjay1kZWZvY3VzLWV2ZW50LW9yZGVyLXdoCiBmYXN0L2V2ZW50cy9vbmNo
YW5nZS1zZWxlY3QtcG9wdXAuaHRtbAogZmFzdC9ldmVudHMvb25jaGFuZ2Utc2VhcmNoZmllbGQu
aHRtbAogZmFzdC9ldmVudHMvb25jaGFuZ2UtdGV4dC1mb3JtLWZpZWxkLmh0bWwKLWZhc3QvZXZl
bnRzL2tleWRvd24tcmVtb3ZlLWZyYW1lLmh0bWwKIGZhc3QvZXZlbnRzL2tleXByZXNzLWZvY3Vz
LWNoYW5nZS5odG1sCi1mYXN0L2V2ZW50cy9rZXlkb3duLWZ1bmN0aW9uLWtleXMuaHRtbAotZmFz
dC9ldmVudHMvc3BhY2Utc2Nyb2xsLWV2ZW50Lmh0bWwKLWZhc3QvZXZlbnRzL2Fycm93LWtleXMt
b24tYm9keS5odG1sCi1mYXN0L2V2ZW50cy9yZWNvcmRlZC1rZXlkb3duLWV2ZW50Lmh0bWwKIGZh
c3QvZXZlbnRzL3BvcHVwLXdoZW4tc2VsZWN0LWNoYW5nZS5odG1sCiBmYXN0L2V2ZW50cy90YWIt
aW1hZ2VtYXAuaHRtbAotZmFzdC9ldmVudHMvbWVudS1rZXlkb3duLW9uLWhpZGRlbi1lbGVtZW50
Lmh0bWwKLWZhc3QvZXZlbnRzL2FuY2hvci1lbXB0eS1mb2N1cy5odG1sCiBmYXN0L2V2ZW50cy9r
ZXktZXZlbnRzLWluLWlucHV0LWJ1dHRvbi5odG1sCiBmYXN0L3JlcGFpbnQvZml4ZWQtbW92ZS1h
ZnRlci1rZXlib2FyZC1zY3JvbGwuaHRtbAogZmFzdC9mb3Jtcy9vbmNoYW5nZS1lbnRlci1zdWJt
aXQuaHRtbApAQCAtMjAwLDkgKzE4Myw3IEBAIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0
dXJlLTAwMS5odG0KIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJ5LXdvcmQtMDAxLmh0bWwKIGVk
aXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMi5odG1sCiBlZGl0aW5nL2RlbGV0aW5n
L3NraXAtdmlyYW1hLTAwMS5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL2ZvcndhcmQtZGVsZXRlLWtl
eS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ieS13b3JkLTAwMi5odG1sCi1lZGl0aW5n
L2RlbGV0aW5nLzU3Mjk2ODAuaHRtbAogZWRpdGluZy9pbnNlcnRpbmcvdHlwaW5nLXRhYi1kZXNp
Z25tb2RlLWZvcm1zLmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nL3R5cGluZy10YWItZGVzaWdubW9k
ZS5odG1sCiBlZGl0aW5nL3VuZG8vdW5kby1kZWxldGVXb3JkLmh0bWwKQEAgLTIxNSw3ICsxOTYs
NiBAQCBlZGl0aW5nL2lucHV0L2VtYWNzLWN0cmwtby5odG1sCiBlZGl0aW5nL2lucHV0L3Njcm9s
bC12aWV3cG9ydC1wYWdlLXVwLWRvd24uaHRtbAogZWRpdGluZy9pbnB1dC9vcHRpb24tcGFnZS11
cC1kb3duLmh0bWwKIGVkaXRpbmcvaW5wdXQvc3R5bGUtY2hhbmdlLWR1cmluZy1pbnB1dC5odG1s
Ci1lZGl0aW5nL2lucHV0L3BhZ2UtdXAtZG93bi1zY3JvbGxzLmh0bWwKIAogIyBbR1RLXSBJbXBs
ZW1lbnQgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IGluIFdlYktpdDIKICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNzA2CkBAIC0zOTEsNyArMzcxLDYgQEAgZmFzdC9l
dmVudHMvb25kcm9wLXRleHQtaHRtbC5odG1sCiBmYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LWlu
LW1vdXNldXAuaHRtbAogZmFzdC9ldmVudHMvcmVzb3VyY2VzL2RyYWctb3V0c2lkZS13aW5kb3ct
ZnJhbWUuaHRtbAogZmFzdC9ldmVudHMvbW91c2VvdmVyLW1vdXNlb3V0Mi5odG1sCi1mYXN0L2V2
ZW50cy9ub2RlLWV2ZW50LWFuY2hvci1sb2NrLmh0bWwKIGZhc3QvZXZlbnRzL21vdXNlb3Zlci1i
dXR0b24uaHRtbAogZmFzdC9ldmVudHMvY2xpY2stZm9jdXMtYW5jaG9yLmh0bWwKIGZhc3QvZW5j
b2RpbmcvbWFpbHRvLWFsd2F5cy11dGYtOC5odG1sCkBAIC02MTUsMTAgKzU5NCw4IEBAIGVkaXRp
bmcvc2VsZWN0aW9uLzUyMDk5ODQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQtYmlk
aS1ib3VuZGFyeS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9mYWtlLWRyYWcuaHRtbAogZWRpdGlu
Zy9zZWxlY3Rpb24vcGFyYWdyYXBoLWdyYW51bGFyaXR5Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9u
LzUxMzE3MTYtMy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hZnRlci1saW5lLWJyZWFrLmh0bWwK
IGVkaXRpbmcvc2VsZWN0aW9uL2FuY2hvci1mb2N1czMuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24v
NTA1NzUwNi0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FuY2hvci1mb2N1czEuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMuaHRtbAogZWRpdGluZy9zZWxlY3Rp
b24vNTIzMjE1OS5odG1sCg==
</data>
<flag name="commit-queue"
          id="110068"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112080</attachid>
            <date>2011-10-22 00:27:53 -0700</date>
            <delta_ts>2011-10-22 00:48:35 -0700</delta_ts>
            <desc>Fixed Patch</desc>
            <filename>Updated_patch.txt</filename>
            <type>text/plain</type>
            <size>16843</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk4MTkxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMTAtMjEgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5jdGlvbiBvbiBHdGsgcGxhdGZv
cm0uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXVFI6OmdldE1vZGlmaWVy
cyk6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorCiAyMDExLTEwLTIxICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmVuY2hlciBzY3JpcHQgZG9lc24ndCBtZWFz
dXJlIEdDIHRpbWVzIGFjY3VyYXRlbHkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gOTgxOTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiAKIFByb2dyYW1zX1dl
YktpdFRlc3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9t
YWluLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0
ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5j
cHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcCBc
CiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBc
CkBAIC0yMiwxMSArMjMsMTMgQEAKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIFwKIAlU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBcCi0JVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmlu
Zy5jCiAKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfQ1BQRkxBR1MgPSBcCiAJLWluY2x1ZGUg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1JJChz
cmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9pbmNsdWRlIFwKIAktRFdFQktJVF9FWEVDX1BBVEg9XCIke3NoZWxsIHB3ZH0vJCh0b3Bf
YnVpbGRkaXIpL1Byb2dyYW1zL1wiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk4MTkxKQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkV2
ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCkBAIC03NCw3ICs3NCw3IEBACiAgICAgLCBtX2Rp
ZFByaW50V2ViUHJvY2Vzc0NyYXNoZWRNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRFeGl0
V2hlbldlYlByb2Nlc3NDcmFzaGVzKHRydWUpCiAgICAgLCBtX2JlZm9yZVVubG9hZFJldHVyblZh
bHVlKHRydWUpCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgLCBtX2V2ZW50U2Vu
ZGVyUHJveHkobmV3IEV2ZW50U2VuZGVyUHJveHkodGhpcykpCiAjZW5kaWYKIHsKQEAgLTU0MCw3
ICs1NDAsNyBAQAogCiBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShHVEspCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJFdmVudFNlbmRlciIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlS
ZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPiht
ZXNzYWdlQm9keSk7CkBAIC01NjUsNiArNTY1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93
biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3Vz
ZVVwIikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBidXR0b24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIGJ1dHRvbktleS5nZXQoKSkpKSk7CkBAIC02MTcsNyAr
NjE4LDcgQEAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGlt
ZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJF
dmVudFNlbmRlclByb3h5LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEd0a1ZlcnNpb25pbmcuaD4KKyNpbmNs
dWRlIDxHT3duUHRyR3RrLmg+CisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9n
ZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RSIHsKKy8vIEtleSBldmVudCBsb2NhdGlvbiBjb2Rl
IGRlZmluZWQgaW4gRE9NIExldmVsIDMuCitlbnVtIEtleUxvY2F0aW9uQ29kZSB7CisgICAgRE9N
S2V5TG9jYXRpb25TdGFuZGFyZCAgICAgID0gMHgwMCwKKyAgICBET01LZXlMb2NhdGlvbkxlZnQg
ICAgICAgICAgPSAweDAxLAorICAgIERPTUtleUxvY2F0aW9uUmlnaHQgICAgICAgICA9IDB4MDIs
CisgICAgRE9NS2V5TG9jYXRpb25OdW1wYWQgICAgICAgID0gMHgwMworfTsKKworRXZlbnRTZW5k
ZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIp
CisgICAgOiBtX3Rlc3RDb250cm9sbGVyKHRlc3RDb250cm9sbGVyKQoreworfQorCitzdGF0aWMg
dm9pZCBkaXNwYXRjaEV2ZW50KEdka0V2ZW50KiBldmVudCkKK3sKKyAgICBndGtfbWFpbl9kb19l
dmVudChldmVudCk7CisgICAgZ2RrX2V2ZW50X2ZyZWUoZXZlbnQpOworfQorCisKK3N0YXRpYyBn
dWludCBnZXRNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnNSZWYpCit7CisgICAg
Z3VpbnQgbW9kaWZpZXJzID0gMDsKKworICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1v
ZGlmaWVyc0NvbnRyb2xLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVy
c0NvbnRyb2xLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzU2hp
ZnRLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5Owor
ICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc0FsdEtleSkKKyAgICAgICAg
bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5OworICAgIGlmIChtb2RpZmllcnNS
ZWYgJiBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tF
dmVudE1vZGlmaWVyc01ldGFLZXk7CisKKyAgICByZXR1cm4gbW9kaWZpZXJzOworfQorCitpbnQg
Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRp
b24sIGd1aW50KiBtb2RpZmllcnMpCit7CisgICAgaWYgKGxvY2F0aW9uID09IERPTUtleUxvY2F0
aW9uTnVtcGFkKSB7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgImxlZnRBcnJvdyIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfTGVmdDsK
KyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicmlnaHRB
cnJvciIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfUmlnaHQ7CisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInVwQXJyb3ciKSkKKyAgICAg
ICAgICAgIHJldHVybiBHREtfS0VZX0tQX1VwOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkb3duQXJyb3ciKSkKKyAgICAgICAgICAgIHJldHVybiBH
REtfS0VZX0tQX0Rvd247CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfUGFnZV9V
cDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFn
ZURvd24iKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX1BhZ2VfRG93bjsKKyAgICAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaG9tZSIpKQorICAg
ICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfSG9tZTsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5kIikpCisgICAgICAgICAgICByZXR1cm4gR0RL
X0tFWV9LUF9FbmQ7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgImluc2VydCIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfSW5zZXJ0Owor
ICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkZWxldGUi
KSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX0RlbGV0ZTsKKworICAgICAgICByZXR1
cm4gR0RLX0tFWV9Wb2lkU3ltYm9sOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgImxlZnRBcnJvdyIpKQorICAgICAgICByZXR1cm4gR0RLX0tF
WV9MZWZ0OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInJp
Z2h0QXJyb3IiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfUmlnaHQ7CisgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAidXBBcnJvdyIpKQorICAgICAgICByZXR1
cm4gR0RLX0tFWV9VcDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlS
ZWYsICJkb3duQXJyb3ciKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfRG93bjsKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJwYWdlVXAiKSkKKyAgICAgICAg
cmV0dXJuIEdES19LRVlfUGFnZV9VcDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhrZXlSZWYsICJwYWdlRG93biIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9QYWdlX0Rv
d247CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaG9tZSIp
KQorICAgICAgICByZXR1cm4gR0RLX0tFWV9Ib21lOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgImVuZCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9FbmQ7
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaW5zZXJ0Iikp
CisgICAgICAgIHJldHVybiBHREtfS0VZX0luc2VydDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkZWxldGUiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlf
RGVsZXRlOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBy
aW50U2NyZWVuIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX1ByaW50OworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIm1lbnUiKSkKKyAgICAgICAgcmV0dXJu
IEdES19LRVlfTWVudTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlS
ZWYsICJGMSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTsKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMiIpKQorICAgICAgICByZXR1cm4gR0RLX0tF
WV9GMjsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMyIp
KQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMzsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJGNCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GNDsKKyAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGNSIpKQorICAgICAg
ICByZXR1cm4gR0RLX0tFWV9GNTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhrZXlSZWYsICJGNiIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GNjsKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGNyIpKQorICAgICAgICByZXR1cm4g
R0RLX0tFWV9GNzsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYs
ICJGOCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GODsKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGOSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9G
OTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMTAiKSkK
KyAgICAgICAgcmV0dXJuIEdES19LRVlfRjEwOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGtleVJlZiwgIkYxMSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTE7Cisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjEyIikpCisgICAg
ICAgIHJldHVybiBHREtfS0VZX0YxMjsKKworICAgIHNpemVfdCBzdHJpbmdTaXplID0gV0tTdHJp
bmdHZXRMZW5ndGgoa2V5UmVmKTsKKyAgICBjaGFyKiBidWZmZXIgPSBuZXcgY2hhcltzdHJpbmdT
aXplXTsKKyAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtleVJlZiwgYnVmZmVyLCBzdHJpbmdT
aXplKTsKKyAgICBpbnQgY2hhckNvZGUgPSBidWZmZXJbMF07CisKKyAgICBpZiAoY2hhckNvZGUg
PT0gJ1xuJyB8fCBjaGFyQ29kZSA9PSAnXHInKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9SZXR1
cm47CisgICAgaWYgKGNoYXJDb2RlID09ICdcdCcpCisgICAgICAgIHJldHVybiBHREtfS0VZX1Rh
YjsKKyAgICBpZiAoY2hhckNvZGUgPT0gJ1x4OCcpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Jh
Y2tTcGFjZTsKKworICAgIGlmIChXVEY6OmlzQVNDSUlVcHBlcihjaGFyQ29kZSkpCisgICAgICAg
ICptb2RpZmllcnMgfD0gR0RLX1NISUZUX01BU0s7CisKKyAgICByZXR1cm4gZ2RrX3VuaWNvZGVf
dG9fa2V5dmFsKGNoYXJDb2RlKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3du
KFdLU3RyaW5nUmVmIGtleVJlZiwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnNSZWYsIHVuc2ln
bmVkIGxvY2F0aW9uKQoreworICAgIGd1aW50IG1vZGlmaWVycyA9IGdldE1vZGlmaWVycyhtb2Rp
ZmllcnNSZWYpOworICAgIGludCBnZGtLZXlTeW0gPSBnZXRHREtLZXlTeW1Gb3JLZXlSZWYoa2V5
UmVmLCBsb2NhdGlvbiwgJm1vZGlmaWVycyk7CisKKyAgICBHZGtFdmVudCogcHJlc3NFdmVudCA9
IGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUyk7CisgICAgcHJlc3NFdmVudC0+a2V5LmtleXZh
bCA9IGdka0tleVN5bTsKKyAgICBwcmVzc0V2ZW50LT5rZXkuc3RhdGUgPSBtb2RpZmllcnM7Cisg
ICAgcHJlc3NFdmVudC0+a2V5LndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lE
R0VUKG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSk7Cisg
ICAgZ19vYmplY3RfcmVmKHByZXNzRXZlbnQtPmtleS53aW5kb3cpOworICAgIGdka19ldmVudF9z
ZXRfZGV2aWNlKHByZXNzRXZlbnQsIGdldERlZmF1bHRHREtQb2ludGVyRGV2aWNlKHByZXNzRXZl
bnQtPmtleS53aW5kb3cpKTsKKworICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAg
IGdpbnQgbktleXM7CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChn
ZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGdka0tleVN5bSwgJmtleXMub3V0UHRyKCksICZuS2V5
cykpCisgICAgICAgIHByZXNzRXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5vdXRQ
dHIoKVswXS5rZXljb2RlOworCisgICAgR2RrRXZlbnQqIHJlbGVhc2VFdmVudCA9IGdka19ldmVu
dF9jb3B5KHByZXNzRXZlbnQpOworICAgIGRpc3BhdGNoRXZlbnQocHJlc3NFdmVudCk7CisgICAg
cmVsZWFzZUV2ZW50LT5rZXkudHlwZSA9IEdES19LRVlfUkVMRUFTRTsKKyAgICBkaXNwYXRjaEV2
ZW50KHJlbGVhc2VFdmVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gOTgxOTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxMS0xMC0yMSAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJo
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgS2V5RG93biBmdW5jdGlv
biBmb3IgV2ViS2l0MiBFdmVudFNlbmRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY5NDEwCisKKyAgICAgICAgVW5za2lwIHBhc3NlZCB0ZXN0cy4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2d0ay13azIvU2tpcHBlZDoKKwogMjAxMS0xMC0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIERGRyBpbmxpbmluZyBzb21ldGltZXMgZmFpbHMgdG8gcmVz
ZXQgY29uc3RhbnQgcmVmZXJlbmNlcwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdr
Mi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tp
cHBlZAkocmV2aXNpb24gOTgxOTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTg3LDE4ICs4NywxMiBAQAogZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi16SW5kZXgtYWZ0ZXIuaHRtbAogcGx1Z2lucy9mdWxsc2NyZWVuLXBsdWdpbnMtZG9u
dC1yZWxvYWQuaHRtbAogcGx1Z2lucy9rZXlib2FyZC1ldmVudHMuaHRtbAotZmFzdC9kb20vSFRN
TFNlbGVjdEVsZW1lbnQvY2xpY2stc2l6ZS16ZXJvLW5vLWNyYXNoLmh0bWwKIGZhc3QvZG9tL2Fj
Y2Vzcy1rZXktaWZyYW1lLmh0bWwKIGZhc3QvZG9tL2hpZGRlbi1pZnJhbWUtbm8tZm9jdXMuaHRt
bAotZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3QvZG9tL3Zl
cnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAotZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3Zl
ZC1ub2RlLmh0bWwKLWZhc3QvZXZlbnRzL2F0dGVtcHQtc2VsZWN0LWFsbC13aXRoLXdyb25nLW1v
ZGlmaWVyLmh0bWwKLWZhc3QvZXZlbnRzL2tleWV2ZW50LWlmcmFtZS1yZW1vdmVkLWNyYXNoLmh0
bWwKIGZhc3QvZXZlbnRzL2tleS1ldmVudHMtaW4taW5wdXQtdGV4dC5odG1sCiBmYXN0L2V2ZW50
cy9pbWFnZW1hcC1ub3JlbmRlci1jcmFzaC5odG1sCiBmYXN0L2V2ZW50cy9zcGVjaWFsLWtleS1l
dmVudHMtaW4taW5wdXQtdGV4dC5odG1sCi1mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1s
CiBmYXN0L2V2ZW50cy9hY2Nlc3Mta2V5LXNlbGYtZGVzdHJ1Y3QuaHRtbAogZmFzdC9ldmVudHMv
bXVsdGlsaW5lLWxpbmstYXJyb3ctbmF2aWdhdGlvbi5odG1sCiBmYXN0L2V2ZW50cy9jaGVjay1k
ZWZvY3VzLWV2ZW50LW9yZGVyLXdoZW4tdHJpZ2dlcmVkLWJ5LXRhYi5odG1sCkBAIC0xMDcsMjAg
KzEwMSwxNiBAQAogZmFzdC9ldmVudHMvc2Nyb2xsLWFmdGVyLWNsaWNrLW9uLXRhYi1pbmRleC5o
dG1sCiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLmh0bWwKIGZhc3QvZXZl
bnRzL3RhYi1pcy1mb2N1c2FibGUtYXNzZXJ0Lmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24ta2V5
cHJlc3MtcHJldmVudERlZmF1bHQuaHRtbAotZmFzdC9ldmVudHMva2V5ZG93bi0xLmh0bWwKIGZh
c3QvZXZlbnRzL2ZvY3VzaW5nVW5sb2FkZWRGcmFtZS5odG1sCiBmYXN0L2V2ZW50cy9vbnNlYXJj
aC1lbnRlci5odG1sCiBmYXN0L2V2ZW50cy9pbnB1dFRleHQtbmV2ZXItZmlyZWQtb24ta2V5ZG93
bi1jYW5jZWwuaHRtbAogZmFzdC9ldmVudHMva2V5ZG93bi1udW1wYWQta2V5cy5odG1sCi1mYXN0
L2V2ZW50cy9zZWxlY3Qtb25jaGFuZ2UtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0c3Rh
cnQtYnktYXJyb3cta2V5cy1wcmV2ZW50LWRlZmF1bHQuaHRtbAogZmFzdC9ldmVudHMvb25jaGFu
Z2UtdGV4dGZpZWxkLmh0bWwKIGZhc3QvZXZlbnRzL21lZGlhLWVsZW1lbnQtZm9jdXMtdGFiLmh0
bWwKIGZhc3QvZXZlbnRzL2ZvY3VzLWNoYW5nZS1jcmFzaC5odG1sCiBmYXN0L2V2ZW50cy90YWJp
bmRleC1mb2N1cy1jaGFpbi5odG1sCiBmYXN0L2V2ZW50cy9ub2RlLWV2ZW50LWFuY2hvci1sb2Nr
Lmh0bWwKLWZhc3QvZXZlbnRzL2Fycm93LW5hdmlnYXRpb24uaHRtbAogZmFzdC9ldmVudHMva2V5
ZG93bi1rZXlwcmVzcy1mb2N1cy1jaGFuZ2UuaHRtbAogZmFzdC9ldmVudHMvanMta2V5Ym9hcmQt
ZXZlbnQtY3JlYXRpb24uaHRtbAogZmFzdC9ldmVudHMvdGFiLWZvY3VzLWhpZGRlbi5odG1sCkBA
IC0xMzEsMTYgKzEyMSw5IEBACiBmYXN0L2V2ZW50cy9vbmNoYW5nZS1zZWxlY3QtcG9wdXAuaHRt
bAogZmFzdC9ldmVudHMvb25jaGFuZ2Utc2VhcmNoZmllbGQuaHRtbAogZmFzdC9ldmVudHMvb25j
aGFuZ2UtdGV4dC1mb3JtLWZpZWxkLmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tcmVtb3ZlLWZy
YW1lLmh0bWwKIGZhc3QvZXZlbnRzL2tleXByZXNzLWZvY3VzLWNoYW5nZS5odG1sCi1mYXN0L2V2
ZW50cy9rZXlkb3duLWZ1bmN0aW9uLWtleXMuaHRtbAotZmFzdC9ldmVudHMvc3BhY2Utc2Nyb2xs
LWV2ZW50Lmh0bWwKLWZhc3QvZXZlbnRzL2Fycm93LWtleXMtb24tYm9keS5odG1sCi1mYXN0L2V2
ZW50cy9yZWNvcmRlZC1rZXlkb3duLWV2ZW50Lmh0bWwKIGZhc3QvZXZlbnRzL3BvcHVwLXdoZW4t
c2VsZWN0LWNoYW5nZS5odG1sCiBmYXN0L2V2ZW50cy90YWItaW1hZ2VtYXAuaHRtbAotZmFzdC9l
dmVudHMvbWVudS1rZXlkb3duLW9uLWhpZGRlbi1lbGVtZW50Lmh0bWwKLWZhc3QvZXZlbnRzL2Fu
Y2hvci1lbXB0eS1mb2N1cy5odG1sCiBmYXN0L2V2ZW50cy9rZXktZXZlbnRzLWluLWlucHV0LWJ1
dHRvbi5odG1sCiBmYXN0L3JlcGFpbnQvZml4ZWQtbW92ZS1hZnRlci1rZXlib2FyZC1zY3JvbGwu
aHRtbAogZmFzdC9mb3Jtcy9vbmNoYW5nZS1lbnRlci1zdWJtaXQuaHRtbApAQCAtMjAwLDkgKzE4
Myw3IEBACiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ieS13b3JkLTAwMS5odG1sCiBlZGl0aW5n
L2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9za2lw
LXZpcmFtYS0wMDEuaHRtbAotZWRpdGluZy9kZWxldGluZy9mb3J3YXJkLWRlbGV0ZS1rZXkuaHRt
bAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtYnktd29yZC0wMDIuaHRtbAotZWRpdGluZy9kZWxl
dGluZy81NzI5NjgwLmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nL3R5cGluZy10YWItZGVzaWdubW9k
ZS1mb3Jtcy5odG1sCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctdGFiLWRlc2lnbm1vZGUuaHRt
bAogZWRpdGluZy91bmRvL3VuZG8tZGVsZXRlV29yZC5odG1sCkBAIC0yMTUsNyArMTk2LDYgQEAK
IGVkaXRpbmcvaW5wdXQvc2Nyb2xsLXZpZXdwb3J0LXBhZ2UtdXAtZG93bi5odG1sCiBlZGl0aW5n
L2lucHV0L29wdGlvbi1wYWdlLXVwLWRvd24uaHRtbAogZWRpdGluZy9pbnB1dC9zdHlsZS1jaGFu
Z2UtZHVyaW5nLWlucHV0Lmh0bWwKLWVkaXRpbmcvaW5wdXQvcGFnZS11cC1kb3duLXNjcm9sbHMu
aHRtbAogCiAjIFtHVEtdIEltcGxlbWVudCBkcmFnIGFuZCBkcm9wIHN1cHBvcnQgaW4gV2ViS2l0
MgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM3MDYKQEAgLTM5
MSw3ICszNzEsNiBAQAogZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLmh0bWwK
IGZhc3QvZXZlbnRzL3Jlc291cmNlcy9kcmFnLW91dHNpZGUtd2luZG93LWZyYW1lLmh0bWwKIGZh
c3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDIuaHRtbAotZmFzdC9ldmVudHMvbm9kZS1ldmVu
dC1hbmNob3ItbG9jay5odG1sCiBmYXN0L2V2ZW50cy9tb3VzZW92ZXItYnV0dG9uLmh0bWwKIGZh
c3QvZXZlbnRzL2NsaWNrLWZvY3VzLWFuY2hvci5odG1sCiBmYXN0L2VuY29kaW5nL21haWx0by1h
bHdheXMtdXRmLTguaHRtbApAQCAtNjE1LDEwICs1OTQsOCBAQAogZWRpdGluZy9zZWxlY3Rpb24v
Y2FyZXQtYXQtYmlkaS1ib3VuZGFyeS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9mYWtlLWRyYWcu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vcGFyYWdyYXBoLWdyYW51bGFyaXR5Lmh0bWwKLWVkaXRp
bmcvc2VsZWN0aW9uLzUxMzE3MTYtMy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hZnRlci1saW5l
LWJyZWFrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FuY2hvci1mb2N1czMuaHRtbAotZWRpdGlu
Zy9zZWxlY3Rpb24vNTA1NzUwNi0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FuY2hvci1mb2N1
czEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vNTIzMjE1OS5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112082</attachid>
            <date>2011-10-22 00:48:35 -0700</date>
            <delta_ts>2011-10-23 00:26:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Updated_patch.txt</filename>
            <type>text/plain</type>
            <size>16843</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk4MTkxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMTAtMjEgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEtleURvd24gZnVuY3Rpb24gZm9y
IFdlYktpdDIgRXZlbnRTZW5kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgS2V5RG93biBmdW5jdGlvbiBvbiBHdGsgcGxhdGZv
cm0uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXVFI6OmdldE1vZGlmaWVy
cyk6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorCiAyMDExLTEwLTIxICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmVuY2hlciBzY3JpcHQgZG9lc24ndCBtZWFz
dXJlIEdDIHRpbWVzIGFjY3VyYXRlbHkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gOTgxOTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiAKIFByb2dyYW1zX1dl
YktpdFRlc3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9t
YWluLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0
ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5j
cHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcCBc
CiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBc
CkBAIC0yMiwxMSArMjMsMTMgQEAKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIFwKIAlU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBcCi0JVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmlu
Zy5jCiAKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfQ1BQRkxBR1MgPSBcCiAJLWluY2x1ZGUg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1JJChz
cmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9pbmNsdWRlIFwKIAktRFdFQktJVF9FWEVDX1BBVEg9XCIke3NoZWxsIHB3ZH0vJCh0b3Bf
YnVpbGRkaXIpL1Byb2dyYW1zL1wiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk4MTkxKQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkV2
ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCkBAIC03NCw3ICs3NCw3IEBACiAgICAgLCBtX2Rp
ZFByaW50V2ViUHJvY2Vzc0NyYXNoZWRNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRFeGl0
V2hlbldlYlByb2Nlc3NDcmFzaGVzKHRydWUpCiAgICAgLCBtX2JlZm9yZVVubG9hZFJldHVyblZh
bHVlKHRydWUpCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgLCBtX2V2ZW50U2Vu
ZGVyUHJveHkobmV3IEV2ZW50U2VuZGVyUHJveHkodGhpcykpCiAjZW5kaWYKIHsKQEAgLTU0MCw3
ICs1NDAsNyBAQAogCiBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShHVEspCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJFdmVudFNlbmRlciIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlS
ZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPiht
ZXNzYWdlQm9keSk7CkBAIC01NjUsNiArNTY1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93
biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3Vz
ZVVwIikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBidXR0b24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIGJ1dHRvbktleS5nZXQoKSkpKSk7CkBAIC02MTcsNyAr
NjE4LDcgQEAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGlt
ZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJF
dmVudFNlbmRlclByb3h5LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4KKyNpbmNsdWRl
IDxHdGtWZXJzaW9uaW5nLmg+CisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9n
ZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RSIHsKKy8vIEtleSBldmVudCBsb2NhdGlvbiBjb2Rl
IGRlZmluZWQgaW4gRE9NIExldmVsIDMuCitlbnVtIEtleUxvY2F0aW9uQ29kZSB7CisgICAgRE9N
S2V5TG9jYXRpb25TdGFuZGFyZCAgICAgID0gMHgwMCwKKyAgICBET01LZXlMb2NhdGlvbkxlZnQg
ICAgICAgICAgPSAweDAxLAorICAgIERPTUtleUxvY2F0aW9uUmlnaHQgICAgICAgICA9IDB4MDIs
CisgICAgRE9NS2V5TG9jYXRpb25OdW1wYWQgICAgICAgID0gMHgwMworfTsKKworRXZlbnRTZW5k
ZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIp
CisgICAgOiBtX3Rlc3RDb250cm9sbGVyKHRlc3RDb250cm9sbGVyKQoreworfQorCitzdGF0aWMg
dm9pZCBkaXNwYXRjaEV2ZW50KEdka0V2ZW50KiBldmVudCkKK3sKKyAgICBndGtfbWFpbl9kb19l
dmVudChldmVudCk7CisgICAgZ2RrX2V2ZW50X2ZyZWUoZXZlbnQpOworfQorCisKK3N0YXRpYyBn
dWludCBnZXRNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnNSZWYpCit7CisgICAg
Z3VpbnQgbW9kaWZpZXJzID0gMDsKKworICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1v
ZGlmaWVyc0NvbnRyb2xLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVy
c0NvbnRyb2xLZXk7CisgICAgaWYgKG1vZGlmaWVyc1JlZiAmIGtXS0V2ZW50TW9kaWZpZXJzU2hp
ZnRLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5Owor
ICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc0FsdEtleSkKKyAgICAgICAg
bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5OworICAgIGlmIChtb2RpZmllcnNS
ZWYgJiBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBrV0tF
dmVudE1vZGlmaWVyc01ldGFLZXk7CisKKyAgICByZXR1cm4gbW9kaWZpZXJzOworfQorCitpbnQg
Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRp
b24sIGd1aW50KiBtb2RpZmllcnMpCit7CisgICAgaWYgKGxvY2F0aW9uID09IERPTUtleUxvY2F0
aW9uTnVtcGFkKSB7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgImxlZnRBcnJvdyIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfTGVmdDsK
KyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicmlnaHRB
cnJvciIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfUmlnaHQ7CisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInVwQXJyb3ciKSkKKyAgICAg
ICAgICAgIHJldHVybiBHREtfS0VZX0tQX1VwOworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkb3duQXJyb3ciKSkKKyAgICAgICAgICAgIHJldHVybiBH
REtfS0VZX0tQX0Rvd247CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KGtleVJlZiwgInBhZ2VVcCIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfUGFnZV9V
cDsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAicGFn
ZURvd24iKSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX1BhZ2VfRG93bjsKKyAgICAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaG9tZSIpKQorICAg
ICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfSG9tZTsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiZW5kIikpCisgICAgICAgICAgICByZXR1cm4gR0RL
X0tFWV9LUF9FbmQ7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtl
eVJlZiwgImluc2VydCIpKQorICAgICAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfSW5zZXJ0Owor
ICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkZWxldGUi
KSkKKyAgICAgICAgICAgIHJldHVybiBHREtfS0VZX0tQX0RlbGV0ZTsKKworICAgICAgICByZXR1
cm4gR0RLX0tFWV9Wb2lkU3ltYm9sOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgImxlZnRBcnJvdyIpKQorICAgICAgICByZXR1cm4gR0RLX0tF
WV9MZWZ0OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInJp
Z2h0QXJyb3IiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfUmlnaHQ7CisgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAidXBBcnJvdyIpKQorICAgICAgICByZXR1
cm4gR0RLX0tFWV9VcDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlS
ZWYsICJkb3duQXJyb3ciKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlfRG93bjsKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJwYWdlVXAiKSkKKyAgICAgICAg
cmV0dXJuIEdES19LRVlfUGFnZV9VcDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhrZXlSZWYsICJwYWdlRG93biIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9QYWdlX0Rv
d247CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaG9tZSIp
KQorICAgICAgICByZXR1cm4gR0RLX0tFWV9Ib21lOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgImVuZCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9FbmQ7
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiaW5zZXJ0Iikp
CisgICAgICAgIHJldHVybiBHREtfS0VZX0luc2VydDsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhrZXlSZWYsICJkZWxldGUiKSkKKyAgICAgICAgcmV0dXJuIEdES19LRVlf
RGVsZXRlOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgInBy
aW50U2NyZWVuIikpCisgICAgICAgIHJldHVybiBHREtfS0VZX1ByaW50OworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleVJlZiwgIm1lbnUiKSkKKyAgICAgICAgcmV0dXJu
IEdES19LRVlfTWVudTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlS
ZWYsICJGMSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTsKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMiIpKQorICAgICAgICByZXR1cm4gR0RLX0tF
WV9GMjsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMyIp
KQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMzsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhrZXlSZWYsICJGNCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GNDsKKyAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGNSIpKQorICAgICAg
ICByZXR1cm4gR0RLX0tFWV9GNTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhrZXlSZWYsICJGNiIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GNjsKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGNyIpKQorICAgICAgICByZXR1cm4g
R0RLX0tFWV9GNzsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYs
ICJGOCIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GODsKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGOSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9G
OTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMTAiKSkK
KyAgICAgICAgcmV0dXJuIEdES19LRVlfRjEwOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGtleVJlZiwgIkYxMSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTE7Cisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5UmVmLCAiRjEyIikpCisgICAg
ICAgIHJldHVybiBHREtfS0VZX0YxMjsKKworICAgIHNpemVfdCBzdHJpbmdTaXplID0gV0tTdHJp
bmdHZXRMZW5ndGgoa2V5UmVmKTsKKyAgICBjaGFyKiBidWZmZXIgPSBuZXcgY2hhcltzdHJpbmdT
aXplXTsKKyAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtleVJlZiwgYnVmZmVyLCBzdHJpbmdT
aXplKTsKKyAgICBpbnQgY2hhckNvZGUgPSBidWZmZXJbMF07CisKKyAgICBpZiAoY2hhckNvZGUg
PT0gJ1xuJyB8fCBjaGFyQ29kZSA9PSAnXHInKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9SZXR1
cm47CisgICAgaWYgKGNoYXJDb2RlID09ICdcdCcpCisgICAgICAgIHJldHVybiBHREtfS0VZX1Rh
YjsKKyAgICBpZiAoY2hhckNvZGUgPT0gJ1x4OCcpCisgICAgICAgIHJldHVybiBHREtfS0VZX0Jh
Y2tTcGFjZTsKKworICAgIGlmIChXVEY6OmlzQVNDSUlVcHBlcihjaGFyQ29kZSkpCisgICAgICAg
ICptb2RpZmllcnMgfD0gR0RLX1NISUZUX01BU0s7CisKKyAgICByZXR1cm4gZ2RrX3VuaWNvZGVf
dG9fa2V5dmFsKGNoYXJDb2RlKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3du
KFdLU3RyaW5nUmVmIGtleVJlZiwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnNSZWYsIHVuc2ln
bmVkIGxvY2F0aW9uKQoreworICAgIGd1aW50IG1vZGlmaWVycyA9IGdldE1vZGlmaWVycyhtb2Rp
ZmllcnNSZWYpOworICAgIGludCBnZGtLZXlTeW0gPSBnZXRHREtLZXlTeW1Gb3JLZXlSZWYoa2V5
UmVmLCBsb2NhdGlvbiwgJm1vZGlmaWVycyk7CisKKyAgICBHZGtFdmVudCogcHJlc3NFdmVudCA9
IGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUyk7CisgICAgcHJlc3NFdmVudC0+a2V5LmtleXZh
bCA9IGdka0tleVN5bTsKKyAgICBwcmVzc0V2ZW50LT5rZXkuc3RhdGUgPSBtb2RpZmllcnM7Cisg
ICAgcHJlc3NFdmVudC0+a2V5LndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lE
R0VUKG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSk7Cisg
ICAgZ19vYmplY3RfcmVmKHByZXNzRXZlbnQtPmtleS53aW5kb3cpOworICAgIGdka19ldmVudF9z
ZXRfZGV2aWNlKHByZXNzRXZlbnQsIGdldERlZmF1bHRHREtQb2ludGVyRGV2aWNlKHByZXNzRXZl
bnQtPmtleS53aW5kb3cpKTsKKworICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAg
IGdpbnQgbktleXM7CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChn
ZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGdka0tleVN5bSwgJmtleXMub3V0UHRyKCksICZuS2V5
cykpCisgICAgICAgIHByZXNzRXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5vdXRQ
dHIoKVswXS5rZXljb2RlOworCisgICAgR2RrRXZlbnQqIHJlbGVhc2VFdmVudCA9IGdka19ldmVu
dF9jb3B5KHByZXNzRXZlbnQpOworICAgIGRpc3BhdGNoRXZlbnQocHJlc3NFdmVudCk7CisgICAg
cmVsZWFzZUV2ZW50LT5rZXkudHlwZSA9IEdES19LRVlfUkVMRUFTRTsKKyAgICBkaXNwYXRjaEV2
ZW50KHJlbGVhc2VFdmVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gOTgxOTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxMS0xMC0yMSAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJo
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgS2V5RG93biBmdW5jdGlv
biBmb3IgV2ViS2l0MiBFdmVudFNlbmRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY5NDEwCisKKyAgICAgICAgVW5za2lwIHBhc3NlZCB0ZXN0cy4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2d0ay13azIvU2tpcHBlZDoKKwogMjAxMS0xMC0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIERGRyBpbmxpbmluZyBzb21ldGltZXMgZmFpbHMgdG8gcmVz
ZXQgY29uc3RhbnQgcmVmZXJlbmNlcwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdr
Mi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tp
cHBlZAkocmV2aXNpb24gOTgxOTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTg3LDE4ICs4NywxMiBAQAogZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi16SW5kZXgtYWZ0ZXIuaHRtbAogcGx1Z2lucy9mdWxsc2NyZWVuLXBsdWdpbnMtZG9u
dC1yZWxvYWQuaHRtbAogcGx1Z2lucy9rZXlib2FyZC1ldmVudHMuaHRtbAotZmFzdC9kb20vSFRN
TFNlbGVjdEVsZW1lbnQvY2xpY2stc2l6ZS16ZXJvLW5vLWNyYXNoLmh0bWwKIGZhc3QvZG9tL2Fj
Y2Vzcy1rZXktaWZyYW1lLmh0bWwKIGZhc3QvZG9tL2hpZGRlbi1pZnJhbWUtbm8tZm9jdXMuaHRt
bAotZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3QvZG9tL3Zl
cnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAotZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3Zl
ZC1ub2RlLmh0bWwKLWZhc3QvZXZlbnRzL2F0dGVtcHQtc2VsZWN0LWFsbC13aXRoLXdyb25nLW1v
ZGlmaWVyLmh0bWwKLWZhc3QvZXZlbnRzL2tleWV2ZW50LWlmcmFtZS1yZW1vdmVkLWNyYXNoLmh0
bWwKIGZhc3QvZXZlbnRzL2tleS1ldmVudHMtaW4taW5wdXQtdGV4dC5odG1sCiBmYXN0L2V2ZW50
cy9pbWFnZW1hcC1ub3JlbmRlci1jcmFzaC5odG1sCiBmYXN0L2V2ZW50cy9zcGVjaWFsLWtleS1l
dmVudHMtaW4taW5wdXQtdGV4dC5odG1sCi1mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1s
CiBmYXN0L2V2ZW50cy9hY2Nlc3Mta2V5LXNlbGYtZGVzdHJ1Y3QuaHRtbAogZmFzdC9ldmVudHMv
bXVsdGlsaW5lLWxpbmstYXJyb3ctbmF2aWdhdGlvbi5odG1sCiBmYXN0L2V2ZW50cy9jaGVjay1k
ZWZvY3VzLWV2ZW50LW9yZGVyLXdoZW4tdHJpZ2dlcmVkLWJ5LXRhYi5odG1sCkBAIC0xMDcsMjAg
KzEwMSwxNiBAQAogZmFzdC9ldmVudHMvc2Nyb2xsLWFmdGVyLWNsaWNrLW9uLXRhYi1pbmRleC5o
dG1sCiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLmh0bWwKIGZhc3QvZXZl
bnRzL3RhYi1pcy1mb2N1c2FibGUtYXNzZXJ0Lmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24ta2V5
cHJlc3MtcHJldmVudERlZmF1bHQuaHRtbAotZmFzdC9ldmVudHMva2V5ZG93bi0xLmh0bWwKIGZh
c3QvZXZlbnRzL2ZvY3VzaW5nVW5sb2FkZWRGcmFtZS5odG1sCiBmYXN0L2V2ZW50cy9vbnNlYXJj
aC1lbnRlci5odG1sCiBmYXN0L2V2ZW50cy9pbnB1dFRleHQtbmV2ZXItZmlyZWQtb24ta2V5ZG93
bi1jYW5jZWwuaHRtbAogZmFzdC9ldmVudHMva2V5ZG93bi1udW1wYWQta2V5cy5odG1sCi1mYXN0
L2V2ZW50cy9zZWxlY3Qtb25jaGFuZ2UtY3Jhc2guaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0c3Rh
cnQtYnktYXJyb3cta2V5cy1wcmV2ZW50LWRlZmF1bHQuaHRtbAogZmFzdC9ldmVudHMvb25jaGFu
Z2UtdGV4dGZpZWxkLmh0bWwKIGZhc3QvZXZlbnRzL21lZGlhLWVsZW1lbnQtZm9jdXMtdGFiLmh0
bWwKIGZhc3QvZXZlbnRzL2ZvY3VzLWNoYW5nZS1jcmFzaC5odG1sCiBmYXN0L2V2ZW50cy90YWJp
bmRleC1mb2N1cy1jaGFpbi5odG1sCiBmYXN0L2V2ZW50cy9ub2RlLWV2ZW50LWFuY2hvci1sb2Nr
Lmh0bWwKLWZhc3QvZXZlbnRzL2Fycm93LW5hdmlnYXRpb24uaHRtbAogZmFzdC9ldmVudHMva2V5
ZG93bi1rZXlwcmVzcy1mb2N1cy1jaGFuZ2UuaHRtbAogZmFzdC9ldmVudHMvanMta2V5Ym9hcmQt
ZXZlbnQtY3JlYXRpb24uaHRtbAogZmFzdC9ldmVudHMvdGFiLWZvY3VzLWhpZGRlbi5odG1sCkBA
IC0xMzEsMTYgKzEyMSw5IEBACiBmYXN0L2V2ZW50cy9vbmNoYW5nZS1zZWxlY3QtcG9wdXAuaHRt
bAogZmFzdC9ldmVudHMvb25jaGFuZ2Utc2VhcmNoZmllbGQuaHRtbAogZmFzdC9ldmVudHMvb25j
aGFuZ2UtdGV4dC1mb3JtLWZpZWxkLmh0bWwKLWZhc3QvZXZlbnRzL2tleWRvd24tcmVtb3ZlLWZy
YW1lLmh0bWwKIGZhc3QvZXZlbnRzL2tleXByZXNzLWZvY3VzLWNoYW5nZS5odG1sCi1mYXN0L2V2
ZW50cy9rZXlkb3duLWZ1bmN0aW9uLWtleXMuaHRtbAotZmFzdC9ldmVudHMvc3BhY2Utc2Nyb2xs
LWV2ZW50Lmh0bWwKLWZhc3QvZXZlbnRzL2Fycm93LWtleXMtb24tYm9keS5odG1sCi1mYXN0L2V2
ZW50cy9yZWNvcmRlZC1rZXlkb3duLWV2ZW50Lmh0bWwKIGZhc3QvZXZlbnRzL3BvcHVwLXdoZW4t
c2VsZWN0LWNoYW5nZS5odG1sCiBmYXN0L2V2ZW50cy90YWItaW1hZ2VtYXAuaHRtbAotZmFzdC9l
dmVudHMvbWVudS1rZXlkb3duLW9uLWhpZGRlbi1lbGVtZW50Lmh0bWwKLWZhc3QvZXZlbnRzL2Fu
Y2hvci1lbXB0eS1mb2N1cy5odG1sCiBmYXN0L2V2ZW50cy9rZXktZXZlbnRzLWluLWlucHV0LWJ1
dHRvbi5odG1sCiBmYXN0L3JlcGFpbnQvZml4ZWQtbW92ZS1hZnRlci1rZXlib2FyZC1zY3JvbGwu
aHRtbAogZmFzdC9mb3Jtcy9vbmNoYW5nZS1lbnRlci1zdWJtaXQuaHRtbApAQCAtMjAwLDkgKzE4
Myw3IEBACiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ieS13b3JkLTAwMS5odG1sCiBlZGl0aW5n
L2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9za2lw
LXZpcmFtYS0wMDEuaHRtbAotZWRpdGluZy9kZWxldGluZy9mb3J3YXJkLWRlbGV0ZS1rZXkuaHRt
bAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtYnktd29yZC0wMDIuaHRtbAotZWRpdGluZy9kZWxl
dGluZy81NzI5NjgwLmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nL3R5cGluZy10YWItZGVzaWdubW9k
ZS1mb3Jtcy5odG1sCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctdGFiLWRlc2lnbm1vZGUuaHRt
bAogZWRpdGluZy91bmRvL3VuZG8tZGVsZXRlV29yZC5odG1sCkBAIC0yMTUsNyArMTk2LDYgQEAK
IGVkaXRpbmcvaW5wdXQvc2Nyb2xsLXZpZXdwb3J0LXBhZ2UtdXAtZG93bi5odG1sCiBlZGl0aW5n
L2lucHV0L29wdGlvbi1wYWdlLXVwLWRvd24uaHRtbAogZWRpdGluZy9pbnB1dC9zdHlsZS1jaGFu
Z2UtZHVyaW5nLWlucHV0Lmh0bWwKLWVkaXRpbmcvaW5wdXQvcGFnZS11cC1kb3duLXNjcm9sbHMu
aHRtbAogCiAjIFtHVEtdIEltcGxlbWVudCBkcmFnIGFuZCBkcm9wIHN1cHBvcnQgaW4gV2ViS2l0
MgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM3MDYKQEAgLTM5
MSw3ICszNzEsNiBAQAogZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLmh0bWwK
IGZhc3QvZXZlbnRzL3Jlc291cmNlcy9kcmFnLW91dHNpZGUtd2luZG93LWZyYW1lLmh0bWwKIGZh
c3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDIuaHRtbAotZmFzdC9ldmVudHMvbm9kZS1ldmVu
dC1hbmNob3ItbG9jay5odG1sCiBmYXN0L2V2ZW50cy9tb3VzZW92ZXItYnV0dG9uLmh0bWwKIGZh
c3QvZXZlbnRzL2NsaWNrLWZvY3VzLWFuY2hvci5odG1sCiBmYXN0L2VuY29kaW5nL21haWx0by1h
bHdheXMtdXRmLTguaHRtbApAQCAtNjE1LDEwICs1OTQsOCBAQAogZWRpdGluZy9zZWxlY3Rpb24v
Y2FyZXQtYXQtYmlkaS1ib3VuZGFyeS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9mYWtlLWRyYWcu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vcGFyYWdyYXBoLWdyYW51bGFyaXR5Lmh0bWwKLWVkaXRp
bmcvc2VsZWN0aW9uLzUxMzE3MTYtMy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hZnRlci1saW5l
LWJyZWFrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FuY2hvci1mb2N1czMuaHRtbAotZWRpdGlu
Zy9zZWxlY3Rpb24vNTA1NzUwNi0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FuY2hvci1mb2N1
czEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vNTIzMjE1OS5odG1sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>