<?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>27174</bug_id>
          
          <creation_ts>2009-07-11 01:02:40 -0700</creation_ts>
          <short_desc>XSSAuditor needs cleanup</short_desc>
          <delta_ts>2009-07-22 16:27:30 -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>WebCore Misc.</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>XSSAuditor</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>27494</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>131102</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-11 01:02:40 -0700</bug_when>
    <thetext>Now that we&apos;ve gotten all the known false negatives squared away, it&apos;s time to do a cleanup patch for the XSSAuditor.  For example, findInURL takes too many Boolean arguments.  I&apos;ll post a patch in a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133878</commentid>
    <comment_count>1</comment_count>
      <attachid>33286</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-07-22 13:29:04 -0700</bug_when>
    <thetext>Created attachment 33286
Patch with tests

This patch also addresses bug #26938.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133896</commentid>
    <comment_count>2</comment_count>
      <attachid>33286</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-22 14:22:19 -0700</bug_when>
    <thetext>Comment on attachment 33286
Patch with tests

Spoke to Dan in person.  We want to remove all the slashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133940</commentid>
    <comment_count>3</comment_count>
      <attachid>33299</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-07-22 15:16:57 -0700</bug_when>
    <thetext>Created attachment 33299
Patch

Updated patch, removed XSSAuditor::stripSlashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133943</commentid>
    <comment_count>4</comment_count>
      <attachid>33301</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-07-22 15:23:42 -0700</bug_when>
    <thetext>Created attachment 33301
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133944</commentid>
    <comment_count>5</comment_count>
      <attachid>33301</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-22 15:24:43 -0700</bug_when>
    <thetext>Comment on attachment 33301
patch

Thanks Dan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133979</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-22 16:27:30 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/http/tests/security/xssAuditor/resources/echo-intertag-addslashes.pl
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-backslash-expected.txt
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-backslash.html
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-double-quote-expected.txt
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-double-quote.html
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-null-char-expected.txt
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-null-char.html
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-single-quote-expected.txt
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-single-quote.html
	M	WebCore/ChangeLog
	M	WebCore/page/XSSAuditor.cpp
	M	WebCore/page/XSSAuditor.h
Committed r46250
	M	WebKitTools/ChangeLog
	M	WebKitTools/Scripts/modules/cpplint_unittest.py
	M	WebKitTools/Scripts/modules/cpplint.py
r46248 = cda7d0b0e991f7b929f194698f2f703bff126f51 (trunk)
	M	WebKitTools/ChangeLog
	D	WebKitTools/Scripts/run-webkit-lint
	A	WebKitTools/Scripts/check-webkit-style
r46249 = afae2f5bd610037dc1cf72c9a9af625b855fa68c (trunk)
	M	WebCore/ChangeLog
	M	WebCore/page/XSSAuditor.cpp
	M	WebCore/page/XSSAuditor.h
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-single-quote-expected.txt
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-single-quote.html
	A	LayoutTests/http/tests/security/xssAuditor/resources/echo-intertag-addslashes.pl
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-backslash-expected.txt
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-backslash.html
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-null-char-expected.txt
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-double-quote-expected.txt
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-null-char.html
	A	LayoutTests/http/tests/security/xssAuditor/script-tag-addslashes-double-quote.html
	M	LayoutTests/ChangeLog
