<?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>23477</bug_id>
          
          <creation_ts>2009-01-22 09:29:12 -0800</creation_ts>
          <short_desc>Support for WCSS extensions</short_desc>
          <delta_ts>2011-04-28 01:20:32 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>23452</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mahesh Kulkarni">maheshk</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>emacemac7</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mike</cc>
    
    <cc>rohini.ananth</cc>
    
    <cc>sreedhar.vaddi</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106604</commentid>
    <comment_count>0</comment_count>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2009-01-22 09:29:12 -0800</bug_when>
    <thetext>Support for WCSS extensions to webkit. 
http://www.wapforum.org/tech/documents/WAP-239-WCSS-20011026-a.pdf

Webkit has added support for xHTML and its tags, all CSS2 (WCSS) styles except WCSS extensions. Extension styles include wap-marquee, wap-input-format and wap-accesskey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106605</commentid>
    <comment_count>1</comment_count>
      <attachid>26928</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2009-01-22 09:31:59 -0800</bug_when>
    <thetext>Created attachment 26928
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106611</commentid>
    <comment_count>2</comment_count>
      <attachid>26929</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2009-01-22 10:01:45 -0800</bug_when>
    <thetext>Created attachment 26929
initial patch for WCSS marquee styles 

first patch for only WCSS marquee extensions styles. This patch handles following WCSS extension styles,

  The -wap-marquee Value for the display Property and
  -wap-marquee-style
  -wap-marquee-loop
  -wap-marquee-dir
  -wap-marquee-speed
  
Remaining style handling will follow in next patches. 

ps: do we have to restrict these styles only to xHTML pages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106792</commentid>
    <comment_count>3</comment_count>
      <attachid>26929</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-23 13:50:49 -0800</bug_when>
    <thetext>Comment on attachment 26929
initial patch for WCSS marquee styles 

I think Hyatt should review this.

&gt; +    RenderStyle* s = m_layer-&gt;renderer()-&gt;style();
&gt; +    
&gt; +    if(s-&gt;marqueeLoopCount() == 0 &amp;&amp; s-&gt;display() == WAP_MARQUEE)

WebKit coding style would use a longer name, perhaps &quot;style&quot; for the local variable.

WebKit coding style would include a space after the word &quot;if&quot; before the &quot;(&quot;.

WebKit coding style would normally use &quot;!&quot; rather than &quot;== 0&quot;.

This patch adds lots of &quot;wap&quot; CSS properties, but it adds them unconditionally. That means they can be tested with regression tests. So this needs to include some regression tests demonstrating these properties are present.

This patch adds lots of &quot;wap&quot; CSS properties that it doesn&apos;t implement. Is that really the right way to do this?

This patch adds some properties, like -wap-marquee-speed, without adding computed style support. It&apos;s unfortunate that there are so many old properties where we don&apos;t do computed style correctly. We don&apos;t want to make things even worse by adding new properties that also don&apos;t have computed style support. So that should be included with any new CSS properties.

I&apos;m going to say review-, but Hyatt needs to review for the more basic questions like, &quot;Should we have these &apos;-wap&apos; properties unconditionally in all WebKit-based browsers?&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106865</commentid>
    <comment_count>4</comment_count>
      <attachid>26997</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2009-01-24 10:00:26 -0800</bug_when>
    <thetext>Created attachment 26997
new patch: removed unwanted changes

Thanks Darin. 

Apology for couple of coding style mistakes. I have corrected it in this patch. 

1) I have added all wap styles but handled only WAP-MARQUEE because we are working on supporting WCSS extensions styles.  
2) Will submit ACCESS-KEY and INPUT-FORMAT patch few more days as they are under work. 
3) Computed styles for wap styles not required. I have removed my changes in this patch. 

Webkit supports xHTML and WCSS except WCSS extensions. I will also ask David to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107535</commentid>
    <comment_count>5</comment_count>
      <attachid>26997</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-01-29 10:11:50 -0800</bug_when>
    <thetext>Comment on attachment 26997
new patch: removed unwanted changes

Looks pretty good.  Here are some comments:

Your handling of the display property is not correct.  You can&apos;t mutate overflowX at that time or you won&apos;t pick up all cases.  Consider the example of &quot;display:inherit&quot;, where someone inherits a display type of -wap-marquee.  Your code won&apos;t set overflowX in that case.  A better place for that code would be in adjustRenderStyle in CSSStyleSelector.  That code runs after the style has been fully determined, so at that time you can ask if the display type is -wap-marquee and then set overflowX to OMARQUEE.

I know you probably plan to implement them, but for this patch please remove the CSS properties from CSSPropertyNames.in that aren&apos;t being handled yet.

You need to patch CSSComputedStyleDeclaration to handle all of these new properties, so check that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107546</commentid>
    <comment_count>6</comment_count>
      <attachid>27153</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2009-01-29 11:10:38 -0800</bug_when>
    <thetext>Created attachment 27153
final_patch

Thanks for the comments. 

1) changes to handle &quot;display: inherit&quot; cases. 
2) removed the unhandled css properties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108232</commentid>
    <comment_count>7</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-02-03 20:15:13 -0800</bug_when>
    <thetext>This should not go in before XHTML-MP as it doesn&apos;t make much sense without it.  All of that is held up in review, and furthermore we announced quite some time ago on webkit-dev that we had patches for these things, which are all queued up so that they go in proper order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108275</commentid>
    <comment_count>8</comment_count>
      <attachid>27153</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-04 09:26:38 -0800</bug_when>
    <thetext>Comment on attachment 27153
final_patch

Should this code be behind an #ifdef?  I thought George was saying that there was an #ifdef for WCSS stuff...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108457</commentid>
    <comment_count>9</comment_count>
      <attachid>27153</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-05 10:36:05 -0800</bug_when>
    <thetext>Comment on attachment 27153
final_patch

This patch looks fine.  The only remaining thing is that WCSS code should be wrapped in an ifdef.

Please make a new ifdef for WCSS, ENABLE(WCSS), similar to ENABLE(WML), and wrap all of this code in it.  Like WML it should be turned off by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108625</commentid>
    <comment_count>10</comment_count>
      <attachid>27390</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2009-02-06 05:54:58 -0800</bug_when>
    <thetext>Created attachment 27390
added all marquee changes under WCSS flag

set WCSS flag by default &quot;off&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108627</commentid>
    <comment_count>11</comment_count>
      <attachid>27392</attachid>
    <who name="Rohini Ananth">rohini.ananth</who>
    <bug_when>2009-02-06 06:00:35 -0800</bug_when>
    <thetext>Created attachment 27392
Patch :: -wap-accesskey support

-Changes made to CSSParser and CSSStyleSelector files to map -wap-accesskey to follow the path of &quot;accesskey&quot; HTML attribute. 
-Fallbacks and Multiple key Assignments not supported as of now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108628</commentid>
    <comment_count>12</comment_count>
      <attachid>27393</attachid>
    <who name="Rohini Ananth">rohini.ananth</who>
    <bug_when>2009-02-06 06:03:08 -0800</bug_when>
    <thetext>Created attachment 27393
Test content for -wap-accesskey</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108629</commentid>
    <comment_count>13</comment_count>
      <attachid>27394</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2009-02-06 06:04:47 -0800</bug_when>
    <thetext>Created attachment 27394
marquee changes put under WCSS flag.

typo in prev one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108634</commentid>
    <comment_count>14</comment_count>
      <attachid>27397</attachid>
    <who name="Sreedhar Vaddi">sreedhar.vaddi</who>
    <bug_when>2009-02-06 07:44:11 -0800</bug_when>
    <thetext>Created attachment 27397
wap input format support

Support WCSS style -wap-input-format and -wap-input-required for input tag.
Added the CSS style and RenderStyle for both.
Handled validation of input at client editor according to given -wap-input-format attribute value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108635</commentid>
    <comment_count>15</comment_count>
      <attachid>27398</attachid>
    <who name="Sreedhar Vaddi">sreedhar.vaddi</who>
    <bug_when>2009-02-06 08:10:03 -0800</bug_when>
    <thetext>Created attachment 27398
test case for wap-inputp-format</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108638</commentid>
    <comment_count>16</comment_count>
      <attachid>27398</attachid>
    <who name="Sreedhar Vaddi">sreedhar.vaddi</who>
    <bug_when>2009-02-06 08:22:58 -0800</bug_when>
    <thetext>Comment on attachment 27398
test case for wap-inputp-format

&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//WAPFORUM//DTD XHTML Mobile 1.0//EN&quot;
&quot;http://www.wapforum.org/DTD/xhtml-mobile10.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;title&gt;inputformat.xhtml&lt;/title&gt;

&lt;style type=&quot;text/css&quot;&gt;

/*
Define classes of wildcard formats.
However, class names must start with chars, not digits.
*/

.star_upA {-wap-input-format: &quot;*A&quot;;} /* upp ltr, sym, punc, NO num */
.star_lowa {-wap-input-format: &quot;*a&quot;;} /* low ltr, sym, punc, NO num */
.star_upN {-wap-input-format: &quot;*N&quot;;} /* num */
.star_lown {-wap-input-format: &quot;*n&quot;;} /* num, sym, punc */
.star_upX {-wap-input-format: &quot;*X&quot;;} /* up ltr, num, sym, punc */
.star_lowx {-wap-input-format: &quot;*x&quot;;} /* low ltr, num, sym, punc */
.star_upM {-wap-input-format: &quot;*M&quot;;} /* any, up default */
.star_lowm {-wap-input-format: &quot;*m&quot;;} /* any, low default */

/* Constrained, extra backslash to escape literal backslash */
.one {-wap-input-format: &quot;3N&quot;;}
.two {-wap-input-format: &quot;3a&quot;;}
.three {-wap-input-format: &quot;NNN\\-NNNN&quot;;}
.four {-wap-input-format: &quot;NN\\/2N&quot;;}
.five {-wap-input-format: &quot;A\\-NN\\-*N&quot;;}
.six {-wap-input-format: &quot;Aaa\\ Aaa&quot;;}
.seven {-wap-input-format: &quot;NNAANN2a&quot;;}

&lt;/style&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;form method=&quot;get&quot; action=&quot;formsubget.asp&quot;&gt;

  &lt;p&gt;
  Basic formats:&lt;br /&gt;
  &lt;br /&gt;
  *A: up ltr, sym, punc&lt;br /&gt;
  &lt;input class=&quot;star_upA&quot; type=&quot;text&quot; name=&quot;star_upa&quot;/&gt;&lt;br /&gt;
  &lt;br /&gt;
  *a: low ltr, sym, punc&lt;br /&gt;

  &lt;input class=&quot;star_lowa&quot; type=&quot;text&quot; name=&quot;star_lowa&quot;/&gt;&lt;br /&gt;
  &lt;br /&gt;
  *N: num&lt;br /&gt;
  &lt;input class=&quot;star_upN&quot; type=&quot;text&quot; name=&quot;star_upn&quot;/&gt;&lt;br /&gt;
  &lt;br /&gt;
  *n: num, sym, punc&lt;br /&gt;
  &lt;input class=&quot;star_lown&quot; type=&quot;text&quot; name=&quot;star_lown&quot;/&gt;&lt;br /&gt;
  &lt;br /&gt;

  *X: up ltr, num, sym, punc&lt;br /&gt;
  &lt;input class=&quot;star_upX&quot; type=&quot;text&quot; name=&quot;star_upx&quot;/&gt;&lt;br /&gt;
  &lt;br /&gt;
  *x: low ltr, num, sym, punc&lt;br /&gt;
  &lt;input class=&quot;star_lowx&quot; type=&quot;text&quot; name=&quot;star_lowx&quot;/&gt;&lt;br /&gt;
  &lt;br /&gt;
  *M: anything, up ltr default&lt;br /&gt;

  &lt;input class=&quot;star_upM&quot; type=&quot;text&quot; name=&quot;star_upm&quot;/&gt;&lt;br /&gt;
  &lt;br /&gt;
  *m: anything, low ltr default&lt;br /&gt;
  &lt;input class=&quot;star_lowm&quot; type=&quot;text&quot; name=&quot;star_lowm&quot;/&gt;&lt;br /&gt;
  &lt;br /&gt;
  Constrained formats:&lt;br /&gt;
  &lt;br /&gt;
  3N: 3 num&lt;br /&gt;

  &lt;textarea class=&quot;one&quot; rows=&quot;1&quot; cols=&quot;10&quot; name=&quot;text1&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
  &lt;br /&gt;
  3a: 3 low ltr&lt;br /&gt;
  &lt;textarea class=&quot;two&quot; rows=&quot;1&quot; cols=&quot;10&quot; name=&quot;text2&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
  &lt;br /&gt;
  NNN-NNNN: 123-4567&lt;br /&gt;
  &lt;textarea class=&quot;three&quot; rows=&quot;1&quot; cols=&quot;10&quot; name=&quot;text3&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
  &lt;br /&gt;

  NN/2N: 12/25&lt;br /&gt;
  &lt;textarea class=&quot;four&quot; rows=&quot;1&quot; cols=&quot;10&quot; name=&quot;text4&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
  &lt;br /&gt;
  A-NN-*N: R-12-89...&lt;br /&gt;
  &lt;textarea class=&quot;five&quot; rows=&quot;1&quot; cols=&quot;10&quot; name=&quot;text5&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
  &lt;br /&gt;
  Aaa Aaa: Mad Pad&lt;br /&gt;

  &lt;textarea class=&quot;six&quot; rows=&quot;1&quot; cols=&quot;10&quot; name=&quot;text6&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
  &lt;br /&gt;
  NNAANN2a: 23AD23ad&lt;br /&gt;
  &lt;textarea class=&quot;seven&quot; rows=&quot;1&quot; cols=&quot;10&quot; name=&quot;text7&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
  &lt;br /&gt;
  Competing formats:&lt;br /&gt;
  &lt;br /&gt;
  3N: 3 num&lt;br /&gt;

  &lt;input class=&quot;one&quot; format=&quot;3A&quot; name=&quot;compete&quot;/&gt;&lt;br /&gt;
  &lt;br /&gt;
  &lt;input type=&quot;submit&quot; /&gt;
  &lt;/p&gt;

&lt;/form&gt;
&lt;p&gt;
Enter Name : (in alphabits)
&lt;input type=&quot;text&quot; style=&quot;-wap-input-format: &apos;*a&apos;&quot; /&gt;
&lt;br /&gt;
Enter DateOfBirth : 
&lt;input type=&quot;text&quot; style=&quot;-wap-input-format: &apos;NN\\-NN\\-NNNN&apos;&quot; /&gt; (enter in DD-MM-YYYY format)

&lt;br /&gt;
Enter Phoneno : 
&lt;input type=&quot;text&quot; style=&quot;-wap-input-format: &apos;9N&apos;&quot; /&gt; (enter only 9 Digites only)
&lt;br /&gt;
&lt;br /&gt;
Comment please: 
&lt;textarea style=&quot;-wap-input-format: &apos;*x&apos;&quot; rows=&quot;3&quot; cols=&quot;20&quot;&gt;&lt;/textarea&gt;
&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109250</commentid>
    <comment_count>17</comment_count>
      <attachid>27397</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-02-10 22:15:20 -0800</bug_when>
    <thetext>Comment on attachment 27397
wap input format support

The majority of this code seems misplaced.  There doesn&apos;t seem to be anything Qt-specific about it, yet it&apos;s in Qt-specific files. In the WebKit directory no less.  Code that deals with parsing of the values of CSS properties should live in WebKit rather than WebCore, and should not be reimplemented for each platform.

&gt; +#if ENABLE(WCSS)
&gt; +    bool createFormatMask();
&gt; +    bool cancleEditing();
&gt; +    bool validateFormatText();
&gt; +    void updateEditingMode();
&gt; +#endif

There&apos;s a typo in here.


&gt; +// END OF FILE

This isn&apos;t a particularly useful comment.


&gt; +typedef unsigned short int UChar;
&gt; +

This header shouldn&apos;t be redeclaring UChar.

&gt; +typedef enum {
&gt; +    ELeLoSymPuc,
&gt; +    ELeUpSymPuc,   
&gt; +    ENumSymPuc,    
&gt; +    ENumChar,      
&gt; +    ELeLoNumSymPuc,
&gt; +    ELeUpNumSymPuc,
&gt; +    EAnyLow,
&gt; +    EAnyUpper,
&gt; +    EStatic,
&gt; +    ENoFormat 
&gt; +}InputFormatMaskType;

We don&apos;t typically prefix our enum values with E.
  
&gt; Index: WebCore/page/FocusController.cpp
&gt; ===================================================================
&gt; --- WebCore/page/FocusController.cpp	(revision 9761)
&gt; +++ WebCore/page/FocusController.cpp	(working copy)
&gt; @@ -31,6 +31,9 @@
&gt;  #include &quot;Document.h&quot;
&gt;  #include &quot;Editor.h&quot;
&gt;  #include &quot;EditorClient.h&quot;
&gt; +#if ENABLE(WCSS)
&gt; +#include &quot;EditorClientQt.h&quot;
&gt; +#endif
&gt;  #include &quot;Element.h&quot;
&gt;  #include &quot;Event.h&quot;
&gt;  #include &quot;EventHandler.h&quot;
&gt; @@ -257,7 +260,11 @@
&gt;          
&gt;      if (oldFocusedNode &amp;&amp; oldFocusedNode-&gt;rootEditableElement() == oldFocusedNode &amp;&amp; !relinquishesEditingFocus(oldFocusedNode))
&gt;          return false;
&gt; -        
&gt; +#if ENABLE(WCSS)        
&gt; +    if(!(static_cast&lt;EditorClientQt*&gt;(m_page-&gt;editorClient())-&gt;validateFormatText()))
&gt; +        return false;
&gt; +#endif

This is totally incorrect.  It&apos;s obviously broken on non-Qt platforms, but on a deeper level it&apos;s not correct for WebCore to access types declared in WebKit.  It&apos;s a layering violation.

&gt; @@ -40,6 +44,9 @@
&gt;  class CSSStyleSelector;
&gt;  class StyleFlexibleBoxData;
&gt;  class StyleMarqueeData;
&gt; +#if ENABLE(WCSS)
&gt; +class StyleWapInput;
&gt; +#endif

Please don&apos;t put an #if&apos;d block in the middle of a sorted list like this.  Add it at the end.

&gt;  class StyleMultiColData;
&gt;  class StyleReflection;
&gt;  class StyleTransformData;

&gt; Index: WebCore/rendering/style/StyleWapInput.h
&gt; ===================================================================
&gt; --- WebCore/rendering/style/StyleWapInput.h	(revision 0)
&gt; +++ WebCore/rendering/style/StyleWapInput.h	(revision 0)
&gt; @@ -0,0 +1,32 @@
&gt; +#ifndef  StyleWapInput_h 
&gt; +#define  StyleWapInput_h 
&gt; +
&gt; +#include &quot;AtomicString.h&quot;
&gt; +#include &lt;wtf/RefCounted.h&gt;
&gt; +#include &lt;wtf/PassRefPtr.h&gt;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +class StyleWapInput : public RefCounted&lt;StyleWapInput&gt; {
&gt; +public:
&gt; +    static PassRefPtr&lt;StyleWapInput&gt; create() { return adoptRef(new StyleWapInput); }
&gt; +    PassRefPtr&lt;StyleWapInput&gt; copy() const { return adoptRef(new StyleWapInput(*this)); }

Is this copy method ever used?  It seems inconsistent with the code below.

&gt; +private:
&gt; +    StyleWapInput();
&gt; +    StyleWapInput(const StyleWapInput&amp;);
&gt; +};

If this is intended to prevent copying then it is not needed.  RefCounted already inherits from WTF::Noncopyable.

&gt; Index: WebCore/rendering/style/StyleWapInput.cpp
&gt; ===================================================================
&gt; --- WebCore/rendering/style/StyleWapInput.cpp	(revision 0)
&gt; +++ WebCore/rendering/style/StyleWapInput.cpp	(revision 0)
&gt; @@ -0,0 +1,19 @@
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;StyleWapInput.h&quot; 
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +StyleWapInput::StyleWapInput() : 
&gt; +               required(false)
&gt; +{
&gt; +
&gt; +}
&gt; +
&gt; +StyleWapInput::StyleWapInput(const StyleWapInput&amp; o) :
&gt; +               RefCounted&lt;StyleWapInput&gt;(),
&gt; +               format(o.format),
&gt; +               required(o.required)

Please see our other files (eg, StyleRareNonInheritedData.cpp above) for how we format our initialisation lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114297</commentid>
    <comment_count>18</comment_count>
      <attachid>28750</attachid>
    <who name="Sreedhar Vaddi">sreedhar.vaddi</who>
    <bug_when>2009-03-19 03:01:48 -0700</bug_when>
    <thetext>Created attachment 28750
WCSS InputFormat Patch

Thanks for the comments. 

I have updated the patch for WAP_INPUT_FORMAT as per the review comments. 
Few other changes made are,
 - handling of automatically inserting escape characters   
 - invalid input/format call back is platform specific only if they implement. Otherwise behavior is like normal
   
Please review this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122051</commentid>
    <comment_count>19</comment_count>
      <attachid>27394</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-05-19 21:38:27 -0700</bug_when>
    <thetext>Comment on attachment 27394
marquee changes put under WCSS flag.

marquee is checked in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122897</commentid>
    <comment_count>20</comment_count>
      <attachid>27392</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-23 17:28:50 -0700</bug_when>
    <thetext>Comment on attachment 27392
Patch :: -wap-accesskey support

For the WAP marquee properties, I suggested using a separate .in file for the property names like SVG does. I think that would be good here. At the very least the names should be conditional with ifdefs.

The change in accessKeyModifiers is not explained and seems unrelated. If it is related, please explain it in the ChangeLog.

r- to address these two issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123172</commentid>
    <comment_count>21</comment_count>
      <attachid>28750</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-05-26 13:08:34 -0700</bug_when>
    <thetext>Comment on attachment 28750
WCSS InputFormat Patch

Minusing from Maciej&apos;s comments since I think he just forgot to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123175</commentid>
    <comment_count>22</comment_count>
      <attachid>28750</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-05-26 13:15:29 -0700</bug_when>
    <thetext>Comment on attachment 28750
WCSS InputFormat Patch

Seems like you are missing checking for m_wapInput in the == operator of StyleRareNonInheritedData.

I see code that is asking if isTextField() || isPasswordField().  Isn&apos;t it impossible to be a password field and not be a text field?  Seems like you just need to check isTextField?

I don&apos;t much like the name WebTextFormatMask. What&apos;s the reasoning behind prefacing the name with &quot;Web&quot;?  Seems like you could just drop that.

You should use an OwnPtr for m_textFormatMask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123296</commentid>
    <comment_count>23</comment_count>
      <attachid>30710</attachid>
    <who name="Rohini Ananth">rohini.ananth</who>
    <bug_when>2009-05-27 09:44:14 -0700</bug_when>
    <thetext>Created attachment 30710
Wap Access Key Patch with review comments incorporated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123297</commentid>
    <comment_count>24</comment_count>
      <attachid>30710</attachid>
    <who name="Rohini Ananth">rohini.ananth</who>
    <bug_when>2009-05-27 09:46:48 -0700</bug_when>
    <thetext>Comment on attachment 30710
Wap Access Key Patch with review comments incorporated

Resubmitting patch with explanation in changelog about the changes related to wap-accesskey WCSS property</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124131</commentid>
    <comment_count>25</comment_count>
      <attachid>30901</attachid>
    <who name="Sreedhar Vaddi">sreedhar.vaddi</who>
    <bug_when>2009-06-03 05:05:55 -0700</bug_when>
    <thetext>Created attachment 30901
Updated Patch for WCSS Inputformat 

WapInputFormat patch with review comments incorporated. I did not create a separate in file for the WCSS styles as they are few and could be just part of CSS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137920</commentid>
    <comment_count>26</comment_count>
      <attachid>30901</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 09:21:08 -0700</bug_when>
    <thetext>Comment on attachment 30901
Updated Patch for WCSS Inputformat 

Lots of style errors.  Please run check-webkit-style.

+    MaskBase* m = NULL;

No need for ()
+    return (validate(text, eb));

Style:
+bool TextFormatMask::createStaticMask(const WebCore::String &amp;p, int &amp;pos)


eb is not a good variable name:
+bool TextFormatMask::validate(const String&amp; text, ErrorBlock&amp; eb)

No == 0:
+    if (text.length() == 0) 

