<?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>23588</bug_id>
          
          <creation_ts>2009-01-28 08:51:38 -0800</creation_ts>
          <short_desc>Add inputmode attribute support, as per XHTML Basic 1.1</short_desc>
          <delta_ts>2022-07-28 12:39: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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>15836</blocked>
    
    <blocked>20517</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Treat">manyoso</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>annevk</cc>
    
    <cc>applesjgtl</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>charles.wei</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dom</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>mike</cc>
    
    <cc>morrita</cc>
    
    <cc>rniwa</cc>
    
    <cc>staikos</cc>
    
    <cc>syoichi</cc>
    
    <cc>tkent</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>107331</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-01-28 08:51:38 -0800</bug_when>
    <thetext>inputmode attribute support should be added to comply with:

http://www.w3.org/2008/06/mobile-test/

The attribute is defined and specified here:

http://www.w3.org/TR/xhtml-basic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107334</commentid>
    <comment_count>1</comment_count>
      <attachid>27108</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-01-28 09:08:01 -0800</bug_when>
    <thetext>Created attachment 27108
Patch from George to implement

Implements the basic skeleton for inputmode support.  The UI elements come next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107344</commentid>
    <comment_count>2</comment_count>
      <attachid>27108</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-28 10:30:14 -0800</bug_when>
    <thetext>Comment on attachment 27108
Patch from George to implement

