<?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>47712</bug_id>
          
          <creation_ts>2010-10-14 23:04:27 -0700</creation_ts>
          <short_desc>Match the elements supported by execCommand(&apos;formatBlock&apos;) and queryCommandValue(&apos;formatBlock&apos;)</short_desc>
          <delta_ts>2010-10-15 13:53:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>19795</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>294589</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-14 23:04:27 -0700</bug_when>
    <thetext>isElementForFormatBlockCommand and FormatBlockCommand::isElementToApplyInFormatBlockCommand both determine elements used in FormatBlockCommand.  We should merge these two functions into one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294812</commentid>
    <comment_count>1</comment_count>
      <attachid>70883</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-15 10:52:03 -0700</bug_when>
    <thetext>Created attachment 70883
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294818</commentid>
    <comment_count>2</comment_count>
      <attachid>70883</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-15 11:05:01 -0700</bug_when>
    <thetext>Comment on attachment 70883
fixes the bug

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

If the behavior here is not changing, I suggest landing the new test first, then the code change. But if the behavior is changing, then it’s great to land them together.

I read this over and over again and could not figure out if the change log was saying this was refactoring only or a bug fix. If it’s a bug fix, then the wording should emphasize the behavior change and then go on to mention the code structure, rather than describing it the other way around.

The test here includes covers the things that we do support, but what about things we do not support? I would be just as interested in seeing at least some of those test cases too.

&gt; WebCore/editing/FormatBlockCommand.cpp:42
&gt; +inline bool isElementForFormatBlock(Node* node) { return node-&gt;isElementNode() &amp;&amp; isElementForFormatBlock(static_cast&lt;Element*&gt;(node)-&gt;tagQName()); }

Since this function is inside a .cpp file it should be marked static, so it gets internal linkage.

Also, I don’t think this deserves the “all on one line” format. lets use the more typical format.

&gt; WebCore/editing/FormatBlockCommand.cpp:107
&gt;  // FIXME: We should consider merging this function with isElementForFormatBlockCommand in Editor.cpp

You forgot to remove this FIXME.

&gt; WebCore/editing/FormatBlockCommand.h:43
&gt; +    bool didApply() const { return m_didApply; }
&gt;  private:

Our usual style is to leave a blank line before private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294846</commentid>
    <comment_count>3</comment_count>
      <attachid>70886</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-15 11:59:40 -0700</bug_when>
    <thetext>Created attachment 70886
fixed per Darin&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294910</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-15 13:53:59 -0700</bug_when>
    <thetext>Committed r69876: &lt;http://trac.webkit.org/changeset/69876&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70883</attachid>
            <date>2010-10-15 10:52:03 -0700</date>
            <delta_ts>2010-10-15 11:59:36 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-47712-20101015105202.patch</filename>
            <type>text/plain</type>
            <size>18934</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTg2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMTAtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVy
Z2UgaXNFbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kIGFuZCBGb3JtYXRCbG9ja0NvbW1hbmQ6
OmlzRWxlbWVudFRvQXBwbHlJbkZvcm1hdEJsb2NrQ29tbWFuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTIKKworICAgICAgICBNZXJnZWQgaXNF
bGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kIGluIEVkaXRvci5jcHAgYW5kIEZvcm1hdEJsb2Nr
Q29tbWFuZDo6aXNFbGVtZW50VG9BcHBseUluRm9ybWF0QmxvY2tDb21tYW5kLgorICAgICAgICBG
b3IgY29tcGF0aWJpbGl0eSByZWFzb24sIHF1ZXJ5Q29tbWFuZFZhbHVlKCdmb3JtYXRCbG9jaycs
IGZhbHNlLCBudWxsKSB3YXMgZXh0ZW5kZWQgdG8gc3VwcG9ydCBhcnRpY2xlLCBhc2lkZSwKKyAg
ICAgICAgYmxvY2txdW90ZSwgZGQsIGRsLCBkaXYsIGRsLCBkdCwgZGwsIGZvb3RlciwgaGVhZGVy
LCBoZ3JvdXAsIG5hdiwgYW5kIHNlY3Rpb24uCisKKyAgICAgICAgVGVzdHMgYXJlIGFkZGVkIHRv
IGVkaXRpbmcvZXhlY0NvbW1hbmQvcXVlcnktZm9ybWF0LWJsb2NrLmh0bWwKKworICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDogUmVtb3ZlZCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9ja0NvbW1h
bmQgYW5kIEVkaXRvcjo6ZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZC4KKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9ybWF0QmxvY2spOiBSZW1vdmVkIHRoZSBjaGVjayBv
ZiB0YWcgbmFtZTsgdGhlIGNoZWNrIGlzIG1vdmVkIGludG8gRm9ybWF0QmxvY2tDb21tYW5kLgor
ICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JtYXRCbG9jayk6IENhbGxzIEZvcm1hdEJsb2NrQ29t
bWFuZDo6ZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZC4KKyAgICAgICAgKiBlZGl0aW5nL0Zv
cm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRGb3JGb3Jt
YXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9ja0NvbW1hbmQ6OkZvcm1hdEJs
b2NrQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1h
dFNlbGVjdGlvbik6IEFkZGVkIHRvIGNoZWNrIHRoZSB0YWcgbmFtZS4gRXhpdCBlYXJseSBpZiB0
aGUgc3BlY2lmaWVkIHRhZyBuYW1lCisgICAgICAgIGlzIG5vdCB3aGF0IEZvcm1hdEJsb2NrIHNo
b3VsZCBhcHBseS4gU2V0IG1fZGlkQXBwbHkgdHJ1ZSBpZiBtX2RpZEFwcGx5IGRpZCBhcHBseSB0
aGUgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1hdEJsb2NrQ29tbWFuZDo6Zm9ybWF0
UmFuZ2UpOiBNb3ZlZCBmcm9tIEVkaXRvci5jcHAuICBUYWtlcyBSYW5nZSogaW5zdGVhZCBvZiBh
Y2Nlc3Npbmcgc2VsZWN0aW9uIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0Qmxv
Y2tDb21tYW5kOjplbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKTogTW92ZWQgZnJvbSBFZGl0
b3IuY3BwCisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdCbG9ja1RvU3BsaXRUcmVlVG8pOiBD
YWxscyBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jay4KKyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJs
b2NrQ29tbWFuZC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0QmxvY2tDb21tYW5kOjpkaWRB
cHBseSk6IEFkZGVkLgorCiAyMDEwLTEwLTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCShyZXZpc2lvbiA2OTg0MCkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NzAsMzcgKzk3MCw2IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlv
blN0YXJ0Q1NTUHJvcGVydHkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBib29sIGlz
RWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZChjb25zdCBOb2RlKiBub2RlKQotewotICAgIHJl
dHVybiBub2RlLT5oYXNUYWdOYW1lKGFkZHJlc3NUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1Rh
Z05hbWUoaDFUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaDJUYWcpCi0gICAgICAg
IHx8IG5vZGUtPmhhc1RhZ05hbWUoaDNUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUo
aDRUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaDVUYWcpCi0gICAgICAgIHx8IG5v
ZGUtPmhhc1RhZ05hbWUoaDZUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUocFRhZykK
LSAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShwcmVUYWcpOwotfQotCi1FbGVtZW50KiBFZGl0
b3I6OmVsZW1lbnRGb3JGb3JtYXRCbG9ja0NvbW1hbmQoKSBjb25zdAotewotICAgIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rp
b24oKTsKLSAgICBpZiAoIXNlbGVjdGlvbi5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkgfHwg
IXNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSBzZWxlY3Rpb24u
Zmlyc3RSYW5nZSgpLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihlYyk7Ci0gICAgd2hpbGUgKGNv
bW1vbkFuY2VzdG9yICYmICFpc0VsZW1lbnRGb3JGb3JtYXRCbG9ja0NvbW1hbmQoY29tbW9uQW5j
ZXN0b3IpKQotICAgICAgICBjb21tb25BbmNlc3RvciA9IGNvbW1vbkFuY2VzdG9yLT5wYXJlbnRO
b2RlKCk7Ci0KLSAgICBpZiAoIWNvbW1vbkFuY2VzdG9yKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIEFTU0VSVChjb21tb25BbmNlc3Rvci0+aXNFbGVtZW50Tm9kZSgpKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KGNvbW1vbkFuY2VzdG9yKTsKLX0KLQogdm9pZCBFZGl0b3I6
OmluZGVudCgpCiB7CiAgICAgYXBwbHlDb21tYW5kKEluZGVudE91dGRlbnRDb21tYW5kOjpjcmVh
dGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgSW5kZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudCkpOwpJ
bmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAkocmV2aXNpb24gNjk4NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNiBAQCBwdWJsaWM6CiAKICAgICBUcmlT
dGF0ZSBzZWxlY3Rpb25IYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKikgY29uc3Q7CiAgICAg
U3RyaW5nIHNlbGVjdGlvblN0YXJ0Q1NTUHJvcGVydHlWYWx1ZShpbnQgcHJvcGVydHlJRCk7Ci0g
ICAgRWxlbWVudCogZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZCgpIGNvbnN0OwogICAgIGNv
bnN0IFNpbXBsZUZvbnREYXRhKiBmb250Rm9yU2VsZWN0aW9uKGJvb2wmKSBjb25zdDsKICAgICBX
cml0aW5nRGlyZWN0aW9uIHRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oYm9vbCYpIGNvbnN0Owog
ICAgIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gNjk4NDApCisr
KyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
OSwxMSArNDM5LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcm1hdEJsb2NrKEZyYW1lKiBmcgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUXVhbGlmaWVkTmFtZSBxdWFsaWZpZWRUYWdOYW1l
KHByZWZpeCwgbG9jYWxOYW1lLCB4aHRtbE5hbWVzcGFjZVVSSSk7CiAKLSAgICBpZiAoIUZvcm1h
dEJsb2NrQ29tbWFuZDo6aXNFbGVtZW50VG9BcHBseUluRm9ybWF0QmxvY2tDb21tYW5kKHF1YWxp
ZmllZFRhZ05hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhcHBseUNvbW1hbmQo
Rm9ybWF0QmxvY2tDb21tYW5kOjpjcmVhdGUoZnJhbWUtPmRvY3VtZW50KCksIHF1YWxpZmllZFRh
Z05hbWUpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBSZWZQdHI8Rm9ybWF0QmxvY2tDb21tYW5k
PiBjb21tYW5kID0gRm9ybWF0QmxvY2tDb21tYW5kOjpjcmVhdGUoZnJhbWUtPmRvY3VtZW50KCks
IHF1YWxpZmllZFRhZ05hbWUpOworICAgIGFwcGx5Q29tbWFuZChjb21tYW5kKTsKKyAgICByZXR1
cm4gY29tbWFuZC0+ZGlkQXBwbHkoKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmRE
ZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBj
b25zdCBTdHJpbmcmKQpAQCAtMTM2MSw3ICsxMzU5LDEwIEBAIHN0YXRpYyBTdHJpbmcgdmFsdWVG
b3JlQ29sb3IoRnJhbWUqIGZyYW0KIAogc3RhdGljIFN0cmluZyB2YWx1ZUZvcm1hdEJsb2NrKEZy
YW1lKiBmcmFtZSwgRXZlbnQqKQogewotICAgIEVsZW1lbnQqIGZvcm1hdEJsb2NrRWxlbWVudCA9
IGZyYW1lLT5lZGl0b3IoKS0+ZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZCgpOworICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c2Vs
ZWN0aW9uKCk7CisgICAgaWYgKCFzZWxlY3Rpb24uaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgp
IHx8ICFzZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuICIiOwor
ICAgIEVsZW1lbnQqIGZvcm1hdEJsb2NrRWxlbWVudCA9IEZvcm1hdEJsb2NrQ29tbWFuZDo6ZWxl
bWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZChzZWxlY3Rpb24uZmlyc3RSYW5nZSgpLmdldCgpKTsK
ICAgICBpZiAoIWZvcm1hdEJsb2NrRWxlbWVudCkKICAgICAgICAgcmV0dXJuICIiOwogICAgIHJl
dHVybiBmb3JtYXRCbG9ja0VsZW1lbnQtPmxvY2FsTmFtZSgpOwpJbmRleDogV2ViQ29yZS9lZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDY5ODQwKQorKysgV2ViQ29yZS9lZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJ2aXNp
YmxlX3VuaXRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDEyICszOCwyMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMg
Tm9kZSogZW5jbG9zaW5nQmxvY2tUb1NwbGl0VHJlZVRvKE5vZGUqIHN0YXJ0Tm9kZSk7CitzdGF0
aWMgYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lKTsKK2lubGluZSBib29sIGlzRWxlbWVudEZvckZvcm1hdEJsb2NrKE5vZGUqIG5vZGUpIHsg
cmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPnRhZ1FOYW1lKCkpOyB9CiAKIEZvcm1hdEJsb2Nr
Q29tbWFuZDo6Rm9ybWF0QmxvY2tDb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSkgCiAgICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQoZG9j
dW1lbnQsIHRhZ05hbWUpCisgICAgLCBtX2RpZEFwcGx5KGZhbHNlKQogewogfQogCit2b2lkIEZv
cm1hdEJsb2NrQ29tbWFuZDo6Zm9ybWF0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
c3RhcnRPZlNlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZlNlbGVjdGlvbikK
K3sKKyAgICBpZiAoIWlzRWxlbWVudEZvckZvcm1hdEJsb2NrKHRhZ05hbWUoKSkpCisgICAgICAg
IHJldHVybjsKKyAgICBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQ6OmZvcm1hdFNlbGVjdGlvbihz
dGFydE9mU2VsZWN0aW9uLCBlbmRPZlNlbGVjdGlvbik7CisgICAgbV9kaWRBcHBseSA9IHRydWU7
Cit9CisKIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZShjb25zdCBQb3NpdGlv
biYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsIFJlZlB0cjxFbGVtZW50PiYgYmxvY2tOb2Rl
KQogewogICAgIE5vZGUqIG5vZGVUb1NwbGl0VG8gPSBlbmNsb3NpbmdCbG9ja1RvU3BsaXRUcmVl
VG8oc3RhcnQubm9kZSgpKTsKQEAgLTUxLDcgKzYzLDcgQEAgdm9pZCBGb3JtYXRCbG9ja0NvbW1h
bmQ6OmZvcm1hdFJhbmdlKGNvbgogCiAgICAgRWxlbWVudCogcmVmTm9kZSA9IGVuY2xvc2luZ0Js
b2NrRmxvd0VsZW1lbnQoZW5kKTsKICAgICBFbGVtZW50KiByb290ID0gZWRpdGFibGVSb290Rm9y
UG9zaXRpb24oc3RhcnQpOwotICAgIGlmIChpc0VsZW1lbnRUb0FwcGx5SW5Gb3JtYXRCbG9ja0Nv
bW1hbmQocmVmTm9kZS0+dGFnUU5hbWUoKSkgJiYgc3RhcnQgPT0gc3RhcnRPZkJsb2NrKHN0YXJ0
KSAmJiBlbmQgPT0gZW5kT2ZCbG9jayhlbmQpCisgICAgaWYgKGlzRWxlbWVudEZvckZvcm1hdEJs
b2NrKHJlZk5vZGUtPnRhZ1FOYW1lKCkpICYmIHN0YXJ0ID09IHN0YXJ0T2ZCbG9jayhzdGFydCkg
JiYgZW5kID09IGVuZE9mQmxvY2soZW5kKQogICAgICAgICAmJiByZWZOb2RlICE9IHJvb3QgJiYg
IXJvb3QtPmlzRGVzY2VuZGFudE9mKHJlZk5vZGUpKSB7CiAgICAgICAgIC8vIEFscmVhZHkgaW4g
YSBibG9jayBlbGVtZW50IHRoYXQgb25seSBjb250YWlucyB0aGUgY3VycmVudCBwYXJhZ3JhcGgK
ICAgICAgICAgaWYgKHJlZk5vZGUtPmhhc1RhZ05hbWUodGFnTmFtZSgpKSkKQEAgLTc0LDEwICs4
NiwyNyBAQCB2b2lkIEZvcm1hdEJsb2NrQ29tbWFuZDo6Zm9ybWF0UmFuZ2UoY29uCiAgICAgaWYg
KHdhc0VuZE9mUGFyYWdyYXBoICYmICFpc0VuZE9mUGFyYWdyYXBoKGxhc3RQYXJhZ3JhcGhJbkJs
b2NrTm9kZSkgJiYgIWlzU3RhcnRPZlBhcmFncmFwaChsYXN0UGFyYWdyYXBoSW5CbG9ja05vZGUp
KQogICAgICAgICBpbnNlcnRCbG9ja1BsYWNlaG9sZGVyKGxhc3RQYXJhZ3JhcGhJbkJsb2NrTm9k
ZSk7CiB9CisgICAgCitFbGVtZW50KiBGb3JtYXRCbG9ja0NvbW1hbmQ6OmVsZW1lbnRGb3JGb3Jt
YXRCbG9ja0NvbW1hbmQoUmFuZ2UqIHJhbmdlKQoreworICAgIGlmICghcmFuZ2UpCisgICAgICAg
IHJldHVybiAwOwogCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBOb2RlKiBjb21tb25BbmNl
c3RvciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihlYyk7CisgICAgd2hpbGUgKGNv
bW1vbkFuY2VzdG9yICYmICFpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhjb21tb25BbmNlc3Rvcikp
CisgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uQW5jZXN0b3ItPnBhcmVudE5vZGUoKTsK
KworICAgIGlmICghY29tbW9uQW5jZXN0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNT
RVJUKGNvbW1vbkFuY2VzdG9yLT5pc0VsZW1lbnROb2RlKCkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4oY29tbW9uQW5jZXN0b3IpOworfQorICAgIAogLy8gRklYTUU6IFdlIHNo
b3VsZCBjb25zaWRlciBtZXJnaW5nIHRoaXMgZnVuY3Rpb24gd2l0aCBpc0VsZW1lbnRGb3JGb3Jt
YXRCbG9ja0NvbW1hbmQgaW4gRWRpdG9yLmNwcAogLy8gQ2hlY2tzIGlmIGEgdGFnIG5hbWUgaXMg
dmFsaWQgZm9yIGV4ZWNDb21tYW5kKCdGb3JtYXRCbG9jaycpLgotYm9vbCBGb3JtYXRCbG9ja0Nv
bW1hbmQ6OmlzRWxlbWVudFRvQXBwbHlJbkZvcm1hdEJsb2NrQ29tbWFuZChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lKQorYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxR
dWFsaWZpZWROYW1lPiwgYmxvY2tUYWdzLCAoKSk7CiAgICAgaWYgKGJsb2NrVGFncy5pc0VtcHR5
KCkpIHsKQEAgLTExMiw4ICsxNDEsNyBAQCBOb2RlKiBlbmNsb3NpbmdCbG9ja1RvU3BsaXRUcmVl
VG8oTm9kZSogCiAgICAgZm9yIChOb2RlKiBuID0gc3RhcnROb2RlOyBuOyBuID0gbi0+cGFyZW50
Tm9kZSgpKSB7CiAgICAgICAgIGlmICghbi0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAg
ICAgIHJldHVybiBsYXN0QmxvY2s7Ci0gICAgICAgIGlmIChpc1RhYmxlQ2VsbChuKSB8fCBuLT5o
YXNUYWdOYW1lKGJvZHlUYWcpIHx8ICFuLT5wYXJlbnROb2RlKCkgfHwgIW4tPnBhcmVudE5vZGUo
KS0+aXNDb250ZW50RWRpdGFibGUoKQotICAgICAgICAgICAgfHwgKG4tPmlzRWxlbWVudE5vZGUo
KSAmJiBGb3JtYXRCbG9ja0NvbW1hbmQ6OmlzRWxlbWVudFRvQXBwbHlJbkZvcm1hdEJsb2NrQ29t
bWFuZChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obiktPnRhZ1FOYW1lKCkpKSkKKyAgICAgICAgaWYg
KGlzVGFibGVDZWxsKG4pIHx8IG4tPmhhc1RhZ05hbWUoYm9keVRhZykgfHwgIW4tPnBhcmVudE5v
ZGUoKSB8fCAhbi0+cGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IGlzRWxlbWVu
dEZvckZvcm1hdEJsb2NrKG4pKQogICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgIGlmIChp
c0Jsb2NrKG4pKQogICAgICAgICAgICAgbGFzdEJsb2NrID0gbjsKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
Rm9ybWF0QmxvY2tDb21tYW5kLmgJKHJldmlzaW9uIDY5ODQwKQorKysgV2ViQ29yZS9lZGl0aW5n
L0Zvcm1hdEJsb2NrQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMyArMzgsMTYgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZvcm1hdEJsb2NrQ29tbWFuZChk
b2N1bWVudCwgdGFnTmFtZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGlzRWxlbWVudFRv
QXBwbHlJbkZvcm1hdEJsb2NrQ29tbWFuZChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKTsK
LQorICAgIHN0YXRpYyBFbGVtZW50KiBlbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKFJhbmdl
Kik7CisgICAgYm9vbCBkaWRBcHBseSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkQXBwbHk7IH0KIHBy
aXZhdGU6CiAgICAgRm9ybWF0QmxvY2tDb21tYW5kKERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSk7CiAKKyAgICB2b2lkIGZvcm1hdFNlbGVjdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHN0YXJ0T2ZTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZT
ZWxlY3Rpb24pOwogICAgIHZvaWQgZm9ybWF0UmFuZ2UoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQ
b3NpdGlvbiYsIFJlZlB0cjxFbGVtZW50PiYpOwogICAgIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIEVkaXRBY3Rpb25Gb3JtYXRCbG9jazsgfQorCisgICAgYm9vbCBt
X2RpZEFwcGx5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNjk4NjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOSBAQAorMjAxMC0xMC0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZSBp
c0VsZW1lbnRGb3JGb3JtYXRCbG9ja0NvbW1hbmQgYW5kIEZvcm1hdEJsb2NrQ29tbWFuZDo6aXNF
bGVtZW50VG9BcHBseUluRm9ybWF0QmxvY2tDb21tYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxMgorCisgICAgICAgIEFkZGVkIHF1ZXJ5Q29t
bWFuZFZhbHVlKCdmb3JtYXRCbG9jaycpIHRlc3RzIGZvciBzdXBwb3J0IGFydGljbGUsIGFzaWRl
LCBibG9ja3F1b3RlLCBkZCwgZGwsIGRpdiwKKyAgICAgICAgZGwsIGR0LCBkbCwgZm9vdGVyLCBo
ZWFkZXIsIGhncm91cCwgbmF2LCBhbmQgc2VjdGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvZXhl
Y0NvbW1hbmQvcXVlcnktZm9ybWF0LWJsb2NrLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0
aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy9xdWVyeS1mb3JtYXQtYmxvY2suanM6CisgICAg
ICAgIChxdWVyeUZvcm1hdEJsb2NrKToKKyAgICAgICAgKHNlbGVjdEZpcnN0UG9zaXRpb24pOgor
ICAgICAgICAoc2VsZWN0TWlkZGxlT2ZIZWxsb1dvcmxkKToKKwogMjAxMC0xMC0xNSAgU2VyZ2lv
IFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL3F1ZXJ5LWZvcm1hdC1ibG9jay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9xdWVyeS1mb3JtYXQtYmxvY2stZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA2OTg0MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
cXVlcnktZm9ybWF0LWJsb2NrLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwyNSAr
NCwzOSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIAogQmFz
aWMgY2FzZXMKLVBBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXQnKSByZXR1cm5lZCAiIgotUEFTUyBx
dWVyeUNvbW1hbmQoJ2Zvcm1hdCcpIHJldHVybmVkICIiCi1QQVNTIHF1ZXJ5Q29tbWFuZCgnZm9y
bWF0JykgcmV0dXJuZWQgImFkZHJlc3MiCi1QQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0JykgcmV0
dXJuZWQgImgxIgotUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdCcpIHJldHVybmVkICJoMiIKLVBB
U1MgcXVlcnlDb21tYW5kKCdmb3JtYXQnKSByZXR1cm5lZCAiaDMiCi1QQVNTIHF1ZXJ5Q29tbWFu
ZCgnZm9ybWF0JykgcmV0dXJuZWQgImg0IgotUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdCcpIHJl
dHVybmVkICJoNSIKLVBBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXQnKSByZXR1cm5lZCAiaDYiCi1Q
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0JykgcmV0dXJuZWQgInAiCi1QQVNTIHF1ZXJ5Q29tbWFu
ZCgnZm9ybWF0JykgcmV0dXJuZWQgInByZSIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9j
aycpIHJldHVybmVkICIiIHNlbGVjdGluZyBub25lIG9mICJoZWxsbyIKK1BBU1MgcXVlcnlDb21t
YW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBv
ZiAiaGVsbG8iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiYWRk
cmVzcyIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8YWRkcmVzcz5oZWxsbzwvYWRkcmVz
cz4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiYXJ0aWNsZSIg
c2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8YXJ0aWNsZT5oZWxsbzwvYXJ0aWNsZT4iCitQ
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiYXNpZGUiIHNlbGVjdGlu
ZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGFzaWRlPmhlbGxvPC9hc2lkZT4iCitQQVNTIHF1ZXJ5Q29t
bWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiYmxvY2txdW90ZSIgc2VsZWN0aW5nIGZpcnN0
IHBvc2l0aW9uIG9mICI8YmxvY2txdW90ZT5oZWxsbzwvYmxvY2txdW90ZT4iCitQQVNTIHF1ZXJ5
Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiZGQiIHNlbGVjdGluZyBmaXJzdCBwb3Np
dGlvbiBvZiAiPGRkPmhlbGxvPC9kZD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2sn
KSByZXR1cm5lZCAiZGQiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGRsPjxkZD5oZWxs
bzwvZGQ+PC9kbD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAi
ZGl2IiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxkaXY+aGVsbG88L2Rpdj4iCitQQVNT
IHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiZGwiIHNlbGVjdGluZyBmaXJz
dCBwb3NpdGlvbiBvZiAiPGRsPmhlbGxvPC9kbD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0
QmxvY2snKSByZXR1cm5lZCAiZHQiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGR0Pmhl
bGxvPC9kdD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiZHQi
IHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGRsPjxkdD5oZWxsbzwvZHQ+PC9kbD4iCitQ
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiZm9vdGVyIiBzZWxlY3Rp
bmcgZmlyc3QgcG9zaXRpb24gb2YgIjxmb290ZXI+aGVsbG88L2Zvb3Rlcj4iCitQQVNTIHF1ZXJ5
Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiaDEiIHNlbGVjdGluZyBmaXJzdCBwb3Np
dGlvbiBvZiAiPGgxPmhlbGxvPC9oMT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2sn
KSByZXR1cm5lZCAiaDIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGgyPmhlbGxvPC9o
Mj4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiaDMiIHNlbGVj
dGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGgzPmhlbGxvPC9oMz4iCitQQVNTIHF1ZXJ5Q29tbWFu
ZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiaDQiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBv
ZiAiPGg0PmhlbGxvPC9oND4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1
cm5lZCAiaDUiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGg1PmhlbGxvPC9oNT4iCitQ
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiaDYiIHNlbGVjdGluZyBm
aXJzdCBwb3NpdGlvbiBvZiAiPGg2PmhlbGxvPC9oNj4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9y
bWF0QmxvY2snKSByZXR1cm5lZCAiaGVhZGVyIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2Yg
IjxoZWFkZXI+aGVsbG88L2hlYWRlcj4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2sn
KSByZXR1cm5lZCAiaGdyb3VwIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxoZ3JvdXA+
aGVsbG88L2hncm91cD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5l
ZCAibmF2IiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxuYXY+aGVsbG88L25hdj4iCitQ
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAicCIgc2VsZWN0aW5nIGZp
cnN0IHBvc2l0aW9uIG9mICI8cD5oZWxsbzwvcD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0
QmxvY2snKSByZXR1cm5lZCAicHJlIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxwcmU+
aGVsbG88L3ByZT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAi
c2VjdGlvbiIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8c2VjdGlvbj5oZWxsbzwvc2Vj
dGlvbj4iCiAKIE5lc3RlZCBjYXNlcwotUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdCcpIHJldHVy
bmVkICJoMiIKLVBBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXQnKSByZXR1cm5lZCAiYWRkcmVzcyIK
LVBBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXQnKSByZXR1cm5lZCAicHJlIgotUEFTUyBxdWVyeUNv
bW1hbmQoJ2Zvcm1hdCcpIHJldHVybmVkICJwcmUiCi1QQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0
JykgcmV0dXJuZWQgImFkZHJlc3MiCi1QQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0JykgcmV0dXJu
ZWQgIiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICJoMiIgc2Vs
ZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8aDE+PGgyPmhlbGxvPC9oMj48L2gxPiIKK1BBU1Mg
cXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICJhZGRyZXNzIiBzZWxlY3Rpbmcg
Zmlyc3QgcG9zaXRpb24gb2YgIjxoMT48YWRkcmVzcz5oZWxsbzwvYWRkcmVzcz48L2gxPiIKK1BB
U1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICJwcmUiIHNlbGVjdGluZyBm
aXJzdCBwb3NpdGlvbiBvZiAiPHByZT5oZWxsbzxwPndvcmxkPC9wPjwvcHJlPiIKK1BBU1MgcXVl
cnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICJwcmUiIHNlbGVjdGluZyAibGxvIHdv
IiBvZiAiPHByZT5oZWxsbzxwPndvcmxkPC9wPjwvcHJlPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdm
b3JtYXRCbG9jaycpIHJldHVybmVkICJhZGRyZXNzIiBzZWxlY3RpbmcgImxsbyB3byIgb2YgIjxh
ZGRyZXNzPjxoMT5oZWxsbzwvaDE+d29ybGQ8L2FkZHJlc3M+IgorUEFTUyBxdWVyeUNvbW1hbmQo
J2Zvcm1hdEJsb2NrJykgcmV0dXJuZWQgIiIgc2VsZWN0aW5nICJsbG8gd28iIG9mICI8aDE+aGVs
bG88L2gxPndvcmxkIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0
cy9xdWVyeS1mb3JtYXQtYmxvY2suanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvcXVlcnktZm9ybWF0LWJsb2NrLmpzCShyZXZpc2lv
biA2OTg0MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3Rz
L3F1ZXJ5LWZvcm1hdC1ibG9jay5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwxNSBAQAog
ZGVzY3JpcHRpb24oIlRlc3RzIHF1ZXJ5Q29tbWFuZFZhbHVlKCdmb3JtYXRCbG9jaycpIikKIAot
dmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK3ZhciB0
ZXN0Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogdGVzdENvbnRh
aW5lci5jb250ZW50RWRpdGFibGUgPSB0cnVlOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0
ZXN0Q29udGFpbmVyKTsKIAogZnVuY3Rpb24gcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RvciwgY29u
dGVudCwgZXhwZWN0ZWQpCiB7CiAgICAgdGVzdENvbnRhaW5lci5pbm5lckhUTUwgPSBjb250ZW50
OwotICAgIHNlbGVjdG9yKHRlc3RDb250YWluZXIpOworICAgIHZhciBzZWxlY3RlZCA9IHNlbGVj
dG9yKHRlc3RDb250YWluZXIpOwogICAgIHZhciBhY3R1YWwgPSBkb2N1bWVudC5xdWVyeUNvbW1h
bmRWYWx1ZSgnZm9ybWF0QmxvY2snKTsKLSAgICB2YXIgYWN0aW9uID0gInF1ZXJ5Q29tbWFuZCgn
Zm9ybWF0JykgcmV0dXJuZWQgXCIiICsgYWN0dWFsICsgJyInOworICAgIHZhciBhY3Rpb24gPSAi
cXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkIFwiIiArIGFjdHVhbCArICciIHNl
bGVjdGluZyAnICsgc2VsZWN0ZWQgKyAnIG9mICInICsgY29udGVudCArICciJzsKICAgICBpZiAo
YWN0dWFsID09IGV4cGVjdGVkKQogICAgICAgICB0ZXN0UGFzc2VkKGFjdGlvbik7CiAgICAgZWxz
ZQpAQCAtMjAsNiArMjAsNyBAQCBmdW5jdGlvbiBzZWxlY3RGaXJzdFBvc2l0aW9uKGNvbnRhaW5l
cikgCiAgICAgd2hpbGUgKGNvbnRhaW5lci5maXJzdENoaWxkKQogICAgICAgICBjb250YWluZXIg
PSBjb250YWluZXIuZmlyc3RDaGlsZDsKICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9z
aXRpb24oY29udGFpbmVyLCAwKTsKKyAgICByZXR1cm4gJ2ZpcnN0IHBvc2l0aW9uJwogfQogCiBm
dW5jdGlvbiBzZWxlY3RNaWRkbGVPZkhlbGxvV29ybGQoY29udGFpbmVyKSB7CkBAIC0zMCwyMCAr
MzEsMzUgQEAgZnVuY3Rpb24gc2VsZWN0TWlkZGxlT2ZIZWxsb1dvcmxkKGNvbnRhaQogICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdmb3J3YXJkJywgJ2NoYXJhY3Rl
cicpOwogICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdmb3J3YXJk
JywgJ2NoYXJhY3RlcicpOwogICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVu
ZCcsICdmb3J3YXJkJywgJ2NoYXJhY3RlcicpOworICAgIHJldHVybiAnImxsbyB3byInCiB9CiAK
IGRlYnVnKCdCYXNpYyBjYXNlcycpOwotcXVlcnlGb3JtYXRCbG9jayhmdW5jdGlvbiAoKSB7fSwg
J2hlbGxvJywgJycpOworcXVlcnlGb3JtYXRCbG9jayhmdW5jdGlvbiAoKSB7cmV0dXJuICdub25l
JyB9LCAnaGVsbG8nLCAnJyk7CiBxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24s
ICdoZWxsbycsICcnKTsKIHF1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxh
ZGRyZXNzPmhlbGxvPC9hZGRyZXNzPicsICdhZGRyZXNzJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNl
bGVjdEZpcnN0UG9zaXRpb24sICc8YXJ0aWNsZT5oZWxsbzwvYXJ0aWNsZT4nLCAnYXJ0aWNsZScp
OworcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPGFzaWRlPmhlbGxvPC9h
c2lkZT4nLCAnYXNpZGUnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwg
JzxibG9ja3F1b3RlPmhlbGxvPC9ibG9ja3F1b3RlPicsICdibG9ja3F1b3RlJyk7CitxdWVyeUZv
cm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8ZGQ+aGVsbG88L2RkPicsICdkZCcpOwor
cXVlcnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPGRsPjxkZD5oZWxsbzwvZGQ+
PC9kbD4nLCAnZGQnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxk
aXY+aGVsbG88L2Rpdj4nLCAnZGl2Jyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9z
aXRpb24sICc8ZGw+aGVsbG88L2RsPicsICdkbCcpOworcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RG
aXJzdFBvc2l0aW9uLCAnPGR0PmhlbGxvPC9kdD4nLCAnZHQnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2so
c2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxkbD48ZHQ+aGVsbG88L2R0PjwvZGw+JywgJ2R0Jyk7Citx
dWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8Zm9vdGVyPmhlbGxvPC9mb290
ZXI+JywgJ2Zvb3RlcicpOwogcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAn
PGgxPmhlbGxvPC9oMT4nLCAnaDEnKTsKIHF1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3Np
dGlvbiwgJzxoMj5oZWxsbzwvaDI+JywgJ2gyJyk7CiBxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZp
cnN0UG9zaXRpb24sICc8aDM+aGVsbG88L2gzPicsICdoMycpOwogcXVlcnlGb3JtYXRCbG9jayhz
ZWxlY3RGaXJzdFBvc2l0aW9uLCAnPGg0PmhlbGxvPC9oND4nLCAnaDQnKTsKIHF1ZXJ5Rm9ybWF0
QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxoNT5oZWxsbzwvaDU+JywgJ2g1Jyk7CiBxdWVy
eUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8aDY+aGVsbG88L2g2PicsICdoNicp
OworcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPGhlYWRlcj5oZWxsbzwv
aGVhZGVyPicsICdoZWFkZXInKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlv
biwgJzxoZ3JvdXA+aGVsbG88L2hncm91cD4nLCAnaGdyb3VwJyk7CitxdWVyeUZvcm1hdEJsb2Nr
KHNlbGVjdEZpcnN0UG9zaXRpb24sICc8bmF2PmhlbGxvPC9uYXY+JywgJ25hdicpOwogcXVlcnlG
b3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPHA+aGVsbG88L3A+JywgJ3AnKTsKIHF1
ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxwcmU+aGVsbG88L3ByZT4nLCAn
cHJlJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8c2VjdGlvbj5o
ZWxsbzwvc2VjdGlvbj4nLCAnc2VjdGlvbicpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnTmVzdGVk
IGNhc2VzJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70886</attachid>
            <date>2010-10-15 11:59:40 -0700</date>
            <delta_ts>2010-10-15 12:16:30 -0700</delta_ts>
            <desc>fixed per Darin&apos;s comments</desc>
            <filename>bug-47712-20101015115939.patch</filename>
            <type>text/plain</type>
            <size>25489</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTg2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMTAtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWF0
