<?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>112618</bug_id>
          
          <creation_ts>2013-03-18 13:52:12 -0700</creation_ts>
          <short_desc>Cleanup: Move js for treemap and aggregate_results into own js files.</short_desc>
          <delta_ts>2013-03-18 14:45:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julie Parent">jparent</reporter>
          <assigned_to name="Julie Parent">jparent</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</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>857503</commentid>
    <comment_count>0</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-18 13:52:12 -0700</bug_when>
    <thetext>Cleanup: Move js for treemap and aggregate_results into own js files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857506</commentid>
    <comment_count>1</comment_count>
      <attachid>193643</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-18 13:53:46 -0700</bug_when>
    <thetext>Created attachment 193643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857513</commentid>
    <comment_count>2</comment_count>
      <attachid>193643</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-03-18 14:00:09 -0700</bug_when>
    <thetext>Comment on attachment 193643
Patch

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

rs=me

&gt; Tools/TestResultServer/static-dashboards/treemap.html:115
&gt; +&lt;script src=&apos;treemap.js&apos;&gt;&lt;/script&gt;

nit: double quotes to be consistent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857518</commentid>
    <comment_count>3</comment_count>
      <attachid>193646</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-18 14:05:15 -0700</bug_when>
    <thetext>Created attachment 193646
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857579</commentid>
    <comment_count>4</comment_count>
      <attachid>193646</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 14:45:38 -0700</bug_when>
    <thetext>Comment on attachment 193646
Patch for landing

Clearing flags on attachment: 193646

Committed r146127: &lt;http://trac.webkit.org/changeset/146127&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857581</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 14:45:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193643</attachid>
            <date>2013-03-18 13:53:46 -0700</date>
            <delta_ts>2013-03-18 14:05:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112618-20130318134938.patch</filename>
            <type>text/plain</type>
            <size>39756</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTMwMmFmNGNlYzUxYzNkODJkOTBjMzRjNzFhZmQ2YTYx
