<?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>49261</bug_id>
          
          <creation_ts>2010-11-09 10:06:50 -0800</creation_ts>
          <short_desc>Spatial Navigation: Add support for &lt;select&gt; element in multiple selection mode</short_desc>
          <delta_ts>2011-03-01 10:23:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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>
          <dependson>53928</dependson>
          <blocked>47094</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chang Shu">cshu</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>306848</commentid>
    <comment_count>0</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-11-09 10:06:50 -0800</bug_when>
    <thetext>Find a way to make multiple selections when spatial navigation is enabled.
Right now, up and down keys always changes selection and no way to select multiple items either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346689</commentid>
    <comment_count>1</comment_count>
      <attachid>81498</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-07 11:19:32 -0800</bug_when>
    <thetext>Created attachment 81498
fix patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346690</commentid>
    <comment_count>2</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-07 11:21:31 -0800</bug_when>
    <thetext>Forgot to add cgarcia, who implemented addFocusRingRects, to the ChangeLog. :)
I will do it in the 2nd attempt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346740</commentid>
    <comment_count>3</comment_count>
      <attachid>81498</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-02-07 12:57:07 -0800</bug_when>
    <thetext>Comment on attachment 81498
fix patch

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

looks ok to me! some minor nits ...

could you please add tests with disabled &lt;selects&gt;?

&gt; Source/WebCore/ChangeLog:9
&gt; +

Nit: you are missing the bug title.

&gt; Source/WebCore/dom/SelectElement.cpp:822
&gt; +            updateSelectedState(data, element, listToOptionIndex(data, element, data.activeSelectionEndIndex()), true, false);

I would hadadded /**/-like comments for the bools

true /*shift*/, false /*foo*/

&gt; LayoutTests/ChangeLog:5
&gt; +        Enhanced the test for testing multiple selection.

nit: generally such comment is explaining the change. It should go below the bugzilla entry, which should come below the bug title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346816</commentid>
    <comment_count>4</comment_count>
      <attachid>81524</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-07 14:43:35 -0800</bug_when>
    <thetext>Created attachment 81524
fix patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347336</commentid>
    <comment_count>5</comment_count>
      <attachid>81524</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-02-08 07:00:49 -0800</bug_when>
    <thetext>Comment on attachment 81524
fix patch 2

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

LGTM.

As discussed on IRC, cshu will add a few more requested tests.

&gt; Source/WebCore/dom/SelectElement.cpp:822
&gt; +            updateSelectedState(data, element, listToOptionIndex(data, element, data.activeSelectionEndIndex()), true /*multi*/, false /*shift*/);

do we want to force multi here? even if it is disabled in the html?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347421</commentid>
    <comment_count>6</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-08 08:53:27 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/dom/SelectElement.cpp:822
&gt; &gt; +            updateSelectedState(data, element, listToOptionIndex(data, element, data.activeSelectionEndIndex()), true /*multi*/, false /*shift*/);
&gt; 
&gt; do we want to force multi here? even if it is disabled in the html?

As discussed on IRC, we found a couple of remaining issues to be addressed:
1. support select with shiftkey with sp enabled.
2. fix the multiple=false case
3. add tests for disable &lt;select&gt;
I will work on them in the follow-up patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347551</commentid>
    <comment_count>7</comment_count>
      <attachid>81668</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-08 11:16:47 -0800</bug_when>
    <thetext>Created attachment 81668
fix patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358411</commentid>
    <comment_count>8</comment_count>
      <attachid>81668</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-26 00:12:40 -0800</bug_when>
    <thetext>Comment on attachment 81668
fix patch 3

Clearing flags on attachment: 81668

Committed r79762: &lt;http://trac.webkit.org/changeset/79762&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81498</attachid>
            <date>2011-02-07 11:19:32 -0800</date>
            <delta_ts>2011-02-07 14:43:35 -0800</delta_ts>
            <desc>fix patch</desc>
            <filename>49261_1.patch</filename>
            <type>text/plain</type>
            <size>10929</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3ODMyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMDcgIENoYW5nIFNo
