<?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>25452</bug_id>
          
          <creation_ts>2009-04-28 11:41:53 -0700</creation_ts>
          <short_desc>AX: Don&apos;t create addition space AXStaticText element for every bold or link tag</short_desc>
          <delta_ts>2009-04-28 12:14:33 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119127</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-04-28 11:41:53 -0700</bug_when>
    <thetext>In the following simplified html example with two bold tag and two links, I would expect four uiElements represented thru accessibility.  Instead, I see eight uiElements.  Somehow WebKit is creating another AXStaticText that contains a space character as the AXValue after every bold or link tag.  See the screenshot for an example of one of these spacer AXStaticText.  Note that the start marker is the same as the end marker.

&lt;b&gt;First&lt;/b&gt;
&lt;b&gt;Second&lt;/b&gt;
&lt;a href=&quot;http://www.apple.com&quot;&gt;Apple&lt;/a&gt;
&lt;a href=&quot;http://www.yahoo.com&quot;&gt;Yahoo&lt;/a&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119128</commentid>
    <comment_count>1</comment_count>
      <attachid>29855</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-04-28 11:45:57 -0700</bug_when>
    <thetext>Created attachment 29855
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119129</commentid>
    <comment_count>2</comment_count>
      <attachid>29855</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-28 11:51:52 -0700</bug_when>
    <thetext>Comment on attachment 29855
patch 

&gt; +        // text elements that are just empty whitespace should not be returned
&gt; +        String text = renderText-&gt;text()-&gt;simplifyWhiteSpace();
&gt; +        if (text.isNull() || text.isEmpty())
&gt; +            return true;
&gt; +        return false;

This should just be:

    return renderText-&gt;text()-&gt;simplifyWhiteSpace().isEmpty();

There&apos;s no need for a separate isNull check since null strings are also guaranteed to be empty. But really, to be efficient, it should be:

    return renderText-&gt;text()-&gt;containsOnlyWhitespace();

Unfortunately, that function is currently defined for StringImpl* but not for String. Since RenderText guarantees that text() will never return null (you can see assertions to that effect inside the class), you can do this:

    return renderText-&gt;text()-&gt;impl()-&gt;containsOnlyWhitespace();

I値l say review- because it would be better to do the more efficient version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119130</commentid>
    <comment_count>3</comment_count>
      <attachid>29856</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-04-28 11:51:54 -0700</bug_when>
    <thetext>Created attachment 29856
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119131</commentid>
    <comment_count>4</comment_count>
      <attachid>29856</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-28 11:54:29 -0700</bug_when>
    <thetext>Comment on attachment 29856
patch

Same comments on this patch, but this also seems to include other seemingly-unrelated changes. Maybe fixing two bugs at once?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119132</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-04-28 11:55:28 -0700</bug_when>
    <thetext>you&apos;re too quick for me. first time uploaded i forgot the DumpRenderTree changes
i obsoleted the first patch, then tried to upload again, but didn&apos;t see the comments until i had uploaded</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119133</commentid>
    <comment_count>6</comment_count>
      <attachid>29857</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-04-28 12:03:44 -0700</bug_when>
    <thetext>Created attachment 29857
patch

updated patch based on darin&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119134</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-04-28 12:04:10 -0700</bug_when>
    <thetext>it seems that i can use

renderText-&gt;text()-&gt;containsOnlyWhitespace();
without problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119138</commentid>
    <comment_count>8</comment_count>
      <attachid>29857</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-28 12:10:10 -0700</bug_when>
    <thetext>Comment on attachment 29857
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119139</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-04-28 12:14:33 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/42946</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29855</attachid>
            <date>2009-04-28 11:45:57 -0700</date>
            <delta_ts>2009-04-28 12:03:44 -0700</delta_ts>
            <desc>patch </desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5491</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mjk0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDQtMjggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjU0NTI6IEFYOiBEb24ndCBjcmVhdGUgYWRkaXRpb24gc3BhY2UgQVhTdGF0aWNUZXh0
