<?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>8182</bug_id>
          
          <creation_ts>2006-04-04 10:35:16 -0700</creation_ts>
          <short_desc>some text-field-related layout tests are failing</short_desc>
          <delta_ts>2006-04-04 20:53:25 -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>HTML Editing</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>38527</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-04 10:35:16 -0700</bug_when>
    <thetext>A few text-field-related layout tests are failing. I have fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38528</commentid>
    <comment_count>1</comment_count>
      <attachid>7504</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-04 10:40:45 -0700</bug_when>
    <thetext>Created attachment 7504
fixes in WebCore, layout tests updates in LayoutTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38545</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-04-04 14:42:34 -0700</bug_when>
    <thetext>Index: WebCore/editing/InsertTextCommand.cpp
===================================================================
--- WebCore/editing/InsertTextCommand.cpp	(revision 13680)
+++ WebCore/editing/InsertTextCommand.cpp	(working copy)
@@ -94,6 +94,9 @@
     assert(text.find(&apos;\n&apos;) == -1);
 
     Selection selection = endingSelection();
+    // FIXME: I don&apos;t see how &quot;start of line&quot; could possibly be the right check here.
+    // It depends on line breaks which depends on the way things are current laid out,
+    // window width, etc. This needs to be rethought.
     bool adjustDownstream = isStartOfLine(VisiblePosition(selection.start().downstream(), DOWNSTREAM));

I&apos;m not sure that this FIXME is correct.  Code below tries to prevent inserted text from uncollapsing collapsed whitespace.  It does that by always putting the inserted text at the upstream() version of the caret unless the caret was at the start of a line, and in that case it puts it at the downstream() version of the caret.  This happens to work, but it&apos;s a confusing way to do it.  I think using isStartOfParagraph would break the case where there is collapsed whitespace just after a line wrap (at the beginning of the next line).

@@ -622,7 +622,7 @@
         downstream = positionAvoidingSpecialElementBoundary(downstream);
         if (downstream.node()-&gt;hasTagName(brTag) &amp;&amp; downstream.offset() == 0 &amp;&amp; 
             fragment.hasInterchangeNewlineAtEnd() &amp;&amp;
-            isStartOfLine(VisiblePosition(downstream, VP_DEFAULT_AFFINITY)))
+            isStartOfParagraph(VisiblePosition(downstream, VP_DEFAULT_AFFINITY)))
             linePlaceholder = downstream.node();

isStartOfLine(v) and isStartOfParagraph(v) only differ if v is just after a line-wrap.  A br can never be just after a line-wrap, so I don&apos;t see how this change would effect behavior.  Does it?  In any case, isStartOfParagraph is fine.