I&apos;d be interested to hear more about what the rest of the support would look like.  Just adding this js accessor (especially if just to pass http://www.w3.org/2008/06/mobile-test/) seems silly.  Adding real inputmethod= support seems interesting, but I&apos;m not sure what that support would look like.  Maybe you can tell me more?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107349</commentid>
    <comment_count>3</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-01-28 10:58:15 -0800</bug_when>
    <thetext>We plan to implement all of the rest in our application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108127</commentid>
    <comment_count>4</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-02-03 10:04:35 -0800</bug_when>
    <thetext>Any reviewer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115060</commentid>
    <comment_count>5</comment_count>
      <attachid>27108</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-03-24 15:28:38 -0700</bug_when>
    <thetext>Comment on attachment 27108
Patch from George to implement

I don&apos;t think it is appropriate to unconditionally include this attribute as it will make feature detection incorrect for embedders who do not implement this functionality or do not want to.  That said, I am not sure what the correct #define would be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115064</commentid>
    <comment_count>6</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-03-24 15:37:27 -0700</bug_when>
    <thetext>ENABLE(INPUTMODE)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236307</commentid>
    <comment_count>7</comment_count>
      <attachid>58364</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2010-06-10 04:49:07 -0700</bug_when>
    <thetext>Created attachment 58364
patch for XHTML Basic 1.1

This patch is to add the XHTML Basic 1.1 support (conditionally with ENABLE_XHTMLBASIC), specifically, inputmethod support.

Attribute &quot;inputmethod&quot; for &quot;input&quot; and &quot;textarea&quot; element servers as a input method hint, so that we the control is in focus, the system automatically switchs to the input method indicated by &quot;inputmethod&quot; attribute.

This applies to most mobile devices which have limited input hardware, and need to switch between input methods to take advantage of limited hardware input capabilities.  The inputmode helps to facilitate the input method switching, otherwise, the user has to manually switches to the right input method.

The inputmode is only a &quot;hint&quot;, or suggestion, for the input method, it doesn&apos;t prevent the user from switching to other input methods manually, as they like, and it doesn&apos;t validate the acutally input from the user.

The patch addresses the WebCore part of this feature, and each porting need to implement a platform-specific interface to actually switch the input method, this can be done in an existing interface:  EditorClient::setInputMethodState(bool).

Before this patch, EditorClient::setInputMethodState(bool) only enables/disables the input method, automatically when the focus is on text node / non-text node.  The implementation of this API should also be responsible for switching to the right Input Method based on the inputmode value, so we are not going to  introduce a new API for EditorClient.

The patch contains a reference code in for QT, other portings can do similar to switch the Input Methods based on inputmode value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236463</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-10 11:31:48 -0700</bug_when>
    <thetext>Some comments in passing:

+contains(DEFINES, ENABLE_XHTMLBASIC=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_XHTMLBASIC=1

The feature should be implemented in a way that it either works, or is undetectable from JavaScript - even if someone mistakenly enables the feature define, this invariant shouldn&apos;t be broken.

+// The code is here for reference purpose, each platform should implement the input mode switching based on 
+// the platform capability and the inputmode attribute, like digit, upperCase, lowerCase, or any language-specific
+// input methods
+
+#if 0

We don&apos;t normally land commented out code. And implementation for a specific platform is not a place where one would easily find such explanation.

+        Need a short description and bug URL (OOPS!)

It does!

&gt; Index: LayoutTests/platform/qt/fast/xhtmlbasic/xhtmlbasic11-expected.txt

Is there a reason for the test to not be dumpAsText?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236464</commentid>
    <comment_count>9</comment_count>
      <attachid>58364</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-10 11:32:35 -0700</bug_when>
    <thetext>Comment on attachment 58364
patch for XHTML Basic 1.1

Actually, let me turn the above into a formal review, r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236624</commentid>
    <comment_count>10</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2010-06-10 18:18:33 -0700</bug_when>
    <thetext>&gt; +contains(DEFINES, ENABLE_XHTMLBASIC=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_XHTMLBASIC=1
&gt; 
&gt; The feature should be implemented in a way that it either works, or is undetectable from JavaScript - even if someone mistakenly enables the feature define, this invariant shouldn&apos;t be broken.
&gt; 

Alexey,  thanks for reviewing .

Will you please elaborate what you mean with above comments?   As I said in above comments,  this patch only addresses the WebCore part of this feature,  and each porting need to have the platform/device specific implementation for input-method switching.  Anybody who enables this feature with ENABLE_XHTMLBASIC need to have their own implementation to get it working.  But without this patch,  they hve no way to get it working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236639</commentid>
    <comment_count>11</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2010-06-10 18:58:48 -0700</bug_when>
    <thetext>*** Bug 16178 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236641</commentid>
    <comment_count>12</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2010-06-10 18:59:57 -0700</bug_when>
    <thetext>*** Bug 16486 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236659</commentid>
    <comment_count>13</comment_count>
      <attachid>58440</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2010-06-10 20:10:07 -0700</bug_when>
    <thetext>Created attachment 58440
Resubmission after addressing reviewer&apos;s comments

1. Reference platform-specific implementation of EditorClientQT::setInputModeStatus(bool) removed, leave it for platform/device implementations.
2. test case xhtmlbasic11.xhtml  used dumpAsText
3. ChangeLog comments added for WebKitTools/ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236716</commentid>
    <comment_count>14</comment_count>
      <attachid>58440</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-11 00:29:33 -0700</bug_when>
    <thetext>Comment on attachment 58440
Resubmission after addressing reviewer&apos;s comments

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 60986)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,22 @@
&gt; +2010-06-10  Charles Wei  &lt;charles.wei@torchmobile.com.cn&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add XHTML Basic 1.1 support for &quot;inputmode&quot; attribute for &quot;input&quot; and &quot;textarea&quot; element
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=23588
&gt; +
&gt; +        Tests: fast/xhtmlbasic/inputmode.xhtml
&gt; +               fast/xhtmlbasic/xhtmlbasic11.xhtml
&gt; +
&gt; +        * WebCore.pri:
&gt; +        * html/HTMLAttributeNames.in:
&gt; +        * html/HTMLFormControlElement.cpp:
&gt; +        (WebCore::HTMLTextFormControlElement::inputmode):
&gt; +        (WebCore::HTMLTextFormControlElement::setInputmode):
&gt; +        * html/HTMLFormControlElement.h:
&gt; +        * html/HTMLInputElement.idl:
&gt; +        * html/HTMLTextAreaElement.idl:
&gt; +
&gt;  2010-06-10  Tony Chang  &lt;tony@chromium.org&gt;
&gt;  
&gt;          Reviewed by Kent Tamura.
&gt; Index: WebCore/WebCore.pri
&gt; ===================================================================
&gt; --- WebCore/WebCore.pri	(revision 60986)
&gt; +++ WebCore/WebCore.pri	(working copy)
&gt; @@ -159,6 +159,7 @@ contains(DEFINES, ENABLE_FILTERS=1): FEA
&gt;  contains(DEFINES, ENABLE_WCSS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_WCSS=1
&gt;  contains(DEFINES, ENABLE_WML=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_WML=1
&gt;  contains(DEFINES, ENABLE_XHTMLMP=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_XHTMLMP=1
&gt; +contains(DEFINES, ENABLE_XHTMLBASIC=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_XHTMLBASIC=1
&gt;  contains(DEFINES, ENABLE_SVG=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_SVG=1
&gt;  contains(DEFINES, ENABLE_JAVASCRIPT_DEBUGGER=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_JAVASCRIPT_DEBUGGER=1
&gt;  contains(DEFINES, ENABLE_OFFLINE_WEB_APPLICATIONS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_OFFLINE_WEB_APPLICATIONS=1
&gt; Index: WebCore/html/HTMLAttributeNames.in
&gt; ===================================================================
&gt; --- WebCore/html/HTMLAttributeNames.in	(revision 60986)
&gt; +++ WebCore/html/HTMLAttributeNames.in	(working copy)
&gt; @@ -107,6 +107,7 @@ http_equiv
&gt;  id
&gt;  incremental
&gt;  indeterminate
&gt; +inputmode
&gt;  ismap
&gt;  keytype
&gt;  label
&gt; Index: WebCore/html/HTMLFormControlElement.cpp
&gt; ===================================================================
&gt; --- WebCore/html/HTMLFormControlElement.cpp	(revision 60986)
&gt; +++ WebCore/html/HTMLFormControlElement.cpp	(working copy)
&gt; @@ -637,4 +637,16 @@ void HTMLTextFormControlElement::parseMa
&gt;          HTMLFormControlElementWithState::parseMappedAttribute(attr);
&gt;  }
&gt;  
&gt; +#if ENABLE(XHTMLBASIC)
&gt; +String HTMLTextFormControlElement::inputmode() const
&gt; +{
&gt; +    return getAttribute(inputmodeAttr).string();
&gt; +}
&gt; +
&gt; +void HTMLTextFormControlElement::setInputmode(const String&amp; value)
&gt; +{
&gt; +    setAttribute(inputmodeAttr, value);
&gt; +}
&gt; +#endif
&gt; +
&gt;  } // namespace Webcore
&gt; Index: WebCore/html/HTMLFormControlElement.h
&gt; ===================================================================
&gt; --- WebCore/html/HTMLFormControlElement.h	(revision 60986)
&gt; +++ WebCore/html/HTMLFormControlElement.h	(working copy)
&gt; @@ -189,6 +189,13 @@ public:
&gt;      void setSelectionRange(int start, int end);
&gt;      VisibleSelection selection() const;
&gt;  
&gt; +#if ENABLE(XHTMLBASIC)
&gt; +    virtual String value() const = 0;
&gt; +    String inputmode() const;
&gt; +    void setInputmode(const String&amp;);
&gt; +#endif
&gt; +
&gt; +
&gt;  protected:
&gt;      HTMLTextFormControlElement(const QualifiedName&amp;, Document*, HTMLFormElement*);
&gt;  
&gt; Index: WebCore/html/HTMLInputElement.idl
&gt; ===================================================================
&gt; --- WebCore/html/HTMLInputElement.idl	(revision 60986)
&gt; +++ WebCore/html/HTMLInputElement.idl	(working copy)
&gt; @@ -98,6 +98,11 @@ module html {
&gt;  
&gt;          readonly attribute FileList files;
&gt;          readonly attribute  NodeList       labels;
&gt; +
&gt; +#if defined(ENABLE_XHTMLBASIC) &amp;&amp; ENABLE_XHTMLBASIC
&gt; +                 attribute [ConvertNullToNullString] DOMString       inputmode;
&gt; +#endif
&gt; +
&gt;      };
&gt;  
&gt;  }
&gt; Index: WebCore/html/HTMLTextAreaElement.idl
&gt; ===================================================================
&gt; --- WebCore/html/HTMLTextAreaElement.idl	(revision 60986)
&gt; +++ WebCore/html/HTMLTextAreaElement.idl	(working copy)
&gt; @@ -51,6 +51,10 @@ module html {
&gt;                   attribute long selectionEnd;
&gt;          void setSelectionRange(in long start, in long end);
&gt;          readonly attribute  NodeList              labels;
&gt; +
&gt; +#if defined(ENABLE_XHTMLBASIC) &amp;&amp; ENABLE_XHTMLBASIC
&gt; +                 attribute [ConvertNullToNullString]  DOMString            inputmode;
&gt; +#endif
&gt;      };
&gt;  
&gt;  }
&gt; Index: WebKitTools/ChangeLog
&gt; ===================================================================
&gt; --- WebKitTools/ChangeLog	(revision 60986)
&gt; +++ WebKitTools/ChangeLog	(working copy)
&gt; @@ -1,3 +1,14 @@
&gt; +2010-06-10  Charles Wei  &lt;charles.wei@torchmobile.com.cn&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add feature &quot;XHTML Basic 1.1 support with ENABLE_XHTMLBASIC
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=23588
&gt; +
&gt; +        * Scripts/build-webkit:
&gt; +        * Scripts/old-run-webkit-tests:
&gt; +        * Scripts/webkitperl/features.pm:
&gt; +
&gt;  2010-06-10  Ojan Vafai  &lt;ojan@chromium.org&gt;
&gt;  
&gt;          Reviewed by Alexey Proskuryakov.
&gt; Index: WebKitTools/Scripts/build-webkit
&gt; ===================================================================
&gt; --- WebKitTools/Scripts/build-webkit	(revision 60986)
&gt; +++ WebKitTools/Scripts/build-webkit	(working copy)
&gt; @@ -59,7 +59,7 @@ my ($threeDCanvasSupport, $threeDRenderi
&gt;      $domStorageSupport, $eventsourceSupport, $filtersSupport, $geolocationSupport, $iconDatabaseSupport, $imageResizerSupport, $indexedDatabaseSupport,
&gt;      $javaScriptDebuggerSupport, $mathmlSupport, $offlineWebApplicationSupport, $rubySupport, $systemMallocSupport, $sandboxSupport, $sharedWorkersSupport,
&gt;      $svgSupport, $svgAnimationSupport, $svgAsImageSupport, $svgDOMObjCBindingsSupport, $svgFontsSupport,
&gt; -    $svgForeignObjectSupport, $svgUseSupport, $videoSupport, $webSocketsSupport, $wmlSupport, $wcssSupport, $xhtmlmpSupport, $workersSupport,
&gt; +    $svgForeignObjectSupport, $svgUseSupport, $videoSupport, $webSocketsSupport, $wmlSupport, $wcssSupport, $xhtmlmpSupport, $xhtmlbasicSupport, $workersSupport,
&gt;      $xpathSupport, $xsltSupport, $coverageSupport, $notificationsSupport, $blobSliceSupport, $tiledBackingStoreSupport,
&gt;      $fileReaderSupport, $fileWriterSupport);
&gt;  
&gt; @@ -172,6 +172,9 @@ my @features = (
&gt;      { option =&gt; &quot;xhtmlmp&quot;, desc =&gt; &quot;Toggle XHTML-MP support&quot;,
&gt;        define =&gt; &quot;ENABLE_XHTMLMP&quot;, default =&gt; 0, value =&gt; \$xhtmlmpSupport },
&gt;  
&gt; +    { option =&gt; &quot;xhtmlbasic&quot;, desc =&gt; &quot;Toggle XHTML Basic 1.1 support&quot;,
&gt; +      define =&gt; &quot;ENABLE_XHTMLBASIC&quot;, default =&gt; 0, value =&gt; \$xhtmlbasicSupport },
&gt; +
&gt;      { option =&gt; &quot;wcss&quot;, desc =&gt; &quot;Toggle WCSS support&quot;,
&gt;        define =&gt; &quot;ENABLE_WCSS&quot;, default =&gt; 0, value =&gt; \$wcssSupport },
&gt;  
&gt; Index: WebKitTools/Scripts/old-run-webkit-tests
&gt; ===================================================================
&gt; --- WebKitTools/Scripts/old-run-webkit-tests	(revision 60986)
&gt; +++ WebKitTools/Scripts/old-run-webkit-tests	(working copy)
&gt; @@ -518,6 +518,10 @@ if (!checkWebCoreFeatureSupport(&quot;WCSS&quot;,
&gt;      $ignoredDirectories{&apos;fast/wcss&apos;} = 1;
&gt;  }
&gt;  
&gt; +if (!checkWebCoreFeatureSupport(&quot;XHTMLBASIC&quot;, 0)) {
&gt; +    $ignoredDirectories{&apos;fast/xhtmlbasic&apos;} = 1;
&gt; +}
&gt; +
&gt;  if (!checkWebCoreFeatureSupport(&quot;XHTMLMP&quot;, 0)) {
&gt;      $ignoredDirectories{&apos;fast/xhtmlmp&apos;} = 1;
&gt;  }
&gt; Index: WebKitTools/Scripts/webkitperl/features.pm
&gt; ===================================================================
&gt; --- WebKitTools/Scripts/webkitperl/features.pm	(revision 60986)
&gt; +++ WebKitTools/Scripts/webkitperl/features.pm	(working copy)
&gt; @@ -74,6 +74,7 @@ sub hasFeature($$)
&gt;          &quot;WML&quot; =&gt; &quot;WMLElement&quot;,
&gt;          &quot;WCSS&quot; =&gt; &quot;parseWCSSInputProperty&quot;,
&gt;          &quot;XHTMLMP&quot; =&gt; &quot;isXHTMLMPDocument&quot;,
&gt; +        &quot;XHTMLBASIC&quot; =&gt; &quot;setInputmode&quot;,
&gt;      );
&gt;      my $symbolName = $symbolForFeature{$featureName};
&gt;      die &quot;Unknown feature: $featureName&quot; unless $symbolName;
&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================
&gt; --- LayoutTests/ChangeLog	(revision 60986)
&gt; +++ LayoutTests/ChangeLog	(working copy)
&gt; @@ -1,3 +1,16 @@
&gt; +2010-06-10  Charles Wei  &lt;charles.wei@torchmobile.com.cn&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add test cases for XHTML Basic 1.1
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=23588
&gt; +
&gt; +        * fast/xhtmlbasic: Added.
&gt; +        * fast/xhtmlbasic/inputmode-expected.txt: Added.
&gt; +        * fast/xhtmlbasic/inputmode.xhtml: Added.
&gt; +        * fast/xhtmlbasic/xhtmlbasic11-expected.txt: Added.
&gt; +        * fast/xhtmlbasic/xhtmlbasic11.xhtml: Added.
&gt; +
&gt;  2010-06-10  Tony Chang  &lt;tony@chromium.org&gt;
&gt;  
&gt;          Reviewed by Kent Tamura.
&gt; Index: LayoutTests/fast/xhtmlbasic/inputmode-expected.txt
&gt; ===================================================================
&gt; --- LayoutTests/fast/xhtmlbasic/inputmode-expected.txt	(revision 0)
&gt; +++ LayoutTests/fast/xhtmlbasic/inputmode-expected.txt	(revision 0)
&gt; @@ -0,0 +1,13 @@
&gt; + 
&gt; +Verifies initial inputmode for input is &apos;digit&apos; :
&gt; +PASS document.getElementById(&quot;input&quot;).inputmode is &quot;digit&quot;
&gt; +
&gt; +Verifies inputmode for input is changed to &apos;latin&apos; : 
&gt; +PASS document.getElementById(&quot;input&quot;).inputmode is &quot;latin&quot;
&gt; +
&gt; +Verifies initial inputmode for textarea is &apos;upperCase&apos; : 
&gt; +PASS document.getElementById(&quot;textarea&quot;).inputmode is &quot;upperCase&quot;
&gt; +
&gt; +Verifies inputmode for textarea is changed to &apos;lowerCase&apos; : 
&gt; +PASS document.getElementById(&quot;textarea&quot;).inputmode is &quot;lowerCase&quot;
&gt; +
&gt; Index: LayoutTests/fast/xhtmlbasic/inputmode.xhtml
&gt; ===================================================================
&gt; --- LayoutTests/fast/xhtmlbasic/inputmode.xhtml	(revision 0)
&gt; +++ LayoutTests/fast/xhtmlbasic/inputmode.xhtml	(revision 0)
&gt; @@ -0,0 +1,42 @@
&gt; +&lt;?xml version=&quot;1.0&quot;?&gt;
&gt; +&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML Basic 1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd&quot;&gt;
&gt; +&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&gt; +&lt;head&gt;
&gt; +&lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;/head&gt;
&gt; +
&gt; +&lt;body&gt;
&gt; +&lt;input type=&quot;text&quot; id=&quot;input&quot; inputmode=&quot;digit&quot; /&gt;
&gt; +&lt;textarea id=&quot;textarea&quot; inputmode=&quot;upperCase&quot; /&gt;
&gt; +
&gt; +&lt;p id=&quot;console&quot;&gt; &lt;/p&gt;
&gt; +
&gt; +&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;
&gt; +
&gt; +function log(message) {
&gt; +    document.getElementById(&quot;console&quot;).innerHTML +=  message ;
&gt; +}
&gt; +    if (window.layoutTestController)
&gt; +        layoutTestController.dumpAsText();
&gt; +
&gt; +    debug(&quot;Verifies initial inputmode for input is &apos;digit&apos; : &quot; );
&gt; +    shouldBe(&apos;document.getElementById(&quot;input&quot;).inputmode&apos; , &apos;&quot;digit&quot;&apos;);
&gt; +    debug(&quot;&quot;);
&gt; +
&gt; +    document.getElementById(&quot;input&quot;).inputmode = &quot;latin&quot;;
&gt; +    debug(&quot;Verifies inputmode for input is changed to &apos;latin&apos; : &quot; );
&gt; +    shouldBe(&apos;document.getElementById(&quot;input&quot;).inputmode&apos;, &apos;&quot;latin&quot;&apos; );
&gt; +    debug(&quot;&quot;);
&gt; +
&gt; +    debug(&quot;Verifies initial inputmode for textarea is &apos;upperCase&apos; : &quot;);
&gt; +    shouldBe(&apos;document.getElementById(&quot;textarea&quot;).inputmode&apos;, &apos;&quot;upperCase&quot;&apos;);
&gt; +    debug(&quot;&quot;);
&gt; +
&gt; +    document.getElementById(&quot;textarea&quot;).inputmode = &quot;lowerCase&quot;;
&gt; +    debug(&quot;Verifies inputmode for textarea is changed to &apos;lowerCase&apos; : &quot;);
&gt; +    shouldBe(&apos;document.getElementById(&quot;textarea&quot;).inputmode&apos;,  &apos;&quot;lowerCase&quot;&apos;);
&gt; +
&gt; +&lt;/script&gt;
&gt; +
&gt; +&lt;/body&gt;
&gt; +&lt;/html&gt;
&gt; Index: LayoutTests/fast/xhtmlbasic/xhtmlbasic11-expected.txt
&gt; ===================================================================
&gt; --- LayoutTests/fast/xhtmlbasic/xhtmlbasic11-expected.txt	(revision 0)
&gt; +++ LayoutTests/fast/xhtmlbasic/xhtmlbasic11-expected.txt	(revision 0)
&gt; @@ -0,0 +1,3 @@
&gt; +This test case verifies XHTML Basic 1.1 DOCTYPE is correctly parsed and rendered.
&gt; +
&gt; +PASS
&gt; Index: LayoutTests/fast/xhtmlbasic/xhtmlbasic11.xhtml
&gt; ===================================================================
&gt; --- LayoutTests/fast/xhtmlbasic/xhtmlbasic11.xhtml	(revision 0)
&gt; +++ LayoutTests/fast/xhtmlbasic/xhtmlbasic11.xhtml	(revision 0)
&gt; @@ -0,0 +1,19 @@
&gt; +&lt;?xml version=&quot;1.0&quot;?&gt;
&gt; +&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML Basic 1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd&quot;&gt;
&gt; +
&gt; +&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&gt; +&lt;head&gt;
&gt; +&lt;title&gt;Test document conformance of XHTML Basic 1.1 &lt;/title&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body&gt;
&gt; +&lt;p&gt; This test case verifies XHTML Basic 1.1 DOCTYPE is correctly parsed and rendered. &lt;/p&gt;
&gt; +&lt;p id=&quot;console&quot;&gt; &lt;/p&gt;
&gt; +&lt;script type=&quot;text/javascript&quot;&gt;
&gt; +    if (window.layoutTestController){
&gt; +        layoutTestController.dumpAsText();
&gt; +    }
&gt; +    document.getElementById(&quot;console&quot;).innerHTML = &quot;PASS&quot;;
&gt; +
&gt; +&lt;/script&gt;
&gt; +&lt;/body&gt;
&gt; +&lt;/html&gt;

WebCore/html/HTMLFormControlElement.h:195
 +      void setInputmode(const String&amp;);
Are inputmode() and setInputmode() really needed?  We can omit them by adding [Reflect] in IDL files, and platform-dependent code can access them by getAttribute() and setAttribute().


LayoutTests/ChangeLog:12
 +          * fast/xhtmlbasic/xhtmlbasic11.xhtml: Added.
We should add these tests to Skipped files of unsupported platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236719</commentid>
    <comment_count>15</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-11 00:51:32 -0700</bug_when>
    <thetext>Oops, I&apos;m sorry for not removing the entire patch from the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236738</commentid>
    <comment_count>16</comment_count>
      <attachid>58455</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2010-06-11 02:12:46 -0700</bug_when>
    <thetext>Created attachment 58455
Resubmission after addressing reviewer&apos;s comments

Thanks Kent for the review .

Resubmitting following Kent&apos;s comments,  with the following comments:


1. Removed the HTMLTextFormControlElement::inputmode() and HTMLTextFormControlElement::setInputmode(), and add modifier &quot;Reflect&quot; in the idl file of HTMLInputElement and HTMLTextAreaInput so that we don&apos;t need to define inputmode() and setInputmode() 

2. The test cases will be automatically skipped by unsupported platforms, we don&apos;t need to add them to skip files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240601</commentid>
    <comment_count>17</comment_count>
      <attachid>58455</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-20 23:12:12 -0700</bug_when>
    <thetext>Comment on attachment 58455
Resubmission after addressing reviewer&apos;s comments

You need to change more files to introduce a feature flag. e.g. */FeatureDefines.xcconfig, features.gypi.  Bug#40878 has a good example.

WebCore/html/HTMLInputElement.idl:103
 +                   attribute [ConvertNullToNullString, Reflect] DOMString       inputmode;
You don&apos;t need ConvertNullToNullString anymore.  Reflect implies it.


WebCore/html/HTMLTextAreaElement.idl:56
 +                   attribute [ConvertNullToNullString, Reflect]  DOMString            inputmode;
ditto.

WebKitTools/ChangeLog:5
 +          Add feature &quot;XHTML Basic 1.1 support with ENABLE_XHTMLBASIC
Unclosed &quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249489</commentid>
    <comment_count>18</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2010-07-10 01:31:47 -0700</bug_when>
    <thetext>Should this be implemented at all given that it is not in HTML5?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249503</commentid>
    <comment_count>19</comment_count>
    <who name="sideshowbarker">mike</who>
    <bug_when>2010-07-10 03:40:12 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Should this be implemented at all given that it is not in HTML5?

Also, I don&apos;t know of any other deployed UA that actually supports the inputmode attribute.

So, another thing to consider is whether there&apos;s actually any existing content (even WAP/mobile-only content) that uses the inputmode attribute. It would seem like there would not be -- since there&apos;s no other UA that supports inputmode.

But if this starts shipping in Webkit-based browsers, then it is likely that some content providers will start using it. I think we should be carefully considering whether we want that to happen -- because then other UA vendors will then be expected to add support for it as well, and incur development and testing costs in order to do that. So the question is whether inputmode is important enough that all UA vendors should add support for it.

An important thing to note is that inputmode essentially duplicates functionality that&apos;s already provided in most deployed mobile UAs through other means -- chiefly through the &quot;-wap-input-format&quot;, which has for better or worse become a de facto standard, and is (as I understand it) already supported in Webkit and in Opera and in all modern WAP browsers.

And the -wap-input-format is already used in a huge amount of existing (mobile-only/mobile-friendly) content. So to some degree, the inputmode is reinventing a wheel in spite of that fact that there&apos;s no actually no market need/demand for it to be reinvented.

All that said, I&apos;ll concede that I am not really up to date with details of the current market situation around mobile browsers, so it could be that what I have written above no longer applies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249516</commentid>
    <comment_count>20</comment_count>
    <who name="Dominique Hazael-Massieux">dom</who>
    <bug_when>2010-07-10 08:26:26 -0700</bug_when>
    <thetext>-wap-input-format isn&apos;t actually supported by most Webkit mobile browsers as far as I know; it isn&apos;t supported on the iPhone for sure.

Currently, the iPhone relies on form control names convention (e.g. including phone or zip in the name of the field) to trigger the numerical virtual keypad, which seems suboptimal at best.

I think the inputmode attribute has clearly a role to play to improve keyboard input on mobile devices, esp. with the rise of virtual keyboards.

It used to be part of HTML5, but was removed due to lack of implementations (from what I remember) — so I&apos;m hoping a proposal to implement it won&apos;t be blocked by its lack of inclusion in HTML5!

From what I know, Opera has the infrastructure to implement the inputmode attribute (i.e. it is properly parsed as part of the DOM), but hasn&apos;t exposed it in its deployed browsers (yet?).

To summarize, I really hope inputmode is given a chance, and ends up being added to HTML5; I can&apos;t count the number of times I wish it was available on Web sites I visit from my mobile devices...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452399</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-08-17 11:25:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/6234688&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657228</commentid>
    <comment_count>22</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-06-25 20:38:56 -0700</bug_when>
    <thetext>Is the issue trying to be tackled here resolved by the new HTML5 input types like &quot;tel&quot; and &quot;number&quot; ?

There&apos;s only a few things that seem to be missing wrt. to inputmode like telling the browser not to capitalize the first letter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675189</commentid>
    <comment_count>23</comment_count>
    <who name="sideshowbarker">mike</who>
    <bug_when>2012-07-20 23:27:57 -0700</bug_when>
    <thetext>Yesterday Hixie added a new inputmode attribute to the current HTML5 spec:

  http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#attr-inputmode

It&apos;s not based on the existing spec for the XHTML Basic 1.1 inputmode attribute. It doesn&apos;t (yet) allow modifier tokens, for one thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840093</commentid>
    <comment_count>24</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-10 19:22:06 -0800</bug_when>
    <thetext>*** Bug 20517 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1887412</commentid>
    <comment_count>25</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-07-28 12:33:35 -0700</bug_when>
    <thetext>I get following results across all browsers:

*** Safari 15.6 on macOS 12.5 ***

XSLTProcessor param namespace test

$param = namespace-2 param
$ns1:param = not set
$ns2:param = not set
XSLTProcessor param namespace test

$param = non-namespaced param
$ns1:param = namespace-1 param
$ns2:param = namespace-2 param

*** Chrome Canary 106 ***

Same as Safari 15.6 above

*** Firefox Nightly 105 ***

XSLTProcessor param namespace test
$param = non-namespaced param
$ns1:param = namespace-1 param
$ns2:param = namespace-2 param

XSLTProcessor param namespace test
$param = non-namespaced param
$ns1:param = not set
$ns2:param = not set

_______

I am not sure on web-specs but just wanted to share latest results. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1887416</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-07-28 12:39:32 -0700</bug_when>
    <thetext>inputmode is supported by WebKit now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27108</attachid>
            <date>2009-01-28 09:08:01 -0800</date>
            <delta_ts>2010-06-11 15:56:59 -0700</delta_ts>
            <desc>Patch from George to implement</desc>
            <filename>inputmode.patch</filename>
            <type>text/plain</type>
            <size>6298</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTJhOTBmOC4uM2UzMWU1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNSBAQAogMjAwOS0wMS0yOCAgQWRhbSBUcmVhdCAg
PGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU4OAorICAgICAgICBQYXRjaCBmcm9tIEdlb3JnZSBTdGFpa29zIHRvIGFkZCBpbnB1
dG1vZGUgYXR0cmlidXRlIHNwZWNpZmllZCBpbjoKKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcv
VFIveGh0bWwtYmFzaWMKKworICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpzZXRJbnB1dG1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6aW5wdXRtb2RlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFF
bGVtZW50OjpzZXRJbnB1dG1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6aW5wdXRtb2RlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsOgorCisyMDA5LTAxLTI4ICBB
ZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3JjaG1vYmlsZS5jb20+CisKICAgICAgICAgUmV2aWV3
ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uIGFuZCBHZW9yZ2UgU3RhaWtvcy4KIAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTcKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCmluZGV4IDg3MzFlY2QuLjk4MGNjYTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbgpAQCAtNzksNiArNzksNyBAQCBoc3BhY2UKIGh0dHBfZXF1aXYKIGlkCiBp
bmNyZW1lbnRhbAoraW5wdXRtb2RlCiBpc21hcAoga2V5dHlwZQogbGFiZWwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAppbmRleCBiZTFkM2U3Li5kNDU0YjVmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCkBAIC0xMDExLDYgKzEwMTEsMTYgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojpz
dG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldElucHV0bW9kZShjb25zdCBTdHJpbmcm
IHZhbHVlKQoreworICAgIHJldHVybiBzZXRBdHRyaWJ1dGUoaW5wdXRtb2RlQXR0ciwgdmFsdWUp
OworfQorCitTdHJpbmcgSFRNTElucHV0RWxlbWVudDo6aW5wdXRtb2RlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZ2V0QXR0cmlidXRlKGlucHV0bW9kZUF0dHIpLnN0cmluZygpOworfQorCiB2b2lk
KiBIVE1MSW5wdXRFbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCAqZXZ0KQog
ewogICAgIC8vIHByZXZlbnREZWZhdWx0IG9yICJyZXR1cm4gZmFsc2UiIGFyZSB1c2VkIHRvIHJl
dmVyc2UgdGhlIGF1dG9tYXRpYyBjaGVja2luZy9zZWxlY3Rpb24gd2UgZG8gaGVyZS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IGZkN2NlMDMuLjMzY2I1YmMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMyw2ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTEwOSw2ICsxMTAsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdmFs
dWVXaXRoRGVmYXVsdCgpIGNvbnN0OwogCisgICAgU3RyaW5nIGlucHV0bW9kZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0SW5wdXRtb2RlKGNvbnN0IFN0cmluZyYpOworCiAgICAgdmlydHVhbCB2b2lk
IHNldFZhbHVlRnJvbVJlbmRlcmVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RmlsZUxp
c3RGcm9tUmVuZGVyZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaWRsCmluZGV4IGRjZTEzMTkuLjBkN2MxYmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5pZGwKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4g
aHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ4LDYg
KzQ5LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdHlwZTsgLy8gcmVhZG9ubHkgZHJvcHBlZCBh
cyBwYXJ0IG9mIERPTSBsZXZlbCAyCiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB1c2VNYXA7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB2YWx1ZTsKKyAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IGlucHV0bW9kZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICB3
aWxsVmFsaWRhdGU7CiAgICAgICAgIHZvaWQgICAgICAgICAgICAgICBzZWxlY3QoKTsKICAgICAg
ICAgdm9pZCAgICAgICAgICAgICAgIGNsaWNrKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKaW5kZXggMmQ0ZDdhOS4uZGY1YzQyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcApAQCAtMzQ5LDYgKzM0OSwxNiBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNl
dERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKICAgICBzZXRWYWx1ZSh2
YWx1ZSk7CiB9CiAKK3ZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0SW5wdXRtb2RlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCit7CisgICAgcmV0dXJuIHNldEF0dHJpYnV0ZShpbnB1dG1vZGVBdHRy
LCB2YWx1ZSk7Cit9CisKK1N0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjppbnB1dG1vZGUoKSBj
b25zdAoreworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoaW5wdXRtb2RlQXR0cikuc3RyaW5nKCk7
Cit9CisKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wpCiB7
CiAgICAgZm9jdXMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGYwMmFkNjUu
LmFiZTc4ZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtMyw2ICszLDcgQEAK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIElu
Yy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzUsNyArNzYsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgZGVmYXVsdFZhbHVlKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJik7Ci0gICAgCisgICAg
U3RyaW5nIGlucHV0bW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0SW5wdXRtb2RlKGNvbnN0IFN0
cmluZyYpOworCiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3llZCgpOwogICAgIAogICAg
IHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kVG9BbnlFbGVtZW50KTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbCBiL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAppbmRleCBjNGYxNDRiLi4zYTE5NjlmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICogQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChD
KSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLwogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0zNiw2ICszNyw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAgICAgICAgICByb3dzOwogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0cmluZyAgICAgICAgICAgIHR5cGU7CiAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAg
ICAgICAgICB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIGlucHV0bW9kZTsKICAgICAgICAgCiAg
ICAgICAgIHZvaWQgICAgIHNlbGVjdCgpOwogCg==
</data>
<flag name="review"
          id="13023"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58364</attachid>
            <date>2010-06-10 04:49:07 -0700</date>
            <delta_ts>2010-06-10 20:10:07 -0700</delta_ts>
            <desc>patch for XHTML Basic 1.1</desc>
            <filename>xhtmlbasic.patch</filename>
            <type>text/plain</type>
            <size>14931</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDk1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYtMTAgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBYSFRNTCBCYXNpYyAxLjEgc3VwcG9ydCBvZiBpbnB1dG1vZGUgYXR0cmli
dXRlIGZvciBpbnB1dCBhbmQgdGV4dGFyZWEgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODgKKworICAgICAgICBUZXN0czogZmFzdC94
aHRtbGJhc2ljL2lucHV0bW9kZS54aHRtbAorICAgICAgICAgICAgICAgZmFzdC94aHRtbGJhc2lj
L3hodG1sYmFzaWMxMS54aHRtbAorCisgICAgICAgICogV2ViQ29yZS5wcmk6CisgICAgICAgICog
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjppbnB1dG1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldElucHV0bW9kZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBo
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsOgorCiAyMDEwLTA2LTA5ICBNT1JJVEEgSGFqaW1l
ICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUucHJpCShyZXZpc2lvbiA2MDk1MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OSw2ICsxNTksNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMVEVS
Uz0xKTogRkVBCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0NTUz0xKTogRkVBVFVSRV9ERUZJ
TkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dDU1M9MQogY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1dNTD0xKTogRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dNTD0xCiBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfWEhUTUxNUD0xKTogRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJ
UFQgKz0gRU5BQkxFX1hIVE1MTVA9MQorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hIVE1MQkFT
SUM9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9YSFRNTEJBU0lDPTEK
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NS
SVBUICs9IEVOQUJMRV9TVkc9MQogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVI9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9KQVZBU0NS
SVBUX0RFQlVHR0VSPTEKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBM
SUNBVElPTlM9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlM9MQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShy
ZXZpc2lvbiA2MDk1MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCBodHRwX2VxdWl2CiBpZAogaW5jcmVtZW50
YWwKIGluZGV0ZXJtaW5hdGUKK2lucHV0bW9kZQogaXNtYXAKIGtleXR5cGUKIGxhYmVsCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDk1MSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjM3LDQgKzYzNywxNiBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpw
YXJzZU1hCiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpOwogfQogCisjaWYgRU5BQkxFKFhIVE1MQkFTSUMpCitTdHJpbmcg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmlucHV0bW9kZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGdldEF0dHJpYnV0ZShpbnB1dG1vZGVBdHRyKS5zdHJpbmcoKTsKK30KKwordm9pZCBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5wdXRtb2RlKGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgc2V0QXR0cmlidXRlKGlucHV0bW9kZUF0dHIsIHZhbHVlKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgJKHJldmlzaW9uIDYwOTUxKQorKysgV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQpOwogICAgIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoWEhUTUxCQVNJQykK
KyAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsKKyAgICBTdHJpbmcgaW5wdXRt
b2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRJbnB1dG1vZGUoY29uc3QgU3RyaW5nJik7CisjZW5k
aWYKKworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDYwOTUxKQorKysgV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCwxMSBAQCBt
b2R1bGUgaHRtbCB7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZpbGVMaXN0IGZpbGVz
OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIE5vZGVMaXN0ICAgICAgIGxhYmVsczsKKwor
I2lmIGRlZmluZWQoRU5BQkxFX1hIVE1MQkFTSUMpICYmIEVOQUJMRV9YSFRNTEJBU0lDCisgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyAgICAgICBpbnB1dG1vZGU7CisjZW5kaWYKKwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDYwOTUxKQorKysgV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSwxMCBA
QCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGlv
bkVuZDsKICAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbiBsb25nIHN0YXJ0LCBpbiBs
b25nIGVuZCk7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSAgTm9kZUxpc3QgICAgICAgICAg
ICAgIGxhYmVsczsKKworI2lmIGRlZmluZWQoRU5BQkxFX1hIVE1MQkFTSUMpICYmIEVOQUJMRV9Y
SFRNTEJBU0lDCisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmddICBET01TdHJpbmcgICAgICAgICAgICBpbnB1dG1vZGU7CisjZW5kaWYKICAgICB9Owog
CiB9CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYwOTUxKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA2LTEwICBDaGFybGVzIFdlaSAgPGNoYXJs
ZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBdHRyaWJ1dGUgImlucHV0bW9kZSIgZm9yIGlucHV0IGFuZCB0
ZXh0YXJlYSBkZWZpbmVkIGluIFhIVE1MIEJhc2ljIDEuMSBjYW4gYmUgdXNlZCBhcyB0aGUgaW5w
dXQgbWV0aG9kCisgICAgICAgIGhpbnQsIGFuZCB0aGUgdXNlciBhZ2VudCBjYW4gc3dpdGNoIHRv
IHRoZSByaWdodCBpbnB1dCBtZXRob2QsIGluIHRoZSBFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0
aG9kU3RhdGUKKyAgICAgICAgd2hpY2ggb25seSBkZWFscyBlbmFibGluZy9kaXNhYmxpbmcgaW5w
dXQgbWV0aG9kcyBub3cuIFRoZSBuZXcgY29kZSBpcyBvbmx5IGEgcmVmZXJlbmNlLCBlYWNoIHBv
cnQgb2YKKyAgICAgICAgd2Via2l0IG5lZWQgdG8gcmUtaW1wbGVtZW50IHRoaXMgd2l0aCB0aGUg
cGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKwogMjAxMC0wNi0xMCAgRXJpYyBTZWlkZWwgIDxlcmlj
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2aXNpb24gNjA5
NTEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MTUsNiArNjE1LDMxIEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnNldElu
cHV0TWV0aG9kU3RhdGUKICAgICAgICAgd2ViUGFnZUNsaWVudC0+c2V0SW5wdXRNZXRob2RFbmFi
bGVkKGFjdGl2ZSk7CiAgICAgfQogICAgIGVtaXQgbV9wYWdlLT5taWNyb0ZvY3VzQ2hhbmdlZCgp
OworCisjaWYgRU5BQkxFKFhIVE1MQkFTSUMpCisvLyBUaGUgY29kZSBpcyBoZXJlIGZvciByZWZl
cmVuY2UgcHVycG9zZSwgZWFjaCBwbGF0Zm9ybSBzaG91bGQgaW1wbGVtZW50IHRoZSBpbnB1dCBt
b2RlIHN3aXRjaGluZyBiYXNlZCBvbiAKKy8vIHRoZSBwbGF0Zm9ybSBjYXBhYmlsaXR5IGFuZCB0
aGUgaW5wdXRtb2RlIGF0dHJpYnV0ZSwgbGlrZSBkaWdpdCwgdXBwZXJDYXNlLCBsb3dlckNhc2Us
IG9yIGFueSBsYW5ndWFnZS1zcGVjaWZpYworLy8gaW5wdXQgbWV0aG9kcworCisjaWYgMAorICAg
IGlmIChhY3RpdmUpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5kLT5wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgICAgIGlmIChmcmFt
ZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpLT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpIAorICAgICAgICAgICAgICAgfHwgZnJhbWUt
PmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZXh0YXJl
YVRhZykpIHsKKyAgICAgICAgICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4oZnJhbWUtPmRv
Y3VtZW50KCktPmZvY3VzZWROb2RlKCkpOworICAgICAgICAgICAgICAgIFN0cmluZyBpbnB1dG1v
ZGUgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppbnB1dG1vZGVBdHRyKS5zdHJp
bmcoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlucHV0bW9kZS5pc0VtcHR5KCkgJiYgZWxlbWVu
dC0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRv
IHN3aXRjaCB0byB0aGUgcmlnaHQgaW5wdXQgbWV0aG9kIGJhc2VkIG9uIGlucHV0bW9kZQorCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IAorICAgIH0KKyNlbmRp
ZgorI2VuZGlmCisKIH0KIAogfQpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjA5NTEpCisrKyBXZWJLaXRU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNi0x
MCAgQ2hhcmxlcyBXZWkgIDxjaGFybGVzLndlaUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRl
c2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQt
d2Via2l0OgorICAgICAgICAqIFNjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHM6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRwZXJsL2ZlYXR1cmVzLnBtOgorCiAyMDEwLTA2LTA5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZh
aS4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lvbiA2MDk1MSkKKysrIFdl
YktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1
OSw3IEBAIG15ICgkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRlcmkKICAgICAkZG9t
U3RvcmFnZVN1cHBvcnQsICRldmVudHNvdXJjZVN1cHBvcnQsICRmaWx0ZXJzU3VwcG9ydCwgJGdl
b2xvY2F0aW9uU3VwcG9ydCwgJGljb25EYXRhYmFzZVN1cHBvcnQsICRpbWFnZVJlc2l6ZXJTdXBw
b3J0LCAkaW5kZXhlZERhdGFiYXNlU3VwcG9ydCwKICAgICAkamF2YVNjcmlwdERlYnVnZ2VyU3Vw
cG9ydCwgJG1hdGhtbFN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0LCAkcnVi
eVN1cHBvcnQsICRzeXN0ZW1NYWxsb2NTdXBwb3J0LCAkc2FuZGJveFN1cHBvcnQsICRzaGFyZWRX
b3JrZXJzU3VwcG9ydCwKICAgICAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlvblN1cHBvcnQsICRz
dmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsICRzdmdGb250c1N1
cHBvcnQsCi0gICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNlU3VwcG9ydCwgJHZp
ZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdjc3NTdXBwb3J0
LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKKyAgICAkc3ZnRm9yZWlnbk9iamVj
dFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd2ViU29ja2V0c1N1cHBv
cnQsICR3bWxTdXBwb3J0LCAkd2Nzc1N1cHBvcnQsICR4aHRtbG1wU3VwcG9ydCwgJHhodG1sYmFz
aWNTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsCiAgICAgJHhwYXRoU3VwcG9ydCwgJHhzbHRTdXBw
b3J0LCAkY292ZXJhZ2VTdXBwb3J0LCAkbm90aWZpY2F0aW9uc1N1cHBvcnQsICRibG9iU2xpY2VT
dXBwb3J0LCAkdGlsZWRCYWNraW5nU3RvcmVTdXBwb3J0LAogICAgICRmaWxlUmVhZGVyU3VwcG9y
dCwgJGZpbGVXcml0ZXJTdXBwb3J0KTsKIApAQCAtMTcyLDYgKzE3Miw5IEBAIG15IEBmZWF0dXJl
cyA9ICgKICAgICB7IG9wdGlvbiA9PiAieGh0bWxtcCIsIGRlc2MgPT4gIlRvZ2dsZSBYSFRNTC1N
UCBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1hIVE1MTVAiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkeGh0bWxtcFN1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJ4aHRt
bGJhc2ljIiwgZGVzYyA9PiAiVG9nZ2xlIFhIVE1MIEJhc2ljIDEuMSBzdXBwb3J0IiwKKyAgICAg
IGRlZmluZSA9PiAiRU5BQkxFX1hIVE1MQkFTSUMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwk
eGh0bWxiYXNpY1N1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ3Y3NzIiwgZGVzYyA9PiAi
VG9nZ2xlIFdDU1Mgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XQ1NTIiwgZGVm
YXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHdjc3NTdXBwb3J0IH0sCiAKSW5kZXg6IFdlYktpdFRvb2xz
L1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
U2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkocmV2aXNpb24gNjA5NTEpCisrKyBXZWJLaXRU
b29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC01MTgs
NiArNTE4LDEwIEBAIGlmICghY2hlY2tXZWJDb3JlRmVhdHVyZVN1cHBvcnQoIldDU1MiLAogICAg
ICRpZ25vcmVkRGlyZWN0b3JpZXN7J2Zhc3Qvd2Nzcyd9ID0gMTsKIH0KIAoraWYgKCFjaGVja1dl
YkNvcmVGZWF0dXJlU3VwcG9ydCgiWEhUTUxCQVNJQyIsIDApKSB7CisgICAgJGlnbm9yZWREaXJl
Y3Rvcmllc3snZmFzdC94aHRtbGJhc2ljJ30gPSAxOworfQorCiBpZiAoIWNoZWNrV2ViQ29yZUZl
YXR1cmVTdXBwb3J0KCJYSFRNTE1QIiwgMCkpIHsKICAgICAkaWdub3JlZERpcmVjdG9yaWVzeydm
YXN0L3hodG1sbXAnfSA9IDE7CiB9CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvZmVhdHVyZXMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL2ZlYXR1cmVzLnBtCShyZXZpc2lvbiA2MDk1MSkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9mZWF0dXJlcy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBz
dWIgaGFzRmVhdHVyZSgkJCkKICAgICAgICAgIldNTCIgPT4gIldNTEVsZW1lbnQiLAogICAgICAg
ICAiV0NTUyIgPT4gInBhcnNlV0NTU0lucHV0UHJvcGVydHkiLAogICAgICAgICAiWEhUTUxNUCIg
PT4gImlzWEhUTUxNUERvY3VtZW50IiwKKyAgICAgICAgIlhIVE1MQkFTSUMiID0+ICJzZXRJbnB1
dG1vZGUiLAogICAgICk7CiAgICAgbXkgJHN5bWJvbE5hbWUgPSAkc3ltYm9sRm9yRmVhdHVyZXsk
ZmVhdHVyZU5hbWV9OwogICAgIGRpZSAiVW5rbm93biBmZWF0dXJlOiAkZmVhdHVyZU5hbWUiIHVu
bGVzcyAkc3ltYm9sTmFtZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwOTUxKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDYtMTAg
IENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyB0ZXN0IGNhc2Vz
IGZvciBYSFRNTCBCYXNpYyAxLjEgRE9DVFlQRSwgYW5kIGlucHV0bW9kZSBhdHRyaWJ1dGUgZGVm
aW5lZCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTg4CisKKyAgICAgICAgKiBmYXN0L3hodG1sYmFzaWM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
eGh0bWxiYXNpYy9pbnB1dG1vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3hodG1sYmFzaWMvaW5wdXRtb2RlLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3hodG1s
YmFzaWMveGh0bWxiYXNpYzExLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9m
YXN0L3hodG1sYmFzaWM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QveGh0bWxi
YXNpYy94aHRtbGJhc2ljMTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMC0wNi0xMCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94aHRtbGJhc2ljL2lucHV0bW9kZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC94aHRtbGJhc2ljL2lucHV0
bW9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3hodG1s
YmFzaWMvaW5wdXRtb2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBA
QAorIAorVmVyaWZpZXMgaW5pdGlhbCBpbnB1dG1vZGUgZm9yIGlucHV0IGlzICdkaWdpdCcgOgor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS5pbnB1dG1vZGUgaXMgImRpZ2l0
IgorCitWZXJpZmllcyBpbnB1dG1vZGUgZm9yIGlucHV0IGlzIGNoYW5nZWQgdG8gJ2xhdGluJyA6
IAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS5pbnB1dG1vZGUgaXMgImxh
dGluIgorCitWZXJpZmllcyBpbml0aWFsIGlucHV0bW9kZSBmb3IgdGV4dGFyZWEgaXMgJ3VwcGVy
Q2FzZScgOiAKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRhcmVhIikuaW5wdXRt
b2RlIGlzICJ1cHBlckNhc2UiCisKK1ZlcmlmaWVzIGlucHV0bW9kZSBmb3IgdGV4dGFyZWEgaXMg
Y2hhbmdlZCB0byAnbG93ZXJDYXNlJyA6IAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGV4dGFyZWEiKS5pbnB1dG1vZGUgaXMgImxvd2VyQ2FzZSIKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC94aHRtbGJhc2ljL2lucHV0bW9kZS54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3hodG1sYmFzaWMvaW5wdXRtb2RlLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC94aHRtbGJhc2ljL2lucHV0bW9kZS54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMg
Ii0vL1czQy8vRFREIFhIVE1MIEJhc2ljIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94
aHRtbC1iYXNpYy94aHRtbC1iYXNpYzExLmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0iaW5wdXQiIGlucHV0bW9kZT0iZGlnaXQiIC8+Cis8dGV4dGFyZWEgaWQ9InRl
eHRhcmVhIiBpbnB1dG1vZGU9InVwcGVyQ2FzZSIgLz4KKworPHAgaWQ9ImNvbnNvbGUiPiA8L3A+
CisKKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIG1lc3NhZ2UgOworfQorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIGRlYnVnKCJWZXJpZmllcyBpbml0aWFsIGlucHV0bW9kZSBmb3IgaW5wdXQg
aXMgJ2RpZ2l0JyA6ICIgKTsKKyAgICBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImlucHV0IikuaW5wdXRtb2RlJyAsICciZGlnaXQiJyk7CisgICAgZGVidWcoIiIpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0IikuaW5wdXRtb2RlID0gImxhdGluIjsKKyAg
ICBkZWJ1ZygiVmVyaWZpZXMgaW5wdXRtb2RlIGZvciBpbnB1dCBpcyBjaGFuZ2VkIHRvICdsYXRp
bicgOiAiICk7CisgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIp
LmlucHV0bW9kZScsICcibGF0aW4iJyApOworICAgIGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJW
ZXJpZmllcyBpbml0aWFsIGlucHV0bW9kZSBmb3IgdGV4dGFyZWEgaXMgJ3VwcGVyQ2FzZScgOiAi
KTsKKyAgICBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRhcmVhIikuaW5w
dXRtb2RlJywgJyJ1cHBlckNhc2UiJyk7CisgICAgZGVidWcoIiIpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRleHRhcmVhIikuaW5wdXRtb2RlID0gImxvd2VyQ2FzZSI7CisgICAg
ZGVidWcoIlZlcmlmaWVzIGlucHV0bW9kZSBmb3IgdGV4dGFyZWEgaXMgY2hhbmdlZCB0byAnbG93
ZXJDYXNlJyA6ICIpOworICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4
dGFyZWEiKS5pbnB1dG1vZGUnLCAgJyJsb3dlckNhc2UiJyk7CisKKzwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3hodG1sYmFzaWMveGh0bWxiYXNp
YzExLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QveGh0bWxiYXNpYy94aHRt
bGJhc2ljMTEueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3hodG1sYmFz
aWMveGh0bWxiYXNpYzExLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhU
TUwgQmFzaWMgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sLWJhc2ljL3hodG1s
LWJhc2ljMTEuZHRkIj4KKworPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBkb2N1bWVudCBjb25mb3JtYW5jZSBvZiBYSFRNTCBC
YXNpYyAxLjEgPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGVzdCBjYXNlIHZl
cmlmaWVzIFhIVE1MIEJhc2ljIDEuMSBET0NUWVBFIGlzIGNvcnJlY3RseSBwYXJzZWQgYW5kIHJl
bmRlcmVkLiA8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9mYXN0L3hodG1sYmFzaWMveGh0bWxiYXNpYzExLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3hodG1sYmFzaWMveGh0bWxiYXNpYzEx
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zh
c3QveGh0bWxiYXNpYy94aHRtbGJhc2ljMTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDkgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NzIKKyAgUmVuZGVy
QmxvY2sge2h0bWx9IGF0ICgwLDApIHNpemUgODAweDcyCisgICAgUmVuZGVyQm9keSB7Ym9keX0g
YXQgKDgsMTYpIHNpemUgNzg0eDQwCisgICAgICBSZW5kZXJCbG9jayB7cH0gYXQgKDAsMCkgc2l6
ZSA3ODR4NDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDIpIHNpemUgNzUyeDM2
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMikgd2lkdGggNzUyOiAiVGhpcyB0ZXN0IGNhc2Ug
dmVyaWZpZXMgWEhUTUwgQmFzaWMgMS4xIERPQ1RZUEUiCisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMjIpIHdpZHRoIDUyODogImlzIGNvcnJlY3RseSBwYXJzZWQgYW5kIHJlbmRlcmVkLiIK
</data>
<flag name="review"
          id="43424"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="43425"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58440</attachid>
            <date>2010-06-10 20:10:07 -0700</date>
            <delta_ts>2010-06-11 02:12:46 -0700</delta_ts>
            <desc>Resubmission after addressing reviewer&apos;s comments</desc>
            <filename>xhtmlbasic_v2.patch</filename>
            <type>text/plain</type>
            <size>12332</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDk4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYtMTAgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBYSFRNTCBCYXNpYyAxLjEgc3VwcG9ydCBmb3IgImlucHV0bW9kZSIgYXR0
cmlidXRlIGZvciAiaW5wdXQiIGFuZCAidGV4dGFyZWEiIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg4CisKKyAgICAgICAgVGVzdHM6
IGZhc3QveGh0bWxiYXNpYy9pbnB1dG1vZGUueGh0bWwKKyAgICAgICAgICAgICAgIGZhc3QveGh0
bWxiYXNpYy94aHRtbGJhc2ljMTEueGh0bWwKKworICAgICAgICAqIFdlYkNvcmUucHJpOgorICAg
ICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6aW5wdXRtb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OjpzZXRJbnB1dG1vZGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDoKKwogMjAxMC0wNi0xMCAgVG9ueSBD
aGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFt
dXJhLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUucHJpCShyZXZpc2lvbiA2MDk4NikKKysrIFdlYkNvcmUvV2ViQ29yZS5wcmkJKHdvcmtp
bmcgY29weSkKQEAgLTE1OSw2ICsxNTksNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklM
VEVSUz0xKTogRkVBCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0NTUz0xKTogRkVBVFVSRV9E
RUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dDU1M9MQogY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX1dNTD0xKTogRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dNTD0xCiBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfWEhUTUxNUD0xKTogRkVBVFVSRV9ERUZJTkVTX0pBVkFT
Q1JJUFQgKz0gRU5BQkxFX1hIVE1MTVA9MQorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hIVE1M
QkFTSUM9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9YSFRNTEJBU0lD
PTEKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZB
U0NSSVBUICs9IEVOQUJMRV9TVkc9MQogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVI9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSPTEKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9PRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlM9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlM9MQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
CShyZXZpc2lvbiA2MDk4NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCBodHRwX2VxdWl2CiBpZAogaW5jcmVt
ZW50YWwKIGluZGV0ZXJtaW5hdGUKK2lucHV0bW9kZQogaXNtYXAKIGtleXR5cGUKIGxhYmVsCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDk4
NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjM3LDQgKzYzNywxNiBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpwYXJzZU1hCiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCisjaWYgRU5BQkxFKFhIVE1MQkFTSUMpCitTdHJp
bmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmlucHV0bW9kZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGdldEF0dHJpYnV0ZShpbnB1dG1vZGVBdHRyKS5zdHJpbmcoKTsKK30KKwordm9pZCBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5wdXRtb2RlKGNvbnN0IFN0cmluZyYgdmFs
dWUpCit7CisgICAgc2V0QXR0cmlidXRlKGlucHV0bW9kZUF0dHIsIHZhbHVlKTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgJKHJldmlzaW9uIDYwOTg2KQorKysgV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSwxMyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQpOwogICAgIFZp
c2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoWEhUTUxCQVNJ
QykKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsKKyAgICBTdHJpbmcgaW5w
dXRtb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRJbnB1dG1vZGUoY29uc3QgU3RyaW5nJik7Cisj
ZW5kaWYKKworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDYwOTg2KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCwxMSBA
QCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZpbGVMaXN0IGZp
bGVzOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIE5vZGVMaXN0ICAgICAgIGxhYmVsczsK
KworI2lmIGRlZmluZWQoRU5BQkxFX1hIVE1MQkFTSUMpICYmIEVOQUJMRV9YSFRNTEJBU0lDCisg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyAgICAgICBpbnB1dG1vZGU7CisjZW5kaWYKKwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDYwOTg2KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSwx
MCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVj
dGlvbkVuZDsKICAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbiBsb25nIHN0YXJ0LCBp
biBsb25nIGVuZCk7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSAgTm9kZUxpc3QgICAgICAg
ICAgICAgIGxhYmVsczsKKworI2lmIGRlZmluZWQoRU5BQkxFX1hIVE1MQkFTSUMpICYmIEVOQUJM
RV9YSFRNTEJBU0lDCisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051
bGxTdHJpbmddICBET01TdHJpbmcgICAgICAgICAgICBpbnB1dG1vZGU7CisjZW5kaWYKICAgICB9
OwogCiB9CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDk4NikKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA2LTEwICBDaGFybGVzIFdl
aSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZmVhdHVyZSAiWEhUTUwgQmFzaWMgMS4x
IHN1cHBvcnQgd2l0aCBFTkFCTEVfWEhUTUxCQVNJQworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODgKKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQt
d2Via2l0OgorICAgICAgICAqIFNjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHM6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRwZXJsL2ZlYXR1cmVzLnBtOgorCiAyMDEwLTA2LTEwICBPamFuIFZh
ZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lvbiA2MDk4
NikKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBA
IC01OSw3ICs1OSw3IEBAIG15ICgkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRlcmkK
ICAgICAkZG9tU3RvcmFnZVN1cHBvcnQsICRldmVudHNvdXJjZVN1cHBvcnQsICRmaWx0ZXJzU3Vw
cG9ydCwgJGdlb2xvY2F0aW9uU3VwcG9ydCwgJGljb25EYXRhYmFzZVN1cHBvcnQsICRpbWFnZVJl
c2l6ZXJTdXBwb3J0LCAkaW5kZXhlZERhdGFiYXNlU3VwcG9ydCwKICAgICAkamF2YVNjcmlwdERl
YnVnZ2VyU3VwcG9ydCwgJG1hdGhtbFN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBw
b3J0LCAkcnVieVN1cHBvcnQsICRzeXN0ZW1NYWxsb2NTdXBwb3J0LCAkc2FuZGJveFN1cHBvcnQs
ICRzaGFyZWRXb3JrZXJzU3VwcG9ydCwKICAgICAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlvblN1
cHBvcnQsICRzdmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsICRz
dmdGb250c1N1cHBvcnQsCi0gICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNlU3Vw
cG9ydCwgJHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdj
c3NTdXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKKyAgICAkc3ZnRm9y
ZWlnbk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd2ViU29j
a2V0c1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd2Nzc1N1cHBvcnQsICR4aHRtbG1wU3VwcG9ydCwg
JHhodG1sYmFzaWNTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsCiAgICAgJHhwYXRoU3VwcG9ydCwg
JHhzbHRTdXBwb3J0LCAkY292ZXJhZ2VTdXBwb3J0LCAkbm90aWZpY2F0aW9uc1N1cHBvcnQsICRi
bG9iU2xpY2VTdXBwb3J0LCAkdGlsZWRCYWNraW5nU3RvcmVTdXBwb3J0LAogICAgICRmaWxlUmVh
ZGVyU3VwcG9ydCwgJGZpbGVXcml0ZXJTdXBwb3J0KTsKIApAQCAtMTcyLDYgKzE3Miw5IEBAIG15
IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAieGh0bWxtcCIsIGRlc2MgPT4gIlRvZ2ds
ZSBYSFRNTC1NUCBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1hIVE1MTVAiLCBk
ZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkeGh0bWxtcFN1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9u
ID0+ICJ4aHRtbGJhc2ljIiwgZGVzYyA9PiAiVG9nZ2xlIFhIVE1MIEJhc2ljIDEuMSBzdXBwb3J0
IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1hIVE1MQkFTSUMiLCBkZWZhdWx0ID0+IDAsIHZh
bHVlID0+IFwkeGh0bWxiYXNpY1N1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ3Y3NzIiwg
ZGVzYyA9PiAiVG9nZ2xlIFdDU1Mgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9X
Q1NTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHdjc3NTdXBwb3J0IH0sCiAKSW5kZXg6IFdl
YktpdFRvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkocmV2aXNpb24gNjA5ODYpCisr
KyBXZWJLaXRUb29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkp
CkBAIC01MTgsNiArNTE4LDEwIEBAIGlmICghY2hlY2tXZWJDb3JlRmVhdHVyZVN1cHBvcnQoIldD
U1MiLAogICAgICRpZ25vcmVkRGlyZWN0b3JpZXN7J2Zhc3Qvd2Nzcyd9ID0gMTsKIH0KIAoraWYg
KCFjaGVja1dlYkNvcmVGZWF0dXJlU3VwcG9ydCgiWEhUTUxCQVNJQyIsIDApKSB7CisgICAgJGln
bm9yZWREaXJlY3Rvcmllc3snZmFzdC94aHRtbGJhc2ljJ30gPSAxOworfQorCiBpZiAoIWNoZWNr
V2ViQ29yZUZlYXR1cmVTdXBwb3J0KCJYSFRNTE1QIiwgMCkpIHsKICAgICAkaWdub3JlZERpcmVj
dG9yaWVzeydmYXN0L3hodG1sbXAnfSA9IDE7CiB9CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvZmVhdHVyZXMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL2ZlYXR1cmVzLnBtCShyZXZpc2lvbiA2MDk4NikKKysrIFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cGVybC9mZWF0dXJlcy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzQsNiAr
NzQsNyBAQCBzdWIgaGFzRmVhdHVyZSgkJCkKICAgICAgICAgIldNTCIgPT4gIldNTEVsZW1lbnQi
LAogICAgICAgICAiV0NTUyIgPT4gInBhcnNlV0NTU0lucHV0UHJvcGVydHkiLAogICAgICAgICAi
WEhUTUxNUCIgPT4gImlzWEhUTUxNUERvY3VtZW50IiwKKyAgICAgICAgIlhIVE1MQkFTSUMiID0+
ICJzZXRJbnB1dG1vZGUiLAogICAgICk7CiAgICAgbXkgJHN5bWJvbE5hbWUgPSAkc3ltYm9sRm9y
RmVhdHVyZXskZmVhdHVyZU5hbWV9OwogICAgIGRpZSAiVW5rbm93biBmZWF0dXJlOiAkZmVhdHVy
ZU5hbWUiIHVubGVzcyAkc3ltYm9sTmFtZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwOTg2KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTAtMDYtMTAgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0
IGNhc2VzIGZvciBYSFRNTCBCYXNpYyAxLjEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTg4CisKKyAgICAgICAgKiBmYXN0L3hodG1sYmFzaWM6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QveGh0bWxiYXNpYy9pbnB1dG1vZGUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3hodG1sYmFzaWMvaW5wdXRtb2RlLnhodG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3hodG1sYmFzaWMveGh0bWxiYXNpYzExLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC94aHRtbGJhc2ljL3hodG1sYmFzaWMxMS54aHRtbDogQWRkZWQu
CisKIDIwMTAtMDYtMTAgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QveGh0bWxi
YXNpYy9pbnB1dG1vZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QveGh0bWxiYXNpYy9pbnB1dG1vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC94aHRtbGJhc2ljL2lucHV0bW9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTMgQEAKKyAKK1ZlcmlmaWVzIGluaXRpYWwgaW5wdXRtb2RlIGZvciBp
bnB1dCBpcyAnZGlnaXQnIDoKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iiku
aW5wdXRtb2RlIGlzICJkaWdpdCIKKworVmVyaWZpZXMgaW5wdXRtb2RlIGZvciBpbnB1dCBpcyBj
aGFuZ2VkIHRvICdsYXRpbicgOiAKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0
IikuaW5wdXRtb2RlIGlzICJsYXRpbiIKKworVmVyaWZpZXMgaW5pdGlhbCBpbnB1dG1vZGUgZm9y
IHRleHRhcmVhIGlzICd1cHBlckNhc2UnIDogCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXh0YXJlYSIpLmlucHV0bW9kZSBpcyAidXBwZXJDYXNlIgorCitWZXJpZmllcyBpbnB1dG1v
ZGUgZm9yIHRleHRhcmVhIGlzIGNoYW5nZWQgdG8gJ2xvd2VyQ2FzZScgOiAKK1BBU1MgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRleHRhcmVhIikuaW5wdXRtb2RlIGlzICJsb3dlckNhc2UiCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QveGh0bWxiYXNpYy9pbnB1dG1vZGUueGh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC94aHRtbGJhc2ljL2lucHV0bW9kZS54aHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QveGh0bWxiYXNpYy9pbnB1dG1vZGUueGh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFE
T0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCBCYXNpYyAxLjEvL0VOIiAiaHR0
cDovL3d3dy53My5vcmcvVFIveGh0bWwtYmFzaWMveGh0bWwtYmFzaWMxMS5kdGQiPgorPGh0bWwg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKwor
PGJvZHk+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0IiBpbnB1dG1vZGU9ImRpZ2l0IiAv
PgorPHRleHRhcmVhIGlkPSJ0ZXh0YXJlYSIgaW5wdXRtb2RlPSJ1cHBlckNhc2UiIC8+CisKKzxw
IGlkPSJjb25zb2xlIj4gPC9wPgorCis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICBtZXNzYWdlIDsKK30K
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiVmVyaWZpZXMgaW5pdGlhbCBp
bnB1dG1vZGUgZm9yIGlucHV0IGlzICdkaWdpdCcgOiAiICk7CisgICAgc2hvdWxkQmUoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLmlucHV0bW9kZScgLCAnImRpZ2l0IicpOworICAg
IGRlYnVnKCIiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLmlucHV0
bW9kZSA9ICJsYXRpbiI7CisgICAgZGVidWcoIlZlcmlmaWVzIGlucHV0bW9kZSBmb3IgaW5wdXQg
aXMgY2hhbmdlZCB0byAnbGF0aW4nIDogIiApOworICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiaW5wdXQiKS5pbnB1dG1vZGUnLCAnImxhdGluIicgKTsKKyAgICBkZWJ1Zygi
Iik7CisKKyAgICBkZWJ1ZygiVmVyaWZpZXMgaW5pdGlhbCBpbnB1dG1vZGUgZm9yIHRleHRhcmVh
IGlzICd1cHBlckNhc2UnIDogIik7CisgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXh0YXJlYSIpLmlucHV0bW9kZScsICcidXBwZXJDYXNlIicpOworICAgIGRlYnVnKCIi
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0YXJlYSIpLmlucHV0bW9kZSA9
ICJsb3dlckNhc2UiOworICAgIGRlYnVnKCJWZXJpZmllcyBpbnB1dG1vZGUgZm9yIHRleHRhcmVh
IGlzIGNoYW5nZWQgdG8gJ2xvd2VyQ2FzZScgOiAiKTsKKyAgICBzaG91bGRCZSgnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRleHRhcmVhIikuaW5wdXRtb2RlJywgICcibG93ZXJDYXNlIicpOwor
Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94
aHRtbGJhc2ljL3hodG1sYmFzaWMxMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC94aHRtbGJhc2ljL3hodG1sYmFzaWMxMS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3hodG1sYmFzaWMveGh0bWxiYXNpYzExLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3QgY2FzZSB2ZXJpZmll
cyBYSFRNTCBCYXNpYyAxLjEgRE9DVFlQRSBpcyBjb3JyZWN0bHkgcGFyc2VkIGFuZCByZW5kZXJl
ZC4KKworUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94aHRtbGJhc2ljL3hodG1sYmFzaWMx
MS54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3hodG1sYmFzaWMveGh0bWxi
YXNpYzExLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC94aHRtbGJhc2lj
L3hodG1sYmFzaWMxMS54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1M
IEJhc2ljIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbC1iYXNpYy94aHRtbC1i
YXNpYzExLmR0ZCI+CisKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
Ij4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZG9jdW1lbnQgY29uZm9ybWFuY2Ugb2YgWEhUTUwgQmFz
aWMgMS4xIDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRlc3QgY2FzZSB2ZXJp
ZmllcyBYSFRNTCBCYXNpYyAxLjEgRE9DVFlQRSBpcyBjb3JyZWN0bHkgcGFyc2VkIGFuZCByZW5k
ZXJlZC4gPC9wPgorPHAgaWQ9ImNvbnNvbGUiPiA8L3A+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcil7CisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgPSAiUEFTUyI7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="44045"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58455</attachid>
            <date>2010-06-11 02:12:46 -0700</date>
            <delta_ts>2010-06-20 23:12:12 -0700</delta_ts>
            <desc>Resubmission after addressing reviewer&apos;s comments</desc>
            <filename>xhtmlbasic_v3.patch</filename>
            <type>text/plain</type>
            <size>11115</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDk4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYtMTAgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBYSFRNTCBCYXNpYyAxLjEgc3VwcG9ydCBmb3IgImlucHV0bW9kZSIgYXR0
cmlidXRlIGZvciAiaW5wdXQiIGFuZCAidGV4dGFyZWEiIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg4CisKKyAgICAgICAgVGVzdHM6
IGZhc3QveGh0bWxiYXNpYy9pbnB1dG1vZGUueGh0bWwKKyAgICAgICAgICAgICAgIGZhc3QveGh0
bWxiYXNpYy94aHRtbGJhc2ljMTEueGh0bWwKKworICAgICAgICAqIFdlYkNvcmUucHJpOgorICAg
ICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6aW5wdXRtb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OjpzZXRJbnB1dG1vZGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDoKKwogMjAxMC0wNi0xMCAgVG9ueSBD
aGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFt
dXJhLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUucHJpCShyZXZpc2lvbiA2MDk4NikKKysrIFdlYkNvcmUvV2ViQ29yZS5wcmkJKHdvcmtp
bmcgY29weSkKQEAgLTE1OSw2ICsxNTksNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklM
VEVSUz0xKTogRkVBCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0NTUz0xKTogRkVBVFVSRV9E
RUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dDU1M9MQogY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX1dNTD0xKTogRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dNTD0xCiBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfWEhUTUxNUD0xKTogRkVBVFVSRV9ERUZJTkVTX0pBVkFT
Q1JJUFQgKz0gRU5BQkxFX1hIVE1MTVA9MQorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hIVE1M
QkFTSUM9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9YSFRNTEJBU0lD
PTEKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZB
U0NSSVBUICs9IEVOQUJMRV9TVkc9MQogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVI9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSPTEKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9PRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlM9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlM9MQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
CShyZXZpc2lvbiA2MDk4NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCBodHRwX2VxdWl2CiBpZAogaW5jcmVt
ZW50YWwKIGluZGV0ZXJtaW5hdGUKK2lucHV0bW9kZQogaXNtYXAKIGtleXR5cGUKIGxhYmVsCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCShyZXZpc2lvbiA2MDk4NikKKysrIFdlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgs
MTEgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlTGlz
dCBmaWxlczsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlICBOb2RlTGlzdCAgICAgICBsYWJl
bHM7CisKKyNpZiBkZWZpbmVkKEVOQUJMRV9YSFRNTEJBU0lDKSAmJiBFTkFCTEVfWEhUTUxCQVNJ
QworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBS
ZWZsZWN0XSBET01TdHJpbmcgICAgICAgaW5wdXRtb2RlOworI2VuZGlmCisKICAgICB9OwogCiB9
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCShyZXZpc2lvbiA2MDk4NikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsMTAgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgbG9uZyBzZWxlY3Rpb25FbmQ7CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UoaW4g
bG9uZyBzdGFydCwgaW4gbG9uZyBlbmQpOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIE5v
ZGVMaXN0ICAgICAgICAgICAgICBsYWJlbHM7CisKKyNpZiBkZWZpbmVkKEVOQUJMRV9YSFRNTEJB
U0lDKSAmJiBFTkFCTEVfWEhUTUxCQVNJQworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSAgRE9NU3RyaW5nICAgICAgICAgICAgaW5w
dXRtb2RlOworI2VuZGlmCiAgICAgfTsKIAogfQpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjA5ODYpCisr
KyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMC0wNi0xMCAgQ2hhcmxlcyBXZWkgIDxjaGFybGVzLndlaUB0b3JjaG1vYmlsZS5jb20uY24+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZl
YXR1cmUgIlhIVE1MIEJhc2ljIDEuMSBzdXBwb3J0IHdpdGggRU5BQkxFX1hIVE1MQkFTSUMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg4CisKKyAg
ICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDoKKyAgICAgICAgKiBTY3JpcHRzL29sZC1ydW4t
d2Via2l0LXRlc3RzOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9mZWF0dXJlcy5wbToK
KwogMjAxMC0wNi0xMCAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxk
LXdlYmtpdAkocmV2aXNpb24gNjA5ODYpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBteSAoJHRocmVlRENhbnZhc1N1
cHBvcnQsICR0aHJlZURSZW5kZXJpCiAgICAgJGRvbVN0b3JhZ2VTdXBwb3J0LCAkZXZlbnRzb3Vy
Y2VTdXBwb3J0LCAkZmlsdGVyc1N1cHBvcnQsICRnZW9sb2NhdGlvblN1cHBvcnQsICRpY29uRGF0
YWJhc2VTdXBwb3J0LCAkaW1hZ2VSZXNpemVyU3VwcG9ydCwgJGluZGV4ZWREYXRhYmFzZVN1cHBv
cnQsCiAgICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRtYXRobWxTdXBwb3J0LCAkb2Zm
bGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCwgJHJ1YnlTdXBwb3J0LCAkc3lzdGVtTWFsbG9jU3Vw
cG9ydCwgJHNhbmRib3hTdXBwb3J0LCAkc2hhcmVkV29ya2Vyc1N1cHBvcnQsCiAgICAgJHN2Z1N1
cHBvcnQsICRzdmdBbmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01P
YmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LAotICAgICRzdmdGb3JlaWduT2Jq
ZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3ZWJTb2NrZXRzU3Vw
cG9ydCwgJHdtbFN1cHBvcnQsICR3Y3NzU3VwcG9ydCwgJHhodG1sbXBTdXBwb3J0LCAkd29ya2Vy
c1N1cHBvcnQsCisgICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNlU3VwcG9ydCwg
JHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdjc3NTdXBw
b3J0LCAkeGh0bWxtcFN1cHBvcnQsICR4aHRtbGJhc2ljU3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0
LAogICAgICR4cGF0aFN1cHBvcnQsICR4c2x0U3VwcG9ydCwgJGNvdmVyYWdlU3VwcG9ydCwgJG5v
dGlmaWNhdGlvbnNTdXBwb3J0LCAkYmxvYlNsaWNlU3VwcG9ydCwgJHRpbGVkQmFja2luZ1N0b3Jl
U3VwcG9ydCwKICAgICAkZmlsZVJlYWRlclN1cHBvcnQsICRmaWxlV3JpdGVyU3VwcG9ydCk7CiAK
QEAgLTE3Miw2ICsxNzIsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInho
dG1sbXAiLCBkZXNjID0+ICJUb2dnbGUgWEhUTUwtTVAgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9YSFRNTE1QIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHhodG1sbXBTdXBw
b3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAieGh0bWxiYXNpYyIsIGRlc2MgPT4gIlRvZ2dsZSBY
SFRNTCBCYXNpYyAxLjEgc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9YSFRNTEJB
U0lDIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHhodG1sYmFzaWNTdXBwb3J0IH0sCisKICAg
ICB7IG9wdGlvbiA9PiAid2NzcyIsIGRlc2MgPT4gIlRvZ2dsZSBXQ1NTIHN1cHBvcnQiLAogICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfV0NTUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR3Y3Nz
U3VwcG9ydCB9LAogCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRl
c3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVz
dHMJKHJldmlzaW9uIDYwOTg2KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtp
dC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNTE4LDYgKzUxOCwxMCBAQCBpZiAoIWNoZWNrV2Vi
Q29yZUZlYXR1cmVTdXBwb3J0KCJXQ1NTIiwKICAgICAkaWdub3JlZERpcmVjdG9yaWVzeydmYXN0
L3djc3MnfSA9IDE7CiB9CiAKK2lmICghY2hlY2tXZWJDb3JlRmVhdHVyZVN1cHBvcnQoIlhIVE1M
QkFTSUMiLCAwKSkgeworICAgICRpZ25vcmVkRGlyZWN0b3JpZXN7J2Zhc3QveGh0bWxiYXNpYyd9
ID0gMTsKK30KKwogaWYgKCFjaGVja1dlYkNvcmVGZWF0dXJlU3VwcG9ydCgiWEhUTUxNUCIsIDAp
KSB7CiAgICAgJGlnbm9yZWREaXJlY3Rvcmllc3snZmFzdC94aHRtbG1wJ30gPSAxOwogfQpJbmRl
eDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2ZlYXR1cmVzLnBtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9mZWF0dXJlcy5wbQkocmV2aXNpb24g
NjA5ODYpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZmVhdHVyZXMucG0JKHdv
cmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgc3ViIGhhc0ZlYXR1cmUoJCQpCiAgICAgICAg
ICJXTUwiID0+ICJXTUxFbGVtZW50IiwKICAgICAgICAgIldDU1MiID0+ICJwYXJzZVdDU1NJbnB1
dFByb3BlcnR5IiwKICAgICAgICAgIlhIVE1MTVAiID0+ICJpc1hIVE1MTVBEb2N1bWVudCIsCisg
ICAgICAgICJYSFRNTEJBU0lDIiA9PiAianNIVE1MSW5wdXRFbGVtZW50SW5wdXRtb2RlIiwKICAg
ICApOwogICAgIG15ICRzeW1ib2xOYW1lID0gJHN5bWJvbEZvckZlYXR1cmV7JGZlYXR1cmVOYW1l
fTsKICAgICBkaWUgIlVua25vd24gZmVhdHVyZTogJGZlYXR1cmVOYW1lIiB1bmxlc3MgJHN5bWJv
bE5hbWU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDk4NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA2LTEwICBDaGFybGVzIFdl
aSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBjYXNlcyBmb3IgWEhUTUwgQmFz
aWMgMS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzU4OAorCisgICAgICAgICogZmFzdC94aHRtbGJhc2ljOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3hodG1sYmFzaWMvaW5wdXRtb2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC94aHRtbGJhc2ljL2lucHV0bW9kZS54aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC94aHRt
bGJhc2ljL3hodG1sYmFzaWMxMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
eGh0bWxiYXNpYy94aHRtbGJhc2ljMTEueGh0bWw6IEFkZGVkLgorCiAyMDEwLTA2LTEwICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBU
YW11cmEuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3hodG1sYmFzaWMvaW5wdXRtb2RlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3hodG1sYmFzaWMvaW5wdXRt
b2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QveGh0bWxi
YXNpYy9pbnB1dG1vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBA
CisgCitWZXJpZmllcyBpbml0aWFsIGlucHV0bW9kZSBmb3IgaW5wdXQgaXMgJ2RpZ2l0JyA6CitQ
QVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLmlucHV0bW9kZSBpcyAiZGlnaXQi
CisKK1ZlcmlmaWVzIGlucHV0bW9kZSBmb3IgaW5wdXQgaXMgY2hhbmdlZCB0byAnbGF0aW4nIDog
CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLmlucHV0bW9kZSBpcyAibGF0
aW4iCisKK1ZlcmlmaWVzIGluaXRpYWwgaW5wdXRtb2RlIGZvciB0ZXh0YXJlYSBpcyAndXBwZXJD
YXNlJyA6IAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGFyZWEiKS5pbnB1dG1v
ZGUgaXMgInVwcGVyQ2FzZSIKKworVmVyaWZpZXMgaW5wdXRtb2RlIGZvciB0ZXh0YXJlYSBpcyBj
aGFuZ2VkIHRvICdsb3dlckNhc2UnIDogCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXh0YXJlYSIpLmlucHV0bW9kZSBpcyAibG93ZXJDYXNlIgorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3hodG1sYmFzaWMvaW5wdXRtb2RlLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QveGh0bWxiYXNpYy9pbnB1dG1vZGUueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3hodG1sYmFzaWMvaW5wdXRtb2RlLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAi
LS8vVzNDLy9EVEQgWEhUTUwgQmFzaWMgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3ho
dG1sLWJhc2ljL3hodG1sLWJhc2ljMTEuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGlucHV0IHR5cGU9
InRleHQiIGlkPSJpbnB1dCIgaW5wdXRtb2RlPSJkaWdpdCIgLz4KKzx0ZXh0YXJlYSBpZD0idGV4
dGFyZWEiIGlucHV0bW9kZT0idXBwZXJDYXNlIiAvPgorCis8cCBpZD0iY29uc29sZSI+IDwvcD4K
KworPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmlubmVySFRNTCArPSAgbWVzc2FnZSA7Cit9CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgZGVidWcoIlZlcmlmaWVzIGluaXRpYWwgaW5wdXRtb2RlIGZvciBpbnB1dCBp
cyAnZGlnaXQnIDogIiApOworICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aW5wdXQiKS5pbnB1dG1vZGUnICwgJyJkaWdpdCInKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS5pbnB1dG1vZGUgPSAibGF0aW4iOworICAg
IGRlYnVnKCJWZXJpZmllcyBpbnB1dG1vZGUgZm9yIGlucHV0IGlzIGNoYW5nZWQgdG8gJ2xhdGlu
JyA6ICIgKTsKKyAgICBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iiku
aW5wdXRtb2RlJywgJyJsYXRpbiInICk7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlZl
cmlmaWVzIGluaXRpYWwgaW5wdXRtb2RlIGZvciB0ZXh0YXJlYSBpcyAndXBwZXJDYXNlJyA6ICIp
OworICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGFyZWEiKS5pbnB1
dG1vZGUnLCAnInVwcGVyQ2FzZSInKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGV4dGFyZWEiKS5pbnB1dG1vZGUgPSAibG93ZXJDYXNlIjsKKyAgICBk
ZWJ1ZygiVmVyaWZpZXMgaW5wdXRtb2RlIGZvciB0ZXh0YXJlYSBpcyBjaGFuZ2VkIHRvICdsb3dl
ckNhc2UnIDogIik7CisgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0
YXJlYSIpLmlucHV0bW9kZScsICAnImxvd2VyQ2FzZSInKTsKKworPC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QveGh0bWxiYXNpYy94aHRtbGJhc2lj
MTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QveGh0bWxiYXNp
Yy94aHRtbGJhc2ljMTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC94aHRtbGJhc2ljL3hodG1sYmFzaWMxMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgWEhUTUwgQmFzaWMgMS4xIERP
Q1RZUEUgaXMgY29ycmVjdGx5IHBhcnNlZCBhbmQgcmVuZGVyZWQuCisKK1BBU1MKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QveGh0bWxiYXNpYy94aHRtbGJhc2ljMTEueGh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC94aHRtbGJhc2ljL3hodG1sYmFzaWMxMS54aHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QveGh0bWxiYXNpYy94aHRtbGJhc2ljMTEueGh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFE
T0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCBCYXNpYyAxLjEvL0VOIiAiaHR0
cDovL3d3dy53My5vcmcvVFIveGh0bWwtYmFzaWMveGh0bWwtYmFzaWMxMS5kdGQiPgorCis8aHRt
bCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT5U
ZXN0IGRvY3VtZW50IGNvbmZvcm1hbmNlIG9mIFhIVE1MIEJhc2ljIDEuMSA8L3RpdGxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgWEhUTUwgQmFzaWMgMS4x
IERPQ1RZUEUgaXMgY29ycmVjdGx5IHBhcnNlZCBhbmQgcmVuZGVyZWQuIDwvcD4KKzxwIGlkPSJj
b25zb2xlIj4gPC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgfQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuaW5uZXJIVE1MID0gIlBBU1MiOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="44181"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>