IGVsZW1lbnQgZm9yIGV2ZXJ5IGJvbGQgb3IgbGluayB0YWcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDUyCisKKyAgICAgICAgVGVzdDogYWNjZXNz
aWJpbGl0eS9pZ25vcmUtc3BhY2VyLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2UvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKwogMjAwOS0wNC0yOCAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gNDI5NDIpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExODQsNyArMTE4NCwxNSBAQCBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liCiAgICAgICAgIGlmIChwYXJl
bnRPYmplY3RVbmlnbm9yZWQoKS0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51SXRlbVJvbGUg
fHwKICAgICAgICAgICAgIHBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5hcmlhUm9sZUF0dHJpYnV0
ZSgpID09IE1lbnVCdXR0b25Sb2xlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICByZXR1cm4gbV9yZW5kZXJlci0+aXNCUigpIHx8ICF0b1JlbmRlclRleHQobV9yZW5kZXJlcikt
PmZpcnN0VGV4dEJveCgpOworICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0ID0gdG9SZW5k
ZXJUZXh0KG1fcmVuZGVyZXIpOworICAgICAgICBpZiAobV9yZW5kZXJlci0+aXNCUigpIHx8ICFy
ZW5kZXJUZXh0LT5maXJzdFRleHRCb3goKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAKKyAgICAgICAgLy8gdGV4dCBlbGVtZW50cyB0aGF0IGFyZSBqdXN0IGVtcHR5IHdoaXRl
c3BhY2Ugc2hvdWxkIG5vdCBiZSByZXR1cm5lZAorICAgICAgICBTdHJpbmcgdGV4dCA9IHJlbmRl
clRleHQtPnRleHQoKS0+c2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgICAgIGlmICh0ZXh0Lmlz
TnVsbCgpIHx8IHRleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKGlzSGVhZGluZygpKQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNDI5NDIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNC0yOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJ1ZyAyNTQ1MjogQVg6IERvbid0IGNyZWF0ZSBhZGRpdGlvbiBzcGFjZSBBWFN0
YXRpY1RleHQgZWxlbWVudCBmb3IgZXZlcnkgYm9sZCBvciBsaW5rIHRhZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NTIKKyAKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFjZXItZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFjZXItZWxlbWVudHMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1h
bmNob3JzMi1leHBlY3RlZC50eHQ6CisKIDIwMDktMDQtMjggIENocmlzIEZsZWl6YWNoICA8Y2Zs
ZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5k
ZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZ25vcmUt
c3BhY2VyLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMyBAQAorRmlyc3QgU2Vjb25kIEFwcGxlIFlhaG9vCitUZXN0IHBh
c3NlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFjZXItZWxl
bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lnbm9y
ZS1zcGFjZXItZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM2IEBACis8aHRtbD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9z
Y3JpcHQ+Cis8Ym9keSBpZD0iYm9keSI+CisgCisgICAgPCEtLSBUaGlzIHRlc3QgbWFrZXMgc3Vy
ZSB0aGF0IHNwYWNlciBlbGVtZW50cyBhcmUgbm90IHJldHVybmVkIGFzIGVsZW1lbnRzLiBUaGVy
ZSBzaG91bGQgb25seSBiZSA0IGVsZW1lbnRzIHJldHVybmVkIC0tPgorIAorICAgPGI+Rmlyc3Q8
L2I+CisgICA8Yj5TZWNvbmQ8L2I+CisgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNvbSI+
QXBwbGU8L2E+CisgICA8YSBocmVmPSJodHRwOi8vd3d3LnlhaG9vLmNvbSI+WWFob288L2E+CisK
KyAgICAKKyAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCisgICAgIAorICAgIDxzY3JpcHQ+
CisgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAg
ICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisKKyAg
ICAgICAgICAgIHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKKyAg
ICAgICAgICAgIGJvZHkuZm9jdXMoKTsKKyAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmIChjb250YWluZXIuY2hpbGRyZW5Db3VudCA9PSA0KSB7
CisgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdCBwYXNzZWRcbiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSAiVGVzdCBmYWlsZWRcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2lu
dGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0Mjk0MSkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9y
czItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCBBbmNob3IgVGVz
dHMKIEFYUm9sZTogQVhIZWFkaW5nCiBBWFN1YnJvbGU6IChudWxsKQogQVhSb2xlRGVzY3JpcHRp
b246IGhlYWRpbmcKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDU+CitBWENoaWxkcmVuOiA8
YXJyYXkgb2Ygc2l6ZSA0PgogQVhIZWxwOiAKIEFYUGFyZW50OiA8QVhIZWFkaW5nOiAnW2VkaXRd
IFRvdXJldHRlIHN5bmRyb21lJz4KIEFYU2l6ZTogTlNTaXplOiB7NzY5LCAyMn0KQEAgLTI1LDI3
ICsyNSwyOCBAQCBBWFRvcExldmVsVUlFbGVtZW50OiA8QVhIZWFkaW5nOiAnW2VkaXRdCiAtLS0t
LS0tLS0tLS0KIAogCi1BWFJvbGU6IEFYU3RhdGljVGV4dAorQVhSb2xlOiBBWEdyb3VwCiBBWFN1
YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IHRleHQKLUFYQ2hpbGRyZW46IDxhcnJh
eSBvZiBzaXplIDA+CitBWFJvbGVEZXNjcmlwdGlvbjogZ3JvdXAKK0FYQ2hpbGRyZW46IDxhcnJh
eSBvZiBzaXplIDE+CiBBWEhlbHA6IAotQVhQYXJlbnQ6IDxBWFN0YXRpY1RleHQ+Ci1BWFNpemU6
IE5TU2l6ZTogezQsIDE4fQorQVhQYXJlbnQ6IDxBWEdyb3VwPgorQVhTaXplOiBOU1NpemU6IHs3
NjksIDE4fQogQVhUaXRsZTogCiBBWERlc2NyaXB0aW9uOiAKIEFYVmFsdWU6IAogQVhGb2N1c2Vk
OiAwCiBBWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhTdGF0aWNUZXh0PgorQVhXaW5kb3c6IDxB
WEdyb3VwPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1h
cmtlcjogPEFYU3RhdGljVGV4dD4KLUFYRW5kVGV4dE1hcmtlcjogPEFYU3RhdGljVGV4dD4KK0FY
U3RhcnRUZXh0TWFya2VyOiA8QVhHcm91cD4KK0FYRW5kVGV4dE1hcmtlcjogPEFYR3JvdXA+CiBB
WFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50czogKG51bGwpCiBBWFNlbGVjdGVkOiAwCiBB
WEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYU3RhdGljVGV4dD4K
K0FYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWEdyb3VwPgorQVhUaXRsZVVJRWxlbWVudDogKG51bGwp
CiAKIC0tLS0tLS0tLS0tLQogCg==
</data>
<flag name="review"
          id="14949"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29856</attachid>
            <date>2009-04-28 11:51:54 -0700</date>
            <delta_ts>2009-04-28 12:03:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10086</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mjk0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDQtMjggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjU0NTI6IEFYOiBEb24ndCBjcmVhdGUgYWRkaXRpb24gc3BhY2UgQVhTdGF0aWNUZXh0
