<?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>105077</bug_id>
          
          <creation_ts>2012-12-14 18:17:34 -0800</creation_ts>
          <short_desc>webkitpy: move --lint-test-files code into its own module</short_desc>
          <delta_ts>2012-12-17 13:51:30 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>103824</blocked>
    
    <blocked>105078</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>792012</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-14 18:17:34 -0800</bug_when>
    <thetext>webkitpy: move --lint-test-files code into its own module</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792013</commentid>
    <comment_count>1</comment_count>
      <attachid>179569</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-14 18:18:39 -0800</bug_when>
    <thetext>Created attachment 179569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792016</commentid>
    <comment_count>2</comment_count>
      <attachid>179570</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-14 18:22:59 -0800</bug_when>
    <thetext>Created attachment 179570
fix main() call in lint-test-expectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792056</commentid>
    <comment_count>3</comment_count>
      <attachid>179570</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-14 23:37:59 -0800</bug_when>
    <thetext>Comment on attachment 179570
fix main() call in lint-test-expectations

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

Looks like you&apos;re mostly moving code.  LGTM.

&gt; Tools/Scripts/webkitpy/layout_tests/lint_test_expectations.py:49
&gt; +def lint(host, options, logging_stream):

Eventually we should probably make this a class so we can break it down into smaller helper methods. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793010</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-17 13:51:30 -0800</bug_when>
    <thetext>Committed r137942: &lt;http://trac.webkit.org/changeset/137942&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179569</attachid>
            <date>2012-12-14 18:18:39 -0800</date>
            <delta_ts>2012-12-14 18:22:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105077-20121214181558.patch</filename>
            <type>text/plain</type>
            <size>22225</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzgwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTIxZjVhNmY5NTQ2NzA0M2JkYTk5MDMwZTNjZjdhOWY1
