<?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>73788</bug_id>
          
          <creation_ts>2011-12-04 16:40:56 -0800</creation_ts>
          <short_desc>In prepare-ChangeLog, move top level code into prepareChangeLog()</short_desc>
          <delta_ts>2011-12-09 01:46:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>73531</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>aroben</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>514791</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-04 16:40:56 -0800</bug_when>
    <thetext>This is one of the steps to make prepare-ChangeLog a loadable Perl module (bug 73531).

We should create a new subroutine prepareChangeLog(), and move top level code into prepareChangeLog().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514792</commentid>
    <comment_count>1</comment_count>
      <attachid>117816</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-04 16:45:13 -0800</bug_when>
    <thetext>Created attachment 117816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514813</commentid>
    <comment_count>2</comment_count>
      <attachid>117816</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-04 18:27:25 -0800</bug_when>
    <thetext>Comment on attachment 117816
Patch

Attachment 117816 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10732508

New failing tests:
svg/custom/linking-uri-01-b.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515827</commentid>
    <comment_count>3</comment_count>
      <attachid>118030</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-06 05:17:18 -0800</bug_when>
    <thetext>Created attachment 118030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517942</commentid>
    <comment_count>4</comment_count>
      <attachid>118030</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-08 17:07:59 -0800</bug_when>
    <thetext>Comment on attachment 118030
Patch

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

I think this function is way too big. We should put each block into a small function first. As is, the patch is quite in-comprehensive and it&apos;ll mess up the svn blame quite a lot.