IGVsZW1lbnQgZm9yIGV2ZXJ5IGJvbGQgb3IgbGluayB0YWcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDUyCisKKyAgICAgICAgVGVzdDogYWNjZXNz
aWJpbGl0eS9pZ25vcmUtc3BhY2VyLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2UvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKwogMjAwOS0wNC0yOCAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gNDI5NDIpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExODQsNyArMTE4NCwxNSBAQCBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liCiAgICAgICAgIGlmIChwYXJl
bnRPYmplY3RVbmlnbm9yZWQoKS0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51SXRlbVJvbGUg
fHwKICAgICAgICAgICAgIHBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5hcmlhUm9sZUF0dHJpYnV0
ZSgpID09IE1lbnVCdXR0b25Sb2xlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICByZXR1cm4gbV9yZW5kZXJlci0+aXNCUigpIHx8ICF0b1JlbmRlclRleHQobV9yZW5kZXJlcikt
PmZpcnN0VGV4dEJveCgpOworICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0ID0gdG9SZW5k
ZXJUZXh0KG1fcmVuZGVyZXIpOworICAgICAgICBpZiAobV9yZW5kZXJlci0+aXNCUigpIHx8ICFy
ZW5kZXJUZXh0LT5maXJzdFRleHRCb3goKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAKKyAgICAgICAgLy8gdGV4dCBlbGVtZW50cyB0aGF0IGFyZSBqdXN0IGVtcHR5IHdoaXRl
c3BhY2Ugc2hvdWxkIG5vdCBiZSByZXR1cm5lZAorICAgICAgICBTdHJpbmcgdGV4dCA9IHJlbmRl
clRleHQtPnRleHQoKS0+c2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgICAgIGlmICh0ZXh0Lmlz
TnVsbCgpIHx8IHRleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKGlzSGVhZGluZygpKQpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNDI5NDIpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNC0yOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhYmlsaXR5IHRvIGdldCB0aGUgY2hpbGRyZW4gY291bnQgb2YgYW4gQVgg
ZWxlbWVudC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwOgorICAgICAgICAoZ2V0Q2hpbGRyZW5Db3VudENhbGxiYWNrKToKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoaWxkcmVuQ291bnQpOgorCiAyMDA5LTA0LTI3ICBKYW4gTWljaGFlbCBBbG9uem8g
IDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9y
b25oYS4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiA0Mjk0MikKKysrIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjQsNiArMjI0LDExIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldERlc2NyaXB0aW9uQ2FsbGJh
Y2sKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgZGVzY3JpcHRpb24uZ2V0
KCkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRDaGlsZHJlbkNvdW50Q2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHJldHVybiBKU1ZhbHVl
TWFrZU51bWJlcihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+Y2hpbGRyZW5Db3Vu
dCgpKTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgZ2V0V2lkdGhDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVt
YmVyKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT53aWR0aCgpKTsKQEAgLTI5MCw2
ICsyOTUsNyBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTCiAgICAg
ICAgIHsgImludFZhbHVlIiwgZ2V0SW50VmFsdWVDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJtaW5WYWx1ZSIsIGdldE1pblZhbHVlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAibWF4VmFsdWUiLCBnZXRNYXhWYWx1ZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsg
ImNoaWxkcmVuQ291bnQiLCBnZXRDaGlsZHJlbkNvdW50Q2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyIiwgZ2V0SW5zZXJ0aW9uUG9pbnRMaW5l
TnVtYmVyQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2VsZWN0ZWRUZXh0UmFuZ2Ui
LCBnZXRTZWxlY3RlZFRleHRSYW5nZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInN1
cHBvcnRzUHJlc3NBY3Rpb24iLCBnZXRTdXBwb3J0c1ByZXNzQWN0aW9uQ2FsbGJhY2ssIDAsIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDQyOTQyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5n
dGgpOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZ2V0Q2hpbGRBdEluZGV4KHVu
c2lnbmVkKTsKKyAgICBpbnQgY2hpbGRyZW5Db3VudCgpOwogICAgIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgdGl0bGVVSUVsZW1lbnQoKTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHBhcmVu
dEVsZW1lbnQoKTsKICAgICAKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiA0
Mjk0MikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDE0IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4KICAgICBjb252ZXJ0TlNBcnJheVRvVmVj
dG9yKGNoaWxkcmVuLCBlbGVtZW50VmVjdG9yKTsKIH0KIAoraW50IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoaWxkcmVuQ291bnQoKQoreworICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBjaGlsZHJlbjsKKyAgICBnZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgCisgICAgcmV0
dXJuIGNoaWxkcmVuLnNpemUoKTsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAg
VmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNoaWxkcmVuOwpJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50V2luLmNwcAkocmV2aXNpb24gNDI5NDIpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTczLDYgKzczLDEzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4K
ICAgICAgICAgZWxlbWVudFZlY3Rvci5hcHBlbmQoZ2V0Q2hpbGRBdEluZGV4KGkpKTsKIH0KIAor
aW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQoKQoreworICAgIGxvbmcg
Y2hpbGRDb3VudDsKKyAgICBtX2VsZW1lbnQtPmdldF9hY2NDaGlsZENvdW50KCZjaGlsZENvdW50
KTsKKyAgICByZXR1cm4gY2hpbGRDb3VudDsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7
CiAgICAgQ09NUHRyPElEaXNwYXRjaD4gY2hpbGQ7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0Mjk0MikK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDA5LTA0LTI4ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDI1NDUyOiBB
WDogRG9uJ3QgY3JlYXRlIGFkZGl0aW9uIHNwYWNlIEFYU3RhdGljVGV4dCBlbGVtZW50IGZvciBl
dmVyeSBib2xkIG9yIGxpbmsgdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTQ1MgorIAorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaWdub3JlLXNw
YWNlci1lbGVtZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9pbnRlcm5hbC1saW5rLWFuY2hvcnMyLWV4cGVjdGVkLnR4dDoK
KwogMjAwOS0wNC0yOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pZ25vcmUtc3BhY2VyLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFjZXItZWxlbWVudHMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZ25vcmUt
c3BhY2VyLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBA
CitGaXJzdCBTZWNvbmQgQXBwbGUgWWFob28KK1Rlc3QgcGFzc2VkCisKSW5kZXg6IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZ25vcmUtc3BhY2Vy
LWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPHNj
cmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxib2R5IGlkPSJib2R5
Ij4KKyAKKyAgICA8IS0tIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgc3BhY2VyIGVsZW1lbnRz
IGFyZSBub3QgcmV0dXJuZWQgYXMgZWxlbWVudHMuIFRoZXJlIHNob3VsZCBvbmx5IGJlIDQgZWxl
bWVudHMgcmV0dXJuZWQgLS0+CisgCisgICA8Yj5GaXJzdDwvYj4KKyAgIDxiPlNlY29uZDwvYj4K
KyAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBwbGUuY29tIj5BcHBsZTwvYT4KKyAgIDxhIGhyZWY9
Imh0dHA6Ly93d3cueWFob28uY29tIj5ZYWhvbzwvYT4KKworICAgIAorICAgIDxkaXYgaWQ9InJl
c3VsdCI+PC9kaXY+CisKKyAgICAgCisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKworICAgICAgICAgICAgdmFyIGJvZHkgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOworICAgICAgICAgICAgYm9keS5mb2N1cygp
OworICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKGNvbnRhaW5lci5jaGlsZHJlbkNvdW50ID09IDQpIHsKKyAgICAgICAgICAgICAgICByZXN1
bHQuaW5uZXJUZXh0ICs9ICJUZXN0IHBhc3NlZFxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJUZXN0IGZh
aWxlZFxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
aW50ZXJuYWwtbGluay1hbmNob3JzMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1hbmNob3JzMi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDQyOTQxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1hbmNob3JzMi1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTMsNyArMyw3IEBAIEFuY2hvciBUZXN0cwogQVhSb2xlOiBBWEhlYWRpbmcK
IEFYU3Vicm9sZTogKG51bGwpCiBBWFJvbGVEZXNjcmlwdGlvbjogaGVhZGluZwotQVhDaGlsZHJl
bjogPGFycmF5IG9mIHNpemUgNT4KK0FYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDQ+CiBBWEhl
bHA6IAogQVhQYXJlbnQ6IDxBWEhlYWRpbmc6ICdbZWRpdF0gVG91cmV0dGUgc3luZHJvbWUnPgog
QVhTaXplOiBOU1NpemU6IHs3NjksIDIyfQpAQCAtMjUsMjcgKzI1LDI4IEBAIEFYVG9wTGV2ZWxV
SUVsZW1lbnQ6IDxBWEhlYWRpbmc6ICdbZWRpdF0KIC0tLS0tLS0tLS0tLQogCiAKLUFYUm9sZTog
QVhTdGF0aWNUZXh0CitBWFJvbGU6IEFYR3JvdXAKIEFYU3Vicm9sZTogKG51bGwpCi1BWFJvbGVE
ZXNjcmlwdGlvbjogdGV4dAotQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMD4KK0FYUm9sZURl
c2NyaXB0aW9uOiBncm91cAorQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMT4KIEFYSGVscDog
Ci1BWFBhcmVudDogPEFYU3RhdGljVGV4dD4KLUFYU2l6ZTogTlNTaXplOiB7NCwgMTh9CitBWFBh
cmVudDogPEFYR3JvdXA+CitBWFNpemU6IE5TU2l6ZTogezc2OSwgMTh9CiBBWFRpdGxlOiAKIEFY
RGVzY3JpcHRpb246IAogQVhWYWx1ZTogCiBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQotQVhX
aW5kb3c6IDxBWFN0YXRpY1RleHQ+CitBWFdpbmRvdzogPEFYR3JvdXA+CiBBWFNlbGVjdGVkVGV4
dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhTdGF0aWNUZXh0Pgot
QVhFbmRUZXh0TWFya2VyOiA8QVhTdGF0aWNUZXh0PgorQVhTdGFydFRleHRNYXJrZXI6IDxBWEdy
b3VwPgorQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91cD4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRV
SUVsZW1lbnRzOiAobnVsbCkKIEFYU2VsZWN0ZWQ6IDAKIEFYQmxvY2tRdW90ZUxldmVsOiAwCi1B
WFRvcExldmVsVUlFbGVtZW50OiA8QVhTdGF0aWNUZXh0PgorQVhUb3BMZXZlbFVJRWxlbWVudDog
PEFYR3JvdXA+CitBWFRpdGxlVUlFbGVtZW50OiAobnVsbCkKIAogLS0tLS0tLS0tLS0tCiAK
</data>
<flag name="review"
          id="14950"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29857</attachid>
            <date>2009-04-28 12:03:44 -0700</date>
            <delta_ts>2009-04-28 12:10:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9988</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mjk0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDQtMjggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjU0NTI6IEFYOiBEb24ndCBjcmVhdGUgYWRkaXRpb24gc3BhY2UgQVhTdGF0aWNUZXh0
