<?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>35944</bug_id>
          
          <creation_ts>2010-03-09 14:18:40 -0800</creation_ts>
          <short_desc>Add an appengine app to host chromium layout test results</short_desc>
          <delta_ts>2010-03-13 02:45:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Victor Wang">victorw</reporter>
          <assigned_to name="Victor Wang">victorw</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>197768</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-09 14:18:40 -0800</bug_when>
    <thetext>Add an appengine app to host layout test results (JSON) for chromium flakiness dashboard. The app could be used to host other test result files if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197771</commentid>
    <comment_count>1</comment_count>
      <attachid>50348</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-09 14:24:26 -0800</bug_when>
    <thetext>Created attachment 50348
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197775</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-09 14:28:17 -0800</bug_when>
    <thetext>Attachment 50348 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/Scripts/webkitpy/test_result_server/index.yaml:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 30 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197781</commentid>
    <comment_count>3</comment_count>
      <attachid>50351</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-09 14:39:42 -0800</bug_when>
    <thetext>Created attachment 50351
Fixed a CR in proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199080</commentid>
    <comment_count>4</comment_count>
      <attachid>50351</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-12 08:49:53 -0800</bug_when>
    <thetext>Comment on attachment 50351
Fixed a CR in proposed patch

This should go in a subdirectory of WebKitTools, analogous to QueueStatusServer, which is another of our AppEngine apps.

I&apos;m not sure we want svn:executable or svn:eol-style set on these files.

+ class DeleteFile

This app looks wide open for anonymous folks on the interest to screw with out datastore.  Do we care?

Do we want some CSS to make this pretty?  We can do that in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199213</commentid>
    <comment_count>5</comment_count>
      <attachid>50632</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-12 14:15:45 -0800</bug_when>
    <thetext>Created attachment 50632
Proposed patch

A couple of updates in new patch:
-. moved the appengine to WebKitTool
-. added CSS
-. removed svn:executable and svn:eol-style
-. added test type support
-. more blobstore upload redirect handling.

Eventually, we will add code to limit users who could update these files, for now, I would like to get a version in and start testing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199333</commentid>
    <comment_count>6</comment_count>
      <attachid>50632</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-13 01:48:01 -0800</bug_when>
    <thetext>Comment on attachment 50632
Proposed patch

Okiedokes.  Theoretically we&apos;re supposed to keep our python to 80 cols, but we probably won&apos;t be able to enforce that until we get our automatic pep8 stye checker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199353</commentid>
    <comment_count>7</comment_count>
      <attachid>50632</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-13 02:45:05 -0800</bug_when>
    <thetext>Comment on attachment 50632
Proposed patch

Clearing flags on attachment: 50632

Committed r55960: &lt;http://trac.webkit.org/changeset/55960&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199354</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-13 02:45:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50348</attachid>
            <date>2010-03-09 14:24:26 -0800</date>
            <delta_ts>2010-03-09 14:40:00 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>tes-results.patch</filename>
            <type>text/plain</type>
            <size>25236</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1NzQ1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMDMtMDkgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGFwcGVuZ2luZSBhcHAgdG8gaG9zdCBhbmQgc2VydmUgd2Via2l0IGxh