N2QyYzY2ZS4uZjRlNmRiMjJhNDIxN2Y0ZWEyNzA0OTZiZjM4Nzk1MWRmMzVhNDdlMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDEzLTAzLTE4ICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBDbGVhbnVwOiBNb3ZlIGpzIGZvciB0cmVlbWFwIGFuZCBhZ2dyZWdhdGVfcmVzdWx0
cyBpbnRvIG93biBqcyBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMjYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCBqdXN0IG1vdmluZyB0
aGUgY29kZSBpbnRvIHNlcGFyYXRlIGpzIGZpbGUKKyAgICAgICAgcmF0aGVyIHRoYW4gaW5saW5l
ZCBpbiB0aGUgaHRtbCwgc28gd2UgY2FuIHRlc3QgaXQsIG1ha2UgaXQgbW9yZQorICAgICAgICBt
b2R1bGFyLCBldGMuICBPdGhlciBkYXNoYm9hcmQgdHlwZXMgYXJlIGFscmVhZHkgZG9uZSB0aGlz
IHdheS4KKworICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdn
cmVnYXRlX3Jlc3VsdHMuaHRtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmpzOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwuCisgICAg
ICAgIChnZW5lcmF0ZVBhZ2UpOgorICAgICAgICAoaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKToK
KyAgICAgICAgKGh0bWxGb3JCdWlsZGVyKToKKyAgICAgICAgKHJhd1ZhbHVlc0hUTUwpOgorICAg
ICAgICAoY2hhcnRIVE1MKToKKyAgICAgICAgKGZpbHRlcmVkVmFsdWVzKToKKyAgICAgICAgKGNo
YXJ0KToKKyAgICAgICAgKGh0bWxGb3JSZXZpc2lvblJvd3MpOgorICAgICAgICAod3JhcEhUTUxJ
blRhYmxlKToKKyAgICAgICAgKGh0bWxGb3JTdW1tYXJ5VGFibGUpOgorICAgICAgICAodmFsdWVz
UGVyRXhwZWN0YXRpb24pOgorICAgICAgICAoaHRtbEZvclRlc3RUeXBlKToKKyAgICAgICAgKGh0
bWxGb3JUYWJsZVJvdyk6CisgICAgICAgIChleHRlbmRlZEVuY29kZSk6CisgICAgICAgICogVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmh0bWw6CisgICAgICAgICog
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmpzOiBDb3BpZWQgZnJv
bSBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbC4K
KyAgICAgICAgKGh1bWFuUmVhZGFibGVUaW1lKToKKyAgICAgICAgKGNvbnZlcnRUb1dlYlRyZWVt
YXBGb3JtYXQpOgorICAgICAgICAocmV2ZXJzZVNvcnRCeUF2ZXJhZ2UpOgorICAgICAgICAoZ2Vu
ZXJhdGVQYWdlKToKKyAgICAgICAgKGZvY3VzUGF0aCk6CisgICAgICAgICguc3dpdGNoLnJldHVy
bik6CisgICAgICAgIChoYW5kbGVRdWVyeVBhcmFtZXRlckNoYW5nZSk6CisgICAgICAgIChleHRy
YWN0TmFtZSk6CisgICAgICAgIChmdWxsTmFtZSk6CisgICAgICAgIChoYW5kbGVGb2N1cy4pOgor
ICAgICAgICAoaGFuZGxlRm9jdXMpOgorCiAyMDEzLTAzLTE4ICBNYXJrIFBpbGdyaW0gIDxwaWxn
cmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIENyZWF0ZSBXZWJGaWxlU3lz
dGVtVHlwZSBlbnVtIHRvIGFsbG93IGVhc2llciBmaWxlc3lzdGVtIHJlZmFjdG9yaW5nCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0
ZV9yZXN1bHRzLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwKaW5kZXggMzc5NzVkMjY3MDBhYmNiZjZhOTMyYjRmNzJi
NDVjZjY1MWNkNDU5MS4uZjllNWUzODZiM2ZkNTA3YmI4MGU5OWQwN2NlNTcxYjVhZjgwNTA0YyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dy
ZWdhdGVfcmVzdWx0cy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRh
c2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRtbApAQCAtNTUsMjUyICs1NSw3IEBAIGltZyB7
CiA8c2NyaXB0IHNyYz0ic3RyaW5nLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJkYXNoYm9h
cmRfYmFzZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0idWkuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLS8vIEBmaWxlb3ZlcnZpZXcgQ3JlYXRlcyBhIGRhc2hib2FyZCBmb3IgdHJhY2tpbmcg
bnVtYmVyIG9mIHBhc3Nlcy9mYWlsdXJlcyBwZXIgcnVuLgotLy8KLS8vIEN1cnJlbnRseSwgb25s
eSB3ZWJraXQgdGVzdHMgYXJlIHN1cHBvcnRlZCwgYnV0IGFkZGluZyBvdGhlciB0ZXN0IHR5cGVz
Ci0vLyBzaG91bGQganVzdCByZXF1aXJlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0vLyAgICAgLWdl
bmVyYXRlIHJlc3VsdHMuanNvbiBmb3IgdGhlc2UgdGVzdHMKLS8vICAgICAtY29weSB0aGVtIHRv
IHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbgotLy8gICAgIC1hZGQgdGhlIGJ1aWxkZXIgbmFtZSB0
byB0aGUgbGlzdCBvZiBidWlsZGVycyBpbiBkYXNoYm9hcmRfYmFzZS5qcy4KLQotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0vLyBNZXRob2RzIGFuZCBvYmplY3RzIGZyb20gZGFzaGJvYXJkX2Jhc2Uu
anMgdG8gb3ZlcnJpZGUuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLWZ1bmN0aW9uIGdlbmVyYXRl
UGFnZSgpCi17Ci0gICAgdmFyIGh0bWwgPSB1aS5odG1sLnRlc3RUeXBlU3dpdGNoZXIodHJ1ZSkg
KyAnPGJyPic7Ci0gICAgZm9yICh2YXIgYnVpbGRlciBpbiBjdXJyZW50QnVpbGRlcnMoKSkKLSAg
ICAgICAgaHRtbCArPSBodG1sRm9yQnVpbGRlcihidWlsZGVyKTsKLSAgICBkb2N1bWVudC5ib2R5
LmlubmVySFRNTCA9IGh0bWw7Ci19Ci0KLWZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFzaFBhcmFtZXRl
cihrZXksIHZhbHVlKQotewotICAgIHN3aXRjaChrZXkpIHsKLSAgICBjYXNlICdyYXdWYWx1ZXMn
OgotICAgICAgICBnX2N1cnJlbnRTdGF0ZVtrZXldID0gdmFsdWUgPT0gJ3RydWUnOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci19Ci0KLWdfZGVmYXVsdERhc2hib2FyZFNwZWNpZmljU3RhdGVWYWx1ZXMgPSB7Ci0gICAg
cmF3VmFsdWVzOiBmYWxzZQotfTsKLQotZnVuY3Rpb24gaHRtbEZvckJ1aWxkZXIoYnVpbGRlcikK
LXsKLSAgICB2YXIgcmVzdWx0cyA9IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXTsKLSAgICAv
LyBTb21lIGtleXMgd2VyZSBhZGRlZCBsYXRlciB0aGFuIG90aGVycywgc28gdGhleSBkb24ndCBo
YXZlIGFzIG1hbnkKLSAgICAvLyBidWlsZHMuIFVzZSB0aGUgc2hvcnRlc3QuCi0gICAgLy8gRklY
TUU6IE9uY2UgNTAwIHJ1bnMgaGF2ZSBmaW5pc2hlZCwgd2UgY2FuIGdldCByaWQgb2YgcGFzc2lu
ZyB0aGlzCi0gICAgLy8gYXJvdW5kIGFuZCBqdXN0IGFzc3VtZSBhbGwga2V5cyBoYXZlIHRoZSBz
YW1lIG51bWJlciBvZiBidWlsZGVycyBmb3IgYQotICAgIC8vIGdpdmVuIGJ1aWxkZXIuCi0gICAg
dmFyIG51bUNvbHVtbnMgPSByZXN1bHRzW0FMTF9GSVhBQkxFX0NPVU5UX0tFWV0ubGVuZ3RoOwot
ICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9Y29udGFpbmVyPjxoMj4nICsgYnVpbGRlciArICc8
L2gyPic7Ci0KLSAgICBpZiAoZ19jdXJyZW50U3RhdGUucmF3VmFsdWVzKQotICAgICAgICBodG1s
ICs9IHJhd1ZhbHVlc0hUTUwocmVzdWx0cywgbnVtQ29sdW1ucyk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIGh0bWwgKz0gJzxhIGhyZWY9InRpbWVsaW5lX2V4cGxvcmVyLmh0bWwnICsgKGxvY2F0aW9u
Lmhhc2ggPyBsb2NhdGlvbi5oYXNoICsgJyYnIDogJyMnKSArICdidWlsZGVyPScgKyBidWlsZGVy
ICsgJyI+JyArCi0gICAgICAgICAgICBjaGFydEhUTUwocmVzdWx0cywgbnVtQ29sdW1ucykgKyAn
PC9hPic7Ci0gICAgfQotCi0gICAgaHRtbCArPSAnPC9kaXY+JzsKLSAgICByZXR1cm4gaHRtbDsK
LX0KLQotZnVuY3Rpb24gcmF3VmFsdWVzSFRNTChyZXN1bHRzLCBudW1Db2x1bW5zKQotewotICAg
IHZhciBodG1sID0gaHRtbEZvclN1bW1hcnlUYWJsZShyZXN1bHRzLCBudW1Db2x1bW5zKSArCi0g
ICAgICAgIGh0bWxGb3JUZXN0VHlwZShyZXN1bHRzLCBGSVhBQkxFX0NPVU5UU19LRVksIEZJWEFC
TEVfREVTQ1JJUFRJT04sIG51bUNvbHVtbnMpOwotICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRz
KCkpIHsKLSAgICAgICAgaHRtbCArPSBodG1sRm9yVGVzdFR5cGUocmVzdWx0cywgREVGRVJSRURf
Q09VTlRTX0tFWSwgREVGRVJSRURfREVTQ1JJUFRJT04sIG51bUNvbHVtbnMpICsKLSAgICAgICAg
ICAgIGh0bWxGb3JUZXN0VHlwZShyZXN1bHRzLCBXT05URklYX0NPVU5UU19LRVksIFdPTlRGSVhf
REVTQ1JJUFRJT04sIG51bUNvbHVtbnMpOwotICAgIH0KLSAgICByZXR1cm4gaHRtbDsKLX0KLQot
ZnVuY3Rpb24gY2hhcnRIVE1MKHJlc3VsdHMsIG51bUNvbHVtbnMpCi17Ci0gICAgdmFyIHNob3Vs
ZFNob3dXZWJLaXRSZXZpc2lvbnMgPSBpc1RpcE9mVHJlZVdlYktpdEJ1aWxkZXIoKTsKLSAgICB2
YXIgcmV2aXNpb25LZXkgPSBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID8gV0VCS0lUX1JFVklT
SU9OU19LRVkgOiBDSFJPTUVfUkVWSVNJT05TX0tFWTsKLSAgICB2YXIgc3RhcnRSZXZpc2lvbiA9
IHJlc3VsdHNbcmV2aXNpb25LZXldW251bUNvbHVtbnMgLSAxXTsKLSAgICB2YXIgZW5kUmV2aXNp
b24gPSByZXN1bHRzW3JldmlzaW9uS2V5XVswXTsKLSAgICB2YXIgcmV2aXNpb25MYWJlbCA9IHNo
b3VsZFNob3dXZWJLaXRSZXZpc2lvbnMgPyAiV2ViS2l0IFJldmlzaW9uIiA6ICJDaHJvbWl1bSBS
ZXZpc2lvbiI7Ci0KLSAgICB2YXIgZml4YWJsZSA9IHJlc3VsdHNbRklYQUJMRV9DT1VOVF9LRVld
LnNsaWNlKDAsIG51bUNvbHVtbnMpOwotICAgIHZhciBodG1sID0gY2hhcnQoIlRvdGFsIGZhaWxp
bmciLCB7IiI6IGZpeGFibGV9LCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBlbmRSZXZp
c2lvbik7Ci0KLSAgICB2YXIgdmFsdWVzID0gdmFsdWVzUGVyRXhwZWN0YXRpb24ocmVzdWx0c1tG
SVhBQkxFX0NPVU5UU19LRVldLCBudW1Db2x1bW5zKTsKLSAgICAvLyBEb24ndCBjYXJlIGFib3V0
IG51bWJlciBvZiBwYXNzZXMgZm9yIHRoZSBjaGFydHMuCi0gICAgZGVsZXRlKHZhbHVlc1snUCdd
KTsKLQotICAgIHJldHVybiBodG1sICsgY2hhcnQoIkRldGFpbGVkIGJyZWFrZG93biIsIHZhbHVl
cywgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24pOwotfQotCi12YXIg
TEFCRUxfQ09MT1JTID0gWydGRjAwMDAnLCAnMDBGRjAwJywgJzAwMDBGRicsICcwMDAwMDAnLCAn
RkY2RUI0JywgJ0ZGQTgxMicsICc5QjMwRkYnLCAnMDBGRkNDJ107Ci0KLS8vIEZJWE1FOiBGaW5k
IGEgYmV0dGVyIHdheSB0byBleGNsdWRlIG91dGxpZXJzLiBUaGlzIGlzIGp1c3Qgc28gd2UgZXhj
bHVkZQotLy8gcnVucyB3aGVyZSBldmVyeSB0ZXN0IGZhaWxlZC4KLXZhciBNQVhfVkFMVUUgPSAx
MDAwMDsKLQotZnVuY3Rpb24gZmlsdGVyZWRWYWx1ZXModmFsdWVzLCBkZXNpcmVkTnVtYmVyT2ZQ
b2ludHMpCi17Ci0gICAgLy8gRmlsdGVyIG91dCB2YWx1ZXMgdG8gbWFrZSB0aGUgZ3JhcGggYSBi
aXQgbW9yZSByZWFkYWJsZSBhbmQgdG8ga2VlcCBVUkxzCi0gICAgLy8gZnJvbSBleGNlZWRpbmcg
dGhlIGJyb3dzZXJzIG1heCBsZW5ndGggcmVzdHJpY3Rpb24uCi0gICAgdmFyIGZpbHRlckFtb3Vu
dCA9IE1hdGguZmxvb3IodmFsdWVzLmxlbmd0aCAvIGRlc2lyZWROdW1iZXJPZlBvaW50cyk7Ci0g
ICAgaWYgKGZpbHRlckFtb3VudCA8IDEpCi0gICAgICAgIHJldHVybiB2YWx1ZXM7Ci0KLSAgICBy
ZXR1cm4gdmFsdWVzLmZpbHRlcihmdW5jdGlvbihlbGVtZW50LCBpbmRleCwgYXJyYXkpIHsKLSAg
ICAgICAgLy8gSW5jbHVkZSB0aGUgbW9zdCByZWNlbnQgYW5kIG9sZGVzdCB2YWx1ZXMgYW5kIGV4
Y2x1ZGUgb3V0bGllcnMuCi0gICAgICAgIHJldHVybiAoaW5kZXggJSBmaWx0ZXJBbW91bnQgPT0g
MCB8fCBpbmRleCA9PSBhcnJheS5sZW5ndGggLSAxKSAmJiAoYXJyYXlbaW5kZXhdIDwgTUFYX1ZB
TFVFICYmIGFycmF5W2luZGV4XSAhPSAwKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gY2hhcnRV
cmwodGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNp
b24sIGRlc2lyZWROdW1iZXJPZlBvaW50cykgewotICAgIHZhciBtYXhWYWx1ZSA9IDA7Ci0gICAg
Zm9yICh2YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVzKQotICAgICAgICBtYXhWYWx1ZSA9IE1hdGgu
bWF4KG1heFZhbHVlLCBNYXRoLm1heC5hcHBseShudWxsLCBmaWx0ZXJlZFZhbHVlcyh2YWx1ZXNb
ZXhwZWN0YXRpb25dLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpKSk7Ci0KLSAgICB2YXIgY2hhcnRE
YXRhID0gJyc7Ci0gICAgdmFyIGxhYmVscyA9ICcnOwotICAgIHZhciBudW1MYWJlbHMgPSAwOwot
Ci0gICAgdmFyIGZpcnN0ID0gdHJ1ZTsKLSAgICBmb3IgKHZhciBleHBlY3RhdGlvbiBpbiB2YWx1
ZXMpIHsKLSAgICAgICAgY2hhcnREYXRhICs9IChmaXJzdCA/ICdlOicgOiAnLCcpICsgZXh0ZW5k
ZWRFbmNvZGUoZmlsdGVyZWRWYWx1ZXModmFsdWVzW2V4cGVjdGF0aW9uXSwgZGVzaXJlZE51bWJl
ck9mUG9pbnRzKS5yZXZlcnNlKCksIG1heFZhbHVlKTsKLQotICAgICAgICBpZiAoZXhwZWN0YXRp
b24pIHsKLSAgICAgICAgICAgIG51bUxhYmVscysrOwotICAgICAgICAgICAgbGFiZWxzICs9IChm
aXJzdCA/ICcnIDogJ3wnKSArIGV4cGVjdGF0aW9uc01hcCgpW2V4cGVjdGF0aW9uXTsKLSAgICAg
ICAgfQotICAgICAgICBmaXJzdCA9IGZhbHNlOwotICAgIH0KLQotICAgIHZhciB1cmwgPSAiaHR0
cDovL2NoYXJ0LmFwaXMuZ29vZ2xlLmNvbS9jaGFydD9jaHQ9bGMmY2hzPTYwMHg0MDAmY2hkPSIg
KwotICAgICAgICAgICAgY2hhcnREYXRhICsgIiZjaGc9MTUsMTUsMSwzJmNoeHQ9eCx4LHkmY2h4
bD0xOnx8IiArIHJldmlzaW9uTGFiZWwgKwotICAgICAgICAgICAgInwmY2h4cj0wLCIgKyBzdGFy
dFJldmlzaW9uICsgIiwiICsgZW5kUmV2aXNpb24gKyAifDIsMCwiICsgbWF4VmFsdWUgKyAiJmNo
dHQ9IiArIHRpdGxlOwotCi0KLSAgICBpZiAobGFiZWxzKQotICAgICAgICB1cmwgKz0gIiZjaGRs
PSIgKyBsYWJlbHMgKyAiJmNoY289IiArIExBQkVMX0NPTE9SUy5zbGljZSgwLCBudW1MYWJlbHMp
LmpvaW4oJywnKTsKLSAgICByZXR1cm4gdXJsOwotfQotCi1mdW5jdGlvbiBjaGFydCh0aXRsZSwg
dmFsdWVzLCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbikKLXsKLSAg
ICB2YXIgZGVzaXJlZE51bWJlck9mUG9pbnRzID0gNDAwOwotICAgIHZhciB1cmwgPSBjaGFydFVy
bCh0aXRsZSwgdmFsdWVzLCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lv
biwgZGVzaXJlZE51bWJlck9mUG9pbnRzKTsKLQotICAgIHdoaWxlICh1cmwubGVuZ3RoID49IDIw
NDgpIHsKLSAgICAgICAgLy8gRGVjcmVhc2UgdGhlIGRlc2lyZWQgbnVtYmVyIG9mIHBvaW50cyBn
cmFkdWFsbHkgdW50aWwgd2UgZ2V0IGEgVVJMIHRoYXQKLSAgICAgICAgLy8gZG9lc24ndCBleGNl
ZWQgY2hhcnRzZXJ2ZXIncyBtYXggVVJMIGxlbmd0aC4KLSAgICAgICAgZGVzaXJlZE51bWJlck9m
UG9pbnRzID0gMyAvIDQgKiBkZXNpcmVkTnVtYmVyT2ZQb2ludHM7Ci0gICAgICAgIHVybCA9IGNo
YXJ0VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsIHN0YXJ0UmV2aXNpb24sIGVuZFJl
dmlzaW9uLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpOwotICAgIH0KLQotICAgIHJldHVybiAnPGlt
ZyBzcmM9IicgKyB1cmwgKyAnIj4nOwotfQotCi1mdW5jdGlvbiBodG1sRm9yUmV2aXNpb25Sb3dz
KHJlc3VsdHMsIG51bUNvbHVtbnMpCi17Ci0gICAgcmV0dXJuIGh0bWxGb3JUYWJsZVJvdygnV2Vi
S2l0IFJldmlzaW9uJywgcmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV0uc2xpY2UoMCwgbnVt
Q29sdW1ucykpICsKLSAgICAgICAgaHRtbEZvclRhYmxlUm93KCdDaHJvbWUgUmV2aXNpb24nLCBy
ZXN1bHRzW0NIUk9NRV9SRVZJU0lPTlNfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKSk7Ci19Ci0K
LWZ1bmN0aW9uIHdyYXBIVE1MSW5UYWJsZShkZXNjcmlwdGlvbiwgaHRtbCkKLXsKLSAgICByZXR1
cm4gJzxoMz4nICsgZGVzY3JpcHRpb24gKyAnPC9oMz48dGFibGU+PHRib2R5PicgKyBodG1sICsg
JzwvdGJvZHk+PC90YWJsZT4nOwotfQotCi1mdW5jdGlvbiBodG1sRm9yU3VtbWFyeVRhYmxlKHJl
c3VsdHMsIG51bUNvbHVtbnMpCi17Ci0gICAgdmFyIHBlcmNlbnQgPSBbXTsKLSAgICB2YXIgZml4
YWJsZSA9IHJlc3VsdHNbRklYQUJMRV9DT1VOVF9LRVldLnNsaWNlKDAsIG51bUNvbHVtbnMpOwot
ICAgIHZhciBhbGxGaXhhYmxlID0gcmVzdWx0c1tBTExfRklYQUJMRV9DT1VOVF9LRVldLnNsaWNl
KDAsIG51bUNvbHVtbnMpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ29sdW1uczsgaSsr
KSB7Ci0gICAgICAgIHZhciBwZXJjZW50YWdlID0gMTAwICogKGFsbEZpeGFibGVbaV0gLSBmaXhh
YmxlW2ldKSAvIGFsbEZpeGFibGVbaV07Ci0gICAgICAgIC8vIFJvdW5kIHRvIHRoZSBuZWFyZXN0
IHRlbnRoIG9mIGEgcGVyY2VudC4KLSAgICAgICAgcGVyY2VudC5wdXNoKE1hdGgucm91bmQocGVy
Y2VudGFnZSAqIDEwKSAvIDEwICsgJyUnKTsKLSAgICB9Ci0gICAgdmFyIGh0bWwgPSBodG1sRm9y
UmV2aXNpb25Sb3dzKHJlc3VsdHMsIG51bUNvbHVtbnMpICsKLSAgICAgICAgaHRtbEZvclRhYmxl
Um93KCdQZXJjZW50IHBhc3NlZCcsIHBlcmNlbnQpICsKLSAgICAgICAgaHRtbEZvclRhYmxlUm93
KCdGYWlsdXJlcyAoZGVkdXBlZCknLCBmaXhhYmxlKSArCi0gICAgICAgIGh0bWxGb3JUYWJsZVJv
dygnRml4YWJsZSBUZXN0cycsIGFsbEZpeGFibGUpOwotICAgIHJldHVybiB3cmFwSFRNTEluVGFi
bGUoJ1N1bW1hcnknLCBodG1sKTsKLX0KLQotZnVuY3Rpb24gdmFsdWVzUGVyRXhwZWN0YXRpb24o
Y291bnRzLCBudW1Db2x1bW5zKQotewotICAgIHZhciB2YWx1ZXMgPSB7fTsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG51bUNvbHVtbnM7IGkrKykgewotICAgICAgICBmb3IgKHZhciBleHBlY3Rh
dGlvbiBpbiBleHBlY3RhdGlvbnNNYXAoKSkgewotICAgICAgICAgICAgaWYgKGV4cGVjdGF0aW9u
IGluIGNvdW50c1tpXSkgewotICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IGNvdW50c1tpXVtl
eHBlY3RhdGlvbl07Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZXNbZXhwZWN0YXRpb25dKQot
ICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbZXhwZWN0YXRpb25dID0gW107Ci0gICAgICAgICAg
ICAgICAgdmFsdWVzW2V4cGVjdGF0aW9uXS5wdXNoKGNvdW50KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdmFsdWVzOwotfQotCi1mdW5jdGlvbiBodG1sRm9y
VGVzdFR5cGUocmVzdWx0cywga2V5LCBkZXNjcmlwdGlvbiwgbnVtQ29sdW1ucykKLXsKLSAgICB2
YXIgY291bnRzID0gcmVzdWx0c1trZXldOwotICAgIHZhciBodG1sID0gaHRtbEZvclJldmlzaW9u
Um93cyhyZXN1bHRzLCBudW1Db2x1bW5zKTsKLSAgICB2YXIgdmFsdWVzID0gdmFsdWVzUGVyRXhw
ZWN0YXRpb24oY291bnRzLCBudW1Db2x1bW5zKTsKLSAgICBmb3IgKHZhciBleHBlY3RhdGlvbiBp
biB2YWx1ZXMpCi0gICAgICAgIGh0bWwgKz0gaHRtbEZvclRhYmxlUm93KGV4cGVjdGF0aW9uc01h
cCgpW2V4cGVjdGF0aW9uXSwgdmFsdWVzW2V4cGVjdGF0aW9uXSk7Ci0gICAgcmV0dXJuIHdyYXBI
VE1MSW5UYWJsZShkZXNjcmlwdGlvbiwgaHRtbCk7Ci19Ci0KLWZ1bmN0aW9uIGh0bWxGb3JUYWJs
ZVJvdyhjb2x1bW5OYW1lLCB2YWx1ZXMpCi17Ci0gICAgcmV0dXJuICc8dHI+PHRkPicgKyBjb2x1
bW5OYW1lICsgJzwvdGQ+PHRkPicgKyB2YWx1ZXMuam9pbignPC90ZD48dGQ+JykgKyAnPC90ZD48
L3RyPic7Ci19Ci0KLS8vIFRha2VuIGZyb20gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hcGlzL2No
YXJ0L2RvY3MvZGF0YV9mb3JtYXRzLmh0bWwuCi1mdW5jdGlvbiBleHRlbmRlZEVuY29kZShhcnJW
YWxzLCBtYXhWYWwpCi17Ci0gICAgdmFyIG1hcCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS0uJzsKLSAgICB2YXIgbWFwTGVu
Z3RoID0gbWFwLmxlbmd0aDsKLSAgICB2YXIgbWFwTGVuZ3RoU3F1YXJlZCA9IG1hcExlbmd0aCAq
IG1hcExlbmd0aDsKLQotICAgIHZhciBjaGFydERhdGEgPSAnJzsKLQotICAgIGZvciAodmFyIGkg
PSAwLCBsZW4gPSBhcnJWYWxzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIC8vIElu
IGNhc2UgdGhlIGFycmF5IHZhbHMgd2VyZSB0cmFuc2xhdGVkIHRvIHN0cmluZ3MuCi0gICAgICAg
IHZhciBudW1lcmljVmFsID0gbmV3IE51bWJlcihhcnJWYWxzW2ldKTsKLSAgICAgICAgLy8gU2Nh
bGUgdGhlIHZhbHVlIHRvIG1heFZhbC4KLSAgICAgICAgdmFyIHNjYWxlZFZhbCA9IE1hdGguZmxv
b3IobWFwTGVuZ3RoU3F1YXJlZCAqIG51bWVyaWNWYWwgLyBtYXhWYWwpOwotCi0gICAgICAgIGlm
KHNjYWxlZFZhbCA+IG1hcExlbmd0aFNxdWFyZWQgLSAxKQotICAgICAgICAgICAgY2hhcnREYXRh
ICs9ICIuLiI7Ci0gICAgICAgIGVsc2UgaWYgKHNjYWxlZFZhbCA8IDApCi0gICAgICAgICAgICBj
aGFydERhdGEgKz0gJ19fJzsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBDYWxjdWxh
dGUgZmlyc3QgYW5kIHNlY29uZCBkaWdpdHMgYW5kIGFkZCB0aGVtIHRvIHRoZSBvdXRwdXQuCi0g
ICAgICAgICAgICB2YXIgcXVvdGllbnQgPSBNYXRoLmZsb29yKHNjYWxlZFZhbCAvIG1hcExlbmd0
aCk7Ci0gICAgICAgICAgICB2YXIgcmVtYWluZGVyID0gc2NhbGVkVmFsIC0gbWFwTGVuZ3RoICog
cXVvdGllbnQ7Ci0gICAgICAgICAgICBjaGFydERhdGEgKz0gbWFwLmNoYXJBdChxdW90aWVudCkg
KyBtYXAuY2hhckF0KHJlbWFpbmRlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
Y2hhcnREYXRhOwotfQotCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9u
KCkgewotICAgIHZhciByZXNvdXJjZUxvYWRlciA9IG5ldyBsb2FkZXIuTG9hZGVyKGludGlhbGl6
ZUhpc3RvcnkpOwotICAgIHJlc291cmNlTG9hZGVyLmxvYWQoKTsKLX0sIGZhbHNlKTsKLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9ImFnZ3JlZ2F0ZV9yZXN1bHRzLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PjwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuanMgYi9Ub29scy9UZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRhZjEzMjc4YmRkYjVmNTUzMTg1ODMyNTJiM2M0ODY2YjU2ZWJmNDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3Jl
Z2F0ZV9yZXN1bHRzLmpzCkBAIC0wLDAgKzEsMjcyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBAZmlsZW92ZXJ2aWV3IENyZWF0ZXMgYSBkYXNo
Ym9hcmQgZm9yIHRyYWNraW5nIG51bWJlciBvZiBwYXNzZXMvZmFpbHVyZXMgcGVyIHJ1bi4KKy8v
CisvLyBDdXJyZW50bHksIG9ubHkgd2Via2l0IHRlc3RzIGFyZSBzdXBwb3J0ZWQsIGJ1dCBhZGRp
bmcgb3RoZXIgdGVzdCB0eXBlcworLy8gc2hvdWxkIGp1c3QgcmVxdWlyZSB0aGUgZm9sbG93aW5n
IHN0ZXBzOgorLy8gICAgIC1nZW5lcmF0ZSByZXN1bHRzLmpzb24gZm9yIHRoZXNlIHRlc3RzCisv
LyAgICAgLWNvcHkgdGhlbSB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24KKy8vICAgICAtYWRk
IHRoZSBidWlsZGVyIG5hbWUgdG8gdGhlIGxpc3Qgb2YgYnVpbGRlcnMgaW4gZGFzaGJvYXJkX2Jh
c2UuanMuCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gTWV0aG9kcyBhbmQgb2JqZWN0cyBm
cm9tIGRhc2hib2FyZF9iYXNlLmpzIHRvIG92ZXJyaWRlLgorLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CitmdW5jdGlvbiBnZW5lcmF0ZVBhZ2UoKQoreworICAgIHZhciBodG1sID0gdWkuaHRtbC50ZXN0
VHlwZVN3aXRjaGVyKHRydWUpICsgJzxicj4nOworICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gY3Vy
cmVudEJ1aWxkZXJzKCkpCisgICAgICAgIGh0bWwgKz0gaHRtbEZvckJ1aWxkZXIoYnVpbGRlcik7
CisgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBodG1sOworfQorCitmdW5jdGlvbiBoYW5k
bGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKK3sKKyAgICBzd2l0Y2goa2V5KSB7Cisg
ICAgY2FzZSAncmF3VmFsdWVzJzoKKyAgICAgICAgZ19jdXJyZW50U3RhdGVba2V5XSA9IHZhbHVl
ID09ICd0cnVlJzsKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitnX2RlZmF1bHREYXNoYm9hcmRTcGVjaWZpY1N0
YXRlVmFsdWVzID0geworICAgIHJhd1ZhbHVlczogZmFsc2UKK307CisKK2Z1bmN0aW9uIGh0bWxG
b3JCdWlsZGVyKGJ1aWxkZXIpCit7CisgICAgdmFyIHJlc3VsdHMgPSBnX3Jlc3VsdHNCeUJ1aWxk
ZXJbYnVpbGRlcl07CisgICAgLy8gU29tZSBrZXlzIHdlcmUgYWRkZWQgbGF0ZXIgdGhhbiBvdGhl
cnMsIHNvIHRoZXkgZG9uJ3QgaGF2ZSBhcyBtYW55CisgICAgLy8gYnVpbGRzLiBVc2UgdGhlIHNo
b3J0ZXN0LgorICAgIC8vIEZJWE1FOiBPbmNlIDUwMCBydW5zIGhhdmUgZmluaXNoZWQsIHdlIGNh
biBnZXQgcmlkIG9mIHBhc3NpbmcgdGhpcworICAgIC8vIGFyb3VuZCBhbmQganVzdCBhc3N1bWUg
YWxsIGtleXMgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgYnVpbGRlcnMgZm9yIGEKKyAgICAvLyBn
aXZlbiBidWlsZGVyLgorICAgIHZhciBudW1Db2x1bW5zID0gcmVzdWx0c1tBTExfRklYQUJMRV9D
T1VOVF9LRVldLmxlbmd0aDsKKyAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPWNvbnRhaW5lcj48
aDI+JyArIGJ1aWxkZXIgKyAnPC9oMj4nOworCisgICAgaWYgKGdfY3VycmVudFN0YXRlLnJhd1Zh
bHVlcykKKyAgICAgICAgaHRtbCArPSByYXdWYWx1ZXNIVE1MKHJlc3VsdHMsIG51bUNvbHVtbnMp
OworICAgIGVsc2UgeworICAgICAgICBodG1sICs9ICc8YSBocmVmPSJ0aW1lbGluZV9leHBsb3Jl
ci5odG1sJyArIChsb2NhdGlvbi5oYXNoID8gbG9jYXRpb24uaGFzaCArICcmJyA6ICcjJykgKyAn
YnVpbGRlcj0nICsgYnVpbGRlciArICciPicgKworICAgICAgICAgICAgY2hhcnRIVE1MKHJlc3Vs
dHMsIG51bUNvbHVtbnMpICsgJzwvYT4nOworICAgIH0KKworICAgIGh0bWwgKz0gJzwvZGl2Pic7
CisgICAgcmV0dXJuIGh0bWw7Cit9CisKK2Z1bmN0aW9uIHJhd1ZhbHVlc0hUTUwocmVzdWx0cywg
bnVtQ29sdW1ucykKK3sKKyAgICB2YXIgaHRtbCA9IGh0bWxGb3JTdW1tYXJ5VGFibGUocmVzdWx0
cywgbnVtQ29sdW1ucykgKworICAgICAgICBodG1sRm9yVGVzdFR5cGUocmVzdWx0cywgRklYQUJM
RV9DT1VOVFNfS0VZLCBGSVhBQkxFX0RFU0NSSVBUSU9OLCBudW1Db2x1bW5zKTsKKyAgICBpZiAo
aXNMYXlvdXRUZXN0UmVzdWx0cygpKSB7CisgICAgICAgIGh0bWwgKz0gaHRtbEZvclRlc3RUeXBl
KHJlc3VsdHMsIERFRkVSUkVEX0NPVU5UU19LRVksIERFRkVSUkVEX0RFU0NSSVBUSU9OLCBudW1D
b2x1bW5zKSArCisgICAgICAgICAgICBodG1sRm9yVGVzdFR5cGUocmVzdWx0cywgV09OVEZJWF9D
T1VOVFNfS0VZLCBXT05URklYX0RFU0NSSVBUSU9OLCBudW1Db2x1bW5zKTsKKyAgICB9CisgICAg
cmV0dXJuIGh0bWw7Cit9CisKK2Z1bmN0aW9uIGNoYXJ0SFRNTChyZXN1bHRzLCBudW1Db2x1bW5z
KQoreworICAgIHZhciBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID0gaXNUaXBPZlRyZWVXZWJL
aXRCdWlsZGVyKCk7CisgICAgdmFyIHJldmlzaW9uS2V5ID0gc2hvdWxkU2hvd1dlYktpdFJldmlz
aW9ucyA/IFdFQktJVF9SRVZJU0lPTlNfS0VZIDogQ0hST01FX1JFVklTSU9OU19LRVk7CisgICAg
dmFyIHN0YXJ0UmV2aXNpb24gPSByZXN1bHRzW3JldmlzaW9uS2V5XVtudW1Db2x1bW5zIC0gMV07
CisgICAgdmFyIGVuZFJldmlzaW9uID0gcmVzdWx0c1tyZXZpc2lvbktleV1bMF07CisgICAgdmFy
IHJldmlzaW9uTGFiZWwgPSBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID8gIldlYktpdCBSZXZp
c2lvbiIgOiAiQ2hyb21pdW0gUmV2aXNpb24iOworCisgICAgdmFyIGZpeGFibGUgPSByZXN1bHRz
W0ZJWEFCTEVfQ09VTlRfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKTsKKyAgICB2YXIgaHRtbCA9
IGNoYXJ0KCJUb3RhbCBmYWlsaW5nIiwgeyIiOiBmaXhhYmxlfSwgcmV2aXNpb25MYWJlbCwgc3Rh
cnRSZXZpc2lvbiwgZW5kUmV2aXNpb24pOworCisgICAgdmFyIHZhbHVlcyA9IHZhbHVlc1BlckV4
cGVjdGF0aW9uKHJlc3VsdHNbRklYQUJMRV9DT1VOVFNfS0VZXSwgbnVtQ29sdW1ucyk7CisgICAg
Ly8gRG9uJ3QgY2FyZSBhYm91dCBudW1iZXIgb2YgcGFzc2VzIGZvciB0aGUgY2hhcnRzLgorICAg
IGRlbGV0ZSh2YWx1ZXNbJ1AnXSk7CisKKyAgICByZXR1cm4gaHRtbCArIGNoYXJ0KCJEZXRhaWxl
ZCBicmVha2Rvd24iLCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsIHN0YXJ0UmV2aXNpb24sIGVuZFJl
dmlzaW9uKTsKK30KKwordmFyIExBQkVMX0NPTE9SUyA9IFsnRkYwMDAwJywgJzAwRkYwMCcsICcw
MDAwRkYnLCAnMDAwMDAwJywgJ0ZGNkVCNCcsICdGRkE4MTInLCAnOUIzMEZGJywgJzAwRkZDQydd
OworCisvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gZXhjbHVkZSBvdXRsaWVycy4gVGhp
cyBpcyBqdXN0IHNvIHdlIGV4Y2x1ZGUKKy8vIHJ1bnMgd2hlcmUgZXZlcnkgdGVzdCBmYWlsZWQu
Cit2YXIgTUFYX1ZBTFVFID0gMTAwMDA7CisKK2Z1bmN0aW9uIGZpbHRlcmVkVmFsdWVzKHZhbHVl
cywgZGVzaXJlZE51bWJlck9mUG9pbnRzKQoreworICAgIC8vIEZpbHRlciBvdXQgdmFsdWVzIHRv
IG1ha2UgdGhlIGdyYXBoIGEgYml0IG1vcmUgcmVhZGFibGUgYW5kIHRvIGtlZXAgVVJMcworICAg
IC8vIGZyb20gZXhjZWVkaW5nIHRoZSBicm93c2VycyBtYXggbGVuZ3RoIHJlc3RyaWN0aW9uLgor
ICAgIHZhciBmaWx0ZXJBbW91bnQgPSBNYXRoLmZsb29yKHZhbHVlcy5sZW5ndGggLyBkZXNpcmVk
TnVtYmVyT2ZQb2ludHMpOworICAgIGlmIChmaWx0ZXJBbW91bnQgPCAxKQorICAgICAgICByZXR1
cm4gdmFsdWVzOworCisgICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIoZnVuY3Rpb24oZWxlbWVudCwg
aW5kZXgsIGFycmF5KSB7CisgICAgICAgIC8vIEluY2x1ZGUgdGhlIG1vc3QgcmVjZW50IGFuZCBv
bGRlc3QgdmFsdWVzIGFuZCBleGNsdWRlIG91dGxpZXJzLgorICAgICAgICByZXR1cm4gKGluZGV4
ICUgZmlsdGVyQW1vdW50ID09IDAgfHwgaW5kZXggPT0gYXJyYXkubGVuZ3RoIC0gMSkgJiYgKGFy
cmF5W2luZGV4XSA8IE1BWF9WQUxVRSAmJiBhcnJheVtpbmRleF0gIT0gMCk7CisgICAgfSk7Cit9
CisKK2Z1bmN0aW9uIGNoYXJ0VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsIHN0YXJ0
UmV2aXNpb24sIGVuZFJldmlzaW9uLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpIHsKKyAgICB2YXIg
bWF4VmFsdWUgPSAwOworICAgIGZvciAodmFyIGV4cGVjdGF0aW9uIGluIHZhbHVlcykKKyAgICAg
ICAgbWF4VmFsdWUgPSBNYXRoLm1heChtYXhWYWx1ZSwgTWF0aC5tYXguYXBwbHkobnVsbCwgZmls
dGVyZWRWYWx1ZXModmFsdWVzW2V4cGVjdGF0aW9uXSwgZGVzaXJlZE51bWJlck9mUG9pbnRzKSkp
OworCisgICAgdmFyIGNoYXJ0RGF0YSA9ICcnOworICAgIHZhciBsYWJlbHMgPSAnJzsKKyAgICB2
YXIgbnVtTGFiZWxzID0gMDsKKworICAgIHZhciBmaXJzdCA9IHRydWU7CisgICAgZm9yICh2YXIg
ZXhwZWN0YXRpb24gaW4gdmFsdWVzKSB7CisgICAgICAgIGNoYXJ0RGF0YSArPSAoZmlyc3QgPyAn
ZTonIDogJywnKSArIGV4dGVuZGVkRW5jb2RlKGZpbHRlcmVkVmFsdWVzKHZhbHVlc1tleHBlY3Rh
dGlvbl0sIGRlc2lyZWROdW1iZXJPZlBvaW50cykucmV2ZXJzZSgpLCBtYXhWYWx1ZSk7CisKKyAg
ICAgICAgaWYgKGV4cGVjdGF0aW9uKSB7CisgICAgICAgICAgICBudW1MYWJlbHMrKzsKKyAgICAg
ICAgICAgIGxhYmVscyArPSAoZmlyc3QgPyAnJyA6ICd8JykgKyBleHBlY3RhdGlvbnNNYXAoKVtl
eHBlY3RhdGlvbl07CisgICAgICAgIH0KKyAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICB9CisK
KyAgICB2YXIgdXJsID0gImh0dHA6Ly9jaGFydC5hcGlzLmdvb2dsZS5jb20vY2hhcnQ/Y2h0PWxj
JmNocz02MDB4NDAwJmNoZD0iICsKKyAgICAgICAgICAgIGNoYXJ0RGF0YSArICImY2hnPTE1LDE1
LDEsMyZjaHh0PXgseCx5JmNoeGw9MTp8fCIgKyByZXZpc2lvbkxhYmVsICsKKyAgICAgICAgICAg
ICJ8JmNoeHI9MCwiICsgc3RhcnRSZXZpc2lvbiArICIsIiArIGVuZFJldmlzaW9uICsgInwyLDAs
IiArIG1heFZhbHVlICsgIiZjaHR0PSIgKyB0aXRsZTsKKworCisgICAgaWYgKGxhYmVscykKKyAg
ICAgICAgdXJsICs9ICImY2hkbD0iICsgbGFiZWxzICsgIiZjaGNvPSIgKyBMQUJFTF9DT0xPUlMu
c2xpY2UoMCwgbnVtTGFiZWxzKS5qb2luKCcsJyk7CisgICAgcmV0dXJuIHVybDsKK30KKworZnVu
Y3Rpb24gY2hhcnQodGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwg
ZW5kUmV2aXNpb24pCit7CisgICAgdmFyIGRlc2lyZWROdW1iZXJPZlBvaW50cyA9IDQwMDsKKyAg
ICB2YXIgdXJsID0gY2hhcnRVcmwodGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3RhcnRS
ZXZpc2lvbiwgZW5kUmV2aXNpb24sIGRlc2lyZWROdW1iZXJPZlBvaW50cyk7CisKKyAgICB3aGls
ZSAodXJsLmxlbmd0aCA+PSAyMDQ4KSB7CisgICAgICAgIC8vIERlY3JlYXNlIHRoZSBkZXNpcmVk
IG51bWJlciBvZiBwb2ludHMgZ3JhZHVhbGx5IHVudGlsIHdlIGdldCBhIFVSTCB0aGF0CisgICAg
ICAgIC8vIGRvZXNuJ3QgZXhjZWVkIGNoYXJ0c2VydmVyJ3MgbWF4IFVSTCBsZW5ndGguCisgICAg
ICAgIGRlc2lyZWROdW1iZXJPZlBvaW50cyA9IDMgLyA0ICogZGVzaXJlZE51bWJlck9mUG9pbnRz
OworICAgICAgICB1cmwgPSBjaGFydFVybCh0aXRsZSwgdmFsdWVzLCByZXZpc2lvbkxhYmVsLCBz
dGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbiwgZGVzaXJlZE51bWJlck9mUG9pbnRzKTsKKyAgICB9
CisKKyAgICByZXR1cm4gJzxpbWcgc3JjPSInICsgdXJsICsgJyI+JzsKK30KKworZnVuY3Rpb24g
aHRtbEZvclJldmlzaW9uUm93cyhyZXN1bHRzLCBudW1Db2x1bW5zKQoreworICAgIHJldHVybiBo
dG1sRm9yVGFibGVSb3coJ1dlYktpdCBSZXZpc2lvbicsIHJlc3VsdHNbV0VCS0lUX1JFVklTSU9O
U19LRVldLnNsaWNlKDAsIG51bUNvbHVtbnMpKSArCisgICAgICAgIGh0bWxGb3JUYWJsZVJvdygn
Q2hyb21lIFJldmlzaW9uJywgcmVzdWx0c1tDSFJPTUVfUkVWSVNJT05TX0tFWV0uc2xpY2UoMCwg
bnVtQ29sdW1ucykpOworfQorCitmdW5jdGlvbiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24s
IGh0bWwpCit7CisgICAgcmV0dXJuICc8aDM+JyArIGRlc2NyaXB0aW9uICsgJzwvaDM+PHRhYmxl
Pjx0Ym9keT4nICsgaHRtbCArICc8L3Rib2R5PjwvdGFibGU+JzsKK30KKworZnVuY3Rpb24gaHRt
bEZvclN1bW1hcnlUYWJsZShyZXN1bHRzLCBudW1Db2x1bW5zKQoreworICAgIHZhciBwZXJjZW50
ID0gW107CisgICAgdmFyIGZpeGFibGUgPSByZXN1bHRzW0ZJWEFCTEVfQ09VTlRfS0VZXS5zbGlj
ZSgwLCBudW1Db2x1bW5zKTsKKyAgICB2YXIgYWxsRml4YWJsZSA9IHJlc3VsdHNbQUxMX0ZJWEFC
TEVfQ09VTlRfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG51bUNvbHVtbnM7IGkrKykgeworICAgICAgICB2YXIgcGVyY2VudGFnZSA9IDEwMCAqIChh
bGxGaXhhYmxlW2ldIC0gZml4YWJsZVtpXSkgLyBhbGxGaXhhYmxlW2ldOworICAgICAgICAvLyBS
b3VuZCB0byB0aGUgbmVhcmVzdCB0ZW50aCBvZiBhIHBlcmNlbnQuCisgICAgICAgIHBlcmNlbnQu
cHVzaChNYXRoLnJvdW5kKHBlcmNlbnRhZ2UgKiAxMCkgLyAxMCArICclJyk7CisgICAgfQorICAg
IHZhciBodG1sID0gaHRtbEZvclJldmlzaW9uUm93cyhyZXN1bHRzLCBudW1Db2x1bW5zKSArCisg
ICAgICAgIGh0bWxGb3JUYWJsZVJvdygnUGVyY2VudCBwYXNzZWQnLCBwZXJjZW50KSArCisgICAg
ICAgIGh0bWxGb3JUYWJsZVJvdygnRmFpbHVyZXMgKGRlZHVwZWQpJywgZml4YWJsZSkgKworICAg
ICAgICBodG1sRm9yVGFibGVSb3coJ0ZpeGFibGUgVGVzdHMnLCBhbGxGaXhhYmxlKTsKKyAgICBy
ZXR1cm4gd3JhcEhUTUxJblRhYmxlKCdTdW1tYXJ5JywgaHRtbCk7Cit9CisKK2Z1bmN0aW9uIHZh
bHVlc1BlckV4cGVjdGF0aW9uKGNvdW50cywgbnVtQ29sdW1ucykKK3sKKyAgICB2YXIgdmFsdWVz
ID0ge307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1Db2x1bW5zOyBpKyspIHsKKyAgICAg
ICAgZm9yICh2YXIgZXhwZWN0YXRpb24gaW4gZXhwZWN0YXRpb25zTWFwKCkpIHsKKyAgICAgICAg
ICAgIGlmIChleHBlY3RhdGlvbiBpbiBjb3VudHNbaV0pIHsKKyAgICAgICAgICAgICAgICB2YXIg
Y291bnQgPSBjb3VudHNbaV1bZXhwZWN0YXRpb25dOworICAgICAgICAgICAgICAgIGlmICghdmFs
dWVzW2V4cGVjdGF0aW9uXSkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzW2V4cGVjdGF0aW9u
XSA9IFtdOworICAgICAgICAgICAgICAgIHZhbHVlc1tleHBlY3RhdGlvbl0ucHVzaChjb3VudCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHZhbHVlczsKK30K
KworZnVuY3Rpb24gaHRtbEZvclRlc3RUeXBlKHJlc3VsdHMsIGtleSwgZGVzY3JpcHRpb24sIG51
bUNvbHVtbnMpCit7CisgICAgdmFyIGNvdW50cyA9IHJlc3VsdHNba2V5XTsKKyAgICB2YXIgaHRt
bCA9IGh0bWxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVtQ29sdW1ucyk7CisgICAgdmFyIHZh
bHVlcyA9IHZhbHVlc1BlckV4cGVjdGF0aW9uKGNvdW50cywgbnVtQ29sdW1ucyk7CisgICAgZm9y
ICh2YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVzKQorICAgICAgICBodG1sICs9IGh0bWxGb3JUYWJs
ZVJvdyhleHBlY3RhdGlvbnNNYXAoKVtleHBlY3RhdGlvbl0sIHZhbHVlc1tleHBlY3RhdGlvbl0p
OworICAgIHJldHVybiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24sIGh0bWwpOworfQorCitm
dW5jdGlvbiBodG1sRm9yVGFibGVSb3coY29sdW1uTmFtZSwgdmFsdWVzKQoreworICAgIHJldHVy
biAnPHRyPjx0ZD4nICsgY29sdW1uTmFtZSArICc8L3RkPjx0ZD4nICsgdmFsdWVzLmpvaW4oJzwv
dGQ+PHRkPicpICsgJzwvdGQ+PC90cj4nOworfQorCisvLyBUYWtlbiBmcm9tIGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vYXBpcy9jaGFydC9kb2NzL2RhdGFfZm9ybWF0cy5odG1sLgorZnVuY3Rpb24g
ZXh0ZW5kZWRFbmNvZGUoYXJyVmFscywgbWF4VmFsKQoreworICAgIHZhciBtYXAgPSAnQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkt
Lic7CisgICAgdmFyIG1hcExlbmd0aCA9IG1hcC5sZW5ndGg7CisgICAgdmFyIG1hcExlbmd0aFNx
dWFyZWQgPSBtYXBMZW5ndGggKiBtYXBMZW5ndGg7CisKKyAgICB2YXIgY2hhcnREYXRhID0gJyc7
CisKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYXJyVmFscy5sZW5ndGg7IGkgPCBsZW47IGkr
KykgeworICAgICAgICAvLyBJbiBjYXNlIHRoZSBhcnJheSB2YWxzIHdlcmUgdHJhbnNsYXRlZCB0
byBzdHJpbmdzLgorICAgICAgICB2YXIgbnVtZXJpY1ZhbCA9IG5ldyBOdW1iZXIoYXJyVmFsc1tp
XSk7CisgICAgICAgIC8vIFNjYWxlIHRoZSB2YWx1ZSB0byBtYXhWYWwuCisgICAgICAgIHZhciBz
Y2FsZWRWYWwgPSBNYXRoLmZsb29yKG1hcExlbmd0aFNxdWFyZWQgKiBudW1lcmljVmFsIC8gbWF4
VmFsKTsKKworICAgICAgICBpZihzY2FsZWRWYWwgPiBtYXBMZW5ndGhTcXVhcmVkIC0gMSkKKyAg
ICAgICAgICAgIGNoYXJ0RGF0YSArPSAiLi4iOworICAgICAgICBlbHNlIGlmIChzY2FsZWRWYWwg
PCAwKQorICAgICAgICAgICAgY2hhcnREYXRhICs9ICdfXyc7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgLy8gQ2FsY3VsYXRlIGZpcnN0IGFuZCBzZWNvbmQgZGlnaXRzIGFuZCBhZGQgdGhl
bSB0byB0aGUgb3V0cHV0LgorICAgICAgICAgICAgdmFyIHF1b3RpZW50ID0gTWF0aC5mbG9vcihz
Y2FsZWRWYWwgLyBtYXBMZW5ndGgpOworICAgICAgICAgICAgdmFyIHJlbWFpbmRlciA9IHNjYWxl
ZFZhbCAtIG1hcExlbmd0aCAqIHF1b3RpZW50OworICAgICAgICAgICAgY2hhcnREYXRhICs9IG1h
cC5jaGFyQXQocXVvdGllbnQpICsgbWFwLmNoYXJBdChyZW1haW5kZXIpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIGNoYXJ0RGF0YTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVzb3VyY2VMb2FkZXIgPSBuZXcgbG9h
ZGVyLkxvYWRlcihpbnRpYWxpemVIaXN0b3J5KTsKKyAgICByZXNvdXJjZUxvYWRlci5sb2FkKCk7
Cit9LCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL3RyZWVtYXAuaHRtbCBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRh
c2hib2FyZHMvdHJlZW1hcC5odG1sCmluZGV4IGQwOTViZTdmYTY2MWNmYWJlOTk4ZDBmZmUyNjdh
ZDdjY2YwODI5NGQuLjI1YzRjNTBiMzNhMDUyNmI1ZDk5OTNiMDRlZmQyODIxYjQxZGU3ZTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1h
cC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJl
ZW1hcC5odG1sCkBAIC0xMTIsMjU4ICsxMTIsOSBAQCB0ZCB7CiA8c2NyaXB0IHNyYz0ic3RyaW5n
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJkYXNoYm9hcmRfYmFzZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0idWkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3RyZWVtYXAuanMn
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9J3dlYnRyZWVtYXAuanMnPjwvc2NyaXB0PgogCiA8ZGl2
IGlkPSdoZWFkZXItY29udGFpbmVyJz48L2Rpdj4KIDxwPkNsaWNrIG9uIGEgYm94IHRvIHpvb20g
aW4uIENsaWNrIG9uIHRoZSBvdXRlcm1vc3QgYm94IHRvIHpvb20gb3V0LiA8YSBocmVmPSIiIG9u
Y2xpY2s9InNob3dBdmVyYWdlcygpO3JldHVybiBmYWxzZTsiPlNob3cgYXZlcmFnZXM8L2E+PC9w
PgogPGRpdiBpZD0nbWFwJz48L2Rpdj4KLQotPHNjcmlwdD4KLXZhciBURVNUX1VSTF9CQVNFX1BB
VEggPSAiaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rLyI7Ci0K
LWZ1bmN0aW9uIGh1bWFuUmVhZGFibGVUaW1lKG1pbGxpc2Vjb25kcykKLXsKLSAgICBpZiAobWls
bGlzZWNvbmRzIDwgMTAwMCkKLSAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobWlsbGlzZWNvbmRz
KSArICdtcyc7Ci0gICAgZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgNjAwMDApCi0gICAgICAgIHJl
dHVybiAobWlsbGlzZWNvbmRzIC8gMTAwMCkudG9QcmVjaXNpb24oMikgKyAncyc7Ci0KLSAgICB2
YXIgbWludXRlcyA9IE1hdGguZmxvb3IobWlsbGlzZWNvbmRzIC8gNjAwMDApOwotICAgIHZhciBz
ZWNvbmRzID0gTWF0aC5mbG9vcigobWlsbGlzZWNvbmRzIC0gbWludXRlcyAqIDYwMDAwKSAvIDEw
MDApOwotICAgIHJldHVybiBtaW51dGVzICsgJ20nICsgc2Vjb25kcyArICdzJzsKLX0KLQotLy8g
VGhpcyBsb29rcyBsaWtlOgotLy8geyAiZGF0YSI6IHsiJGFyZWEiOiAoc3VtIG9mIGFsbCB0aW1p
bmdzKX0sCi0vLyAgICJuYW1lIjogKG5hbWUgb2YgdGhpcyBub2RlKSwKLS8vICAgImNoaWxkcmVu
IjogWyAoY2hpbGQgbm9kZXMsIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGlzKSBdIH0KLS8vIGNo
aWxkQ291bnQgaXMgYWRkZWQganVzdCB0byBiZSBpbmNsdWRlcyBpbiB0aGUgbm9kZSdzIG5hbWUK
LWZ1bmN0aW9uIGNvbnZlcnRUb1dlYlRyZWVtYXBGb3JtYXQodHJlZW5hbWUsIHRyZWUsIHBhdGgp
Ci17Ci0gICAgdmFyIHRvdGFsID0gMDsKLSAgICB2YXIgY2hpbGRDb3VudCA9IDA7Ci0gICAgdmFy
IGNoaWxkcmVuID0gW107Ci0gICAgZm9yICh2YXIgbmFtZSBpbiB0cmVlKSB7Ci0gICAgICAgIHZh
ciB0cmVlTm9kZSA9IHRyZWVbbmFtZV07Ci0gICAgICAgIGlmICh0eXBlb2YgdHJlZU5vZGUgPT0g
Im51bWJlciIpIHsKLSAgICAgICAgICAgIHZhciB0aW1lID0gdHJlZU5vZGU7Ci0gICAgICAgICAg
ICB2YXIgbm9kZSA9IHsKLSAgICAgICAgICAgICAgICAiZGF0YSI6IHsiJGFyZWEiOiB0aW1lfSwK
LSAgICAgICAgICAgICAgICAibmFtZSI6IG5hbWUgKyAiICgiICsgaHVtYW5SZWFkYWJsZVRpbWUo
dGltZSkgKyAiKSIKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKG5v
ZGUpOwotICAgICAgICAgICAgdG90YWwgKz0gdGltZTsKLSAgICAgICAgICAgIGNoaWxkQ291bnQr
KzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBuZXdQYXRoID0gcGF0aCA/IHBh
dGggKyAnLycgKyBuYW1lIDogbmFtZTsKLSAgICAgICAgICAgIHZhciBzdWJ0cmVlID0gY29udmVy
dFRvV2ViVHJlZW1hcEZvcm1hdChuYW1lLCB0cmVlTm9kZSwgbmV3UGF0aCk7Ci0gICAgICAgICAg
ICBjaGlsZHJlbi5wdXNoKHN1YnRyZWUpOwotICAgICAgICAgICAgdG90YWwgKz0gc3VidHJlZVsi
ZGF0YSJdWyIkYXJlYSJdOwotICAgICAgICAgICAgY2hpbGRDb3VudCArPSBzdWJ0cmVlWyJjaGls
ZENvdW50Il07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjaGlsZHJlbi5zb3J0KGZ1bmN0aW9u
KGEsIGIpIHsKLSAgICAgICAgYVRpbWUgPSBhLmRhdGFbIiRhcmVhIl0KLSAgICAgICAgYlRpbWUg
PSBiLmRhdGFbIiRhcmVhIl0KLSAgICAgICAgcmV0dXJuIGJUaW1lIC0gYVRpbWU7Ci0gICAgfSk7
Ci0KLSAgICByZXR1cm4gewotICAgICAgICAiZGF0YSI6IHsiJGFyZWEiOiB0b3RhbH0sCi0gICAg
ICAgICJuYW1lIjogdHJlZW5hbWUgKyAiICgiICsgaHVtYW5SZWFkYWJsZVRpbWUodG90YWwpICsg
IiAtICIgKyBjaGlsZENvdW50ICsgIiB0ZXN0cykiLAotICAgICAgICAiY2hpbGRyZW4iOiBjaGls
ZHJlbiwKLSAgICAgICAgImNoaWxkQ291bnQiOiBjaGlsZENvdW50LAotICAgICAgICAicGF0aCI6
IHBhdGgKLSAgICB9OwotfQotCi1mdW5jdGlvbiBsaXN0T2ZBbGxOb25MZWFmTm9kZXModHJlZSwg
bGlzdCkKLXsKLSAgICBpZiAoIXRyZWUuY2hpbGRyZW4pCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmICghbGlzdCkKLSAgICAgICAgbGlzdCA9IFtdOwotICAgIGxpc3QucHVzaCh0cmVlKTsKLQot
ICAgIHRyZWUuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjaGlsZCkgewotICAgICAgICBsaXN0
T2ZBbGxOb25MZWFmTm9kZXMoY2hpbGQsIGxpc3QpOwotICAgIH0pOwotICAgIHJldHVybiBsaXN0
OwotfQotCi1mdW5jdGlvbiByZXZlcnNlU29ydEJ5QXZlcmFnZShsaXN0KQotewotICAgIGxpc3Qu
c29ydChmdW5jdGlvbihhLCBiKSB7Ci0gICAgICAgIHZhciBhdmdBID0gYS5kYXRhWyckYXJlYSdd
IC8gYS5jaGlsZENvdW50OwotICAgICAgICB2YXIgYXZnQiA9IGIuZGF0YVsnJGFyZWEnXSAvIGIu
Y2hpbGRDb3VudDsKLSAgICAgICAgcmV0dXJuIGF2Z0IgLSBhdmdBOwotICAgIH0pOwotfQotCi1m
dW5jdGlvbiBzaG93QXZlcmFnZXMoKQotewotICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ21hcCcpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCd0YWJsZScpOwotICAgIHRhYmxlLmlubmVySFRNTCA9ICc8dGg+ZGlyZWN0
b3J5PC90aD48dGg+IyB0ZXN0czwvdGg+PHRoPmF2ZyB0aW1lIC8gdGVzdDwvdGg+JzsKLQotICAg
IHZhciBhbGxOb2RlcyA9IGxpc3RPZkFsbE5vbkxlYWZOb2RlcyhnX3dlYlRyZWUpOwotICAgIHJl
dmVyc2VTb3J0QnlBdmVyYWdlKGFsbE5vZGVzKTsKLSAgICBhbGxOb2Rlcy5mb3JFYWNoKGZ1bmN0
aW9uKG5vZGUpIHsKLSAgICAgICAgdmFyIGF2ZXJhZ2UgPSBub2RlLmRhdGFbJyRhcmVhJ10gLyBu
b2RlLmNoaWxkQ291bnQ7Ci0gICAgICAgIGlmIChhdmVyYWdlID4gMTAwICYmIG5vZGUuY2hpbGRD
b3VudCAhPSAxKSB7Ci0gICAgICAgICAgICB2YXIgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCd0cicpOwotICAgICAgICAgICAgdHIuaW5uZXJIVE1MID0gJzx0ZD48L3RkPjx0ZD4nICsgbm9k
ZS5jaGlsZENvdW50ICsgJzwvdGQ+PHRkPicgKyBodW1hblJlYWRhYmxlVGltZShhdmVyYWdlKSAr
ICc8L3RkPic7Ci0gICAgICAgICAgICB0ci5xdWVyeVNlbGVjdG9yKCd0ZCcpLmlubmVyVGV4dCA9
IG5vZGUucGF0aDsKLSAgICAgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHRyKTsKLSAgICAgICAg
fQotICAgIH0pOwotCi0gICAgdmFyIG1hcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYXAn
KTsKLSAgICBtYXAucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQodGFibGUsIG1hcCk7Ci19Ci0KLXZh
ciBnX2lzR2VuZXJhdGluZ1BhZ2UgPSBmYWxzZTsKLXZhciBnX3dlYlRyZWU7Ci0KLWZ1bmN0aW9u
IGdlbmVyYXRlUGFnZSgpCi17Ci0gICAgJCgnaGVhZGVyLWNvbnRhaW5lcicpLmlubmVySFRNTCA9
IHVpLmh0bWwudGVzdFR5cGVTd2l0Y2hlcigpOwotCi0gICAgZ19pc0dlbmVyYXRpbmdQYWdlID0g
dHJ1ZTsKLQotICAgIHZhciByYXdUcmVlID0gZ19yZXN1bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0
YXRlLmJ1aWxkZXIgfHwgY3VycmVudEJ1aWxkZXJHcm91cCgpLmRlZmF1bHRCdWlsZGVyKCldOwot
ICAgIGdfd2ViVHJlZSA9IGNvbnZlcnRUb1dlYlRyZWVtYXBGb3JtYXQoJ0xheW91dFRlc3RzJywg
cmF3VHJlZSk7Ci0gICAgYXBwZW5kVHJlZW1hcCgkKCdtYXAnKSwgZ193ZWJUcmVlKTsKLQotICAg
IGlmIChnX2N1cnJlbnRTdGF0ZS50cmVlbWFwZm9jdXMpCi0gICAgICAgIGZvY3VzUGF0aChnX3dl
YlRyZWUsIGdfY3VycmVudFN0YXRlLnRyZWVtYXBmb2N1cykKLQotICAgIGdfaXNHZW5lcmF0aW5n
UGFnZSA9IGZhbHNlOwotfQotCi1mdW5jdGlvbiBmb2N1c1BhdGgodHJlZSwgcGF0aCkKLXsKLSAg
ICB2YXIgcGFydHMgPSBkZWNvZGVVUklDb21wb25lbnQocGF0aCkuc3BsaXQoJy8nKTsKLSAgICBp
ZiAoZXh0cmFjdE5hbWUodHJlZSkgIT0gcGFydHNbMF0pIHsKLSAgICAgICAgY29uc29sZS5lcnJv
cignQ291bGQgbm90IGZvY3VzIHRyZWUgcm9vdGVkIGF0ICcgKyBwYXJ0c1swXSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMTsgaSA8IHBhcnRzLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgIHZhciBjaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW47Ci0gICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgY2hpbGRyZW4ubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgIHZh
ciBjaGlsZCA9IGNoaWxkcmVuW2pdOwotICAgICAgICAgICAgaWYgKGV4dHJhY3ROYW1lKGNoaWxk
KSA9PSBwYXJ0c1tpXSkgewotICAgICAgICAgICAgICAgIHRyZWUgPSBjaGlsZDsKLSAgICAgICAg
ICAgICAgICBmb2N1cyh0cmVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBpZiAoaiA9PSBjaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHRyZWUgYXQgJyArIHBhcnRzW2ld
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi19Ci0KLWZ1bmN0aW9u
IGhhbmRsZVZhbGlkSGFzaFBhcmFtZXRlcihrZXksIHZhbHVlKQotewotICAgIHN3aXRjaChrZXkp
IHsKLSAgICBjYXNlICdidWlsZGVyJzoKLSAgICAgICAgdmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJy
ZW50U3RhdGUsIGtleSwgdmFsdWUsCi0gICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHZh
bHVlIGluIGN1cnJlbnRCdWlsZGVycygpOyB9KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBjYXNlICd0cmVlbWFwZm9jdXMnOgotICAgICAgICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJl
bnRTdGF0ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGVyZSdzIHByb2JhYmx5IGEgc2ltcGxlciByZWdleHAgaGVyZS4g
SnVzdCB0cnlpbmcgdG8gbWF0Y2ggYXNjaWkgKyBmb3J3YXJkLXNsYXNoLgotICAgICAgICAgICAg
ICAgIC8vIGUuZy4gTGF5b3V0VGVzdHMvZm9vL2Jhci5odG1sCi0gICAgICAgICAgICAgICAgcmV0
dXJuICh2YWx1ZS5tYXRjaCgvXihcdytcL1x3KikqJC8pKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19Ci0KLWdfZGVmYXVsdERhc2hib2FyZFNwZWNpZmljU3RhdGVWYWx1ZXMgPSB7Ci0g
ICAgYnVpbGRlcjogbnVsbCwKLSAgICB0cmVlbWFwZm9jdXM6ICcnLAotfTsKLQotREJfU1BFQ0lG
SUNfSU5WQUxJREFUSU5HX1BBUkFNRVRFUlMgPSB7Ci0gICAgJ3Rlc3RUeXBlJzogJ2J1aWxkZXIn
LAotICAgICdncm91cCc6ICdidWlsZGVyJwotfTsKLQotZnVuY3Rpb24gaGFuZGxlUXVlcnlQYXJh
bWV0ZXJDaGFuZ2UocGFyYW1zKQotewotICAgIGZvciAodmFyIHBhcmFtIGluIHBhcmFtcykgewot
ICAgICAgICBpZiAocGFyYW0gIT0gJ3RyZWVtYXBmb2N1cycpIHsKLSAgICAgICAgICAgICQoJ21h
cCcpLmlubmVySFRNTCA9ICdMb2FkaW5nLi4uJzsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZXh0cmFj
dE5hbWUobm9kZSkKLXsKLSAgICByZXR1cm4gbm9kZS5uYW1lLnNwbGl0KCcgJylbMF07Ci19Ci0K
LWZ1bmN0aW9uIGZ1bGxOYW1lKG5vZGUpCi17Ci0gICAgdmFyIGJ1ZmZlciA9IFtleHRyYWN0TmFt
ZShub2RlKV07Ci0gICAgd2hpbGUgKG5vZGUucGFyZW50KSB7Ci0gICAgICAgIG5vZGUgPSBub2Rl
LnBhcmVudDsKLSAgICAgICAgYnVmZmVyLnVuc2hpZnQoZXh0cmFjdE5hbWUobm9kZSkpOwotICAg
IH0KLSAgICByZXR1cm4gYnVmZmVyLmpvaW4oJy8nKTsKLX0KLQotZnVuY3Rpb24gaGFuZGxlRm9j
dXModHJlZSkKLXsKLSAgICB2YXIgY3VycmVudGx5Rm9jdXNlZE5vZGUgPSAkKCdmb2N1c2VkLWxl
YWYnKTsKLSAgICBpZiAoY3VycmVudGx5Rm9jdXNlZE5vZGUpCi0gICAgICAgIGN1cnJlbnRseUZv
Y3VzZWROb2RlLmlkID0gJyc7Ci0KLSAgICBpZiAoIXRyZWUuY2hpbGRyZW4pCi0gICAgICAgIHRy
ZWUuZG9tLmlkID0gJ2ZvY3VzZWQtbGVhZic7Ci0KLSAgICB2YXIgbmFtZSA9IGZ1bGxOYW1lKHRy
ZWUpOwotCi0gICAgaWYgKCF0cmVlLmNoaWxkcmVuICYmICF0cmVlLmV4dHJhRG9tICYmIGlzTGF5
b3V0VGVzdFJlc3VsdHMoKSkgewotICAgICAgICB0cmVlLmV4dHJhRG9tID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgncHJlJyk7Ci0gICAgICAgIHRyZWUuZXh0cmFEb20uY2xhc3NOYW1lID0gJ2V4
dHJhLWRvbSc7Ci0gICAgICAgIHRyZWUuZG9tLmFwcGVuZENoaWxkKHRyZWUuZXh0cmFEb20pOwot
Ci0gICAgICAgIGxvYWRlci5yZXF1ZXN0KFRFU1RfVVJMX0JBU0VfUEFUSCArIG5hbWUsCi0gICAg
ICAgICAgICBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICAgICAgICB0cmVlLmV4dHJhRG9tLm9u
bW91c2Vkb3duID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9w
YWdhdGlvbigpOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgdHJlZS5leHRy
YURvbS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24gKHhocikgewotICAgICAgICAgICAgICAgIHRyZWUuZXh0cmFEb20u
dGV4dENvbnRlbnQgPSAiQ291bGQgbm90IGxvYWQgdGVzdC4iCi0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIGZvY3VzIGNhbGxzIGR1cmluZyBnZW5lcmF0ZVBh
Z2UgdG8gdHJ5IHRvIG1vZGlmeSB0aGUgcXVlcnkgc3RhdGUuCi0gICAgaWYgKCFnX2lzR2VuZXJh
dGluZ1BhZ2UpCi0gICAgICAgIHNldFF1ZXJ5UGFyYW1ldGVyKCd0cmVlbWFwZm9jdXMnLCBuYW1l
KTsKLX0KLQotd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgcmVzb3VyY2VMb2FkZXIgPSBuZXcgbG9hZGVyLkxvYWRlcihpbnRpYWxpemVIaXN0b3J5
KTsKLSAgICByZXNvdXJjZUxvYWRlci5sb2FkKCk7Ci19LCBmYWxzZSk7Ci08L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1h
cC5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1hcC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hM2QwZmRlOWMzODMzZGEzZWQyMWEwODc4MzA3YzE4NjMxYWJjNjdlCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJk
cy90cmVlbWFwLmpzCkBAIC0wLDAgKzEsMjc1IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKwordmFyIFRFU1RfVVJMX0JBU0VfUEFUSCA9ICJodHRwOi8vc3Zu
LndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsvIjsKKworZnVuY3Rpb24gaHVtYW5S
ZWFkYWJsZVRpbWUobWlsbGlzZWNvbmRzKQoreworICAgIGlmIChtaWxsaXNlY29uZHMgPCAxMDAw
KQorICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihtaWxsaXNlY29uZHMpICsgJ21zJzsKKyAgICBl
bHNlIGlmIChtaWxsaXNlY29uZHMgPCA2MDAwMCkKKyAgICAgICAgcmV0dXJuIChtaWxsaXNlY29u
ZHMgLyAxMDAwKS50b1ByZWNpc2lvbigyKSArICdzJzsKKworICAgIHZhciBtaW51dGVzID0gTWF0
aC5mbG9vcihtaWxsaXNlY29uZHMgLyA2MDAwMCk7CisgICAgdmFyIHNlY29uZHMgPSBNYXRoLmZs
b29yKChtaWxsaXNlY29uZHMgLSBtaW51dGVzICogNjAwMDApIC8gMTAwMCk7CisgICAgcmV0dXJu
IG1pbnV0ZXMgKyAnbScgKyBzZWNvbmRzICsgJ3MnOworfQorCisvLyBUaGlzIGxvb2tzIGxpa2U6
CisvLyB7ICJkYXRhIjogeyIkYXJlYSI6IChzdW0gb2YgYWxsIHRpbWluZ3MpfSwKKy8vICAgIm5h
bWUiOiAobmFtZSBvZiB0aGlzIG5vZGUpLAorLy8gICAiY2hpbGRyZW4iOiBbIChjaGlsZCBub2Rl
cywgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoaXMpIF0gfQorLy8gY2hpbGRDb3VudCBpcyBhZGRl
ZCBqdXN0IHRvIGJlIGluY2x1ZGVzIGluIHRoZSBub2RlJ3MgbmFtZQorZnVuY3Rpb24gY29udmVy
dFRvV2ViVHJlZW1hcEZvcm1hdCh0cmVlbmFtZSwgdHJlZSwgcGF0aCkKK3sKKyAgICB2YXIgdG90
YWwgPSAwOworICAgIHZhciBjaGlsZENvdW50ID0gMDsKKyAgICB2YXIgY2hpbGRyZW4gPSBbXTsK
KyAgICBmb3IgKHZhciBuYW1lIGluIHRyZWUpIHsKKyAgICAgICAgdmFyIHRyZWVOb2RlID0gdHJl
ZVtuYW1lXTsKKyAgICAgICAgaWYgKHR5cGVvZiB0cmVlTm9kZSA9PSAibnVtYmVyIikgeworICAg
ICAgICAgICAgdmFyIHRpbWUgPSB0cmVlTm9kZTsKKyAgICAgICAgICAgIHZhciBub2RlID0gewor
ICAgICAgICAgICAgICAgICJkYXRhIjogeyIkYXJlYSI6IHRpbWV9LAorICAgICAgICAgICAgICAg
ICJuYW1lIjogbmFtZSArICIgKCIgKyBodW1hblJlYWRhYmxlVGltZSh0aW1lKSArICIpIgorICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGNoaWxkcmVuLnB1c2gobm9kZSk7CisgICAgICAgICAg
ICB0b3RhbCArPSB0aW1lOworICAgICAgICAgICAgY2hpbGRDb3VudCsrOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdmFyIG5ld1BhdGggPSBwYXRoID8gcGF0aCArICcvJyArIG5hbWUg
OiBuYW1lOworICAgICAgICAgICAgdmFyIHN1YnRyZWUgPSBjb252ZXJ0VG9XZWJUcmVlbWFwRm9y
bWF0KG5hbWUsIHRyZWVOb2RlLCBuZXdQYXRoKTsKKyAgICAgICAgICAgIGNoaWxkcmVuLnB1c2go
c3VidHJlZSk7CisgICAgICAgICAgICB0b3RhbCArPSBzdWJ0cmVlWyJkYXRhIl1bIiRhcmVhIl07
CisgICAgICAgICAgICBjaGlsZENvdW50ICs9IHN1YnRyZWVbImNoaWxkQ291bnQiXTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGNoaWxkcmVuLnNvcnQoZnVuY3Rpb24oYSwgYikgeworICAgICAg
ICBhVGltZSA9IGEuZGF0YVsiJGFyZWEiXQorICAgICAgICBiVGltZSA9IGIuZGF0YVsiJGFyZWEi
XQorICAgICAgICByZXR1cm4gYlRpbWUgLSBhVGltZTsKKyAgICB9KTsKKworICAgIHJldHVybiB7
CisgICAgICAgICJkYXRhIjogeyIkYXJlYSI6IHRvdGFsfSwKKyAgICAgICAgIm5hbWUiOiB0cmVl
bmFtZSArICIgKCIgKyBodW1hblJlYWRhYmxlVGltZSh0b3RhbCkgKyAiIC0gIiArIGNoaWxkQ291
bnQgKyAiIHRlc3RzKSIsCisgICAgICAgICJjaGlsZHJlbiI6IGNoaWxkcmVuLAorICAgICAgICAi
Y2hpbGRDb3VudCI6IGNoaWxkQ291bnQsCisgICAgICAgICJwYXRoIjogcGF0aAorICAgIH07Cit9
CisKK2Z1bmN0aW9uIGxpc3RPZkFsbE5vbkxlYWZOb2Rlcyh0cmVlLCBsaXN0KQoreworICAgIGlm
ICghdHJlZS5jaGlsZHJlbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFsaXN0KQorICAg
ICAgICBsaXN0ID0gW107CisgICAgbGlzdC5wdXNoKHRyZWUpOworCisgICAgdHJlZS5jaGlsZHJl
bi5mb3JFYWNoKGZ1bmN0aW9uKGNoaWxkKSB7CisgICAgICAgIGxpc3RPZkFsbE5vbkxlYWZOb2Rl
cyhjaGlsZCwgbGlzdCk7CisgICAgfSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK2Z1bmN0aW9u
IHJldmVyc2VTb3J0QnlBdmVyYWdlKGxpc3QpCit7CisgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEs
IGIpIHsKKyAgICAgICAgdmFyIGF2Z0EgPSBhLmRhdGFbJyRhcmVhJ10gLyBhLmNoaWxkQ291bnQ7
CisgICAgICAgIHZhciBhdmdCID0gYi5kYXRhWyckYXJlYSddIC8gYi5jaGlsZENvdW50OworICAg
ICAgICByZXR1cm4gYXZnQiAtIGF2Z0E7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHNob3dBdmVy
YWdlcygpCit7CisgICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFwJykpCisgICAg
ICAgIHJldHVybjsKKworICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rh
YmxlJyk7CisgICAgdGFibGUuaW5uZXJIVE1MID0gJzx0aD5kaXJlY3Rvcnk8L3RoPjx0aD4jIHRl
c3RzPC90aD48dGg+YXZnIHRpbWUgLyB0ZXN0PC90aD4nOworCisgICAgdmFyIGFsbE5vZGVzID0g
bGlzdE9mQWxsTm9uTGVhZk5vZGVzKGdfd2ViVHJlZSk7CisgICAgcmV2ZXJzZVNvcnRCeUF2ZXJh
Z2UoYWxsTm9kZXMpOworICAgIGFsbE5vZGVzLmZvckVhY2goZnVuY3Rpb24obm9kZSkgeworICAg
ICAgICB2YXIgYXZlcmFnZSA9IG5vZGUuZGF0YVsnJGFyZWEnXSAvIG5vZGUuY2hpbGRDb3VudDsK
KyAgICAgICAgaWYgKGF2ZXJhZ2UgPiAxMDAgJiYgbm9kZS5jaGlsZENvdW50ICE9IDEpIHsKKyAg
ICAgICAgICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAg
ICAgICB0ci5pbm5lckhUTUwgPSAnPHRkPjwvdGQ+PHRkPicgKyBub2RlLmNoaWxkQ291bnQgKyAn
PC90ZD48dGQ+JyArIGh1bWFuUmVhZGFibGVUaW1lKGF2ZXJhZ2UpICsgJzwvdGQ+JzsKKyAgICAg
ICAgICAgIHRyLnF1ZXJ5U2VsZWN0b3IoJ3RkJykuaW5uZXJUZXh0ID0gbm9kZS5wYXRoOworICAg
ICAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQodHIpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICB2YXIgbWFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpOworICAgIG1hcC5wYXJl
bnROb2RlLnJlcGxhY2VDaGlsZCh0YWJsZSwgbWFwKTsKK30KKwordmFyIGdfaXNHZW5lcmF0aW5n
UGFnZSA9IGZhbHNlOwordmFyIGdfd2ViVHJlZTsKKworZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkK
K3sKKyAgICAkKCdoZWFkZXItY29udGFpbmVyJykuaW5uZXJIVE1MID0gdWkuaHRtbC50ZXN0VHlw
ZVN3aXRjaGVyKCk7CisKKyAgICBnX2lzR2VuZXJhdGluZ1BhZ2UgPSB0cnVlOworCisgICAgdmFy
IHJhd1RyZWUgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlciB8fCBj
dXJyZW50QnVpbGRlckdyb3VwKCkuZGVmYXVsdEJ1aWxkZXIoKV07CisgICAgZ193ZWJUcmVlID0g
Y29udmVydFRvV2ViVHJlZW1hcEZvcm1hdCgnTGF5b3V0VGVzdHMnLCByYXdUcmVlKTsKKyAgICBh
cHBlbmRUcmVlbWFwKCQoJ21hcCcpLCBnX3dlYlRyZWUpOworCisgICAgaWYgKGdfY3VycmVudFN0
YXRlLnRyZWVtYXBmb2N1cykKKyAgICAgICAgZm9jdXNQYXRoKGdfd2ViVHJlZSwgZ19jdXJyZW50
U3RhdGUudHJlZW1hcGZvY3VzKQorCisgICAgZ19pc0dlbmVyYXRpbmdQYWdlID0gZmFsc2U7Cit9
CisKK2Z1bmN0aW9uIGZvY3VzUGF0aCh0cmVlLCBwYXRoKQoreworICAgIHZhciBwYXJ0cyA9IGRl
Y29kZVVSSUNvbXBvbmVudChwYXRoKS5zcGxpdCgnLycpOworICAgIGlmIChleHRyYWN0TmFtZSh0
cmVlKSAhPSBwYXJ0c1swXSkgeworICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZm9j
dXMgdHJlZSByb290ZWQgYXQgJyArIHBhcnRzWzBdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
dmFyIGNoaWxkcmVuID0gdHJlZS5jaGlsZHJlbjsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGog
PCBjaGlsZHJlbi5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRy
ZW5bal07CisgICAgICAgICAgICBpZiAoZXh0cmFjdE5hbWUoY2hpbGQpID09IHBhcnRzW2ldKSB7
CisgICAgICAgICAgICAgICAgdHJlZSA9IGNoaWxkOworICAgICAgICAgICAgICAgIGZvY3VzKHRy
ZWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGlmIChqID09IGNoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgY29uc29sZS5l
cnJvcignQ291bGQgbm90IGZpbmQgdHJlZSBhdCAnICsgcGFydHNbaV0pOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKK30KKworZnVuY3Rpb24gaGFuZGxlVmFsaWRIYXNo
UGFyYW1ldGVyKGtleSwgdmFsdWUpCit7CisgICAgc3dpdGNoKGtleSkgeworICAgIGNhc2UgJ2J1
aWxkZXInOgorICAgICAgICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2
YWx1ZSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdmFsdWUgaW4gY3VycmVudEJ1
aWxkZXJzKCk7IH0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgJ3RyZWVtYXBm
b2N1cyc6CisgICAgICAgIHZhbGlkYXRlUGFyYW1ldGVyKGdfY3VycmVudFN0YXRlLCBrZXksIHZh
bHVlLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoZXJlJ3MgcHJvYmFibHkgYSBzaW1wbGVyIHJlZ2V4cCBoZXJlLiBKdXN0IHRyeWluZyB0byBt
YXRjaCBhc2NpaSArIGZvcndhcmQtc2xhc2guCisgICAgICAgICAgICAgICAgLy8gZS5nLiBMYXlv
dXRUZXN0cy9mb28vYmFyLmh0bWwKKyAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlLm1hdGNo
KC9eKFx3K1wvXHcqKSokLykpOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworZ19k
ZWZhdWx0RGFzaGJvYXJkU3BlY2lmaWNTdGF0ZVZhbHVlcyA9IHsKKyAgICBidWlsZGVyOiBudWxs
LAorICAgIHRyZWVtYXBmb2N1czogJycsCit9OworCitEQl9TUEVDSUZJQ19JTlZBTElEQVRJTkdf
UEFSQU1FVEVSUyA9IHsKKyAgICAndGVzdFR5cGUnOiAnYnVpbGRlcicsCisgICAgJ2dyb3VwJzog
J2J1aWxkZXInCit9OworCitmdW5jdGlvbiBoYW5kbGVRdWVyeVBhcmFtZXRlckNoYW5nZShwYXJh
bXMpCit7CisgICAgZm9yICh2YXIgcGFyYW0gaW4gcGFyYW1zKSB7CisgICAgICAgIGlmIChwYXJh
bSAhPSAndHJlZW1hcGZvY3VzJykgeworICAgICAgICAgICAgJCgnbWFwJykuaW5uZXJIVE1MID0g
J0xvYWRpbmcuLi4nOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBleHRyYWN0TmFtZShub2RlKQorewor
ICAgIHJldHVybiBub2RlLm5hbWUuc3BsaXQoJyAnKVswXTsKK30KKworZnVuY3Rpb24gZnVsbE5h
bWUobm9kZSkKK3sKKyAgICB2YXIgYnVmZmVyID0gW2V4dHJhY3ROYW1lKG5vZGUpXTsKKyAgICB3
aGlsZSAobm9kZS5wYXJlbnQpIHsKKyAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50OworICAgICAg
ICBidWZmZXIudW5zaGlmdChleHRyYWN0TmFtZShub2RlKSk7CisgICAgfQorICAgIHJldHVybiBi
dWZmZXIuam9pbignLycpOworfQorCitmdW5jdGlvbiBoYW5kbGVGb2N1cyh0cmVlKQoreworICAg
IHZhciBjdXJyZW50bHlGb2N1c2VkTm9kZSA9ICQoJ2ZvY3VzZWQtbGVhZicpOworICAgIGlmIChj
dXJyZW50bHlGb2N1c2VkTm9kZSkKKyAgICAgICAgY3VycmVudGx5Rm9jdXNlZE5vZGUuaWQgPSAn
JzsKKworICAgIGlmICghdHJlZS5jaGlsZHJlbikKKyAgICAgICAgdHJlZS5kb20uaWQgPSAnZm9j
dXNlZC1sZWFmJzsKKworICAgIHZhciBuYW1lID0gZnVsbE5hbWUodHJlZSk7CisKKyAgICBpZiAo
IXRyZWUuY2hpbGRyZW4gJiYgIXRyZWUuZXh0cmFEb20gJiYgaXNMYXlvdXRUZXN0UmVzdWx0cygp
KSB7CisgICAgICAgIHRyZWUuZXh0cmFEb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUn
KTsKKyAgICAgICAgdHJlZS5leHRyYURvbS5jbGFzc05hbWUgPSAnZXh0cmEtZG9tJzsKKyAgICAg
ICAgdHJlZS5kb20uYXBwZW5kQ2hpbGQodHJlZS5leHRyYURvbSk7CisKKyAgICAgICAgbG9hZGVy
LnJlcXVlc3QoVEVTVF9VUkxfQkFTRV9QQVRIICsgbmFtZSwKKyAgICAgICAgICAgIGZ1bmN0aW9u
KHhocikgeworICAgICAgICAgICAgICAgIHRyZWUuZXh0cmFEb20ub25tb3VzZWRvd24gPSBmdW5j
dGlvbihlKSB7CisgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB0cmVlLmV4dHJhRG9tLnRleHRDb250ZW50
ID0geGhyLnJlc3BvbnNlVGV4dDsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlv
biAoeGhyKSB7CisgICAgICAgICAgICAgICAgdHJlZS5leHRyYURvbS50ZXh0Q29udGVudCA9ICJD
b3VsZCBub3QgbG9hZCB0ZXN0LiIKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLy8gV2UgZG9u
J3Qgd2FudCB0aGUgZm9jdXMgY2FsbHMgZHVyaW5nIGdlbmVyYXRlUGFnZSB0byB0cnkgdG8gbW9k
aWZ5IHRoZSBxdWVyeSBzdGF0ZS4KKyAgICBpZiAoIWdfaXNHZW5lcmF0aW5nUGFnZSkKKyAgICAg
ICAgc2V0UXVlcnlQYXJhbWV0ZXIoJ3RyZWVtYXBmb2N1cycsIG5hbWUpOworfQorCit3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAgIHZhciByZXNvdXJjZUxv
YWRlciA9IG5ldyBsb2FkZXIuTG9hZGVyKGludGlhbGl6ZUhpc3RvcnkpOworICAgIHJlc291cmNl
TG9hZGVyLmxvYWQoKTsKK30sIGZhbHNlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193646</attachid>
            <date>2013-03-18 14:05:15 -0700</date>
            <delta_ts>2013-03-18 14:45:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112618-20130318140107.patch</filename>
            <type>text/plain</type>
            <size>39792</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTMwMmFmNGNlYzUxYzNkODJkOTBjMzRjNzFhZmQ2YTYx