&gt; Tools/Scripts/prepare-ChangeLog:220
&gt; +    if (%changed_line_ranges) {

You might consider putting this entire block in some function.

&gt; Tools/Scripts/prepare-ChangeLog:233
&gt; +          FUNCTION: foreach my $function_range_ref (@function_ranges) {

Wrong indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518101</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-08 21:33:39 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 118030 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118030&amp;action=review
&gt; 
&gt; I think this function is way too big. We should put each block into a small function first. As is, the patch is quite in-comprehensive and it&apos;ll mess up the svn blame quite a lot.

rniwa: Thank you for the review. I agree to splitting the big function, but I&apos;d like to do it later with unit tests.

As ddlizker mentioned in bug 73531, our current objective is to change prepare-ChangeLog just enough to make it a loadable Perl module for unit testing. In other words, we should not make extra changes, e.g. refactoring like splitting the big function, to prepare-ChangeLog until we have unit tests for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518183</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-09 01:46:28 -0800</bug_when>
    <thetext>Based on discussions on IRC with rniwa, we decided to commit this patch more incrementally.

ddkilzer, aroben: rniwa is going to review these patches.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117816</attachid>
            <date>2011-12-04 16:45:13 -0800</date>
            <delta_ts>2011-12-06 05:17:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73788-20111205094512.patch</filename>
            <type>text/plain</type>
            <size>24912</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxOTY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTY3ZDE2NjI3M2UxNzZmYTg3OTUwYmI2YTViY2EyNDkw
YWFiNTQ2NS4uYTQ2Y2JjZTY4ZDRkN2M5MmJkOTY0OGNlZTI2YzIzNTlmN2Q4OTAzYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDExLTEyLTA0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBJbiBwcmVwYXJlLUNoYW5nZUxvZywgbW92ZSB0b3AgbGV2ZWwgY29kZSBpbnRvIHBy
ZXBhcmVDaGFuZ2VMb2coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM3ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGlzIG9uZSBvZiB0aGUgc3RlcHMgdG8gbWFrZSBwcmVwYXJlLUNoYW5nZUxv
ZyBhIGxvYWRhYmxlIFBlcmwgbW9kdWxlIChidWcgNzM1MzEpLgorICAgICAgICBUaGlzIHBhdGNo
IGNyZWF0ZXMgYSBuZXcgc3Vicm91dGluZSBwcmVwYXJlQ2hhbmdlTG9nKCkgYW5kIG1vdmVzIHRv
cCBsZXZlbCBjb2RlCisgICAgICAgIGludG8gcHJlcGFyZUNoYW5nZUxvZygpLgorCisgICAgICAg
ICogU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZzoKKyAgICAgICAgKHByZXBhcmVDaGFuZ2VMb2cp
OgorCiAyMDExLTEyLTA0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QWRkIHRlc3RzIGZvciBSZXRhaW5QdHI6OmFkb3B0TlMvYWRvcHRDRgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZyBiL1Rvb2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFu
Z2VMb2cKaW5kZXggMmUyN2RjMzdhYTY4NjZjN2QxNzgwYmY1YjVmZjdhNWQxOTk4ZTQzMy4uNjBm
NjMxNmUwZmIyM2ZiZjlhZWMxODM2OTM3YjhhY2ZmZjJjYzgyMiAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZworKysgYi9Ub29scy9TY3JpcHRzL3ByZXBhcmUtQ2hh
bmdlTG9nCkBAIC02NCw2ICs2NCw3IEBAIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSBQT1NJ
WCBxdyhzdHJmdGltZSk7CiB1c2UgVkNTVXRpbHM7CiAKK3N1YiBwcmVwYXJlQ2hhbmdlTG9nKCk7
CiBzdWIgY2hhbmdlTG9nRGF0ZSgkKTsKIHN1YiBjaGFuZ2VMb2dFbWFpbEFkZHJlc3NGcm9tQXJn
cygkKTsKIHN1YiBjaGFuZ2VMb2dOYW1lRnJvbUFyZ3MoJCk7CkBAIC0xNDcsMTIgKzE0OCwxMCBA
QCBpZiAoISRwYXJzZU9wdGlvbnNSZXN1bHQgfHwgJHNob3dIZWxwKSB7CiAKIGRpZSAiLS1naXQt
Y29tbWl0IGFuZCAtLWdpdC1pbmRleCBhcmUgaW5jb21wYXRpYmxlLiIgaWYgKCRnaXRJbmRleCAm
JiAkZ2l0Q29tbWl0KTsKIAotbXkgJXBhdGhzID0gcHJvY2Vzc1BhdGhzKEBBUkdWKTsKK215ICVw
YXRoczsKIAotbXkgJGlzR2l0ID0gaXNHaXREaXJlY3RvcnkoZmlyc3REaXJlY3RvcnlPckN3ZCgp
KTsKLW15ICRpc1NWTiA9IGlzU1ZORGlyZWN0b3J5KGZpcnN0RGlyZWN0b3J5T3JDd2QoKSk7Ci0K
LSRpc1NWTiB8fCAkaXNHaXQgfHwgZGllICJDb3VsZG4ndCBkZXRlcm1pbmUgeW91ciB2ZXJzaW9u
IGNvbnRyb2wgc3lzdGVtLiI7CitteSAkaXNHaXQ7CitteSAkaXNTVk47CiAKIG15ICRTVk4gPSAi
c3ZuIjsKIG15ICRHSVQgPSAiZ2l0IjsKQEAgLTE2OSwyOTIgKzE2OCwzMDEgQEAgbXkgJXN1cHBv
cnRlZFRlc3RFeHRlbnNpb25zID0gbWFwIHsgJF8gPT4gMSB9IHF3KGh0bWwgc2h0bWwgc3ZnIHht
bCB4aHRtbCBwbCBwaHAKIG15IEBhZGRlZFJlZ3Jlc3Npb25UZXN0cyA9ICgpOwogbXkgJGRpZENo
YW5nZVJlZ3Jlc3Npb25UZXN0cyA9IDA7CiAKLWdlbmVyYXRlRmlsZUxpc3QoQGNoYW5nZWRfZmls
ZXMsIEBjb25mbGljdF9maWxlcywgJWZ1bmN0aW9uX2xpc3RzKTsKK3ByZXBhcmVDaGFuZ2VMb2co
KTsKIAotaWYgKCFAY2hhbmdlZF9maWxlcyAmJiAhQGNvbmZsaWN0X2ZpbGVzICYmICFrZXlzICVm
dW5jdGlvbl9saXN0cykgewotICAgIHByaW50IFNUREVSUiAiICBObyBjaGFuZ2VzIGZvdW5kLlxu
IjsKLSAgICBleGl0IDE7Ci19CisjIERvbmUuCitleGl0OwogCi1pZiAoQGNvbmZsaWN0X2ZpbGVz
KSB7Ci0gICAgcHJpbnQgU1RERVJSICIgIFRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBjb25mbGlj
dHMuIFJ1biBwcmVwYXJlLUNoYW5nZUxvZyBhZ2FpbiBhZnRlciBmaXhpbmcgdGhlIGNvbmZsaWN0
czpcbiI7Ci0gICAgcHJpbnQgU1RERVJSIGpvaW4oIlxuIiwgQGNvbmZsaWN0X2ZpbGVzKSwgIlxu
IjsKLSAgICBleGl0IDE7Ci19CitzdWIgcHJlcGFyZUNoYW5nZUxvZygpCit7CisgICAgJXBhdGhz
ID0gcHJvY2Vzc1BhdGhzKEBBUkdWKTsKKworICAgICRpc0dpdCA9IGlzR2l0RGlyZWN0b3J5KGZp
cnN0RGlyZWN0b3J5T3JDd2QoKSk7CisgICAgJGlzU1ZOID0gaXNTVk5EaXJlY3RvcnkoZmlyc3RE
aXJlY3RvcnlPckN3ZCgpKTsKKyAgICAkaXNTVk4gfHwgJGlzR2l0IHx8IGRpZSAiQ291bGRuJ3Qg
ZGV0ZXJtaW5lIHlvdXIgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4iOworCisgICAgZ2VuZXJhdGVG
aWxlTGlzdChAY2hhbmdlZF9maWxlcywgQGNvbmZsaWN0X2ZpbGVzLCAlZnVuY3Rpb25fbGlzdHMp
OwogCi1pZiAoQGNoYW5nZWRfZmlsZXMpIHsKLSAgICAkY2hhbmdlZF9maWxlc19zdHJpbmcgPSAi
JyIgLiBqb2luICgiJyAnIiwgQGNoYW5nZWRfZmlsZXMpIC4gIiciOwotCi0gICAgIyBGb3IgZWFj
aCBmaWxlLCBidWlsZCBhIGxpc3Qgb2YgbW9kaWZpZWQgbGluZXMuCi0gICAgIyBVc2UgbGluZSBu
dW1iZXJzIGZyb20gdGhlICJhZnRlciIgc2lkZSBvZiBlYWNoIGRpZmYuCi0gICAgcHJpbnQgU1RE
RVJSICIgIFJldmlld2luZyBkaWZmIHRvIGRldGVybWluZSB3aGljaCBsaW5lcyBjaGFuZ2VkLlxu
IjsKLSAgICBteSAkZmlsZTsKLSAgICBvcGVuIERJRkYsICItfCIsIGRpZmZDb21tYW5kKEBjaGFu
Z2VkX2ZpbGVzKSBvciBkaWUgIlRoZSBkaWZmIGZhaWxlZDogJCEuXG4iOwotICAgIHdoaWxlICg8
RElGRj4pIHsKLSAgICAgICAgJGZpbGUgPSBtYWtlRmlsZVBhdGhSZWxhdGl2ZSgkMSkgaWYgJF8g
PX4gZGlmZkhlYWRlckZvcm1hdCgpOwotICAgICAgICBpZiAoZGVmaW5lZCAkZmlsZSkgewotICAg
ICAgICAgICAgbXkgKCRzdGFydCwgJGVuZCkgPSBleHRyYWN0TGluZVJhbmdlKCRfKTsKLSAgICAg
ICAgICAgIGlmICgkc3RhcnQgPj0gMCAmJiAkZW5kID49IDApIHsKLSAgICAgICAgICAgICAgICBw
dXNoIEB7JGNoYW5nZWRfbGluZV9yYW5nZXN7JGZpbGV9fSwgWyAkc3RhcnQsICRlbmQgXTsKLSAg
ICAgICAgICAgIH0gZWxzaWYgKC9ET19OT1RfQ09NTUlULykgewotICAgICAgICAgICAgICAgIHBy
aW50IFNUREVSUiAiV0FSTklORzogZmlsZSAkZmlsZSBjb250YWlucyB0aGUgc3RyaW5nIERPX05P
VF9DT01NSVQsIGxpbmUgJC5cbiI7CisgICAgaWYgKCFAY2hhbmdlZF9maWxlcyAmJiAhQGNvbmZs
aWN0X2ZpbGVzICYmICFrZXlzICVmdW5jdGlvbl9saXN0cykgeworICAgICAgICBwcmludCBTVERF
UlIgIiAgTm8gY2hhbmdlcyBmb3VuZC5cbiI7CisgICAgICAgIGV4aXQgMTsKKyAgICB9CisKKyAg
ICBpZiAoQGNvbmZsaWN0X2ZpbGVzKSB7CisgICAgICAgIHByaW50IFNUREVSUiAiICBUaGUgZm9s
bG93aW5nIGZpbGVzIGhhdmUgY29uZmxpY3RzLiBSdW4gcHJlcGFyZS1DaGFuZ2VMb2cgYWdhaW4g
YWZ0ZXIgZml4aW5nIHRoZSBjb25mbGljdHM6XG4iOworICAgICAgICBwcmludCBTVERFUlIgam9p
bigiXG4iLCBAY29uZmxpY3RfZmlsZXMpLCAiXG4iOworICAgICAgICBleGl0IDE7CisgICAgfQor
CisgICAgaWYgKEBjaGFuZ2VkX2ZpbGVzKSB7CisgICAgICAgICRjaGFuZ2VkX2ZpbGVzX3N0cmlu
ZyA9ICInIiAuIGpvaW4gKCInICciLCBAY2hhbmdlZF9maWxlcykgLiAiJyI7CisKKyAgICAgICAg
IyBGb3IgZWFjaCBmaWxlLCBidWlsZCBhIGxpc3Qgb2YgbW9kaWZpZWQgbGluZXMuCisgICAgICAg
ICMgVXNlIGxpbmUgbnVtYmVycyBmcm9tIHRoZSAiYWZ0ZXIiIHNpZGUgb2YgZWFjaCBkaWZmLgor
ICAgICAgICBwcmludCBTVERFUlIgIiAgUmV2aWV3aW5nIGRpZmYgdG8gZGV0ZXJtaW5lIHdoaWNo
IGxpbmVzIGNoYW5nZWQuXG4iOworICAgICAgICBteSAkZmlsZTsKKyAgICAgICAgb3BlbiBESUZG
LCAiLXwiLCBkaWZmQ29tbWFuZChAY2hhbmdlZF9maWxlcykgb3IgZGllICJUaGUgZGlmZiBmYWls
ZWQ6ICQhLlxuIjsKKyAgICAgICAgd2hpbGUgKDxESUZGPikgeworICAgICAgICAgICAgJGZpbGUg
PSBtYWtlRmlsZVBhdGhSZWxhdGl2ZSgkMSkgaWYgJF8gPX4gZGlmZkhlYWRlckZvcm1hdCgpOwor
ICAgICAgICAgICAgaWYgKGRlZmluZWQgJGZpbGUpIHsKKyAgICAgICAgICAgICAgICBteSAoJHN0
YXJ0LCAkZW5kKSA9IGV4dHJhY3RMaW5lUmFuZ2UoJF8pOworICAgICAgICAgICAgICAgIGlmICgk
c3RhcnQgPj0gMCAmJiAkZW5kID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRj
aGFuZ2VkX2xpbmVfcmFuZ2VzeyRmaWxlfX0sIFsgJHN0YXJ0LCAkZW5kIF07CisgICAgICAgICAg
ICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01NSVQvKSB7CisgICAgICAgICAgICAgICAgICAgIHBy
aW50IFNUREVSUiAiV0FSTklORzogZmlsZSAkZmlsZSBjb250YWlucyB0aGUgc3RyaW5nIERPX05P
VF9DT01NSVQsIGxpbmUgJC5cbiI7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CisgICAgICAgIGNsb3NlIERJRkY7CiAgICAgfQotICAgIGNsb3NlIERJRkY7Ci19
CiAKLSMgRm9yIGVhY2ggc291cmNlIGZpbGUsIGNvbnZlcnQgbGluZSByYW5nZSB0byBmdW5jdGlv
biBsaXN0LgotaWYgKCVjaGFuZ2VkX2xpbmVfcmFuZ2VzKSB7Ci0gICAgcHJpbnQgU1RERVJSICIg
IEV4dHJhY3RpbmcgYWZmZWN0ZWQgZnVuY3Rpb24gbmFtZXMgZnJvbSBzb3VyY2UgZmlsZXMuXG4i
OwotICAgIGZvcmVhY2ggbXkgJGZpbGUgKGtleXMgJWNoYW5nZWRfbGluZV9yYW5nZXMpIHsKLSAg
ICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBmaWxlLgotICAgICAgICBvcGVu
IFNPVVJDRSwgJGZpbGUgb3IgbmV4dDsKLSAgICAgICAgbXkgQGZ1bmN0aW9uX3JhbmdlcyA9IGdl
dF9mdW5jdGlvbl9saW5lX3JhbmdlcyhcKlNPVVJDRSwgJGZpbGUpOwotICAgICAgICBjbG9zZSBT
T1VSQ0U7Ci0gICAgCi0gICAgICAgICMgRmluZCBhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4K
LSAgICAgICAgbXkgQGZ1bmN0aW9uczsKLSAgICAgICAgbXkgJXNhd19mdW5jdGlvbjsKLSAgICAg
ICAgbXkgQGNoYW5nZV9yYW5nZXMgPSAoQHskY2hhbmdlZF9saW5lX3Jhbmdlc3skZmlsZX19LCBb
XSk7Ci0gICAgICAgIG15IEBjaGFuZ2VfcmFuZ2UgPSAoMCwgMCk7Ci0gICAgICAgIEZVTkNUSU9O
OiBmb3JlYWNoIG15ICRmdW5jdGlvbl9yYW5nZV9yZWYgKEBmdW5jdGlvbl9yYW5nZXMpIHsKLSAg
ICAgICAgICAgIG15IEBmdW5jdGlvbl9yYW5nZSA9IEAkZnVuY3Rpb25fcmFuZ2VfcmVmOwotICAg
IAotICAgICAgICAgICAgIyBBZHZhbmNlIHRvIHN1Y2Nlc3NpdmUgY2hhbmdlIHJhbmdlcy4KLSAg
ICAgICAgICAgIGZvciAoOzsgQGNoYW5nZV9yYW5nZSA9IEB7c2hpZnQgQGNoYW5nZV9yYW5nZXN9
KSB7Ci0gICAgICAgICAgICAgICAgbGFzdCBGVU5DVElPTiB1bmxlc3MgQGNoYW5nZV9yYW5nZTsK
LSAgICAKLSAgICAgICAgICAgICAgICAjIElmIHBhc3QgdGhpcyBmdW5jdGlvbiwgbW92ZSBvbiB0
byB0aGUgbmV4dCBvbmUuCi0gICAgICAgICAgICAgICAgbmV4dCBGVU5DVElPTiBpZiAkY2hhbmdl
X3JhbmdlWzBdID4gJGZ1bmN0aW9uX3JhbmdlWzFdOwotICAgIAotICAgICAgICAgICAgICAgICMg
SWYgYW4gb3ZlcmxhcCB3aXRoIHRoaXMgZnVuY3Rpb24gcmFuZ2UsIHJlY29yZCB0aGUgZnVuY3Rp
b24gbmFtZS4KLSAgICAgICAgICAgICAgICBpZiAoJGNoYW5nZV9yYW5nZVsxXSA+PSAkZnVuY3Rp
b25fcmFuZ2VbMF0KLSAgICAgICAgICAgICAgICAgICAgYW5kICRjaGFuZ2VfcmFuZ2VbMF0gPD0g
JGZ1bmN0aW9uX3JhbmdlWzFdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghJHNhd19mdW5j
dGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkc2F3
X2Z1bmN0aW9ueyRmdW5jdGlvbl9yYW5nZVsyXX0gPSAxOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25fcmFuZ2VbMl07CisgICAgIyBGb3IgZWFjaCBz
b3VyY2UgZmlsZSwgY29udmVydCBsaW5lIHJhbmdlIHRvIGZ1bmN0aW9uIGxpc3QuCisgICAgaWYg
KCVjaGFuZ2VkX2xpbmVfcmFuZ2VzKSB7CisgICAgICAgIHByaW50IFNUREVSUiAiICBFeHRyYWN0
aW5nIGFmZmVjdGVkIGZ1bmN0aW9uIG5hbWVzIGZyb20gc291cmNlIGZpbGVzLlxuIjsKKyAgICAg
ICAgZm9yZWFjaCBteSAkZmlsZSAoa2V5cyAlY2hhbmdlZF9saW5lX3JhbmdlcykgeworICAgICAg
ICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBmaWxlLgorICAgICAgICAgICAg
b3BlbiBTT1VSQ0UsICRmaWxlIG9yIG5leHQ7CisgICAgICAgICAgICBteSBAZnVuY3Rpb25fcmFu
Z2VzID0gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzKFwqU09VUkNFLCAkZmlsZSk7CisgICAgICAg
ICAgICBjbG9zZSBTT1VSQ0U7CisKKyAgICAgICAgICAgICMgRmluZCBhbGwgdGhlIG1vZGlmaWVk
IGZ1bmN0aW9ucy4KKyAgICAgICAgICAgIG15IEBmdW5jdGlvbnM7CisgICAgICAgICAgICBteSAl
c2F3X2Z1bmN0aW9uOworICAgICAgICAgICAgbXkgQGNoYW5nZV9yYW5nZXMgPSAoQHskY2hhbmdl
ZF9saW5lX3Jhbmdlc3skZmlsZX19LCBbXSk7CisgICAgICAgICAgICBteSBAY2hhbmdlX3Jhbmdl
ID0gKDAsIDApOworICAgICAgICAgIEZVTkNUSU9OOiBmb3JlYWNoIG15ICRmdW5jdGlvbl9yYW5n
ZV9yZWYgKEBmdW5jdGlvbl9yYW5nZXMpIHsKKyAgICAgICAgICAgICAgICBteSBAZnVuY3Rpb25f
cmFuZ2UgPSBAJGZ1bmN0aW9uX3JhbmdlX3JlZjsKKworICAgICAgICAgICAgICAgICMgQWR2YW5j
ZSB0byBzdWNjZXNzaXZlIGNoYW5nZSByYW5nZXMuCisgICAgICAgICAgICAgICAgZm9yICg7OyBA
Y2hhbmdlX3JhbmdlID0gQHtzaGlmdCBAY2hhbmdlX3Jhbmdlc30pIHsKKyAgICAgICAgICAgICAg
ICAgICAgbGFzdCBGVU5DVElPTiB1bmxlc3MgQGNoYW5nZV9yYW5nZTsKKworICAgICAgICAgICAg
ICAgICAgICAjIElmIHBhc3QgdGhpcyBmdW5jdGlvbiwgbW92ZSBvbiB0byB0aGUgbmV4dCBvbmUu
CisgICAgICAgICAgICAgICAgICAgIG5leHQgRlVOQ1RJT04gaWYgJGNoYW5nZV9yYW5nZVswXSA+
ICRmdW5jdGlvbl9yYW5nZVsxXTsKKworICAgICAgICAgICAgICAgICAgICAjIElmIGFuIG92ZXJs
YXAgd2l0aCB0aGlzIGZ1bmN0aW9uIHJhbmdlLCByZWNvcmQgdGhlIGZ1bmN0aW9uIG5hbWUuCisg
ICAgICAgICAgICAgICAgICAgIGlmICgkY2hhbmdlX3JhbmdlWzFdID49ICRmdW5jdGlvbl9yYW5n
ZVswXQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kICRjaGFuZ2VfcmFuZ2VbMF0gPD0gJGZ1
bmN0aW9uX3JhbmdlWzFdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzYXdfZnVu
Y3Rpb257JGZ1bmN0aW9uX3JhbmdlWzJdfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRzYXdfZnVuY3Rpb257JGZ1bmN0aW9uX3JhbmdlWzJdfSA9IDE7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25fcmFuZ2VbMl07CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEZVTkNUSU9O
OwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5leHQgRlVOQ1RJ
T047CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgCi0g
ICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyBub3cuCiAKLSAgICAgICAgaWYg
KEBmdW5jdGlvbnMpIHsKLSAgICAgICAgICAgICRmdW5jdGlvbl9saXN0c3skZmlsZX0gPSAiIiBp
ZiAhZGVmaW5lZCAkZnVuY3Rpb25fbGlzdHN7JGZpbGV9OwotICAgICAgICAgICAgJGZ1bmN0aW9u
X2xpc3RzeyRmaWxlfSAuPSAiXG4gICAgICAgICgiIC4gam9pbigiKTpcbiAgICAgICAgKCIsIEBm
dW5jdGlvbnMpIC4gIik6IjsKKyAgICAgICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGZ1bmN0
aW9ucyBub3cuCisgICAgICAgICAgICBpZiAoQGZ1bmN0aW9ucykgeworICAgICAgICAgICAgICAg
ICRmdW5jdGlvbl9saXN0c3skZmlsZX0gPSAiIiBpZiAhZGVmaW5lZCAkZnVuY3Rpb25fbGlzdHN7
JGZpbGV9OworICAgICAgICAgICAgICAgICRmdW5jdGlvbl9saXN0c3skZmlsZX0gLj0gIlxuICAg
ICAgICAoIiAuIGpvaW4oIik6XG4gICAgICAgICgiLCBAZnVuY3Rpb25zKSAuICIpOiI7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci19CiAKLSMgR2V0IHNvbWUgcGFyYW1ldGVycyBm
b3IgdGhlIENoYW5nZUxvZyB3ZSBhcmUgYWJvdXQgdG8gd3JpdGUuCi1teSAkZGF0ZSA9IGNoYW5n
ZUxvZ0RhdGUoJGNoYW5nZUxvZ1RpbWVab25lKTsKLSRuYW1lID0gY2hhbmdlTG9nTmFtZUZyb21B
cmdzKCRuYW1lKTsKLSRlbWFpbEFkZHJlc3MgPSBjaGFuZ2VMb2dFbWFpbEFkZHJlc3NGcm9tQXJn
cygkZW1haWxBZGRyZXNzKTsKKyAgICAjIEdldCBzb21lIHBhcmFtZXRlcnMgZm9yIHRoZSBDaGFu
Z2VMb2cgd2UgYXJlIGFib3V0IHRvIHdyaXRlLgorICAgIG15ICRkYXRlID0gY2hhbmdlTG9nRGF0
ZSgkY2hhbmdlTG9nVGltZVpvbmUpOworICAgICRuYW1lID0gY2hhbmdlTG9nTmFtZUZyb21Bcmdz
KCRuYW1lKTsKKyAgICAkZW1haWxBZGRyZXNzID0gY2hhbmdlTG9nRW1haWxBZGRyZXNzRnJvbUFy
Z3MoJGVtYWlsQWRkcmVzcyk7CiAKLXByaW50IFNUREVSUiAiICBDaGFuZ2UgYXV0aG9yOiAkbmFt
ZSA8JGVtYWlsQWRkcmVzcz4uXG4iOworICAgIHByaW50IFNUREVSUiAiICBDaGFuZ2UgYXV0aG9y
OiAkbmFtZSA8JGVtYWlsQWRkcmVzcz4uXG4iOwogCi1teSAkYnVnVVJMOwotaWYgKCRidWdOdW1i
ZXIpIHsKLSAgICAkYnVnVVJMID0gImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0kYnVnTnVtYmVyIjsKLX0KKyAgICBteSAkYnVnVVJMOworICAgIGlmICgkYnVnTnVtYmVy
KSB7CisgICAgICAgICRidWdVUkwgPSAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPSRidWdOdW1iZXIiOworICAgIH0KIAotaWYgKCRidWdOdW1iZXIgJiYgISRidWdEZXNj
cmlwdGlvbikgewotICAgIG15ICRidWdYTUxVUkwgPSAiJGJ1Z1VSTCZjdHlwZT14bWwiOwotICAg
ICMgUGVybCBoYXMgbm8gYnVpbHQgaW4gWE1MIHByb2Nlc3NpbmcsIHNvIHdlJ2xsIGZldGNoIGFu
ZCBwYXJzZSB3aXRoIGN1cmwgYW5kIGdyZXAKLSAgICAjIFBhc3MgLS1pbnNlY3VyZSBiZWNhdXNl
IHNvbWUgY3lnd2luIGluc3RhbGxzIGhhdmUgbm8gY2VydHMgd2UgZG9uJ3QKLSAgICAjIGNhcmUg
YWJvdXQgdmFsaWRhdGluZyB0aGF0IGJ1Z3Mud2Via2l0Lm9yZyBpcyB3aG8gaXQgc2F5cyBpdCBp
cyBoZXJlLgotICAgIG15ICRkZXNjcmlwdGlvbkxpbmUgPSBgY3VybCAtLWluc2VjdXJlIC0tc2ls
ZW50ICIkYnVnWE1MVVJMIiB8IGdyZXAgc2hvcnRfZGVzY2A7Ci0gICAgaWYgKCRkZXNjcmlwdGlv
bkxpbmUgIX4gLzxzaG9ydF9kZXNjPiguKik8XC9zaG9ydF9kZXNjPi8pIHsKLSAgICAgICAgIyBN
YXliZSB0aGUgcmVhc29uIHRoZSBhYm92ZSBkaWQgbm90IHdvcmsgaXMgYmVjYXVzZSB0aGUgY3Vy
bCB0aGF0IGlzIGluc3RhbGxlZCBkb2Vzbid0Ci0gICAgICAgICMgc3VwcG9ydCBzc2wgYXQgYWxs
LgotICAgICAgICBpZiAoYGN1cmwgLS12ZXJzaW9uIHwgZ3JlcCBeUHJvdG9jb2xzYCAhfiAvXGJo
dHRwc1xiLykgewotICAgICAgICAgICAgcHJpbnQgU1RERVJSICIgIENvdWxkIG5vdCBnZXQgZGVz
Y3JpcHRpb24gZm9yIGJ1ZyAkYnVnTnVtYmVyLlxuIjsKLSAgICAgICAgICAgIHByaW50IFNUREVS
UiAiICBJdCBsb29rcyBsaWtlIHlvdXIgdmVyc2lvbiBvZiBjdXJsIGRvZXMgbm90IHN1cHBvcnQg
c3NsLlxuIjsKLSAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBJZiB5b3UgYXJlIHVzaW5nIG1h
Y3BvcnRzLCB0aGlzIGNhbiBiZSBmaXhlZCB3aXRoIHN1ZG8gcG9ydCBpbnN0YWxsIGN1cmwgK3Nz
bC5cbiI7CisgICAgaWYgKCRidWdOdW1iZXIgJiYgISRidWdEZXNjcmlwdGlvbikgeworICAgICAg
ICBteSAkYnVnWE1MVVJMID0gIiRidWdVUkwmY3R5cGU9eG1sIjsKKyAgICAgICAgIyBQZXJsIGhh
cyBubyBidWlsdCBpbiBYTUwgcHJvY2Vzc2luZywgc28gd2UnbGwgZmV0Y2ggYW5kIHBhcnNlIHdp
dGggY3VybCBhbmQgZ3JlcAorICAgICAgICAjIFBhc3MgLS1pbnNlY3VyZSBiZWNhdXNlIHNvbWUg
Y3lnd2luIGluc3RhbGxzIGhhdmUgbm8gY2VydHMgd2UgZG9uJ3QKKyAgICAgICAgIyBjYXJlIGFi
b3V0IHZhbGlkYXRpbmcgdGhhdCBidWdzLndlYmtpdC5vcmcgaXMgd2hvIGl0IHNheXMgaXQgaXMg
aGVyZS4KKyAgICAgICAgbXkgJGRlc2NyaXB0aW9uTGluZSA9IGBjdXJsIC0taW5zZWN1cmUgLS1z
aWxlbnQgIiRidWdYTUxVUkwiIHwgZ3JlcCBzaG9ydF9kZXNjYDsKKyAgICAgICAgaWYgKCRkZXNj
cmlwdGlvbkxpbmUgIX4gLzxzaG9ydF9kZXNjPiguKik8XC9zaG9ydF9kZXNjPi8pIHsKKyAgICAg
ICAgICAgICMgTWF5YmUgdGhlIHJlYXNvbiB0aGUgYWJvdmUgZGlkIG5vdCB3b3JrIGlzIGJlY2F1
c2UgdGhlIGN1cmwgdGhhdCBpcyBpbnN0YWxsZWQgZG9lc24ndAorICAgICAgICAgICAgIyBzdXBw
b3J0IHNzbCBhdCBhbGwuCisgICAgICAgICAgICBpZiAoYGN1cmwgLS12ZXJzaW9uIHwgZ3JlcCBe
UHJvdG9jb2xzYCAhfiAvXGJodHRwc1xiLykgeworICAgICAgICAgICAgICAgIHByaW50IFNUREVS
UiAiICBDb3VsZCBub3QgZ2V0IGRlc2NyaXB0aW9uIGZvciBidWcgJGJ1Z051bWJlci5cbiI7Cisg
ICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICIgIEl0IGxvb2tzIGxpa2UgeW91ciB2ZXJzaW9u
IG9mIGN1cmwgZG9lcyBub3Qgc3VwcG9ydCBzc2wuXG4iOworICAgICAgICAgICAgICAgIHByaW50
IFNUREVSUiAiICBJZiB5b3UgYXJlIHVzaW5nIG1hY3BvcnRzLCB0aGlzIGNhbiBiZSBmaXhlZCB3
aXRoIHN1ZG8gcG9ydCBpbnN0YWxsIGN1cmwgK3NzbC5cbiI7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBCdWcgJGJ1Z051bWJlciBoYXMgbm8g
YnVnIGRlc2NyaXB0aW9uLiBNYXliZSB5b3Ugc2V0IHdyb25nIGJ1ZyBJRD9cbiI7CisgICAgICAg
ICAgICAgICAgcHJpbnQgU1RERVJSICIgIFRoZSBidWcgVVJMOiAkYnVnWE1MVVJMXG4iOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZXhpdCAxOworICAgICAgICB9CisgICAgICAgICRidWdE
ZXNjcmlwdGlvbiA9IGRlY29kZUVudGl0aWVzKCQxKTsKKyAgICAgICAgcHJpbnQgU1RERVJSICIg
IERlc2NyaXB0aW9uIGZyb20gYnVnICRidWdOdW1iZXI6XG4gICAgXCIkYnVnRGVzY3JpcHRpb25c
Ii5cbiI7CisgICAgfQorCisgICAgIyBSZW1vdmUgdHJhaWxpbmcgcGFyZW50aGVzaXplZCBub3Rl
cyBmcm9tIHVzZXIgbmFtZSAoYml0IG9mIGhhY2spLgorICAgICRuYW1lID1+IHMvXCguKj9cKVxz
KiQvL2c7CisKKyAgICAjIEZpbmQgdGhlIGNoYW5nZSBsb2dzLgorICAgIG15ICVoYXNfbG9nOwor
ICAgIG15ICVmaWxlczsKKyAgICBmb3JlYWNoIG15ICRmaWxlIChzb3J0IGtleXMgJWZ1bmN0aW9u
X2xpc3RzKSB7CisgICAgICAgIG15ICRwcmVmaXggPSAkZmlsZTsKKyAgICAgICAgbXkgJGhhc19s
b2cgPSAwOworICAgICAgICB3aGlsZSAoJHByZWZpeCkgeworICAgICAgICAgICAgJHByZWZpeCA9
fiBzLS9bXi9dKy8/JC0vLSBvciAkcHJlZml4ID0gIiI7CisgICAgICAgICAgICAkaGFzX2xvZyA9
ICRoYXNfbG9neyRwcmVmaXh9OworICAgICAgICAgICAgaWYgKCFkZWZpbmVkICRoYXNfbG9nKSB7
CisgICAgICAgICAgICAgICAgJGhhc19sb2cgPSAtZiAiJHtwcmVmaXh9Q2hhbmdlTG9nIjsKKyAg
ICAgICAgICAgICAgICAkaGFzX2xvZ3skcHJlZml4fSA9ICRoYXNfbG9nOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbGFzdCBpZiAkaGFzX2xvZzsKKyAgICAgICAgfQorICAgICAgICBpZiAo
ISRoYXNfbG9nKSB7CisgICAgICAgICAgICBwcmludCBTVERFUlIgIk5vIENoYW5nZUxvZyBmb3Vu
ZCBmb3IgJGZpbGUuXG4iOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJpbnQgU1RE
RVJSICIgIEJ1ZyAkYnVnTnVtYmVyIGhhcyBubyBidWcgZGVzY3JpcHRpb24uIE1heWJlIHlvdSBz
ZXQgd3JvbmcgYnVnIElEP1xuIjsKLSAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBUaGUgYnVn
IFVSTDogJGJ1Z1hNTFVSTFxuIjsKKyAgICAgICAgICAgIHB1c2ggQHskZmlsZXN7JHByZWZpeH19
LCAkZmlsZTsKICAgICAgICAgfQotICAgICAgICBleGl0IDE7CiAgICAgfQotICAgICRidWdEZXNj
cmlwdGlvbiA9IGRlY29kZUVudGl0aWVzKCQxKTsKLSAgICBwcmludCBTVERFUlIgIiAgRGVzY3Jp
cHRpb24gZnJvbSBidWcgJGJ1Z051bWJlcjpcbiAgICBcIiRidWdEZXNjcmlwdGlvblwiLlxuIjsK
LX0KIAotIyBSZW1vdmUgdHJhaWxpbmcgcGFyZW50aGVzaXplZCBub3RlcyBmcm9tIHVzZXIgbmFt
ZSAoYml0IG9mIGhhY2spLgotJG5hbWUgPX4gcy9cKC4qP1wpXHMqJC8vZzsKLQotIyBGaW5kIHRo
ZSBjaGFuZ2UgbG9ncy4KLW15ICVoYXNfbG9nOwotbXkgJWZpbGVzOwotZm9yZWFjaCBteSAkZmls
ZSAoc29ydCBrZXlzICVmdW5jdGlvbl9saXN0cykgewotICAgIG15ICRwcmVmaXggPSAkZmlsZTsK
LSAgICBteSAkaGFzX2xvZyA9IDA7Ci0gICAgd2hpbGUgKCRwcmVmaXgpIHsKLSAgICAgICAgJHBy
ZWZpeCA9fiBzLS9bXi9dKy8/JC0vLSBvciAkcHJlZml4ID0gIiI7Ci0gICAgICAgICRoYXNfbG9n
ID0gJGhhc19sb2d7JHByZWZpeH07Ci0gICAgICAgIGlmICghZGVmaW5lZCAkaGFzX2xvZykgewot
ICAgICAgICAgICAgJGhhc19sb2cgPSAtZiAiJHtwcmVmaXh9Q2hhbmdlTG9nIjsKLSAgICAgICAg
ICAgICRoYXNfbG9neyRwcmVmaXh9ID0gJGhhc19sb2c7CisgICAgIyBCdWlsZCB0aGUgbGlzdCBv
ZiBDaGFuZ2VMb2cgcHJlZml4ZXMgaW4gdGhlIGNvcnJlY3QgcHJvamVjdCBvcmRlcgorICAgIG15
IEBwcmVmaXhlczsKKyAgICBteSAlcHJlZml4ZXNTb3J0OworICAgIGZvcmVhY2ggbXkgJHByZWZp
eCAoa2V5cyAlZmlsZXMpIHsKKyAgICAgICAgbXkgJHByZWZpeERpciA9IHN1YnN0cigkcHJlZml4
LCAwLCBsZW5ndGgoJHByZWZpeCkgLSAxKTsgIyBzdHJpcCB0cmFpbGluZyAvCisgICAgICAgIG15
ICRzb3J0S2V5ID0gbGMgJHByZWZpeDsKKyAgICAgICAgJHNvcnRLZXkgPSAidG9wIGxldmVsIiB1
bmxlc3MgbGVuZ3RoICRzb3J0S2V5OworCisgICAgICAgIGlmICgkcHJlZml4RGlyIGVxICJ0b3Ag
bGV2ZWwiKSB7CisgICAgICAgICAgICAkc29ydEtleSA9ICIiOworICAgICAgICB9IGVsc2lmICgk
cHJlZml4RGlyIGVxICJUb29scyIpIHsKKyAgICAgICAgICAgICRzb3J0S2V5ID0gIi0sIGp1c3Qg
YWZ0ZXIgdG9wIGxldmVsIjsKKyAgICAgICAgfSBlbHNpZiAoJHByZWZpeERpciBlcSAiV2ViQnJv
d3NlciIpIHsKKyAgICAgICAgICAgICRzb3J0S2V5ID0gbGMgIldlYktpdCwgV2ViQnJvd3NlciBh
ZnRlciI7CisgICAgICAgIH0gZWxzaWYgKCRwcmVmaXhEaXIgZXEgIlNvdXJjZS9XZWJDb3JlIikg
eworICAgICAgICAgICAgJHNvcnRLZXkgPSBsYyAiV2ViRm91bmRhdGlvbiwgV2ViQ29yZSBhZnRl
ciI7CisgICAgICAgIH0gZWxzaWYgKCRwcmVmaXhEaXIgZXEgIkxheW91dFRlc3RzIikgeworICAg
ICAgICAgICAgJHNvcnRLZXkgPSBsYyAifiwgTGF5b3V0VGVzdHMgbGFzdCI7CiAgICAgICAgIH0K
LSAgICAgICAgbGFzdCBpZiAkaGFzX2xvZzsKKworICAgICAgICAkcHJlZml4ZXNTb3J0eyRzb3J0
S2V5fSA9ICRwcmVmaXg7CiAgICAgfQotICAgIGlmICghJGhhc19sb2cpIHsKLSAgICAgICAgcHJp
bnQgU1RERVJSICJObyBDaGFuZ2VMb2cgZm91bmQgZm9yICRmaWxlLlxuIjsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBwdXNoIEB7JGZpbGVzeyRwcmVmaXh9fSwgJGZpbGU7CisgICAgZm9yZWFjaCBt
eSAkcHJlZml4U29ydCAoc29ydCBrZXlzICVwcmVmaXhlc1NvcnQpIHsKKyAgICAgICAgcHVzaCBA
cHJlZml4ZXMsICRwcmVmaXhlc1NvcnR7JHByZWZpeFNvcnR9OwogICAgIH0KLX0KIAotIyBCdWls
ZCB0aGUgbGlzdCBvZiBDaGFuZ2VMb2cgcHJlZml4ZXMgaW4gdGhlIGNvcnJlY3QgcHJvamVjdCBv
cmRlcgotbXkgQHByZWZpeGVzOwotbXkgJXByZWZpeGVzU29ydDsKLWZvcmVhY2ggbXkgJHByZWZp
eCAoa2V5cyAlZmlsZXMpIHsKLSAgICBteSAkcHJlZml4RGlyID0gc3Vic3RyKCRwcmVmaXgsIDAs
IGxlbmd0aCgkcHJlZml4KSAtIDEpOyAjIHN0cmlwIHRyYWlsaW5nIC8KLSAgICBteSAkc29ydEtl
eSA9IGxjICRwcmVmaXg7Ci0gICAgJHNvcnRLZXkgPSAidG9wIGxldmVsIiB1bmxlc3MgbGVuZ3Ro
ICRzb3J0S2V5OwotCi0gICAgaWYgKCRwcmVmaXhEaXIgZXEgInRvcCBsZXZlbCIpIHsKLSAgICAg
ICAgJHNvcnRLZXkgPSAiIjsKLSAgICB9IGVsc2lmICgkcHJlZml4RGlyIGVxICJUb29scyIpIHsK
LSAgICAgICAgJHNvcnRLZXkgPSAiLSwganVzdCBhZnRlciB0b3AgbGV2ZWwiOwotICAgIH0gZWxz
aWYgKCRwcmVmaXhEaXIgZXEgIldlYkJyb3dzZXIiKSB7Ci0gICAgICAgICRzb3J0S2V5ID0gbGMg
IldlYktpdCwgV2ViQnJvd3NlciBhZnRlciI7Ci0gICAgfSBlbHNpZiAoJHByZWZpeERpciBlcSAi
U291cmNlL1dlYkNvcmUiKSB7Ci0gICAgICAgICRzb3J0S2V5ID0gbGMgIldlYkZvdW5kYXRpb24s
IFdlYkNvcmUgYWZ0ZXIiOwotICAgIH0gZWxzaWYgKCRwcmVmaXhEaXIgZXEgIkxheW91dFRlc3Rz
IikgewotICAgICAgICAkc29ydEtleSA9IGxjICJ+LCBMYXlvdXRUZXN0cyBsYXN0IjsKKyAgICAj
IEdldCB0aGUgbGF0ZXN0IENoYW5nZUxvZyBmaWxlcyBmcm9tIHN2bi4KKyAgICBteSBAbG9ncyA9
ICgpOworICAgIGZvcmVhY2ggbXkgJHByZWZpeCAoQHByZWZpeGVzKSB7CisgICAgICAgIHB1c2gg
QGxvZ3MsIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHByZWZpeCB8fCAiLiIsICJDaGFuZ2VMb2ciKTsK
ICAgICB9CiAKLSAgICAkcHJlZml4ZXNTb3J0eyRzb3J0S2V5fSA9ICRwcmVmaXg7Ci19Ci1mb3Jl
YWNoIG15ICRwcmVmaXhTb3J0IChzb3J0IGtleXMgJXByZWZpeGVzU29ydCkgewotICAgIHB1c2gg
QHByZWZpeGVzLCAkcHJlZml4ZXNTb3J0eyRwcmVmaXhTb3J0fTsKLX0KLQotIyBHZXQgdGhlIGxh
dGVzdCBDaGFuZ2VMb2cgZmlsZXMgZnJvbSBzdm4uCi1teSBAbG9ncyA9ICgpOwotZm9yZWFjaCBt
eSAkcHJlZml4IChAcHJlZml4ZXMpIHsKLSAgICBwdXNoIEBsb2dzLCBGaWxlOjpTcGVjLT5jYXRm
aWxlKCRwcmVmaXggfHwgIi4iLCAiQ2hhbmdlTG9nIik7Ci19Ci0KLWlmIChAbG9ncyAmJiAkdXBk
YXRlQ2hhbmdlTG9ncyAmJiAkaXNTVk4pIHsKLSAgICBwcmludCBTVERFUlIgIiAgUnVubmluZyAn
c3ZuIHVwZGF0ZScgdG8gdXBkYXRlIENoYW5nZUxvZyBmaWxlcy5cbiI7Ci0gICAgb3BlbiBFUlJP
UlMsICItfCIsICRTVk4sICJ1cGRhdGUiLCBAbG9ncworICAgIGlmIChAbG9ncyAmJiAkdXBkYXRl
Q2hhbmdlTG9ncyAmJiAkaXNTVk4pIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICIgIFJ1bm5pbmcg
J3N2biB1cGRhdGUnIHRvIHVwZGF0ZSBDaGFuZ2VMb2cgZmlsZXMuXG4iOworICAgICAgICBvcGVu
IEVSUk9SUywgIi18IiwgJFNWTiwgInVwZGF0ZSIsIEBsb2dzCiAgICAgICAgIG9yIGRpZSAiVGhl
IHN2biB1cGRhdGUgb2YgQ2hhbmdlTG9nIGZpbGVzIGZhaWxlZDogJCEuXG4iOwotICAgIG15IEBj
b25mbGljdGVkQ2hhbmdlTG9nczsKLSAgICB3aGlsZSAobXkgJGxpbmUgPSA8RVJST1JTPikgewot
ICAgICAgICBwcmludCBTVERFUlIgIiAgICAiLCAkbGluZTsKLSAgICAgICAgcHVzaCBAY29uZmxp
Y3RlZENoYW5nZUxvZ3MsICQxIGlmICRsaW5lID1+IG0vXkNccysoLis/KVtcclxuXSokLzsKLSAg
ICB9Ci0gICAgY2xvc2UgRVJST1JTOworICAgICAgICBteSBAY29uZmxpY3RlZENoYW5nZUxvZ3M7
CisgICAgICAgIHdoaWxlIChteSAkbGluZSA9IDxFUlJPUlM+KSB7CisgICAgICAgICAgICBwcmlu
dCBTVERFUlIgIiAgICAiLCAkbGluZTsKKyAgICAgICAgICAgIHB1c2ggQGNvbmZsaWN0ZWRDaGFu
Z2VMb2dzLCAkMSBpZiAkbGluZSA9fiBtL15DXHMrKC4rPylbXHJcbl0qJC87CisgICAgICAgIH0K
KyAgICAgICAgY2xvc2UgRVJST1JTOwogCi0gICAgaWYgKEBjb25mbGljdGVkQ2hhbmdlTG9ncykg
ewotICAgICAgICBwcmludCBTVERFUlIgIiAgQXR0ZW1wdGluZyB0byBtZXJnZSBjb25mbGljdGVk
IENoYW5nZUxvZ3MuXG4iOwotICAgICAgICBteSAkcmVzb2x2ZUNoYW5nZUxvZ3NQYXRoID0gRmls
ZTo6U3BlYy0+Y2F0ZmlsZShkaXJuYW1lKCQwKSwgInJlc29sdmUtQ2hhbmdlTG9ncyIpOwotICAg
ICAgICBvcGVuIFJFU09MVkUsICItfCIsICRyZXNvbHZlQ2hhbmdlTG9nc1BhdGgsICItLW5vLXdh
cm5pbmdzIiwgQGNvbmZsaWN0ZWRDaGFuZ2VMb2dzCisgICAgICAgIGlmIChAY29uZmxpY3RlZENo
YW5nZUxvZ3MpIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBBdHRlbXB0aW5nIHRvIG1l
cmdlIGNvbmZsaWN0ZWQgQ2hhbmdlTG9ncy5cbiI7CisgICAgICAgICAgICBteSAkcmVzb2x2ZUNo
YW5nZUxvZ3NQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShkaXJuYW1lKCQwKSwgInJlc29sdmUt
Q2hhbmdlTG9ncyIpOworICAgICAgICAgICAgb3BlbiBSRVNPTFZFLCAiLXwiLCAkcmVzb2x2ZUNo
YW5nZUxvZ3NQYXRoLCAiLS1uby13YXJuaW5ncyIsIEBjb25mbGljdGVkQ2hhbmdlTG9ncwogICAg
ICAgICAgICAgb3IgZGllICJDb3VsZCBub3Qgb3BlbiByZXNvbHZlLUNoYW5nZUxvZ3Mgc2NyaXB0
OiAkIS5cbiI7Ci0gICAgICAgIHByaW50IFNUREVSUiAiICAgICRfIiB3aGlsZSA8UkVTT0xWRT47
Ci0gICAgICAgIGNsb3NlIFJFU09MVkU7CisgICAgICAgICAgICBwcmludCBTVERFUlIgIiAgICAk
XyIgd2hpbGUgPFJFU09MVkU+OworICAgICAgICAgICAgY2xvc2UgUkVTT0xWRTsKKyAgICAgICAg
fQogICAgIH0KLX0KIAotIyBHZW5lcmF0ZSBuZXcgQ2hhbmdlTG9nIGVudHJpZXMgYW5kIChvcHRp
b25hbGx5KSB3cml0ZSBvdXQgbmV3IENoYW5nZUxvZyBmaWxlcy4KLWZvcmVhY2ggbXkgJHByZWZp
eCAoQHByZWZpeGVzKSB7Ci0gICAgbXkgJGVuZGwgPSAiXG4iOwotICAgIG15IEBvbGRfY2hhbmdl
X2xvZzsKLQotICAgIGlmICgkd3JpdGVDaGFuZ2VMb2dzKSB7Ci0gICAgICAgIG15ICRjaGFuZ2VM
b2dQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcHJlZml4IHx8ICIuIiwgIkNoYW5nZUxvZyIp
OwotICAgICAgICBwcmludCBTVERFUlIgIiAgRWRpdGluZyB0aGUgJHtjaGFuZ2VMb2dQYXRofSBm
aWxlLlxuIjsKLSAgICAgICAgb3BlbiBPTERfQ0hBTkdFX0xPRywgJHtjaGFuZ2VMb2dQYXRofSBv
ciBkaWUgIkNvdWxkIG5vdCBvcGVuICR7Y2hhbmdlTG9nUGF0aH0gZmlsZTogJCEuXG4iOwotICAg
ICAgICAjIEl0J3MgbGVzcyBlZmZpY2llbnQgdG8gcmVhZCB0aGUgd2hvbGUgdGhpbmcgaW50byBt
ZW1vcnkgdGhhbiBpdCB3b3VsZCBiZQotICAgICAgICAjIHRvIHJlYWQgaXQgd2hpbGUgd2UgcHJl
cGVuZCB0byBpdCBsYXRlciwgYnV0IEkgbGlrZSBkb2luZyB0aGlzIHBhcnQgZmlyc3QuCi0gICAg
ICAgIEBvbGRfY2hhbmdlX2xvZyA9IDxPTERfQ0hBTkdFX0xPRz47Ci0gICAgICAgIGNsb3NlIE9M
RF9DSEFOR0VfTE9HOwotICAgICAgICAjIFdlIHdhbnQgdG8gbWF0Y2ggdGhlIENoYW5nZUxvZydz
IGxpbmUgZW5kaW5ncyBpbiBjYXNlIGl0IGRvZXNuJ3QgbWF0Y2gKLSAgICAgICAgIyB0aGUgbmF0
aXZlIGxpbmUgZW5kaW5ncyBmb3IgdGhpcyB2ZXJzaW9uIG9mIHBlcmwuCi0gICAgICAgIGlmICgk
b2xkX2NoYW5nZV9sb2dbMF0gPX4gLyhccj9cbikkL2cpIHsKLSAgICAgICAgICAgICRlbmRsID0g
IiQxIjsKKyAgICAjIEdlbmVyYXRlIG5ldyBDaGFuZ2VMb2cgZW50cmllcyBhbmQgKG9wdGlvbmFs
bHkpIHdyaXRlIG91dCBuZXcgQ2hhbmdlTG9nIGZpbGVzLgorICAgIGZvcmVhY2ggbXkgJHByZWZp
eCAoQHByZWZpeGVzKSB7CisgICAgICAgIG15ICRlbmRsID0gIlxuIjsKKyAgICAgICAgbXkgQG9s
ZF9jaGFuZ2VfbG9nOworCisgICAgICAgIGlmICgkd3JpdGVDaGFuZ2VMb2dzKSB7CisgICAgICAg
ICAgICBteSAkY2hhbmdlTG9nUGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHByZWZpeCB8fCAi
LiIsICJDaGFuZ2VMb2ciKTsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBFZGl0aW5nIHRo
ZSAke2NoYW5nZUxvZ1BhdGh9IGZpbGUuXG4iOworICAgICAgICAgICAgb3BlbiBPTERfQ0hBTkdF
X0xPRywgJHtjaGFuZ2VMb2dQYXRofSBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICR7Y2hhbmdlTG9n
UGF0aH0gZmlsZTogJCEuXG4iOworICAgICAgICAgICAgIyBJdCdzIGxlc3MgZWZmaWNpZW50IHRv
IHJlYWQgdGhlIHdob2xlIHRoaW5nIGludG8gbWVtb3J5IHRoYW4gaXQgd291bGQgYmUKKyAgICAg
ICAgICAgICMgdG8gcmVhZCBpdCB3aGlsZSB3ZSBwcmVwZW5kIHRvIGl0IGxhdGVyLCBidXQgSSBs
aWtlIGRvaW5nIHRoaXMgcGFydCBmaXJzdC4KKyAgICAgICAgICAgIEBvbGRfY2hhbmdlX2xvZyA9
IDxPTERfQ0hBTkdFX0xPRz47CisgICAgICAgICAgICBjbG9zZSBPTERfQ0hBTkdFX0xPRzsKKyAg
ICAgICAgICAgICMgV2Ugd2FudCB0byBtYXRjaCB0aGUgQ2hhbmdlTG9nJ3MgbGluZSBlbmRpbmdz
IGluIGNhc2UgaXQgZG9lc24ndCBtYXRjaAorICAgICAgICAgICAgIyB0aGUgbmF0aXZlIGxpbmUg
ZW5kaW5ncyBmb3IgdGhpcyB2ZXJzaW9uIG9mIHBlcmwuCisgICAgICAgICAgICBpZiAoJG9sZF9j
aGFuZ2VfbG9nWzBdID1+IC8oXHI/XG4pJC9nKSB7CisgICAgICAgICAgICAgICAgJGVuZGwgPSAi
JDEiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3BlbiBDSEFOR0VfTE9HLCAiPiAke2No
YW5nZUxvZ1BhdGh9IiBvciBkaWUgIkNvdWxkIG5vdCB3cml0ZSAke2NoYW5nZUxvZ1BhdGh9XG4u
IjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG9wZW4gQ0hBTkdFX0xPRywgIj4tIiBv
ciBkaWUgIkNvdWxkIG5vdCB3cml0ZSB0byBTVERPVVRcbi4iOworICAgICAgICAgICAgcHJpbnQg
c3Vic3RyKCRwcmVmaXgsIDAsIGxlbmd0aCgkcHJlZml4KSAtIDEpIC4gIjpcblxuIiB1bmxlc3Mg
KHNjYWxhciBAcHJlZml4ZXMpID09IDE7CiAgICAgICAgIH0KLSAgICAgICAgb3BlbiBDSEFOR0Vf
TE9HLCAiPiAke2NoYW5nZUxvZ1BhdGh9IiBvciBkaWUgIkNvdWxkIG5vdCB3cml0ZSAke2NoYW5n
ZUxvZ1BhdGh9XG4uIjsKLSAgICB9IGVsc2UgewotICAgICAgICBvcGVuIENIQU5HRV9MT0csICI+
LSIgb3IgZGllICJDb3VsZCBub3Qgd3JpdGUgdG8gU1RET1VUXG4uIjsKLSAgICAgICAgcHJpbnQg
c3Vic3RyKCRwcmVmaXgsIDAsIGxlbmd0aCgkcHJlZml4KSAtIDEpIC4gIjpcblxuIiB1bmxlc3Mg
KHNjYWxhciBAcHJlZml4ZXMpID09IDE7Ci0gICAgfQogCi0gICAgcHJpbnQgQ0hBTkdFX0xPRyBu
b3JtYWxpemVMaW5lRW5kaW5ncygiJGRhdGUgICRuYW1lICA8JGVtYWlsQWRkcmVzcz5cblxuIiwg
JGVuZGwpOworICAgICAgICBwcmludCBDSEFOR0VfTE9HIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKCIk
ZGF0ZSAgJG5hbWUgIDwkZW1haWxBZGRyZXNzPlxuXG4iLCAkZW5kbCk7CisKKyAgICAgICAgbXkg
KCRyZXZpZXdlciwgJGRlc2NyaXB0aW9uKSA9IHJldmlld2VyQW5kRGVzY3JpcHRpb25Gb3JHaXRD
b21taXQoJGdpdENvbW1pdCkgaWYgJGdpdENvbW1pdDsKKyAgICAgICAgJHJldmlld2VyID0gIk5P
Qk9EWSAoT08iIC4gIlBTISkiIGlmICEkcmV2aWV3ZXI7CiAKLSAgICBteSAoJHJldmlld2VyLCAk
ZGVzY3JpcHRpb24pID0gcmV2aWV3ZXJBbmREZXNjcmlwdGlvbkZvckdpdENvbW1pdCgkZ2l0Q29t
bWl0KSBpZiAkZ2l0Q29tbWl0OwotICAgICRyZXZpZXdlciA9ICJOT0JPRFkgKE9PIiAuICJQUyEp
IiBpZiAhJHJldmlld2VyOworICAgICAgICBwcmludCBDSEFOR0VfTE9HIG5vcm1hbGl6ZUxpbmVF
bmRpbmdzKCRkZXNjcmlwdGlvbiAuICJcbiIsICRlbmRsKSBpZiAkZGVzY3JpcHRpb247CiAKLSAg
ICBwcmludCBDSEFOR0VfTE9HIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKCRkZXNjcmlwdGlvbiAuICJc
biIsICRlbmRsKSBpZiAkZGVzY3JpcHRpb247CisgICAgICAgICRidWdEZXNjcmlwdGlvbiA9ICJO
ZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKSIgdW5sZXNzICRidWdE
ZXNjcmlwdGlvbjsKKyAgICAgICAgcHJpbnQgQ0hBTkdFX0xPRyBub3JtYWxpemVMaW5lRW5kaW5n
cygiICAgICAgICAkYnVnRGVzY3JpcHRpb25cbiIsICRlbmRsKSBpZiAkYnVnRGVzY3JpcHRpb247
CisgICAgICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGluZ3MoIiAgICAgICAg
JGJ1Z1VSTFxuIiwgJGVuZGwpIGlmICRidWdVUkw7CisgICAgICAgIHByaW50IENIQU5HRV9MT0cg
bm9ybWFsaXplTGluZUVuZGluZ3MoIlxuIiwgJGVuZGwpOwogCi0gICAgJGJ1Z0Rlc2NyaXB0aW9u
ID0gIk5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpIiB1bmxlc3Mg
JGJ1Z0Rlc2NyaXB0aW9uOwotICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGlu
Z3MoIiAgICAgICAgJGJ1Z0Rlc2NyaXB0aW9uXG4iLCAkZW5kbCkgaWYgJGJ1Z0Rlc2NyaXB0aW9u
OwotICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGluZ3MoIiAgICAgICAgJGJ1
Z1VSTFxuIiwgJGVuZGwpIGlmICRidWdVUkw7Ci0gICAgcHJpbnQgQ0hBTkdFX0xPRyBub3JtYWxp
emVMaW5lRW5kaW5ncygiXG4iLCAkZW5kbCk7CisgICAgICAgIHByaW50IENIQU5HRV9MT0cgbm9y
bWFsaXplTGluZUVuZGluZ3MoIiAgICAgICAgUmV2aWV3ZWQgYnkgJHJldmlld2VyLlxuXG4iLCAk
ZW5kbCk7CisKKyAgICAgICAgaWYgKCRwcmVmaXggPX4gbS9XZWJDb3JlLyB8fCBgcHdkYCA9fiBt
L1dlYkNvcmUvKSB7CisgICAgICAgICAgICBpZiAoJGRpZENoYW5nZVJlZ3Jlc3Npb25UZXN0cykg
eworICAgICAgICAgICAgICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGluZ3Mo
dGVzdExpc3RGb3JDaGFuZ2VMb2coc29ydCBAYWRkZWRSZWdyZXNzaW9uVGVzdHMpLCAkZW5kbCk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50IENIQU5HRV9MT0cg
bm9ybWFsaXplTGluZUVuZGluZ3MoIiAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpXG5cbiIs
ICRlbmRsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgcHJpbnQgQ0hBTkdFX0xP
RyBub3JtYWxpemVMaW5lRW5kaW5ncygiICAgICAgICBSZXZpZXdlZCBieSAkcmV2aWV3ZXIuXG5c
biIsICRlbmRsKTsKKyAgICAgICAgZm9yZWFjaCBteSAkZmlsZSAoc29ydCBAeyRmaWxlc3skcHJl
Zml4fX0pIHsKKyAgICAgICAgICAgIG15ICRmaWxlX3N0ZW0gPSBzdWJzdHIgJGZpbGUsIGxlbmd0
aCAkcHJlZml4OworICAgICAgICAgICAgcHJpbnQgQ0hBTkdFX0xPRyBub3JtYWxpemVMaW5lRW5k
aW5ncygiICAgICAgICAqICRmaWxlX3N0ZW06JGZ1bmN0aW9uX2xpc3RzeyRmaWxlfVxuIiwgJGVu
ZGwpOworICAgICAgICB9CiAKLSAgICBpZiAoJHByZWZpeCA9fiBtL1dlYkNvcmUvIHx8IGBwd2Rg
ID1+IG0vV2ViQ29yZS8pIHsKLSAgICAgICAgaWYgKCRkaWRDaGFuZ2VSZWdyZXNzaW9uVGVzdHMp
IHsKLSAgICAgICAgICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGluZ3ModGVz
dExpc3RGb3JDaGFuZ2VMb2coc29ydCBAYWRkZWRSZWdyZXNzaW9uVGVzdHMpLCAkZW5kbCk7Cisg
ICAgICAgIGlmICgkd3JpdGVDaGFuZ2VMb2dzKSB7CisgICAgICAgICAgICBwcmludCBDSEFOR0Vf
TE9HIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKCJcbiIsICRlbmRsKSwgQG9sZF9jaGFuZ2VfbG9nOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJpbnQgQ0hBTkdFX0xPRyBub3JtYWxpemVM
aW5lRW5kaW5ncygiICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISlcblxuIiwgJGVuZGwpOwor
ICAgICAgICAgICAgcHJpbnQgQ0hBTkdFX0xPRyAiXG4iOwogICAgICAgICB9Ci0gICAgfQogCi0g
ICAgZm9yZWFjaCBteSAkZmlsZSAoc29ydCBAeyRmaWxlc3skcHJlZml4fX0pIHsKLSAgICAgICAg
bXkgJGZpbGVfc3RlbSA9IHN1YnN0ciAkZmlsZSwgbGVuZ3RoICRwcmVmaXg7Ci0gICAgICAgIHBy
aW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGluZ3MoIiAgICAgICAgKiAkZmlsZV9zdGVt
OiRmdW5jdGlvbl9saXN0c3skZmlsZX1cbiIsICRlbmRsKTsKKyAgICAgICAgY2xvc2UgQ0hBTkdF
X0xPRzsKICAgICB9CiAKICAgICBpZiAoJHdyaXRlQ2hhbmdlTG9ncykgewotICAgICAgICBwcmlu
dCBDSEFOR0VfTE9HIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKCJcbiIsICRlbmRsKSwgQG9sZF9jaGFu
Z2VfbG9nOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHByaW50IENIQU5HRV9MT0cgIlxuIjsKKyAg
ICAgICAgcHJpbnQgU1RERVJSICItLSBQbGVhc2UgcmVtZW1iZXIgdG8gaW5jbHVkZSBhIGRldGFp
bGVkIGRlc2NyaXB0aW9uIGluIHlvdXIgQ2hhbmdlTG9nIGVudHJ5LiAtLVxuLS0gU2VlIDxodHRw
Oi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWw+IGZvciBtb3JlIGluZm8gLS1c
biI7CiAgICAgfQogCi0gICAgY2xvc2UgQ0hBTkdFX0xPRzsKLX0KLQotaWYgKCR3cml0ZUNoYW5n
ZUxvZ3MpIHsKLSAgICBwcmludCBTVERFUlIgIi0tIFBsZWFzZSByZW1lbWJlciB0byBpbmNsdWRl
IGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gaW4geW91ciBDaGFuZ2VMb2cgZW50cnkuIC0tXG4tLSBT
ZWUgPGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb250cmlidXRpbmcuaHRtbD4gZm9yIG1vcmUg
aW5mbyAtLVxuIjsKLX0KLQotIyBXcml0ZSBvdXQgYW5vdGhlciBkaWZmLgotaWYgKCRzcGV3RGlm
ZiAmJiBAY2hhbmdlZF9maWxlcykgewotICAgIHByaW50IFNUREVSUiAiICBSdW5uaW5nIGRpZmYg
dG8gaGVscCB5b3Ugd3JpdGUgdGhlIENoYW5nZUxvZyBlbnRyaWVzLlxuIjsKLSAgICBsb2NhbCAk
LyA9IHVuZGVmOyAjIGxvY2FsIHNsdXJwIG1vZGUKLSAgICBvcGVuIERJRkYsICItfCIsIGNyZWF0
ZVBhdGNoQ29tbWFuZCgkY2hhbmdlZF9maWxlc19zdHJpbmcpIG9yIGRpZSAiVGhlIGRpZmYgZmFp
bGVkOiAkIS5cbiI7Ci0gICAgcHJpbnQgPERJRkY+OwotICAgIGNsb3NlIERJRkY7Ci19CisgICAg
IyBXcml0ZSBvdXQgYW5vdGhlciBkaWZmLgorICAgIGlmICgkc3Bld0RpZmYgJiYgQGNoYW5nZWRf
ZmlsZXMpIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICIgIFJ1bm5pbmcgZGlmZiB0byBoZWxwIHlv
dSB3cml0ZSB0aGUgQ2hhbmdlTG9nIGVudHJpZXMuXG4iOworICAgICAgICBsb2NhbCAkLyA9IHVu
ZGVmOyAjIGxvY2FsIHNsdXJwIG1vZGUKKyAgICAgICAgb3BlbiBESUZGLCAiLXwiLCBjcmVhdGVQ
YXRjaENvbW1hbmQoJGNoYW5nZWRfZmlsZXNfc3RyaW5nKSBvciBkaWUgIlRoZSBkaWZmIGZhaWxl
ZDogJCEuXG4iOworICAgICAgICBwcmludCA8RElGRj47CisgICAgICAgIGNsb3NlIERJRkY7Cisg
ICAgfQogCi0jIE9wZW4gQ2hhbmdlTG9ncy4KLWlmICgkb3BlbkNoYW5nZUxvZ3MgJiYgQGxvZ3Mp
IHsKLSAgICBwcmludCBTVERFUlIgIiAgT3BlbmluZyB0aGUgZWRpdGVkIENoYW5nZUxvZyBmaWxl
cy5cbiI7Ci0gICAgbXkgJGVkaXRvciA9ICRFTlZ7Q0hBTkdFX0xPR19FRElUT1J9OwotICAgIGlm
ICgkZWRpdG9yKSB7Ci0gICAgICAgIHN5c3RlbSAoKHNwbGl0ICcgJywgJGVkaXRvciksIEBsb2dz
KTsKLSAgICB9IGVsc2UgewotICAgICAgICAkZWRpdG9yID0gJEVOVntDSEFOR0VfTE9HX0VESVRf
QVBQTElDQVRJT059OworICAgICMgT3BlbiBDaGFuZ2VMb2dzLgorICAgIGlmICgkb3BlbkNoYW5n
ZUxvZ3MgJiYgQGxvZ3MpIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICIgIE9wZW5pbmcgdGhlIGVk
aXRlZCBDaGFuZ2VMb2cgZmlsZXMuXG4iOworICAgICAgICBteSAkZWRpdG9yID0gJEVOVntDSEFO
R0VfTE9HX0VESVRPUn07CiAgICAgICAgIGlmICgkZWRpdG9yKSB7Ci0gICAgICAgICAgICBzeXN0
ZW0gIm9wZW4iLCAiLWEiLCAkZWRpdG9yLCBAbG9nczsKKyAgICAgICAgICAgIHN5c3RlbSAoKHNw
bGl0ICcgJywgJGVkaXRvciksIEBsb2dzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHN5c3RlbSAib3BlbiIsICItZSIsIEBsb2dzOworICAgICAgICAgICAgJGVkaXRvciA9ICRFTlZ7
Q0hBTkdFX0xPR19FRElUX0FQUExJQ0FUSU9OfTsKKyAgICAgICAgICAgIGlmICgkZWRpdG9yKSB7
CisgICAgICAgICAgICAgICAgc3lzdGVtICJvcGVuIiwgIi1hIiwgJGVkaXRvciwgQGxvZ3M7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN5c3RlbSAib3BlbiIsICItZSIs
IEBsb2dzOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQogCi0jIERvbmUuCi1l
eGl0OwotCi0KIHN1YiBjaGFuZ2VMb2dEYXRlKCQpCiB7CiAgICAgbXkgKCR0aW1lWm9uZSkgPSBA
XzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118030</attachid>
            <date>2011-12-06 05:17:18 -0800</date>
            <delta_ts>2011-12-08 17:07:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73788-20111206221716.patch</filename>
            <type>text/plain</type>
            <size>24972</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMDkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTAyZWVjY2NiMzk1ZmVlOWNhYzUxYTc1ZjE3Y2E1MTU3
YzBjZTlhMy4uNTU5NDQwNjNhYzc5MjU3NTE0NDk4MWU3OWM3YjgzMmJkYWY5M2FiNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDExLTEyLTA0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBJbiBwcmVwYXJlLUNoYW5nZUxvZywgbW92ZSB0b3AgbGV2ZWwgY29kZSBpbnRvIHBy
ZXBhcmVDaGFuZ2VMb2coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM3ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGlzIG9uZSBvZiB0aGUgc3RlcHMgdG8gbWFrZSBwcmVwYXJlLUNoYW5nZUxv
ZyBhIGxvYWRhYmxlIFBlcmwgbW9kdWxlIChidWcgNzM1MzEpLgorICAgICAgICBUaGlzIHBhdGNo
IGNyZWF0ZXMgYSBuZXcgc3Vicm91dGluZSBwcmVwYXJlQ2hhbmdlTG9nKCkgYW5kIG1vdmVzIHRv
cCBsZXZlbCBjb2RlCisgICAgICAgIGludG8gcHJlcGFyZUNoYW5nZUxvZygpLgorCisgICAgICAg
ICogU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZzoKKyAgICAgICAgKHByZXBhcmVDaGFuZ2VMb2cp
OgorCiAyMDExLTEyLTA1ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5t
b2JpPgogCiAgICAgICAgIHdlYmtpdC5weTogUmVhbGx5IGZpeCB0aGUgcHJpbnRpbmcgb2YgU3Ry
aW5nSW1wbCBub3cgdGhhdCA4LWJpdCBzdHJpbmdzIGFyZSBwcmVzZW50LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZyBiL1Rvb2xzL1NjcmlwdHMvcHJlcGFyZS1D
aGFuZ2VMb2cKaW5kZXggMmUyN2RjMzdhYTY4NjZjN2QxNzgwYmY1YjVmZjdhNWQxOTk4ZTQzMy4u
NjBmNjMxNmUwZmIyM2ZiZjlhZWMxODM2OTM3YjhhY2ZmZjJjYzgyMiAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZworKysgYi9Ub29scy9TY3JpcHRzL3ByZXBhcmUt
Q2hhbmdlTG9nCkBAIC02NCw2ICs2NCw3IEBAIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSBQ
T1NJWCBxdyhzdHJmdGltZSk7CiB1c2UgVkNTVXRpbHM7CiAKK3N1YiBwcmVwYXJlQ2hhbmdlTG9n
KCk7CiBzdWIgY2hhbmdlTG9nRGF0ZSgkKTsKIHN1YiBjaGFuZ2VMb2dFbWFpbEFkZHJlc3NGcm9t
QXJncygkKTsKIHN1YiBjaGFuZ2VMb2dOYW1lRnJvbUFyZ3MoJCk7CkBAIC0xNDcsMTIgKzE0OCwx
MCBAQCBpZiAoISRwYXJzZU9wdGlvbnNSZXN1bHQgfHwgJHNob3dIZWxwKSB7CiAKIGRpZSAiLS1n
aXQtY29tbWl0IGFuZCAtLWdpdC1pbmRleCBhcmUgaW5jb21wYXRpYmxlLiIgaWYgKCRnaXRJbmRl
eCAmJiAkZ2l0Q29tbWl0KTsKIAotbXkgJXBhdGhzID0gcHJvY2Vzc1BhdGhzKEBBUkdWKTsKK215
ICVwYXRoczsKIAotbXkgJGlzR2l0ID0gaXNHaXREaXJlY3RvcnkoZmlyc3REaXJlY3RvcnlPckN3
ZCgpKTsKLW15ICRpc1NWTiA9IGlzU1ZORGlyZWN0b3J5KGZpcnN0RGlyZWN0b3J5T3JDd2QoKSk7
Ci0KLSRpc1NWTiB8fCAkaXNHaXQgfHwgZGllICJDb3VsZG4ndCBkZXRlcm1pbmUgeW91ciB2ZXJz
aW9uIGNvbnRyb2wgc3lzdGVtLiI7CitteSAkaXNHaXQ7CitteSAkaXNTVk47CiAKIG15ICRTVk4g
PSAic3ZuIjsKIG15ICRHSVQgPSAiZ2l0IjsKQEAgLTE2OSwyOTIgKzE2OCwzMDEgQEAgbXkgJXN1
cHBvcnRlZFRlc3RFeHRlbnNpb25zID0gbWFwIHsgJF8gPT4gMSB9IHF3KGh0bWwgc2h0bWwgc3Zn
IHhtbCB4aHRtbCBwbCBwaHAKIG15IEBhZGRlZFJlZ3Jlc3Npb25UZXN0cyA9ICgpOwogbXkgJGRp
ZENoYW5nZVJlZ3Jlc3Npb25UZXN0cyA9IDA7CiAKLWdlbmVyYXRlRmlsZUxpc3QoQGNoYW5nZWRf
ZmlsZXMsIEBjb25mbGljdF9maWxlcywgJWZ1bmN0aW9uX2xpc3RzKTsKK3ByZXBhcmVDaGFuZ2VM
b2coKTsKIAotaWYgKCFAY2hhbmdlZF9maWxlcyAmJiAhQGNvbmZsaWN0X2ZpbGVzICYmICFrZXlz
ICVmdW5jdGlvbl9saXN0cykgewotICAgIHByaW50IFNUREVSUiAiICBObyBjaGFuZ2VzIGZvdW5k
LlxuIjsKLSAgICBleGl0IDE7Ci19CisjIERvbmUuCitleGl0OwogCi1pZiAoQGNvbmZsaWN0X2Zp
bGVzKSB7Ci0gICAgcHJpbnQgU1RERVJSICIgIFRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBjb25m
bGljdHMuIFJ1biBwcmVwYXJlLUNoYW5nZUxvZyBhZ2FpbiBhZnRlciBmaXhpbmcgdGhlIGNvbmZs
aWN0czpcbiI7Ci0gICAgcHJpbnQgU1RERVJSIGpvaW4oIlxuIiwgQGNvbmZsaWN0X2ZpbGVzKSwg
IlxuIjsKLSAgICBleGl0IDE7Ci19CitzdWIgcHJlcGFyZUNoYW5nZUxvZygpCit7CisgICAgJXBh
dGhzID0gcHJvY2Vzc1BhdGhzKEBBUkdWKTsKKworICAgICRpc0dpdCA9IGlzR2l0RGlyZWN0b3J5
KGZpcnN0RGlyZWN0b3J5T3JDd2QoKSk7CisgICAgJGlzU1ZOID0gaXNTVk5EaXJlY3RvcnkoZmly
c3REaXJlY3RvcnlPckN3ZCgpKTsKKyAgICAkaXNTVk4gfHwgJGlzR2l0IHx8IGRpZSAiQ291bGRu
J3QgZGV0ZXJtaW5lIHlvdXIgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4iOworCisgICAgZ2VuZXJh
dGVGaWxlTGlzdChAY2hhbmdlZF9maWxlcywgQGNvbmZsaWN0X2ZpbGVzLCAlZnVuY3Rpb25fbGlz
dHMpOwogCi1pZiAoQGNoYW5nZWRfZmlsZXMpIHsKLSAgICAkY2hhbmdlZF9maWxlc19zdHJpbmcg
PSAiJyIgLiBqb2luICgiJyAnIiwgQGNoYW5nZWRfZmlsZXMpIC4gIiciOwotCi0gICAgIyBGb3Ig
ZWFjaCBmaWxlLCBidWlsZCBhIGxpc3Qgb2YgbW9kaWZpZWQgbGluZXMuCi0gICAgIyBVc2UgbGlu
ZSBudW1iZXJzIGZyb20gdGhlICJhZnRlciIgc2lkZSBvZiBlYWNoIGRpZmYuCi0gICAgcHJpbnQg
U1RERVJSICIgIFJldmlld2luZyBkaWZmIHRvIGRldGVybWluZSB3aGljaCBsaW5lcyBjaGFuZ2Vk
LlxuIjsKLSAgICBteSAkZmlsZTsKLSAgICBvcGVuIERJRkYsICItfCIsIGRpZmZDb21tYW5kKEBj
aGFuZ2VkX2ZpbGVzKSBvciBkaWUgIlRoZSBkaWZmIGZhaWxlZDogJCEuXG4iOwotICAgIHdoaWxl
ICg8RElGRj4pIHsKLSAgICAgICAgJGZpbGUgPSBtYWtlRmlsZVBhdGhSZWxhdGl2ZSgkMSkgaWYg
JF8gPX4gZGlmZkhlYWRlckZvcm1hdCgpOwotICAgICAgICBpZiAoZGVmaW5lZCAkZmlsZSkgewot
ICAgICAgICAgICAgbXkgKCRzdGFydCwgJGVuZCkgPSBleHRyYWN0TGluZVJhbmdlKCRfKTsKLSAg
ICAgICAgICAgIGlmICgkc3RhcnQgPj0gMCAmJiAkZW5kID49IDApIHsKLSAgICAgICAgICAgICAg
ICBwdXNoIEB7JGNoYW5nZWRfbGluZV9yYW5nZXN7JGZpbGV9fSwgWyAkc3RhcnQsICRlbmQgXTsK
LSAgICAgICAgICAgIH0gZWxzaWYgKC9ET19OT1RfQ09NTUlULykgewotICAgICAgICAgICAgICAg
IHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAkZmlsZSBjb250YWlucyB0aGUgc3RyaW5nIERP
X05PVF9DT01NSVQsIGxpbmUgJC5cbiI7CisgICAgaWYgKCFAY2hhbmdlZF9maWxlcyAmJiAhQGNv
bmZsaWN0X2ZpbGVzICYmICFrZXlzICVmdW5jdGlvbl9saXN0cykgeworICAgICAgICBwcmludCBT
VERFUlIgIiAgTm8gY2hhbmdlcyBmb3VuZC5cbiI7CisgICAgICAgIGV4aXQgMTsKKyAgICB9CisK
KyAgICBpZiAoQGNvbmZsaWN0X2ZpbGVzKSB7CisgICAgICAgIHByaW50IFNUREVSUiAiICBUaGUg
Zm9sbG93aW5nIGZpbGVzIGhhdmUgY29uZmxpY3RzLiBSdW4gcHJlcGFyZS1DaGFuZ2VMb2cgYWdh
aW4gYWZ0ZXIgZml4aW5nIHRoZSBjb25mbGljdHM6XG4iOworICAgICAgICBwcmludCBTVERFUlIg
am9pbigiXG4iLCBAY29uZmxpY3RfZmlsZXMpLCAiXG4iOworICAgICAgICBleGl0IDE7CisgICAg
fQorCisgICAgaWYgKEBjaGFuZ2VkX2ZpbGVzKSB7CisgICAgICAgICRjaGFuZ2VkX2ZpbGVzX3N0
cmluZyA9ICInIiAuIGpvaW4gKCInICciLCBAY2hhbmdlZF9maWxlcykgLiAiJyI7CisKKyAgICAg
ICAgIyBGb3IgZWFjaCBmaWxlLCBidWlsZCBhIGxpc3Qgb2YgbW9kaWZpZWQgbGluZXMuCisgICAg
ICAgICMgVXNlIGxpbmUgbnVtYmVycyBmcm9tIHRoZSAiYWZ0ZXIiIHNpZGUgb2YgZWFjaCBkaWZm
LgorICAgICAgICBwcmludCBTVERFUlIgIiAgUmV2aWV3aW5nIGRpZmYgdG8gZGV0ZXJtaW5lIHdo
aWNoIGxpbmVzIGNoYW5nZWQuXG4iOworICAgICAgICBteSAkZmlsZTsKKyAgICAgICAgb3BlbiBE
SUZGLCAiLXwiLCBkaWZmQ29tbWFuZChAY2hhbmdlZF9maWxlcykgb3IgZGllICJUaGUgZGlmZiBm
YWlsZWQ6ICQhLlxuIjsKKyAgICAgICAgd2hpbGUgKDxESUZGPikgeworICAgICAgICAgICAgJGZp
bGUgPSBtYWtlRmlsZVBhdGhSZWxhdGl2ZSgkMSkgaWYgJF8gPX4gZGlmZkhlYWRlckZvcm1hdCgp
OworICAgICAgICAgICAgaWYgKGRlZmluZWQgJGZpbGUpIHsKKyAgICAgICAgICAgICAgICBteSAo
JHN0YXJ0LCAkZW5kKSA9IGV4dHJhY3RMaW5lUmFuZ2UoJF8pOworICAgICAgICAgICAgICAgIGlm
ICgkc3RhcnQgPj0gMCAmJiAkZW5kID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaCBA
eyRjaGFuZ2VkX2xpbmVfcmFuZ2VzeyRmaWxlfX0sIFsgJHN0YXJ0LCAkZW5kIF07CisgICAgICAg
ICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01NSVQvKSB7CisgICAgICAgICAgICAgICAgICAg
IHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAkZmlsZSBjb250YWlucyB0aGUgc3RyaW5nIERP
X05PVF9DT01NSVQsIGxpbmUgJC5cbiI7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CisgICAgICAgIGNsb3NlIERJRkY7CiAgICAgfQotICAgIGNsb3NlIERJRkY7
Ci19CiAKLSMgRm9yIGVhY2ggc291cmNlIGZpbGUsIGNvbnZlcnQgbGluZSByYW5nZSB0byBmdW5j
dGlvbiBsaXN0LgotaWYgKCVjaGFuZ2VkX2xpbmVfcmFuZ2VzKSB7Ci0gICAgcHJpbnQgU1RERVJS
ICIgIEV4dHJhY3RpbmcgYWZmZWN0ZWQgZnVuY3Rpb24gbmFtZXMgZnJvbSBzb3VyY2UgZmlsZXMu
XG4iOwotICAgIGZvcmVhY2ggbXkgJGZpbGUgKGtleXMgJWNoYW5nZWRfbGluZV9yYW5nZXMpIHsK
LSAgICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBmaWxlLgotICAgICAgICBv
cGVuIFNPVVJDRSwgJGZpbGUgb3IgbmV4dDsKLSAgICAgICAgbXkgQGZ1bmN0aW9uX3JhbmdlcyA9
IGdldF9mdW5jdGlvbl9saW5lX3JhbmdlcyhcKlNPVVJDRSwgJGZpbGUpOwotICAgICAgICBjbG9z
ZSBTT1VSQ0U7Ci0gICAgCi0gICAgICAgICMgRmluZCBhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9u
cy4KLSAgICAgICAgbXkgQGZ1bmN0aW9uczsKLSAgICAgICAgbXkgJXNhd19mdW5jdGlvbjsKLSAg
ICAgICAgbXkgQGNoYW5nZV9yYW5nZXMgPSAoQHskY2hhbmdlZF9saW5lX3Jhbmdlc3skZmlsZX19
LCBbXSk7Ci0gICAgICAgIG15IEBjaGFuZ2VfcmFuZ2UgPSAoMCwgMCk7Ci0gICAgICAgIEZVTkNU
SU9OOiBmb3JlYWNoIG15ICRmdW5jdGlvbl9yYW5nZV9yZWYgKEBmdW5jdGlvbl9yYW5nZXMpIHsK
LSAgICAgICAgICAgIG15IEBmdW5jdGlvbl9yYW5nZSA9IEAkZnVuY3Rpb25fcmFuZ2VfcmVmOwot
ICAgIAotICAgICAgICAgICAgIyBBZHZhbmNlIHRvIHN1Y2Nlc3NpdmUgY2hhbmdlIHJhbmdlcy4K
LSAgICAgICAgICAgIGZvciAoOzsgQGNoYW5nZV9yYW5nZSA9IEB7c2hpZnQgQGNoYW5nZV9yYW5n
ZXN9KSB7Ci0gICAgICAgICAgICAgICAgbGFzdCBGVU5DVElPTiB1bmxlc3MgQGNoYW5nZV9yYW5n
ZTsKLSAgICAKLSAgICAgICAgICAgICAgICAjIElmIHBhc3QgdGhpcyBmdW5jdGlvbiwgbW92ZSBv
biB0byB0aGUgbmV4dCBvbmUuCi0gICAgICAgICAgICAgICAgbmV4dCBGVU5DVElPTiBpZiAkY2hh
bmdlX3JhbmdlWzBdID4gJGZ1bmN0aW9uX3JhbmdlWzFdOwotICAgIAotICAgICAgICAgICAgICAg
ICMgSWYgYW4gb3ZlcmxhcCB3aXRoIHRoaXMgZnVuY3Rpb24gcmFuZ2UsIHJlY29yZCB0aGUgZnVu
Y3Rpb24gbmFtZS4KLSAgICAgICAgICAgICAgICBpZiAoJGNoYW5nZV9yYW5nZVsxXSA+PSAkZnVu
Y3Rpb25fcmFuZ2VbMF0KLSAgICAgICAgICAgICAgICAgICAgYW5kICRjaGFuZ2VfcmFuZ2VbMF0g
PD0gJGZ1bmN0aW9uX3JhbmdlWzFdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghJHNhd19m
dW5jdGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
c2F3X2Z1bmN0aW9ueyRmdW5jdGlvbl9yYW5nZVsyXX0gPSAxOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25fcmFuZ2VbMl07CisgICAgIyBGb3IgZWFj
aCBzb3VyY2UgZmlsZSwgY29udmVydCBsaW5lIHJhbmdlIHRvIGZ1bmN0aW9uIGxpc3QuCisgICAg
aWYgKCVjaGFuZ2VkX2xpbmVfcmFuZ2VzKSB7CisgICAgICAgIHByaW50IFNUREVSUiAiICBFeHRy
YWN0aW5nIGFmZmVjdGVkIGZ1bmN0aW9uIG5hbWVzIGZyb20gc291cmNlIGZpbGVzLlxuIjsKKyAg
ICAgICAgZm9yZWFjaCBteSAkZmlsZSAoa2V5cyAlY2hhbmdlZF9saW5lX3JhbmdlcykgeworICAg
ICAgICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBmaWxlLgorICAgICAgICAg
ICAgb3BlbiBTT1VSQ0UsICRmaWxlIG9yIG5leHQ7CisgICAgICAgICAgICBteSBAZnVuY3Rpb25f
cmFuZ2VzID0gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzKFwqU09VUkNFLCAkZmlsZSk7CisgICAg
ICAgICAgICBjbG9zZSBTT1VSQ0U7CisKKyAgICAgICAgICAgICMgRmluZCBhbGwgdGhlIG1vZGlm
aWVkIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgIG15IEBmdW5jdGlvbnM7CisgICAgICAgICAgICBt
eSAlc2F3X2Z1bmN0aW9uOworICAgICAgICAgICAgbXkgQGNoYW5nZV9yYW5nZXMgPSAoQHskY2hh
bmdlZF9saW5lX3Jhbmdlc3skZmlsZX19LCBbXSk7CisgICAgICAgICAgICBteSBAY2hhbmdlX3Jh
bmdlID0gKDAsIDApOworICAgICAgICAgIEZVTkNUSU9OOiBmb3JlYWNoIG15ICRmdW5jdGlvbl9y
YW5nZV9yZWYgKEBmdW5jdGlvbl9yYW5nZXMpIHsKKyAgICAgICAgICAgICAgICBteSBAZnVuY3Rp
b25fcmFuZ2UgPSBAJGZ1bmN0aW9uX3JhbmdlX3JlZjsKKworICAgICAgICAgICAgICAgICMgQWR2
YW5jZSB0byBzdWNjZXNzaXZlIGNoYW5nZSByYW5nZXMuCisgICAgICAgICAgICAgICAgZm9yICg7
OyBAY2hhbmdlX3JhbmdlID0gQHtzaGlmdCBAY2hhbmdlX3Jhbmdlc30pIHsKKyAgICAgICAgICAg
ICAgICAgICAgbGFzdCBGVU5DVElPTiB1bmxlc3MgQGNoYW5nZV9yYW5nZTsKKworICAgICAgICAg
ICAgICAgICAgICAjIElmIHBhc3QgdGhpcyBmdW5jdGlvbiwgbW92ZSBvbiB0byB0aGUgbmV4dCBv
bmUuCisgICAgICAgICAgICAgICAgICAgIG5leHQgRlVOQ1RJT04gaWYgJGNoYW5nZV9yYW5nZVsw
XSA+ICRmdW5jdGlvbl9yYW5nZVsxXTsKKworICAgICAgICAgICAgICAgICAgICAjIElmIGFuIG92
ZXJsYXAgd2l0aCB0aGlzIGZ1bmN0aW9uIHJhbmdlLCByZWNvcmQgdGhlIGZ1bmN0aW9uIG5hbWUu
CisgICAgICAgICAgICAgICAgICAgIGlmICgkY2hhbmdlX3JhbmdlWzFdID49ICRmdW5jdGlvbl9y
YW5nZVswXQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kICRjaGFuZ2VfcmFuZ2VbMF0gPD0g
JGZ1bmN0aW9uX3JhbmdlWzFdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzYXdf
ZnVuY3Rpb257JGZ1bmN0aW9uX3JhbmdlWzJdfSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRzYXdfZnVuY3Rpb257JGZ1bmN0aW9uX3JhbmdlWzJdfSA9IDE7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25fcmFuZ2VbMl07CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEZVTkNU
SU9OOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5leHQgRlVO
Q1RJT047CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
Ci0gICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyBub3cuCiAKLSAgICAgICAg
aWYgKEBmdW5jdGlvbnMpIHsKLSAgICAgICAgICAgICRmdW5jdGlvbl9saXN0c3skZmlsZX0gPSAi
IiBpZiAhZGVmaW5lZCAkZnVuY3Rpb25fbGlzdHN7JGZpbGV9OwotICAgICAgICAgICAgJGZ1bmN0
aW9uX2xpc3RzeyRmaWxlfSAuPSAiXG4gICAgICAgICgiIC4gam9pbigiKTpcbiAgICAgICAgKCIs
IEBmdW5jdGlvbnMpIC4gIik6IjsKKyAgICAgICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGZ1
bmN0aW9ucyBub3cuCisgICAgICAgICAgICBpZiAoQGZ1bmN0aW9ucykgeworICAgICAgICAgICAg
ICAgICRmdW5jdGlvbl9saXN0c3skZmlsZX0gPSAiIiBpZiAhZGVmaW5lZCAkZnVuY3Rpb25fbGlz
dHN7JGZpbGV9OworICAgICAgICAgICAgICAgICRmdW5jdGlvbl9saXN0c3skZmlsZX0gLj0gIlxu
ICAgICAgICAoIiAuIGpvaW4oIik6XG4gICAgICAgICgiLCBAZnVuY3Rpb25zKSAuICIpOiI7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci19CiAKLSMgR2V0IHNvbWUgcGFyYW1ldGVy
cyBmb3IgdGhlIENoYW5nZUxvZyB3ZSBhcmUgYWJvdXQgdG8gd3JpdGUuCi1teSAkZGF0ZSA9IGNo
YW5nZUxvZ0RhdGUoJGNoYW5nZUxvZ1RpbWVab25lKTsKLSRuYW1lID0gY2hhbmdlTG9nTmFtZUZy
b21BcmdzKCRuYW1lKTsKLSRlbWFpbEFkZHJlc3MgPSBjaGFuZ2VMb2dFbWFpbEFkZHJlc3NGcm9t
QXJncygkZW1haWxBZGRyZXNzKTsKKyAgICAjIEdldCBzb21lIHBhcmFtZXRlcnMgZm9yIHRoZSBD
aGFuZ2VMb2cgd2UgYXJlIGFib3V0IHRvIHdyaXRlLgorICAgIG15ICRkYXRlID0gY2hhbmdlTG9n
RGF0ZSgkY2hhbmdlTG9nVGltZVpvbmUpOworICAgICRuYW1lID0gY2hhbmdlTG9nTmFtZUZyb21B
cmdzKCRuYW1lKTsKKyAgICAkZW1haWxBZGRyZXNzID0gY2hhbmdlTG9nRW1haWxBZGRyZXNzRnJv
bUFyZ3MoJGVtYWlsQWRkcmVzcyk7CiAKLXByaW50IFNUREVSUiAiICBDaGFuZ2UgYXV0aG9yOiAk
bmFtZSA8JGVtYWlsQWRkcmVzcz4uXG4iOworICAgIHByaW50IFNUREVSUiAiICBDaGFuZ2UgYXV0
aG9yOiAkbmFtZSA8JGVtYWlsQWRkcmVzcz4uXG4iOwogCi1teSAkYnVnVVJMOwotaWYgKCRidWdO
dW1iZXIpIHsKLSAgICAkYnVnVVJMID0gImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0kYnVnTnVtYmVyIjsKLX0KKyAgICBteSAkYnVnVVJMOworICAgIGlmICgkYnVnTnVt
YmVyKSB7CisgICAgICAgICRidWdVUkwgPSAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPSRidWdOdW1iZXIiOworICAgIH0KIAotaWYgKCRidWdOdW1iZXIgJiYgISRidWdE
ZXNjcmlwdGlvbikgewotICAgIG15ICRidWdYTUxVUkwgPSAiJGJ1Z1VSTCZjdHlwZT14bWwiOwot
ICAgICMgUGVybCBoYXMgbm8gYnVpbHQgaW4gWE1MIHByb2Nlc3NpbmcsIHNvIHdlJ2xsIGZldGNo
IGFuZCBwYXJzZSB3aXRoIGN1cmwgYW5kIGdyZXAKLSAgICAjIFBhc3MgLS1pbnNlY3VyZSBiZWNh
dXNlIHNvbWUgY3lnd2luIGluc3RhbGxzIGhhdmUgbm8gY2VydHMgd2UgZG9uJ3QKLSAgICAjIGNh
cmUgYWJvdXQgdmFsaWRhdGluZyB0aGF0IGJ1Z3Mud2Via2l0Lm9yZyBpcyB3aG8gaXQgc2F5cyBp
dCBpcyBoZXJlLgotICAgIG15ICRkZXNjcmlwdGlvbkxpbmUgPSBgY3VybCAtLWluc2VjdXJlIC0t
c2lsZW50ICIkYnVnWE1MVVJMIiB8IGdyZXAgc2hvcnRfZGVzY2A7Ci0gICAgaWYgKCRkZXNjcmlw
dGlvbkxpbmUgIX4gLzxzaG9ydF9kZXNjPiguKik8XC9zaG9ydF9kZXNjPi8pIHsKLSAgICAgICAg
IyBNYXliZSB0aGUgcmVhc29uIHRoZSBhYm92ZSBkaWQgbm90IHdvcmsgaXMgYmVjYXVzZSB0aGUg
Y3VybCB0aGF0IGlzIGluc3RhbGxlZCBkb2Vzbid0Ci0gICAgICAgICMgc3VwcG9ydCBzc2wgYXQg
YWxsLgotICAgICAgICBpZiAoYGN1cmwgLS12ZXJzaW9uIHwgZ3JlcCBeUHJvdG9jb2xzYCAhfiAv
XGJodHRwc1xiLykgewotICAgICAgICAgICAgcHJpbnQgU1RERVJSICIgIENvdWxkIG5vdCBnZXQg
ZGVzY3JpcHRpb24gZm9yIGJ1ZyAkYnVnTnVtYmVyLlxuIjsKLSAgICAgICAgICAgIHByaW50IFNU
REVSUiAiICBJdCBsb29rcyBsaWtlIHlvdXIgdmVyc2lvbiBvZiBjdXJsIGRvZXMgbm90IHN1cHBv
cnQgc3NsLlxuIjsKLSAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBJZiB5b3UgYXJlIHVzaW5n
IG1hY3BvcnRzLCB0aGlzIGNhbiBiZSBmaXhlZCB3aXRoIHN1ZG8gcG9ydCBpbnN0YWxsIGN1cmwg
K3NzbC5cbiI7CisgICAgaWYgKCRidWdOdW1iZXIgJiYgISRidWdEZXNjcmlwdGlvbikgeworICAg
ICAgICBteSAkYnVnWE1MVVJMID0gIiRidWdVUkwmY3R5cGU9eG1sIjsKKyAgICAgICAgIyBQZXJs
IGhhcyBubyBidWlsdCBpbiBYTUwgcHJvY2Vzc2luZywgc28gd2UnbGwgZmV0Y2ggYW5kIHBhcnNl
IHdpdGggY3VybCBhbmQgZ3JlcAorICAgICAgICAjIFBhc3MgLS1pbnNlY3VyZSBiZWNhdXNlIHNv
bWUgY3lnd2luIGluc3RhbGxzIGhhdmUgbm8gY2VydHMgd2UgZG9uJ3QKKyAgICAgICAgIyBjYXJl
IGFib3V0IHZhbGlkYXRpbmcgdGhhdCBidWdzLndlYmtpdC5vcmcgaXMgd2hvIGl0IHNheXMgaXQg
aXMgaGVyZS4KKyAgICAgICAgbXkgJGRlc2NyaXB0aW9uTGluZSA9IGBjdXJsIC0taW5zZWN1cmUg
LS1zaWxlbnQgIiRidWdYTUxVUkwiIHwgZ3JlcCBzaG9ydF9kZXNjYDsKKyAgICAgICAgaWYgKCRk
ZXNjcmlwdGlvbkxpbmUgIX4gLzxzaG9ydF9kZXNjPiguKik8XC9zaG9ydF9kZXNjPi8pIHsKKyAg
ICAgICAgICAgICMgTWF5YmUgdGhlIHJlYXNvbiB0aGUgYWJvdmUgZGlkIG5vdCB3b3JrIGlzIGJl
Y2F1c2UgdGhlIGN1cmwgdGhhdCBpcyBpbnN0YWxsZWQgZG9lc24ndAorICAgICAgICAgICAgIyBz
dXBwb3J0IHNzbCBhdCBhbGwuCisgICAgICAgICAgICBpZiAoYGN1cmwgLS12ZXJzaW9uIHwgZ3Jl
cCBeUHJvdG9jb2xzYCAhfiAvXGJodHRwc1xiLykgeworICAgICAgICAgICAgICAgIHByaW50IFNU
REVSUiAiICBDb3VsZCBub3QgZ2V0IGRlc2NyaXB0aW9uIGZvciBidWcgJGJ1Z051bWJlci5cbiI7
CisgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICIgIEl0IGxvb2tzIGxpa2UgeW91ciB2ZXJz
aW9uIG9mIGN1cmwgZG9lcyBub3Qgc3VwcG9ydCBzc2wuXG4iOworICAgICAgICAgICAgICAgIHBy
aW50IFNUREVSUiAiICBJZiB5b3UgYXJlIHVzaW5nIG1hY3BvcnRzLCB0aGlzIGNhbiBiZSBmaXhl
ZCB3aXRoIHN1ZG8gcG9ydCBpbnN0YWxsIGN1cmwgK3NzbC5cbiI7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBCdWcgJGJ1Z051bWJlciBoYXMg
bm8gYnVnIGRlc2NyaXB0aW9uLiBNYXliZSB5b3Ugc2V0IHdyb25nIGJ1ZyBJRD9cbiI7CisgICAg
ICAgICAgICAgICAgcHJpbnQgU1RERVJSICIgIFRoZSBidWcgVVJMOiAkYnVnWE1MVVJMXG4iOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZXhpdCAxOworICAgICAgICB9CisgICAgICAgICRi
dWdEZXNjcmlwdGlvbiA9IGRlY29kZUVudGl0aWVzKCQxKTsKKyAgICAgICAgcHJpbnQgU1RERVJS
ICIgIERlc2NyaXB0aW9uIGZyb20gYnVnICRidWdOdW1iZXI6XG4gICAgXCIkYnVnRGVzY3JpcHRp
b25cIi5cbiI7CisgICAgfQorCisgICAgIyBSZW1vdmUgdHJhaWxpbmcgcGFyZW50aGVzaXplZCBu
b3RlcyBmcm9tIHVzZXIgbmFtZSAoYml0IG9mIGhhY2spLgorICAgICRuYW1lID1+IHMvXCguKj9c
KVxzKiQvL2c7CisKKyAgICAjIEZpbmQgdGhlIGNoYW5nZSBsb2dzLgorICAgIG15ICVoYXNfbG9n
OworICAgIG15ICVmaWxlczsKKyAgICBmb3JlYWNoIG15ICRmaWxlIChzb3J0IGtleXMgJWZ1bmN0
aW9uX2xpc3RzKSB7CisgICAgICAgIG15ICRwcmVmaXggPSAkZmlsZTsKKyAgICAgICAgbXkgJGhh
c19sb2cgPSAwOworICAgICAgICB3aGlsZSAoJHByZWZpeCkgeworICAgICAgICAgICAgJHByZWZp
eCA9fiBzLS9bXi9dKy8/JC0vLSBvciAkcHJlZml4ID0gIiI7CisgICAgICAgICAgICAkaGFzX2xv
ZyA9ICRoYXNfbG9neyRwcmVmaXh9OworICAgICAgICAgICAgaWYgKCFkZWZpbmVkICRoYXNfbG9n
KSB7CisgICAgICAgICAgICAgICAgJGhhc19sb2cgPSAtZiAiJHtwcmVmaXh9Q2hhbmdlTG9nIjsK
KyAgICAgICAgICAgICAgICAkaGFzX2xvZ3skcHJlZml4fSA9ICRoYXNfbG9nOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbGFzdCBpZiAkaGFzX2xvZzsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoISRoYXNfbG9nKSB7CisgICAgICAgICAgICBwcmludCBTVERFUlIgIk5vIENoYW5nZUxvZyBm
b3VuZCBmb3IgJGZpbGUuXG4iOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJpbnQg
U1RERVJSICIgIEJ1ZyAkYnVnTnVtYmVyIGhhcyBubyBidWcgZGVzY3JpcHRpb24uIE1heWJlIHlv
dSBzZXQgd3JvbmcgYnVnIElEP1xuIjsKLSAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBUaGUg
YnVnIFVSTDogJGJ1Z1hNTFVSTFxuIjsKKyAgICAgICAgICAgIHB1c2ggQHskZmlsZXN7JHByZWZp
eH19LCAkZmlsZTsKICAgICAgICAgfQotICAgICAgICBleGl0IDE7CiAgICAgfQotICAgICRidWdE
ZXNjcmlwdGlvbiA9IGRlY29kZUVudGl0aWVzKCQxKTsKLSAgICBwcmludCBTVERFUlIgIiAgRGVz
Y3JpcHRpb24gZnJvbSBidWcgJGJ1Z051bWJlcjpcbiAgICBcIiRidWdEZXNjcmlwdGlvblwiLlxu
IjsKLX0KIAotIyBSZW1vdmUgdHJhaWxpbmcgcGFyZW50aGVzaXplZCBub3RlcyBmcm9tIHVzZXIg
bmFtZSAoYml0IG9mIGhhY2spLgotJG5hbWUgPX4gcy9cKC4qP1wpXHMqJC8vZzsKLQotIyBGaW5k
IHRoZSBjaGFuZ2UgbG9ncy4KLW15ICVoYXNfbG9nOwotbXkgJWZpbGVzOwotZm9yZWFjaCBteSAk
ZmlsZSAoc29ydCBrZXlzICVmdW5jdGlvbl9saXN0cykgewotICAgIG15ICRwcmVmaXggPSAkZmls
ZTsKLSAgICBteSAkaGFzX2xvZyA9IDA7Ci0gICAgd2hpbGUgKCRwcmVmaXgpIHsKLSAgICAgICAg
JHByZWZpeCA9fiBzLS9bXi9dKy8/JC0vLSBvciAkcHJlZml4ID0gIiI7Ci0gICAgICAgICRoYXNf
bG9nID0gJGhhc19sb2d7JHByZWZpeH07Ci0gICAgICAgIGlmICghZGVmaW5lZCAkaGFzX2xvZykg
ewotICAgICAgICAgICAgJGhhc19sb2cgPSAtZiAiJHtwcmVmaXh9Q2hhbmdlTG9nIjsKLSAgICAg
ICAgICAgICRoYXNfbG9neyRwcmVmaXh9ID0gJGhhc19sb2c7CisgICAgIyBCdWlsZCB0aGUgbGlz
dCBvZiBDaGFuZ2VMb2cgcHJlZml4ZXMgaW4gdGhlIGNvcnJlY3QgcHJvamVjdCBvcmRlcgorICAg
IG15IEBwcmVmaXhlczsKKyAgICBteSAlcHJlZml4ZXNTb3J0OworICAgIGZvcmVhY2ggbXkgJHBy
ZWZpeCAoa2V5cyAlZmlsZXMpIHsKKyAgICAgICAgbXkgJHByZWZpeERpciA9IHN1YnN0cigkcHJl
Zml4LCAwLCBsZW5ndGgoJHByZWZpeCkgLSAxKTsgIyBzdHJpcCB0cmFpbGluZyAvCisgICAgICAg
IG15ICRzb3J0S2V5ID0gbGMgJHByZWZpeDsKKyAgICAgICAgJHNvcnRLZXkgPSAidG9wIGxldmVs
IiB1bmxlc3MgbGVuZ3RoICRzb3J0S2V5OworCisgICAgICAgIGlmICgkcHJlZml4RGlyIGVxICJ0
b3AgbGV2ZWwiKSB7CisgICAgICAgICAgICAkc29ydEtleSA9ICIiOworICAgICAgICB9IGVsc2lm
ICgkcHJlZml4RGlyIGVxICJUb29scyIpIHsKKyAgICAgICAgICAgICRzb3J0S2V5ID0gIi0sIGp1
c3QgYWZ0ZXIgdG9wIGxldmVsIjsKKyAgICAgICAgfSBlbHNpZiAoJHByZWZpeERpciBlcSAiV2Vi
QnJvd3NlciIpIHsKKyAgICAgICAgICAgICRzb3J0S2V5ID0gbGMgIldlYktpdCwgV2ViQnJvd3Nl
ciBhZnRlciI7CisgICAgICAgIH0gZWxzaWYgKCRwcmVmaXhEaXIgZXEgIlNvdXJjZS9XZWJDb3Jl
IikgeworICAgICAgICAgICAgJHNvcnRLZXkgPSBsYyAiV2ViRm91bmRhdGlvbiwgV2ViQ29yZSBh
ZnRlciI7CisgICAgICAgIH0gZWxzaWYgKCRwcmVmaXhEaXIgZXEgIkxheW91dFRlc3RzIikgewor
ICAgICAgICAgICAgJHNvcnRLZXkgPSBsYyAifiwgTGF5b3V0VGVzdHMgbGFzdCI7CiAgICAgICAg
IH0KLSAgICAgICAgbGFzdCBpZiAkaGFzX2xvZzsKKworICAgICAgICAkcHJlZml4ZXNTb3J0eyRz
b3J0S2V5fSA9ICRwcmVmaXg7CiAgICAgfQotICAgIGlmICghJGhhc19sb2cpIHsKLSAgICAgICAg
cHJpbnQgU1RERVJSICJObyBDaGFuZ2VMb2cgZm91bmQgZm9yICRmaWxlLlxuIjsKLSAgICB9IGVs
c2UgewotICAgICAgICBwdXNoIEB7JGZpbGVzeyRwcmVmaXh9fSwgJGZpbGU7CisgICAgZm9yZWFj
aCBteSAkcHJlZml4U29ydCAoc29ydCBrZXlzICVwcmVmaXhlc1NvcnQpIHsKKyAgICAgICAgcHVz
aCBAcHJlZml4ZXMsICRwcmVmaXhlc1NvcnR7JHByZWZpeFNvcnR9OwogICAgIH0KLX0KIAotIyBC
dWlsZCB0aGUgbGlzdCBvZiBDaGFuZ2VMb2cgcHJlZml4ZXMgaW4gdGhlIGNvcnJlY3QgcHJvamVj
dCBvcmRlcgotbXkgQHByZWZpeGVzOwotbXkgJXByZWZpeGVzU29ydDsKLWZvcmVhY2ggbXkgJHBy
ZWZpeCAoa2V5cyAlZmlsZXMpIHsKLSAgICBteSAkcHJlZml4RGlyID0gc3Vic3RyKCRwcmVmaXgs
IDAsIGxlbmd0aCgkcHJlZml4KSAtIDEpOyAjIHN0cmlwIHRyYWlsaW5nIC8KLSAgICBteSAkc29y
dEtleSA9IGxjICRwcmVmaXg7Ci0gICAgJHNvcnRLZXkgPSAidG9wIGxldmVsIiB1bmxlc3MgbGVu
Z3RoICRzb3J0S2V5OwotCi0gICAgaWYgKCRwcmVmaXhEaXIgZXEgInRvcCBsZXZlbCIpIHsKLSAg
ICAgICAgJHNvcnRLZXkgPSAiIjsKLSAgICB9IGVsc2lmICgkcHJlZml4RGlyIGVxICJUb29scyIp
IHsKLSAgICAgICAgJHNvcnRLZXkgPSAiLSwganVzdCBhZnRlciB0b3AgbGV2ZWwiOwotICAgIH0g
ZWxzaWYgKCRwcmVmaXhEaXIgZXEgIldlYkJyb3dzZXIiKSB7Ci0gICAgICAgICRzb3J0S2V5ID0g
bGMgIldlYktpdCwgV2ViQnJvd3NlciBhZnRlciI7Ci0gICAgfSBlbHNpZiAoJHByZWZpeERpciBl
cSAiU291cmNlL1dlYkNvcmUiKSB7Ci0gICAgICAgICRzb3J0S2V5ID0gbGMgIldlYkZvdW5kYXRp
b24sIFdlYkNvcmUgYWZ0ZXIiOwotICAgIH0gZWxzaWYgKCRwcmVmaXhEaXIgZXEgIkxheW91dFRl
c3RzIikgewotICAgICAgICAkc29ydEtleSA9IGxjICJ+LCBMYXlvdXRUZXN0cyBsYXN0IjsKKyAg
ICAjIEdldCB0aGUgbGF0ZXN0IENoYW5nZUxvZyBmaWxlcyBmcm9tIHN2bi4KKyAgICBteSBAbG9n
cyA9ICgpOworICAgIGZvcmVhY2ggbXkgJHByZWZpeCAoQHByZWZpeGVzKSB7CisgICAgICAgIHB1
c2ggQGxvZ3MsIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHByZWZpeCB8fCAiLiIsICJDaGFuZ2VMb2ci
KTsKICAgICB9CiAKLSAgICAkcHJlZml4ZXNTb3J0eyRzb3J0S2V5fSA9ICRwcmVmaXg7Ci19Ci1m
b3JlYWNoIG15ICRwcmVmaXhTb3J0IChzb3J0IGtleXMgJXByZWZpeGVzU29ydCkgewotICAgIHB1
c2ggQHByZWZpeGVzLCAkcHJlZml4ZXNTb3J0eyRwcmVmaXhTb3J0fTsKLX0KLQotIyBHZXQgdGhl
IGxhdGVzdCBDaGFuZ2VMb2cgZmlsZXMgZnJvbSBzdm4uCi1teSBAbG9ncyA9ICgpOwotZm9yZWFj
aCBteSAkcHJlZml4IChAcHJlZml4ZXMpIHsKLSAgICBwdXNoIEBsb2dzLCBGaWxlOjpTcGVjLT5j
YXRmaWxlKCRwcmVmaXggfHwgIi4iLCAiQ2hhbmdlTG9nIik7Ci19Ci0KLWlmIChAbG9ncyAmJiAk
dXBkYXRlQ2hhbmdlTG9ncyAmJiAkaXNTVk4pIHsKLSAgICBwcmludCBTVERFUlIgIiAgUnVubmlu
ZyAnc3ZuIHVwZGF0ZScgdG8gdXBkYXRlIENoYW5nZUxvZyBmaWxlcy5cbiI7Ci0gICAgb3BlbiBF
UlJPUlMsICItfCIsICRTVk4sICJ1cGRhdGUiLCBAbG9ncworICAgIGlmIChAbG9ncyAmJiAkdXBk
YXRlQ2hhbmdlTG9ncyAmJiAkaXNTVk4pIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICIgIFJ1bm5p
bmcgJ3N2biB1cGRhdGUnIHRvIHVwZGF0ZSBDaGFuZ2VMb2cgZmlsZXMuXG4iOworICAgICAgICBv
cGVuIEVSUk9SUywgIi18IiwgJFNWTiwgInVwZGF0ZSIsIEBsb2dzCiAgICAgICAgIG9yIGRpZSAi
VGhlIHN2biB1cGRhdGUgb2YgQ2hhbmdlTG9nIGZpbGVzIGZhaWxlZDogJCEuXG4iOwotICAgIG15
IEBjb25mbGljdGVkQ2hhbmdlTG9nczsKLSAgICB3aGlsZSAobXkgJGxpbmUgPSA8RVJST1JTPikg
ewotICAgICAgICBwcmludCBTVERFUlIgIiAgICAiLCAkbGluZTsKLSAgICAgICAgcHVzaCBAY29u
ZmxpY3RlZENoYW5nZUxvZ3MsICQxIGlmICRsaW5lID1+IG0vXkNccysoLis/KVtcclxuXSokLzsK
LSAgICB9Ci0gICAgY2xvc2UgRVJST1JTOworICAgICAgICBteSBAY29uZmxpY3RlZENoYW5nZUxv
Z3M7CisgICAgICAgIHdoaWxlIChteSAkbGluZSA9IDxFUlJPUlM+KSB7CisgICAgICAgICAgICBw
cmludCBTVERFUlIgIiAgICAiLCAkbGluZTsKKyAgICAgICAgICAgIHB1c2ggQGNvbmZsaWN0ZWRD
aGFuZ2VMb2dzLCAkMSBpZiAkbGluZSA9fiBtL15DXHMrKC4rPylbXHJcbl0qJC87CisgICAgICAg
IH0KKyAgICAgICAgY2xvc2UgRVJST1JTOwogCi0gICAgaWYgKEBjb25mbGljdGVkQ2hhbmdlTG9n
cykgewotICAgICAgICBwcmludCBTVERFUlIgIiAgQXR0ZW1wdGluZyB0byBtZXJnZSBjb25mbGlj
dGVkIENoYW5nZUxvZ3MuXG4iOwotICAgICAgICBteSAkcmVzb2x2ZUNoYW5nZUxvZ3NQYXRoID0g
RmlsZTo6U3BlYy0+Y2F0ZmlsZShkaXJuYW1lKCQwKSwgInJlc29sdmUtQ2hhbmdlTG9ncyIpOwot
ICAgICAgICBvcGVuIFJFU09MVkUsICItfCIsICRyZXNvbHZlQ2hhbmdlTG9nc1BhdGgsICItLW5v
LXdhcm5pbmdzIiwgQGNvbmZsaWN0ZWRDaGFuZ2VMb2dzCisgICAgICAgIGlmIChAY29uZmxpY3Rl
ZENoYW5nZUxvZ3MpIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBBdHRlbXB0aW5nIHRv
IG1lcmdlIGNvbmZsaWN0ZWQgQ2hhbmdlTG9ncy5cbiI7CisgICAgICAgICAgICBteSAkcmVzb2x2
ZUNoYW5nZUxvZ3NQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShkaXJuYW1lKCQwKSwgInJlc29s
dmUtQ2hhbmdlTG9ncyIpOworICAgICAgICAgICAgb3BlbiBSRVNPTFZFLCAiLXwiLCAkcmVzb2x2
ZUNoYW5nZUxvZ3NQYXRoLCAiLS1uby13YXJuaW5ncyIsIEBjb25mbGljdGVkQ2hhbmdlTG9ncwog
ICAgICAgICAgICAgb3IgZGllICJDb3VsZCBub3Qgb3BlbiByZXNvbHZlLUNoYW5nZUxvZ3Mgc2Ny
aXB0OiAkIS5cbiI7Ci0gICAgICAgIHByaW50IFNUREVSUiAiICAgICRfIiB3aGlsZSA8UkVTT0xW
RT47Ci0gICAgICAgIGNsb3NlIFJFU09MVkU7CisgICAgICAgICAgICBwcmludCBTVERFUlIgIiAg
ICAkXyIgd2hpbGUgPFJFU09MVkU+OworICAgICAgICAgICAgY2xvc2UgUkVTT0xWRTsKKyAgICAg
ICAgfQogICAgIH0KLX0KIAotIyBHZW5lcmF0ZSBuZXcgQ2hhbmdlTG9nIGVudHJpZXMgYW5kIChv
cHRpb25hbGx5KSB3cml0ZSBvdXQgbmV3IENoYW5nZUxvZyBmaWxlcy4KLWZvcmVhY2ggbXkgJHBy
ZWZpeCAoQHByZWZpeGVzKSB7Ci0gICAgbXkgJGVuZGwgPSAiXG4iOwotICAgIG15IEBvbGRfY2hh
bmdlX2xvZzsKLQotICAgIGlmICgkd3JpdGVDaGFuZ2VMb2dzKSB7Ci0gICAgICAgIG15ICRjaGFu
Z2VMb2dQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcHJlZml4IHx8ICIuIiwgIkNoYW5nZUxv
ZyIpOwotICAgICAgICBwcmludCBTVERFUlIgIiAgRWRpdGluZyB0aGUgJHtjaGFuZ2VMb2dQYXRo
fSBmaWxlLlxuIjsKLSAgICAgICAgb3BlbiBPTERfQ0hBTkdFX0xPRywgJHtjaGFuZ2VMb2dQYXRo
fSBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICR7Y2hhbmdlTG9nUGF0aH0gZmlsZTogJCEuXG4iOwot
ICAgICAgICAjIEl0J3MgbGVzcyBlZmZpY2llbnQgdG8gcmVhZCB0aGUgd2hvbGUgdGhpbmcgaW50
byBtZW1vcnkgdGhhbiBpdCB3b3VsZCBiZQotICAgICAgICAjIHRvIHJlYWQgaXQgd2hpbGUgd2Ug
cHJlcGVuZCB0byBpdCBsYXRlciwgYnV0IEkgbGlrZSBkb2luZyB0aGlzIHBhcnQgZmlyc3QuCi0g
ICAgICAgIEBvbGRfY2hhbmdlX2xvZyA9IDxPTERfQ0hBTkdFX0xPRz47Ci0gICAgICAgIGNsb3Nl
IE9MRF9DSEFOR0VfTE9HOwotICAgICAgICAjIFdlIHdhbnQgdG8gbWF0Y2ggdGhlIENoYW5nZUxv
ZydzIGxpbmUgZW5kaW5ncyBpbiBjYXNlIGl0IGRvZXNuJ3QgbWF0Y2gKLSAgICAgICAgIyB0aGUg
bmF0aXZlIGxpbmUgZW5kaW5ncyBmb3IgdGhpcyB2ZXJzaW9uIG9mIHBlcmwuCi0gICAgICAgIGlm
ICgkb2xkX2NoYW5nZV9sb2dbMF0gPX4gLyhccj9cbikkL2cpIHsKLSAgICAgICAgICAgICRlbmRs
ID0gIiQxIjsKKyAgICAjIEdlbmVyYXRlIG5ldyBDaGFuZ2VMb2cgZW50cmllcyBhbmQgKG9wdGlv
bmFsbHkpIHdyaXRlIG91dCBuZXcgQ2hhbmdlTG9nIGZpbGVzLgorICAgIGZvcmVhY2ggbXkgJHBy
ZWZpeCAoQHByZWZpeGVzKSB7CisgICAgICAgIG15ICRlbmRsID0gIlxuIjsKKyAgICAgICAgbXkg
QG9sZF9jaGFuZ2VfbG9nOworCisgICAgICAgIGlmICgkd3JpdGVDaGFuZ2VMb2dzKSB7CisgICAg
ICAgICAgICBteSAkY2hhbmdlTG9nUGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHByZWZpeCB8
fCAiLiIsICJDaGFuZ2VMb2ciKTsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiICBFZGl0aW5n
IHRoZSAke2NoYW5nZUxvZ1BhdGh9IGZpbGUuXG4iOworICAgICAgICAgICAgb3BlbiBPTERfQ0hB
TkdFX0xPRywgJHtjaGFuZ2VMb2dQYXRofSBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICR7Y2hhbmdl
TG9nUGF0aH0gZmlsZTogJCEuXG4iOworICAgICAgICAgICAgIyBJdCdzIGxlc3MgZWZmaWNpZW50
IHRvIHJlYWQgdGhlIHdob2xlIHRoaW5nIGludG8gbWVtb3J5IHRoYW4gaXQgd291bGQgYmUKKyAg
ICAgICAgICAgICMgdG8gcmVhZCBpdCB3aGlsZSB3ZSBwcmVwZW5kIHRvIGl0IGxhdGVyLCBidXQg
SSBsaWtlIGRvaW5nIHRoaXMgcGFydCBmaXJzdC4KKyAgICAgICAgICAgIEBvbGRfY2hhbmdlX2xv
ZyA9IDxPTERfQ0hBTkdFX0xPRz47CisgICAgICAgICAgICBjbG9zZSBPTERfQ0hBTkdFX0xPRzsK
KyAgICAgICAgICAgICMgV2Ugd2FudCB0byBtYXRjaCB0aGUgQ2hhbmdlTG9nJ3MgbGluZSBlbmRp
bmdzIGluIGNhc2UgaXQgZG9lc24ndCBtYXRjaAorICAgICAgICAgICAgIyB0aGUgbmF0aXZlIGxp
bmUgZW5kaW5ncyBmb3IgdGhpcyB2ZXJzaW9uIG9mIHBlcmwuCisgICAgICAgICAgICBpZiAoJG9s
ZF9jaGFuZ2VfbG9nWzBdID1+IC8oXHI/XG4pJC9nKSB7CisgICAgICAgICAgICAgICAgJGVuZGwg
PSAiJDEiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3BlbiBDSEFOR0VfTE9HLCAiPiAk
e2NoYW5nZUxvZ1BhdGh9IiBvciBkaWUgIkNvdWxkIG5vdCB3cml0ZSAke2NoYW5nZUxvZ1BhdGh9
XG4uIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG9wZW4gQ0hBTkdFX0xPRywgIj4t
IiBvciBkaWUgIkNvdWxkIG5vdCB3cml0ZSB0byBTVERPVVRcbi4iOworICAgICAgICAgICAgcHJp
bnQgc3Vic3RyKCRwcmVmaXgsIDAsIGxlbmd0aCgkcHJlZml4KSAtIDEpIC4gIjpcblxuIiB1bmxl
c3MgKHNjYWxhciBAcHJlZml4ZXMpID09IDE7CiAgICAgICAgIH0KLSAgICAgICAgb3BlbiBDSEFO
R0VfTE9HLCAiPiAke2NoYW5nZUxvZ1BhdGh9IiBvciBkaWUgIkNvdWxkIG5vdCB3cml0ZSAke2No
YW5nZUxvZ1BhdGh9XG4uIjsKLSAgICB9IGVsc2UgewotICAgICAgICBvcGVuIENIQU5HRV9MT0cs
ICI+LSIgb3IgZGllICJDb3VsZCBub3Qgd3JpdGUgdG8gU1RET1VUXG4uIjsKLSAgICAgICAgcHJp
bnQgc3Vic3RyKCRwcmVmaXgsIDAsIGxlbmd0aCgkcHJlZml4KSAtIDEpIC4gIjpcblxuIiB1bmxl
c3MgKHNjYWxhciBAcHJlZml4ZXMpID09IDE7Ci0gICAgfQogCi0gICAgcHJpbnQgQ0hBTkdFX0xP
RyBub3JtYWxpemVMaW5lRW5kaW5ncygiJGRhdGUgICRuYW1lICA8JGVtYWlsQWRkcmVzcz5cblxu
IiwgJGVuZGwpOworICAgICAgICBwcmludCBDSEFOR0VfTE9HIG5vcm1hbGl6ZUxpbmVFbmRpbmdz
KCIkZGF0ZSAgJG5hbWUgIDwkZW1haWxBZGRyZXNzPlxuXG4iLCAkZW5kbCk7CisKKyAgICAgICAg
bXkgKCRyZXZpZXdlciwgJGRlc2NyaXB0aW9uKSA9IHJldmlld2VyQW5kRGVzY3JpcHRpb25Gb3JH
aXRDb21taXQoJGdpdENvbW1pdCkgaWYgJGdpdENvbW1pdDsKKyAgICAgICAgJHJldmlld2VyID0g
Ik5PQk9EWSAoT08iIC4gIlBTISkiIGlmICEkcmV2aWV3ZXI7CiAKLSAgICBteSAoJHJldmlld2Vy
LCAkZGVzY3JpcHRpb24pID0gcmV2aWV3ZXJBbmREZXNjcmlwdGlvbkZvckdpdENvbW1pdCgkZ2l0
Q29tbWl0KSBpZiAkZ2l0Q29tbWl0OwotICAgICRyZXZpZXdlciA9ICJOT0JPRFkgKE9PIiAuICJQ
UyEpIiBpZiAhJHJldmlld2VyOworICAgICAgICBwcmludCBDSEFOR0VfTE9HIG5vcm1hbGl6ZUxp
bmVFbmRpbmdzKCRkZXNjcmlwdGlvbiAuICJcbiIsICRlbmRsKSBpZiAkZGVzY3JpcHRpb247CiAK
LSAgICBwcmludCBDSEFOR0VfTE9HIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKCRkZXNjcmlwdGlvbiAu
ICJcbiIsICRlbmRsKSBpZiAkZGVzY3JpcHRpb247CisgICAgICAgICRidWdEZXNjcmlwdGlvbiA9
ICJOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKSIgdW5sZXNzICRi
dWdEZXNjcmlwdGlvbjsKKyAgICAgICAgcHJpbnQgQ0hBTkdFX0xPRyBub3JtYWxpemVMaW5lRW5k
aW5ncygiICAgICAgICAkYnVnRGVzY3JpcHRpb25cbiIsICRlbmRsKSBpZiAkYnVnRGVzY3JpcHRp
b247CisgICAgICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGluZ3MoIiAgICAg
ICAgJGJ1Z1VSTFxuIiwgJGVuZGwpIGlmICRidWdVUkw7CisgICAgICAgIHByaW50IENIQU5HRV9M
T0cgbm9ybWFsaXplTGluZUVuZGluZ3MoIlxuIiwgJGVuZGwpOwogCi0gICAgJGJ1Z0Rlc2NyaXB0
aW9uID0gIk5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpIiB1bmxl
c3MgJGJ1Z0Rlc2NyaXB0aW9uOwotICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVu
ZGluZ3MoIiAgICAgICAgJGJ1Z0Rlc2NyaXB0aW9uXG4iLCAkZW5kbCkgaWYgJGJ1Z0Rlc2NyaXB0
aW9uOwotICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGluZ3MoIiAgICAgICAg
JGJ1Z1VSTFxuIiwgJGVuZGwpIGlmICRidWdVUkw7Ci0gICAgcHJpbnQgQ0hBTkdFX0xPRyBub3Jt
YWxpemVMaW5lRW5kaW5ncygiXG4iLCAkZW5kbCk7CisgICAgICAgIHByaW50IENIQU5HRV9MT0cg
bm9ybWFsaXplTGluZUVuZGluZ3MoIiAgICAgICAgUmV2aWV3ZWQgYnkgJHJldmlld2VyLlxuXG4i
LCAkZW5kbCk7CisKKyAgICAgICAgaWYgKCRwcmVmaXggPX4gbS9XZWJDb3JlLyB8fCBgcHdkYCA9
fiBtL1dlYkNvcmUvKSB7CisgICAgICAgICAgICBpZiAoJGRpZENoYW5nZVJlZ3Jlc3Npb25UZXN0
cykgeworICAgICAgICAgICAgICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGlu
Z3ModGVzdExpc3RGb3JDaGFuZ2VMb2coc29ydCBAYWRkZWRSZWdyZXNzaW9uVGVzdHMpLCAkZW5k
bCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50IENIQU5HRV9M
T0cgbm9ybWFsaXplTGluZUVuZGluZ3MoIiAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpXG5c
biIsICRlbmRsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgcHJpbnQgQ0hBTkdF
X0xPRyBub3JtYWxpemVMaW5lRW5kaW5ncygiICAgICAgICBSZXZpZXdlZCBieSAkcmV2aWV3ZXIu
XG5cbiIsICRlbmRsKTsKKyAgICAgICAgZm9yZWFjaCBteSAkZmlsZSAoc29ydCBAeyRmaWxlc3sk
cHJlZml4fX0pIHsKKyAgICAgICAgICAgIG15ICRmaWxlX3N0ZW0gPSBzdWJzdHIgJGZpbGUsIGxl
bmd0aCAkcHJlZml4OworICAgICAgICAgICAgcHJpbnQgQ0hBTkdFX0xPRyBub3JtYWxpemVMaW5l
RW5kaW5ncygiICAgICAgICAqICRmaWxlX3N0ZW06JGZ1bmN0aW9uX2xpc3RzeyRmaWxlfVxuIiwg
JGVuZGwpOworICAgICAgICB9CiAKLSAgICBpZiAoJHByZWZpeCA9fiBtL1dlYkNvcmUvIHx8IGBw
d2RgID1+IG0vV2ViQ29yZS8pIHsKLSAgICAgICAgaWYgKCRkaWRDaGFuZ2VSZWdyZXNzaW9uVGVz
dHMpIHsKLSAgICAgICAgICAgIHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGluZ3Mo
dGVzdExpc3RGb3JDaGFuZ2VMb2coc29ydCBAYWRkZWRSZWdyZXNzaW9uVGVzdHMpLCAkZW5kbCk7
CisgICAgICAgIGlmICgkd3JpdGVDaGFuZ2VMb2dzKSB7CisgICAgICAgICAgICBwcmludCBDSEFO
R0VfTE9HIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKCJcbiIsICRlbmRsKSwgQG9sZF9jaGFuZ2VfbG9n
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJpbnQgQ0hBTkdFX0xPRyBub3JtYWxp
emVMaW5lRW5kaW5ncygiICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISlcblxuIiwgJGVuZGwp
OworICAgICAgICAgICAgcHJpbnQgQ0hBTkdFX0xPRyAiXG4iOwogICAgICAgICB9Ci0gICAgfQog
Ci0gICAgZm9yZWFjaCBteSAkZmlsZSAoc29ydCBAeyRmaWxlc3skcHJlZml4fX0pIHsKLSAgICAg
ICAgbXkgJGZpbGVfc3RlbSA9IHN1YnN0ciAkZmlsZSwgbGVuZ3RoICRwcmVmaXg7Ci0gICAgICAg
IHByaW50IENIQU5HRV9MT0cgbm9ybWFsaXplTGluZUVuZGluZ3MoIiAgICAgICAgKiAkZmlsZV9z
dGVtOiRmdW5jdGlvbl9saXN0c3skZmlsZX1cbiIsICRlbmRsKTsKKyAgICAgICAgY2xvc2UgQ0hB
TkdFX0xPRzsKICAgICB9CiAKICAgICBpZiAoJHdyaXRlQ2hhbmdlTG9ncykgewotICAgICAgICBw
cmludCBDSEFOR0VfTE9HIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKCJcbiIsICRlbmRsKSwgQG9sZF9j
aGFuZ2VfbG9nOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHByaW50IENIQU5HRV9MT0cgIlxuIjsK
KyAgICAgICAgcHJpbnQgU1RERVJSICItLSBQbGVhc2UgcmVtZW1iZXIgdG8gaW5jbHVkZSBhIGRl
dGFpbGVkIGRlc2NyaXB0aW9uIGluIHlvdXIgQ2hhbmdlTG9nIGVudHJ5LiAtLVxuLS0gU2VlIDxo
dHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWw+IGZvciBtb3JlIGluZm8g
LS1cbiI7CiAgICAgfQogCi0gICAgY2xvc2UgQ0hBTkdFX0xPRzsKLX0KLQotaWYgKCR3cml0ZUNo
YW5nZUxvZ3MpIHsKLSAgICBwcmludCBTVERFUlIgIi0tIFBsZWFzZSByZW1lbWJlciB0byBpbmNs
dWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gaW4geW91ciBDaGFuZ2VMb2cgZW50cnkuIC0tXG4t
LSBTZWUgPGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb250cmlidXRpbmcuaHRtbD4gZm9yIG1v
cmUgaW5mbyAtLVxuIjsKLX0KLQotIyBXcml0ZSBvdXQgYW5vdGhlciBkaWZmLgotaWYgKCRzcGV3
RGlmZiAmJiBAY2hhbmdlZF9maWxlcykgewotICAgIHByaW50IFNUREVSUiAiICBSdW5uaW5nIGRp
ZmYgdG8gaGVscCB5b3Ugd3JpdGUgdGhlIENoYW5nZUxvZyBlbnRyaWVzLlxuIjsKLSAgICBsb2Nh
bCAkLyA9IHVuZGVmOyAjIGxvY2FsIHNsdXJwIG1vZGUKLSAgICBvcGVuIERJRkYsICItfCIsIGNy
ZWF0ZVBhdGNoQ29tbWFuZCgkY2hhbmdlZF9maWxlc19zdHJpbmcpIG9yIGRpZSAiVGhlIGRpZmYg
ZmFpbGVkOiAkIS5cbiI7Ci0gICAgcHJpbnQgPERJRkY+OwotICAgIGNsb3NlIERJRkY7Ci19Cisg
ICAgIyBXcml0ZSBvdXQgYW5vdGhlciBkaWZmLgorICAgIGlmICgkc3Bld0RpZmYgJiYgQGNoYW5n
ZWRfZmlsZXMpIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICIgIFJ1bm5pbmcgZGlmZiB0byBoZWxw
IHlvdSB3cml0ZSB0aGUgQ2hhbmdlTG9nIGVudHJpZXMuXG4iOworICAgICAgICBsb2NhbCAkLyA9
IHVuZGVmOyAjIGxvY2FsIHNsdXJwIG1vZGUKKyAgICAgICAgb3BlbiBESUZGLCAiLXwiLCBjcmVh
dGVQYXRjaENvbW1hbmQoJGNoYW5nZWRfZmlsZXNfc3RyaW5nKSBvciBkaWUgIlRoZSBkaWZmIGZh
aWxlZDogJCEuXG4iOworICAgICAgICBwcmludCA8RElGRj47CisgICAgICAgIGNsb3NlIERJRkY7
CisgICAgfQogCi0jIE9wZW4gQ2hhbmdlTG9ncy4KLWlmICgkb3BlbkNoYW5nZUxvZ3MgJiYgQGxv
Z3MpIHsKLSAgICBwcmludCBTVERFUlIgIiAgT3BlbmluZyB0aGUgZWRpdGVkIENoYW5nZUxvZyBm
aWxlcy5cbiI7Ci0gICAgbXkgJGVkaXRvciA9ICRFTlZ7Q0hBTkdFX0xPR19FRElUT1J9OwotICAg
IGlmICgkZWRpdG9yKSB7Ci0gICAgICAgIHN5c3RlbSAoKHNwbGl0ICcgJywgJGVkaXRvciksIEBs
b2dzKTsKLSAgICB9IGVsc2UgewotICAgICAgICAkZWRpdG9yID0gJEVOVntDSEFOR0VfTE9HX0VE
SVRfQVBQTElDQVRJT059OworICAgICMgT3BlbiBDaGFuZ2VMb2dzLgorICAgIGlmICgkb3BlbkNo
YW5nZUxvZ3MgJiYgQGxvZ3MpIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICIgIE9wZW5pbmcgdGhl
IGVkaXRlZCBDaGFuZ2VMb2cgZmlsZXMuXG4iOworICAgICAgICBteSAkZWRpdG9yID0gJEVOVntD
SEFOR0VfTE9HX0VESVRPUn07CiAgICAgICAgIGlmICgkZWRpdG9yKSB7Ci0gICAgICAgICAgICBz
eXN0ZW0gIm9wZW4iLCAiLWEiLCAkZWRpdG9yLCBAbG9nczsKKyAgICAgICAgICAgIHN5c3RlbSAo
KHNwbGl0ICcgJywgJGVkaXRvciksIEBsb2dzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHN5c3RlbSAib3BlbiIsICItZSIsIEBsb2dzOworICAgICAgICAgICAgJGVkaXRvciA9ICRF
TlZ7Q0hBTkdFX0xPR19FRElUX0FQUExJQ0FUSU9OfTsKKyAgICAgICAgICAgIGlmICgkZWRpdG9y
KSB7CisgICAgICAgICAgICAgICAgc3lzdGVtICJvcGVuIiwgIi1hIiwgJGVkaXRvciwgQGxvZ3M7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN5c3RlbSAib3BlbiIsICIt
ZSIsIEBsb2dzOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQogCi0jIERvbmUu
Ci1leGl0OwotCi0KIHN1YiBjaGFuZ2VMb2dEYXRlKCQpCiB7CiAgICAgbXkgKCR0aW1lWm9uZSkg
PSBAXzsK
</data>
<flag name="review"
          id="117672"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>