eW91dCB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgVGhlIGFwcCBhbGxvd3MgeW91IHBvc3QgdGVz
dCByZXN1bHQgZmlsZXMgKGpzb24pIGFuZCBzZXJ2ZSB0aGVtIHVwLgorICAgICAgICBDaHJvbWl1
bSBmbGFraW5lc3MgZGFzaGJvYXJkIHdpbGwgZmlyc3QgdXNlIHRoaXMgYXBwIHRvIGhvc3QgcmVz
dWx0cy5qc29uCisgICAgICAgIGFuZCBleHBlY3RhdGlvbnMuanNvbiwgYnV0IHRoZSBmaWxlcyBo
b3N0ZWQgYnkgdGhpcyBhcHAgYXJlIG5vdCBsaW1pdGVkCisgICAgICAgIHRvIGNocm9taXVtIHJl
c3VsdHMgb3IganNvbiBmaWxlcy4gSXQgY2FuIGJlIHVzZWQgdG8gaG9zdCBvdGhlciBmaWxlcyBp
ZiBuZWVkZWQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1OTQ0CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZl
cjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIv
YXBwLnlhbWw6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRf
c2VydmVyL2hhbmRsZXJzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3Rf
cmVzdWx0X3NlcnZlci9oYW5kbGVycy9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMvbWVudS5weTogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMv
dGVzdGZpbGVoYW5kbGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rl
c3RfcmVzdWx0X3NlcnZlci9pbmRleC55YW1sOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9tYWluLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9tb2RlbDogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvbW9kZWwvX19pbml0X18ucHk6IEFk
ZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL21vZGVs
L3Rlc3RmaWxlLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVz
dWx0X3NlcnZlci90ZW1wbGF0ZXM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9tZW51Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxp
c3QuaHRtbDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9z
ZXJ2ZXIvdGVtcGxhdGVzL3VwbG9hZGZvcm0uaHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMDkgIERp
cmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TmF0ZSBDaGFwaW4uCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVz
dWx0X3NlcnZlci9hcHAueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9hcHAueWFtbAkocmV2aXNpb24gMCkKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL2FwcC55YW1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2FwcGxpY2F0aW9uOiB0ZXN0LXJlc3VsdHMKK3ZlcnNp
b246IDEKK3J1bnRpbWU6IHB5dGhvbgorYXBpX3ZlcnNpb246IDEKKworaGFuZGxlcnM6CistIHVy
bDogLy4qCisgIHNjcmlwdDogbWFpbi5weQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvYXBwLnlhbWwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9pbmRleC55YW1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL2luZGV4LnlhbWwJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0
X3NlcnZlci9pbmRleC55YW1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACitpbmRleGVz
Og0KKw0KKyMgQVVUT0dFTkVSQVRFRA0KKw0KKyMgVGhpcyBpbmRleC55YW1sIGlzIGF1dG9tYXRp
Y2FsbHkgdXBkYXRlZCB3aGVuZXZlciB0aGUgZGV2X2FwcHNlcnZlcg0KKyMgZGV0ZWN0cyB0aGF0
IGEgbmV3IHR5cGUgb2YgcXVlcnkgaXMgcnVuLiAgSWYgeW91IHdhbnQgdG8gbWFuYWdlIHRoZQ0K
KyMgaW5kZXgueWFtbCBmaWxlIG1hbnVhbGx5LCByZW1vdmUgdGhlIGFib3ZlIG1hcmtlciBsaW5l
ICh0aGUgbGluZQ0KKyMgc2F5aW5nICIjIEFVVE9HRU5FUkFURUQiKS4gIElmIHlvdSB3YW50IHRv
IG1hbmFnZSBzb21lIGluZGV4ZXMNCisjIG1hbnVhbGx5LCBtb3ZlIHRoZW0gYWJvdmUgdGhlIG1h
cmtlciBsaW5lLiAgVGhlIGluZGV4LnlhbWwgZmlsZSBpcw0KKyMgYXV0b21hdGljYWxseSB1cGxv
YWRlZCB0byB0aGUgYWRtaW4gY29uc29sZSB3aGVuIHlvdSBuZXh0IGRlcGxveQ0KKyMgeW91ciBh
cHBsaWNhdGlvbiB1c2luZyBhcHBjZmcucHkuDQorDQorLSBraW5kOiBUZXN0RmlsZQ0KKyAgcHJv
cGVydGllczoNCisgIC0gbmFtZTogYnVpbGRlcg0KKyAgLSBuYW1lOiBkYXRlDQorICAgIGRpcmVj
dGlvbjogZGVzYw0KKw0KKy0ga2luZDogVGVzdEZpbGUNCisgIHByb3BlcnRpZXM6DQorICAtIG5h
bWU6IGJ1aWxkZXINCisgIC0gbmFtZTogbmFtZQ0KKyAgLSBuYW1lOiBkYXRlDQorICAgIGRpcmVj
dGlvbjogZGVzYw0KKw0KKy0ga2luZDogVGVzdEZpbGUNCisgIHByb3BlcnRpZXM6DQorICAtIG5h
bWU6IG5hbWUNCisgIC0gbmFtZTogZGF0ZQ0KKyAgICBkaXJlY3Rpb246IGRlc2MNCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3Nl
cnZlci9pbmRleC55YW1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJ
bmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvbWFp
bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVz
dWx0X3NlcnZlci9tYWluLnB5CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvbWFpbi5weQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBSZXF1ZXN0IGEgbW9kZXJuIERqYW5nbwor
ZnJvbSBnb29nbGUuYXBwZW5naW5lLmRpc3QgaW1wb3J0IHVzZV9saWJyYXJ5Cit1c2VfbGlicmFy
eSgnZGphbmdvJywgJzEuMScpCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdl
YmFwcAorZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAudXRpbCBpbXBvcnQgcnVuX3dz
Z2lfYXBwCisKK2Zyb20gaGFuZGxlcnMubWVudSBpbXBvcnQgTWVudQorZnJvbSBoYW5kbGVycy50
ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IERlbGV0ZUZpbGUKK2Zyb20gaGFuZGxlcnMudGVzdGZpbGVo
YW5kbGVyIGltcG9ydCBHZXRGaWxlCitmcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBv
cnQgR2V0VXBsb2FkVXJsCitmcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgVXBs
b2FkCitmcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgVXBsb2FkRm9ybQorCity
b3V0ZXMgPSBbCisgICAgKCcvZGVsZXRlZmlsZScsIERlbGV0ZUZpbGUpLAorICAgICgnL2dldGZp
bGUnLCBHZXRGaWxlKSwKKyAgICAoJy9nZXR1cGxvYWR1cmwnLCBHZXRVcGxvYWRVcmwpLAorICAg
ICgnL3VwbG9hZCcsIFVwbG9hZCksCisgICAgKCcvdXBsb2FkZm9ybScsIFVwbG9hZEZvcm0pLAor
ICAgICgnLyp8L21lbnUnLCBNZW51KSwKK10KKworYXBwbGljYXRpb24gPSB3ZWJhcHAuV1NHSUFw
cGxpY2F0aW9uKHJvdXRlcywgZGVidWc9VHJ1ZSkKKworZGVmIG1haW4oKToKKyAgICBydW5fd3Nn
aV9hcHAoYXBwbGljYXRpb24pCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFp
bigpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rl
c3RfcmVzdWx0X3NlcnZlci9tYWluLnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUK
ICAgKyAqCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL2hhbmRsZXJzL19faW5pdF9fLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2Vy
dmVyL2hhbmRsZXJzL19faW5pdF9fLnB5CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMvX19pbml0X18ucHkJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2gg
dGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMvX19p
bml0X18ucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKTmFtZTogc3Zu
OmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMvbWVudS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9oYW5kbGVycy9tZW51LnB5
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3Vs
dF9zZXJ2ZXIvaGFuZGxlcnMvbWVudS5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2Vi
YXBwCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBvcnQgdGVtcGxhdGUKKwor
bWVudSA9IFsKKyAgICBbIkxpc3Qgb2YgZmlsZXMiLCAiL2dldGZpbGUiXSwKKyAgICBbIkxpc3Qg
b2YgcmVzdWx0cy5qc29uIGZpbGVzIiwgIi9nZXRmaWxlP25hbWU9cmVzdWx0cy5qc29uIl0sCisg
ICAgWyJMaXN0IG9mIGV4cGVjdGF0aW9ucy5qc29uIGZpbGVzIiwgIi9nZXRmaWxlP25hbWU9ZXhw
ZWN0YXRpb25zLmpzb24iXSwKKyAgICBbIlVwbG9hZCBmaWxlIiwgIi91cGxvYWRmb3JtIl0sCitd
CisKKworY2xhc3MgTWVudSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgIGRlZiBnZXQoc2Vs
Zik6CisgICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKKyAgICAgICAgICAgICJtZW51IjogbWVu
dSwKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKAorICAgICAg
ICAgICAgdGVtcGxhdGUucmVuZGVyKCJ0ZW1wbGF0ZXMvbWVudS5odG1sIiwgdGVtcGxhdGVfdmFs
dWVzKSkKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMvbWVudS5weQpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjpleGVjdXRhYmxlCiAgICsgKgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBX
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9oYW5kbGVycy90
ZXN0ZmlsZWhhbmRsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMvdGVzdGZpbGVoYW5kbGVyLnB5CShyZXZp
c2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2
ZXIvaGFuZGxlcnMvdGVzdGZpbGVoYW5kbGVyLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2
MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKKworZnJvbSBnb29nbGUu
YXBwZW5naW5lLmV4dCBpbXBvcnQgYmxvYnN0b3JlCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0
IGltcG9ydCB3ZWJhcHAKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCBi
bG9ic3RvcmVfaGFuZGxlcnMKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9y
dCB0ZW1wbGF0ZQorCitmcm9tIG1vZGVsLnRlc3RmaWxlIGltcG9ydCBUZXN0RmlsZQorCitQQVJB
TV9CVUlMREVSID0gImJ1aWxkZXIiCitQQVJBTV9ESVIgPSAiZGlyIgorUEFSQU1fRklMRSA9ICJm
aWxlIgorUEFSQU1fTkFNRSA9ICJuYW1lIgorUEFSQU1fS0VZID0gImtleSIKKworCitjbGFzcyBE
ZWxldGVGaWxlKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CisgICAgIiIiRGVsZXRlIHRlc3QgZmls
ZSBmb3IgYSBnaXZlbiBidWlsZGVyIGFuZCBuYW1lIGZyb20gZGF0YXN0b3JlIChtZXRhZGF0YSkg
YW5kIGJsb2JzdG9yZSAoZmlsZSBkYXRhKS4iIiIKKworICAgIGRlZiBnZXQoc2VsZik6CisgICAg
ICAgIGtleSA9IHNlbGYucmVxdWVzdC5nZXQoUEFSQU1fS0VZKQorICAgICAgICBidWlsZGVyID0g
c2VsZi5yZXF1ZXN0LmdldChQQVJBTV9CVUlMREVSKQorICAgICAgICBuYW1lID0gc2VsZi5yZXF1
ZXN0LmdldChQQVJBTV9OQU1FKQorCisgICAgICAgIGxvZ2dpbmcuZGVidWcoIkRlbGV0aW5nIEZp
bGUsIGJ1aWxkZXI6ICVzLCBuYW1lOiAlcywgYmxvYiBrZXk6ICVzLiIsCisgICAgICAgICAgICAg
ICAgICAgICAgYnVpbGRlciwgbmFtZSwga2V5KQorCisgICAgICAgIFRlc3RGaWxlLmRlbGV0ZV9m
aWxlKGtleSwgYnVpbGRlciwgbmFtZSwgMTAwKQorCisgICAgICAgICMgRGlzcGxheSBmaWxlIGxp
c3QgYWZ0ZXIgZGVsZXRpbmcgdGhlIGZpbGUuCisgICAgICAgIHNlbGYucmVkaXJlY3QoIi9nZXRm
aWxlP2J1aWxkZXI9JXMmbmFtZT0lcyIgJSAoYnVpbGRlciwgbmFtZSkpCisKKworY2xhc3MgR2V0
RmlsZShibG9ic3RvcmVfaGFuZGxlcnMuQmxvYnN0b3JlRG93bmxvYWRIYW5kbGVyKToKKyAgICAi
IiJHZXQgZmlsZSBjb250ZW50IG9yIGxpc3Qgb2YgZmlsZXMgZm9yIGdpdmVuIGJ1aWxkZXIgYW5k
IG5hbWUuIiIiCisKKyAgICBkZWYgZ2V0X2ZpbGVfbGlzdChzZWxmLCBidWlsZGVyLCBuYW1lKToK
KyAgICAgICAgIiIiR2V0IGFuZCBkaXNwbGF5IGEgbGlzdCBvZiBmaWxlcyB0aGF0IG1hdGNoZXMg
YnVpbGRlciBhbmQgZmlsZSBuYW1lLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBidWls
ZGVyOiBidWlsZGVyIG5hbWUKKyAgICAgICAgICAgIG5hbWU6IGZpbGUgbmFtZQorICAgICAgICAi
IiIKKworICAgICAgICBmaWxlcyA9IFRlc3RGaWxlLmdldF9maWxlcyhidWlsZGVyLCBuYW1lLCAx
MDApCisgICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygiRmls
ZSBub3QgZm91bmQsIGJ1aWxkZXI6ICVzLCBuYW1lOiAlcy4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkZXIsIG5hbWUpCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0
ZSgiRmlsZSBub3QgZm91bmQiKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgdGVtcGxh
dGVfdmFsdWVzID0geworICAgICAgICAgICAgImJ1aWxkZXIiOiBidWlsZGVyLAorICAgICAgICAg
ICAgIm5hbWUiOiBuYW1lLAorICAgICAgICAgICAgImZpbGVzIjogZmlsZXMsCisgICAgICAgIH0K
KyAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCJ0ZW1wbGF0
ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcGxhdGVfdmFsdWVzKSkKKworICAgIGRlZiBnZXRfZmlsZV9jb250
ZW50KHNlbGYsIGJ1aWxkZXIsIG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gY29udGVudCBvZiB0
aGUgZmlsZSB0aGF0IG1hdGNoZXMgYnVpbGRlciBhbmQgZmlsZSBuYW1lLgorCisgICAgICAgIEFy
Z3M6CisgICAgICAgICAgICBidWlsZGVyOiBidWlsZGVyIG5hbWUKKyAgICAgICAgICAgIG5hbWU6
IGZpbGUgbmFtZQorICAgICAgICAiIiIKKworICAgICAgICBmaWxlcyA9IFRlc3RGaWxlLmdldF9m
aWxlcyhidWlsZGVyLCBuYW1lLCAxKQorICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAg
ICBsb2dnaW5nLmluZm8oIkZpbGUgbm90IGZvdW5kLCBidWlsZGVyOiAlcywgbmFtZTogJXMuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLCBuYW1lKQorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgYmxvYl9rZXkgPSBmaWxlc1swXS5ibG9iX2tleQorICAgICAgICBibG9i
X2luZm8gPSBibG9ic3RvcmUuZ2V0KGJsb2Jfa2V5KQorICAgICAgICBpZiBibG9iX2luZm86Cisg
ICAgICAgICAgICBzZWxmLnNlbmRfYmxvYihibG9iX2luZm8sICJ0ZXh0L3BsYWluIikKKworICAg
IGRlZiBnZXQoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBzZWxmLnJlcXVlc3QuZ2V0KFBBUkFN
X0JVSUxERVIpCisgICAgICAgIG5hbWUgPSBzZWxmLnJlcXVlc3QuZ2V0KFBBUkFNX05BTUUpCisg
ICAgICAgIGRpciA9IHNlbGYucmVxdWVzdC5nZXQoUEFSQU1fRElSKQorCisgICAgICAgIGxvZ2dp
bmcuZGVidWcoIkdldHRpbmcgZmlsZXMsIGJ1aWxkZXI6ICVzLCBuYW1lOiAlcy4iLCBidWlsZGVy
LCBuYW1lKQorCisgICAgICAgICMgSWYgcGFyYW1ldGVyICJkaXIiIGlzIHNwZWNpZmllZCBvciB0
aGVyZSBpcyBubyBidWlsZGVyIG9yIGZpbGVuYW1lCisgICAgICAgICMgc3BlY2lmaWVkIGluIHRo
ZSByZXF1ZXN0LCByZXR1cm4gbGlzdCBvZiBmaWxlcywgb3RoZXJ3aXNlLCByZXR1cm4KKyAgICAg
ICAgIyBmaWxlIGNvbnRlbnQuCisgICAgICAgIGlmIGRpciBvciBub3QgYnVpbGRlciBvciBub3Qg
bmFtZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9maWxlX2xpc3QoYnVpbGRlciwgbmFt
ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9maWxlX2NvbnRl
bnQoYnVpbGRlciwgbmFtZSkKKworCitjbGFzcyBHZXRVcGxvYWRVcmwod2ViYXBwLlJlcXVlc3RI
YW5kbGVyKToKKyAgICAiIiJHZXQgYW4gdXJsIGZvciB1cGxvYWRpbmcgZmlsZSB0byBibG9ic3Rv
cmUuIEEgc3BlY2lhbCB1cmwgaXMgcmVxdWlyZWQgZm9yIGVhY2ggYmxvYnNvdHJlIHVwbG9hZC4i
IiIKKworICAgIGRlZiBnZXQoc2VsZik6CisgICAgICAgIHVwbG9hZF91cmwgPSBibG9ic3RvcmUu
Y3JlYXRlX3VwbG9hZF91cmwoIi91cGxvYWQiKQorICAgICAgICBsb2dnaW5nLmRlYnVnKCJHZXR0
aW5nIHVwbG9hZCB1cmw6ICVzLiIsIHVwbG9hZF91cmwpCisgICAgICAgIHNlbGYucmVzcG9uc2Uu
b3V0LndyaXRlKHVwbG9hZF91cmwpCisKKworY2xhc3MgVXBsb2FkKGJsb2JzdG9yZV9oYW5kbGVy
cy5CbG9ic3RvcmVVcGxvYWRIYW5kbGVyKToKKyAgICAiIiJVcGxvYWQgZmlsZSB0byBibG9ic3Rv
cmUuIiIiCisKKyAgICBkZWYgcG9zdChzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IHNlbGYucmVx
dWVzdC5nZXQoUEFSQU1fQlVJTERFUikKKyAgICAgICAgaWYgbm90IGJ1aWxkZXI6CisgICAgICAg
ICAgICBsb2dnaW5nLndhcm5pbmcoIk1pc3NpbmcgYnVpbGRlciBwYXJhbWV0ZXIgaW4gdXBsb2Fk
IHJlcXVlc3QuIikKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCJGQUlMOiBt
aXNzaW5nIGJ1aWxkZXIgcGFyYW1ldGVyLiIpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAg
ICBsb2dnaW5nLmRlYnVnKCJQcm9jZXNzaW5nIHVwbG9hZCByZXF1ZXN0LCBidWlsZGVyOiAlcy4i
LCBidWlsZGVyKQorCisgICAgICAgIGZvciB1cGxvYWQgaW4gc2VsZi5nZXRfdXBsb2FkcygiZmls
ZSIpOgorICAgICAgICAgICAgdGYgPSBUZXN0RmlsZS51cGRhdGVfZmlsZShidWlsZGVyLCB1cGxv
YWQpCisgICAgICAgICAgICBpZiB0ZjoKKyAgICAgICAgICAgICAgICBsb2dnaW5nLmluZm8oIkZp
bGUgdXBsb2FkZWQsIGtleTogJXMuIiwgdGYua2V5KCkpCisKKyAgICAgICAgIyBCbG9ic3RvcmVV
cGxvYWRIYW5kbGVyIHJlcXVpcmVzIHJlZGlyZWN0IGF0IHRoZSBlbmQuCisgICAgICAgIHNlbGYu
cmVkaXJlY3QoIi8iKQorCisKK2NsYXNzIFVwbG9hZEZvcm0od2ViYXBwLlJlcXVlc3RIYW5kbGVy
KToKKyAgICAiIiJTaG93IGEgZm9ybSBzbyB1c2VyIGNhbiBzdWJtaXQgYSBmaWxlIHRvIGJsb2Jz
dG9yZS4iIiIKKworICAgIGRlZiBnZXQoc2VsZik6CisgICAgICAgIHVwbG9hZF91cmwgPSBibG9i
c3RvcmUuY3JlYXRlX3VwbG9hZF91cmwoIi91cGxvYWQiKQorICAgICAgICB0ZW1wbGF0ZV92YWx1
ZXMgPSB7CisgICAgICAgICAgICAidXBsb2FkX3VybCI6IHVwbG9hZF91cmwsCisgICAgICAgIH0K
KyAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCJ0ZW1wbGF0
ZXMvdXBsb2FkZm9ybS5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlbXBsYXRlX3ZhbHVlcykpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9oYW5kbGVycy90ZXN0
ZmlsZWhhbmRsZXIucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKTmFt
ZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvbW9kZWwvX19pbml0X18ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvbW9kZWwvX19p
bml0X18ucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rl
c3RfcmVzdWx0X3NlcnZlci9tb2RlbC9fX2luaXRfXy5weQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSBAQAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3Ig
bW9kdWxlIGZpbGVzCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9tb2RlbC9fX2luaXRfXy5weQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5h
bWU6IHN2bjpleGVjdXRhYmxlCiAgICsgKgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9tb2Rl
bC90ZXN0ZmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rlc3RfcmVzdWx0X3NlcnZlci9tb2RlbC90ZXN0ZmlsZS5weQkocmV2aXNpb24gMCkKKysrIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL21vZGVsL3Rlc3Rm
aWxlLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20g
Z29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGJsb2JzdG9yZQorZnJvbSBnb29nbGUuYXBwZW5n
aW5lLmV4dCBpbXBvcnQgZGIKKworCitjbGFzcyBUZXN0RmlsZShkYi5Nb2RlbCk6CisgICAgYnVp
bGRlciA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKKyAgICBuYW1lID0gZGIuU3RyaW5nUHJvcGVydHko
KQorICAgIGJsb2Jfa2V5ID0gZGIuU3RyaW5nUHJvcGVydHkoKQorICAgIGRhdGUgPSBkYi5EYXRl
VGltZVByb3BlcnR5KGF1dG9fbm93X2FkZD1UcnVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIGRlbGV0ZV9maWxlKGNscywga2V5LCBidWlsZGVyLCBuYW1lLCBsaW1pdCk6CisgICAgICAg
IGlmIGtleToKKyAgICAgICAgICAgIGZpbGUgPSBkYi5nZXQoa2V5KQorICAgICAgICAgICAgaWYg
bm90IGZpbGU6CisgICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCJGaWxlIG5vdCBmb3Vu
ZCwga2V5OiAlcy4iLCBrZXkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAg
ICAgICAgIGZpbGUuX2RlbGV0ZV9hbGwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmls
ZXMgPSBjbHMuZ2V0X2ZpbGVzKGJ1aWxkZXIsIG5hbWUsIGxpbWl0KQorICAgICAgICAgICAgaWYg
bm90IGZpbGVzOgorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiRmlsZSBub3QgZm91
bmQsIGJ1aWxkZXI6ICVzLCBuYW1lOiAlcy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLCBuYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg
ICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBmaWxlLl9kZWxldGVf
YWxsKCkKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IGdldF9maWxlcyhjbHMsIGJ1aWxkZXIsIG5hbWUsIGxpbWl0KToKKyAgICAgICAgcXVlcnkgPSBU
ZXN0RmlsZS5hbGwoKQorICAgICAgICBpZiBidWlsZGVyOgorICAgICAgICAgICAgcXVlcnkgPSBx
dWVyeS5maWx0ZXIoImJ1aWxkZXIgPSIsIGJ1aWxkZXIpCisgICAgICAgIGlmIG5hbWU6CisgICAg
ICAgICAgICBxdWVyeSA9IHF1ZXJ5LmZpbHRlcigibmFtZSA9IiwgbmFtZSkKKworICAgICAgICBy
ZXR1cm4gcXVlcnkub3JkZXIoIi1kYXRlIikuZmV0Y2gobGltaXQpCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgYWRkX2ZpbGUoY2xzLCBidWlsZGVyLCBibG9iX2luZm8pOgorICAgICAgICBm
aWxlID0gVGVzdEZpbGUoKQorICAgICAgICBmaWxlLmJ1aWxkZXIgPSBidWlsZGVyCisgICAgICAg
IGZpbGUubmFtZSA9IGJsb2JfaW5mby5maWxlbmFtZQorICAgICAgICBmaWxlLmJsb2Jfa2V5ID0g
c3RyKGJsb2JfaW5mby5rZXkoKSkKKyAgICAgICAgZmlsZS5wdXQoKQorCisgICAgICAgIGxvZ2dp
bmcuaW5mbygiRmlsZSBzYXZlZCwgYnVpbGRlcjogJXMsIG5hbWU6ICVzLCBibG9iIGtleTogJXMu
IiwKKyAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIsIGZpbGUubmFtZSwgZmlsZS5ibG9iX2tl
eSkKKworICAgICAgICByZXR1cm4gZmlsZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHVw
ZGF0ZV9maWxlKGNscywgYnVpbGRlciwgYmxvYl9pbmZvKToKKyAgICAgICAgZmlsZXMgPSBjbHMu
Z2V0X2ZpbGVzKGJ1aWxkZXIsIGJsb2JfaW5mby5maWxlbmFtZSwgMSkKKyAgICAgICAgaWYgbm90
IGZpbGVzOgorICAgICAgICAgICAgcmV0dXJuIGNscy5hZGRfZmlsZShidWlsZGVyLCBibG9iX2lu
Zm8pCisKKyAgICAgICAgZmlsZSA9IGZpbGVzWzBdCisgICAgICAgIG9sZF9ibG9iX2luZm8gPSBi
bG9ic3RvcmUuQmxvYkluZm8uZ2V0KGZpbGUuYmxvYl9rZXkpCisgICAgICAgIGlmIG9sZF9ibG9i
X2luZm86CisgICAgICAgICAgICBvbGRfYmxvYl9pbmZvLmRlbGV0ZSgpCisKKyAgICAgICAgZmls
ZS5idWlsZGVyID0gYnVpbGRlcgorICAgICAgICBmaWxlLm5hbWUgPSBibG9iX2luZm8uZmlsZW5h
bWUKKyAgICAgICAgZmlsZS5ibG9iX2tleSA9IHN0cihibG9iX2luZm8ua2V5KCkpCisgICAgICAg
IGZpbGUuZGF0ZSA9IGRhdGV0aW1lLm5vdygpCisgICAgICAgIGZpbGUucHV0KCkKKworICAgICAg
ICBsb2dnaW5nLmluZm8oIkZpbGUgcmVwbGFjZWQsIGJ1aWxkZXI6ICVzLCBuYW1lOiAlcywgYmxv
YiBrZXk6ICVzLiIsCisgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLCBmaWxlLm5hbWUsIGZp
bGUuYmxvYl9rZXkpCisKKyAgICAgICAgcmV0dXJuIGZpbGUKKworICAgIGRlZiBfZGVsZXRlX2Fs
bChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5ibG9iX2tleToKKyAgICAgICAgICAgIGJsb2JfaW5m
byA9IGJsb2JzdG9yZS5CbG9iSW5mby5nZXQoc2VsZi5ibG9iX2tleSkKKyAgICAgICAgICAgIGlm
IGJsb2JfaW5mbzoKKyAgICAgICAgICAgICAgICBibG9iX2luZm8uZGVsZXRlKCkKKworICAgICAg
ICBzZWxmLmRlbGV0ZSgpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9tb2RlbC90ZXN0ZmlsZS5weQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck5hbWU6IHN2bjpleGVjdXRhYmxlCiAgICsgKgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci90
ZW1wbGF0ZXMvbWVudS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9tZW51Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci90ZW1w
bGF0ZXMvbWVudS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBSZXN1bHQgU2VydmVyPC90aXRsZT4K
KzwvaGVhZD4KKzxib2R5PgorPGgxPlRlc3QgUmVzdWx0IFNlcnZlcjwvaDE+Cis8ZGl2PgorICAg
IDx1bD57JSBmb3IgdGl0bGUsbGluayBpbiBtZW51ICV9CisgICAgICAgIDxsaT4KKyAgICAgICAg
ICAgIDxhIGhyZWY9Int7IGxpbmsgfX0iID57eyB0aXRsZSB9fTwvYT4KKyAgICAgICAgPC9saT57
JSBlbmRmb3IgJX0KKyAgICA8L3VsPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3Nl
cnZlci90ZW1wbGF0ZXMvbWVudS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUK
ICAgKyAqCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3Qu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVz
dWx0X3NlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci90ZW1wbGF0ZXMv
c2hvd2ZpbGVsaXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IFJlc3VsdHM8L3RpdGxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8aDE+VGVzdCBSZXN1bHRzPC9oMT4KKzxoMj57eyBidWlsZGVyIH19IHt7
IG5hbWUgfX08L2gyPgorPGRpdj4KKyAgICA8dGFibGU+CisgICAgICAgIDx0cj4KKyAgICAgICAg
ICAgIDx0aD5CdWlsZGVyPC90aD4KKyAgICAgICAgICAgIDx0aD5GaWxlPC90aD4KKyAgICAgICAg
ICAgIDx0aD5EYXRlPC90aD4KKyAgICAgICAgeyUgZm9yIGZpbGUgaW4gZmlsZXMgJX0KKyAgICAg
ICAgPHRyPnslIGlmIGZpbGUuYnVpbGRlciBhbmQgZmlsZS5uYW1lICV9CisgICAgICAgICAgICA8
dGQ+PGEgaHJlZj0iL2dldGZpbGU/YnVpbGRlcj17eyBmaWxlLmJ1aWxkZXIgfX0iID4KKyAgICAg
ICAgICAgICAgICB7eyBmaWxlLmJ1aWxkZXIgfX0KKyAgICAgICAgICAgICAgICA8L2E+CisgICAg
ICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii9nZXRmaWxlP2J1aWxkZXI9
e3sgZmlsZS5idWlsZGVyIH19Jm5hbWU9e3sgZmlsZS5uYW1lIH19IiA+CisgICAgICAgICAgICAg
ICAge3sgZmlsZS5uYW1lIH19CisgICAgICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPC90
ZD4KKyAgICAgICAgICAgIDx0ZD57eyBmaWxlLmRhdGV8ZGF0ZToiZC1NLVkgSDppOnMiIH19Cisg
ICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii9kZWxldGVmaWxlP2tl
eT17eyBmaWxlLmtleSB9fSZidWlsZGVyPXt7IGJ1aWxkZXIgfX0mbmFtZT17eyBuYW1lIH19IiA+
CisgICAgICAgICAgICAgICAgRGVsZXRlCisgICAgICAgICAgICAgICAgPC9hPgorICAgICAgICAg
ICAgPC90ZD4KKyAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgPC90cj4KKyAgICB7JSBlbmRm
b3IgJX0KKyAgICA8L3RhYmxlPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZl
ci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZXhlY3V0
YWJsZQogICArICoKTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvdGVtcGxhdGVzL3VwbG9hZGZv
cm0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3Rf
cmVzdWx0X3NlcnZlci90ZW1wbGF0ZXMvdXBsb2FkZm9ybS5odG1sCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvdGVtcGxhdGVz
L3VwbG9hZGZvcm0uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlVwbG9hZCB0ZXN0IHJlc3VsdCBmaWxlPC90
aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPGgxPlVwbG9hZCB0ZXN0IHJlc3VsdCBmaWxlPC9oMT4K
Kzxmb3JtIGFjY2VwdD0idGV4dC9odG1sIiBhY3Rpb249Int7IHVwbG9hZF91cmwgfX0iIGVuY3R5
cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0icG9zdCI+CisgICAgPGRpdj48bGFiZWw+
QnVpbGRlcjo8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJidWlsZGVyIiB2YWx1ZT0i
V2Via2l0IChkYmcpKDEpIi8+PC9kaXY+CisgICAgPGJyPgorICAgIDxkaXY+PGlucHV0IHR5cGU9
ImZpbGUiIG5hbWU9ImZpbGUiPjwvZGl2PgorICAgIDxkaXY+PGlucHV0IHR5cGU9InN1Ym1pdCIg
dmFsdWU9IlVwbG9hZCI+PC9kaXY+Cis8L2Zvcm0+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3Nl
cnZlci90ZW1wbGF0ZXMvdXBsb2FkZm9ybS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1
dGFibGUKICAgKyAqCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50351</attachid>
            <date>2010-03-09 14:39:42 -0800</date>
            <delta_ts>2010-03-12 14:15:45 -0800</delta_ts>
            <desc>Fixed a CR in proposed patch</desc>
            <filename>tes-results.patch</filename>
            <type>text/plain</type>
            <size>25208</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1NzQ1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMDMtMDkgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGFwcGVuZ2luZSBhcHAgdG8gaG9zdCBhbmQgc2VydmUgd2Via2l0IGxh