Y2Y2ZDc1ZC4uODJjZjJkODM3NDBhZTk0YjliOTU5ZTFjZmYyMDhiOGYzOGQ4NzA0MSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4
IEBACiAyMDEyLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBtb3ZlIC0tbGludC10ZXN0LWZpbGVzIGNvZGUgaW50byBpdHMgb3du
IG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA1MDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SXQgcmVhbGx5IGRpZG4ndCBuZWVkIHRvIGJlIGluIHJ1bl93ZWJraXRfdGVzdHMucHkgYW55bW9y
ZS4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGxpbnQtdGVzdC1leHBlY3RhdGlvbnMg
c2NyaXB0cyB0byBUb29scy9TY3JpcHRzOworICAgICAgICByd3QgLS1saW50LXRlc3QtZmlsZXMg
aXMgc3RpbGwgc3VwcG9ydGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorICAgICAgICBm
b3Igbm93LgorCisgICAgICAgICogU2NyaXB0cy9saW50LXRlc3QtZXhwZWN0YXRpb25zOiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhw
ZWN0YXRpb25zLnB5OiBBZGRlZC4KKyAgICAgICAgKGxpbnQpOgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0
aW9uc191bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChGYWtlUG9ydCk6CisgICAgICAgIChG
YWtlUG9ydC5fX2luaXRfXyk6CisgICAgICAgIChGYWtlUG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoRmFrZVBvcnQuZXhwZWN0YXRpb25zX2RpY3QpOgorICAgICAgICAoRmFrZVBv
cnQuc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAoRmFrZVBvcnQuYWxsX3Rlc3RfY29u
ZmlndXJhdGlvbnMpOgorICAgICAgICAoRmFrZVBvcnQuY29uZmlndXJhdGlvbl9zcGVjaWZpZXJf
bWFjcm9zKToKKyAgICAgICAgKEZha2VQb3J0LmdldF9vcHRpb24pOgorICAgICAgICAoRmFrZUZh
Y3RvcnkpOgorICAgICAgICAoRmFrZUZhY3RvcnkuX19pbml0X18pOgorICAgICAgICAoRmFrZUZh
Y3RvcnkuZ2V0KToKKyAgICAgICAgKEZha2VGYWN0b3J5LmFsbF9wb3J0X25hbWVzKToKKyAgICAg
ICAgKExpbnRUZXN0KToKKyAgICAgICAgKExpbnRUZXN0LnRlc3RfYWxsX2NvbmZpZ3VyYXRpb25z
KToKKyAgICAgICAgKExpbnRUZXN0LnRlc3RfbGludF90ZXN0X2ZpbGVzKToKKyAgICAgICAgKExp
bnRUZXN0LnRlc3RfbGludF90ZXN0X2ZpbGVzX19lcnJvcnMpOgorICAgICAgICAoTWFpblRlc3Qp
OgorICAgICAgICAoTWFpblRlc3QudGVzdF9zdWNjZXNzKToKKyAgICAgICAgKE1haW5UZXN0LnRl
c3Rfc3VjY2Vzcy5pbnRlcnJ1cHRpbmdfbGludCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3N1
Y2Nlc3Muc3VjY2Vzc2Z1bF9saW50KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rfc3VjY2Vzcy5l
eGNlcHRpb25fcmFpc2luZ19saW50KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlv
bnRlc3QucHk6CisgICAgICAgIChTdHJlYW1UZXN0aW5nTWl4aW4uYXNzZXJ0Tm90RW1wdHkpOgor
CisyMDEyLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIGdhcmRlbi1vLW1hdGljIGRvZXNuJ3Qga25vdyBhYm91dCByZWZ0ZXN0cwogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTc2CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvbGludC10ZXN0LWV4cGVjdGF0aW9ucyBiL1Rvb2xzL1NjcmlwdHMv
bGludC10ZXN0LWV4cGVjdGF0aW9ucwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTQ2MWQwZWI1YjQyYmQ1MTY3NDQw
ZGRkM2M0MDY0OGQ5ODU2Yjg1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saW50
LXRlc3QtZXhwZWN0YXRpb25zCkBAIC0wLDAgKzEsMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS5jb21tb24g
aW1wb3J0IHZlcnNpb25fY2hlY2sKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBs
aW50X3Rlc3RfZXhwZWN0YXRpb25zCisKKworbGludF90ZXN0X2V4cGVjdGF0aW9ucy5tYWluKHN5
cy5hcmd2LCBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyKQorCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0aW9ucy5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MmFhN2I5OWZlOGRlZjdlZmM2YTJmNDQ5ZWRiNTg1ODBmM2ZlYzYwCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGlu
dF90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtMCwwICsxLDExMSBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBzaWduYWwKK2ltcG9y
dCB0cmFjZWJhY2sKKworZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwor
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcGxhdGZvcm1fb3B0aW9ucwor
CisKKyMgVGhpcyBtaXJyb3JzIHdoYXQgdGhlIHNoZWxsIG5vcm1hbGx5IGRvZXMuCitJTlRFUlJV
UFRFRF9FWElUX1NUQVRVUyA9IHNpZ25hbC5TSUdJTlQgKyAxMjgKKworIyBUaGlzIGlzIGEgcmFu
ZG9tbHkgY2hvc2VuIGV4aXQgY29kZSB0aGF0IGNhbiBiZSB0ZXN0ZWQgYWdhaW5zdCB0bworIyBp
bmRpY2F0ZSB0aGF0IGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uIG9jY3VycmVkLgorRVhDRVBUSU9O
QUxfRVhJVF9TVEFUVVMgPSAyNTQKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQorCisKK2RlZiBsaW50KGhvc3QsIG9wdGlvbnMsIGxvZ2dpbmdfc3RyZWFtKToKKyAgICBsb2dn
ZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5G
TykKKyAgICBoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKGxvZ2dpbmdfc3RyZWFtKQor
ICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCisKKyAgICB0cnk6CisgICAgICAgIHBvcnRz
X3RvX2xpbnQgPSBbaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG5hbWUpIGZvciBuYW1lIGluIGhvc3Qu
cG9ydF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKG9wdGlvbnMucGxhdGZvcm0pXQorICAgICAgICBm
aWxlc19saW50ZWQgPSBzZXQoKQorICAgICAgICBsaW50X2ZhaWxlZCA9IEZhbHNlCisKKyAgICAg
ICAgZm9yIHBvcnRfdG9fbGludCBpbiBwb3J0c190b19saW50OgorICAgICAgICAgICAgZXhwZWN0
YXRpb25zX2RpY3QgPSBwb3J0X3RvX2xpbnQuZXhwZWN0YXRpb25zX2RpY3QoKQorCisgICAgICAg
ICAgICAjIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgaWYgbXVsdGlwbGUgcG9ydHMgc2hhcmUgYSBU
ZXN0RXhwZWN0YXRpb25zIGZpbGUgYnV0IHN1cHBvcnQgZGlmZmVyZW50IG1vZGlmaWVycyBpbiB0
aGUgZmlsZS4KKyAgICAgICAgICAgIGZvciBleHBlY3RhdGlvbnNfZmlsZSBpbiBleHBlY3RhdGlv
bnNfZGljdC5rZXlzKCk6CisgICAgICAgICAgICAgICAgaWYgZXhwZWN0YXRpb25zX2ZpbGUgaW4g
ZmlsZXNfbGludGVkOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhw
ZWN0YXRpb25zKHBvcnRfdG9fbGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0
aW9uc190b19saW50PXtleHBlY3RhdGlvbnNfZmlsZTogZXhwZWN0YXRpb25zX2RpY3RbZXhwZWN0
YXRpb25zX2ZpbGVdfSkKKyAgICAgICAgICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlvbnMu
UGFyc2VFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBsaW50X2ZhaWxlZCA9IFRydWUK
KyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAgICAgICAgICAgICAgICAg
Zm9yIHdhcm5pbmcgaW4gZS53YXJuaW5nczoKKyAgICAgICAgICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3Iod2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAg
ICAgICAgICAgICBmaWxlc19saW50ZWQuYWRkKGV4cGVjdGF0aW9uc19maWxlKQorCisgICAgICAg
IGlmIGxpbnRfZmFpbGVkOgorICAgICAgICAgICAgX2xvZy5lcnJvcignTGludCBmYWlsZWQuJykK
KyAgICAgICAgICAgIHJldHVybiAtMQorCisgICAgICAgIF9sb2cuaW5mbygnTGludCBzdWNjZWVk
ZWQuJykKKyAgICAgICAgcmV0dXJuIDAKKyAgICBmaW5hbGx5OgorICAgICAgICBsb2dnZXIucmVt
b3ZlSGFuZGxlcihoYW5kbGVyKQorCisKK2RlZiBtYWluKGFyZ3YsIF8sIHN0ZGVycik6CisgICAg
cGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKG9wdGlvbl9saXN0PXBsYXRmb3JtX29wdGlv
bnModXNlX2dsb2JzPVRydWUpKQorICAgIG9wdGlvbnMsIF8gPSBwYXJzZXIucGFyc2VfYXJncyhh
cmd2KQorCisgICAgaWYgb3B0aW9ucy5wbGF0Zm9ybSBhbmQgJ3Rlc3QnIGluIG9wdGlvbnMucGxh
dGZvcm06CisgICAgICAgICMgSXQncyBhIGJpdCBsYW1lIHRvIGltcG9ydCBtb2NrcyBpbnRvIHJl
YWwgY29kZSwgYnV0IHRoaXMgYWxsb3dzIHRoZSB1c2VyCisgICAgICAgICMgdG8gcnVuIHRlc3Rz
IGFnYWluc3QgdGhlIHRlc3QgcGxhdGZvcm0gaW50ZXJhY3RpdmVseSwgd2hpY2ggaXMgdXNlZnVs
IGZvcgorICAgICAgICAjIGRlYnVnZ2luZyB0ZXN0IGZhaWx1cmVzLgorICAgICAgICBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CisgICAgICAgIGhvc3QgPSBN
b2NrSG9zdCgpCisgICAgZWxzZToKKyAgICAgICAgaG9zdCA9IEhvc3QoKQorCisgICAgdHJ5Ogor
ICAgICAgICBleGl0X3N0YXR1cyA9IGxpbnQoaG9zdCwgb3B0aW9ucywgc3RkZXJyKQorICAgIGV4
Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgZXhpdF9zdGF0dXMgPSBJTlRFUlJVUFRF
RF9FWElUX1NUQVRVUworICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcHJpbnQg
Pj4gc3RkZXJyLCAnXG4lcyByYWlzZWQ6ICVzJyAlIChlLl9fY2xhc3NfXy5fX25hbWVfXywgc3Ry
KGUpKQorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3RkZXJyKQorICAgICAgICBl
eGl0X3N0YXR1cyA9IEVYQ0VQVElPTkFMX0VYSVRfU1RBVFVTCisKKyAgICByZXR1cm4gZXhpdF9z
dGF0dXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xp
bnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMyZWE4YjljZDFiOWM5NGVkOWE0MmUxNTEyODJlOTUxZGFmNDFiZDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhw
ZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTU1IEBACisjIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCB1bml0dGVzdAorCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cyBpbXBvcnQgbGludF90ZXN0X2V4cGVjdGF0aW9ucworCisKK2NsYXNz
IEZha2VQb3J0KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIG5hbWUsIHBh
dGgpOgorICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUK
KyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgZGVmIHRlc3RfY29uZmlndXJhdGlvbihz
ZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBleHBlY3RhdGlvbnNfZGljdChz
ZWxmKToKKyAgICAgICAgc2VsZi5ob3N0LnBvcnRzX3BhcnNlZC5hcHBlbmQoc2VsZi5uYW1lKQor
ICAgICAgICByZXR1cm4ge3NlbGYucGF0aDogJyd9CisKKyAgICBkZWYgc2tpcHBlZF9sYXlvdXRf
dGVzdHMoc2VsZiwgXyk6CisgICAgICAgIHJldHVybiBzZXQoW10pCisKKyAgICBkZWYgYWxsX3Rl
c3RfY29uZmlndXJhdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIGNv
bmZpZ3VyYXRpb25fc3BlY2lmaWVyX21hY3JvcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtdCisK
KyAgICBkZWYgZ2V0X29wdGlvbihzZWxmLCBfLCB2YWwpOgorICAgICAgICByZXR1cm4gdmFsCisK
KworY2xhc3MgRmFrZUZhY3Rvcnkob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9z
dCwgcG9ydHMpOgorICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgIHNlbGYucG9ydHMg
PSB7fQorICAgICAgICBmb3IgcG9ydCBpbiBwb3J0czoKKyAgICAgICAgICAgIHNlbGYucG9ydHNb
cG9ydC5uYW1lXSA9IHBvcnQKKworICAgIGRlZiBnZXQoc2VsZiwgcG9ydF9uYW1lLCAqYXJncywg
Kiprd2FyZ3MpOiAgIyBweWxpbnQ6IGRpc2FibGU9VzA2MTMsRTAyMDIKKyAgICAgICAgcmV0dXJu
IHNlbGYucG9ydHNbcG9ydF9uYW1lXQorCisgICAgZGVmIGFsbF9wb3J0X25hbWVzKHNlbGYsIHBs
YXRmb3JtPU5vbmUpOiAgIyBweWxpbnQ6IGRpc2FibGU9VzA2MTMsRTAyMDIKKyAgICAgICAgcmV0
dXJuIHNvcnRlZChzZWxmLnBvcnRzLmtleXMoKSkKKworCitjbGFzcyBMaW50VGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYWxsX2NvbmZpZ3VyYXRpb25zKHNlbGYpOgorICAg
ICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBob3N0LnBvcnRzX3BhcnNlZCA9IFtdCisg
ICAgICAgIGhvc3QucG9ydF9mYWN0b3J5ID0gRmFrZUZhY3RvcnkoaG9zdCwgKEZha2VQb3J0KGhv
c3QsICdhJywgJ3BhdGgtdG8tYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGYWtlUG9ydChob3N0LCAnYicsICdwYXRoLXRvLWInKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFrZVBvcnQoaG9zdCwgJ2It
d2luJywgJ3BhdGgtdG8tYicpKSkKKworICAgICAgICBsb2dnaW5nX3N0cmVhbSA9IFN0cmluZ0lP
LlN0cmluZ0lPKCkKKyAgICAgICAgb3B0aW9ucyA9IG9wdHBhcnNlLlZhbHVlcyh7J3BsYXRmb3Jt
JzogTm9uZX0pCisgICAgICAgIHJlcyA9IGxpbnRfdGVzdF9leHBlY3RhdGlvbnMubGludChob3N0
LCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMs
IDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9zdC5wb3J0c19wYXJzZWQsIFsnYScsICdi
JywgJ2Itd2luJ10pCisKKyAgICBkZWYgdGVzdF9saW50X3Rlc3RfZmlsZXMoc2VsZik6CisgICAg
ICAgIGxvZ2dpbmdfc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBvcHRpb25z
ID0gb3B0cGFyc2UuVmFsdWVzKHsncGxhdGZvcm0nOiAndGVzdC1tYWMtbGVvcGFyZCd9KQorICAg
ICAgICBob3N0ID0gTW9ja0hvc3QoKQorCisgICAgICAgICMgcHlsaW50IGFwcGVhcnMgdG8gY29t
cGxhaW4gaW5jb3JyZWN0bHkgYWJvdXQgdGhlIG1ldGhvZCBvdmVycmlkZXMgcHlsaW50OiBkaXNh
YmxlPUUwMjAyLEMwMzIyCisgICAgICAgICMgRklYTUU6IGluY29ycmVjdCBjb21wbGFpbnRzIGFi
b3V0IHNwYWNpbmcgcHlsaW50OiBkaXNhYmxlPUMwMzIyCisgICAgICAgIGhvc3QucG9ydF9mYWN0
b3J5LmFsbF9wb3J0X25hbWVzID0gbGFtYmRhIHBsYXRmb3JtPU5vbmU6IFtwbGF0Zm9ybV0KKwor
ICAgICAgICByZXMgPSBsaW50X3Rlc3RfZXhwZWN0YXRpb25zLmxpbnQoaG9zdCwgb3B0aW9ucywg
bG9nZ2luZ19zdHJlYW0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnTGludCBzdWNjZWVkZWQnIGluIGxvZ2dpbmdfc3RyZWFtLmdl
dHZhbHVlKCkpCisKKyAgICBkZWYgdGVzdF9saW50X3Rlc3RfZmlsZXNfX2Vycm9ycyhzZWxmKToK
KyAgICAgICAgb3B0aW9ucyA9IG9wdHBhcnNlLlZhbHVlcyh7J3BsYXRmb3JtJzogJ3Rlc3QnLCAn
ZGVidWdfcnd0X2xvZ2dpbmcnOiBGYWxzZX0pCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisK
KyAgICAgICAgIyBGSVhNRTogaW5jb3JyZWN0IGNvbXBsYWludHMgYWJvdXQgc3BhY2luZyBweWxp
bnQ6IGRpc2FibGU9QzAzMjIKKyAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChv
cHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgIHBvcnQuZXhwZWN0YXRp
b25zX2RpY3QgPSBsYW1iZGE6IHsnZm9vJzogJy0tIHN5bnRheCBlcnJvcjEnLCAnYmFyJzogJy0t
IHN5bnRheCBlcnJvcjInfQorCisgICAgICAgIGhvc3QucG9ydF9mYWN0b3J5LmdldCA9IGxhbWJk
YSBwbGF0Zm9ybSwgb3B0aW9ucz1Ob25lOiBwb3J0CisgICAgICAgIGhvc3QucG9ydF9mYWN0b3J5
LmFsbF9wb3J0X25hbWVzID0gbGFtYmRhIHBsYXRmb3JtPU5vbmU6IFtwb3J0Lm5hbWUoKV0KKwor
ICAgICAgICBsb2dnaW5nX3N0cmVhbSA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKKworICAgICAgICBy
ZXMgPSBsaW50X3Rlc3RfZXhwZWN0YXRpb25zLmxpbnQoaG9zdCwgb3B0aW9ucywgbG9nZ2luZ19z
dHJlYW0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIC0xKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoJ0xpbnQgZmFpbGVkJyBpbiBsb2dnaW5nX3N0cmVhbS5nZXR2YWx1ZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2ZvbzoxJyBpbiBsb2dnaW5nX3N0cmVhbS5nZXR2YWx1
ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2JhcjoxJyBpbiBsb2dnaW5nX3N0cmVhbS5n
ZXR2YWx1ZSgpKQorCisKK2NsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBk
ZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgorICAgICAgICBvcmlnX2xpbnRfZm4gPSBsaW50X3Rlc3Rf
ZXhwZWN0YXRpb25zLmxpbnQKKworICAgICAgICAjIHVudXNlZCBhcmdzIHB5bGludDogZGlzYWJs
ZT1XMDYxMworICAgICAgICBkZWYgaW50ZXJydXB0aW5nX2xpbnQoaG9zdCwgb3B0aW9ucywgbG9n
Z2luZ19zdHJlYW0pOgorICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKKworICAg
ICAgICBkZWYgc3VjY2Vzc2Z1bF9saW50KGhvc3QsIG9wdGlvbnMsIGxvZ2dpbmdfc3RyZWFtKToK
KyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgZGVmIGV4Y2VwdGlvbl9yYWlzaW5nX2xp
bnQoaG9zdCwgb3B0aW9ucywgbG9nZ2luZ19zdHJlYW0pOgorICAgICAgICAgICAgYXNzZXJ0IEZh
bHNlCisKKyAgICAgICAgc3Rkb3V0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBzdGRl
cnIgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxpbnRf
dGVzdF9leHBlY3RhdGlvbnMubGludCA9IGludGVycnVwdGluZ19saW50CisgICAgICAgICAgICBy
ZXMgPSBsaW50X3Rlc3RfZXhwZWN0YXRpb25zLm1haW4oW10sIHN0ZG91dCwgc3RkZXJyKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIGxpbnRfdGVzdF9leHBlY3RhdGlvbnMuSU5U
RVJSVVBURURfRVhJVF9TVEFUVVMpCisKKyAgICAgICAgICAgIGxpbnRfdGVzdF9leHBlY3RhdGlv
bnMubGludCA9IHN1Y2Nlc3NmdWxfbGludAorICAgICAgICAgICAgcmVzID0gbGludF90ZXN0X2V4
cGVjdGF0aW9ucy5tYWluKFsnLS1wbGF0Zm9ybScsICd0ZXN0J10sIHN0ZG91dCwgc3RkZXJyKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDApCisKKyAgICAgICAgICAgIGxpbnRf
dGVzdF9leHBlY3RhdGlvbnMubGludCA9IGV4Y2VwdGlvbl9yYWlzaW5nX2xpbnQKKyAgICAgICAg
ICAgIHJlcyA9IGxpbnRfdGVzdF9leHBlY3RhdGlvbnMubWFpbihbXSwgc3Rkb3V0LCBzdGRlcnIp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgbGludF90ZXN0X2V4cGVjdGF0aW9u
cy5FWENFUFRJT05BTF9FWElUX1NUQVRVUykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAg
IGxpbnRfdGVzdF9leHBlY3RhdGlvbnMubGludCA9IG9yaWdfbGludF9mbgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkK
aW5kZXggNGExMzA1NGE4Y2NhMTBkMGYzNjBjNjU2YTQ3NDY2MzA4ZmZmMGQ1My4uZmNmZDAyZTkw
NzkzMTIyMjcyZWQwYTNiNTA0NjUyMGE4MDkwMzY5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC01NCw0
NiArNTQsNiBAQCBJTlRFUlJVUFRFRF9FWElUX1NUQVRVUyA9IHNpZ25hbC5TSUdJTlQgKyAxMjgK
IEVYQ0VQVElPTkFMX0VYSVRfU1RBVFVTID0gMjU0CiAKIAotZGVmIGxpbnQocG9ydCwgb3B0aW9u
cywgbG9nZ2luZ19zdHJlYW0pOgotICAgIGhvc3QgPSBwb3J0Lmhvc3QKLSAgICBsb2dnaW5nLmdl
dExvZ2dlcigpLnNldExldmVsKGxvZ2dpbmcuREVCVUcgaWYgb3B0aW9ucy5kZWJ1Z19yd3RfbG9n
Z2luZyBlbHNlIGxvZ2dpbmcuSU5GTykKLSAgICBwcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihw
b3J0LCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSwgbG9nZ2VyPWxvZ2dpbmcuZ2V0TG9nZ2VyKCkp
Ci0KLSAgICBpZiBvcHRpb25zLnBsYXRmb3JtOgotICAgICAgICBwb3J0c190b19saW50ID0gW3Bv
cnRdCi0gICAgZWxzZToKLSAgICAgICAgcG9ydHNfdG9fbGludCA9IFtob3N0LnBvcnRfZmFjdG9y
eS5nZXQobmFtZSkgZm9yIG5hbWUgaW4gaG9zdC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMo
KV0KLQotICAgIGZpbGVzX2xpbnRlZCA9IHNldCgpCi0gICAgbGludF9mYWlsZWQgPSBGYWxzZQot
Ci0gICAgZm9yIHBvcnRfdG9fbGludCBpbiBwb3J0c190b19saW50OgotICAgICAgICBleHBlY3Rh
dGlvbnNfZGljdCA9IHBvcnRfdG9fbGludC5leHBlY3RhdGlvbnNfZGljdCgpCi0KLSAgICAgICAg
IyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIG11bHRpcGxlIHBvcnRzIHNoYXJlIGEgVGVzdEV4
cGVjdGF0aW9ucyBmaWxlIGJ1dCBzdXBwb3J0IGRpZmZlcmVudCBtb2RpZmllcnMgaW4gdGhlIGZp
bGUuCi0gICAgICAgIGZvciBleHBlY3RhdGlvbnNfZmlsZSBpbiBleHBlY3RhdGlvbnNfZGljdC5r
ZXlzKCk6Ci0gICAgICAgICAgICBpZiBleHBlY3RhdGlvbnNfZmlsZSBpbiBmaWxlc19saW50ZWQ6
Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMocG9ydF90b19saW50LCBl
eHBlY3RhdGlvbnNfdG9fbGludD17ZXhwZWN0YXRpb25zX2ZpbGU6IGV4cGVjdGF0aW9uc19kaWN0
W2V4cGVjdGF0aW9uc19maWxlXX0pCi0gICAgICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlv
bnMuUGFyc2VFcnJvciwgZToKLSAgICAgICAgICAgICAgICBsaW50X2ZhaWxlZCA9IFRydWUKLSAg
ICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQotICAgICAgICAgICAgICAgIGZvciB3YXJuaW5n
IGluIGUud2FybmluZ3M6Ci0gICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3Iod2FybmluZykK
LSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQotICAgICAgICAgICAgZmlsZXNfbGludGVk
LmFkZChleHBlY3RhdGlvbnNfZmlsZSkKLQotICAgIGlmIGxpbnRfZmFpbGVkOgotICAgICAgICBf
bG9nLmVycm9yKCdMaW50IGZhaWxlZC4nKQotICAgICAgICBwcmludGVyLmNsZWFudXAoKQotICAg
ICAgICByZXR1cm4gLTEKLSAgICBfbG9nLmluZm8oJ0xpbnQgc3VjY2VlZGVkLicpCi0gICAgcHJp
bnRlci5jbGVhbnVwKCkKLSAgICByZXR1cm4gMAotCi0KIGRlZiBydW4ocG9ydCwgb3B0aW9ucywg
YXJncywgbG9nZ2luZ19zdHJlYW0pOgogICAgIHRyeToKICAgICAgICAgcHJpbnRlciA9IHByaW50
aW5nLlByaW50ZXIocG9ydCwgb3B0aW9ucywgbG9nZ2luZ19zdHJlYW0sIGxvZ2dlcj1sb2dnaW5n
LmdldExvZ2dlcigpKQpAQCAtNDAxLDcgKzM2MSw4IEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSwgc3Rk
b3V0PXN5cy5zdGRvdXQsIHN0ZGVycj1zeXMuc3RkZXJyKToKICAgICBsb2dnaW5nLmdldExvZ2dl
cigpLnNldExldmVsKGxvZ2dpbmcuREVCVUcgaWYgb3B0aW9ucy5kZWJ1Z19yd3RfbG9nZ2luZyBl
bHNlIGxvZ2dpbmcuSU5GTykKIAogICAgIGlmIG9wdGlvbnMubGludF90ZXN0X2ZpbGVzOgotICAg
ICAgICByZXR1cm4gbGludChwb3J0LCBvcHRpb25zLCBzdGRlcnIpCisgICAgICAgIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmxpbnRfdGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0IGxpbnQKKyAg
ICAgICAgcmV0dXJuIGxpbnQoaG9zdCwgb3B0aW9ucywgc3RkZXJyKQogCiAgICAgdHJ5OgogICAg
ICAgICBydW5fZGV0YWlscyA9IHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzLCBzdGRlcnIpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzX2ludGVncmF0aW9udGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CmluZGV4IGYzNzNkM2JjODZj
NWNmYzZiZWE5ZDBjZjQ1YjAxYmJiMWMzNDUyNDkuLmJlMTVkZjhhYTk3ZjNmM2EwODY4ZDY3MmZk
NjQxZjE2ZGU0NGIwYzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250
ZXN0LnB5CkBAIC0xNjksOTUgKzE2OSw2IEBAIGNsYXNzIFN0cmVhbVRlc3RpbmdNaXhpbihvYmpl
Y3QpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyZWFtLmdldHZhbHVlKCkpCiAKIAotY2xh
c3MgTGludFRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVRlc3RpbmdNaXhpbik6Ci0gICAg
ZGVmIHRlc3RfYWxsX2NvbmZpZ3VyYXRpb25zKHNlbGYpOgotCi0gICAgICAgIGNsYXNzIEZha2VQ
b3J0KG9iamVjdCk6Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgbmFtZSwg
cGF0aCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAotICAgICAgICAgICAgICAg
IHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCi0KLSAg
ICAgICAgICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb24oc2VsZik6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgZGVmIGV4cGVjdGF0aW9uc19kaWN0KHNlbGYpOgot
ICAgICAgICAgICAgICAgIHNlbGYuaG9zdC5wb3J0c19wYXJzZWQuYXBwZW5kKHNlbGYubmFtZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4ge3NlbGYucGF0aDogJyd9Ci0KLSAgICAgICAgICAgIGRl
ZiBza2lwcGVkX2xheW91dF90ZXN0cyhzZWxmLCB0ZXN0cyk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNldChbXSkKLQotICAgICAgICAgICAgZGVmIGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNl
bGYpOgotICAgICAgICAgICAgICAgIHJldHVybiBbXQotCi0gICAgICAgICAgICBkZWYgY29uZmln
dXJhdGlvbl9zcGVjaWZpZXJfbWFjcm9zKHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiBb
XQotCi0gICAgICAgICAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9iYXNlKHNlbGYpOgotICAgICAg
ICAgICAgICAgIHJldHVybiAnJwotCi0gICAgICAgICAgICBkZWYgZ2V0X29wdGlvbihzZWxmLCBu
YW1lLCB2YWwpOgotICAgICAgICAgICAgICAgIHJldHVybiB2YWwKLQotICAgICAgICBjbGFzcyBG
YWtlRmFjdG9yeShvYmplY3QpOgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Qs
IHBvcnRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0Ci0gICAgICAgICAgICAg
ICAgc2VsZi5wb3J0cyA9IHt9Ci0gICAgICAgICAgICAgICAgZm9yIHBvcnQgaW4gcG9ydHM6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYucG9ydHNbcG9ydC5uYW1lXSA9IHBvcnQKLQotICAgICAg
ICAgICAgZGVmIGdldChzZWxmLCBwb3J0X25hbWUsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHNlbGYucG9ydHNbcG9ydF9uYW1lXQotCi0gICAgICAgICAgICBkZWYg
YWxsX3BvcnRfbmFtZXMoc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChzZWxm
LnBvcnRzLmtleXMoKSkKLQotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBob3N0
LnBvcnRzX3BhcnNlZCA9IFtdCi0gICAgICAgIGhvc3QucG9ydF9mYWN0b3J5ID0gRmFrZUZhY3Rv
cnkoaG9zdCwgKEZha2VQb3J0KGhvc3QsICdhJywgJ3BhdGgtdG8tYScpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWtlUG9ydChob3N0LCAnYicsICdw
YXRoLXRvLWInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmFrZVBvcnQoaG9zdCwgJ2Itd2luJywgJ3BhdGgtdG8tYicpKSkKLQotICAgICAgICBsb2dn
aW5nX3N0cmVhbSA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChydW5fd2Via2l0X3Rlc3RzLmxpbnQoaG9zdC5wb3J0X2ZhY3RvcnkucG9ydHNbJ2EnXSwgTW9j
a09wdGlvbnMocGxhdGZvcm09Tm9uZSwgZGVidWdfcnd0X2xvZ2dpbmc9RmFsc2UpLCBsb2dnaW5n
X3N0cmVhbSksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9zdC5wb3J0c19wYXJzZWQs
IFsnYScsICdiJywgJ2Itd2luJ10pCi0KLSAgICAgICAgaG9zdC5wb3J0c19wYXJzZWQgPSBbXQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl93ZWJraXRfdGVzdHMubGludChob3N0LnBvcnRf
ZmFjdG9yeS5wb3J0c1snYSddLCBNb2NrT3B0aW9ucyhwbGF0Zm9ybT0nYScsIGRlYnVnX3J3dF9s
b2dnaW5nPUZhbHNlKSwgbG9nZ2luZ19zdHJlYW0pLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhvc3QucG9ydHNfcGFyc2VkLCBbJ2EnXSkKLQotICAgIGRlZiB0ZXN0X2xpbnRfdGVzdF9m
aWxlcyhzZWxmKToKLSAgICAgICAgbG9nZ2luZ19zdHJlYW0gPSBTdHJpbmdJTy5TdHJpbmdJTygp
Ci0gICAgICAgIG9wdGlvbnMsIF8gPSBwYXJzZV9hcmdzKFsnLS1wbGF0Zm9ybScsICd0ZXN0Jywg
Jy0tbGludC10ZXN0LWZpbGVzJ10pCi0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAg
IHBvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG9wdGlvbnMucGxhdGZvcm0sIG9wdGlv
bnM9b3B0aW9ucykKLSAgICAgICAgcmVzID0gcnVuX3dlYmtpdF90ZXN0cy5saW50KHBvcnRfb2Jq
LCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMs
IDApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnTGludCBzdWNjZWVkZWQnIGluIGxvZ2dpbmdf
c3RyZWFtLmdldHZhbHVlKCkpCi0KLSAgICBkZWYgdGVzdF9saW50X3Rlc3RfZmlsZXNfX2Vycm9y
cyhzZWxmKToKLSAgICAgICAgb3B0aW9ucywgXyA9IHBhcnNlX2FyZ3MoWyctLXBsYXRmb3JtJywg
J3Rlc3QnLCAnLS1saW50LXRlc3QtZmlsZXMnXSkKLSAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkK
LSAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQob3B0aW9ucy5wbGF0Zm9y
bSwgb3B0aW9ucz1vcHRpb25zKQotICAgICAgICBwb3J0X29iai5leHBlY3RhdGlvbnNfZGljdCA9
IGxhbWJkYTogeycnOiAnLS0gc3ludGF4IGVycm9yJ30KLQotICAgICAgICBsb2dnaW5nX3N0cmVh
bSA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgcmVzID0gcnVuX3dlYmtpdF90ZXN0cy5s
aW50KHBvcnRfb2JqLCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSkKLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlcywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnTGludCBmYWlsZWQn
IGluIGxvZ2dpbmdfc3RyZWFtLmdldHZhbHVlKCkpCi0KLSAgICAgICAgIyBlbnN1cmUgd2UgbGlu
dCAqYWxsKiBvZiB0aGUgZmlsZXMgaW4gdGhlIGNhc2NhZGUuCi0gICAgICAgIHBvcnRfb2JqLmV4
cGVjdGF0aW9uc19kaWN0ID0gbGFtYmRhOiB7J2Zvbyc6ICctLSBzeW50YXggZXJyb3IxJywgJ2Jh
cic6ICctLSBzeW50YXggZXJyb3IyJ30KLSAgICAgICAgbG9nZ2luZ19zdHJlYW0gPSBTdHJpbmdJ
Ty5TdHJpbmdJTygpCi0gICAgICAgIHJlcyA9IHJ1bl93ZWJraXRfdGVzdHMubGludChwb3J0X29i
aiwgb3B0aW9ucywgbG9nZ2luZ19zdHJlYW0pCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXMsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2ZvbzoxJyBpbiBsb2dnaW5nX3N0cmVh
bS5nZXR2YWx1ZSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2JhcjoxJyBpbiBsb2dnaW5n
X3N0cmVhbS5nZXR2YWx1ZSgpKQotCi0KIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
LCBTdHJlYW1UZXN0aW5nTWl4aW4pOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgIyBB
IHJlYWwgUGxhdGZvcm1JbmZvIG9iamVjdCBpcyB1c2VkIGhlcmUgaW5zdGVhZCBvZiBhCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179570</attachid>
            <date>2012-12-14 18:22:59 -0800</date>
            <delta_ts>2012-12-14 23:37:59 -0800</delta_ts>
            <desc>fix main() call in lint-test-expectations</desc>
            <filename>bug-105077-20121214182019.patch</filename>
            <type>text/plain</type>
            <size>22239</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzgwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTIxZjVhNmY5NTQ2NzA0M2JkYTk5MDMwZTNjZjdhOWY1