@@ -634,14 +634,14 @@
     if (m_smartReplace) {
         VisiblePosition visiblePos = VisiblePosition(startPos, VP_DEFAULT_AFFINITY);
         assert(visiblePos.isNotNull());
-        addLeadingSpace = startPos.leadingWhitespacePosition(VP_DEFAULT_AFFINITY, true).isNull() &amp;&amp; !isStartOfLine(visiblePos);
+        addLeadingSpace = startPos.leadingWhitespacePosition(VP_DEFAULT_AFFINITY, true).isNull() &amp;&amp; !isStartOfParagraph(visiblePos);

!isStartOfParagraph is true more than !isStartOfLine, so how does this change _avoid_ adding extra spaces?    Was it just that isStartOfLine was returning false erroneously? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38547</commentid>
    <comment_count>3</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-04-04 14:51:21 -0700</bug_when>
    <thetext>&gt; @@ -634,14 +634,14 @@
&gt;      if (m_smartReplace) {
&gt;          VisiblePosition visiblePos = VisiblePosition(startPos,
&gt; VP_DEFAULT_AFFINITY);
&gt;          assert(visiblePos.isNotNull());
&gt; -        addLeadingSpace =
&gt; startPos.leadingWhitespacePosition(VP_DEFAULT_AFFINITY, true).isNull() &amp;&amp;
&gt; !isStartOfLine(visiblePos);
&gt; +        addLeadingSpace =
&gt; startPos.leadingWhitespacePosition(VP_DEFAULT_AFFINITY, true).isNull() &amp;&amp;
&gt; !isStartOfParagraph(visiblePos);
&gt; 
&gt; !isStartOfParagraph is true more than !isStartOfLine, so how does this change
&gt; _avoid_ adding extra spaces?    Was it just that isStartOfLine was returning
&gt; false erroneously? 

I should make it clear that I think that this change and the others are correct, except for perhaps the fixme, which I&apos;m still fuzzy on.  so r=me on the editing changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38548</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-04 14:53:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Index: WebCore/editing/InsertTextCommand.cpp
&gt; ===================================================================
&gt; --- WebCore/editing/InsertTextCommand.cpp       (revision 13680)
&gt; +++ WebCore/editing/InsertTextCommand.cpp       (working copy)
&gt; @@ -94,6 +94,9 @@
&gt;      assert(text.find(&apos;\n&apos;) == -1);
&gt; 
&gt;      Selection selection = endingSelection();
&gt; +    // FIXME: I don&apos;t see how &quot;start of line&quot; could possibly be the right
&gt; check here.
&gt; +    // It depends on line breaks which depends on the way things are current
&gt; laid out,
&gt; +    // window width, etc. This needs to be rethought.
&gt;      bool adjustDownstream =
&gt; isStartOfLine(VisiblePosition(selection.start().downstream(), DOWNSTREAM));
&gt; 
&gt; I&apos;m not sure that this FIXME is correct.  Code below tries to prevent inserted
&gt; text from uncollapsing collapsed whitespace.  It does that by always putting
&gt; the inserted text at the upstream() version of the caret unless the caret was
&gt; at the start of a line, and in that case it puts it at the downstream() version
&gt; of the caret.  This happens to work, but it&apos;s a confusing way to do it.  I
&gt; think using isStartOfParagraph would break the case where there is collapsed
&gt; whitespace just after a line wrap (at the beginning of the next line).

I&apos;m not suggesting using isStartOfParagraph. What I&apos;m suggesting is that isStartOfLine is not correct to check here, because something that depends on the current position of line breaks seemingly can&apos;t possibly be correct.

&gt; isStartOfLine(v) and isStartOfParagraph(v) only differ if v is just after a
&gt; line-wrap.  A br can never be just after a line-wrap, so I don&apos;t see how this
&gt; change would effect behavior.  Does it?

It doesn&apos;t.

&gt; @@ -634,14 +634,14 @@
&gt;      if (m_smartReplace) {
&gt;          VisiblePosition visiblePos = VisiblePosition(startPos,
&gt; VP_DEFAULT_AFFINITY);
&gt;          assert(visiblePos.isNotNull());
&gt; -        addLeadingSpace =
&gt; startPos.leadingWhitespacePosition(VP_DEFAULT_AFFINITY, true).isNull() &amp;&amp;
&gt; !isStartOfLine(visiblePos);
&gt; +        addLeadingSpace =
&gt; startPos.leadingWhitespacePosition(VP_DEFAULT_AFFINITY, true).isNull() &amp;&amp;
&gt; !isStartOfParagraph(visiblePos);
&gt; 
&gt; !isStartOfParagraph is true more than !isStartOfLine, so how does this change
&gt; _avoid_ adding extra spaces?    Was it just that isStartOfLine was returning
&gt; false erroneously? 

Yes. isStartOfLine erroneously returns false in the case where there is no line at all -- an empty text field is such a case.

I could try to fix that by changing the behavior isStartOfLine, but instead I thought it was best to first remove calls to the line-related functions in places where they were clearly not the right ones to call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38549</commentid>
    <comment_count>5</comment_count>
      <attachid>7504</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-04 15:02:39 -0700</bug_when>
    <thetext>Comment on attachment 7504
fixes in WebCore, layout tests updates in LayoutTests

Justin reviewed the editing parts, Adele reviewed the other parts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38576</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-04 20:53:25 -0700</bug_when>
    <thetext>This ended up fixing only one test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7504</attachid>
            <date>2006-04-04 10:40:45 -0700</date>
            <delta_ts>2006-04-04 15:02:39 -0700</delta_ts>
            <desc>fixes in WebCore, layout tests updates in LayoutTests</desc>
            <filename>LayoutTestFixesPatch.txt</filename>
            <type>text/plain</type>
            <size>18393</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzCShyZXZpc2lvbiAxMzY4MCkKKysrIFdlYkNv
cmUvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ1ICswLDAg
QEAKLSMhL2Jpbi9zaAotCi0jIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMgMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSMgICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0j
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1ta2Rp
ciAtcCAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiCi1jZCAi
JHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiCi0KLVdlYkNvcmU9
IiR7U1JDUk9PVH0iCi1leHBvcnQgV2ViQ29yZQotCi1pZiB3aGljaCBzd192ZXJzIDI+JjEgPiAv
ZGV2L251bGw7IHRoZW4KLSAgICBFTkNPRElOR1NfRklMRT0iJHtXZWJDb3JlfS9wbGF0Zm9ybS9t
YWMvbWFjLWVuY29kaW5ncy50eHQiCi0gICAgRU5DT0RJTkdTX1BSRUZJWD0ia0NGU3RyaW5nRW5j
b2RpbmciCi1lbHNlCi0gICAgRU5DT0RJTkdTX0ZJTEU9IiR7V2ViQ29yZX0vcGxhdGZvcm0vd2lu
L3dpbi1lbmNvZGluZ3MudHh0IjsKLSAgICBFTkNPRElOR1NfUFJFRklYPSIiCi1maQotZXhwb3J0
IEVOQ09ESU5HU19GSUxFCi1leHBvcnQgRU5DT0RJTkdTX1BSRUZJWAotCi1tYWtlIC1mICIkV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNjgwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMTMsNyArMTIxMyw2
IEBACiAJCTU1OTk4QTVDMDUyQjU5Q0MwMDE3QTZDMSAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Q2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWNjZXNzaWJpbGl0eU9iamVjdENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1RDA1MkI1OUNDMDAxN0E2QzEgLyog
QWNjZXNzaWJpbGl0eU9iamVjdENhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU9iamVjdENhY2hlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJNjUwRjUzREIwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyYW1tYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNjUxQjJCNjIwOUQxMjg5MTAwODgwOEM2IC8qIGdlbmVyYXRlLWRlcml2ZWQtc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVk
LXNvdXJjZXMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTFCNEQ4MzA5QUM4MzM3
MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERlcHJlY2F0ZWRTdHJpbmdMaXN0LmNwcDsgcGF0aCA9IHBsYXRm
b3JtL0RlcHJlY2F0ZWRTdHJpbmdMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjUxQjREODQwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZXByZWNhdGVkU3RyaW5nTGlzdC5oOyBw
YXRoID0gcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjUxQjREOEUwOUFDODU5RjAwMjlGMUVGIC8qIFFTdHJpbmdMaXN0TWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFFTdHJpbmdMaXN0TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUzMiw3ICsyNTMxLDYgQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAq
LywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAq
LywKLQkJCQk2NTFCMkI2MjA5RDEyODkxMDA4ODA4QzYgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3Vy
Y2VzICovLAogCQkJCUY1OEVGNThFMDJERkRGQjcwMTg2MzVDQSAvKiBXZWJDb3JlLmV4cCAqLywK
IAkJCQlCQzFBMzc5MDA5N0M2Rjk3MDAxOUYzRDggLyogYmluZGluZ3MgKi8sCiAJCQkJNjVCRjAy
MUYwOTc0ODBFRjAwQzQzMTk2IC8qIGJyaWRnZSAqLywKQEAgLTQ5NjMsNyArNDk2MSw3IEBACiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVs
bFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAiaWYgWyBcIiR7QlVJTERfU1RZTEV9
XCIgPSBcIlJlbGVhc2VcIiAtbyBcIiR7QlVJTERfU1RZTEV9XCIgPSBcIkRlYnVnXCIgXSA7IHRo
ZW5cbiAgICBleHBvcnQgQ1JFQVRFX0hBU0hfVEFCTEU9JHtCVUlMVF9QUk9EVUNUU19ESVJ9L0ph
dmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVycy9jcmVhdGVfaGFzaF90YWJsZVxu
ZWxzZVxuICAgIGV4cG9ydCBDUkVBVEVfSEFTSF9UQUJMRT0ke05FWFRfUk9PVH0ke1NZU1RFTV9M
SUJSQVJZX0RJUn0vRnJhbWV3b3Jrcy9XZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3
b3Jrcy9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnMvY3JlYXRlX2hhc2hf
dGFibGVcbmZpXG4uL2dlbmVyYXRlLWRlcml2ZWQtc291cmNlc1xuIjsKKwkJCXNoZWxsU2NyaXB0
ID0gImlmIFsgXCIke0JVSUxEX1NUWUxFfVwiID0gXCJSZWxlYXNlXCIgLW8gXCIke0JVSUxEX1NU
WUxFfVwiID0gXCJEZWJ1Z1wiIF0gOyB0aGVuXG4gICAgZXhwb3J0IENSRUFURV9IQVNIX1RBQkxF
PVwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRl
SGVhZGVycy9jcmVhdGVfaGFzaF90YWJsZVwiXG5lbHNlXG4gICAgZXhwb3J0IENSRUFURV9IQVNI
X1RBQkxFPVwiJHtORVhUX1JPT1R9JHtTWVNURU1fTElCUkFSWV9ESVJ9L0ZyYW1ld29ya3MvV2Vi
S2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrL1ByaXZhdGVIZWFkZXJzL2NyZWF0ZV9oYXNoX3RhYmxlXCJcbmZpXG5cbm1rZGlyIC1wIFwi
JHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmVcIlxuY2QgXCIke0JV
SUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViQ29yZVwiXG5cbmV4cG9ydCBXZWJD
b3JlPVwiJHtTUkNST09UfVwiXG5cbmV4cG9ydCBFTkNPRElOR1NfRklMRT1cIiR7V2ViQ29yZX0v
cGxhdGZvcm0vbWFjL21hYy1lbmNvZGluZ3MudHh0XCJcbmV4cG9ydCBFTkNPRElOR1NfUFJFRklY
PVwia0NGU3RyaW5nRW5jb2RpbmdcIlxuXG5tYWtlIC1mIFwiJFdlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZVwiXG4iOwogCQl9OwogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAkocmV2aXNp
b24gMTM2ODApCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCw2ICs5NCw5IEBACiAgICAgYXNzZXJ0KHRleHQuZmluZCgnXG4nKSA9
PSAtMSk7CiAKICAgICBTZWxlY3Rpb24gc2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCk7Cisg
ICAgLy8gRklYTUU6IEkgZG9uJ3Qgc2VlIGhvdyAic3RhcnQgb2YgbGluZSIgY291bGQgcG9zc2li
bHkgYmUgdGhlIHJpZ2h0IGNoZWNrIGhlcmUuCisgICAgLy8gSXQgZGVwZW5kcyBvbiBsaW5lIGJy
ZWFrcyB3aGljaCBkZXBlbmRzIG9uIHRoZSB3YXkgdGhpbmdzIGFyZSBjdXJyZW50IGxhaWQgb3V0
LAorICAgIC8vIHdpbmRvdyB3aWR0aCwgZXRjLiBUaGlzIG5lZWRzIHRvIGJlIHJldGhvdWdodC4K
ICAgICBib29sIGFkanVzdERvd25zdHJlYW0gPSBpc1N0YXJ0T2ZMaW5lKFZpc2libGVQb3NpdGlv
bihzZWxlY3Rpb24uc3RhcnQoKS5kb3duc3RyZWFtKCksIERPV05TVFJFQU0pKTsKIAogICAgIC8v
IERlbGV0ZSB0aGUgY3VycmVudCBzZWxlY3Rpb24sIG9yIGNvbGxhcHNlIHdoaXRlc3BhY2UsIGFz
IG5lZWRlZApJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCShyZXZpc2lvbiAxMzY4MCkKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMiw3ICs2MjIsNyBAQAogICAgICAgICBk
b3duc3RyZWFtID0gcG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxFbGVtZW50Qm91bmRhcnkoZG93bnN0
cmVhbSk7CiAgICAgICAgIGlmIChkb3duc3RyZWFtLm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykg
JiYgZG93bnN0cmVhbS5vZmZzZXQoKSA9PSAwICYmIAogICAgICAgICAgICAgZnJhZ21lbnQuaGFz
SW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQoKSAmJgotICAgICAgICAgICAgaXNTdGFydE9mTGluZShW
aXNpYmxlUG9zaXRpb24oZG93bnN0cmVhbSwgVlBfREVGQVVMVF9BRkZJTklUWSkpKQorICAgICAg
ICAgICAgaXNTdGFydE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbihkb3duc3RyZWFtLCBWUF9E
RUZBVUxUX0FGRklOSVRZKSkpCiAgICAgICAgICAgICBsaW5lUGxhY2Vob2xkZXIgPSBkb3duc3Ry
ZWFtLm5vZGUoKTsKICAgICB9CiAgICAgCkBAIC02MzQsMTQgKzYzNCwxNCBAQAogICAgIGlmICht
X3NtYXJ0UmVwbGFjZSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFZp
c2libGVQb3NpdGlvbihzdGFydFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CiAgICAgICAgIGFz
c2VydCh2aXNpYmxlUG9zLmlzTm90TnVsbCgpKTsKLSAgICAgICAgYWRkTGVhZGluZ1NwYWNlID0g
c3RhcnRQb3MubGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihWUF9ERUZBVUxUX0FGRklOSVRZLCB0
cnVlKS5pc051bGwoKSAmJiAhaXNTdGFydE9mTGluZSh2aXNpYmxlUG9zKTsKKyAgICAgICAgYWRk
TGVhZGluZ1NwYWNlID0gc3RhcnRQb3MubGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihWUF9ERUZB
VUxUX0FGRklOSVRZLCB0cnVlKS5pc051bGwoKSAmJiAhaXNTdGFydE9mUGFyYWdyYXBoKHZpc2li
bGVQb3MpOwogICAgICAgICBpZiAoYWRkTGVhZGluZ1NwYWNlKSB7CiAgICAgICAgICAgICBRQ2hh
ciBwcmV2aW91c0NoYXIgPSB2aXNpYmxlUG9zLnByZXZpb3VzKCkuY2hhcmFjdGVyKCk7CiAgICAg
ICAgICAgICBpZiAoIXByZXZpb3VzQ2hhci5pc051bGwoKSkgewogICAgICAgICAgICAgICAgIGFk
ZExlYWRpbmdTcGFjZSA9ICFmcmFtZS0+aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQocHJl
dmlvdXNDaGFyLCB0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBhZGRU
cmFpbGluZ1NwYWNlID0gc3RhcnRQb3MudHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRpb24oVlBfREVG
QVVMVF9BRkZJTklUWSwgdHJ1ZSkuaXNOdWxsKCkgJiYgIWlzRW5kT2ZMaW5lKHZpc2libGVQb3Mp
OworICAgICAgICBhZGRUcmFpbGluZ1NwYWNlID0gc3RhcnRQb3MudHJhaWxpbmdXaGl0ZXNwYWNl
UG9zaXRpb24oVlBfREVGQVVMVF9BRkZJTklUWSwgdHJ1ZSkuaXNOdWxsKCkgJiYgIWlzRW5kT2ZQ
YXJhZ3JhcGgodmlzaWJsZVBvcyk7CiAgICAgICAgIGlmIChhZGRUcmFpbGluZ1NwYWNlKSB7CiAg
ICAgICAgICAgICBRQ2hhciB0aGlzQ2hhciA9IHZpc2libGVQb3MuY2hhcmFjdGVyKCk7CiAgICAg
ICAgICAgICBpZiAoIXRoaXNDaGFyLmlzTnVsbCgpKSB7CkBAIC04NDIsNyArODQyLDcgQEAKICAg
ICBpZiAobGluZVBsYWNlaG9sZGVyLT5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHBsYWNlaG9sZGVyUG9zKGxpbmVQbGFjZWhvbGRlciwgbGluZVBsYWNlaG9sZGVyLT5y
ZW5kZXJlcigpLT5jYXJldE1pbk9mZnNldCgpLCBET1dOU1RSRUFNKTsKICAgICAgICAgaWYgKHBs
YWNlaG9sZGVyUG9zLm5leHQoKS5pc051bGwoKSB8fAotICAgICAgICAgICAgIShpc1N0YXJ0T2ZM
aW5lKHBsYWNlaG9sZGVyUG9zKSAmJiBpc0VuZE9mTGluZShwbGFjZWhvbGRlclBvcykpKSB7Cisg
ICAgICAgICAgICAhKGlzU3RhcnRPZlBhcmFncmFwaChwbGFjZWhvbGRlclBvcykgJiYgaXNFbmRP
ZlBhcmFncmFwaChwbGFjZWhvbGRlclBvcykpKSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhsaW5lUGxhY2Vob2xkZXIpOwogICAgICAgICB9
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQuY3BwCShyZXZpc2lvbiAxMzY4MCkKKysrIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzEx
OCw3IEBACiB7CiAgICAgLy8gY2hlY2sgdGhhdCBwb3NpdGlvbiBpcyBvbiBhIGxpbmUgYnkgaXRz
ZWxmIGluc2lkZSBhIGxpc3QgaXRlbQogICAgIE5vZGUqIGxpc3RDaGlsZE5vZGUgPSBlbmNsb3Np
bmdMaXN0Q2hpbGQodmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSk7Ci0gICAgaWYg
KCFsaXN0Q2hpbGROb2RlIHx8ICFpc1N0YXJ0T2ZMaW5lKHZpc2libGVQb3MpIHx8ICFpc0VuZE9m
TGluZSh2aXNpYmxlUG9zKSkKKyAgICBpZiAoIWxpc3RDaGlsZE5vZGUgfHwgIWlzU3RhcnRPZlBh
cmFncmFwaCh2aXNpYmxlUG9zKSB8fCAhaXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlUG9zKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgLy8gY2hlY2sgZm9yIHN1Ymxpc3QgZW1iZWRkZWQg
aW4gdGhlIGxpc3QgaXRlbQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjgxKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAwNi0wNC0wNCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVn
LmNnaT9pZD04MTgyCisgICAgICAgICAgc29tZSB0ZXh0LWZpZWxkLXJlbGF0ZWQgbGF5b3V0IHRl
c3RzIGFyZSBmYWlsaW5nCisKKyAgICAgICAgVGhlIHNtYXJ0IHBhc3RlIGNvZGUgd2FzIGdldHRp
bmcgY29uZnVzZWQgYW5kIGFkZGluZyBleHRyYSBzcGFjZXMuCisKKyAgICAgICAgKiBlZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KTogVXNlIGlzU3RhcnRPZlBhcmFncmFwaCBpbnN0ZWFk
IG9mCisgICAgICAgIGlzU3RhcnRPZkxpbmUuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTGluZVBsYWNlaG9sZGVySWZOZWVkZWQpOiBEaXR0by4KKwor
ICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6IChX
ZWJDb3JlOjplbmNsb3NpbmdFbXB0eUxpc3RJdGVtKToKKyAgICAgICAgQ2hhbmdlIHRvIGNhbGwg
aXNTdGFydC9FbmRPZlBhcmFncmFwaCBpbnN0ZWFkIG9mIExpbmUuCisKKyAgICAgICAgKiBlZGl0
aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDogKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpp
bnB1dCk6CisgICAgICAgIEFkZCBhIGNvbW1lbnQgYWJvdXQgaG93IGlzU3RhcnRPZkxpbmUgaXMg
YWxtb3N0IGNlcnRhaW5seSB3cm9uZyBoZXJlLgorCisgICAgICAgIC0gY2xlYW4gdXAgc29tZSBs
b29zZSBlbmRzIGluIHRoZSBGcmFtZSBjbGFzcyBmcm9tIHRoZSByZWNlbnQgcmVuYW1pbmcKKwor
ICAgICAgICAqIHBhZ2UvRnJhbWUuaDogUmVtb3ZlZCBkZWNsYXJhdGlvbnMgb2YgZGVsZXRlTWUx
LCBkZWxldGVNZTIsIGFuZAorICAgICAgICBoYW5kbGVNb3VzZU1vdmVFdmVudFBhcnQyLgorICAg
ICAgICAqIHBhZ2UvRnJhbWUuY3BwOiAoV2ViQ29yZTo6RnJhbWU6OmhhbmRsZU1vdXNlTW92ZUV2
ZW50KTogUmVtb3ZlZAorICAgICAgICBoYW5kbGVNb3VzZU1vdmVFdmVudFBhcnQyIGJ5IHJlbmFt
aW5nIGl0IHRvIGhhbmRsZU1vdXNlTW92ZUV2ZW50IGFuZCByZW1vdmluZworICAgICAgICBoYW5k
bGVNb3VzZU1vdmVFdmVudCBpdHNlbGYuCisKKyAgICAgICAgLSBpbnZva2UgdGhlIG1ha2VmaWxl
IGRpcmVjdGx5LCByZW1vdmluZyB0aGUgZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzIHNjcmlwdAor
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS9idWlsZC1nZW5lcmF0ZWQtZmlsZXMu
c2g6IENhbGwgbWFrZSBkaXJlY3RseS4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIGdlbmVyYXRlLWRlcml2ZWQtc291cmNlczog
UmVtb3ZlZC4KKwogMjAwNi0wNC0wNCAgVHJleSBNYXR0ZXNvbiAgPHRyZXlAdXNhLm5ldD4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBIeWF0dC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS9idWlsZC1nZW5lcmF0ZWQtZmlsZXMuc2gKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaAkocmV2aXNpb24g
MTM2ODApCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUvYnVpbGQtZ2VuZXJhdGVk
LWZpbGVzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0xMSwxMiArMTEsMTkgQEAKIFNSQ1JPT1Q9YGN5
Z3BhdGggLW0gLXMgIiRTUkNST09UImAKIFNSQ1JPT1Q9YGN5Z3BhdGggLXUgIiRTUkNST09UImAK
IGV4cG9ydCBTUkNST09UCisKICMgRklYTUU6IEV2ZW50dWFsbHkgd2luMzIgbWlnaHQgd2lzaCB0
byBnZW5lcmF0ZSB0byB0aGUgRGVidWcvUmVsZWFzZSBvdXRwdXQgZGlyZWN0b3JpZXMuCiBleHBv
cnQgQlVJTFRfUFJPRFVDVFNfRElSPSIkU1JDUk9PVCIKIGV4cG9ydCBDUkVBVEVfSEFTSF9UQUJM
RT0iJFNSQ1JPT1QvLi4vSmF2YVNjcmlwdENvcmUva2pzL2NyZWF0ZV9oYXNoX3RhYmxlIgogCi0i
JFNSQ1JPT1QvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzIiB8fCBleGl0IDEKK21rZGlyIC1wICIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViQ29yZSIKK2NkICIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViQ29yZSIKIAorZXhwb3J0IFdlYkNvcmU9
IiR7U1JDUk9PVH0iCitleHBvcnQgRU5DT0RJTkdTX0ZJTEU9IiR7V2ViQ29yZX0vcGxhdGZvcm0v
d2luL3dpbi1lbmNvZGluZ3MudHh0IjsKK2V4cG9ydCBFTkNPRElOR1NfUFJFRklYPSIiCittYWtl
IC1mICIkV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIiB8fCBleGl0IDEKKwogY2QgIiRTUkNS
T09UIgogbWtkaXIgLXAgIiR7V2ViS2l0T3V0cHV0Q29uZmlnRGlyVW5peH0iCiAKQEAgLTQxLDQg
KzQ4LDMgQEAKICAgICBlY2hvICJDb3B5aW5nIHpsaWIxLmRsbCIKICAgICBjcCAuLi96bGliL2Jp
bi96bGliMS5kbGwgIiRXZWJLaXRPdXRwdXRDb25maWdEaXJVbml4IiB8fCBleGl0IDEKIGZpCi0K
SW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9G
cmFtZS5oCShyZXZpc2lvbiAxMzY4MCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NjUsMTAgKzc2NSw2IEBACiAgIAogICB2b2lkIHJlY2VpdmVkRmlyc3REYXRh
KCk7CiAKLSAgYm9vbCBkZWxldGVNZTEoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYpOwotICBib29sIGRlbGV0ZU1lMihjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
Jik7Ci0gIHZvaWQgaGFuZGxlTW91c2VNb3ZlRXZlbnRQYXJ0Mihjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJik7Ci0KICAgLyoqCiAgICAqIEBpbnRlcm5hbCBFeHRyYWN0cyBhbmNo
b3IgYW5kIHRyaWVzIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBmb3JtLgogICAgKi8KSW5kZXg6
IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAkocmV2aXNpb24gMTM2ODApCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODI0LDcgKzE4MjQsNyBAQAogICAgIH0KIH0KIAotdm9pZCBGcmFtZTo6aGFu
ZGxlTW91c2VNb3ZlRXZlbnRQYXJ0Mihjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCkKK3ZvaWQgRnJhbWU6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewogICAgIC8vIE1vdXNlIG5vdCBwcmVzc2Vk
LiBEbyBub3RoaW5nLgogICAgIGlmICghZC0+bV9iTW91c2VQcmVzc2VkKQpAQCAtMTg2MSwxMSAr
MTg2MSw2IEBACiAgICAgICAgIHNldFNlbGVjdGlvbihzZWwpOwogfQogCi12b2lkIEZyYW1lOjpo
YW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBl
dmVudCkKLXsKLSAgICBoYW5kbGVNb3VzZU1vdmVFdmVudFBhcnQyKGV2ZW50KTsKLX0KLQogdm9p
ZCBGcmFtZTo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQpCiB7CiAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTM2ODEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAwNi0wNC0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
LSB1cGRhdGVkIHNvbWUgdGVzdCByZXN1bHRzCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3BsYWlu
dGV4dC1tb2RlLTItZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGJlY2F1c2UgdGhlcmUncyBubyBsb25n
ZXIKKyAgICAgICAgYW5kIGV4dHJhIDxkaXY+IGVsZW1lbnQgYWRkZWQuCisKKyAgICAgICAgKiBm
YXN0L2xpc3RzL2RyYWctaW50by1tYXJrZXItZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHRvIHJlZmxl
Y3QgdGhlIGZhY3QKKyAgICAgICAgdGhhdCB3ZSBubyBsb25nZXIgZXhwZWN0IGEgZmFpbHVyZSBo
ZXJlLgorICAgICAgICAqIGZhc3QvbGlzdHMvZHJhZy1pbnRvLW1hcmtlci1leHBlY3RlZC5jaGVj
a3N1bTogRGl0dG8uCisgICAgICAgICogZmFzdC9saXN0cy9kcmFnLWludG8tbWFya2VyLWV4cGVj
dGVkLnBuZzogRGl0dG8uCisKIDIwMDYtMDQtMDMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBu
eXBvcC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2xpc3RzL2RyYWctaW50by1tYXJrZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvZHJhZy1pbnRvLW1hcmtlci1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDEzNjgwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9kcmFnLWludG8tbWFya2Vy
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTQgKzMwLDUgQEAKICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoNzQzLDM2KSB3aWR0aCAyMTogIlNvLCIKICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw1NCkgd2lkdGggMzcxOiAidGhpcyB0ZXN0IGRyYWdzIGEgYml0IG9mIHRleHQgb3Zl
ciB0aGUgbGlzdCBtYXJrZXIgYW5kIGRyb3BzIGl0LiAiCiAgICAgICAgICAgdGV4dCBydW4gYXQg
KDM3MSw1NCkgd2lkdGggMzg2OiAiSXQgc2hvdWxkIGJlIHBhc3RlZCBpbnRvIHRoZSBsaXN0IGl0
ZW0sIHdoaWNoIGlzIGNvbnRlbnRlZGl0YWJsZS4iCi0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsMTYxKSBzaXplIDc4NHgzNgotICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNp
emUgNzcxeDM2Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NzF4
MzYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcxMzogIlRoaXMgdGVzdCBj
YXNlIGRlbW9uc3RyYXRlcyBhIGJ1ZyBpbiBEdW1wUmVuZGVyVHJlZSdzIGRyYWcgYW5kIGRyb3Ag
c3VwcG9ydCwgd2hpY2ggaXMgdGhhdCB0aGUgc291cmNlICIKLSAgICAgICAgICAgIHRleHQgcnVu
IGF0ICg3MTMsMCkgd2lkdGggNTg6ICJpcyBjb3BpZWQiCi0gICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwxOCkgd2lkdGggMTEzOiAib24gZHJvcCwgbm90IGN1dC4iCi0gICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgxMTMsMTgpIHNpemUgMTczeDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQg
KDExMywxOCkgd2lkdGggNDogIiAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDExNywxOCkgd2lk
dGggMTY5OiAiU28geW91J2xsIHNlZSAnd29ybGQnIHR3aWNlLiIKIHNlbGVjdGlvbiBzdGFydDog
cG9zaXRpb24gMCBvZiBjaGlsZCAwIHtURVhUfSBvZiBjaGlsZCAwIHtTUEFOfSBvZiBjaGlsZCAw
IHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDAge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9
IG9mIGRvY3VtZW50CiBzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDYgb2YgY2hpbGQgMCB7VEVY
VH0gb2YgY2hpbGQgMCB7U1BBTn0gb2YgY2hpbGQgMCB7TEl9IG9mIGNoaWxkIDEge1VMfSBvZiBj
aGlsZCAwIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9saXN0cy9kcmFnLWludG8tbWFya2VyLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvZHJhZy1pbnRvLW1hcmtlci1leHBlY3Rl
ZC5jaGVja3N1bQkocmV2aXNpb24gMTM2ODApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2Ry
YWctaW50by1tYXJrZXItZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEg
QEAKLWRmMjdlZDI1YjFmMDc5NTEyZDVhYWQwY2U1NzcxYzY5ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorNzIwMjk2ZGU1MzU2ZWE3YzhiOTYzYTM5ZDg4ZDVmZjIKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2RyYWctaW50by1tYXJr
ZXItZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFz
IGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGxhaW50ZXh0LW1vZGUtMi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFpbnRleHQtbW9kZS0y
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM2ODApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3BsYWludGV4dC1tb2RlLTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIs
NyBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJl
cGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgdG8gMCBvZiBESVYgZ2l2ZW5BY3Rp
b246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWIHRvIDAgb2YgRElW
ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA5NCBvZiAjdGV4dCA+IERJViA+IERJViB0byA5
NCBvZiAjdGV4dCA+IERJViA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgdG8gMCBvZiAjdGV4
dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOTQgb2YgI3RleHQgPiBESVYgdG8gOTQgb2Yg
I3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTQzLDcgKzQzLDYgQEAKICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDMyNjogIlN1Y2Nlc3M6IGRvY3VtZW50LmV4ZWNDb21tYW5kKFwi
UGFzdGVcIikgPT0gdHJ1ZSIKIGxheWVyIGF0ICgxMSwxMykgc2l6ZSA1OTR4MTMKICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSA1OTR4MTMKLSAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMSwwKSBzaXplIDU5MngxMwotICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSA0ODB4MTMKLSAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDgwOiAiVGhpcyBzdHls
ZWQgdGV4dCwgYW5kIGxpbmsgd2lsbCBiZSBwYXN0ZWQgaW50byB0aGUgdGV4dGZpZWxkLiBBbGwg
cmljaG5lc3Mgc2hvdWxkIGJlIHN0cmlwcGVkLiIKLWNhcmV0OiBwb3NpdGlvbiA5NCBvZiBjaGls
ZCAwIHtURVhUfSBvZiBjaGlsZCAwIHtESVZ9IG9mIGRvY3VtZW50CisgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDEsMCkgc2l6ZSA0ODB4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRo
IDQ4MDogIlRoaXMgc3R5bGVkIHRleHQsIGFuZCBsaW5rIHdpbGwgYmUgcGFzdGVkIGludG8gdGhl
IHRleHRmaWVsZC4gQWxsIHJpY2huZXNzIHNob3VsZCBiZSBzdHJpcHBlZC4iCitjYXJldDogcG9z
aXRpb24gOTQgb2YgY2hpbGQgMCB7VEVYVH0gb2YgZG9jdW1lbnQK
</data>
<flag name="review"
          id="2047"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>