dSAgPGNoYW5nLnNodUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiBzcGF0aWFsIG5hdmlnYXRpb24gaXMgZW5hYmxlZCwgdXNl
IHNwYWNlIGtleSB0byB0b2dnbGUgc2VsZWN0CisgICAgICAgIGl0ZW1zLiBBbmQgdGhlIHVwIGFu
ZCBkb3duIGtleXMgc2hvdWxkIG5vdCBhZmZlY3Qgc2VsZWN0aW9uIGJ1dCBqdXN0CisgICAgICAg
IG5hdmlnYXRlIHRocm91Z2ggaXRlbXMsIHdoaWNoIGlzIGluZGljYXRlZCB2aXN1YWxseSBieSBh
IGZvY3VzIHJpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00OTI2MQorCisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oOgorCiAyMDExLTAyLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBUdXJuIFVURi04IGRlY29kZXIgb2ZmIGZvciBub3cgc28gd2UgY2FuIGxv
b2sgaW50byBmYWlsaW5nIHRlc3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3NzgzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg3LDE4ICs3ODcsMjQgQEAgdm9pZCBTZWxlY3RFbGVt
ZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SAogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0
SXRlbXMsICFsaXN0SXRlbXMuc2l6ZSgpIHx8IChlbmRJbmRleCA+PSAwICYmICh1bnNpZ25lZCkg
ZW5kSW5kZXggPCBsaXN0SXRlbXMuc2l6ZSgpKSk7CiAgICAgICAgICAgICBzZXRBY3RpdmVTZWxl
Y3Rpb25FbmRJbmRleChkYXRhLCBlbmRJbmRleCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGJvb2wgc2VsZWN0TmV3SXRlbSA9ICFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChlbGVtZW50
LT5kb2N1bWVudCgpLT5mcmFtZSgpKTsKICAgICAgICAgICAgIC8vIElmIHRoZSBhbmNob3IgaXMg
dW5pdGlhbGl6ZWQsIG9yIGlmIHdlJ3JlIGdvaW5nIHRvIGRlc2VsZWN0IGFsbCBvdGhlciBvcHRp
b25zLCB0aGVuIHNldCB0aGUgYW5jaG9yIGluZGV4IGVxdWFsIHRvIHRoZSBlbmQgaW5kZXguCi0g
ICAgICAgICAgICBib29sIGRlc2VsZWN0T3RoZXJzID0gIWRhdGEubXVsdGlwbGUoKSB8fCAhc3Rh
dGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2ZW50KS0+c2hpZnRLZXkoKTsKKyAgICAgICAgICAg
IGJvb2wgZGVzZWxlY3RPdGhlcnMgPSAhZGF0YS5tdWx0aXBsZSgpIHx8ICghc3RhdGljX2Nhc3Q8
S2V5Ym9hcmRFdmVudCo+KGV2ZW50KS0+c2hpZnRLZXkoKSAmJiBzZWxlY3ROZXdJdGVtKTsKICAg
ICAgICAgICAgIGlmIChkYXRhLmFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KCkgPCAwIHx8IGRl
c2VsZWN0T3RoZXJzKSB7Ci0gICAgICAgICAgICAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25T
dGF0ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0TmV3SXRlbSkKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSh0cnVlKTsKICAgICAgICAg
ICAgICAgICBpZiAoZGVzZWxlY3RPdGhlcnMpCiAgICAgICAgICAgICAgICAgICAgIGRlc2VsZWN0
SXRlbXMoZGF0YSwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9u
QW5jaG9ySW5kZXgoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgp
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KGVsZW1lbnQt
PnJlbmRlcmVyKCkpLT5zY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChlbmRJbmRleCk7
Ci0gICAgICAgICAgICB1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGRhdGEsIGVsZW1lbnQsIGRlc2Vs
ZWN0T3RoZXJzKTsKLSAgICAgICAgICAgIGxpc3RCb3hPbkNoYW5nZShkYXRhLCBlbGVtZW50KTsK
KyAgICAgICAgICAgIGlmIChzZWxlY3ROZXdJdGVtKSB7CisgICAgICAgICAgICAgICAgdXBkYXRl
TGlzdEJveFNlbGVjdGlvbihkYXRhLCBlbGVtZW50LCBkZXNlbGVjdE90aGVycyk7CisgICAgICAg
ICAgICAgICAgbGlzdEJveE9uQ2hhbmdlKGRhdGEsIGVsZW1lbnQpOworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgc2Nyb2xsVG9TZWxlY3Rpb24oZGF0YSwgZWxlbWVudCk7CisK
ICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KSB7
CkBAIC04MTAsNyArODE2LDEyIEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRF
dmVudEgKICAgICAgICAgICAgIGlmIChodG1sRm9ybSkKICAgICAgICAgICAgICAgICBodG1sRm9y
bS0+c3VibWl0SW1wbGljaXRseShldmVudCwgZmFsc2UpOwogICAgICAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBp
ZiAoa2V5Q29kZSA9PSAnICcgJiYgaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKKyAgICAgICAgICAgIC8vIFVzZSBzcGFjZSB0byB0b2dn
bGUgc2VsZWN0aW9uIGNoYW5nZS4KKyAgICAgICAgICAgIGRhdGEuc2V0QWN0aXZlU2VsZWN0aW9u
U3RhdGUoIWRhdGEuYWN0aXZlU2VsZWN0aW9uU3RhdGUoKSk7CisgICAgICAgICAgICB1cGRhdGVT
ZWxlY3RlZFN0YXRlKGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEsIGVsZW1l
bnQsIGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSksIHRydWUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGxpc3RCb3hPbkNoYW5nZShkYXRhLCBlbGVtZW50KTsKKyAgICAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkocmV2aXNpb24gNzc4MzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3Niw2ICsyNzYsMjkgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludE9iamVjdChQ
YWludEluZgogICAgIH0KIH0KIAordm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0
cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSkKK3sKKyAgICBTZWxlY3RF
bGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5v
ZGUoKSkpOworCisgICAgLy8gRm9jdXMgdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbS4KKyAgICBpbnQg
c2VsZWN0ZWRJdGVtID0gc2VsZWN0LT5hY3RpdmVTZWxlY3Rpb25FbmRMaXN0SW5kZXgoKTsKKyAg
ICBpZiAoc2VsZWN0ZWRJdGVtID49IDApIHsKKyAgICAgICAgcmVjdHMuYXBwZW5kKGl0ZW1Cb3Vu
ZGluZ0JveFJlY3QodHgsIHR5LCBzZWxlY3RlZEl0ZW0pKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIE5vIHNlbGVjdGVkIGl0ZW1zLCBmaW5kIHRoZSBmaXJzdCBub24tZGlzYWJs
ZWQgaXRlbS4KKyAgICBpbnQgc2l6ZSA9IG51bUl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEVs
ZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25FbGVt
ZW50ID0gdG9PcHRpb25FbGVtZW50KGxpc3RJdGVtc1tpXSk7CisgICAgICAgIGlmIChvcHRpb25F
bGVtZW50ICYmICFvcHRpb25FbGVtZW50LT5kaXNhYmxlZCgpKSB7CisgICAgICAgICAgICByZWN0
cy5hcHBlbmQoaXRlbUJvdW5kaW5nQm94UmVjdCh0eCwgdHksIGkpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludFNj
cm9sbGJhcihQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7CiAgICAgaWYg
KG1fdkJhcikgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5o
CShyZXZpc2lvbiA3NzgzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDggQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7CisKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZChib29sKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEF1
dG9zY3JvbGwoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3ODMyKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMDcgIENoYW5n
IFNodSAgPGNoYW5nLnNodUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRW5oYW5jZWQgdGhlIHRlc3QgZm9yIHRlc3RpbmcgbXVsdGlw
bGUgc2VsZWN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDkyNjEKKworICAgICAgICAqIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtbXVs
dGlwbGUtc2VsZWN0Lmh0bWw6CisgICAgICAgICogZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25h
di1tdWx0aXBsZS1zZWxlY3QtZXhwZWN0ZWQudHh0OgorCiAyMDExLTAyLTA3ICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnNraXAgYSBwYXNzaW5n
IGFjY2Vzc2liaWxpdHkgdGVzdCBhbmQgb3JnYW5pemUgdGhlIHJlc3Qgb2YgdGhlIHRlc3RzIG1p
c3NpbmcKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtbXVs
dGlwbGUtc2VsZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LW11bHRpcGxlLXNlbGVjdC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDc3NDg5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25h
di1tdWx0aXBsZS1zZWxlY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNCw0ICsx
NCwyNSBAQCBQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBCiBQQVNTIGdG
b2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0YXJ0
IgogUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIp
IGlzICI0IgogUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRl
KCJpZCIpIGlzICJzdGFydCIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3RhcnQiKS5vcHRpb25zWzBdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sxXS5zZWxlY3RlZCBpcyBmYWxzZQor
UEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0u
c2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3RhcnQiKS5vcHRpb25zWzBdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sxXS5zZWxlY3RlZCBpcyBmYWxzZQor
UEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0u
c2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3RhcnQiKS5vcHRpb25zWzBdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sxXS5zZWxlY3RlZCBpcyB0cnVlCitQ
QVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1syXS5z
ZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
dGFydCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzFdLnNlbGVjdGVkIGlzIHRydWUKK1BB
U1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzJdLnNl
bGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0
YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgdHJ1ZQorUEFT
UyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0uc2Vs
ZWN0ZWQgaXMgdHJ1ZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFy
dCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzFdLnNlbGVjdGVkIGlzIHRydWUKK1BBU1Mg
Z0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzJdLnNlbGVj
dGVkIGlzIHRydWUKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQi
KS5vcHRpb25zWzBdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sxXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBn
Rm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0uc2VsZWN0
ZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9z
bmF2LW11bHRpcGxlLXNlbGVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
c3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtbXVsdGlwbGUtc2VsZWN0Lmh0bWwJKHJldmlzaW9uIDc3
NDg5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1tdWx0aXBs
ZS1zZWxlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNDEgQEAKICAgICAgIC8v
IHN0YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2UuCiAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOwogCi0gICAgICBpbml0VGVz
dChyZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCBh
ZGRpdGlvbmFsVGVzdCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkaXRpb25hbFRlc3QoKQor
ICAgIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7Cisg
ICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIp
Lm9wdGlvbnNbMF0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNl
ZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1sxXS5zZWxlY3RlZCIs
ICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoXCJzdGFydFwiKS5vcHRpb25zWzJdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1swXS5zZWxlY3RlZCIsICJm
YWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
XCJzdGFydFwiKS5vcHRpb25zWzFdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRC
ZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMl0u
c2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAiKTsKKyAg
ICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIiku
b3B0aW9uc1swXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2Vk
RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzFdLnNlbGVjdGVkIiwg
InRydWUiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlk
KFwic3RhcnRcIikub3B0aW9uc1syXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bigiZG93bkFycm93Iik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1
bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQiLCAiZmFs
c2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwi
c3RhcnRcIikub3B0aW9uc1sxXS5zZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICBzaG91bGRCZSgi
Z0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMl0uc2Vs
ZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAiKTsKKyAgICAg
IHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0
aW9uc1swXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzFdLnNlbGVjdGVkIiwgInRy
dWUiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwi
c3RhcnRcIikub3B0aW9uc1syXS5zZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCJ1cEFycm93Iik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsK
KyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRc
Iikub3B0aW9uc1sxXS5zZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3Vz
ZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQi
LCAidHJ1ZSIpOworICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiICIpOworICAgICAgc2hvdWxk
QmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzBd
LnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsK
KyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRc
Iikub3B0aW9uc1syXS5zZWxlY3RlZCIsICJ0cnVlIik7CisKKyAgICAgIHRlc3RDb21wbGV0ZWQo
KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81524</attachid>
            <date>2011-02-07 14:43:35 -0800</date>
            <delta_ts>2011-02-08 11:16:47 -0800</delta_ts>
            <desc>fix patch 2</desc>
            <filename>49261_2.patch</filename>
            <type>text/plain</type>
            <size>13210</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3ODQ0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDItMDcgIENoYW5nIFNo