N2QyYzY2ZS4uNTBlN2Y2ZGRmYWYwYjYzY2ZkMzViMzljYWFmMzg2OGZkYjEzMzI0ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDEzLTAzLTE4ICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBDbGVhbnVwOiBNb3ZlIGpzIGZvciB0cmVlbWFwIGFuZCBhZ2dyZWdhdGVfcmVzdWx0
cyBpbnRvIG93biBqcyBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMjYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IERpcmsgUHJhbmtlLgor
ICAgICAgICAKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCBqdXN0IG1vdmluZyB0aGUg
Y29kZSBpbnRvIHNlcGFyYXRlIGpzIGZpbGUKKyAgICAgICAgcmF0aGVyIHRoYW4gaW5saW5lZCBp
biB0aGUgaHRtbCwgc28gd2UgY2FuIHRlc3QgaXQsIG1ha2UgaXQgbW9yZQorICAgICAgICBtb2R1
bGFyLCBldGMuICBPdGhlciBkYXNoYm9hcmQgdHlwZXMgYXJlIGFscmVhZHkgZG9uZSB0aGlzIHdh
eS4KKworICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVn
YXRlX3Jlc3VsdHMuaHRtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNo
Ym9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmpzOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0UmVzdWx0
U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwuCisgICAgICAg
IChnZW5lcmF0ZVBhZ2UpOgorICAgICAgICAoaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKToKKyAg
ICAgICAgKGh0bWxGb3JCdWlsZGVyKToKKyAgICAgICAgKHJhd1ZhbHVlc0hUTUwpOgorICAgICAg
ICAoY2hhcnRIVE1MKToKKyAgICAgICAgKGZpbHRlcmVkVmFsdWVzKToKKyAgICAgICAgKGNoYXJ0
KToKKyAgICAgICAgKGh0bWxGb3JSZXZpc2lvblJvd3MpOgorICAgICAgICAod3JhcEhUTUxJblRh
YmxlKToKKyAgICAgICAgKGh0bWxGb3JTdW1tYXJ5VGFibGUpOgorICAgICAgICAodmFsdWVzUGVy
RXhwZWN0YXRpb24pOgorICAgICAgICAoaHRtbEZvclRlc3RUeXBlKToKKyAgICAgICAgKGh0bWxG
b3JUYWJsZVJvdyk6CisgICAgICAgIChleHRlbmRlZEVuY29kZSk6CisgICAgICAgICogVGVzdFJl
c3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmh0bWw6CisgICAgICAgICogVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmpzOiBDb3BpZWQgZnJvbSBU
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbC4KKyAg
ICAgICAgKGh1bWFuUmVhZGFibGVUaW1lKToKKyAgICAgICAgKGNvbnZlcnRUb1dlYlRyZWVtYXBG
b3JtYXQpOgorICAgICAgICAocmV2ZXJzZVNvcnRCeUF2ZXJhZ2UpOgorICAgICAgICAoZ2VuZXJh
dGVQYWdlKToKKyAgICAgICAgKGZvY3VzUGF0aCk6CisgICAgICAgICguc3dpdGNoLnJldHVybik6
CisgICAgICAgIChoYW5kbGVRdWVyeVBhcmFtZXRlckNoYW5nZSk6CisgICAgICAgIChleHRyYWN0
TmFtZSk6CisgICAgICAgIChmdWxsTmFtZSk6CisgICAgICAgIChoYW5kbGVGb2N1cy4pOgorICAg
ICAgICAoaGFuZGxlRm9jdXMpOgorCiAyMDEzLTAzLTE4ICBNYXJrIFBpbGdyaW0gIDxwaWxncmlt
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIENyZWF0ZSBXZWJGaWxlU3lzdGVt
VHlwZSBlbnVtIHRvIGFsbG93IGVhc2llciBmaWxlc3lzdGVtIHJlZmFjdG9yaW5nCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9y
ZXN1bHRzLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Fn
Z3JlZ2F0ZV9yZXN1bHRzLmh0bWwKaW5kZXggMzc5NzVkMjY3MDBhYmNiZjZhOTMyYjRmNzJiNDVj
ZjY1MWNkNDU5MS4uZjllNWUzODZiM2ZkNTA3YmI4MGU5OWQwN2NlNTcxYjVhZjgwNTA0YyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdh
dGVfcmVzdWx0cy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRtbApAQCAtNTUsMjUyICs1NSw3IEBAIGltZyB7CiA8
c2NyaXB0IHNyYz0ic3RyaW5nLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJkYXNoYm9hcmRf
YmFzZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0idWkuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLS8vIEBmaWxlb3ZlcnZpZXcgQ3JlYXRlcyBhIGRhc2hib2FyZCBmb3IgdHJhY2tpbmcgbnVt
YmVyIG9mIHBhc3Nlcy9mYWlsdXJlcyBwZXIgcnVuLgotLy8KLS8vIEN1cnJlbnRseSwgb25seSB3
ZWJraXQgdGVzdHMgYXJlIHN1cHBvcnRlZCwgYnV0IGFkZGluZyBvdGhlciB0ZXN0IHR5cGVzCi0v
LyBzaG91bGQganVzdCByZXF1aXJlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0vLyAgICAgLWdlbmVy
YXRlIHJlc3VsdHMuanNvbiBmb3IgdGhlc2UgdGVzdHMKLS8vICAgICAtY29weSB0aGVtIHRvIHRo
ZSBhcHByb3ByaWF0ZSBsb2NhdGlvbgotLy8gICAgIC1hZGQgdGhlIGJ1aWxkZXIgbmFtZSB0byB0
aGUgbGlzdCBvZiBidWlsZGVycyBpbiBkYXNoYm9hcmRfYmFzZS5qcy4KLQotLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0vLyBNZXRob2RzIGFuZCBvYmplY3RzIGZyb20gZGFzaGJvYXJkX2Jhc2UuanMg
dG8gb3ZlcnJpZGUuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLWZ1bmN0aW9uIGdlbmVyYXRlUGFn
ZSgpCi17Ci0gICAgdmFyIGh0bWwgPSB1aS5odG1sLnRlc3RUeXBlU3dpdGNoZXIodHJ1ZSkgKyAn
PGJyPic7Ci0gICAgZm9yICh2YXIgYnVpbGRlciBpbiBjdXJyZW50QnVpbGRlcnMoKSkKLSAgICAg
ICAgaHRtbCArPSBodG1sRm9yQnVpbGRlcihidWlsZGVyKTsKLSAgICBkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTCA9IGh0bWw7Ci19Ci0KLWZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFzaFBhcmFtZXRlcihr
ZXksIHZhbHVlKQotewotICAgIHN3aXRjaChrZXkpIHsKLSAgICBjYXNlICdyYXdWYWx1ZXMnOgot
ICAgICAgICBnX2N1cnJlbnRTdGF0ZVtrZXldID0gdmFsdWUgPT0gJ3RydWUnOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci19Ci0KLWdfZGVmYXVsdERhc2hib2FyZFNwZWNpZmljU3RhdGVWYWx1ZXMgPSB7Ci0gICAgcmF3
VmFsdWVzOiBmYWxzZQotfTsKLQotZnVuY3Rpb24gaHRtbEZvckJ1aWxkZXIoYnVpbGRlcikKLXsK
LSAgICB2YXIgcmVzdWx0cyA9IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXTsKLSAgICAvLyBT
b21lIGtleXMgd2VyZSBhZGRlZCBsYXRlciB0aGFuIG90aGVycywgc28gdGhleSBkb24ndCBoYXZl
IGFzIG1hbnkKLSAgICAvLyBidWlsZHMuIFVzZSB0aGUgc2hvcnRlc3QuCi0gICAgLy8gRklYTUU6
IE9uY2UgNTAwIHJ1bnMgaGF2ZSBmaW5pc2hlZCwgd2UgY2FuIGdldCByaWQgb2YgcGFzc2luZyB0
aGlzCi0gICAgLy8gYXJvdW5kIGFuZCBqdXN0IGFzc3VtZSBhbGwga2V5cyBoYXZlIHRoZSBzYW1l
IG51bWJlciBvZiBidWlsZGVycyBmb3IgYQotICAgIC8vIGdpdmVuIGJ1aWxkZXIuCi0gICAgdmFy
IG51bUNvbHVtbnMgPSByZXN1bHRzW0FMTF9GSVhBQkxFX0NPVU5UX0tFWV0ubGVuZ3RoOwotICAg
IHZhciBodG1sID0gJzxkaXYgY2xhc3M9Y29udGFpbmVyPjxoMj4nICsgYnVpbGRlciArICc8L2gy
Pic7Ci0KLSAgICBpZiAoZ19jdXJyZW50U3RhdGUucmF3VmFsdWVzKQotICAgICAgICBodG1sICs9
IHJhd1ZhbHVlc0hUTUwocmVzdWx0cywgbnVtQ29sdW1ucyk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGh0bWwgKz0gJzxhIGhyZWY9InRpbWVsaW5lX2V4cGxvcmVyLmh0bWwnICsgKGxvY2F0aW9uLmhh
c2ggPyBsb2NhdGlvbi5oYXNoICsgJyYnIDogJyMnKSArICdidWlsZGVyPScgKyBidWlsZGVyICsg
JyI+JyArCi0gICAgICAgICAgICBjaGFydEhUTUwocmVzdWx0cywgbnVtQ29sdW1ucykgKyAnPC9h
Pic7Ci0gICAgfQotCi0gICAgaHRtbCArPSAnPC9kaXY+JzsKLSAgICByZXR1cm4gaHRtbDsKLX0K
LQotZnVuY3Rpb24gcmF3VmFsdWVzSFRNTChyZXN1bHRzLCBudW1Db2x1bW5zKQotewotICAgIHZh
ciBodG1sID0gaHRtbEZvclN1bW1hcnlUYWJsZShyZXN1bHRzLCBudW1Db2x1bW5zKSArCi0gICAg
ICAgIGh0bWxGb3JUZXN0VHlwZShyZXN1bHRzLCBGSVhBQkxFX0NPVU5UU19LRVksIEZJWEFCTEVf
REVTQ1JJUFRJT04sIG51bUNvbHVtbnMpOwotICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkp
IHsKLSAgICAgICAgaHRtbCArPSBodG1sRm9yVGVzdFR5cGUocmVzdWx0cywgREVGRVJSRURfQ09V
TlRTX0tFWSwgREVGRVJSRURfREVTQ1JJUFRJT04sIG51bUNvbHVtbnMpICsKLSAgICAgICAgICAg
IGh0bWxGb3JUZXN0VHlwZShyZXN1bHRzLCBXT05URklYX0NPVU5UU19LRVksIFdPTlRGSVhfREVT
Q1JJUFRJT04sIG51bUNvbHVtbnMpOwotICAgIH0KLSAgICByZXR1cm4gaHRtbDsKLX0KLQotZnVu
Y3Rpb24gY2hhcnRIVE1MKHJlc3VsdHMsIG51bUNvbHVtbnMpCi17Ci0gICAgdmFyIHNob3VsZFNo
b3dXZWJLaXRSZXZpc2lvbnMgPSBpc1RpcE9mVHJlZVdlYktpdEJ1aWxkZXIoKTsKLSAgICB2YXIg
cmV2aXNpb25LZXkgPSBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID8gV0VCS0lUX1JFVklTSU9O
U19LRVkgOiBDSFJPTUVfUkVWSVNJT05TX0tFWTsKLSAgICB2YXIgc3RhcnRSZXZpc2lvbiA9IHJl
c3VsdHNbcmV2aXNpb25LZXldW251bUNvbHVtbnMgLSAxXTsKLSAgICB2YXIgZW5kUmV2aXNpb24g
PSByZXN1bHRzW3JldmlzaW9uS2V5XVswXTsKLSAgICB2YXIgcmV2aXNpb25MYWJlbCA9IHNob3Vs
ZFNob3dXZWJLaXRSZXZpc2lvbnMgPyAiV2ViS2l0IFJldmlzaW9uIiA6ICJDaHJvbWl1bSBSZXZp
c2lvbiI7Ci0KLSAgICB2YXIgZml4YWJsZSA9IHJlc3VsdHNbRklYQUJMRV9DT1VOVF9LRVldLnNs
aWNlKDAsIG51bUNvbHVtbnMpOwotICAgIHZhciBodG1sID0gY2hhcnQoIlRvdGFsIGZhaWxpbmci
LCB7IiI6IGZpeGFibGV9LCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lv
bik7Ci0KLSAgICB2YXIgdmFsdWVzID0gdmFsdWVzUGVyRXhwZWN0YXRpb24ocmVzdWx0c1tGSVhB
QkxFX0NPVU5UU19LRVldLCBudW1Db2x1bW5zKTsKLSAgICAvLyBEb24ndCBjYXJlIGFib3V0IG51
bWJlciBvZiBwYXNzZXMgZm9yIHRoZSBjaGFydHMuCi0gICAgZGVsZXRlKHZhbHVlc1snUCddKTsK
LQotICAgIHJldHVybiBodG1sICsgY2hhcnQoIkRldGFpbGVkIGJyZWFrZG93biIsIHZhbHVlcywg
cmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24pOwotfQotCi12YXIgTEFC
RUxfQ09MT1JTID0gWydGRjAwMDAnLCAnMDBGRjAwJywgJzAwMDBGRicsICcwMDAwMDAnLCAnRkY2
RUI0JywgJ0ZGQTgxMicsICc5QjMwRkYnLCAnMDBGRkNDJ107Ci0KLS8vIEZJWE1FOiBGaW5kIGEg
YmV0dGVyIHdheSB0byBleGNsdWRlIG91dGxpZXJzLiBUaGlzIGlzIGp1c3Qgc28gd2UgZXhjbHVk
ZQotLy8gcnVucyB3aGVyZSBldmVyeSB0ZXN0IGZhaWxlZC4KLXZhciBNQVhfVkFMVUUgPSAxMDAw
MDsKLQotZnVuY3Rpb24gZmlsdGVyZWRWYWx1ZXModmFsdWVzLCBkZXNpcmVkTnVtYmVyT2ZQb2lu
dHMpCi17Ci0gICAgLy8gRmlsdGVyIG91dCB2YWx1ZXMgdG8gbWFrZSB0aGUgZ3JhcGggYSBiaXQg
bW9yZSByZWFkYWJsZSBhbmQgdG8ga2VlcCBVUkxzCi0gICAgLy8gZnJvbSBleGNlZWRpbmcgdGhl
IGJyb3dzZXJzIG1heCBsZW5ndGggcmVzdHJpY3Rpb24uCi0gICAgdmFyIGZpbHRlckFtb3VudCA9
IE1hdGguZmxvb3IodmFsdWVzLmxlbmd0aCAvIGRlc2lyZWROdW1iZXJPZlBvaW50cyk7Ci0gICAg
aWYgKGZpbHRlckFtb3VudCA8IDEpCi0gICAgICAgIHJldHVybiB2YWx1ZXM7Ci0KLSAgICByZXR1
cm4gdmFsdWVzLmZpbHRlcihmdW5jdGlvbihlbGVtZW50LCBpbmRleCwgYXJyYXkpIHsKLSAgICAg
ICAgLy8gSW5jbHVkZSB0aGUgbW9zdCByZWNlbnQgYW5kIG9sZGVzdCB2YWx1ZXMgYW5kIGV4Y2x1
ZGUgb3V0bGllcnMuCi0gICAgICAgIHJldHVybiAoaW5kZXggJSBmaWx0ZXJBbW91bnQgPT0gMCB8
fCBpbmRleCA9PSBhcnJheS5sZW5ndGggLSAxKSAmJiAoYXJyYXlbaW5kZXhdIDwgTUFYX1ZBTFVF
ICYmIGFycmF5W2luZGV4XSAhPSAwKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gY2hhcnRVcmwo
dGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24s
IGRlc2lyZWROdW1iZXJPZlBvaW50cykgewotICAgIHZhciBtYXhWYWx1ZSA9IDA7Ci0gICAgZm9y
ICh2YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVzKQotICAgICAgICBtYXhWYWx1ZSA9IE1hdGgubWF4
KG1heFZhbHVlLCBNYXRoLm1heC5hcHBseShudWxsLCBmaWx0ZXJlZFZhbHVlcyh2YWx1ZXNbZXhw
ZWN0YXRpb25dLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpKSk7Ci0KLSAgICB2YXIgY2hhcnREYXRh
ID0gJyc7Ci0gICAgdmFyIGxhYmVscyA9ICcnOwotICAgIHZhciBudW1MYWJlbHMgPSAwOwotCi0g
ICAgdmFyIGZpcnN0ID0gdHJ1ZTsKLSAgICBmb3IgKHZhciBleHBlY3RhdGlvbiBpbiB2YWx1ZXMp
IHsKLSAgICAgICAgY2hhcnREYXRhICs9IChmaXJzdCA/ICdlOicgOiAnLCcpICsgZXh0ZW5kZWRF
bmNvZGUoZmlsdGVyZWRWYWx1ZXModmFsdWVzW2V4cGVjdGF0aW9uXSwgZGVzaXJlZE51bWJlck9m
UG9pbnRzKS5yZXZlcnNlKCksIG1heFZhbHVlKTsKLQotICAgICAgICBpZiAoZXhwZWN0YXRpb24p
IHsKLSAgICAgICAgICAgIG51bUxhYmVscysrOwotICAgICAgICAgICAgbGFiZWxzICs9IChmaXJz
dCA/ICcnIDogJ3wnKSArIGV4cGVjdGF0aW9uc01hcCgpW2V4cGVjdGF0aW9uXTsKLSAgICAgICAg
fQotICAgICAgICBmaXJzdCA9IGZhbHNlOwotICAgIH0KLQotICAgIHZhciB1cmwgPSAiaHR0cDov
L2NoYXJ0LmFwaXMuZ29vZ2xlLmNvbS9jaGFydD9jaHQ9bGMmY2hzPTYwMHg0MDAmY2hkPSIgKwot
ICAgICAgICAgICAgY2hhcnREYXRhICsgIiZjaGc9MTUsMTUsMSwzJmNoeHQ9eCx4LHkmY2h4bD0x
Onx8IiArIHJldmlzaW9uTGFiZWwgKwotICAgICAgICAgICAgInwmY2h4cj0wLCIgKyBzdGFydFJl
dmlzaW9uICsgIiwiICsgZW5kUmV2aXNpb24gKyAifDIsMCwiICsgbWF4VmFsdWUgKyAiJmNodHQ9
IiArIHRpdGxlOwotCi0KLSAgICBpZiAobGFiZWxzKQotICAgICAgICB1cmwgKz0gIiZjaGRsPSIg
KyBsYWJlbHMgKyAiJmNoY289IiArIExBQkVMX0NPTE9SUy5zbGljZSgwLCBudW1MYWJlbHMpLmpv
aW4oJywnKTsKLSAgICByZXR1cm4gdXJsOwotfQotCi1mdW5jdGlvbiBjaGFydCh0aXRsZSwgdmFs
dWVzLCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbikKLXsKLSAgICB2
YXIgZGVzaXJlZE51bWJlck9mUG9pbnRzID0gNDAwOwotICAgIHZhciB1cmwgPSBjaGFydFVybCh0
aXRsZSwgdmFsdWVzLCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbiwg
ZGVzaXJlZE51bWJlck9mUG9pbnRzKTsKLQotICAgIHdoaWxlICh1cmwubGVuZ3RoID49IDIwNDgp
IHsKLSAgICAgICAgLy8gRGVjcmVhc2UgdGhlIGRlc2lyZWQgbnVtYmVyIG9mIHBvaW50cyBncmFk
dWFsbHkgdW50aWwgd2UgZ2V0IGEgVVJMIHRoYXQKLSAgICAgICAgLy8gZG9lc24ndCBleGNlZWQg
Y2hhcnRzZXJ2ZXIncyBtYXggVVJMIGxlbmd0aC4KLSAgICAgICAgZGVzaXJlZE51bWJlck9mUG9p
bnRzID0gMyAvIDQgKiBkZXNpcmVkTnVtYmVyT2ZQb2ludHM7Ci0gICAgICAgIHVybCA9IGNoYXJ0
VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlz
aW9uLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpOwotICAgIH0KLQotICAgIHJldHVybiAnPGltZyBz
cmM9IicgKyB1cmwgKyAnIj4nOwotfQotCi1mdW5jdGlvbiBodG1sRm9yUmV2aXNpb25Sb3dzKHJl
c3VsdHMsIG51bUNvbHVtbnMpCi17Ci0gICAgcmV0dXJuIGh0bWxGb3JUYWJsZVJvdygnV2ViS2l0
IFJldmlzaW9uJywgcmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV0uc2xpY2UoMCwgbnVtQ29s
dW1ucykpICsKLSAgICAgICAgaHRtbEZvclRhYmxlUm93KCdDaHJvbWUgUmV2aXNpb24nLCByZXN1
bHRzW0NIUk9NRV9SRVZJU0lPTlNfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKSk7Ci19Ci0KLWZ1
bmN0aW9uIHdyYXBIVE1MSW5UYWJsZShkZXNjcmlwdGlvbiwgaHRtbCkKLXsKLSAgICByZXR1cm4g
JzxoMz4nICsgZGVzY3JpcHRpb24gKyAnPC9oMz48dGFibGU+PHRib2R5PicgKyBodG1sICsgJzwv
dGJvZHk+PC90YWJsZT4nOwotfQotCi1mdW5jdGlvbiBodG1sRm9yU3VtbWFyeVRhYmxlKHJlc3Vs
dHMsIG51bUNvbHVtbnMpCi17Ci0gICAgdmFyIHBlcmNlbnQgPSBbXTsKLSAgICB2YXIgZml4YWJs
ZSA9IHJlc3VsdHNbRklYQUJMRV9DT1VOVF9LRVldLnNsaWNlKDAsIG51bUNvbHVtbnMpOwotICAg
IHZhciBhbGxGaXhhYmxlID0gcmVzdWx0c1tBTExfRklYQUJMRV9DT1VOVF9LRVldLnNsaWNlKDAs
IG51bUNvbHVtbnMpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ29sdW1uczsgaSsrKSB7
Ci0gICAgICAgIHZhciBwZXJjZW50YWdlID0gMTAwICogKGFsbEZpeGFibGVbaV0gLSBmaXhhYmxl
W2ldKSAvIGFsbEZpeGFibGVbaV07Ci0gICAgICAgIC8vIFJvdW5kIHRvIHRoZSBuZWFyZXN0IHRl
bnRoIG9mIGEgcGVyY2VudC4KLSAgICAgICAgcGVyY2VudC5wdXNoKE1hdGgucm91bmQocGVyY2Vu
dGFnZSAqIDEwKSAvIDEwICsgJyUnKTsKLSAgICB9Ci0gICAgdmFyIGh0bWwgPSBodG1sRm9yUmV2
aXNpb25Sb3dzKHJlc3VsdHMsIG51bUNvbHVtbnMpICsKLSAgICAgICAgaHRtbEZvclRhYmxlUm93
KCdQZXJjZW50IHBhc3NlZCcsIHBlcmNlbnQpICsKLSAgICAgICAgaHRtbEZvclRhYmxlUm93KCdG
YWlsdXJlcyAoZGVkdXBlZCknLCBmaXhhYmxlKSArCi0gICAgICAgIGh0bWxGb3JUYWJsZVJvdygn
Rml4YWJsZSBUZXN0cycsIGFsbEZpeGFibGUpOwotICAgIHJldHVybiB3cmFwSFRNTEluVGFibGUo
J1N1bW1hcnknLCBodG1sKTsKLX0KLQotZnVuY3Rpb24gdmFsdWVzUGVyRXhwZWN0YXRpb24oY291
bnRzLCBudW1Db2x1bW5zKQotewotICAgIHZhciB2YWx1ZXMgPSB7fTsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG51bUNvbHVtbnM7IGkrKykgewotICAgICAgICBmb3IgKHZhciBleHBlY3RhdGlv
biBpbiBleHBlY3RhdGlvbnNNYXAoKSkgewotICAgICAgICAgICAgaWYgKGV4cGVjdGF0aW9uIGlu
IGNvdW50c1tpXSkgewotICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IGNvdW50c1tpXVtleHBl
Y3RhdGlvbl07Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZXNbZXhwZWN0YXRpb25dKQotICAg
ICAgICAgICAgICAgICAgICB2YWx1ZXNbZXhwZWN0YXRpb25dID0gW107Ci0gICAgICAgICAgICAg
ICAgdmFsdWVzW2V4cGVjdGF0aW9uXS5wdXNoKGNvdW50KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLSAgICByZXR1cm4gdmFsdWVzOwotfQotCi1mdW5jdGlvbiBodG1sRm9yVGVz
dFR5cGUocmVzdWx0cywga2V5LCBkZXNjcmlwdGlvbiwgbnVtQ29sdW1ucykKLXsKLSAgICB2YXIg
Y291bnRzID0gcmVzdWx0c1trZXldOwotICAgIHZhciBodG1sID0gaHRtbEZvclJldmlzaW9uUm93
cyhyZXN1bHRzLCBudW1Db2x1bW5zKTsKLSAgICB2YXIgdmFsdWVzID0gdmFsdWVzUGVyRXhwZWN0
YXRpb24oY291bnRzLCBudW1Db2x1bW5zKTsKLSAgICBmb3IgKHZhciBleHBlY3RhdGlvbiBpbiB2
YWx1ZXMpCi0gICAgICAgIGh0bWwgKz0gaHRtbEZvclRhYmxlUm93KGV4cGVjdGF0aW9uc01hcCgp
W2V4cGVjdGF0aW9uXSwgdmFsdWVzW2V4cGVjdGF0aW9uXSk7Ci0gICAgcmV0dXJuIHdyYXBIVE1M
SW5UYWJsZShkZXNjcmlwdGlvbiwgaHRtbCk7Ci19Ci0KLWZ1bmN0aW9uIGh0bWxGb3JUYWJsZVJv
dyhjb2x1bW5OYW1lLCB2YWx1ZXMpCi17Ci0gICAgcmV0dXJuICc8dHI+PHRkPicgKyBjb2x1bW5O
YW1lICsgJzwvdGQ+PHRkPicgKyB2YWx1ZXMuam9pbignPC90ZD48dGQ+JykgKyAnPC90ZD48L3Ry
Pic7Ci19Ci0KLS8vIFRha2VuIGZyb20gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hcGlzL2NoYXJ0
L2RvY3MvZGF0YV9mb3JtYXRzLmh0bWwuCi1mdW5jdGlvbiBleHRlbmRlZEVuY29kZShhcnJWYWxz
LCBtYXhWYWwpCi17Ci0gICAgdmFyIG1hcCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS0uJzsKLSAgICB2YXIgbWFwTGVuZ3Ro
ID0gbWFwLmxlbmd0aDsKLSAgICB2YXIgbWFwTGVuZ3RoU3F1YXJlZCA9IG1hcExlbmd0aCAqIG1h
cExlbmd0aDsKLQotICAgIHZhciBjaGFydERhdGEgPSAnJzsKLQotICAgIGZvciAodmFyIGkgPSAw
LCBsZW4gPSBhcnJWYWxzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIC8vIEluIGNh
c2UgdGhlIGFycmF5IHZhbHMgd2VyZSB0cmFuc2xhdGVkIHRvIHN0cmluZ3MuCi0gICAgICAgIHZh
ciBudW1lcmljVmFsID0gbmV3IE51bWJlcihhcnJWYWxzW2ldKTsKLSAgICAgICAgLy8gU2NhbGUg
dGhlIHZhbHVlIHRvIG1heFZhbC4KLSAgICAgICAgdmFyIHNjYWxlZFZhbCA9IE1hdGguZmxvb3Io
bWFwTGVuZ3RoU3F1YXJlZCAqIG51bWVyaWNWYWwgLyBtYXhWYWwpOwotCi0gICAgICAgIGlmKHNj
YWxlZFZhbCA+IG1hcExlbmd0aFNxdWFyZWQgLSAxKQotICAgICAgICAgICAgY2hhcnREYXRhICs9
ICIuLiI7Ci0gICAgICAgIGVsc2UgaWYgKHNjYWxlZFZhbCA8IDApCi0gICAgICAgICAgICBjaGFy
dERhdGEgKz0gJ19fJzsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBDYWxjdWxhdGUg
Zmlyc3QgYW5kIHNlY29uZCBkaWdpdHMgYW5kIGFkZCB0aGVtIHRvIHRoZSBvdXRwdXQuCi0gICAg
ICAgICAgICB2YXIgcXVvdGllbnQgPSBNYXRoLmZsb29yKHNjYWxlZFZhbCAvIG1hcExlbmd0aCk7
Ci0gICAgICAgICAgICB2YXIgcmVtYWluZGVyID0gc2NhbGVkVmFsIC0gbWFwTGVuZ3RoICogcXVv
dGllbnQ7Ci0gICAgICAgICAgICBjaGFydERhdGEgKz0gbWFwLmNoYXJBdChxdW90aWVudCkgKyBt
YXAuY2hhckF0KHJlbWFpbmRlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gY2hh
cnREYXRhOwotfQotCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkg
ewotICAgIHZhciByZXNvdXJjZUxvYWRlciA9IG5ldyBsb2FkZXIuTG9hZGVyKGludGlhbGl6ZUhp
c3RvcnkpOwotICAgIHJlc291cmNlTG9hZGVyLmxvYWQoKTsKLX0sIGZhbHNlKTsKLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImFnZ3JlZ2F0ZV9yZXN1bHRzLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PjwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuanMgYi9Ub29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRhZjEzMjc4YmRkYjVmNTUzMTg1ODMyNTJiM2M0ODY2YjU2ZWJmNDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0
ZV9yZXN1bHRzLmpzCkBAIC0wLDAgKzEsMjcyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBAZmlsZW92ZXJ2aWV3IENyZWF0ZXMgYSBkYXNoYm9h
cmQgZm9yIHRyYWNraW5nIG51bWJlciBvZiBwYXNzZXMvZmFpbHVyZXMgcGVyIHJ1bi4KKy8vCisv
LyBDdXJyZW50bHksIG9ubHkgd2Via2l0IHRlc3RzIGFyZSBzdXBwb3J0ZWQsIGJ1dCBhZGRpbmcg
b3RoZXIgdGVzdCB0eXBlcworLy8gc2hvdWxkIGp1c3QgcmVxdWlyZSB0aGUgZm9sbG93aW5nIHN0
ZXBzOgorLy8gICAgIC1nZW5lcmF0ZSByZXN1bHRzLmpzb24gZm9yIHRoZXNlIHRlc3RzCisvLyAg
ICAgLWNvcHkgdGhlbSB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24KKy8vICAgICAtYWRkIHRo
ZSBidWlsZGVyIG5hbWUgdG8gdGhlIGxpc3Qgb2YgYnVpbGRlcnMgaW4gZGFzaGJvYXJkX2Jhc2Uu
anMuCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gTWV0aG9kcyBhbmQgb2JqZWN0cyBmcm9t
IGRhc2hib2FyZF9iYXNlLmpzIHRvIG92ZXJyaWRlLgorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitm
dW5jdGlvbiBnZW5lcmF0ZVBhZ2UoKQoreworICAgIHZhciBodG1sID0gdWkuaHRtbC50ZXN0VHlw
ZVN3aXRjaGVyKHRydWUpICsgJzxicj4nOworICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gY3VycmVu
dEJ1aWxkZXJzKCkpCisgICAgICAgIGh0bWwgKz0gaHRtbEZvckJ1aWxkZXIoYnVpbGRlcik7Cisg
ICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBodG1sOworfQorCitmdW5jdGlvbiBoYW5kbGVW
YWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKK3sKKyAgICBzd2l0Y2goa2V5KSB7CisgICAg
Y2FzZSAncmF3VmFsdWVzJzoKKyAgICAgICAgZ19jdXJyZW50U3RhdGVba2V5XSA9IHZhbHVlID09
ICd0cnVlJzsKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitnX2RlZmF1bHREYXNoYm9hcmRTcGVjaWZpY1N0YXRl
VmFsdWVzID0geworICAgIHJhd1ZhbHVlczogZmFsc2UKK307CisKK2Z1bmN0aW9uIGh0bWxGb3JC
dWlsZGVyKGJ1aWxkZXIpCit7CisgICAgdmFyIHJlc3VsdHMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJb
YnVpbGRlcl07CisgICAgLy8gU29tZSBrZXlzIHdlcmUgYWRkZWQgbGF0ZXIgdGhhbiBvdGhlcnMs
IHNvIHRoZXkgZG9uJ3QgaGF2ZSBhcyBtYW55CisgICAgLy8gYnVpbGRzLiBVc2UgdGhlIHNob3J0
ZXN0LgorICAgIC8vIEZJWE1FOiBPbmNlIDUwMCBydW5zIGhhdmUgZmluaXNoZWQsIHdlIGNhbiBn
ZXQgcmlkIG9mIHBhc3NpbmcgdGhpcworICAgIC8vIGFyb3VuZCBhbmQganVzdCBhc3N1bWUgYWxs
IGtleXMgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgYnVpbGRlcnMgZm9yIGEKKyAgICAvLyBnaXZl
biBidWlsZGVyLgorICAgIHZhciBudW1Db2x1bW5zID0gcmVzdWx0c1tBTExfRklYQUJMRV9DT1VO
VF9LRVldLmxlbmd0aDsKKyAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPWNvbnRhaW5lcj48aDI+
JyArIGJ1aWxkZXIgKyAnPC9oMj4nOworCisgICAgaWYgKGdfY3VycmVudFN0YXRlLnJhd1ZhbHVl
cykKKyAgICAgICAgaHRtbCArPSByYXdWYWx1ZXNIVE1MKHJlc3VsdHMsIG51bUNvbHVtbnMpOwor
ICAgIGVsc2UgeworICAgICAgICBodG1sICs9ICc8YSBocmVmPSJ0aW1lbGluZV9leHBsb3Jlci5o
dG1sJyArIChsb2NhdGlvbi5oYXNoID8gbG9jYXRpb24uaGFzaCArICcmJyA6ICcjJykgKyAnYnVp
bGRlcj0nICsgYnVpbGRlciArICciPicgKworICAgICAgICAgICAgY2hhcnRIVE1MKHJlc3VsdHMs
IG51bUNvbHVtbnMpICsgJzwvYT4nOworICAgIH0KKworICAgIGh0bWwgKz0gJzwvZGl2Pic7Cisg
ICAgcmV0dXJuIGh0bWw7Cit9CisKK2Z1bmN0aW9uIHJhd1ZhbHVlc0hUTUwocmVzdWx0cywgbnVt
Q29sdW1ucykKK3sKKyAgICB2YXIgaHRtbCA9IGh0bWxGb3JTdW1tYXJ5VGFibGUocmVzdWx0cywg
bnVtQ29sdW1ucykgKworICAgICAgICBodG1sRm9yVGVzdFR5cGUocmVzdWx0cywgRklYQUJMRV9D
T1VOVFNfS0VZLCBGSVhBQkxFX0RFU0NSSVBUSU9OLCBudW1Db2x1bW5zKTsKKyAgICBpZiAoaXNM
YXlvdXRUZXN0UmVzdWx0cygpKSB7CisgICAgICAgIGh0bWwgKz0gaHRtbEZvclRlc3RUeXBlKHJl
c3VsdHMsIERFRkVSUkVEX0NPVU5UU19LRVksIERFRkVSUkVEX0RFU0NSSVBUSU9OLCBudW1Db2x1
bW5zKSArCisgICAgICAgICAgICBodG1sRm9yVGVzdFR5cGUocmVzdWx0cywgV09OVEZJWF9DT1VO
VFNfS0VZLCBXT05URklYX0RFU0NSSVBUSU9OLCBudW1Db2x1bW5zKTsKKyAgICB9CisgICAgcmV0
dXJuIGh0bWw7Cit9CisKK2Z1bmN0aW9uIGNoYXJ0SFRNTChyZXN1bHRzLCBudW1Db2x1bW5zKQor
eworICAgIHZhciBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID0gaXNUaXBPZlRyZWVXZWJLaXRC
dWlsZGVyKCk7CisgICAgdmFyIHJldmlzaW9uS2V5ID0gc2hvdWxkU2hvd1dlYktpdFJldmlzaW9u
cyA/IFdFQktJVF9SRVZJU0lPTlNfS0VZIDogQ0hST01FX1JFVklTSU9OU19LRVk7CisgICAgdmFy
IHN0YXJ0UmV2aXNpb24gPSByZXN1bHRzW3JldmlzaW9uS2V5XVtudW1Db2x1bW5zIC0gMV07Cisg
ICAgdmFyIGVuZFJldmlzaW9uID0gcmVzdWx0c1tyZXZpc2lvbktleV1bMF07CisgICAgdmFyIHJl
dmlzaW9uTGFiZWwgPSBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID8gIldlYktpdCBSZXZpc2lv
biIgOiAiQ2hyb21pdW0gUmV2aXNpb24iOworCisgICAgdmFyIGZpeGFibGUgPSByZXN1bHRzW0ZJ
WEFCTEVfQ09VTlRfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKTsKKyAgICB2YXIgaHRtbCA9IGNo
YXJ0KCJUb3RhbCBmYWlsaW5nIiwgeyIiOiBmaXhhYmxlfSwgcmV2aXNpb25MYWJlbCwgc3RhcnRS
ZXZpc2lvbiwgZW5kUmV2aXNpb24pOworCisgICAgdmFyIHZhbHVlcyA9IHZhbHVlc1BlckV4cGVj
dGF0aW9uKHJlc3VsdHNbRklYQUJMRV9DT1VOVFNfS0VZXSwgbnVtQ29sdW1ucyk7CisgICAgLy8g
RG9uJ3QgY2FyZSBhYm91dCBudW1iZXIgb2YgcGFzc2VzIGZvciB0aGUgY2hhcnRzLgorICAgIGRl
bGV0ZSh2YWx1ZXNbJ1AnXSk7CisKKyAgICByZXR1cm4gaHRtbCArIGNoYXJ0KCJEZXRhaWxlZCBi
cmVha2Rvd24iLCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlz
aW9uKTsKK30KKwordmFyIExBQkVMX0NPTE9SUyA9IFsnRkYwMDAwJywgJzAwRkYwMCcsICcwMDAw
RkYnLCAnMDAwMDAwJywgJ0ZGNkVCNCcsICdGRkE4MTInLCAnOUIzMEZGJywgJzAwRkZDQyddOwor
CisvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gZXhjbHVkZSBvdXRsaWVycy4gVGhpcyBp
cyBqdXN0IHNvIHdlIGV4Y2x1ZGUKKy8vIHJ1bnMgd2hlcmUgZXZlcnkgdGVzdCBmYWlsZWQuCit2
YXIgTUFYX1ZBTFVFID0gMTAwMDA7CisKK2Z1bmN0aW9uIGZpbHRlcmVkVmFsdWVzKHZhbHVlcywg
ZGVzaXJlZE51bWJlck9mUG9pbnRzKQoreworICAgIC8vIEZpbHRlciBvdXQgdmFsdWVzIHRvIG1h
a2UgdGhlIGdyYXBoIGEgYml0IG1vcmUgcmVhZGFibGUgYW5kIHRvIGtlZXAgVVJMcworICAgIC8v
IGZyb20gZXhjZWVkaW5nIHRoZSBicm93c2VycyBtYXggbGVuZ3RoIHJlc3RyaWN0aW9uLgorICAg
IHZhciBmaWx0ZXJBbW91bnQgPSBNYXRoLmZsb29yKHZhbHVlcy5sZW5ndGggLyBkZXNpcmVkTnVt
YmVyT2ZQb2ludHMpOworICAgIGlmIChmaWx0ZXJBbW91bnQgPCAxKQorICAgICAgICByZXR1cm4g
dmFsdWVzOworCisgICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIoZnVuY3Rpb24oZWxlbWVudCwgaW5k
ZXgsIGFycmF5KSB7CisgICAgICAgIC8vIEluY2x1ZGUgdGhlIG1vc3QgcmVjZW50IGFuZCBvbGRl
c3QgdmFsdWVzIGFuZCBleGNsdWRlIG91dGxpZXJzLgorICAgICAgICByZXR1cm4gKGluZGV4ICUg
ZmlsdGVyQW1vdW50ID09IDAgfHwgaW5kZXggPT0gYXJyYXkubGVuZ3RoIC0gMSkgJiYgKGFycmF5
W2luZGV4XSA8IE1BWF9WQUxVRSAmJiBhcnJheVtpbmRleF0gIT0gMCk7CisgICAgfSk7Cit9CisK
K2Z1bmN0aW9uIGNoYXJ0VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsIHN0YXJ0UmV2
aXNpb24sIGVuZFJldmlzaW9uLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpIHsKKyAgICB2YXIgbWF4
VmFsdWUgPSAwOworICAgIGZvciAodmFyIGV4cGVjdGF0aW9uIGluIHZhbHVlcykKKyAgICAgICAg
bWF4VmFsdWUgPSBNYXRoLm1heChtYXhWYWx1ZSwgTWF0aC5tYXguYXBwbHkobnVsbCwgZmlsdGVy
ZWRWYWx1ZXModmFsdWVzW2V4cGVjdGF0aW9uXSwgZGVzaXJlZE51bWJlck9mUG9pbnRzKSkpOwor
CisgICAgdmFyIGNoYXJ0RGF0YSA9ICcnOworICAgIHZhciBsYWJlbHMgPSAnJzsKKyAgICB2YXIg
bnVtTGFiZWxzID0gMDsKKworICAgIHZhciBmaXJzdCA9IHRydWU7CisgICAgZm9yICh2YXIgZXhw
ZWN0YXRpb24gaW4gdmFsdWVzKSB7CisgICAgICAgIGNoYXJ0RGF0YSArPSAoZmlyc3QgPyAnZTon
IDogJywnKSArIGV4dGVuZGVkRW5jb2RlKGZpbHRlcmVkVmFsdWVzKHZhbHVlc1tleHBlY3RhdGlv
bl0sIGRlc2lyZWROdW1iZXJPZlBvaW50cykucmV2ZXJzZSgpLCBtYXhWYWx1ZSk7CisKKyAgICAg
ICAgaWYgKGV4cGVjdGF0aW9uKSB7CisgICAgICAgICAgICBudW1MYWJlbHMrKzsKKyAgICAgICAg
ICAgIGxhYmVscyArPSAoZmlyc3QgPyAnJyA6ICd8JykgKyBleHBlY3RhdGlvbnNNYXAoKVtleHBl
Y3RhdGlvbl07CisgICAgICAgIH0KKyAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICB9CisKKyAg
ICB2YXIgdXJsID0gImh0dHA6Ly9jaGFydC5hcGlzLmdvb2dsZS5jb20vY2hhcnQ/Y2h0PWxjJmNo
cz02MDB4NDAwJmNoZD0iICsKKyAgICAgICAgICAgIGNoYXJ0RGF0YSArICImY2hnPTE1LDE1LDEs
MyZjaHh0PXgseCx5JmNoeGw9MTp8fCIgKyByZXZpc2lvbkxhYmVsICsKKyAgICAgICAgICAgICJ8
JmNoeHI9MCwiICsgc3RhcnRSZXZpc2lvbiArICIsIiArIGVuZFJldmlzaW9uICsgInwyLDAsIiAr
IG1heFZhbHVlICsgIiZjaHR0PSIgKyB0aXRsZTsKKworCisgICAgaWYgKGxhYmVscykKKyAgICAg
ICAgdXJsICs9ICImY2hkbD0iICsgbGFiZWxzICsgIiZjaGNvPSIgKyBMQUJFTF9DT0xPUlMuc2xp
Y2UoMCwgbnVtTGFiZWxzKS5qb2luKCcsJyk7CisgICAgcmV0dXJuIHVybDsKK30KKworZnVuY3Rp
b24gY2hhcnQodGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5k
UmV2aXNpb24pCit7CisgICAgdmFyIGRlc2lyZWROdW1iZXJPZlBvaW50cyA9IDQwMDsKKyAgICB2
YXIgdXJsID0gY2hhcnRVcmwodGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZp
c2lvbiwgZW5kUmV2aXNpb24sIGRlc2lyZWROdW1iZXJPZlBvaW50cyk7CisKKyAgICB3aGlsZSAo
dXJsLmxlbmd0aCA+PSAyMDQ4KSB7CisgICAgICAgIC8vIERlY3JlYXNlIHRoZSBkZXNpcmVkIG51
bWJlciBvZiBwb2ludHMgZ3JhZHVhbGx5IHVudGlsIHdlIGdldCBhIFVSTCB0aGF0CisgICAgICAg
IC8vIGRvZXNuJ3QgZXhjZWVkIGNoYXJ0c2VydmVyJ3MgbWF4IFVSTCBsZW5ndGguCisgICAgICAg
IGRlc2lyZWROdW1iZXJPZlBvaW50cyA9IDMgLyA0ICogZGVzaXJlZE51bWJlck9mUG9pbnRzOwor
ICAgICAgICB1cmwgPSBjaGFydFVybCh0aXRsZSwgdmFsdWVzLCByZXZpc2lvbkxhYmVsLCBzdGFy
dFJldmlzaW9uLCBlbmRSZXZpc2lvbiwgZGVzaXJlZE51bWJlck9mUG9pbnRzKTsKKyAgICB9CisK
KyAgICByZXR1cm4gJzxpbWcgc3JjPSInICsgdXJsICsgJyI+JzsKK30KKworZnVuY3Rpb24gaHRt
bEZvclJldmlzaW9uUm93cyhyZXN1bHRzLCBudW1Db2x1bW5zKQoreworICAgIHJldHVybiBodG1s
Rm9yVGFibGVSb3coJ1dlYktpdCBSZXZpc2lvbicsIHJlc3VsdHNbV0VCS0lUX1JFVklTSU9OU19L
RVldLnNsaWNlKDAsIG51bUNvbHVtbnMpKSArCisgICAgICAgIGh0bWxGb3JUYWJsZVJvdygnQ2hy
b21lIFJldmlzaW9uJywgcmVzdWx0c1tDSFJPTUVfUkVWSVNJT05TX0tFWV0uc2xpY2UoMCwgbnVt
Q29sdW1ucykpOworfQorCitmdW5jdGlvbiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24sIGh0
bWwpCit7CisgICAgcmV0dXJuICc8aDM+JyArIGRlc2NyaXB0aW9uICsgJzwvaDM+PHRhYmxlPjx0
Ym9keT4nICsgaHRtbCArICc8L3Rib2R5PjwvdGFibGU+JzsKK30KKworZnVuY3Rpb24gaHRtbEZv
clN1bW1hcnlUYWJsZShyZXN1bHRzLCBudW1Db2x1bW5zKQoreworICAgIHZhciBwZXJjZW50ID0g
W107CisgICAgdmFyIGZpeGFibGUgPSByZXN1bHRzW0ZJWEFCTEVfQ09VTlRfS0VZXS5zbGljZSgw
LCBudW1Db2x1bW5zKTsKKyAgICB2YXIgYWxsRml4YWJsZSA9IHJlc3VsdHNbQUxMX0ZJWEFCTEVf
Q09VTlRfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG51bUNvbHVtbnM7IGkrKykgeworICAgICAgICB2YXIgcGVyY2VudGFnZSA9IDEwMCAqIChhbGxG
aXhhYmxlW2ldIC0gZml4YWJsZVtpXSkgLyBhbGxGaXhhYmxlW2ldOworICAgICAgICAvLyBSb3Vu
ZCB0byB0aGUgbmVhcmVzdCB0ZW50aCBvZiBhIHBlcmNlbnQuCisgICAgICAgIHBlcmNlbnQucHVz
aChNYXRoLnJvdW5kKHBlcmNlbnRhZ2UgKiAxMCkgLyAxMCArICclJyk7CisgICAgfQorICAgIHZh
ciBodG1sID0gaHRtbEZvclJldmlzaW9uUm93cyhyZXN1bHRzLCBudW1Db2x1bW5zKSArCisgICAg
ICAgIGh0bWxGb3JUYWJsZVJvdygnUGVyY2VudCBwYXNzZWQnLCBwZXJjZW50KSArCisgICAgICAg
IGh0bWxGb3JUYWJsZVJvdygnRmFpbHVyZXMgKGRlZHVwZWQpJywgZml4YWJsZSkgKworICAgICAg
ICBodG1sRm9yVGFibGVSb3coJ0ZpeGFibGUgVGVzdHMnLCBhbGxGaXhhYmxlKTsKKyAgICByZXR1
cm4gd3JhcEhUTUxJblRhYmxlKCdTdW1tYXJ5JywgaHRtbCk7Cit9CisKK2Z1bmN0aW9uIHZhbHVl
c1BlckV4cGVjdGF0aW9uKGNvdW50cywgbnVtQ29sdW1ucykKK3sKKyAgICB2YXIgdmFsdWVzID0g
e307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1Db2x1bW5zOyBpKyspIHsKKyAgICAgICAg
Zm9yICh2YXIgZXhwZWN0YXRpb24gaW4gZXhwZWN0YXRpb25zTWFwKCkpIHsKKyAgICAgICAgICAg
IGlmIChleHBlY3RhdGlvbiBpbiBjb3VudHNbaV0pIHsKKyAgICAgICAgICAgICAgICB2YXIgY291
bnQgPSBjb3VudHNbaV1bZXhwZWN0YXRpb25dOworICAgICAgICAgICAgICAgIGlmICghdmFsdWVz
W2V4cGVjdGF0aW9uXSkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzW2V4cGVjdGF0aW9uXSA9
IFtdOworICAgICAgICAgICAgICAgIHZhbHVlc1tleHBlY3RhdGlvbl0ucHVzaChjb3VudCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHZhbHVlczsKK30KKwor
ZnVuY3Rpb24gaHRtbEZvclRlc3RUeXBlKHJlc3VsdHMsIGtleSwgZGVzY3JpcHRpb24sIG51bUNv
bHVtbnMpCit7CisgICAgdmFyIGNvdW50cyA9IHJlc3VsdHNba2V5XTsKKyAgICB2YXIgaHRtbCA9
IGh0bWxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVtQ29sdW1ucyk7CisgICAgdmFyIHZhbHVl
cyA9IHZhbHVlc1BlckV4cGVjdGF0aW9uKGNvdW50cywgbnVtQ29sdW1ucyk7CisgICAgZm9yICh2
YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVzKQorICAgICAgICBodG1sICs9IGh0bWxGb3JUYWJsZVJv
dyhleHBlY3RhdGlvbnNNYXAoKVtleHBlY3RhdGlvbl0sIHZhbHVlc1tleHBlY3RhdGlvbl0pOwor
ICAgIHJldHVybiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24sIGh0bWwpOworfQorCitmdW5j
dGlvbiBodG1sRm9yVGFibGVSb3coY29sdW1uTmFtZSwgdmFsdWVzKQoreworICAgIHJldHVybiAn
PHRyPjx0ZD4nICsgY29sdW1uTmFtZSArICc8L3RkPjx0ZD4nICsgdmFsdWVzLmpvaW4oJzwvdGQ+
PHRkPicpICsgJzwvdGQ+PC90cj4nOworfQorCisvLyBUYWtlbiBmcm9tIGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vYXBpcy9jaGFydC9kb2NzL2RhdGFfZm9ybWF0cy5odG1sLgorZnVuY3Rpb24gZXh0
ZW5kZWRFbmNvZGUoYXJyVmFscywgbWF4VmFsKQoreworICAgIHZhciBtYXAgPSAnQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktLic7
CisgICAgdmFyIG1hcExlbmd0aCA9IG1hcC5sZW5ndGg7CisgICAgdmFyIG1hcExlbmd0aFNxdWFy
ZWQgPSBtYXBMZW5ndGggKiBtYXBMZW5ndGg7CisKKyAgICB2YXIgY2hhcnREYXRhID0gJyc7CisK
KyAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYXJyVmFscy5sZW5ndGg7IGkgPCBsZW47IGkrKykg
eworICAgICAgICAvLyBJbiBjYXNlIHRoZSBhcnJheSB2YWxzIHdlcmUgdHJhbnNsYXRlZCB0byBz
dHJpbmdzLgorICAgICAgICB2YXIgbnVtZXJpY1ZhbCA9IG5ldyBOdW1iZXIoYXJyVmFsc1tpXSk7
CisgICAgICAgIC8vIFNjYWxlIHRoZSB2YWx1ZSB0byBtYXhWYWwuCisgICAgICAgIHZhciBzY2Fs
ZWRWYWwgPSBNYXRoLmZsb29yKG1hcExlbmd0aFNxdWFyZWQgKiBudW1lcmljVmFsIC8gbWF4VmFs
KTsKKworICAgICAgICBpZihzY2FsZWRWYWwgPiBtYXBMZW5ndGhTcXVhcmVkIC0gMSkKKyAgICAg
ICAgICAgIGNoYXJ0RGF0YSArPSAiLi4iOworICAgICAgICBlbHNlIGlmIChzY2FsZWRWYWwgPCAw
KQorICAgICAgICAgICAgY2hhcnREYXRhICs9ICdfXyc7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgLy8gQ2FsY3VsYXRlIGZpcnN0IGFuZCBzZWNvbmQgZGlnaXRzIGFuZCBhZGQgdGhlbSB0
byB0aGUgb3V0cHV0LgorICAgICAgICAgICAgdmFyIHF1b3RpZW50ID0gTWF0aC5mbG9vcihzY2Fs
ZWRWYWwgLyBtYXBMZW5ndGgpOworICAgICAgICAgICAgdmFyIHJlbWFpbmRlciA9IHNjYWxlZFZh
bCAtIG1hcExlbmd0aCAqIHF1b3RpZW50OworICAgICAgICAgICAgY2hhcnREYXRhICs9IG1hcC5j
aGFyQXQocXVvdGllbnQpICsgbWFwLmNoYXJBdChyZW1haW5kZXIpOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIGNoYXJ0RGF0YTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVzb3VyY2VMb2FkZXIgPSBuZXcgbG9hZGVy
LkxvYWRlcihpbnRpYWxpemVIaXN0b3J5KTsKKyAgICByZXNvdXJjZUxvYWRlci5sb2FkKCk7Cit9
LCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNo
Ym9hcmRzL3RyZWVtYXAuaHRtbCBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvdHJlZW1hcC5odG1sCmluZGV4IGQwOTViZTdmYTY2MWNmYWJlOTk4ZDBmZmUyNjdhZDdj
Y2YwODI5NGQuLjgxYjZkMmMwNzJkZmJkMjJlNDBhYjFmMDI5NDQ5NjI5NGYwMGFhZjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1hcC5o
dG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1h
cC5odG1sCkBAIC0xMTIsMjU4ICsxMTIsOSBAQCB0ZCB7CiA8c2NyaXB0IHNyYz0ic3RyaW5nLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJkYXNoYm9hcmRfYmFzZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0idWkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9J3dlYnRyZWVtYXAuanMn
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InRyZWVtYXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9IndlYnRyZWVtYXAuanMiPjwvc2NyaXB0PgogCiA8ZGl2IGlkPSdoZWFkZXItY29udGFpbmVy
Jz48L2Rpdj4KIDxwPkNsaWNrIG9uIGEgYm94IHRvIHpvb20gaW4uIENsaWNrIG9uIHRoZSBvdXRl
cm1vc3QgYm94IHRvIHpvb20gb3V0LiA8YSBocmVmPSIiIG9uY2xpY2s9InNob3dBdmVyYWdlcygp
O3JldHVybiBmYWxzZTsiPlNob3cgYXZlcmFnZXM8L2E+PC9wPgogPGRpdiBpZD0nbWFwJz48L2Rp
dj4KLQotPHNjcmlwdD4KLXZhciBURVNUX1VSTF9CQVNFX1BBVEggPSAiaHR0cDovL3N2bi53ZWJr
aXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rLyI7Ci0KLWZ1bmN0aW9uIGh1bWFuUmVhZGFi
bGVUaW1lKG1pbGxpc2Vjb25kcykKLXsKLSAgICBpZiAobWlsbGlzZWNvbmRzIDwgMTAwMCkKLSAg
ICAgICAgcmV0dXJuIE1hdGguZmxvb3IobWlsbGlzZWNvbmRzKSArICdtcyc7Ci0gICAgZWxzZSBp
ZiAobWlsbGlzZWNvbmRzIDwgNjAwMDApCi0gICAgICAgIHJldHVybiAobWlsbGlzZWNvbmRzIC8g
MTAwMCkudG9QcmVjaXNpb24oMikgKyAncyc7Ci0KLSAgICB2YXIgbWludXRlcyA9IE1hdGguZmxv
b3IobWlsbGlzZWNvbmRzIC8gNjAwMDApOwotICAgIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcigo
bWlsbGlzZWNvbmRzIC0gbWludXRlcyAqIDYwMDAwKSAvIDEwMDApOwotICAgIHJldHVybiBtaW51
dGVzICsgJ20nICsgc2Vjb25kcyArICdzJzsKLX0KLQotLy8gVGhpcyBsb29rcyBsaWtlOgotLy8g
eyAiZGF0YSI6IHsiJGFyZWEiOiAoc3VtIG9mIGFsbCB0aW1pbmdzKX0sCi0vLyAgICJuYW1lIjog
KG5hbWUgb2YgdGhpcyBub2RlKSwKLS8vICAgImNoaWxkcmVuIjogWyAoY2hpbGQgbm9kZXMsIGlu
IHRoZSBzYW1lIGZvcm1hdCBhcyB0aGlzKSBdIH0KLS8vIGNoaWxkQ291bnQgaXMgYWRkZWQganVz
dCB0byBiZSBpbmNsdWRlcyBpbiB0aGUgbm9kZSdzIG5hbWUKLWZ1bmN0aW9uIGNvbnZlcnRUb1dl
YlRyZWVtYXBGb3JtYXQodHJlZW5hbWUsIHRyZWUsIHBhdGgpCi17Ci0gICAgdmFyIHRvdGFsID0g
MDsKLSAgICB2YXIgY2hpbGRDb3VudCA9IDA7Ci0gICAgdmFyIGNoaWxkcmVuID0gW107Ci0gICAg
Zm9yICh2YXIgbmFtZSBpbiB0cmVlKSB7Ci0gICAgICAgIHZhciB0cmVlTm9kZSA9IHRyZWVbbmFt
ZV07Ci0gICAgICAgIGlmICh0eXBlb2YgdHJlZU5vZGUgPT0gIm51bWJlciIpIHsKLSAgICAgICAg
ICAgIHZhciB0aW1lID0gdHJlZU5vZGU7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IHsKLSAgICAg
ICAgICAgICAgICAiZGF0YSI6IHsiJGFyZWEiOiB0aW1lfSwKLSAgICAgICAgICAgICAgICAibmFt
ZSI6IG5hbWUgKyAiICgiICsgaHVtYW5SZWFkYWJsZVRpbWUodGltZSkgKyAiKSIKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKG5vZGUpOwotICAgICAgICAgICAgdG90
YWwgKz0gdGltZTsKLSAgICAgICAgICAgIGNoaWxkQ291bnQrKzsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHZhciBuZXdQYXRoID0gcGF0aCA/IHBhdGggKyAnLycgKyBuYW1lIDogbmFt
ZTsKLSAgICAgICAgICAgIHZhciBzdWJ0cmVlID0gY29udmVydFRvV2ViVHJlZW1hcEZvcm1hdChu
YW1lLCB0cmVlTm9kZSwgbmV3UGF0aCk7Ci0gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKHN1YnRy
ZWUpOwotICAgICAgICAgICAgdG90YWwgKz0gc3VidHJlZVsiZGF0YSJdWyIkYXJlYSJdOwotICAg
ICAgICAgICAgY2hpbGRDb3VudCArPSBzdWJ0cmVlWyJjaGlsZENvdW50Il07Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBjaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKLSAgICAgICAgYVRp
bWUgPSBhLmRhdGFbIiRhcmVhIl0KLSAgICAgICAgYlRpbWUgPSBiLmRhdGFbIiRhcmVhIl0KLSAg
ICAgICAgcmV0dXJuIGJUaW1lIC0gYVRpbWU7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gewotICAg
ICAgICAiZGF0YSI6IHsiJGFyZWEiOiB0b3RhbH0sCi0gICAgICAgICJuYW1lIjogdHJlZW5hbWUg
KyAiICgiICsgaHVtYW5SZWFkYWJsZVRpbWUodG90YWwpICsgIiAtICIgKyBjaGlsZENvdW50ICsg
IiB0ZXN0cykiLAotICAgICAgICAiY2hpbGRyZW4iOiBjaGlsZHJlbiwKLSAgICAgICAgImNoaWxk
Q291bnQiOiBjaGlsZENvdW50LAotICAgICAgICAicGF0aCI6IHBhdGgKLSAgICB9OwotfQotCi1m
dW5jdGlvbiBsaXN0T2ZBbGxOb25MZWFmTm9kZXModHJlZSwgbGlzdCkKLXsKLSAgICBpZiAoIXRy
ZWUuY2hpbGRyZW4pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbGlzdCkKLSAgICAgICAg
bGlzdCA9IFtdOwotICAgIGxpc3QucHVzaCh0cmVlKTsKLQotICAgIHRyZWUuY2hpbGRyZW4uZm9y
RWFjaChmdW5jdGlvbihjaGlsZCkgewotICAgICAgICBsaXN0T2ZBbGxOb25MZWFmTm9kZXMoY2hp
bGQsIGxpc3QpOwotICAgIH0pOwotICAgIHJldHVybiBsaXN0OwotfQotCi1mdW5jdGlvbiByZXZl
cnNlU29ydEJ5QXZlcmFnZShsaXN0KQotewotICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7
Ci0gICAgICAgIHZhciBhdmdBID0gYS5kYXRhWyckYXJlYSddIC8gYS5jaGlsZENvdW50OwotICAg
ICAgICB2YXIgYXZnQiA9IGIuZGF0YVsnJGFyZWEnXSAvIGIuY2hpbGRDb3VudDsKLSAgICAgICAg
cmV0dXJuIGF2Z0IgLSBhdmdBOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBzaG93QXZlcmFnZXMo
KQotewotICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScp
OwotICAgIHRhYmxlLmlubmVySFRNTCA9ICc8dGg+ZGlyZWN0b3J5PC90aD48dGg+IyB0ZXN0czwv
dGg+PHRoPmF2ZyB0aW1lIC8gdGVzdDwvdGg+JzsKLQotICAgIHZhciBhbGxOb2RlcyA9IGxpc3RP
ZkFsbE5vbkxlYWZOb2RlcyhnX3dlYlRyZWUpOwotICAgIHJldmVyc2VTb3J0QnlBdmVyYWdlKGFs
bE5vZGVzKTsKLSAgICBhbGxOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAg
dmFyIGF2ZXJhZ2UgPSBub2RlLmRhdGFbJyRhcmVhJ10gLyBub2RlLmNoaWxkQ291bnQ7Ci0gICAg
ICAgIGlmIChhdmVyYWdlID4gMTAwICYmIG5vZGUuY2hpbGRDb3VudCAhPSAxKSB7Ci0gICAgICAg
ICAgICB2YXIgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwotICAgICAgICAgICAg
dHIuaW5uZXJIVE1MID0gJzx0ZD48L3RkPjx0ZD4nICsgbm9kZS5jaGlsZENvdW50ICsgJzwvdGQ+
PHRkPicgKyBodW1hblJlYWRhYmxlVGltZShhdmVyYWdlKSArICc8L3RkPic7Ci0gICAgICAgICAg
ICB0ci5xdWVyeVNlbGVjdG9yKCd0ZCcpLmlubmVyVGV4dCA9IG5vZGUucGF0aDsKLSAgICAgICAg
ICAgIHRhYmxlLmFwcGVuZENoaWxkKHRyKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFy
IG1hcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYXAnKTsKLSAgICBtYXAucGFyZW50Tm9k
ZS5yZXBsYWNlQ2hpbGQodGFibGUsIG1hcCk7Ci19Ci0KLXZhciBnX2lzR2VuZXJhdGluZ1BhZ2Ug
PSBmYWxzZTsKLXZhciBnX3dlYlRyZWU7Ci0KLWZ1bmN0aW9uIGdlbmVyYXRlUGFnZSgpCi17Ci0g
ICAgJCgnaGVhZGVyLWNvbnRhaW5lcicpLmlubmVySFRNTCA9IHVpLmh0bWwudGVzdFR5cGVTd2l0
Y2hlcigpOwotCi0gICAgZ19pc0dlbmVyYXRpbmdQYWdlID0gdHJ1ZTsKLQotICAgIHZhciByYXdU
cmVlID0gZ19yZXN1bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXIgfHwgY3VycmVu
dEJ1aWxkZXJHcm91cCgpLmRlZmF1bHRCdWlsZGVyKCldOwotICAgIGdfd2ViVHJlZSA9IGNvbnZl
cnRUb1dlYlRyZWVtYXBGb3JtYXQoJ0xheW91dFRlc3RzJywgcmF3VHJlZSk7Ci0gICAgYXBwZW5k
VHJlZW1hcCgkKCdtYXAnKSwgZ193ZWJUcmVlKTsKLQotICAgIGlmIChnX2N1cnJlbnRTdGF0ZS50
cmVlbWFwZm9jdXMpCi0gICAgICAgIGZvY3VzUGF0aChnX3dlYlRyZWUsIGdfY3VycmVudFN0YXRl
LnRyZWVtYXBmb2N1cykKLQotICAgIGdfaXNHZW5lcmF0aW5nUGFnZSA9IGZhbHNlOwotfQotCi1m
dW5jdGlvbiBmb2N1c1BhdGgodHJlZSwgcGF0aCkKLXsKLSAgICB2YXIgcGFydHMgPSBkZWNvZGVV
UklDb21wb25lbnQocGF0aCkuc3BsaXQoJy8nKTsKLSAgICBpZiAoZXh0cmFjdE5hbWUodHJlZSkg
IT0gcGFydHNbMF0pIHsKLSAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGZvY3VzIHRy
ZWUgcm9vdGVkIGF0ICcgKyBwYXJ0c1swXSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHZhciBj
aGlsZHJlbiA9IHRyZWUuY2hpbGRyZW47Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2hp
bGRyZW4ubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2pd
OwotICAgICAgICAgICAgaWYgKGV4dHJhY3ROYW1lKGNoaWxkKSA9PSBwYXJ0c1tpXSkgewotICAg
ICAgICAgICAgICAgIHRyZWUgPSBjaGlsZDsKLSAgICAgICAgICAgICAgICBmb2N1cyh0cmVlKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBpZiAoaiA9PSBjaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
J0NvdWxkIG5vdCBmaW5kIHRyZWUgYXQgJyArIHBhcnRzW2ldKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotCi19Ci0KLWZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFzaFBhcmFt
ZXRlcihrZXksIHZhbHVlKQotewotICAgIHN3aXRjaChrZXkpIHsKLSAgICBjYXNlICdidWlsZGVy
JzoKLSAgICAgICAgdmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUs
Ci0gICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHZhbHVlIGluIGN1cnJlbnRCdWlsZGVy
cygpOyB9KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlICd0cmVlbWFwZm9jdXMn
OgotICAgICAgICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVy
ZSdzIHByb2JhYmx5IGEgc2ltcGxlciByZWdleHAgaGVyZS4gSnVzdCB0cnlpbmcgdG8gbWF0Y2gg
YXNjaWkgKyBmb3J3YXJkLXNsYXNoLgotICAgICAgICAgICAgICAgIC8vIGUuZy4gTGF5b3V0VGVz
dHMvZm9vL2Jhci5odG1sCi0gICAgICAgICAgICAgICAgcmV0dXJuICh2YWx1ZS5tYXRjaCgvXihc
dytcL1x3KikqJC8pKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWdfZGVmYXVs
dERhc2hib2FyZFNwZWNpZmljU3RhdGVWYWx1ZXMgPSB7Ci0gICAgYnVpbGRlcjogbnVsbCwKLSAg
ICB0cmVlbWFwZm9jdXM6ICcnLAotfTsKLQotREJfU1BFQ0lGSUNfSU5WQUxJREFUSU5HX1BBUkFN
RVRFUlMgPSB7Ci0gICAgJ3Rlc3RUeXBlJzogJ2J1aWxkZXInLAotICAgICdncm91cCc6ICdidWls
ZGVyJwotfTsKLQotZnVuY3Rpb24gaGFuZGxlUXVlcnlQYXJhbWV0ZXJDaGFuZ2UocGFyYW1zKQot
ewotICAgIGZvciAodmFyIHBhcmFtIGluIHBhcmFtcykgewotICAgICAgICBpZiAocGFyYW0gIT0g
J3RyZWVtYXBmb2N1cycpIHsKLSAgICAgICAgICAgICQoJ21hcCcpLmlubmVySFRNTCA9ICdMb2Fk
aW5nLi4uJzsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZXh0cmFjdE5hbWUobm9kZSkKLXsKLSAgICBy
ZXR1cm4gbm9kZS5uYW1lLnNwbGl0KCcgJylbMF07Ci19Ci0KLWZ1bmN0aW9uIGZ1bGxOYW1lKG5v
ZGUpCi17Ci0gICAgdmFyIGJ1ZmZlciA9IFtleHRyYWN0TmFtZShub2RlKV07Ci0gICAgd2hpbGUg
KG5vZGUucGFyZW50KSB7Ci0gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudDsKLSAgICAgICAgYnVm
ZmVyLnVuc2hpZnQoZXh0cmFjdE5hbWUobm9kZSkpOwotICAgIH0KLSAgICByZXR1cm4gYnVmZmVy
LmpvaW4oJy8nKTsKLX0KLQotZnVuY3Rpb24gaGFuZGxlRm9jdXModHJlZSkKLXsKLSAgICB2YXIg
Y3VycmVudGx5Rm9jdXNlZE5vZGUgPSAkKCdmb2N1c2VkLWxlYWYnKTsKLSAgICBpZiAoY3VycmVu
dGx5Rm9jdXNlZE5vZGUpCi0gICAgICAgIGN1cnJlbnRseUZvY3VzZWROb2RlLmlkID0gJyc7Ci0K
LSAgICBpZiAoIXRyZWUuY2hpbGRyZW4pCi0gICAgICAgIHRyZWUuZG9tLmlkID0gJ2ZvY3VzZWQt
bGVhZic7Ci0KLSAgICB2YXIgbmFtZSA9IGZ1bGxOYW1lKHRyZWUpOwotCi0gICAgaWYgKCF0cmVl
LmNoaWxkcmVuICYmICF0cmVlLmV4dHJhRG9tICYmIGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkgewot
ICAgICAgICB0cmVlLmV4dHJhRG9tID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7Ci0g
ICAgICAgIHRyZWUuZXh0cmFEb20uY2xhc3NOYW1lID0gJ2V4dHJhLWRvbSc7Ci0gICAgICAgIHRy
ZWUuZG9tLmFwcGVuZENoaWxkKHRyZWUuZXh0cmFEb20pOwotCi0gICAgICAgIGxvYWRlci5yZXF1
ZXN0KFRFU1RfVVJMX0JBU0VfUEFUSCArIG5hbWUsCi0gICAgICAgICAgICBmdW5jdGlvbih4aHIp
IHsKLSAgICAgICAgICAgICAgICB0cmVlLmV4dHJhRG9tLm9ubW91c2Vkb3duID0gZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICAgICAgdHJlZS5leHRyYURvbS50ZXh0Q29udGVudCA9IHho
ci5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZnVuY3Rpb24gKHho
cikgewotICAgICAgICAgICAgICAgIHRyZWUuZXh0cmFEb20udGV4dENvbnRlbnQgPSAiQ291bGQg
bm90IGxvYWQgdGVzdC4iCi0gICAgICAgIH0pOwotICAgIH0KLQotICAgIC8vIFdlIGRvbid0IHdh
bnQgdGhlIGZvY3VzIGNhbGxzIGR1cmluZyBnZW5lcmF0ZVBhZ2UgdG8gdHJ5IHRvIG1vZGlmeSB0
aGUgcXVlcnkgc3RhdGUuCi0gICAgaWYgKCFnX2lzR2VuZXJhdGluZ1BhZ2UpCi0gICAgICAgIHNl
dFF1ZXJ5UGFyYW1ldGVyKCd0cmVlbWFwZm9jdXMnLCBuYW1lKTsKLX0KLQotd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVzb3VyY2VMb2FkZXIg
PSBuZXcgbG9hZGVyLkxvYWRlcihpbnRpYWxpemVIaXN0b3J5KTsKLSAgICByZXNvdXJjZUxvYWRl
ci5sb2FkKCk7Ci19LCBmYWxzZSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1hcC5qcyBiL1Rvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2QwZmRl
OWMzODMzZGEzZWQyMWEwODc4MzA3YzE4NjMxYWJjNjdlCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmpzCkBAIC0wLDAg
KzEsMjc1IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8v
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
dmFyIFRFU1RfVVJMX0JBU0VfUEFUSCA9ICJodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9y
eS93ZWJraXQvdHJ1bmsvIjsKKworZnVuY3Rpb24gaHVtYW5SZWFkYWJsZVRpbWUobWlsbGlzZWNv
bmRzKQoreworICAgIGlmIChtaWxsaXNlY29uZHMgPCAxMDAwKQorICAgICAgICByZXR1cm4gTWF0
aC5mbG9vcihtaWxsaXNlY29uZHMpICsgJ21zJzsKKyAgICBlbHNlIGlmIChtaWxsaXNlY29uZHMg
PCA2MDAwMCkKKyAgICAgICAgcmV0dXJuIChtaWxsaXNlY29uZHMgLyAxMDAwKS50b1ByZWNpc2lv
bigyKSArICdzJzsKKworICAgIHZhciBtaW51dGVzID0gTWF0aC5mbG9vcihtaWxsaXNlY29uZHMg
LyA2MDAwMCk7CisgICAgdmFyIHNlY29uZHMgPSBNYXRoLmZsb29yKChtaWxsaXNlY29uZHMgLSBt
aW51dGVzICogNjAwMDApIC8gMTAwMCk7CisgICAgcmV0dXJuIG1pbnV0ZXMgKyAnbScgKyBzZWNv
bmRzICsgJ3MnOworfQorCisvLyBUaGlzIGxvb2tzIGxpa2U6CisvLyB7ICJkYXRhIjogeyIkYXJl
YSI6IChzdW0gb2YgYWxsIHRpbWluZ3MpfSwKKy8vICAgIm5hbWUiOiAobmFtZSBvZiB0aGlzIG5v
ZGUpLAorLy8gICAiY2hpbGRyZW4iOiBbIChjaGlsZCBub2RlcywgaW4gdGhlIHNhbWUgZm9ybWF0
IGFzIHRoaXMpIF0gfQorLy8gY2hpbGRDb3VudCBpcyBhZGRlZCBqdXN0IHRvIGJlIGluY2x1ZGVz
IGluIHRoZSBub2RlJ3MgbmFtZQorZnVuY3Rpb24gY29udmVydFRvV2ViVHJlZW1hcEZvcm1hdCh0
cmVlbmFtZSwgdHJlZSwgcGF0aCkKK3sKKyAgICB2YXIgdG90YWwgPSAwOworICAgIHZhciBjaGls
ZENvdW50ID0gMDsKKyAgICB2YXIgY2hpbGRyZW4gPSBbXTsKKyAgICBmb3IgKHZhciBuYW1lIGlu
IHRyZWUpIHsKKyAgICAgICAgdmFyIHRyZWVOb2RlID0gdHJlZVtuYW1lXTsKKyAgICAgICAgaWYg
KHR5cGVvZiB0cmVlTm9kZSA9PSAibnVtYmVyIikgeworICAgICAgICAgICAgdmFyIHRpbWUgPSB0
cmVlTm9kZTsKKyAgICAgICAgICAgIHZhciBub2RlID0geworICAgICAgICAgICAgICAgICJkYXRh
IjogeyIkYXJlYSI6IHRpbWV9LAorICAgICAgICAgICAgICAgICJuYW1lIjogbmFtZSArICIgKCIg
KyBodW1hblJlYWRhYmxlVGltZSh0aW1lKSArICIpIgorICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIGNoaWxkcmVuLnB1c2gobm9kZSk7CisgICAgICAgICAgICB0b3RhbCArPSB0aW1lOworICAg
ICAgICAgICAgY2hpbGRDb3VudCsrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFy
IG5ld1BhdGggPSBwYXRoID8gcGF0aCArICcvJyArIG5hbWUgOiBuYW1lOworICAgICAgICAgICAg
dmFyIHN1YnRyZWUgPSBjb252ZXJ0VG9XZWJUcmVlbWFwRm9ybWF0KG5hbWUsIHRyZWVOb2RlLCBu
ZXdQYXRoKTsKKyAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goc3VidHJlZSk7CisgICAgICAgICAg
ICB0b3RhbCArPSBzdWJ0cmVlWyJkYXRhIl1bIiRhcmVhIl07CisgICAgICAgICAgICBjaGlsZENv
dW50ICs9IHN1YnRyZWVbImNoaWxkQ291bnQiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNo
aWxkcmVuLnNvcnQoZnVuY3Rpb24oYSwgYikgeworICAgICAgICBhVGltZSA9IGEuZGF0YVsiJGFy
ZWEiXQorICAgICAgICBiVGltZSA9IGIuZGF0YVsiJGFyZWEiXQorICAgICAgICByZXR1cm4gYlRp
bWUgLSBhVGltZTsKKyAgICB9KTsKKworICAgIHJldHVybiB7CisgICAgICAgICJkYXRhIjogeyIk
YXJlYSI6IHRvdGFsfSwKKyAgICAgICAgIm5hbWUiOiB0cmVlbmFtZSArICIgKCIgKyBodW1hblJl
YWRhYmxlVGltZSh0b3RhbCkgKyAiIC0gIiArIGNoaWxkQ291bnQgKyAiIHRlc3RzKSIsCisgICAg
ICAgICJjaGlsZHJlbiI6IGNoaWxkcmVuLAorICAgICAgICAiY2hpbGRDb3VudCI6IGNoaWxkQ291
bnQsCisgICAgICAgICJwYXRoIjogcGF0aAorICAgIH07Cit9CisKK2Z1bmN0aW9uIGxpc3RPZkFs
bE5vbkxlYWZOb2Rlcyh0cmVlLCBsaXN0KQoreworICAgIGlmICghdHJlZS5jaGlsZHJlbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFsaXN0KQorICAgICAgICBsaXN0ID0gW107CisgICAg
bGlzdC5wdXNoKHRyZWUpOworCisgICAgdHJlZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGNo
aWxkKSB7CisgICAgICAgIGxpc3RPZkFsbE5vbkxlYWZOb2RlcyhjaGlsZCwgbGlzdCk7CisgICAg
fSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK2Z1bmN0aW9uIHJldmVyc2VTb3J0QnlBdmVyYWdl
KGxpc3QpCit7CisgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgdmFyIGF2
Z0EgPSBhLmRhdGFbJyRhcmVhJ10gLyBhLmNoaWxkQ291bnQ7CisgICAgICAgIHZhciBhdmdCID0g
Yi5kYXRhWyckYXJlYSddIC8gYi5jaGlsZENvdW50OworICAgICAgICByZXR1cm4gYXZnQiAtIGF2
Z0E7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHNob3dBdmVyYWdlcygpCit7CisgICAgaWYgKCFk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFwJykpCisgICAgICAgIHJldHVybjsKKworICAgIHZh
ciB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7CisgICAgdGFibGUuaW5u
ZXJIVE1MID0gJzx0aD5kaXJlY3Rvcnk8L3RoPjx0aD4jIHRlc3RzPC90aD48dGg+YXZnIHRpbWUg
LyB0ZXN0PC90aD4nOworCisgICAgdmFyIGFsbE5vZGVzID0gbGlzdE9mQWxsTm9uTGVhZk5vZGVz
KGdfd2ViVHJlZSk7CisgICAgcmV2ZXJzZVNvcnRCeUF2ZXJhZ2UoYWxsTm9kZXMpOworICAgIGFs
bE5vZGVzLmZvckVhY2goZnVuY3Rpb24obm9kZSkgeworICAgICAgICB2YXIgYXZlcmFnZSA9IG5v
ZGUuZGF0YVsnJGFyZWEnXSAvIG5vZGUuY2hpbGRDb3VudDsKKyAgICAgICAgaWYgKGF2ZXJhZ2Ug
PiAxMDAgJiYgbm9kZS5jaGlsZENvdW50ICE9IDEpIHsKKyAgICAgICAgICAgIHZhciB0ciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgICAgICB0ci5pbm5lckhUTUwgPSAn
PHRkPjwvdGQ+PHRkPicgKyBub2RlLmNoaWxkQ291bnQgKyAnPC90ZD48dGQ+JyArIGh1bWFuUmVh
ZGFibGVUaW1lKGF2ZXJhZ2UpICsgJzwvdGQ+JzsKKyAgICAgICAgICAgIHRyLnF1ZXJ5U2VsZWN0
b3IoJ3RkJykuaW5uZXJUZXh0ID0gbm9kZS5wYXRoOworICAgICAgICAgICAgdGFibGUuYXBwZW5k
Q2hpbGQodHIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgbWFwID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ21hcCcpOworICAgIG1hcC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0
YWJsZSwgbWFwKTsKK30KKwordmFyIGdfaXNHZW5lcmF0aW5nUGFnZSA9IGZhbHNlOwordmFyIGdf
d2ViVHJlZTsKKworZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKK3sKKyAgICAkKCdoZWFkZXItY29u
dGFpbmVyJykuaW5uZXJIVE1MID0gdWkuaHRtbC50ZXN0VHlwZVN3aXRjaGVyKCk7CisKKyAgICBn
X2lzR2VuZXJhdGluZ1BhZ2UgPSB0cnVlOworCisgICAgdmFyIHJhd1RyZWUgPSBnX3Jlc3VsdHNC
eUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlciB8fCBjdXJyZW50QnVpbGRlckdyb3VwKCku
ZGVmYXVsdEJ1aWxkZXIoKV07CisgICAgZ193ZWJUcmVlID0gY29udmVydFRvV2ViVHJlZW1hcEZv
cm1hdCgnTGF5b3V0VGVzdHMnLCByYXdUcmVlKTsKKyAgICBhcHBlbmRUcmVlbWFwKCQoJ21hcCcp
LCBnX3dlYlRyZWUpOworCisgICAgaWYgKGdfY3VycmVudFN0YXRlLnRyZWVtYXBmb2N1cykKKyAg
ICAgICAgZm9jdXNQYXRoKGdfd2ViVHJlZSwgZ19jdXJyZW50U3RhdGUudHJlZW1hcGZvY3VzKQor
CisgICAgZ19pc0dlbmVyYXRpbmdQYWdlID0gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGZvY3VzUGF0
aCh0cmVlLCBwYXRoKQoreworICAgIHZhciBwYXJ0cyA9IGRlY29kZVVSSUNvbXBvbmVudChwYXRo
KS5zcGxpdCgnLycpOworICAgIGlmIChleHRyYWN0TmFtZSh0cmVlKSAhPSBwYXJ0c1swXSkgewor
ICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZm9jdXMgdHJlZSByb290ZWQgYXQgJyAr
IHBhcnRzWzBdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdHJlZS5j
aGlsZHJlbjsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGlsZHJlbi5sZW5ndGg7IGor
KykgeworICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bal07CisgICAgICAgICAgICBp
ZiAoZXh0cmFjdE5hbWUoY2hpbGQpID09IHBhcnRzW2ldKSB7CisgICAgICAgICAgICAgICAgdHJl
ZSA9IGNoaWxkOworICAgICAgICAgICAgICAgIGZvY3VzKHRyZWUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChqID09IGNoaWxk
cmVuLmxlbmd0aCkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGZpbmQg
dHJlZSBhdCAnICsgcGFydHNbaV0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisKK30KKworZnVuY3Rpb24gaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwgdmFsdWUp
Cit7CisgICAgc3dpdGNoKGtleSkgeworICAgIGNhc2UgJ2J1aWxkZXInOgorICAgICAgICB2YWxp
ZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwKKyAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeyByZXR1cm4gdmFsdWUgaW4gY3VycmVudEJ1aWxkZXJzKCk7IH0pOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgJ3RyZWVtYXBmb2N1cyc6CisgICAgICAgIHZhbGlk
YXRlUGFyYW1ldGVyKGdfY3VycmVudFN0YXRlLCBrZXksIHZhbHVlLAorICAgICAgICAgICAgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZXJlJ3MgcHJvYmFibHkgYSBz
aW1wbGVyIHJlZ2V4cCBoZXJlLiBKdXN0IHRyeWluZyB0byBtYXRjaCBhc2NpaSArIGZvcndhcmQt
c2xhc2guCisgICAgICAgICAgICAgICAgLy8gZS5nLiBMYXlvdXRUZXN0cy9mb28vYmFyLmh0bWwK
KyAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlLm1hdGNoKC9eKFx3K1wvXHcqKSokLykpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworZ19kZWZhdWx0RGFzaGJvYXJkU3BlY2lm
aWNTdGF0ZVZhbHVlcyA9IHsKKyAgICBidWlsZGVyOiBudWxsLAorICAgIHRyZWVtYXBmb2N1czog
JycsCit9OworCitEQl9TUEVDSUZJQ19JTlZBTElEQVRJTkdfUEFSQU1FVEVSUyA9IHsKKyAgICAn
dGVzdFR5cGUnOiAnYnVpbGRlcicsCisgICAgJ2dyb3VwJzogJ2J1aWxkZXInCit9OworCitmdW5j
dGlvbiBoYW5kbGVRdWVyeVBhcmFtZXRlckNoYW5nZShwYXJhbXMpCit7CisgICAgZm9yICh2YXIg
cGFyYW0gaW4gcGFyYW1zKSB7CisgICAgICAgIGlmIChwYXJhbSAhPSAndHJlZW1hcGZvY3VzJykg
eworICAgICAgICAgICAgJCgnbWFwJykuaW5uZXJIVE1MID0gJ0xvYWRpbmcuLi4nOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitmdW5jdGlvbiBleHRyYWN0TmFtZShub2RlKQoreworICAgIHJldHVybiBub2RlLm5hbWUu
c3BsaXQoJyAnKVswXTsKK30KKworZnVuY3Rpb24gZnVsbE5hbWUobm9kZSkKK3sKKyAgICB2YXIg
YnVmZmVyID0gW2V4dHJhY3ROYW1lKG5vZGUpXTsKKyAgICB3aGlsZSAobm9kZS5wYXJlbnQpIHsK
KyAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50OworICAgICAgICBidWZmZXIudW5zaGlmdChleHRy
YWN0TmFtZShub2RlKSk7CisgICAgfQorICAgIHJldHVybiBidWZmZXIuam9pbignLycpOworfQor
CitmdW5jdGlvbiBoYW5kbGVGb2N1cyh0cmVlKQoreworICAgIHZhciBjdXJyZW50bHlGb2N1c2Vk
Tm9kZSA9ICQoJ2ZvY3VzZWQtbGVhZicpOworICAgIGlmIChjdXJyZW50bHlGb2N1c2VkTm9kZSkK
KyAgICAgICAgY3VycmVudGx5Rm9jdXNlZE5vZGUuaWQgPSAnJzsKKworICAgIGlmICghdHJlZS5j
aGlsZHJlbikKKyAgICAgICAgdHJlZS5kb20uaWQgPSAnZm9jdXNlZC1sZWFmJzsKKworICAgIHZh
ciBuYW1lID0gZnVsbE5hbWUodHJlZSk7CisKKyAgICBpZiAoIXRyZWUuY2hpbGRyZW4gJiYgIXRy
ZWUuZXh0cmFEb20gJiYgaXNMYXlvdXRUZXN0UmVzdWx0cygpKSB7CisgICAgICAgIHRyZWUuZXh0
cmFEb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICAgICAgdHJlZS5leHRy
YURvbS5jbGFzc05hbWUgPSAnZXh0cmEtZG9tJzsKKyAgICAgICAgdHJlZS5kb20uYXBwZW5kQ2hp
bGQodHJlZS5leHRyYURvbSk7CisKKyAgICAgICAgbG9hZGVyLnJlcXVlc3QoVEVTVF9VUkxfQkFT
RV9QQVRIICsgbmFtZSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKHhocikgeworICAgICAgICAgICAg
ICAgIHRyZWUuZXh0cmFEb20ub25tb3VzZWRvd24gPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAg
ICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICB0cmVlLmV4dHJhRG9tLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbiAoeGhyKSB7CisgICAgICAgICAg
ICAgICAgdHJlZS5leHRyYURvbS50ZXh0Q29udGVudCA9ICJDb3VsZCBub3QgbG9hZCB0ZXN0LiIK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgZm9jdXMgY2Fs
bHMgZHVyaW5nIGdlbmVyYXRlUGFnZSB0byB0cnkgdG8gbW9kaWZ5IHRoZSBxdWVyeSBzdGF0ZS4K
KyAgICBpZiAoIWdfaXNHZW5lcmF0aW5nUGFnZSkKKyAgICAgICAgc2V0UXVlcnlQYXJhbWV0ZXIo
J3RyZWVtYXBmb2N1cycsIG5hbWUpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGZ1bmN0aW9uKCkgeworICAgIHZhciByZXNvdXJjZUxvYWRlciA9IG5ldyBsb2FkZXIuTG9h
ZGVyKGludGlhbGl6ZUhpc3RvcnkpOworICAgIHJlc291cmNlTG9hZGVyLmxvYWQoKTsKK30sIGZh
bHNlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>