<?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>45116</bug_id>
          
          <creation_ts>2010-09-02 10:15:39 -0700</creation_ts>
          <short_desc>AX: accessibility not returning strings when visibility is hidden</short_desc>
          <delta_ts>2010-09-10 11:35:58 -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>PC</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="chris fleizach">cfleizach</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>273437</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-02 10:15:39 -0700</bug_when>
    <thetext>when an item has a height = 0, or something is not visible, accessibility is not getting the textUnderELement(). That&apos;s because
TextIterators explicitly removing hidden elements. That&apos;s not appropriate for accessibility always</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273462</commentid>
    <comment_count>1</comment_count>
      <attachid>66389</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-02 11:19:32 -0700</bug_when>
    <thetext>Created attachment 66389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273471</commentid>
    <comment_count>2</comment_count>
      <attachid>66390</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-02 11:30:25 -0700</bug_when>
    <thetext>Created attachment 66390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277186</commentid>
    <comment_count>3</comment_count>
      <attachid>66390</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-09-10 07:48:52 -0700</bug_when>
    <thetext>Comment on attachment 66390
Patch

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

&gt; WebCore/WebCore.xcodeproj/project.pbxproj:20494
&gt; +			developmentRegion = English;
This change should not be committed.

&gt; WebCore/editing/TextIterator.cpp:2231
&gt; +    int behavior = (isDisplayString) ? TextIteratorDefaultBehavior: TextIteratorEmitsTextsWithoutTranscoding;
The &apos;behavior&apos; variable should be of type TextIteratorBehavior here.

No need for parenthesis around isDisplayString here.