dSAgPGNoYW5nLnNodUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gcGF0Y2ggYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+LgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogQWRk
IHN1cHBvcnQgZm9yIDxzZWxlY3Q+IGVsZW1lbnQgaW4gbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MjYxCisK
KyAgICAgICAgV2hlbiBzcGF0aWFsIG5hdmlnYXRpb24gaXMgZW5hYmxlZCwgdXNlIHNwYWNlIGtl
eSB0byB0b2dnbGUgc2VsZWN0CisgICAgICAgIGl0ZW1zLiBBbmQgdGhlIHVwIGFuZCBkb3duIGtl
eXMgc2hvdWxkIG5vdCBhZmZlY3Qgc2VsZWN0aW9uIGJ1dCBqdXN0CisgICAgICAgIG5hdmlnYXRl
IHRocm91Z2ggaXRlbXMsIHdoaWNoIGlzIGluZGljYXRlZCB2aXN1YWxseSBieSBhIGZvY3VzIHJp
bmcuCisKKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlz
dEJveDo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
Qm94Lmg6CisKIDIwMTEtMDItMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Nzg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzg3LDE4ICs3ODcsMjQgQEAgdm9pZCBTZWxlY3RFbGVtZW50Ojps
aXN0Qm94RGVmYXVsdEV2ZW50SAogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0SXRlbXMs
ICFsaXN0SXRlbXMuc2l6ZSgpIHx8IChlbmRJbmRleCA+PSAwICYmICh1bnNpZ25lZCkgZW5kSW5k
ZXggPCBsaXN0SXRlbXMuc2l6ZSgpKSk7CiAgICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rpb25F
bmRJbmRleChkYXRhLCBlbmRJbmRleCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wg
c2VsZWN0TmV3SXRlbSA9ICFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChlbGVtZW50LT5kb2N1
bWVudCgpLT5mcmFtZSgpKTsKICAgICAgICAgICAgIC8vIElmIHRoZSBhbmNob3IgaXMgdW5pdGlh
bGl6ZWQsIG9yIGlmIHdlJ3JlIGdvaW5nIHRvIGRlc2VsZWN0IGFsbCBvdGhlciBvcHRpb25zLCB0
aGVuIHNldCB0aGUgYW5jaG9yIGluZGV4IGVxdWFsIHRvIHRoZSBlbmQgaW5kZXguCi0gICAgICAg
ICAgICBib29sIGRlc2VsZWN0T3RoZXJzID0gIWRhdGEubXVsdGlwbGUoKSB8fCAhc3RhdGljX2Nh
c3Q8S2V5Ym9hcmRFdmVudCo+KGV2ZW50KS0+c2hpZnRLZXkoKTsKKyAgICAgICAgICAgIGJvb2wg
ZGVzZWxlY3RPdGhlcnMgPSAhZGF0YS5tdWx0aXBsZSgpIHx8ICghc3RhdGljX2Nhc3Q8S2V5Ym9h
cmRFdmVudCo+KGV2ZW50KS0+c2hpZnRLZXkoKSAmJiBzZWxlY3ROZXdJdGVtKTsKICAgICAgICAg
ICAgIGlmIChkYXRhLmFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KCkgPCAwIHx8IGRlc2VsZWN0
T3RoZXJzKSB7Ci0gICAgICAgICAgICAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSh0
cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0TmV3SXRlbSkKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSh0cnVlKTsKICAgICAgICAgICAgICAg
ICBpZiAoZGVzZWxlY3RPdGhlcnMpCiAgICAgICAgICAgICAgICAgICAgIGRlc2VsZWN0SXRlbXMo
ZGF0YSwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9y
SW5kZXgoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KGVsZW1lbnQtPnJlbmRl
cmVyKCkpLT5zY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChlbmRJbmRleCk7Ci0gICAg
ICAgICAgICB1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGRhdGEsIGVsZW1lbnQsIGRlc2VsZWN0T3Ro
ZXJzKTsKLSAgICAgICAgICAgIGxpc3RCb3hPbkNoYW5nZShkYXRhLCBlbGVtZW50KTsKKyAgICAg
ICAgICAgIGlmIChzZWxlY3ROZXdJdGVtKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlTGlzdEJv
eFNlbGVjdGlvbihkYXRhLCBlbGVtZW50LCBkZXNlbGVjdE90aGVycyk7CisgICAgICAgICAgICAg
ICAgbGlzdEJveE9uQ2hhbmdlKGRhdGEsIGVsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgc2Nyb2xsVG9TZWxlY3Rpb24oZGF0YSwgZWxlbWVudCk7CisKICAgICAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KSB7CkBAIC04
MTAsNyArODE2LDEyIEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEgK
ICAgICAgICAgICAgIGlmIChodG1sRm9ybSkKICAgICAgICAgICAgICAgICBodG1sRm9ybS0+c3Vi
bWl0SW1wbGljaXRseShldmVudCwgZmFsc2UpOwogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAoa2V5
Q29kZSA9PSAnICcgJiYgaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZWxlbWVudC0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKSkpIHsKKyAgICAgICAgICAgIC8vIFVzZSBzcGFjZSB0byB0b2dnbGUgc2Vs
ZWN0aW9uIGNoYW5nZS4KKyAgICAgICAgICAgIGRhdGEuc2V0QWN0aXZlU2VsZWN0aW9uU3RhdGUo
IWRhdGEuYWN0aXZlU2VsZWN0aW9uU3RhdGUoKSk7CisgICAgICAgICAgICB1cGRhdGVTZWxlY3Rl
ZFN0YXRlKGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEsIGVsZW1lbnQsIGRh
dGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSksIHRydWUgLyptdWx0aSovLCBmYWxzZSAvKnNo
aWZ0Ki8pOworICAgICAgICAgICAgbGlzdEJveE9uQ2hhbmdlKGRhdGEsIGVsZW1lbnQpOworICAg
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIH0KICAgICB9CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCShyZXZp
c2lvbiA3Nzg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3NiwyOSBAQCB2b2lkIFJlbmRlckxpc3RCb3g6
OnBhaW50T2JqZWN0KFBhaW50SW5mCiAgICAgfQogfQogCit2b2lkIFJlbmRlckxpc3RCb3g6OmFk
ZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0eCwgaW50IHR5KQor
eworICAgIFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obm9kZSgpKSk7CisKKyAgICAvLyBGb2N1cyB0aGUgbGFzdCBzZWxlY3RlZCBp
dGVtLgorICAgIGludCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3QtPmFjdGl2ZVNlbGVjdGlvbkVuZExp
c3RJbmRleCgpOworICAgIGlmIChzZWxlY3RlZEl0ZW0gPj0gMCkgeworICAgICAgICByZWN0cy5h
cHBlbmQoaXRlbUJvdW5kaW5nQm94UmVjdCh0eCwgdHksIHNlbGVjdGVkSXRlbSkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gTm8gc2VsZWN0ZWQgaXRlbXMsIGZpbmQgdGhlIGZp
cnN0IG5vbi1kaXNhYmxlZCBpdGVtLgorICAgIGludCBzaXplID0gbnVtSXRlbXMoKTsKKyAgICBj
b25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIE9wdGlvbkVsZW1l
bnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2ldKTsKKyAgICAg
ICAgaWYgKG9wdGlvbkVsZW1lbnQgJiYgIW9wdGlvbkVsZW1lbnQtPmRpc2FibGVkKCkpIHsKKyAg
ICAgICAgICAgIHJlY3RzLmFwcGVuZChpdGVtQm91bmRpbmdCb3hSZWN0KHR4LCB0eSwgaSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIFJlbmRlckxp
c3RCb3g6OnBhaW50U2Nyb2xsYmFyKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0
eSkKIHsKICAgICBpZiAobV92QmFyKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmgJKHJldmlzaW9uIDc3ODQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsOCBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogCisgICAgdmlydHVhbCB2b2lkIGFk
ZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5KTsKKwogICAg
IHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKGJvb2wpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbCgpOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9wQXV0b3Njcm9sbCgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzc4MzYpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MS0wMi0wNyAgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IEFk
ZCBzdXBwb3J0IGZvciA8c2VsZWN0PiBlbGVtZW50IGluIG11bHRpcGxlIHNlbGVjdGlvbiBtb2Rl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI2MQor
CisgICAgICAgIEVuaGFuY2VkIHRoZSB0ZXN0IGZvciB0ZXN0aW5nIG11bHRpcGxlIHNlbGVjdGlv
bi4KKworICAgICAgICAqIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtbXVsdGlwbGUtc2Vs
ZWN0Lmh0bWw6CisgICAgICAgICogZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1tdWx0aXBs
ZS1zZWxlY3QtZXhwZWN0ZWQudHh0OgorCiAyMDExLTAyLTA3ICBEaW1pdHJpIEdsYXprb3YgIDxk
Z2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFyayB0ZXN0IGFzIGZsYWt5IHBlciBk
YXNoYm9hcmQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LW11bHRpcGxlLXNlbGVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1tdWx0aXBsZS1zZWxlY3QtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA3Nzg0MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtbXVsdGlwbGUtc2VsZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQs
NCArMTQsMzIgQEAgUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QQogUEFT
UyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICJz
dGFydCIKIFBBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgi
aWQiKSBpcyAiNCIKIFBBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAic3RhcnQiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgZmFs
c2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25z
WzJdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN0YXJ0Iikub3B0aW9uc1szXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQgaXMgZmFs
c2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25z
WzFdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN0YXJ0Iikub3B0aW9uc1syXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQgaXMgZmFs
c2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25z
WzBdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN0YXJ0Iikub3B0aW9uc1sxXS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIGdGb2N1c2VkRG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1syXS5zZWxlY3RlZCBpcyBmYWxz
ZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNb
M10uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3RhcnQiKS5vcHRpb25zWzBdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sxXS5zZWxlY3RlZCBpcyB0cnVl
CitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sy
XS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzdGFydCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzBdLnNlbGVjdGVkIGlzIGZhbHNl
CitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sx
XS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InN0YXJ0Iikub3B0aW9uc1syXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQgaXMgdHJ1ZQor
UEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMF0u
c2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3RhcnQiKS5vcHRpb25zWzFdLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgZ0ZvY3VzZWREb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzJdLnNlbGVjdGVkIGlzIGZhbHNlCitQ
QVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1szXS5z
ZWxlY3RlZCBpcyB0cnVlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0
YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BB
U1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzJdLnNl
bGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0
YXJ0Iikub3B0aW9uc1szXS5zZWxlY3RlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtbXVsdGlwbGUtc2VsZWN0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1tdWx0aXBsZS1z
ZWxlY3QuaHRtbAkocmV2aXNpb24gNzc4NDEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwt
bmF2aWdhdGlvbi9zbmF2LW11bHRpcGxlLXNlbGVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogPGh0bWw+CiAgIDwhLS0KLSAgICBUaGlzIHRlc3QgZW5zdXJlcyB0aGUgY29y
cmVjdG5lc3Mgb2YgU3BhdGlhbCBOYXZpZ2F0aW9uIChTTmF2KSBhbGdvcml0aG0gb3ZlciBzaW5n
bGUgc2VsZWN0IGVsZW1lbnQuCisgICAgVGhpcyB0ZXN0IGVuc3VyZXMgdGhlIGNvcnJlY3RuZXNz
IG9mIFNwYXRpYWwgTmF2aWdhdGlvbiAoU05hdikgYWxnb3JpdGhtIG92ZXIgbXVsdGlwbGUgc2Vs
ZWN0IGVsZW1lbnQuCiAKICAgICAqIFByZS1jb25kaXRpb25zOgogICAgIDEpIERSVCBzdXBwb3J0
IGZvciBTTmF2IGVuYWJsZS9kaXNhYmxlLgpAQCAtNDMsNyArNDMsNDggQEAKICAgICAgIC8vIHN0
YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2UuCiAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOwogCi0gICAgICBpbml0VGVzdChy
ZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCBhZGRp
dGlvbmFsVGVzdCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkaXRpb25hbFRlc3QoKQorICAg
IHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7CisgICAg
ICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9w
dGlvbnNbMF0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1sxXS5zZWxlY3RlZCIsICJm
YWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
XCJzdGFydFwiKS5vcHRpb25zWzJdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRC
ZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbM10u
c2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25BcnJv
dyIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJz
dGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgi
Z0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMV0uc2Vs
ZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1syXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAg
ICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5v
cHRpb25zWzNdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBldmVudFNlbmRlci5rZXlEb3du
KCIgIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChc
InN0YXJ0XCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJl
KCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1sxXS5z
ZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRF
bGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAg
ICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIiku
b3B0aW9uc1szXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bigiZG93bkFycm93Iik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAg
IHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0
aW9uc1sxXS5zZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1
bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQiLCAiZmFs
c2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwi
c3RhcnRcIikub3B0aW9uc1szXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigiICIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAg
ICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9w
dGlvbnNbMV0uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzJdLnNlbGVjdGVkIiwgImZh
bHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChc
InN0YXJ0XCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigidXBBcnJvdyIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVkIiwgImZhbHNlIik7
CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0
XCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1
c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzJdLnNlbGVjdGVk
IiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50
QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgZXZl
bnRTZW5kZXIua2V5RG93bigiICIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVkIiwgImZhbHNlIik7
CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0
XCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9j
dXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1syXS5zZWxlY3Rl
ZCIsICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzNdLnNlbGVjdGVkIiwgInRydWUiKTsKKworICAgICAg
dGVzdENvbXBsZXRlZCgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQpA
QCAtNjcsNyArMTA4LDcgQEAKICAgICAgICAgPC90cj4KICAgICAgICAgPHRyPgogICAgICAgICAg
IDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1hbGlnbjogY2VudGVyOyI+PGEg
aWQ9IjQiIGhyZWY9ImEiPjQ8L2E+PC90ZD4KLSAgICAgICAgICA8dGQgc3R5bGU9InZlcnRpY2Fs
LWFsaWduOiB0b3A7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzZWxlY3QgaWQ9InN0YXJ0IiBtdWx0
aXBsZT48b3B0aW9uPjE8L29wdGlvbj48b3B0aW9uPjI8L29wdGlvbj48b3B0aW9uPjM8L29wdGlv
bj48L3NlbGVjdD48L3RkPgorICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRv
cDsgdGV4dC1hbGlnbjogY2VudGVyOyI+PHNlbGVjdCBpZD0ic3RhcnQiIG11bHRpcGxlPjxvcHRp
b24+MTwvb3B0aW9uPjxvcHRpb24+Mjwvb3B0aW9uPjxvcHRpb24gZGlzYWJsZWQ+Mzwvb3B0aW9u
PjxvcHRpb24+NDwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+CiAgICAgICAgICAgPHRkIHN0eWxlPSJ2
ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48YSBpZD0iNiIgaHJlZj0i
YSI+NjwvYT48L3RkPgogICAgICAgICA8L3RyPgogICAgICAgICA8dHI+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81668</attachid>
            <date>2011-02-08 11:16:47 -0800</date>
            <delta_ts>2011-02-26 00:12:40 -0800</delta_ts>
            <desc>fix patch 3</desc>
            <filename>49261_3.patch</filename>
            <type>text/plain</type>
            <size>26673</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDItMDggIENoYW5nIFNo