eW91dCB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgVGhlIGFwcCBhbGxvd3MgeW91IHBvc3QgdGVz
dCByZXN1bHQgZmlsZXMgKGpzb24pIGFuZCBzZXJ2ZSB0aGVtIHVwLgorICAgICAgICBDaHJvbWl1
bSBmbGFraW5lc3MgZGFzaGJvYXJkIHdpbGwgZmlyc3QgdXNlIHRoaXMgYXBwIHRvIGhvc3QgcmVz
dWx0cy5qc29uCisgICAgICAgIGFuZCBleHBlY3RhdGlvbnMuanNvbiwgYnV0IHRoZSBmaWxlcyBo
b3N0ZWQgYnkgdGhpcyBhcHAgYXJlIG5vdCBsaW1pdGVkCisgICAgICAgIHRvIGNocm9taXVtIHJl
c3VsdHMgb3IganNvbiBmaWxlcy4gSXQgY2FuIGJlIHVzZWQgdG8gaG9zdCBvdGhlciBmaWxlcyBp
ZiBuZWVkZWQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1OTQ0CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZl
cjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIv
YXBwLnlhbWw6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRf
c2VydmVyL2hhbmRsZXJzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3Rf
cmVzdWx0X3NlcnZlci9oYW5kbGVycy9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMvbWVudS5weTogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMv
dGVzdGZpbGVoYW5kbGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rl
c3RfcmVzdWx0X3NlcnZlci9pbmRleC55YW1sOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9tYWluLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9tb2RlbDogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvbW9kZWwvX19pbml0X18ucHk6IEFk
ZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL21vZGVs
L3Rlc3RmaWxlLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVz
dWx0X3NlcnZlci90ZW1wbGF0ZXM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9tZW51Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxp
c3QuaHRtbDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9z
ZXJ2ZXIvdGVtcGxhdGVzL3VwbG9hZGZvcm0uaHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMDkgIERp
cmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TmF0ZSBDaGFwaW4uCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVz
dWx0X3NlcnZlci9hcHAueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9hcHAueWFtbAkocmV2aXNpb24gMCkKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL2FwcC55YW1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2FwcGxpY2F0aW9uOiB0ZXN0LXJlc3VsdHMKK3ZlcnNp
b246IDEKK3J1bnRpbWU6IHB5dGhvbgorYXBpX3ZlcnNpb246IDEKKworaGFuZGxlcnM6CistIHVy
bDogLy4qCisgIHNjcmlwdDogbWFpbi5weQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvYXBwLnlhbWwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9pbmRleC55YW1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL2luZGV4LnlhbWwJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0
X3NlcnZlci9pbmRleC55YW1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACitpbmRleGVz
OgorCisjIEFVVE9HRU5FUkFURUQKKworIyBUaGlzIGluZGV4LnlhbWwgaXMgYXV0b21hdGljYWxs
eSB1cGRhdGVkIHdoZW5ldmVyIHRoZSBkZXZfYXBwc2VydmVyCisjIGRldGVjdHMgdGhhdCBhIG5l
dyB0eXBlIG9mIHF1ZXJ5IGlzIHJ1bi4gIElmIHlvdSB3YW50IHRvIG1hbmFnZSB0aGUKKyMgaW5k
ZXgueWFtbCBmaWxlIG1hbnVhbGx5LCByZW1vdmUgdGhlIGFib3ZlIG1hcmtlciBsaW5lICh0aGUg
bGluZQorIyBzYXlpbmcgIiMgQVVUT0dFTkVSQVRFRCIpLiAgSWYgeW91IHdhbnQgdG8gbWFuYWdl
IHNvbWUgaW5kZXhlcworIyBtYW51YWxseSwgbW92ZSB0aGVtIGFib3ZlIHRoZSBtYXJrZXIgbGlu
ZS4gIFRoZSBpbmRleC55YW1sIGZpbGUgaXMKKyMgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byB0
aGUgYWRtaW4gY29uc29sZSB3aGVuIHlvdSBuZXh0IGRlcGxveQorIyB5b3VyIGFwcGxpY2F0aW9u
IHVzaW5nIGFwcGNmZy5weS4KKworLSBraW5kOiBUZXN0RmlsZQorICBwcm9wZXJ0aWVzOgorICAt
IG5hbWU6IGJ1aWxkZXIKKyAgLSBuYW1lOiBkYXRlCisgICAgZGlyZWN0aW9uOiBkZXNjCisKKy0g
a2luZDogVGVzdEZpbGUKKyAgcHJvcGVydGllczoKKyAgLSBuYW1lOiBidWlsZGVyCisgIC0gbmFt
ZTogbmFtZQorICAtIG5hbWU6IGRhdGUKKyAgICBkaXJlY3Rpb246IGRlc2MKKworLSBraW5kOiBU
ZXN0RmlsZQorICBwcm9wZXJ0aWVzOgorICAtIG5hbWU6IG5hbWUKKyAgLSBuYW1lOiBkYXRlCisg
ICAgZGlyZWN0aW9uOiBkZXNjCisKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL2luZGV4LnlhbWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9tYWluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL21haW4ucHkJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9t
YWluLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisjIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjIFJlcXVlc3QgYSBtb2Rlcm4gRGphbmdvCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZGlzdCBp
bXBvcnQgdXNlX2xpYnJhcnkKK3VzZV9saWJyYXJ5KCdkamFuZ28nLCAnMS4xJykKKworZnJvbSBn
b29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUu
ZXh0LndlYmFwcC51dGlsIGltcG9ydCBydW5fd3NnaV9hcHAKKworZnJvbSBoYW5kbGVycy5tZW51
IGltcG9ydCBNZW51Citmcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgRGVsZXRl
RmlsZQorZnJvbSBoYW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IEdldEZpbGUKK2Zyb20g
aGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBHZXRVcGxvYWRVcmwKK2Zyb20gaGFuZGxl
cnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBVcGxvYWQKK2Zyb20gaGFuZGxlcnMudGVzdGZpbGVo
YW5kbGVyIGltcG9ydCBVcGxvYWRGb3JtCisKK3JvdXRlcyA9IFsKKyAgICAoJy9kZWxldGVmaWxl
JywgRGVsZXRlRmlsZSksCisgICAgKCcvZ2V0ZmlsZScsIEdldEZpbGUpLAorICAgICgnL2dldHVw
bG9hZHVybCcsIEdldFVwbG9hZFVybCksCisgICAgKCcvdXBsb2FkJywgVXBsb2FkKSwKKyAgICAo
Jy91cGxvYWRmb3JtJywgVXBsb2FkRm9ybSksCisgICAgKCcvKnwvbWVudScsIE1lbnUpLAorXQor
CithcHBsaWNhdGlvbiA9IHdlYmFwcC5XU0dJQXBwbGljYXRpb24ocm91dGVzLCBkZWJ1Zz1UcnVl
KQorCitkZWYgbWFpbigpOgorICAgIHJ1bl93c2dpX2FwcChhcHBsaWNhdGlvbikKKworaWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKClByb3BlcnR5IGNoYW5nZXMgb246IFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL21haW4ucHkKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKTmFtZTogc3ZuOmVvbC1zdHlsZQog
ICArIExGCgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9z
ZXJ2ZXIvaGFuZGxlcnMvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvaGFuZGxlcnMvX19pbml0X18ucHkJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3Nl
cnZlci9oYW5kbGVycy9fX2luaXRfXy5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorIyBS
ZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZp
bGVzCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rl
c3RfcmVzdWx0X3NlcnZlci9oYW5kbGVycy9fX2luaXRfXy5weQpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjpleGVjdXRhYmxlCiAgICsgKgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBX
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9oYW5kbGVycy9t
ZW51LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9y
ZXN1bHRfc2VydmVyL2hhbmRsZXJzL21lbnUucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9oYW5kbGVycy9tZW51LnB5CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIGdv
b2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5l
eHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQorCittZW51ID0gWworICAgIFsiTGlzdCBvZiBmaWxl
cyIsICIvZ2V0ZmlsZSJdLAorICAgIFsiTGlzdCBvZiByZXN1bHRzLmpzb24gZmlsZXMiLCAiL2dl
dGZpbGU/bmFtZT1yZXN1bHRzLmpzb24iXSwKKyAgICBbIkxpc3Qgb2YgZXhwZWN0YXRpb25zLmpz
b24gZmlsZXMiLCAiL2dldGZpbGU/bmFtZT1leHBlY3RhdGlvbnMuanNvbiJdLAorICAgIFsiVXBs
b2FkIGZpbGUiLCAiL3VwbG9hZGZvcm0iXSwKK10KKworCitjbGFzcyBNZW51KHdlYmFwcC5SZXF1
ZXN0SGFuZGxlcik6CisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgdGVtcGxhdGVfdmFsdWVz
ID0geworICAgICAgICAgICAgIm1lbnUiOiBtZW51LAorICAgICAgICB9CisKKyAgICAgICAgc2Vs
Zi5yZXNwb25zZS5vdXQud3JpdGUoCisgICAgICAgICAgICB0ZW1wbGF0ZS5yZW5kZXIoInRlbXBs
YXRlcy9tZW51Lmh0bWwiLCB0ZW1wbGF0ZV92YWx1ZXMpKQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9oYW5kbGVy
cy9tZW51LnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCk5hbWU6IHN2
bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGVzdF9yZXN1bHRfc2VydmVyL2hhbmRsZXJzL3Rlc3RmaWxlaGFuZGxlci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9oYW5k
bGVycy90ZXN0ZmlsZWhhbmRsZXIucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRsZXIu
cHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYyIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitp
bXBvcnQgbG9nZ2luZworCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCBibG9ic3Rv
cmUKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAorZnJvbSBnb29nbGUu
YXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IGJsb2JzdG9yZV9oYW5kbGVycworZnJvbSBnb29n
bGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCisKK2Zyb20gbW9kZWwudGVz
dGZpbGUgaW1wb3J0IFRlc3RGaWxlCisKK1BBUkFNX0JVSUxERVIgPSAiYnVpbGRlciIKK1BBUkFN
X0RJUiA9ICJkaXIiCitQQVJBTV9GSUxFID0gImZpbGUiCitQQVJBTV9OQU1FID0gIm5hbWUiCitQ
QVJBTV9LRVkgPSAia2V5IgorCisKK2NsYXNzIERlbGV0ZUZpbGUod2ViYXBwLlJlcXVlc3RIYW5k
bGVyKToKKyAgICAiIiJEZWxldGUgdGVzdCBmaWxlIGZvciBhIGdpdmVuIGJ1aWxkZXIgYW5kIG5h
bWUgZnJvbSBkYXRhc3RvcmUgKG1ldGFkYXRhKSBhbmQgYmxvYnN0b3JlIChmaWxlIGRhdGEpLiIi
IgorCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAga2V5ID0gc2VsZi5yZXF1ZXN0LmdldChQ
QVJBTV9LRVkpCisgICAgICAgIGJ1aWxkZXIgPSBzZWxmLnJlcXVlc3QuZ2V0KFBBUkFNX0JVSUxE
RVIpCisgICAgICAgIG5hbWUgPSBzZWxmLnJlcXVlc3QuZ2V0KFBBUkFNX05BTUUpCisKKyAgICAg
ICAgbG9nZ2luZy5kZWJ1ZygiRGVsZXRpbmcgRmlsZSwgYnVpbGRlcjogJXMsIG5hbWU6ICVzLCBi
bG9iIGtleTogJXMuIiwKKyAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLCBuYW1lLCBrZXkp
CisKKyAgICAgICAgVGVzdEZpbGUuZGVsZXRlX2ZpbGUoa2V5LCBidWlsZGVyLCBuYW1lLCAxMDAp
CisKKyAgICAgICAgIyBEaXNwbGF5IGZpbGUgbGlzdCBhZnRlciBkZWxldGluZyB0aGUgZmlsZS4K
KyAgICAgICAgc2VsZi5yZWRpcmVjdCgiL2dldGZpbGU/YnVpbGRlcj0lcyZuYW1lPSVzIiAlIChi
dWlsZGVyLCBuYW1lKSkKKworCitjbGFzcyBHZXRGaWxlKGJsb2JzdG9yZV9oYW5kbGVycy5CbG9i
c3RvcmVEb3dubG9hZEhhbmRsZXIpOgorICAgICIiIkdldCBmaWxlIGNvbnRlbnQgb3IgbGlzdCBv
ZiBmaWxlcyBmb3IgZ2l2ZW4gYnVpbGRlciBhbmQgbmFtZS4iIiIKKworICAgIGRlZiBnZXRfZmls
ZV9saXN0KHNlbGYsIGJ1aWxkZXIsIG5hbWUpOgorICAgICAgICAiIiJHZXQgYW5kIGRpc3BsYXkg
YSBsaXN0IG9mIGZpbGVzIHRoYXQgbWF0Y2hlcyBidWlsZGVyIGFuZCBmaWxlIG5hbWUuCisKKyAg
ICAgICAgQXJnczoKKyAgICAgICAgICAgIGJ1aWxkZXI6IGJ1aWxkZXIgbmFtZQorICAgICAgICAg
ICAgbmFtZTogZmlsZSBuYW1lCisgICAgICAgICIiIgorCisgICAgICAgIGZpbGVzID0gVGVzdEZp
bGUuZ2V0X2ZpbGVzKGJ1aWxkZXIsIG5hbWUsIDEwMCkKKyAgICAgICAgaWYgbm90IGZpbGVzOgor
ICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCJGaWxlIG5vdCBmb3VuZCwgYnVpbGRlcjogJXMsIG5h
bWU6ICVzLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlciwgbmFtZSkKKyAgICAg
ICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCJGaWxlIG5vdCBmb3VuZCIpCisgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMgPSB7CisgICAgICAgICAgICAi
YnVpbGRlciI6IGJ1aWxkZXIsCisgICAgICAgICAgICAibmFtZSI6IG5hbWUsCisgICAgICAgICAg
ICAiZmlsZXMiOiBmaWxlcywKKyAgICAgICAgfQorICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53
cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV92YWx1
ZXMpKQorCisgICAgZGVmIGdldF9maWxlX2NvbnRlbnQoc2VsZiwgYnVpbGRlciwgbmFtZSk6Cisg
ICAgICAgICIiIlJldHVybiBjb250ZW50IG9mIHRoZSBmaWxlIHRoYXQgbWF0Y2hlcyBidWlsZGVy
IGFuZCBmaWxlIG5hbWUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGJ1aWxkZXI6IGJ1
aWxkZXIgbmFtZQorICAgICAgICAgICAgbmFtZTogZmlsZSBuYW1lCisgICAgICAgICIiIgorCisg
ICAgICAgIGZpbGVzID0gVGVzdEZpbGUuZ2V0X2ZpbGVzKGJ1aWxkZXIsIG5hbWUsIDEpCisgICAg
ICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygiRmlsZSBub3QgZm91
bmQsIGJ1aWxkZXI6ICVzLCBuYW1lOiAlcy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBibG9iX2tleSA9IGZp
bGVzWzBdLmJsb2Jfa2V5CisgICAgICAgIGJsb2JfaW5mbyA9IGJsb2JzdG9yZS5nZXQoYmxvYl9r
ZXkpCisgICAgICAgIGlmIGJsb2JfaW5mbzoKKyAgICAgICAgICAgIHNlbGYuc2VuZF9ibG9iKGJs
b2JfaW5mbywgInRleHQvcGxhaW4iKQorCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgYnVp
bGRlciA9IHNlbGYucmVxdWVzdC5nZXQoUEFSQU1fQlVJTERFUikKKyAgICAgICAgbmFtZSA9IHNl
bGYucmVxdWVzdC5nZXQoUEFSQU1fTkFNRSkKKyAgICAgICAgZGlyID0gc2VsZi5yZXF1ZXN0Lmdl
dChQQVJBTV9ESVIpCisKKyAgICAgICAgbG9nZ2luZy5kZWJ1ZygiR2V0dGluZyBmaWxlcywgYnVp
bGRlcjogJXMsIG5hbWU6ICVzLiIsIGJ1aWxkZXIsIG5hbWUpCisKKyAgICAgICAgIyBJZiBwYXJh
bWV0ZXIgImRpciIgaXMgc3BlY2lmaWVkIG9yIHRoZXJlIGlzIG5vIGJ1aWxkZXIgb3IgZmlsZW5h
bWUKKyAgICAgICAgIyBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QsIHJldHVybiBsaXN0IG9mIGZp
bGVzLCBvdGhlcndpc2UsIHJldHVybgorICAgICAgICAjIGZpbGUgY29udGVudC4KKyAgICAgICAg
aWYgZGlyIG9yIG5vdCBidWlsZGVyIG9yIG5vdCBuYW1lOgorICAgICAgICAgICAgcmV0dXJuIHNl
bGYuZ2V0X2ZpbGVfbGlzdChidWlsZGVyLCBuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuZ2V0X2ZpbGVfY29udGVudChidWlsZGVyLCBuYW1lKQorCisKK2NsYXNz
IEdldFVwbG9hZFVybCh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgICIiIkdldCBhbiB1cmwg
Zm9yIHVwbG9hZGluZyBmaWxlIHRvIGJsb2JzdG9yZS4gQSBzcGVjaWFsIHVybCBpcyByZXF1aXJl
ZCBmb3IgZWFjaCBibG9ic290cmUgdXBsb2FkLiIiIgorCisgICAgZGVmIGdldChzZWxmKToKKyAg
ICAgICAgdXBsb2FkX3VybCA9IGJsb2JzdG9yZS5jcmVhdGVfdXBsb2FkX3VybCgiL3VwbG9hZCIp
CisgICAgICAgIGxvZ2dpbmcuZGVidWcoIkdldHRpbmcgdXBsb2FkIHVybDogJXMuIiwgdXBsb2Fk
X3VybCkKKyAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodXBsb2FkX3VybCkKKworCitj
bGFzcyBVcGxvYWQoYmxvYnN0b3JlX2hhbmRsZXJzLkJsb2JzdG9yZVVwbG9hZEhhbmRsZXIpOgor
ICAgICIiIlVwbG9hZCBmaWxlIHRvIGJsb2JzdG9yZS4iIiIKKworICAgIGRlZiBwb3N0KHNlbGYp
OgorICAgICAgICBidWlsZGVyID0gc2VsZi5yZXF1ZXN0LmdldChQQVJBTV9CVUlMREVSKQorICAg
ICAgICBpZiBub3QgYnVpbGRlcjoKKyAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiTWlzc2lu
ZyBidWlsZGVyIHBhcmFtZXRlciBpbiB1cGxvYWQgcmVxdWVzdC4iKQorICAgICAgICAgICAgc2Vs
Zi5yZXNwb25zZS5vdXQud3JpdGUoIkZBSUw6IG1pc3NpbmcgYnVpbGRlciBwYXJhbWV0ZXIuIikK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGxvZ2dpbmcuZGVidWcoIlByb2Nlc3Npbmcg
dXBsb2FkIHJlcXVlc3QsIGJ1aWxkZXI6ICVzLiIsIGJ1aWxkZXIpCisKKyAgICAgICAgZm9yIHVw
bG9hZCBpbiBzZWxmLmdldF91cGxvYWRzKCJmaWxlIik6CisgICAgICAgICAgICB0ZiA9IFRlc3RG
aWxlLnVwZGF0ZV9maWxlKGJ1aWxkZXIsIHVwbG9hZCkKKyAgICAgICAgICAgIGlmIHRmOgorICAg
ICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygiRmlsZSB1cGxvYWRlZCwga2V5OiAlcy4iLCB0Zi5r
ZXkoKSkKKworICAgICAgICAjIEJsb2JzdG9yZVVwbG9hZEhhbmRsZXIgcmVxdWlyZXMgcmVkaXJl
Y3QgYXQgdGhlIGVuZC4KKyAgICAgICAgc2VsZi5yZWRpcmVjdCgiLyIpCisKKworY2xhc3MgVXBs
b2FkRm9ybSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgICIiIlNob3cgYSBmb3JtIHNvIHVz
ZXIgY2FuIHN1Ym1pdCBhIGZpbGUgdG8gYmxvYnN0b3JlLiIiIgorCisgICAgZGVmIGdldChzZWxm
KToKKyAgICAgICAgdXBsb2FkX3VybCA9IGJsb2JzdG9yZS5jcmVhdGVfdXBsb2FkX3VybCgiL3Vw
bG9hZCIpCisgICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKKyAgICAgICAgICAgICJ1cGxvYWRf
dXJsIjogdXBsb2FkX3VybCwKKyAgICAgICAgfQorICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53
cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy91cGxvYWRmb3JtLmh0bWwiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVfdmFsdWVz
KSkKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dF9yZXN1bHRfc2VydmVyL2hhbmRsZXJzL3Rlc3RmaWxlaGFuZGxlci5weQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5h
bWU6IHN2bjpleGVjdXRhYmxlCiAgICsgKgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVzdWx0X3NlcnZlci9tb2Rl
bC9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rlc3RfcmVzdWx0X3NlcnZlci9tb2RlbC9fX2luaXRfXy5weQkocmV2aXNpb24gMCkKKysrIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL21vZGVsL19faW5p
dF9fLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24g
dG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL21v
ZGVsL19faW5pdF9fLnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCk5h
bWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL21vZGVsL3Rlc3RmaWxlLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL21vZGVsL3Rl
c3RmaWxlLnB5CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
ZXN0X3Jlc3VsdF9zZXJ2ZXIvbW9kZWwvdGVzdGZpbGUucHkJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTE0IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRl
dGltZQoraW1wb3J0IGxvZ2dpbmcKKworZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQg
YmxvYnN0b3JlCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCBkYgorCisKK2NsYXNz
IFRlc3RGaWxlKGRiLk1vZGVsKToKKyAgICBidWlsZGVyID0gZGIuU3RyaW5nUHJvcGVydHkoKQor
ICAgIG5hbWUgPSBkYi5TdHJpbmdQcm9wZXJ0eSgpCisgICAgYmxvYl9rZXkgPSBkYi5TdHJpbmdQ
cm9wZXJ0eSgpCisgICAgZGF0ZSA9IGRiLkRhdGVUaW1lUHJvcGVydHkoYXV0b19ub3dfYWRkPVRy
dWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGVsZXRlX2ZpbGUoY2xzLCBrZXksIGJ1
aWxkZXIsIG5hbWUsIGxpbWl0KToKKyAgICAgICAgaWYga2V5OgorICAgICAgICAgICAgZmlsZSA9
IGRiLmdldChrZXkpCisgICAgICAgICAgICBpZiBub3QgZmlsZToKKyAgICAgICAgICAgICAgICBs
b2dnaW5nLndhcm5pbmcoIkZpbGUgbm90IGZvdW5kLCBrZXk6ICVzLiIsIGtleSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgZmlsZS5fZGVsZXRlX2FsbCgpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxlcyA9IGNscy5nZXRfZmlsZXMoYnVpbGRlciwg
bmFtZSwgbGltaXQpCisgICAgICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICAgICAg
bG9nZ2luZy53YXJuaW5nKCJGaWxlIG5vdCBmb3VuZCwgYnVpbGRlcjogJXMsIG5hbWU6ICVzLiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIsIG5hbWUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgor
ICAgICAgICAgICAgICAgIGZpbGUuX2RlbGV0ZV9hbGwoKQorCisgICAgICAgIHJldHVybiBUcnVl
CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X2ZpbGVzKGNscywgYnVpbGRlciwgbmFt
ZSwgbGltaXQpOgorICAgICAgICBxdWVyeSA9IFRlc3RGaWxlLmFsbCgpCisgICAgICAgIGlmIGJ1
aWxkZXI6CisgICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LmZpbHRlcigiYnVpbGRlciA9IiwgYnVp
bGRlcikKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkuZmlsdGVy
KCJuYW1lID0iLCBuYW1lKQorCisgICAgICAgIHJldHVybiBxdWVyeS5vcmRlcigiLWRhdGUiKS5m
ZXRjaChsaW1pdCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBhZGRfZmlsZShjbHMsIGJ1
aWxkZXIsIGJsb2JfaW5mbyk6CisgICAgICAgIGZpbGUgPSBUZXN0RmlsZSgpCisgICAgICAgIGZp
bGUuYnVpbGRlciA9IGJ1aWxkZXIKKyAgICAgICAgZmlsZS5uYW1lID0gYmxvYl9pbmZvLmZpbGVu
YW1lCisgICAgICAgIGZpbGUuYmxvYl9rZXkgPSBzdHIoYmxvYl9pbmZvLmtleSgpKQorICAgICAg
ICBmaWxlLnB1dCgpCisKKyAgICAgICAgbG9nZ2luZy5pbmZvKCJGaWxlIHNhdmVkLCBidWlsZGVy
OiAlcywgbmFtZTogJXMsIGJsb2Iga2V5OiAlcy4iLAorICAgICAgICAgICAgICAgICAgICAgYnVp
bGRlciwgZmlsZS5uYW1lLCBmaWxlLmJsb2Jfa2V5KQorCisgICAgICAgIHJldHVybiBmaWxlCisK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdXBkYXRlX2ZpbGUoY2xzLCBidWlsZGVyLCBibG9i
X2luZm8pOgorICAgICAgICBmaWxlcyA9IGNscy5nZXRfZmlsZXMoYnVpbGRlciwgYmxvYl9pbmZv
LmZpbGVuYW1lLCAxKQorICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICByZXR1cm4g
Y2xzLmFkZF9maWxlKGJ1aWxkZXIsIGJsb2JfaW5mbykKKworICAgICAgICBmaWxlID0gZmlsZXNb
MF0KKyAgICAgICAgb2xkX2Jsb2JfaW5mbyA9IGJsb2JzdG9yZS5CbG9iSW5mby5nZXQoZmlsZS5i
bG9iX2tleSkKKyAgICAgICAgaWYgb2xkX2Jsb2JfaW5mbzoKKyAgICAgICAgICAgIG9sZF9ibG9i
X2luZm8uZGVsZXRlKCkKKworICAgICAgICBmaWxlLmJ1aWxkZXIgPSBidWlsZGVyCisgICAgICAg
IGZpbGUubmFtZSA9IGJsb2JfaW5mby5maWxlbmFtZQorICAgICAgICBmaWxlLmJsb2Jfa2V5ID0g
c3RyKGJsb2JfaW5mby5rZXkoKSkKKyAgICAgICAgZmlsZS5kYXRlID0gZGF0ZXRpbWUubm93KCkK
KyAgICAgICAgZmlsZS5wdXQoKQorCisgICAgICAgIGxvZ2dpbmcuaW5mbygiRmlsZSByZXBsYWNl
ZCwgYnVpbGRlcjogJXMsIG5hbWU6ICVzLCBibG9iIGtleTogJXMuIiwKKyAgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkZXIsIGZpbGUubmFtZSwgZmlsZS5ibG9iX2tleSkKKworICAgICAgICByZXR1
cm4gZmlsZQorCisgICAgZGVmIF9kZWxldGVfYWxsKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmJs
b2Jfa2V5OgorICAgICAgICAgICAgYmxvYl9pbmZvID0gYmxvYnN0b3JlLkJsb2JJbmZvLmdldChz
ZWxmLmJsb2Jfa2V5KQorICAgICAgICAgICAgaWYgYmxvYl9pbmZvOgorICAgICAgICAgICAgICAg
IGJsb2JfaW5mby5kZWxldGUoKQorCisgICAgICAgIHNlbGYuZGVsZXRlKCkKClByb3BlcnR5IGNo
YW5nZXMgb246IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVy
L21vZGVsL3Rlc3RmaWxlLnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAq
Ck5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9tZW51Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9zZXJ2ZXIvdGVt
cGxhdGVzL21lbnUuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9tZW51Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5UZXN0IFJlc3VsdCBTZXJ2ZXI8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8aDE+VGVzdCBS
ZXN1bHQgU2VydmVyPC9oMT4KKzxkaXY+CisgICAgPHVsPnslIGZvciB0aXRsZSxsaW5rIGluIG1l
bnUgJX0KKyAgICAgICAgPGxpPgorICAgICAgICAgICAgPGEgaHJlZj0ie3sgbGluayB9fSIgPnt7
IHRpdGxlIH19PC9hPgorICAgICAgICA8L2xpPnslIGVuZGZvciAlfQorICAgIDwvdWw+Cis8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9tZW51Lmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKTmFtZTogc3ZuOmVvbC1zdHlsZQog
ICArIExGCgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0X3Jlc3VsdF9z
ZXJ2ZXIvdGVtcGxhdGVzL3Nob3dmaWxlbGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9zaG93Zmls
ZWxpc3QuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPlRlc3QgUmVzdWx0czwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5UZXN0IFJlc3Vs
dHM8L2gxPgorPGgyPnt7IGJ1aWxkZXIgfX0ge3sgbmFtZSB9fTwvaDI+Cis8ZGl2PgorICAgIDx0
YWJsZT4KKyAgICAgICAgPHRyPgorICAgICAgICAgICAgPHRoPkJ1aWxkZXI8L3RoPgorICAgICAg
ICAgICAgPHRoPkZpbGU8L3RoPgorICAgICAgICAgICAgPHRoPkRhdGU8L3RoPgorICAgICAgICB7
JSBmb3IgZmlsZSBpbiBmaWxlcyAlfQorICAgICAgICA8dHI+eyUgaWYgZmlsZS5idWlsZGVyIGFu
ZCBmaWxlLm5hbWUgJX0KKyAgICAgICAgICAgIDx0ZD48YSBocmVmPSIvZ2V0ZmlsZT9idWlsZGVy
PXt7IGZpbGUuYnVpbGRlciB9fSIgPgorICAgICAgICAgICAgICAgIHt7IGZpbGUuYnVpbGRlciB9
fQorICAgICAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8
dGQ+PGEgaHJlZj0iL2dldGZpbGU/YnVpbGRlcj17eyBmaWxlLmJ1aWxkZXIgfX0mbmFtZT17eyBm
aWxlLm5hbWUgfX0iID4KKyAgICAgICAgICAgICAgICB7eyBmaWxlLm5hbWUgfX0KKyAgICAgICAg
ICAgICAgICA8L2E+CisgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkPnt7IGZpbGUu
ZGF0ZXxkYXRlOiJkLU0tWSBIOmk6cyIgfX0KKyAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAg
ICA8dGQ+PGEgaHJlZj0iL2RlbGV0ZWZpbGU/a2V5PXt7IGZpbGUua2V5IH19JmJ1aWxkZXI9e3sg
YnVpbGRlciB9fSZuYW1lPXt7IG5hbWUgfX0iID4KKyAgICAgICAgICAgICAgICBEZWxldGUKKyAg
ICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8L3RkPgorICAgICAgICB7JSBlbmRpZiAl
fQorICAgICAgICA8L3RyPgorICAgIHslIGVuZGZvciAlfQorICAgIDwvdGFibGU+Cis8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRt
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjpleGVjdXRhYmxlCiAgICsgKgpOYW1lOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3RfcmVz
dWx0X3NlcnZlci90ZW1wbGF0ZXMvdXBsb2FkZm9ybS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy91cGxv
YWRmb3JtLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rlc3RfcmVzdWx0X3NlcnZlci90ZW1wbGF0ZXMvdXBsb2FkZm9ybS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+VXBsb2FkIHRlc3QgcmVzdWx0IGZpbGU8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8aDE+
VXBsb2FkIHRlc3QgcmVzdWx0IGZpbGU8L2gxPgorPGZvcm0gYWNjZXB0PSJ0ZXh0L2h0bWwiIGFj
dGlvbj0ie3sgdXBsb2FkX3VybCB9fSIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0
aG9kPSJwb3N0Ij4KKyAgICA8ZGl2PjxsYWJlbD5CdWlsZGVyOjwvbGFiZWw+PGlucHV0IHR5cGU9
InRleHQiIG5hbWU9ImJ1aWxkZXIiIHZhbHVlPSJXZWJraXQgKGRiZykoMSkiLz48L2Rpdj4KKyAg
ICA8YnI+CisgICAgPGRpdj48aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSI+PC9kaXY+Cisg
ICAgPGRpdj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIj48L2Rpdj4KKzwvZm9y
bT4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGVzdF9yZXN1bHRfc2VydmVyL3RlbXBsYXRlcy91cGxvYWRmb3JtLmh0
bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKTmFtZTogc3ZuOmVvbC1z
dHlsZQogICArIExGCgo=
</data>
<flag name="review"
          id="33472"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50632</attachid>
            <date>2010-03-12 14:15:45 -0800</date>
            <delta_ts>2010-03-13 02:45:05 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>test-results.patch</filename>
            <type>text/plain</type>
            <size>27957</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1OTM1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDMtMTIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGFwcGVuZ2luZSBhcHAgdG8gaG9zdCBh