IGVsZW1lbnQgZm9yIGV2ZXJ5IGJvbGQgb3IgbGluayB0YWcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDUyCisKKyAgICAgICAgVGVzdDogYWNjZXNz
aWJpbGl0eS9pZ25vcmUtc3BhY2VyLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2UvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKwogMjAwOS0wNC0yOCAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gNDI5NDIpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExODQsNyArMTE4NCwxMiBAQCBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liCiAgICAgICAgIGlmIChwYXJl
bnRPYmplY3RVbmlnbm9yZWQoKS0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51SXRlbVJvbGUg
fHwKICAgICAgICAgICAgIHBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5hcmlhUm9sZUF0dHJpYnV0
ZSgpID09IE1lbnVCdXR0b25Sb2xlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICByZXR1cm4gbV9yZW5kZXJlci0+aXNCUigpIHx8ICF0b1JlbmRlclRleHQobV9yZW5kZXJlcikt
PmZpcnN0VGV4dEJveCgpOworICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0ID0gdG9SZW5k
ZXJUZXh0KG1fcmVuZGVyZXIpOworICAgICAgICBpZiAobV9yZW5kZXJlci0+aXNCUigpIHx8ICFy
ZW5kZXJUZXh0LT5maXJzdFRleHRCb3goKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAKKyAgICAgICAgLy8gdGV4dCBlbGVtZW50cyB0aGF0IGFyZSBqdXN0IGVtcHR5IHdoaXRl
c3BhY2Ugc2hvdWxkIG5vdCBiZSByZXR1cm5lZAorICAgICAgICByZXR1cm4gcmVuZGVyVGV4dC0+
dGV4dCgpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIGlmIChp
c0hlYWRpbmcoKSkKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyOTQyKQorKysgV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDQtMjggIENocmlz
IEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWJpbGl0eSB0byBnZXQgdGhlIGNoaWxkcmVu
IGNvdW50IG9mIGFuIEFYIGVsZW1lbnQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKGdldENoaWxkcmVuQ291bnRDYWxsYmFj
ayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKU0NsYXNzKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHA6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KToKKwogMjAwOS0wNC0yNyAgSmFu
IE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHdXN0YXZvIE5vcm9uaGEuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gNDI5NDIpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI0LDYgKzIyNCwxMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRE
ZXNjcmlwdGlvbkNhbGxiYWNrCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQs
IGRlc2NyaXB0aW9uLmdldCgpKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZ2V0Q2hpbGRyZW5D
b3VudENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVj
dCktPmNoaWxkcmVuQ291bnQoKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFdpZHRoQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIHJldHVy
biBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+d2lk
dGgoKSk7CkBAIC0yOTAsNiArMjk1LDcgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpnZXRKUwogICAgICAgICB7ICJpbnRWYWx1ZSIsIGdldEludFZhbHVlQ2FsbGJhY2ssIDAs
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAibWluVmFsdWUiLCBnZXRNaW5WYWx1ZUNhbGxiYWNrLCAwLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgIm1heFZhbHVlIiwgZ2V0TWF4VmFsdWVDYWxsYmFjaywgMCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorICAgICAgICB7ICJjaGlsZHJlbkNvdW50IiwgZ2V0Q2hpbGRyZW5Db3VudENhbGxiYWNr
LCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgImluc2VydGlvblBvaW50TGluZU51bWJlciIsIGdldElu
c2VydGlvblBvaW50TGluZU51bWJlckNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
bGVjdGVkVGV4dFJhbmdlIiwgZ2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxsYmFjaywgMCwga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzdXBwb3J0c1ByZXNzQWN0aW9uIiwgZ2V0U3VwcG9ydHNQcmVzc0FjdGlv
bkNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiA0Mjk0MikKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRDaGlsZHJlbldp
dGhSYW5nZShWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mLCB1bnNpZ25lZCBsb2NhdGlv
biwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGdl
dENoaWxkQXRJbmRleCh1bnNpZ25lZCk7CisgICAgaW50IGNoaWxkcmVuQ291bnQoKTsKICAgICBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IHRpdGxlVUlFbGVtZW50KCk7CiAgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCBwYXJlbnRFbGVtZW50KCk7CiAgICAgCkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQkocmV2aXNpb24gNDI5NDIpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIw
MywxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuCiAgICAgY29u
dmVydE5TQXJyYXlUb1ZlY3RvcihjaGlsZHJlbiwgZWxlbWVudFZlY3Rvcik7CiB9CiAKK2ludCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KCkKK3sKKyAgICBWZWN0b3I8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRyZW4oY2hpbGRyZW4p
OworICAgIAorICAgIHJldHVybiBjaGlsZHJlbi5zaXplKCk7Cit9CisKIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQogewogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjaGlsZHJlbjsK
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
QWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJKHJldmlzaW9uIDQyOTQyKQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3MywxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldENoaWxkcmVuCiAgICAgICAgIGVsZW1lbnRWZWN0b3IuYXBwZW5kKGdldENoaWxkQXRJ
bmRleChpKSk7CiB9CiAKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50
KCkKK3sKKyAgICBsb25nIGNoaWxkQ291bnQ7CisgICAgbV9lbGVtZW50LT5nZXRfYWNjQ2hpbGRD
b3VudCgmY2hpbGRDb3VudCk7CisgICAgcmV0dXJuIGNoaWxkQ291bnQ7Cit9CisKIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRBdEluZGV4KHVu
c2lnbmVkIGluZGV4KQogewogICAgIENPTVB0cjxJRGlzcGF0Y2g+IGNoaWxkOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNDI5NDIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNC0yOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEJ1ZyAyNTQ1MjogQVg6IERvbid0IGNyZWF0ZSBhZGRpdGlvbiBzcGFjZSBBWFN0YXRpY1Rl
eHQgZWxlbWVudCBmb3IgZXZlcnkgYm9sZCBvciBsaW5rIHRhZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NTIKKyAKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lnbm9yZS1zcGFjZXItZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFjZXItZWxlbWVudHMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1hbmNob3Jz
Mi1leHBlY3RlZC50eHQ6CisKIDIwMDktMDQtMjggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZ25vcmUtc3BhY2Vy
LWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorRmlyc3QgU2Vjb25kIEFwcGxlIFlhaG9vCitUZXN0IHBhc3NlZAor
CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFjZXItZWxlbWVudHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFj
ZXItZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2
IEBACis8aHRtbD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+
Cis8Ym9keSBpZD0iYm9keSI+CisgCisgICAgPCEtLSBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0
IHNwYWNlciBlbGVtZW50cyBhcmUgbm90IHJldHVybmVkIGFzIGVsZW1lbnRzLiBUaGVyZSBzaG91
bGQgb25seSBiZSA0IGVsZW1lbnRzIHJldHVybmVkIC0tPgorIAorICAgPGI+Rmlyc3Q8L2I+Cisg
ICA8Yj5TZWNvbmQ8L2I+CisgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNvbSI+QXBwbGU8
L2E+CisgICA8YSBocmVmPSJodHRwOi8vd3d3LnlhaG9vLmNvbSI+WWFob288L2E+CisKKyAgICAK
KyAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCisgICAgIAorICAgIDxzY3JpcHQ+CisgICAg
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHZh
ciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisKKyAgICAgICAg
ICAgIHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKKyAgICAgICAg
ICAgIGJvZHkuZm9jdXMoKTsKKyAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChjb250YWluZXIuY2hpbGRyZW5Db3VudCA9PSA0KSB7CisgICAg
ICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdCBwYXNzZWRcbiI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVy
VGV4dCArPSAiVGVzdCBmYWlsZWRcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFs
LWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0Mjk0MSkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCBBbmNob3IgVGVzdHMKIEFY
Um9sZTogQVhIZWFkaW5nCiBBWFN1YnJvbGU6IChudWxsKQogQVhSb2xlRGVzY3JpcHRpb246IGhl
YWRpbmcKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDU+CitBWENoaWxkcmVuOiA8YXJyYXkg
b2Ygc2l6ZSA0PgogQVhIZWxwOiAKIEFYUGFyZW50OiA8QVhIZWFkaW5nOiAnW2VkaXRdIFRvdXJl
dHRlIHN5bmRyb21lJz4KIEFYU2l6ZTogTlNTaXplOiB7NzY5LCAyMn0KQEAgLTI1LDI3ICsyNSwy
OCBAQCBBWFRvcExldmVsVUlFbGVtZW50OiA8QVhIZWFkaW5nOiAnW2VkaXRdCiAtLS0tLS0tLS0t
LS0KIAogCi1BWFJvbGU6IEFYU3RhdGljVGV4dAorQVhSb2xlOiBBWEdyb3VwCiBBWFN1YnJvbGU6
IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IHRleHQKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBz
aXplIDA+CitBWFJvbGVEZXNjcmlwdGlvbjogZ3JvdXAKK0FYQ2hpbGRyZW46IDxhcnJheSBvZiBz
aXplIDE+CiBBWEhlbHA6IAotQVhQYXJlbnQ6IDxBWFN0YXRpY1RleHQ+Ci1BWFNpemU6IE5TU2l6
ZTogezQsIDE4fQorQVhQYXJlbnQ6IDxBWEdyb3VwPgorQVhTaXplOiBOU1NpemU6IHs3NjksIDE4
fQogQVhUaXRsZTogCiBBWERlc2NyaXB0aW9uOiAKIEFYVmFsdWU6IAogQVhGb2N1c2VkOiAwCiBB
WEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhTdGF0aWNUZXh0PgorQVhXaW5kb3c6IDxBWEdyb3Vw
PgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjog
PEFYU3RhdGljVGV4dD4KLUFYRW5kVGV4dE1hcmtlcjogPEFYU3RhdGljVGV4dD4KK0FYU3RhcnRU
ZXh0TWFya2VyOiA8QVhHcm91cD4KK0FYRW5kVGV4dE1hcmtlcjogPEFYR3JvdXA+CiBBWFZpc2l0
ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50czogKG51bGwpCiBBWFNlbGVjdGVkOiAwCiBBWEJsb2Nr
UXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYU3RhdGljVGV4dD4KK0FYVG9w
TGV2ZWxVSUVsZW1lbnQ6IDxBWEdyb3VwPgorQVhUaXRsZVVJRWxlbWVudDogKG51bGwpCiAKIC0t
LS0tLS0tLS0tLQogCg==
</data>
<flag name="review"
          id="14951"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>