<?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>32944</bug_id>
          
          <creation_ts>2009-12-25 22:09:38 -0800</creation_ts>
          <short_desc>HTML5 &lt;header&gt; and &lt;footer&gt; elements support</short_desc>
          <delta_ts>2010-01-05 18:57:17 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.whatwg.org/specs/web-apps/current-work/multipage/sections.html#the-header-element</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32934</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>174930</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-12-25 22:09:38 -0800</bug_when>
    <thetext>Implement &lt;header&gt; and &lt;footer&gt;.  They have nesting restrictions unlike &lt;nav&gt;, &lt;section&gt;, &lt;article&gt; and &lt;aside&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175227</commentid>
    <comment_count>1</comment_count>
      <attachid>45553</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-12-28 08:28:12 -0800</bug_when>
    <thetext>Created attachment 45553
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175229</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-28 08:31:44 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45553 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175515</commentid>
    <comment_count>3</comment_count>
      <attachid>45553</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-29 05:32:26 -0800</bug_when>
    <thetext>Comment on attachment 45553
Proposed patch

Nesting &lt;footer&gt; inside &lt;header&gt; or &lt;footer&gt; (or vive versa) is an authoring conformance error, but I don&apos;t believe it is supposed to result in any parser error fixup. I do not see any such requirement in the HTML5 parsing algorithm anyway. r- for now but please resubmit if you can cite a source for that requirement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175534</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-12-29 06:22:17 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 45553 [details])
&gt; Nesting &lt;footer&gt; inside &lt;header&gt; or &lt;footer&gt; (or vive versa) is an authoring
&gt; conformance error, but I don&apos;t believe it is supposed to result in any parser
&gt; error fixup. I do not see any such requirement in the HTML5 parsing algorithm
&gt; anyway. r- for now but please resubmit if you can cite a source for that
&gt; requirement.

http://www.whatwg.org/specs/web-apps/current-work/multipage/sections.html#the-header-element
  4.4.8 The header element
  ...
  Content model:
  Flow content, but with no header or footer element descendants.

http://www.whatwg.org/specs/web-apps/current-work/multipage/sections.html#the-footer-element
  4.4.9 The footer element
  ...
  Content model:
  Flow content, but with no header or footer element descendants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175552</commentid>
    <comment_count>5</comment_count>
      <attachid>45553</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-29 07:41:32 -0800</bug_when>
    <thetext>Comment on attachment 45553
Proposed patch

(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 45553 [details] [details])
&gt; &gt; Nesting &lt;footer&gt; inside &lt;header&gt; or &lt;footer&gt; (or vive versa) is an authoring
&gt; &gt; conformance error, but I don&apos;t believe it is supposed to result in any parser
&gt; &gt; error fixup. I do not see any such requirement in the HTML5 parsing algorithm
&gt; &gt; anyway. r- for now but please resubmit if you can cite a source for that
&gt; &gt; requirement.
&gt; 
&gt; http://www.whatwg.org/specs/web-apps/current-work/multipage/sections.html#the-header-element
&gt;   4.4.8 The header element
&gt;   ...
&gt;   Content model:
&gt;   Flow content, but with no header or footer element descendants.
&gt; 
&gt; http://www.whatwg.org/specs/web-apps/current-work/multipage/sections.html#the-footer-element
&gt;   4.4.9 The footer element
&gt;   ...
&gt;   Content model:
&gt;   Flow content, but with no header or footer element descendants.

