<?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>106055</bug_id>
          
          <creation_ts>2013-01-03 15:31:42 -0800</creation_ts>
          <short_desc>testapi is failing with a block-related error in the Objc API</short_desc>
          <delta_ts>2013-01-11 15:11:05 -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>JavaScriptCore</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>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>799760</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-03 15:31:42 -0800</bug_when>
    <thetext>2013-01-03 15:11:05.211 testapi[88881:60b] TEST: &quot;blockCallback(NSString *)&quot;: FAILED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800400</commentid>
    <comment_count>1</comment_count>
      <attachid>181336</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-04 11:08:27 -0800</bug_when>
    <thetext>Created attachment 181336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800402</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-04 11:09:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/12954235&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800690</commentid>
    <comment_count>3</comment_count>
      <attachid>181336</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-04 15:33:27 -0800</bug_when>
    <thetext>Comment on attachment 181336
Patch

You can save the old idiom&apos;s performance by just putting a &quot;()&quot; at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800745</commentid>
    <comment_count>4</comment_count>
      <attachid>181410</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-04 16:44:38 -0800</bug_when>
    <thetext>Created attachment 181410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800752</commentid>
    <comment_count>5</comment_count>
      <attachid>181410</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-04 16:49:47 -0800</bug_when>
    <thetext>Comment on attachment 181410
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801397</commentid>
    <comment_count>6</comment_count>
      <attachid>181410</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 10:32:41 -0800</bug_when>
    <thetext>Comment on attachment 181410
Patch

Clearing flags on attachment: 181410

Committed r138957: &lt;http://trac.webkit.org/changeset/138957&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801398</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 10:32:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805657</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-11 15:04:01 -0800</bug_when>
    <thetext>We have a similar bug in ObjCCallbackFunction.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805660</commentid>
    <comment_count>9</comment_count>
      <attachid>182427</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-11 15:06:27 -0800</bug_when>
    <thetext>Created attachment 182427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805665</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-11 15:11:05 -0800</bug_when>
    <thetext>Committed r139508: &lt;http://trac.webkit.org/changeset/139508&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181336</attachid>
            <date>2013-01-04 11:08:27 -0800</date>
            <delta_ts>2013-01-04 16:44:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106055-20130104110534.patch</filename>
            <type>text/plain</type>
            <size>1669</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4ODE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDEzLTAxLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgdGVzdGFwaSBpcyBmYWlsaW5nIHdpdGggYSBibG9jay1yZWxhdGVkIGVycm9yIGlu
IHRoZSBPYmpjIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA2MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tOgorICAgICAgICAoYmxvY2tTaWduYXR1cmVDb250
YWluc0NsYXNzKTogQ2FzdGluZyBhIGJsb2NrIHRvIGEgYm9vbCB3aWxsIGFsd2F5cyByZXR1cm4g
dHJ1ZSwgd2hpY2ggaXNuJ3QgdGhlIAorICAgICAgICBiZWhhdmlvciB0aGF0IGlzIGludGVuZGVk
IGhlcmUuIEluc3RlYWQsIHdlIHNob3VsZCBjYWxsIHN0cnN0ciBhdCBydW50aW1lIHRvIGNoZWNr
IGZvciB0aGUgcHJlc2VuY2Ugb2YgCisgICAgICAgIGNsYXNzIG5hbWVzIGluIHRoZSBzaWduYXR1
cmUuIEl0J3MgbW9yZSBleHBlbnNpdmUsIGJ1dCB0aGlzIGlzbid0IHBlcmZvcm1hbmNlLWNyaXRp
Y2FsIGNvZGUuCisKIDIwMTMtMDEtMDQgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMgI2RlZmluZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm0JKHJldmlzaW9uIDEz
ODgxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjQsMTEgKzEyNCw4IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVzdWx0KE5T
U3RyaW5nICpkZXNjcmkKIAogc3RhdGljIGJvb2wgYmxvY2tTaWduYXR1cmVDb250YWluc0NsYXNz
KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBjb250YWluc0NsYXNzID0gKGJvb2wpXnsKLSAgICAgICAg
aWQgYmxvY2sgPSBeKE5TU3RyaW5nICpzdHJpbmcpeyByZXR1cm4gc3RyaW5nOyB9OwotICAgICAg
ICByZXR1cm4gX0Jsb2NrX2hhc19zaWduYXR1cmUoYmxvY2spICYmIHN0cnN0cihfQmxvY2tfc2ln
bmF0dXJlKGJsb2NrKSwgIk5TU3RyaW5nIik7Ci0gICAgfTsKLSAgICByZXR1cm4gY29udGFpbnND
bGFzczsKKyAgICBzdGF0aWMgaWQgYmxvY2sgPSBeKE5TU3RyaW5nICpzdHJpbmcpeyByZXR1cm4g
c3RyaW5nOyB9OworICAgIHJldHVybiBfQmxvY2tfaGFzX3NpZ25hdHVyZShibG9jaykgJiYgc3Ry
c3RyKF9CbG9ja19zaWduYXR1cmUoYmxvY2spLCAiTlNTdHJpbmciKTsKIH0KIAogdm9pZCB0ZXN0
T2JqZWN0aXZlQ0FQSSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181410</attachid>
            <date>2013-01-04 16:44:38 -0800</date>
            <delta_ts>2013-01-11 15:06:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106055-20130104164145.patch</filename>
            <type>text/plain</type>
            <size>45911</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4ODY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDEzLTAxLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgdGVzdGFwaSBpcyBmYWlsaW5nIHdpdGggYSBibG9jay1yZWxhdGVkIGVycm9yIGlu
IHRoZSBPYmpjIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA2MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2FzdGluZyBhIGJsb2NrIHRvIGEgYm9vbCB3aWxsIGFsd2F5cyByZXR1cm4gdHJ1ZSwg
d2hpY2ggaXNuJ3QgdGhlIGJlaGF2aW9yIHRoYXQgaXMgaW50ZW5kZWQgaGVyZS4KKyAgICAgICAg
SW5zdGVhZCB3ZSBuZWVkIHRvIGNhbGwgdGhlIGJsb2NrLCBidXQgQyBzZW1hbnRpY3MgZG9uJ3Qg
YWxsb3cgdGhpcywgc28gd2UgbmVlZCB0byBjaGFuZ2UgCisgICAgICAgIHRlc3RhcGkubSB0byBi
ZSBPYmplY3RpdmUtQysrIGFuZCB0aGVyZWZvcmUgdGVzdGFwaS5tbS4KKworICAgICAgICAqIEFQ
SS90ZXN0cy90ZXN0YXBpLm06IFJlbW92ZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGku
bW06IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5t
LgorICAgICAgICAoYmxvY2tTaWduYXR1cmVDb250YWluc0NsYXNzKToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEzLTAxLTAzICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIHNob3VsZCBub3QgZWxp
ZGUgQ2hlY2tTdHJ1Y3R1cmUgaWYgaXQncyBuZWVkZWQgdG8gcGVyZm9ybSBhIGNlbGwgY2hlY2sK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tCShyZXZpc2lv
biAxMzg4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubQko
d29ya2luZyBjb3B5KQpAQCAtMSw0NzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJKYXZhU2NyaXB0Q29yZS5oIgotCi1ib29s
IF9CbG9ja19oYXNfc2lnbmF0dXJlKHZvaWQgKik7Ci1jb25zdCBjaGFyICogX0Jsb2NrX3NpZ25h
dHVyZSh2b2lkICopOwotCi1leHRlcm4gaW50IGZhaWxlZDsKLXZvaWQgdGVzdE9iamVjdGl2ZUNB
UEkodm9pZCk7Ci0KLSNpZiBKU19PQkpDX0FQSV9FTkFCTEVECi0KLUBwcm90b2NvbCBQYXJlbnRP
YmplY3QgPEpTRXhwb3J0PgotQGVuZAotCi1AaW50ZXJmYWNlIFBhcmVudE9iamVjdCA6IE5TT2Jq
ZWN0PFBhcmVudE9iamVjdD4KLSsgKE5TU3RyaW5nICopcGFyZW50VGVzdDsKLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIFBhcmVudE9iamVjdAotKyAoTlNTdHJpbmcgKilwYXJlbnRUZXN0Ci17Ci0g
ICAgcmV0dXJuIFtzZWxmIGRlc2NyaXB0aW9uXTsKLX0KLUBlbmQKLQotQHByb3RvY29sIFRlc3RP
YmplY3QgPEpTRXhwb3J0PgotQHByb3BlcnR5IGludCB2YXJpYWJsZTsKLUBwcm9wZXJ0eSAocmVh
ZG9ubHkpIGludCBzaXg7Ci1AcHJvcGVydHkgQ0dQb2ludCBwb2ludDsKLSsgKE5TU3RyaW5nICop
Y2xhc3NUZXN0OwotKyAoTlNTdHJpbmcgKilwYXJlbnRUZXN0OwotLSAoTlNTdHJpbmcgKilnZXRT
dHJpbmc7Ci1KU0V4cG9ydEFzKHRlc3RBcmd1bWVudFR5cGVzLAotLSAoTlNTdHJpbmcgKil0ZXN0
QXJndW1lbnRUeXBlc1dpdGhJbnQ6KGludClpIGRvdWJsZTooZG91YmxlKWQgYm9vbGVhbjooQk9P
TCliIHN0cmluZzooTlNTdHJpbmcgKilzIG51bWJlcjooTlNOdW1iZXIgKiluIGFycmF5OihOU0Fy
cmF5ICopYSBkaWN0aW9uYXJ5OihOU0RpY3Rpb25hcnkgKilvCi0pOwotLSAodm9pZCljYWxsYmFj
azoodm9pZCheKShpbnQpKWJsb2NrOwotQGVuZAotCi1AaW50ZXJmYWNlIFRlc3RPYmplY3QgOiBQ
YXJlbnRPYmplY3QgPFRlc3RPYmplY3Q+Ci1AcHJvcGVydHkgaW50IHNpeDsKLSsgKGlkKXRlc3RP
YmplY3Q7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBUZXN0T2JqZWN0Ci1Ac3ludGhlc2l6ZSB2
YXJpYWJsZTsKLUBzeW50aGVzaXplIHNpeDsKLUBzeW50aGVzaXplIHBvaW50OwotKyAoaWQpdGVz
dE9iamVjdAotewotICAgIHJldHVybiBbW1tUZXN0T2JqZWN0IGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07Ci19Ci0rIChOU1N0cmluZyAqKWNsYXNzVGVzdAotewotICAgIHJldHVybiBAImNsYXNz
VGVzdCAtIG9rYXkiOwotfQotLSAoTlNTdHJpbmcgKilnZXRTdHJpbmcKLXsKLSAgICByZXR1cm4g
QCI0MiI7Ci19Ci0tIChOU1N0cmluZyAqKXRlc3RBcmd1bWVudFR5cGVzV2l0aEludDooaW50KWkg
ZG91YmxlOihkb3VibGUpZCBib29sZWFuOihCT09MKWIgc3RyaW5nOihOU1N0cmluZyAqKXMgbnVt
YmVyOihOU051bWJlciAqKW4gYXJyYXk6KE5TQXJyYXkgKilhIGRpY3Rpb25hcnk6KE5TRGljdGlv
bmFyeSAqKW8KLXsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZCwl
ZywlZCwlQCwlZCwlQCwlQCIsIGksIGQsIGI9PVlFUz90cnVlOmZhbHNlLHMsW24gaW50VmFsdWVd
LGFbMV0sb1tAIngiXV07Ci19Ci0tICh2b2lkKWNhbGxiYWNrOih2b2lkKF4pKGludCkpYmxvY2sK
LXsKLSAgICBibG9jayg0Mik7Ci19Ci1AZW5kCi0KLWJvb2wgdGVzdFhZWlRlc3RlZCA9IGZhbHNl
OwotCi1AcHJvdG9jb2wgVGV4dFhZWiA8SlNFeHBvcnQ+Ci1AcHJvcGVydHkgaW50IHg7Ci1AcHJv
cGVydHkgKHJlYWRvbmx5KSBpbnQgeTsKLS0gKHZvaWQpdGVzdDooTlNTdHJpbmcgKiltZXNzYWdl
OwotQGVuZAotCi1AaW50ZXJmYWNlIFRleHRYWVogOiBOU09iamVjdCA8VGV4dFhZWj4KLUBwcm9w
ZXJ0eSBpbnQgeDsKLUBwcm9wZXJ0eSBpbnQgeTsKLUBwcm9wZXJ0eSBpbnQgejsKLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIFRleHRYWVoKLUBzeW50aGVzaXplIHg7Ci1Ac3ludGhlc2l6ZSB5Owot
QHN5bnRoZXNpemUgejsKLS0gKHZvaWQpdGVzdDooTlNTdHJpbmcgKiltZXNzYWdlCi17Ci0gICAg
dGVzdFhZWlRlc3RlZCA9IFttZXNzYWdlIGlzRXF1YWw6QCJ0ZXN0Il0gJiYgeCA9PSAxMyAmIHkg
PT0gNCAmJiB6ID09IDU7Ci19Ci1AZW5kCi0KLXN0YXRpYyB2b2lkIGNoZWNrUmVzdWx0KE5TU3Ry
aW5nICpkZXNjcmlwdGlvbiwgYm9vbCBwYXNzZWQpCi17Ci0gICAgTlNMb2coQCJURVNUOiBcIiVA
XCI6ICVAIiwgZGVzY3JpcHRpb24sIHBhc3NlZCA/IEAiUEFTU0VEIiA6IEAiRkFJTEVEIik7Ci0g
ICAgaWYgKCFwYXNzZWQpCi0gICAgICAgIGZhaWxlZCA9IDE7Ci19Ci0KLXN0YXRpYyBib29sIGJs
b2NrU2lnbmF0dXJlQ29udGFpbnNDbGFzcygpCi17Ci0gICAgc3RhdGljIGJvb2wgY29udGFpbnND
bGFzcyA9IChib29sKV57Ci0gICAgICAgIGlkIGJsb2NrID0gXihOU1N0cmluZyAqc3RyaW5nKXsg
cmV0dXJuIHN0cmluZzsgfTsKLSAgICAgICAgcmV0dXJuIF9CbG9ja19oYXNfc2lnbmF0dXJlKGJs
b2NrKSAmJiBzdHJzdHIoX0Jsb2NrX3NpZ25hdHVyZShibG9jayksICJOU1N0cmluZyIpOwotICAg
IH07Ci0gICAgcmV0dXJuIGNvbnRhaW5zQ2xhc3M7Ci19Ci0KLXZvaWQgdGVzdE9iamVjdGl2ZUNB
UEkoKQotewotICAgIE5TTG9nKEAiVGVzdGluZyBPYmplY3RpdmUtQyBBUEkiKTsKLQotICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRl
eHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0g
W2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIyICsgMiJdOwotICAgICAgICBjaGVja1Jlc3VsdChA
IjIgKyAyIiwgW3Jlc3VsdCBpc051bWJlcl0gJiYgW3Jlc3VsdCB0b0ludDMyXSA9PSA0KTsKLSAg
ICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIE5TU3Ry
aW5nICpyZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlR3byBwbHVzIHR3byBp
cyAlQCIsIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiMiArIDIiXV07Ci0gICAgICAgIGNoZWNr
UmVzdWx0KEAic3RyaW5nV2l0aEZvcm1hdCIsIFtyZXN1bHQgaXNFcXVhbDpAIlR3byBwbHVzIHR3
byBpcyA0Il0pOwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
LSAgICAgICAgY29udGV4dFtAIm1lc3NhZ2UiXSA9IEAiSGVsbG8iOwotICAgICAgICBKU1ZhbHVl
ICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIm1lc3NhZ2UgKyAnLCBXb3JsZCEn
Il07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiSGVsbG8sIFdvcmxkISIsIFtyZXN1bHQgaXNTdHJp
bmddICYmIFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiSGVsbG8sIFdvcmxkISJdKTsKLSAgICB9
Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIEpTVmFsdWUg
KnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiKHsgeDo0MiB9KSJdOwotICAgICAg
ICBjaGVja1Jlc3VsdChAIih7IHg6NDIgfSkiLCBbcmVzdWx0IGlzT2JqZWN0XSAmJiBbcmVzdWx0
W0AieCJdIGlzRXF1YWxUb09iamVjdDpANDJdKTsKLSAgICAgICAgaWQgb2JqID0gW3Jlc3VsdCB0
b09iamVjdF07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiQ2hlY2sgZGljdGlvbmFyeSBsaXRlcmFs
IiwgW29iaiBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSk7Ci0gICAgICAgIGlk
IG51bSA9IChOU0RpY3Rpb25hcnkgKilvYmpbQCJ4Il07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAi
Q2hlY2sgbnVtZXJpYyBsaXRlcmFsIiwgW251bSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFz
c11dKTsKLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAg
ICAgIF9fYmxvY2sgaW50IHJlc3VsdDsKLSAgICAgICAgY29udGV4dFtAImJsb2NrQ2FsbGJhY2si
XSA9IF4oaW50IHZhbHVlKXsKLSAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOwotICAgICAgICB9
OwotICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImJsb2NrQ2FsbGJhY2soNDIpIl07
Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiYmxvY2tDYWxsYmFjayIsIHJlc3VsdCA9PSA0Mik7Ci0g
ICAgfQotCi0gICAgaWYgKGJsb2NrU2lnbmF0dXJlQ29udGFpbnNDbGFzcygpKSB7Ci0gICAgICAg
IEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tb
SlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICBfX2Jsb2Nr
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICBjb250ZXh0W0AiYmxvY2tDYWxsYmFj
ayJdID0gXihOU1N0cmluZyAqdmFsdWUpewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtAIjQy
IiBpc0VxdWFsVG9TdHJpbmc6dmFsdWVdID09IFlFUzsKLSAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImJsb2NrQ2FsbGJhY2soNDIpIl07Ci0gICAg
ICAgICAgICBjaGVja1Jlc3VsdChAImJsb2NrQ2FsbGJhY2soTlNTdHJpbmcgKikiLCByZXN1bHQp
OwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIE5TTG9nKEAiU2tpcHBpbmcgJ2Jsb2Nr
Q2FsbGJhY2soTlNTdHJpbmcgKiknIHRlc3QgY2FzZSIpOwotCi0gICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBjaGVja1Jlc3VsdChAIiFjb250ZXh0LmV4Y2VwdGlv
biIsICFjb250ZXh0LmV4Y2VwdGlvbik7Ci0gICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0
OkAiIUAjJCVeJiooKSBUSElTIElTIE5PVCBWQUxJRCBKQVZBU0NSSVBUIFNZTlRBWCAhQCMkJV4m
KigpIl07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiY29udGV4dC5leGNlcHRpb24iLCBjb250ZXh0
LmV4Y2VwdGlvbik7Ci0gICAgfQotCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OwotICAgICAgICBfX2Jsb2NrIGJvb2wgY2F1Z2h0ID0gZmFsc2U7Ci0gICAgICAgIGNvbnRleHQu
ZXhjZXB0aW9uSGFuZGxlciA9IF4oSlNDb250ZXh0ICpjb250ZXh0LCBKU1ZhbHVlICpleGNlcHRp
b24pIHsKLSAgICAgICAgICAgICh2b2lkKWNvbnRleHQ7Ci0gICAgICAgICAgICAodm9pZClleGNl
cHRpb247Ci0gICAgICAgICAgICBjYXVnaHQgPSB0cnVlOwotICAgICAgICB9OwotICAgICAgICBb
Y29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiFAIyQlXiYqKCkgVEhJUyBJUyBOT1QgVkFMSUQgSkFW
QVNDUklQVCBTWU5UQVggIUAjJCVeJiooKSJdOwotICAgICAgICBjaGVja1Jlc3VsdChAIkpTQ29u
dGV4dC5leGNlcHRpb25IYW5kbGVyIiwgY2F1Z2h0KTsKLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGNvbnRleHRbQCJjYWxsYmFjayJdID0gXnsK
LSAgICAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRleHQgY3VycmVudENvbnRl
eHRdOwotICAgICAgICAgICAgY29udGV4dC5leGNlcHRpb24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhO
ZXdFcnJvckZyb21NZXNzYWdlOkAiU29tZXRoaW5nIHdlbnQgd3JvbmcuIiBpbkNvbnRleHQ6Y29u
dGV4dF07Ci0gICAgICAgIH07Ci0gICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2
YWx1YXRlU2NyaXB0OkAidmFyIHJlc3VsdDsgdHJ5IHsgY2FsbGJhY2soKTsgfSBjYXRjaCAoZSkg
eyByZXN1bHQgPSAnQ2F1Z2h0IGV4Y2VwdGlvbic7IH0iXTsKLSAgICAgICAgY2hlY2tSZXN1bHQo
QCJFeHBsaWNpdCB0aHJvdyBpbiBjYWxsYmFjayAtIHdhcyBjYXVnaHQgYnkgSmF2YVNjcmlwdCIs
IFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiQ2F1Z2h0IGV4Y2VwdGlvbiJdKTsKLSAgICAgICAg
Y2hlY2tSZXN1bHQoQCJFeHBsaWNpdCB0aHJvdyBpbiBjYWxsYmFjayAtIG5vdCB0aHJvd24gdG8g
T2JqZWN0aXZlLUMiLCAhY29udGV4dC5leGNlcHRpb24pOwotICAgIH0KLQotICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgY29udGV4dFtAImNhbGxiYWNrIl0gPSBe
ewotICAgICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjdXJyZW50Q29u
dGV4dF07Ci0gICAgICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiFAIyQlXiYqKCkg
VEhJUyBJUyBOT1QgVkFMSUQgSkFWQVNDUklQVCBTWU5UQVggIUAjJCVeJiooKSJdOwotICAgICAg
ICB9OwotICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpA
InZhciByZXN1bHQ7IHRyeSB7IGNhbGxiYWNrKCk7IH0gY2F0Y2ggKGUpIHsgcmVzdWx0ID0gJ0Nh
dWdodCBleGNlcHRpb24nOyB9Il07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiSW1wbGljaXQgdGhy
b3cgaW4gY2FsbGJhY2sgLSB3YXMgY2F1Z2h0IGJ5IEphdmFTY3JpcHQiLCBbcmVzdWx0IGlzRXF1
YWxUb09iamVjdDpAIkNhdWdodCBleGNlcHRpb24iXSk7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAi
SW1wbGljaXQgdGhyb3cgaW4gY2FsbGJhY2sgLSBub3QgdGhyb3duIHRvIE9iamVjdGl2ZS1DIiwg
IWNvbnRleHQuZXhjZXB0aW9uKTsKLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07Ci0gICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OgotICAgICAgICAgICAg
QCJmdW5jdGlvbiBzdW0oYXJyYXkpIHsgXAotICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSAw
OyBcCi0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBhcnJheSkgXAotICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgKz0gYXJyYXlbaV07IFwKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OyBcCi0gICAgICAgICAgICB9Il07Ci0gICAgICAgIEpTVmFsdWUgKmFycmF5ID0gW0pTVmFs
dWUgdmFsdWVXaXRoT2JqZWN0OkBbQDEzLCBAMiwgQDddIGluQ29udGV4dDpjb250ZXh0XTsKLSAg
ICAgICAgSlNWYWx1ZSAqc3VtRnVuY3Rpb24gPSBjb250ZXh0W0Aic3VtIl07Ci0gICAgICAgIEpT
VmFsdWUgKnJlc3VsdCA9IFtzdW1GdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpAWyBhcnJheSBd
XTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJzdW0oWzEzLCAyLCA3XSkiLCBbcmVzdWx0IHRvSW50
MzJdID09IDIyKTsKLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlND
b250ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
Ci0gICAgICAgIEpTVmFsdWUgKm11bEFkZEZ1bmN0aW9uID0gW2NvbnRleHQgZXZhbHVhdGVTY3Jp
cHQ6Ci0gICAgICAgICAgICBAIihmdW5jdGlvbihhcnJheSwgb2JqZWN0KSB7IFwKLSAgICAgICAg
ICAgICAgICB2YXIgcmVzdWx0ID0gW107IFwKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGlu
IGFycmF5KSBcCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFycmF5W2ldICogb2Jq
ZWN0LnggKyBvYmplY3QueSk7IFwKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyBcCi0g
ICAgICAgICAgICB9KSJdOwotICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbbXVsQWRkRnVuY3Rp
b24gY2FsbFdpdGhBcmd1bWVudHM6QFsgQFsgQDIsIEA0LCBAOCBdLCBAeyBAIngiOkAwLjUsIEAi
eSI6QDQyIH0gXV07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAibXVsQWRkRnVuY3Rpb24iLCBbcmVz
dWx0IGlzT2JqZWN0XSAmJiBbW3Jlc3VsdCB0b1N0cmluZ10gaXNFcXVhbDpAIjQzLDQ0LDQ2Il0p
OwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNv
bnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAg
SlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNv
bnRleHRdOwotCi0gICAgICAgIG9iamVjdFtAInBvaW50Il0gPSBAeyBAIngiOkAxLCBAInkiOkAy
IH07Ci0gICAgICAgIG9iamVjdFtAInBvaW50Il1bQCJ4Il0gPSBAMzsKLSAgICAgICAgQ0dQb2lu
dCBwb2ludCA9IFtvYmplY3RbQCJwb2ludCJdIHRvUG9pbnRdOwotICAgICAgICBjaGVja1Jlc3Vs
dChAInRvUG9pbnQiLCBwb2ludC54ID09IDMgJiYgcG9pbnQueSA9PSAyKTsKLQotICAgICAgICBv
YmplY3RbQHsgQCJ0b1N0cmluZyI6XnsgcmV0dXJuIEAiZm9vIjsgfSB9XSA9IEAiYmFyIjsKLSAg
ICAgICAgY2hlY2tSZXN1bHQoQCJ0b1N0cmluZyBpbiBvYmplY3QgbGl0ZXJhbCB1c2VkIGFzIHN1
YnNjcmlwdCIsIFtbb2JqZWN0W0AiZm9vIl0gdG9TdHJpbmddIGlzRXF1YWw6QCJiYXIiXSk7Ci0K
LSAgICAgICAgb2JqZWN0W1tAImZvb2JhciIgc3Vic3RyaW5nVG9JbmRleDozXV0gPSBAImJhciI7
Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAic3Vic3RyaW5nIHVzZWQgYXMgc3Vic2NyaXB0IiwgW1tv
YmplY3RbQCJmb28iXSB0b1N0cmluZ10gaXNFcXVhbDpAImJhciJdKTsKLSAgICB9Ci0KLSAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250
ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFRleHRYWVogKnRlc3RYWVog
PSBbW1RleHRYWVogYWxsb2NdIGluaXRdOwotICAgICAgICBjb250ZXh0W0AidGVzdFhZWiJdID0g
dGVzdFhZWjsKLSAgICAgICAgdGVzdFhZWi54ID0gMzsKLSAgICAgICAgdGVzdFhZWi55ID0gNDsK
LSAgICAgICAgdGVzdFhZWi56ID0gNTsKLSAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6
QCJ0ZXN0WFlaLnggPSAxMzsgdGVzdFhZWi55ID0gMTQ7Il07Ci0gICAgICAgIFtjb250ZXh0IGV2
YWx1YXRlU2NyaXB0OkAidGVzdFhZWi50ZXN0KCd0ZXN0JykiXTsKLSAgICAgICAgY2hlY2tSZXN1
bHQoQCJUZXh0WFlaIC0gdGVzdFhZWlRlc3RlZCIsIHRlc3RYWVpUZXN0ZWQpOwotICAgICAgICBK
U1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVoueCArICcs
JyArIHRlc3RYWVoueSArICcsJyArIHRlc3RYWVoueiJdOwotICAgICAgICBjaGVja1Jlc3VsdChA
IlRleHRYWVogLSByZXN1bHQiLCBbcmVzdWx0IGlzRXF1YWxUb09iamVjdDpAIjEzLDQsdW5kZWZp
bmVkIl0pOwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRl
eHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAg
ICAgICAgW2NvbnRleHRbQCJPYmplY3QiXVtAInByb3RvdHlwZSJdIGRlZmluZVByb3BlcnR5OkAi
Z2V0dGVyUHJvcGVydHkiIGRlc2NyaXB0b3I6QHsKLSAgICAgICAgICAgIEpTUHJvcGVydHlEZXNj
cmlwdG9yR2V0S2V5Ol57Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtKU0NvbnRleHQgY3VycmVu
dFRoaXNdW0AieCJdOwotICAgICAgICAgICAgfQotICAgICAgICB9XTsKLSAgICAgICAgSlNWYWx1
ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkB7IEAieCI6QDEwMSB9IGluQ29u
dGV4dDpjb250ZXh0XTsKLSAgICAgICAgaW50IHJlc3VsdCA9IFtvYmplY3QgW0AiZ2V0dGVyUHJv
cGVydHkiXSB0b0ludDMyXTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJnZXR0ZXJQcm9wZXJ0eSIs
IHJlc3VsdCA9PSAxMDEpOwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKLSAgICAgICAgY29udGV4dFtAImNvbmNhdGVuYXRlIl0gPSBeewotICAgICAgICAgICAg
TlNBcnJheSAqYXJndW1lbnRzID0gW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXTsKLSAgICAg
ICAgICAgIGlmICghW2FyZ3VtZW50cyBjb3VudF0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIEAi
IjsKLSAgICAgICAgICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2FyZ3VtZW50c1swXSBkZXNjcmlw
dGlvbl07Ci0gICAgICAgICAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAxOyBpbmRleCA8IFth
cmd1bWVudHMgY291bnRdOyArK2luZGV4KQotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgbWVzc2FnZSwgYXJndW1lbnRzW2luZGV4
XV07Ci0gICAgICAgICAgICByZXR1cm4gbWVzc2FnZTsKLSAgICAgICAgfTsKLSAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJjb25jYXRlbmF0ZSgnSGVs
bG8sJywgJ1dvcmxkIScpIl07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiY29uY2F0ZW5hdGUiLCBb
cmVzdWx0IGlzRXF1YWxUb09iamVjdDpAIkhlbGxvLCBXb3JsZCEiXSk7Ci0gICAgfQotCi0gICAg
QGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBjb250ZXh0W0AiZm9vIl0g
PSBAWUVTOwotICAgICAgICBjaGVja1Jlc3VsdChAIkBZRVMgaXMgYm9vbGVhbiIsIFtjb250ZXh0
W0AiZm9vIl0gaXNCb29sZWFuXSk7Ci0gICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0
IGV2YWx1YXRlU2NyaXB0OkAidHlwZW9mIGZvbyJdOwotICAgICAgICBjaGVja1Jlc3VsdChAIkBZ
RVMgaXMgYm9vbGVhbiIsIFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiYm9vbGVhbiJdKTsKLSAg
ICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFRlc3RP
YmplY3QqIHRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgY29u
dGV4dFtAInRlc3RPYmplY3QiXSA9IHRlc3RPYmplY3Q7Ci0gICAgICAgIEpTVmFsdWUgKnJlc3Vs
dCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiU3RyaW5nKHRlc3RPYmplY3QpIl07Ci0gICAg
ICAgIGNoZWNrUmVzdWx0KEAiU3RyaW5nKHRlc3RPYmplY3QpIiwgW3Jlc3VsdCBpc0VxdWFsVG9P
YmplY3Q6QCJbb2JqZWN0IFRlc3RPYmplY3RdIl0pOwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgVGVzdE9iamVjdCogdGVzdE9iamVjdCA9IFtU
ZXN0T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJdID0g
dGVzdE9iamVjdDsKLSAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVT
Y3JpcHQ6QCJTdHJpbmcodGVzdE9iamVjdC5fX3Byb3RvX18pIl07Ci0gICAgICAgIGNoZWNrUmVz
dWx0KEAiU3RyaW5nKHRlc3RPYmplY3QuX19wcm90b19fKSIsIFtyZXN1bHQgaXNFcXVhbFRvT2Jq
ZWN0OkAiW29iamVjdCBUZXN0T2JqZWN0UHJvdG90eXBlXSJdKTsKLSAgICB9Ci0KLSAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250ZXh0
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGNvbnRleHRbQCJUZXN0T2JqZWN0
Il0gPSBbVGVzdE9iamVjdCBjbGFzc107Ci0gICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250
ZXh0IGV2YWx1YXRlU2NyaXB0OkAiU3RyaW5nKFRlc3RPYmplY3QpIl07Ci0gICAgICAgIGNoZWNr
UmVzdWx0KEAiU3RyaW5nKFRlc3RPYmplY3QpIiwgW3Jlc3VsdCBpc0VxdWFsVG9PYmplY3Q6QCJb
b2JqZWN0IFRlc3RPYmplY3RDb25zdHJ1Y3Rvcl0iXSk7Ci0gICAgfQotCi0gICAgQGF1dG9yZWxl
YXNlcG9vbCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBKU1ZhbHVlKiB2YWx1ZSA9IFtKU1ZhbHVl
IHZhbHVlV2l0aE9iamVjdDpbVGVzdE9iamVjdCBjbGFzc10gaW5Db250ZXh0OmNvbnRleHRdOwot
ICAgICAgICBjaGVja1Jlc3VsdChAIlt2YWx1ZSB0b09iamVjdF0gPT0gW1Rlc3RPYmplY3QgY2xh
c3NdIiwgW3ZhbHVlIHRvT2JqZWN0XSA9PSBbVGVzdE9iamVjdCBjbGFzc10pOwotICAgIH0KLQot
ICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tK
U0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgY29udGV4dFtAIlRl
c3RPYmplY3QiXSA9IFtUZXN0T2JqZWN0IGNsYXNzXTsKLSAgICAgICAgSlNWYWx1ZSAqcmVzdWx0
ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJUZXN0T2JqZWN0LnBhcmVudFRlc3QoKSJdOwot
ICAgICAgICBjaGVja1Jlc3VsdChAIlRlc3RPYmplY3QucGFyZW50VGVzdCgpIiwgW3Jlc3VsdCBp
c0VxdWFsVG9PYmplY3Q6QCJUZXN0T2JqZWN0Il0pOwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgVGVzdE9iamVjdCogdGVzdE9iamVjdCA9IFtU
ZXN0T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdEEiXSA9
IHRlc3RPYmplY3Q7Ci0gICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0QiJdID0gdGVzdE9iamVj
dDsKLSAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0
ZXN0T2JqZWN0QSA9PSB0ZXN0T2JqZWN0QiJdOwotICAgICAgICBjaGVja1Jlc3VsdChAInRlc3RP
YmplY3RBID09IHRlc3RPYmplY3RCIiwgW3Jlc3VsdCBpc0Jvb2xlYW5dICYmIFtyZXN1bHQgdG9C
b29sXSk7Ci0gICAgfQotCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAg
ICAgICBUZXN0T2JqZWN0KiB0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0g
ICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OwotICAgICAgICB0ZXN0
T2JqZWN0LnBvaW50ID0gKENHUG9pbnQpezMsNH07Ci0gICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9
IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidmFyIHJlc3VsdCA9IEpTT04uc3RyaW5naWZ5KHRl
c3RPYmplY3QucG9pbnQpOyB0ZXN0T2JqZWN0LnBvaW50ID0ge3g6MTIseToxNH07IHJlc3VsdCJd
OwotICAgICAgICBjaGVja1Jlc3VsdChAInRlc3RPYmplY3QucG9pbnQgLSByZXN1bHQiLCBbcmVz
dWx0IGlzRXF1YWxUb09iamVjdDpAIntcInhcIjozLFwieVwiOjR9Il0pOwotICAgICAgICBjaGVj
a1Jlc3VsdChAInRlc3RPYmplY3QucG9pbnQgLSB7eDoxMix5OjE0fSIsIHRlc3RPYmplY3QucG9p
bnQueCA9PSAxMiAmJiB0ZXN0T2JqZWN0LnBvaW50LnkgPT0gMTQpOwotICAgIH0KLQotICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRl
eHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgVGVzdE9iamVjdCogdGVzdE9i
amVjdCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICB0ZXN0T2JqZWN0LnNpeCA9
IDY7Ci0gICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OwotICAgICAg
ICBjb250ZXh0W0AibXVsIl0gPSBeKGludCB4LCBpbnQgeSl7IHJldHVybiB4ICogeTsgfTsKLSAg
ICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJtdWwodGVz
dE9iamVjdC5zaXgsIDcpIl07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAibXVsKHRlc3RPYmplY3Qu
c2l4LCA3KSIsIFtyZXN1bHQgaXNOdW1iZXJdICYmIFtyZXN1bHQgdG9JbnQzMl0gPT0gNDIpOwot
ICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNvbnRl
eHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgVGVz
dE9iamVjdCogdGVzdE9iamVjdCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICBj
b250ZXh0W0AidGVzdE9iamVjdCJdID0gdGVzdE9iamVjdDsKLSAgICAgICAgY29udGV4dFtAInRl
c3RPYmplY3QiXVtAInZhcmlhYmxlIl0gPSBANDsKLSAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVT
Y3JpcHQ6QCIrK3Rlc3RPYmplY3QudmFyaWFibGUiXTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCIr
K3Rlc3RPYmplY3QudmFyaWFibGUiLCB0ZXN0T2JqZWN0LnZhcmlhYmxlID09IDUpOwotICAgIH0K
LQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBb
W1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgY29udGV4dFtA
InBvaW50Il0gPSBAeyBAIngiOkA2LCBAInkiOkA3IH07Ci0gICAgICAgIEpTVmFsdWUgKnJlc3Vs
dCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAicG9pbnQueCArICcsJyArIHBvaW50LnkiXTsK
LSAgICAgICAgY2hlY2tSZXN1bHQoQCJwb2ludC54ICsgJywnICsgcG9pbnQueSIsIFtyZXN1bHQg
aXNFcXVhbFRvT2JqZWN0OkAiNiw3Il0pOwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKLSAgICAgICAgY29udGV4dFtAInBvaW50Il0gPSBAeyBAIngiOkA2LCBA
InkiOkA3IH07Ci0gICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2Ny
aXB0OkAicG9pbnQueCArICcsJyArIHBvaW50LnkiXTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJw
b2ludC54ICsgJywnICsgcG9pbnQueSIsIFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiNiw3Il0p
OwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNv
bnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAg
VGVzdE9iamVjdCogdGVzdE9iamVjdCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAg
ICBjb250ZXh0W0AidGVzdE9iamVjdCJdID0gdGVzdE9iamVjdDsKLSAgICAgICAgSlNWYWx1ZSAq
cmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0T2JqZWN0LmdldFN0cmluZygp
Il07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAidGVzdE9iamVjdC5nZXRTdHJpbmcoKSIsIFtyZXN1
bHQgaXNTdHJpbmddICYmIFtyZXN1bHQgdG9JbnQzMl0gPT0gNDIpOwotICAgIH0KLQotICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRl
eHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgVGVzdE9iamVjdCogdGVzdE9i
amVjdCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICBjb250ZXh0W0AidGVzdE9i
amVjdCJdID0gdGVzdE9iamVjdDsKLSAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0T2JqZWN0LnRlc3RBcmd1bWVudFR5cGVzKDEwMSwwLjUsdHJ1
ZSwnZm9vJyw2NjYsW2ZhbHNlLCdiYXInLGZhbHNlXSx7eDonYmF6J30pIl07Ci0gICAgICAgIGNo
ZWNrUmVzdWx0KEAidGVzdE9iamVjdC50ZXN0QXJndW1lbnRUeXBlcyIsIFtyZXN1bHQgaXNFcXVh
bFRvT2JqZWN0OkAiMTAxLDAuNSwxLGZvbyw2NjYsYmFyLGJheiJdKTsKLSAgICB9Ci0KLSAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250
ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFRlc3RPYmplY3QqIHRlc3RP
YmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgY29udGV4dFtAInRlc3RP
YmplY3QiXSA9IHRlc3RPYmplY3Q7Ci0gICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0
IGV2YWx1YXRlU2NyaXB0OkAidGVzdE9iamVjdC5nZXRTdHJpbmcuY2FsbCh0ZXN0T2JqZWN0KSJd
OwotICAgICAgICBjaGVja1Jlc3VsdChAInRlc3RPYmplY3QuZ2V0U3RyaW5nLmNhbGwodGVzdE9i
amVjdCkiLCBbcmVzdWx0IGlzU3RyaW5nXSAmJiBbcmVzdWx0IHRvSW50MzJdID09IDQyKTsKLSAg
ICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFRlc3RP
YmplY3QqIHRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgY29u
dGV4dFtAInRlc3RPYmplY3QiXSA9IHRlc3RPYmplY3Q7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAi
dGVzdE9iamVjdC5nZXRTdHJpbmcuY2FsbCh7fSkgcHJlIiwgIWNvbnRleHQuZXhjZXB0aW9uKTsK
LSAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0T2JqZWN0LmdldFN0cmluZy5j
YWxsKHt9KSJdOwotICAgICAgICBjaGVja1Jlc3VsdChAInRlc3RPYmplY3QuZ2V0U3RyaW5nLmNh
bGwoe30pIHBvc3QiLCBjb250ZXh0LmV4Y2VwdGlvbik7Ci0gICAgfQotCi0gICAgQGF1dG9yZWxl
YXNlcG9vbCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBUZXN0T2JqZWN0KiB0ZXN0T2JqZWN0ID0g
W1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0g
PSB0ZXN0T2JqZWN0OwotICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0
ZVNjcmlwdDpAInZhciByZXN1bHQgPSAwOyB0ZXN0T2JqZWN0LmNhbGxiYWNrKGZ1bmN0aW9uKHgp
eyByZXN1bHQgPSB4OyB9KTsgcmVzdWx0Il07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAidGVzdE9i
amVjdC5jYWxsYmFjayIsIFtyZXN1bHQgaXNOdW1iZXJdICYmIFtyZXN1bHQgdG9JbnQzMl0gPT0g
NDIpOwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQg
KmNvbnRleHQxID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwotICAgICAgICBKU0NvbnRleHQg
KmNvbnRleHQyID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoVmlydHVhbE1hY2hpbmU6Y29u
dGV4dDEudmlydHVhbE1hY2hpbmVdOwotICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1ZhbHVl
IHZhbHVlV2l0aERvdWJsZTo0MiBpbkNvbnRleHQ6Y29udGV4dDJdOwotICAgICAgICBjaGVja1Jl
c3VsdChAInZhbHVlLmNvbnRleHQgPT0gY29udGV4dDIiLCB2YWx1ZS5jb250ZXh0ID09IGNvbnRl
eHQyKTsKLSAgICAgICAgY29udGV4dDFbQCJwYXNzVmFsdWVCZXR3ZWVuQ29udGV4dHMiXSA9IHZh
bHVlOwotICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dDEgZXZhbHVhdGVTY3JpcHQ6
QCJwYXNzVmFsdWVCZXR3ZWVuQ29udGV4dHMiXTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJyZXN1
bHQuY29udGV4dCA9PSBjb250ZXh0MSIsIHJlc3VsdC5jb250ZXh0ID09IGNvbnRleHQxKTsKLSAg
ICAgICAgY2hlY2tSZXN1bHQoQCJbdmFsdWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0iLCBbdmFs
dWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0pOwotICAgICAgICBbY29udGV4dDEgcmVsZWFzZV07
Ci0gICAgICAgIFtjb250ZXh0MiByZWxlYXNlXTsKLSAgICB9Ci19Ci0KLSNlbHNlCi0KLXZvaWQg
dGVzdE9iamVjdGl2ZUNBUEkoKQotewotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDEzODgxMCkJKGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm06MTM4ODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbXBvcnQgIkphdmFTY3JpcHRDb3JlLmgiCisKK2Jvb2wgX0Jsb2NrX2hhc19zaWduYXR1
cmUodm9pZCAqKTsKK2NvbnN0IGNoYXIgKiBfQmxvY2tfc2lnbmF0dXJlKHZvaWQgKik7CisKK2V4
dGVybiBpbnQgZmFpbGVkOwordm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSh2b2lkKTsKKworI2lmIEpT
X09CSkNfQVBJX0VOQUJMRUQKKworQHByb3RvY29sIFBhcmVudE9iamVjdCA8SlNFeHBvcnQ+CitA
ZW5kCisKK0BpbnRlcmZhY2UgUGFyZW50T2JqZWN0IDogTlNPYmplY3Q8UGFyZW50T2JqZWN0Pgor
KyAoTlNTdHJpbmcgKilwYXJlbnRUZXN0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gUGFyZW50
T2JqZWN0CisrIChOU1N0cmluZyAqKXBhcmVudFRlc3QKK3sKKyAgICByZXR1cm4gW3NlbGYgZGVz
Y3JpcHRpb25dOworfQorQGVuZAorCitAcHJvdG9jb2wgVGVzdE9iamVjdCA8SlNFeHBvcnQ+CitA
cHJvcGVydHkgaW50IHZhcmlhYmxlOworQHByb3BlcnR5IChyZWFkb25seSkgaW50IHNpeDsKK0Bw
cm9wZXJ0eSBDR1BvaW50IHBvaW50OworKyAoTlNTdHJpbmcgKiljbGFzc1Rlc3Q7CisrIChOU1N0
cmluZyAqKXBhcmVudFRlc3Q7CistIChOU1N0cmluZyAqKWdldFN0cmluZzsKK0pTRXhwb3J0QXMo
dGVzdEFyZ3VtZW50VHlwZXMsCistIChOU1N0cmluZyAqKXRlc3RBcmd1bWVudFR5cGVzV2l0aElu
dDooaW50KWkgZG91YmxlOihkb3VibGUpZCBib29sZWFuOihCT09MKWIgc3RyaW5nOihOU1N0cmlu
ZyAqKXMgbnVtYmVyOihOU051bWJlciAqKW4gYXJyYXk6KE5TQXJyYXkgKilhIGRpY3Rpb25hcnk6
KE5TRGljdGlvbmFyeSAqKW8KKyk7CistICh2b2lkKWNhbGxiYWNrOih2b2lkKF4pKGludCkpYmxv
Y2s7CitAZW5kCisKK0BpbnRlcmZhY2UgVGVzdE9iamVjdCA6IFBhcmVudE9iamVjdCA8VGVzdE9i
amVjdD4KK0Bwcm9wZXJ0eSBpbnQgc2l4OworKyAoaWQpdGVzdE9iamVjdDsKK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIFRlc3RPYmplY3QKK0BzeW50aGVzaXplIHZhcmlhYmxlOworQHN5bnRoZXNp
emUgc2l4OworQHN5bnRoZXNpemUgcG9pbnQ7CisrIChpZCl0ZXN0T2JqZWN0Cit7CisgICAgcmV0
dXJuIFtbW1Rlc3RPYmplY3QgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKK30KKysgKE5TU3Ry
aW5nICopY2xhc3NUZXN0Cit7CisgICAgcmV0dXJuIEAiY2xhc3NUZXN0IC0gb2theSI7Cit9Cist
IChOU1N0cmluZyAqKWdldFN0cmluZworeworICAgIHJldHVybiBAIjQyIjsKK30KKy0gKE5TU3Ry
aW5nICopdGVzdEFyZ3VtZW50VHlwZXNXaXRoSW50OihpbnQpaSBkb3VibGU6KGRvdWJsZSlkIGJv
b2xlYW46KEJPT0wpYiBzdHJpbmc6KE5TU3RyaW5nICopcyBudW1iZXI6KE5TTnVtYmVyICopbiBh
cnJheTooTlNBcnJheSAqKWEgZGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICopbworeworICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVkLCVnLCVkLCVALCVkLCVALCVAIiwg
aSwgZCwgYj09WUVTP3RydWU6ZmFsc2UscyxbbiBpbnRWYWx1ZV0sYVsxXSxvW0AieCJdXTsKK30K
Ky0gKHZvaWQpY2FsbGJhY2s6KHZvaWQoXikoaW50KSlibG9jaworeworICAgIGJsb2NrKDQyKTsK
K30KK0BlbmQKKworYm9vbCB0ZXN0WFlaVGVzdGVkID0gZmFsc2U7CisKK0Bwcm90b2NvbCBUZXh0
WFlaIDxKU0V4cG9ydD4KK0Bwcm9wZXJ0eSBpbnQgeDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIGlu
dCB5OworLSAodm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2U7CitAZW5kCisKK0BpbnRlcmZh
Y2UgVGV4dFhZWiA6IE5TT2JqZWN0IDxUZXh0WFlaPgorQHByb3BlcnR5IGludCB4OworQHByb3Bl
cnR5IGludCB5OworQHByb3BlcnR5IGludCB6OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGV4
dFhZWgorQHN5bnRoZXNpemUgeDsKK0BzeW50aGVzaXplIHk7CitAc3ludGhlc2l6ZSB6OworLSAo
dm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2UKK3sKKyAgICB0ZXN0WFlaVGVzdGVkID0gW21l
c3NhZ2UgaXNFcXVhbDpAInRlc3QiXSAmJiB4ID09IDEzICYgeSA9PSA0ICYmIHogPT0gNTsKK30K
K0BlbmQKKworc3RhdGljIHZvaWQgY2hlY2tSZXN1bHQoTlNTdHJpbmcgKmRlc2NyaXB0aW9uLCBi
b29sIHBhc3NlZCkKK3sKKyAgICBOU0xvZyhAIlRFU1Q6IFwiJUBcIjogJUAiLCBkZXNjcmlwdGlv
biwgcGFzc2VkID8gQCJQQVNTRUQiIDogQCJGQUlMRUQiKTsKKyAgICBpZiAoIXBhc3NlZCkKKyAg
ICAgICAgZmFpbGVkID0gMTsKK30KKworc3RhdGljIGJvb2wgYmxvY2tTaWduYXR1cmVDb250YWlu
c0NsYXNzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBjb250YWluc0NsYXNzID0gKGJvb2wpXnsKKyAg
ICAgICAgaWQgYmxvY2sgPSBeKE5TU3RyaW5nICpzdHJpbmcpeyByZXR1cm4gc3RyaW5nOyB9Owor
ICAgICAgICByZXR1cm4gX0Jsb2NrX2hhc19zaWduYXR1cmUoYmxvY2spICYmIHN0cnN0cihfQmxv
Y2tfc2lnbmF0dXJlKGJsb2NrKSwgIk5TU3RyaW5nIik7CisgICAgfTsKKyAgICByZXR1cm4gY29u
dGFpbnNDbGFzczsKK30KKwordm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCit7CisgICAgTlNMb2co
QCJUZXN0aW5nIE9iamVjdGl2ZS1DIEFQSSIpOworCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOworICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAIjIgKyAyIl07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiMiArIDIiLCBbcmVzdWx0IGlz
TnVtYmVyXSAmJiBbcmVzdWx0IHRvSW50MzJdID09IDQpOworICAgIH0KKworICAgIEBhdXRvcmVs
ZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiVHdvIHBsdXMgdHdvIGlzICVAIiwgW2NvbnRleHQgZXZh
bHVhdGVTY3JpcHQ6QCIyICsgMiJdXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJzdHJpbmdXaXRo
Rm9ybWF0IiwgW3Jlc3VsdCBpc0VxdWFsOkAiVHdvIHBsdXMgdHdvIGlzIDQiXSk7CisgICAgfQor
CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtb
W0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBjb250ZXh0W0Ai
bWVzc2FnZSJdID0gQCJIZWxsbyI7CisgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0
IGV2YWx1YXRlU2NyaXB0OkAibWVzc2FnZSArICcsIFdvcmxkISciXTsKKyAgICAgICAgY2hlY2tS
ZXN1bHQoQCJIZWxsbywgV29ybGQhIiwgW3Jlc3VsdCBpc1N0cmluZ10gJiYgW3Jlc3VsdCBpc0Vx
dWFsVG9PYmplY3Q6QCJIZWxsbywgV29ybGQhIl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCIoeyB4OjQyIH0pIl07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiKHsg
eDo0MiB9KSIsIFtyZXN1bHQgaXNPYmplY3RdICYmIFtyZXN1bHRbQCJ4Il0gaXNFcXVhbFRvT2Jq
ZWN0OkA0Ml0pOworICAgICAgICBpZCBvYmogPSBbcmVzdWx0IHRvT2JqZWN0XTsKKyAgICAgICAg
Y2hlY2tSZXN1bHQoQCJDaGVjayBkaWN0aW9uYXJ5IGxpdGVyYWwiLCBbb2JqIGlzS2luZE9mQ2xh
c3M6W05TRGljdGlvbmFyeSBjbGFzc11dKTsKKyAgICAgICAgaWQgbnVtID0gKE5TRGljdGlvbmFy
eSAqKW9ialtAIngiXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJDaGVjayBudW1lcmljIGxpdGVy
YWwiLCBbbnVtIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAgIH0KKworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0Nv
bnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgX19ibG9jayBpbnQgcmVz
dWx0OworICAgICAgICBjb250ZXh0W0AiYmxvY2tDYWxsYmFjayJdID0gXihpbnQgdmFsdWUpewor
ICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgIH07CisgICAgICAgIFtjb250ZXh0
IGV2YWx1YXRlU2NyaXB0OkAiYmxvY2tDYWxsYmFjayg0MikiXTsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJibG9ja0NhbGxiYWNrIiwgcmVzdWx0ID09IDQyKTsKKyAgICB9CisKKyAgICBpZiAoYmxv
Y2tTaWduYXR1cmVDb250YWluc0NsYXNzKCkpIHsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIF9fYmxvY2sgYm9vbCByZXN1bHQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGNvbnRleHRbQCJibG9ja0NhbGxiYWNrIl0gPSBeKE5TU3RyaW5nICp2
YWx1ZSl7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gW0AiNDIiIGlzRXF1YWxUb1N0cmluZzp2
YWx1ZV0gPT0gWUVTOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1
YXRlU2NyaXB0OkAiYmxvY2tDYWxsYmFjayg0MikiXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0
KEAiYmxvY2tDYWxsYmFjayhOU1N0cmluZyAqKSIsIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9
IGVsc2UKKyAgICAgICAgTlNMb2coQCJTa2lwcGluZyAnYmxvY2tDYWxsYmFjayhOU1N0cmluZyAq
KScgdGVzdCBjYXNlIik7CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250
ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiIWNvbnRleHQuZXhjZXB0aW9uIiwgIWNvbnRleHQuZXhjZXB0
aW9uKTsKKyAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIhQCMkJV4mKigpIFRISVMg
SVMgTk9UIFZBTElEIEpBVkFTQ1JJUFQgU1lOVEFYICFAIyQlXiYqKCkiXTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJjb250ZXh0LmV4Y2VwdGlvbiIsIGNvbnRleHQuZXhjZXB0aW9uKTsKKyAgICB9
CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIF9fYmxvY2sg
Ym9vbCBjYXVnaHQgPSBmYWxzZTsKKyAgICAgICAgY29udGV4dC5leGNlcHRpb25IYW5kbGVyID0g
XihKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWUgKmV4Y2VwdGlvbikgeworICAgICAgICAgICAg
KHZvaWQpY29udGV4dDsKKyAgICAgICAgICAgICh2b2lkKWV4Y2VwdGlvbjsKKyAgICAgICAgICAg
IGNhdWdodCA9IHRydWU7CisgICAgICAgIH07CisgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2Ny
aXB0OkAiIUAjJCVeJiooKSBUSElTIElTIE5PVCBWQUxJRCBKQVZBU0NSSVBUIFNZTlRBWCAhQCMk
JV4mKigpIl07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiSlNDb250ZXh0LmV4Y2VwdGlvbkhhbmRs
ZXIiLCBjYXVnaHQpOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKKyAgICAgICAgY29udGV4dFtAImNhbGxiYWNrIl0gPSBeeworICAgICAgICAgICAgSlNDb250
ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjdXJyZW50Q29udGV4dF07CisgICAgICAgICAgICBj
b250ZXh0LmV4Y2VwdGlvbiA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6
QCJTb21ldGhpbmcgd2VudCB3cm9uZy4iIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgfTsK
KyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ2YXIg
cmVzdWx0OyB0cnkgeyBjYWxsYmFjaygpOyB9IGNhdGNoIChlKSB7IHJlc3VsdCA9ICdDYXVnaHQg
ZXhjZXB0aW9uJzsgfSJdOworICAgICAgICBjaGVja1Jlc3VsdChAIkV4cGxpY2l0IHRocm93IGlu
IGNhbGxiYWNrIC0gd2FzIGNhdWdodCBieSBKYXZhU2NyaXB0IiwgW3Jlc3VsdCBpc0VxdWFsVG9P
YmplY3Q6QCJDYXVnaHQgZXhjZXB0aW9uIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIkV4cGxp
Y2l0IHRocm93IGluIGNhbGxiYWNrIC0gbm90IHRocm93biB0byBPYmplY3RpdmUtQyIsICFjb250
ZXh0LmV4Y2VwdGlvbik7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAg
IEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgICAgICBjb250ZXh0W0AiY2FsbGJhY2siXSA9IF57CisgICAgICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsKKyAgICAgICAgICAg
IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIUAjJCVeJiooKSBUSElTIElTIE5PVCBWQUxJRCBK
QVZBU0NSSVBUIFNZTlRBWCAhQCMkJV4mKigpIl07CisgICAgICAgIH07CisgICAgICAgIEpTVmFs
dWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidmFyIHJlc3VsdDsgdHJ5IHsg
Y2FsbGJhY2soKTsgfSBjYXRjaCAoZSkgeyByZXN1bHQgPSAnQ2F1Z2h0IGV4Y2VwdGlvbic7IH0i
XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJJbXBsaWNpdCB0aHJvdyBpbiBjYWxsYmFjayAtIHdh
cyBjYXVnaHQgYnkgSmF2YVNjcmlwdCIsIFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiQ2F1Z2h0
IGV4Y2VwdGlvbiJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJJbXBsaWNpdCB0aHJvdyBpbiBj
YWxsYmFjayAtIG5vdCB0aHJvd24gdG8gT2JqZWN0aXZlLUMiLCAhY29udGV4dC5leGNlcHRpb24p
OworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNv
bnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
W2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6CisgICAgICAgICAgICBAImZ1bmN0aW9uIHN1bShhcnJh
eSkgeyBcCisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IDA7IFwKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpIGluIGFycmF5KSBcCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBh
cnJheVtpXTsgXAorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IFwKKyAgICAgICAgICAg
IH0iXTsKKyAgICAgICAgSlNWYWx1ZSAqYXJyYXkgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
QFtAMTMsIEAyLCBAN10gaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICpzdW1G
dW5jdGlvbiA9IGNvbnRleHRbQCJzdW0iXTsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW3N1
bUZ1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOkBbIGFycmF5IF1dOworICAgICAgICBjaGVja1Jl
c3VsdChAInN1bShbMTMsIDIsIDddKSIsIFtyZXN1bHQgdG9JbnQzMl0gPT0gMjIpOworICAgIH0K
KworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBb
W1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgSlNWYWx1ZSAq
bXVsQWRkRnVuY3Rpb24gPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDoKKyAgICAgICAgICAgIEAi
KGZ1bmN0aW9uKGFycmF5LCBvYmplY3QpIHsgXAorICAgICAgICAgICAgICAgIHZhciByZXN1bHQg
PSBbXTsgXAorICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYXJyYXkpIFwKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LnB1c2goYXJyYXlbaV0gKiBvYmplY3QueCArIG9iamVjdC55KTsg
XAorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IFwKKyAgICAgICAgICAgIH0pIl07Cisg
ICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFttdWxBZGRGdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50
czpAWyBAWyBAMiwgQDQsIEA4IF0sIEB7IEAieCI6QDAuNSwgQCJ5IjpANDIgfSBdXTsKKyAgICAg
ICAgY2hlY2tSZXN1bHQoQCJtdWxBZGRGdW5jdGlvbiIsIFtyZXN1bHQgaXNPYmplY3RdICYmIFtb
cmVzdWx0IHRvU3RyaW5nXSBpc0VxdWFsOkAiNDMsNDQsNDYiXSk7CisgICAgfQorCisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4
dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBb
SlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisKKyAgICAgICAg
b2JqZWN0W0AicG9pbnQiXSA9IEB7IEAieCI6QDEsIEAieSI6QDIgfTsKKyAgICAgICAgb2JqZWN0
W0AicG9pbnQiXVtAIngiXSA9IEAzOworICAgICAgICBDR1BvaW50IHBvaW50ID0gW29iamVjdFtA
InBvaW50Il0gdG9Qb2ludF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAidG9Qb2ludCIsIHBvaW50
LnggPT0gMyAmJiBwb2ludC55ID09IDIpOworCisgICAgICAgIG9iamVjdFtAeyBAInRvU3RyaW5n
IjpeeyByZXR1cm4gQCJmb28iOyB9IH1dID0gQCJiYXIiOworICAgICAgICBjaGVja1Jlc3VsdChA
InRvU3RyaW5nIGluIG9iamVjdCBsaXRlcmFsIHVzZWQgYXMgc3Vic2NyaXB0IiwgW1tvYmplY3Rb
QCJmb28iXSB0b1N0cmluZ10gaXNFcXVhbDpAImJhciJdKTsKKworICAgICAgICBvYmplY3RbW0Ai
Zm9vYmFyIiBzdWJzdHJpbmdUb0luZGV4OjNdXSA9IEAiYmFyIjsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJzdWJzdHJpbmcgdXNlZCBhcyBzdWJzY3JpcHQiLCBbW29iamVjdFtAImZvbyJdIHRvU3Ry
aW5nXSBpc0VxdWFsOkAiYmFyIl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1
dG9yZWxlYXNlXTsKKyAgICAgICAgVGV4dFhZWiAqdGVzdFhZWiA9IFtbVGV4dFhZWiBhbGxvY10g
aW5pdF07CisgICAgICAgIGNvbnRleHRbQCJ0ZXN0WFlaIl0gPSB0ZXN0WFlaOworICAgICAgICB0
ZXN0WFlaLnggPSAzOworICAgICAgICB0ZXN0WFlaLnkgPSA0OworICAgICAgICB0ZXN0WFlaLnog
PSA1OworICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVoueCA9IDEzOyB0
ZXN0WFlaLnkgPSAxNDsiXTsKKyAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0
WFlaLnRlc3QoJ3Rlc3QnKSJdOworICAgICAgICBjaGVja1Jlc3VsdChAIlRleHRYWVogLSB0ZXN0
WFlaVGVzdGVkIiwgdGVzdFhZWlRlc3RlZCk7CisgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtj
b250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidGVzdFhZWi54ICsgJywnICsgdGVzdFhZWi55ICsgJywn
ICsgdGVzdFhZWi56Il07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiVGV4dFhZWiAtIHJlc3VsdCIs
IFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiMTMsNCx1bmRlZmluZWQiXSk7CisgICAgfQorCisg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBbY29udGV4dFtAIk9i
amVjdCJdW0AicHJvdG90eXBlIl0gZGVmaW5lUHJvcGVydHk6QCJnZXR0ZXJQcm9wZXJ0eSIgZGVz
Y3JpcHRvcjpAeworICAgICAgICAgICAgSlNQcm9wZXJ0eURlc2NyaXB0b3JHZXRLZXk6XnsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gW0pTQ29udGV4dCBjdXJyZW50VGhpc11bQCJ4Il07CisgICAg
ICAgICAgICB9CisgICAgICAgIH1dOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6QHsgQCJ4IjpAMTAxIH0gaW5Db250ZXh0OmNvbnRleHRdOworICAg
ICAgICBpbnQgcmVzdWx0ID0gW29iamVjdCBbQCJnZXR0ZXJQcm9wZXJ0eSJdIHRvSW50MzJdOwor
ICAgICAgICBjaGVja1Jlc3VsdChAImdldHRlclByb3BlcnR5IiwgcmVzdWx0ID09IDEwMSk7Cisg
ICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4
dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBjb250
ZXh0W0AiY29uY2F0ZW5hdGUiXSA9IF57CisgICAgICAgICAgICBOU0FycmF5ICphcmd1bWVudHMg
PSBbSlNDb250ZXh0IGN1cnJlbnRBcmd1bWVudHNdOworICAgICAgICAgICAgaWYgKCFbYXJndW1l
bnRzIGNvdW50XSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQCIiOworICAgICAgICAgICAgTlNT
dHJpbmcgKm1lc3NhZ2UgPSBbYXJndW1lbnRzWzBdIGRlc2NyaXB0aW9uXTsKKyAgICAgICAgICAg
IGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDE7IGluZGV4IDwgW2FyZ3VtZW50cyBjb3VudF07ICsr
aW5kZXgpCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiJUAgJUAiLCBtZXNzYWdlLCBhcmd1bWVudHNbaW5kZXhdXTsKKyAgICAgICAgICAgIHJl
dHVybiBtZXNzYWdlOworICAgICAgICB9OworICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29u
dGV4dCBldmFsdWF0ZVNjcmlwdDpAImNvbmNhdGVuYXRlKCdIZWxsbywnLCAnV29ybGQhJykiXTsK
KyAgICAgICAgY2hlY2tSZXN1bHQoQCJjb25jYXRlbmF0ZSIsIFtyZXN1bHQgaXNFcXVhbFRvT2Jq
ZWN0OkAiSGVsbG8sIFdvcmxkISJdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgICAgIGNvbnRleHRbQCJmb28iXSA9IEBZRVM7CisgICAgICAgIGNo
ZWNrUmVzdWx0KEAiQFlFUyBpcyBib29sZWFuIiwgW2NvbnRleHRbQCJmb28iXSBpc0Jvb2xlYW5d
KTsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0
eXBlb2YgZm9vIl07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiQFlFUyBpcyBib29sZWFuIiwgW3Jl
c3VsdCBpc0VxdWFsVG9PYmplY3Q6QCJib29sZWFuIl0pOworICAgIH0KKworICAgIEBhdXRvcmVs
ZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgVGVzdE9iamVjdCogdGVzdE9iamVjdCA9
IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOworICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJd
ID0gdGVzdE9iamVjdDsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVh
dGVTY3JpcHQ6QCJTdHJpbmcodGVzdE9iamVjdCkiXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJT
dHJpbmcodGVzdE9iamVjdCkiLCBbcmVzdWx0IGlzRXF1YWxUb09iamVjdDpAIltvYmplY3QgVGVz
dE9iamVjdF0iXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OworICAgICAgICBUZXN0T2JqZWN0KiB0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVj
dF07CisgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OworICAgICAg
ICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIlN0cmluZyh0ZXN0
T2JqZWN0Ll9fcHJvdG9fXykiXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTdHJpbmcodGVzdE9i
amVjdC5fX3Byb3RvX18pIiwgW3Jlc3VsdCBpc0VxdWFsVG9PYmplY3Q6QCJbb2JqZWN0IFRlc3RP
YmplY3RQcm90b3R5cGVdIl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgY29udGV4dFtAIlRlc3RPYmplY3QiXSA9IFtUZXN0T2JqZWN0IGNs
YXNzXTsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6
QCJTdHJpbmcoVGVzdE9iamVjdCkiXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTdHJpbmcoVGVz
dE9iamVjdCkiLCBbcmVzdWx0IGlzRXF1YWxUb09iamVjdDpAIltvYmplY3QgVGVzdE9iamVjdENv
bnN0cnVjdG9yXSJdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
SlNDb250ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CisgICAgICAgIEpTVmFsdWUqIHZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OltU
ZXN0T2JqZWN0IGNsYXNzXSBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0
KEAiW3ZhbHVlIHRvT2JqZWN0XSA9PSBbVGVzdE9iamVjdCBjbGFzc10iLCBbdmFsdWUgdG9PYmpl
Y3RdID09IFtUZXN0T2JqZWN0IGNsYXNzXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOworICAgICAgICBjb250ZXh0W0AiVGVzdE9iamVjdCJdID0gW1Rlc3RP
YmplY3QgY2xhc3NdOworICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0
ZVNjcmlwdDpAIlRlc3RPYmplY3QucGFyZW50VGVzdCgpIl07CisgICAgICAgIGNoZWNrUmVzdWx0
KEAiVGVzdE9iamVjdC5wYXJlbnRUZXN0KCkiLCBbcmVzdWx0IGlzRXF1YWxUb09iamVjdDpAIlRl
c3RPYmplY3QiXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OworICAgICAgICBUZXN0T2JqZWN0KiB0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVj
dF07CisgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0QSJdID0gdGVzdE9iamVjdDsKKyAgICAg
ICAgY29udGV4dFtAInRlc3RPYmplY3RCIl0gPSB0ZXN0T2JqZWN0OworICAgICAgICBKU1ZhbHVl
ICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RPYmplY3RBID09IHRlc3RP
YmplY3RCIl07CisgICAgICAgIGNoZWNrUmVzdWx0KEAidGVzdE9iamVjdEEgPT0gdGVzdE9iamVj
dEIiLCBbcmVzdWx0IGlzQm9vbGVhbl0gJiYgW3Jlc3VsdCB0b0Jvb2xdKTsKKyAgICB9CisKKyAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tbSlND
b250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIFRlc3RPYmplY3QqIHRl
c3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKKyAgICAgICAgY29udGV4dFtAInRl
c3RPYmplY3QiXSA9IHRlc3RPYmplY3Q7CisgICAgICAgIHRlc3RPYmplY3QucG9pbnQgPSAoQ0dQ
b2ludCl7Myw0fTsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVT
Y3JpcHQ6QCJ2YXIgcmVzdWx0ID0gSlNPTi5zdHJpbmdpZnkodGVzdE9iamVjdC5wb2ludCk7IHRl
c3RPYmplY3QucG9pbnQgPSB7eDoxMix5OjE0fTsgcmVzdWx0Il07CisgICAgICAgIGNoZWNrUmVz
dWx0KEAidGVzdE9iamVjdC5wb2ludCAtIHJlc3VsdCIsIFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0
OkAie1wieFwiOjMsXCJ5XCI6NH0iXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAidGVzdE9iamVj
dC5wb2ludCAtIHt4OjEyLHk6MTR9IiwgdGVzdE9iamVjdC5wb2ludC54ID09IDEyICYmIHRlc3RP
YmplY3QucG9pbnQueSA9PSAxNCk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOworICAgICAgICBUZXN0T2JqZWN0KiB0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3Qg
dGVzdE9iamVjdF07CisgICAgICAgIHRlc3RPYmplY3Quc2l4ID0gNjsKKyAgICAgICAgY29udGV4
dFtAInRlc3RPYmplY3QiXSA9IHRlc3RPYmplY3Q7CisgICAgICAgIGNvbnRleHRbQCJtdWwiXSA9
IF4oaW50IHgsIGludCB5KXsgcmV0dXJuIHggKiB5OyB9OworICAgICAgICBKU1ZhbHVlICpyZXN1
bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIm11bCh0ZXN0T2JqZWN0LnNpeCwgNykiXTsK
KyAgICAgICAgY2hlY2tSZXN1bHQoQCJtdWwodGVzdE9iamVjdC5zaXgsIDcpIiwgW3Jlc3VsdCBp
c051bWJlcl0gJiYgW3Jlc3VsdCB0b0ludDMyXSA9PSA0Mik7CisgICAgfQorCisgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBUZXN0T2JqZWN0KiB0ZXN0T2JqZWN0
ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07CisgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0
Il0gPSB0ZXN0T2JqZWN0OworICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJdW0AidmFyaWFi
bGUiXSA9IEA0OworICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIisrdGVzdE9iamVj
dC52YXJpYWJsZSJdOworICAgICAgICBjaGVja1Jlc3VsdChAIisrdGVzdE9iamVjdC52YXJpYWJs
ZSIsIHRlc3RPYmplY3QudmFyaWFibGUgPT0gNSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBjb250ZXh0W0AicG9pbnQiXSA9IEB7IEAieCI6
QDYsIEAieSI6QDcgfTsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVh
dGVTY3JpcHQ6QCJwb2ludC54ICsgJywnICsgcG9pbnQueSJdOworICAgICAgICBjaGVja1Jlc3Vs
dChAInBvaW50LnggKyAnLCcgKyBwb2ludC55IiwgW3Jlc3VsdCBpc0VxdWFsVG9PYmplY3Q6QCI2
LDciXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
ICAgICBjb250ZXh0W0AicG9pbnQiXSA9IEB7IEAieCI6QDYsIEAieSI6QDcgfTsKKyAgICAgICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJwb2ludC54ICsgJywn
ICsgcG9pbnQueSJdOworICAgICAgICBjaGVja1Jlc3VsdChAInBvaW50LnggKyAnLCcgKyBwb2lu
dC55IiwgW3Jlc3VsdCBpc0VxdWFsVG9PYmplY3Q6QCI2LDciXSk7CisgICAgfQorCisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4
dCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBUZXN0T2JqZWN0KiB0ZXN0T2Jq
ZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07CisgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2Jq
ZWN0Il0gPSB0ZXN0T2JqZWN0OworICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAInRlc3RPYmplY3QuZ2V0U3RyaW5nKCkiXTsKKyAgICAgICAgY2hlY2tS
ZXN1bHQoQCJ0ZXN0T2JqZWN0LmdldFN0cmluZygpIiwgW3Jlc3VsdCBpc1N0cmluZ10gJiYgW3Jl
c3VsdCB0b0ludDMyXSA9PSA0Mik7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOworICAgICAgICBUZXN0T2JqZWN0KiB0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3Qg
dGVzdE9iamVjdF07CisgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0
OworICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRl
c3RPYmplY3QudGVzdEFyZ3VtZW50VHlwZXMoMTAxLDAuNSx0cnVlLCdmb28nLDY2NixbZmFsc2Us
J2JhcicsZmFsc2VdLHt4OidiYXonfSkiXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJ0ZXN0T2Jq
ZWN0LnRlc3RBcmd1bWVudFR5cGVzIiwgW3Jlc3VsdCBpc0VxdWFsVG9PYmplY3Q6QCIxMDEsMC41
LDEsZm9vLDY2NixiYXIsYmF6Il0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdIGF1
dG9yZWxlYXNlXTsKKyAgICAgICAgVGVzdE9iamVjdCogdGVzdE9iamVjdCA9IFtUZXN0T2JqZWN0
IHRlc3RPYmplY3RdOworICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJdID0gdGVzdE9iamVj
dDsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0
ZXN0T2JqZWN0LmdldFN0cmluZy5jYWxsKHRlc3RPYmplY3QpIl07CisgICAgICAgIGNoZWNrUmVz
dWx0KEAidGVzdE9iamVjdC5nZXRTdHJpbmcuY2FsbCh0ZXN0T2JqZWN0KSIsIFtyZXN1bHQgaXNT
dHJpbmddICYmIFtyZXN1bHQgdG9JbnQzMl0gPT0gNDIpOworICAgIH0KKworICAgIEBhdXRvcmVs
ZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgVGVzdE9iamVjdCogdGVzdE9iamVjdCA9
IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOworICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJd
ID0gdGVzdE9iamVjdDsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJ0ZXN0T2JqZWN0LmdldFN0cmlu
Zy5jYWxsKHt9KSBwcmUiLCAhY29udGV4dC5leGNlcHRpb24pOworICAgICAgICBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAInRlc3RPYmplY3QuZ2V0U3RyaW5nLmNhbGwoe30pIl07CisgICAgICAg
IGNoZWNrUmVzdWx0KEAidGVzdE9iamVjdC5nZXRTdHJpbmcuY2FsbCh7fSkgcG9zdCIsIGNvbnRl
eHQuZXhjZXB0aW9uKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
SlNDb250ZXh0ICpjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CisgICAgICAgIFRlc3RPYmplY3QqIHRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2Jq
ZWN0XTsKKyAgICAgICAgY29udGV4dFtAInRlc3RPYmplY3QiXSA9IHRlc3RPYmplY3Q7CisgICAg
ICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidmFyIHJlc3Vs
dCA9IDA7IHRlc3RPYmplY3QuY2FsbGJhY2soZnVuY3Rpb24oeCl7IHJlc3VsdCA9IHg7IH0pOyBy
ZXN1bHQiXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJ0ZXN0T2JqZWN0LmNhbGxiYWNrIiwgW3Jl
c3VsdCBpc051bWJlcl0gJiYgW3Jlc3VsdCB0b0ludDMyXSA9PSA0Mik7CisgICAgfQorCisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dDEgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dDIgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTpjb250ZXh0MS52aXJ0dWFsTWFjaGlu
ZV07CisgICAgICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoRG91YmxlOjQy
IGluQ29udGV4dDpjb250ZXh0Ml07CisgICAgICAgIGNoZWNrUmVzdWx0KEAidmFsdWUuY29udGV4
dCA9PSBjb250ZXh0MiIsIHZhbHVlLmNvbnRleHQgPT0gY29udGV4dDIpOworICAgICAgICBjb250
ZXh0MVtAInBhc3NWYWx1ZUJldHdlZW5Db250ZXh0cyJdID0gdmFsdWU7CisgICAgICAgIEpTVmFs
dWUgKnJlc3VsdCA9IFtjb250ZXh0MSBldmFsdWF0ZVNjcmlwdDpAInBhc3NWYWx1ZUJldHdlZW5D
b250ZXh0cyJdOworICAgICAgICBjaGVja1Jlc3VsdChAInJlc3VsdC5jb250ZXh0ID09IGNvbnRl
eHQxIiwgcmVzdWx0LmNvbnRleHQgPT0gY29udGV4dDEpOworICAgICAgICBjaGVja1Jlc3VsdChA
Ilt2YWx1ZSBpc0VxdWFsVG9PYmplY3Q6cmVzdWx0XSIsIFt2YWx1ZSBpc0VxdWFsVG9PYmplY3Q6
cmVzdWx0XSk7CisgICAgICAgIFtjb250ZXh0MSByZWxlYXNlXTsKKyAgICAgICAgW2NvbnRleHQy
IHJlbGVhc2VdOworICAgIH0KK30KKworI2Vsc2UKKwordm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgp
Cit7Cit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbQkocmV2aXNpb24gMTM4ODEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTEgQEAKIAog
I2ltcG9ydCAiSmF2YVNjcmlwdENvcmUuaCIKIAotYm9vbCBfQmxvY2tfaGFzX3NpZ25hdHVyZSh2
b2lkICopOwotY29uc3QgY2hhciAqIF9CbG9ja19zaWduYXR1cmUodm9pZCAqKTsKK2V4dGVybiAi
QyIgYm9vbCBfQmxvY2tfaGFzX3NpZ25hdHVyZSh2b2lkICopOworZXh0ZXJuICJDIiBjb25zdCBj
aGFyICogX0Jsb2NrX3NpZ25hdHVyZSh2b2lkICopOwogCiBleHRlcm4gaW50IGZhaWxlZDsKLXZv
aWQgdGVzdE9iamVjdGl2ZUNBUEkodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdGVzdE9iamVjdGl2
ZUNBUEkodm9pZCk7CiAKICNpZiBKU19PQkpDX0FQSV9FTkFCTEVECiAKQEAgLTEyNCwxMCArMTI0
LDEwIEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVzdWx0KE5TU3RyaW5nICpkZXNjcmkKIAogc3RhdGlj
IGJvb2wgYmxvY2tTaWduYXR1cmVDb250YWluc0NsYXNzKCkKIHsKLSAgICBzdGF0aWMgYm9vbCBj
b250YWluc0NsYXNzID0gKGJvb2wpXnsKKyAgICBzdGF0aWMgYm9vbCBjb250YWluc0NsYXNzID0g
XnsKICAgICAgICAgaWQgYmxvY2sgPSBeKE5TU3RyaW5nICpzdHJpbmcpeyByZXR1cm4gc3RyaW5n
OyB9OwogICAgICAgICByZXR1cm4gX0Jsb2NrX2hhc19zaWduYXR1cmUoYmxvY2spICYmIHN0cnN0
cihfQmxvY2tfc2lnbmF0dXJlKGJsb2NrKSwgIk5TU3RyaW5nIik7Ci0gICAgfTsKKyAgICB9KCk7
CiAgICAgcmV0dXJuIGNvbnRhaW5zQ2xhc3M7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxMzg4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NTM5LDcgKzUzOSw3IEBACiAJCTg2Q0M4NUEzMEVFNzlCNzQwMDI4ODY4MiAvKiBKSVRDYWxsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUEy
MEVFNzlCNzQwMDI4ODY4MiAvKiBKSVRDYWxsLmNwcCAqLzsgfTsKIAkJODZDQzg1QzQwRUU3QTg5
NDAwMjg4NjgyIC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUMzMEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAgKi87IH07CiAJCTg2Q0NFRkRFMEY0MTNGODkwMEZEN0Y5RSAvKiBK
SVRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkNDRUZERDBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAv
KiB0ZXN0YXBpLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkQyMjIxOTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tICovOyB9OworCQk4NkQyMjIx
QTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBp
Lm1tICovOyB9OwogCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkJG
MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwICovOyB9OwogCQk4NkQzQjJDNDEw
MTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNz
ZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODZEM0IyQzUxMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFu
dFBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
RDNCMkMxMTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29s
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEz
OTQsNyArMTM5NCw3IEBACiAJCTg2Q0M4NUEyMEVFNzlCNzQwMDI4ODY4MiAvKiBKSVRDYWxsLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVENhbGwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkNDODVDMzBFRTdBODk0MDAyODg2ODIgLyogSklU
UHJvcGVydHlBY2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SklUUHJvcGVydHlBY2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkND
RUZERDBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKSVRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2RDIy
MjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
b2JqYzsgbmFtZSA9IHRlc3RhcGkubTsgcGF0aCA9IEFQSS90ZXN0cy90ZXN0YXBpLm07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0
YXBpLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IG5hbWUgPSB0ZXN0YXBpLm1t
OyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVJNQXNzZW1ibGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZEM0IyQzAxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2Vt
Ymxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUk1Bc3NlbWJsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8q
IEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTkxMiw3ICsxOTEyLDcgQEAKIAkJCQkxNDQwMDUxNzBBNTMx
Q0I1MDAwNUYwNjEgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENUEyRDBBM0U5MUY2MDBCQUY1OUMg
LyogdGVzdGFwaS5jICovLAogCQkJCTE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBp
LmpzICovLAotCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm0gKi8sCisJ
CQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8sCiAJCQkJNjUxMTIy
RTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICovLAogCQkJKTsKIAkJCW5hbWUg
PSB0ZXN0czsKQEAgLTM1ODksNyArMzU4OSw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRl
c3RhcGkuYyBpbiBTb3VyY2VzICovLAotCQkJCTg2RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0
ZXN0YXBpLm0gaW4gU291cmNlcyAqLywKKwkJCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyog
dGVzdGFwaS5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182427</attachid>
            <date>2013-01-11 15:06:27 -0800</date>
            <delta_ts>2013-01-11 15:07:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106055-20130111150329.patch</filename>
            <type>text/plain</type>
            <size>1417</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM5NTA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDEzLTAxLTExICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgdGVzdGFwaSBpcyBmYWlsaW5nIHdpdGggYSBibG9jay1yZWxhdGVkIGVycm9yIGlu
IHRoZSBPYmpjIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA2MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2FtZSBidWcgYXMgaW4gdGVzdGFwaS5tbS4gV2UgbmVlZCB0byBhY3R1YWxseSBjYWxs
IHRoZSBzdGF0aWMgYmxvY2ssIHJhdGhlciB0aGFuIGNhc3RpbmcgdGhlIGJsb2NrIHRvIGEgYm9v
bC4KKworICAgICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKGJs
b2NrU2lnbmF0dXJlQ29udGFpbnNDbGFzcyk6CisKIDIwMTMtMDEtMTEgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gZW5h
YmxlIHZlcmJvc2UgcHJpbnRpbmcgb2YgZWFjaCBPU1IgZXhpdCBhdCBydW4tdGltZSAocmF0aGVy
IHRoYW4gY29tcGlsZS10aW1lKSBhbmQgaXQgc2hvdWxkIHByaW50IHJlZ2lzdGVyIHN0YXRlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rp
b24ubW0JKHJldmlzaW9uIDEzOTQ5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2Jq
Q0NhbGxiYWNrRnVuY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTU0OSw3ICs1NDksNyBAQCBz
dGF0aWMgYm9vbCBibG9ja1NpZ25hdHVyZUNvbnRhaW5zQ2xhc3MoCiAgICAgc3RhdGljIGJvb2wg
Y29udGFpbnNDbGFzcyA9IF57CiAgICAgICAgIGlkIGJsb2NrID0gXihOU1N0cmluZyAqc3RyaW5n
KXsgcmV0dXJuIHN0cmluZzsgfTsKICAgICAgICAgcmV0dXJuIF9CbG9ja19oYXNfc2lnbmF0dXJl
KGJsb2NrKSAmJiBzdHJzdHIoX0Jsb2NrX3NpZ25hdHVyZShibG9jayksICJOU1N0cmluZyIpOwot
ICAgIH07CisgICAgfSgpOwogICAgIHJldHVybiBjb250YWluc0NsYXNzOwogfQogCg==
</data>
<flag name="review"
          id="200421"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>