dSAgPGNoYW5nLnNodUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gcGF0Y2ggYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+LgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogQWRk
IHN1cHBvcnQgZm9yIDxzZWxlY3Q+IGVsZW1lbnQgaW4gbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MjYxCisK
KyAgICAgICAgV2hlbiBzcGF0aWFsIG5hdmlnYXRpb24gaXMgZW5hYmxlZCwgdXNlIHNwYWNlIGtl
eSB0byB0b2dnbGUgc2VsZWN0CisgICAgICAgIGl0ZW1zLiBBbmQgdGhlIHVwIGFuZCBkb3duIGtl
eXMgc2hvdWxkIG5vdCBhZmZlY3Qgc2VsZWN0aW9uIGJ1dCBqdXN0CisgICAgICAgIG5hdmlnYXRl
IHRocm91Z2ggaXRlbXMsIHdoaWNoIGlzIGluZGljYXRlZCB2aXN1YWxseSBieSBhIGZvY3VzIHJp
bmcuCisKKyAgICAgICAgTmV3IFRlc3Q6IGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtc2lu
Z2xlLXNlbGVjdC1saXN0Lmh0bWwKKyAgICAgICAgRW5oYW5jZWQgVGVzdDogZmFzdC9zcGF0aWFs
LW5hdmlnYXRpb24vc25hdi1tdWx0aXBsZS1zZWxlY3QuaHRtbAorCisgICAgICAgICogZG9tL1Nl
bGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6bGlzdEJv
eERlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3Rz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorCiAyMDExLTAyLTA4ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA3Nzg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzg3LDE4ICs3ODcsMjQgQEAgdm9pZCBTZWxlY3RFbGVtZW50
OjpsaXN0Qm94RGVmYXVsdEV2ZW50SAogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0SXRl
bXMsICFsaXN0SXRlbXMuc2l6ZSgpIHx8IChlbmRJbmRleCA+PSAwICYmICh1bnNpZ25lZCkgZW5k
SW5kZXggPCBsaXN0SXRlbXMuc2l6ZSgpKSk7CiAgICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rp
b25FbmRJbmRleChkYXRhLCBlbmRJbmRleCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJv
b2wgc2VsZWN0TmV3SXRlbSA9ICFkYXRhLm11bHRpcGxlKCkgfHwgc3RhdGljX2Nhc3Q8S2V5Ym9h
cmRFdmVudCo+KGV2ZW50KS0+c2hpZnRLZXkoKSB8fCAhaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQoZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisgICAgICAgICAgICBpZiAoc2VsZWN0
TmV3SXRlbSkKKyAgICAgICAgICAgICAgICBkYXRhLnNldEFjdGl2ZVNlbGVjdGlvblN0YXRlKHRy
dWUpOwogICAgICAgICAgICAgLy8gSWYgdGhlIGFuY2hvciBpcyB1bml0aWFsaXplZCwgb3IgaWYg
d2UncmUgZ29pbmcgdG8gZGVzZWxlY3QgYWxsIG90aGVyIG9wdGlvbnMsIHRoZW4gc2V0IHRoZSBh
bmNob3IgaW5kZXggZXF1YWwgdG8gdGhlIGVuZCBpbmRleC4KLSAgICAgICAgICAgIGJvb2wgZGVz
ZWxlY3RPdGhlcnMgPSAhZGF0YS5tdWx0aXBsZSgpIHx8ICFzdGF0aWNfY2FzdDxLZXlib2FyZEV2
ZW50Kj4oZXZlbnQpLT5zaGlmdEtleSgpOworICAgICAgICAgICAgYm9vbCBkZXNlbGVjdE90aGVy
cyA9ICFkYXRhLm11bHRpcGxlKCkgfHwgKCFzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZl
bnQpLT5zaGlmdEtleSgpICYmIHNlbGVjdE5ld0l0ZW0pOwogICAgICAgICAgICAgaWYgKGRhdGEu
YWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSA8IDAgfHwgZGVzZWxlY3RPdGhlcnMpIHsKLSAg
ICAgICAgICAgICAgICBkYXRhLnNldEFjdGl2ZVNlbGVjdGlvblN0YXRlKHRydWUpOwogICAgICAg
ICAgICAgICAgIGlmIChkZXNlbGVjdE90aGVycykKICAgICAgICAgICAgICAgICAgICAgZGVzZWxl
Y3RJdGVtcyhkYXRhLCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rp
b25BbmNob3JJbmRleChkYXRhLCBlbGVtZW50LCBkYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4
KCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0b1JlbmRlckxpc3RCb3goZWxlbWVu
dC0+cmVuZGVyZXIoKSktPnNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KGVuZEluZGV4
KTsKLSAgICAgICAgICAgIHVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24oZGF0YSwgZWxlbWVudCwgZGVz
ZWxlY3RPdGhlcnMpOwotICAgICAgICAgICAgbGlzdEJveE9uQ2hhbmdlKGRhdGEsIGVsZW1lbnQp
OworICAgICAgICAgICAgaWYgKHNlbGVjdE5ld0l0ZW0pIHsKKyAgICAgICAgICAgICAgICB1cGRh
dGVMaXN0Qm94U2VsZWN0aW9uKGRhdGEsIGVsZW1lbnQsIGRlc2VsZWN0T3RoZXJzKTsKKyAgICAg
ICAgICAgICAgICBsaXN0Qm94T25DaGFuZ2UoZGF0YSwgZWxlbWVudCk7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBzY3JvbGxUb1NlbGVjdGlvbihkYXRhLCBlbGVtZW50KTsK
KwogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQp
IHsKQEAgLTgxMCw3ICs4MTYsMTIgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVs
dEV2ZW50SAogICAgICAgICAgICAgaWYgKGh0bWxGb3JtKQogICAgICAgICAgICAgICAgIGh0bWxG
b3JtLT5zdWJtaXRJbXBsaWNpdGx5KGV2ZW50LCBmYWxzZSk7CiAgICAgICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNl
IGlmIChkYXRhLm11bHRpcGxlKCkgJiYga2V5Q29kZSA9PSAnICcgJiYgaXNTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKKyAgICAgICAgICAg
IC8vIFVzZSBzcGFjZSB0byB0b2dnbGUgc2VsZWN0aW9uIGNoYW5nZS4KKyAgICAgICAgICAgIGRh
dGEuc2V0QWN0aXZlU2VsZWN0aW9uU3RhdGUoIWRhdGEuYWN0aXZlU2VsZWN0aW9uU3RhdGUoKSk7
CisgICAgICAgICAgICB1cGRhdGVTZWxlY3RlZFN0YXRlKGRhdGEsIGVsZW1lbnQsIGxpc3RUb09w
dGlvbkluZGV4KGRhdGEsIGVsZW1lbnQsIGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSks
IHRydWUgLyptdWx0aSovLCBmYWxzZSAvKnNoaWZ0Ki8pOworICAgICAgICAgICAgbGlzdEJveE9u
Q2hhbmdlKGRhdGEsIGVsZW1lbnQpOworICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCShyZXZpc2lvbiA3Nzg0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3
NiwyOSBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50T2JqZWN0KFBhaW50SW5mCiAgICAgfQog
fQogCit2b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMsIGludCB0eCwgaW50IHR5KQoreworICAgIFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9
IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7CisKKyAgICAv
LyBGb2N1cyB0aGUgbGFzdCBzZWxlY3RlZCBpdGVtLgorICAgIGludCBzZWxlY3RlZEl0ZW0gPSBz
ZWxlY3QtPmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpOworICAgIGlmIChzZWxlY3RlZEl0
ZW0gPj0gMCkgeworICAgICAgICByZWN0cy5hcHBlbmQoaXRlbUJvdW5kaW5nQm94UmVjdCh0eCwg
dHksIHNlbGVjdGVkSXRlbSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTm8g
c2VsZWN0ZWQgaXRlbXMsIGZpbmQgdGhlIGZpcnN0IG5vbi1kaXNhYmxlZCBpdGVtLgorICAgIGlu
dCBzaXplID0gbnVtSXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRl
bXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CisgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVs
ZW1lbnQobGlzdEl0ZW1zW2ldKTsKKyAgICAgICAgaWYgKG9wdGlvbkVsZW1lbnQgJiYgIW9wdGlv
bkVsZW1lbnQtPmRpc2FibGVkKCkpIHsKKyAgICAgICAgICAgIHJlY3RzLmFwcGVuZChpdGVtQm91
bmRpbmdCb3hSZWN0KHR4LCB0eSwgaSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorfQorCiB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xsYmFyKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIHsKICAgICBpZiAobV92QmFyKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgJKHJldmlzaW9uIDc3ODQx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNiArNzcsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpOwogCisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0
PiYsIGludCB0eCwgaW50IHR5KTsKKwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGlj
YWxseVNjcm9sbGVkKGJvb2wpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYXV0b3Njcm9sbCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQXV0b3Njcm9sbCgpOwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzc5NTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMi0wOCAgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTcGF0aWFsIE5hdmlnYXRpb246IEFkZCBzdXBwb3J0IGZvciA8c2VsZWN0PiBlbGVtZW50
IGluIG11bHRpcGxlIHNlbGVjdGlvbiBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTI2MQorCisgICAgICAgIEVuaGFuY2VkIGV4aXN0aW5nIHRl
c3RzIGFuZCBhZGRlZCBuZXcgdGVzdHMgZm9yIHRoZSBidWcuCisKKyAgICAgICAgKiBmYXN0L3Nw
YXRpYWwtbmF2aWdhdGlvbi9zbmF2LW11bHRpcGxlLXNlbGVjdC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1tdWx0aXBsZS1zZWxlY3QuaHRtbDoK
KyAgICAgICAgKiBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LXNpbmdsZS1zZWxlY3QtbGlz
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtc2luZ2xlLXNlbGVjdC1saXN0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAyLTA4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbiBCZXJuc3RlaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LW11bHRpcGxlLXNlbGVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1tdWx0aXBsZS1zZWxlY3QtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA3Nzg0MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZp
Z2F0aW9uL3NuYXYtbXVsdGlwbGUtc2VsZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTQsNCArMTQsNDAgQEAgUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0
QQogUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIp
IGlzICJzdGFydCIKIFBBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAiNCIKIFBBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9j
dXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQg
aXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5v
cHRpb25zWzJdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1szXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9j
dXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQg
aXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5v
cHRpb25zWzFdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1syXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9j
dXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQg
aXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5v
cHRpb25zWzBdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sxXS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIGdGb2N1
c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1syXS5zZWxlY3RlZCBp
cyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9w
dGlvbnNbM10uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzBdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1
c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sxXS5zZWxlY3RlZCBp
cyB0cnVlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0
aW9uc1syXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3Vz
ZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzBdLnNlbGVjdGVkIGlz
IGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0
aW9uc1sxXS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInN0YXJ0Iikub3B0aW9uc1syXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNl
ZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQgaXMg
dHJ1ZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlv
bnNbMF0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3RhcnQiKS5vcHRpb25zWzFdLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgZ0ZvY3VzZWRE
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzJdLnNlbGVjdGVkIGlzIGZh
bHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9u
c1szXS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgZmFs
c2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25z
WzJdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN0YXJ0Iikub3B0aW9uc1szXS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIGdGb2N1c2VkRG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxz
ZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNb
MV0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3RhcnQiKS5vcHRpb25zWzJdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1szXS5zZWxlY3RlZCBpcyB0cnVl
CitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sw
XS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBnRm9jdXNlZERvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQgaXMgZmFsc2UK
K1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzNd
LnNlbGVjdGVkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1tdWx0aXBsZS1zZWxlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LW11bHRpcGxlLXNlbGVjdC5odG1sCShyZXZp
c2lvbiA3Nzg0MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYt
bXVsdGlwbGUtc2VsZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8aHRt
bD4KICAgPCEtLQotICAgIFRoaXMgdGVzdCBlbnN1cmVzIHRoZSBjb3JyZWN0bmVzcyBvZiBTcGF0
aWFsIE5hdmlnYXRpb24gKFNOYXYpIGFsZ29yaXRobSBvdmVyIHNpbmdsZSBzZWxlY3QgZWxlbWVu
dC4KKyAgICBUaGlzIHRlc3QgZW5zdXJlcyB0aGUgY29ycmVjdG5lc3Mgb2YgU3BhdGlhbCBOYXZp
Z2F0aW9uIChTTmF2KSBhbGdvcml0aG0gb3ZlciBtdWx0aXBsZSBzZWxlY3QgZWxlbWVudC4KIAog
ICAgICogUHJlLWNvbmRpdGlvbnM6CiAgICAgMSkgRFJUIHN1cHBvcnQgZm9yIFNOYXYgZW5hYmxl
L2Rpc2FibGUuCkBAIC00Myw3ICs0Myw1OCBAQAogICAgICAgLy8gc3RhcnRpbmcgdGhlIHRlc3Qg
aXRzZWxmOiBnZXQgdG8gYSBrbm93biBwbGFjZS4KICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzdGFydCIpLmZvY3VzKCk7CiAKLSAgICAgIGluaXRUZXN0KHJlc3VsdE1hcCwgdGVzdENv
bXBsZXRlZCk7CisgICAgICBpbml0VGVzdChyZXN1bHRNYXAsIGFkZGl0aW9uYWxUZXN0KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBhZGRpdGlvbmFsVGVzdCgpCisgICAgeworICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsgICAgICAgICAvL21vdmUgdG8gMXN0
IGl0ZW0KKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwi
c3RhcnRcIikub3B0aW9uc1swXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUo
ImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzFdLnNl
bGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRF
bGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAg
ICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIiku
b3B0aW9uc1szXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bigiZG93bkFycm93Iik7ICAgICAgICAgICAgICAgICAvL21vdmUgdG8gMm5kIGl0ZW0KKyAgICAg
IHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0
aW9uc1swXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzFdLnNlbGVjdGVkIiwgImZh
bHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChc
InN0YXJ0XCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJl
KCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1szXS5z
ZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiICIpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAvL3NlbGVjdCAybmQgaXRlbQorICAgICAgc2hvdWxkQmUoImdG
b2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzBdLnNlbGVj
dGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAg
c2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRp
b25zWzJdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1
bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQiLCAiZmFs
c2UiKTsKKyAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25BcnJvdyIpOyAgICAgICAgICAg
ICAgICAgLy9tb3ZlIHRvIDR0aCBpdGVtICgzcmQgaXRlbSBpcyBkaXNhYmxlZCkgCisgICAgICBz
aG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlv
bnNbMF0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1sxXS5zZWxlY3RlZCIsICJ0cnVl
Iik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0
YXJ0XCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJn
Rm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1szXS5zZWxl
Y3RlZCIsICJmYWxzZSIpOworICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiICIpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAvL3NlbGVjdCA0dGggaXRlbQorICAgICAgc2hvdWxkQmUoImdGb2N1
c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVk
IiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50
QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgc2hv
dWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25z
WzJdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQiLCAidHJ1ZSIp
OworICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigidXBBcnJvdyIpOyAgICAgICAgICAgICAgICAg
ICAvL21vdmUgYmFjayB0byAybmQgaXRlbQorICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVkIiwgImZhbHNl
Iik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0
YXJ0XCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgc2hvdWxkQmUoImdG
b2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzJdLnNlbGVj
dGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiICIpOyAgICAgICAgICAgICAgICAgICAgICAgICAvL2Rlc2Vs
ZWN0IDJuZCBpdGVtCisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50
QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNo
b3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9u
c1sxXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzJdLnNlbGVjdGVkIiwgImZhbHNl
Iik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0
YXJ0XCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigidXBBcnJvdyIpOyAgICAgICAgICAgICAgICAgICAvL21vdmUgYmFjayB0byAxc3Qg
aXRlbQorICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJz
dGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgi
Z0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMV0uc2Vs
ZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1syXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAg
ICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5v
cHRpb25zWzNdLnNlbGVjdGVkIiwgInRydWUiKTsKKyAgICAgIGV2ZW50U2VuZGVyLmtleURvd24o
ImRvd25BcnJvdyIsIFsic2hpZnRLZXkiXSk7ICAgLy9zaGlmdC1kb3duIHRvIDJuZCBpdGVtCisg
ICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIp
Lm9wdGlvbnNbMF0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNl
ZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1sxXS5zZWxlY3RlZCIs
ICJ0cnVlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChcInN0YXJ0XCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3Vs
ZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1sz
XS5zZWxlY3RlZCIsICJ0cnVlIik7CisKKyAgICAgIHRlc3RDb21wbGV0ZWQoKTsKICAgICB9CiAK
ICAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKQEAgLTY3LDcgKzExOCw3IEBACiAgICAgICAg
IDwvdHI+CiAgICAgICAgIDx0cj4KICAgICAgICAgICA8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWdu
OiB0b3A7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxhIGlkPSI0IiBocmVmPSJhIj40PC9hPjwvdGQ+
Ci0gICAgICAgICAgPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWFsaWduOiBj
ZW50ZXI7Ij48c2VsZWN0IGlkPSJzdGFydCIgbXVsdGlwbGU+PG9wdGlvbj4xPC9vcHRpb24+PG9w
dGlvbj4yPC9vcHRpb24+PG9wdGlvbj4zPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD4KKyAgICAgICAg
ICA8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3A7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxz
ZWxlY3QgaWQ9InN0YXJ0IiBtdWx0aXBsZT48b3B0aW9uPjE8L29wdGlvbj48b3B0aW9uPjI8L29w
dGlvbj48b3B0aW9uIGRpc2FibGVkPjM8L29wdGlvbj48b3B0aW9uPjQ8L29wdGlvbj48L3NlbGVj
dD48L3RkPgogICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1h
bGlnbjogY2VudGVyOyI+PGEgaWQ9IjYiIGhyZWY9ImEiPjY8L2E+PC90ZD4KICAgICAgICAgPC90
cj4KICAgICAgICAgPHRyPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRp
b24vc25hdi1zaW5nbGUtc2VsZWN0LWxpc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtc2luZ2xlLXNlbGVjdC1saXN0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtc2luZ2xlLXNlbGVjdC1saXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MyBAQAorMgkKKzQJCTYKKzgJCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQu
YWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0YXJ0IgorUEFTUyBnRm9jdXNl
ZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICJzdGFydCIKK1BB
U1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
c3RhcnQiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUo
ImlkIikgaXMgIjgiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRy
aWJ1dGUoImlkIikgaXMgInN0YXJ0IgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1l
bnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICJzdGFydCIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5h
Y3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCitQQVNTIGdGb2N1c2Vk
RG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQQVNTIGdG
b2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0YXJ0
IgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIp
IGlzICI2IgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRl
KCJpZCIpIGlzICJzdGFydCIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSBpcyAiNCIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyB0cnVlCitQQVNT
IGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1sxXS5zZWxl
Y3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFy
dCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzNdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNT
IGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxl
Y3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFy
dCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBnRm9jdXNlZERvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1Mg
Z0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzNdLnNlbGVj
dGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0
Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBn
Rm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0uc2VsZWN0
ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQi
KS5vcHRpb25zWzNdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBn
Rm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0
ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQi
KS5vcHRpb25zWzJdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1szXS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIGdG
b2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxlY3Rl
ZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIp
Lm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzJdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdG
b2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1szXS5zZWxlY3Rl
ZCBpcyB0cnVlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iiku
b3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBnRm9j
dXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQg
aXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5v
cHRpb25zWzNdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9j
dXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQg
aXMgdHJ1ZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9w
dGlvbnNbMl0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzNdLnNlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGdGb2N1
c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0aW9uc1swXS5zZWxlY3RlZCBp
cyB0cnVlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0
aW9uc1sxXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgZ0ZvY3Vz
ZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRpb25zWzNdLnNlbGVjdGVkIGlz
IGZhbHNlCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iikub3B0
aW9uc1swXS5zZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBnRm9jdXNlZERvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBnRm9jdXNl
ZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQgaXMg
ZmFsc2UKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5vcHRp
b25zWzNdLnNlbGVjdGVkIGlzIGZhbHNlCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtc2luZ2xlLXNlbGVjdC1saXN0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1zaW5nbGUtc2VsZWN0LWxp
c3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtc2luZ2xlLXNlbGVjdC1saXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTM0IEBACis8aHRtbD4KKyAgPCEtLQorICAgIFRoaXMgdGVzdCBlbnN1cmVzIHRoZSBjb3JyZWN0
bmVzcyBvZiBTcGF0aWFsIE5hdmlnYXRpb24gKFNOYXYpIGFsZ29yaXRobSBvdmVyIHNpbmdsZSBz
ZWxlY3QgbGlzdCBlbGVtZW50LgorCisgICAgKiBQcmUtY29uZGl0aW9uczoKKyAgICAxKSBEUlQg
c3VwcG9ydCBmb3IgU05hdiBlbmFibGUvZGlzYWJsZS4KKworICAgICogTmF2aWdhdGlvbiBzdGVw
czoKKyAgICAxKSBMb2FkcyB0aGlzIHBhZ2UsIGZvY3VzIGdvZXMgdG8gInN0YXJ0IiBhdXRvbWF0
aWNhbGx5LgorICAgIDIpIEZvY3VzIG1vdmVzIGF3YXkgZnJvbSBzZWxlY3QgaW4gNCBkaWZmZXJl
bnQgZGlyZWN0aW9ucyB0byBuZWlnaGJvciBub2RlcyBhbmQgYmFjay4KKyAgLS0+CisgIDxoZWFk
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3BhdGlhbC1uYXZpZ2F0aW9uLXV0aWxz
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
PgorCisgICAgdmFyIHJlc3VsdE1hcCA9IFsKKyAgICAgIFsiRG93biIsICJzdGFydCJdLAorICAg
ICAgWyJEb3duIiwgInN0YXJ0Il0sCisgICAgICBbIkRvd24iLCAic3RhcnQiXSwKKyAgICAgIFsi
RG93biIsICI4Il0sCisgICAgICBbIlVwIiwgInN0YXJ0Il0sCisgICAgICBbIlVwIiwgInN0YXJ0
Il0sCisgICAgICBbIlVwIiwgInN0YXJ0Il0sCisgICAgICBbIlVwIiwgIjIiXSwKKyAgICAgIFsi
RG93biIsICJzdGFydCJdLAorICAgICAgWyJSaWdodCIsICI2Il0sCisgICAgICBbIkxlZnQiLCAi
c3RhcnQiXSwKKyAgICAgIFsiTGVmdCIsICI0Il0sCisgICAgICBbIlJpZ2h0IiwgInN0YXJ0Il0s
CisgICAgICBbIkRPTkUiLCAiRE9ORSJdCisgICAgXTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkK
KyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3du
IHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsK
KworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCBhZGRpdGlvbmFsVGVzdCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gYWRkaXRpb25hbFRlc3QoKQorICAgIHsKKyAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7ICAgICAgICAgLy9tb3ZlIHRvIDFzdCBpdGVtCisg
ICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIp
Lm9wdGlvbnNbMF0uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2Vk
RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzFdLnNlbGVjdGVkIiwg
ImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChcInN0YXJ0XCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3Vs
ZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1sz
XS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFy
cm93Iik7ICAgICAgICAgICAgICAgICAvL21vdmUgdG8gMm5kIGl0ZW0KKyAgICAgIHNob3VsZEJl
KCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1swXS5z
ZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzFdLnNlbGVjdGVkIiwgInRydWUiKTsKKyAg
ICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIiku
b3B0aW9uc1syXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2Vk
RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzNdLnNlbGVjdGVkIiwg
ImZhbHNlIik7CisgICAgICBldmVudFNlbmRlci5rZXlEb3duKCIgIik7ICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vbm90aGluZyBzaG91bGQgY2hhbmdlCisgICAgICBzaG91bGRCZSgiZ0ZvY3Vz
ZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMF0uc2VsZWN0ZWQi
LCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRC
eUlkKFwic3RhcnRcIikub3B0aW9uc1sxXS5zZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICBzaG91
bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNb
Ml0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50
LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1szXS5zZWxlY3RlZCIsICJmYWxzZSIp
OworICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93Iik7ICAgICAgICAgICAgICAg
ICAvL21vdmUgdG8gNHRoIGl0ZW0gKDNyZCBpdGVtIGlzIGRpc2FibGVkKSAKKyAgICAgIHNob3Vs
ZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1sw
XS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzFdLnNlbGVjdGVkIiwgImZhbHNlIik7
CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0
XCIpLm9wdGlvbnNbMl0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9j
dXNlZERvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1szXS5zZWxlY3Rl
ZCIsICJ0cnVlIik7CisgICAgICBldmVudFNlbmRlci5rZXlEb3duKCIgIik7ICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vbm90aGluZyBzaG91bGQgY2hhbmdlCisgICAgICBzaG91bGRCZSgiZ0Zv
Y3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMF0uc2VsZWN0
ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1l
bnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1sxXS5zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAg
c2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRp
b25zWzJdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1
bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQiLCAidHJ1
ZSIpOworICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigidXBBcnJvdyIpOyAgICAgICAgICAgICAg
ICAgICAvL21vdmUgYmFjayB0byAybmQgaXRlbQorICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVkIiwgImZh
bHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChc
InN0YXJ0XCIpLm9wdGlvbnNbMV0uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgc2hvdWxkQmUo
ImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzJdLnNl
bGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRF
bGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAiKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy9u
b3Rpbmcgc2hvdWxkIGNoYW5nZQorICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVkIiwgImZhbHNlIik7Cisg
ICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIp
Lm9wdGlvbnNbMV0uc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2Vk
RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzJdLnNlbGVjdGVkIiwg
ImZhbHNlIik7CisgICAgICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChcInN0YXJ0XCIpLm9wdGlvbnNbM10uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIGV2ZW50
U2VuZGVyLmtleURvd24oInVwQXJyb3ciKTsgICAgICAgICAgICAgICAgICAgLy9tb3ZlIGJhY2sg
dG8gMXN0IGl0ZW0KKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50LmdldEVsZW1lbnRC
eUlkKFwic3RhcnRcIikub3B0aW9uc1swXS5zZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICBzaG91
bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNb
MV0uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgIHNob3VsZEJlKCJnRm9jdXNlZERvY3VtZW50
LmdldEVsZW1lbnRCeUlkKFwic3RhcnRcIikub3B0aW9uc1syXS5zZWxlY3RlZCIsICJmYWxzZSIp
OworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdGFy
dFwiKS5vcHRpb25zWzNdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBldmVudFNlbmRlci5r
ZXlEb3duKCJkb3duQXJyb3ciLCBbInNoaWZ0S2V5Il0pOyAgIC8vc2hpZnQtZG93biB0byAybmQg
aXRlbQorICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJz
dGFydFwiKS5vcHRpb25zWzBdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICBzaG91bGRCZSgi
Z0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9wdGlvbnNbMV0uc2Vs
ZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgc2hvdWxkQmUoImdGb2N1c2VkRG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoXCJzdGFydFwiKS5vcHRpb25zWzJdLnNlbGVjdGVkIiwgImZhbHNlIik7CisgICAg
ICBzaG91bGRCZSgiZ0ZvY3VzZWREb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXJ0XCIpLm9w
dGlvbnNbM10uc2VsZWN0ZWQiLCAiZmFsc2UiKTsKKworICAgICAgdGVzdENvbXBsZXRlZCgpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQorICAgIHsKKyAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKwor
ICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJqcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgICAgPHRhYmxlIHN0eWxlPSJ0ZXh0
LWFsaWduOiBsZWZ0OyB3aWR0aDogMTAwJTsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdo
dDogYXV0bzsiIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIxIj4KKyAg
ICAgIDx0Ym9keT4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwt
YWxpZ246IHRvcDsgdGV4dC1hbGlnbjogY2VudGVyOyI+PC90ZD4KKyAgICAgICAgICA8dGQgc3R5
bGU9InZlcnRpY2FsLWFsaWduOiB0b3A7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxhIGlkPSIyIiBo
cmVmPSJhIj4yPC9hPjwvdGQ+CisgICAgICAgICAgPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjog
dG9wOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8
dHI+CisgICAgICAgICAgPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWFsaWdu
OiBjZW50ZXI7Ij48YSBpZD0iNCIgaHJlZj0iYSI+NDwvYT48L3RkPgorICAgICAgICAgIDx0ZCBz
dHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1hbGlnbjogY2VudGVyOyI+PHNlbGVjdCBp
ZD0ic3RhcnQiIHNpemU9ND48b3B0aW9uPjE8L29wdGlvbj48b3B0aW9uPjI8L29wdGlvbj48b3B0
aW9uIGRpc2FibGVkPjM8L29wdGlvbj48b3B0aW9uPjQ8L29wdGlvbj48L3NlbGVjdD48L3RkPgor
ICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1hbGlnbjogY2Vu
dGVyOyI+PGEgaWQ9IjYiIGhyZWY9ImEiPjY8L2E+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAg
ICAgPHRyPgorICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1h
bGlnbjogY2VudGVyOyI+PC90ZD4KKyAgICAgICAgICA8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWdu
OiB0b3A7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxhIGlkPSI4IiBocmVmPSJhIj44PC9hPjwvdGQ+
CisgICAgICAgICAgPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWFsaWduOiBj
ZW50ZXI7Ij48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90Ym9keT4KKyAgICA8L3RhYmxl
PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>