&gt; WebCore/editing/TextIterator.cpp:2234
&gt; +    for (TextIterator it(r, static_cast&lt;TextIteratorBehavior&gt;(behavior)); !it.atEnd(); it.advance()) {
Then there is no need to cast &apos;behavior&apos; to TextIteratorBehavior here.

&gt; WebCore/editing/TextIterator.h:51
&gt; +String plainText(const Range*, bool ignoreStyleVisibility = false);
It would be nice if this could be an enum (maybe use TextIteratorBehavior?) here instead of just a boolean to make it easier to read the code at call sites without referring to the argument list.  This change is not necessary to land this patch, though.

&gt; WebCore/editing/TextIterator.h:52
&gt; +UChar* plainTextToMallocAllocatedBuffer(const Range*, unsigned&amp; bufferLength, bool isDisplayString, bool ignoreStyleVisibility = false);
Ditto.

&gt; WebCore/editing/TextIterator.h:80
&gt; +    TextIteratorIgnoreStyleVisibility = 1 &lt;&lt; 4
This should be named &quot;TextIteratorIgnoresStyleVisibility&quot; to match the verb tense of the other enums.

&gt; WebCore/editing/TextIterator.h:178
&gt; +    bool m_ignoreStyleVisibility;
This should be named &quot;m_ignoresStyleVisibility&quot; to match the verb tense of other ivars.

&gt; LayoutTests/platform/mac/accessibility/clipped-text-under-element.html:20
&gt; +  &lt;h1&gt;&lt;a id=&quot;hidden-link&quot; tabindex=0 href=&quot;http://domain.com/path/i-am-the-URL?id=1234&quot;&gt;I am the link text.&lt;/a&gt;&lt;/h1&gt;
Change the description to:  &quot;I am the hidden link text.&quot;

&gt; LayoutTests/platform/mac/accessibility/clipped-text-under-element.html:26
&gt; +  &lt;h1&gt;&lt;a id=&quot;visible-link&quot; tabindex=0 href=&quot;http://domain.com/path/i-am-the-URL?id=1234&quot;&gt;I am the link text.&lt;/a&gt;&lt;/h1&gt;
Change the description to:  &quot;I am the visible link text.&quot;

&gt; LayoutTests/platform/mac/accessibility/clipped-text-under-element.html:34
&gt; +    description(&quot;This tests that even if an element is not visible, textUnderElement() will still give the text&quot;);
Nit: Add period at end of the description sentence.

&gt; LayoutTests/platform/mac/accessibility/clipped-text-under-element.html:38
&gt; +        var link1 = accessibilityController.focusedElement;
Use &quot;hiddenLink&quot; instead of &quot;link1&quot; here.

&gt; LayoutTests/platform/mac/accessibility/clipped-text-under-element.html:42
&gt; +        var link2 = accessibilityController.focusedElement;
Use &quot;visibleLink&quot; instead of &quot;link2&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277329</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-10 11:35:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67219</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66389</attachid>
            <date>2010-09-02 11:19:32 -0700</date>
            <delta_ts>2010-09-02 11:30:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45116-20100902111931.patch</filename>
            <type>text/plain</type>
            <size>12982</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjY3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDktMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogYWNjZXNzaWJpbGl0eSBub3QgcmV0dXJuaW5nIHN0cmluZ3Mgd2hlbiB2aXNpYmlsaXR5
IGlzIGhpZGRlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDUxMTYKKworICAgICAgICBBWCBjb2RlIHVzZXMgcGxhaW5UZXh0KCkgaW4gVGV4dEl0ZXJh
dG9yIHRvIGdldCB0aGUgdGV4dCBmb3IgYSBub2RlLgorICAgICAgICBIb3dldmVyLCB3aGVuIHRo
YXQgbm9kZSBpcyBub3QgdmlzaWJsZSwgbm8gdGV4dCBpcyByZXR1cm5lZCBiZWNhdXNlIFRleHRJ
dGVyYXRvciBpZ25vcmVzCisgICAgICAgIGNsaXBwZWQgbm9kZXMgYW5kIG90aGVyIGhpZGRlbiBl
bGVtZW50cy4KKworICAgICAgICBTb2x1dGlvbiBpcyB0byBhZGQgYSBuZXcgdGV4dCBpdGVyYXRv
ciBiZWhhdmlvciBmb3IgaWdub3Jpbmcgc3R5bGUgdmlzaWJsaXR5LiBUaGlzIGFsbG93cworICAg
ICAgICBmb3IgdGV4dCB0byBhbGxvd3MgYmUgcmV0dXJuZWQgZm9yIGFjY2Vzc2liaWxpdHkgcHVy
cG9zZXMuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2xpcHBl
ZC10ZXh0LXVuZGVyLWVsZW1lbnQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5n
VmFsdWUpOgorICAgICAgICAgICBVc2UgdGhlIG5ldyBmbGFnIGZvciBwbGFpblRleHQKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OlRleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4
dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlRmly
c3RMZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNl
ZEVsZW1lbnQpOgorICAgICAgICAgICBVc2UgdGhlIG5ldyBmbGFnIHRvIE5PVCBza2lwIGhpZGRl
biBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYWluVGV4dFRvTWFsbG9jQWxsb2NhdGVk
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWluVGV4dCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuaDoKKyAgICAgICAgICAgQWRkIHRoZSBuZXcgdGV4dCBpdGVyYXRvciBi
ZWhhdmlvci4KKwogMjAxMC0wOS0wMSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24g
NjY2MjApCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MTUs
NyArNTE1LDcgQEAgX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZQogX19a
TjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29y
ZTMyY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnRFdgogX19aTjdXZWJDb3JlMzJjb250
ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZUV2Ci1fX1pON1dlYkNvcmUzMnBsYWluVGV4dFRv
TWFsbG9jQWxsb2NhdGVkQnVmZmVyRVBLTlNfNVJhbmdlRVJqYgorX19aTjdXZWJDb3JlMzJwbGFp
blRleHRUb01hbGxvY0FsbG9jYXRlZEJ1ZmZlckVQS05TXzVSYW5nZUVSamJiCiBfX1pON1dlYkNv
cmUzM2NvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudEV2CiBfX1pON1dlYkNvcmUzM3Nl
dERlZmF1bHRUaHJlYWRWaW9sYXRpb25CZWhhdmlvckVOU18yM1RocmVhZFZpb2xhdGlvbkJlaGF2
aW9yRU5TXzIwVGhyZWFkVmlvbGF0aW9uUm91bmRFCiBfX1pON1dlYkNvcmUzNGNvbnRleHRNZW51
SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb25FdgpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNjY2MjApCisr
KyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMjUsNyArMTAyNSw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojp0ZXh0VW4KICAgICAgICAgICAgIC8vIGNhdGNoIHN0YWxlIFdlYkNvcmVBWE9i
amVjdCAoc2VlIDxyZGFyOi8vcHJvYmxlbS8zOTYwMTk2PikKICAgICAgICAgICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKSAhPSBub2RlLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICAgICAgICAgIHJldHVybiBwbGFpblRleHQocmFuZ2VPZkNvbnRlbnRz
KG5vZGUpLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBwbGFpblRleHQocmFuZ2VPZkNvbnRl
bnRzKG5vZGUpLmdldCgpLCB0cnVlKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTExNDAs
NyArMTE0MCw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmcKICAg
ICAgICAgaWYgKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpIHx8IGVuZFZpc2libGVQb3Np
dGlvbi5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgCi0g
ICAgICAgIHJldHVybiBwbGFpblRleHQobWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBl
bmRWaXNpYmxlUG9zaXRpb24pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHBsYWluVGV4dChtYWtl
UmFuZ2Uoc3RhcnRWaXNpYmxlUG9zaXRpb24sIGVuZFZpc2libGVQb3NpdGlvbikuZ2V0KCksIHRy
dWUpOwogICAgIH0KICAgICAKICAgICBpZiAoaXNUZXh0Q29udHJvbCgpKQpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDY2NjIwKQorKysgV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsNyBAQCBUZXh0SXRl
cmF0b3I6OlRleHRJdGVyYXRvcigpCiAgICAgLCBtX2VudGVyc1RleHRDb250cm9scyhmYWxzZSkK
ICAgICAsIG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5nKGZhbHNlKQogICAgICwgbV9oYW5k
bGVkRmlyc3RMZXR0ZXIoZmFsc2UpCisgICAgLCBtX2lnbm9yZVN0eWxlVmlzaWJpbGl0eShmYWxz
ZSkKIHsKIH0KIApAQCAtMjc4LDYgKzI3OSw3IEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9y
KGNvbnN0IFJhbmdlKiAKICAgICAsIG1fZW50ZXJzVGV4dENvbnRyb2xzKGJlaGF2aW9yICYgVGV4
dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xzKQogICAgICwgbV9lbWl0c1RleHRXaXRob3V0VHJh
bnNjb2RpbmcoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29k
aW5nKQogICAgICwgbV9oYW5kbGVkRmlyc3RMZXR0ZXIoZmFsc2UpCisgICAgLCBtX2lnbm9yZVN0
eWxlVmlzaWJpbGl0eShiZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZVN0eWxlVmlzaWJpbGl0
eSkKIHsKICAgICAvLyBGSVhNRTogc2hvdWxkIHN1cHBvcnQgVGV4dEl0ZXJhdG9yRW5kc0F0RWRp
dGluZ0JvdW5kYXJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvNDM2MDkKICAgICBBU1NFUlQoYmVoYXZp
b3IgIT0gVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5kYXJ5KTsKQEAgLTQ0NCw3ICs0NDYs
NyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAKIGJvb2wgVGV4dEl0ZXJhdG9yOjpo
YW5kbGVUZXh0Tm9kZSgpCiB7Ci0gICAgaWYgKG1fZnVsbHlDbGlwcGVkU3RhY2sudG9wKCkpCisg
ICAgaWYgKG1fZnVsbHlDbGlwcGVkU3RhY2sudG9wKCkgJiYgIW1faWdub3JlU3R5bGVWaXNpYmls
aXR5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZW5kZXJUZXh0KiByZW5kZXJlciA9
IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVyKCkpOwpAQCAtNDY5LDcgKzQ3MSw3IEBAIGJv
b2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChyZW5kZXJlci0+
c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgIGlmIChyZW5kZXJlci0+
c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIW1faWdub3JlU3R5bGVWaXNpYmls
aXR5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpbnQgc3RyTGVuZ3RoID0g
c3RyLmxlbmd0aCgpOwogICAgICAgICBpbnQgZW5kID0gKG1fbm9kZSA9PSBtX2VuZENvbnRhaW5l
cikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7CkBAIC00OTAsNyArNDkyLDcgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgp
LT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgp
LT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhbV9pZ25vcmVTdHlsZVZpc2liaWxpdHkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG1fbGFzdFRleHROb2RlRW5kZWRXaXRo
Q29sbGFwc2VkU3BhY2UgPSB0cnVlOyAvLyBlbnRpcmUgYmxvY2sgaXMgY29sbGFwc2VkIHNwYWNl
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTE2LDcgKzUxOCw3IEBAIGJvb2wgVGV4dEl0ZXJh
dG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgp
CiB7ICAgIAogICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gbV9maXJzdExldHRlclRleHQgPyBt
X2ZpcnN0TGV0dGVyVGV4dCA6IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVyKCkpOwotICAg
IGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpIHsKKyAgICBp
ZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFtX2lnbm9y
ZVN0eWxlVmlzaWJpbGl0eSkgewogICAgICAgICBtX3RleHRCb3ggPSAwOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtNjAwLDcgKzYwMiw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0Tm9kZUZpcnN0TGUKIHsKICAgICBpZiAocmVuZGVyZXItPmZpcnN0TGV0dGVyKCkpIHsKICAg
ICAgICAgUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXItPmZpcnN0TGV0dGVyKCk7Ci0gICAgICAg
IGlmIChyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKHIt
PnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFtX2lnbm9yZVN0eWxlVmlzaWJp
bGl0eSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QgKmN1
cnJDaGlsZCA9IHItPmZpcnN0Q2hpbGQoKTsgY3VyckNoaWxkOyBjdXJyQ2hpbGQtPm5leHRTaWJs
aW5nKCkpIHsKICAgICAgICAgICAgIGlmIChjdXJyQ2hpbGQtPmlzVGV4dCgpKSB7CkBAIC02MjIs
NyArNjI0LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2Rl
LT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9
IFZJU0lCTEUpCisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSAmJiAhbV9pZ25vcmVTdHlsZVZpc2liaWxpdHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlKSB7CkBAIC0y
MjE0LDcgKzIyMTYsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
CiAKIC8vIC0tLS0tLS0tCiAgICAgCi1VQ2hhciogcGxhaW5UZXh0VG9NYWxsb2NBbGxvY2F0ZWRC
dWZmZXIoY29uc3QgUmFuZ2UqIHIsIHVuc2lnbmVkJiBidWZmZXJMZW5ndGgsIGJvb2wgaXNEaXNw
bGF5U3RyaW5nKQorVUNoYXIqIHBsYWluVGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVmZmVyKGNvbnN0
IFJhbmdlKiByLCB1bnNpZ25lZCYgYnVmZmVyTGVuZ3RoLCBib29sIGlzRGlzcGxheVN0cmluZywg
Ym9vbCBpZ25vcmVTdHlsZVZpc2liaWxpdHkpCiB7CiAgICAgVUNoYXIqIHJlc3VsdCA9IDA7CiAK
QEAgLTIyMjYsNyArMjIyOCwxMiBAQCBVQ2hhciogcGxhaW5UZXh0VG9NYWxsb2NBbGxvY2F0ZWRC
dWZmZXIoCiAgICAgT3duUHRyPFZlY3RvcjxUZXh0U2VnbWVudD4gPiB0ZXh0U2VnbWVudHM7CiAg
ICAgVmVjdG9yPFVDaGFyPiB0ZXh0QnVmZmVyOwogICAgIHRleHRCdWZmZXIucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShjTWF4U2VnbWVudFNpemUpOwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHIs
IGlzRGlzcGxheVN0cmluZyA/IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciA6IFRleHRJdGVy
YXRvckVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5j
ZSgpKSB7CisgICAgaW50IGJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yOwor
ICAgIGlmIChpc0Rpc3BsYXlTdHJpbmcpCisgICAgICAgIGJlaGF2aW9yIHw9IFRleHRJdGVyYXRv
ckVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2Rpbmc7CisgICAgaWYgKGlnbm9yZVN0eWxlVmlzaWJp
bGl0eSkKKyAgICAgICAgYmVoYXZpb3IgfD0gVGV4dEl0ZXJhdG9ySWdub3JlU3R5bGVWaXNpYmls
aXR5OworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHIsIHN0YXRpY19jYXN0PFRleHRJdGVyYXRv
ckJlaGF2aW9yPihiZWhhdmlvcikpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAg
ICAgIGlmICh0ZXh0QnVmZmVyLnNpemUoKSAmJiB0ZXh0QnVmZmVyLnNpemUoKSArIGl0Lmxlbmd0
aCgpID4gY01heFNlZ21lbnRTaXplKSB7CiAgICAgICAgICAgICBVQ2hhciogbmV3U2VnbWVudEJ1
ZmZlciA9IHN0YXRpY19jYXN0PFVDaGFyKj4obWFsbG9jKHRleHRCdWZmZXIuc2l6ZSgpICogc2l6
ZW9mKFVDaGFyKSkpOwogICAgICAgICAgICAgaWYgKCFuZXdTZWdtZW50QnVmZmVyKQpAQCAtMjI3
NSwxMCArMjI4MiwxMCBAQCBleGl0OgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBw
bGFpblRleHQoY29uc3QgUmFuZ2UqIHIpCitTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiBy
LCBib29sIGlnbm9yZVN0eWxlVmlzaWJpbGl0eSkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGg7Ci0g
ICAgVUNoYXIqIGJ1ZiA9IHBsYWluVGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVmZmVyKHIsIGxlbmd0
aCwgZmFsc2UpOworICAgIFVDaGFyKiBidWYgPSBwbGFpblRleHRUb01hbGxvY0FsbG9jYXRlZEJ1
ZmZlcihyLCBsZW5ndGgsIGZhbHNlLCBpZ25vcmVTdHlsZVZpc2liaWxpdHkpOwogICAgIGlmICgh
YnVmKQogICAgICAgICByZXR1cm4gIiI7CiAgICAgU3RyaW5nIHJlc3VsdChidWYsIGxlbmd0aCk7
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCShyZXZpc2lvbiA2NjYyMCkKKysrIFdlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsOCBAQCBp
bmxpbmUgYm9vbCBpc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShVQ2hhCiAgICAgfQogfQogCi1TdHJp
bmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKik7Ci1VQ2hhciogcGxhaW5UZXh0VG9NYWxsb2NBbGxv
Y2F0ZWRCdWZmZXIoY29uc3QgUmFuZ2UqLCB1bnNpZ25lZCYgYnVmZmVyTGVuZ3RoLCBib29sIGlz
RGlzcGxheVN0cmluZyk7CitTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiwgYm9vbCBpZ25v
cmVTdHlsZVZpc2liaWxpdHkgPSBmYWxzZSk7CitVQ2hhciogcGxhaW5UZXh0VG9NYWxsb2NBbGxv
Y2F0ZWRCdWZmZXIoY29uc3QgUmFuZ2UqLCB1bnNpZ25lZCYgYnVmZmVyTGVuZ3RoLCBib29sIGlz
RGlzcGxheVN0cmluZywgYm9vbCBpZ25vcmVTdHlsZVZpc2liaWxpdHkgPSBmYWxzZSk7CiBQYXNz
UmVmUHRyPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdlKiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCBmb3J3YXJkLCBib29sIGNhc2VTZW5zaXRpdmUpOwogCiBjbGFzcyBCaXRTdGFjayB7CkBA
IC03Niw3ICs3Niw4IEBAIGVudW0gVGV4dEl0ZXJhdG9yQmVoYXZpb3IgewogICAgIFRleHRJdGVy
YXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zID0gMSA8PCAwLAog
ICAgIFRleHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scyA9IDEgPDwgMSwKICAgICBUZXh0SXRl
cmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5nID0gMSA8PCAyLAotICAgIFRleHRJdGVy
YXRvckVuZHNBdEVkaXRpbmdCb3VuZGFyeSA9IDEgPDwgMworICAgIFRleHRJdGVyYXRvckVuZHNB
dEVkaXRpbmdCb3VuZGFyeSA9IDEgPDwgMywKKyAgICBUZXh0SXRlcmF0b3JJZ25vcmVTdHlsZVZp
c2liaWxpdHkgPSAxIDw8IDQKIH07CiAKIGNsYXNzIFRleHRJdGVyYXRvciB7CkBAIC0xNzMsNiAr
MTc0LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5n
OwogICAgIC8vIFVzZWQgd2hlbiBkZWNpZGluZyB0ZXh0IGZyYWdtZW50IGNyZWF0ZWQgYnkgOmZp
cnN0LWxldHRlciBzaG91bGQgYmUgbG9va2VkIGludG8uCiAgICAgYm9vbCBtX2hhbmRsZWRGaXJz
dExldHRlcjsKKyAgICAvLyBVc2VkIHdoZW4gdGhlIHZpc2liaWxpdHkgb2YgdGhlIHN0eWxlIHNo
b3VsZCBub3QgYWZmZWN0IHRleHQgZ2F0aGVyaW5nLgorICAgIGJvb2wgbV9pZ25vcmVTdHlsZVZp
c2liaWxpdHk7CiB9OwogCiAvLyBJdGVyYXRlcyB0aHJvdWdoIHRoZSBET00gcmFuZ2UsIHJldHVy
bmluZyBhbGwgdGhlIHRleHQsIGFuZCAwLWxlbmd0aCBib3VuZGFyaWVzCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA2NjY3NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTA5LTAyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QVg6IGFjY2Vzc2liaWxpdHkgbm90IHJldHVybmluZyBzdHJpbmdzIHdoZW4gdmlzaWJpbGl0eSBp
cyBoaWRkZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ1MTE2CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9jbGlwcGVkLXRl
eHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L2NsaXBwZWQtdGV4dC11bmRlci1lbGVtZW50Lmh0bWw6IEFkZGVk
LgorCiAyMDEwLTA5LTAyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IGZpeC4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L2NsaXBwZWQtdGV4dC11bmRlci1lbGVtZW50LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9j
bGlwcGVkLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9jbGlwcGVkLXRleHQtdW5kZXIt
ZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK0kgYW0g
dGhlIGxpbmsgdGV4dC4KKworVGhpcyB0ZXN0cyB0aGF0IGV2ZW4gaWYgYW4gZWxlbWVudCBpcyBu
b3QgdmlzaWJsZSwgdGV4dFVuZGVyRWxlbWVudCgpIHdpbGwgc3RpbGwgZ2l2ZSB0aGUgdGV4dAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBsaW5rMS50aXRsZSBpcyAnQVhU
aXRsZTogSSBhbSB0aGUgbGluayB0ZXh0LicKK1BBU1MgbGluazIudGl0bGUgaXMgJ0FYVGl0bGU6
IEkgYW0gdGhlIGxpbmsgdGV4dC4nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvY2xpcHBlZC10ZXh0LXVuZGVyLWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9jbGlwcGVkLXRleHQtdW5kZXItZWxl
bWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvY2xpcHBlZC10ZXh0LXVuZGVyLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD4KK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IGlkPSJib2R5Ij4KKworPHN0eWxlPgorLmhpZGRlbiB7CisgIGhlaWdodDogMDsKKyAg
b3ZlcmZsb3c6IGhpZGRlbjsKK30KKzwvc3R5bGU+CisKKzxkaXYgY2xhc3M9ImhpZGRlbiI+Cisg
IDxoMT48YSBpZD0iaGlkZGVuLWxpbmsiIHRhYmluZGV4PTAgaHJlZj0iaHR0cDovL2RvbWFpbi5j
b20vcGF0aC9pLWFtLXRoZS1VUkw/aWQ9MTIzNCI+SSBhbSB0aGUgbGluayB0ZXh0LjwvYT48L2gx
PgorPC9kaXY+CisKKzxocj4KKworPGRpdj4KKyAgPGgxPjxhIGlkPSJ2aXNpYmxlLWxpbmsiIHRh
YmluZGV4PTAgaHJlZj0iaHR0cDovL2RvbWFpbi5jb20vcGF0aC9pLWFtLXRoZS1VUkw/aWQ9MTIz
NCI+SSBhbSB0aGUgbGluayB0ZXh0LjwvYT48L2gxPgorPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGV2ZW4gaWYgYW4gZWxlbWVudCBpcyBub3Qgdmlz
aWJsZSwgdGV4dFVuZGVyRWxlbWVudCgpIHdpbGwgc3RpbGwgZ2l2ZSB0aGUgdGV4dCIpOworCisg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiaGlkZGVuLWxpbmsiKS5mb2N1cygpOworICAgICAgICB2YXIgbGlu
azEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgc2hv
dWxkQmUoImxpbmsxLnRpdGxlIiwgIidBWFRpdGxlOiBJIGFtIHRoZSBsaW5rIHRleHQuJyIpOwor
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aXNpYmxlLWxpbmsiKS5mb2N1cygp
OworICAgICAgICB2YXIgbGluazIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKKyAgICAgICAgc2hvdWxkQmUoImxpbmsyLnRpdGxlIiwgIidBWFRpdGxlOiBJIGFtIHRo
ZSBsaW5rIHRleHQuJyIpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66390</attachid>
            <date>2010-09-02 11:30:25 -0700</date>
            <delta_ts>2010-09-10 07:48:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45116-20100902113023.patch</filename>
            <type>text/plain</type>
            <size>13493</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjY3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDktMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogYWNjZXNzaWJpbGl0eSBub3QgcmV0dXJuaW5nIHN0cmluZ3Mgd2hlbiB2aXNpYmlsaXR5
IGlzIGhpZGRlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDUxMTYKKworICAgICAgICBBWCBjb2RlIHVzZXMgcGxhaW5UZXh0KCkgaW4gVGV4dEl0ZXJh
dG9yIHRvIGdldCB0aGUgdGV4dCBmb3IgYSBub2RlLgorICAgICAgICBIb3dldmVyLCB3aGVuIHRo
YXQgbm9kZSBpcyBub3QgdmlzaWJsZSwgbm8gdGV4dCBpcyByZXR1cm5lZCBiZWNhdXNlIFRleHRJ
dGVyYXRvciBpZ25vcmVzCisgICAgICAgIGNsaXBwZWQgbm9kZXMgYW5kIG90aGVyIGhpZGRlbiBl
bGVtZW50cy4KKworICAgICAgICBTb2x1dGlvbiBpcyB0byBhZGQgYSBuZXcgdGV4dCBpdGVyYXRv
ciBiZWhhdmlvciBmb3IgaWdub3Jpbmcgc3R5bGUgdmlzaWJsaXR5LiBUaGlzIGFsbG93cworICAg
ICAgICBmb3IgdGV4dCB0byBhbGxvd3MgYmUgcmV0dXJuZWQgZm9yIGFjY2Vzc2liaWxpdHkgcHVy
cG9zZXMuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2xpcHBl
ZC10ZXh0LXVuZGVyLWVsZW1lbnQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5n
VmFsdWUpOgorICAgICAgICAgICBVc2UgdGhlIG5ldyBmbGFnIGZvciBwbGFpblRleHQKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OlRleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4
dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlRmly
c3RMZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNl
ZEVsZW1lbnQpOgorICAgICAgICAgICBVc2UgdGhlIG5ldyBmbGFnIHRvIE5PVCBza2lwIGhpZGRl
biBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYWluVGV4dFRvTWFsbG9jQWxsb2NhdGVk
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWluVGV4dCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuaDoKKyAgICAgICAgICAgQWRkIHRoZSBuZXcgdGV4dCBpdGVyYXRvciBi
ZWhhdmlvci4KKwogMjAxMC0wOS0wMSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24g
NjY2MjApCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MTUs
NyArNTE1LDcgQEAgX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZQogX19a
TjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29y
ZTMyY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnRFdgogX19aTjdXZWJDb3JlMzJjb250
ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZUV2Ci1fX1pON1dlYkNvcmUzMnBsYWluVGV4dFRv
TWFsbG9jQWxsb2NhdGVkQnVmZmVyRVBLTlNfNVJhbmdlRVJqYgorX19aTjdXZWJDb3JlMzJwbGFp
blRleHRUb01hbGxvY0FsbG9jYXRlZEJ1ZmZlckVQS05TXzVSYW5nZUVSamJiCiBfX1pON1dlYkNv
cmUzM2NvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudEV2CiBfX1pON1dlYkNvcmUzM3Nl
dERlZmF1bHRUaHJlYWRWaW9sYXRpb25CZWhhdmlvckVOU18yM1RocmVhZFZpb2xhdGlvbkJlaGF2
aW9yRU5TXzIwVGhyZWFkVmlvbGF0aW9uUm91bmRFCiBfX1pON1dlYkNvcmUzNGNvbnRleHRNZW51
SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb25FdgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY2NjIwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwNDkxLDYgKzIwNDkx
LDcgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
MTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29k
ZSAyLjQiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZv
ckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKSW5kZXg6
IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAJKHJldmlzaW9uIDY2NjIwKQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI1LDcgKzEwMjUsNyBA
QCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuCiAgICAgICAgICAgICAv
LyBjYXRjaCBzdGFsZSBXZWJDb3JlQVhPYmplY3QgKHNlZSA8cmRhcjovL3Byb2JsZW0vMzk2MDE5
Nj4pCiAgICAgICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgIT0gbm9kZS0+ZG9jdW1lbnQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm4g
cGxhaW5UZXh0KHJhbmdlT2ZDb250ZW50cyhub2RlKS5nZXQoKSk7CisgICAgICAgICAgICByZXR1
cm4gcGxhaW5UZXh0KHJhbmdlT2ZDb250ZW50cyhub2RlKS5nZXQoKSwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC0xMTQwLDcgKzExNDAsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6c3RyaW5nCiAgICAgICAgIGlmIChzdGFydFZpc2libGVQb3NpdGlvbi5p
c051bGwoKSB8fCBlbmRWaXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gcGxhaW5UZXh0KG1ha2VSYW5n
ZShzdGFydFZpc2libGVQb3NpdGlvbiwgZW5kVmlzaWJsZVBvc2l0aW9uKS5nZXQoKSk7CisgICAg
ICAgIHJldHVybiBwbGFpblRleHQobWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRW
aXNpYmxlUG9zaXRpb24pLmdldCgpLCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGlzVGV4
dENvbnRyb2woKSkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiA2NjYy
MCkKKysrIFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjEsNiArMjYxLDcgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoKQogICAgICwgbV9l
bnRlcnNUZXh0Q29udHJvbHMoZmFsc2UpCiAgICAgLCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2Nv
ZGluZyhmYWxzZSkKICAgICAsIG1faGFuZGxlZEZpcnN0TGV0dGVyKGZhbHNlKQorICAgICwgbV9p
Z25vcmVTdHlsZVZpc2liaWxpdHkoZmFsc2UpCiB7CiB9CiAKQEAgLTI3OCw2ICsyNzksNyBAQCBU
ZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihjb25zdCBSYW5nZSogCiAgICAgLCBtX2VudGVyc1Rl
eHRDb250cm9scyhiZWhhdmlvciAmIFRleHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scykKICAg
ICAsIG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5nKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9y
RW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGluZykKICAgICAsIG1faGFuZGxlZEZpcnN0TGV0dGVy
KGZhbHNlKQorICAgICwgbV9pZ25vcmVTdHlsZVZpc2liaWxpdHkoYmVoYXZpb3IgJiBUZXh0SXRl
cmF0b3JJZ25vcmVTdHlsZVZpc2liaWxpdHkpCiB7CiAgICAgLy8gRklYTUU6IHNob3VsZCBzdXBw
b3J0IFRleHRJdGVyYXRvckVuZHNBdEVkaXRpbmdCb3VuZGFyeSBodHRwOi8vd2Via2l0Lm9yZy9i
LzQzNjA5CiAgICAgQVNTRVJUKGJlaGF2aW9yICE9IFRleHRJdGVyYXRvckVuZHNBdEVkaXRpbmdC
b3VuZGFyeSk7CkBAIC00NDQsNyArNDQ2LDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2Uo
KQogCiBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogewotICAgIGlmIChtX2Z1
bGx5Q2xpcHBlZFN0YWNrLnRvcCgpKQorICAgIGlmIChtX2Z1bGx5Q2xpcHBlZFN0YWNrLnRvcCgp
ICYmICFtX2lnbm9yZVN0eWxlVmlzaWJpbGl0eSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQobV9ub2RlLT5yZW5kZXJlcigp
KTsKQEAgLTQ2OSw3ICs0NzEsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUo
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
KQorICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
ICYmICFtX2lnbm9yZVN0eWxlVmlzaWJpbGl0eSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKICAgICAgICAgaW50IGVuZCA9
IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFYOwpAQCAt
NDkwLDcgKzQ5Miw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAg
ICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIW1f
aWdub3JlU3R5bGVWaXNpYmlsaXR5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gdHJ1ZTsgLy8gZW50aXJl
IGJsb2NrIGlzIGNvbGxhcHNlZCBzcGFjZQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUxNiw3
ICs1MTgsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogdm9pZCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHRCb3goKQogeyAgICAKICAgICBSZW5kZXJUZXh0KiByZW5kZXJl
ciA9IG1fZmlyc3RMZXR0ZXJUZXh0ID8gbV9maXJzdExldHRlclRleHQgOiB0b1JlbmRlclRleHQo
bV9ub2RlLT5yZW5kZXJlcigpKTsKLSAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKSB7CisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSAmJiAhbV9pZ25vcmVTdHlsZVZpc2liaWxpdHkpIHsKICAgICAgICAgbV90
ZXh0Qm94ID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYwMCw3ICs2MDIsNyBAQCB2
b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExlCiB7CiAgICAgaWYgKHJlbmRl
cmVyLT5maXJzdExldHRlcigpKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVy
LT5maXJzdExldHRlcigpOwotICAgICAgICBpZiAoci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9
IFZJU0lCTEUpCisgICAgICAgIGlmIChyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSAmJiAhbV9pZ25vcmVTdHlsZVZpc2liaWxpdHkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGZvciAoUmVuZGVyT2JqZWN0ICpjdXJyQ2hpbGQgPSByLT5maXJzdENoaWxkKCk7IGN1cnJD
aGlsZDsgY3VyckNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBpZiAoY3VyckNo
aWxkLT5pc1RleHQoKSkgewpAQCAtNjIyLDcgKzYyNCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpo
YW5kbGVSZXBsYWNlZEVsZW1lbnQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIt
PnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChyZW5kZXJlci0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIW1faWdub3JlU3R5bGVWaXNpYmlsaXR5
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9sYXN0VGV4dE5vZGVFbmRlZFdp
dGhDb2xsYXBzZWRTcGFjZSkgewpAQCAtMjIxNCw3ICsyMjE2LDcgQEAgUGFzc1JlZlB0cjxSYW5n
ZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZybwogCiAvLyAtLS0tLS0tLQogICAgIAotVUNoYXIqIHBs
YWluVGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVmZmVyKGNvbnN0IFJhbmdlKiByLCB1bnNpZ25lZCYg
YnVmZmVyTGVuZ3RoLCBib29sIGlzRGlzcGxheVN0cmluZykKK1VDaGFyKiBwbGFpblRleHRUb01h
bGxvY0FsbG9jYXRlZEJ1ZmZlcihjb25zdCBSYW5nZSogciwgdW5zaWduZWQmIGJ1ZmZlckxlbmd0
aCwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcsIGJvb2wgaWdub3JlU3R5bGVWaXNpYmlsaXR5KQogewog
ICAgIFVDaGFyKiByZXN1bHQgPSAwOwogCkBAIC0yMjI2LDcgKzIyMjgsMTAgQEAgVUNoYXIqIHBs
YWluVGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVmZmVyKAogICAgIE93blB0cjxWZWN0b3I8VGV4dFNl
Z21lbnQ+ID4gdGV4dFNlZ21lbnRzOwogICAgIFZlY3RvcjxVQ2hhcj4gdGV4dEJ1ZmZlcjsKICAg
ICB0ZXh0QnVmZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY01heFNlZ21lbnRTaXplKTsKLSAg
ICBmb3IgKFRleHRJdGVyYXRvciBpdChyLCBpc0Rpc3BsYXlTdHJpbmcgPyBUZXh0SXRlcmF0b3JE
ZWZhdWx0QmVoYXZpb3IgOiBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5n
KTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgIGludCBiZWhhdmlvciA9IChpc0Rp
c3BsYXlTdHJpbmcpID8gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yOiBUZXh0SXRlcmF0b3JF
bWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5nOworICAgIGlmIChpZ25vcmVTdHlsZVZpc2liaWxp
dHkpCisgICAgICAgIGJlaGF2aW9yIHw9IFRleHRJdGVyYXRvcklnbm9yZVN0eWxlVmlzaWJpbGl0
eTsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyLCBzdGF0aWNfY2FzdDxUZXh0SXRlcmF0b3JC
ZWhhdmlvcj4oYmVoYXZpb3IpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAg
ICBpZiAodGV4dEJ1ZmZlci5zaXplKCkgJiYgdGV4dEJ1ZmZlci5zaXplKCkgKyBpdC5sZW5ndGgo
KSA+IGNNYXhTZWdtZW50U2l6ZSkgewogICAgICAgICAgICAgVUNoYXIqIG5ld1NlZ21lbnRCdWZm
ZXIgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KG1hbGxvYyh0ZXh0QnVmZmVyLnNpemUoKSAqIHNpemVv
ZihVQ2hhcikpKTsKICAgICAgICAgICAgIGlmICghbmV3U2VnbWVudEJ1ZmZlcikKQEAgLTIyNzUs
MTAgKzIyODAsMTAgQEAgZXhpdDoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgcGxh
aW5UZXh0KGNvbnN0IFJhbmdlKiByKQorU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSogciwg
Ym9vbCBpZ25vcmVTdHlsZVZpc2liaWxpdHkpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoOwotICAg
IFVDaGFyKiBidWYgPSBwbGFpblRleHRUb01hbGxvY0FsbG9jYXRlZEJ1ZmZlcihyLCBsZW5ndGgs
IGZhbHNlKTsKKyAgICBVQ2hhciogYnVmID0gcGxhaW5UZXh0VG9NYWxsb2NBbGxvY2F0ZWRCdWZm
ZXIociwgbGVuZ3RoLCBmYWxzZSwgaWdub3JlU3R5bGVWaXNpYmlsaXR5KTsKICAgICBpZiAoIWJ1
ZikKICAgICAgICAgcmV0dXJuICIiOwogICAgIFN0cmluZyByZXN1bHQoYnVmLCBsZW5ndGgpOwpJ
bmRleDogV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkocmV2aXNpb24gNjY2MjApCisrKyBXZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAgaW5s
aW5lIGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UoVUNoYQogICAgIH0KIH0KIAotU3RyaW5n
IHBsYWluVGV4dChjb25zdCBSYW5nZSopOwotVUNoYXIqIHBsYWluVGV4dFRvTWFsbG9jQWxsb2Nh
dGVkQnVmZmVyKGNvbnN0IFJhbmdlKiwgdW5zaWduZWQmIGJ1ZmZlckxlbmd0aCwgYm9vbCBpc0Rp
c3BsYXlTdHJpbmcpOworU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSosIGJvb2wgaWdub3Jl
U3R5bGVWaXNpYmlsaXR5ID0gZmFsc2UpOworVUNoYXIqIHBsYWluVGV4dFRvTWFsbG9jQWxsb2Nh
dGVkQnVmZmVyKGNvbnN0IFJhbmdlKiwgdW5zaWduZWQmIGJ1ZmZlckxlbmd0aCwgYm9vbCBpc0Rp
c3BsYXlTdHJpbmcsIGJvb2wgaWdub3JlU3R5bGVWaXNpYmlsaXR5ID0gZmFsc2UpOwogUGFzc1Jl
ZlB0cjxSYW5nZT4gZmluZFBsYWluVGV4dChjb25zdCBSYW5nZSosIGNvbnN0IFN0cmluZyYsIGJv
b2wgZm9yd2FyZCwgYm9vbCBjYXNlU2Vuc2l0aXZlKTsKIAogY2xhc3MgQml0U3RhY2sgewpAQCAt
NzYsNyArNzYsOCBAQCBlbnVtIFRleHRJdGVyYXRvckJlaGF2aW9yIHsKICAgICBUZXh0SXRlcmF0
b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA9IDEgPDwgMCwKICAg
ICBUZXh0SXRlcmF0b3JFbnRlcnNUZXh0Q29udHJvbHMgPSAxIDw8IDEsCiAgICAgVGV4dEl0ZXJh
dG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGluZyA9IDEgPDwgMiwKLSAgICBUZXh0SXRlcmF0
b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkgPSAxIDw8IDMKKyAgICBUZXh0SXRlcmF0b3JFbmRzQXRF
ZGl0aW5nQm91bmRhcnkgPSAxIDw8IDMsCisgICAgVGV4dEl0ZXJhdG9ySWdub3JlU3R5bGVWaXNp
YmlsaXR5ID0gMSA8PCA0CiB9OwogCiBjbGFzcyBUZXh0SXRlcmF0b3IgewpAQCAtMTczLDYgKzE3
NCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZzsK
ICAgICAvLyBVc2VkIHdoZW4gZGVjaWRpbmcgdGV4dCBmcmFnbWVudCBjcmVhdGVkIGJ5IDpmaXJz
dC1sZXR0ZXIgc2hvdWxkIGJlIGxvb2tlZCBpbnRvLgogICAgIGJvb2wgbV9oYW5kbGVkRmlyc3RM
ZXR0ZXI7CisgICAgLy8gVXNlZCB3aGVuIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzdHlsZSBzaG91
bGQgbm90IGFmZmVjdCB0ZXh0IGdhdGhlcmluZy4KKyAgICBib29sIG1faWdub3JlU3R5bGVWaXNp
YmlsaXR5OwogfTsKIAogLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgRE9NIHJhbmdlLCByZXR1cm5p
bmcgYWxsIHRoZSB0ZXh0LCBhbmQgMC1sZW5ndGggYm91bmRhcmllcwpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNjY2NzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMC0wOS0wMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFY
OiBhY2Nlc3NpYmlsaXR5IG5vdCByZXR1cm5pbmcgc3RyaW5ncyB3aGVuIHZpc2liaWxpdHkgaXMg
aGlkZGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTExNgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2xpcHBlZC10ZXh0
LXVuZGVyLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9jbGlwcGVkLXRleHQtdW5kZXItZWxlbWVudC5odG1sOiBBZGRlZC4K
KwogMjAxMC0wOS0wMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgdGVzdCBmaXguCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9jbGlwcGVkLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2xp
cHBlZC10ZXh0LXVuZGVyLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2xpcHBlZC10ZXh0LXVuZGVyLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitJIGFtIHRo
ZSBsaW5rIHRleHQuCisKK1RoaXMgdGVzdHMgdGhhdCBldmVuIGlmIGFuIGVsZW1lbnQgaXMgbm90
IHZpc2libGUsIHRleHRVbmRlckVsZW1lbnQoKSB3aWxsIHN0aWxsIGdpdmUgdGhlIHRleHQKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbGluazEudGl0bGUgaXMgJ0FYVGl0
bGU6IEkgYW0gdGhlIGxpbmsgdGV4dC4nCitQQVNTIGxpbmsyLnRpdGxlIGlzICdBWFRpdGxlOiBJ
IGFtIHRoZSBsaW5rIHRleHQuJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L2NsaXBwZWQtdGV4dC11bmRlci1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2xpcHBlZC10ZXh0LXVuZGVyLWVsZW1l
bnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2NsaXBwZWQtdGV4dC11bmRlci1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBpZD0iYm9keSI+CisKKzxzdHlsZT4KKy5oaWRkZW4geworICBoZWlnaHQ6IDA7CisgIG92
ZXJmbG93OiBoaWRkZW47Cit9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJoaWRkZW4iPgorICA8
aDE+PGEgaWQ9ImhpZGRlbi1saW5rIiB0YWJpbmRleD0wIGhyZWY9Imh0dHA6Ly9kb21haW4uY29t
L3BhdGgvaS1hbS10aGUtVVJMP2lkPTEyMzQiPkkgYW0gdGhlIGxpbmsgdGV4dC48L2E+PC9oMT4K
KzwvZGl2PgorCis8aHI+CisKKzxkaXY+CisgIDxoMT48YSBpZD0idmlzaWJsZS1saW5rIiB0YWJp
bmRleD0wIGhyZWY9Imh0dHA6Ly9kb21haW4uY29tL3BhdGgvaS1hbS10aGUtVVJMP2lkPTEyMzQi
PkkgYW0gdGhlIGxpbmsgdGV4dC48L2E+PC9oMT4KKzwvZGl2PgorCis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCisgICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBldmVuIGlmIGFuIGVsZW1lbnQgaXMgbm90IHZpc2li
bGUsIHRleHRVbmRlckVsZW1lbnQoKSB3aWxsIHN0aWxsIGdpdmUgdGhlIHRleHQiKTsKKworICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImhpZGRlbi1saW5rIikuZm9jdXMoKTsKKyAgICAgICAgdmFyIGxpbmsx
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHNob3Vs
ZEJlKCJsaW5rMS50aXRsZSIsICInQVhUaXRsZTogSSBhbSB0aGUgbGluayB0ZXh0LiciKTsKKwor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlzaWJsZS1saW5rIikuZm9jdXMoKTsK
KyAgICAgICAgdmFyIGxpbmsyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisgICAgICAgIHNob3VsZEJlKCJsaW5rMi50aXRsZSIsICInQVhUaXRsZTogSSBhbSB0aGUg
bGluayB0ZXh0LiciKTsKKyAgICB9CisKKyAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="55395"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="56418"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>