bmQgc2VydmUgd2Via2l0IGxheW91dCB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgVGhlIGFwcCBh
bGxvd3MgeW91IHBvc3QgdGVzdCByZXN1bHQgZmlsZXMgKGpzb24pIGFuZCBzZXJ2ZSB0aGVtIHVw
LgorICAgICAgICBDaHJvbWl1bSBmbGFraW5lc3MgZGFzaGJvYXJkIHdpbGwgZmlyc3QgdXNlIHRo
aXMgYXBwIHRvIGhvc3QgcmVzdWx0cy5qc29uCisgICAgICAgIGFuZCBleHBlY3RhdGlvbnMuanNv
biwgYnV0IHRoZSBmaWxlcyBob3N0ZWQgYnkgdGhpcyBhcHAgYXJlIG5vdCBsaW1pdGVkCisgICAg
ICAgIHRvIGNocm9taXVtIHJlc3VsdHMgb3IganNvbiBmaWxlcy4gSXQgY2FuIGJlIHVzZWQgdG8g
aG9zdCBvdGhlciBmaWxlcyBpZiBuZWVkZWQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTQ0CisKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVy
OiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL2FwcC55YW1sOiBBZGRlZC4KKyAg
ICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
UmVzdWx0U2VydmVyL2hhbmRsZXJzL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
UmVzdWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHk6IEFkZGVkLgorICAgICAgICAqIFRlc3RSZXN1
bHRTZXJ2ZXIvaGFuZGxlcnMvdGVzdGZpbGVoYW5kbGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKiBU
ZXN0UmVzdWx0U2VydmVyL2luZGV4LnlhbWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RSZXN1bHRT
ZXJ2ZXIvbWFpbi5weTogQWRkZWQuCisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9tb2RlbDog
QWRkZWQuCisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9tb2RlbC9fX2luaXRfXy5weTogQWRk
ZWQuCisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weTogQWRkZWQu
CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0czogQWRkZWQuCisgICAgICAg
ICogVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9mb3JtLmNzczogQWRkZWQuCisgICAgICAg
ICogVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9tZW51LmNzczogQWRkZWQuCisgICAgICAg
ICogVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy90ZXN0ZmlsZS5jc3M6IEFkZGVkLgorICAg
ICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9tZW51Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RS
ZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL3Nob3dmaWxlbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy91cGxvYWRmb3JtLmh0bWw6IEFkZGVkLgorCiAy
MDEwLTAzLTEyICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFi
b3JhLmNvLnVrPgogCiAgICAgICAgIEZpeCBjcml0aWNhbCBiZWluZyBwcmludGVkIHRvIHN0ZGVy
ciBvbiBldmVyeSB0ZXN0LiBUaGlzIGlzCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2Vy
dmVyL2FwcC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
YXBwLnlhbWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2Fw
cC55YW1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACithcHBsaWNhdGlvbjogdGVzdC1y
ZXN1bHRzCit2ZXJzaW9uOiAxCitydW50aW1lOiBweXRob24KK2FwaV92ZXJzaW9uOiAxCisKK2hh
bmRsZXJzOgorLSB1cmw6IC9zdHlsZXNoZWV0cworICBzdGF0aWNfZGlyOiBzdHlsZXNoZWV0cwor
CistIHVybDogLy4qCisgIHNjcmlwdDogbWFpbi5weQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9pbmRleC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvaW5kZXgueWFtbAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvaW5kZXgueWFtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAoraW5kZXhl
czoNCisNCisjIEFVVE9HRU5FUkFURUQNCisNCisjIFRoaXMgaW5kZXgueWFtbCBpcyBhdXRvbWF0
aWNhbGx5IHVwZGF0ZWQgd2hlbmV2ZXIgdGhlIGRldl9hcHBzZXJ2ZXINCisjIGRldGVjdHMgdGhh
dCBhIG5ldyB0eXBlIG9mIHF1ZXJ5IGlzIHJ1bi4gIElmIHlvdSB3YW50IHRvIG1hbmFnZSB0aGUN
CisjIGluZGV4LnlhbWwgZmlsZSBtYW51YWxseSwgcmVtb3ZlIHRoZSBhYm92ZSBtYXJrZXIgbGlu
ZSAodGhlIGxpbmUNCisjIHNheWluZyAiIyBBVVRPR0VORVJBVEVEIikuICBJZiB5b3Ugd2FudCB0
byBtYW5hZ2Ugc29tZSBpbmRleGVzDQorIyBtYW51YWxseSwgbW92ZSB0aGVtIGFib3ZlIHRoZSBt
YXJrZXIgbGluZS4gIFRoZSBpbmRleC55YW1sIGZpbGUgaXMNCisjIGF1dG9tYXRpY2FsbHkgdXBs
b2FkZWQgdG8gdGhlIGFkbWluIGNvbnNvbGUgd2hlbiB5b3UgbmV4dCBkZXBsb3kNCisjIHlvdXIg
YXBwbGljYXRpb24gdXNpbmcgYXBwY2ZnLnB5Lg0KKw0KKy0ga2luZDogVGVzdEZpbGUNCisgIHBy
b3BlcnRpZXM6DQorICAtIG5hbWU6IGJ1aWxkZXINCisgIC0gbmFtZTogZGF0ZQ0KKyAgICBkaXJl
Y3Rpb246IGRlc2MNCisNCistIGtpbmQ6IFRlc3RGaWxlDQorICBwcm9wZXJ0aWVzOg0KKyAgLSBu
YW1lOiBidWlsZGVyDQorICAtIG5hbWU6IG5hbWUNCisgIC0gbmFtZTogZGF0ZQ0KKyAgICBkaXJl
Y3Rpb246IGRlc2MNCisNCistIGtpbmQ6IFRlc3RGaWxlDQorICBwcm9wZXJ0aWVzOg0KKyAgLSBu
YW1lOiBidWlsZGVyDQorICAtIG5hbWU6IG5hbWUNCisgIC0gbmFtZTogdGVzdF90eXBlDQorICAt
IG5hbWU6IGRhdGUNCisgICAgZGlyZWN0aW9uOiBkZXNjDQorDQorLSBraW5kOiBUZXN0RmlsZQ0K
KyAgcHJvcGVydGllczoNCisgIC0gbmFtZTogYnVpbGRlcj0NCisgIC0gbmFtZTogbmFtZT0NCisg
IC0gbmFtZTogZGF0ZQ0KKyAgICBkaXJlY3Rpb246IGRlc2MNCisNCistIGtpbmQ6IFRlc3RGaWxl
DQorICBwcm9wZXJ0aWVzOg0KKyAgLSBuYW1lOiBuYW1lDQorICAtIG5hbWU6IGRhdGUNCisgICAg
ZGlyZWN0aW9uOiBkZXNjDQorDQorLSBraW5kOiBUZXN0RmlsZQ0KKyAgcHJvcGVydGllczoNCisg
IC0gbmFtZTogdGVzdF90eXBlDQorICAtIG5hbWU6IGRhdGUNCisgICAgZGlyZWN0aW9uOiBkZXNj
DQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tYWluLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbWFpbi5weQkocmV2aXNpb24gMCkKKysr
IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbWFpbi5weQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBSZXF1ZXN0IGEgbW9kZXJuIERqYW5n
bworZnJvbSBnb29nbGUuYXBwZW5naW5lLmRpc3QgaW1wb3J0IHVzZV9saWJyYXJ5Cit1c2VfbGli
cmFyeSgnZGphbmdvJywgJzEuMScpCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0
IHdlYmFwcAorZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAudXRpbCBpbXBvcnQgcnVu
X3dzZ2lfYXBwCisKK2Zyb20gaGFuZGxlcnMubWVudSBpbXBvcnQgTWVudQorZnJvbSBoYW5kbGVy
cy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IERlbGV0ZUZpbGUKK2Zyb20gaGFuZGxlcnMudGVzdGZp
bGVoYW5kbGVyIGltcG9ydCBHZXRGaWxlCitmcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBp
bXBvcnQgR2V0VXBsb2FkVXJsCitmcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQg
VXBsb2FkCitmcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgVXBsb2FkRm9ybQor
ZnJvbSBoYW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IFVwbG9hZFN0YXR1cworCityb3V0
ZXMgPSBbCisgICAgKCcvZGVsZXRlZmlsZScsIERlbGV0ZUZpbGUpLAorICAgICgnL2dldGZpbGUn
LCBHZXRGaWxlKSwKKyAgICAoJy9nZXR1cGxvYWR1cmwnLCBHZXRVcGxvYWRVcmwpLAorICAgICgn
L3VwbG9hZCcsIFVwbG9hZCksCisgICAgKCcvdXBsb2FkZmFpbCcsIFVwbG9hZFN0YXR1cyksCisg
ICAgKCcvdXBsb2FkZm9ybScsIFVwbG9hZEZvcm0pLAorICAgICgnL3VwbG9hZHN1Y2Nlc3MnLCBV
cGxvYWRTdGF0dXMpLAorICAgICgnLyp8L21lbnUnLCBNZW51KSwKK10KKworYXBwbGljYXRpb24g
PSB3ZWJhcHAuV1NHSUFwcGxpY2F0aW9uKHJvdXRlcywgZGVidWc9VHJ1ZSkKKworZGVmIG1haW4o
KToKKyAgICBydW5fd3NnaV9hcHAoYXBwbGljYXRpb24pCisKK2lmIF9fbmFtZV9fID09ICJfX21h
aW5fXyI6CisgICAgbWFpbigpCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hh
bmRsZXJzL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRT
ZXJ2ZXIvaGFuZGxlcnMvX19pbml0X18ucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9U
ZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL19faW5pdF9fLnB5CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGUgZmlsZXMKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxl
cnMvbWVudS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hh
bmRsZXJzL21lbnUucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2Vy
dmVyL2hhbmRsZXJzL21lbnUucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAor
ZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCisKK21lbnUg
PSBbCisgICAgWyJMaXN0IG9mIGZpbGVzIiwgIi9nZXRmaWxlIl0sCisgICAgWyJMaXN0IG9mIHJl
c3VsdHMuanNvbiBmaWxlcyIsICIvZ2V0ZmlsZT9uYW1lPXJlc3VsdHMuanNvbiJdLAorICAgIFsi
TGlzdCBvZiBleHBlY3RhdGlvbnMuanNvbiBmaWxlcyIsICIvZ2V0ZmlsZT9uYW1lPWV4cGVjdGF0
aW9ucy5qc29uIl0sCisgICAgWyJVcGxvYWQgZmlsZSIsICIvdXBsb2FkZm9ybSJdLAorXQorCisK
K2NsYXNzIE1lbnUod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgZ2V0KHNlbGYpOgor
ICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMgPSB7CisgICAgICAgICAgICAibWVudSI6IG1lbnUsCisg
ICAgICAgIH0KKworICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgKKyAgICAgICAgICAg
IHRlbXBsYXRlLnJlbmRlcigidGVtcGxhdGVzL21lbnUuaHRtbCIsIHRlbXBsYXRlX3ZhbHVlcykp
CisKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvdGVzdGZpbGVo
YW5kbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFu
ZGxlcnMvdGVzdGZpbGVoYW5kbGVyLnB5CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRsZXIucHkJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjE3IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
IAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZworaW1w
b3J0IHVybGxpYgorCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCBibG9ic3RvcmUK
K2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAorZnJvbSBnb29nbGUuYXBw
ZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IGJsb2JzdG9yZV9oYW5kbGVycworZnJvbSBnb29nbGUu
YXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCisKK2Zyb20gbW9kZWwudGVzdGZp
bGUgaW1wb3J0IFRlc3RGaWxlCisKK1BBUkFNX0JVSUxERVIgPSAiYnVpbGRlciIKK1BBUkFNX0RJ
UiA9ICJkaXIiCitQQVJBTV9GSUxFID0gImZpbGUiCitQQVJBTV9OQU1FID0gIm5hbWUiCitQQVJB
TV9LRVkgPSAia2V5IgorUEFSQU1fVEVTVF9UWVBFID0gInRlc3R0eXBlIgorCisKK2NsYXNzIERl
bGV0ZUZpbGUod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAgICAiIiJEZWxldGUgdGVzdCBmaWxl
IGZvciBhIGdpdmVuIGJ1aWxkZXIgYW5kIG5hbWUgZnJvbSBkYXRhc3RvcmUgKG1ldGFkYXRhKSBh
bmQgYmxvYnN0b3JlIChmaWxlIGRhdGEpLiIiIgorCisgICAgZGVmIGdldChzZWxmKToKKyAgICAg
ICAga2V5ID0gc2VsZi5yZXF1ZXN0LmdldChQQVJBTV9LRVkpCisgICAgICAgIGJ1aWxkZXIgPSBz
ZWxmLnJlcXVlc3QuZ2V0KFBBUkFNX0JVSUxERVIpCisgICAgICAgIHRlc3RfdHlwZSA9IHNlbGYu
cmVxdWVzdC5nZXQoUEFSQU1fVEVTVF9UWVBFKQorICAgICAgICBuYW1lID0gc2VsZi5yZXF1ZXN0
LmdldChQQVJBTV9OQU1FKQorCisgICAgICAgIGxvZ2dpbmcuZGVidWcoCisgICAgICAgICAgICAi
RGVsZXRpbmcgRmlsZSwgYnVpbGRlcjogJXMsIHRlc3RfdHlwZTogJXMsIG5hbWU6ICVzLCBibG9i
IGtleTogJXMuIiwKKyAgICAgICAgICAgIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSwga2V5KQor
CisgICAgICAgIFRlc3RGaWxlLmRlbGV0ZV9maWxlKGtleSwgYnVpbGRlciwgdGVzdF90eXBlLCBu
YW1lLCAxMDApCisKKyAgICAgICAgIyBEaXNwbGF5IGZpbGUgbGlzdCBhZnRlciBkZWxldGluZyB0
aGUgZmlsZS4KKyAgICAgICAgc2VsZi5yZWRpcmVjdCgiL2dldGZpbGU/YnVpbGRlcj0lcyZ0ZXN0
dHlwZT0lcyZuYW1lPSVzIgorICAgICAgICAgICAgJSAoYnVpbGRlciwgdGVzdF90eXBlLCBuYW1l
KSkKKworCitjbGFzcyBHZXRGaWxlKGJsb2JzdG9yZV9oYW5kbGVycy5CbG9ic3RvcmVEb3dubG9h
ZEhhbmRsZXIpOgorICAgICIiIkdldCBmaWxlIGNvbnRlbnQgb3IgbGlzdCBvZiBmaWxlcyBmb3Ig
Z2l2ZW4gYnVpbGRlciBhbmQgbmFtZS4iIiIKKworICAgIGRlZiBnZXRfZmlsZV9saXN0KHNlbGYs
IGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CisgICAgICAgICIiIkdldCBhbmQgZGlzcGxheSBh
IGxpc3Qgb2YgZmlsZXMgdGhhdCBtYXRjaGVzIGJ1aWxkZXIgYW5kIGZpbGUgbmFtZS4KKworICAg
ICAgICBBcmdzOgorICAgICAgICAgICAgYnVpbGRlcjogYnVpbGRlciBuYW1lCisgICAgICAgICAg
ICB0ZXN0X3R5cGU6IHR5cGUgb2YgdGhlIHRlc3QKKyAgICAgICAgICAgIG5hbWU6IGZpbGUgbmFt
ZQorICAgICAgICAiIiIKKworICAgICAgICBmaWxlcyA9IFRlc3RGaWxlLmdldF9maWxlcyhidWls
ZGVyLCB0ZXN0X3R5cGUsIG5hbWUsIDEwMCkKKyAgICAgICAgaWYgbm90IGZpbGVzOgorICAgICAg
ICAgICAgbG9nZ2luZy5pbmZvKCJGaWxlIG5vdCBmb3VuZCwgYnVpbGRlcjogJXMsIHRlc3RfdHlw
ZTogJXMsIG5hbWU6ICVzLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlciwgdGVz
dF90eXBlLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoIkZpbGUg
bm90IGZvdW5kIikKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRlbXBsYXRlX3ZhbHVl
cyA9IHsKKyAgICAgICAgICAgICJidWlsZGVyIjogYnVpbGRlciwKKyAgICAgICAgICAgICJ0ZXN0
X3R5cGUiOiB0ZXN0X3R5cGUsCisgICAgICAgICAgICAibmFtZSI6IG5hbWUsCisgICAgICAgICAg
ICAiZmlsZXMiOiBmaWxlcywKKyAgICAgICAgfQorICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53
cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV92YWx1
ZXMpKQorCisgICAgZGVmIGdldF9maWxlX2NvbnRlbnQoc2VsZiwgYnVpbGRlciwgdGVzdF90eXBl
LCBuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIGNvbnRlbnQgb2YgdGhlIGZpbGUgdGhhdCBtYXRj
aGVzIGJ1aWxkZXIgYW5kIGZpbGUgbmFtZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg
YnVpbGRlcjogYnVpbGRlciBuYW1lCisgICAgICAgICAgICB0ZXN0X3R5cGU6IHR5cGUgb2YgdGhl
IHRlc3QKKyAgICAgICAgICAgIG5hbWU6IGZpbGUgbmFtZQorICAgICAgICAiIiIKKworICAgICAg
ICBmaWxlcyA9IFRlc3RGaWxlLmdldF9maWxlcyhidWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUsIDEp
CisgICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygiRmlsZSBu
b3QgZm91bmQsIGJ1aWxkZXI6ICVzLCB0ZXN0X3R5cGU6ICVzLCBuYW1lOiAlcy4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSkKKyAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgIGJsb2Jfa2V5ID0gZmlsZXNbMF0uYmxvYl9rZXkKKyAgICAgICAg
YmxvYl9pbmZvID0gYmxvYnN0b3JlLmdldChibG9iX2tleSkKKyAgICAgICAgaWYgYmxvYl9pbmZv
OgorICAgICAgICAgICAgc2VsZi5zZW5kX2Jsb2IoYmxvYl9pbmZvLCAidGV4dC9wbGFpbiIpCisK
KyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBidWlsZGVyID0gc2VsZi5yZXF1ZXN0LmdldChQ
QVJBTV9CVUlMREVSKQorICAgICAgICB0ZXN0X3R5cGUgPSBzZWxmLnJlcXVlc3QuZ2V0KFBBUkFN
X1RFU1RfVFlQRSkKKyAgICAgICAgbmFtZSA9IHNlbGYucmVxdWVzdC5nZXQoUEFSQU1fTkFNRSkK
KyAgICAgICAgZGlyID0gc2VsZi5yZXF1ZXN0LmdldChQQVJBTV9ESVIpCisKKyAgICAgICAgbG9n
Z2luZy5kZWJ1ZygKKyAgICAgICAgICAgICJHZXR0aW5nIGZpbGVzLCBidWlsZGVyOiAlcywgdGVz
dF90eXBlOiAlcywgbmFtZTogJXMuIiwKKyAgICAgICAgICAgIGJ1aWxkZXIsIHRlc3RfdHlwZSwg
bmFtZSkKKworICAgICAgICAjIElmIHBhcmFtZXRlciAiZGlyIiBpcyBzcGVjaWZpZWQgb3IgdGhl
cmUgaXMgbm8gYnVpbGRlciBvciBmaWxlbmFtZQorICAgICAgICAjIHNwZWNpZmllZCBpbiB0aGUg
cmVxdWVzdCwgcmV0dXJuIGxpc3Qgb2YgZmlsZXMsIG90aGVyd2lzZSwgcmV0dXJuCisgICAgICAg
ICMgZmlsZSBjb250ZW50LgorICAgICAgICBpZiBkaXIgb3Igbm90IGJ1aWxkZXIgb3Igbm90IG5h
bWU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfZmlsZV9saXN0KGJ1aWxkZXIsIHRlc3Rf
dHlwZSwgbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9m
aWxlX2NvbnRlbnQoYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKQorCisKK2NsYXNzIEdldFVwbG9h
ZFVybCh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgICIiIkdldCBhbiB1cmwgZm9yIHVwbG9h
ZGluZyBmaWxlIHRvIGJsb2JzdG9yZS4gQSBzcGVjaWFsIHVybCBpcyByZXF1aXJlZCBmb3IgZWFj
aCBibG9ic290cmUgdXBsb2FkLiIiIgorCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgdXBs
b2FkX3VybCA9IGJsb2JzdG9yZS5jcmVhdGVfdXBsb2FkX3VybCgiL3VwbG9hZCIpCisgICAgICAg
IGxvZ2dpbmcuaW5mbygiR2V0dGluZyB1cGxvYWQgdXJsOiAlcy4iLCB1cGxvYWRfdXJsKQorICAg
ICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSh1cGxvYWRfdXJsKQorCisKK2NsYXNzIFVwbG9h
ZChibG9ic3RvcmVfaGFuZGxlcnMuQmxvYnN0b3JlVXBsb2FkSGFuZGxlcik6CisgICAgIiIiVXBs
b2FkIGZpbGUgdG8gYmxvYnN0b3JlLiIiIgorCisgICAgZGVmIHBvc3Qoc2VsZik6CisgICAgICAg
IHVwbG9hZGVkX2ZpbGVzID0gc2VsZi5nZXRfdXBsb2FkcygiZmlsZSIpCisgICAgICAgIGlmIG5v
dCB1cGxvYWRlZF9maWxlczoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl91cGxvYWRfZG9uZShb
KCJNaXNzaW5nIHVwbG9hZCBmaWxlIGZpZWxkLiIpXSkKKworICAgICAgICBidWlsZGVyID0gc2Vs
Zi5yZXF1ZXN0LmdldChQQVJBTV9CVUlMREVSKQorICAgICAgICBpZiBub3QgYnVpbGRlcjoKKyAg
ICAgICAgICAgIGZvciBibG9iX2luZm8gaW4gdXBsb2FkZWRfZmlsZXM6CisgICAgICAgICAgICAg
ICAgYmxvYl9pbmZvLmRlbGV0ZSgpCisgICAgCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fdXBs
b2FkX2RvbmUoWygiTWlzc2luZyBidWlsZGVyIHBhcmFtZXRlciBpbiB1cGxvYWQgcmVxdWVzdC4i
KV0pCisKKyAgICAgICAgdGVzdF90eXBlID0gc2VsZi5yZXF1ZXN0LmdldChQQVJBTV9URVNUX1RZ
UEUpCisKKyAgICAgICAgbG9nZ2luZy5kZWJ1ZygKKyAgICAgICAgICAgICJQcm9jZXNzaW5nIHVw
bG9hZCByZXF1ZXN0LCBidWlsZGVyOiAlcywgdGVzdF90eXBlOiAlcy4iLAorICAgICAgICAgICAg
YnVpbGRlciwgdGVzdF90eXBlKQorCisgICAgICAgIGVycm9ycyA9IFtdCisgICAgICAgIGZvciBi
bG9iX2luZm8gaW4gdXBsb2FkZWRfZmlsZXM6CisgICAgICAgICAgICB0ZiA9IFRlc3RGaWxlLnVw
ZGF0ZV9maWxlKGJ1aWxkZXIsIHRlc3RfdHlwZSwgYmxvYl9pbmZvKQorICAgICAgICAgICAgaWYg
bm90IHRmOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICJVcGxvYWQgZmFpbGVkLCBidWlsZGVyOiAlcywgdGVzdF90eXBlOiAlcywgbmFtZTogJXMu
IiAlCisgICAgICAgICAgICAgICAgICAgIChidWlsZGVyLCB0ZXN0X3R5cGUsIGJsb2JfaW5mby5m
aWxlbmFtZSkpCisgICAgICAgICAgICAgICAgYmxvYl9pbmZvLmRlbGV0ZSgpCisKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3VwbG9hZF9kb25lKGVycm9ycykKKworICAgIGRlZiBfdXBsb2FkX2RvbmUo
c2VsZiwgZXJyb3JzKToKKyAgICAgICAgbG9nZ2luZy5pbmZvKCJ1cGxvYWQgZG9uZS4iKQorCisg
ICAgICAgIGVycm9yX21lc3NhZ2VzID0gW10KKyAgICAgICAgZm9yIGVycm9yIGluIGVycm9yczoK
KyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbyhlcnJvcikKKyAgICAgICAgICAgIGVycm9yX21lc3Nh
Z2VzLmFwcGVuZCgiZXJyb3I9JXMiICUgdXJsbGliLnF1b3RlKGVycm9yKSkKKworICAgICAgICBp
ZiBlcnJvcl9tZXNzYWdlczoKKyAgICAgICAgICAgIHJlZGlyZWN0X3VybCA9ICIvdXBsb2FkZmFp
bD8lcyIgJSAiJiIuam9pbihlcnJvcl9tZXNzYWdlcykKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJlZGlyZWN0X3VybCA9ICIvdXBsb2Fkc3VjY2VzcyIKKworICAgICAgICBsb2dnaW5nLmlu
Zm8ocmVkaXJlY3RfdXJsKQorICAgICAgICAjIEJsb2JzdG9yZVVwbG9hZEhhbmRsZXIgcmVxdWly
ZXMgcmVkaXJlY3QgYXQgdGhlIGVuZC4KKyAgICAgICAgc2VsZi5yZWRpcmVjdChyZWRpcmVjdF91
cmwpCisKKworY2xhc3MgVXBsb2FkRm9ybSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgICIi
IlNob3cgYSBmb3JtIHNvIHVzZXIgY2FuIHN1Ym1pdCBhIGZpbGUgdG8gYmxvYnN0b3JlLiIiIgor
CisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgdXBsb2FkX3VybCA9IGJsb2JzdG9yZS5jcmVh
dGVfdXBsb2FkX3VybCgiL3VwbG9hZCIpCisgICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKKyAg
ICAgICAgICAgICJ1cGxvYWRfdXJsIjogdXBsb2FkX3VybCwKKyAgICAgICAgfQorICAgICAgICBz
ZWxmLnJlc3BvbnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy91cGxvYWRm
b3JtLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVtcGxhdGVfdmFsdWVzKSkKKworY2xhc3MgVXBsb2FkU3RhdHVzKHdlYmFwcC5SZXF1ZXN0
SGFuZGxlcik6CisgICAgIiIiUmV0dXJuIHN0YXR1cyBvZiBmaWxlIHVwbG9hZGluZyIiIgorCisg
ICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5yZXF1ZXN0LnBhdGggPT0gIi91cGxv
YWRzdWNjZXNzIjoKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1cygyMDApCisg
ICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiT0siKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXF1ZXN0LnBhcmFtcy5nZXRhbGwoImVycm9yIikK
KyAgICAgICAgICAgIGlmIGVycm9yczoKKyAgICAgICAgICAgICAgICBtZXNzYWdlcyA9ICJGQUlM
OiAiICsgIlxuIi5qb2luKGVycm9ycykKKyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmco
bWVzc2FnZXMpCisgICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUobWVzc2Fn
ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDUwMCkKSW5kZXg6
IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9kZWwvX19pbml0X18ucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2RlbC9fX2luaXRfXy5weQkocmV2
aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9kZWwvX19pbml0X18u
cHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0byBz
ZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpJbmRleDogV2ViS2l0VG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9UZXN0UmVzdWx0U2VydmVyL21vZGVsL3Rlc3RmaWxlLnB5CShyZXZpc2lvbiAwKQorKysg
V2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMjIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZGF0ZXRpbWUg
aW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgbG9nZ2luZworCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUu
ZXh0IGltcG9ydCBibG9ic3RvcmUKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRi
CisKKworY2xhc3MgVGVzdEZpbGUoZGIuTW9kZWwpOgorICAgIGJ1aWxkZXIgPSBkYi5TdHJpbmdQ
cm9wZXJ0eSgpCisgICAgbmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKKyAgICB0ZXN0X3R5cGUg
PSBkYi5TdHJpbmdQcm9wZXJ0eSgpCisgICAgYmxvYl9rZXkgPSBkYi5TdHJpbmdQcm9wZXJ0eSgp
CisgICAgZGF0ZSA9IGRiLkRhdGVUaW1lUHJvcGVydHkoYXV0b19ub3dfYWRkPVRydWUpCisKKyAg
ICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGVsZXRlX2ZpbGUoY2xzLCBrZXksIGJ1aWxkZXIsIHRl
c3RfdHlwZSwgbmFtZSwgbGltaXQpOgorICAgICAgICBpZiBrZXk6CisgICAgICAgICAgICBmaWxl
ID0gZGIuZ2V0KGtleSkKKyAgICAgICAgICAgIGlmIG5vdCBmaWxlOgorICAgICAgICAgICAgICAg
IGxvZ2dpbmcud2FybmluZygiRmlsZSBub3QgZm91bmQsIGtleTogJXMuIiwga2V5KQorICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICAgICBmaWxlLl9kZWxldGVfYWxsKCkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGVzID0gY2xzLmdldF9maWxlcyhidWlsZGVy
LCB0ZXN0X3R5cGUsIG5hbWUsIGxpbWl0KQorICAgICAgICAgICAgaWYgbm90IGZpbGVzOgorICAg
ICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgIkZpbGUg
bm90IGZvdW5kLCBidWlsZGVyOiAlcywgdGVzdF90eXBlOiVzLCBuYW1lOiAlcy4iLAorICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICAg
ICAgICAgIGZpbGUuX2RlbGV0ZV9hbGwoKQorCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X2ZpbGVzKGNscywgYnVpbGRlciwgdGVzdF90eXBlLCBu
YW1lLCBsaW1pdCk6CisgICAgICAgIHF1ZXJ5ID0gVGVzdEZpbGUuYWxsKCkKKyAgICAgICAgaWYg
YnVpbGRlcjoKKyAgICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkuZmlsdGVyKCJidWlsZGVyID0iLCBi
dWlsZGVyKQorICAgICAgICBpZiB0ZXN0X3R5cGU6CisgICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5
LmZpbHRlcigidGVzdF90eXBlID0iLCB0ZXN0X3R5cGUpCisgICAgICAgIGlmIG5hbWU6CisgICAg
ICAgICAgICBxdWVyeSA9IHF1ZXJ5LmZpbHRlcigibmFtZSA9IiwgbmFtZSkKKworICAgICAgICBy
ZXR1cm4gcXVlcnkub3JkZXIoIi1kYXRlIikuZmV0Y2gobGltaXQpCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgYWRkX2ZpbGUoY2xzLCBidWlsZGVyLCB0ZXN0X3R5cGUsIGJsb2JfaW5mbyk6
CisgICAgICAgIGZpbGUgPSBUZXN0RmlsZSgpCisgICAgICAgIGZpbGUuYnVpbGRlciA9IGJ1aWxk
ZXIKKyAgICAgICAgZmlsZS50ZXN0X3R5cGUgPSB0ZXN0X3R5cGUKKyAgICAgICAgZmlsZS5uYW1l
ID0gYmxvYl9pbmZvLmZpbGVuYW1lCisgICAgICAgIGZpbGUuYmxvYl9rZXkgPSBzdHIoYmxvYl9p
bmZvLmtleSgpKQorICAgICAgICBmaWxlLnB1dCgpCisKKyAgICAgICAgbG9nZ2luZy5pbmZvKAor
ICAgICAgICAgICAgIkZpbGUgc2F2ZWQsIGJ1aWxkZXI6ICVzLCB0ZXN0X3R5cGU6ICVzLCBuYW1l
OiAlcywgYmxvYiBrZXk6ICVzLiIsCisgICAgICAgICAgICBidWlsZGVyLCBmaWxlLm5hbWUsIGZp
bGUuYmxvYl9rZXkpCisKKyAgICAgICAgcmV0dXJuIGZpbGUKKworICAgIEBjbGFzc21ldGhvZAor
ICAgIGRlZiB1cGRhdGVfZmlsZShjbHMsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgYmxvYl9pbmZvKToK
KyAgICAgICAgZmlsZXMgPSBjbHMuZ2V0X2ZpbGVzKGJ1aWxkZXIsIHRlc3RfdHlwZSwgYmxvYl9p
bmZvLmZpbGVuYW1lLCAxKQorICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICByZXR1
cm4gY2xzLmFkZF9maWxlKGJ1aWxkZXIsIHRlc3RfdHlwZSwgYmxvYl9pbmZvKQorCisgICAgICAg
IGZpbGUgPSBmaWxlc1swXQorICAgICAgICBvbGRfYmxvYl9pbmZvID0gYmxvYnN0b3JlLkJsb2JJ
bmZvLmdldChmaWxlLmJsb2Jfa2V5KQorICAgICAgICBpZiBvbGRfYmxvYl9pbmZvOgorICAgICAg
ICAgICAgb2xkX2Jsb2JfaW5mby5kZWxldGUoKQorCisgICAgICAgIGZpbGUuYnVpbGRlciA9IGJ1
aWxkZXIKKyAgICAgICAgZmlsZS50ZXN0X3R5cGUgPSB0ZXN0X3R5cGUKKyAgICAgICAgZmlsZS5u
YW1lID0gYmxvYl9pbmZvLmZpbGVuYW1lCisgICAgICAgIGZpbGUuYmxvYl9rZXkgPSBzdHIoYmxv
Yl9pbmZvLmtleSgpKQorICAgICAgICBmaWxlLmRhdGUgPSBkYXRldGltZS5ub3coKQorICAgICAg
ICBmaWxlLnB1dCgpCisKKyAgICAgICAgbG9nZ2luZy5pbmZvKAorICAgICAgICAgICAgIkZpbGUg
cmVwbGFjZWQsIGJ1aWxkZXI6ICVzLCB0ZXN0X3R5cGU6ICVzLCBuYW1lOiAlcywgYmxvYiBrZXk6
ICVzLiIsCisgICAgICAgICAgICBidWlsZGVyLCB0ZXN0X3R5cGUsIGZpbGUubmFtZSwgZmlsZS5i
bG9iX2tleSkKKworICAgICAgICByZXR1cm4gZmlsZQorCisgICAgZGVmIF9kZWxldGVfYWxsKHNl
bGYpOgorICAgICAgICBpZiBzZWxmLmJsb2Jfa2V5OgorICAgICAgICAgICAgYmxvYl9pbmZvID0g
YmxvYnN0b3JlLkJsb2JJbmZvLmdldChzZWxmLmJsb2Jfa2V5KQorICAgICAgICAgICAgaWYgYmxv
Yl9pbmZvOgorICAgICAgICAgICAgICAgIGJsb2JfaW5mby5kZWxldGUoKQorCisgICAgICAgIHNl
bGYuZGVsZXRlKCkKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3R5bGVzaGVl
dHMvZm9ybS5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dHlsZXNoZWV0cy9mb3JtLmNzcwkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvc3R5bGVzaGVldHMvZm9ybS5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYg
QEAKK2JvZHkgeworICBmb250LWZhbWlseTogVmVyZGFuYTsKKyAgcGFkZGluZzogMHB4OworICBj
b2xvcjogIzQ0NDsKK30KK2gxIHsKKyAgY29sb3I6ICM0NDQ7CisgIGZvbnQtc2l6ZTogMTRwdDsK
KyAgZm9udC1zdHlsZTogaXRhbGljOworICBtYXJnaW46IDBweDsKKyAgcGFkZGluZzogNXB4Owor
fQorLmxhYmVsIHsKKyAgbWFyZ2luOiAxcHg7CisgIHBhZGRpbmc6IDVweDsKKyAgZm9udC1zaXpl
OiAxMXB0OworICB3aWR0aDogOTBweDsKK30KKy5pbnB1dHRleHQgeworICBmb250LXNpemU6IDEx
cHQ7Cit9CisuYnV0dG9uIHsKKyAgbWFyZ2luOiAxcHg7CisgIHBhZGRpbmc6IDFweDsKKyAgZm9u
dC1zaXplOiAxMXB0OworfQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdHls
ZXNoZWV0cy9tZW51LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0eWxlc2hlZXRzL21lbnUuY3NzCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9tZW51LmNzcwkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMiBAQAorYm9keSB7CisgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBIZWx2ZXRpY2EsIHNhbnMt
c2VyaWY7Cit9CitoMSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNFRUU7CisgIGNvbG9yOiAjNDQ0
OworICBmb250LXNpemU6IDE0cHQ7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgbWFyZ2luOiAw
cHg7CisgIHBhZGRpbmc6IDVweDsKK30KK3VsIHsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6
IDIwcHg7CisgIGxpc3Qtc3R5bGU6IG5vbmU7Cit9CitsaSB7CisgIHBhZGRpbmc6IDVweDsKK30K
K2xpOmhvdmVyIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI0VFRTsKK30KSW5kZXg6IFdlYktpdFRv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3R5bGVzaGVldHMvdGVzdGZpbGUuY3NzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3R5bGVzaGVldHMvdGVzdGZpbGUuY3Nz
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0
cy90ZXN0ZmlsZS5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKK2JvZHkgeworICBm
b250LWZhbWlseTogVmVyZGFuYSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOworICBwYWRkaW5nOiAw
cHg7CisgIGNvbG9yOiAjNDQ0OworfQoraDEgeworICBjb2xvcjogIzQ0NDsKKyAgZm9udC1zaXpl
OiAxNHB0OworICBmb250LXN0eWxlOiBpdGFsaWM7CisgIG1hcmdpbjogMHB4OworICBwYWRkaW5n
OiA1cHg7Cit9Cit0YWJsZSB7CisgIGJvcmRlci1zcGFjaW5nOiAwcHg7Cit9Cit0aCB7CisgIGJh
Y2tncm91bmQtY29sb3I6ICNBQUE7CisgIGNvbG9yOiB3aGl0ZTsKKyAgdGV4dC1hbGlnbjogbGVm
dDsKKyAgcGFkZGluZzogNXB4OworICBmb250LXNpemU6IDEycHQ7Cit9Cit0ZCB7CisgIGZvbnQt
c2l6ZTogMTFwdDsKKyAgcGFkZGluZzogM3B4OworICB0ZXh0LWFsaWduOiBsZWZ0OworfQordHI6
aG92ZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFOworfQpJbmRleDogV2ViS2l0VG9vbHMv
VGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvbWVudS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL21lbnUuaHRtbAkocmV2aXNpb24gMCkK
KysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL21lbnUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPlRlc3QgUmVzdWx0IFNlcnZlcjwvdGl0bGU+Cis8bGluayB0eXBlPSJ0ZXh0L2Nz
cyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGVzaGVldHMvbWVudS5jc3MiIC8+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxoMT5UZXN0IFJlc3VsdCBTZXJ2ZXI8L2gxPgorPGRpdj4KKyAgICA8dWw+
eyUgZm9yIHRpdGxlLGxpbmsgaW4gbWVudSAlfQorICAgICAgICA8bGk+CisgICAgICAgICAgICA8
YSBocmVmPSJ7eyBsaW5rIH19IiA+e3sgdGl0bGUgfX08L2E+CisgICAgICAgIDwvbGk+eyUgZW5k
Zm9yICV9CisgICAgPC91bD4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViS2l0
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVs
aXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3Rl
bXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgUmVzdWx0czwvdGl0
bGU+Cis8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGVz
aGVldHMvdGVzdGZpbGUuY3NzIiAvPgorPC9oZWFkPgorPGJvZHk+Cis8aDE+VGVzdCBSZXN1bHRz
Cit7JSBpZiBidWlsZGVyIG9yIHRlc3RfdHlwZSBvciBuYW1lICV9CistIHt7IGJ1aWxkZXIgfX0g
e3t0ZXN0X3R5cGUgfX0ge3sgbmFtZSB9fQoreyUgZW5kaWYgJX0KKzwvaDE+Cis8ZGl2PgorICAg
IDx0YWJsZT4KKyAgICAgICAgPHRyPgorICAgICAgICAgICAgPHRoPkJ1aWxkZXI8L3RoPgorICAg
ICAgICAgICAgPHRoPlRlc3QgVHlwZTwvdGg+CisgICAgICAgICAgICA8dGg+RmlsZTwvdGg+Cisg
ICAgICAgICAgICA8dGg+RGF0ZTwvdGg+CisgICAgICAgICAgICA8dGg+PC90aD4KKyAgICAgICAg
eyUgZm9yIGZpbGUgaW4gZmlsZXMgJX0KKyAgICAgICAgPHRyPnslIGlmIGZpbGUuYnVpbGRlciBh
bmQgZmlsZS5uYW1lICV9CisgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL2dldGZpbGU/YnVpbGRl
cj17eyBmaWxlLmJ1aWxkZXIgfX0iID4KKyAgICAgICAgICAgICAgICB7eyBmaWxlLmJ1aWxkZXIg
fX0KKyAgICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAg
PHRkPnslIGlmIGZpbGUudGVzdF90eXBlICV9CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2dl
dGZpbGU/dGVzdHR5cGU9e3sgZmlsZS50ZXN0X3R5cGUgfX0iID4KKyAgICAgICAgICAgICAgICB7
eyBmaWxlLnRlc3RfdHlwZSB9fQorICAgICAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgICAg
ICB7JSBlbmRpZiAlfQorICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDx0ZD48YSBocmVm
PSIvZ2V0ZmlsZT9idWlsZGVyPXt7IGZpbGUuYnVpbGRlciB9fSZuYW1lPXt7IGZpbGUubmFtZSB9
fSIgPgorICAgICAgICAgICAgICAgIHt7IGZpbGUubmFtZSB9fQorICAgICAgICAgICAgICAgIDwv
YT4KKyAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8dGQ+e3sgZmlsZS5kYXRlfGRhdGU6
ImQtTS1ZIEg6aTpzIiB9fQorICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDx0ZD48YSBo
cmVmPSIvZGVsZXRlZmlsZT9rZXk9e3sgZmlsZS5rZXkgfX0mYnVpbGRlcj17eyBidWlsZGVyIH19
Jm5hbWU9e3sgbmFtZSB9fSIgPgorICAgICAgICAgICAgICAgIERlbGV0ZQorICAgICAgICAgICAg
ICAgIDwvYT4KKyAgICAgICAgICAgIDwvdGQ+CisgICAgICAgIHslIGVuZGlmICV9CisgICAgICAg
IDwvdHI+CisgICAgeyUgZW5kZm9yICV9CisgICAgPC90YWJsZT4KKzwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvdXBs
b2FkZm9ybS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
dGVtcGxhdGVzL3VwbG9hZGZvcm0uaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL3VwbG9hZGZvcm0uaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlVw
bG9hZCBUZXN0IFJlc3VsdCBGaWxlPC90aXRsZT4KKzxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii9zdHlsZXNoZWV0cy9mb3JtLmNzcyIgLz4KKzwvaGVhZD4KKzxi
b2R5PgorPGgxPlVwbG9hZCBUZXN0IFJlc3VsdCBGaWxlPC9oMT4KKzxmb3JtIGFjY2VwdD0idGV4
dC9odG1sIiBhY3Rpb249Int7IHVwbG9hZF91cmwgfX0iIGVuY3R5cGU9Im11bHRpcGFydC9mb3Jt
LWRhdGEiIG1ldGhvZD0icG9zdCI+CisgICAgPGJyPgorICAgIDx0YWJsZT4KKyAgICA8dHI+Cisg
ICAgICAgIDx0ZCBjbGFzcz1sYWJlbD48bGFiZWw+QnVpbGRlcjo8L2xhYmVsPjwvdGQ+CisgICAg
ICAgIDx0ZD48aW5wdXQgY2xhc3M9aW5wdXR0ZXh0IHR5cGU9InRleHQiIG5hbWU9ImJ1aWxkZXIi
IHZhbHVlPSJXZWJraXQiLz48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgICA8dGQg
Y2xhc3M9bGFiZWw+PGxhYmVsPlRlc3QgVHlwZTo8L2xhYmVsPjwvdGQ+CisgICAgICAgIDx0ZD48
aW5wdXQgY2xhc3M9aW5wdXR0ZXh0IHR5cGU9InRleHQiIG5hbWU9InRlc3R0eXBlIiB2YWx1ZT0i
Ii8+PC90ZD4KKyAgICA8L3RyPgorICAgIDwvdGFibGU+CisgICAgPGRpdj48aW5wdXQgY2xhc3M9
YnV0dG9uIHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiPjwvZGl2PgorICAgIDxicj4KKyAgICA8ZGl2
PjxpbnB1dCBjbGFzcz1idXR0b24gdHlwZT0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIj48L2Rpdj4K
KzwvZm9ybT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>