Y2Y2ZDc1ZC4uODJjZjJkODM3NDBhZTk0YjliOTU5ZTFjZmYyMDhiOGYzOGQ4NzA0MSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4
IEBACiAyMDEyLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBtb3ZlIC0tbGludC10ZXN0LWZpbGVzIGNvZGUgaW50byBpdHMgb3du
IG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA1MDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SXQgcmVhbGx5IGRpZG4ndCBuZWVkIHRvIGJlIGluIHJ1bl93ZWJraXRfdGVzdHMucHkgYW55bW9y
ZS4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGxpbnQtdGVzdC1leHBlY3RhdGlvbnMg
c2NyaXB0cyB0byBUb29scy9TY3JpcHRzOworICAgICAgICByd3QgLS1saW50LXRlc3QtZmlsZXMg
aXMgc3RpbGwgc3VwcG9ydGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorICAgICAgICBm
b3Igbm93LgorCisgICAgICAgICogU2NyaXB0cy9saW50LXRlc3QtZXhwZWN0YXRpb25zOiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhw
ZWN0YXRpb25zLnB5OiBBZGRlZC4KKyAgICAgICAgKGxpbnQpOgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0
aW9uc191bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChGYWtlUG9ydCk6CisgICAgICAgIChG
YWtlUG9ydC5fX2luaXRfXyk6CisgICAgICAgIChGYWtlUG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoRmFrZVBvcnQuZXhwZWN0YXRpb25zX2RpY3QpOgorICAgICAgICAoRmFrZVBv
cnQuc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAoRmFrZVBvcnQuYWxsX3Rlc3RfY29u
ZmlndXJhdGlvbnMpOgorICAgICAgICAoRmFrZVBvcnQuY29uZmlndXJhdGlvbl9zcGVjaWZpZXJf
bWFjcm9zKToKKyAgICAgICAgKEZha2VQb3J0LmdldF9vcHRpb24pOgorICAgICAgICAoRmFrZUZh
Y3RvcnkpOgorICAgICAgICAoRmFrZUZhY3RvcnkuX19pbml0X18pOgorICAgICAgICAoRmFrZUZh
Y3RvcnkuZ2V0KToKKyAgICAgICAgKEZha2VGYWN0b3J5LmFsbF9wb3J0X25hbWVzKToKKyAgICAg
ICAgKExpbnRUZXN0KToKKyAgICAgICAgKExpbnRUZXN0LnRlc3RfYWxsX2NvbmZpZ3VyYXRpb25z
KToKKyAgICAgICAgKExpbnRUZXN0LnRlc3RfbGludF90ZXN0X2ZpbGVzKToKKyAgICAgICAgKExp
bnRUZXN0LnRlc3RfbGludF90ZXN0X2ZpbGVzX19lcnJvcnMpOgorICAgICAgICAoTWFpblRlc3Qp
OgorICAgICAgICAoTWFpblRlc3QudGVzdF9zdWNjZXNzKToKKyAgICAgICAgKE1haW5UZXN0LnRl
c3Rfc3VjY2Vzcy5pbnRlcnJ1cHRpbmdfbGludCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3N1
Y2Nlc3Muc3VjY2Vzc2Z1bF9saW50KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rfc3VjY2Vzcy5l
eGNlcHRpb25fcmFpc2luZ19saW50KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlv
bnRlc3QucHk6CisgICAgICAgIChTdHJlYW1UZXN0aW5nTWl4aW4uYXNzZXJ0Tm90RW1wdHkpOgor
CisyMDEyLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIGdhcmRlbi1vLW1hdGljIGRvZXNuJ3Qga25vdyBhYm91dCByZWZ0ZXN0cwogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTc2CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvbGludC10ZXN0LWV4cGVjdGF0aW9ucyBiL1Rvb2xzL1NjcmlwdHMv
bGludC10ZXN0LWV4cGVjdGF0aW9ucwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTZlYjc3ZGJiMDQ2MjhhNzExMzMw
ZjRhMGM2M2RmZDU1ZjgzNDNhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saW50
LXRlc3QtZXhwZWN0YXRpb25zCkBAIC0wLDAgKzEsMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS5jb21tb24g
aW1wb3J0IHZlcnNpb25fY2hlY2sKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBs
aW50X3Rlc3RfZXhwZWN0YXRpb25zCisKKworc3lzLmV4aXQobGludF90ZXN0X2V4cGVjdGF0aW9u
cy5tYWluKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZG91dCwgc3lzLnN0ZGVycikpCisKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xpbnRfdGVzdF9leHBlY3Rh
dGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3Rf
ZXhwZWN0YXRpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyYWE3Yjk5ZmU4ZGVmN2VmYzZhMmY0NDllZGI1
ODU4MGYzZmVjNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC0wLDAgKzEsMTExIEBACisj
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0
IHNpZ25hbAoraW1wb3J0IHRyYWNlYmFjaworCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGlt
cG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3Rf
ZXhwZWN0YXRpb25zCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwbGF0
Zm9ybV9vcHRpb25zCisKKworIyBUaGlzIG1pcnJvcnMgd2hhdCB0aGUgc2hlbGwgbm9ybWFsbHkg
ZG9lcy4KK0lOVEVSUlVQVEVEX0VYSVRfU1RBVFVTID0gc2lnbmFsLlNJR0lOVCArIDEyOAorCisj
IFRoaXMgaXMgYSByYW5kb21seSBjaG9zZW4gZXhpdCBjb2RlIHRoYXQgY2FuIGJlIHRlc3RlZCBh
Z2FpbnN0IHRvCisjIGluZGljYXRlIHRoYXQgYW4gdW5leHBlY3RlZCBleGNlcHRpb24gb2NjdXJy
ZWQuCitFWENFUFRJT05BTF9FWElUX1NUQVRVUyA9IDI1NAorCitfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCisKKworZGVmIGxpbnQoaG9zdCwgb3B0aW9ucywgbG9nZ2luZ19zdHJl
YW0pOgorICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIuc2V0TGV2
ZWwobG9nZ2luZy5JTkZPKQorICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIobG9n
Z2luZ19zdHJlYW0pCisgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKworICAgIHRyeToK
KyAgICAgICAgcG9ydHNfdG9fbGludCA9IFtob3N0LnBvcnRfZmFjdG9yeS5nZXQobmFtZSkgZm9y
IG5hbWUgaW4gaG9zdC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMob3B0aW9ucy5wbGF0Zm9y
bSldCisgICAgICAgIGZpbGVzX2xpbnRlZCA9IHNldCgpCisgICAgICAgIGxpbnRfZmFpbGVkID0g
RmFsc2UKKworICAgICAgICBmb3IgcG9ydF90b19saW50IGluIHBvcnRzX3RvX2xpbnQ6CisgICAg
ICAgICAgICBleHBlY3RhdGlvbnNfZGljdCA9IHBvcnRfdG9fbGludC5leHBlY3RhdGlvbnNfZGlj
dCgpCisKKyAgICAgICAgICAgICMgRklYTUU6IFRoaXMgd29uJ3Qgd29yayBpZiBtdWx0aXBsZSBw
b3J0cyBzaGFyZSBhIFRlc3RFeHBlY3RhdGlvbnMgZmlsZSBidXQgc3VwcG9ydCBkaWZmZXJlbnQg
bW9kaWZpZXJzIGluIHRoZSBmaWxlLgorICAgICAgICAgICAgZm9yIGV4cGVjdGF0aW9uc19maWxl
IGluIGV4cGVjdGF0aW9uc19kaWN0LmtleXMoKToKKyAgICAgICAgICAgICAgICBpZiBleHBlY3Rh
dGlvbnNfZmlsZSBpbiBmaWxlc19saW50ZWQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0
YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMocG9ydF90b19saW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0YXRpb25zX3RvX2xpbnQ9e2V4cGVjdGF0aW9uc19maWxlOiBleHBlY3RhdGlv
bnNfZGljdFtleHBlY3RhdGlvbnNfZmlsZV19KQorICAgICAgICAgICAgICAgIGV4Y2VwdCB0ZXN0
X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGxpbnRf
ZmFpbGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAg
ICAgICAgICAgICAgICBmb3Igd2FybmluZyBpbiBlLndhcm5pbmdzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgX2xvZy5lcnJvcih3YXJuaW5nKQorICAgICAgICAgICAgICAgICAgICBfbG9nLmVy
cm9yKCcnKQorICAgICAgICAgICAgICAgIGZpbGVzX2xpbnRlZC5hZGQoZXhwZWN0YXRpb25zX2Zp
bGUpCisKKyAgICAgICAgaWYgbGludF9mYWlsZWQ6CisgICAgICAgICAgICBfbG9nLmVycm9yKCdM
aW50IGZhaWxlZC4nKQorICAgICAgICAgICAgcmV0dXJuIC0xCisKKyAgICAgICAgX2xvZy5pbmZv
KCdMaW50IHN1Y2NlZWRlZC4nKQorICAgICAgICByZXR1cm4gMAorICAgIGZpbmFsbHk6CisgICAg
ICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGhhbmRsZXIpCisKKworZGVmIG1haW4oYXJndiwgXywg
c3RkZXJyKToKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9
cGxhdGZvcm1fb3B0aW9ucyh1c2VfZ2xvYnM9VHJ1ZSkpCisgICAgb3B0aW9ucywgXyA9IHBhcnNl
ci5wYXJzZV9hcmdzKGFyZ3YpCisKKyAgICBpZiBvcHRpb25zLnBsYXRmb3JtIGFuZCAndGVzdCcg
aW4gb3B0aW9ucy5wbGF0Zm9ybToKKyAgICAgICAgIyBJdCdzIGEgYml0IGxhbWUgdG8gaW1wb3J0
IG1vY2tzIGludG8gcmVhbCBjb2RlLCBidXQgdGhpcyBhbGxvd3MgdGhlIHVzZXIKKyAgICAgICAg
IyB0byBydW4gdGVzdHMgYWdhaW5zdCB0aGUgdGVzdCBwbGF0Zm9ybSBpbnRlcmFjdGl2ZWx5LCB3
aGljaCBpcyB1c2VmdWwgZm9yCisgICAgICAgICMgZGVidWdnaW5nIHRlc3QgZmFpbHVyZXMuCisg
ICAgICAgIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKKyAg
ICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICBlbHNlOgorICAgICAgICBob3N0ID0gSG9zdCgp
CisKKyAgICB0cnk6CisgICAgICAgIGV4aXRfc3RhdHVzID0gbGludChob3N0LCBvcHRpb25zLCBz
dGRlcnIpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBleGl0X3N0YXR1
cyA9IElOVEVSUlVQVEVEX0VYSVRfU1RBVFVTCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor
ICAgICAgICBwcmludCA+PiBzdGRlcnIsICdcbiVzIHJhaXNlZDogJXMnICUgKGUuX19jbGFzc19f
Ll9fbmFtZV9fLCBzdHIoZSkpCisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zdGRl
cnIpCisgICAgICAgIGV4aXRfc3RhdHVzID0gRVhDRVBUSU9OQUxfRVhJVF9TVEFUVVMKKworICAg
IHJldHVybiBleGl0X3N0YXR1cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xpbnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRl
c3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzJlYThiOWNkMWI5Yzk0ZWQ5YTQyZTE1MTI4MmU5NTFkYWY0MWJk
MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xpbnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwxNTUgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0
IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hv
c3QKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBsaW50X3Rlc3RfZXhwZWN0YXRp
b25zCisKKworY2xhc3MgRmFrZVBvcnQob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
aG9zdCwgbmFtZSwgcGF0aCk6CisgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICAgICAgc2Vs
Zi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICBkZWYgdGVzdF9j
b25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGV4cGVj
dGF0aW9uc19kaWN0KHNlbGYpOgorICAgICAgICBzZWxmLmhvc3QucG9ydHNfcGFyc2VkLmFwcGVu
ZChzZWxmLm5hbWUpCisgICAgICAgIHJldHVybiB7c2VsZi5wYXRoOiAnJ30KKworICAgIGRlZiBz
a2lwcGVkX2xheW91dF90ZXN0cyhzZWxmLCBfKToKKyAgICAgICAgcmV0dXJuIHNldChbXSkKKwor
ICAgIGRlZiBhbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtd
CisKKyAgICBkZWYgY29uZmlndXJhdGlvbl9zcGVjaWZpZXJfbWFjcm9zKHNlbGYpOgorICAgICAg
ICByZXR1cm4gW10KKworICAgIGRlZiBnZXRfb3B0aW9uKHNlbGYsIF8sIHZhbCk6CisgICAgICAg
IHJldHVybiB2YWwKKworCitjbGFzcyBGYWtlRmFjdG9yeShvYmplY3QpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBob3N0LCBwb3J0cyk6CisgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICAg
ICAgc2VsZi5wb3J0cyA9IHt9CisgICAgICAgIGZvciBwb3J0IGluIHBvcnRzOgorICAgICAgICAg
ICAgc2VsZi5wb3J0c1twb3J0Lm5hbWVdID0gcG9ydAorCisgICAgZGVmIGdldChzZWxmLCBwb3J0
X25hbWUsICphcmdzLCAqKmt3YXJncyk6ICAjIHB5bGludDogZGlzYWJsZT1XMDYxMyxFMDIwMgor
ICAgICAgICByZXR1cm4gc2VsZi5wb3J0c1twb3J0X25hbWVdCisKKyAgICBkZWYgYWxsX3BvcnRf
bmFtZXMoc2VsZiwgcGxhdGZvcm09Tm9uZSk6ICAjIHB5bGludDogZGlzYWJsZT1XMDYxMyxFMDIw
MgorICAgICAgICByZXR1cm4gc29ydGVkKHNlbGYucG9ydHMua2V5cygpKQorCisKK2NsYXNzIExp
bnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hbGxfY29uZmlndXJhdGlv
bnMoc2VsZik6CisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGhvc3QucG9ydHNf
cGFyc2VkID0gW10KKyAgICAgICAgaG9zdC5wb3J0X2ZhY3RvcnkgPSBGYWtlRmFjdG9yeShob3N0
LCAoRmFrZVBvcnQoaG9zdCwgJ2EnLCAncGF0aC10by1hJyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZha2VQb3J0KGhvc3QsICdiJywgJ3BhdGgtdG8t
YicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWtl
UG9ydChob3N0LCAnYi13aW4nLCAncGF0aC10by1iJykpKQorCisgICAgICAgIGxvZ2dpbmdfc3Ry
ZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBvcHRpb25zID0gb3B0cGFyc2UuVmFs
dWVzKHsncGxhdGZvcm0nOiBOb25lfSkKKyAgICAgICAgcmVzID0gbGludF90ZXN0X2V4cGVjdGF0
aW9ucy5saW50KGhvc3QsIG9wdGlvbnMsIGxvZ2dpbmdfc3RyZWFtKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlcywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob3N0LnBvcnRzX3Bh
cnNlZCwgWydhJywgJ2InLCAnYi13aW4nXSkKKworICAgIGRlZiB0ZXN0X2xpbnRfdGVzdF9maWxl
cyhzZWxmKToKKyAgICAgICAgbG9nZ2luZ19zdHJlYW0gPSBTdHJpbmdJTy5TdHJpbmdJTygpCisg
ICAgICAgIG9wdGlvbnMgPSBvcHRwYXJzZS5WYWx1ZXMoeydwbGF0Zm9ybSc6ICd0ZXN0LW1hYy1s
ZW9wYXJkJ30pCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisKKyAgICAgICAgIyBweWxpbnQg
YXBwZWFycyB0byBjb21wbGFpbiBpbmNvcnJlY3RseSBhYm91dCB0aGUgbWV0aG9kIG92ZXJyaWRl
cyBweWxpbnQ6IGRpc2FibGU9RTAyMDIsQzAzMjIKKyAgICAgICAgIyBGSVhNRTogaW5jb3JyZWN0
IGNvbXBsYWludHMgYWJvdXQgc3BhY2luZyBweWxpbnQ6IGRpc2FibGU9QzAzMjIKKyAgICAgICAg
aG9zdC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMgPSBsYW1iZGEgcGxhdGZvcm09Tm9uZTog
W3BsYXRmb3JtXQorCisgICAgICAgIHJlcyA9IGxpbnRfdGVzdF9leHBlY3RhdGlvbnMubGludCho
b3N0LCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlcywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdMaW50IHN1Y2NlZWRlZCcgaW4gbG9n
Z2luZ19zdHJlYW0uZ2V0dmFsdWUoKSkKKworICAgIGRlZiB0ZXN0X2xpbnRfdGVzdF9maWxlc19f
ZXJyb3JzKHNlbGYpOgorICAgICAgICBvcHRpb25zID0gb3B0cGFyc2UuVmFsdWVzKHsncGxhdGZv
cm0nOiAndGVzdCcsICdkZWJ1Z19yd3RfbG9nZ2luZyc6IEZhbHNlfSkKKyAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKKworICAgICAgICAjIEZJWE1FOiBpbmNvcnJlY3QgY29tcGxhaW50cyBhYm91
dCBzcGFjaW5nIHB5bGludDogZGlzYWJsZT1DMDMyMgorICAgICAgICBwb3J0ID0gaG9zdC5wb3J0
X2ZhY3RvcnkuZ2V0KG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAg
cG9ydC5leHBlY3RhdGlvbnNfZGljdCA9IGxhbWJkYTogeydmb28nOiAnLS0gc3ludGF4IGVycm9y
MScsICdiYXInOiAnLS0gc3ludGF4IGVycm9yMid9CisKKyAgICAgICAgaG9zdC5wb3J0X2ZhY3Rv
cnkuZ2V0ID0gbGFtYmRhIHBsYXRmb3JtLCBvcHRpb25zPU5vbmU6IHBvcnQKKyAgICAgICAgaG9z
dC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMgPSBsYW1iZGEgcGxhdGZvcm09Tm9uZTogW3Bv
cnQubmFtZSgpXQorCisgICAgICAgIGxvZ2dpbmdfc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8o
KQorCisgICAgICAgIHJlcyA9IGxpbnRfdGVzdF9leHBlY3RhdGlvbnMubGludChob3N0LCBvcHRp
b25zLCBsb2dnaW5nX3N0cmVhbSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgLTEp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnTGludCBmYWlsZWQnIGluIGxvZ2dpbmdfc3RyZWFt
LmdldHZhbHVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZm9vOjEnIGluIGxvZ2dpbmdf
c3RyZWFtLmdldHZhbHVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYmFyOjEnIGluIGxv
Z2dpbmdfc3RyZWFtLmdldHZhbHVlKCkpCisKKworY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIG9yaWdfbGludF9m
biA9IGxpbnRfdGVzdF9leHBlY3RhdGlvbnMubGludAorCisgICAgICAgICMgdW51c2VkIGFyZ3Mg
cHlsaW50OiBkaXNhYmxlPVcwNjEzCisgICAgICAgIGRlZiBpbnRlcnJ1cHRpbmdfbGludChob3N0
LCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSk6CisgICAgICAgICAgICByYWlzZSBLZXlib2FyZElu
dGVycnVwdAorCisgICAgICAgIGRlZiBzdWNjZXNzZnVsX2xpbnQoaG9zdCwgb3B0aW9ucywgbG9n
Z2luZ19zdHJlYW0pOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBkZWYgZXhjZXB0
aW9uX3JhaXNpbmdfbGludChob3N0LCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSk6CisgICAgICAg
ICAgICBhc3NlcnQgRmFsc2UKKworICAgICAgICBzdGRvdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygp
CisgICAgICAgIHN0ZGVyciA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgbGludF90ZXN0X2V4cGVjdGF0aW9ucy5saW50ID0gaW50ZXJydXB0aW5nX2xpbnQK
KyAgICAgICAgICAgIHJlcyA9IGxpbnRfdGVzdF9leHBlY3RhdGlvbnMubWFpbihbXSwgc3Rkb3V0
LCBzdGRlcnIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgbGludF90ZXN0X2V4
cGVjdGF0aW9ucy5JTlRFUlJVUFRFRF9FWElUX1NUQVRVUykKKworICAgICAgICAgICAgbGludF90
ZXN0X2V4cGVjdGF0aW9ucy5saW50ID0gc3VjY2Vzc2Z1bF9saW50CisgICAgICAgICAgICByZXMg
PSBsaW50X3Rlc3RfZXhwZWN0YXRpb25zLm1haW4oWyctLXBsYXRmb3JtJywgJ3Rlc3QnXSwgc3Rk
b3V0LCBzdGRlcnIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgMCkKKworICAg
ICAgICAgICAgbGludF90ZXN0X2V4cGVjdGF0aW9ucy5saW50ID0gZXhjZXB0aW9uX3JhaXNpbmdf
bGludAorICAgICAgICAgICAgcmVzID0gbGludF90ZXN0X2V4cGVjdGF0aW9ucy5tYWluKFtdLCBz
dGRvdXQsIHN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBsaW50X3Rl
c3RfZXhwZWN0YXRpb25zLkVYQ0VQVElPTkFMX0VYSVRfU1RBVFVTKQorICAgICAgICBmaW5hbGx5
OgorICAgICAgICAgICAgbGludF90ZXN0X2V4cGVjdGF0aW9ucy5saW50ID0gb3JpZ19saW50X2Zu
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weQppbmRleCA0YTEzMDU0YThjY2ExMGQwZjM2MGM2NTZhNDc0NjYzMDhmZmYw
ZDUzLi5mY2ZkMDJlOTA3OTMxMjIyNzJlZDBhM2I1MDQ2NTIwYTgwOTAzNjllIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKQEAgLTU0LDQ2ICs1NCw2IEBAIElOVEVSUlVQVEVEX0VYSVRfU1RBVFVTID0gc2lnbmFs
LlNJR0lOVCArIDEyOAogRVhDRVBUSU9OQUxfRVhJVF9TVEFUVVMgPSAyNTQKIAogCi1kZWYgbGlu
dChwb3J0LCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSk6Ci0gICAgaG9zdCA9IHBvcnQuaG9zdAot
ICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRyBpZiBvcHRpb25z
LmRlYnVnX3J3dF9sb2dnaW5nIGVsc2UgbG9nZ2luZy5JTkZPKQotICAgIHByaW50ZXIgPSBwcmlu
dGluZy5QcmludGVyKHBvcnQsIG9wdGlvbnMsIGxvZ2dpbmdfc3RyZWFtLCBsb2dnZXI9bG9nZ2lu
Zy5nZXRMb2dnZXIoKSkKLQotICAgIGlmIG9wdGlvbnMucGxhdGZvcm06Ci0gICAgICAgIHBvcnRz
X3RvX2xpbnQgPSBbcG9ydF0KLSAgICBlbHNlOgotICAgICAgICBwb3J0c190b19saW50ID0gW2hv
c3QucG9ydF9mYWN0b3J5LmdldChuYW1lKSBmb3IgbmFtZSBpbiBob3N0LnBvcnRfZmFjdG9yeS5h
bGxfcG9ydF9uYW1lcygpXQotCi0gICAgZmlsZXNfbGludGVkID0gc2V0KCkKLSAgICBsaW50X2Zh
aWxlZCA9IEZhbHNlCi0KLSAgICBmb3IgcG9ydF90b19saW50IGluIHBvcnRzX3RvX2xpbnQ6Ci0g
ICAgICAgIGV4cGVjdGF0aW9uc19kaWN0ID0gcG9ydF90b19saW50LmV4cGVjdGF0aW9uc19kaWN0
KCkKLQotICAgICAgICAjIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgaWYgbXVsdGlwbGUgcG9ydHMg
c2hhcmUgYSBUZXN0RXhwZWN0YXRpb25zIGZpbGUgYnV0IHN1cHBvcnQgZGlmZmVyZW50IG1vZGlm
aWVycyBpbiB0aGUgZmlsZS4KLSAgICAgICAgZm9yIGV4cGVjdGF0aW9uc19maWxlIGluIGV4cGVj
dGF0aW9uc19kaWN0LmtleXMoKToKLSAgICAgICAgICAgIGlmIGV4cGVjdGF0aW9uc19maWxlIGlu
IGZpbGVzX2xpbnRlZDoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhw
b3J0X3RvX2xpbnQsIGV4cGVjdGF0aW9uc190b19saW50PXtleHBlY3RhdGlvbnNfZmlsZTogZXhw
ZWN0YXRpb25zX2RpY3RbZXhwZWN0YXRpb25zX2ZpbGVdfSkKLSAgICAgICAgICAgIGV4Y2VwdCB0
ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yLCBlOgotICAgICAgICAgICAgICAgIGxpbnRfZmFp
bGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAgICAgICAgICAg
ICAgZm9yIHdhcm5pbmcgaW4gZS53YXJuaW5nczoKLSAgICAgICAgICAgICAgICAgICAgX2xvZy5l
cnJvcih3YXJuaW5nKQotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAgICAgICAg
ICBmaWxlc19saW50ZWQuYWRkKGV4cGVjdGF0aW9uc19maWxlKQotCi0gICAgaWYgbGludF9mYWls
ZWQ6Ci0gICAgICAgIF9sb2cuZXJyb3IoJ0xpbnQgZmFpbGVkLicpCi0gICAgICAgIHByaW50ZXIu
Y2xlYW51cCgpCi0gICAgICAgIHJldHVybiAtMQotICAgIF9sb2cuaW5mbygnTGludCBzdWNjZWVk
ZWQuJykKLSAgICBwcmludGVyLmNsZWFudXAoKQotICAgIHJldHVybiAwCi0KLQogZGVmIHJ1bihw
b3J0LCBvcHRpb25zLCBhcmdzLCBsb2dnaW5nX3N0cmVhbSk6CiAgICAgdHJ5OgogICAgICAgICBw
cmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihwb3J0LCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSwg
bG9nZ2VyPWxvZ2dpbmcuZ2V0TG9nZ2VyKCkpCkBAIC00MDEsNyArMzYxLDggQEAgZGVmIG1haW4o
YXJndj1Ob25lLCBzdGRvdXQ9c3lzLnN0ZG91dCwgc3RkZXJyPXN5cy5zdGRlcnIpOgogICAgIGxv
Z2dpbmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRyBpZiBvcHRpb25zLmRlYnVn
X3J3dF9sb2dnaW5nIGVsc2UgbG9nZ2luZy5JTkZPKQogCiAgICAgaWYgb3B0aW9ucy5saW50X3Rl
c3RfZmlsZXM6Ci0gICAgICAgIHJldHVybiBsaW50KHBvcnQsIG9wdGlvbnMsIHN0ZGVycikKKyAg
ICAgICAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGludF90ZXN0X2V4cGVjdGF0aW9ucyBp
bXBvcnQgbGludAorICAgICAgICByZXR1cm4gbGludChob3N0LCBvcHRpb25zLCBzdGRlcnIpCiAK
ICAgICB0cnk6CiAgICAgICAgIHJ1bl9kZXRhaWxzID0gcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3Ms
IHN0ZGVycikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKaW5k
ZXggZjM3M2QzYmM4NmM1Y2ZjNmJlYTlkMGNmNDViMDFiYmIxYzM0NTI0OS4uYmUxNWRmOGFhOTdm
M2YzYTA4NjhkNjcyZmQ2NDFmMTZkZTQ0YjBjMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
c19pbnRlZ3JhdGlvbnRlc3QucHkKQEAgLTE2OSw5NSArMTY5LDYgQEAgY2xhc3MgU3RyZWFtVGVz
dGluZ01peGluKG9iamVjdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHJlYW0uZ2V0dmFs
dWUoKSkKIAogCi1jbGFzcyBMaW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVGVzdGlu
Z01peGluKToKLSAgICBkZWYgdGVzdF9hbGxfY29uZmlndXJhdGlvbnMoc2VsZik6Ci0KLSAgICAg
ICAgY2xhc3MgRmFrZVBvcnQob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBob3N0LCBuYW1lLCBwYXRoKToKLSAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0Ci0g
ICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICAgICAgICAgIHNlbGYucGF0
aCA9IHBhdGgKLQotICAgICAgICAgICAgZGVmIHRlc3RfY29uZmlndXJhdGlvbihzZWxmKToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICBkZWYgZXhwZWN0YXRpb25z
X2RpY3Qoc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5ob3N0LnBvcnRzX3BhcnNlZC5hcHBl
bmQoc2VsZi5uYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiB7c2VsZi5wYXRoOiAnJ30KLQot
ICAgICAgICAgICAgZGVmIHNraXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYsIHRlc3RzKToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc2V0KFtdKQotCi0gICAgICAgICAgICBkZWYgYWxsX3Rlc3RfY29u
ZmlndXJhdGlvbnMoc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtdCi0KLSAgICAgICAg
ICAgIGRlZiBjb25maWd1cmF0aW9uX3NwZWNpZmllcl9tYWNyb3Moc2VsZik6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIFtdCi0KLSAgICAgICAgICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X2Jhc2Uo
c2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICcnCi0KLSAgICAgICAgICAgIGRlZiBnZXRf
b3B0aW9uKHNlbGYsIG5hbWUsIHZhbCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbAotCi0g
ICAgICAgIGNsYXNzIEZha2VGYWN0b3J5KG9iamVjdCk6Ci0gICAgICAgICAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdCwgcG9ydHMpOgotICAgICAgICAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QK
LSAgICAgICAgICAgICAgICBzZWxmLnBvcnRzID0ge30KLSAgICAgICAgICAgICAgICBmb3IgcG9y
dCBpbiBwb3J0czoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3J0c1twb3J0Lm5hbWVdID0g
cG9ydAotCi0gICAgICAgICAgICBkZWYgZ2V0KHNlbGYsIHBvcnRfbmFtZSwgKmFyZ3MsICoqa3dh
cmdzKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wb3J0c1twb3J0X25hbWVdCi0KLSAg
ICAgICAgICAgIGRlZiBhbGxfcG9ydF9uYW1lcyhzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1
cm4gc29ydGVkKHNlbGYucG9ydHMua2V5cygpKQotCi0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
Ci0gICAgICAgIGhvc3QucG9ydHNfcGFyc2VkID0gW10KLSAgICAgICAgaG9zdC5wb3J0X2ZhY3Rv
cnkgPSBGYWtlRmFjdG9yeShob3N0LCAoRmFrZVBvcnQoaG9zdCwgJ2EnLCAncGF0aC10by1hJyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZha2VQb3J0
KGhvc3QsICdiJywgJ3BhdGgtdG8tYicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGYWtlUG9ydChob3N0LCAnYi13aW4nLCAncGF0aC10by1iJykpKQot
Ci0gICAgICAgIGxvZ2dpbmdfc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJ1bl93ZWJraXRfdGVzdHMubGludChob3N0LnBvcnRfZmFjdG9yeS5w
b3J0c1snYSddLCBNb2NrT3B0aW9ucyhwbGF0Zm9ybT1Ob25lLCBkZWJ1Z19yd3RfbG9nZ2luZz1G
YWxzZSksIGxvZ2dpbmdfc3RyZWFtKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob3N0
LnBvcnRzX3BhcnNlZCwgWydhJywgJ2InLCAnYi13aW4nXSkKLQotICAgICAgICBob3N0LnBvcnRz
X3BhcnNlZCA9IFtdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX3dlYmtpdF90ZXN0cy5s
aW50KGhvc3QucG9ydF9mYWN0b3J5LnBvcnRzWydhJ10sIE1vY2tPcHRpb25zKHBsYXRmb3JtPSdh
JywgZGVidWdfcnd0X2xvZ2dpbmc9RmFsc2UpLCBsb2dnaW5nX3N0cmVhbSksIDApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaG9zdC5wb3J0c19wYXJzZWQsIFsnYSddKQotCi0gICAgZGVmIHRl
c3RfbGludF90ZXN0X2ZpbGVzKHNlbGYpOgotICAgICAgICBsb2dnaW5nX3N0cmVhbSA9IFN0cmlu
Z0lPLlN0cmluZ0lPKCkKLSAgICAgICAgb3B0aW9ucywgXyA9IHBhcnNlX2FyZ3MoWyctLXBsYXRm
b3JtJywgJ3Rlc3QnLCAnLS1saW50LXRlc3QtZmlsZXMnXSkKLSAgICAgICAgaG9zdCA9IE1vY2tI
b3N0KCkKLSAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQob3B0aW9ucy5w
bGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zKQotICAgICAgICByZXMgPSBydW5fd2Via2l0X3Rlc3Rz
LmxpbnQocG9ydF9vYmosIG9wdGlvbnMsIGxvZ2dpbmdfc3RyZWFtKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlcywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdMaW50IHN1Y2NlZWRl
ZCcgaW4gbG9nZ2luZ19zdHJlYW0uZ2V0dmFsdWUoKSkKLQotICAgIGRlZiB0ZXN0X2xpbnRfdGVz
dF9maWxlc19fZXJyb3JzKHNlbGYpOgotICAgICAgICBvcHRpb25zLCBfID0gcGFyc2VfYXJncyhb
Jy0tcGxhdGZvcm0nLCAndGVzdCcsICctLWxpbnQtdGVzdC1maWxlcyddKQotICAgICAgICBob3N0
ID0gTW9ja0hvc3QoKQotICAgICAgICBwb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChv
cHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMpCi0gICAgICAgIHBvcnRfb2JqLmV4cGVj
dGF0aW9uc19kaWN0ID0gbGFtYmRhOiB7Jyc6ICctLSBzeW50YXggZXJyb3InfQotCi0gICAgICAg
IGxvZ2dpbmdfc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICAgICByZXMgPSBydW5f
d2Via2l0X3Rlc3RzLmxpbnQocG9ydF9vYmosIG9wdGlvbnMsIGxvZ2dpbmdfc3RyZWFtKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCdMaW50IGZhaWxlZCcgaW4gbG9nZ2luZ19zdHJlYW0uZ2V0dmFsdWUoKSkKLQotICAgICAgICAj
IGVuc3VyZSB3ZSBsaW50ICphbGwqIG9mIHRoZSBmaWxlcyBpbiB0aGUgY2FzY2FkZS4KLSAgICAg
ICAgcG9ydF9vYmouZXhwZWN0YXRpb25zX2RpY3QgPSBsYW1iZGE6IHsnZm9vJzogJy0tIHN5bnRh
eCBlcnJvcjEnLCAnYmFyJzogJy0tIHN5bnRheCBlcnJvcjInfQotICAgICAgICBsb2dnaW5nX3N0
cmVhbSA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgcmVzID0gcnVuX3dlYmtpdF90ZXN0
cy5saW50KHBvcnRfb2JqLCBvcHRpb25zLCBsb2dnaW5nX3N0cmVhbSkKLQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlcywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZm9vOjEnIGlu
IGxvZ2dpbmdfc3RyZWFtLmdldHZhbHVlKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYmFy
OjEnIGluIGxvZ2dpbmdfc3RyZWFtLmdldHZhbHVlKCkpCi0KLQogY2xhc3MgTWFpblRlc3QodW5p
dHRlc3QuVGVzdENhc2UsIFN0cmVhbVRlc3RpbmdNaXhpbik6CiAgICAgZGVmIHNldFVwKHNlbGYp
OgogICAgICAgICAjIEEgcmVhbCBQbGF0Zm9ybUluZm8gb2JqZWN0IGlzIHVzZWQgaGVyZSBpbnN0
ZWFkIG9mIGEK
</data>
<flag name="review"
          id="196488"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>