Y2ggdGhlIGVsZW1lbnRzIHN1cHBvcnRlZCBieSBleGVjQ29tbWFuZCgnZm9ybWF0QmxvY2snKSBh
bmQgcXVlcnlDb21tYW5kVmFsdWUoJ2Zvcm1hdEJsb2NrJykKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzEyCisKKyAgICAgICAgRXh0ZW5kZWQgcXVl
cnlDb21tYW5kVmFsdWUoJ2Zvcm1hdEJsb2NrJywgZmFsc2UsIG51bGwpIHRvIHN1cHBvcnQgYXJ0
aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGRkLCBkbCwKKyAgICAgICAgZGl2LCBkbCwgZHQsIGRs
LCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBuYXYsIGFuZCBzZWN0aW9uLiBCZWNhdXNlIHRoaXMg
bWFrZXMgaXNFbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kCisgICAgICAgIGluIEVkaXRvci5j
cHAgYW5kIEZvcm1hdEJsb2NrQ29tbWFuZDo6aXNFbGVtZW50VG9BcHBseUluRm9ybWF0QmxvY2tD
b21tYW5kIGlkZW50aWNhbCwgdGhleSBhcmUgbWVyZ2VkIGFuZCBtb3ZlZAorICAgICAgICB0byBG
b3JtYXRCbG9ja0NvbW1hbmQuY3BwCisKKyAgICAgICAgVGVzdHMgYXJlIGFkZGVkIHRvIGVkaXRp
bmcvZXhlY0NvbW1hbmQvcXVlcnktZm9ybWF0LWJsb2NrLmh0bWwKKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmNwcDogUmVtb3ZlZCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9ja0NvbW1hbmQgYW5k
IEVkaXRvcjo6ZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZC4KKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlRm9ybWF0QmxvY2spOiBSZW1vdmVkIHRoZSBjaGVjayBvZiB0YWcg
bmFtZTsgdGhlIGNoZWNrIGlzIG1vdmVkIGludG8gRm9ybWF0QmxvY2tDb21tYW5kLgorICAgICAg
ICAoV2ViQ29yZTo6dmFsdWVGb3JtYXRCbG9jayk6IENhbGxzIEZvcm1hdEJsb2NrQ29tbWFuZDo6
ZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZC4KKyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJs
b2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRGb3JGb3JtYXRCbG9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9ja0NvbW1hbmQ6OkZvcm1hdEJsb2NrQ29t
bWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFNlbGVj
dGlvbik6IEFkZGVkIHRvIGNoZWNrIHRoZSB0YWcgbmFtZS4gRXhpdCBlYXJseSBpZiB0aGUgc3Bl
Y2lmaWVkIHRhZyBuYW1lCisgICAgICAgIGlzIG5vdCB3aGF0IEZvcm1hdEJsb2NrIHNob3VsZCBh
cHBseS4gU2V0IG1fZGlkQXBwbHkgdHJ1ZSBpZiBtX2RpZEFwcGx5IGRpZCBhcHBseSB0aGUgZWxl
bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1hdEJsb2NrQ29tbWFuZDo6Zm9ybWF0UmFuZ2Up
OiBNb3ZlZCBmcm9tIEVkaXRvci5jcHAuICBUYWtlcyBSYW5nZSogaW5zdGVhZCBvZiBhY2Nlc3Np
bmcgc2VsZWN0aW9uIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0QmxvY2tDb21t
YW5kOjplbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKTogTW92ZWQgZnJvbSBFZGl0b3IuY3Bw
CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdCbG9ja1RvU3BsaXRUcmVlVG8pOiBDYWxscyBp
c0VsZW1lbnRGb3JGb3JtYXRCbG9jay4KKyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29t
bWFuZC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0QmxvY2tDb21tYW5kOjpkaWRBcHBseSk6
IEFkZGVkLgorCiAyMDEwLTEwLTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CShyZXZpc2lvbiA2OTg0MCkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NzAsMzcgKzk3MCw2IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvblN0YXJ0
Q1NTUHJvcGVydHkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBib29sIGlzRWxlbWVu
dEZvckZvcm1hdEJsb2NrQ29tbWFuZChjb25zdCBOb2RlKiBub2RlKQotewotICAgIHJldHVybiBu
b2RlLT5oYXNUYWdOYW1lKGFkZHJlc3NUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUo
aDFUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaDJUYWcpCi0gICAgICAgIHx8IG5v
ZGUtPmhhc1RhZ05hbWUoaDNUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaDRUYWcp
Ci0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaDVUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhh
c1RhZ05hbWUoaDZUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUocFRhZykKLSAgICAg
ICAgfHwgbm9kZS0+aGFzVGFnTmFtZShwcmVUYWcpOwotfQotCi1FbGVtZW50KiBFZGl0b3I6OmVs
ZW1lbnRGb3JGb3JtYXRCbG9ja0NvbW1hbmQoKSBjb25zdAotewotICAgIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsK
LSAgICBpZiAoIXNlbGVjdGlvbi5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkgfHwgIXNlbGVj
dGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7Ci0gICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSBzZWxlY3Rpb24uZmlyc3RS
YW5nZSgpLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihlYyk7Ci0gICAgd2hpbGUgKGNvbW1vbkFu
Y2VzdG9yICYmICFpc0VsZW1lbnRGb3JGb3JtYXRCbG9ja0NvbW1hbmQoY29tbW9uQW5jZXN0b3Ip
KQotICAgICAgICBjb21tb25BbmNlc3RvciA9IGNvbW1vbkFuY2VzdG9yLT5wYXJlbnROb2RlKCk7
Ci0KLSAgICBpZiAoIWNvbW1vbkFuY2VzdG9yKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFT
U0VSVChjb21tb25BbmNlc3Rvci0+aXNFbGVtZW50Tm9kZSgpKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KGNvbW1vbkFuY2VzdG9yKTsKLX0KLQogdm9pZCBFZGl0b3I6OmluZGVu
dCgpCiB7CiAgICAgYXBwbHlDb21tYW5kKEluZGVudE91dGRlbnRDb21tYW5kOjpjcmVhdGUobV9m
cmFtZS0+ZG9jdW1lbnQoKSwgSW5kZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudCkpOwpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAkocmV2aXNpb24gNjk4NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNiBAQCBwdWJsaWM6CiAKICAgICBUcmlTdGF0ZSBz
ZWxlY3Rpb25IYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKikgY29uc3Q7CiAgICAgU3RyaW5n
IHNlbGVjdGlvblN0YXJ0Q1NTUHJvcGVydHlWYWx1ZShpbnQgcHJvcGVydHlJRCk7Ci0gICAgRWxl
bWVudCogZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZCgpIGNvbnN0OwogICAgIGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250Rm9yU2VsZWN0aW9uKGJvb2wmKSBjb25zdDsKICAgICBXcml0aW5n
RGlyZWN0aW9uIHRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oYm9vbCYpIGNvbnN0OwogICAgIApJ
bmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gNjk4NDApCisrKyBXZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOSwxMSAr
NDM5LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcm1hdEJsb2NrKEZyYW1lKiBmcgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgUXVhbGlmaWVkTmFtZSBxdWFsaWZpZWRUYWdOYW1lKHByZWZp
eCwgbG9jYWxOYW1lLCB4aHRtbE5hbWVzcGFjZVVSSSk7CiAKLSAgICBpZiAoIUZvcm1hdEJsb2Nr
Q29tbWFuZDo6aXNFbGVtZW50VG9BcHBseUluRm9ybWF0QmxvY2tDb21tYW5kKHF1YWxpZmllZFRh
Z05hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhcHBseUNvbW1hbmQoRm9ybWF0
QmxvY2tDb21tYW5kOjpjcmVhdGUoZnJhbWUtPmRvY3VtZW50KCksIHF1YWxpZmllZFRhZ05hbWUp
KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBSZWZQdHI8Rm9ybWF0QmxvY2tDb21tYW5kPiBjb21t
YW5kID0gRm9ybWF0QmxvY2tDb21tYW5kOjpjcmVhdGUoZnJhbWUtPmRvY3VtZW50KCksIHF1YWxp
ZmllZFRhZ05hbWUpOworICAgIGFwcGx5Q29tbWFuZChjb21tYW5kKTsKKyAgICByZXR1cm4gY29t
bWFuZC0+ZGlkQXBwbHkoKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmREZWxldGUo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBT
dHJpbmcmKQpAQCAtMTM2MSw3ICsxMzU5LDEwIEBAIHN0YXRpYyBTdHJpbmcgdmFsdWVGb3JlQ29s
b3IoRnJhbWUqIGZyYW0KIAogc3RhdGljIFN0cmluZyB2YWx1ZUZvcm1hdEJsb2NrKEZyYW1lKiBm
cmFtZSwgRXZlbnQqKQogewotICAgIEVsZW1lbnQqIGZvcm1hdEJsb2NrRWxlbWVudCA9IGZyYW1l
LT5lZGl0b3IoKS0+ZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZCgpOworICAgIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
KCk7CisgICAgaWYgKCFzZWxlY3Rpb24uaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpIHx8ICFz
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuICIiOworICAgIEVs
ZW1lbnQqIGZvcm1hdEJsb2NrRWxlbWVudCA9IEZvcm1hdEJsb2NrQ29tbWFuZDo6ZWxlbWVudEZv
ckZvcm1hdEJsb2NrQ29tbWFuZChzZWxlY3Rpb24uZmlyc3RSYW5nZSgpLmdldCgpKTsKICAgICBp
ZiAoIWZvcm1hdEJsb2NrRWxlbWVudCkKICAgICAgICAgcmV0dXJuICIiOwogICAgIHJldHVybiBm
b3JtYXRCbG9ja0VsZW1lbnQtPmxvY2FsTmFtZSgpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0Zv
cm1hdEJsb2NrQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0Zvcm1h
dEJsb2NrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDY5ODQwKQorKysgV2ViQ29yZS9lZGl0aW5nL0Zv
cm1hdEJsb2NrQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJ2aXNpYmxlX3Vu
aXRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDEwICszOCwyNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgTm9kZSog
ZW5jbG9zaW5nQmxvY2tUb1NwbGl0VHJlZVRvKE5vZGUqIHN0YXJ0Tm9kZSk7CitzdGF0aWMgYm9v
bCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKTsK
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhOb2RlKiBub2RlKQor
eworICAgIHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaXNFbGVtZW50Rm9yRm9ybWF0
QmxvY2soc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT50YWdRTmFtZSgpKTsKK30KIAogRm9y
bWF0QmxvY2tDb21tYW5kOjpGb3JtYXRCbG9ja0NvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKSAKICAgICA6IEFwcGx5QmxvY2tFbGVtZW50Q29t
bWFuZChkb2N1bWVudCwgdGFnTmFtZSkKKyAgICAsIG1fZGlkQXBwbHkoZmFsc2UpCit7Cit9CisK
K3ZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBzdGFydE9mU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZE9mU2Vs
ZWN0aW9uKQogeworICAgIGlmICghaXNFbGVtZW50Rm9yRm9ybWF0QmxvY2sodGFnTmFtZSgpKSkK
KyAgICAgICAgcmV0dXJuOworICAgIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6Zm9ybWF0U2Vs
ZWN0aW9uKHN0YXJ0T2ZTZWxlY3Rpb24sIGVuZE9mU2VsZWN0aW9uKTsKKyAgICBtX2RpZEFwcGx5
ID0gdHJ1ZTsKIH0KIAogdm9pZCBGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKGNvbnN0
IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwgUmVmUHRyPEVsZW1lbnQ+JiBi
bG9ja05vZGUpCkBAIC01MSw3ICs2Niw3IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3Jt
YXRSYW5nZShjb24KIAogICAgIEVsZW1lbnQqIHJlZk5vZGUgPSBlbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCogcm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9u
KHN0YXJ0KTsKLSAgICBpZiAoaXNFbGVtZW50VG9BcHBseUluRm9ybWF0QmxvY2tDb21tYW5kKHJl
Zk5vZGUtPnRhZ1FOYW1lKCkpICYmIHN0YXJ0ID09IHN0YXJ0T2ZCbG9jayhzdGFydCkgJiYgZW5k
ID09IGVuZE9mQmxvY2soZW5kKQorICAgIGlmIChpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhyZWZO
b2RlLT50YWdRTmFtZSgpKSAmJiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3RhcnQpICYmIGVuZCA9
PSBlbmRPZkJsb2NrKGVuZCkKICAgICAgICAgJiYgcmVmTm9kZSAhPSByb290ICYmICFyb290LT5p
c0Rlc2NlbmRhbnRPZihyZWZOb2RlKSkgewogICAgICAgICAvLyBBbHJlYWR5IGluIGEgYmxvY2sg
ZWxlbWVudCB0aGF0IG9ubHkgY29udGFpbnMgdGhlIGN1cnJlbnQgcGFyYWdyYXBoCiAgICAgICAg
IGlmIChyZWZOb2RlLT5oYXNUYWdOYW1lKHRhZ05hbWUoKSkpCkBAIC03NCwxMCArODksMjUgQEAg
dm9pZCBGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKGNvbgogICAgIGlmICh3YXNFbmRP
ZlBhcmFncmFwaCAmJiAhaXNFbmRPZlBhcmFncmFwaChsYXN0UGFyYWdyYXBoSW5CbG9ja05vZGUp
ICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgobGFzdFBhcmFncmFwaEluQmxvY2tOb2RlKSkKICAgICAg
ICAgaW5zZXJ0QmxvY2tQbGFjZWhvbGRlcihsYXN0UGFyYWdyYXBoSW5CbG9ja05vZGUpOwogfQor
ICAgIAorRWxlbWVudCogRm9ybWF0QmxvY2tDb21tYW5kOjplbGVtZW50Rm9yRm9ybWF0QmxvY2tD
b21tYW5kKFJhbmdlKiByYW5nZSkKK3sKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSBy
YW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoZWMpOworICAgIHdoaWxlIChjb21tb25BbmNl
c3RvciAmJiAhaXNFbGVtZW50Rm9yRm9ybWF0QmxvY2soY29tbW9uQW5jZXN0b3IpKQorICAgICAg
ICBjb21tb25BbmNlc3RvciA9IGNvbW1vbkFuY2VzdG9yLT5wYXJlbnROb2RlKCk7CisKKyAgICBp
ZiAoIWNvbW1vbkFuY2VzdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChjb21t
b25BbmNlc3Rvci0+aXNFbGVtZW50Tm9kZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KGNvbW1vbkFuY2VzdG9yKTsKK30KIAotLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRl
ciBtZXJnaW5nIHRoaXMgZnVuY3Rpb24gd2l0aCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9ja0NvbW1h
bmQgaW4gRWRpdG9yLmNwcAotLy8gQ2hlY2tzIGlmIGEgdGFnIG5hbWUgaXMgdmFsaWQgZm9yIGV4
ZWNDb21tYW5kKCdGb3JtYXRCbG9jaycpLgotYm9vbCBGb3JtYXRCbG9ja0NvbW1hbmQ6OmlzRWxl
bWVudFRvQXBwbHlJbkZvcm1hdEJsb2NrQ29tbWFuZChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lKQorYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxRdWFsaWZpZWROYW1l
PiwgYmxvY2tUYWdzLCAoKSk7CiAgICAgaWYgKGJsb2NrVGFncy5pc0VtcHR5KCkpIHsKQEAgLTEx
Miw4ICsxNDIsNyBAQCBOb2RlKiBlbmNsb3NpbmdCbG9ja1RvU3BsaXRUcmVlVG8oTm9kZSogCiAg
ICAgZm9yIChOb2RlKiBuID0gc3RhcnROb2RlOyBuOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7CiAg
ICAgICAgIGlmICghbi0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBs
YXN0QmxvY2s7Ci0gICAgICAgIGlmIChpc1RhYmxlQ2VsbChuKSB8fCBuLT5oYXNUYWdOYW1lKGJv
ZHlUYWcpIHx8ICFuLT5wYXJlbnROb2RlKCkgfHwgIW4tPnBhcmVudE5vZGUoKS0+aXNDb250ZW50
RWRpdGFibGUoKQotICAgICAgICAgICAgfHwgKG4tPmlzRWxlbWVudE5vZGUoKSAmJiBGb3JtYXRC
bG9ja0NvbW1hbmQ6OmlzRWxlbWVudFRvQXBwbHlJbkZvcm1hdEJsb2NrQ29tbWFuZChzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obiktPnRhZ1FOYW1lKCkpKSkKKyAgICAgICAgaWYgKGlzVGFibGVDZWxs
KG4pIHx8IG4tPmhhc1RhZ05hbWUoYm9keVRhZykgfHwgIW4tPnBhcmVudE5vZGUoKSB8fCAhbi0+
cGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IGlzRWxlbWVudEZvckZvcm1hdEJs
b2NrKG4pKQogICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgIGlmIChpc0Jsb2NrKG4pKQog
ICAgICAgICAgICAgbGFzdEJsb2NrID0gbjsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Gb3JtYXRC
bG9ja0NvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tD
b21tYW5kLmgJKHJldmlzaW9uIDY5ODQwKQorKysgV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2Nr
Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMyArMzgsMTcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZvcm1hdEJsb2NrQ29tbWFuZChkb2N1bWVudCwgdGFn
TmFtZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGlzRWxlbWVudFRvQXBwbHlJbkZvcm1h
dEJsb2NrQ29tbWFuZChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKTsKKyAgICBzdGF0aWMg
RWxlbWVudCogZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZChSYW5nZSopOworICAgIGJvb2wg
ZGlkQXBwbHkoKSBjb25zdCB7IHJldHVybiBtX2RpZEFwcGx5OyB9CiAKIHByaXZhdGU6CiAgICAg
Rm9ybWF0QmxvY2tDb21tYW5kKERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSk7CiAKKyAgICB2b2lkIGZvcm1hdFNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0
YXJ0T2ZTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZTZWxlY3Rpb24pOwog
ICAgIHZvaWQgZm9ybWF0UmFuZ2UoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIFJl
ZlB0cjxFbGVtZW50PiYpOwogICAgIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIEVkaXRBY3Rpb25Gb3JtYXRCbG9jazsgfQorCisgICAgYm9vbCBtX2RpZEFwcGx5Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NjIpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAor
MjAxMC0xMC0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRjaCB0aGUgZWxlbWVudHMg
c3VwcG9ydGVkIGJ5IGV4ZWNDb21tYW5kKCdmb3JtYXRCbG9jaycpIGFuZCBxdWVyeUNvbW1hbmRW
YWx1ZSgnZm9ybWF0QmxvY2snKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc3MTIKKworICAgICAgICBBZGRlZCBxdWVyeUNvbW1hbmRWYWx1ZSgnZm9y
bWF0QmxvY2snKSB0ZXN0cyBmb3Igc3VwcG9ydCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwg
ZGQsIGRsLCBkaXYsCisgICAgICAgIGRsLCBkdCwgZGwsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAs
IG5hdiwgYW5kIHNlY3Rpb24uCisKKyAgICAgICAgQWxzbyBhZGRlZCB0ZXN0cyB0byBlbnN1cmUg
d2UgZG9uJ3QgcmV0dXJuIHRhZyBuYW1lIGZvciBhIHN1YnNldCBvZiB1bnN1cHBvcnRlZCBlbGVt
ZW50cy4KKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvcXVlcnktZm9ybWF0LWJsb2Nr
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0
cy9xdWVyeS1mb3JtYXQtYmxvY2suanM6CisgICAgICAgIChxdWVyeUZvcm1hdEJsb2NrKToKKyAg
ICAgICAgKHNlbGVjdEZpcnN0UG9zaXRpb24pOgorICAgICAgICAoc2VsZWN0TWlkZGxlT2ZIZWxs
b1dvcmxkKToKKwogMjAxMC0xMC0xNSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3F1ZXJ5LWZvcm1hdC1ibG9jay1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9xdWVyeS1mb3JtYXQtYmxvY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2OTg0MCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcXVlcnktZm9ybWF0LWJsb2NrLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwyNSArNCw3OSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIAogQmFzaWMgY2FzZXMKLVBBU1MgcXVlcnlDb21tYW5k
KCdmb3JtYXQnKSByZXR1cm5lZCAiIgotUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdCcpIHJldHVy
bmVkICIiCi1QQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0JykgcmV0dXJuZWQgImFkZHJlc3MiCi1Q
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0JykgcmV0dXJuZWQgImgxIgotUEFTUyBxdWVyeUNvbW1h
bmQoJ2Zvcm1hdCcpIHJldHVybmVkICJoMiIKLVBBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXQnKSBy
ZXR1cm5lZCAiaDMiCi1QQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0JykgcmV0dXJuZWQgImg0Igot
UEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdCcpIHJldHVybmVkICJoNSIKLVBBU1MgcXVlcnlDb21t
YW5kKCdmb3JtYXQnKSByZXR1cm5lZCAiaDYiCi1QQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0Jykg
cmV0dXJuZWQgInAiCi1QQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0JykgcmV0dXJuZWQgInByZSIK
K1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNlbGVjdGluZyBu
b25lIG9mICJoZWxsbyIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVk
ICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiaGVsbG8iCitQQVNTIHF1ZXJ5Q29tbWFu
ZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2Yg
IjxhPmhlbGxvPC9hPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVk
ICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGFiYnI+aGVsbG88L2FiYnI+IgorUEFT
UyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdEJsb2NrJykgcmV0dXJuZWQgIiIgc2VsZWN0aW5nIGZpcnN0
IHBvc2l0aW9uIG9mICI8YWNyb255bT5oZWxsbzwvYWNyb255bT4iCitQQVNTIHF1ZXJ5Q29tbWFu
ZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2Yg
IjxiPmhlbGxvPC9iPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVk
ICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGJkbz5oZWxsbzwvYmRvPiIKK1BBU1Mg
cXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNlbGVjdGluZyBmaXJzdCBw
b3NpdGlvbiBvZiAiPGJpZz5oZWxsbzwvYmlnPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRC
bG9jaycpIHJldHVybmVkICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGJ1dHRvbj5o
ZWxsbzwvYnV0dG9uPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVk
ICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGNhcHRpb24+aGVsbG88L2NhcHRpb24+
IgorUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdEJsb2NrJykgcmV0dXJuZWQgIiIgc2VsZWN0aW5n
IGZpcnN0IHBvc2l0aW9uIG9mICI8Y2VudGVyPmhlbGxvPC9jZW50ZXI+IgorUEFTUyBxdWVyeUNv
bW1hbmQoJ2Zvcm1hdEJsb2NrJykgcmV0dXJuZWQgIiIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9u
IG9mICI8Y2l0ZT5oZWxsbzwvY2l0ZT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2sn
KSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxjb2RlPmhlbGxvPC9j
b2RlPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNlbGVj
dGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGRlbD5oZWxsbzwvZGVsPiIKK1BBU1MgcXVlcnlDb21t
YW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBv
ZiAiPGRmbj5oZWxsbzwvZGZuPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJl
dHVybmVkICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGRpcj5oZWxsbzwvZGlyPiIK
K1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNlbGVjdGluZyBm
aXJzdCBwb3NpdGlvbiBvZiAiPGVtPmhlbGxvPC9lbT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9y
bWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxmb3Jt
PjxmaWVsZHNldD5oZWxsbzwvZmllbGRzZXQ+PC9mb3JtPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdm
b3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGZv
bnQ+aGVsbG88L2ZvbnQ+IgorUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdEJsb2NrJykgcmV0dXJu
ZWQgIiIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8Zm9ybT5oZWxsbzwvZm9ybT4iCitQ
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmly
c3QgcG9zaXRpb24gb2YgIjxpPmhlbGxvPC9pPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRC
bG9jaycpIHJldHVybmVkICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGtiZD5oZWxs
bzwva2JkPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNl
bGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGxhYmVsPmhlbGxvPC9sYWJlbD4iCitQQVNTIHF1
ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9z
aXRpb24gb2YgIjxsZWdlbmQ+aGVsbG88L2xlZ2VuZD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9y
bWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjx1bD48
bGk+aGVsbG88bGk+PC91bD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1
cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxtZW51PmhlbGxvPC9tZW51PiIK
K1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNlbGVjdGluZyBm
aXJzdCBwb3NpdGlvbiBvZiAiPG9sPmhlbGxvPC9vbD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9y
bWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxxPmhl
bGxvPC9xPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIiIHNl
bGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPHM+aGVsbG88L3M+IgorUEFTUyBxdWVyeUNvbW1h
bmQoJ2Zvcm1hdEJsb2NrJykgcmV0dXJuZWQgIiIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9m
ICI8c2FtcD5oZWxsbzwvc2FtcD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSBy
ZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxzbWFsbD5oZWxsbzwvc21h
bGw+IgorUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdEJsb2NrJykgcmV0dXJuZWQgIiIgc2VsZWN0
aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8c3Bhbj5oZWxsbzwvc3Bhbj4iCitQQVNTIHF1ZXJ5Q29t
bWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24g
b2YgIjxzdHJpa2U+aGVsbG88L3N0cmlrZT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0Qmxv
Y2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxzdHJvbmc+aGVs
bG88L3N0cm9uZz4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAi
IiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxzdWI+aGVsbG88L3N1Yj4iCitQQVNTIHF1
ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9z
aXRpb24gb2YgIjxzdXA+aGVsbG88L3N1cD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0Qmxv
Y2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjx0YWJsZT48dGQ+
aGVsbG88L3RkPjwvdGFibGU+IgorUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdEJsb2NrJykgcmV0
dXJuZWQgIiIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8dGFibGU+PHRoPmhlbGxvPC90
aD48L3RhYmxlPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICIi
IHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPHR0PmhlbGxvPC90dD4iCitQQVNTIHF1ZXJ5
Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRp
b24gb2YgIjx1PmhlbGxvPC91PiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJl
dHVybmVkICIiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPHVsPmhlbGxvPC91bD4iCitQ
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiIiBzZWxlY3RpbmcgZmly
c3QgcG9zaXRpb24gb2YgIjx2YXI+aGVsbG88L3Zhcj4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9y
bWF0QmxvY2snKSByZXR1cm5lZCAiYWRkcmVzcyIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9m
ICI8YWRkcmVzcz5oZWxsbzwvYWRkcmVzcz4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0Qmxv
Y2snKSByZXR1cm5lZCAiYXJ0aWNsZSIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8YXJ0
aWNsZT5oZWxsbzwvYXJ0aWNsZT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSBy
ZXR1cm5lZCAiYXNpZGUiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGFzaWRlPmhlbGxv
PC9hc2lkZT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiYmxv
Y2txdW90ZSIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8YmxvY2txdW90ZT5oZWxsbzwv
YmxvY2txdW90ZT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAi
ZGQiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGRkPmhlbGxvPC9kZD4iCitQQVNTIHF1
ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiZGQiIHNlbGVjdGluZyBmaXJzdCBw
b3NpdGlvbiBvZiAiPGRsPjxkZD5oZWxsbzwvZGQ+PC9kbD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgn
Zm9ybWF0QmxvY2snKSByZXR1cm5lZCAiZGl2IiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2Yg
IjxkaXY+aGVsbG88L2Rpdj4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1
cm5lZCAiZGwiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGRsPmhlbGxvPC9kbD4iCitQ
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiZHQiIHNlbGVjdGluZyBm
aXJzdCBwb3NpdGlvbiBvZiAiPGR0PmhlbGxvPC9kdD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9y
bWF0QmxvY2snKSByZXR1cm5lZCAiZHQiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGRs
PjxkdD5oZWxsbzwvZHQ+PC9kbD4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSBy
ZXR1cm5lZCAiZm9vdGVyIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxmb290ZXI+aGVs
bG88L2Zvb3Rlcj4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAi
aDEiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGgxPmhlbGxvPC9oMT4iCitQQVNTIHF1
ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiaDIiIHNlbGVjdGluZyBmaXJzdCBw
b3NpdGlvbiBvZiAiPGgyPmhlbGxvPC9oMj4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0Qmxv
Y2snKSByZXR1cm5lZCAiaDMiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGgzPmhlbGxv
PC9oMz4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiaDQiIHNl
bGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGg0PmhlbGxvPC9oND4iCitQQVNTIHF1ZXJ5Q29t
bWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiaDUiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlv
biBvZiAiPGg1PmhlbGxvPC9oNT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSBy
ZXR1cm5lZCAiaDYiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPGg2PmhlbGxvPC9oNj4i
CitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiaGVhZGVyIiBzZWxl
Y3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxoZWFkZXI+aGVsbG88L2hlYWRlcj4iCitQQVNTIHF1
ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAiaGdyb3VwIiBzZWxlY3RpbmcgZmly
c3QgcG9zaXRpb24gb2YgIjxoZ3JvdXA+aGVsbG88L2hncm91cD4iCitQQVNTIHF1ZXJ5Q29tbWFu
ZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAibmF2IiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24g
b2YgIjxuYXY+aGVsbG88L25hdj4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSBy
ZXR1cm5lZCAicCIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8cD5oZWxsbzwvcD4iCitQ
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0QmxvY2snKSByZXR1cm5lZCAicHJlIiBzZWxlY3Rpbmcg
Zmlyc3QgcG9zaXRpb24gb2YgIjxwcmU+aGVsbG88L3ByZT4iCitQQVNTIHF1ZXJ5Q29tbWFuZCgn
Zm9ybWF0QmxvY2snKSByZXR1cm5lZCAic2VjdGlvbiIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9u
IG9mICI8c2VjdGlvbj5oZWxsbzwvc2VjdGlvbj4iCiAKIE5lc3RlZCBjYXNlcwotUEFTUyBxdWVy
eUNvbW1hbmQoJ2Zvcm1hdCcpIHJldHVybmVkICJoMiIKLVBBU1MgcXVlcnlDb21tYW5kKCdmb3Jt
YXQnKSByZXR1cm5lZCAiYWRkcmVzcyIKLVBBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXQnKSByZXR1
cm5lZCAicHJlIgotUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdCcpIHJldHVybmVkICJwcmUiCi1Q
QVNTIHF1ZXJ5Q29tbWFuZCgnZm9ybWF0JykgcmV0dXJuZWQgImFkZHJlc3MiCi1QQVNTIHF1ZXJ5
Q29tbWFuZCgnZm9ybWF0JykgcmV0dXJuZWQgIiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRC
bG9jaycpIHJldHVybmVkICJoMiIgc2VsZWN0aW5nIGZpcnN0IHBvc2l0aW9uIG9mICI8aDE+PGgy
PmhlbGxvPC9oMj48L2gxPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVy
bmVkICJhZGRyZXNzIiBzZWxlY3RpbmcgZmlyc3QgcG9zaXRpb24gb2YgIjxoMT48YWRkcmVzcz5o
ZWxsbzwvYWRkcmVzcz48L2gxPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJl
dHVybmVkICJwcmUiIHNlbGVjdGluZyBmaXJzdCBwb3NpdGlvbiBvZiAiPHByZT5oZWxsbzxwPndv
cmxkPC9wPjwvcHJlPiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVk
ICJwcmUiIHNlbGVjdGluZyAibGxvIHdvIiBvZiAiPHByZT5oZWxsbzxwPndvcmxkPC9wPjwvcHJl
PiIKK1BBU1MgcXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVybmVkICJhZGRyZXNzIiBz
ZWxlY3RpbmcgImxsbyB3byIgb2YgIjxhZGRyZXNzPjxoMT5oZWxsbzwvaDE+d29ybGQ8L2FkZHJl
c3M+IgorUEFTUyBxdWVyeUNvbW1hbmQoJ2Zvcm1hdEJsb2NrJykgcmV0dXJuZWQgIiIgc2VsZWN0
aW5nICJsbG8gd28iIG9mICI8aDE+aGVsbG88L2gxPndvcmxkIgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy9xdWVyeS1mb3JtYXQtYmxvY2suanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvcXVlcnkt
Zm9ybWF0LWJsb2NrLmpzCShyZXZpc2lvbiA2OTg0MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3RzL3F1ZXJ5LWZvcm1hdC1ibG9jay5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSwxNSArMSwxNSBAQAogZGVzY3JpcHRpb24oIlRlc3RzIHF1ZXJ5Q29tbWFuZFZh
bHVlKCdmb3JtYXRCbG9jaycpIikKIAotdmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKK3ZhciB0ZXN0Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOwogdGVzdENvbnRhaW5lci5jb250ZW50RWRpdGFibGUgPSB0cnVlOwogZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXN0Q29udGFpbmVyKTsKIAogZnVuY3Rpb24gcXVlcnlG
b3JtYXRCbG9jayhzZWxlY3RvciwgY29udGVudCwgZXhwZWN0ZWQpCiB7CiAgICAgdGVzdENvbnRh
aW5lci5pbm5lckhUTUwgPSBjb250ZW50OwotICAgIHNlbGVjdG9yKHRlc3RDb250YWluZXIpOwor
ICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdG9yKHRlc3RDb250YWluZXIpOwogICAgIHZhciBhY3R1
YWwgPSBkb2N1bWVudC5xdWVyeUNvbW1hbmRWYWx1ZSgnZm9ybWF0QmxvY2snKTsKLSAgICB2YXIg
YWN0aW9uID0gInF1ZXJ5Q29tbWFuZCgnZm9ybWF0JykgcmV0dXJuZWQgXCIiICsgYWN0dWFsICsg
JyInOworICAgIHZhciBhY3Rpb24gPSAicXVlcnlDb21tYW5kKCdmb3JtYXRCbG9jaycpIHJldHVy
bmVkIFwiIiArIGFjdHVhbCArICciIHNlbGVjdGluZyAnICsgc2VsZWN0ZWQgKyAnIG9mICInICsg
Y29udGVudCArICciJzsKICAgICBpZiAoYWN0dWFsID09IGV4cGVjdGVkKQogICAgICAgICB0ZXN0
UGFzc2VkKGFjdGlvbik7CiAgICAgZWxzZQpAQCAtMjAsNiArMjAsNyBAQCBmdW5jdGlvbiBzZWxl
Y3RGaXJzdFBvc2l0aW9uKGNvbnRhaW5lcikgCiAgICAgd2hpbGUgKGNvbnRhaW5lci5maXJzdENo
aWxkKQogICAgICAgICBjb250YWluZXIgPSBjb250YWluZXIuZmlyc3RDaGlsZDsKICAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oY29udGFpbmVyLCAwKTsKKyAgICByZXR1cm4g
J2ZpcnN0IHBvc2l0aW9uJwogfQogCiBmdW5jdGlvbiBzZWxlY3RNaWRkbGVPZkhlbGxvV29ybGQo
Y29udGFpbmVyKSB7CkBAIC0zMCwyMCArMzEsNzYgQEAgZnVuY3Rpb24gc2VsZWN0TWlkZGxlT2ZI
ZWxsb1dvcmxkKGNvbnRhaQogICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVu
ZCcsICdmb3J3YXJkJywgJ2NoYXJhY3RlcicpOwogICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5t
b2RpZnkoJ2V4dGVuZCcsICdmb3J3YXJkJywgJ2NoYXJhY3RlcicpOwogICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdmb3J3YXJkJywgJ2NoYXJhY3RlcicpOworICAg
IHJldHVybiAnImxsbyB3byInCiB9CiAKIGRlYnVnKCdCYXNpYyBjYXNlcycpOwotcXVlcnlGb3Jt
YXRCbG9jayhmdW5jdGlvbiAoKSB7fSwgJ2hlbGxvJywgJycpOworcXVlcnlGb3JtYXRCbG9jayhm
dW5jdGlvbiAoKSB7cmV0dXJuICdub25lJyB9LCAnaGVsbG8nLCAnJyk7CiBxdWVyeUZvcm1hdEJs
b2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICdoZWxsbycsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2so
c2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxhPmhlbGxvPC9hPicsICcnKTsKK3F1ZXJ5Rm9ybWF0Qmxv
Y2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxhYmJyPmhlbGxvPC9hYmJyPicsICcnKTsKK3F1ZXJ5
Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxhY3JvbnltPmhlbGxvPC9hY3Jvbnlt
PicsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxiPmhlbGxv
PC9iPicsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxiZG8+
aGVsbG88L2Jkbz4nLCAnJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24s
ICc8YmlnPmhlbGxvPC9iaWc+JywgJycpOworcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBv
c2l0aW9uLCAnPGJ1dHRvbj5oZWxsbzwvYnV0dG9uPicsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2so
c2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxjYXB0aW9uPmhlbGxvPC9jYXB0aW9uPicsICcnKTsKK3F1
ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxjZW50ZXI+aGVsbG88L2NlbnRl
cj4nLCAnJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8Y2l0ZT5o
ZWxsbzwvY2l0ZT4nLCAnJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24s
ICc8Y29kZT5oZWxsbzwvY29kZT4nLCAnJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0
UG9zaXRpb24sICc8ZGVsPmhlbGxvPC9kZWw+JywgJycpOworcXVlcnlGb3JtYXRCbG9jayhzZWxl
Y3RGaXJzdFBvc2l0aW9uLCAnPGRmbj5oZWxsbzwvZGZuPicsICcnKTsKK3F1ZXJ5Rm9ybWF0Qmxv
Y2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxkaXI+aGVsbG88L2Rpcj4nLCAnJyk7CitxdWVyeUZv
cm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8ZW0+aGVsbG88L2VtPicsICcnKTsKK3F1
ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxmb3JtPjxmaWVsZHNldD5oZWxs
bzwvZmllbGRzZXQ+PC9mb3JtPicsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQ
b3NpdGlvbiwgJzxmb250PmhlbGxvPC9mb250PicsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2Vs
ZWN0Rmlyc3RQb3NpdGlvbiwgJzxmb3JtPmhlbGxvPC9mb3JtPicsICcnKTsKK3F1ZXJ5Rm9ybWF0
QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxpPmhlbGxvPC9pPicsICcnKTsKK3F1ZXJ5Rm9y
bWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxrYmQ+aGVsbG88L2tiZD4nLCAnJyk7Citx
dWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8bGFiZWw+aGVsbG88L2xhYmVs
PicsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxsZWdlbmQ+
aGVsbG88L2xlZ2VuZD4nLCAnJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRp
b24sICc8dWw+PGxpPmhlbGxvPGxpPjwvdWw+JywgJycpOworcXVlcnlGb3JtYXRCbG9jayhzZWxl
Y3RGaXJzdFBvc2l0aW9uLCAnPG1lbnU+aGVsbG88L21lbnU+JywgJycpOworcXVlcnlGb3JtYXRC
bG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPG9sPmhlbGxvPC9vbD4nLCAnJyk7CitxdWVyeUZv
cm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8cT5oZWxsbzwvcT4nLCAnJyk7CitxdWVy
eUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8cz5oZWxsbzwvcz4nLCAnJyk7Citx
dWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8c2FtcD5oZWxsbzwvc2FtcD4n
LCAnJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8c21hbGw+aGVs
bG88L3NtYWxsPicsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwg
JzxzcGFuPmhlbGxvPC9zcGFuPicsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQ
b3NpdGlvbiwgJzxzdHJpa2U+aGVsbG88L3N0cmlrZT4nLCAnJyk7CitxdWVyeUZvcm1hdEJsb2Nr
KHNlbGVjdEZpcnN0UG9zaXRpb24sICc8c3Ryb25nPmhlbGxvPC9zdHJvbmc+JywgJycpOworcXVl
cnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPHN1Yj5oZWxsbzwvc3ViPicsICcn
KTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxzdXA+aGVsbG88L3N1
cD4nLCAnJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8dGFibGU+
PHRkPmhlbGxvPC90ZD48L3RhYmxlPicsICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmly
c3RQb3NpdGlvbiwgJzx0YWJsZT48dGg+aGVsbG88L3RoPjwvdGFibGU+JywgJycpOworcXVlcnlG
b3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPHR0PmhlbGxvPC90dD4nLCAnJyk7Citx
dWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8dT5oZWxsbzwvdT4nLCAnJyk7
CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8dWw+aGVsbG88L3VsPics
ICcnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzx2YXI+aGVsbG88
L3Zhcj4nLCAnJyk7CisKIHF1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxh
ZGRyZXNzPmhlbGxvPC9hZGRyZXNzPicsICdhZGRyZXNzJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNl
bGVjdEZpcnN0UG9zaXRpb24sICc8YXJ0aWNsZT5oZWxsbzwvYXJ0aWNsZT4nLCAnYXJ0aWNsZScp
OworcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPGFzaWRlPmhlbGxvPC9h
c2lkZT4nLCAnYXNpZGUnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwg
JzxibG9ja3F1b3RlPmhlbGxvPC9ibG9ja3F1b3RlPicsICdibG9ja3F1b3RlJyk7CitxdWVyeUZv
cm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8ZGQ+aGVsbG88L2RkPicsICdkZCcpOwor
cXVlcnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPGRsPjxkZD5oZWxsbzwvZGQ+
PC9kbD4nLCAnZGQnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxk
aXY+aGVsbG88L2Rpdj4nLCAnZGl2Jyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9z
aXRpb24sICc8ZGw+aGVsbG88L2RsPicsICdkbCcpOworcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RG
aXJzdFBvc2l0aW9uLCAnPGR0PmhlbGxvPC9kdD4nLCAnZHQnKTsKK3F1ZXJ5Rm9ybWF0QmxvY2so
c2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxkbD48ZHQ+aGVsbG88L2R0PjwvZGw+JywgJ2R0Jyk7Citx
dWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8Zm9vdGVyPmhlbGxvPC9mb290
ZXI+JywgJ2Zvb3RlcicpOwogcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAn
PGgxPmhlbGxvPC9oMT4nLCAnaDEnKTsKIHF1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3Np
dGlvbiwgJzxoMj5oZWxsbzwvaDI+JywgJ2gyJyk7CiBxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZp
cnN0UG9zaXRpb24sICc8aDM+aGVsbG88L2gzPicsICdoMycpOwogcXVlcnlGb3JtYXRCbG9jayhz
ZWxlY3RGaXJzdFBvc2l0aW9uLCAnPGg0PmhlbGxvPC9oND4nLCAnaDQnKTsKIHF1ZXJ5Rm9ybWF0
QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxoNT5oZWxsbzwvaDU+JywgJ2g1Jyk7CiBxdWVy
eUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8aDY+aGVsbG88L2g2PicsICdoNicp
OworcXVlcnlGb3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPGhlYWRlcj5oZWxsbzwv
aGVhZGVyPicsICdoZWFkZXInKTsKK3F1ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlv
biwgJzxoZ3JvdXA+aGVsbG88L2hncm91cD4nLCAnaGdyb3VwJyk7CitxdWVyeUZvcm1hdEJsb2Nr
KHNlbGVjdEZpcnN0UG9zaXRpb24sICc8bmF2PmhlbGxvPC9uYXY+JywgJ25hdicpOwogcXVlcnlG
b3JtYXRCbG9jayhzZWxlY3RGaXJzdFBvc2l0aW9uLCAnPHA+aGVsbG88L3A+JywgJ3AnKTsKIHF1
ZXJ5Rm9ybWF0QmxvY2soc2VsZWN0Rmlyc3RQb3NpdGlvbiwgJzxwcmU+aGVsbG88L3ByZT4nLCAn
cHJlJyk7CitxdWVyeUZvcm1hdEJsb2NrKHNlbGVjdEZpcnN0UG9zaXRpb24sICc8c2VjdGlvbj5o
ZWxsbzwvc2VjdGlvbj4nLCAnc2VjdGlvbicpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnTmVzdGVk
IGNhc2VzJyk7Cg==
</data>
<flag name="review"
          id="60816"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>