r46250 = 1f56a65a26d0efe48750fa4c52bdb65a74767f42 (trunk)
First, rewinding head to replay your work on top of it...
Nothing to do.
http://trac.webkit.org/changeset/46250</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33286</attachid>
            <date>2009-07-22 13:29:04 -0700</date>
            <delta_ts>2009-07-22 15:16:57 -0700</delta_ts>
            <desc>Patch with tests</desc>
            <filename>Bug27174_1.patch</filename>
            <type>text/plain</type>
            <size>19460</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjIzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDktMDctMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTc0CisgICAgICAgIEFu
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzgK
KyAgICAgICAgCisgICAgICAgIENvZGUgY2xlYW51cC4gSW1wbGVtZW50cyBzdXBwb3J0IGZvciBk
ZXRlY3RpbmcgYXR0YWNrcyB0cmFuc2Zvcm1lZCBieSAKKyAgICAgICAgUEhQIE1hZ2ljIFF1b3Rl
cy9QSFAgYWRkc2xhc2hlcygpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWJhY2tzbGFzaC5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFz
aGVzLWRvdWJsZS1xdW90ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLW51bGwtY2hhci5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFz
aGVzLXNpbmdsZS1xdW90ZS5odG1sCisKKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RyaXBTbGFzaGVzKTogUmVtb3ZlcyBiYWNrc2xhc2hlcyBhY2Nv
cmRpbmcgdG8gUEhQIHN0cmlwc2xhc2hlcygpLgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6Y2FuRXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Y2FuRXZhbHVh
dGVKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmNhbkxvYWRP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6bm9ybWFsaXplKTogRGVjb2Rl
cyBIVE1MIGVudGl0aWVzLCByZW1vdmVzIGJhY2tzbGFzaGVzLAorICAgICAgICBhbmQgcmVtb3Zl
cyBjb250cm9sIGNoYXJhY3RlcnMgdGhhdCBjb3VsZCBvdGhlcndpc2UgY2F1c2UgYSBkaXNjcmVw
YW5jeSBiZXR3ZWVuCisgICAgICAgIHRoZSBzb3VyY2UgY29kZSBvZiBhIHNjcmlwdCBhbmQgdGhl
IG91dGdvaW5nIEhUVFAgcGFyYW1ldGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmRlY29kZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0
KToKKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ29udHJv
bENoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5oOiBFeHBvc2VkIG1ldGhvZCBpc0NvbnRyb2xDaGFyYWN0ZXIuCisKIDIwMDktMDctMjIg
IFBhdWwgR29kYXZhcmkgIDxwYXVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lvbiA0NjIyNykKKysr
IFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYs
MzIgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgYm9vbCBpc05vbk51bGxDb250cm9sQ2hhcmFjdGVyKFVDaGFyIGMpCitzdGF0aWMgU3RyaW5n
IHN0cmlwU2xhc2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gKGMgPiAn
XDAnICYmIGMgPCAnICcpIHx8IGMgPT0gMTI3OworICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0Owor
ICAgIAorICAgIGludCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaW50IHBvcyA9IDA7
CisgICAgaW50IHNlYXJjaFBvc2l0aW9uID0gMDsKKyAgICB3aGlsZSAoKHBvcyA9IHN0cmluZy5m
aW5kKCdcXCcsIHNlYXJjaFBvc2l0aW9uKSkgPj0gMCkgeworICAgICAgICByZXN1bHQuYXBwZW5k
KHN0cmluZy5jaGFyYWN0ZXJzKCkgKyBzZWFyY2hQb3NpdGlvbiwgcG9zIC0gc2VhcmNoUG9zaXRp
b24pOworICAgICAgICBpZiAocG9zICsgMSA8IGxlbmd0aCkgeworICAgICAgICAgICAgc3dpdGNo
IChzdHJpbmdbcG9zICsgMV0pIHsKKyAgICAgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAnMCc6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXDAnKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChzdHJpbmdbcG9zICsgMV0pOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNlYXJjaFBvc2l0aW9uID0gcG9z
ICsgMjsKKyAgICB9CisgICAgcmVzdWx0LmFwcGVuZChzdHJpbmcuY2hhcmFjdGVycygpICsgc2Vh
cmNoUG9zaXRpb24sIGxlbmd0aCAtIHNlYXJjaFBvc2l0aW9uKTsKKyAgICByZXR1cm4gU3RyaW5n
OjphZG9wdChyZXN1bHQpOwogfQogCiBYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKEZyYW1lKiBmcmFt
ZSkKQEAgLTcxLDcgKzk0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZShjb25zdCBT
dHJpbgogICAgIGlmICghaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKGZpbmRJblJlcXVlc3Qoc291cmNlQ29kZSwgZmFsc2UsIHRydWUsIGZhbHNlKSkgeworICAg
IGlmIChmaW5kSW5SZXF1ZXN0KHNvdXJjZUNvZGUsIGZhbHNlKSkgewogICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRl
IGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4g
cmVxdWVzdC5cbiIpKTsKICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+
YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtODQsNyArMTA3LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZUphdmFTY3Jp
cHRVUgogICAgIGlmICghaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKGZpbmRJblJlcXVlc3QoY29kZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlKSkgeworICAg
IGlmIChmaW5kSW5SZXF1ZXN0KGNvZGUpKSB7CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0
IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LlxuIikp
OwogICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpT
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xl
TWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjMsNyAr
MTQ2LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0cgogICAgIGlm
ICghaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGZpbmRJblJl
cXVlc3QodXJsLCBmYWxzZSwgZmFsc2UpKSB7CisgICAgaWYgKGZpbmRJblJlcXVlc3QodXJsKSkg
ewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgi
UmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNj
cmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdCIpKTsKICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93
KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ1LDggKzE2OCwxOCBAQCBib29sIFhTU0F1ZGl0b3I6OmNh
blNldEJhc2VFbGVtZW50VVJMKGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBYU1NB
dWRpdG9yOjpkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IFRleHRFbmNvZGluZyYg
ZW5jb2RpbmcsIGJvb2wgYWxsb3dOdWxsQ2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBhbGxvd05vbk51bGxDb250cm9sQ2hhcmFjdGVycywgYm9vbCBkZWNvZGVI
VE1MZW50aXRpZXMsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCkK
K1N0cmluZyBYU1NBdWRpdG9yOjpub3JtYWxpemUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
cmVtb3ZlQmFja3NsYXNoZXMpCit7CisgICAgU3RyaW5nIHJlc3VsdCA9IGRlY29kZUhUTUxFbnRp
dGllcyhzdHJpbmcpOworICAgIGlmIChyZW1vdmVCYWNrc2xhc2hlcykKKyAgICAgICAgcmVzdWx0
ID0gc3RyaXBTbGFzaGVzKHJlc3VsdCk7CisgICAgU3RyaW5nIGNsZWFuZWRTdHJpbmcgPSByZXN1
bHQucmVtb3ZlQ2hhcmFjdGVycygmaXNDb250cm9sQ2hhcmFjdGVyKTsKKyAgICBpZiAoIWNsZWFu
ZWRTdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXN1bHQgPSBjbGVhbmVkU3RyaW5nOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVVUkwoY29uc3Qg
U3RyaW5nJiBzdHIsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgZGVjb2RlSFRN
TGVudGl0aWVzKQogewogICAgIFN0cmluZyByZXN1bHQ7CiAgICAgU3RyaW5nIHVybCA9IHN0cjsK
QEAgLTE1NywxNCArMTkwLDcgQEAgU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZVVSTChjb25zdCBT
dHJpbgogICAgIGlmICghZGVjb2RlZFJlc3VsdC5pc0VtcHR5KCkpCiAgICAgICAgIHJlc3VsdCA9
IGRlY29kZWRSZXN1bHQ7CiAgICAgaWYgKGRlY29kZUhUTUxlbnRpdGllcykKLSAgICAgICAgcmVz
dWx0ID0gZGVjb2RlSFRNTEVudGl0aWVzKHJlc3VsdCwgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRp
dGllc1VudG91Y2hlZCk7Ci0gICAgaWYgKCFhbGxvd051bGxDaGFyYWN0ZXJzKQotICAgICAgICBy
ZXN1bHQgPSBTdHJpbmdJbXBsOjpjcmVhdGVTdHJpcHBpbmdOdWxsQ2hhcmFjdGVycyhyZXN1bHQu
Y2hhcmFjdGVycygpLCByZXN1bHQubGVuZ3RoKCkpOwotICAgIGlmICghYWxsb3dOb25OdWxsQ29u
dHJvbENoYXJhY3RlcnMpIHsKLSAgICAgICAgZGVjb2RlZFJlc3VsdCA9IHJlc3VsdC5yZW1vdmVD
aGFyYWN0ZXJzKCZpc05vbk51bGxDb250cm9sQ2hhcmFjdGVyKTsKLSAgICAgICAgaWYgKCFkZWNv
ZGVkUmVzdWx0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGRlY29kZWRSZXN1bHQ7
Ci0gICAgfQorICAgICAgICByZXN1bHQgPSBkZWNvZGVIVE1MRW50aXRpZXMocmVzdWx0KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMDUsMjIgKzIzMSwxOCBAQCBTdHJpbmcgWFNTQXVk
aXRvcjo6ZGVjb2RlSFRNTEVudGl0aWVzKGNvCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVz
dWx0KTsKIH0KIAotYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIG1hdGNoTnVsbENoYXJhY3RlcnMsIGJvb2wgbWF0Y2hOb25OdWxsQ29udHJv
bENoYXJhY3RlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVI
VE1MZW50aXRpZXMsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCkg
Y29uc3QKK2Jvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIHN0cmlu
ZywgYm9vbCBkZWNvZGVIVE1MZW50aXRpZXMpIGNvbnN0CiB7CiAgICAgYm9vbCByZXN1bHQgPSBm
YWxzZTsKICAgICBGcmFtZSogcGFyZW50RnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgp
OwogICAgIGlmIChwYXJlbnRGcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSA9PSBi
bGFua1VSTCgpKQotICAgICAgICByZXN1bHQgPSBmaW5kSW5SZXF1ZXN0KHBhcmVudEZyYW1lLCBz
dHJpbmcsIG1hdGNoTnVsbENoYXJhY3RlcnMsIG1hdGNoTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXJz
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVIVE1MZW50aXRpZXMsIGxl
YXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQpOworICAgICAgICByZXN1bHQgPSBm
aW5kSW5SZXF1ZXN0KHBhcmVudEZyYW1lLCBzdHJpbmcsIGRlY29kZUhUTUxlbnRpdGllcyk7CiAg
ICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IGZpbmRJblJlcXVlc3QobV9mcmFtZSwg
c3RyaW5nLCBtYXRjaE51bGxDaGFyYWN0ZXJzLCBtYXRjaE5vbk51bGxDb250cm9sQ2hhcmFjdGVy
cywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlSFRNTGVudGl0aWVzLCBs
ZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3VjaGVkKTsKKyAgICAgICAgcmVzdWx0ID0g
ZmluZEluUmVxdWVzdChtX2ZyYW1lLCBzdHJpbmcsIGRlY29kZUhUTUxlbnRpdGllcyk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KEZyYW1l
KiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgbWF0Y2hOdWxsQ2hhcmFjdGVycywg
Ym9vbCBtYXRjaE5vbk51bGxDb250cm9sQ2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGRlY29kZUhUTUxlbnRpdGllcywgYm9vbCBsZWF2ZVVuZGVjb2RhYmxl
SFRNTEVudGl0aWVzVW50b3VjaGVkKSBjb25zdAorYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1
ZXN0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgZGVjb2RlSFRNTGVu
dGl0aWVzKSBjb25zdAogewogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgU3Ry
aW5nIHBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CkBAIC0yMzYs
MTEgKzI1OCwxMSBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoRnJhbWUqIGZyCiAg
ICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIFN0
cmluZyBub3JtYWxpemVkU3RyaW5nID0gbm9ybWFsaXplKHN0cmluZywgdHJ1ZSk7CiAgICAgaWYg
KHN0cmluZy5sZW5ndGgoKSA8IHBhZ2VVUkwubGVuZ3RoKCkpIHsKICAgICAgICAgLy8gVGhlIHN0
cmluZyBjYW4gYWN0dWFsbHkgZml0IGluc2lkZSB0aGUgcGFnZVVSTC4KLSAgICAgICAgU3RyaW5n
IGRlY29kZWRQYWdlVVJMID0gZGVjb2RlVVJMKHBhZ2VVUkwsIGZyYW1lLT5kb2N1bWVudCgpLT5k
ZWNvZGVyKCktPmVuY29kaW5nKCksIG1hdGNoTnVsbENoYXJhY3RlcnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE5vbk51bGxDb250cm9sQ2hhcmFjdGVy
cywgZGVjb2RlSFRNTGVudGl0aWVzLCBsZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3Vj
aGVkKTsKLSAgICAgICAgaWYgKGRlY29kZWRQYWdlVVJMLmZpbmQoc3RyaW5nLCAwLCBmYWxzZSkg
IT0gLTEpCisgICAgICAgIFN0cmluZyBkZWNvZGVkUGFnZVVSTCA9IG5vcm1hbGl6ZShkZWNvZGVV
UkwocGFnZVVSTCwgZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSwgZGVj
b2RlSFRNTGVudGl0aWVzKSk7CisgICAgICAgIGlmIChkZWNvZGVkUGFnZVVSTC5maW5kKG5vcm1h
bGl6ZWRTdHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkKICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAv
LyBXZSd2ZSBmb3VuZCB0aGUgc21va2luZyBndW4uCiAgICAgfQogCkBAIC0yNTIsOSArMjc0LDgg
QEAgYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KEZyYW1lKiBmcgogICAgICAgICAgICAg
Ly8gdGhlIHVybC1lbmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNlIHRoZSBsZW5ndGggb2YgdGhlIHVy
bC1kZWNvZGVkCiAgICAgICAgICAgICAvLyBjb2RlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0
aGUgbGVuZ3RoIG9mIHRoZSB1cmwtZW5jb2RlZAogICAgICAgICAgICAgLy8gc3RyaW5nLgotICAg
ICAgICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IGRlY29kZVVSTChmb3JtRGF0YSwgZnJh
bWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSwgbWF0Y2hOdWxsQ2hhcmFjdGVy
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hO
b25OdWxsQ29udHJvbENoYXJhY3RlcnMsIGRlY29kZUhUTUxlbnRpdGllcywgbGVhdmVVbmRlY29k
YWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCk7Ci0gICAgICAgICAgICBpZiAoZGVjb2RlZEZvcm1E
YXRhLmZpbmQoc3RyaW5nLCAwLCBmYWxzZSkgIT0gLTEpCisgICAgICAgICAgICBTdHJpbmcgZGVj
b2RlZEZvcm1EYXRhID0gbm9ybWFsaXplKGRlY29kZVVSTChmb3JtRGF0YSwgZnJhbWUtPmRvY3Vt
ZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSwgZGVjb2RlSFRNTGVudGl0aWVzKSk7CisgICAg
ICAgICAgICBpZiAoZGVjb2RlZEZvcm1EYXRhLmZpbmQobm9ybWFsaXplZFN0cmluZywgMCwgZmFs
c2UpICE9IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gV2UgZm91bmQgdGhl
IHN0cmluZyBpbiB0aGUgUE9TVCBkYXRhLgogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29y
ZS9wYWdlL1hTU0F1ZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRv
ci5oCShyZXZpc2lvbiA0NjIyNykKKysrIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk5LDE3ICs5OSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgY2FuU2V0QmFzZUVsZW1lbnRVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVVUkwoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcgPSBVVEY4RW5jb2RpbmcoKSwgYm9v
bCBhbGxvd051bGxDaGFyYWN0ZXJzID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgYWxsb3dOb25OdWxsQ29udHJvbENoYXJhY3RlcnMgPSB0cnVlLCBib29sIGRl
Y29kZUhUTUxlbnRpdGllcyA9IHRydWUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQgPSBmYWxzZSk7Cisg
ICAgICAgIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXplKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29s
IHJlbW92ZUJhY2tzbGFzaGVzID0gZmFsc2UpOwogICAgICAgICAKLSAgICAgICAgc3RhdGljIFN0
cmluZyBkZWNvZGVIVE1MRW50aXRpZXMoY29uc3QgU3RyaW5nJiwgYm9vbCBsZWF2ZVVuZGVjb2Rh
YmxlSFRNTEVudGl0aWVzVW50b3VjaGVkID0gZmFsc2UpOworICAgICAgICBzdGF0aWMgU3RyaW5n
IGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGlu
ZyA9IFVURjhFbmNvZGluZygpLCBib29sIGRlY29kZUhUTUxlbnRpdGllcyA9IHRydWUpOworICAg
ICAgICAKKyAgICAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVIVE1MRW50aXRpZXMoY29uc3QgU3Ry
aW5nJiwgYm9vbCBsZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3VjaGVkID0gdHJ1ZSk7
CiAKLSAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGJvb2wgbWF0Y2hO
dWxsQ2hhcmFjdGVycyA9IHRydWUsIGJvb2wgbWF0Y2hOb25OdWxsQ29udHJvbENoYXJhY3RlcnMg
PSB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVIVE1MZW50aXRp
ZXMgPSB0cnVlLCBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQgPSBm
YWxzZSkgY29uc3Q7CisgICAgICAgIGJvb2wgZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmLCBi
b29sIGRlY29kZUhUTUxlbnRpdGllcyA9IHRydWUpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgZmlu
ZEluUmVxdWVzdChGcmFtZSosIGNvbnN0IFN0cmluZyYsIGJvb2wgbWF0Y2hOdWxsQ2hhcmFjdGVy
cyA9IHRydWUsIGJvb2wgbWF0Y2hOb25OdWxsQ29udHJvbENoYXJhY3RlcnMgPSB0cnVlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVIVE1MZW50aXRpZXMgPSB0cnVlLCBi
b29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQgPSBmYWxzZSkgY29uc3Q7
CisgICAgICAgIGJvb2wgZmluZEluUmVxdWVzdChGcmFtZSosIGNvbnN0IFN0cmluZyYsIGJvb2wg
ZGVjb2RlSFRNTGVudGl0aWVzID0gdHJ1ZSkgY29uc3Q7CiAKICAgICAgICAgLy8gVGhlIGZyYW1l
IHRvIGF1ZGl0LgogICAgICAgICBGcmFtZSogbV9mcmFtZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gNDYy
MjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNyArNTAyLDcgQEAgc3RhdGljIGJvb2wgaXNDYWNoZUhl
YWRlclNlcGFyYXRvcihVQ2hhcgogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNDb250cm9sQ2hh
cmFjdGVyKFVDaGFyIGMpCitib29sIGlzQ29udHJvbENoYXJhY3RlcihVQ2hhciBjKQogewogICAg
IHJldHVybiBjIDwgJyAnIHx8IGMgPT0gMTI3OwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDQ2MjI3KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2Miw2ICsxNjIsOCBAQCBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YSB7CiAgICAgdGltZV90IG1fbGFzdE1vZGlmaWVkRGF0ZTsKIH07CiAKK2Jvb2wgaXND
b250cm9sQ2hhcmFjdGVyKFVDaGFyIGMpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjIzNCkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDA5LTA3LTIyICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAaW50dWRhdGEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE3NAorICAgICAgICBBbmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTM4CisgICAgICAgIAorICAg
ICAgICBUZXN0cyBwcmV2ZW50aW9uIG9mIGF0dGFja3MgdHJhbnNmb3JtZWQgYnkgUEhQIE1hZ2lj
IFF1b3Rlcy9QSFAgYWRkc2xhc2hlcygpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWFkZHNsYXNoZXMucGw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFk
ZHNsYXNoZXMtYmFja3NsYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1iYWNrc2xhc2gu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Nj
cmlwdC10YWctYWRkc2xhc2hlcy1kb3VibGUtcXVvdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFz
aGVzLWRvdWJsZS1xdW90ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLW51bGwtY2hhci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3Jp
cHQtdGFnLWFkZHNsYXNoZXMtbnVsbC1jaGFyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtc2luZ2xlLXF1
b3RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1zaW5nbGUtcXVvdGUuaHRtbDogQWRkZWQu
CisKIDIwMDktMDctMjIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1iYWNrc2xhc2gtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtYmFja3NsYXNoLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9z
Y3JpcHQtdGFnLWFkZHNsYXNoZXMtYmFja3NsYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVj
dXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRo
aW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWJhY2tzbGFzaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFn
LWFkZHNsYXNoZXMtYmFja3NsYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWJhY2tz
bGFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
eHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBsP3E9JTNDc2Ny
aXB0JTNFdmFyK2JvZ3VzJTNELyU1Qy8lM0JhbGVydCUyOC9YU1MvJTI5JTNCJTNDL3NjcmlwdCUz
RSI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtZG91YmxlLXF1
b3RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWRvdWJsZS1xdW90ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWRvdWJsZS1xdW90ZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBz
Y3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1kb3VibGUtcXVv
dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWRvdWJsZS1xdW90ZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Njcmlw
dC10YWctYWRkc2xhc2hlcy1kb3VibGUtcXVvdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0
cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0iaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0
YWctYWRkc2xhc2hlcy5wbD9xPSUzQ3NjcmlwdCUzRXZhcitib2d1cyUzRC8lMjIvJTNCYWxlcnQl
MjgvWFNTLyUyOSUzQiUzQy9zY3JpcHQlM0UiPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0
LXRhZy1hZGRzbGFzaGVzLW51bGwtY2hhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xh
c2hlcy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1udWxs
LWNoYXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4g
U291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCisKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNs
YXNoZXMtbnVsbC1jaGFyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1udWxsLWNoYXIuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtbnVsbC1jaGFyLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVu
YWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hv
LWludGVydGFnLWFkZHNsYXNoZXMucGw/cT0lM0NzY3JpcHQlM0V2YXIrYm9ndXMlM0QvJTAwLyUz
QmFsZXJ0JTI4L1hTUy8lMjklM0IlM0Mvc2NyaXB0JTNFIj4KKzwvaWZyYW1lPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L3NjcmlwdC10YWctYWRkc2xhc2hlcy1zaW5nbGUtcXVvdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQt
dGFnLWFkZHNsYXNoZXMtc2luZ2xlLXF1b3RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFk
ZHNsYXNoZXMtc2luZ2xlLXF1b3RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2
YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVz
dC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
c2NyaXB0LXRhZy1hZGRzbGFzaGVzLXNpbmdsZS1xdW90ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNs
YXNoZXMtc2luZ2xlLXF1b3RlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLXNpbmdsZS1x
dW90ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
eHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBsP3E9JTNDc2Ny
aXB0JTNFdmFyK2JvZ3VzJTNELyUyNy8lM0JhbGVydCUyOC9YU1MvJTI5JTNCJTNDL3NjcmlwdCUz
RSI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFz
aGVzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBsCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNl
cy9lY2hvLWludGVydGFnLWFkZHNsYXNoZXMucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIg
QEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7Cit1c2UgQ0dJOworCitteSAkY2dp
ID0gbmV3IENHSTsKKworc3ViIGFkZFNsYXNoZXMKK3sKKyAgICBteSAoJHN0cikgPSBAXzsKKyAg
ICAkc3RyID1+IHMvKFsnIlxcXSkvXFwkMS9nOworICAgICRzdHIgPX4gcy8oW1wwXSkvXFwwL2c7
CisgICAgcmV0dXJuICRzdHI7Cit9CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvaHRtbDsg
Y2hhcnNldD1VVEYtOFxuXG4iOworCitwcmludCAiPCFET0NUWVBFIGh0bWw+XG4iOworcHJpbnQg
IjxodG1sPlxuIjsKK3ByaW50ICI8Ym9keT5cbiI7CitwcmludCBhZGRTbGFzaGVzKCRjZ2ktPnBh
cmFtKCdxJykpOworcHJpbnQgIjwvYm9keT5cbiI7CitwcmludCAiPC9odG1sPlxuIjsKClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBsCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOmV4ZWN1dGFibGUKICAgKyAqCgo=
</data>
<flag name="review"
          id="17591"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33299</attachid>
            <date>2009-07-22 15:16:57 -0700</date>
            <delta_ts>2009-07-22 15:23:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug27174_2.patch</filename>
            <type>text/plain</type>
            <size>18573</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjI0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDctMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTc0CisgICAgICAgIEFu
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzgK
KyAgICAgICAgCisgICAgICAgIENvZGUgY2xlYW51cC4gSW1wbGVtZW50cyBzdXBwb3J0IGZvciBk
ZXRlY3RpbmcgYXR0YWNrcyB0cmFuc2Zvcm1lZCBieSAKKyAgICAgICAgUEhQIE1hZ2ljIFF1b3Rl
cy9QSFAgYWRkc2xhc2hlcygpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWJhY2tzbGFzaC5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFz
aGVzLWRvdWJsZS1xdW90ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLW51bGwtY2hhci5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFz
aGVzLXNpbmdsZS1xdW90ZS5odG1sCisKKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNJbnZhbGlkQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9y
OjpjYW5Mb2FkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6Om5vcm1hbGl6
ZSk6IERlY29kZXMgSFRNTCBlbnRpdGllcywgcmVtb3ZlcyBiYWNrc2xhc2hlcywKKyAgICAgICAg
YW5kIHJlbW92ZXMgY29udHJvbCBjaGFyYWN0ZXJzIHRoYXQgY291bGQgb3RoZXJ3aXNlIGNhdXNl
IGEgZGlzY3JlcGFuY3kgYmV0d2VlbgorICAgICAgICB0aGUgc291cmNlIGNvZGUgb2YgYSBzY3Jp
cHQgYW5kIHRoZSBvdXRnb2luZyBIVFRQIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpkZWNvZGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVj
b2RlSFRNTEVudGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbmRJblJl
cXVlc3QpOgorICAgICAgICAqIHBhZ2UvWFNTQXVkaXRvci5oOgorCiAyMDA5LTA3LTIyICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUg
UGV0ZXJzb24uCkluZGV4OiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lvbiA0NjIyNykKKysrIFdlYkNv
cmUvcGFnZS9YU1NBdWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCB1
c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29s
IGlzTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXIoVUNoYXIgYykKK3N0YXRpYyBib29sIGlzSW52YWxp
ZENoYXJhY3RlcihVQ2hhciBjKQogewotICAgIHJldHVybiAoYyA+ICdcMCcgJiYgYyA8ICcgJykg
fHwgYyA9PSAxMjc7CisgICAgcmV0dXJuIChjID09ICdcXCcgfHwgYyA9PSAnMCcgfHwgYyA8ICcg
JyB8fCBjID09IDEyNyk7CiB9CiAKIFhTU0F1ZGl0b3I6OlhTU0F1ZGl0b3IoRnJhbWUqIGZyYW1l
KQpAQCAtNjYsMTIgKzY2LDEyIEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNFbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gKHNldHRpbmdzICYmIHNldHRpbmdzLT54c3NBdWRpdG9yRW5hYmxlZCgpKTsK
IH0KIAotYm9vbCBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZUNv
ZGUpIGNvbnN0Citib29sIFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlKGNvbnN0IFN0cmluZyYgY29k
ZSkgY29uc3QKIHsKICAgICBpZiAoIWlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGlmIChmaW5kSW5SZXF1ZXN0KHNvdXJjZUNvZGUsIGZhbHNlLCB0cnVlLCBmYWxzZSkp
IHsKKyAgICBpZiAoZmluZEluUmVxdWVzdChjb2RlLCBmYWxzZSkpIHsKICAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXhlY3V0
ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGlu
IHJlcXVlc3QuXG4iKSk7CiAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCkt
PmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIGNvbnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZUphdmFTY3Jp
cHRVUgogICAgIGlmICghaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKGZpbmRJblJlcXVlc3QoY29kZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlKSkgeworICAg
IGlmIChmaW5kSW5SZXF1ZXN0KGNvZGUpKSB7CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0
IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LlxuIikp
OwogICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpT
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xl
TWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjMsNyAr
MTIzLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0cgogICAgIGlm
ICghaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGZpbmRJblJl
cXVlc3QodXJsLCBmYWxzZSwgZmFsc2UpKSB7CisgICAgaWYgKGZpbmRJblJlcXVlc3QodXJsKSkg
ewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgi
UmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNj
cmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdCIpKTsKICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93
KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ1LDExICsxNDUsMTkgQEAgYm9vbCBYU1NBdWRpdG9yOjpj
YW5TZXRCYXNlRWxlbWVudFVSTChjbwogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgWFNT
QXVkaXRvcjo6ZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgc3RyLCBjb25zdCBUZXh0RW5jb2Rpbmcm
IGVuY29kaW5nLCBib29sIGFsbG93TnVsbENoYXJhY3RlcnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgYWxsb3dOb25OdWxsQ29udHJvbENoYXJhY3RlcnMsIGJvb2wgZGVjb2Rl
SFRNTGVudGl0aWVzLCBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQp
CitTdHJpbmcgWFNTQXVkaXRvcjo6bm9ybWFsaXplKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorewor
ICAgIFN0cmluZyByZXN1bHQgPSBkZWNvZGVIVE1MRW50aXRpZXMoc3RyaW5nKTsKKyAgICBTdHJp
bmcgY2xlYW5lZFN0cmluZyA9IHJlc3VsdC5yZW1vdmVDaGFyYWN0ZXJzKCZpc0ludmFsaWRDaGFy
YWN0ZXIpOworICAgIGlmICghY2xlYW5lZFN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJlc3Vs
dCA9IGNsZWFuZWRTdHJpbmc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RyaW5nIFhTU0F1
ZGl0b3I6OmRlY29kZVVSTChjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgVGV4dEVuY29kaW5n
JiBlbmNvZGluZywgYm9vbCBkZWNvZGVIVE1MZW50aXRpZXMpCiB7CiAgICAgU3RyaW5nIHJlc3Vs
dDsKLSAgICBTdHJpbmcgdXJsID0gc3RyOworICAgIFN0cmluZyB1cmwgPSBzdHJpbmc7CiAKICAg
ICB1cmwucmVwbGFjZSgnKycsICcgJyk7CiAgICAgcmVzdWx0ID0gZGVjb2RlVVJMRXNjYXBlU2Vx
dWVuY2VzKHVybCk7CkBAIC0xNTcsMjAgKzE2NSwxMyBAQCBTdHJpbmcgWFNTQXVkaXRvcjo6ZGVj
b2RlVVJMKGNvbnN0IFN0cmluCiAgICAgaWYgKCFkZWNvZGVkUmVzdWx0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmVzdWx0ID0gZGVjb2RlZFJlc3VsdDsKICAgICBpZiAoZGVjb2RlSFRNTGVudGl0aWVz
KQotICAgICAgICByZXN1bHQgPSBkZWNvZGVIVE1MRW50aXRpZXMocmVzdWx0LCBsZWF2ZVVuZGVj
b2RhYmxlSFRNTEVudGl0aWVzVW50b3VjaGVkKTsKLSAgICBpZiAoIWFsbG93TnVsbENoYXJhY3Rl
cnMpCi0gICAgICAgIHJlc3VsdCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVN0cmlwcGluZ051bGxDaGFy
YWN0ZXJzKHJlc3VsdC5jaGFyYWN0ZXJzKCksIHJlc3VsdC5sZW5ndGgoKSk7Ci0gICAgaWYgKCFh
bGxvd05vbk51bGxDb250cm9sQ2hhcmFjdGVycykgewotICAgICAgICBkZWNvZGVkUmVzdWx0ID0g
cmVzdWx0LnJlbW92ZUNoYXJhY3RlcnMoJmlzTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXIpOwotICAg
ICAgICBpZiAoIWRlY29kZWRSZXN1bHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVzdWx0ID0g
ZGVjb2RlZFJlc3VsdDsKLSAgICB9CisgICAgICAgIHJlc3VsdCA9IGRlY29kZUhUTUxFbnRpdGll
cyhyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBYU1NBdWRpdG9yOjpk
ZWNvZGVIVE1MRW50aXRpZXMoY29uc3QgU3RyaW5nJiBzdHIsIGJvb2wgbGVhdmVVbmRlY29kYWJs
ZUhUTUxFbnRpdGllc1VudG91Y2hlZCkKK1N0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVIVE1MRW50
aXRpZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRp
dGllc1VudG91Y2hlZCkKIHsKLSAgICBTZWdtZW50ZWRTdHJpbmcgc291cmNlKHN0cik7CisgICAg
U2VnbWVudGVkU3RyaW5nIHNvdXJjZShzdHJpbmcpOwogICAgIFNlZ21lbnRlZFN0cmluZyBzb3Vy
Y2VTaGFkb3c7CiAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CiAgICAgCkBAIC0yMDUsMjIgKzIw
NiwxOCBAQCBTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlSFRNTEVudGl0aWVzKGNvCiAgICAgcmV0
dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKIH0KIAotYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5S
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIG1hdGNoTnVsbENoYXJhY3RlcnMsIGJv
b2wgbWF0Y2hOb25OdWxsQ29udHJvbENoYXJhY3RlcnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBkZWNvZGVIVE1MZW50aXRpZXMsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhU
TUxFbnRpdGllc1VudG91Y2hlZCkgY29uc3QKK2Jvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVz
dChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBkZWNvZGVIVE1MZW50aXRpZXMpIGNvbnN0CiB7
CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBGcmFtZSogcGFyZW50RnJhbWUgPSBtX2Zy
YW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgIGlmIChwYXJlbnRGcmFtZSAmJiBtX2ZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKSA9PSBibGFua1VSTCgpKQotICAgICAgICByZXN1bHQgPSBmaW5kSW5S
ZXF1ZXN0KHBhcmVudEZyYW1lLCBzdHJpbmcsIG1hdGNoTnVsbENoYXJhY3RlcnMsIG1hdGNoTm9u
TnVsbENvbnRyb2xDaGFyYWN0ZXJzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNvZGVIVE1MZW50aXRpZXMsIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQp
OworICAgICAgICByZXN1bHQgPSBmaW5kSW5SZXF1ZXN0KHBhcmVudEZyYW1lLCBzdHJpbmcsIGRl
Y29kZUhUTUxlbnRpdGllcyk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IGZp
bmRJblJlcXVlc3QobV9mcmFtZSwgc3RyaW5nLCBtYXRjaE51bGxDaGFyYWN0ZXJzLCBtYXRjaE5v
bk51bGxDb250cm9sQ2hhcmFjdGVycywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVjb2RlSFRNTGVudGl0aWVzLCBsZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3VjaGVk
KTsKKyAgICAgICAgcmVzdWx0ID0gZmluZEluUmVxdWVzdChtX2ZyYW1lLCBzdHJpbmcsIGRlY29k
ZUhUTUxlbnRpdGllcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBYU1NBdWRpdG9y
OjpmaW5kSW5SZXF1ZXN0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
bWF0Y2hOdWxsQ2hhcmFjdGVycywgYm9vbCBtYXRjaE5vbk51bGxDb250cm9sQ2hhcmFjdGVycywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY29kZUhUTUxlbnRpdGllcywg
Ym9vbCBsZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3VjaGVkKSBjb25zdAorYm9vbCBY
U1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGJvb2wgZGVjb2RlSFRNTGVudGl0aWVzKSBjb25zdAogewogICAgIEFTU0VSVChmcmFtZS0+
ZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nKCk7CkBAIC0yMzYsMTEgKzIzMywxMSBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbmRJ
blJlcXVlc3QoRnJhbWUqIGZyCiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAorICAgIFN0cmluZyBub3JtYWxpemVkU3RyaW5nID0gbm9ybWFsaXplKHN0
cmluZyk7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IHBhZ2VVUkwubGVuZ3RoKCkpIHsKICAg
ICAgICAgLy8gVGhlIHN0cmluZyBjYW4gYWN0dWFsbHkgZml0IGluc2lkZSB0aGUgcGFnZVVSTC4K
LSAgICAgICAgU3RyaW5nIGRlY29kZWRQYWdlVVJMID0gZGVjb2RlVVJMKHBhZ2VVUkwsIGZyYW1l
LT5kb2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCksIG1hdGNoTnVsbENoYXJhY3RlcnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE5vbk51bGxD
b250cm9sQ2hhcmFjdGVycywgZGVjb2RlSFRNTGVudGl0aWVzLCBsZWF2ZVVuZGVjb2RhYmxlSFRN
TEVudGl0aWVzVW50b3VjaGVkKTsKLSAgICAgICAgaWYgKGRlY29kZWRQYWdlVVJMLmZpbmQoc3Ry
aW5nLCAwLCBmYWxzZSkgIT0gLTEpCisgICAgICAgIFN0cmluZyBkZWNvZGVkUGFnZVVSTCA9IG5v
cm1hbGl6ZShkZWNvZGVVUkwocGFnZVVSTCwgZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+
ZW5jb2RpbmcoKSwgZGVjb2RlSFRNTGVudGl0aWVzKSk7CisgICAgICAgIGlmIChkZWNvZGVkUGFn
ZVVSTC5maW5kKG5vcm1hbGl6ZWRTdHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkKICAgICAgICAgICAg
cmV0dXJuIHRydWU7ICAvLyBXZSd2ZSBmb3VuZCB0aGUgc21va2luZyBndW4uCiAgICAgfQogCkBA
IC0yNTIsOSArMjQ5LDggQEAgYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KEZyYW1lKiBm
cgogICAgICAgICAgICAgLy8gdGhlIHVybC1lbmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNlIHRoZSBs
ZW5ndGggb2YgdGhlIHVybC1kZWNvZGVkCiAgICAgICAgICAgICAvLyBjb2RlIGlzIGxlc3MgdGhh
biBvciBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSB1cmwtZW5jb2RlZAogICAgICAgICAgICAg
Ly8gc3RyaW5nLgotICAgICAgICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IGRlY29kZVVS
TChmb3JtRGF0YSwgZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSwgbWF0
Y2hOdWxsQ2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hOb25OdWxsQ29udHJvbENoYXJhY3RlcnMsIGRlY29kZUhUTUxlbnRpdGll
cywgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCk7Ci0gICAgICAgICAgICBp
ZiAoZGVjb2RlZEZvcm1EYXRhLmZpbmQoc3RyaW5nLCAwLCBmYWxzZSkgIT0gLTEpCisgICAgICAg
ICAgICBTdHJpbmcgZGVjb2RlZEZvcm1EYXRhID0gbm9ybWFsaXplKGRlY29kZVVSTChmb3JtRGF0
YSwgZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSwgZGVjb2RlSFRNTGVu
dGl0aWVzKSk7CisgICAgICAgICAgICBpZiAoZGVjb2RlZEZvcm1EYXRhLmZpbmQobm9ybWFsaXpl
ZFN0cmluZywgMCwgZmFsc2UpICE9IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAg
Ly8gV2UgZm91bmQgdGhlIHN0cmluZyBpbiB0aGUgUE9TVCBkYXRhLgogICAgICAgICB9CiAgICAg
fQpJbmRleDogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvWFNTQXVkaXRvci5oCShyZXZpc2lvbiA0NjIyNykKKysrIFdlYkNvcmUvcGFnZS9YU1NB
dWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgc2NyaXB0IHNob3VsZCBi
ZSBhbGxvd2VkIG9yIGRlbmllZCBleGVjdXRpb24KICAgICAgICAgLy8gYmFzZWQgb24gdGhlIGNv
bnRlbnQgb2YgYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCi0gICAgICAgIGJvb2wgY2FuRXZhbHVh
dGUoY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKSBjb25zdDsKKyAgICAgICAgYm9vbCBjYW5FdmFs
dWF0ZShjb25zdCBTdHJpbmcmIGNvZGUpIGNvbnN0OwogCiAgICAgICAgIC8vIERldGVybWluZXMg
d2hldGhlciB0aGUgSmF2YVNjcmlwdCBVUkwgc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVuaWVkIGV4
ZWN1dGlvbgogICAgICAgICAvLyBiYXNlZCBvbiB0aGUgY29udGVudCBvZiBhbnkgdXNlci1zdWJt
aXR0ZWQgZGF0YS4KQEAgLTk5LDE3ICs5OSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgY2FuU2V0QmFzZUVsZW1lbnRVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcgPSBVVEY4RW5jb2RpbmcoKSwg
Ym9vbCBhbGxvd051bGxDaGFyYWN0ZXJzID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgYWxsb3dOb25OdWxsQ29udHJvbENoYXJhY3RlcnMgPSB0cnVlLCBib29s
IGRlY29kZUhUTUxlbnRpdGllcyA9IHRydWUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQgPSBmYWxzZSk7
CisgICAgICAgIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXplKGNvbnN0IFN0cmluZyYpOwogICAgICAg
ICAKLSAgICAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVIVE1MRW50aXRpZXMoY29uc3QgU3RyaW5n
JiwgYm9vbCBsZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3VjaGVkID0gZmFsc2UpOwor
ICAgICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
VGV4dEVuY29kaW5nJiBlbmNvZGluZyA9IFVURjhFbmNvZGluZygpLCBib29sIGRlY29kZUhUTUxl
bnRpdGllcyA9IHRydWUpOworICAgICAgICAKKyAgICAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVI
VE1MRW50aXRpZXMoY29uc3QgU3RyaW5nJiwgYm9vbCBsZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0
aWVzVW50b3VjaGVkID0gdHJ1ZSk7CiAKLSAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KGNvbnN0
IFN0cmluZyYsIGJvb2wgbWF0Y2hOdWxsQ2hhcmFjdGVycyA9IHRydWUsIGJvb2wgbWF0Y2hOb25O
dWxsQ29udHJvbENoYXJhY3RlcnMgPSB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBkZWNvZGVIVE1MZW50aXRpZXMgPSB0cnVlLCBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1M
RW50aXRpZXNVbnRvdWNoZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgICAgIGJvb2wgZmluZEluUmVx
dWVzdChjb25zdCBTdHJpbmcmLCBib29sIGRlY29kZUhUTUxlbnRpdGllcyA9IHRydWUpIGNvbnN0
OwogCi0gICAgICAgIGJvb2wgZmluZEluUmVxdWVzdChGcmFtZSosIGNvbnN0IFN0cmluZyYsIGJv
b2wgbWF0Y2hOdWxsQ2hhcmFjdGVycyA9IHRydWUsIGJvb2wgbWF0Y2hOb25OdWxsQ29udHJvbENo
YXJhY3RlcnMgPSB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVI
VE1MZW50aXRpZXMgPSB0cnVlLCBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRv
dWNoZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgICAgIGJvb2wgZmluZEluUmVxdWVzdChGcmFtZSos
IGNvbnN0IFN0cmluZyYsIGJvb2wgZGVjb2RlSFRNTGVudGl0aWVzID0gdHJ1ZSkgY29uc3Q7CiAK
ICAgICAgICAgLy8gVGhlIGZyYW1lIHRvIGF1ZGl0LgogICAgICAgICBGcmFtZSogbV9mcmFtZTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ2MjQ2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDctMjIgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0BpbnR1ZGF0YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTc0
CisgICAgICAgIEFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjY5MzgKKyAgICAgICAgCisgICAgICAgIFRlc3RzIHByZXZlbnRpb24gb2YgYXR0YWNr
cyB0cmFuc2Zvcm1lZCBieSBQSFAgTWFnaWMgUXVvdGVzL1BIUCBhZGRzbGFzaGVzKCkuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50
ZXJ0YWctYWRkc2xhc2hlcy5wbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1iYWNrc2xhc2gtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0
LXRhZy1hZGRzbGFzaGVzLWJhY2tzbGFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWRvdWJsZS1xdW90
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtZG91YmxlLXF1b3RlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNs
YXNoZXMtbnVsbC1jaGFyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1udWxsLWNoYXIuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Njcmlw
dC10YWctYWRkc2xhc2hlcy1zaW5nbGUtcXVvdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVz
LXNpbmdsZS1xdW90ZS5odG1sOiBBZGRlZC4KKwogMjAwOS0wNy0yMiAgRGF2aWQgSHlhdHQgIDxo
eWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFk
ZHNsYXNoZXMtYmFja3NsYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWJh
Y2tzbGFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWJhY2tzbGFzaC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2Ug
Y29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1i
YWNrc2xhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWJhY2tzbGFzaC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Nj
cmlwdC10YWctYWRkc2xhc2hlcy1iYWNrc2xhc2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0
cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0iaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0
YWctYWRkc2xhc2hlcy5wbD9xPSUzQ3NjcmlwdCUzRXZhcitib2d1cyUzRC8lNUMvJTNCYWxlcnQl
MjgvWFNTLyUyOSUzQiUzQy9zY3JpcHQlM0UiPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0
LXRhZy1hZGRzbGFzaGVzLWRvdWJsZS1xdW90ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRk
c2xhc2hlcy1kb3VibGUtcXVvdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hl
cy1kb3VibGUtcXVvdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0
IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQt
dGFnLWFkZHNsYXNoZXMtZG91YmxlLXF1b3RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1k
b3VibGUtcXVvdGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtZG91YmxlLXF1b3RlLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRp
dG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWFkZHNsYXNoZXMucGw/cT0lM0NzY3JpcHQlM0V2
YXIrYm9ndXMlM0QvJTIyLyUzQmFsZXJ0JTI4L1hTUy8lMjklM0IlM0Mvc2NyaXB0JTNFIj4KKzwv
aWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1udWxsLWNoYXItZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtbnVsbC1jaGFyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9z
Y3JpcHQtdGFnLWFkZHNsYXNoZXMtbnVsbC1jaGFyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVj
dXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRo
aW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLW51bGwtY2hhci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFn
LWFkZHNsYXNoZXMtbnVsbC1jaGFyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLW51bGwt
Y2hhci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
eHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBsP3E9JTNDc2Ny
aXB0JTNFdmFyK2JvZ3VzJTNELyUwMC8lM0JhbGVydCUyOC9YU1MvJTI5JTNCJTNDL3NjcmlwdCUz
RSI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtc2luZ2xlLXF1
b3RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLXNpbmdsZS1xdW90ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLXNpbmdsZS1xdW90ZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBz
Y3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1zaW5nbGUtcXVv
dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLXNpbmdsZS1xdW90ZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Njcmlw
dC10YWctYWRkc2xhc2hlcy1zaW5nbGUtcXVvdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0
cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0iaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0
YWctYWRkc2xhc2hlcy5wbD9xPSUzQ3NjcmlwdCUzRXZhcitib2d1cyUzRC8lMjcvJTNCYWxlcnQl
MjgvWFNTLyUyOSUzQiUzQy9zY3JpcHQlM0UiPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3Vy
Y2VzL2VjaG8taW50ZXJ0YWctYWRkc2xhc2hlcy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWct
YWRkc2xhc2hlcy5wbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACisjIS91c3IvYmluL3BlcmwgLXdUCit1c2Ugc3Ry
aWN0OwordXNlIENHSTsKKworbXkgJGNnaSA9IG5ldyBDR0k7CisKK3N1YiBhZGRTbGFzaGVzCit7
CisgICAgbXkgKCRzdHIpID0gQF87CisgICAgJHN0ciA9fiBzLyhbJyJcXF0pL1xcJDEvZzsKKyAg
ICAkc3RyID1+IHMvKFtcMF0pL1xcMC9nOworICAgIHJldHVybiAkc3RyOworfQorCitwcmludCAi
Q29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcblxuIjsKKworcHJpbnQgIjwh
RE9DVFlQRSBodG1sPlxuIjsKK3ByaW50ICI8aHRtbD5cbiI7CitwcmludCAiPGJvZHk+XG4iOwor
cHJpbnQgYWRkU2xhc2hlcygkY2dpLT5wYXJhbSgncScpKTsKK3ByaW50ICI8L2JvZHk+XG4iOwor
cHJpbnQgIjwvaHRtbD5cbiI7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctYWRkc2xh
c2hlcy5wbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33301</attachid>
            <date>2009-07-22 15:23:42 -0700</date>
            <delta_ts>2009-07-22 15:24:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-27174-20090722152342.patch</filename>
            <type>text/plain</type>
            <size>18498</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjI0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDctMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTc0CisgICAgICAgIEFu
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzgK
KyAgICAgICAgCisgICAgICAgIENvZGUgY2xlYW51cC4gSW1wbGVtZW50cyBzdXBwb3J0IGZvciBk
ZXRlY3RpbmcgYXR0YWNrcyB0cmFuc2Zvcm1lZCBieSAKKyAgICAgICAgUEhQIE1hZ2ljIFF1b3Rl
cy9QSFAgYWRkc2xhc2hlcygpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWJhY2tzbGFzaC5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFz
aGVzLWRvdWJsZS1xdW90ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLW51bGwtY2hhci5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFz
aGVzLXNpbmdsZS1xdW90ZS5odG1sCisKKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNJbnZhbGlkQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9y
OjpjYW5Mb2FkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6Om5vcm1hbGl6
ZSk6IERlY29kZXMgSFRNTCBlbnRpdGllcywgcmVtb3ZlcyBiYWNrc2xhc2hlcywKKyAgICAgICAg
YW5kIHJlbW92ZXMgY29udHJvbCBjaGFyYWN0ZXJzIHRoYXQgY291bGQgb3RoZXJ3aXNlIGNhdXNl
IGEgZGlzY3JlcGFuY3kgYmV0d2VlbgorICAgICAgICB0aGUgc291cmNlIGNvZGUgb2YgYSBzY3Jp
cHQgYW5kIHRoZSBvdXRnb2luZyBIVFRQIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpkZWNvZGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVj
b2RlSFRNTEVudGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbmRJblJl
cXVlc3QpOgorICAgICAgICAqIHBhZ2UvWFNTQXVkaXRvci5oOgorCiAyMDA5LTA3LTIyICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUg
UGV0ZXJzb24uCkluZGV4OiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lvbiA0NjIyNykKKysrIFdlYkNv
cmUvcGFnZS9YU1NBdWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCB1
c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29s
IGlzTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXIoVUNoYXIgYykKK3N0YXRpYyBib29sIGlzTm9uQ2Fu
b25pY2FsQ2hhcmFjdGVyKFVDaGFyIGMpCiB7Ci0gICAgcmV0dXJuIChjID4gJ1wwJyAmJiBjIDwg
JyAnKSB8fCBjID09IDEyNzsKKyAgICByZXR1cm4gKGMgPT0gJ1xcJyB8fCBjID09ICcwJyB8fCBj
IDwgJyAnIHx8IGMgPT0gMTI3KTsKIH0KIAogWFNTQXVkaXRvcjo6WFNTQXVkaXRvcihGcmFtZSog
ZnJhbWUpCkBAIC02NiwxMiArNjYsMTIgQEAgYm9vbCBYU1NBdWRpdG9yOjppc0VuYWJsZWQoKSBj
b25zdAogICAgIHJldHVybiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnhzc0F1ZGl0b3JFbmFibGVk
KCkpOwogfQogCi1ib29sIFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc291
cmNlQ29kZSkgY29uc3QKK2Jvb2wgWFNTQXVkaXRvcjo6Y2FuRXZhbHVhdGUoY29uc3QgU3RyaW5n
JiBjb2RlKSBjb25zdAogewogICAgIGlmICghaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKGZpbmRJblJlcXVlc3Qoc291cmNlQ29kZSwgZmFsc2UsIHRydWUsIGZh
bHNlKSkgeworICAgIGlmIChmaW5kSW5SZXF1ZXN0KGNvZGUsIGZhbHNlKSkgewogICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBl
eGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3
aXRoaW4gcmVxdWVzdC5cbiIpKTsKICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNv
bGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtODQsNyArODQsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlSmF2
YVNjcmlwdFVSCiAgICAgaWYgKCFpc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAoZmluZEluUmVxdWVzdChjb2RlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUpKSB7
CisgICAgaWYgKGZpbmRJblJlcXVlc3QoY29kZSkpIHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFT
Y3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3Qu
XG4iKSk7CiAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNv
bnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEy
Myw3ICsxMjMsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmNhbkxvYWRPYmplY3QoY29uc3QgU3RyCiAg
ICAgaWYgKCFpc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoZmlu
ZEluUmVxdWVzdCh1cmwsIGZhbHNlLCBmYWxzZSkpIHsKKyAgICBpZiAoZmluZEluUmVxdWVzdCh1
cmwpKSB7CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2Fn
ZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUg
b2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0IikpOwogICAgICAgICBtX2ZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDUsMTEgKzE0NSwxNiBAQCBib29sIFhTU0F1ZGl0
b3I6OmNhblNldEJhc2VFbGVtZW50VVJMKGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmlu
ZyBYU1NBdWRpdG9yOjpkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IFRleHRFbmNv
ZGluZyYgZW5jb2RpbmcsIGJvb2wgYWxsb3dOdWxsQ2hhcmFjdGVycywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBhbGxvd05vbk51bGxDb250cm9sQ2hhcmFjdGVycywgYm9vbCBk
ZWNvZGVIVE1MZW50aXRpZXMsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91
Y2hlZCkKK1N0cmluZyBYU1NBdWRpdG9yOjpjYW5vbmljYWxpemUoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCit7CisgICAgU3RyaW5nIHJlc3VsdCA9IGRlY29kZUhUTUxFbnRpdGllcyhzdHJpbmcpOwor
ICAgIHJldHVybiByZXN1bHQucmVtb3ZlQ2hhcmFjdGVycygmaXNOb25DYW5vbmljYWxDaGFyYWN0
ZXIpOworfQorCitTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGRlY29kZUhUTUxlbnRpdGll
cykKIHsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIFN0cmluZyB1cmwgPSBzdHI7CisgICAgU3Ry
aW5nIHVybCA9IHN0cmluZzsKIAogICAgIHVybC5yZXBsYWNlKCcrJywgJyAnKTsKICAgICByZXN1
bHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsKTsKQEAgLTE1NywyMCArMTYyLDEzIEBA
IFN0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVVUkwoY29uc3QgU3RyaW4KICAgICBpZiAoIWRlY29k
ZWRSZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICByZXN1bHQgPSBkZWNvZGVkUmVzdWx0OwogICAg
IGlmIChkZWNvZGVIVE1MZW50aXRpZXMpCi0gICAgICAgIHJlc3VsdCA9IGRlY29kZUhUTUxFbnRp
dGllcyhyZXN1bHQsIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQpOwotICAg
IGlmICghYWxsb3dOdWxsQ2hhcmFjdGVycykKLSAgICAgICAgcmVzdWx0ID0gU3RyaW5nSW1wbDo6
Y3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnMocmVzdWx0LmNoYXJhY3RlcnMoKSwgcmVzdWx0
Lmxlbmd0aCgpKTsKLSAgICBpZiAoIWFsbG93Tm9uTnVsbENvbnRyb2xDaGFyYWN0ZXJzKSB7Ci0g
ICAgICAgIGRlY29kZWRSZXN1bHQgPSByZXN1bHQucmVtb3ZlQ2hhcmFjdGVycygmaXNOb25OdWxs
Q29udHJvbENoYXJhY3Rlcik7Ci0gICAgICAgIGlmICghZGVjb2RlZFJlc3VsdC5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICByZXN1bHQgPSBkZWNvZGVkUmVzdWx0OwotICAgIH0KKyAgICAgICAgcmVz
dWx0ID0gZGVjb2RlSFRNTEVudGl0aWVzKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZUhUTUxFbnRpdGllcyhjb25zdCBTdHJpbmcmIHN0
ciwgYm9vbCBsZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3VjaGVkKQorU3RyaW5nIFhT
U0F1ZGl0b3I6OmRlY29kZUhUTUxFbnRpdGllcyhjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBs
ZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3VjaGVkKQogewotICAgIFNlZ21lbnRlZFN0
cmluZyBzb3VyY2Uoc3RyKTsKKyAgICBTZWdtZW50ZWRTdHJpbmcgc291cmNlKHN0cmluZyk7CiAg
ICAgU2VnbWVudGVkU3RyaW5nIHNvdXJjZVNoYWRvdzsKICAgICBWZWN0b3I8VUNoYXI+IHJlc3Vs
dDsKICAgICAKQEAgLTIwNSwyMiArMjAzLDE4IEBAIFN0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVI
VE1MRW50aXRpZXMoY28KICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogfQogCi1i
b29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
bWF0Y2hOdWxsQ2hhcmFjdGVycywgYm9vbCBtYXRjaE5vbk51bGxDb250cm9sQ2hhcmFjdGVycywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY29kZUhUTUxlbnRpdGllcywg
Ym9vbCBsZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3VjaGVkKSBjb25zdAorYm9vbCBY
U1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGRlY29k
ZUhUTUxlbnRpdGllcykgY29uc3QKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIEZy
YW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CiAgICAgaWYgKHBh
cmVudEZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpID09IGJsYW5rVVJMKCkpCi0g
ICAgICAgIHJlc3VsdCA9IGZpbmRJblJlcXVlc3QocGFyZW50RnJhbWUsIHN0cmluZywgbWF0Y2hO
dWxsQ2hhcmFjdGVycywgbWF0Y2hOb25OdWxsQ29udHJvbENoYXJhY3RlcnMsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlY29kZUhUTUxlbnRpdGllcywgbGVhdmVVbmRlY29kYWJs
ZUhUTUxFbnRpdGllc1VudG91Y2hlZCk7CisgICAgICAgIHJlc3VsdCA9IGZpbmRJblJlcXVlc3Qo
cGFyZW50RnJhbWUsIHN0cmluZywgZGVjb2RlSFRNTGVudGl0aWVzKTsKICAgICBpZiAoIXJlc3Vs
dCkKLSAgICAgICAgcmVzdWx0ID0gZmluZEluUmVxdWVzdChtX2ZyYW1lLCBzdHJpbmcsIG1hdGNo
TnVsbENoYXJhY3RlcnMsIG1hdGNoTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXJzLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVIVE1MZW50aXRpZXMsIGxlYXZlVW5kZWNvZGFi
bGVIVE1MRW50aXRpZXNVbnRvdWNoZWQpOworICAgICAgICByZXN1bHQgPSBmaW5kSW5SZXF1ZXN0
KG1fZnJhbWUsIHN0cmluZywgZGVjb2RlSFRNTGVudGl0aWVzKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1ib29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoRnJhbWUqIGZyYW1lLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBtYXRjaE51bGxDaGFyYWN0ZXJzLCBib29sIG1hdGNoTm9u
TnVsbENvbnRyb2xDaGFyYWN0ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZGVjb2RlSFRNTGVudGl0aWVzLCBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNV
bnRvdWNoZWQpIGNvbnN0Citib29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBkZWNvZGVIVE1MZW50aXRpZXMpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcGFnZVVSTCA9
IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKQEAgLTIzNiwxMSArMjMwLDExIEBA
IGJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChGcmFtZSogZnIKICAgICBpZiAoc3RyaW5n
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgU3RyaW5nIGNhbm9uaWNh
bGl6ZWRTdHJpbmcgPSBjYW5vbmljYWxpemUoc3RyaW5nKTsKICAgICBpZiAoc3RyaW5nLmxlbmd0
aCgpIDwgcGFnZVVSTC5sZW5ndGgoKSkgewogICAgICAgICAvLyBUaGUgc3RyaW5nIGNhbiBhY3R1
YWxseSBmaXQgaW5zaWRlIHRoZSBwYWdlVVJMLgotICAgICAgICBTdHJpbmcgZGVjb2RlZFBhZ2VV
UkwgPSBkZWNvZGVVUkwocGFnZVVSTCwgZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5j
b2RpbmcoKSwgbWF0Y2hOdWxsQ2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXJzLCBkZWNvZGVIVE1M
ZW50aXRpZXMsIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQpOwotICAgICAg
ICBpZiAoZGVjb2RlZFBhZ2VVUkwuZmluZChzdHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkKKyAgICAg
ICAgU3RyaW5nIGRlY29kZWRQYWdlVVJMID0gY2Fub25pY2FsaXplKGRlY29kZVVSTChwYWdlVVJM
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpLCBkZWNvZGVIVE1MZW50
aXRpZXMpKTsKKyAgICAgICAgaWYgKGRlY29kZWRQYWdlVVJMLmZpbmQoY2Fub25pY2FsaXplZFN0
cmluZywgMCwgZmFsc2UpICE9IC0xKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIFdlJ3Zl
IGZvdW5kIHRoZSBzbW9raW5nIGd1bi4KICAgICB9CiAKQEAgLTI1Miw5ICsyNDYsOCBAQCBib29s
IFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoRnJhbWUqIGZyCiAgICAgICAgICAgICAvLyB0aGUg
dXJsLWVuY29kZWQgUE9TVCBkYXRhIGJlY2F1c2UgdGhlIGxlbmd0aCBvZiB0aGUgdXJsLWRlY29k
ZWQKICAgICAgICAgICAgIC8vIGNvZGUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBsZW5n
dGggb2YgdGhlIHVybC1lbmNvZGVkCiAgICAgICAgICAgICAvLyBzdHJpbmcuCi0gICAgICAgICAg
ICBTdHJpbmcgZGVjb2RlZEZvcm1EYXRhID0gZGVjb2RlVVJMKGZvcm1EYXRhLCBmcmFtZS0+ZG9j
dW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpLCBtYXRjaE51bGxDaGFyYWN0ZXJzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE5vbk51bGxD
b250cm9sQ2hhcmFjdGVycywgZGVjb2RlSFRNTGVudGl0aWVzLCBsZWF2ZVVuZGVjb2RhYmxlSFRN
TEVudGl0aWVzVW50b3VjaGVkKTsKLSAgICAgICAgICAgIGlmIChkZWNvZGVkRm9ybURhdGEuZmlu
ZChzdHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkKKyAgICAgICAgICAgIFN0cmluZyBkZWNvZGVkRm9y
bURhdGEgPSBjYW5vbmljYWxpemUoZGVjb2RlVVJMKGZvcm1EYXRhLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZGVjb2RlcigpLT5lbmNvZGluZygpLCBkZWNvZGVIVE1MZW50aXRpZXMpKTsKKyAgICAgICAg
ICAgIGlmIChkZWNvZGVkRm9ybURhdGEuZmluZChjYW5vbmljYWxpemVkU3RyaW5nLCAwLCBmYWxz
ZSkgIT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBXZSBmb3VuZCB0aGUg
c3RyaW5nIGluIHRoZSBQT1NUIGRhdGEuCiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvWFNTQXVkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9y
LmgJKHJldmlzaW9uIDQ2MjI3KQorKysgV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
Ly8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzY3JpcHQgc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVu
aWVkIGV4ZWN1dGlvbgogICAgICAgICAvLyBiYXNlZCBvbiB0aGUgY29udGVudCBvZiBhbnkgdXNl
ci1zdWJtaXR0ZWQgZGF0YS4KLSAgICAgICAgYm9vbCBjYW5FdmFsdWF0ZShjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUpIGNvbnN0OworICAgICAgICBib29sIGNhbkV2YWx1YXRlKGNvbnN0IFN0cmlu
ZyYgY29kZSkgY29uc3Q7CiAKICAgICAgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBKYXZh
U2NyaXB0IFVSTCBzaG91bGQgYmUgYWxsb3dlZCBvciBkZW5pZWQgZXhlY3V0aW9uCiAgICAgICAg
IC8vIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgpAQCAt
OTksMTcgKzk5LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBjYW5TZXRC
YXNlRWxlbWVudFVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
VGV4dEVuY29kaW5nJiBlbmNvZGluZyA9IFVURjhFbmNvZGluZygpLCBib29sIGFsbG93TnVsbENo
YXJhY3RlcnMgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBh
bGxvd05vbk51bGxDb250cm9sQ2hhcmFjdGVycyA9IHRydWUsIGJvb2wgZGVjb2RlSFRNTGVudGl0
aWVzID0gdHJ1ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbGVhdmVV
bmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCA9IGZhbHNlKTsKKyAgICAgICAgc3RhdGlj
IFN0cmluZyBub3JtYWxpemUoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIAotICAgICAgICBzdGF0
aWMgU3RyaW5nIGRlY29kZUhUTUxFbnRpdGllcyhjb25zdCBTdHJpbmcmLCBib29sIGxlYXZlVW5k
ZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQgPSBmYWxzZSk7CisgICAgICAgIHN0YXRpYyBT
dHJpbmcgZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVu
Y29kaW5nID0gVVRGOEVuY29kaW5nKCksIGJvb2wgZGVjb2RlSFRNTGVudGl0aWVzID0gdHJ1ZSk7
CisgICAgICAgIAorICAgICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZUhUTUxFbnRpdGllcyhjb25z
dCBTdHJpbmcmLCBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQgPSB0
cnVlKTsKIAotICAgICAgICBib29sIGZpbmRJblJlcXVlc3QoY29uc3QgU3RyaW5nJiwgYm9vbCBt
YXRjaE51bGxDaGFyYWN0ZXJzID0gdHJ1ZSwgYm9vbCBtYXRjaE5vbk51bGxDb250cm9sQ2hhcmFj
dGVycyA9IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY29kZUhUTUxl
bnRpdGllcyA9IHRydWUsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hl
ZCA9IGZhbHNlKSBjb25zdDsKKyAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYsIGJvb2wgZGVjb2RlSFRNTGVudGl0aWVzID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICAgICAgYm9v
bCBmaW5kSW5SZXF1ZXN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBtYXRjaE51bGxDaGFy
YWN0ZXJzID0gdHJ1ZSwgYm9vbCBtYXRjaE5vbk51bGxDb250cm9sQ2hhcmFjdGVycyA9IHRydWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY29kZUhUTUxlbnRpdGllcyA9IHRy
dWUsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCA9IGZhbHNlKSBj
b25zdDsKKyAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCBkZWNvZGVIVE1MZW50aXRpZXMgPSB0cnVlKSBjb25zdDsKIAogICAgICAgICAvLyBUaGUg
ZnJhbWUgdG8gYXVkaXQuCiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNDYyNDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMyBAQAorMjAwOS0wNy0yMiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQGludHVkYXRhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcxNzQKKyAgICAgICAgQW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzOAorICAg
ICAgICAKKyAgICAgICAgVGVzdHMgcHJldmVudGlvbiBvZiBhdHRhY2tzIHRyYW5zZm9ybWVkIGJ5
IFBIUCBNYWdpYyBRdW90ZXMvUEhQIGFkZHNsYXNoZXMoKS4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVz
LnBsOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2Ny
aXB0LXRhZy1hZGRzbGFzaGVzLWJhY2tzbGFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMt
YmFja3NsYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtZG91YmxlLXF1b3RlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10
YWctYWRkc2xhc2hlcy1kb3VibGUtcXVvdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1udWxsLWNoYXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLW51bGwtY2hhci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVz
LXNpbmdsZS1xdW90ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtc2luZ2xlLXF1b3RlLmh0
bWw6IEFkZGVkLgorCiAyMDA5LTA3LTIyICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1iYWNrc2xh
c2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtYmFja3NsYXNoLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtYmFja3NsYXNoLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNl
ZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBm
b3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWJhY2tzbGFzaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9z
Y3JpcHQtdGFnLWFkZHNsYXNoZXMtYmFja3NsYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFz
aGVzLWJhY2tzbGFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBs
P3E9JTNDc2NyaXB0JTNFdmFyK2JvZ3VzJTNELyU1Qy8lM0JhbGVydCUyOC9YU1MvJTI5JTNCJTND
L3NjcmlwdCUzRSI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMt
ZG91YmxlLXF1b3RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWRvdWJsZS1x
dW90ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWRvdWJsZS1xdW90ZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2Ug
Y29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1k
b3VibGUtcXVvdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLWRvdWJsZS1xdW90ZS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1kb3VibGUtcXVvdGUuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9y
RW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNy
Yz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2Vj
aG8taW50ZXJ0YWctYWRkc2xhc2hlcy5wbD9xPSUzQ3NjcmlwdCUzRXZhcitib2d1cyUzRC8lMjIv
JTNCYWxlcnQlMjgvWFNTLyUyOSUzQiUzQy9zY3JpcHQlM0UiPgorPC9pZnJhbWU+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLW51bGwtY2hhci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10
YWctYWRkc2xhc2hlcy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xh
c2hlcy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0
IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQt
dGFnLWFkZHNsYXNoZXMtbnVsbC1jaGFyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1udWxs
LWNoYXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtbnVsbC1jaGFyLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNT
QXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlm
cmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291
cmNlcy9lY2hvLWludGVydGFnLWFkZHNsYXNoZXMucGw/cT0lM0NzY3JpcHQlM0V2YXIrYm9ndXMl
M0QvJTAwLyUzQmFsZXJ0JTI4L1hTUy8lMjklM0IlM0Mvc2NyaXB0JTNFIj4KKzwvaWZyYW1lPgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL3NjcmlwdC10YWctYWRkc2xhc2hlcy1zaW5nbGUtcXVvdGUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9zY3JpcHQtdGFnLWFkZHNsYXNoZXMtc2luZ2xlLXF1b3RlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3Jp
cHQtdGFnLWFkZHNsYXNoZXMtc2luZ2xlLXF1b3RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVj
dXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRo
aW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVzLXNpbmdsZS1xdW90ZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQt
dGFnLWFkZHNsYXNoZXMtc2luZ2xlLXF1b3RlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1hZGRzbGFzaGVz
LXNpbmdsZS1xdW90ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBs
P3E9JTNDc2NyaXB0JTNFdmFyK2JvZ3VzJTNELyUyNy8lM0JhbGVydCUyOC9YU1MvJTI5JTNCJTND
L3NjcmlwdCUzRSI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRh
Zy1hZGRzbGFzaGVzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBsCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L3Jlc291cmNlcy9lY2hvLWludGVydGFnLWFkZHNsYXNoZXMucGwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjIgQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7Cit1c2UgQ0dJOwor
CitteSAkY2dpID0gbmV3IENHSTsKKworc3ViIGFkZFNsYXNoZXMKK3sKKyAgICBteSAoJHN0cikg
PSBAXzsKKyAgICAkc3RyID1+IHMvKFsnIlxcXSkvXFwkMS9nOworICAgICRzdHIgPX4gcy8oW1ww
XSkvXFwwL2c7CisgICAgcmV0dXJuICRzdHI7Cit9CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRl
eHQvaHRtbDsgY2hhcnNldD1VVEYtOFxuXG4iOworCitwcmludCAiPCFET0NUWVBFIGh0bWw+XG4i
OworcHJpbnQgIjxodG1sPlxuIjsKK3ByaW50ICI8Ym9keT5cbiI7CitwcmludCBhZGRTbGFzaGVz
KCRjZ2ktPnBhcmFtKCdxJykpOworcHJpbnQgIjwvYm9keT5cbiI7CitwcmludCAiPC9odG1sPlxu
IjsKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1hZGRzbGFzaGVzLnBsCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAq
</data>
<flag name="review"
          id="17601"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>