Those are authoring requirements (i.e. a document violating these is nonconforming), not implementation requirements (there is no requirement to enforce these conditions at parse time or otherwise.

The only error corrections that should be done are those required by section 9.2:
http://dev.w3.org/html5/spec/Overview.html#parsing

Please keep this in mind when implementing additional new HTML elements. The content models in general do *not* result in parser behavior changes.

Please resubmit with the parser changes removed and with correct tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175557</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-12-29 08:09:32 -0800</bug_when>
    <thetext>Oh, I have just understood &quot;Content model&quot; is an author requirement. Thank you!
I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175615</commentid>
    <comment_count>7</comment_count>
      <attachid>45610</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-12-29 10:04:38 -0800</bug_when>
    <thetext>Created attachment 45610
Proposed patch

This updated patch is almost equivalent the patches for &lt;section&gt;, &lt;article&gt; and &lt;aside&gt;.
The tests check we *can* nest &lt;header&gt; and &lt;footer&gt; elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175617</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 10:12:43 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45610 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177383</commentid>
    <comment_count>9</comment_count>
      <attachid>45610</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-05 14:07:44 -0800</bug_when>
    <thetext>Comment on attachment 45610
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177522</commentid>
    <comment_count>10</comment_count>
      <attachid>45610</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-05 18:57:11 -0800</bug_when>
    <thetext>Comment on attachment 45610
Proposed patch

Clearing flags on attachment: 45610

Committed r52846: &lt;http://trac.webkit.org/changeset/52846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177523</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-05 18:57:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45553</attachid>
            <date>2009-12-28 08:28:12 -0800</date>
            <delta_ts>2009-12-29 10:04:38 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-header-1.patch</filename>
            <type>text/plain</type>
            <size>22004</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSBjMjczMTc1NjcyY2IxN2M2NmY0Njg0NDY2ODY1NWI0ZDNmMGU4ZDhkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDI5IERlYyAyMDA5IDAxOjE2OjU5ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gaGVhZGVy
LTEKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDIwICsrKysrKysKIExheW91dFRlc3RzL2Zhc3QvaHRtbC9mb290ZXItZWxlbWVudC1l
eHBlY3RlZC50eHQgIHwgICAyMyArKysrKysrKysKIExheW91dFRlc3RzL2Zhc3QvaHRtbC9mb290
ZXItZWxlbWVudC5odG1sICAgICAgICAgIHwgICAxMyArKysrKwogTGF5b3V0VGVzdHMvZmFzdC9o
dG1sL2hlYWRlci1lbGVtZW50LWV4cGVjdGVkLnR4dCAgfCAgIDIzICsrKysrKysrKwogTGF5b3V0
VGVzdHMvZmFzdC9odG1sL2hlYWRlci1lbGVtZW50Lmh0bWwgICAgICAgICAgfCAgIDEzICsrKysr
CiAuLi4vZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9mb290ZXItZWxlbWVudC5qcyAgICAgICB8ICAg
NTMgKysrKysrKysrKysrKysrKysrKysKIC4uLi9mYXN0L2h0bWwvc2NyaXB0LXRlc3RzL2hlYWRl
ci1lbGVtZW50LmpzICAgICAgIHwgICA1MyArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMyICsrKysrKysr
KysrKwogV2ViQ29yZS9jc3MvaHRtbC5jc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAyICstCiBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwICAgICAgICAgICAgICAg
ICAgICB8ICAgIDIgKwogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMzIgKysrKysrKystLS0tCiBXZWJDb3JlL2h0bWwvSFRNTFBhcnNl
ci5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvaHRtbC9IVE1M
VGFnTmFtZXMuaW4gICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiAxNCBmaWxlcyBjaGFu
Z2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Zvb3Rlci1lbGVtZW50LWV4cGVjdGVkLnR4dAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaHRtbC9mb290ZXItZWxlbWVudC5odG1s
CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2hlYWRlci1lbGVtZW50
LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaHRtbC9o
ZWFkZXItZWxlbWVudC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9o
dG1sL3NjcmlwdC10ZXN0cy9mb290ZXItZWxlbWVudC5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvaGVhZGVyLWVsZW1lbnQuanMKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZDY2NDFlMC4uMTdmNGNmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5LTEyLTI5ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTDUgPGhlYWRlcj4gYW5kIDxm
b290ZXI+IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzI5NDMKKworICAgICAgICBUaGVzZSB0ZXN0czoKKyAgICAgICAgLSA8cD4gY2xv
c2luZywKKyAgICAgICAgLSBOZXN0aW5nIHJlc3RyaWN0aW9uLAorICAgICAgICAtIFJlc2lkdWFs
IHN0eWxlLCBhbmQKKyAgICAgICAgLSBGb3JtYXRCbG9jay4KKworICAgICAgICAqIGZhc3QvaHRt
bC9mb290ZXItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaHRt
bC9mb290ZXItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2h0bWwvaGVhZGVy
LWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2h0bWwvaGVhZGVy
LWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9m
b290ZXItZWxlbWVudC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9odG1sL3NjcmlwdC10ZXN0
cy9oZWFkZXItZWxlbWVudC5qczogQWRkZWQuCisKIDIwMDktMTItMjggIEtlbnQgVGFtdXJhICA8
dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93
aWFrLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Zvb3Rlci1lbGVtZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9mb290ZXItZWxlbWVudC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdjMWFlNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9mb290ZXItZWxlbWVudC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMyBAQAorVmFyaW91cyB0ZXN0cyBmb3IgdGhlIGZvb3RlciBlbGVt
ZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworPGZvb3Rlcj4gY2xvc2VzIDxw
PjoKK1BBU1MgZm9vdGVyMS5wYXJlbnROb2RlLm5vZGVOYW1lID09ICJwIiBpcyBmYWxzZQorPHA+
IGRvZXMgbm90IGNsb3NlIDxmb290ZXI+OgorUEFTUyBwMS5wYXJlbnROb2RlLm5vZGVOYW1lIGlz
ICJGT09URVIiCis8Zm9vdGVyPiBjYW4gbm90IGJlIG5lc3RlZCBpbnNpZGUgPGZvb3Rlcj4gb3Ig
PGhlYWRlcj46CitQQVNTIGZvb3RlcjMucGFyZW50Tm9kZS5pZCBpcyAidGVzdFBhcmVudCIKK1BB
U1MgZm9vdGVyNS5wYXJlbnROb2RlLmlkIGlzICJ0ZXN0UGFyZW50IgorUEFTUyBmb290ZXI3LnBh
cmVudE5vZGUuaWQgaXMgInRlc3RQYXJlbnQiCitQQVNTIGZvb3RlcjgucGFyZW50Tm9kZS5pZCBp
cyAidGVzdFBhcmVudCIKK1Jlc2lkdWFsIHN0eWxlOgorUEFTUyBnZXRXZWlnaHQoImZvb3RlcjQi
KSBpcyAiYm9sZCIKK1BBU1MgZ2V0V2VpZ2h0KCJzcGFuMSIpIGlzICJib2xkIgorRm9ybWF0Qmxv
Y2s6CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuMiIpLnBhcmVudE5vZGUubm9k
ZU5hbWUgaXMgIkZPT1RFUiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvZm9vdGVyLWVs
ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9mb290ZXItZWxlbWVudC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ODZiYjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvZm9vdGVyLWVsZW1lbnQuaHRtbApAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9mb290ZXItZWxlbWVudC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9oZWFk
ZXItZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvaGVhZGVyLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZj
ZWQ5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvaGVhZGVyLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1ZhcmlvdXMgdGVzdHMgZm9yIHRo
ZSBoZWFkZXIgZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKzxoZWFk
ZXI+IGNsb3NlcyA8cD46CitQQVNTIGhlYWRlcjEucGFyZW50Tm9kZS5ub2RlTmFtZSA9PSAicCIg
aXMgZmFsc2UKKzxwPiBkb2VzIG5vdCBjbG9zZSA8aGVhZGVyPjoKK1BBU1MgcDEucGFyZW50Tm9k
ZS5ub2RlTmFtZSBpcyAiSEVBREVSIgorPGhlYWRlcj4gY2FuIG5vdCBiZSBuZXN0ZWQgaW5zaWRl
IDxoZWFkZXI+IG9yIDxmb290ZXI+OgorUEFTUyBoZWFkZXIzLnBhcmVudE5vZGUuaWQgaXMgInRl
c3RQYXJlbnQiCitQQVNTIGhlYWRlcjUucGFyZW50Tm9kZS5pZCBpcyAidGVzdFBhcmVudCIKK1BB
U1MgaGVhZGVyNy5wYXJlbnROb2RlLmlkIGlzICJ0ZXN0UGFyZW50IgorUEFTUyBoZWFkZXI4LnBh
cmVudE5vZGUuaWQgaXMgInRlc3RQYXJlbnQiCitSZXNpZHVhbCBzdHlsZToKK1BBU1MgZ2V0V2Vp
Z2h0KCJoZWFkZXI0IikgaXMgImJvbGQiCitQQVNTIGdldFdlaWdodCgic3BhbjEiKSBpcyAiYm9s
ZCIKK0Zvcm1hdEJsb2NrOgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BhbjIiKS5w
YXJlbnROb2RlLm5vZGVOYW1lIGlzICJIRUFERVIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9o
dG1sL2hlYWRlci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvaGVhZGVyLWVs
ZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTA5ODQyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9odG1sL2hlYWRlci1lbGVtZW50Lmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaGVhZGVyLWVsZW1lbnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2h0bWwvc2NyaXB0LXRlc3RzL2Zvb3Rlci1lbGVtZW50LmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9odG1sL3NjcmlwdC10ZXN0cy9mb290ZXItZWxlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mYjY2M2M0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9mb290ZXItZWxlbWVudC5qcwpAQCAtMCwwICsxLDUzIEBA
CitkZXNjcmlwdGlvbignVmFyaW91cyB0ZXN0cyBmb3IgdGhlIGZvb3RlciBlbGVtZW50LicpOwor
Cit2YXIgdGVzdFBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwordGVzdFBh
cmVudC5pZCA9ICd0ZXN0UGFyZW50JzsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdFBh
cmVudCk7CisKK2RlYnVnKCcmbHQ7Zm9vdGVyPiBjbG9zZXMgJmx0O3A+OicpOwordGVzdFBhcmVu
dC5pbm5lckhUTUwgPSAnPHA+VGVzdCB0aGF0IDxmb290ZXIgaWQ9ImZvb3RlcjEiPmEgZm9vdGVy
IGVsZW1lbnQ8L25hdj4gY2xvc2VzICZsdDtwPi48L3A+JzsKK3ZhciBmb290ZXIxID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvb3RlcjEnKTsKK3Nob3VsZEJlRmFsc2UoJ2Zvb3RlcjEucGFy
ZW50Tm9kZS5ub2RlTmFtZSA9PSAicCInKTsKKworZGVidWcoJyZsdDtwPiBkb2VzIG5vdCBjbG9z
ZSAmbHQ7Zm9vdGVyPjonKTsKK3Rlc3RQYXJlbnQuaW5uZXJIVE1MID0gJzxmb290ZXI+VGVzdCB0
aGF0IDxwIGlkPSJwMSI+YSBwIGVsZW1lbnQ8L3A+IGRvZXMgbm90IGNsb3NlIGEgZm9vdGVyIGVs
ZW1lbnQuPC9mb290ZXI+JzsKK3ZhciBwMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwMScp
Oworc2hvdWxkQmUoJ3AxLnBhcmVudE5vZGUubm9kZU5hbWUnLCAnIkZPT1RFUiInKTsKKworZGVi
dWcoJyZsdDtmb290ZXI+IGNhbiBub3QgYmUgbmVzdGVkIGluc2lkZSAmbHQ7Zm9vdGVyPiBvciAm
bHQ7aGVhZGVyPjonKTsKK3Rlc3RQYXJlbnQuaW5uZXJIVE1MID0gJzxmb290ZXIgaWQ9ImZvb3Rl
cjIiPlRlc3QgdGhhdCA8Zm9vdGVyIGlkPSJmb290ZXIzIj5hIGZvb3RlciBlbGVtZW50PC9mb290
ZXI+IGNhbiBub3QgYmUgbmVzdGVkIGluc2lkZSBhbm90aGVyIGZvb3RlciBlbGVtZW50LjwvZm9v
dGVyPic7Cit2YXIgZm9vdGVyMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb290ZXIzJyk7
CitzaG91bGRCZSgnZm9vdGVyMy5wYXJlbnROb2RlLmlkJywgJyJ0ZXN0UGFyZW50IicpOwordGVz
dFBhcmVudC5pbm5lckhUTUwgPSAnPGhlYWRlciBpZD0iaGVhZGVyMSI+VGVzdCB0aGF0IDxmb290
ZXIgaWQ9ImZvb3RlcjUiPmEgZm9vdGVyIGVsZW1lbnQ8L2Zvb3Rlcj4gY2FuIG5vdCBiZSBuZXN0
ZWQgaW5zaWRlIGEgaGVhZGVyIGVsZW1lbnQuPC9oZWFkZXI+JzsKK3ZhciBmb290ZXI1ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvb3RlcjUnKTsKK3Nob3VsZEJlKCdmb290ZXI1LnBhcmVu
dE5vZGUuaWQnLCAnInRlc3RQYXJlbnQiJyk7Cit0ZXN0UGFyZW50LmlubmVySFRNTCA9ICc8Zm9v
dGVyIGlkPSJmb290ZXI2Ij48c2VjdGlvbj5UZXN0IHRoYXQgPGZvb3RlciBpZD0iZm9vdGVyNyI+
YSBmb290ZXIgZWxlbWVudDwvZm9vdGVyPiBjYW4gbm90IGJlIG5lc3RlZCBpbnNpZGUgYW5vdGhl
ciBmb290ZXIgZWxlbWVudC48L3NlY3Rpb24+PC9mb290ZXI+JzsKK3ZhciBmb290ZXI3ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvb3RlcjcnKTsKK3Nob3VsZEJlKCdmb290ZXI3LnBhcmVu
dE5vZGUuaWQnLCAnInRlc3RQYXJlbnQiJyk7Cit0ZXN0UGFyZW50LmlubmVySFRNTCA9ICc8aGVh
ZGVyIGlkPSJoZWFkZXIyIj48c2VjdGlvbj5UZXN0IHRoYXQgPGZvb3RlciBpZD0iZm9vdGVyOCI+
YSBmb290ZXIgZWxlbWVudDwvZm9vdGVyPiBjYW4gbm90IGJlIG5lc3RlZCBpbnNpZGUgYSBoZWFk
ZXIgZWxlbWVudC48L3NlY3Rpb24+PC9mb290ZXI+JzsKK3ZhciBmb290ZXI4ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2Zvb3RlcjgnKTsKK3Nob3VsZEJlKCdmb290ZXI4LnBhcmVudE5vZGUu
aWQnLCAnInRlc3RQYXJlbnQiJyk7CisKK2RlYnVnKCdSZXNpZHVhbCBzdHlsZTonKTsKK3Rlc3RQ
YXJlbnQuaW5uZXJIVE1MID0gJzxiPjxmb290ZXIgaWQ9ImZvb3RlcjQiPlRoaXMgdGV4dCBzaG91
bGQgYmUgYm9sZC48L2Zvb3Rlcj4gPHNwYW4gaWQ9InNwYW4xIj5UaGlzIGlzIGFsc28gYm9sZC48
L3NwYW4+PC9iPic7CitmdW5jdGlvbiBnZXRXZWlnaHQoaWQpIHsKKyAgICByZXR1cm4gZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChp
ZCksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtd2VpZ2h0Jyk7Cit9CitzaG91bGRCZSgn
Z2V0V2VpZ2h0KCJmb290ZXI0IiknLCAnImJvbGQiJyk7CitzaG91bGRCZSgnZ2V0V2VpZ2h0KCJz
cGFuMSIpJywgJyJib2xkIicpOworZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXN0UGFyZW50
KTsKKworZGVidWcoJ0Zvcm1hdEJsb2NrOicpOwordmFyIGVkaXRhYmxlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CitlZGl0YWJsZS5pbm5lckhUTUwgPSAnWzxzcGFuIGlkPSJzcGFu
MiI+VGhlIHRleHQgd2lsbCBiZSBhIGNoaWxkIG9mICZsdDtmb290ZXI+Ljwvc3Bhbj5dJzsKK2Rv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWRpdGFibGUpOworZWRpdGFibGUuY29udGVudEVkaXRh
YmxlID0gdHJ1ZTsKK3ZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CitzZWxl
Y3Rpb24uc2VsZWN0QWxsQ2hpbGRyZW4oZWRpdGFibGUpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQo
J0Zvcm1hdEJsb2NrJywgZmFsc2UsICdmb290ZXInKTsKK3NlbGVjdGlvbi5jb2xsYXBzZSgpOwor
c2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuMiIpLnBhcmVudE5vZGUubm9k
ZU5hbWUnLCAnIkZPT1RFUiInKTsKK2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWRpdGFibGUp
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9oZWFkZXItZWxlbWVudC5qcyBiL0xheW91dFRl
c3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvaGVhZGVyLWVsZW1lbnQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY4M2IxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvaGVhZGVyLWVsZW1lbnQuanMKQEAgLTAsMCAr
MSw1MyBAQAorZGVzY3JpcHRpb24oJ1ZhcmlvdXMgdGVzdHMgZm9yIHRoZSBoZWFkZXIgZWxlbWVu
dC4nKTsKKwordmFyIHRlc3RQYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
K3Rlc3RQYXJlbnQuaWQgPSAndGVzdFBhcmVudCc7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHRlc3RQYXJlbnQpOworCitkZWJ1ZygnJmx0O2hlYWRlcj4gY2xvc2VzICZsdDtwPjonKTsKK3Rl
c3RQYXJlbnQuaW5uZXJIVE1MID0gJzxwPlRlc3QgdGhhdCA8aGVhZGVyIGlkPSJoZWFkZXIxIj5h
IGhlYWRlciBlbGVtZW50PC9uYXY+IGNsb3NlcyAmbHQ7cD4uPC9wPic7Cit2YXIgaGVhZGVyMSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXIxJyk7CitzaG91bGRCZUZhbHNlKCdoZWFk
ZXIxLnBhcmVudE5vZGUubm9kZU5hbWUgPT0gInAiJyk7CisKK2RlYnVnKCcmbHQ7cD4gZG9lcyBu
b3QgY2xvc2UgJmx0O2hlYWRlcj46Jyk7Cit0ZXN0UGFyZW50LmlubmVySFRNTCA9ICc8aGVhZGVy
PlRlc3QgdGhhdCA8cCBpZD0icDEiPmEgcCBlbGVtZW50PC9wPiBkb2VzIG5vdCBjbG9zZSBhIGhl
YWRlciBlbGVtZW50LjwvaGVhZGVyPic7Cit2YXIgcDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncDEnKTsKK3Nob3VsZEJlKCdwMS5wYXJlbnROb2RlLm5vZGVOYW1lJywgJyJIRUFERVIiJyk7
CisKK2RlYnVnKCcmbHQ7aGVhZGVyPiBjYW4gbm90IGJlIG5lc3RlZCBpbnNpZGUgJmx0O2hlYWRl
cj4gb3IgJmx0O2Zvb3Rlcj46Jyk7Cit0ZXN0UGFyZW50LmlubmVySFRNTCA9ICc8aGVhZGVyIGlk
PSJoZWFkZXIyIj5UZXN0IHRoYXQgPGhlYWRlciBpZD0iaGVhZGVyMyI+YSBoZWFkZXIgZWxlbWVu
dDwvaGVhZGVyPiBjYW4gbm90IGJlIG5lc3RlZCBpbnNpZGUgYW5vdGhlciBoZWFkZXIgZWxlbWVu
dC48L2hlYWRlcj4nOwordmFyIGhlYWRlcjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVh
ZGVyMycpOworc2hvdWxkQmUoJ2hlYWRlcjMucGFyZW50Tm9kZS5pZCcsICcidGVzdFBhcmVudCIn
KTsKK3Rlc3RQYXJlbnQuaW5uZXJIVE1MID0gJzxmb290ZXIgaWQ9ImZvb3RlcjEiPlRlc3QgdGhh
dCA8aGVhZGVyIGlkPSJoZWFkZXI1Ij5hIGhlYWRlciBlbGVtZW50PC9oZWFkZXI+IGNhbiBub3Qg
YmUgbmVzdGVkIGluc2lkZSBhIGZvb3RlciBlbGVtZW50LjwvZm9vdGVyPic7Cit2YXIgaGVhZGVy
NSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXI1Jyk7CitzaG91bGRCZSgnaGVhZGVy
NS5wYXJlbnROb2RlLmlkJywgJyJ0ZXN0UGFyZW50IicpOwordGVzdFBhcmVudC5pbm5lckhUTUwg
PSAnPGhlYWRlciBpZD0iaGVhZGVyNiI+PHNlY3Rpb24+VGVzdCB0aGF0IDxoZWFkZXIgaWQ9Imhl
YWRlcjciPmEgaGVhZGVyIGVsZW1lbnQ8L2hlYWRlcj4gY2FuIG5vdCBiZSBuZXN0ZWQgaW5zaWRl
IGFub3RoZXIgaGVhZGVyIGVsZW1lbnQuPC9zZWN0aW9uPjwvaGVhZGVyPic7Cit2YXIgaGVhZGVy
NyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXI3Jyk7CitzaG91bGRCZSgnaGVhZGVy
Ny5wYXJlbnROb2RlLmlkJywgJyJ0ZXN0UGFyZW50IicpOwordGVzdFBhcmVudC5pbm5lckhUTUwg
PSAnPGZvb3RlciBpZD0iZm9vdGVyMiI+PHNlY3Rpb24+VGVzdCB0aGF0IDxoZWFkZXIgaWQ9Imhl
YWRlcjgiPmEgaGVhZGVyIGVsZW1lbnQ8L2hlYWRlcj4gY2FuIG5vdCBiZSBuZXN0ZWQgaW5zaWRl
IGEgZm9vdGVyIGVsZW1lbnQuPC9zZWN0aW9uPjwvaGVhZGVyPic7Cit2YXIgaGVhZGVyOCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXI4Jyk7CitzaG91bGRCZSgnaGVhZGVyOC5wYXJl
bnROb2RlLmlkJywgJyJ0ZXN0UGFyZW50IicpOworCitkZWJ1ZygnUmVzaWR1YWwgc3R5bGU6Jyk7
Cit0ZXN0UGFyZW50LmlubmVySFRNTCA9ICc8Yj48aGVhZGVyIGlkPSJoZWFkZXI0Ij5UaGlzIHRl
eHQgc2hvdWxkIGJlIGJvbGQuPC9oZWFkZXI+IDxzcGFuIGlkPSJzcGFuMSI+VGhpcyBpcyBhbHNv
IGJvbGQuPC9zcGFuPjwvYj4nOworZnVuY3Rpb24gZ2V0V2VpZ2h0KGlkKSB7CisgICAgcmV0dXJu
IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaWQpLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXdlaWdodCcpOworfQorc2hv
dWxkQmUoJ2dldFdlaWdodCgiaGVhZGVyNCIpJywgJyJib2xkIicpOworc2hvdWxkQmUoJ2dldFdl
aWdodCgic3BhbjEiKScsICciYm9sZCInKTsKK2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVz
dFBhcmVudCk7CisKK2RlYnVnKCdGb3JtYXRCbG9jazonKTsKK3ZhciBlZGl0YWJsZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZWRpdGFibGUuaW5uZXJIVE1MID0gJ1s8c3BhbiBp
ZD0ic3BhbjIiPlRoZSB0ZXh0IHdpbGwgYmUgYSBjaGlsZCBvZiAmbHQ7aGVhZGVyPi48L3NwYW4+
XSc7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVkaXRhYmxlKTsKK2VkaXRhYmxlLmNvbnRl
bnRFZGl0YWJsZSA9IHRydWU7Cit2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigp
Oworc2VsZWN0aW9uLnNlbGVjdEFsbENoaWxkcmVuKGVkaXRhYmxlKTsKK2RvY3VtZW50LmV4ZWND
b21tYW5kKCdGb3JtYXRCbG9jaycsIGZhbHNlLCAnaGVhZGVyJyk7CitzZWxlY3Rpb24uY29sbGFw
c2UoKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BhbjIiKS5wYXJlbnRO
b2RlLm5vZGVOYW1lJywgJyJIRUFERVIiJyk7Citkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVk
aXRhYmxlKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMyNzkwYi4uYjA0
YjQ2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0xMi0yOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50IEhUTUw1IDxoZWFkZXI+IGFuZCA8Zm9vdGVyPiBlbGVtZW50cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyOTQzCisKKyAgICAg
ICAgVW5saWtlIG90aGVyIHNlY3Rpb25pbmcgZWxlbWVudHMgc3VjaCBhcyA8c2VjdGlvbj4sIGEg
PGhlYWRlcj4gb3IKKyAgICAgICAgPGZvb3Rlcj4gZWxlbWVudCBjYW4gbm90IGJlIG5lc3RlZCBp
bnNpZGUgYW5vdGhlciA8aGVhZGVyPiBvcgorICAgICAgICA8Zm9vdGVyPiBlbGVtZW50LiBTbyBI
VE1MUGFyc2VyIGludHJvZHVjZXMgbmV3CisgICAgICAgIG5lc3RlZEhlYWRlckZvb3RlckNyZWF0
ZUVycm9yQ2hlY2soKSBtZXRob2QuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvaHRtbC9mb290ZXIt
ZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2h0bWwvaGVhZGVyLWVsZW1lbnQuaHRt
bAorCisgICAgICAgICogY3NzL2h0bWwuY3NzOiBBZGQgaGVhZGVyL2Zvb3RlciBhcyBibG9jayBl
bGVtZW50cy4KKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnZhbGlkQmxvY2tUYWcpOiBBZGQgaGVhZGVyVGFnIGFuZCBmb290ZXJUYWcuCisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6dGFnUHJpb3JpdHkpOiBSZXR1cm5zIDUgZm9yIGhlYWRlclRhZyBhbmQgZm9vdGVyVGFnLgor
ICAgICAgICAoV2ViQ29yZTo6YmxvY2tUYWdMaXN0KTogQWRkIGhlYWRlclRhZyBhbmQgZm9vdGVy
VGFnLgorICAgICAgICAqIGh0bWwvSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGFyc2VyOjpoYW5kbGVFcnJvcik6IFJlbmFtZSBpc0hlYWRlclRhZygpIHRvIGlzSGVhZGlu
Z1RhZygpCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyOjpuZXN0ZWRIZWFkZXJGb290ZXJD
cmVhdGVFcnJvckNoZWNrKTogUG9wIGhlYWRlclRhZyBhbmQgZm9vdGVyVGFnLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBhcnNlcjo6Z2V0Tm9kZSk6IEFkZCBoZWFkZXJUYWcgYW5kIGZvb3RlclRh
Zy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6OmlzSGVhZGluZ1RhZyk6IFJlbmFtZWQg
ZnJvbSBpc0hlYWRlclRhZygpLgorICAgICAgICAqIGh0bWwvSFRNTFBhcnNlci5oOgorICAgICAg
ICAgIC0gUmVuYW1lIGlzSGVhZGVyVGFnKCkgdG8gaXNIZWFkaW5nVGFnKCkKKyAgICAgICAgICAt
IERlY2xhcmUgbmVzdGVkSGVhZGVyRm9vdGVyQ3JlYXRlRXJyb3JDaGVjaygpCisgICAgICAgICAg
LSBSZW1vdmUgbm9uLWV4aXN0aW5nIHBvcE5lc3RlZEhlYWRlclRhZygpLgorICAgICAgICAqIGh0
bWwvSFRNTFRhZ05hbWVzLmluOiBBZGQgaGVhZGVyIGFuZCBmb290ZXIuCisKIDIwMDktMTItMjgg
IEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9X
ZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRleCA3YjE3NzM5Li44OWI2MzM2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNzIsNyAr
NzIsNyBAQCBsYXllciB7CiAgICAgZGlzcGxheTogYmxvY2sKIH0KIAotYXJ0aWNsZSwgbmF2LCBz
ZWN0aW9uIHsKK2FydGljbGUsIGZvb3RlciwgaGVhZGVyLCBuYXYsIHNlY3Rpb24gewogICAgIGRp
c3BsYXk6IGJsb2NrCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDAyYzgwMTAuLjgy
YzEyMGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtNDgwLDEyICs0ODAsMTQgQEAgYm9v
bCB2YWxpZEJsb2NrVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgYmxvY2tUYWcpCiAgICAgICAgIGJs
b2NrVGFncy5hZGQoZGl2VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgYmxvY2tUYWdzLmFkZChk
bFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgIGJsb2NrVGFncy5hZGQoZHRUYWcubG9jYWxOYW1l
KCkpOworICAgICAgICBibG9ja1RhZ3MuYWRkKGZvb3RlclRhZy5sb2NhbE5hbWUoKSk7CiAgICAg
ICAgIGJsb2NrVGFncy5hZGQoaDFUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICBibG9ja1RhZ3Mu
YWRkKGgyVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgYmxvY2tUYWdzLmFkZChoM1RhZy5sb2Nh
bE5hbWUoKSk7CiAgICAgICAgIGJsb2NrVGFncy5hZGQoaDRUYWcubG9jYWxOYW1lKCkpOwogICAg
ICAgICBibG9ja1RhZ3MuYWRkKGg1VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgYmxvY2tUYWdz
LmFkZChoNlRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIGJsb2NrVGFncy5hZGQoaGVhZGVyVGFn
LmxvY2FsTmFtZSgpKTsKICAgICAgICAgYmxvY2tUYWdzLmFkZChuYXZUYWcubG9jYWxOYW1lKCkp
OwogICAgICAgICBibG9ja1RhZ3MuYWRkKHBUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICBibG9j
a1RhZ3MuYWRkKHByZVRhZy5sb2NhbE5hbWUoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA1MzU3
N2U2Li42NDY0NTMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgaW50IEhU
TUxFbGVtZW50Ojp0YWdQcmlvcml0eSgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIGlm
IChoYXNMb2NhbE5hbWUoYWRkcmVzc1RhZykgfHwgaGFzTG9jYWxOYW1lKGRkVGFnKSB8fCBoYXNM
b2NhbE5hbWUoZHRUYWcpIHx8IGhhc0xvY2FsTmFtZShub3NjcmlwdFRhZykgfHwgaGFzTG9jYWxO
YW1lKHJwVGFnKSB8fCBoYXNMb2NhbE5hbWUocnRUYWcpKQogICAgICAgICByZXR1cm4gMzsKLSAg
ICBpZiAoaGFzTG9jYWxOYW1lKGFydGljbGVUYWcpIHx8IGhhc0xvY2FsTmFtZShjZW50ZXJUYWcp
IHx8IGhhc0xvY2FsTmFtZShub2JyVGFnKSB8fCBoYXNMb2NhbE5hbWUocnVieVRhZykgfHwgaGFz
TG9jYWxOYW1lKG5hdlRhZykgfHwgaGFzTG9jYWxOYW1lKHNlY3Rpb25UYWcpKQorICAgIGlmICho
YXNMb2NhbE5hbWUoYXJ0aWNsZVRhZykgfHwgaGFzTG9jYWxOYW1lKGNlbnRlclRhZykgfHwgaGFz
TG9jYWxOYW1lKGZvb3RlclRhZykgfHwgaGFzTG9jYWxOYW1lKGhlYWRlclRhZykgfHwgaGFzTG9j
YWxOYW1lKG5vYnJUYWcpIHx8IGhhc0xvY2FsTmFtZShydWJ5VGFnKSB8fCBoYXNMb2NhbE5hbWUo
bmF2VGFnKSB8fCBoYXNMb2NhbE5hbWUoc2VjdGlvblRhZykpCiAgICAgICAgIHJldHVybiA1OyAv
LyBTYW1lIGFzIDxkaXY+LgogICAgIGlmIChoYXNMb2NhbE5hbWUobm9lbWJlZFRhZykgfHwgaGFz
TG9jYWxOYW1lKG5vZnJhbWVzVGFnKSkKICAgICAgICAgcmV0dXJuIDEwOwpAQCAtODczLDYgKzg3
Myw3IEBAIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogYmxvY2tUYWdMaXN0KCkK
ICAgICAgICAgdGFnTGlzdC5hZGQoZGxUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAg
dGFnTGlzdC5hZGQoZHRUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgdGFnTGlzdC5h
ZGQoZmllbGRzZXRUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgdGFnTGlzdC5hZGQo
Zm9vdGVyVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIHRhZ0xpc3QuYWRkKGZvcm1U
YWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgdGFnTGlzdC5hZGQoaDFUYWcubG9jYWxO
YW1lKCkuaW1wbCgpKTsKICAgICAgICAgdGFnTGlzdC5hZGQoaDJUYWcubG9jYWxOYW1lKCkuaW1w
bCgpKTsKQEAgLTg4MCw2ICs4ODEsNyBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4qIGJsb2NrVGFnTGlzdCgpCiAgICAgICAgIHRhZ0xpc3QuYWRkKGg0VGFnLmxvY2FsTmFtZSgp
LmltcGwoKSk7CiAgICAgICAgIHRhZ0xpc3QuYWRkKGg1VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7
CiAgICAgICAgIHRhZ0xpc3QuYWRkKGg2VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAg
IHRhZ0xpc3QuYWRkKGhlYWRlclRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAgICB0YWdM
aXN0LmFkZChoclRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAgICB0YWdMaXN0LmFkZChp
c2luZGV4VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIHRhZ0xpc3QuYWRkKGxheWVy
VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFBh
cnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKaW5kZXggMDJjZjRhZC4uN2M1
OTIwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MUGFyc2VyLmNwcApAQCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgSFRNTFBhcnNl
cjo6aGFuZGxlRXJyb3IoTm9kZSogbiwgYm9vbCBmbGF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSwKICAgICAgICAgICAgIHJlcG9ydEVycm9yKE1pc3BsYWNlZENvbnRlbnRSZXRyeUVy
cm9yLCAmbG9jYWxOYW1lLCAmY3VycmVudFRhZ05hbWUpOwogICAgICAgICAgICAgcG9wQmxvY2so
b2JqZWN0VGFnKTsKICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICB9IGVsc2Ug
aWYgKGgtPmhhc0xvY2FsTmFtZShwVGFnKSB8fCBpc0hlYWRlclRhZyhjdXJyZW50VGFnTmFtZSkp
IHsKKyAgICAgICAgfSBlbHNlIGlmIChoLT5oYXNMb2NhbE5hbWUocFRhZykgfHwgaXNIZWFkaW5n
VGFnKGN1cnJlbnRUYWdOYW1lKSkgewogICAgICAgICAgICAgaWYgKCFpc0lubGluZShuKSkgewog
ICAgICAgICAgICAgICAgIHBvcEJsb2NrKGN1cnJlbnRUYWdOYW1lKTsKICAgICAgICAgICAgICAg
ICBoYW5kbGVkID0gdHJ1ZTsKQEAgLTgyOSw2ICs4MjksMTQgQEAgYm9vbCBIVE1MUGFyc2VyOjpu
ZXN0ZWRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mKQogICAgIHJldHVy
biB0cnVlOwogfQogCitib29sIEhUTUxQYXJzZXI6Om5lc3RlZEhlYWRlckZvb3RlckNyZWF0ZUVy
cm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQoreworICAgIHBDbG9zZXJD
cmVhdGVFcnJvckNoZWNrKHQsIHJlc3VsdCk7CisgICAgcG9wQmxvY2soaGVhZGVyVGFnKTsKKyAg
ICBwb3BCbG9jayhmb290ZXJUYWcpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIEhUTUxQ
YXJzZXI6Om5lc3RlZFBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9k
ZT4mIHJlc3VsdCkKIHsKICAgICBwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayh0LCByZXN1bHQpOwpA
QCAtOTIzLDYgKzkzMSw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6Z2V0Tm9kZShU
b2tlbiogdCkKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChkdFRhZy5sb2NhbE5hbWUoKS5pbXBs
KCksICZIVE1MUGFyc2VyOjpkdENyZWF0ZUVycm9yQ2hlY2spOwogICAgICAgICBnRnVuY3Rpb25N
YXAuc2V0KGZvcm1UYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6Zm9ybUNyZWF0
ZUVycm9yQ2hlY2spOwogICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGZpZWxkc2V0VGFnLmxvY2Fs
TmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKKyAg
ICAgICAgZ0Z1bmN0aW9uTWFwLnNldChmb290ZXJUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRN
TFBhcnNlcjo6bmVzdGVkSGVhZGVyRm9vdGVyQ3JlYXRlRXJyb3JDaGVjayk7CiAgICAgICAgIGdG
dW5jdGlvbk1hcC5zZXQoZnJhbWVzZXRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNl
cjo6ZnJhbWVzZXRDcmVhdGVFcnJvckNoZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldCho
MVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JD
aGVjayk7CiAgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoaDJUYWcubG9jYWxOYW1lKCkuaW1wbCgp
LCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwpAQCAtOTMxLDYgKzk0MCw3
IEBAIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6Z2V0Tm9kZShUb2tlbiogdCkKICAgICAg
ICAgZ0Z1bmN0aW9uTWFwLnNldChoNVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2Vy
OjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7CiAgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoaDZU
YWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hl
Y2spOwogICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGhlYWRUYWcubG9jYWxOYW1lKCkuaW1wbCgp
LCAmSFRNTFBhcnNlcjo6aGVhZENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBnRnVuY3Rpb25N
YXAuc2V0KGhlYWRlclRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRI
ZWFkZXJGb290ZXJDcmVhdGVFcnJvckNoZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldCho
clRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JD
aGVjayk7CiAgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoaVRhZy5sb2NhbE5hbWUoKS5pbXBsKCks
ICZIVE1MUGFyc2VyOjpuZXN0ZWRTdHlsZUNyZWF0ZUVycm9yQ2hlY2spOwogICAgICAgICBnRnVu
Y3Rpb25NYXAuc2V0KGlzaW5kZXhUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6
aXNpbmRleENyZWF0ZUVycm9yQ2hlY2spOwpAQCAtMTAyMCwxOSArMTAzMCwxOSBAQCB2b2lkIEhU
TUxQYXJzZXI6OnByb2Nlc3NDbG9zZVRhZyhUb2tlbiogdCkKICAgICB9CiB9CiAKLWJvb2wgSFRN
TFBhcnNlcjo6aXNIZWFkZXJUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQorYm9vbCBI
VE1MUGFyc2VyOjppc0hlYWRpbmdUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIGhlYWRl
clRhZ3MsICgpKTsKLSAgICBpZiAoaGVhZGVyVGFncy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaGVh
ZGVyVGFncy5hZGQoaDFUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgaGVhZGVyVGFn
cy5hZGQoaDJUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgaGVhZGVyVGFncy5hZGQo
aDNUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgaGVhZGVyVGFncy5hZGQoaDRUYWcu
bG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgaGVhZGVyVGFncy5hZGQoaDVUYWcubG9jYWxO
YW1lKCkuaW1wbCgpKTsKLSAgICAgICAgaGVhZGVyVGFncy5hZGQoaDZUYWcubG9jYWxOYW1lKCku
aW1wbCgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1w
bCo+LCBoZWFkaW5nVGFncywgKCkpOworICAgIGlmIChoZWFkaW5nVGFncy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgaGVhZGluZ1RhZ3MuYWRkKGgxVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAg
ICAgIGhlYWRpbmdUYWdzLmFkZChoMlRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBo
ZWFkaW5nVGFncy5hZGQoaDNUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgaGVhZGlu
Z1RhZ3MuYWRkKGg0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIGhlYWRpbmdUYWdz
LmFkZChoNVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBoZWFkaW5nVGFncy5hZGQo
aDZUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGhlYWRl
clRhZ3MuY29udGFpbnModGFnTmFtZS5pbXBsKCkpOworICAgIHJldHVybiBoZWFkaW5nVGFncy5j
b250YWlucyh0YWdOYW1lLmltcGwoKSk7CiB9CiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNJbmxpbmUo
Tm9kZSogbm9kZSkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmgg
Yi9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5oCmluZGV4IGYwN2I2NGIuLmY2M2M5MTkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxQ
YXJzZXIuaApAQCAtOTQsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNpbmRleENyZWF0
ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKTsKICAgICBib29sIG1hcENyZWF0ZUVy
cm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKTsKICAgICBib29sIG5lc3RlZENyZWF0ZUVy
cm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKTsKKyAgICBib29sIG5lc3RlZEhlYWRlckZv
b3RlckNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKTsKICAgICBib29sIG5l
c3RlZFBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+Jik7CiAgICAg
Ym9vbCBuZXN0ZWRTdHlsZUNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKTsK
ICAgICBib29sIG5vZW1iZWRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+Jik7
CkBAIC0xMzYsOCArMTM3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYWxsb3dOZXN0ZWRSZWR1
bmRhbnRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKTsKICAgICAKLSAgICBzdGF0aWMg
Ym9vbCBpc0hlYWRlclRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpOwotICAgIHZvaWQg
cG9wTmVzdGVkSGVhZGVyVGFnKCk7CisgICAgc3RhdGljIGJvb2wgaXNIZWFkaW5nVGFnKGNvbnN0
IEF0b21pY1N0cmluZyYgdGFnTmFtZSk7CiAKICAgICBib29sIGlzSW5saW5lKE5vZGUqKSBjb25z
dDsKICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4gYi9XZWJD
b3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCmluZGV4IGQxZDI3MTUuLmVhM2QxZDUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KKysrIGIvV2ViQ29yZS9odG1sL0hUTUxU
YWdOYW1lcy5pbgpAQCAtNDIsNiArNDIsNyBAQCBlbSBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50
CiBlbWJlZAogZmllbGRzZXQgaW50ZXJmYWNlTmFtZT1IVE1MRmllbGRTZXRFbGVtZW50LCBjb25z
dHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKIGZvbnQgY3JlYXRlV2l0aE5l
dworZm9vdGVyIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGZvcm0gY3JlYXRlV2l0aE5ldwog
ZnJhbWUKIGZyYW1lc2V0IGludGVyZmFjZU5hbWU9SFRNTEZyYW1lU2V0RWxlbWVudCwgY3JlYXRl
V2l0aE5ldwpAQCAtNTIsNiArNTMsNyBAQCBoNCBpbnRlcmZhY2VOYW1lPUhUTUxIZWFkaW5nRWxl
bWVudCwgY3JlYXRlV2l0aE5ldwogaDUgaW50ZXJmYWNlTmFtZT1IVE1MSGVhZGluZ0VsZW1lbnQs
IGNyZWF0ZVdpdGhOZXcKIGg2IGludGVyZmFjZU5hbWU9SFRNTEhlYWRpbmdFbGVtZW50LCBjcmVh
dGVXaXRoTmV3CiBoZWFkIGNyZWF0ZVdpdGhOZXcKK2hlYWRlciBpbnRlcmZhY2VOYW1lPUhUTUxF
bGVtZW50CiBociBpbnRlcmZhY2VOYW1lPUhUTUxIUkVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKIGh0
bWwgY3JlYXRlV2l0aE5ldwogaSBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50Ci0tIAoxLjYuMy4z
Cgo=
</data>
<flag name="review"
          id="27611"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45610</attachid>
            <date>2009-12-29 10:04:38 -0800</date>
            <delta_ts>2010-01-05 18:57:11 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-header-2.patch</filename>
            <type>text/plain</type>
            <size>19536</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSAzNThjNjRkMjIzYjM5M2NmYTZmNjhjNmY2OWM0N2FiYmJhMTU0ZThlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDI5IERlYyAyMDA5IDAxOjE2OjU5ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gaGVhZGVy
LTIKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDIwICsrKysrKysrKwogTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Zvb3Rlci1lbGVtZW50
LWV4cGVjdGVkLnR4dCAgfCAgIDIxICsrKysrKysrKwogTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Zv
b3Rlci1lbGVtZW50Lmh0bWwgICAgICAgICAgfCAgIDEzICsrKysrKwogTGF5b3V0VGVzdHMvZmFz
dC9odG1sL2hlYWRlci1lbGVtZW50LWV4cGVjdGVkLnR4dCAgfCAgIDIxICsrKysrKysrKwogTGF5
b3V0VGVzdHMvZmFzdC9odG1sL2hlYWRlci1lbGVtZW50Lmh0bWwgICAgICAgICAgfCAgIDEzICsr
KysrKwogLi4uL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvZm9vdGVyLWVsZW1lbnQuanMgICAgICAg
fCAgIDQ2ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9o
ZWFkZXItZWxlbWVudC5qcyAgICAgICB8ICAgNDYgKysrKysrKysrKysrKysrKysrKysKIFdlYkNv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArKysr
KysrKysrKysKIFdlYkNvcmUvY3NzL2h0bWwuY3NzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCAgICAgICAgICAg
ICAgICAgICAgfCAgICAyICsKIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDI0ICsrKysrKy0tLS0tCiBXZWJDb3JlL2h0bWwvSFRNTFBh
cnNlci5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIFdlYkNvcmUvaHRtbC9I
VE1MVGFnTmFtZXMuaW4gICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiAxNCBmaWxlcyBj
aGFuZ2VkLCAyMzEgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Zvb3Rlci1lbGVtZW50LWV4cGVjdGVkLnR4dAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaHRtbC9mb290ZXItZWxlbWVudC5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2hlYWRlci1lbGVt
ZW50LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaHRt
bC9oZWFkZXItZWxlbWVudC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFz
dC9odG1sL3NjcmlwdC10ZXN0cy9mb290ZXItZWxlbWVudC5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvaGVhZGVyLWVsZW1lbnQuanMKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMDA0Zjk3YS4uZTU4N2Y4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5LTEyLTMw
ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTDUgPGhlYWRlcj4gYW5k
IDxmb290ZXI+IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzI5NDMKKworICAgICAgICBUaGVzZSB0ZXN0OgorICAgICAgICAtIDxwPiBj
bG9zaW5nLAorICAgICAgICAtIE5vIG5lc3RpbmcgcmVzdHJpY3Rpb24sCisgICAgICAgIC0gUmVz
aWR1YWwgc3R5bGUsIGFuZAorICAgICAgICAtIEZvcm1hdEJsb2NrLgorCisgICAgICAgICogZmFz
dC9odG1sL2Zvb3Rlci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9odG1sL2Zvb3Rlci1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaHRtbC9o
ZWFkZXItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaHRtbC9o
ZWFkZXItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2h0bWwvc2NyaXB0LXRl
c3RzL2Zvb3Rlci1lbGVtZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2h0bWwvc2NyaXB0
LXRlc3RzL2hlYWRlci1lbGVtZW50LmpzOiBBZGRlZC4KKwogMjAwOS0xMi0yOSAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0
YWNob3dpYWsuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvZm9vdGVyLWVsZW1l
bnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Zvb3Rlci1lbGVtZW50LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzNmMWFhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Zvb3Rlci1lbGVtZW50LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitWYXJpb3VzIHRlc3RzIGZvciB0aGUgZm9vdGVy
IGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis8Zm9vdGVyPiBjbG9z
ZXMgPHA+OgorUEFTUyBmb290ZXIxLnBhcmVudE5vZGUubm9kZU5hbWUgPT0gInAiIGlzIGZhbHNl
Cis8cD4gZG9lcyBub3QgY2xvc2UgPGZvb3Rlcj46CitQQVNTIHAxLnBhcmVudE5vZGUubm9kZU5h
bWUgaXMgIkZPT1RFUiIKKzxmb290ZXI+IGNhbiBiZSBuZXN0ZWQgaW5zaWRlIDxmb290ZXI+IG9y
IDxoZWFkZXI+OgorUEFTUyBmb290ZXIzLnBhcmVudE5vZGUuaWQgaXMgImZvb3RlcjIiCitQQVNT
IGZvb3RlcjUucGFyZW50Tm9kZS5pZCBpcyAiaGVhZGVyMSIKK1Jlc2lkdWFsIHN0eWxlOgorUEFT
UyBnZXRXZWlnaHQoImZvb3RlcjQiKSBpcyAiYm9sZCIKK1BBU1MgZ2V0V2VpZ2h0KCJzcGFuMSIp
IGlzICJib2xkIgorRm9ybWF0QmxvY2s6CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
cGFuMiIpLnBhcmVudE5vZGUubm9kZU5hbWUgaXMgIkZPT1RFUiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2h0bWwvZm9vdGVyLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9m
b290ZXItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2
ODZiYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvZm9vdGVyLWVs
ZW1lbnQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9mb290ZXItZWxlbWVudC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvaHRtbC9oZWFkZXItZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2h0bWwvaGVhZGVyLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjZkY2JhNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2h0bWwvaGVhZGVyLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAK
K1ZhcmlvdXMgdGVzdHMgZm9yIHRoZSBoZWFkZXIgZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKKzxoZWFkZXI+IGNsb3NlcyA8cD46CitQQVNTIGhlYWRlcjEucGFyZW50
Tm9kZS5ub2RlTmFtZSA9PSAicCIgaXMgZmFsc2UKKzxwPiBkb2VzIG5vdCBjbG9zZSA8aGVhZGVy
PjoKK1BBU1MgcDEucGFyZW50Tm9kZS5ub2RlTmFtZSBpcyAiSEVBREVSIgorPGhlYWRlcj4gY2Fu
IGJlIG5lc3RlZCBpbnNpZGUgPGhlYWRlcj4gb3IgPGZvb3Rlcj46CitQQVNTIGhlYWRlcjMucGFy
ZW50Tm9kZS5pZCBpcyAiaGVhZGVyMiIKK1BBU1MgaGVhZGVyNS5wYXJlbnROb2RlLmlkIGlzICJm
b290ZXIxIgorUmVzaWR1YWwgc3R5bGU6CitQQVNTIGdldFdlaWdodCgiaGVhZGVyNCIpIGlzICJi
b2xkIgorUEFTUyBnZXRXZWlnaHQoInNwYW4xIikgaXMgImJvbGQiCitGb3JtYXRCbG9jazoKK1BB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW4yIikucGFyZW50Tm9kZS5ub2RlTmFtZSBp
cyAiSEVBREVSIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9oZWFkZXItZWxlbWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9odG1sL2hlYWRlci1lbGVtZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUwOTg0MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvaHRtbC9oZWFkZXItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsMTMgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2hlYWRlci1lbGVtZW50LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NjcmlwdC10ZXN0
cy9mb290ZXItZWxlbWVudC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMv
Zm9vdGVyLWVsZW1lbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNm
YWI2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVz
dHMvZm9vdGVyLWVsZW1lbnQuanMKQEAgLTAsMCArMSw0NiBAQAorZGVzY3JpcHRpb24oJ1Zhcmlv
dXMgdGVzdHMgZm9yIHRoZSBmb290ZXIgZWxlbWVudC4nKTsKKwordmFyIHRlc3RQYXJlbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
dGVzdFBhcmVudCk7CisKK2RlYnVnKCcmbHQ7Zm9vdGVyPiBjbG9zZXMgJmx0O3A+OicpOwordGVz
dFBhcmVudC5pbm5lckhUTUwgPSAnPHA+VGVzdCB0aGF0IDxmb290ZXIgaWQ9ImZvb3RlcjEiPmEg
Zm9vdGVyIGVsZW1lbnQ8L25hdj4gY2xvc2VzICZsdDtwPi48L3A+JzsKK3ZhciBmb290ZXIxID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvb3RlcjEnKTsKK3Nob3VsZEJlRmFsc2UoJ2Zvb3Rl
cjEucGFyZW50Tm9kZS5ub2RlTmFtZSA9PSAicCInKTsKKworZGVidWcoJyZsdDtwPiBkb2VzIG5v
dCBjbG9zZSAmbHQ7Zm9vdGVyPjonKTsKK3Rlc3RQYXJlbnQuaW5uZXJIVE1MID0gJzxmb290ZXI+
VGVzdCB0aGF0IDxwIGlkPSJwMSI+YSBwIGVsZW1lbnQ8L3A+IGRvZXMgbm90IGNsb3NlIGEgZm9v
dGVyIGVsZW1lbnQuPC9mb290ZXI+JzsKK3ZhciBwMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdwMScpOworc2hvdWxkQmUoJ3AxLnBhcmVudE5vZGUubm9kZU5hbWUnLCAnIkZPT1RFUiInKTsK
KworZGVidWcoJyZsdDtmb290ZXI+IGNhbiBiZSBuZXN0ZWQgaW5zaWRlICZsdDtmb290ZXI+IG9y
ICZsdDtoZWFkZXI+OicpOwordGVzdFBhcmVudC5pbm5lckhUTUwgPSAnPGZvb3RlciBpZD0iZm9v
dGVyMiI+VGVzdCB0aGF0IDxmb290ZXIgaWQ9ImZvb3RlcjMiPmEgZm9vdGVyIGVsZW1lbnQ8L2Zv
b3Rlcj4gY2FuIGJlIG5lc3RlZCBpbnNpZGUgYW5vdGhlciBmb290ZXIgZWxlbWVudC48L2Zvb3Rl
cj4nOwordmFyIGZvb3RlcjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9vdGVyMycpOwor
c2hvdWxkQmUoJ2Zvb3RlcjMucGFyZW50Tm9kZS5pZCcsICciZm9vdGVyMiInKTsKK3Rlc3RQYXJl
bnQuaW5uZXJIVE1MID0gJzxoZWFkZXIgaWQ9ImhlYWRlcjEiPlRlc3QgdGhhdCA8Zm9vdGVyIGlk
PSJmb290ZXI1Ij5hIGZvb3RlciBlbGVtZW50PC9mb290ZXI+IGNhbiBiZSBuZXN0ZWQgaW5zaWRl
IGEgaGVhZGVyIGVsZW1lbnQuPC9oZWFkZXI+JzsKK3ZhciBmb290ZXI1ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2Zvb3RlcjUnKTsKK3Nob3VsZEJlKCdmb290ZXI1LnBhcmVudE5vZGUuaWQn
LCAnImhlYWRlcjEiJyk7CisKK2RlYnVnKCdSZXNpZHVhbCBzdHlsZTonKTsKK3Rlc3RQYXJlbnQu
aW5uZXJIVE1MID0gJzxiPjxmb290ZXIgaWQ9ImZvb3RlcjQiPlRoaXMgdGV4dCBzaG91bGQgYmUg
Ym9sZC48L2Zvb3Rlcj4gPHNwYW4gaWQ9InNwYW4xIj5UaGlzIGlzIGFsc28gYm9sZC48L3NwYW4+
PC9iPic7CitmdW5jdGlvbiBnZXRXZWlnaHQoaWQpIHsKKyAgICByZXR1cm4gZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCksIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtd2VpZ2h0Jyk7Cit9CitzaG91bGRCZSgnZ2V0V2Vp
Z2h0KCJmb290ZXI0IiknLCAnImJvbGQiJyk7CitzaG91bGRCZSgnZ2V0V2VpZ2h0KCJzcGFuMSIp
JywgJyJib2xkIicpOworZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXN0UGFyZW50KTsKKwor
ZGVidWcoJ0Zvcm1hdEJsb2NrOicpOwordmFyIGVkaXRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CitlZGl0YWJsZS5pbm5lckhUTUwgPSAnWzxzcGFuIGlkPSJzcGFuMiI+VGhl
IHRleHQgd2lsbCBiZSBhIGNoaWxkIG9mICZsdDtmb290ZXI+Ljwvc3Bhbj5dJzsKK2RvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZWRpdGFibGUpOworZWRpdGFibGUuY29udGVudEVkaXRhYmxlID0g
dHJ1ZTsKK3ZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CitzZWxlY3Rpb24u
c2VsZWN0QWxsQ2hpbGRyZW4oZWRpdGFibGUpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0Zvcm1h
dEJsb2NrJywgZmFsc2UsICdmb290ZXInKTsKK3NlbGVjdGlvbi5jb2xsYXBzZSgpOworc2hvdWxk
QmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuMiIpLnBhcmVudE5vZGUubm9kZU5hbWUn
LCAnIkZPT1RFUiInKTsKK2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWRpdGFibGUpOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9oZWFkZXItZWxlbWVudC5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvaHRtbC9zY3JpcHQtdGVzdHMvaGVhZGVyLWVsZW1lbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMjQ1YjVmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvaGVhZGVyLWVsZW1lbnQuanMKQEAgLTAsMCArMSw0NiBA
QAorZGVzY3JpcHRpb24oJ1ZhcmlvdXMgdGVzdHMgZm9yIHRoZSBoZWFkZXIgZWxlbWVudC4nKTsK
KwordmFyIHRlc3RQYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdFBhcmVudCk7CisKK2RlYnVnKCcmbHQ7aGVhZGVyPiBj
bG9zZXMgJmx0O3A+OicpOwordGVzdFBhcmVudC5pbm5lckhUTUwgPSAnPHA+VGVzdCB0aGF0IDxo
ZWFkZXIgaWQ9ImhlYWRlcjEiPmEgaGVhZGVyIGVsZW1lbnQ8L25hdj4gY2xvc2VzICZsdDtwPi48
L3A+JzsKK3ZhciBoZWFkZXIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlYWRlcjEnKTsK
K3Nob3VsZEJlRmFsc2UoJ2hlYWRlcjEucGFyZW50Tm9kZS5ub2RlTmFtZSA9PSAicCInKTsKKwor
ZGVidWcoJyZsdDtwPiBkb2VzIG5vdCBjbG9zZSAmbHQ7aGVhZGVyPjonKTsKK3Rlc3RQYXJlbnQu
aW5uZXJIVE1MID0gJzxoZWFkZXI+VGVzdCB0aGF0IDxwIGlkPSJwMSI+YSBwIGVsZW1lbnQ8L3A+
IGRvZXMgbm90IGNsb3NlIGEgaGVhZGVyIGVsZW1lbnQuPC9oZWFkZXI+JzsKK3ZhciBwMSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwMScpOworc2hvdWxkQmUoJ3AxLnBhcmVudE5vZGUubm9k
ZU5hbWUnLCAnIkhFQURFUiInKTsKKworZGVidWcoJyZsdDtoZWFkZXI+IGNhbiBiZSBuZXN0ZWQg
aW5zaWRlICZsdDtoZWFkZXI+IG9yICZsdDtmb290ZXI+OicpOwordGVzdFBhcmVudC5pbm5lckhU
TUwgPSAnPGhlYWRlciBpZD0iaGVhZGVyMiI+VGVzdCB0aGF0IDxoZWFkZXIgaWQ9ImhlYWRlcjMi
PmEgaGVhZGVyIGVsZW1lbnQ8L2hlYWRlcj4gY2FuIGJlIG5lc3RlZCBpbnNpZGUgYW5vdGhlciBo
ZWFkZXIgZWxlbWVudC48L2hlYWRlcj4nOwordmFyIGhlYWRlcjMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaGVhZGVyMycpOworc2hvdWxkQmUoJ2hlYWRlcjMucGFyZW50Tm9kZS5pZCcsICci
aGVhZGVyMiInKTsKK3Rlc3RQYXJlbnQuaW5uZXJIVE1MID0gJzxmb290ZXIgaWQ9ImZvb3RlcjEi
PlRlc3QgdGhhdCA8aGVhZGVyIGlkPSJoZWFkZXI1Ij5hIGhlYWRlciBlbGVtZW50PC9oZWFkZXI+
IGNhbiBiZSBuZXN0ZWQgaW5zaWRlIGEgZm9vdGVyIGVsZW1lbnQuPC9mb290ZXI+JzsKK3ZhciBo
ZWFkZXI1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlYWRlcjUnKTsKK3Nob3VsZEJlKCdo
ZWFkZXI1LnBhcmVudE5vZGUuaWQnLCAnImZvb3RlcjEiJyk7CisKK2RlYnVnKCdSZXNpZHVhbCBz
dHlsZTonKTsKK3Rlc3RQYXJlbnQuaW5uZXJIVE1MID0gJzxiPjxoZWFkZXIgaWQ9ImhlYWRlcjQi
PlRoaXMgdGV4dCBzaG91bGQgYmUgYm9sZC48L2hlYWRlcj4gPHNwYW4gaWQ9InNwYW4xIj5UaGlz
IGlzIGFsc28gYm9sZC48L3NwYW4+PC9iPic7CitmdW5jdGlvbiBnZXRXZWlnaHQoaWQpIHsKKyAg
ICByZXR1cm4gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChpZCksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtd2VpZ2h0Jyk7
Cit9CitzaG91bGRCZSgnZ2V0V2VpZ2h0KCJoZWFkZXI0IiknLCAnImJvbGQiJyk7CitzaG91bGRC
ZSgnZ2V0V2VpZ2h0KCJzcGFuMSIpJywgJyJib2xkIicpOworZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZCh0ZXN0UGFyZW50KTsKKworZGVidWcoJ0Zvcm1hdEJsb2NrOicpOwordmFyIGVkaXRhYmxl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitlZGl0YWJsZS5pbm5lckhUTUwgPSAn
WzxzcGFuIGlkPSJzcGFuMiI+VGhlIHRleHQgd2lsbCBiZSBhIGNoaWxkIG9mICZsdDtoZWFkZXI+
Ljwvc3Bhbj5dJzsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWRpdGFibGUpOworZWRpdGFi
bGUuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKK3ZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CitzZWxlY3Rpb24uc2VsZWN0QWxsQ2hpbGRyZW4oZWRpdGFibGUpOworZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ0Zvcm1hdEJsb2NrJywgZmFsc2UsICdoZWFkZXInKTsKK3NlbGVjdGlv
bi5jb2xsYXBzZSgpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuMiIp
LnBhcmVudE5vZGUubm9kZU5hbWUnLCAnIkhFQURFUiInKTsKK2RvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZWRpdGFibGUpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNTgy
ZGU4Li4wOTY4ZjMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDA5LTEyLTMwICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnQgSFRNTDUgPGhlYWRlcj4gYW5kIDxmb290ZXI+IGVsZW1lbnRz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI5NDMK
KworICAgICAgICA8aGVhZGVyPiBhbmQgPGZvb3Rlcj4gc2hvdWxkIGJlaGF2ZSB0aGUgc2FtZSBh
cyA8bmF2PiwgPHNlY3Rpb24+LAorICAgICAgICA8YXJ0aWNsZT4sIGFuZCA8YXNpZGU+LiBUaGUg
SFRNTCBwYXJzZXIgZG9lc24ndCBuZWVkIHRvIHJlc3RyaWN0CisgICAgICAgIHRoZSBuZXN0aW5n
IG9mIGhlYWRlci9mb290ZXIgZWxlbWVudHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvaHRtbC9m
b290ZXItZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2h0bWwvaGVhZGVyLWVsZW1l
bnQuaHRtbAorCisgICAgICAgICogY3NzL2h0bWwuY3NzOiBBZGQgaGVhZGVyL2Zvb3RlciBhcyBi
bG9jayBlbGVtZW50cy4KKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnZhbGlkQmxvY2tUYWcpOiBBZGQgaGVhZGVyVGFnIGFuZCBmb290ZXJUYWcu
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6dGFnUHJpb3JpdHkpOiBSZXR1cm5zIDUgZm9yIGhlYWRlclRhZyBhbmQgZm9vdGVy
VGFnLgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tUYWdMaXN0KTogQWRkIGhlYWRlclRhZyBhbmQg
Zm9vdGVyVGFnLgorICAgICAgICAqIGh0bWwvSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGFyc2VyOjpoYW5kbGVFcnJvcik6IFJlbmFtZSBpc0hlYWRlclRhZygpIHRvIGlz
SGVhZGluZ1RhZygpCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyOjpnZXROb2RlKTogQWRk
IGhlYWRlclRhZyBhbmQgZm9vdGVyVGFnLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlcjo6
aXNIZWFkaW5nVGFnKTogUmVuYW1lZCBmcm9tIGlzSGVhZGVyVGFnKCkuCisgICAgICAgICogaHRt
bC9IVE1MUGFyc2VyLmg6CisgICAgICAgICAgLSBSZW5hbWUgaXNIZWFkZXJUYWcoKSB0byBpc0hl
YWRpbmdUYWcoKQorICAgICAgICAgIC0gUmVtb3ZlIG5vbi1leGlzdGluZyBwb3BOZXN0ZWRIZWFk
ZXJUYWcoKS4KKyAgICAgICAgKiBodG1sL0hUTUxUYWdOYW1lcy5pbjogQWRkIGhlYWRlciBhbmQg
Zm9vdGVyLgorCiAyMDA5LTEyLTI5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRleCA0ZTZi
ZGQ2Li45MTNkYmU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9XZWJD
b3JlL2Nzcy9odG1sLmNzcwpAQCAtNzIsNyArNzIsNyBAQCBsYXllciB7CiAgICAgZGlzcGxheTog
YmxvY2sKIH0KIAotYXJ0aWNsZSwgYXNpZGUsIG5hdiwgc2VjdGlvbiB7CithcnRpY2xlLCBhc2lk
ZSwgZm9vdGVyLCBoZWFkZXIsIG5hdiwgc2VjdGlvbiB7CiAgICAgZGlzcGxheTogYmxvY2sKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggYjJlNjdjMy4uNDYzMTVmNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwCkBAIC00ODEsMTIgKzQ4MSwxNCBAQCBib29sIHZhbGlkQmxvY2tUYWco
Y29uc3QgQXRvbWljU3RyaW5nJiBibG9ja1RhZykKICAgICAgICAgYmxvY2tUYWdzLmFkZChkaXZU
YWcubG9jYWxOYW1lKCkpOwogICAgICAgICBibG9ja1RhZ3MuYWRkKGRsVGFnLmxvY2FsTmFtZSgp
KTsKICAgICAgICAgYmxvY2tUYWdzLmFkZChkdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIGJs
b2NrVGFncy5hZGQoZm9vdGVyVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgYmxvY2tUYWdzLmFk
ZChoMVRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgIGJsb2NrVGFncy5hZGQoaDJUYWcubG9jYWxO
YW1lKCkpOwogICAgICAgICBibG9ja1RhZ3MuYWRkKGgzVGFnLmxvY2FsTmFtZSgpKTsKICAgICAg
ICAgYmxvY2tUYWdzLmFkZChoNFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgIGJsb2NrVGFncy5h
ZGQoaDVUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICBibG9ja1RhZ3MuYWRkKGg2VGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgYmxvY2tUYWdzLmFkZChoZWFkZXJUYWcubG9jYWxOYW1lKCkpOwog
ICAgICAgICBibG9ja1RhZ3MuYWRkKG5hdlRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgIGJsb2Nr
VGFncy5hZGQocFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgIGJsb2NrVGFncy5hZGQocHJlVGFn
LmxvY2FsTmFtZSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDQxZjNhNDMuLmZmYTBlZWEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcApAQCAtODgsNyArODgsNyBAQCBpbnQgSFRNTEVsZW1lbnQ6OnRhZ1By
aW9yaXR5KCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGhhc0xvY2FsTmFtZShh
ZGRyZXNzVGFnKSB8fCBoYXNMb2NhbE5hbWUoZGRUYWcpIHx8IGhhc0xvY2FsTmFtZShkdFRhZykg
fHwgaGFzTG9jYWxOYW1lKG5vc2NyaXB0VGFnKSB8fCBoYXNMb2NhbE5hbWUocnBUYWcpIHx8IGhh
c0xvY2FsTmFtZShydFRhZykpCiAgICAgICAgIHJldHVybiAzOwotICAgIGlmIChoYXNMb2NhbE5h
bWUoYXJ0aWNsZVRhZykgfHwgaGFzTG9jYWxOYW1lKGFzaWRlVGFnKSB8fCBoYXNMb2NhbE5hbWUo
Y2VudGVyVGFnKSB8fCBoYXNMb2NhbE5hbWUobm9iclRhZykgfHwgaGFzTG9jYWxOYW1lKHJ1YnlU
YWcpIHx8IGhhc0xvY2FsTmFtZShuYXZUYWcpIHx8IGhhc0xvY2FsTmFtZShzZWN0aW9uVGFnKSkK
KyAgICBpZiAoaGFzTG9jYWxOYW1lKGFydGljbGVUYWcpIHx8IGhhc0xvY2FsTmFtZShhc2lkZVRh
ZykgfHwgaGFzTG9jYWxOYW1lKGNlbnRlclRhZykgfHwgaGFzTG9jYWxOYW1lKGZvb3RlclRhZykg
fHwgaGFzTG9jYWxOYW1lKGhlYWRlclRhZykgfHwgaGFzTG9jYWxOYW1lKG5vYnJUYWcpIHx8IGhh
c0xvY2FsTmFtZShydWJ5VGFnKSB8fCBoYXNMb2NhbE5hbWUobmF2VGFnKSB8fCBoYXNMb2NhbE5h
bWUoc2VjdGlvblRhZykpCiAgICAgICAgIHJldHVybiA1OyAvLyBTYW1lIGFzIDxkaXY+LgogICAg
IGlmIChoYXNMb2NhbE5hbWUobm9lbWJlZFRhZykgfHwgaGFzTG9jYWxOYW1lKG5vZnJhbWVzVGFn
KSkKICAgICAgICAgcmV0dXJuIDEwOwpAQCAtODc0LDYgKzg3NCw3IEBAIHN0YXRpYyBIYXNoU2V0
PEF0b21pY1N0cmluZ0ltcGwqPiogYmxvY2tUYWdMaXN0KCkKICAgICAgICAgdGFnTGlzdC5hZGQo
ZGxUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgdGFnTGlzdC5hZGQoZHRUYWcubG9j
YWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgdGFnTGlzdC5hZGQoZmllbGRzZXRUYWcubG9jYWxO
YW1lKCkuaW1wbCgpKTsKKyAgICAgICAgdGFnTGlzdC5hZGQoZm9vdGVyVGFnLmxvY2FsTmFtZSgp
LmltcGwoKSk7CiAgICAgICAgIHRhZ0xpc3QuYWRkKGZvcm1UYWcubG9jYWxOYW1lKCkuaW1wbCgp
KTsKICAgICAgICAgdGFnTGlzdC5hZGQoaDFUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAg
ICAgdGFnTGlzdC5hZGQoaDJUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKQEAgLTg4MSw2ICs4ODIs
NyBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGJsb2NrVGFnTGlzdCgpCiAg
ICAgICAgIHRhZ0xpc3QuYWRkKGg0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIHRh
Z0xpc3QuYWRkKGg1VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIHRhZ0xpc3QuYWRk
KGg2VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHRhZ0xpc3QuYWRkKGhlYWRlclRh
Zy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAgICB0YWdMaXN0LmFkZChoclRhZy5sb2NhbE5h
bWUoKS5pbXBsKCkpOwogICAgICAgICB0YWdMaXN0LmFkZChpc2luZGV4VGFnLmxvY2FsTmFtZSgp
LmltcGwoKSk7CiAgICAgICAgIHRhZ0xpc3QuYWRkKGxheWVyVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTFBhcnNlci5jcHAKaW5kZXggOTk5M2I3YS4uMDZjNjVjNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNw
cApAQCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6aGFuZGxlRXJyb3IoTm9kZSog
biwgYm9vbCBmbGF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwKICAgICAgICAgICAg
IHJlcG9ydEVycm9yKE1pc3BsYWNlZENvbnRlbnRSZXRyeUVycm9yLCAmbG9jYWxOYW1lLCAmY3Vy
cmVudFRhZ05hbWUpOwogICAgICAgICAgICAgcG9wQmxvY2sob2JqZWN0VGFnKTsKICAgICAgICAg
ICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGgtPmhhc0xvY2FsTmFtZShw
VGFnKSB8fCBpc0hlYWRlclRhZyhjdXJyZW50VGFnTmFtZSkpIHsKKyAgICAgICAgfSBlbHNlIGlm
IChoLT5oYXNMb2NhbE5hbWUocFRhZykgfHwgaXNIZWFkaW5nVGFnKGN1cnJlbnRUYWdOYW1lKSkg
ewogICAgICAgICAgICAgaWYgKCFpc0lubGluZShuKSkgewogICAgICAgICAgICAgICAgIHBvcEJs
b2NrKGN1cnJlbnRUYWdOYW1lKTsKICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKQEAg
LTkyNCw2ICs5MjQsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IEhUTUxQYXJzZXI6OmdldE5vZGUoVG9r
ZW4qIHQpCiAgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoZHRUYWcubG9jYWxOYW1lKCkuaW1wbCgp
LCAmSFRNTFBhcnNlcjo6ZHRDcmVhdGVFcnJvckNoZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFw
LnNldChmb3JtVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OmZvcm1DcmVhdGVF
cnJvckNoZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChmaWVsZHNldFRhZy5sb2NhbE5h
bWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7CisgICAg
ICAgIGdGdW5jdGlvbk1hcC5zZXQoZm9vdGVyVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQ
YXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNl
dChmcmFtZXNldFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpmcmFtZXNldENy
ZWF0ZUVycm9yQ2hlY2spOwogICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGgxVGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKICAgICAg
ICAgZ0Z1bmN0aW9uTWFwLnNldChoMlRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2Vy
OjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7CkBAIC05MzIsNiArOTMzLDcgQEAgUGFzc1JlZlB0
cjxOb2RlPiBIVE1MUGFyc2VyOjpnZXROb2RlKFRva2VuKiB0KQogICAgICAgICBnRnVuY3Rpb25N
YXAuc2V0KGg1VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVh
dGVFcnJvckNoZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChoNlRhZy5sb2NhbE5hbWUo
KS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7CiAgICAgICAg
IGdGdW5jdGlvbk1hcC5zZXQoaGVhZFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2Vy
OjpoZWFkQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoaGVhZGVy
VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNo
ZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChoclRhZy5sb2NhbE5hbWUoKS5pbXBsKCks
ICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7CiAgICAgICAgIGdGdW5jdGlv
bk1hcC5zZXQoaVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRTdHls
ZUNyZWF0ZUVycm9yQ2hlY2spOwogICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGlzaW5kZXhUYWcu
bG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6aXNpbmRleENyZWF0ZUVycm9yQ2hlY2sp
OwpAQCAtMTAxOSwxOSArMTAyMSwxOSBAQCB2b2lkIEhUTUxQYXJzZXI6OnByb2Nlc3NDbG9zZVRh
ZyhUb2tlbiogdCkKICAgICB9CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6aXNIZWFkZXJUYWcoY29u
c3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQorYm9vbCBIVE1MUGFyc2VyOjppc0hlYWRpbmdUYWco
Y29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIGhlYWRlclRhZ3MsICgpKTsKLSAgICBpZiAoaGVh
ZGVyVGFncy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaGVhZGVyVGFncy5hZGQoaDFUYWcubG9jYWxO
YW1lKCkuaW1wbCgpKTsKLSAgICAgICAgaGVhZGVyVGFncy5hZGQoaDJUYWcubG9jYWxOYW1lKCku
aW1wbCgpKTsKLSAgICAgICAgaGVhZGVyVGFncy5hZGQoaDNUYWcubG9jYWxOYW1lKCkuaW1wbCgp
KTsKLSAgICAgICAgaGVhZGVyVGFncy5hZGQoaDRUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAg
ICAgICAgaGVhZGVyVGFncy5hZGQoaDVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAg
aGVhZGVyVGFncy5hZGQoaDZUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+LCBoZWFkaW5nVGFncywgKCkpOwor
ICAgIGlmIChoZWFkaW5nVGFncy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaGVhZGluZ1RhZ3MuYWRk
KGgxVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIGhlYWRpbmdUYWdzLmFkZChoMlRh
Zy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBoZWFkaW5nVGFncy5hZGQoaDNUYWcubG9j
YWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgaGVhZGluZ1RhZ3MuYWRkKGg0VGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSk7CisgICAgICAgIGhlYWRpbmdUYWdzLmFkZChoNVRhZy5sb2NhbE5hbWUoKS5p
bXBsKCkpOworICAgICAgICBoZWFkaW5nVGFncy5hZGQoaDZUYWcubG9jYWxOYW1lKCkuaW1wbCgp
KTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGhlYWRlclRhZ3MuY29udGFpbnModGFnTmFtZS5p
bXBsKCkpOworICAgIHJldHVybiBoZWFkaW5nVGFncy5jb250YWlucyh0YWdOYW1lLmltcGwoKSk7
CiB9CiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNJbmxpbmUoTm9kZSogbm9kZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmggYi9XZWJDb3JlL2h0bWwvSFRNTFBhcnNl
ci5oCmluZGV4IGYwN2I2NGIuLmU2NjcyNDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuaApAQCAtMTM2LDggKzEzNiw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGFsbG93TmVzdGVkUmVkdW5kYW50VGFnKGNvbnN0IEF0
b21pY1N0cmluZyYgdGFnTmFtZSk7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgaXNIZWFkZXJUYWco
Y29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKTsKLSAgICB2b2lkIHBvcE5lc3RlZEhlYWRlclRh
ZygpOworICAgIHN0YXRpYyBib29sIGlzSGVhZGluZ1RhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRh
Z05hbWUpOwogCiAgICAgYm9vbCBpc0lubGluZShOb2RlKikgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxUYWdO
YW1lcy5pbgppbmRleCBmNzAwN2U5Li4xYjc3YzVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTFRhZ05hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KQEAgLTQz
LDYgKzQzLDcgQEAgZW0gaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogZW1iZWQKIGZpZWxkc2V0
IGludGVyZmFjZU5hbWU9SFRNTEZpZWxkU2V0RWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0Zvcm1F
bGVtZW50LCBjcmVhdGVXaXRoTmV3CiBmb250IGNyZWF0ZVdpdGhOZXcKK2Zvb3RlciBpbnRlcmZh
Y2VOYW1lPUhUTUxFbGVtZW50CiBmb3JtIGNyZWF0ZVdpdGhOZXcKIGZyYW1lCiBmcmFtZXNldCBp
bnRlcmZhY2VOYW1lPUhUTUxGcmFtZVNldEVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKQEAgLTUzLDYg
KzU0LDcgQEAgaDQgaW50ZXJmYWNlTmFtZT1IVE1MSGVhZGluZ0VsZW1lbnQsIGNyZWF0ZVdpdGhO
ZXcKIGg1IGludGVyZmFjZU5hbWU9SFRNTEhlYWRpbmdFbGVtZW50LCBjcmVhdGVXaXRoTmV3CiBo
NiBpbnRlcmZhY2VOYW1lPUhUTUxIZWFkaW5nRWxlbWVudCwgY3JlYXRlV2l0aE5ldwogaGVhZCBj
cmVhdGVXaXRoTmV3CitoZWFkZXIgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogaHIgaW50ZXJm
YWNlTmFtZT1IVE1MSFJFbGVtZW50LCBjcmVhdGVXaXRoTmV3CiBodG1sIGNyZWF0ZVdpdGhOZXcK
IGkgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAotLSAKMS42LjMuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>