Style:
+        ErrorBlock() : m_start(-1), m_extent(-1) {}
+    struct ErrorBlock
+    {

Style:
+    InputFormatMaskType nextInputMaskType(WebCore::Frame *frame, int aOffset);

overused WebCore:: namespace.

Please run check-webkit-style and have someone like George clear this for style before re-posting.  Silly to waste reviewers time fixing style issues.

I&apos;m not sure we want this patch from a technical perspective (being discussed on webkit-dev), but we certainly can&apos;t accept it as-is style-wise.

You&apos;ll also have more luck getting reviews by posting smaller patches.  svn-create-patch will correctly put your layout tests and ChangeLogs first in the patch file which can make for easier reviews, but is not required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394302</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-28 01:20:32 -0700</bug_when>
    <thetext>WCSS isn&apos;t even the top search result for itself.  I don&apos;t think we want extensions for it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>26928</attachid>
            <date>2009-01-22 09:31:59 -0800</date>
            <delta_ts>2009-01-22 09:32:51 -0800</delta_ts>
            <desc>test case</desc>
            <filename>wapmarquee.xhtml</filename>
            <type>application/xhtml+xml</type>
            <size>235</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8cCBzdHlsZT0iZGlzcGxheTogLXdhcC1tYXJxdWVlOyAtd2FwLW1hcnF1
ZWUtZGlyOiBscnQ7IC13YXAtbWFycXVlZS1sb29wOiA1OyAtd2FwLW1hcnF1ZWUtc3R5bGU6IGFs
dGVybmF0ZTsgLXdhcC1tYXJxdWVlLXNwZWVkOiBmYXN0Ij4KVGVzdGluZyBtYXJxdWVlIGlmIHNj
cm9sbHMhISA8YnIvPiBUZXN0aW5nIG1hcnF1ZWUgaWYgc2Nyb2xscyEhCjwvcD4KPC9ib2R5Pgo8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26929</attachid>
            <date>2009-01-22 10:01:45 -0800</date>
            <delta_ts>2009-01-24 09:52:06 -0800</delta_ts>
            <desc>initial patch for WCSS marquee styles </desc>
            <filename>WCSS_marquee.patch</filename>
            <type>text/plain</type>
            <size>10685</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk3MTcp
CisrKyBDaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0wMS0y
MiAgTWFoZXNoIEt1bGthcm5pICA8bWFoZXNoLmt1bGthcm5pQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSAuCisKKyAgICAgICAgaHR0cDovL3d3dy53YXBmb3J1bS5vcmcvdGVjaC9k
b2N1bWVudHMvV0FQLTIzOS1XQ1NTLTIwMDExMDI2LWEucGRmCisKKyAgICAgICAgU3VwcG9ydCBm
b3IgV0NTUyBleHRlbnNpb25zIHRvIHdlYmtpdC4gLXdhcC1tYXJxdWVlIHN1cHBvcnQgYW5kIHJl
bGF0ZWQgaXRlbXMgCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJx
dWVlOjp1cGRhdGVNYXJxdWVlUG9zaXRpb24pCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmg6IGFkZGVkIGRpc3BsYXkgdmFsdWUgLXdhcC1tYXJxdWVlCisg
ICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46IGFkZGVkIHdhcC1tYXJxdWVlCisgICAg
ICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpCisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW46IFdDU1MgZXh0ZW5zaW9ucyBrZXlzCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaDogCisKIDIwMDktMDEtMTkgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5o
aWRheWF0QHRyb2xsdGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCkluZGV4OiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gOTcxNykKKysrIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDkgQEAKICAgICAgICAg
Y2FzZSBUQUJMRV9DQVBUSU9OOgogICAgICAgICAgICAgbyA9IG5ldyAoYXJlbmEpIFJlbmRlckJs
b2NrKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FQX01BUlFVRUU6
CisgICAgICAgICAgICBvID0gbmV3IChhcmVuYSkgUmVuZGVyQmxvY2sobm9kZSk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBCT1g6CiAgICAgICAgIGNhc2UgSU5MSU5FX0JPWDoK
ICAgICAgICAgICAgIG8gPSBuZXcgKGFyZW5hKSBSZW5kZXJGbGV4aWJsZUJveChub2RlKTsKSW5k
ZXg6IHJlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcv
UmVuZGVyTWFycXVlZS5jcHAJKHJldmlzaW9uIDk3MTcpCisrKyByZW5kZXJpbmcvUmVuZGVyTWFy
cXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2ICsxOTIsMTEgQEAKIHZvaWQgUmVuZGVy
TWFycXVlZTo6dXBkYXRlTWFycXVlZVBvc2l0aW9uKCkKIHsKICAgICBib29sIGFjdGl2YXRlID0g
KG1fdG90YWxMb29wcyA8PSAwIHx8IG1fY3VycmVudExvb3AgPCBtX3RvdGFsTG9vcHMpOworICAg
IFJlbmRlclN0eWxlKiBzID0gbV9sYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKKyAgICAKKyAg
ICBpZihzLT5tYXJxdWVlTG9vcENvdW50KCkgPT0gMCAmJiBzLT5kaXNwbGF5KCkgPT0gV0FQX01B
UlFVRUUpCisgICAgICAgIGFjdGl2YXRlID0gZmFsc2U7CisgICAgICAgIAogICAgIGlmIChhY3Rp
dmF0ZSkgewogICAgICAgICBFTWFycXVlZUJlaGF2aW9yIGJlaGF2aW9yID0gbV9sYXllci0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+bWFycXVlZUJlaGF2aW9yKCk7CiAgICAgICAgIG1fc3RhcnQgPSBj
b21wdXRlUG9zaXRpb24oZGlyZWN0aW9uKCksIGJlaGF2aW9yID09IE1BTFRFUk5BVEUpOwpJbmRl
eDogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDk3MTcpCisr
KyByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjU1LDcgKzI1NSw3IEBACiAgICAgVEFCTEUsIElOTElORV9UQUJMRSwgVEFCTEVfUk9XX0dS
T1VQLAogICAgIFRBQkxFX0hFQURFUl9HUk9VUCwgVEFCTEVfRk9PVEVSX0dST1VQLCBUQUJMRV9S
T1csCiAgICAgVEFCTEVfQ09MVU1OX0dST1VQLCBUQUJMRV9DT0xVTU4sIFRBQkxFX0NFTEwsCi0g
ICAgVEFCTEVfQ0FQVElPTiwgQk9YLCBJTkxJTkVfQk9YLCBOT05FCisgICAgVEFCTEVfQ0FQVElP
TiwgV0FQX01BUlFVRUUsIEJPWCwgSU5MSU5FX0JPWCwgTk9ORQogfTsKIAogZW51bSBFUG9pbnRl
ckV2ZW50cyB7CkluZGV4OiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gOTcxNykKKysrIGNzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiArMjU4LDcgQEAKIHRhYmxlLWNvbHVt
bgogdGFibGUtY2VsbAogdGFibGUtY2FwdGlvbgorLXdhcC1tYXJxdWVlCiAtd2Via2l0LWJveAog
LXdlYmtpdC1pbmxpbmUtYm94CiAjbm9uZQpAQCAtNjAxLDQgKzYwMiw0IEBACiBmaWxsCiBzdHJv
a2UKICNhbGwKLSNub25lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI25vbmUKSW5kZXg6
IGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHJldmlzaW9uIDk3MTcpCisrKyBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4OTQsOCArMjg5NCwxMSBAQAogICAgIGNhc2UgQ1NTUHJvcGVydHlE
aXNwbGF5OgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZGlzcGxh
eSwgRGlzcGxheSkKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUpIHsKICAgICAgICAgICAgIG1fc3R5bGUtPnNldERpc3BsYXkoKnByaW1pdGl2
ZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChtX3N0eWxlLT5kaXNwbGF5KCkgPT0gV0FQX01BUlFV
RUUpIAorICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WChPTUFSUVVFRSk7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDcxNSw2ICs0NzE4LDcgQEAK
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudChtX3BhcmVudFN0eWxlLT5tYXJx
dWVlTG9vcENvdW50KCkpOwogICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlQmVoYXZpb3IobV9w
YXJlbnRTdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkpOwogICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlUmVwZXRpdGlvbjogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCht
YXJxdWVlTG9vcENvdW50LCBNYXJxdWVlTG9vcENvdW50KQogICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKQpAQCAtNDcyNSw2ICs0NzI5LDcgQEAKICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1h
cnF1ZWVMb29wQ291bnQocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQ6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZDogewogICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChtYXJxdWVlU3BlZWQsIE1hcnF1ZWVTcGVlZCkgICAgICAKICAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKQEAgLTQ3NzUsMTIgKzQ3ODAsMjMgQEAKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVl
U3R5bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZTogewogICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlQmVoYXZpb3IsIE1hcnF1ZWVCZWhh
dmlvcikgICAgICAKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQogICAgICAgICAgICAgbV9z
dHlsZS0+c2V0TWFycXVlZUJlaGF2aW9yKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXI6IHsKKyAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZURpcmVjdGlvbiwgTWFycXVlZURpcmVj
dGlvbikKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUx0cikKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE1h
cnF1ZWVEaXJlY3Rpb24oTVJJR0hUKTsKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVSdGwpCisgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJx
dWVlRGlyZWN0aW9uKE1MRUZUKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjogewogICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChtYXJxdWVlRGlyZWN0aW9uLCBNYXJxdWVlRGlyZWN0aW9uKQogICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUpCkluZGV4OiBjc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBjc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gOTcxNykKKysrIGNzcy9DU1NQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQwLDYgKzEyNDAsMTAgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCB9OwogICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhh
bmQocHJvcElkLCBwcm9wZXJ0aWVzLCA1LCBpbXBvcnRhbnQpOwogICAgIH0KKyAgICBjYXNlIENT
U1Byb3BlcnR5V2FwTWFycXVlZURpcjoKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTHRyIHx8
IGlkID09IENTU1ZhbHVlUnRsKQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rp
b246CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZvcndhcmRzIHx8IGlkID09IENTU1ZhbHVl
QmFja3dhcmRzIHx8IGlkID09IENTU1ZhbHVlQWhlYWQgfHwKICAgICAgICAgICAgIGlkID09IENT
U1ZhbHVlUmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdo
dCB8fCBpZCA9PSBDU1NWYWx1ZURvd24gfHwKQEAgLTEyNTIsMTYgKzEyNTYsMjIgQEAKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBG
TGVuZ3RofEZQZXJjZW50LCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXYXBNYXJxdWVlU3R5bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVTdHlsZToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1
ZVNsaWRlIHx8IGlkID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQWx0ZXJuYXRl
KQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wOgogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlUmVwZXRpdGlvbjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5maW5p
dGUpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyfEZO
b25OZWcsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdh
cE1hcnF1ZWVTcGVlZDoKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09
IENTU1ZhbHVlU2xvdyB8fCBpZCA9PSBDU1NWYWx1ZUZhc3QpCisgICAgICAgICAgICB2YWxpZF9w
cmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVNwZWVkOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQg
PT0gQ1NTVmFsdWVTbG93IHx8IGlkID09IENTU1ZhbHVlRmFzdCkKICAgICAgICAgICAgIHZhbGlk
X3ByaW1pdGl2ZSA9IHRydWU7CkBAIC0xNTk1LDYgKzE2MDUsMTAgQEAKICAgICBjYXNlIENTU1By
b3BlcnR5VGV4dExpbmVUaHJvdWdoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmU6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdhcEFjY2Vzc2tleToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQ6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQ6CisKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2lmIEVOQUJMRShTVkcpCiAgICAgZGVmYXVsdDoKSW5kZXg6IGNzcy9DU1NQcm9wZXJ0eU5h
bWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA5
NzE3KQorKysgY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2
ICsxNDMsMTMgQEAKIHdvcmQtd3JhcAogei1pbmRleAogem9vbQorLXdhcC1tYXJxdWVlLXN0eWxl
Cistd2FwLW1hcnF1ZWUtbG9vcAorLXdhcC1tYXJxdWVlLWRpcgorLXdhcC1tYXJxdWVlLXNwZWVk
Cistd2FwLWFjY2Vzc2tleQorLXdhcC1pbnB1dC1mb3JtYXQKKy13YXAtaW5wdXQtcmVxdWlyZWQK
IC13ZWJraXQtYW5pbWF0aW9uCiAtd2Via2l0LWFuaW1hdGlvbi1kZWxheQogLXdlYmtpdC1hbmlt
YXRpb24tZGlyZWN0aW9uCkluZGV4OiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2
aXNpb24gOTcxNykKKysrIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDEzIEBACiAgICAgQ1NTUHJvcGVydHlXb3JkV3JhcCwK
ICAgICBDU1NQcm9wZXJ0eVpJbmRleCwKICAgICBDU1NQcm9wZXJ0eVpvb20sCisgICAgQ1NTUHJv
cGVydHlXYXBNYXJxdWVlU3R5bGUsCisgICAgQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcCwKKyAg
ICBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIsCisgICAgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3Bl
ZWQsCisgICAgQ1NTUHJvcGVydHlXYXBBY2Nlc3NrZXksCisgICAgQ1NTUHJvcGVydHlXYXBJbnB1
dEZvcm1hdCwKKyAgICBDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQsCiAKICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LAogICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
RGlyZWN0aW9uLApAQCAtNzg0LDE0ICs3OTEsMTcgQEAKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogU3VwcG9zZWQgdG8gcmV0dXJuIHRoZSBwZXJjZW50YWdlIGlmIHBlcmNlbnRhZ2Ugd2FzIHNw
ZWNpZmllZC4KICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShyZW5kZXJlci0+bWFyZ2luTGVmdCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5tYXJnaW5M
ZWZ0KCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZURpcjoKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246CiAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+bWFycXVlZURpcmVjdGlvbigpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQ6CiAgICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+bWFycXVlZUluY3Jl
bWVudCgpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wOgogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246CiAgICAgICAgICAgICBp
ZiAoc3R5bGUtPm1hcnF1ZWVMb29wQ291bnQoKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSW5maW5pdGUpOwog
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hcnF1
ZWVMb29wQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVN0eWxlOgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoc3R5bGUtPm1hcnF1ZWVCZWhhdmlvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tJbWFnZToKQEAgLTEyNTcsMTEgKzEyNjcsMTUgQEAKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0OgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVl
ZDoKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZDoKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQ
YWRkaW5nU3RhcnQ6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFZhcmlhYmxlRGVjbGFyYXRpb25CbG9jazoKKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdhcEFjY2Vzc2tleToKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0
Rm9ybWF0OgorICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZDoKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgYXJlIHVuaW1wbGVtZW50ZWQuCiAgICAgICAgICAg
ICBicmVhazsKICNpZiBFTkFCTEUoU1ZHKQpJbmRleDogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShy
ZXZpc2lvbiA5NzE3KQorKysgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTU1LDYgKzU1NSw5IEBACiAgICAgICAgIGNhc2UgVEFCTEVfQ0FQVElPTjoK
ICAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZVRhYmxlQ2FwdGlvbjsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBUF9NQVJRVUVFOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU1ZhbHVlV2FwTWFycXVlZTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEJPWDoKICAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZVdlYmtp
dEJveDsKICAgICAgICAgICAgIGJyZWFrOwo=
</data>
<flag name="review"
          id="12897"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26997</attachid>
            <date>2009-01-24 10:00:26 -0800</date>
            <delta_ts>2009-01-29 11:10:38 -0800</delta_ts>
            <desc>new patch: removed unwanted changes</desc>
            <filename>new_patch_for_marquee.patch</filename>
            <type>text/plain</type>
            <size>8929</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA5NzYxKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMiBAQAorMjAwOS0wMS0yNCAgTWFoZXNoIEt1bGthcm5pICA8bWFoZXNoLmt1bGth
cm5pQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSAuCisKKyAgICAgICAgaHR0cDov
L3d3dy53YXBmb3J1bS5vcmcvdGVjaC9kb2N1bWVudHMvV0FQLTIzOS1XQ1NTLTIwMDExMDI2LWEu
cGRmCisKKyAgICAgICAgU3VwcG9ydCBmb3IgV0NTUyBleHRlbnNpb25zIHRvIHdlYmtpdC4gLXdh
cC1tYXJxdWVlIHN1cHBvcnQgYW5kIHJlbGF0ZWQgaXRlbXMgCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y3Jl
YXRlT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp1cGRhdGVNYXJxdWVlUG9zaXRpb24pCisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6IGFkZGVkIGRpc3Bs
YXkgdmFsdWUgLXdhcC1tYXJxdWVlCisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46
IGFkZGVkIHdhcC1tYXJxdWVlCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOiAK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpCisgICAg
ICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46IFdDU1MgZXh0ZW5zaW9ucyBrZXlzCisgICAg
ICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDogCisKIDIwMDktMDEtMTkgIEFy
aXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAJKHJldmlzaW9uIDk3NjEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDkgQEAKICAgICAgICAgY2FzZSBUQUJMRV9D
QVBUSU9OOgogICAgICAgICAgICAgbyA9IG5ldyAoYXJlbmEpIFJlbmRlckJsb2NrKG5vZGUpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FQX01BUlFVRUU6CisgICAgICAgICAg
ICBvID0gbmV3IChhcmVuYSkgUmVuZGVyQmxvY2sobm9kZSk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBCT1g6CiAgICAgICAgIGNhc2UgSU5MSU5FX0JPWDoKICAgICAgICAgICAg
IG8gPSBuZXcgKGFyZW5hKSBSZW5kZXJGbGV4aWJsZUJveChub2RlKTsKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1hcnF1ZWUuY3BwCShyZXZpc2lvbiA5NzYxKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2ICsxOTIsMTEgQEAK
IHZvaWQgUmVuZGVyTWFycXVlZTo6dXBkYXRlTWFycXVlZVBvc2l0aW9uKCkKIHsKICAgICBib29s
IGFjdGl2YXRlID0gKG1fdG90YWxMb29wcyA8PSAwIHx8IG1fY3VycmVudExvb3AgPCBtX3RvdGFs
TG9vcHMpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG1fbGF5ZXItPnJlbmRlcmVyKCktPnN0
eWxlKCk7CisgICAgCisgICAgaWYgKCFzdHlsZS0+bWFycXVlZUxvb3BDb3VudCgpICYmIHN0eWxl
LT5kaXNwbGF5KCkgPT0gV0FQX01BUlFVRUUpCisgICAgICAgIGFjdGl2YXRlID0gZmFsc2U7IC8v
IElmIC13YXAtbWFycXVlZS1sb29wIGlzIHplcm8gZG8gbm90IHNldCBpdCB0byBsb29wCisgICAg
ICAgIAogICAgIGlmIChhY3RpdmF0ZSkgewogICAgICAgICBFTWFycXVlZUJlaGF2aW9yIGJlaGF2
aW9yID0gbV9sYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+bWFycXVlZUJlaGF2aW9yKCk7CiAg
ICAgICAgIG1fc3RhcnQgPSBjb21wdXRlUG9zaXRpb24oZGlyZWN0aW9uKCksIGJlaGF2aW9yID09
IE1BTFRFUk5BVEUpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVD
b25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA5NzYxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1NSw3
IEBACiAgICAgVEFCTEUsIElOTElORV9UQUJMRSwgVEFCTEVfUk9XX0dST1VQLAogICAgIFRBQkxF
X0hFQURFUl9HUk9VUCwgVEFCTEVfRk9PVEVSX0dST1VQLCBUQUJMRV9ST1csCiAgICAgVEFCTEVf
Q09MVU1OX0dST1VQLCBUQUJMRV9DT0xVTU4sIFRBQkxFX0NFTEwsCi0gICAgVEFCTEVfQ0FQVElP
TiwgQk9YLCBJTkxJTkVfQk9YLCBOT05FCisgICAgVEFCTEVfQ0FQVElPTiwgV0FQX01BUlFVRUUs
IEJPWCwgSU5MSU5FX0JPWCwgTk9ORQogfTsKIAogZW51bSBFUG9pbnRlckV2ZW50cyB7CkluZGV4
OiBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDk3NjEpCisrKyBXZWJDb3JlL2Nzcy9D
U1NWYWx1ZUtleXdvcmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiArMjU4LDcgQEAKIHRh
YmxlLWNvbHVtbgogdGFibGUtY2VsbAogdGFibGUtY2FwdGlvbgorLXdhcC1tYXJxdWVlCiAtd2Vi
a2l0LWJveAogLXdlYmtpdC1pbmxpbmUtYm94CiAjbm9uZQpAQCAtNjAxLDQgKzYwMiw0IEBACiBm
aWxsCiBzdHJva2UKICNhbGwKLSNub25lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI25v
bmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5NzYxKQorKysgV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OTQsOCAr
Mjg5NCwxMSBAQAogICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgogICAgIHsKICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZGlzcGxheSwgRGlzcGxheSkKLSAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlKQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldERpc3BsYXkoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChtX3N0eWxlLT5kaXNwbGF5KCkgPT0gV0FQX01BUlFVRUUpIAorICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldE92ZXJmbG93WChPTUFSUVVFRSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNDcxNSw2ICs0NzE4LDE2IEBACiAgICAgICAgIG1fc3R5bGUtPnNldE1h
cnF1ZWVMb29wQ291bnQobV9wYXJlbnRTdHlsZS0+bWFycXVlZUxvb3BDb3VudCgpKTsKICAgICAg
ICAgbV9zdHlsZS0+c2V0TWFycXVlZUJlaGF2aW9yKG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVCZWhh
dmlvcigpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVl
TG9vcDogeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlTG9vcENv
dW50LCBNYXJxdWVlTG9vcENvdW50KQorICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8IChw
cmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUlu
ZmluaXRlKSkKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoMSk7IC8v
IDEgbG9vcCBpbnN0ZWFkIHJlcGVhdCBmb3JldmVyLgorICAgICAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KQorICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudChwcmltaXRpdmVWYWx1
ZS0+Z2V0SW50VmFsdWUoKSk7CisgICAgICAgIGVsc2UgCisgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRNYXJxdWVlTG9vcENvdW50KDEpOyAvLyBkZWZhdWx0IHZhbHVlIGZvciBsb29wIGlzIDE6IFdD
U1Mgc3BlYyAKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVJlcGV0aXRpb246IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwobWFycXVlZUxvb3BDb3VudCwgTWFycXVlZUxvb3BDb3VudCkKICAgICAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZSkKQEAgLTQ3MjUsNiArNDczOCw3IEBACiAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRNYXJxdWVlTG9vcENvdW50KHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQ6IHsKICAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZVNwZWVkLCBNYXJxdWVlU3BlZWQpICAgICAgCiAg
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCkBAIC00Nzc1LDEyICs0Nzg5LDIzIEBACiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFy
cXVlZVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6IHsKICAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZUJlaGF2aW9yLCBNYXJxdWVl
QmVoYXZpb3IpICAgICAgCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKICAgICAgICAgICAg
IG1fc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyOiB7CisgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1hcnF1ZWVEaXJlY3Rpb24sIE1hcnF1ZWVE
aXJlY3Rpb24pCisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVMdHIpCisgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRNYXJxdWVlRGlyZWN0aW9uKE1SSUdIVCk7CisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlUnRsKQorICAgICAgICAgICAgbV9zdHlsZS0+c2V0
TWFycXVlZURpcmVjdGlvbihNTEVGVCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246IHsKICAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZURpcmVjdGlvbiwgTWFycXVlZURpcmVjdGlvbikKICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA5NzYx
KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0MCw2
ICsxMjQwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQgfTsK
ICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgNSwgaW1w
b3J0YW50KTsKICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXI6CisgICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZUx0ciB8fCBpZCA9PSBDU1NWYWx1ZVJ0bCkKKyAgICAgICAg
ICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVGb3J3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUJhY2t3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUFo
ZWFkIHx8CiAgICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVJldmVyc2UgfHwgaWQgPT0gQ1NTVmFs
dWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVEb3duIHx8CkBA
IC0xMjUyLDE2ICsxMjU2LDIyIEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZhbGlkX3By
aW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aHxGUGVyY2VudCwgbV9zdHJpY3QpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlOgogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CiAgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVTbGlkZSB8fCBpZCA9PSBDU1NWYWx1ZVNjcm9s
bCB8fCBpZCA9PSBDU1NWYWx1ZUFsdGVybmF0ZSkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2
ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVl
TG9vcDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246CiAgICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0
aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0g
dmFsaWRVbml0KHZhbHVlLCBGSW50ZWdlcnxGTm9uTmVnLCBtX3N0cmljdCk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQ6CisgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNsb3cgfHwgaWQgPT0gQ1NTVmFs
dWVGYXN0KQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZDoKICAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU2xvdyB8fCBpZCA9PSBDU1NW
YWx1ZUZhc3QpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwpAQCAtMTU5NSw2
ICsxNjA1LDcgQEAKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRl
cmxpbmU6CisKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShTVkcpCiAgICAgZGVm
YXVsdDoKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkocmV2aXNpb24gOTc2MSkKKysrIFdl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsx
NDMsMTMgQEAKIHdvcmQtd3JhcAogei1pbmRleAogem9vbQorLXdhcC1tYXJxdWVlLXN0eWxlCist
d2FwLW1hcnF1ZWUtbG9vcAorLXdhcC1tYXJxdWVlLWRpcgorLXdhcC1tYXJxdWVlLXNwZWVkCist
d2FwLWFjY2Vzc2tleQorLXdhcC1pbnB1dC1mb3JtYXQKKy13YXAtaW5wdXQtcmVxdWlyZWQKIC13
ZWJraXQtYW5pbWF0aW9uCiAtd2Via2l0LWFuaW1hdGlvbi1kZWxheQogLXdlYmtpdC1hbmltYXRp
b24tZGlyZWN0aW9uCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
CShyZXZpc2lvbiA5NzYxKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5n
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNiArNTU1LDkgQEAKICAgICAgICAgY2FzZSBUQUJM
RV9DQVBUSU9OOgogICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlVGFibGVDYXB0
aW9uOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FQX01BUlFVRUU6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVXYXBNYXJxdWVlOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQk9YOgogICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U1ZhbHVlV2Via2l0Qm94OwogICAgICAgICAgICAgYnJlYWs7Cg==
</data>
<flag name="review"
          id="12944"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27153</attachid>
            <date>2009-01-29 11:10:38 -0800</date>
            <delta_ts>2009-02-06 05:54:58 -0800</delta_ts>
            <desc>final_patch</desc>
            <filename>latest_patch.patch</filename>
            <type>text/plain</type>
            <size>8781</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA5NzYxKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMyBAQAorMjAwOS0wMS0zMCAgTWFoZXNoIEt1bGthcm5pICA8bWFoZXNoLmt1bGth
cm5pQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgorCisgICAg
ICAgIGh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL3RlY2gvZG9jdW1lbnRzL1dBUC0yMzktV0NTUy0y
MDAxMTAyNi1hLnBkZgorCisgICAgICAgIFN1cHBvcnQgZm9yIFdDU1MgbWFycXVlZSBleHRlbnNp
b25zIHRvIHdlYmtpdC4gZGlzcGxheTogLXdhcC1tYXJxdWVlIHN1cHBvcnQgYW5kIHJlbGF0ZWQg
aXRlbXMgCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp1
cGRhdGVNYXJxdWVlUG9zaXRpb24pCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmg6IGFkZGVkIGRpc3BsYXkgdmFsdWUgLXdhcC1tYXJxdWVlCisgICAgICAg
ICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46IGFkZGVkIHdhcC1tYXJxdWVlCisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkpCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphZGp1c3RSZW5kZXJTdHlsZSkKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjog
V0NTUyBtYXJxdWVlIGV4dGVuc2lvbnMga2V5cworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmg6IAorCiAyMDA5LTAxLTE5ICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlk
YXlhdEB0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5NzYxKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUz
LDYgKzE1Myw5IEBACiAgICAgICAgIGNhc2UgVEFCTEVfQ0FQVElPTjoKICAgICAgICAgICAgIG8g
PSBuZXcgKGFyZW5hKSBSZW5kZXJCbG9jayhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFdBUF9NQVJRVUVFOgorICAgICAgICAgICAgbyA9IG5ldyAoYXJlbmEpIFJlbmRl
ckJsb2NrKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQk9YOgogICAg
ICAgICBjYXNlIElOTElORV9CT1g6CiAgICAgICAgICAgICBvID0gbmV3IChhcmVuYSkgUmVuZGVy
RmxleGlibGVCb3gobm9kZSk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAko
cmV2aXNpb24gOTc2MSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDExIEBACiB2b2lkIFJlbmRlck1hcnF1ZWU6OnVw
ZGF0ZU1hcnF1ZWVQb3NpdGlvbigpCiB7CiAgICAgYm9vbCBhY3RpdmF0ZSA9IChtX3RvdGFsTG9v
cHMgPD0gMCB8fCBtX2N1cnJlbnRMb29wIDwgbV90b3RhbExvb3BzKTsKKyAgICBSZW5kZXJTdHls
ZSogc3R5bGUgPSBtX2xheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpOworICAgIAorICAgIGlmICgh
c3R5bGUtPm1hcnF1ZWVMb29wQ291bnQoKSAmJiBzdHlsZS0+ZGlzcGxheSgpID09IFdBUF9NQVJR
VUVFKQorICAgICAgICBhY3RpdmF0ZSA9IGZhbHNlOyAvLyBJZiAtd2FwLW1hcnF1ZWUtbG9vcCBp
cyB6ZXJvIGRvIG5vdCBzZXQgaXQgdG8gbG9vcAorICAgICAgICAKICAgICBpZiAoYWN0aXZhdGUp
IHsKICAgICAgICAgRU1hcnF1ZWVCZWhhdmlvciBiZWhhdmlvciA9IG1fbGF5ZXItPnJlbmRlcmVy
KCktPnN0eWxlKCktPm1hcnF1ZWVCZWhhdmlvcigpOwogICAgICAgICBtX3N0YXJ0ID0gY29tcHV0
ZVBvc2l0aW9uKGRpcmVjdGlvbigpLCBiZWhhdmlvciA9PSBNQUxURVJOQVRFKTsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNp
b24gOTc2MSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUsNyBAQAogICAgIFRBQkxFLCBJTkxJTkVf
VEFCTEUsIFRBQkxFX1JPV19HUk9VUCwKICAgICBUQUJMRV9IRUFERVJfR1JPVVAsIFRBQkxFX0ZP
T1RFUl9HUk9VUCwgVEFCTEVfUk9XLAogICAgIFRBQkxFX0NPTFVNTl9HUk9VUCwgVEFCTEVfQ09M
VU1OLCBUQUJMRV9DRUxMLAotICAgIFRBQkxFX0NBUFRJT04sIEJPWCwgSU5MSU5FX0JPWCwgTk9O
RQorICAgIFRBQkxFX0NBUFRJT04sIFdBUF9NQVJRVUVFLCBCT1gsIElOTElORV9CT1gsIE5PTkUK
IH07CiAKIGVudW0gRVBvaW50ZXJFdmVudHMgewpJbmRleDogV2ViQ29yZS9jc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
CShyZXZpc2lvbiA5NzYxKQorKysgV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw3IEBACiB0YWJsZS1jb2x1bW4KIHRhYmxlLWNlbGwK
IHRhYmxlLWNhcHRpb24KKy13YXAtbWFycXVlZQogLXdlYmtpdC1ib3gKIC13ZWJraXQtaW5saW5l
LWJveAogI25vbmUKQEAgLTYwMSw0ICs2MDIsNCBAQAogZmlsbAogc3Ryb2tlCiAjYWxsCi0jbm9u
ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyNub25lCkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAkocmV2aXNpb24gOTc2MSkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDY0LDYgKzE0NjQsMTAgQEAKICAgICAgICAgICAg
IHN0eWxlLT5zZXRQb3NpdGlvbihTdGF0aWNQb3NpdGlvbik7CiAgICAgfQogCisgICAgLy8gSWYg
ZGlzcGxheSBzdHlsZSBpcyAtd2FwLW1hcnF1ZWUgc2V0IHRoZSBvdmVyZmxvd1guIAorICAgIGlm
IChzdHlsZS0+ZGlzcGxheSgpID09IFdBUF9NQVJRVUVFKQorICAgICAgICBzdHlsZS0+c2V0T3Zl
cmZsb3dYKE9NQVJRVUVFKTsKKwogICAgIC8vIE1ha2Ugc3VyZSBvdXIgei1pbmRleCB2YWx1ZSBp
cyBvbmx5IGFwcGxpZWQgaWYgdGhlIG9iamVjdCBpcyBwb3NpdGlvbmVkLgogICAgIGlmIChzdHls
ZS0+cG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikKICAgICAgICAgc3R5bGUtPnNldEhhc0F1
dG9aSW5kZXgoKTsKQEAgLTQ3MTUsNiArNDcxOSwxOCBAQAogICAgICAgICBtX3N0eWxlLT5zZXRN
YXJxdWVlTG9vcENvdW50KG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVMb29wQ291bnQoKSk7CiAgICAg
ICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihtX3BhcmVudFN0eWxlLT5tYXJxdWVlQmVo
YXZpb3IoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVl
ZUxvb3A6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZUxvb3BD
b3VudCwgTWFycXVlZUxvb3BDb3VudCkKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlSW5maW5pdGUpCisgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9v
cENvdW50KC0xKTsgCisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVU
eXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAgICAgICAgICBtX3N0
eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsK
KyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQo
MSk7IC8vIGRlZmF1bHQgdmFsdWUgZm9yIGxvb3AgaXMgMTogV0NTUyBzcGVjIAorICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlv
bjogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlTG9vcENvdW50
LCBNYXJxdWVlTG9vcENvdW50KQogICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQpAQCAtNDcy
NSw2ICs0NzQxLDcgQEAKICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQo
cHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTcGVlZDogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TChtYXJxdWVlU3BlZWQsIE1hcnF1ZWVTcGVlZCkgICAgICAKICAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKQEAgLTQ3NzUsMTIgKzQ3OTIsMjMgQEAKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3R5bGU6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZTogewogICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChtYXJxdWVlQmVoYXZpb3IsIE1hcnF1ZWVCZWhhdmlvcikgICAgICAKICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQogICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVl
ZUJlaGF2aW9yKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXI6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUwobWFycXVlZURpcmVjdGlvbiwgTWFycXVlZURpcmVjdGlvbikKKyAgICAgICAg
aWYgKCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUx0cikKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24o
TVJJR0hUKTsKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVSdGwpCisgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1M
RUZUKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZURpcmVjdGlvbjogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCht
YXJxdWVlRGlyZWN0aW9uLCBNYXJxdWVlRGlyZWN0aW9uKQogICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUpCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDk3NjEpCisrKyBXZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQwLDYgKzEyNDAsMTAgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0
eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCB9OwogICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCA1LCBpbXBvcnRhbnQpOwogICAgIH0KKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZURpcjoKKyAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTHRyIHx8IGlkID09IENTU1ZhbHVlUnRsKQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZl
ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVEaXJlY3Rpb246CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZvcndhcmRzIHx8IGlkID09
IENTU1ZhbHVlQmFja3dhcmRzIHx8IGlkID09IENTU1ZhbHVlQWhlYWQgfHwKICAgICAgICAgICAg
IGlkID09IENTU1ZhbHVlUmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NT
VmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZURvd24gfHwKQEAgLTEyNTIsMTYgKzEyNTYsMjIg
QEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdmFsaWRVbml0
KHZhbHVlLCBGTGVuZ3RofEZQZXJjZW50LCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3R5bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVTdHlsZToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9
PSBDU1NWYWx1ZVNsaWRlIHx8IGlkID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVl
QWx0ZXJuYXRlKQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wOgogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbjoKICAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlSW5maW5pdGUpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZJ
bnRlZ2VyfEZOb25OZWcsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZDoKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFs
IHx8IGlkID09IENTU1ZhbHVlU2xvdyB8fCBpZCA9PSBDU1NWYWx1ZUZhc3QpCisgICAgICAgICAg
ICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZVNwZWVkOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3Jt
YWwgfHwgaWQgPT0gQ1NTVmFsdWVTbG93IHx8IGlkID09IENTU1ZhbHVlRmFzdCkKICAgICAgICAg
ICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4J
KHJldmlzaW9uIDk3NjEpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDEwIEBACiB3b3JkLXdyYXAKIHotaW5kZXgKIHpvb20K
Ky13YXAtbWFycXVlZS1zdHlsZQorLXdhcC1tYXJxdWVlLWxvb3AKKy13YXAtbWFycXVlZS1kaXIK
Ky13YXAtbWFycXVlZS1zcGVlZAogLXdlYmtpdC1hbmltYXRpb24KIC13ZWJraXQtYW5pbWF0aW9u
LWRlbGF5CiAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb24KSW5kZXg6IFdlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDk3NjEpCisrKyBXZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1NSw2ICs1NTUs
OSBAQAogICAgICAgICBjYXNlIFRBQkxFX0NBUFRJT046CiAgICAgICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTVmFsdWVUYWJsZUNhcHRpb247CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBXQVBfTUFSUVVFRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZVdh
cE1hcnF1ZWU7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCT1g6CiAgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVXZWJraXRCb3g7CiAgICAgICAgICAgICBicmVh
azsK
</data>
<flag name="review"
          id="13053"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27390</attachid>
            <date>2009-02-06 05:54:58 -0800</date>
            <delta_ts>2009-02-06 06:04:47 -0800</delta_ts>
            <desc>added all marquee changes under WCSS flag</desc>
            <filename>final_change_with_flag.patch</filename>
            <type>text/plain</type>
            <size>9774</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUucHJvCShyZXZpc2lvbiA5
NzYxKQorKysgV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQAog
IWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YUEFUSD0uKTogREVGSU5FUyArPSBFTkFCTEVfWFBB
VEg9MQogIyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJM
RV9YQkw9MQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0gRU5B
QkxFX1dNTD0wCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dDU1M9Lik6IERFRklORVMgKz0g
RU5BQkxFX1dDU1M9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9Lik6IERFRklORVMg
Kz0gRU5BQkxFX1NWRz0xCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWR19GT05UUz0uKTog
REVGSU5FUyArPSBFTkFCTEVfU1ZHX0ZPTlRTPTEKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U1ZHX0ZJTFRFUlM9Lik6IERFRklORVMgKz0gRU5BQkxFX1NWR19GSUxURVJTPTEKSW5kZXg6IENo
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk3NjEpCisrKyBDaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wMi0wNiAgTWFoZXNo
IEt1bGthcm5pICA8bWFoZXNoLmt1bGthcm5pQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXZlIEh5YXR0LgorCisgICAgICAgIGh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL3RlY2gv
ZG9jdW1lbnRzL1dBUC0yMzktV0NTUy0yMDAxMTAyNi1hLnBkZgorCisgICAgICAgIFN1cHBvcnQg
Zm9yIFdDU1MgbWFycXVlZSBleHRlbnNpb25zIHRvIHdlYmtpdC4gZGlzcGxheTogLXdhcC1tYXJx
dWVlIHN1cHBvcnQgYW5kIHJlbGF0ZWQgaXRlbXMgCisgICAgICAgIE1hcHBlZCBhbGwgLXdhcC1t
YXJxdWVlIGNoYW5nZXMgdG8gZXhpc3RpbmcgbWFycXVlZSB0YWcgc3R5bGVzCisKKyAgICAgICAg
KiBXZWJDb3JlLnBybzogYWRkZWQgV0NTUyBmbGFnIGFuZCBzZXQgIm9mZiIgYnkgZGVmYXVsdAor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
YXJxdWVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hcnF1ZWU6OnVwZGF0ZU1hcnF1
ZWVQb3NpdGlvbikKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFu
dHMuaDogYWRkZWQgZGlzcGxheSB2YWx1ZSAtd2FwLW1hcnF1ZWUKKyAgICAgICAgKiBjc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbjogYWRkZWQgd2FwLW1hcnF1ZWUKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eSkKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFkanVzdFJl
bmRlclN0eWxlKQorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOiBXQ1NTIG1hcnF1
ZWUgZXh0ZW5zaW9ucyBrZXlzCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaDogCisKIDIwMDktMDEtMTkgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xs
dGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gOTc2MSkKKysrIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDExIEBACiAgICAgICAgIGNhc2UgVEFCTEVf
Q0FQVElPTjoKICAgICAgICAgICAgIG8gPSBuZXcgKGFyZW5hKSBSZW5kZXJCbG9jayhub2RlKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICNpZiBFTkFCTEUoV0NTUykKKyAgICAgICAgY2FzZSBX
QVBfTUFSUVVFRToKKyAgICAgICAgICAgIG8gPSBuZXcgKGFyZW5hKSBSZW5kZXJCbG9jayhub2Rl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICNlbmRpZgogICAgICAgICBjYXNlIEJPWDoKICAg
ICAgICAgY2FzZSBJTkxJTkVfQk9YOgogICAgICAgICAgICAgbyA9IG5ldyAoYXJlbmEpIFJlbmRl
ckZsZXhpYmxlQm94KG5vZGUpOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAkocmV2aXNpb24gOTc2MSkK
KysrIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDYg
KzE5MiwxMSBAQAogdm9pZCBSZW5kZXJNYXJxdWVlOjp1cGRhdGVNYXJxdWVlUG9zaXRpb24oKQog
ewogICAgIGJvb2wgYWN0aXZhdGUgPSAobV90b3RhbExvb3BzIDw9IDAgfHwgbV9jdXJyZW50TG9v
cCA8IG1fdG90YWxMb29wcyk7CisjaWYgRU5BQkxFKFdDU1MpICAgIAorICAgIFJlbmRlclN0eWxl
KiBzdHlsZSA9IG1fbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCk7CisgICAgaWYgKCFzdHlsZS0+
bWFycXVlZUxvb3BDb3VudCgpICYmIHN0eWxlLT5kaXNwbGF5KCkgPT0gV0FQX01BUlFVRUUpCisg
ICAgICAgIGFjdGl2YXRlID0gZmFsc2U7IC8vIElmIC13YXAtbWFycXVlZS1sb29wIGlzIHplcm8g
ZG8gbm90IHNldCBpdCB0byBsb29wCisjZW5kaWYKICAgICBpZiAoYWN0aXZhdGUpIHsKICAgICAg
ICAgRU1hcnF1ZWVCZWhhdmlvciBiZWhhdmlvciA9IG1fbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxl
KCktPm1hcnF1ZWVCZWhhdmlvcigpOwogICAgICAgICBtX3N0YXJ0ID0gY29tcHV0ZVBvc2l0aW9u
KGRpcmVjdGlvbigpLCBiZWhhdmlvciA9PSBNQUxURVJOQVRFKTsKSW5kZXg6IHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA5NzYxKQorKysgcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYs
OSBAQAogICAgIFRBQkxFX0hFQURFUl9HUk9VUCwgVEFCTEVfRk9PVEVSX0dST1VQLCBUQUJMRV9S
T1csCiAgICAgVEFCTEVfQ09MVU1OX0dST1VQLCBUQUJMRV9DT0xVTU4sIFRBQkxFX0NFTEwsCiAg
ICAgVEFCTEVfQ0FQVElPTiwgQk9YLCBJTkxJTkVfQk9YLCBOT05FCisjaWYgRU5BQkxFKFdDU1Mp
CisgICAgLCBXQVBfTUFSUVVFRQorI2VuZGlmCiB9OwogCiBlbnVtIEVQb2ludGVyRXZlbnRzIHsK
SW5kZXg6IGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NWYWx1
ZUtleXdvcmRzLmluCShyZXZpc2lvbiA5NzYxKQorKysgY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsNyBAQAogdGFibGUtY29sdW1uCiB0YWJsZS1j
ZWxsCiB0YWJsZS1jYXB0aW9uCistd2FwLW1hcnF1ZWUKIC13ZWJraXQtYm94CiAtd2Via2l0LWlu
bGluZS1ib3gKICNub25lCkBAIC02MDEsNCArNjAyLDQgQEAKIGZpbGwKIHN0cm9rZQogI2FsbAot
I25vbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisjbm9uZQpJbmRleDogY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
cmV2aXNpb24gOTc2MSkKKysrIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ2NCw2ICsxNDY0LDEwIEBACiAgICAgICAgICAgICBzdHlsZS0+c2V0UG9zaXRpb24o
U3RhdGljUG9zaXRpb24pOwogICAgIH0KIAorI2lmIEVOQUJMRUQoV0NTUykKKyAgICBpZiAoc3R5
bGUtPmRpc3BsYXkoKSA9PSBXQVBfTUFSUVVFRSkKKyAgICAgICAgc3R5bGUtPnNldE92ZXJmbG93
WChPTUFSUVVFRSk7CisjZW5kaWYKICAgICAvLyBNYWtlIHN1cmUgb3VyIHotaW5kZXggdmFsdWUg
aXMgb25seSBhcHBsaWVkIGlmIHRoZSBvYmplY3QgaXMgcG9zaXRpb25lZC4KICAgICBpZiAoc3R5
bGUtPnBvc2l0aW9uKCkgPT0gU3RhdGljUG9zaXRpb24pCiAgICAgICAgIHN0eWxlLT5zZXRIYXNB
dXRvWkluZGV4KCk7CkBAIC0yODk0LDcgKzI4OTgsNyBAQAogICAgIGNhc2UgQ1NTUHJvcGVydHlE
aXNwbGF5OgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZGlzcGxh
eSwgRGlzcGxheSkKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUpIAogICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlzcGxheSgqcHJpbWl0aXZl
VmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDcxNSw2ICs0NzE5LDIwIEBACiAg
ICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQobV9wYXJlbnRTdHlsZS0+bWFycXVl
ZUxvb3BDb3VudCgpKTsKICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUJlaGF2aW9yKG1fcGFy
ZW50U3R5bGUtPm1hcnF1ZWVCZWhhdmlvcigpKTsKICAgICAgICAgcmV0dXJuOworI2lmIEVOQUJM
RShXQ1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcDogeworICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlTG9vcENvdW50LCBNYXJxdWVlTG9vcENv
dW50KQorICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbmZpbml0
ZSkKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoLTEpOyAKKyAgICAg
ICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29w
Q291bnQocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOworICAgICAgICBlbHNlIAorICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudCgxKTsgLy8gZGVmYXVsdCB2YWx1
ZSBmb3IgbG9vcCBpcyAxOiBXQ1NTIHNwZWMgCisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246IHsKICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZUxvb3BDb3VudCwgTWFycXVlZUxv
b3BDb3VudCkKICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKQEAgLTQ3MjUsNiArNDc0Myw5
IEBACiAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KHByaW1pdGl2ZVZh
bHVlLT5nZXRJbnRWYWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNpZiBFTkFCTEUo
V0NTUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkOgorI2VuZGlmCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZDogewogICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChtYXJxdWVlU3BlZWQsIE1hcnF1ZWVTcGVlZCkgICAgICAKICAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKQEAgLTQ3NzUsMTIgKzQ3OTYsMjcgQEAKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIEVOQUJMRShXQ1NTKQorICAgIGNhc2UgQ1NT
UHJvcGVydHlXYXBNYXJxdWVlU3R5bGU6CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVN0eWxlOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1h
cnF1ZWVCZWhhdmlvciwgTWFycXVlZUJlaGF2aW9yKSAgICAgIAogICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUpCiAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlQmVoYXZpb3IoKnByaW1p
dGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNpZiBFTkFCTEUoV0NTUykKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZURpcjogeworICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChtYXJxdWVlRGlyZWN0aW9uLCBNYXJxdWVlRGlyZWN0aW9uKQorICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8ICFwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlTHRyKQorICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlv
bihNUklHSFQpOworICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZVJ0bCkKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24o
TUxFRlQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwobWFycXVlZURpcmVjdGlvbiwgTWFycXVlZURpcmVjdGlvbikKICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlKQpJbmRleDogY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
Y3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDk3NjEpCisrKyBjc3MvQ1NTUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI0MCw2ICsxMjQwLDEyIEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlU3BlZWQgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHBy
b3BJZCwgcHJvcGVydGllcywgNSwgaW1wb3J0YW50KTsKICAgICB9CisjaWYgRU5BQkxFKFdDU1Mp
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXI6CisgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUx0ciB8fCBpZCA9PSBDU1NWYWx1ZVJ0bCkKKyAgICAgICAgICAgIHZhbGlkX3ByaW1p
dGl2ZSA9IHRydWU7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZvcndh
cmRzIHx8IGlkID09IENTU1ZhbHVlQmFja3dhcmRzIHx8IGlkID09IENTU1ZhbHVlQWhlYWQgfHwK
ICAgICAgICAgICAgIGlkID09IENTU1ZhbHVlUmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQg
fHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZURvd24gfHwKQEAgLTEyNTIs
MTYgKzEyNTgsMjggQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZl
ID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RofEZQZXJjZW50LCBtX3N0cmljdCk7CiAgICAgICAg
IGJyZWFrOworI2lmIEVOQUJMRShXQ1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVl
U3R5bGU6CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgog
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlU2xpZGUgfHwg
aWQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwgaWQgPT0gQ1NTVmFsdWVBbHRlcm5hdGUpCiAgICAgICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUo
V0NTUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3A6CisjZW5kaWYKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246CiAgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdmFsaWRVbml0KHZh
bHVlLCBGSW50ZWdlcnxGTm9uTmVnLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOworI2lmIEVO
QUJMRShXQ1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQ6CisgICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNsb3cgfHwgaWQgPT0g
Q1NTVmFsdWVGYXN0KQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVk
OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVTbG93
IHx8IGlkID09IENTU1ZhbHVlRmFzdCkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRy
dWU7CkluZGV4OiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NT
UHJvcGVydHlOYW1lcy5pbgkocmV2aXNpb24gOTc2MSkKKysrIGNzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDEwIEBACiB3b3JkLXdyYXAKIHotaW5k
ZXgKIHpvb20KKy13YXAtbWFycXVlZS1zdHlsZQorLXdhcC1tYXJxdWVlLWxvb3AKKy13YXAtbWFy
cXVlZS1kaXIKKy13YXAtbWFycXVlZS1zcGVlZAogLXdlYmtpdC1hbmltYXRpb24KIC13ZWJraXQt
YW5pbWF0aW9uLWRlbGF5CiAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb24KSW5kZXg6IGNzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNpb24gOTc2MSkKKysrIGNzcy9DU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1NSw2ICs1NTUsMTEgQEAKICAgICAgICAg
Y2FzZSBUQUJMRV9DQVBUSU9OOgogICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVl
VGFibGVDYXB0aW9uOwogICAgICAgICAgICAgYnJlYWs7CisgICAgI2lmIEVOQUJMRShXQ1NTKSAg
ICAKKyAgICAgICAgY2FzZSBXQVBfTUFSUVVFRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NWYWx1ZVdhcE1hcnF1ZWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAjZW5kaWYKICAg
ICAgICAgY2FzZSBCT1g6CiAgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVXZWJr
aXRCb3g7CiAgICAgICAgICAgICBicmVhazsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27392</attachid>
            <date>2009-02-06 06:00:35 -0800</date>
            <delta_ts>2009-05-27 09:44:14 -0700</delta_ts>
            <desc>Patch :: -wap-accesskey support</desc>
            <filename>WapAccessKey.patch</filename>
            <type>text/plain</type>
            <size>4081</size>
            <attacher name="Rohini Ananth">rohini.ananth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUucHJvCShyZXZpc2lvbiA5
NzYxKQorKysgV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQAog
IWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YUEFUSD0uKTogREVGSU5FUyArPSBFTkFCTEVfWFBB
VEg9MQogIyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJM
RV9YQkw9MQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0gRU5B
QkxFX1dNTD0wCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dDU1M9Lik6IERFRklORVMgKz0g
RU5BQkxFX1dDU1M9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9Lik6IERFRklORVMg
Kz0gRU5BQkxFX1NWRz0xCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWR19GT05UUz0uKTog
REVGSU5FUyArPSBFTkFCTEVfU1ZHX0ZPTlRTPTEKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U1ZHX0ZJTFRFUlM9Lik6IERFRklORVMgKz0gRU5BQkxFX1NWR19GSUxURVJTPTEKSW5kZXg6IENo
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjA3KQorKysgQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMDItMDYgIFJvaGlu
aSBBbmFudGggIDxyb2hpbmkuYW5hbnRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSAKKworICAgICAgICBodHRwOi8vd3d3LndhcGZvcnVtLm9yZy90ZWNoL2RvY3VtZW50cy9XQVAt
MjM5LVdDU1MtMjAwMTEwMjYtYS5wZGYKKworICAgICAgICBXZWJraXQgU3VwcG9ydCBmb3IgV0NT
UyAtd2FwLWFjY2Vzc2tleS4gQ2hhbmdlcyBtYWRlIHRvIENTU1BhcnNlciBhbmQgQ1NTU3R5bGVT
ZWxlY3RvciB0byBtYXAgLXdhcC1hY2Nlc3NrZXkgdG8KKyAgICAgICAgZm9sbG93IHRoZSBwYXRo
IG9mIGFjY2Vzc2tleSBIVE1MIGF0dHJpYnV0ZS4gQWRkZWQgV0NTUyBmbGFnIGFuZCBzZXQgdG8g
ZmFsc2UgYnkgZGVmYXVsdC4gIAorICAgICAgICAKKyAgICAgICAgKldlYkNvcmUucHJvIDogYWRk
ZWQgRU5BQkxFX1dDU1MgZmxhZyBhbmQgc2V0IHRvIDAgYnkgZGVmYXVsdAorICAgICAgICAqIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjog
SW5jbHVkaW5nIC13YXAtYWNjZXNza2V5IENTUyBwcm9wZXJ0eQorICAgICAgICAqIGNzcy9DU1NQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAg
ICAgICAgKiBwYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcCAKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKwogMjAwOS0wMS0xOSAgQXJpeWEgSGlk
YXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IHBhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHBhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCShyZXZpc2lvbiA5NzYxKQorKysg
cGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIs
MTEgQEAKIAogdW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewot
ICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxLZXk7CisgICAgI2lmIGRlZmlu
ZWQgUV9XU19TNjAKKyAgICAgICAgcmV0dXJuIDA7CisgICAgI2Vsc2UKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleTsKKyAgICAjZW5kaWYKIH0KIAogfQpJbmRl
eDogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAkocmV2aXNpb24gOTc2MSkKKysrIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAyOCw2ICs1MDI4LDIzIEBACiAgICAgICAgIG1fc3R5bGUtPnNl
dFBvaW50ZXJFdmVudHMoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyNpZiBFTkFCTEUoV0NTUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwQWNjZXNzS2V5OiB7Cisg
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IAorICAgICAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGU7CisgICAgICAgIFN0cmluZyBh
dHRyaWJ1dGVWYWx1ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJp
bWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAg
ICAgYXR0cmlidXRlVmFsdWUgPSBTdHJpbmc6Om51bWJlcihwcmltaXRpdmVWYWx1ZS0+Z2V0SW50
VmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gcHJp
bWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgbV9l
bGVtZW50LT5zZXRBdHRyaWJ1dGUoImFjY2Vzc2tleSIsIGF0dHJpYnV0ZVZhbHVlLCBleGNlcHRp
b25Db2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJv
cGVydHlJbnZhbGlkOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRT
dHJldGNoOgpJbmRleDogY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NTU1Bh
cnNlci5jcHAJKHJldmlzaW9uIDk3NjEpCisrKyBjc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU4OCw2ICsxNTg4LDEzIEBACiAgICAgICAgIHJldHVybiBwYXJzZUFuaW1hdGlv
blNob3J0aGFuZChpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0
aW9uOgogICAgICAgICByZXR1cm4gcGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7
CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcEFjY2Vzc0tleToKKyAg
ICAgICAgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpICAv
L2hhbmRsaW5nIHN5bWJvbHNbKi8jXSBhbmQgY2hhcmFjdGVycyAKKyAgICAgICAgICAgIHBhcnNl
ZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+c3RyaW5nLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CisgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7
CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUludmFsaWQ6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6Cklu
ZGV4OiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTUHJvcGVy
dHlOYW1lcy5pbgkocmV2aXNpb24gOTc2MSkKKysrIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDcgQEAKIHdvcmQtd3JhcAogei1pbmRleAogem9v
bQorLXdhcC1hY2Nlc3NrZXkKIC13ZWJraXQtYW5pbWF0aW9uCiAtd2Via2l0LWFuaW1hdGlvbi1k
ZWxheQogLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uCg==
</data>
<flag name="review"
          id="13236"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27393</attachid>
            <date>2009-02-06 06:03:08 -0800</date>
            <delta_ts>2009-02-06 06:03:08 -0800</delta_ts>
            <desc>Test content for -wap-accesskey</desc>
            <filename>WapAccessKeyTest.xhtml</filename>
            <type>application/xhtml+xml</type>
            <size>1438</size>
            <attacher name="Rohini Ananth">rohini.ananth</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1dBUEZPUlVN
Ly9EVEQgWEhUTUwgTW9iaWxlIDEuMC8vRU4iICJodHRwOi8vd3d3LndhcGZvcnVtLm9yZy9EVEQv
eGh0bWwtbW9iaWxlMTAuZHRkIj4NCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sIj4NCjxoZWFkPg0KCTx0aXRsZT5BY2Nlc3NrZXlzIDwvdGl0bGU+DQoJPHN0eWxlPgoJ
ICAgIHB7Y29sb3I6cHVycGxlO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OmJvbGR9CiAgICAg
ICAgaDF7Y29sb3I6cmVkfQoJPC9zdHlsZT4NCjwvaGVhZD4NCg0KPGJvZHk+DQo8aDE+QWNjZXNz
a2V5cyBBcmVuYSAhISE8L2gxPg0KDQo8cD5MaW5rIGlzIGFjdGl2YXRlZCBieSBwcmVzc2luZyAx
PGJyIC8+DQo8YSBocmVmPSJodHRwOi8vd3d3Lm5va2lhLmNvbSIgc3R5bGU9Ii13YXAtYWNjZXNz
a2V5OjEiID4gd3d3Lm5va2lhLmNvbSA8L2E+PC9wPg0KDQo8cD5CdXR0b24gY2FuIGJlIGFjdGl2
YXRlZCBieSBwcmVzc2luZyAiMiIgPGJyIC8+DQo8aW5wdXQgc3R5bGU9Ii13YXAtYWNjZXNza2V5
OjIiIG5hbWU9ImJ1dHRvbiIgdHlwZT0iYnV0dG9uIiB2YWx1ZSA9ICIgQnV0dG9uIDIgIiBvbmNs
aWNrID0gImphdnNjcmlwdDphbGVydCgnUHJlc3NlZCAyIGtleScpOyIgc2l6ZT0iNCIgLz4NCjwv
cD4NCg0KPHA+UHJlc3MgIjUiIGZvciBZZXM8YnIgLz4gDQo8aW5wdXQgc3R5bGU9Ii13YXAtYWNj
ZXNza2V5OjUiIG5hbWU9ImJ1dHRvbiIgdHlwZT0iY2hlY2tib3giIHZhbHVlID0gIiBCdXR0b24g
NSAiIG9uY2xpY2sgPSAiamF2c2NyaXB0OmFsZXJ0KCdQcmVzc2VkIDUga2V5Jyk7IiBzaXplPSI0
Ii8+WWVzDQo8L3A+DQoNCjxwPkZvY3VzIGluIGlucHV0IHRleHQgYm94IHdpdGggImEiIDxiciAv
PgkNCjxpbnB1dCBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6YSIgbmFtZT0iY2hhcmFjdGVyIiB0eXBl
PSJ0ZXh0IiBzaXplPSI0Ii8+DQo8YnIvPiANCjwvcD4NCg0KPHA+UHJlc3MgKiB0byBhcHBlbmQg
aW4gVGV4dCBhcmVhIDxiciAvPg0KPHRleHRhcmVhIHN0eWxlPSItd2FwLWFjY2Vzc2tleTpcMmEi
IG5hbWU9ImNoYXJhY3RlciIgc2l6ZT0iMTAiLz4NCjxiciAvPg0KPC9wPgoKPHA+SSBvdmVycmlk
ZSBhY2Nlc3NrZXkgYXR0cmlidXRlLi4uLjxiciAvPg0KPGEgaHJlZj0iaHR0cDovL3d3dy53ZWJr
aXQub3JnIiBhY2Nlc3NrZXk9IjciIHN0eWxlPSItd2FwLWFjY2Vzc2tleTo2IiAgPiBXYXAgYWNj
ZXNza2V5IDYgd29ya3MgZm9yIG1lISEgPC9hPiA8YnIgLz4NCjwhLS0gPGEgaHJlZj0iaHR0cDov
L2VuLndpa2lwZWRpYS5vcmciIHN0eWxlPSItd2FwLWFjY2Vzc2tleTo3IiBhY2Nlc3NrZXk9IjYi
ICA+IFdBUCBBY2Nlc3MgS2V5IDcgd29ya3MgZm9yIG1lISEgPC9hPiAtLT4KPC9wPgoNCjwvYm9k
eT4NCjwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27394</attachid>
            <date>2009-02-06 06:04:47 -0800</date>
            <delta_ts>2010-06-10 17:59:12 -0700</delta_ts>
            <desc>marquee changes put under WCSS flag.</desc>
            <filename>final_change_with_flag.patch</filename>
            <type>text/plain</type>
            <size>9773</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUucHJvCShyZXZpc2lvbiA5
NzYxKQorKysgV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQAog
IWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YUEFUSD0uKTogREVGSU5FUyArPSBFTkFCTEVfWFBB
VEg9MQogIyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJM
RV9YQkw9MQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0gRU5B
QkxFX1dNTD0wCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dDU1M9Lik6IERFRklORVMgKz0g
RU5BQkxFX1dDU1M9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9Lik6IERFRklORVMg
Kz0gRU5BQkxFX1NWRz0xCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWR19GT05UUz0uKTog
REVGSU5FUyArPSBFTkFCTEVfU1ZHX0ZPTlRTPTEKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U1ZHX0ZJTFRFUlM9Lik6IERFRklORVMgKz0gRU5BQkxFX1NWR19GSUxURVJTPTEKSW5kZXg6IENo
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk3NjEpCisrKyBDaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wMi0wNiAgTWFoZXNo
IEt1bGthcm5pICA8bWFoZXNoLmt1bGthcm5pQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXZlIEh5YXR0LgorCisgICAgICAgIGh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL3RlY2gv
ZG9jdW1lbnRzL1dBUC0yMzktV0NTUy0yMDAxMTAyNi1hLnBkZgorCisgICAgICAgIFN1cHBvcnQg
Zm9yIFdDU1MgbWFycXVlZSBleHRlbnNpb25zIHRvIHdlYmtpdC4gZGlzcGxheTogLXdhcC1tYXJx
dWVlIHN1cHBvcnQgYW5kIHJlbGF0ZWQgaXRlbXMgCisgICAgICAgIE1hcHBlZCBhbGwgLXdhcC1t
YXJxdWVlIGNoYW5nZXMgdG8gZXhpc3RpbmcgbWFycXVlZSB0YWcgc3R5bGVzCisKKyAgICAgICAg
KiBXZWJDb3JlLnBybzogYWRkZWQgV0NTUyBmbGFnIGFuZCBzZXQgIm9mZiIgYnkgZGVmYXVsdAor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
YXJxdWVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hcnF1ZWU6OnVwZGF0ZU1hcnF1
ZWVQb3NpdGlvbikKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFu
dHMuaDogYWRkZWQgZGlzcGxheSB2YWx1ZSAtd2FwLW1hcnF1ZWUKKyAgICAgICAgKiBjc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbjogYWRkZWQgd2FwLW1hcnF1ZWUKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eSkKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFkanVzdFJl
bmRlclN0eWxlKQorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOiBXQ1NTIG1hcnF1
ZWUgZXh0ZW5zaW9ucyBrZXlzCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaDogCisKIDIwMDktMDEtMTkgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xs
dGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gOTc2MSkKKysrIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDExIEBACiAgICAgICAgIGNhc2UgVEFCTEVf
Q0FQVElPTjoKICAgICAgICAgICAgIG8gPSBuZXcgKGFyZW5hKSBSZW5kZXJCbG9jayhub2RlKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICNpZiBFTkFCTEUoV0NTUykKKyAgICAgICAgY2FzZSBX
QVBfTUFSUVVFRToKKyAgICAgICAgICAgIG8gPSBuZXcgKGFyZW5hKSBSZW5kZXJCbG9jayhub2Rl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICNlbmRpZgogICAgICAgICBjYXNlIEJPWDoKICAg
ICAgICAgY2FzZSBJTkxJTkVfQk9YOgogICAgICAgICAgICAgbyA9IG5ldyAoYXJlbmEpIFJlbmRl
ckZsZXhpYmxlQm94KG5vZGUpOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAkocmV2aXNpb24gOTc2MSkK
KysrIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDYg
KzE5MiwxMSBAQAogdm9pZCBSZW5kZXJNYXJxdWVlOjp1cGRhdGVNYXJxdWVlUG9zaXRpb24oKQog
ewogICAgIGJvb2wgYWN0aXZhdGUgPSAobV90b3RhbExvb3BzIDw9IDAgfHwgbV9jdXJyZW50TG9v
cCA8IG1fdG90YWxMb29wcyk7CisjaWYgRU5BQkxFKFdDU1MpICAgIAorICAgIFJlbmRlclN0eWxl
KiBzdHlsZSA9IG1fbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCk7CisgICAgaWYgKCFzdHlsZS0+
bWFycXVlZUxvb3BDb3VudCgpICYmIHN0eWxlLT5kaXNwbGF5KCkgPT0gV0FQX01BUlFVRUUpCisg
ICAgICAgIGFjdGl2YXRlID0gZmFsc2U7IC8vIElmIC13YXAtbWFycXVlZS1sb29wIGlzIHplcm8g
ZG8gbm90IHNldCBpdCB0byBsb29wCisjZW5kaWYKICAgICBpZiAoYWN0aXZhdGUpIHsKICAgICAg
ICAgRU1hcnF1ZWVCZWhhdmlvciBiZWhhdmlvciA9IG1fbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxl
KCktPm1hcnF1ZWVCZWhhdmlvcigpOwogICAgICAgICBtX3N0YXJ0ID0gY29tcHV0ZVBvc2l0aW9u
KGRpcmVjdGlvbigpLCBiZWhhdmlvciA9PSBNQUxURVJOQVRFKTsKSW5kZXg6IHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA5NzYxKQorKysgcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYs
OSBAQAogICAgIFRBQkxFX0hFQURFUl9HUk9VUCwgVEFCTEVfRk9PVEVSX0dST1VQLCBUQUJMRV9S
T1csCiAgICAgVEFCTEVfQ09MVU1OX0dST1VQLCBUQUJMRV9DT0xVTU4sIFRBQkxFX0NFTEwsCiAg
ICAgVEFCTEVfQ0FQVElPTiwgQk9YLCBJTkxJTkVfQk9YLCBOT05FCisjaWYgRU5BQkxFKFdDU1Mp
CisgICAgLCBXQVBfTUFSUVVFRQorI2VuZGlmCiB9OwogCiBlbnVtIEVQb2ludGVyRXZlbnRzIHsK
SW5kZXg6IGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NWYWx1
ZUtleXdvcmRzLmluCShyZXZpc2lvbiA5NzYxKQorKysgY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsNyBAQAogdGFibGUtY29sdW1uCiB0YWJsZS1j
ZWxsCiB0YWJsZS1jYXB0aW9uCistd2FwLW1hcnF1ZWUKIC13ZWJraXQtYm94CiAtd2Via2l0LWlu
bGluZS1ib3gKICNub25lCkBAIC02MDEsNCArNjAyLDQgQEAKIGZpbGwKIHN0cm9rZQogI2FsbAot
I25vbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisjbm9uZQpJbmRleDogY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
cmV2aXNpb24gOTc2MSkKKysrIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ2NCw2ICsxNDY0LDEwIEBACiAgICAgICAgICAgICBzdHlsZS0+c2V0UG9zaXRpb24o
U3RhdGljUG9zaXRpb24pOwogICAgIH0KIAorI2lmIEVOQUJMRShXQ1NTKQorICAgIGlmIChzdHls
ZS0+ZGlzcGxheSgpID09IFdBUF9NQVJRVUVFKQorICAgICAgICBzdHlsZS0+c2V0T3ZlcmZsb3dY
KE9NQVJRVUVFKTsKKyNlbmRpZgogICAgIC8vIE1ha2Ugc3VyZSBvdXIgei1pbmRleCB2YWx1ZSBp
cyBvbmx5IGFwcGxpZWQgaWYgdGhlIG9iamVjdCBpcyBwb3NpdGlvbmVkLgogICAgIGlmIChzdHls
ZS0+cG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikKICAgICAgICAgc3R5bGUtPnNldEhhc0F1
dG9aSW5kZXgoKTsKQEAgLTI4OTQsNyArMjg5OCw3IEBACiAgICAgY2FzZSBDU1NQcm9wZXJ0eURp
c3BsYXk6CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChkaXNwbGF5
LCBEaXNwbGF5KQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZSkgCiAgICAgICAgICAgICBtX3N0eWxlLT5zZXREaXNwbGF5KCpwcmltaXRpdmVW
YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NzE1LDYgKzQ3MTksMjAgQEAKICAg
ICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudChtX3BhcmVudFN0eWxlLT5tYXJxdWVl
TG9vcENvdW50KCkpOwogICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlQmVoYXZpb3IobV9wYXJl
bnRTdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkpOwogICAgICAgICByZXR1cm47CisjaWYgRU5BQkxF
KFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wOiB7CisgICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1hcnF1ZWVMb29wQ291bnQsIE1hcnF1ZWVMb29wQ291
bnQpCisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluZmluaXRl
KQorICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudCgtMSk7IAorICAgICAg
ICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BD
b3VudChwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7CisgICAgICAgIGVsc2UgCisgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KDEpOyAvLyBkZWZhdWx0IHZhbHVl
IGZvciBsb29wIGlzIDE6IFdDU1Mgc3BlYyAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbjogewogICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlTG9vcENvdW50LCBNYXJxdWVlTG9v
cENvdW50KQogICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQpAQCAtNDcyNSw2ICs0NzQzLDkg
QEAKICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQocHJpbWl0aXZlVmFs
dWUtPmdldEludFZhbHVlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIEVOQUJMRShX
Q1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQ6CisjZW5kaWYKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkOiB7CiAgICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKG1hcnF1ZWVTcGVlZCwgTWFycXVlZVNwZWVkKSAgICAgIAogICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlKQpAQCAtNDc3NSwxMiArNDc5NiwyNyBAQAogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKICAgICB9CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZToKKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3R5bGU6IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFy
cXVlZUJlaGF2aW9yLCBNYXJxdWVlQmVoYXZpb3IpICAgICAgCiAgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZSkKICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcigqcHJpbWl0
aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIEVOQUJMRShXQ1NTKQorICAg
IGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKG1hcnF1ZWVEaXJlY3Rpb24sIE1hcnF1ZWVEaXJlY3Rpb24pCisgICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVMdHIpCisgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9u
KE1SSUdIVCk7CisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlUnRsKQorICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihN
TEVGVCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChtYXJxdWVlRGlyZWN0aW9uLCBNYXJxdWVlRGlyZWN0aW9uKQogICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUpCkluZGV4OiBjc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj
c3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gOTc2MSkKKysrIGNzcy9DU1NQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjQwLDYgKzEyNDAsMTIgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTcGVlZCB9OwogICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJv
cElkLCBwcm9wZXJ0aWVzLCA1LCBpbXBvcnRhbnQpOwogICAgIH0KKyNpZiBFTkFCTEUoV0NTUykK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZURpcjoKKyAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTHRyIHx8IGlkID09IENTU1ZhbHVlUnRsKQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0
aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZURpcmVjdGlvbjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRm9yd2Fy
ZHMgfHwgaWQgPT0gQ1NTVmFsdWVCYWNrd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVBaGVhZCB8fAog
ICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlTGVmdCB8
fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlRG93biB8fApAQCAtMTI1Miwx
NiArMTI1OCwyOCBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUg
PSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGh8RlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAg
YnJlYWs7CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVT
dHlsZToKKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CiAg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVTbGlkZSB8fCBp
ZCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCBpZCA9PSBDU1NWYWx1ZUFsdGVybmF0ZSkKICAgICAgICAg
ICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShX
Q1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcDoKKyNlbmRpZgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbjoKICAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlSW5maW5pdGUpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB2YWxpZFVuaXQodmFs
dWUsIEZJbnRlZ2VyfEZOb25OZWcsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5B
QkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZDoKKyAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU2xvdyB8fCBpZCA9PSBD
U1NWYWx1ZUZhc3QpCisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAg
ICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQ6
CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNsb3cg
fHwgaWQgPT0gQ1NTVmFsdWVGYXN0KQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1
ZTsKSW5kZXg6IGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NQ
cm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA5NzYxKQorKysgY3NzL0NTU1Byb3BlcnR5TmFtZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsMTAgQEAKIHdvcmQtd3JhcAogei1pbmRl
eAogem9vbQorLXdhcC1tYXJxdWVlLXN0eWxlCistd2FwLW1hcnF1ZWUtbG9vcAorLXdhcC1tYXJx
dWVlLWRpcgorLXdhcC1tYXJxdWVlLXNwZWVkCiAtd2Via2l0LWFuaW1hdGlvbgogLXdlYmtpdC1h
bmltYXRpb24tZGVsYXkKIC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbgpJbmRleDogY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiA5NzYxKQorKysgY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTU1LDYgKzU1NSwxMSBAQAogICAgICAgICBj
YXNlIFRBQkxFX0NBUFRJT046CiAgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVU
YWJsZUNhcHRpb247CiAgICAgICAgICAgICBicmVhazsKKyAgICAjaWYgRU5BQkxFKFdDU1MpICAg
IAorICAgICAgICBjYXNlIFdBUF9NQVJRVUVFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU1ZhbHVlV2FwTWFycXVlZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICNlbmRpZgogICAg
ICAgICBjYXNlIEJPWDoKICAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZVdlYmtp
dEJveDsKICAgICAgICAgICAgIGJyZWFrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27397</attachid>
            <date>2009-02-06 07:44:11 -0800</date>
            <delta_ts>2009-03-19 03:01:48 -0700</delta_ts>
            <desc>wap input format support</desc>
            <filename>wap_input_format_support.patch</filename>
            <type>text/plain</type>
            <size>34357</size>
            <attacher name="Sreedhar Vaddi">sreedhar.vaddi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCShyZXZpc2lv
biA5NzYxKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDkgQEAKIAogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5o
IgogI2luY2x1ZGUgIlJlZkNvdW50ZWQuaCIKKyNpZiBFTkFCTEUoV0NTUykKKyNpbmNsdWRlICJX
ZWJUZXh0Rm9ybWF0TWFzay5oIgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CkBAIC00Miw2ICs0NSw5IEBACiBjbGFzcyBFZGl0b3JDbGllbnRRdCA6IHB1YmxpYyBFZGl0b3JD
bGllbnQgewogcHVibGljOgogICAgIEVkaXRvckNsaWVudFF0KFFXZWJQYWdlKiBwYWdlKTsKKyNp
ZiBFTkFCTEUoV0NTUykgCisgICAgfkVkaXRvckNsaWVudFF0KCkgeyBkZWxldGUgbV90ZXh0Rm9y
bWF0TWFzazsgfSAKKyNlbmRpZiAKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3ll
ZCgpOwogICAgIApAQCAtMTA3LDExICsxMTMsMjAgQEAKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5w
dXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwogCiAgICAgYm9vbCBpc0VkaXRpbmcoKSBjb25z
dDsKKyNpZiBFTkFCTEUoV0NTUykKKyAgICBib29sIGNyZWF0ZUZvcm1hdE1hc2soKTsKKyAgICBi
b29sIGNhbmNsZUVkaXRpbmcoKTsKKyAgICBib29sIHZhbGlkYXRlRm9ybWF0VGV4dCgpOworICAg
IHZvaWQgdXBkYXRlRWRpdGluZ01vZGUoKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFFXZWJQ
YWdlKiBtX3BhZ2U7CiAgICAgYm9vbCBtX2VkaXRpbmc7CiAgICAgYm9vbCBtX2luVW5kb1JlZG87
IC8vIG91ciB1bmRvIHN0YWNrIHdvcmtzIGRpZmZlcmVudGx5IC0gZG9uJ3QgcmUtZW50ZXIhCisj
aWYgRU5BQkxFKFdDU1MpCisgICAgV2ViVGV4dEZvcm1hdE1hc2sgKm1fdGV4dEZvcm1hdE1hc2s7
CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJUZXh0
Rm9ybWF0TWFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dl
YlRleHRGb3JtYXRNYXNrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9XZWJUZXh0Rm9ybWF0TWFzay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMwIEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBO
b2tpYSBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImJpZGkuaCIK
KyNpbmNsdWRlICJXZWJUZXh0Rm9ybWF0TWFzay5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJUZXh0LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRy
b2xsZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CitzdGF0aWMgY29uc3QgaW50IEtJ
bmZpbml0ZSA9IC0xOworCitpbmxpbmUgYm9vbCBpc1B1bmN0dWF0aW9uKFFDaGFyIHFjaCkgeyBy
ZXR1cm4gcWNoLmlzUHVuY3QoKTsgfQoraW5saW5lIGJvb2wgaXNTeW1ib2woUUNoYXIgcWNoKSB7
IHJldHVybiBxY2guaXNTeW1ib2woKTsgfQoraW5saW5lIGJvb2wgaXNMb3dlckNhc2UoUUNoYXIg
cWNoKSB7IHJldHVybiBxY2guaXNMb3dlcigpOyB9CitpbmxpbmUgYm9vbCBpc1VwcGVyQ2FzZShR
Q2hhciBxY2gpIHsgcmV0dXJuIHFjaC5pc1VwcGVyKCk7IH0KK2lubGluZSBib29sIGlzRGlnaXQo
UUNoYXIgcWNoKSB7IHJldHVybiBxY2guaXNEaWdpdCgpOyB9CisKK1dlYlRleHRGb3JtYXRNYXNr
OjpXZWJUZXh0Rm9ybWF0TWFzayhjb25zdCBTdHJpbmcmIHN0ciwgYm9vbCByZXF1aXJlZCkgCisg
ICAgOiBtX21hc2tzKDApLCBtX2N1cnJlbnRNYXNrKDApLCBtX2FjY2VwdEFsbChmYWxzZSksIG1f
aW5wdXRSZXF1aXJlZChyZXF1aXJlZCkKK3sKKyAgICBidWlsZE1hc2tMaXN0KHN0cik7Cit9CisK
K1dlYlRleHRGb3JtYXRNYXNrOjp+V2ViVGV4dEZvcm1hdE1hc2soKQoreworICAgIGNsZWFyTWFz
a0xpc3QoKTsKK30KKwordm9pZCBXZWJUZXh0Rm9ybWF0TWFzazo6YnVpbGRNYXNrTGlzdChjb25z
dCBTdHJpbmcmIHN0cikKK3sKKyAgICAvLyAqTSBvciAqbQorICAgIGlmIChzdHIuaXNFbXB0eSgp
IHx8IHN0cj09IipNIiB8fCBzdHI9PSIqbSIpIHsKKyAgICAgICAgbV9hY2NlcHRBbGwgPSB0cnVl
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIHBhcnNlIHRoZSBzdHJpbmcKKyAgICBj
aGFyIGNoOworICAgIGludCBtdWwgPSAxOworICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKKyAgICBp
bnQgaSA9IDA7CisgICAgaW50IGxlbiA9IHN0ci5sZW5ndGgoKTsKKyAgICB3aGlsZSAoaSA8IGxl
bikgeworICAgICAgICBzd2l0Y2ggKHN0cltpXSkgeworICAgICAgICBjYXNlICdhJzogCisgICAg
ICAgICAgICByZXN1bHQgPSBjcmVhdGVNYXNrKEVMZUxvU3ltUHVjLCBtdWwpOyAKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlICdBJzogCisgICAgICAgICAgICByZXN1bHQgPSBjcmVh
dGVNYXNrKEVMZVVwU3ltUHVjLCBtdWwpOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICduJzogCisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVNYXNrKEVOdW1TeW1QdWMsIG11
bCk7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ04nOiAKKyAgICAgICAgICAg
IHJlc3VsdCA9IGNyZWF0ZU1hc2soRU51bUNoYXIsIG11bCk7IAorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgJ3gnOiAKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZU1hc2soRUxl
TG9OdW1TeW1QdWMsIG11bCk7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ1gn
OiAKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZU1hc2soRUxlVXBOdW1TeW1QdWMsIG11bCk7
IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ20nOiAKKyAgICAgICAgICAgIHJl
c3VsdCA9IGNyZWF0ZU1hc2soRUFueUxvdywgbXVsKTsgCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAnTSc6IAorICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlTWFzayhFQW55VXBw
ZXIsIG11bCk7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJyonOiAKKyAgICAg
ICAgICAgIG11bCA9IEtJbmZpbml0ZTsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAnXFwnOgorICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlU3RhdGljTWFzayhzdHIsIGkpOyAK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICAgICAg
Ly8gJ25mJworICAgICAgICAgICAgICAgIGlmIChpc0RpZ2l0KHN0cltpXSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbXVsID0gcGFyc2VNdWx0aXR1ZGUoc3RyLCBpLCByZXN1bHQpOworICAgICAg
ICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UgCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGkrKzsKKyAgICAgICAg
aWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIC8vIHNvbWV0aGluZyB3cm9uZyB3aXRoIHRoZSBm
b3JtYXQgc3RyaW5nLCBmYWxsYmFjayB0bworICAgICAgICAgICAgLy8gYWNjZXB0IGFsbCBjaGFy
YWN0ZXJzLgorICAgICAgICAgICAgY2xlYXJNYXNrTGlzdCgpOworICAgICAgICAgICAgbV9hY2Nl
cHRBbGwgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAg
IG1fY3VycmVudE1hc2sgPSBtX21hc2tzOworfQorCit2b2lkIFdlYlRleHRGb3JtYXRNYXNrOjpj
bGVhck1hc2tMaXN0KCkKK3sKKyAgICBNYXNrQmFzZSogbSA9IG1fbWFza3M7CisgICAgTWFza0Jh
c2UqIHAgPSBtOworICAgIHdoaWxlKHApIHsKKyAgICAgICAgcCA9IG0tPm1fbmV4dDsKKyAgICAg
ICAgZGVsZXRlIG07CisgICAgICAgIG0gPSBwOworICAgIH0KKyAgICBtX21hc2tzID0gTlVMTDsK
K30KKworYm9vbCBXZWJUZXh0Rm9ybWF0TWFzazo6Y3JlYXRlTWFzayhJbnB1dEZvcm1hdE1hc2tU
eXBlIHR5cGUsIGludCYgbXVsdGkpCit7CisgICAgTWFza0Jhc2UqIG0gPSBOVUxMOworICAgIGlm
IChtdWx0aSA9PSAxKQorICAgICAgICBtID0gbmV3IE1hc2tTaW5nbGUodHlwZSk7CisgICAgZWxz
ZQorICAgICAgICBtID0gbmV3IE1hc2tDb21wb3NpdGUodHlwZSwgbXVsdGkpOworICAgIG11bHRp
ID0gMTsKKyAgICByZXR1cm4gYXBwZW5kTWFzayhtKTsKK30KKworaW50IFdlYlRleHRGb3JtYXRN
YXNrOjpwYXJzZU11bHRpdHVkZShjb25zdCBXZWJDb3JlOjpTdHJpbmcgJnAsIGludCAmcG9zLCBi
b29sJiByZXN1bHQpCit7CisgICAgLy8gc3RhcnQgZnJvbSBwLCBzZWFyY2ggYWxsIGRpZ2l0cwor
ICAgIFN0cmluZyBkc3RyOworICAgIHdoaWxlIChpc0RpZ2l0KHBbcG9zXSkpIHsKKyAgICAgICAg
ZHN0ci5hcHBlbmQocFtwb3NdKTsKKyAgICAgICAgcG9zKys7CisgICAgfSAKKyAgICAvLyB0aGVy
ZSBzaG91bGQgYmUgb25lIHZhbGlkIGNoYXJhY3RlciBhZnRlciBkaWdpdHMKKyAgICBpZiAocFtw
b3NdID09IDApIHsKKyAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICAvLyBwYXJzZSB0aGUgZGlnaXQgc3RyaW5nCisgICAgaW50IG11bHRpID0gYXRv
aShkc3RyLmxhdGluMSgpLmRhdGEoKSk7CisgICAgaWYgKG11bHRpID4gMCkKKyAgICAgICAgcmVz
dWx0ID0gdHJ1ZTsKKyAgICByZXR1cm4gbXVsdGk7ICAgICAgICAKK30KKworYm9vbCBXZWJUZXh0
Rm9ybWF0TWFzazo6Y3JlYXRlU3RhdGljTWFzayhjb25zdCBXZWJDb3JlOjpTdHJpbmcgJnAsIGlu
dCAmcG9zKQoreworICAgICBwb3MrKzsKKyAgICAgTWFza0Jhc2UqIG0gPSBuZXcgTWFza1N0YXRp
YyhwW3Bvc10pOworICAgICByZXR1cm4gYXBwZW5kTWFzayhtKTsKK30KKworYm9vbCBXZWJUZXh0
Rm9ybWF0TWFzazo6Y2hlY2tUZXh0KCBjb25zdCBTdHJpbmcmIHRleHQsIEVycm9yQmxvY2smIGVi
ICkKK3sKKyAgICAvLyAiLXdhcC1pbnB1dC1yZXF1aXJlZCIgdGFrZXMgcHJlY2VkZW5jZQorICAg
IGlmICh0ZXh0Lmxlbmd0aCgpID09IDApIAorICAgICAgICByZXR1cm4gIW1faW5wdXRSZXF1aXJl
ZDsKKyAgICBpZiAobV9hY2NlcHRBbGwpIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyB3
ZSBoYXZlIG5vIG1hc2tzIGxlZnQKKyAgICBpZiAoIW1fbWFza3MgJiYgdGV4dC5sZW5ndGgoKSA+
IDApIHsKKyAgICAgICAgZWIuc2V0KDAsIHRleHQubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgbV9jdXJyZW50TWFzayA9IG1fbWFza3M7CisgICAgZm9yIChp
bnQgaT0wOyBpIDwgdGV4dC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmICghbV9jdXJyZW50
TWFzayB8fCAhbV9jdXJyZW50TWFzay0+Y2hlY2sodGV4dFtpXSkpIHsKKyAgICAgICAgICAgIC8v
IHNlYXJjaCBhbGwgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIHRoaXMgcnVuCisgICAgICAgICAgICBp
ZiAobV9jdXJyZW50TWFzaykgeworICAgICAgICAgICAgICAgIGlmIChlYi5tX3N0YXJ0ID09IC0x
KQorICAgICAgICAgICAgICAgICAgICBlYi5zZXQoIGksIDEgKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGViLm1fZXh0ZW50Kys7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBlYi5tX2V4dGVudCArPSB0ZXh0Lmxl
bmd0aCgpIC0gaTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZWIubV9zdGFydCAhPSAtMSkgeworICAgICAg
ICAgICAgLy8gdGhlIHByZXZpb3VzIGNoZWNrIGZhaWxlZAorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisKKyAgICAgICAgbV9jdXJyZW50TWFzayA9IG1fY3VycmVudE1hc2st
Pm5leHRNYXNrKCk7CisgICAgfQorICAgIC8vIGRpZCB3ZSB1c2UgdXAgYWxsIHRoZSBtYXNrcz8K
KyAgICBpZiAobV9jdXJyZW50TWFzayAmJiBtX2N1cnJlbnRNYXNrLT5tdWx0aXR1ZGUoKSAhPSBL
SW5maW5pdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gKGViLm1fc3RhcnQg
PT0gLTEpOworfQorCitpbnQgV2ViVGV4dEZvcm1hdE1hc2s6OmdldE11bHRpdHVkZSgpCit7Cisg
ICAgaW50IGNvdW50ID0gMDsKKyAgICBNYXNrQmFzZSogbSA9IG1fbWFza3M7CisgICAgd2hpbGUg
KG0pIHsKKyAgICAgICAgaWYgKG0tPm11bHRpdHVkZSgpID09IEtJbmZpbml0ZSkKKyAgICAgICAg
ICAgIHJldHVybiBLSW5maW5pdGU7ICAgIAorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb3Vu
dCArPSBtLT5tdWx0aXR1ZGUoKTsKKyAgICAgICAgbSA9IG0tPm5leHRNYXNrKCk7ICAgICAgICAg
ICAgICAgIAorICAgIH0KKyAgICByZXR1cm4gKGNvdW50KSA/IGNvdW50IDogS0luZmluaXRlOyAg
ICAKK30KKworCitJbnB1dEZvcm1hdE1hc2tUeXBlIFdlYlRleHRGb3JtYXRNYXNrOjpuZXh0SW5w
dXRNYXNrVHlwZShGcmFtZSogZnJhbWUsIGludCBhT2Zmc2V0KQoreyAKKyAgICBpbnQgaSA9IDA7
CisgICAgTWFza0Jhc2UqIG1hc2sgPSBtX21hc2tzOworICAgIHdoaWxlIChtYXNrKSB7CisgICAg
ICAgIGlmIChtYXNrLT5pc0NvbXBvc2l0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1hc2stPmlu
cHV0Rm9ybWF0TWFza1R5cGUoKTsgICAgCisgICAgICAgIGVsc2UgaWYgKGkgPT0gYU9mZnNldCkg
eworICAgICAgICAgICAgSW5wdXRGb3JtYXRNYXNrVHlwZSBmb3JtYXRUeXBlID0gbWFzay0+aW5w
dXRGb3JtYXRNYXNrVHlwZSgpOworICAgICAgICAgICAgaWYgKGZvcm1hdFR5cGUgPT0gRVN0YXRp
YykgeworICAgICAgICAgICAgICAgIE1hc2tTdGF0aWMqIG1hc2tTdGF0aWMgPSBzdGF0aWNfY2Fz
dDxNYXNrU3RhdGljKj4obWFzayk7CisgICAgICAgICAgICAgICAgTm9kZSogZm9jdXNlZE5vZGUg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAo
bWFza1N0YXRpYykgeyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy9tYWtl
IHN1cmUgbm90IHRvIHJlLXdyaXRlIHRoZSBzdGF0aWMgdGV4dCBpZiBpdCBhbHJlYWR5IGV4aXN0
cworICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCkgJiYg
Zm9jdXNlZE5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChmb2N1c2VkTm9kZS0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8
IChmb2N1c2VkTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSkpKSB7ICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBmb2N1c2VkTm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSA/IAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50
Kj4oZm9jdXNlZE5vZGUpLT52YWx1ZSgpIDogCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihmb2N1c2VkTm9kZSkt
PnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPD0g
YU9mZnNldCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVQ2hhciBjID0gbWFza1N0YXRpYy0+Z2V0U3RhdGljKCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+aW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KFN0cmluZygmYywgMSksIGZh
bHNlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiBmb3JtYXRUeXBlOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIG1h
c2sgPSBtYXNrLT5uZXh0TWFzaygpOworICAgICAgICArK2k7ICAgICAgICAgICAgICAgIAorICAg
IH0KKyAgICByZXR1cm4gRU5vRm9ybWF0OworfQorICAKK2Jvb2wgV2ViVGV4dEZvcm1hdE1hc2s6
OmFwcGVuZE1hc2soTWFza0Jhc2UqIG0pCit7CisgICAgLy8gYnVpbGQgdGhlIG1hc2sgY2hhaW4K
KyAgICBpZiAoIW1fbWFza3MpCisgICAgICAgIG1fbWFza3MgPSBtOworICAgIGVsc2UgeworICAg
ICAgICBNYXNrQmFzZSogbWFzayA9IG1fbWFza3M7CisgICAgICAgIHdoaWxlIChtYXNrLT5tX25l
eHQpCisgICAgICAgICAgICBtYXNrID0gbWFzay0+bV9uZXh0OworICAgICAgICAvLyBjb21wb3Np
dGUgbWFzayBvbmx5IGV4aXN0cyBhdCB0aGUgZW5kIG9mIG1hc2sgY2hhaW4uCisgICAgICAgIGlm
IChtYXNrLT5pc0NvbXBvc2l0ZSgpKSB7CisgICAgICAgICAgICBkZWxldGUgbTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtYXNrLT5tX25leHQgPSBtOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTWFza0NvbXBvc2l0ZTo6TWFza0NvbXBvc2l0
ZShJbnB1dEZvcm1hdE1hc2tUeXBlIHQsIGludCBtdWwpIAorICAgICAgICAgICAgOiBNYXNrU2lu
Z2xlKHQpLCBtX29mZnNldCgwKSwgbV9sZW5ndGgobXVsKQoreworfQorCitNYXNrQmFzZSogTWFz
a0NvbXBvc2l0ZTo6bmV4dE1hc2soKQoreworICAgIG1fb2Zmc2V0Kys7CisgICAgaWYgKG1fb2Zm
c2V0IDwgbV9sZW5ndGggfHwgbV9sZW5ndGggPT0gS0luZmluaXRlKQorICAgICAgICByZXR1cm4g
dGhpczsKKyAgICBtX29mZnNldCA9IDA7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2Jvb2wgTWFz
a1NpbmdsZTo6Y2hlY2soVUNoYXIgY2gpCit7CisgICAgUUNoYXIgYyhjaCk7CisgICAgc3dpdGNo
IChtX3R5cGUpIHsKKyAgICBjYXNlIEVMZUxvU3ltUHVjOiAKKyAgICAgICAgcmV0dXJuIChpc0xv
d2VyQ2FzZShjKSB8fCBpc1N5bWJvbChjKSB8fCBpc1B1bmN0dWF0aW9uKGMpKTsKKyAgICBjYXNl
IEVMZVVwU3ltUHVjOiAKKyAgICAgICAgcmV0dXJuIChpc1VwcGVyQ2FzZShjKSB8fCBpc1N5bWJv
bChjKSB8fCBpc1B1bmN0dWF0aW9uKGMpKTsKKyAgICBjYXNlIEVOdW1TeW1QdWM6IAorICAgICAg
ICByZXR1cm4gKGlzRGlnaXQoYykgfHwgaXNTeW1ib2woYykgfHwgaXNQdW5jdHVhdGlvbihjKSk7
CisgICAgY2FzZSBFTnVtQ2hhcjogCisgICAgICAgIHJldHVybiAoaXNEaWdpdChjKSk7CisgICAg
Y2FzZSBFTGVMb051bVN5bVB1YzogCisgICAgICAgIHJldHVybiAoaXNMb3dlckNhc2UoYykgfHwg
aXNEaWdpdChjKSB8fCBpc1N5bWJvbChjKSB8fCBpc1B1bmN0dWF0aW9uKGMpKTsKKyAgICBjYXNl
IEVMZVVwTnVtU3ltUHVjOiAKKyAgICAgICAgcmV0dXJuIChpc1VwcGVyQ2FzZShjKSB8fCBpc0Rp
Z2l0KGMpIHx8IGlzU3ltYm9sKGMpIHx8IGlzUHVuY3R1YXRpb24oYykpOworICAgIGNhc2UgRUFu
eUxvdzoKKyAgICBjYXNlIEVBbnlVcHBlcjogCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorfQorCitib29sIE1hc2tTdGF0aWM6OmNoZWNrKFVDaGFyIGNoKQorewor
ICAgIHJldHVybiBtX2NoYXIgPT0gY2g7Cit9CisvLyBFTkQgT0YgRklMRQorCkluZGV4OiBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViVGV4dEZvcm1hdE1hc2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViVGV4dEZvcm1hdE1hc2suaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJUZXh0Rm9ybWF0TWFzay5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSBOb2tpYSBD
b3Jwb3JhdGlvbiwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgTm9raWEgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgV2ViVGV4dEZv
cm1hdE1hc2tfaAorI2RlZmluZSBXZWJUZXh0Rm9ybWF0TWFza19oCisKK3R5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IFVDaGFyOworCit0eXBlZGVmIGVudW0geworICAgIEVMZUxvU3ltUHVjLAor
ICAgIEVMZVVwU3ltUHVjLCAgIAorICAgIEVOdW1TeW1QdWMsICAgIAorICAgIEVOdW1DaGFyLCAg
ICAgIAorICAgIEVMZUxvTnVtU3ltUHVjLAorICAgIEVMZVVwTnVtU3ltUHVjLAorICAgIEVBbnlM
b3csCisgICAgRUFueVVwcGVyLAorICAgIEVTdGF0aWMsCisgICAgRU5vRm9ybWF0IAorfUlucHV0
Rm9ybWF0TWFza1R5cGU7ICAKKworbmFtZXNwYWNlIFdlYkNvcmUKK3sKKyAgICBjbGFzcyBGcmFt
ZTsKKyAgICBjbGFzcyBTdHJpbmc7Cit9CisKK2NsYXNzIFdlYlRleHRGb3JtYXRNYXNrOworCitj
bGFzcyBNYXNrQmFzZQoreworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBXZWJUZXh0Rm9ybWF0
TWFzazsKKworICAgIE1hc2tCYXNlKCkgOiBtX25leHQoMCkge30KKyAgICB2aXJ0dWFsIH5NYXNr
QmFzZSgpIHsgbV9uZXh0PU5VTEw7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2hlY2soVUNoYXIpID0g
MDsKKyAgICB2aXJ0dWFsIElucHV0Rm9ybWF0TWFza1R5cGUgaW5wdXRGb3JtYXRNYXNrVHlwZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIE1hc2tCYXNlKiBuZXh0TWFzaygpIHsgcmV0dXJuIG1fbmV4dDsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBvc2l0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBpbnQgbXVsdGl0dWRlKCkgY29uc3QgIHsgcmV0dXJuIDE7IH0KKworcHJvdGVjdGVk
OgorICAgIE1hc2tCYXNlKiBtX25leHQ7CisKK3ByaXZhdGU6CisgICAgTWFza0Jhc2UoY29uc3Qg
TWFza0Jhc2UmKTsgICAgICAgICAgICAgIC8vIG5vdCBpbXBsZW1lbnRlZAorICAgIE1hc2tCYXNl
JiBvcGVyYXRvcj0oY29uc3QgTWFza0Jhc2UmKTsgICAvLyBub3QgaW1wbGVtZW50ZWQKK307CisK
K2NsYXNzIE1hc2tTaW5nbGUgOiBwdWJsaWMgTWFza0Jhc2UKK3sKK3B1YmxpYzoKKyAgICBNYXNr
U2luZ2xlKElucHV0Rm9ybWF0TWFza1R5cGUgdCkgOiBtX3R5cGUodCkge30KKyAgICBib29sIGNo
ZWNrKFVDaGFyKTsKKyAgICBJbnB1dEZvcm1hdE1hc2tUeXBlIGlucHV0Rm9ybWF0TWFza1R5cGUo
KSB7IHJldHVybiBtX3R5cGU7IH07CisgICAgCitwcml2YXRlOgorICAgIElucHV0Rm9ybWF0TWFz
a1R5cGUgbV90eXBlOworfTsKKworY2xhc3MgTWFza1N0YXRpYyA6IHB1YmxpYyBNYXNrQmFzZQor
eworcHVibGljOgorICAgIE1hc2tTdGF0aWMoVUNoYXIgY2gpIDogbV9jaGFyKGNoKSB7fQorICAg
IGJvb2wgY2hlY2soVUNoYXIpOworICAgIFVDaGFyIGdldFN0YXRpYygpIHsgcmV0dXJuIG1fY2hh
cjsgfQorICAgIElucHV0Rm9ybWF0TWFza1R5cGUgaW5wdXRGb3JtYXRNYXNrVHlwZSgpIHsgcmV0
dXJuIEVTdGF0aWM7IH07CisKK3ByaXZhdGU6CisgICAgVUNoYXIgbV9jaGFyOworfTsKKworY2xh
c3MgTWFza0NvbXBvc2l0ZSA6IHB1YmxpYyBNYXNrU2luZ2xlCit7CitwdWJsaWM6CisgICAgTWFz
a0NvbXBvc2l0ZShJbnB1dEZvcm1hdE1hc2tUeXBlLCBpbnQpOworCisgICAgTWFza0Jhc2UqIG5l
eHRNYXNrKCk7ICAgIAorICAgIGJvb2wgaXNDb21wb3NpdGUoKSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgaW50IG11bHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKK3ByaXZhdGU6
CisgICAgaW50IG1fb2Zmc2V0OworICAgIGludCBtX2xlbmd0aDsKK307CisKK2NsYXNzIFdlYlRl
eHRGb3JtYXRNYXNrCit7CitwdWJsaWM6CisgICAgc3RydWN0IEVycm9yQmxvY2sKKyAgICB7Cisg
ICAgICAgIGludCBtX3N0YXJ0OworICAgICAgICBpbnQgbV9leHRlbnQ7CisgICAgICAgIEVycm9y
QmxvY2soKSA6IG1fc3RhcnQoLTEpLCBtX2V4dGVudCgtMSkge30KKyAgICAgICAgdm9pZCBzZXQo
aW50IHMsIGludCBlKSB7IG1fc3RhcnQgPSBzOyBtX2V4dGVudCA9IGU7IH0KKyAgICB9OworCisg
ICAgV2ViVGV4dEZvcm1hdE1hc2soY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgYm9vbCk7CisgICAg
fldlYlRleHRGb3JtYXRNYXNrKCk7CisKKyAgICBib29sIGNoZWNrVGV4dChjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmLCBFcnJvckJsb2NrJik7CisgICAgCitwdWJsaWM6ICAgIAorICAgIGludCBnZXRN
dWx0aXR1ZGUoKTsKKyAgICBJbnB1dEZvcm1hdE1hc2tUeXBlIG5leHRJbnB1dE1hc2tUeXBlKFdl
YkNvcmU6OkZyYW1lICpmcmFtZSwgaW50IGFPZmZzZXQpOworCitwdWJsaWM6ICAgICAgIAorICAg
IHN0YXRpYyBib29sIGNoZWNrVGVsV3RhaU51bWJlcihjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBi
b29sKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGJ1aWxkTWFza0xpc3QoY29uc3QgV2ViQ29yZTo6
U3RyaW5nJik7CisgICAgYm9vbCBhcHBlbmRNYXNrKE1hc2tCYXNlKiBtKTsKKyAgICB2b2lkIGNs
ZWFyTWFza0xpc3QoKTsKKyAgICBib29sIGNyZWF0ZU1hc2soSW5wdXRGb3JtYXRNYXNrVHlwZSwg
aW50Jik7CisgICAgYm9vbCBjcmVhdGVTdGF0aWNNYXNrKGNvbnN0IFdlYkNvcmU6OlN0cmluZyAm
c3RyLCBpbnQgJnBvcyk7CisgICAgaW50IHBhcnNlTXVsdGl0dWRlKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyAmc3RyLCBpbnQgJnBvcywgYm9vbCYpOworCitwcml2YXRlOgorICAgIE1hc2tCYXNlKiBt
X21hc2tzOworICAgIE1hc2tCYXNlKiBtX2N1cnJlbnRNYXNrOworICAgIGJvb2wgbV9hY2NlcHRB
bGw7CisgICAgYm9vbCBtX2lucHV0UmVxdWlyZWQ7Cit9OworCisjZW5kaWYKSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2aXNpb24gOTc2MSkK
KysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwotCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50UXQuaCIK
IApAQCAtNDcsNiArNDYsMTQgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2lmIEVOQUJMRShXQ1NTKQorI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorLy8gVE9ETzogdGVt
cCBzb2x1dGlvbiB0byBzaG93IGludmFsaWQgaW5wdXQgCisjaW5jbHVkZSA8UU1lc3NhZ2VCb3g+
CisjZW5kaWYKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKQEAgLTEzNiw3ICsxNDMsOSBAQAogewog
ICAgIGlmIChkdW1wRWRpdGluZ0NhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCJFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZTolc1xuIiwgZHVtcFJhbmdlKHJhbmdl
KS50b1V0ZjgoKS5jb25zdERhdGEoKSk7Ci0gICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFdD
U1MpCisgICAgcmV0dXJuIHZhbGlkYXRlRm9ybWF0VGV4dCgpOworI2VuZGlmCiB9CiAKIGJvb2wg
RWRpdG9yQ2xpZW50UXQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFJh
bmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKQEAgLTIyNCw2ICsyMzMsOSBA
QAogICAgIGlmIChkdW1wRWRpdGluZ0NhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCJFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkRW5kRWRpdGluZzpXZWJWaWV3RGlkRW5kRWRpdGluZ05vdGlm
aWNhdGlvblxuIik7CiAgICAgbV9lZGl0aW5nID0gZmFsc2U7CisjaWYgRU5BQkxFKFdDU1MpCisg
ICAgY2FuY2xlRWRpdGluZygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkKQEAgLTMyMCw2ICszMzIsOSBAQAogCiB2b2lk
IEVkaXRvckNsaWVudFF0OjpwYWdlRGVzdHJveWVkKCkKIHsKKyNpZiBFTkFCTEUoV0NTUykKKyAg
ICBjYW5jbGVFZGl0aW5nKCk7CisjZW5kaWYKICAgICBkZWxldGUgdGhpczsKIH0KIApAQCAtNDMy
LDYgKzQ0Nyw5IEBACiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgJiYgIWtldmVudC0+dGV4
dCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmlu
c2VydFRleHQoa2V2ZW50LT50ZXh0KCksIGV2ZW50KTsKKyNpZiBFTkFCTEUoV0NTUykKKyAgICAg
ICAgICAgICAgICAgICAgdXBkYXRlRWRpdGluZ01vZGUoKTsKKyNlbmRpZgogICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIFZLX0E6CkBAIC00NDcsNiArNDY1LDkgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjYXRjaCBjb21iaW5hdGlvbiBBbHRHcitrZXkgb3IgQ3RybCtBbHQr
a2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiBrZXZlbnQtPmFsdEtleSgpICYmICFrZXZl
bnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7CisjaWYg
RU5BQkxFKFdDU1MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVkaXRp
bmdNb2RlKCk7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTUwMCw3ICs1MjEsMTAgQEAKIH0KIAogRWRpdG9yQ2xpZW50UXQ6OkVk
aXRvckNsaWVudFF0KFFXZWJQYWdlKiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpLCBtX2VkaXRp
bmcoZmFsc2UpLCBtX2luVW5kb1JlZG8oZmFsc2UpCisgICAgOiBtX3BhZ2UocGFnZSksIG1fZWRp
dGluZyhmYWxzZSksIG1faW5VbmRvUmVkbyhmYWxzZSkgCisjaWYgRU5BQkxFKFdDU1MpCisgICAg
ICAsIG1fdGV4dEZvcm1hdE1hc2soTlVMTCkKKyNlbmRpZgogewogfQogCkBAIC01ODcsMTAgKzYx
MSw3NyBAQAogICAgIFFXaWRnZXQgKnZpZXcgPSBtX3BhZ2UtPnZpZXcoKTsKICAgICBpZiAodmll
dykgewogICAgICAgICB2aWV3LT5zZXRBdHRyaWJ1dGUoUXQ6OldBX0lucHV0TWV0aG9kRW5hYmxl
ZCwgYWN0aXZlKTsKKyNpZiBFTkFCTEUoV0NTUykKKyAgICAgICAgY2FuY2xlRWRpdGluZygpOwor
ICAgICAgICBpZihhY3RpdmUpCisgICAgICAgICAgICBjcmVhdGVGb3JtYXRNYXNrKCk7CisjZW5k
aWYKICAgICAgICAgZW1pdCBtX3BhZ2UtPm1pY3JvRm9jdXNDaGFuZ2VkKCk7CiAgICAgfQogfQog
CisjaWYgRU5BQkxFKFdDU1MpCitib29sIEVkaXRvckNsaWVudFF0OjpjcmVhdGVGb3JtYXRNYXNr
KCkKK3sKKyAgICBpZiAoIW1fdGV4dEZvcm1hdE1hc2spIHsKKyAgICAgICAgRnJhbWUqIGZyYW1l
ID0gIG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOworICAgICAgICBpZiAoZnJhbWUgJiYKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgp
ICYmCisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSkgeworICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWRO
b2RlKCktPnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICBpZiAoc3R5bGUgJiYgKCFzdHlsZS0+
d2FwSW5wdXRGb3JtYXQoKS5pc0VtcHR5KCkgfHwgc3R5bGUtPndhcElucHV0UmVxdWlyZWQoKSkp
IHsKKyAgICAgICAgICAgICAgICBtX3RleHRGb3JtYXRNYXNrID0gbmV3IFdlYlRleHRGb3JtYXRN
YXNrKHN0eWxlLT53YXBJbnB1dEZvcm1hdCgpLCBzdHlsZS0+d2FwSW5wdXRSZXF1aXJlZCgpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi0vLyB2
aW06IHRzPTQgc3c9NCBldAorYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuY2xlRWRpdGluZygpCit7
CisgICAgZGVsZXRlIG1fdGV4dEZvcm1hdE1hc2s7CisgICAgbV90ZXh0Rm9ybWF0TWFzayA9IE5V
TEw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OnZhbGlkYXRl
Rm9ybWF0VGV4dCgpCit7CisgICAgaWYgKCFtX3RleHRGb3JtYXRNYXNrKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgCisgICAgRnJhbWUqIGZyYW1lID0gIG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIE5vZGUqIG5vZGUgPSBmcmFt
ZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKKworICAgIGlmIChub2RlICYmIG5vZGUtPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpIHsKKyAgICAgICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSk7CisgICAgICAg
IFdlYlRleHRGb3JtYXRNYXNrOjpFcnJvckJsb2NrIGViOworCisgICAgICAgIGlmICghbV90ZXh0
Rm9ybWF0TWFzay0+Y2hlY2tUZXh0KGlucHV0LT52YWx1ZSgpLCBlYikpIHsKKyAgICAgICAgICAg
IFFXaWRnZXQgKnZpZXcgPSBtX3BhZ2UtPnZpZXcoKTsKKyAgICAgICAgICAgIFFNZXNzYWdlQm94
Ojp3YXJuaW5nKHZpZXcsICJJbnB1dCBFZGl0b3IiLCAiSW52YWxpZCBpbnB1dCBmb3JtYXQiKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIAorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IEVkaXRvckNsaWVudFF0Ojp1cGRhdGVFZGl0aW5nTW9kZSgpCit7CisgICAgaWYgKCFtX3RleHRG
b3JtYXRNYXNrKQorICAgICAgICByZXR1cm47IAorICAgIEZyYW1lKiBmcmFtZSA9ICBtX3BhZ2Ut
PmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBO
b2RlKiBub2RlID0gZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CisgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkgeworICAgICAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihu
b2RlKTsKKyAgICAgICAgVElucHV0Rm9ybWF0TWFza1R5cGUgZm0gPSBtX3RleHRGb3JtYXRNYXNr
LT5nZXRJbnB1dEZvcm1hdE1hc2tUeXBlKGZyYW1lLCBpbnB1dC0+dmFsdWUoKS5sZW5ndGgoKSk7
CisgICAgICAgIC8vIGRlcGVuZCBvbiB0eXBlIHdlIGNhbiBzZXQgdGhlIEVkaXRpbmcgbW9kZQor
ICAgIH0KK30KKyNlbmRpZgorCisKK30gLy9uYW1lc3BhY2Ugd2ViY29yZQpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lv
biA5NzYxKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYg
KzEzMSw3IEBACiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hQQVRIPS4pOiBERUZJTkVTICs9
IEVOQUJMRV9YUEFUSD0xCiAjIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YQkw9Lik6IERFRklO
RVMgKz0gRU5BQkxFX1hCTD0xCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dNTD0uKTogREVG
SU5FUyArPSBFTkFCTEVfV01MPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0NTUz0uKTog
REVGSU5FUyArPSBFTkFCTEVfV0NTUz0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0u
KTogREVGSU5FUyArPSBFTkFCTEVfU1ZHPTEKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZH
X0ZPTlRTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9TVkdfRk9OVFM9MQogIWNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9TVkdfRklMVEVSUz0uKTogREVGSU5FUyArPSBFTkFCTEVfU1ZHX0ZJTFRFUlM9
MQpAQCAtMTA2Nyw4ICsxMDY4LDkgQEAKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJs
ZUJveERhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5j
cHAgXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwIFwKKyAgICBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5
bGUvU3R5bGVNYXJxdWVlRGF0YS5jcHAgXAotICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRp
Q29sRGF0YS5jcHAgXAorICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZVdhcElucHV0LmNwcCBcCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIFwKICAgICByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgXAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAgXApAQCAtMTE5Niw2ICsxMTk4LDcgQEAKICAg
ICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcCBcCiAgICAgLi4v
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBcCiAgICAgLi4vV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwIFwKKyAgICAuLi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvV2ViVGV4dEZvcm1hdE1hc2suY3BwIFwKICAgICAuLi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgXAogICAgIC4uL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgXAogICAgIC4uL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBcCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTc2MSkKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMDktMDItMDYgIFNyZWVk
aGFyIFZhZGRpIDxzcmVlZGhhci52YWRkaUBub2tpYS5jb20+CisgICAgICAgIAorICAgICAgICBS
ZXZpZXdlZCBieQorCisgICAgICAgIGh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL3RlY2gvZG9jdW1l
bnRzL1dBUC0yMzktV0NTUy0yMDAxMTAyNi1hLnBkZgorCisgICAgICAgIFdlYmtpdCBTdXBwb3J0
IGZvciBXQ1NTIC13YXAtaW5wdXQtZm9ybWF0IGFuZCAtd2FwLWlucHV0LXJlcXVpcmVkLgorICAg
ICAgICBDaGFuZ2VzIG1hZGUgdG8gQ1NTU3R5bGVTZWxlY3RvciwgQ1NTUGFyc2VyIHRvIG1hcAor
ICAgICAgICAtd2FwLWlucHV0LWZvcm1hdCBhbmQgLXdhcC1pbnB1dC1yZXF1aXJlZC4gQWRkZWQg
U3R5bGVXYXBJbnB1dCB3aGljaAorCWlzIHVzZWQgd2hpbGUgY3JlYXRpbmcgZm9ybWF0IG1hc2sg
Zm9yIHRoZSBFZGl0b3JDbGllbnQgZm9yCisJSW5wdXRFbGVtZW50cy4gQWRkZWQgV0NTUyBmbGFn
IGFuZCBzZXQgdG8KKyAgICAgICAgZmFsc2UgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFdlYkNv
cmUucHJvIDogYWRkZWQgRU5BQkxFX1dDU1MgZmxhZyBhbmQgc2V0IHRvIDAgYnkgZGVmYXVsdAor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVdhcElucHV0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVXYXBJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVdhcElu
cHV0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlV2FwSW5wdXQ6Om9wZXJh
dG9yIT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVdhcElucHV0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVdhcElucHV0OjpTdHlsZVdhcElucHV0KToKKyAg
ICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgCisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OnNldEZvY3VzTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6d2FwSW5wdXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OndhcElucHV0UmVxdWlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFdh
cElucHV0Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRXYXBJbnB1
dFJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsV2FwSW5w
dXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxXYXBJbnB1
dFJlcXVpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTpSZW5kZXJTdHlsZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAkKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46IEluY2x1ZGluZyAtd2FwLWlucHV0LWZvcm1hdCBh
bmQKKyAgICAgICAgLXdhcC1pbnB1dC1yZXF1aXJlZCBDU1MgcHJvcGVydGllcy4KKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjogSW5jbHVkaW5nIHRydWUgYW5kIGZhbHNlLiAKKwog
MjAwOS0wMS0xOSAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5NzYxKQorKysgV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDkgQEAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgor
I2lmIEVOQUJMRShXQ1NTKQorI2luY2x1ZGUgIkVkaXRvckNsaWVudFF0LmgiCisjZW5kaWYKICNp
bmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEhh
bmRsZXIuaCIKQEAgLTI1Nyw3ICsyNjAsMTEgQEAKICAgICAgICAgCiAgICAgaWYgKG9sZEZvY3Vz
ZWROb2RlICYmIG9sZEZvY3VzZWROb2RlLT5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gb2xkRm9j
dXNlZE5vZGUgJiYgIXJlbGlucXVpc2hlc0VkaXRpbmdGb2N1cyhvbGRGb2N1c2VkTm9kZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisjaWYgRU5BQkxFKFdDU1MpICAgICAgICAK
KyAgICBpZighKHN0YXRpY19jYXN0PEVkaXRvckNsaWVudFF0Kj4obV9wYWdlLT5lZGl0b3JDbGll
bnQoKSktPnZhbGlkYXRlRm9ybWF0VGV4dCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCisKICAgICBjbGVhclNlbGVjdGlvbklmTmVlZGVkKG9sZEZvY3VzZWRGcmFtZS5nZXQoKSwg
bmV3Rm9jdXNlZEZyYW1lLmdldCgpLCBub2RlKTsKICAgICAKICAgICBpZiAoIW5vZGUpIHsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDk3NjEp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNyw2ICsxMDcsOSBAQAogICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmluaXQoKTsK
ICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+ZmxleGlibGVCb3guaW5pdCgpOwog
ICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tYXJxdWVlLmluaXQoKTsKKyNpZiBF
TkFCTEUoV0NTUykKKyAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV93YXBJbnB1
dC5pbml0KCk7CisjZW5kaWYKICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9t
dWx0aUNvbC5pbml0KCk7CiAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJh
bnNmb3JtLmluaXQoKTsKICAgICByYXJlSW5oZXJpdGVkRGF0YS5pbml0KCk7CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5o
CShyZXZpc2lvbiA5NzYxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1
ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRlICJGaWxsTGF5ZXIuaCIKICNpbmNsdWRlICJOaW5lUGll
Y2VJbWFnZS5oIgorI2lmIEVOQUJMRShXQ1NTKQorI2luY2x1ZGUgIlN0eWxlV2FwSW5wdXQuaCIK
KyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDAsNiArNDQsOSBAQAogY2xhc3Mg
Q1NTU3R5bGVTZWxlY3RvcjsKIGNsYXNzIFN0eWxlRmxleGlibGVCb3hEYXRhOwogY2xhc3MgU3R5
bGVNYXJxdWVlRGF0YTsKKyNpZiBFTkFCTEUoV0NTUykKK2NsYXNzIFN0eWxlV2FwSW5wdXQ7Cisj
ZW5kaWYKIGNsYXNzIFN0eWxlTXVsdGlDb2xEYXRhOwogY2xhc3MgU3R5bGVSZWZsZWN0aW9uOwog
Y2xhc3MgU3R5bGVUcmFuc2Zvcm1EYXRhOwpAQCAtODUsNiArOTIsOSBAQAogICAgIERhdGFSZWY8
U3R5bGVNYXJxdWVlRGF0YT4gbWFycXVlZTsgLy8gTWFycXVlZSBwcm9wZXJ0aWVzCiAgICAgRGF0
YVJlZjxTdHlsZU11bHRpQ29sRGF0YT4gbV9tdWx0aUNvbDsgLy8gIENTUzMgbXVsdGljb2wgcHJv
cGVydGllcwogICAgIERhdGFSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBtX3RyYW5zZm9ybTsgLy8g
VHJhbnNmb3JtIHByb3BlcnRpZXMgKHJvdGF0ZSwgc2NhbGUsIHNrZXcsIGV0Yy4pCisjaWYgRU5B
QkxFKFdDU1MpCisgICAgRGF0YVJlZjxTdHlsZVdhcElucHV0PiBtX3dhcElucHV0OworI2VuZGlm
CiAKICAgICBPd25QdHI8Q29udGVudERhdGE+IG1fY29udGVudDsKICAgICBPd25QdHI8Q291bnRl
ckRpcmVjdGl2ZU1hcD4gbV9jb3VudGVyRGlyZWN0aXZlczsKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlV2FwSW5wdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVdhcElucHV0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVdhcElucHV0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKyNp
Zm5kZWYgIFN0eWxlV2FwSW5wdXRfaCAKKyNkZWZpbmUgIFN0eWxlV2FwSW5wdXRfaCAKKworI2lu
Y2x1ZGUgIkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
dHlsZVdhcElucHV0IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVXYXBJbnB1dD4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlV2FwSW5wdXQ+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHlsZVdhcElucHV0KTsgfQorICAgIFBhc3NSZWZQdHI8U3R5bGVXYXBJ
bnB1dD4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVdhcElucHV0KCp0
aGlzKSk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVdhcElucHV0JiBvKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gby5mb3JtYXQgJiYgcmVxdWly
ZWQgPT0gby5yZXF1aXJlZCk7CisgICAgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHls
ZVdhcElucHV0JiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7
CisgICAgfQorICAgCisgICAgQXRvbWljU3RyaW5nIGZvcm1hdDsKKyAgICBib29sIHJlcXVpcmVk
OworcHJpdmF0ZToKKyAgICBTdHlsZVdhcElucHV0KCk7CisgICAgU3R5bGVXYXBJbnB1dChjb25z
dCBTdHlsZVdhcElucHV0Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYg
Ly8gU3R5bGVXYXBJbnB1dF9oCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgJKHJldmlzaW9uIDk3NjEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDEwIEBACiAgICAgaW50IGxpbmVDbGFt
cCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXA7IH0KICAg
ICBib29sIHRleHRTaXplQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
PnRleHRTaXplQWRqdXN0OyB9CiAgICAgRVRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFNlY3VyaXR5PihyYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFNlY3VyaXR5KTsgfQorI2lmIEVOQUJMRShXQ1NTKQorICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgd2FwSW5wdXRGb3JtYXQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV93YXBJbnB1dC0+Zm9ybWF0OyB9CisgICAgYm9vbCB3YXBJbnB1dFJlcXVpcmVkKCkgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fd2FwSW5wdXQtPnJlcXVpcmVkOyB9CisjZW5kaWYK
IAogLy8gYXR0cmlidXRlIHNldHRlciBtZXRob2RzCiAKQEAgLTk2NCw2ICs5NjgsMTAgQEAKICAg
ICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5mbG9vZE9w
YWNpdHkoKTsgfQogICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZH
U3R5bGUoKS0+c2V0Rmxvb2RPcGFjaXR5KGYpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0NTUykK
KyAgICB2b2lkIHNldFdhcElucHV0Rm9ybWF0KFN0cmluZyBmKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fd2FwSW5wdXQsIGZvcm1hdCwgZik7IH0KKyAgICB2b2lk
IHNldFdhcElucHV0UmVxdWlyZWQoYm9vbCBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fd2FwSW5wdXQsIHJlcXVpcmVkLCBiKTsgfQorI2VuZGlmCiAKICAgICBj
b25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9jb250ZW50LmdldCgpOyB9CiAgICAgYm9vbCBjb250ZW50RGF0YUVxdWl2
YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0OwpAQCAtMTExNiw2ICsx
MTI0LDEwIEBACiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWCgpIHsg
cmV0dXJuIExlbmd0aCg1MC4wLCBQZXJjZW50KTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlh
bFRyYW5zZm9ybU9yaWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAuMCwgUGVyY2VudCk7IH0KICAg
ICBzdGF0aWMgRVBvaW50ZXJFdmVudHMgaW5pdGlhbFBvaW50ZXJFdmVudHMoKSB7IHJldHVybiBQ
RV9BVVRPOyB9CisjaWYgRU5BQkxFKFdDU1MpCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW5pdGlhbFdhcElucHV0Rm9ybWF0KCkgeyByZXR1cm4gbnVsbEF0b207IH0KKyAgICBzdGF0
aWMgYm9vbCBpbml0aWFsV2FwSW5wdXRSZXF1aXJlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5k
aWYKIAogICAgIC8vIEtlZXAgdGhlc2UgYXQgdGhlIGVuZC4KICAgICBzdGF0aWMgaW50IGluaXRp
YWxMaW5lQ2xhbXAoKSB7IHJldHVybiAtMTsgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDk3
NjEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsOSBAQAogICAgICwgbV90cmFuc2l0aW9u
cyhvLm1fdHJhbnNpdGlvbnMgPyBuZXcgQW5pbWF0aW9uTGlzdCgqby5tX3RyYW5zaXRpb25zKSA6
IDApCiAgICAgLCBtX21hc2soby5tX21hc2spCiAgICAgLCBtX21hc2tCb3hJbWFnZShvLm1fbWFz
a0JveEltYWdlKQorI2lmIEVOQUJMRShXQ1NTKQorICAgICwgbV93YXBJbnB1dChvLm1fd2FwSW5w
dXQpCisjZW5kaWYKICNpZiBFTkFCTEUoWEJMKQogICAgICwgYmluZGluZ1VSSShvLmJpbmRpbmdV
UkkgPyBvLmJpbmRpbmdVUkktPmNvcHkoKSA6IDApCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlV2FwSW5wdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlV2FwSW5wdXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVXYXBJbnB1dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTkgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHlsZVdhcElucHV0LmgiIAor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0eWxlV2FwSW5wdXQ6OlN0eWxlV2FwSW5wdXQoKSA6
IAorICAgICAgICAgICAgICAgcmVxdWlyZWQoZmFsc2UpCit7CisKK30KKworU3R5bGVXYXBJbnB1
dDo6U3R5bGVXYXBJbnB1dChjb25zdCBTdHlsZVdhcElucHV0JiBvKSA6CisgICAgICAgICAgICAg
ICBSZWZDb3VudGVkPFN0eWxlV2FwSW5wdXQ+KCksCisgICAgICAgICAgICAgICBmb3JtYXQoby5m
b3JtYXQpLAorICAgICAgICAgICAgICAgcmVxdWlyZWQoby5yZXF1aXJlZCkKK3sKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCShyZXZpc2lv
biA5NzYxKQorKysgV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtNjAwLDUgKzYwMCwxMSBAQAogcGFpbnRlZAogZmlsbAogc3Ryb2tlCisjCisjIENTU19Q
Uk9QX1dBUF9JTlBVVF9SRVFVSVJFRAorIwordHJ1ZQorZmFsc2UKKwogI2FsbAogI25vbmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
cmV2aXNpb24gOTc2MSkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDI4LDYgKzUwMjgsMjEgQEAKICAgICAgICAgbV9zdHlsZS0+c2V0UG9p
bnRlckV2ZW50cygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2lm
IEVOQUJMRShXQ1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdDogeworICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh3YXBJbnB1dEZvcm1hdCwgV2FwSW5wdXRG
b3JtYXQpCisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIAorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX3N0eWxlLT5zZXRXYXBJbnB1dEZvcm1hdChwcmltaXRpdmVWYWx1ZS0+Z2V0
U3RyaW5nVmFsdWUoKSk7CisgICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdhcElucHV0UmVxdWlyZWQ6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwod2FwSW5wdXRSZXF1aXJlZCwgV2FwSW5wdXRSZXF1aXJlZCkKKyAgICAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZSkgCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc3R5bGUtPnNldFdh
cElucHV0UmVxdWlyZWQocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVUcnVl
KTsKKyAgICB9CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3RyZXRjaDoKSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAkocmV2aXNpb24gOTc2MSkKKysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1ODQsNiArMTU4NCwxNiBAQAogICAgICAgICBjb25zdCBpbnQgcHJvcGVydGll
c1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFN0cm9rZUNvbG9yIH07CiAgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9w
SWQsIHByb3BlcnRpZXMsIDIsIGltcG9ydGFudCk7CiAgICAgfQorI2lmIEVOQUJMRShXQ1NTKQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdDoKKyAgICAgICAgdmFsaWRfcHJpbWl0
aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0
UmVxdWlyZWQ6IHsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVHJ1ZSB8fCBpZCA9PSBDU1NW
YWx1ZUZhbHNlKQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bjoKICAgICAgICAgcmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW4JKHJldmlzaW9uIDk3NjEpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMyArMjM4LDUgQEAKIC13ZWJraXQtdXNlci1tb2Rp
ZnkKIC13ZWJraXQtdXNlci1zZWxlY3QKIC13ZWJraXQtdmFyaWFibGUtZGVjbGFyYXRpb24tYmxv
Y2sKKy13YXAtaW5wdXQtZm9ybWF0Cistd2FwLWlucHV0LXJlcXVpcmVkCg==
</data>
<flag name="review"
          id="13239"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27398</attachid>
            <date>2009-02-06 08:10:03 -0800</date>
            <delta_ts>2009-02-06 08:22:58 -0800</delta_ts>
            <desc>test case for wap-inputp-format</desc>
            <filename>inputformat.xhtml</filename>
            <type>application/xhtml+xml</type>
            <size>3498</size>
            <attacher name="Sreedhar Vaddi">sreedhar.vaddi</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIj8+CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vV0FQRk9SVU0v
L0RURCBYSFRNTCBNb2JpbGUgMS4wLy9FTiIKImh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL0RURC94
aHRtbC1tb2JpbGUxMC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+CjxoZWFkPgo8dGl0bGU+aW5wdXRmb3JtYXQueGh0bWw8L3RpdGxlPgoKPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KCi8qCkRlZmluZSBjbGFzc2VzIG9mIHdpbGRjYXJkIGZvcm1hdHMuCkhv
d2V2ZXIsIGNsYXNzIG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBjaGFycywgbm90IGRpZ2l0cy4KKi8K
Ci5zdGFyX3VwQSB7LXdhcC1pbnB1dC1mb3JtYXQ6ICIqQSI7fSAvKiB1cHAgbHRyLCBzeW0sIHB1
bmMsIE5PIG51bSAqLwouc3Rhcl9sb3dhIHstd2FwLWlucHV0LWZvcm1hdDogIiphIjt9IC8qIGxv
dyBsdHIsIHN5bSwgcHVuYywgTk8gbnVtICovCi5zdGFyX3VwTiB7LXdhcC1pbnB1dC1mb3JtYXQ6
ICIqTiI7fSAvKiBudW0gKi8KLnN0YXJfbG93biB7LXdhcC1pbnB1dC1mb3JtYXQ6ICIqbiI7fSAv
KiBudW0sIHN5bSwgcHVuYyAqLwouc3Rhcl91cFggey13YXAtaW5wdXQtZm9ybWF0OiAiKlgiO30g
LyogdXAgbHRyLCBudW0sIHN5bSwgcHVuYyAqLwouc3Rhcl9sb3d4IHstd2FwLWlucHV0LWZvcm1h
dDogIip4Ijt9IC8qIGxvdyBsdHIsIG51bSwgc3ltLCBwdW5jICovCi5zdGFyX3VwTSB7LXdhcC1p
bnB1dC1mb3JtYXQ6ICIqTSI7fSAvKiBhbnksIHVwIGRlZmF1bHQgKi8KLnN0YXJfbG93bSB7LXdh
cC1pbnB1dC1mb3JtYXQ6ICIqbSI7fSAvKiBhbnksIGxvdyBkZWZhdWx0ICovCgovKiBDb25zdHJh
aW5lZCwgZXh0cmEgYmFja3NsYXNoIHRvIGVzY2FwZSBsaXRlcmFsIGJhY2tzbGFzaCAqLwoub25l
IHstd2FwLWlucHV0LWZvcm1hdDogIjNOIjt9Ci50d28gey13YXAtaW5wdXQtZm9ybWF0OiAiM2Ei
O30KLnRocmVlIHstd2FwLWlucHV0LWZvcm1hdDogIk5OTlxcLU5OTk4iO30KLmZvdXIgey13YXAt
aW5wdXQtZm9ybWF0OiAiTk5cXC8yTiI7fQouZml2ZSB7LXdhcC1pbnB1dC1mb3JtYXQ6ICJBXFwt
Tk5cXC0qTiI7fQouc2l4IHstd2FwLWlucHV0LWZvcm1hdDogIkFhYVxcIEFhYSI7fQouc2V2ZW4g
ey13YXAtaW5wdXQtZm9ybWF0OiAiTk5BQU5OMmEiO30KCjwvc3R5bGU+Cgo8L2hlYWQ+Cgo8Ym9k
eT4KCjxmb3JtIG1ldGhvZD0iZ2V0IiBhY3Rpb249ImZvcm1zdWJnZXQuYXNwIj4KCiAgPHA+CiAg
QmFzaWMgZm9ybWF0czo8YnIgLz4KICA8YnIgLz4KICAqQTogdXAgbHRyLCBzeW0sIHB1bmM8YnIg
Lz4KICA8aW5wdXQgY2xhc3M9InN0YXJfdXBBIiB0eXBlPSJ0ZXh0IiBuYW1lPSJzdGFyX3VwYSIv
PjxiciAvPgogIDxiciAvPgogICphOiBsb3cgbHRyLCBzeW0sIHB1bmM8YnIgLz4KCiAgPGlucHV0
IGNsYXNzPSJzdGFyX2xvd2EiIHR5cGU9InRleHQiIG5hbWU9InN0YXJfbG93YSIvPjxiciAvPgog
IDxiciAvPgogICpOOiBudW08YnIgLz4KICA8aW5wdXQgY2xhc3M9InN0YXJfdXBOIiB0eXBlPSJ0
ZXh0IiBuYW1lPSJzdGFyX3VwbiIvPjxiciAvPgogIDxiciAvPgogICpuOiBudW0sIHN5bSwgcHVu
YzxiciAvPgogIDxpbnB1dCBjbGFzcz0ic3Rhcl9sb3duIiB0eXBlPSJ0ZXh0IiBuYW1lPSJzdGFy
X2xvd24iLz48YnIgLz4KICA8YnIgLz4KCiAgKlg6IHVwIGx0ciwgbnVtLCBzeW0sIHB1bmM8YnIg
Lz4KICA8aW5wdXQgY2xhc3M9InN0YXJfdXBYIiB0eXBlPSJ0ZXh0IiBuYW1lPSJzdGFyX3VweCIv
PjxiciAvPgogIDxiciAvPgogICp4OiBsb3cgbHRyLCBudW0sIHN5bSwgcHVuYzxiciAvPgogIDxp
bnB1dCBjbGFzcz0ic3Rhcl9sb3d4IiB0eXBlPSJ0ZXh0IiBuYW1lPSJzdGFyX2xvd3giLz48YnIg
Lz4KICA8YnIgLz4KICAqTTogYW55dGhpbmcsIHVwIGx0ciBkZWZhdWx0PGJyIC8+CgogIDxpbnB1
dCBjbGFzcz0ic3Rhcl91cE0iIHR5cGU9InRleHQiIG5hbWU9InN0YXJfdXBtIi8+PGJyIC8+CiAg
PGJyIC8+CiAgKm06IGFueXRoaW5nLCBsb3cgbHRyIGRlZmF1bHQ8YnIgLz4KICA8aW5wdXQgY2xh
c3M9InN0YXJfbG93bSIgdHlwZT0idGV4dCIgbmFtZT0ic3Rhcl9sb3dtIi8+PGJyIC8+CiAgPGJy
IC8+CiAgQ29uc3RyYWluZWQgZm9ybWF0czo8YnIgLz4KICA8YnIgLz4KICAzTjogMyBudW08YnIg
Lz4KCiAgPHRleHRhcmVhIGNsYXNzPSJvbmUiIHJvd3M9IjEiIGNvbHM9IjEwIiBuYW1lPSJ0ZXh0
MSI+PC90ZXh0YXJlYT48YnIgLz4KICA8YnIgLz4KICAzYTogMyBsb3cgbHRyPGJyIC8+CiAgPHRl
eHRhcmVhIGNsYXNzPSJ0d28iIHJvd3M9IjEiIGNvbHM9IjEwIiBuYW1lPSJ0ZXh0MiI+PC90ZXh0
YXJlYT48YnIgLz4KICA8YnIgLz4KICBOTk4tTk5OTjogMTIzLTQ1Njc8YnIgLz4KICA8dGV4dGFy
ZWEgY2xhc3M9InRocmVlIiByb3dzPSIxIiBjb2xzPSIxMCIgbmFtZT0idGV4dDMiPjwvdGV4dGFy
ZWE+PGJyIC8+CiAgPGJyIC8+CgogIE5OLzJOOiAxMi8yNTxiciAvPgogIDx0ZXh0YXJlYSBjbGFz
cz0iZm91ciIgcm93cz0iMSIgY29scz0iMTAiIG5hbWU9InRleHQ0Ij48L3RleHRhcmVhPjxiciAv
PgogIDxiciAvPgogIEEtTk4tKk46IFItMTItODkuLi48YnIgLz4KICA8dGV4dGFyZWEgY2xhc3M9
ImZpdmUiIHJvd3M9IjEiIGNvbHM9IjEwIiBuYW1lPSJ0ZXh0NSI+PC90ZXh0YXJlYT48YnIgLz4K
ICA8YnIgLz4KICBBYWEgQWFhOiBNYWQgUGFkPGJyIC8+CgogIDx0ZXh0YXJlYSBjbGFzcz0ic2l4
IiByb3dzPSIxIiBjb2xzPSIxMCIgbmFtZT0idGV4dDYiPjwvdGV4dGFyZWE+PGJyIC8+CiAgPGJy
IC8+CiAgTk5BQU5OMmE6IDIzQUQyM2FkPGJyIC8+CiAgPHRleHRhcmVhIGNsYXNzPSJzZXZlbiIg
cm93cz0iMSIgY29scz0iMTAiIG5hbWU9InRleHQ3Ij48L3RleHRhcmVhPjxiciAvPgogIDxiciAv
PgogIENvbXBldGluZyBmb3JtYXRzOjxiciAvPgogIDxiciAvPgogIDNOOiAzIG51bTxiciAvPgoK
ICA8aW5wdXQgY2xhc3M9Im9uZSIgZm9ybWF0PSIzQSIgbmFtZT0iY29tcGV0ZSIvPjxiciAvPgoK
PC9mb3JtPgoKPHA+CjxiciAvPgpFbnRlciBOYW1lIDoKPGlucHV0IHR5cGU9InRleHQiIHN0eWxl
PSItd2FwLWlucHV0LWZvcm1hdDogJyphJyIgLz4gKGVudGVyIG9ubHkgYWxwaGFiaXRzKQo8YnIg
Lz4KPGJyPgpFbnRlciBEYXRlT2ZCaXJ0aCA6IAo8aW5wdXQgdHlwZT0idGV4dCIgc3R5bGU9Ii13
YXAtaW5wdXQtZm9ybWF0OiAnTk5cXC1OTlxcLU5OTk4nIiAvPiAoZW50ZXIgaW4gREQtTU0tWVlZ
WSBmb3JtYXQpCjxiciAvPgo8YnIgLz4KRW50ZXIgUGhvbmVubyA6IAo8aW5wdXQgdHlwZT0idGV4
dCIgc3R5bGU9Ii13YXAtaW5wdXQtZm9ybWF0OiAnOU4nIiAvPiAoZW50ZXIgb25seSA5IERpZ2l0
ZXMgb25seSkKPGJyIC8+CjxiciAvPgpDb21tZW50IHBsZWFzZTogCjx0ZXh0YXJlYSBzdHlsZT0i
LXdhcC1pbnB1dC1mb3JtYXQ6ICcqeCciIHJvd3M9IjMiIGNvbHM9IjIwIj48L3RleHRhcmVhPgo8
L3A+CjwvYm9keT4KPC9odG1sPgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28750</attachid>
            <date>2009-03-19 03:01:48 -0700</date>
            <delta_ts>2009-06-03 05:05:55 -0700</delta_ts>
            <desc>WCSS InputFormat Patch</desc>
            <filename>WapInputFormatWebKitOrgFinal.patch</filename>
            <type>text/plain</type>
            <size>34686</size>
            <attacher name="Sreedhar Vaddi">sreedhar.vaddi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCShyZXZpc2lv
biA0MTgwNykKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDkgQEAKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5w
dXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwogCiAgICAgYm9vbCBpc0VkaXRpbmcoKSBjb25z
dDsKKyNpZiBFTkFCTEUoV0NTUykKKyAgICB2b2lkIGhhbmRsZUludmFsaWRJbnB1dCgpOworI2Vu
ZGlmCiAKIHByaXZhdGU6CiAgICAgUVdlYlBhZ2UqIG1fcGFnZTsKSW5kZXg6IFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2aXNpb24gNDE4MDcpCisrKyBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0NywxMSBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaWYgRU5BQkxFKFdDU1MpCisjaW5jbHVk
ZSA8UU1lc3NhZ2VCb3g+CisjZW5kaWYKIAorCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1
ZGUgPFFVbmRvU3RhY2s+CkBAIC01OTAsNyArNTk0LDE1IEBACiAgICAgICAgIGVtaXQgbV9wYWdl
LT5taWNyb0ZvY3VzQ2hhbmdlZCgpOwogICAgIH0KIH0KKyNpZiBFTkFCTEUoV0NTUykKK3ZvaWQg
RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUludmFsaWRJbnB1dCgpCit7CisgICAgUVdpZGdldCAqdmll
dyA9IG1fcGFnZS0+dmlldygpOworICAgIFFNZXNzYWdlQm94Ojp3YXJuaW5nKHZpZXcsICJCcm93
c2VyIEVycm9yIDogIiwgIkludmFsaWQgSW5wdXQgRm9ybWF0Iik7Cit9CisjZW5kaWYKIAorCiB9
CiAKIC8vIHZpbTogdHM9NCBzdz00IGV0CkluZGV4OiBXZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDQxODA3KQorKysgV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsMTUgQEAKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAorI2lmIEVOQUJMRShXQ1NTKQorI2luY2x1ZGUgIkF0
b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUZXh0Rm9ybWF0TWFzay5oIgorI2VuZGlm
CisKICNpZiBFTkFCTEUoV01MKQogI2luY2x1ZGUgIldNTElucHV0RWxlbWVudC5oIgogI2luY2x1
ZGUgIldNTE5hbWVzLmgiCkBAIC02MSw2ICs2OSw5IEBACiAKICAgICBpZiAoZGF0YS5pbnB1dEVs
ZW1lbnQoKS0+aXNQYXNzd29yZEZpZWxkKCkgJiYgZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAg
IGRvY3VtZW50LT5zZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSh0cnVlKTsKKyNp
ZiBFTkFCTEUoV0NTUykKKyAgICBkYXRhLmNyZWF0ZUlucHV0Rm9ybWF0TWFzayhkb2N1bWVudCk7
CisjZW5kaWYKIH0KIAogdm9pZCBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KElucHV0
RWxlbWVudERhdGEmIGRhdGEsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTcxLDcgKzgyLDEzIEBA
CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuOwotCisjaWYgRU5BQkxFKFdDU1MpCisgICAgaWYgKCF2YWxpZGF0ZUZv
cm1hdFRleHQoZGF0YSwgZG9jdW1lbnQpKQorICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCkpIHsKKyAgICAgICAgICAgIHBhZ2UtPmVkaXRvckNsaWVudCgpLT5oYW5kbGVJbnZh
bGlkSW5wdXQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCiAgICAg
dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGRhdGEsIGRvY3VtZW50KTsKIAogICAgIGlmIChk
YXRhLmlucHV0RWxlbWVudCgpLT5pc1Bhc3N3b3JkRmllbGQoKSkKQEAgLTI2Niw4ICsyODMsMzMg
QEAKIAogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5mb3JtU3RhdGVEaWRDaGFuZ2UoZGF0YS5lbGVtZW50KCkpOwor
I2lmIEVOQUJMRShXQ1NTKQorICAgIGlmIChkYXRhLndlYlRleHRGb3JtYXRNYXNrKCkpCisgICAg
ICAgIHVwZGF0ZUVkaXRpbmdNb2RlKGRhdGEsIGRvY3VtZW50KTsKKyNlbmRpZgogfQogCisjaWYg
RU5BQkxFKFdDU1MpCitib29sIElucHV0RWxlbWVudDo6dmFsaWRhdGVGb3JtYXRUZXh0KElucHV0
RWxlbWVudERhdGEmIGRhdGEsIERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAoIWRhdGEu
d2ViVGV4dEZvcm1hdE1hc2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGRhdGEu
aW5wdXRFbGVtZW50KCktPmlzVGV4dEZpZWxkKCkgfHwgZGF0YS5pbnB1dEVsZW1lbnQoKS0+aXNQ
YXNzd29yZEZpZWxkKCkpCisgICAgICAgIGlmICghZGF0YS53ZWJUZXh0Rm9ybWF0TWFzaygpLT52
YWxpZGF0ZShkYXRhLnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIElucHV0RWxlbWVudDo6dXBkYXRlRWRpdGluZ01vZGUoSW5w
dXRFbGVtZW50RGF0YSYgZGF0YSwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICghZGF0
YS53ZWJUZXh0Rm9ybWF0TWFzaygpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGRhdGEuaW5w
dXRFbGVtZW50KCktPmlzVGV4dEZpZWxkKCkgfHwgZGF0YS5pbnB1dEVsZW1lbnQoKS0+aXNQYXNz
d29yZEZpZWxkKCkpCisgICAgICAgIGRhdGEud2ViVGV4dEZvcm1hdE1hc2soKS0+bmV4dElucHV0
TWFza1R5cGUoZG9jdW1lbnQtPmZyYW1lKCksIGRhdGEudmFsdWUoKS5sZW5ndGgoKSk7Cit9Cisj
ZW5kaWYKKworCiAvLyBJbnB1dEVsZW1lbnREYXRhCiBJbnB1dEVsZW1lbnREYXRhOjpJbnB1dEVs
ZW1lbnREYXRhKElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBFbGVtZW50KiBlbGVtZW50KQog
ICAgIDogbV9pbnB1dEVsZW1lbnQoaW5wdXRFbGVtZW50KQpAQCAtMjc3LDYgKzMxOSw5IEBACiAg
ICAgLCBtX21heExlbmd0aChJbnB1dEVsZW1lbnQ6OnNfbWF4aW11bUxlbmd0aCkKICAgICAsIG1f
Y2FjaGVkU2VsZWN0aW9uU3RhcnQoLTEpCiAgICAgLCBtX2NhY2hlZFNlbGVjdGlvbkVuZCgtMSkK
KyNpZiBFTkFCTEUoV0NTUykKKyAgICAsIG1fdGV4dEZvcm1hdE1hc2soMCkKKyNlbmRpZgogewog
ICAgIEFTU0VSVChtX2lucHV0RWxlbWVudCk7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CkBAIC0y
ODQsNiArMzI5LDkgQEAKIAogSW5wdXRFbGVtZW50RGF0YTo6fklucHV0RWxlbWVudERhdGEoKQog
eworI2lmIEVOQUJMRShXQ1NTKQorICAgICBkZWxldGUgbV90ZXh0Rm9ybWF0TWFzazsKKyNlbmRp
ZgogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElucHV0RWxlbWVudERhdGE6Om5hbWUoKSBjb25z
dApAQCAtMzA0LDQgKzM1MiwyNCBAQAogICAgIHJldHVybiAwOwogfQogCisjaWYgRU5BQkxFKFdD
U1MpCitib29sIElucHV0RWxlbWVudERhdGE6OmNyZWF0ZUlucHV0Rm9ybWF0TWFzayhEb2N1bWVu
dCogZG9jdW1lbnQpCit7CisgICAgaWYgKCFpbnB1dEVsZW1lbnQoKS0+aXNUZXh0RmllbGQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX3RleHRGb3JtYXRNYXNrKSB7Cisg
ICAgICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBlbGVtZW50KCktPnJlbmRlcmVyKCktPnN0
eWxlKCk7CisgICAgICAgICAgICBpZiAoc3R5bGUgJiYgKCFzdHlsZS0+d2FwSW5wdXRGb3JtYXQo
KS5pc0VtcHR5KCkgfHwgc3R5bGUtPndhcElucHV0UmVxdWlyZWQoKSkpIHsKKyAgICAgICAgICAg
ICAgICBtX3RleHRGb3JtYXRNYXNrID0gbmV3IFdlYlRleHRGb3JtYXRNYXNrKHN0eWxlLT53YXBJ
bnB1dEZvcm1hdCgpLCBzdHlsZS0+d2FwSW5wdXRSZXF1aXJlZCgpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbV90ZXh0Rm9y
bWF0TWFzaykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOwogfQorI2VuZGlmCisKKworfQpJbmRleDogV2ViQ29yZS9kb20vV2ViVGV4dEZvcm1h
dE1hc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJUZXh0Rm9ybWF0TWFzay5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vV2ViVGV4dEZvcm1hdE1hc2suaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgTm9raWEgQ29y
cG9yYXRpb24sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaWZuZGVmIFdlYlRleHRGb3Jt
YXRNYXNrX2gKKyNkZWZpbmUgV2ViVGV4dEZvcm1hdE1hc2tfaAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgU3RyaW5nOworY2xhc3MgV2ViVGV4dEZvcm1hdE1h
c2s7CisKK3R5cGVkZWYgZW51bSB7CisgICAgTGVMb1N5bVB1Y1R5cGUsCisgICAgTGVVcFN5bVB1
Y1R5cGUsICAgCisgICAgTnVtU3ltUHVjVHlwZSwgICAgCisgICAgTnVtQ2hhclR5cGUsICAgICAg
CisgICAgTGVMb051bVN5bVB1Y1R5cGUsCisgICAgTGVVcE51bVN5bVB1Y1R5cGUsCisgICAgQW55
TG93VHlwZSwKKyAgICBBbnlVcHBlclR5cGUsCisgICAgU3RhdGljVHlwZSwKKyAgICBOb0Zvcm1h
dCAKK30gSW5wdXRGb3JtYXRNYXNrVHlwZTsgIAorCitjbGFzcyBNYXNrQmFzZSB7CitwdWJsaWM6
CisgICAgTWFza0Jhc2UoKSA6IG1fbmV4dCgwKSB7fQorICAgIHZpcnR1YWwgfk1hc2tCYXNlKCkg
eyBtX25leHQgPSBOVUxMOyB9CisgICAgdmlydHVhbCBib29sIGNoZWNrKFVDaGFyKSA9IDA7Cisg
ICAgdmlydHVhbCBJbnB1dEZvcm1hdE1hc2tUeXBlIGlucHV0Rm9ybWF0TWFza1R5cGUoKSA9IDA7
CisgICAgdmlydHVhbCBNYXNrQmFzZSogbmV4dE1hc2soKSB7IHJldHVybiBtX25leHQ7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNDb21wb3NpdGUoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgaW50IG11bHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KKworcHJvdGVjdGVkOgorICAg
IE1hc2tCYXNlKiBtX25leHQ7CisKK3ByaXZhdGU6CisgICAgTWFza0Jhc2UoY29uc3QgTWFza0Jh
c2UmKTsgICAgICAgICAgICAgIC8vIG5vdCBpbXBsZW1lbnRlZAorICAgIE1hc2tCYXNlJiBvcGVy
YXRvcj0oY29uc3QgTWFza0Jhc2UmKTsgICAvLyBub3QgaW1wbGVtZW50ZWQKKyAgICBmcmllbmQg
Y2xhc3MgV2ViVGV4dEZvcm1hdE1hc2s7Cit9OworCitjbGFzcyBNYXNrU2luZ2xlIDogcHVibGlj
IE1hc2tCYXNlIHsKK3B1YmxpYzoKKyAgICBNYXNrU2luZ2xlKElucHV0Rm9ybWF0TWFza1R5cGUg
dCkgOiBtX3R5cGUodCkgeyB9CisgICAgYm9vbCBjaGVjayhVQ2hhcik7CisgICAgSW5wdXRGb3Jt
YXRNYXNrVHlwZSBpbnB1dEZvcm1hdE1hc2tUeXBlKCkgeyByZXR1cm4gbV90eXBlOyB9OworCitw
cml2YXRlOgorICAgIElucHV0Rm9ybWF0TWFza1R5cGUgbV90eXBlOworfTsKKworY2xhc3MgTWFz
a1N0YXRpYyA6IHB1YmxpYyBNYXNrQmFzZSB7CitwdWJsaWM6CisgICAgTWFza1N0YXRpYyhVQ2hh
ciBjaCkgOiBtX2NoYXIoY2gpIHsgfQorICAgIGJvb2wgY2hlY2soVUNoYXIpOworICAgIFVDaGFy
IGdldFN0YXRpYygpIHsgcmV0dXJuIG1fY2hhcjsgfQorICAgIElucHV0Rm9ybWF0TWFza1R5cGUg
aW5wdXRGb3JtYXRNYXNrVHlwZSgpIHsgcmV0dXJuIFN0YXRpY1R5cGU7IH07CisKK3ByaXZhdGU6
CisgICAgVUNoYXIgbV9jaGFyOworfTsKKworY2xhc3MgTWFza0NvbXBvc2l0ZSA6IHB1YmxpYyBN
YXNrU2luZ2xlIHsKK3B1YmxpYzoKKyAgICBNYXNrQ29tcG9zaXRlKElucHV0Rm9ybWF0TWFza1R5
cGUsIGludCk7CisgICAgTWFza0Jhc2UqIG5leHRNYXNrKCk7ICAgIAorICAgIGJvb2wgaXNDb21w
b3NpdGUoKSB7IHJldHVybiB0cnVlOyB9CisgICAgaW50IG11bHRpdHVkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fb2Zmc2V0OworICAgIGludCBt
X2xlbmd0aDsKK307CisKK2NsYXNzIFdlYlRleHRGb3JtYXRNYXNrIHsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgRXJyb3JCbG9jaworICAgIHsKKyAgICAgICAgaW50IG1fc3RhcnQ7CisgICAgICAgIGlu
dCBtX2V4dGVudDsKKyAgICAgICAgRXJyb3JCbG9jaygpIDogbV9zdGFydCgtMSksIG1fZXh0ZW50
KC0xKSB7fQorICAgICAgICB2b2lkIHNldChpbnQgcywgaW50IGUpIHsgbV9zdGFydCA9IHM7IG1f
ZXh0ZW50ID0gZTsgfQorICAgIH07CisKKyAgICBXZWJUZXh0Rm9ybWF0TWFzayhjb25zdCBXZWJD
b3JlOjpTdHJpbmcmLCBib29sKTsKKyAgICB+V2ViVGV4dEZvcm1hdE1hc2soKTsKKyAgICBib29s
IHZhbGlkYXRlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIGJvb2wgdmFsaWRhdGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nJiwgRXJyb3JCbG9jayYpOworICAgIGludCBnZXRNdWx0aXR1ZGUo
KTsKKyAgICBJbnB1dEZvcm1hdE1hc2tUeXBlIG5leHRJbnB1dE1hc2tUeXBlKFdlYkNvcmU6OkZy
YW1lICpmcmFtZSwgaW50IGFPZmZzZXQpOworCitwcml2YXRlOgorICAgIHZvaWQgYnVpbGRNYXNr
TGlzdChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICBib29sIGFwcGVuZE1hc2soTWFza0Jh
c2UqIG0pOworICAgIHZvaWQgY2xlYXJNYXNrTGlzdCgpOworICAgIGJvb2wgY3JlYXRlTWFzayhJ
bnB1dEZvcm1hdE1hc2tUeXBlLCBpbnQmKTsKKyAgICBib29sIGNyZWF0ZVN0YXRpY01hc2soY29u
c3QgV2ViQ29yZTo6U3RyaW5nICZzdHIsIGludCAmcG9zKTsKKyAgICBpbnQgcGFyc2VNdWx0aXR1
ZGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nICZzdHIsIGludCAmcG9zLCBib29sJik7CisKK3ByaXZh
dGU6CisgICAgTWFza0Jhc2UqIG1fbWFza3M7CisgICAgTWFza0Jhc2UqIG1fY3VycmVudE1hc2s7
CisgICAgYm9vbCBtX2FjY2VwdEFsbDsKKyAgICBib29sIG1faW5wdXRSZXF1aXJlZDsKK307CisK
K30KKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vV2ViVGV4dEZvcm1hdE1hc2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYlRleHRGb3JtYXRNYXNrLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvZG9tL1dlYlRleHRGb3JtYXRNYXNrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24s
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKiAKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgImJpZGkuaCIKKyNpbmNsdWRlICJXZWJUZXh0Rm9ybWF0TWFzay5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIlNl
bGVjdGlvbkNvbnRyb2xsZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29u
c3QgaW50IEtJbmZpbml0ZSA9IC0xOworCitpbmxpbmUgYm9vbCBpc1N5bWJvbChVQ2hhciBjaCkg
eyByZXR1cm4gKCFXVEY6OmlzQVNDSUlBbHBoYShjaCkgJiYgIVdURjo6aXNBU0NJSURpZ2l0KGNo
KSAmJiBXVEY6OmlzQVNDSUlQcmludGFibGUoY2gpKTsgfQoraW5saW5lIGJvb2wgaXNMb3dlckNh
c2UoVUNoYXIgY2gpIHsgcmV0dXJuIChXVEY6OmlzQVNDSUlMb3dlcihjaCkgJiYgV1RGOjppc0FT
Q0lJUHJpbnRhYmxlKGNoKSk7IH0KK2lubGluZSBib29sIGlzVXBwZXJDYXNlKFVDaGFyIGNoKSB7
IHJldHVybiAoV1RGOjppc0FTQ0lJVXBwZXIoY2gpICYmIFdURjo6aXNBU0NJSVByaW50YWJsZShj
aCkpOyB9CitpbmxpbmUgYm9vbCBpc0RpZ2l0KFVDaGFyIGNoKSB7IHJldHVybiAoV1RGOjppc0FT
Q0lJRGlnaXQoY2gpICYmIFdURjo6aXNBU0NJSVByaW50YWJsZShjaCkpOyB9CisKK1dlYlRleHRG
b3JtYXRNYXNrOjpXZWJUZXh0Rm9ybWF0TWFzayhjb25zdCBTdHJpbmcmIHN0ciwgYm9vbCByZXF1
aXJlZCkgCisgICAgOiBtX21hc2tzKDApCisgICAgLCBtX2N1cnJlbnRNYXNrKDApCisgICAgLCBt
X2FjY2VwdEFsbChmYWxzZSkKKyAgICAsIG1faW5wdXRSZXF1aXJlZChyZXF1aXJlZCkKK3sKKyAg
ICBidWlsZE1hc2tMaXN0KHN0cik7Cit9CisKK1dlYlRleHRGb3JtYXRNYXNrOjp+V2ViVGV4dEZv
cm1hdE1hc2soKQoreworICAgIGNsZWFyTWFza0xpc3QoKTsKK30KKwordm9pZCBXZWJUZXh0Rm9y
bWF0TWFzazo6YnVpbGRNYXNrTGlzdChjb25zdCBTdHJpbmcmIHN0cikKK3sKKyAgICAvLyAqTSBv
ciAqbQorICAgIGlmIChzdHIuaXNFbXB0eSgpIHx8IChzdHIgPT0gIipNIikgfHwgKHN0ciA9PSAi
Km0iKSkgeworICAgICAgICBtX2FjY2VwdEFsbCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgLy8gcGFyc2UgdGhlIHN0cmluZworICAgIGNoYXIgY2g7CisgICAgaW50IG11bCA9
IDE7CisgICAgYm9vbCByZXN1bHQgPSB0cnVlOworICAgIGludCBpID0gMDsKKyAgICBpbnQgbGVu
ID0gc3RyLmxlbmd0aCgpOworICAgIHdoaWxlIChpIDwgbGVuKSB7CisgICAgICAgIHN3aXRjaCAo
c3RyW2ldKSB7CisgICAgICAgIGNhc2UgJ2EnOiAKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0
ZU1hc2soTGVMb1N5bVB1Y1R5cGUsIG11bCk7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgJ0EnOiAKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZU1hc2soTGVVcFN5bVB1Y1R5
cGUsIG11bCk7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ24nOiAKKyAgICAg
ICAgICAgIHJlc3VsdCA9IGNyZWF0ZU1hc2soTnVtU3ltUHVjVHlwZSwgbXVsKTsgCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnTic6IAorICAgICAgICAgICAgcmVzdWx0ID0gY3Jl
YXRlTWFzayhOdW1DaGFyVHlwZSwgbXVsKTsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAneCc6IAorICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlTWFzayhMZUxvTnVtU3ltUHVj
VHlwZSwgbXVsKTsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnWCc6IAorICAg
ICAgICAgICAgcmVzdWx0ID0gY3JlYXRlTWFzayhMZVVwTnVtU3ltUHVjVHlwZSwgbXVsKTsgCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnbSc6IAorICAgICAgICAgICAgcmVzdWx0
ID0gY3JlYXRlTWFzayhBbnlMb3dUeXBlLCBtdWwpOyAKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICdNJzogCisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVNYXNrKEFueVVwcGVy
VHlwZSwgbXVsKTsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnKic6IAorICAg
ICAgICAgICAgbXVsID0gS0luZmluaXRlOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICdcXCc6CisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVTdGF0aWNNYXNrKHN0ciwgaSk7
IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgICAg
ICAvLyAnbmYnCisgICAgICAgICAgICAgICAgaWYgKGlzRGlnaXQoc3RyW2ldKSkgeworICAgICAg
ICAgICAgICAgICAgICBtdWwgPSBwYXJzZU11bHRpdHVkZShzdHIsIGksIHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZSAKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaSsrOworICAgICAg
ICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgLy8gc29tZXRoaW5nIHdyb25nIHdpdGggdGhl
IGZvcm1hdCBzdHJpbmcsIGZhbGxiYWNrIHRvCisgICAgICAgICAgICAvLyBhY2NlcHQgYWxsIGNo
YXJhY3RlcnMuCisgICAgICAgICAgICBjbGVhck1hc2tMaXN0KCk7CisgICAgICAgICAgICBtX2Fj
Y2VwdEFsbCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cisg
ICAgbV9jdXJyZW50TWFzayA9IG1fbWFza3M7Cit9CisKK3ZvaWQgV2ViVGV4dEZvcm1hdE1hc2s6
OmNsZWFyTWFza0xpc3QoKQoreworICAgIE1hc2tCYXNlKiBtID0gbV9tYXNrczsKKyAgICBNYXNr
QmFzZSogcCA9IG07CisgICAgd2hpbGUocCkgeworICAgICAgICBwID0gbS0+bV9uZXh0OworICAg
ICAgICBkZWxldGUgbTsKKyAgICAgICAgbSA9IHA7CisgICAgfQorICAgIG1fbWFza3MgPSBOVUxM
OworfQorCitib29sIFdlYlRleHRGb3JtYXRNYXNrOjpjcmVhdGVNYXNrKElucHV0Rm9ybWF0TWFz
a1R5cGUgdHlwZSwgaW50JiBtdWx0aSkKK3sKKyAgICBNYXNrQmFzZSogbSA9IE5VTEw7CisgICAg
aWYgKG11bHRpID09IDEpCisgICAgICAgIG0gPSBuZXcgTWFza1NpbmdsZSh0eXBlKTsKKyAgICBl
bHNlCisgICAgICAgIG0gPSBuZXcgTWFza0NvbXBvc2l0ZSh0eXBlLCBtdWx0aSk7CisgICAgbXVs
dGkgPSAxOworICAgIHJldHVybiBhcHBlbmRNYXNrKG0pOworfQorCitpbnQgV2ViVGV4dEZvcm1h
dE1hc2s6OnBhcnNlTXVsdGl0dWRlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyAmcCwgaW50ICZwb3Ms
IGJvb2wmIHJlc3VsdCkKK3sKKyAgICAvLyBzdGFydCBmcm9tIHAsIHNlYXJjaCBhbGwgZGlnaXRz
CisgICAgU3RyaW5nIGRzdHI7CisgICAgd2hpbGUgKGlzRGlnaXQocFtwb3NdKSkgeworICAgICAg
ICBkc3RyLmFwcGVuZChwW3Bvc10pOworICAgICAgICBwb3MrKzsKKyAgICB9IAorICAgIC8vIHRo
ZXJlIHNob3VsZCBiZSBvbmUgdmFsaWQgY2hhcmFjdGVyIGFmdGVyIGRpZ2l0cworICAgIGlmIChw
W3Bvc10gPT0gMCkgeworICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIC8vIHBhcnNlIHRoZSBkaWdpdCBzdHJpbmcKKyAgICBpbnQgbXVsdGkgPSBh
dG9pKGRzdHIubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBpZiAobXVsdGkgPiAwKQorICAgICAgICBy
ZXN1bHQgPSB0cnVlOworICAgIHJldHVybiBtdWx0aTsgICAgICAgIAorfQorCitib29sIFdlYlRl
eHRGb3JtYXRNYXNrOjpjcmVhdGVTdGF0aWNNYXNrKGNvbnN0IFdlYkNvcmU6OlN0cmluZyAmcCwg
aW50ICZwb3MpCit7CisgICAgcG9zKys7CisgICAgTWFza0Jhc2UqIG0gPSBuZXcgTWFza1N0YXRp
YyhwW3Bvc10pOworICAgIHJldHVybiBhcHBlbmRNYXNrKG0pOworfQorCitib29sIFdlYlRleHRG
b3JtYXRNYXNrOjp2YWxpZGF0ZShjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgRXJyb3JCbG9j
ayBlYjsKKyAgICByZXR1cm4gKHZhbGlkYXRlKHRleHQsIGViKSk7Cit9CisKK2Jvb2wgV2ViVGV4
dEZvcm1hdE1hc2s6OnZhbGlkYXRlKGNvbnN0IFN0cmluZyYgdGV4dCwgRXJyb3JCbG9jayYgZWIp
Cit7CisgICAgLy8gIi13YXAtaW5wdXQtcmVxdWlyZWQiIHRha2VzIHByZWNlZGVuY2UKKyAgICBp
ZiAodGV4dC5sZW5ndGgoKSA9PSAwKSAKKyAgICAgICAgcmV0dXJuICFtX2lucHV0UmVxdWlyZWQ7
CisgICAgaWYgKG1fYWNjZXB0QWxsKSAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gd2Ug
aGF2ZSBubyBtYXNrcyBsZWZ0CisgICAgaWYgKCFtX21hc2tzICYmICh0ZXh0Lmxlbmd0aCgpID4g
MCkpIHsKKyAgICAgICAgZWIuc2V0KDAsIHRleHQubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIG1fY3VycmVudE1hc2sgPSBtX21hc2tzOworICAgIGZvciAoaW50
IGk9MDsgaSA8IHRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAoIW1fY3VycmVudE1h
c2sgfHwgIW1fY3VycmVudE1hc2stPmNoZWNrKHRleHRbaV0pKSAKKyAgICAgICAgICAgIC8vIHNl
YXJjaCBhbGwgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIHRoaXMgcnVuCisgICAgICAgICAgICBpZiAo
bV9jdXJyZW50TWFzaykgCisgICAgICAgICAgICAgICAgaWYgKGViLm1fc3RhcnQgPT0gLTEpCisg
ICAgICAgICAgICAgICAgICAgIGViLnNldChpLCAxKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIGViLm1fZXh0ZW50Kys7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBlYi5tX2V4dGVudCArPSB0ZXh0Lmxlbmd0aCgpIC0gaTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVi
Lm1fc3RhcnQgIT0gLTEpIC8vIHRoZSBwcmV2aW91cyBjaGVjayBmYWlsZWQKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgCisgICAgICAgIG1fY3VycmVudE1hc2sgPSBtX2N1cnJlbnRNYXNrLT5u
ZXh0TWFzaygpOworICAgIH0KKyAgICAvLyBkaWQgd2UgdXNlIHVwIGFsbCB0aGUgbWFza3M/Cisg
ICAgaWYgKG1fY3VycmVudE1hc2sgJiYgKG1fY3VycmVudE1hc2stPm11bHRpdHVkZSgpICE9IEtJ
bmZpbml0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gKGViLm1fc3RhcnQg
PT0gS0luZmluaXRlKTsKK30KKworaW50IFdlYlRleHRGb3JtYXRNYXNrOjpnZXRNdWx0aXR1ZGUo
KQoreworICAgIGludCBjb3VudCA9IDA7CisgICAgTWFza0Jhc2UqIG0gPSBtX21hc2tzOworICAg
IHdoaWxlIChtKSB7CisgICAgICAgIGlmIChtLT5tdWx0aXR1ZGUoKSA9PSBLSW5maW5pdGUpCisg
ICAgICAgICAgICByZXR1cm4gS0luZmluaXRlOyAgICAKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY291bnQgKz0gbS0+bXVsdGl0dWRlKCk7CisgICAgICAgIG0gPSBtLT5uZXh0TWFzaygpOyAg
ICAgICAgICAgICAgICAKKyAgICB9CisgICAgcmV0dXJuIChjb3VudCkgPyBjb3VudCA6IEtJbmZp
bml0ZTsgICAgCit9CisKK0lucHV0Rm9ybWF0TWFza1R5cGUgV2ViVGV4dEZvcm1hdE1hc2s6Om5l
eHRJbnB1dE1hc2tUeXBlKEZyYW1lKiBmcmFtZSwgaW50IG9mZnNldCkKK3sgCisgICAgaW50IGkg
PSAwOworICAgIE1hc2tCYXNlKiBtYXNrID0gbV9tYXNrczsKKyAgICB3aGlsZSAobWFzaykgewor
ICAgICAgICBpZiAobWFzay0+aXNDb21wb3NpdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBtYXNr
LT5pbnB1dEZvcm1hdE1hc2tUeXBlKCk7ICAgIAorICAgICAgICBlbHNlIGlmIChpID09IG9mZnNl
dCkgeworICAgICAgICAgICAgSW5wdXRGb3JtYXRNYXNrVHlwZSBmb3JtYXRUeXBlID0gbWFzay0+
aW5wdXRGb3JtYXRNYXNrVHlwZSgpOworICAgICAgICAgICAgaWYgKGZvcm1hdFR5cGUgPT0gU3Rh
dGljVHlwZSkgeworICAgICAgICAgICAgICAgIE1hc2tTdGF0aWMqIG1hc2tTdGF0aWMgPSBzdGF0
aWNfY2FzdDxNYXNrU3RhdGljKj4obWFzayk7CisgICAgICAgICAgICAgICAgTm9kZSogZm9jdXNl
ZE5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKKyAgICAgICAgICAgICAg
ICBpZiAobWFza1N0YXRpYykgeyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
Ly9tYWtlIHN1cmUgbm90IHRvIHJlLXdyaXRlIHRoZSBzdGF0aWMgdGV4dCBpZiBpdCBhbHJlYWR5
IGV4aXN0cworICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50
KCkgJiYgZm9jdXNlZE5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChmb2N1c2VkTm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHx8IChmb2N1c2VkTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSkp
KSB7ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBmb2N1
c2VkTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSA/IAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFF
bGVtZW50Kj4oZm9jdXNlZE5vZGUpLT52YWx1ZSgpIDogCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihmb2N1c2Vk
Tm9kZSktPnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3Ro
KCkgPD0gb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIgYyA9IG1h
c2tTdGF0aWMtPmdldFN0YXRpYygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHRXaXRob3V0
U2VuZGluZ1RleHRFdmVudChTdHJpbmcoJmMsIDEpLCBmYWxzZSwgMCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9ICAg
ICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0VHlwZTsg
ICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBtYXNrID0gbWFzay0+bmV4dE1hc2soKTsK
KyAgICAgICAgKytpOyAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgcmV0dXJuIE5vRm9ybWF0
OworfQorICAKK2Jvb2wgV2ViVGV4dEZvcm1hdE1hc2s6OmFwcGVuZE1hc2soTWFza0Jhc2UqIG0p
Cit7CisgICAgLy8gYnVpbGQgdGhlIG1hc2sgY2hhaW4KKyAgICBpZiAoIW1fbWFza3MpCisgICAg
ICAgIG1fbWFza3MgPSBtOworICAgIGVsc2UgeworICAgICAgICBNYXNrQmFzZSogbWFzayA9IG1f
bWFza3M7CisgICAgICAgIHdoaWxlIChtYXNrLT5tX25leHQpCisgICAgICAgICAgICBtYXNrID0g
bWFzay0+bV9uZXh0OworICAgICAgICAvLyBjb21wb3NpdGUgbWFzayBvbmx5IGV4aXN0cyBhdCB0
aGUgZW5kIG9mIG1hc2sgY2hhaW4uCisgICAgICAgIGlmIChtYXNrLT5pc0NvbXBvc2l0ZSgpKSB7
CisgICAgICAgICAgICBkZWxldGUgbTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICBtYXNrLT5tX25leHQgPSBtOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworTWFza0NvbXBvc2l0ZTo6TWFza0NvbXBvc2l0ZShJbnB1dEZvcm1hdE1hc2tUeXBlIHQs
IGludCBtdWwpIAorICAgIDogTWFza1NpbmdsZSh0KQorICAgICwgbV9vZmZzZXQoMCkKKyAgICAs
IG1fbGVuZ3RoKG11bCkKK3sKK30KKworTWFza0Jhc2UqIE1hc2tDb21wb3NpdGU6Om5leHRNYXNr
KCkKK3sKKyAgICBtX29mZnNldCsrOworICAgIGlmICgobV9vZmZzZXQgPCBtX2xlbmd0aCkgfHwg
KG1fbGVuZ3RoID09IEtJbmZpbml0ZSkpCisgICAgICAgIHJldHVybiB0aGlzOworICAgIG1fb2Zm
c2V0ID0gMDsKKyAgICByZXR1cm4gTlVMTDsKK30KKworYm9vbCBNYXNrU2luZ2xlOjpjaGVjayhV
Q2hhciBjKQoreworICAgIC8vUUNoYXIgYyhjaCk7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAg
ICBjYXNlIExlTG9TeW1QdWNUeXBlOiAKKyAgICAgICAgcmV0dXJuIChpc0xvd2VyQ2FzZShjKSB8
fCBpc1N5bWJvbChjKSk7CisKKyAgICBjYXNlIExlVXBTeW1QdWNUeXBlOiAKKyAgICAgICAgcmV0
dXJuIChpc1VwcGVyQ2FzZShjKSB8fCBpc1N5bWJvbChjKSk7CisKKyAgICBjYXNlIE51bVN5bVB1
Y1R5cGU6IAorICAgICAgICByZXR1cm4gKGlzRGlnaXQoYykgfHwgaXNTeW1ib2woYykpOworCisg
ICAgY2FzZSBOdW1DaGFyVHlwZTogCisgICAgICAgIHJldHVybiAoaXNEaWdpdChjKSk7CisKKyAg
ICBjYXNlIExlTG9OdW1TeW1QdWNUeXBlOiAKKyAgICAgICAgcmV0dXJuIChpc0xvd2VyQ2FzZShj
KSB8fCBpc0RpZ2l0KGMpIHx8IGlzU3ltYm9sKGMpKTsKKworICAgIGNhc2UgTGVVcE51bVN5bVB1
Y1R5cGU6IAorICAgICAgICByZXR1cm4gKGlzVXBwZXJDYXNlKGMpIHx8IGlzRGlnaXQoYykgfHwg
aXNTeW1ib2woYykpOworCisgICAgY2FzZSBBbnlMb3dUeXBlOgorICAgIGNhc2UgQW55VXBwZXJU
eXBlOiAKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIH0KK30KKwor
Ym9vbCBNYXNrU3RhdGljOjpjaGVjayhVQ2hhciBjaCkKK3sKKyAgICByZXR1cm4gbV9jaGFyID09
IGNoOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9JbnB1
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAkocmV2
aXNpb24gNDE4MDcpCisrKyBXZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsOSBAQAogY2xhc3MgRXZlbnQ7CiBjbGFzcyBJbnB1dEVsZW1lbnREYXRh
OwogY2xhc3MgTWFwcGVkQXR0cmlidXRlOworI2lmIEVOQUJMRShXQ1NTKQorY2xhc3MgV2ViVGV4
dEZvcm1hdE1hc2s7CisjZW5kaWYKIAogY2xhc3MgSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKQEAg
LTc3LDYgKzgwLDEwIEBACiAgICAgc3RhdGljIHZvaWQgcGFyc2VNYXhMZW5ndGhBdHRyaWJ1dGUo
SW5wdXRFbGVtZW50RGF0YSYsIE1hcHBlZEF0dHJpYnV0ZSopOwogICAgIHN0YXRpYyB2b2lkIHVw
ZGF0ZVZhbHVlSWZOZWVkZWQoSW5wdXRFbGVtZW50RGF0YSYpOwogICAgIHN0YXRpYyB2b2lkIG5v
dGlmeUZvcm1TdGF0ZUNoYW5nZWQoSW5wdXRFbGVtZW50RGF0YSYsIERvY3VtZW50Kik7CisjaWYg
RU5BQkxFKFdDU1MpCisgICAgc3RhdGljIGJvb2wgdmFsaWRhdGVGb3JtYXRUZXh0KElucHV0RWxl
bWVudERhdGEmLCBEb2N1bWVudCopOworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVkaXRpbmdNb2Rl
KElucHV0RWxlbWVudERhdGEmLCBEb2N1bWVudCopOworI2VuZGlmCiB9OwogCiAvLyBIVE1ML1dN
TElucHV0RWxlbWVudCBob2xkIHRoaXMgc3RydWN0IGFzIG1lbWJlciB2YXJpYWJsZQpAQCAtMTA5
LDYgKzExNiwxMCBAQAogCiAgICAgaW50IGNhY2hlZFNlbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkU2VsZWN0aW9uRW5kOyB9CiAgICAgdm9pZCBzZXRDYWNoZWRTZWxlY3Rpb25F
bmQoaW50IHZhbHVlKSB7IG1fY2FjaGVkU2VsZWN0aW9uRW5kID0gdmFsdWU7IH0KKyNpZiBFTkFC
TEUoV0NTUykKKyAgICBXZWJUZXh0Rm9ybWF0TWFzayogd2ViVGV4dEZvcm1hdE1hc2soKSB7IHJl
dHVybiBtX3RleHRGb3JtYXRNYXNrOyB9CisgICAgYm9vbCBjcmVhdGVJbnB1dEZvcm1hdE1hc2so
RG9jdW1lbnQqKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIElucHV0RWxlbWVudCogbV9pbnB1
dEVsZW1lbnQ7CkBAIC0xMjAsNiArMTMxLDkgQEAKICAgICBpbnQgbV9tYXhMZW5ndGg7CiAgICAg
aW50IG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQ7CiAgICAgaW50IG1fY2FjaGVkU2VsZWN0aW9uRW5k
OworI2lmIEVOQUJMRShXQ1NTKQorICAgIFdlYlRleHRGb3JtYXRNYXNrKiBtX3RleHRGb3JtYXRN
YXNrOworI2VuZGlmCiB9OwogCiBJbnB1dEVsZW1lbnQqIHRvSW5wdXRFbGVtZW50KEVsZW1lbnQq
KTsKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnBybwkocmV2aXNpb24gNDE4MDcpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDEsMTMgKzEwMSwxNCBAQAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9Y
UEFUSD0uKTogREVGSU5FUyArPSBFTkFCTEVfWFBBVEg9MQogIyFjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YQkw9MQogIWNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0gRU5BQkxFX1dNTD0wCi0hY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1NWRz0uKTogREVGSU5FUyArPSBFTkFCTEVfU1ZHPTEKLSFjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfU1ZHX0ZPTlRTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9TVkdfRk9OVFM9MQot
IWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkdfRklMVEVSUz0uKTogREVGSU5FUyArPSBFTkFC
TEVfU1ZHX0ZJTFRFUlM9MQotIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkdfRk9SRUlHTl9P
QkpFQ1Q9Lik6IERFRklORVMgKz0gRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVD0xCi0hY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1NWR19BTklNQVRJT049Lik6IERFRklORVMgKz0gRU5BQkxFX1NW
R19BTklNQVRJT049MQotIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkdfQVNfSU1BR0U9Lik6
IERFRklORVMgKz0gRU5BQkxFX1NWR19BU19JTUFHRT0xCi0hY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX1NWR19VU0U9Lik6IERFRklORVMgKz0gRU5BQkxFX1NWR19VU0U9MQorIWNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9TVkc9Lik6IERFRklORVMgKz0gRU5BQkxFX1NWRz0wCishY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1NWR19GT05UUz0uKTogREVGSU5FUyArPSBFTkFCTEVfU1ZHX0ZPTlRT
PTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHX0ZJTFRFUlM9Lik6IERFRklORVMgKz0g
RU5BQkxFX1NWR19GSUxURVJTPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHX0ZPUkVJ
R05fT0JKRUNUPS4pOiBERUZJTkVTICs9IEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q9MAorIWNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkdfQU5JTUFUSU9OPS4pOiBERUZJTkVTICs9IEVOQUJM
RV9TVkdfQU5JTUFUSU9OPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHX0FTX0lNQUdF
PS4pOiBERUZJTkVTICs9IEVOQUJMRV9TVkdfQVNfSU1BR0U9MAorIWNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9TVkdfVVNFPS4pOiBERUZJTkVTICs9IEVOQUJMRV9TVkdfVVNFPTAKKyFjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfV0NTUz0uKTogREVGSU5FUyArPSBFTkFCTEVfV0NTUz0xCiAKICMg
SFRNTDUgbWVkaWEgc3VwcG9ydAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0uKSB7
CkBAIC02NDgsNiArNjQ5LDcgQEAKICAgICBkb20vV2hlZWxFdmVudC5jcHAgXAogICAgIGRvbS9Y
TUxUb2tlbml6ZXIuY3BwIFwKICAgICBkb20vWE1MVG9rZW5pemVyUXQuY3BwIFwKKyAgICBkb20v
V2ViVGV4dEZvcm1hdE1hc2suY3BwIFwKICAgICBlZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNw
cCBcCiAgICAgZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgXAogICAgIGVkaXRpbmcvQnJl
YWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAgXApAQCAtMTA2MSw2ICsxMDYzLDcgQEAKICAgICByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUv
U3R5bGVUcmFuc2Zvcm1EYXRhLmNwcCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFs
RGF0YS5jcHAgXAorICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZVdhcElucHV0LmNwcCBcCiAgICAg
eG1sL0RPTVBhcnNlci5jcHAgXAogICAgIHhtbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwIFwK
ICAgICB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwIFwKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MTgwNykKKysrIFdlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODQgQEAKKzIwMDktMDMtMTIg
IFNyZWVkaGFyIFZhZGRpIDxzcmVlZGhhci52YWRkaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkKKworICAgICAgICBodHRwOi8vd3d3LndhcGZvcnVtLm9yZy90ZWNoL2RvY3VtZW50
cy9XQVAtMjM5LVdDU1MtMjAwMTEwMjYtYS5wZGYKKworICAgICAgICBXZWJraXQgU3VwcG9ydCBm
b3IgV0NTUyAtd2FwLWlucHV0LWZvcm1hdCBhbmQgLXdhcC1pbnB1dC1yZXF1aXJlZC4KKyAgICAg
ICAgQ2hhbmdlcyBtYWRlIHRvIENTU1N0eWxlU2VsZWN0b3IsIENTU1BhcnNlciB0byBtYXAKKyAg
ICAgICAgLXdhcC1pbnB1dC1mb3JtYXQgYW5kIC13YXAtaW5wdXQtcmVxdWlyZWQuIEFkZGVkIFN0
eWxlV2FwSW5wdXQKKyAgICAgICAgd2hpY2ggaXMgdXNlZCB3aGlsZSBjcmVhdGluZyBmb3JtYXQg
bWFzayBmb3IgdGhlIEVkaXRvckNsaWVudCBmb3IKKyAgICAgICAgSW5wdXRFbGVtZW50cy4gQWRk
ZWQgV0NTUyBmbGFnIGFuZCBzZXQgdG8KKyAgICAgICAgZmFsc2UgYnkgZGVmYXVsdC4KKyAgICAg
ICAgCisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlclZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTUHJvcGVydHlOYW1lcy5pbjogSW5jbHVkaW5nIC13YXAtaW5wdXQtZm9ybWF0IGFuZAor
ICAgICAgICAtd2FwLWlucHV0LXJlcXVpcmVkIENTUyBwcm9wZXJ0aWVzLgorICAgICAgICAqIGNz
cy9DU1NWYWx1ZUtleXdvcmRzLmluOiBJbmNsdWRpbmcgdHJ1ZSBhbmQgZmFsc2UuCisgICAgICAg
ICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVX
YXBJbnB1dC5oCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVdhcElucHV0KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlV2FwSW5wdXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVXYXBJbnB1dDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
V2FwSW5wdXQuY3BwCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVdhcElucHV0OjpTdHlsZVdhcElu
cHV0KToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKyAgICAgICAgKFdlYkNv
cmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNOb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjp3YXBJbnB1dEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6d2FwSW5wdXRSZXF1aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0V2FwSW5wdXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNl
dFdhcElucHV0UmVxdWlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRp
YWxXYXBJbnB1dEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlh
bFdhcElucHV0UmVxdWlyZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOlJlbmRlclN0eWxlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhKToKKyAgICAgICAgKiBkb20vSW5wdXRFbGVtZW50LmgKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0RWxlbWVudERhdGE6OndlYlRleHRGb3JtYXRNYXNrKToKKyAgICAgICAgKiBkb20vSW5w
dXRFbGVtZW50LmNwcAorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpjcmVhdGVJbnB1
dEZvcm1hdE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpjYW5jZWxGb3Jt
YXRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6dmFsaWRhdGVGb3JtYXRU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6dXBkYXRlRWRpdGluZ01vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6Om5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAqIGRvbS9XZWJUZXh0Rm9ybWF0TWFzay5oICAgICAgICAoV2ViQ29yZTo6TWFza0Jhc2U6
Ok1hc2tCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tCYXNlOjp+TWFza0Jhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFza0Jhc2U6Om5leHRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
c2tCYXNlOjppc0NvbXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXNrQmFzZTo6bXVsdGl0
dWRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tTaW5nbGU6Ok1hc2tTaW5nbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFza1NpbmdsZTo6aW5wdXRGb3JtYXRNYXNrVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNYXNrU3RhdGljOk1hc2tTdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6TWFza1N0
YXRpYzo6Z2V0U3RhdGljKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tDb21wb3NpdGU6Ok1hc2tD
b21wb3NpdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFza0NvbXBvc2l0ZTo6aXNDb21wb3NpdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWFza0NvbXBvc2l0ZTo6bXVsdGl0dWRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlRleHRGb3JtYXRNYXNrOjpFcnJvckJsb2NrOjpFcnJvckJsb2NrKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlRleHRGb3JtYXRNYXNrOjpFcnJvckJsb2NrOjpzZXQpOgorICAg
ICAgICAqIGRvbS9XZWJUZXh0Rm9ybWF0TWFzay5jcHAKKyAgICAgICAgKFdlYkNvcmU6OldlYlRl
eHRGb3JtYXRNYXNrOjpXZWJUZXh0Rm9ybWF0TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJU
ZXh0Rm9ybWF0TWFzazo6fldlYlRleHRGb3JtYXRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlRleHRGb3JtYXRNYXNrOjp2YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJUZXh0Rm9y
bWF0TWFzazo6Z2V0TXVsdGl0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlRleHRGb3JtYXRN
YXNrOjpuZXh0SW5wdXRNYXNrVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJUZXh0Rm9ybWF0
TWFzazo6YnVpbGRNYXNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJUZXh0Rm9ybWF0TWFz
azo6YXBwZW5kTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJUZXh0Rm9ybWF0TWFzazo6Y2xl
YXJNYXNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJUZXh0Rm9ybWF0TWFzazo6Y3JlYXRl
TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJUZXh0Rm9ybWF0TWFzazo6Y3JlYXRlU3RhdGlj
TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJUZXh0Rm9ybWF0TWFzazo6cGFyc2VNdWx0aXR1
ZGUpOgorCisKKwogMjAwOS0wMy0xOCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oCShyZXZpc2lvbiA0MTgwNykKKysrIFdlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0Niw5IEBACiAgICAgdmlydHVhbCBib29sIHNwZWxsaW5n
VUlJc1Nob3dpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNv
bnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKSA9IDA7CisjaWYgRU5BQkxFKFdD
U1MpCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUludmFsaWRJbnB1dCgpID0gMDsKKyNlbmRpZgog
fTsKIAogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2
aXNpb24gNDE4MDcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsOSBAQAogI2lmIEVOQUJMRShTVkcpCiAgICAg
bV9zdmdTdHlsZS5pbml0KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0NTUykKKyAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV93YXBJbnB1dC5pbml0KCk7CisjZW5kaWYgCiB9CiAK
IFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgbykKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmgJKHJldmlzaW9uIDQxODA3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw5IEBACiAjaW5j
bHVkZSAiRmlsbExheWVyLmgiCiAjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2UuaCIKICNpbmNsdWRl
ICJTdHlsZVRyYW5zZm9ybURhdGEuaCIKKyNpZiBFTkFCTEUoV0NTUykKKyNpbmNsdWRlICJTdHls
ZVdhcElucHV0LmgiCisjZW5kaWYgCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQsNiArNTcs
OSBAQAogI2lmIEVOQUJMRShYQkwpCiBjbGFzcyBCaW5kaW5nVVJJOwogI2VuZGlmCisjaWYgRU5B
QkxFKFdDU1MpCitjbGFzcyBTdHlsZVdhcElucHV0OworI2VuZGlmIAogCiAvLyBUaGlzIHN0cnVj
dCBpcyBmb3IgcmFyZWx5IHVzZWQgbm9uLWluaGVyaXRlZCBDU1MzLCBDU1MyLCBhbmQgV2ViS2l0
LXNwZWNpZmljIHByb3BlcnRpZXMuCiAvLyBCeSBncm91cGluZyB0aGVtIHRvZ2V0aGVyLCB3ZSBz
YXZlIHNwYWNlLCBhbmQgb25seSBhbGxvY2F0ZSB0aGlzIG9iamVjdCB3aGVuIHNvbWVvbmUKQEAg
LTg3LDYgKzkzLDkgQEAKICAgICBEYXRhUmVmPFN0eWxlTWFycXVlZURhdGE+IG1hcnF1ZWU7IC8v
IE1hcnF1ZWUgcHJvcGVydGllcwogICAgIERhdGFSZWY8U3R5bGVNdWx0aUNvbERhdGE+IG1fbXVs
dGlDb2w7IC8vICBDU1MzIG11bHRpY29sIHByb3BlcnRpZXMKICAgICBEYXRhUmVmPFN0eWxlVHJh
bnNmb3JtRGF0YT4gbV90cmFuc2Zvcm07IC8vIFRyYW5zZm9ybSBwcm9wZXJ0aWVzIChyb3RhdGUs
IHNjYWxlLCBza2V3LCBldGMuKQorI2lmIEVOQUJMRShXQ1NTKQorICAgIERhdGFSZWY8U3R5bGVX
YXBJbnB1dD4gbV93YXBJbnB1dDsKKyNlbmRpZiAKIAogICAgIE93blB0cjxDb250ZW50RGF0YT4g
bV9jb250ZW50OwogICAgIE93blB0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBtX2NvdW50ZXJEaXJl
Y3RpdmVzOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVXYXBJbnB1dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlV2FwSW5wdXQuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlV2FwSW5wdXQuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorI2lmbmRlZiAgU3R5bGVXYXBJbnB1dF9oIAorI2Rl
ZmluZSAgU3R5bGVXYXBJbnB1dF9oIAorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0eWxlV2FwSW5wdXQgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdHlsZVdhcElucHV0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5
bGVXYXBJbnB1dD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlV2FwSW5wdXQp
OyB9CisgICAgUGFzc1JlZlB0cjxTdHlsZVdhcElucHV0PiBjb3B5KCkgY29uc3QgeyByZXR1cm4g
YWRvcHRSZWYobmV3IFN0eWxlV2FwSW5wdXQoKnRoaXMpKTsgfQorCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlV2FwSW5wdXQmIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
KGZvcm1hdCA9PSBvLmZvcm1hdCAmJiByZXF1aXJlZCA9PSBvLnJlcXVpcmVkKTsKKyAgICB9Cisg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlV2FwSW5wdXQmIG8pIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICB9CisgICAKKyAgICBBdG9taWNTdHJp
bmcgZm9ybWF0OworICAgIGJvb2wgcmVxdWlyZWQ7Citwcml2YXRlOgorICAgIFN0eWxlV2FwSW5w
dXQoKTsKKyAgICBTdHlsZVdhcElucHV0KGNvbnN0IFN0eWxlV2FwSW5wdXQmKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZiAvLyBTdHlsZVdhcElucHV0X2gKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gNDE4MDcpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02ODAs
NiArNjgwLDEwIEBACiAgICAgaW50IGxpbmVDbGFtcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5saW5lQ2xhbXA7IH0KICAgICBib29sIHRleHRTaXplQWRqdXN0KCkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAgRVRl
eHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4
dFNlY3VyaXR5PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQorI2lmIEVOQUJM
RShXQ1NTKQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgd2FwSW5wdXRGb3JtYXQoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV93YXBJbnB1dC0+Zm9ybWF0OyB9CisgICAg
Ym9vbCB3YXBJbnB1dFJlcXVpcmVkKCkgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
d2FwSW5wdXQtPnJlcXVpcmVkOyB9CisjZW5kaWYgCiAKIC8vIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0
aG9kcwogCkBAIC0xMDYzLDYgKzEwNjcsMTAgQEAKICAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRl
KCkgeyBtX2xhc3RDaGlsZFN0YXRlID0gdHJ1ZTsgfQogICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX2NoaWxkSW5kZXg7IH0KICAgICB2b2lkIHNldENoaWxkSW5kZXgo
dW5zaWduZWQgaW5kZXgpIHsgbV9jaGlsZEluZGV4ID0gaW5kZXg7IH0KKyNpZiBFTkFCTEUoV0NT
UykKKyAgICB2b2lkIHNldFdhcElucHV0Rm9ybWF0KFN0cmluZyBmKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fd2FwSW5wdXQsIGZvcm1hdCwgZik7IH0KKyAgICB2
b2lkIHNldFdhcElucHV0UmVxdWlyZWQoYm9vbCBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fd2FwSW5wdXQsIHJlcXVpcmVkLCBiKTsgfQorI2VuZGlmIAogCiAg
ICAgLy8gSW5pdGlhbCB2YWx1ZXMgZm9yIGFsbCB0aGUgcHJvcGVydGllcwogICAgIHN0YXRpYyBi
b29sIGluaXRpYWxCb3JkZXJDb2xsYXBzZSgpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMTYxLDYg
KzExNjksMTAgQEAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
PiYgaW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKTsKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0
eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZURhc2hib2FyZFJlZ2lvbnMoKTsKICNlbmRpZgorI2lm
IEVOQUJMRShXQ1NTKQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxXYXBJ
bnB1dEZvcm1hdCgpIHsgcmV0dXJuIG51bGxBdG9tOyB9CisgICAgc3RhdGljIGJvb2wgaW5pdGlh
bFdhcElucHV0UmVxdWlyZWQoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmIAogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDQxODA3KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDkgQEAKICNpZiBFTkFCTEUoWEJMKQogICAgICwgYmlu
ZGluZ1VSSShvLmJpbmRpbmdVUkkgPyBvLmJpbmRpbmdVUkktPmNvcHkoKSA6IDApCiAjZW5kaWYK
KyNpZiBFTkFCTEUoV0NTUykKKyAgICAsIG1fd2FwSW5wdXQoby5tX3dhcElucHV0KQorI2VuZGlm
CiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlV2FwSW5wdXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlV2FwSW5wdXQuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVXYXBJbnB1dC5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTdHlsZVdhcElucHV0LmgiIAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0eWxl
V2FwSW5wdXQ6OlN0eWxlV2FwSW5wdXQoKQorICAgICA6IHJlcXVpcmVkKGZhbHNlKQoreworCit9
CisKK1N0eWxlV2FwSW5wdXQ6OlN0eWxlV2FwSW5wdXQoY29uc3QgU3R5bGVXYXBJbnB1dCYgbykK
KyAgICA6IFJlZkNvdW50ZWQ8U3R5bGVXYXBJbnB1dD4oKQorICAgICwgZm9ybWF0KG8uZm9ybWF0
KQorICAgICwgcmVxdWlyZWQoby5yZXF1aXJlZCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCShyZXZpc2lvbiA0MTgwNykKKysrIFdl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYwNiw1ICs2
MDYsMTAgQEAKIHBhaW50ZWQKIGZpbGwKIHN0cm9rZQorIworIyBDU1NfUFJPUF9XQVBfSU5QVVRf
UkVRVUlSRUQKKyMKK3RydWUKK2ZhbHNlCiAjYWxsCiAjbm9uZQpJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAJKHJldmlzaW9uIDQxODA3KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNTUsNiArNTE1NSwyMSBAQAogICAgICAgICBt
X3N0eWxlLT5zZXRQb2ludGVyRXZlbnRzKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0
Rm9ybWF0OiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHdhcElucHV0Rm9y
bWF0LCBXYXBJbnB1dEZvcm1hdCkKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdHlsZS0+c2V0V2FwSW5wdXRGb3JtYXQocHJpbWl0
aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQ6IHsKKyAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwod2FwSW5wdXRSZXF1aXJlZCwgV2FwSW5wdXRSZXF1aXJlZCkKKyAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9z
dHlsZS0+c2V0V2FwSW5wdXRSZXF1aXJlZChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZVRydWUpOworICAgIH0KKyNlbmRpZiAKICAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxp
ZDoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3RyZXRjaDoKSW5k
ZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAkocmV2aXNpb24gNDE4MDcpCisrKyBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE1LDYgKzE2MTUsMTYgQEAKICAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OwogICAgICAgICByZXR1cm4gcGFyc2VT
aG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwogICAgIH0KKyNpZiBF
TkFCTEUoV0NTUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQ6CisgICAgICAg
IHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXYXBJbnB1dFJlcXVpcmVkOiB7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVRydWUg
fHwgaWQgPT0gQ1NTVmFsdWVGYWxzZSkKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRy
dWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyNlbmRpZiAKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uOgogICAgICAgICByZXR1cm4gcGFyc2VBbmltYXRpb25TaG9ydGhhbmQo
aW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkocmV2aXNpb24gNDE4MDcpCisrKyBXZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsMyArMjM3LDUgQEAKIC13
ZWJraXQtdXNlci1tb2RpZnkKIC13ZWJraXQtdXNlci1zZWxlY3QKIC13ZWJraXQtdmFyaWFibGUt
ZGVjbGFyYXRpb24tYmxvY2sKKy13YXAtaW5wdXQtZm9ybWF0Cistd2FwLWlucHV0LXJlcXVpcmVk
IApJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDQxODA3KQorKysgV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw4ICszNTMsOSBAQAog
ICAgIHZpcnR1YWwgYm9vbCBzcGVsbGluZ1VJSXNTaG93aW5nKCkgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiwgVmVjdG9y
PFN0cmluZz4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29s
KSB7IH0KLQotCisjaWYgRU5BQkxFKFdDU1MpCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUludmFs
aWRJbnB1dCgpIHsgfQorI2VuZGlmCiB9OwogCiBjbGFzcyBFbXB0eUNvbnRleHRNZW51Q2xpZW50
IDogcHVibGljIENvbnRleHRNZW51Q2xpZW50IHsK
</data>
<flag name="review"
          id="14179"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30710</attachid>
            <date>2009-05-27 09:44:14 -0700</date>
            <delta_ts>2009-05-27 09:46:48 -0700</delta_ts>
            <desc>Wap Access Key Patch with review comments incorporated</desc>
            <filename>WapAccessKey.patch</filename>
            <type>text/plain</type>
            <size>4332</size>
            <attacher name="Rohini Ananth">rohini.ananth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUucHJvCShyZXZpc2lvbiA0
NDE4MykKKysrIFdlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAK
ICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWFNMVD0uKTogREVGSU5FUyArPSBFTkFCTEVfWFNM
VD0wCiAjIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YQkw9Lik6IERFRklORVMgKz0gRU5BQkxF
X1hCTD0xCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dNTD0uKTogREVGSU5FUyArPSBFTkFC
TEVfV01MPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0NTUz0uKTogREVGSU5FUyArPSBF
TkFCTEVfV0NTUz0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dPUktFUlM9Lik6IERFRklO
RVMgKz0gRU5BQkxFX1dPUktFUlM9MQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YSFRNTE1Q
PS4pOiBERUZJTkVTICs9IEVOQUJMRV9YSFRNTE1QPTAKIApJbmRleDogQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gNDQxODMpCisrKyBDaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAwOS0wNS0yNyAgUm9oaW5pIEFuYW50aCAgPHJv
aGluaS5hbmFudGhAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IAorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3NworICAgICAgICAK
KyAgICAgICAgaHR0cDovL3d3dy53YXBmb3J1bS5vcmcvdGVjaC9kb2N1bWVudHMvV0FQLTIzOS1X
Q1NTLTIwMDExMDI2LWEucGRmCisKKyAgICAgICAgV2Via2l0IFN1cHBvcnQgZm9yIFdDU1MgLXdh
cC1hY2Nlc3NrZXkgCisgICAgICAgIENoYW5nZXMgbWFkZSB0byBDU1NQYXJzZXIgYW5kIENTU1N0
eWxlU2VsZWN0b3IgdG8gbWFwIC13YXAtYWNjZXNza2V5IAorICAgICAgICB0byBmb2xsb3cgdGhl
IHBhdGggb2YgYWNjZXNza2V5IEhUTUwgYXR0cmlidXRlLgorICAgICAgICAKKyAgICAgICAgQWRk
ZWQgRU5BQkxFX1dDU1MgZmxhZyBhbmQgc2V0IHRvIGZhbHNlIGJ5IGRlZmF1bHQuCisgICAgICAg
IAorICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyBjaGFuZ2VzIGluIEV2ZW50SGFuZGxlclF0LmNw
cC4gTm8gY29tYmluYXRpb24gYWNjZXNza2V5IHRvIGJlIGdpdmVuIGluIGNhc2Ugb2YgczYwIGJy
b3dzZXIgCisgICAgICAgIGFzIG9wcG9zZWQgdG8gJ0N0cmwnIGdpdmVuIGZvciBub3JtYWwgZGVz
a3RvcCBicm93c2VyICAKKyAgICAgICAgCisgICAgICAgICpXZWJDb3JlLnBybyA6IGFkZGVkIEVO
QUJMRV9XQ1NTIGZsYWcgYW5kIHNldCB0byAwIGJ5IGRlZmF1bHQKKyAgICAgICAgKiBjc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46IEluY2x1
ZGluZyAtd2FwLWFjY2Vzc2tleSBDU1MgcHJvcGVydHkKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAg
ICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAgCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6IFBsYXRmb3JtIHNwZWNpZmljIGNoYW5nZXMKKwog
MjAwOS0wNS0yNiAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBwYWdlL3F0L0V2ZW50
SGFuZGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAko
cmV2aXNpb24gNDQxODMpCisrKyBwYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDcgKzEzMiwxMSBAQAogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vz
c0tleU1vZGlmaWVycygpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3Ry
bEtleTsKKyAgICAjaWYgZGVmaW5lZCBRX1dTX1M2MAorICAgICAgICByZXR1cm4gMDsKKyAgICAj
ZWxzZQorICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5OworICAg
ICNlbmRpZgogfQogCiB9CkluZGV4OiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA0NDE4MykKKysrIGNzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE3NCw2ICs1MTc0LDIzIEBA
CiAgICAgICAgIG1fc3R5bGUtPnNldFBvaW50ZXJFdmVudHMoKnByaW1pdGl2ZVZhbHVlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyNpZiBFTkFCTEUoV0NTUykKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2FwQWNjZXNzS2V5OiB7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNv
ZGU7CisgICAgICAgIFN0cmluZyBhdHRyaWJ1dGVWYWx1ZTsKKyAgICAgICAgCisgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKQorICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBTdHJpbmc6Om51bWJlcihw
cmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGF0dHJpYnV0ZVZhbHVlID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUoImFjY2Vzc2tleSIsIGF0
dHJpYnV0ZVZhbHVlLCBleGNlcHRpb25Db2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoOgpJbmRleDogY3NzL0NTU1BhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDQ0MTgzKQorKysgY3NzL0NT
U1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MTgsNiArMTYxOCwxMyBAQAogICAgICAg
ICByZXR1cm4gcGFyc2VBbmltYXRpb25TaG9ydGhhbmQoaW1wb3J0YW50KTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKICAgICAgICAgcmV0dXJuIHBhcnNlVHJhbnNpdGlv
blNob3J0aGFuZChpbXBvcnRhbnQpOworI2lmIEVOQUJMRShXQ1NTKQorICAgIGNhc2UgQ1NTUHJv
cGVydHlXYXBBY2Nlc3NLZXk6CisgICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lERU5UKSAgLy9oYW5kbGluZyBzeW1ib2xzWyovI10gYW5kIGNoYXJhY3Rl
cnMgCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
dmFsdWUtPnN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOworICAgICAgICB2
YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlJbnZhbGlkOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRTdHJldGNoOgpJbmRleDogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDQ0MTgzKQorKysgY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQAog
d29yZC13cmFwCiB6LWluZGV4CiB6b29tCistd2FwLWFjY2Vzc2tleQogLXdlYmtpdC1hbmltYXRp
b24KIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5CiAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb24K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30901</attachid>
            <date>2009-06-03 05:05:55 -0700</date>
            <delta_ts>2009-08-07 09:21:08 -0700</delta_ts>
            <desc>Updated Patch for WCSS Inputformat </desc>
            <filename>wcssinputformat_with_review_comments_incorporated.patch</filename>
            <type>text/plain</type>
            <size>32084</size>
            <attacher name="Sreedhar Vaddi">sreedhar.vaddi</attacher>
            
              <data encoding="base64">SW5kZXg6IGRvbS9JbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9JbnB1dEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA0NDM3OSkKKysrIGRvbS9JbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw3ICsyMCw2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJJbnB1dEVsZW1lbnQuaCIKLQogI2luY2x1ZGUgIkJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTM1
LDEyICszNCwyMCBAQAogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogCiAjaWYgRU5BQkxFKFdNTCkKICNpbmNsdWRlICJXTUxJbnB1
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXTUxOYW1lcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
V0NTUykKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEFyZWFF
bGVtZW50LmgiCisjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiVGV4dEZvcm1h
dE1hc2suaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CkBAIC02Miw2ICs2OSw5IEBACiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZWxlbWVudC0+ZG9jdW1lbnQoKTsKICAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmll
bGQoKSAmJiBkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQtPnNldFVzZVNlY3Vy
ZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKHRydWUpOworI2lmIEVOQUJMRShXQ1NTKQorICAgIGRh
dGEuY3JlYXRlSW5wdXRGb3JtYXRNYXNrKGRvY3VtZW50KTsKKyNlbmRpZgogfQogCiB2b2lkIElu
cHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoSW5wdXRFbGVtZW50RGF0YSYgZGF0YSwgSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQpCkBAIC03Myw3ICs4Mywx
MyBAQAogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybjsKLQorI2lmIEVOQUJMRShXQ1NTKQorICAgIGlmICghdmFsaWRh
dGVGb3JtYXRUZXh0KGRhdGEsIGRvY3VtZW50KSkKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAgICBwYWdlLT5lZGl0b3JDbGllbnQoKS0+aGFuZGxl
SW52YWxpZElucHV0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgog
ICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShkYXRhLCBpbnB1dEVsZW1lbnQsIGVsZW1l
bnQpOwogCiAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkpCkBAIC0yNzEs
OCArMjg3LDMyIEBACiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAg
ICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybVN0YXRlRGlkQ2hhbmdlKGVsZW1lbnQp
OworI2lmIEVOQUJMRShXQ1NTKQorICAgIGlmIChkYXRhLnRleHRGb3JtYXRNYXNrKCkpCisgICAg
ICAgIHVwZGF0ZUVkaXRpbmdNb2RlKGRhdGEsIGRvY3VtZW50KTsKKyNlbmRpZgogfQogCisjaWYg
RU5BQkxFKFdDU1MpCitib29sIElucHV0RWxlbWVudDo6dmFsaWRhdGVGb3JtYXRUZXh0KElucHV0
RWxlbWVudERhdGEmIGRhdGEsIERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAoIWRhdGEu
dGV4dEZvcm1hdE1hc2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGRhdGEuaW5w
dXRFbGVtZW50KCktPmlzVGV4dEZpZWxkKCkgJiYgKCFkYXRhLnRleHRGb3JtYXRNYXNrKCktPnZh
bGlkYXRlKGRhdGEudmFsdWUoKSkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIElucHV0RWxlbWVudDo6dXBkYXRlRWRpdGluZ01vZGUoSW5w
dXRFbGVtZW50RGF0YSYgZGF0YSwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICghZGF0
YS50ZXh0Rm9ybWF0TWFzaygpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGRhdGEuaW5wdXRF
bGVtZW50KCktPmlzVGV4dEZpZWxkKCkpCisgICAgICAgIGRhdGEudGV4dEZvcm1hdE1hc2soKS0+
bmV4dElucHV0TWFza1R5cGUoZG9jdW1lbnQtPmZyYW1lKCksIGRhdGEudmFsdWUoKS5sZW5ndGgo
KSk7Cit9CisjZW5kaWYKKworCiAvLyBJbnB1dEVsZW1lbnREYXRhCiBJbnB1dEVsZW1lbnREYXRh
OjpJbnB1dEVsZW1lbnREYXRhKCkKICAgICA6IG1fcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUo
ZmFsc2UpCkBAIC0yODAsNiArMzIwLDkgQEAKICAgICAsIG1fbWF4TGVuZ3RoKElucHV0RWxlbWVu
dDo6c19tYXhpbXVtTGVuZ3RoKQogICAgICwgbV9jYWNoZWRTZWxlY3Rpb25TdGFydCgtMSkKICAg
ICAsIG1fY2FjaGVkU2VsZWN0aW9uRW5kKC0xKQorI2lmIEVOQUJMRShXQ1NTKQorICAgICwgbV90
ZXh0Rm9ybWF0TWFzaygwKQorI2VuZGlmCiB7CiB9CiAKQEAgLTMwMSw0ICszNDQsMjMgQEAKICAg
ICByZXR1cm4gMDsKIH0KIAorI2lmIEVOQUJMRShXQ1NTKQorYm9vbCBJbnB1dEVsZW1lbnREYXRh
OjpjcmVhdGVJbnB1dEZvcm1hdE1hc2soRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICgh
aW5wdXRFbGVtZW50KCktPmlzVGV4dEZpZWxkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghbV90ZXh0Rm9ybWF0TWFzaykgeworICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHN0
eWxlID0gZWxlbWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpOworICAgICAgICAgICAgaWYgKHN0
eWxlICYmICghc3R5bGUtPndhcElucHV0Rm9ybWF0KCkuaXNFbXB0eSgpIHx8IHN0eWxlLT53YXBJ
bnB1dFJlcXVpcmVkKCkpKSB7CisgICAgICAgICAgICAgICAgbV90ZXh0Rm9ybWF0TWFzay5zZXQo
bmV3IFRleHRGb3JtYXRNYXNrKHN0eWxlLT53YXBJbnB1dEZvcm1hdCgpLCBzdHlsZS0+d2FwSW5w
dXRSZXF1aXJlZCgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoIW1fdGV4dEZvcm1hdE1hc2spCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBkb20vVGV4dEZvcm1hdE1hc2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGRvbS9UZXh0Rm9ybWF0TWFzay5jcHAJKHJldmlzaW9uIDApCisrKyBkb20vVGV4dEZv
cm1hdE1hc2suY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzMyBAQAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqIAor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiYmlkaS5oIgorI2luY2x1ZGUgIlRl
eHRGb3JtYXRNYXNrLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIK
KyNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlRleHQuaCIKKyNpbmNs
dWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBpbnQgS0luZmluaXRlID0gLTE7CisKK2lu
bGluZSBib29sIGlzU3ltYm9sKFVDaGFyIGNoKSB7IHJldHVybiAoIVdURjo6aXNBU0NJSUFscGhh
KGNoKSAmJiAhV1RGOjppc0FTQ0lJRGlnaXQoY2gpICYmIFdURjo6aXNBU0NJSVByaW50YWJsZShj
aCkpOyB9CitpbmxpbmUgYm9vbCBpc0xvd2VyQ2FzZShVQ2hhciBjaCkgeyByZXR1cm4gKFdURjo6
aXNBU0NJSUxvd2VyKGNoKSAmJiBXVEY6OmlzQVNDSUlQcmludGFibGUoY2gpKTsgfQoraW5saW5l
IGJvb2wgaXNVcHBlckNhc2UoVUNoYXIgY2gpIHsgcmV0dXJuIChXVEY6OmlzQVNDSUlVcHBlcihj
aCkgJiYgV1RGOjppc0FTQ0lJUHJpbnRhYmxlKGNoKSk7IH0KK2lubGluZSBib29sIGlzRGlnaXQo
VUNoYXIgY2gpIHsgcmV0dXJuIChXVEY6OmlzQVNDSUlEaWdpdChjaCkgJiYgV1RGOjppc0FTQ0lJ
UHJpbnRhYmxlKGNoKSk7IH0KKworVGV4dEZvcm1hdE1hc2s6OlRleHRGb3JtYXRNYXNrKGNvbnN0
IFN0cmluZyYgc3RyLCBib29sIHJlcXVpcmVkKSAKKyAgICA6IG1fbWFza3MoMCkKKyAgICAsIG1f
Y3VycmVudE1hc2soMCkKKyAgICAsIG1fYWNjZXB0QWxsKGZhbHNlKQorICAgICwgbV9pbnB1dFJl
cXVpcmVkKHJlcXVpcmVkKQoreworICAgIGJ1aWxkTWFza0xpc3Qoc3RyKTsKK30KKworVGV4dEZv
cm1hdE1hc2s6On5UZXh0Rm9ybWF0TWFzaygpCit7CisgICAgY2xlYXJNYXNrTGlzdCgpOworfQor
Cit2b2lkIFRleHRGb3JtYXRNYXNrOjpidWlsZE1hc2tMaXN0KGNvbnN0IFN0cmluZyYgc3RyKQor
eworICAgIC8vICpNIG9yICptCisgICAgaWYgKHN0ci5pc0VtcHR5KCkgfHwgKHN0ciA9PSAiKk0i
KSB8fCAoc3RyID09ICIqbSIpKSB7CisgICAgICAgIG1fYWNjZXB0QWxsID0gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBwYXJzZSB0aGUgc3RyaW5nCisgICAgY2hhciBjaDsK
KyAgICBpbnQgbXVsID0gMTsKKyAgICBib29sIHJlc3VsdCA9IHRydWU7CisgICAgaW50IGkgPSAw
OworICAgIGludCBsZW4gPSBzdHIubGVuZ3RoKCk7CisgICAgd2hpbGUgKGkgPCBsZW4pIHsKKyAg
ICAgICAgc3dpdGNoIChzdHJbaV0pIHsKKyAgICAgICAgY2FzZSAnYSc6IAorICAgICAgICAgICAg
cmVzdWx0ID0gY3JlYXRlTWFzayhMZUxvU3ltUHVjVHlwZSwgbXVsKTsgCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAnQSc6IAorICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlTWFz
ayhMZVVwU3ltUHVjVHlwZSwgbXVsKTsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAnbic6IAorICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlTWFzayhOdW1TeW1QdWNUeXBlLCBt
dWwpOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdOJzogCisgICAgICAgICAg
ICByZXN1bHQgPSBjcmVhdGVNYXNrKE51bUNoYXJUeXBlLCBtdWwpOyAKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICd4JzogCisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVNYXNr
KExlTG9OdW1TeW1QdWNUeXBlLCBtdWwpOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICdYJzogCisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVNYXNrKExlVXBOdW1TeW1QdWNU
eXBlLCBtdWwpOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdtJzogCisgICAg
ICAgICAgICByZXN1bHQgPSBjcmVhdGVNYXNrKEFueUxvd1R5cGUsIG11bCk7IAorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ00nOiAKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0
ZU1hc2soQW55VXBwZXJUeXBlLCBtdWwpOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICcqJzogCisgICAgICAgICAgICBtdWwgPSBLSW5maW5pdGU7IAorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZVN0YXRp
Y01hc2soc3RyLCBpKTsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDogewor
ICAgICAgICAgICAgICAgIC8vICduZicKKyAgICAgICAgICAgICAgICBpZiAoaXNEaWdpdChzdHJb
aV0pKSB7CisgICAgICAgICAgICAgICAgICAgIG11bCA9IHBhcnNlTXVsdGl0dWRlKHN0ciwgaSwg
cmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBpKys7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAvLyBzb21ldGhpbmcg
d3Jvbmcgd2l0aCB0aGUgZm9ybWF0IHN0cmluZywgZmFsbGJhY2sgdG8KKyAgICAgICAgICAgIC8v
IGFjY2VwdCBhbGwgY2hhcmFjdGVycy4KKyAgICAgICAgICAgIGNsZWFyTWFza0xpc3QoKTsKKyAg
ICAgICAgICAgIG1fYWNjZXB0QWxsID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBtX2N1cnJlbnRNYXNrID0gbV9tYXNrczsKK30KKwordm9pZCBUZXh0
Rm9ybWF0TWFzazo6Y2xlYXJNYXNrTGlzdCgpCit7CisgICAgTWFza0Jhc2UqIG0gPSBtX21hc2tz
OworICAgIE1hc2tCYXNlKiBwID0gbTsKKyAgICB3aGlsZShwKSB7CisgICAgICAgIHAgPSBtLT5t
X25leHQ7CisgICAgICAgIGRlbGV0ZSBtOworICAgICAgICBtID0gcDsKKyAgICB9CisgICAgbV9t
YXNrcyA9IE5VTEw7Cit9CisKK2Jvb2wgVGV4dEZvcm1hdE1hc2s6OmNyZWF0ZU1hc2soSW5wdXRG
b3JtYXRNYXNrVHlwZSB0eXBlLCBpbnQmIG11bHRpKQoreworICAgIE1hc2tCYXNlKiBtID0gTlVM
TDsKKyAgICBpZiAobXVsdGkgPT0gMSkKKyAgICAgICAgbSA9IG5ldyBNYXNrU2luZ2xlKHR5cGUp
OworICAgIGVsc2UKKyAgICAgICAgbSA9IG5ldyBNYXNrQ29tcG9zaXRlKHR5cGUsIG11bHRpKTsK
KyAgICBtdWx0aSA9IDE7CisgICAgcmV0dXJuIGFwcGVuZE1hc2sobSk7Cit9CisKK2ludCBUZXh0
Rm9ybWF0TWFzazo6cGFyc2VNdWx0aXR1ZGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nICZwLCBpbnQg
JnBvcywgYm9vbCYgcmVzdWx0KQoreworICAgIC8vIHN0YXJ0IGZyb20gcCwgc2VhcmNoIGFsbCBk
aWdpdHMKKyAgICBTdHJpbmcgZHN0cjsKKyAgICB3aGlsZSAoaXNEaWdpdChwW3Bvc10pKSB7Cisg
ICAgICAgIGRzdHIuYXBwZW5kKHBbcG9zXSk7CisgICAgICAgIHBvcysrOworICAgIH0gCisgICAg
Ly8gdGhlcmUgc2hvdWxkIGJlIG9uZSB2YWxpZCBjaGFyYWN0ZXIgYWZ0ZXIgZGlnaXRzCisgICAg
aWYgKHBbcG9zXSA9PSAwKSB7CisgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgLy8gcGFyc2UgdGhlIGRpZ2l0IHN0cmluZworICAgIGludCBtdWx0
aSA9IGF0b2koZHN0ci5sYXRpbjEoKS5kYXRhKCkpOworICAgIGlmIChtdWx0aSA+IDApCisgICAg
ICAgIHJlc3VsdCA9IHRydWU7CisgICAgcmV0dXJuIG11bHRpOyAgICAgICAgCit9CisKK2Jvb2wg
VGV4dEZvcm1hdE1hc2s6OmNyZWF0ZVN0YXRpY01hc2soY29uc3QgV2ViQ29yZTo6U3RyaW5nICZw
LCBpbnQgJnBvcykKK3sKKyAgICBwb3MrKzsKKyAgICBNYXNrQmFzZSogbSA9IG5ldyBNYXNrU3Rh
dGljKHBbcG9zXSk7CisgICAgcmV0dXJuIGFwcGVuZE1hc2sobSk7Cit9CisKK2Jvb2wgVGV4dEZv
cm1hdE1hc2s6OnZhbGlkYXRlKGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBFcnJvckJsb2Nr
IGViOworICAgIHJldHVybiAodmFsaWRhdGUodGV4dCwgZWIpKTsKK30KKworYm9vbCBUZXh0Rm9y
bWF0TWFzazo6dmFsaWRhdGUoY29uc3QgU3RyaW5nJiB0ZXh0LCBFcnJvckJsb2NrJiBlYikKK3sK
KyAgICAvLyAiLXdhcC1pbnB1dC1yZXF1aXJlZCIgdGFrZXMgcHJlY2VkZW5jZQorICAgIGlmICh0
ZXh0Lmxlbmd0aCgpID09IDApIAorICAgICAgICByZXR1cm4gIW1faW5wdXRSZXF1aXJlZDsKKyAg
ICBpZiAobV9hY2NlcHRBbGwpIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyB3ZSBoYXZl
IG5vIG1hc2tzIGxlZnQKKyAgICBpZiAoIW1fbWFza3MgJiYgKHRleHQubGVuZ3RoKCkgPiAwKSkg
eworICAgICAgICBlYi5zZXQoMCwgdGV4dC5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgbV9jdXJyZW50TWFzayA9IG1fbWFza3M7CisgICAgZm9yIChpbnQgaT0w
OyBpIDwgdGV4dC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmICghbV9jdXJyZW50TWFzayB8
fCAhbV9jdXJyZW50TWFzay0+Y2hlY2sodGV4dFtpXSkpIAorICAgICAgICAgICAgLy8gc2VhcmNo
IGFsbCBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gdGhpcyBydW4KKyAgICAgICAgICAgIGlmIChtX2N1
cnJlbnRNYXNrKSAKKyAgICAgICAgICAgICAgICBpZiAoZWIubV9zdGFydCA9PSAtMSkKKyAgICAg
ICAgICAgICAgICAgICAgZWIuc2V0KGksIDEpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgZWIubV9leHRlbnQrKzsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGViLm1fZXh0ZW50ICs9IHRleHQubGVuZ3RoKCkgLSBpOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZWIubV9z
dGFydCAhPSAtMSkgLy8gdGhlIHByZXZpb3VzIGNoZWNrIGZhaWxlZAorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOyAKKyAgICAgICAgbV9jdXJyZW50TWFzayA9IG1fY3VycmVudE1hc2stPm5leHRN
YXNrKCk7CisgICAgfQorICAgIC8vIGRpZCB3ZSB1c2UgdXAgYWxsIHRoZSBtYXNrcz8KKyAgICBp
ZiAobV9jdXJyZW50TWFzayAmJiAobV9jdXJyZW50TWFzay0+bXVsdGl0dWRlKCkgIT0gS0luZmlu
aXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAoZWIubV9zdGFydCA9PSBL
SW5maW5pdGUpOworfQorCitpbnQgVGV4dEZvcm1hdE1hc2s6OmdldE11bHRpdHVkZSgpCit7Cisg
ICAgaW50IGNvdW50ID0gMDsKKyAgICBNYXNrQmFzZSogbSA9IG1fbWFza3M7CisgICAgd2hpbGUg
KG0pIHsKKyAgICAgICAgaWYgKG0tPm11bHRpdHVkZSgpID09IEtJbmZpbml0ZSkKKyAgICAgICAg
ICAgIHJldHVybiBLSW5maW5pdGU7ICAgIAorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb3Vu
dCArPSBtLT5tdWx0aXR1ZGUoKTsKKyAgICAgICAgbSA9IG0tPm5leHRNYXNrKCk7ICAgICAgICAg
ICAgICAgIAorICAgIH0KKyAgICByZXR1cm4gKGNvdW50KSA/IGNvdW50IDogS0luZmluaXRlOyAg
ICAKK30KKworSW5wdXRGb3JtYXRNYXNrVHlwZSBUZXh0Rm9ybWF0TWFzazo6bmV4dElucHV0TWFz
a1R5cGUoRnJhbWUqIGZyYW1lLCBpbnQgb2Zmc2V0KQoreyAKKyAgICBpbnQgaSA9IDA7CisgICAg
TWFza0Jhc2UqIG1hc2sgPSBtX21hc2tzOworICAgIHdoaWxlIChtYXNrKSB7CisgICAgICAgIGlm
IChtYXNrLT5pc0NvbXBvc2l0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1hc2stPmlucHV0Rm9y
bWF0TWFza1R5cGUoKTsgICAgCisgICAgICAgIGVsc2UgaWYgKGkgPT0gb2Zmc2V0KSB7CisgICAg
ICAgICAgICBJbnB1dEZvcm1hdE1hc2tUeXBlIGZvcm1hdFR5cGUgPSBtYXNrLT5pbnB1dEZvcm1h
dE1hc2tUeXBlKCk7CisgICAgICAgICAgICBpZiAoZm9ybWF0VHlwZSA9PSBTdGF0aWNUeXBlKSB7
CisgICAgICAgICAgICAgICAgTWFza1N0YXRpYyogbWFza1N0YXRpYyA9IHN0YXRpY19jYXN0PE1h
c2tTdGF0aWMqPihtYXNrKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IGZy
YW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOworICAgICAgICAgICAgICAgIGlmIChtYXNr
U3RhdGljKSB7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvL21ha2Ugc3Vy
ZSBub3QgdG8gcmUtd3JpdGUgdGhlIHN0YXRpYyB0ZXh0IGlmIGl0IGFscmVhZHkgZXhpc3RzCisg
ICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmb2N1
c2VkTm9kZQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGZvY3VzZWROb2RlLT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpIAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGZv
Y3VzZWROb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpKSkpIHsgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGZvY3VzZWROb2RlLT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpID8gCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihm
b2N1c2VkTm9kZSktPnZhbHVlKCkgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGZvY3VzZWROb2RlKS0+dmFs
dWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA8PSBvZmZz
ZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhciBjID0gbWFza1N0YXRpYy0+
Z2V0U3RhdGljKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4
dEV2ZW50KFN0cmluZygmYywgMSksIGZhbHNlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRUeXBlOyAgICAgICAgICAg
IAorICAgICAgICB9CisgICAgICAgIG1hc2sgPSBtYXNrLT5uZXh0TWFzaygpOworICAgICAgICAr
K2k7ICAgICAgICAgICAgICAgIAorICAgIH0KKyAgICByZXR1cm4gTm9Gb3JtYXQ7Cit9CisgIAor
Ym9vbCBUZXh0Rm9ybWF0TWFzazo6YXBwZW5kTWFzayhNYXNrQmFzZSogbSkKK3sKKyAgICAvLyBi
dWlsZCB0aGUgbWFzayBjaGFpbgorICAgIGlmICghbV9tYXNrcykKKyAgICAgICAgbV9tYXNrcyA9
IG07CisgICAgZWxzZSB7CisgICAgICAgIE1hc2tCYXNlKiBtYXNrID0gbV9tYXNrczsKKyAgICAg
ICAgd2hpbGUgKG1hc2stPm1fbmV4dCkKKyAgICAgICAgICAgIG1hc2sgPSBtYXNrLT5tX25leHQ7
CisgICAgICAgIC8vIGNvbXBvc2l0ZSBtYXNrIG9ubHkgZXhpc3RzIGF0IHRoZSBlbmQgb2YgbWFz
ayBjaGFpbi4KKyAgICAgICAgaWYgKG1hc2stPmlzQ29tcG9zaXRlKCkpIHsKKyAgICAgICAgICAg
IGRlbGV0ZSBtOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IG1hc2stPm1fbmV4dCA9IG07CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitNYXNrQ29t
cG9zaXRlOjpNYXNrQ29tcG9zaXRlKElucHV0Rm9ybWF0TWFza1R5cGUgdCwgaW50IG11bCkgCisg
ICAgOiBNYXNrU2luZ2xlKHQpCisgICAgLCBtX29mZnNldCgwKQorICAgICwgbV9sZW5ndGgobXVs
KQoreworfQorCitNYXNrQmFzZSogTWFza0NvbXBvc2l0ZTo6bmV4dE1hc2soKQoreworICAgIG1f
b2Zmc2V0Kys7CisgICAgaWYgKChtX29mZnNldCA8IG1fbGVuZ3RoKSB8fCAobV9sZW5ndGggPT0g
S0luZmluaXRlKSkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgbV9vZmZzZXQgPSAwOworICAg
IHJldHVybiBOVUxMOworfQorCitib29sIE1hc2tTaW5nbGU6OmNoZWNrKFVDaGFyIGMpCit7Cisg
ICAgLy9RQ2hhciBjKGNoKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgTGVMb1N5
bVB1Y1R5cGU6IAorICAgICAgICByZXR1cm4gKGlzTG93ZXJDYXNlKGMpIHx8IGlzU3ltYm9sKGMp
KTsKKworICAgIGNhc2UgTGVVcFN5bVB1Y1R5cGU6IAorICAgICAgICByZXR1cm4gKGlzVXBwZXJD
YXNlKGMpIHx8IGlzU3ltYm9sKGMpKTsKKworICAgIGNhc2UgTnVtU3ltUHVjVHlwZTogCisgICAg
ICAgIHJldHVybiAoaXNEaWdpdChjKSB8fCBpc1N5bWJvbChjKSk7CisKKyAgICBjYXNlIE51bUNo
YXJUeXBlOiAKKyAgICAgICAgcmV0dXJuIChpc0RpZ2l0KGMpKTsKKworICAgIGNhc2UgTGVMb051
bVN5bVB1Y1R5cGU6IAorICAgICAgICByZXR1cm4gKGlzTG93ZXJDYXNlKGMpIHx8IGlzRGlnaXQo
YykgfHwgaXNTeW1ib2woYykpOworCisgICAgY2FzZSBMZVVwTnVtU3ltUHVjVHlwZTogCisgICAg
ICAgIHJldHVybiAoaXNVcHBlckNhc2UoYykgfHwgaXNEaWdpdChjKSB8fCBpc1N5bWJvbChjKSk7
CisKKyAgICBjYXNlIEFueUxvd1R5cGU6CisgICAgY2FzZSBBbnlVcHBlclR5cGU6IAorICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgfQorfQorCitib29sIE1hc2tTdGF0
aWM6OmNoZWNrKFVDaGFyIGNoKQoreworICAgIHJldHVybiBtX2NoYXIgPT0gY2g7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IGRvbS9JbnB1dEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBkb20vSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDQ0Mzc5KQorKysgZG9tL0lucHV0RWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw5IEBACiAKICNpbmNsdWRlICJBdG9t
aWNTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lmIEVOQUJMRShXQ1NT
KQorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTMxLDYgKzM0LDkgQEAKIGNsYXNzIEV2ZW50OwogY2xhc3MgSW5wdXRFbGVtZW50RGF0
YTsKIGNsYXNzIE1hcHBlZEF0dHJpYnV0ZTsKKyNpZiBFTkFCTEUoV0NTUykKK2NsYXNzIFRleHRG
b3JtYXRNYXNrOworI2VuZGlmCiAKIGNsYXNzIElucHV0RWxlbWVudCB7CiBwdWJsaWM6CkBAIC03
Nyw2ICs4MywxMCBAQAogICAgIHN0YXRpYyB2b2lkIHBhcnNlTWF4TGVuZ3RoQXR0cmlidXRlKElu
cHV0RWxlbWVudERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50KiwgTWFwcGVkQXR0cmlidXRl
Kik7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlVmFsdWVJZk5lZWRlZChJbnB1dEVsZW1lbnREYXRh
JiwgSW5wdXRFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdl
ZChFbGVtZW50Kik7CisjaWYgRU5BQkxFKFdDU1MpCisgICAgc3RhdGljIGJvb2wgdmFsaWRhdGVG
b3JtYXRUZXh0KElucHV0RWxlbWVudERhdGEmLCBEb2N1bWVudCopOworICAgIHN0YXRpYyB2b2lk
IHVwZGF0ZUVkaXRpbmdNb2RlKElucHV0RWxlbWVudERhdGEmLCBEb2N1bWVudCopOworI2VuZGlm
CiB9OwogCiAvLyBIVE1ML1dNTElucHV0RWxlbWVudCBob2xkIHRoaXMgc3RydWN0IGFzIG1lbWJl
ciB2YXJpYWJsZQpAQCAtMTA1LDYgKzExNSwxMCBAQAogCiAgICAgaW50IGNhY2hlZFNlbGVjdGlv
bkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2VsZWN0aW9uRW5kOyB9CiAgICAgdm9pZCBz
ZXRDYWNoZWRTZWxlY3Rpb25FbmQoaW50IHZhbHVlKSB7IG1fY2FjaGVkU2VsZWN0aW9uRW5kID0g
dmFsdWU7IH0KKyNpZiBFTkFCTEUoV0NTUykKKyAgICBPd25QdHI8VGV4dEZvcm1hdE1hc2s+JiB0
ZXh0Rm9ybWF0TWFzaygpIHsgcmV0dXJuIG1fdGV4dEZvcm1hdE1hc2s7IH0KKyAgICBib29sIGNy
ZWF0ZUlucHV0Rm9ybWF0TWFzayhEb2N1bWVudCopOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlOwpAQCAtMTE0LDEwICsxMjgsMTMgQEAK
ICAgICBpbnQgbV9tYXhMZW5ndGg7CiAgICAgaW50IG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQ7CiAg
ICAgaW50IG1fY2FjaGVkU2VsZWN0aW9uRW5kOworI2lmIEVOQUJMRShXQ1NTKQorICAgIE93blB0
cjxUZXh0Rm9ybWF0TWFzaz4gbV90ZXh0Rm9ybWF0TWFzazsKKyNlbmRpZgogfTsKIAogSW5wdXRF
bGVtZW50KiB0b0lucHV0RWxlbWVudChFbGVtZW50Kik7CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gSW5wdXRFbGVtZW50X2gKSW5kZXg6IGRvbS9UZXh0
Rm9ybWF0TWFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9UZXh0Rm9ybWF0TWFzay5oCShyZXZpc2lv
biAwKQorKysgZG9tL1RleHRGb3JtYXRNYXNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI3
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworI2lmbmRlZiBUZXh0Rm9ybWF0TWFza19oCisjZGVmaW5lIFRl
eHRGb3JtYXRNYXNrX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2Ns
YXNzIFN0cmluZzsKK2NsYXNzIFRleHRGb3JtYXRNYXNrOworCit0eXBlZGVmIGVudW0geworICAg
IExlTG9TeW1QdWNUeXBlLAorICAgIExlVXBTeW1QdWNUeXBlLCAgIAorICAgIE51bVN5bVB1Y1R5
cGUsICAgIAorICAgIE51bUNoYXJUeXBlLCAgICAgIAorICAgIExlTG9OdW1TeW1QdWNUeXBlLAor
ICAgIExlVXBOdW1TeW1QdWNUeXBlLAorICAgIEFueUxvd1R5cGUsCisgICAgQW55VXBwZXJUeXBl
LAorICAgIFN0YXRpY1R5cGUsCisgICAgTm9Gb3JtYXQgCit9IElucHV0Rm9ybWF0TWFza1R5cGU7
ICAKKworY2xhc3MgTWFza0Jhc2UgeworcHVibGljOgorICAgIE1hc2tCYXNlKCkgOiBtX25leHQo
MCkge30KKyAgICB2aXJ0dWFsIH5NYXNrQmFzZSgpIHsgbV9uZXh0ID0gTlVMTDsgfQorICAgIHZp
cnR1YWwgYm9vbCBjaGVjayhVQ2hhcikgPSAwOworICAgIHZpcnR1YWwgSW5wdXRGb3JtYXRNYXNr
VHlwZSBpbnB1dEZvcm1hdE1hc2tUeXBlKCkgPSAwOworICAgIHZpcnR1YWwgTWFza0Jhc2UqIG5l
eHRNYXNrKCkgeyByZXR1cm4gbV9uZXh0OyB9CisgICAgdmlydHVhbCBib29sIGlzQ29tcG9zaXRl
KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGludCBtdWx0aXR1ZGUoKSBjb25zdCB7
IHJldHVybiAxOyB9CisKK3Byb3RlY3RlZDoKKyAgICBNYXNrQmFzZSogbV9uZXh0OworCitwcml2
YXRlOgorICAgIE1hc2tCYXNlKGNvbnN0IE1hc2tCYXNlJik7ICAgICAgICAgICAgICAvLyBub3Qg
aW1wbGVtZW50ZWQKKyAgICBNYXNrQmFzZSYgb3BlcmF0b3I9KGNvbnN0IE1hc2tCYXNlJik7ICAg
Ly8gbm90IGltcGxlbWVudGVkCisgICAgZnJpZW5kIGNsYXNzIFRleHRGb3JtYXRNYXNrOworfTsK
KworY2xhc3MgTWFza1NpbmdsZSA6IHB1YmxpYyBNYXNrQmFzZSB7CitwdWJsaWM6CisgICAgTWFz
a1NpbmdsZShJbnB1dEZvcm1hdE1hc2tUeXBlIHQpIDogbV90eXBlKHQpIHsgfQorICAgIGJvb2wg
Y2hlY2soVUNoYXIpOworICAgIElucHV0Rm9ybWF0TWFza1R5cGUgaW5wdXRGb3JtYXRNYXNrVHlw
ZSgpIHsgcmV0dXJuIG1fdHlwZTsgfTsKKworcHJpdmF0ZToKKyAgICBJbnB1dEZvcm1hdE1hc2tU
eXBlIG1fdHlwZTsKK307CisKK2NsYXNzIE1hc2tTdGF0aWMgOiBwdWJsaWMgTWFza0Jhc2Ugewor
cHVibGljOgorICAgIE1hc2tTdGF0aWMoVUNoYXIgY2gpIDogbV9jaGFyKGNoKSB7IH0KKyAgICBi
b29sIGNoZWNrKFVDaGFyKTsKKyAgICBVQ2hhciBnZXRTdGF0aWMoKSB7IHJldHVybiBtX2NoYXI7
IH0KKyAgICBJbnB1dEZvcm1hdE1hc2tUeXBlIGlucHV0Rm9ybWF0TWFza1R5cGUoKSB7IHJldHVy
biBTdGF0aWNUeXBlOyB9OworCitwcml2YXRlOgorICAgIFVDaGFyIG1fY2hhcjsKK307CisKK2Ns
YXNzIE1hc2tDb21wb3NpdGUgOiBwdWJsaWMgTWFza1NpbmdsZSB7CitwdWJsaWM6CisgICAgTWFz
a0NvbXBvc2l0ZShJbnB1dEZvcm1hdE1hc2tUeXBlLCBpbnQpOworICAgIE1hc2tCYXNlKiBuZXh0
TWFzaygpOyAgICAKKyAgICBib29sIGlzQ29tcG9zaXRlKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGludCBtdWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCitwcml2YXRlOgor
ICAgIGludCBtX29mZnNldDsKKyAgICBpbnQgbV9sZW5ndGg7Cit9OworCitjbGFzcyBUZXh0Rm9y
bWF0TWFzayB7CitwdWJsaWM6CisgICAgc3RydWN0IEVycm9yQmxvY2sKKyAgICB7CisgICAgICAg
IGludCBtX3N0YXJ0OworICAgICAgICBpbnQgbV9leHRlbnQ7CisgICAgICAgIEVycm9yQmxvY2so
KSA6IG1fc3RhcnQoLTEpLCBtX2V4dGVudCgtMSkge30KKyAgICAgICAgdm9pZCBzZXQoaW50IHMs
IGludCBlKSB7IG1fc3RhcnQgPSBzOyBtX2V4dGVudCA9IGU7IH0KKyAgICB9OworCisgICAgVGV4
dEZvcm1hdE1hc2soY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgYm9vbCk7CisgICAgflRleHRGb3Jt
YXRNYXNrKCk7CisgICAgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAg
ICBib29sIHZhbGlkYXRlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIEVycm9yQmxvY2smKTsKKyAg
ICBpbnQgZ2V0TXVsdGl0dWRlKCk7CisgICAgSW5wdXRGb3JtYXRNYXNrVHlwZSBuZXh0SW5wdXRN
YXNrVHlwZShXZWJDb3JlOjpGcmFtZSAqZnJhbWUsIGludCBhT2Zmc2V0KTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIGJ1aWxkTWFza0xpc3QoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgYm9v
bCBhcHBlbmRNYXNrKE1hc2tCYXNlKiBtKTsKKyAgICB2b2lkIGNsZWFyTWFza0xpc3QoKTsKKyAg
ICBib29sIGNyZWF0ZU1hc2soSW5wdXRGb3JtYXRNYXNrVHlwZSwgaW50Jik7CisgICAgYm9vbCBj
cmVhdGVTdGF0aWNNYXNrKGNvbnN0IFdlYkNvcmU6OlN0cmluZyAmc3RyLCBpbnQgJnBvcyk7Cisg
ICAgaW50IHBhcnNlTXVsdGl0dWRlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyAmc3RyLCBpbnQgJnBv
cywgYm9vbCYpOworCitwcml2YXRlOgorICAgIE1hc2tCYXNlKiBtX21hc2tzOworICAgIE1hc2tC
YXNlKiBtX2N1cnJlbnRNYXNrOworICAgIGJvb2wgbV9hY2NlcHRBbGw7CisgICAgYm9vbCBtX2lu
cHV0UmVxdWlyZWQ7Cit9OworCit9CisjZW5kaWYKSW5kZXg6IFdlYkNvcmUucHJvCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUucHJvCShyZXZpc2lvbiA0NDM3OSkKKysrIFdlYkNvcmUucHJvCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDcgQEAKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
V01MPS4pOiBERUZJTkVTICs9IEVOQUJMRV9XTUw9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XT1JLRVJTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9XT1JLRVJTPTEKICFjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfWEhUTUxNUD0uKTogREVGSU5FUyArPSBFTkFCTEVfWEhUTUxNUD0wCishY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX1dDU1M9Lik6IERFRklORVMgKz0gRU5BQkxFX1dDU1M9MQog
CiAjIFNWRyBzdXBwb3J0CiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0wKSB7CkBAIC0x
NTYxLDYgKzE1NjIsMTYgQEAKICAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfWEhUTUxNUD0xCiB9CiAKK2NvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XQ1NTPTEpIHsKKyAg
ICBIRUFERVJTICs9IFwKKyAgICAgICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVXYXBJbnB1dC5o
IFwKKyAgICAgICAgICBkb20vVGV4dEZvcm1hdE1hc2suaAorCisgICAgU09VUkNFUyArPSBcCisg
ICAgICAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlV2FwSW5wdXQuY3BwIFwKKyAgICAgICAgICBk
b20vVGV4dEZvcm1hdE1hc2suY3BwCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9
MSkgewogICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TVkc9MQogCklu
ZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbiA0NDM3OSkK
KysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDA5LTA2LTAz
ICBTcmVlZGhhciBWYWRkaSA8c3JlZWRoYXIudmFkZGlAbm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5CisKKyAgICAgICAgaHR0cDovL3d3dy53YXBmb3J1bS5vcmcvdGVjaC9kb2N1bWVu
dHMvV0FQLTIzOS1XQ1NTLTIwMDExMDI2LWEucGRmCisKKyAgICAgICAgV2Via2l0IFN1cHBvcnQg
Zm9yIFdDU1MgLXdhcC1pbnB1dC1mb3JtYXQgYW5kIC13YXAtaW5wdXQtcmVxdWlyZWQuCisgICAg
ICAgIENoYW5nZXMgbWFkZSB0byBDU1NTdHlsZVNlbGVjdG9yLCBDU1NQYXJzZXIgdG8gbWFwCisg
ICAgICAgIC13YXAtaW5wdXQtZm9ybWF0IGFuZCAtd2FwLWlucHV0LXJlcXVpcmVkLiBBZGRlZCBT
dHlsZVdhcElucHV0CisgICAgICAgIHdoaWNoIGlzIHVzZWQgd2hpbGUgY3JlYXRpbmcgZm9ybWF0
IG1hc2sgZm9yIHRoZSBFZGl0b3JDbGllbnQgZm9yCisgICAgICAgIElucHV0RWxlbWVudHMuIEFk
ZGVkIFdDU1MgZmxhZyBhbmQgc2V0IHRvCisgICAgICAgIGZhbHNlIGJ5IGRlZmF1bHQuCisgICAg
ICAgIAorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZXJWYWx1ZSk6CisgICAgICAgICog
Y3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46IEluY2x1ZGluZyAtd2FwLWlucHV0LWZvcm1hdCBhbmQK
KyAgICAgICAgLXdhcC1pbnB1dC1yZXF1aXJlZCBDU1MgcHJvcGVydGllcy4KKyAgICAgICAgKiBj
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjogSW5jbHVkaW5nIHRydWUgYW5kIGZhbHNlLgorICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
V2FwSW5wdXQuaAorICAgICAgICAoV2ViQ29yZTo6U3R5bGVXYXBJbnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVdhcElucHV0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlV2FwSW5wdXQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVdhcElucHV0LmNwcAorICAgICAgICAoV2ViQ29yZTo6U3R5bGVXYXBJbnB1dDo6U3R5bGVXYXBJ
bnB1dCk6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisgICAgICAgIChXZWJD
b3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6d2FwSW5wdXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OndhcElucHV0UmVxdWlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OnNldFdhcElucHV0Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRXYXBJbnB1dFJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0
aWFsV2FwSW5wdXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRp
YWxXYXBJbnB1dFJlcXVpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTpSZW5kZXJTdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YSk6CisgICAgICAgICogZG9tL0lucHV0RWxlbWVudC5oCisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dEVsZW1lbnREYXRhOjp0ZXh0Rm9ybWF0TWFzayk6CisgICAgICAgICogZG9tL0lucHV0
RWxlbWVudC5jcHAKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6Y3JlYXRlSW5wdXRG
b3JtYXRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6Y2FuY2VsRm9ybWF0
TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OnZhbGlkYXRlRm9ybWF0VGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OnVwZGF0ZUVkaXRpbmdNb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50Ojpub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBkb20vVGV4dEZvcm1hdE1hc2suaCAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpNYXNr
QmFzZTo6TWFza0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFza0Jhc2U6On5NYXNrQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpNYXNrQmFzZTo6bmV4dE1hc2spOgorICAgICAgICAoV2ViQ29y
ZTo6TWFza0Jhc2U6OmlzQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tCYXNlOjpt
dWx0aXR1ZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFza1NpbmdsZTo6TWFza1NpbmdsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXNrU2luZ2xlOjppbnB1dEZvcm1hdE1hc2tUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hc2tTdGF0aWM6TWFza1N0YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpN
YXNrU3RhdGljOjpnZXRTdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6TWFza0NvbXBvc2l0ZTo6
TWFza0NvbXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXNrQ29tcG9zaXRlOjppc0NvbXBv
c2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXNrQ29tcG9zaXRlOjptdWx0aXR1ZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEZvcm1hdE1hc2s6OkVycm9yQmxvY2s6OkVycm9yQmxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZvcm1hdE1hc2s6OkVycm9yQmxvY2s6OnNldCk6CisgICAg
ICAgICogZG9tL1RleHRGb3JtYXRNYXNrLmNwcAorICAgICAgICAoV2ViQ29yZTo6VGV4dEZvcm1h
dE1hc2s6OlRleHRGb3JtYXRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGb3JtYXRNYXNr
Ojp+VGV4dEZvcm1hdE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZvcm1hdE1hc2s6OnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGb3JtYXRNYXNrOjpnZXRNdWx0aXR1ZGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZvcm1hdE1hc2s6Om5leHRJbnB1dE1hc2tUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGb3JtYXRNYXNrOjpidWlsZE1hc2tMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGb3JtYXRNYXNrOjphcHBlbmRNYXNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRGb3JtYXRNYXNrOjpjbGVhck1hc2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGb3JtYXRNYXNrOjpjcmVhdGVNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGb3JtYXRN
YXNrOjpjcmVhdGVTdGF0aWNNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGb3JtYXRNYXNr
OjpwYXJzZU11bHRpdHVkZSk6CisJCiAyMDA5LTA2LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KSW5kZXg6IHBhZ2Uv
RWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9FZGl0b3JDbGllbnQuaAkocmV2aXNp
b24gNDQzNzkpCisrKyBwYWdlL0VkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcs
NiArMTc3LDkgQEAKICAgICB2aXJ0dWFsIGJvb2wgc3BlbGxpbmdVSUlzU2hvd2luZygpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiwgVmVjdG9y
PFN0cmluZz4mIGd1ZXNzZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RT
dGF0ZShib29sIGVuYWJsZWQpID0gMDsKKyNpZiBFTkFCTEUoV0NTUykKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlSW52YWxpZElucHV0KCkgPSAwOworI2VuZGlmCiB9OwogCiB9CkluZGV4OiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDQ0Mzc5KQorKysgcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5IEBACiAjaWYgRU5B
QkxFKFNWRykKICAgICBtX3N2Z1N0eWxlLmluaXQoKTsKICNlbmRpZgorI2lmIEVOQUJMRShXQ1NT
KQorICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3dhcElucHV0LmluaXQoKTsK
KyNlbmRpZiAKIH0KIAogUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBvKQpJbmRleDogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5o
CShyZXZpc2lvbiA0NDM3OSkKKysrIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaWYgRU5BQkxFKFdDU1MpCisjaW5jbHVkZSAiU3R5bGVXYXBJbnB1dC5oIgorI2Vu
ZGlmIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDYgKzU3LDkgQEAKICNpZiBFTkFC
TEUoWEJMKQogY2xhc3MgQmluZGluZ1VSSTsKICNlbmRpZgorI2lmIEVOQUJMRShXQ1NTKQorY2xh
c3MgU3R5bGVXYXBJbnB1dDsKKyNlbmRpZiAKIAogLy8gVGhpcyBzdHJ1Y3QgaXMgZm9yIHJhcmVs
eSB1c2VkIG5vbi1pbmhlcml0ZWQgQ1NTMywgQ1NTMiwgYW5kIFdlYktpdC1zcGVjaWZpYyBwcm9w
ZXJ0aWVzLgogLy8gQnkgZ3JvdXBpbmcgdGhlbSB0b2dldGhlciwgd2Ugc2F2ZSBzcGFjZSwgYW5k
IG9ubHkgYWxsb2NhdGUgdGhpcyBvYmplY3Qgd2hlbiBzb21lb25lCkBAIC04Nyw2ICs5Myw5IEBA
CiAgICAgRGF0YVJlZjxTdHlsZU1hcnF1ZWVEYXRhPiBtYXJxdWVlOyAvLyBNYXJxdWVlIHByb3Bl
cnRpZXMKICAgICBEYXRhUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBtX211bHRpQ29sOyAvLyAgQ1NT
MyBtdWx0aWNvbCBwcm9wZXJ0aWVzCiAgICAgRGF0YVJlZjxTdHlsZVRyYW5zZm9ybURhdGE+IG1f
dHJhbnNmb3JtOyAvLyBUcmFuc2Zvcm0gcHJvcGVydGllcyAocm90YXRlLCBzY2FsZSwgc2tldywg
ZXRjLikKKyNpZiBFTkFCTEUoV0NTUykKKyAgICBEYXRhUmVmPFN0eWxlV2FwSW5wdXQ+IG1fd2Fw
SW5wdXQ7CisjZW5kaWYgCiAKICAgICBPd25QdHI8Q29udGVudERhdGE+IG1fY29udGVudDsKICAg
ICBPd25QdHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gbV9jb3VudGVyRGlyZWN0aXZlczsKSW5kZXg6
IHJlbmRlcmluZy9zdHlsZS9TdHlsZVdhcElucHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5n
L3N0eWxlL1N0eWxlV2FwSW5wdXQuaAkocmV2aXNpb24gMCkKKysrIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVdhcElucHV0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKyNpZm5kZWYgIFN0
eWxlV2FwSW5wdXRfaCAKKyNkZWZpbmUgIFN0eWxlV2FwSW5wdXRfaCAKKworI2luY2x1ZGUgIkF0
b21pY1N0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHlsZVdhcElu
cHV0IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVXYXBJbnB1dD4geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0eWxlV2FwSW5wdXQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZVdhcElucHV0KTsgfQorICAgIFBhc3NSZWZQdHI8U3R5bGVXYXBJbnB1dD4gY29w
eSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVdhcElucHV0KCp0aGlzKSk7IH0K
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVdhcElucHV0JiBvKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gby5mb3JtYXQgJiYgcmVxdWlyZWQgPT0gby5y
ZXF1aXJlZCk7CisgICAgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVdhcElucHV0
JiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAgfQor
ICAgCisgICAgQXRvbWljU3RyaW5nIGZvcm1hdDsKKyAgICBib29sIHJlcXVpcmVkOworcHJpdmF0
ZToKKyAgICBTdHlsZVdhcElucHV0KCk7CisgICAgU3R5bGVXYXBJbnB1dChjb25zdCBTdHlsZVdh
cElucHV0Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gU3R5bGVX
YXBJbnB1dF9oCkluZGV4OiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gNDQzNzkpCisrKyBy
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjg1LDYgKzY4
NSwxMCBAQAogICAgIGludCBsaW5lQ2xhbXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bGluZUNsYW1wOyB9CiAgICAgYm9vbCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdDsgfQogICAgIEVUZXh0U2Vj
dXJpdHkgdGV4dFNlY3VyaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRTZWN1
cml0eT4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSk7IH0KKyNpZiBFTkFCTEUoV0NT
UykKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHdhcElucHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fd2FwSW5wdXQtPmZvcm1hdDsgfQorICAgIGJvb2wg
d2FwSW5wdXRSZXF1aXJlZCgpIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dhcElu
cHV0LT5yZXF1aXJlZDsgfQorI2VuZGlmIAogCiAvLyBhdHRyaWJ1dGUgc2V0dGVyIG1ldGhvZHMK
IApAQCAtMTA3Nyw2ICsxMDgxLDEwIEBACiAgICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZSgpIHsg
bV9sYXN0Q2hpbGRTdGF0ZSA9IHRydWU7IH0KICAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZEluZGV4OyB9CiAgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2ln
bmVkIGluZGV4KSB7IG1fY2hpbGRJbmRleCA9IGluZGV4OyB9CisjaWYgRU5BQkxFKFdDU1MpCisg
ICAgdm9pZCBzZXRXYXBJbnB1dEZvcm1hdChTdHJpbmcgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3dhcElucHV0LCBmb3JtYXQsIGYpOyB9CisgICAgdm9pZCBz
ZXRXYXBJbnB1dFJlcXVpcmVkKGJvb2wgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX3dhcElucHV0LCByZXF1aXJlZCwgYik7IH0KKyNlbmRpZiAKIAogICAgIC8v
IEluaXRpYWwgdmFsdWVzIGZvciBhbGwgdGhlIHByb3BlcnRpZXMKICAgICBzdGF0aWMgYm9vbCBp
bml0aWFsQm9yZGVyQ29sbGFwc2UoKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTE3NSw2ICsxMTgz
LDEwIEBACiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIGlu
aXRpYWxEYXNoYm9hcmRSZWdpb25zKCk7CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURh
c2hib2FyZFJlZ2lvbj4mIG5vbmVEYXNoYm9hcmRSZWdpb25zKCk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoV0NTUykKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsV2FwSW5wdXRG
b3JtYXQoKSB7IHJldHVybiBudWxsQXRvbTsgfQorICAgIHN0YXRpYyBib29sIGluaXRpYWxXYXBJ
bnB1dFJlcXVpcmVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZiAKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDQ0Mzc5KQorKysgcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw5IEBA
CiAjaWYgRU5BQkxFKFhCTCkKICAgICAsIGJpbmRpbmdVUkkoby5iaW5kaW5nVVJJID8gby5iaW5k
aW5nVVJJLT5jb3B5KCkgOiAwKQogI2VuZGlmCisjaWYgRU5BQkxFKFdDU1MpCisgICAgLCBtX3dh
cElucHV0KG8ubV93YXBJbnB1dCkKKyNlbmRpZgogewogfQogCkBAIC0xNTAsNiArMTUzLDkgQEAK
ICAgICAgICAgJiYgKG1fcGVyc3BlY3RpdmUgPT0gby5tX3BlcnNwZWN0aXZlKQogICAgICAgICAm
JiAobV9wZXJzcGVjdGl2ZU9yaWdpblggPT0gby5tX3BlcnNwZWN0aXZlT3JpZ2luWCkKICAgICAg
ICAgJiYgKG1fcGVyc3BlY3RpdmVPcmlnaW5ZID09IG8ubV9wZXJzcGVjdGl2ZU9yaWdpblkpCisj
aWYgRU5BQkxFKFdDU1MpCisgICAgICAgICYmIChtX3dhcElucHV0ID09IG8ubV93YXBJbnB1dCkK
KyNlbmRpZgogICAgICAgICA7CiB9CiAKSW5kZXg6IHJlbmRlcmluZy9zdHlsZS9TdHlsZVdhcElu
cHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvc3R5bGUvU3R5bGVXYXBJbnB1dC5jcHAJ
KHJldmlzaW9uIDApCisrKyByZW5kZXJpbmcvc3R5bGUvU3R5bGVXYXBJbnB1dC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
dHlsZVdhcElucHV0LmgiIAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0eWxlV2FwSW5wdXQ6
OlN0eWxlV2FwSW5wdXQoKQorICAgICA6IHJlcXVpcmVkKGZhbHNlKQoreworCit9CisKK1N0eWxl
V2FwSW5wdXQ6OlN0eWxlV2FwSW5wdXQoY29uc3QgU3R5bGVXYXBJbnB1dCYgbykKKyAgICA6IFJl
ZkNvdW50ZWQ8U3R5bGVXYXBJbnB1dD4oKQorICAgICwgZm9ybWF0KG8uZm9ybWF0KQorICAgICwg
cmVxdWlyZWQoby5yZXF1aXJlZCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NTU1ZhbHVlS2V5
d29yZHMuaW4JKHJldmlzaW9uIDQ0Mzc5KQorKysgY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTYxMCw1ICs2MTAsMTAgQEAKIHBhaW50ZWQKIGZpbGwKIHN0cm9rZQor
IworIyBDU1NfUFJPUF9XQVBfSU5QVVRfUkVRVUlSRUQKKyMKK3RydWUKK2ZhbHNlCiAjYWxsCiAj
bm9uZQpJbmRleDogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNDQzNzkpCisrKyBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNzQsNiArNTE3NCwyMSBAQAogICAgICAgICBt
X3N0eWxlLT5zZXRQb2ludGVyRXZlbnRzKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0
Rm9ybWF0OiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHdhcElucHV0Rm9y
bWF0LCBXYXBJbnB1dEZvcm1hdCkKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdHlsZS0+c2V0V2FwSW5wdXRGb3JtYXQocHJpbWl0
aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQ6IHsKKyAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwod2FwSW5wdXRSZXF1aXJlZCwgV2FwSW5wdXRSZXF1aXJlZCkKKyAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9z
dHlsZS0+c2V0V2FwSW5wdXRSZXF1aXJlZChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZVRydWUpOworICAgIH0KKyNlbmRpZiAKICAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxp
ZDoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3RyZXRjaDoKSW5k
ZXg6IGNzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NQYXJzZXIuY3BwCShy
ZXZpc2lvbiA0NDM3OSkKKysrIGNzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjE4LDYgKzE2MTgsMTYgQEAKICAgICAgICAgcmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5k
KGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CiAgICAg
ICAgIHJldHVybiBwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoaW1wb3J0YW50KTsKKyNpZiBFTkFC
TEUoV0NTUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQ6CisgICAgICAgIHZh
bGlkX3ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXYXBJbnB1dFJlcXVpcmVkOiB7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVRydWUgfHwg
aWQgPT0gQ1NTVmFsdWVGYWxzZSkKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyNlbmRpZiAKICAgICBjYXNlIENTU1Byb3BlcnR5SW52
YWxpZDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3Ry
ZXRjaDoKSW5kZXg6IGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA0NDM3OSkKKysrIGNzcy9DU1NQcm9wZXJ0eU5h
bWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsMyArMjM3LDUgQEAKIC13ZWJraXQtdXNlci1t
b2RpZnkKIC13ZWJraXQtdXNlci1zZWxlY3QKIC13ZWJraXQtdmFyaWFibGUtZGVjbGFyYXRpb24t
YmxvY2sKKy13YXAtaW5wdXQtZm9ybWF0Cistd2FwLWlucHV0LXJlcXVpcmVkCkluZGV4OiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShy
ZXZpc2lvbiA0NDM3OSkKKysrIGxvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzg2LDggKzM4Niw5IEBACiAgICAgdmlydHVhbCBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmco
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChj
b25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wpIHsgfQotCi0KKyNpZiBFTkFCTEUoV0NTUykKKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlSW52YWxpZElucHV0KCkgeyB9CisjZW5kaWYKIH07CiAKIGNsYXNzIEVt
cHR5Q29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgQ29udGV4dE1lbnVDbGllbnQgewo=
</data>
<flag name="review"
          id="15701"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>