<?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>38454</bug_id>
          
          <creation_ts>2010-05-03 04:02:24 -0700</creation_ts>
          <short_desc>svn-apply: Have parseDiffHeader() call parseGitDiffHeader().</short_desc>
          <delta_ts>2010-05-04 00:56:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>38425</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>220056</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-03 04:02:24 -0700</bug_when>
    <thetext>In this patch, I think it would make sense to recast the existing parseDiffHeader() as parseSvnDiffHeader() and then create a new parseDiffHeader() that calls the Git or SVN version based on the first line (whether it begins with &quot;Index:&quot; or &quot;diff --git&quot;).  The unit tests for the new parseDiffHeader() can have enough tests just to ensure that it supports carrying over each diffHash key value correctly (since the more thorough tests will be in the tests for the Git and SVN versions).

This patch can also delete the gitdiff2svndiff() subroutine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220276</commentid>
    <comment_count>1</comment_count>
      <attachid>54958</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-03 13:57:59 -0700</bug_when>
    <thetext>Created attachment 54958
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220277</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-03 14:03:57 -0700</bug_when>
    <thetext>Attachment 54958 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:47:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:48:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:57:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:58:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:73:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:74:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:83:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:84:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:99:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:100:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:109:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:110:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:125:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:126:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:135:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:136:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:151:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:152:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:161:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:162:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 20 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220278</commentid>
    <comment_count>3</comment_count>
      <attachid>54959</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-03 14:07:09 -0700</bug_when>
    <thetext>Created attachment 54959
Proposed patch 2

A minor change to the ChangeLog and a code comment.

By the way, expect style errors for tabs in this patch.  This is because diffs contain tab characters, and the unit tests contain sample diffs.

Also marking cq- since this patch will require setting the svn:allow-tabs property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220280</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-03 14:09:59 -0700</bug_when>
    <thetext>Attachment 54959 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:47:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:48:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:57:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:58:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:73:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:74:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:83:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:84:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:99:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:100:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:109:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:110:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:125:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:126:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:135:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:136:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:151:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:152:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:161:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:162:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 20 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220496</commentid>
    <comment_count>5</comment_count>
      <attachid>54959</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-05-03 23:56:54 -0700</bug_when>
    <thetext>Comment on attachment 54959
Proposed patch 2

&gt; +#     * Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; +# its contributors may be used to endorse or promote products derived
&gt; +# from this software without specific prior written permission.

Just wanted to point out you reference Apple in the copyright here.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220505</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-04 00:37:06 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 54959 [details])
&gt; &gt; +#     * Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; &gt; +# its contributors may be used to endorse or promote products derived
&gt; &gt; +# from this software without specific prior written permission.
&gt; 
&gt; Just wanted to point out you reference Apple in the copyright here.
&gt; 
&gt; r=me.

Thanks, Dan.

I preserved the original copyright and license text since the new file is mostly a copy of the original, though perhaps I can change that text since I&apos;m the sole copyright owner of the file. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220511</commentid>
    <comment_count>7</comment_count>
      <attachid>54959</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-04 00:56:43 -0700</bug_when>
    <thetext>Comment on attachment 54959
Proposed patch 2

Clearing flags on attachment: 54959

Committed r58739: &lt;http://trac.webkit.org/changeset/58739&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220512</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-04 00:56:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54958</attachid>
            <date>2010-05-03 13:57:59 -0700</date>
            <delta_ts>2010-05-03 14:07:09 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-38454-1.diff</filename>
            <type>text/plain</type>
            <size>32719</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiM2QyMTExLi5jNjI3M2Y5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAKIDIwMTAtMDUt
MDMgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBWQ1NVdGlscy5wbSdz
IHBhcnNlRGlmZkhlYWRlcigpIHRvIGNhbGwgdGhlIG5ldworICAgICAgICBwYXJzZUdpdERpZmZI
ZWFkZXIoKSBtZXRob2QuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4NDU0CisKKyAgICAgICAgVGhpcyByZXZpc2lvbiBtYWtlcyBtb3JlIHByb2dy
ZXNzIHRvd2FyZHMgYWRkaW5nIGV4ZWN1dGFibGUtYml0CisgICAgICAgIHN1cHBvcnQgdG8gc3Zu
LWFwcGx5IGFuZCBzdm4tdW5hcHBseS4gIEl0IGFsc28gbWFrZXMgbW9yZSBwcm9ncmVzcworICAg
ICAgICB0b3dhcmRzIHJlZmFjdG9yaW5nIHRoZSBjb2RlIGludG8gYSBtb3JlIG1haW50YWluYWJs
ZSBmb3JtLgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbToKKyAgICAgICAgICAtIFJl
bW92ZWQgZ2l0ZGlmZjJzdm5kaWZmKCkuCisgICAgICAgICAgLSBSZW1vdmVkIHRoZSBHaXQtc3Bl
Y2lmaWMgbG9naWMgZnJvbSBwYXJzZURpZmZIZWFkZXIoKSBhbmQKKyAgICAgICAgICAgIHJlbmFt
ZWQgaXQgcGFyc2VTdm5EaWZmSGVhZGVyKCkuCisgICAgICAgICAgLSBBZGRlZCBhIG5ldyBwYXJz
ZURpZmZIZWFkZXIoKSBzdWJyb3V0aW5lIHdoaWNoIGNhbGxzCisgICAgICAgICAgICBwYXJzZVN2
bkRpZmZIZWFkZXIoKSBvciBwYXJzZUdpdERpZmZIZWFkZXIoKSBkZXBlbmRpbmcgb24KKyAgICAg
ICAgICAgIHRoZSBmb3JtYXQgb2YgdGhlIGZpcnN0IGhlYWRlciBsaW5lLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2dpdGRpZmYyc3ZuZGlmZi5wbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3Qv
cGFyc2VEaWZmSGVhZGVyLnBsOgorICAgICAgICAgIC0gUmVtb3ZlZCBtb3N0IG9mIHRoZSB0ZXN0
IGNhc2VzIHNpbmNlIHRoZXNlIGNhc2VzIGFyZSBub3cKKyAgICAgICAgICAgIGNvdmVyZWQgYnkg
dGhlIHVuaXQgdGVzdHMgZm9yIHBhcnNlU3ZuRGlmZkhlYWRlcigpIGFuZAorICAgICAgICAgICAg
cGFyc2VHaXREaWZmSGVhZGVyKCkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNT
VXRpbHNfdW5pdHRlc3QvcGFyc2VTdm5EaWZmSGVhZGVyLnBsOiBBZGRlZC4KKyAgICAgICAgICAt
IEFkZGVkIHVuaXQgdGVzdHMgZm9yIHBhcnNlU3ZuRGlmZkhlYWRlcigpIGZyb20gdGhlIHVuaXQg
dGVzdHMKKyAgICAgICAgICAgIGZvciB0aGUgcHJldmlvdXMgcGFyc2VEaWZmSGVhZGVyKCkuCisK
KzIwMTAtMDUtMDMgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgogCiAgICAgICAgIEFkZGVkIGEgcGFyc2VH
aXREaWZmSGVhZGVyKCkgc3Vicm91dGluZSB0byBWQ1NVdGlscy5wbSB0aGF0CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9W
Q1NVdGlscy5wbQppbmRleCA0NGNlNDU4Li5lZTljZDY3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL1ZDU1V0aWxzLnBtCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMu
cG0KQEAgLTQ5MCw5MyArNDkwLDU3IEBAIHN1YiBwYXJzZUdpdERpZmZIZWFkZXIoJCQpCiAgICAg
cmV0dXJuIChcJWhlYWRlciwgJF8pOwogfQogCi0jIENvbnZlcnQgc29tZSBsaW5lcyBvZiBhIGdp
dC1mb3JtYXR0ZWQgcGF0Y2ggdG8gU1ZOIGZvcm1hdCwgd2hpbGUKLSMgcHJlc2VydmluZyBhbnkg
ZW5kLW9mLWxpbmUgY2hhcmFjdGVycy4KLSMKLSMgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmV0
dXJucyB1bmNvbnZlcnRlZCBsaW5lcyB1bmNoYW5nZWQgLS0gZm9yCi0jIGV4YW1wbGUgR2l0LXNw
ZWNpZmljIGxpbmVzIHRoYXQgbWF5IG5vdCBoYXZlIGFuIFNWTiBhbmFsb2d1ZS4gIEluCi0jIHBh
cnRpY3VsYXIsIGFwcGx5aW5nIHRoaXMgZnVuY3Rpb24gdG8gdGhlIGxpbmVzIG9mIGEgR2l0IHBh
dGNoIHdpbGwgbm90Ci0jIG5lY2Vzc2FyaWx5IHJlc3VsdCBpbiBhbiBTVk4tZm9ybWF0dGVkIHBh
dGNoLgotc3ViIGdpdGRpZmYyc3ZuZGlmZigkKQotewotICAgICRfID0gc2hpZnQgQF87Ci0KLSAg
ICBpZiAobSNeZGlmZiAtLWdpdCBcdy8oLispIFx3LyhbXlxyXG5dKykjKSB7Ci0gICAgICAgIHJl
dHVybiAiSW5kZXg6ICQxJFBPU1RNQVRDSCI7Ci0gICAgfQotICAgIGlmIChtI14tLS0gXHcvKFte
XHJcbl0rKSMpIHsKLSAgICAgICAgcmV0dXJuICItLS0gJDEkUE9TVE1BVENIIjsKLSAgICB9Ci0g
ICAgaWYgKG0jXlwrXCtcKyBcdy8oW15cclxuXSspIykgewotICAgICAgICByZXR1cm4gIisrKyAk
MSRQT1NUTUFUQ0giOwotICAgIH0KLSAgICByZXR1cm4gJF87ICMgQWxsb3cgInVucmVjb2duaXpl
ZCIgbGluZXMgdG8gcGFzcyB0aHJvdWdoLgotfQotCi0jIFBhcnNlIHRoZSBuZXh0IGRpZmYgaGVh
ZGVyIGZyb20gdGhlIGdpdmVuIGZpbGUgaGFuZGxlLCBhbmQgYWR2YW5jZQotIyB0aGUgZmlsZSBo
YW5kbGUgc28gdGhlIGxhc3QgbGluZSByZWFkIGlzIHRoZSBmaXJzdCBsaW5lIGFmdGVyIHRoZQot
IyBwYXJzZWQgaGVhZGVyIGJsb2NrLgorIyBQYXJzZSB0aGUgbmV4dCBTVk4gZGlmZiBoZWFkZXIg
ZnJvbSB0aGUgZ2l2ZW4gZmlsZSBoYW5kbGUsIGFuZCBhZHZhbmNlCisjIHRoZSBoYW5kbGUgc28g
dGhlIGxhc3QgbGluZSByZWFkIGlzIHRoZSBmaXJzdCBsaW5lIGFmdGVyIHRoZSBoZWFkZXIuCiAj
Ci0jIFRoaXMgc3Vicm91dGluZSBkaWVzIGlmIGdpdmVuIGxlYWRpbmcganVuayBvciBpZiB0aGUg
ZW5kIG9mIHRoZSBoZWFkZXIKLSMgYmxvY2sgY291bGQgbm90IGJlIGRldGVjdGVkLiBUaGUgbGFz
dCBsaW5lIG9mIGEgaGVhZGVyIGJsb2NrIGlzIGEKLSMgbGluZSBiZWdpbm5pbmcgd2l0aCAiKysr
Ii4KKyMgVGhpcyBzdWJyb3V0aW5lIGRpZXMgaWYgZ2l2ZW4gbGVhZGluZyBqdW5rIG9yIGlmIGl0
IGNvdWxkIG5vdCBkZXRlY3QKKyMgdGhlIGVuZCBvZiB0aGUgaGVhZGVyIGJsb2NrLgogIwogIyBB
cmdzOgotIyAgICRmaWxlSGFuZGxlOiBhZHZhbmNlZCBzbyB0aGUgbGFzdCBsaW5lIHJlYWQgaXMg
dGhlIGZpcnN0IGxpbmUgb2YgdGhlCi0jICAgICAgICAgICAgICAgIG5leHQgZGlmZiBoZWFkZXIu
IEZvciBTVk4tZm9ybWF0dGVkIGRpZmZzLCB0aGlzIGlzIHRoZQotIyAgICAgICAgICAgICAgICAi
SW5kZXg6IiBsaW5lLgorIyAgICRmaWxlSGFuZGxlOiBhZHZhbmNlZCBzbyB0aGUgbGFzdCBsaW5l
IHJlYWQgZnJvbSB0aGUgaGFuZGxlIGlzIHRoZSBmaXJzdAorIyAgICAgICAgICAgICAgICBsaW5l
IG9mIHRoZSBoZWFkZXIgdG8gcGFyc2UuICBUaGlzIHNob3VsZCBiZSBhIGxpbmUKKyMgICAgICAg
ICAgICAgICAgYmVnaW5uaW5nIHdpdGggIkluZGV4OiIuCiAjICAgJGxpbmU6IHRoZSBsaW5lIGxh
c3QgcmVhZCBmcm9tICRmaWxlSGFuZGxlCiAjCiAjIFJldHVybnMgKCRoZWFkZXJIYXNoUmVmLCAk
bGFzdFJlYWRMaW5lKToKLSMgICAkaGVhZGVySGFzaFJlZjogYSBoYXNoIHJlZmVyZW5jZSByZXBy
ZXNlbnRpbmcgYSBkaWZmIGhlYWRlcgorIyAgICRoZWFkZXJIYXNoUmVmOiBhIGhhc2ggcmVmZXJl
bmNlIHJlcHJlc2VudGluZyBhIGRpZmYgaGVhZGVyLCBhcyBmb2xsb3dzLS0KICMgICAgIGNvcGll
ZEZyb21QYXRoOiBpZiBhIGZpbGUgY29weSwgdGhlIHBhdGggZnJvbSB3aGljaCB0aGUgZmlsZSB3
YXMKICMgICAgICAgICAgICAgICAgICAgICBjb3BpZWQuIE90aGVyd2lzZSwgdW5kZWZpbmVkLgog
IyAgICAgaW5kZXhQYXRoOiB0aGUgcGF0aCBpbiB0aGUgIkluZGV4OiIgbGluZS4KLSMgICAgIHNj
bUZvcm1hdDogVGhlIHN0cmluZyAiZ2l0IiBvciAic3ZuIiBkZXBlbmRpbmcgb24gdGhlIGZvcm1h
dC4KICMgICAgIHNvdXJjZVJldmlzaW9uOiB0aGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBzb3Vy
Y2UuIFRoaXMgaXMgdGhlIHNhbWUKICMgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgcmV2aXNp
b24gbnVtYmVyIHRoZSBmaWxlIHdhcyBjb3BpZWQgZnJvbSwgaW4KICMgICAgICAgICAgICAgICAg
ICAgICB0aGUgY2FzZSBvZiBhIGZpbGUgY29weS4KLSMgICAgIHN2bkNvbnZlcnRlZFRleHQ6IHRo
ZSBoZWFkZXIgdGV4dCB3aXRoIHNvbWUgbGluZXMgY29udmVydGVkIHRvIFNWTgotIyAgICAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0LiAgR2l0LXNwZWNpZmljIGxpbmVzIGFyZSBwcmVzZXJ2ZWQu
Ci0jICAgJGxhc3RSZWFkTGluZTogdGhlIGxpbmUgbGFzdCByZWFkIGZyb20gJGZpbGVIYW5kbGUu
IFRoaXMgaXMgdGhlIGZpcnN0Ci0jICAgICAgICAgICAgICAgICAgbGluZSBhZnRlciB0aGUgaGVh
ZGVyIGVuZGluZy4KLXN1YiBwYXJzZURpZmZIZWFkZXIoJCQpCisjICAgICBzdm5Db252ZXJ0ZWRU
ZXh0OiB0aGUgaGVhZGVyIHRleHQgY29udmVydGVkIHRvIGEgaGVhZGVyIHdpdGggdGhlIHBhdGhz
CisjICAgICAgICAgICAgICAgICAgICAgICBpbiBzb21lIGxpbmVzIGNvcnJlY3RlZC4KKyMgICAk
bGFzdFJlYWRMaW5lOiB0aGUgbGluZSBsYXN0IHJlYWQgZnJvbSAkZmlsZUhhbmRsZS4KK3N1YiBw
YXJzZVN2bkRpZmZIZWFkZXIoJCQpCiB7CiAgICAgbXkgKCRmaWxlSGFuZGxlLCAkbGluZSkgPSBA
XzsKIAotICAgIG15ICRmaWx0ZXI7Ci0gICAgaWYgKCRsaW5lID1+IG0jXmRpZmYgLS1naXQgIykg
ewotICAgICAgICAjIEZJWE1FOiBEZWxldGUgdGhlIGdpdGRpZmYyc3ZuZGlmZigpIHN1YnJvdXRp
bmUgYW5kIGNhbGwKLSAgICAgICAgIyAgICAgICAgcGFyc2VHaXREaWZmSGVhZGVyKCkgaW5zdGVh
ZC4KLSAgICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJzdm5kaWZmOwotICAgIH0KLSAgICAkbGlu
ZSA9ICYkZmlsdGVyKCRsaW5lKSBpZiAkZmlsdGVyOworICAgICRfID0gJGxpbmU7CiAKLSAgICBt
eSAkaW5kZXhQYXRoOwotICAgIGlmICgkbGluZSA9fiAvXkluZGV4OiAoW15cclxuXSspLykgewot
ICAgICAgICAkaW5kZXhQYXRoID0gJDE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGllKCJDb3Vs
ZCBub3QgcGFyc2UgZmlyc3QgbGluZSBvZiBkaWZmIGhlYWRlcjogXCIkbGluZVwiLiIpOwotICAg
IH0KKyAgICBteSAkaGVhZGVyU3RhcnRSZWdFeCA9IHFyL15JbmRleDogLzsKIAotICAgIG15ICVo
ZWFkZXI7CisgICAgaWYgKCEvJGhlYWRlclN0YXJ0UmVnRXgvKSB7CisgICAgICAgIGRpZSgiRmly
c3QgbGluZSBvZiBTVk4gZGlmZiBkb2VzIG5vdCBiZWdpbiB3aXRoIFwiSW5kZXggXCI6IFwiJF9c
IiIpOworICAgIH0KIAogICAgIG15ICRjb3BpZWRGcm9tUGF0aDsKICAgICBteSAkZm91bmRIZWFk
ZXJFbmRpbmc7Ci0gICAgbXkgJGxhc3RSZWFkTGluZTsgCisgICAgbXkgJGluZGV4UGF0aDsKICAg
ICBteSAkc291cmNlUmV2aXNpb247Ci0gICAgbXkgJHN2bkNvbnZlcnRlZFRleHQgPSAkbGluZTsK
LSAgICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgeworICAgIG15ICRzdm5Db252ZXJ0ZWRUZXh0Owor
ICAgIHdoaWxlICgxKSB7CiAgICAgICAgICMgVGVtcG9yYXJpbHkgc3RyaXAgb2ZmIGFueSBlbmQt
b2YtbGluZSBjaGFyYWN0ZXJzIHRvIHNpbXBsaWZ5CiAgICAgICAgICMgcmVnZXggbWF0Y2hpbmcg
YmVsb3cuCiAgICAgICAgIHMvKFtcblxyXSspJC8vOwogICAgICAgICBteSAkZW9sID0gJDE7CiAK
LSAgICAgICAgJF8gPSAmJGZpbHRlcigkXykgaWYgJGZpbHRlcjsKLQogICAgICAgICAjIEZpeCBw
YXRocyBvbiAiIi0tLSIgYW5kICIrKysiIGxpbmVzIHRvIG1hdGNoIHRoZSBsZWFkaW5nCiAgICAg
ICAgICMgaW5kZXggbGluZS4KLSAgICAgICAgaWYgKHMvXi0tLSBcUysvLS0tICRpbmRleFBhdGgv
KSB7CisgICAgICAgIGlmICgvXkluZGV4OiAoW15cclxuXSspLykgeworICAgICAgICAgICAgJGlu
ZGV4UGF0aCA9ICQxOworICAgICAgICB9IGVsc2lmIChzL14tLS0gXFMrLy0tLSAkaW5kZXhQYXRo
LykgewogICAgICAgICAgICAgIyAtLS0KICAgICAgICAgICAgIGlmICgvXi0tLSAuK1wocmV2aXNp
b24gKFxkKylcKS8pIHsKICAgICAgICAgICAgICAgICAkc291cmNlUmV2aXNpb24gPSAkMSBpZiAo
JDEgIT0gMCk7CkBAIC01ODksMzAgKzU1Myw5MCBAQCBzdWIgcGFyc2VEaWZmSGVhZGVyKCQkKQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAocy9eXCtc
K1wrIFxTKy8rKysgJGluZGV4UGF0aC8gfHwKLSAgICAgICAgICAgICAgICAgL15DYW5ub3QgZGlz
cGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4kLyB8fCAjIFNWTiBiaW5hcnkKLSAg
ICAgICAgICAgICAgICAgL15HSVQgYmluYXJ5IHBhdGNoJC8pIHsKKyAgICAgICAgICAgICAgICAg
L15DYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4kLykgewogICAg
ICAgICAgICAgIyArKysKICAgICAgICAgICAgICRmb3VuZEhlYWRlckVuZGluZyA9IDE7CiAgICAg
ICAgIH0KIAogICAgICAgICAkc3ZuQ29udmVydGVkVGV4dCAuPSAiJF8kZW9sIjsgIyBBbHNvIHJl
c3RvcmUgZW5kLW9mLWxpbmUgY2hhcmFjdGVycy4KLSAgICAgICAgaWYgKCRmb3VuZEhlYWRlckVu
ZGluZykgewotICAgICAgICAgICAgJGxhc3RSZWFkTGluZSA9IDwkZmlsZUhhbmRsZT47Ci0gICAg
ICAgICAgICBsYXN0OwotICAgICAgICB9Ci0gICAgfSAjICRsYXN0UmVhZExpbmUgaXMgdW5kZWYg
aWYgd2hpbGUgbG9vcCByYW4gb3V0LgorCisgICAgICAgICRfID0gPCRmaWxlSGFuZGxlPjsgIyBO
b3QgZGVmaW5lZCBpZiBlbmQtb2YtZmlsZSByZWFjaGVkLgorCisgICAgICAgIGxhc3QgaWYgKCFk
ZWZpbmVkKCRfKSB8fCAvJGhlYWRlclN0YXJ0UmVnRXgvIHx8ICRmb3VuZEhlYWRlckVuZGluZyk7
CisgICAgfQogCiAgICAgaWYgKCEkZm91bmRIZWFkZXJFbmRpbmcpIHsKICAgICAgICAgZGllKCJE
aWQgbm90IGZpbmQgZW5kIG9mIGhlYWRlciBibG9jayBjb3JyZXNwb25kaW5nIHRvIGluZGV4IHBh
dGggXCIkaW5kZXhQYXRoXCIuIik7CiAgICAgfQogCisgICAgbXkgJWhlYWRlcjsKKwogICAgICRo
ZWFkZXJ7Y29waWVkRnJvbVBhdGh9ID0gJGNvcGllZEZyb21QYXRoOwogICAgICRoZWFkZXJ7aW5k
ZXhQYXRofSA9ICRpbmRleFBhdGg7Ci0gICAgJGhlYWRlcntzY21Gb3JtYXR9ID0gJGZpbHRlciA/
ICJnaXQiIDogInN2biI7CiAgICAgJGhlYWRlcntzb3VyY2VSZXZpc2lvbn0gPSAkc291cmNlUmV2
aXNpb247CiAgICAgJGhlYWRlcntzdm5Db252ZXJ0ZWRUZXh0fSA9ICRzdm5Db252ZXJ0ZWRUZXh0
OwogCi0gICAgcmV0dXJuIChcJWhlYWRlciwgJGxhc3RSZWFkTGluZSk7CisgICAgcmV0dXJuIChc
JWhlYWRlciwgJF8pOworfQorCisjIFBhcnNlIHRoZSBuZXh0IGRpZmYgaGVhZGVyIGZyb20gdGhl
IGdpdmVuIGZpbGUgaGFuZGxlLCBhbmQgYWR2YW5jZQorIyB0aGUgaGFuZGxlIHNvIHRoZSBsYXN0
IGxpbmUgcmVhZCBpcyB0aGUgZmlyc3QgbGluZSBhZnRlciB0aGUgaGVhZGVyLgorIworIyBUaGlz
IHN1YnJvdXRpbmUgZGllcyBpZiBnaXZlbiBsZWFkaW5nIGp1bmsgb3IgaWYgaXQgY291bGQgbm90
IGRldGVjdAorIyB0aGUgZW5kIG9mIHRoZSBoZWFkZXIgYmxvY2suCisjCisjIEFyZ3M6CisjICAg
JGZpbGVIYW5kbGU6IGFkdmFuY2VkIHNvIHRoZSBsYXN0IGxpbmUgcmVhZCBmcm9tIHRoZSBoYW5k
bGUgaXMgdGhlIGZpcnN0CisjICAgICAgICAgICAgICAgIGxpbmUgb2YgdGhlIGhlYWRlciB0byBw
YXJzZS4gIEZvciBTVk4tZm9ybWF0dGVkIGRpZmZzLCB0aGlzCisjICAgICAgICAgICAgICAgIGlz
IGEgbGluZSBiZWdpbm5pbmcgd2l0aCAiSW5kZXg6Ii4gIEZvciBHaXQsIHRoaXMgaXMgYSBsaW5l
CisjICAgICAgICAgICAgICAgIGJlZ2lubmluZyB3aXRoICJkaWZmIC0tZ2l0Ii4KKyMgICAkbGlu
ZTogdGhlIGxpbmUgbGFzdCByZWFkIGZyb20gJGZpbGVIYW5kbGUKKyMKKyMgUmV0dXJucyAoJGhl
YWRlckhhc2hSZWYsICRsYXN0UmVhZExpbmUpOgorIyAgICRoZWFkZXJIYXNoUmVmOiBhIGhhc2gg
cmVmZXJlbmNlIHJlcHJlc2VudGluZyBhIGRpZmYgaGVhZGVyCisjICAgICBjb3BpZWRGcm9tUGF0
aDogaWYgYSBmaWxlIGNvcHksIHRoZSBwYXRoIGZyb20gd2hpY2ggdGhlIGZpbGUgd2FzCisjICAg
ICAgICAgICAgICAgICAgICAgY29waWVkLiBPdGhlcndpc2UsIHVuZGVmaW5lZC4KKyMgICAgIGV4
ZWN1dGFibGVCaXREZWx0YTogYW4gaW50ZWdlciAtMSwgMCwgb3IgMSwgZGVwZW5kaW5nIG9uIHdo
ZXRoZXIgdGhlCisjICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgYml0IHdhcyBh
ZGRlZCwgcmVtYWluZWQgdGhlIHNhbWUsIG9yIHdhcworIyAgICAgICAgICAgICAgICAgICAgICAg
ICByZW1vdmVkLiAgRm9yIG5ldyBhbmQgZGVsZXRlZCBmaWxlcywgdGhlIHZhbHVlIGlzIDAKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgb25seSBpZiB0aGUgbmV3IG9yIGRlbGV0ZWQgZmlsZSBp
cyBub3QgZXhlY3V0YWJsZS4KKyMgICAgIGluZGV4UGF0aDogdGhlIHBhdGggdG8gdGhlIGZpbGUu
CisjICAgICBzY21Gb3JtYXQ6IHRoZSBzdHJpbmcgImdpdCIgb3IgInN2biIgZGVwZW5kaW5nIG9u
IHRoZSBmb3JtYXQuCisjICAgICBzb3VyY2VSZXZpc2lvbjogdGhlIHJldmlzaW9uIG51bWJlciBv
ZiB0aGUgc291cmNlLiBUaGlzIGlzIHRoZSBzYW1lCisjICAgICAgICAgICAgICAgICAgICAgYXMg
dGhlIHJldmlzaW9uIG51bWJlciB0aGUgZmlsZSB3YXMgY29waWVkIGZyb20sIGluCisjICAgICAg
ICAgICAgICAgICAgICAgdGhlIGNhc2Ugb2YgYSBmaWxlIGNvcHkuCisjICAgICBzdm5Db252ZXJ0
ZWRUZXh0OiB0aGUgaGVhZGVyIHRleHQgd2l0aCBzb21lIGxpbmVzIGNvbnZlcnRlZCB0byBTVk4K
KyMgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC4gIEdpdC1zcGVjaWZpYyBsaW5lcyBhcmUg
cHJlc2VydmVkLgorIyAgICRsYXN0UmVhZExpbmU6IHRoZSBsaW5lIGxhc3QgcmVhZCBmcm9tICRm
aWxlSGFuZGxlLgorc3ViIHBhcnNlRGlmZkhlYWRlcigkJCkKK3sKKyAgICBteSAoJGZpbGVIYW5k
bGUsICRsaW5lKSA9IEBfOworCisgICAgbXkgJGhlYWRlcjsgICMgVGhpcyBpcyBhIGhhc2ggcmVm
LgorICAgIG15ICRsYXN0UmVhZExpbmU7CisgICAgbXkgJHNjbUZvcm1hdDsKKworICAgIGlmICgk
bGluZSA9fiAvXkluZGV4Oi8pIHsKKyAgICAgICAgJHNjbUZvcm1hdCA9ICJzdm4iOworICAgICAg
ICAoJGhlYWRlciwgJGxhc3RSZWFkTGluZSkgPSBwYXJzZVN2bkRpZmZIZWFkZXIoJGZpbGVIYW5k
bGUsICRsaW5lKTsKKyAgICB9IGVsc2lmICgkbGluZSA9fiAvXmRpZmYgLS1naXQvKSB7CisgICAg
ICAgICRzY21Gb3JtYXQgPSAiZ2l0IjsKKyAgICAgICAgKCRoZWFkZXIsICRsYXN0UmVhZExpbmUp
ID0gcGFyc2VHaXREaWZmSGVhZGVyKCRmaWxlSGFuZGxlLCAkbGluZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZGllKCJGaXJzdCBsaW5lIG9mIGRpZmYgZG9lcyBub3QgYmVnaW4gd2l0aCBcIklu
ZGV4OlwiIG9yIFwiZGlmZiAtLWdpdFwiOiBcIiRsaW5lXCIiKTsKKyAgICB9CisKKyAgICAjIElu
aXRpYWxpemUgbm9uLWV4aXN0ZW50IHZhbHVlcyB0byB0aGVpciBkZWZhdWx0cy4gIFdlIG5lZWQg
dG8gZG8gdGhpcworICAgICMgZXZlbiB3aGVuIHVuZGVmIGlzIGV4cGVjdGVkIHNpbmNlIHRoZSB1
bml0IHRlc3RzIGNhbiBkaXN0aW5ndWlzaAorICAgICMgYmV0d2VlbiB0aGUgdmFsdWUgdW5kZWYg
YW5kIGEga2V5IG5vdCBleGlzdGluZy4KKyAgICAkaGVhZGVyLT57Y29waWVkRnJvbVBhdGh9ID0g
dW5kZWYgaWYgIWRlZmluZWQoJGhlYWRlci0+e2NvcGllZEZyb21QYXRofSk7CisgICAgJGhlYWRl
ci0+e2V4ZWN1dGFibGVCaXREZWx0YX0gPSAwIGlmICFkZWZpbmVkKCRoZWFkZXItPntleGVjdXRh
YmxlQml0RGVsdGF9KTsKKyAgICAjIGluZGV4UGF0aDogYWxyZWFkeSBzZXQgYnkgYm90aCBwYXJz
ZSBpbXBsZW1lbnRhdGlvbnMuCisgICAgJGhlYWRlci0+e3NjbUZvcm1hdH0gPSAkc2NtRm9ybWF0
OworICAgICRoZWFkZXItPntzb3VyY2VSZXZpc2lvbn0gPSB1bmRlZiBpZiAhZGVmaW5lZCgkaGVh
ZGVyLT57c291cmNlUmV2aXNpb259KTsKKyAgICAjIHN2bkNvbnZlcnRlZFRleHQ6IGFscmVhZHkg
c2V0IGJ5IGJvdGggcGFyc2UgaW1wbGVtZW50YXRpb25zLgorCisgICAgcmV0dXJuICgkaGVhZGVy
LCAkbGFzdFJlYWRMaW5lKTsKIH0KIAogIyBGSVhNRTogVGhlICVkaWZmSGFzaCAib2JqZWN0IiBz
aG91bGQgbm90IGhhdmUgYW4gc3ZuQ29udmVydGVkVGV4dCBwcm9wZXJ0eS4KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9naXRkaWZm
MnN2bmRpZmYucGwgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5p
dHRlc3QvZ2l0ZGlmZjJzdm5kaWZmLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
NmYyZGI3Li4wMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NV
dGlsc191bml0dGVzdC9naXRkaWZmMnN2bmRpZmYucGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcg
KzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsIC13Ci0jCi0jIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MCBDaHJpcyBKZXJkb25layAoY2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQotIyBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpIAot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jIFVuaXQgdGVzdHMgb2YgVkNTVXRpbHM6OmdpdGRpZmYy
c3ZuZGlmZigpCi0KLXVzZSBzdHJpY3Q7Ci11c2Ugd2FybmluZ3M7Ci0KLXVzZSBUZXN0OjpTaW1w
bGUgdGVzdHMgPT4gMjA7Ci11c2UgVkNTVXRpbHM7Ci0KLSMgV2UgdXNlIHRoaXMgZm9yIGRpc3Bs
YXkgcHVycG9zZXMsIHRvIGtlZXAgZWFjaCB0ZXN0IHRpdGxlIG9uIG9uZSBsaW5lLgotc3ViIGV4
Y2VycHRTdHJpbmcoJCkKLXsKLSAgICBteSAoJHRleHQpID0gQF87Ci0gICAgCi0gICAgbXkgJGxl
bmd0aCA9IDI1OwotICAgIAotICAgIG15ICRzaG9ydGVuZWQgPSBzdWJzdHIoJHRleHQsIDAsICRs
ZW5ndGgpOwotICAgICRzaG9ydGVuZWQgLj0gIi4uLiIgaWYgKGxlbmd0aCgkdGV4dCkgPiAkbGVu
Z3RoKTsKLSAgICAKLSAgICByZXR1cm4gJHNob3J0ZW5lZDsKLX0KLQotbXkgJGdpdF9wYXRjaCA9
IDw8RU5EOwotZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGli
bGVCb3hEYXRhLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0
YS5oCi1pbmRleCBmNWQ1ZTc0Li4zYjZhYTkyIDEwMDY0NAotLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAotKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAotQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgot
RU5ECi0KLW15ICRzdm5fcGF0Y2ggPSA8PEVORDsKLUluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCi1pbmRleCBmNWQ1ZTc0Li4zYjZhYTkyIDEwMDY0
NAotLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgKLSsr
KyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCi1AQCAtNDcs
NyArNDcsNiBAQCBwdWJsaWM6Ci1FTkQKLQotbXkgQGdpdExpbmVzID0gc3BsaXQoIlxuIiwgJGdp
dF9wYXRjaCk7Ci1teSBAc3ZuTGluZXMgPSBzcGxpdCgiXG4iLCAkc3ZuX3BhdGNoKTsKLQotIyBO
ZXcgdGVzdDogY2hlY2sgZWFjaCBnaXQgaGVhZGVyIGxpbmUgd2l0aCBkaWZmZXJlbnQgbGluZSBl
bmRpbmdzCi1teSAkdGl0bGVIZWFkZXIgPSAiZ2l0ZGlmZjJzdm5kaWZmOiAiOwotCi1teSBAbGlu
ZUVuZGluZ1BhaXJzID0gKCAjIGRpc3BsYXkgbmFtZSwgdmFsdWUKLSAgICBbIiIsICIiXSwKLSAg
ICBbIlxcbiIsICJcbiJdLAotICAgIFsiXFxyXFxuIiwgIlxyXG4iXSwKLSk7Ci0KLWZvciAobXkg
JGkgPSAwOyAkaSA8IEBnaXRMaW5lczsgJGkrKykgewotICAgIGZvcmVhY2ggbXkgJHBhaXIgKEBs
aW5lRW5kaW5nUGFpcnMpIHsgCi0gICAgICAgIG15ICRnaXRMaW5lID0gJGdpdExpbmVzWyRpXSAu
ICRwYWlyLT5bMV07Ci0gICAgICAgIG15ICRleHBlY3RlZCA9ICRzdm5MaW5lc1skaV0gLiAkcGFp
ci0+WzFdOwotICAgICAgICBteSAkdGl0bGUgPSAkdGl0bGVIZWFkZXIgLiBleGNlcnB0U3RyaW5n
KCRnaXRMaW5lKTsKLSAgICAgICAgJHRpdGxlIC49ICIgW2xpbmUtZW5kOiBcIiRwYWlyLT5bMF1c
Il0iOwotICAgICAgICAKLSAgICAgICAgb2soJGV4cGVjdGVkIGVxIGdpdGRpZmYyc3ZuZGlmZigk
Z2l0TGluZSksICR0aXRsZSk7Ci0gICAgfQotfQotCi0jIE5ldyB0ZXN0Ci1teSAkdGl0bGUgPSAi
Z2l0ZGlmZjJzdm5kaWZmOiBDb252ZXJ0IG1uZW1vbmljIGdpdCBkaWZmIHRvIHN2biBkaWZmIjsK
LQotbXkgQHByZWZpeGVzID0gKAotICAgIHsgJ2EnID0+ICdpJywgJ2InID0+ICd3JyB9LCAjIGdp
dC1kaWZmIChjb21wYXJlcyB0aGUgKGkpbmRleCBhbmQgdGhlICh3KW9yayB0cmVlKQotICAgIHsg
J2EnID0+ICdjJywgJ2InID0+ICd3JyB9LCAjIGdpdC1kaWZmIEhFQUQgKGNvbXBhcmVzIGEgKGMp
b21taXQgYW5kIHRoZSAodylvcmsgdHJlZSkKLSAgICB7ICdhJyA9PiAnYycsICdiJyA9PiAnaScg
fSwgIyBnaXQgZGlmZiAtLWNhY2hlZCAoY29tcGFyZXMgYSAoYylvbW1pdCBhbmQgdGhlIChpKW5k
ZXgpCi0gICAgeyAnYScgPT4gJ28nLCAnYicgPT4gJ3cnIH0sICMgZ2l0LWRpZmYgSEVBRDpmaWxl
MSBmaWxlMiAoY29tcGFyZXMgYW4gKG8pYmplY3QgYW5kIGEgKHcpb3JrIHRyZWUgZW50aXR5KQot
ICAgIHsgJ2EnID0+ICcxJywgJ2InID0+ICcyJyB9LCAjIGdpdCBkaWZmIC0tbm8taW5kZXggYSBi
IChjb21wYXJlcyB0d28gbm9uLWdpdCB0aGluZ3MgKDEpIGFuZCAoMikpCi0pOwotCi1teSAkb3V0
ID0gIiI7Ci0KLWZvcmVhY2ggbXkgJHByZWZpeCAoQHByZWZpeGVzKSB7Ci0gICAgbXkgJG1uZW1v
bmljX3BhdGNoID0gJGdpdF9wYXRjaDsKLSAgICAkbW5lbW9uaWNfcGF0Y2ggPX4gcy8gYVwvLyAk
cHJlZml4LT57J2EnfVwvL2c7Ci0gICAgJG1uZW1vbmljX3BhdGNoID1+IHMvIGJcLy8gJHByZWZp
eC0+eydiJ31cLy9nOwotCi0gICAgJG91dCA9ICIiOwotICAgIGZvcmVhY2ggbXkgJGxpbmUgKHNw
bGl0KCdcbicsICRtbmVtb25pY19wYXRjaCkpIHsKLSAgICAgICAgJG91dCAuPSBnaXRkaWZmMnN2
bmRpZmYoJGxpbmUpIC4gIlxuIjsKLSAgICB9Ci0KLSAgICBvaygkc3ZuX3BhdGNoIGVxICRvdXQs
ICR0aXRsZSAuICIgKCIgLiAkcHJlZml4LT57J2EnfSAuICIsIiAuICRwcmVmaXgtPnsnYid9IC4g
IikiKTsKLX0KLQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZD
U1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbCBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZIZWFkZXIucGwKaW5kZXggZDJi
OGM5ZS4uZDQ0NmY3NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbAorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBsCkBA
IC0zNiw2NSArMzYsMjEgQEAgdXNlIHdhcm5pbmdzOwogdXNlIFRlc3Q6Ok1vcmU7CiB1c2UgVkNT
VXRpbHM7CiAKLSMgVGhlIGFycmF5IG9mIHRlc3QgY2FzZXMuCisjIFRoZSB1bml0IHRlc3RzIGZv
ciBwYXJzZUdpdERpZmZIZWFkZXIoKSBhbmQgcGFyc2VTdm5EaWZmSGVhZGVyKCkKKyMgYWxyZWFk
eSB0aG9yb3VnaGx5IHRlc3QgcGFyc2luZyBlYWNoIGZvcm1hdC4KKyMKKyMgRm9yIHBhcnNlRGlm
ZkhlYWRlcigpLCBpdCBzaG91bGQgc3VmZmljZSB0byB2ZXJpZnkgdGhhdCAtLSAoMSkgZm9yIGVh
Y2gKKyMgZm9ybWF0LCB0aGUgbWV0aG9kIGNhbiByZXR1cm4gbm9uLXRyaXZpYWwgdmFsdWVzIGJh
Y2sgZm9yIGVhY2gga2V5CisjIHN1cHBvcnRlZCBieSB0aGF0IGZvcm1hdCAoZS5nLiAic291cmNl
UmV2aXNpb24iIGZvciBTVk4pLCAoMikgdGhlIG1ldGhvZAorIyBjb3JyZWN0bHkgc2V0cyBkZWZh
dWx0IHZhbHVlcyB3aGVuIHNwZWNpZmljIGtleS12YWx1ZXMgYXJlIG5vdCBzZXQKKyMgKGUuZy4g
dW5kZWYgZm9yICJzb3VyY2VSZXZpc2lvbiIgZm9yIEdpdCksIGFuZCAoMykga2V5LXZhbHVlcyB1
bmlxdWUgdG8KKyMgdGhpcyBtZXRob2QgYXJlIHNldCBjb3JyZWN0bHkgKGUuZy4gInNjbUZvcm1h
dCIpLgogbXkgQHRlc3RDYXNlSGFzaFJlZnMgPSAoCi17Ci0gICAgIyBOZXcgdGVzdAotICAgIGRp
ZmZOYW1lID0+ICJTVk46IHNpbXBsZSIsCi0gICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCi1JbmRl
eDogV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQotPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFdlYktp
dFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHJldmlzaW9uIDUzMDA0KQotKysrIFdlYktpdFRv
b2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHdvcmtpbmcgY29weSkKLUBAIC0zMiw2ICszMiw3IEBA
IHVzZSBzdHJpY3Q7Ci0gdXNlIHdhcm5pbmdzOwotRU5ECi0gICAgZXhwZWN0ZWRSZXR1cm4gPT4g
WwotewotICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gPDwnRU5EJywKLUluZGV4OiBXZWJLaXRUb29s
cy9TY3JpcHRzL1ZDU1V0aWxzLnBtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy9WQ1NVdGlscy5wbQkocmV2aXNpb24gNTMwMDQpCi0rKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9W
Q1NVdGlscy5wbQkod29ya2luZyBjb3B5KQotRU5ECi0gICAgY29waWVkRnJvbVBhdGggPT4gdW5k
ZWYsCi0gICAgaW5kZXhQYXRoID0+ICJXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtIiwK
LSAgICBzY21Gb3JtYXQgPT4gInN2biIsCi0gICAgc291cmNlUmV2aXNpb24gPT4gIjUzMDA0IiwK
LX0sCi0iQEAgLTMyLDYgKzMyLDcgQEAgdXNlIHN0cmljdDtcbiJdLAotICAgIGV4cGVjdGVkTmV4
dExpbmUgPT4gIiB1c2Ugd2FybmluZ3M7XG4iLAotfSwKLXsKLSAgICAjIE5ldyB0ZXN0Ci0gICAg
ZGlmZk5hbWUgPT4gIlNWTjogbmV3IGZpbGUiLAotICAgIGlucHV0VGV4dCA9PiA8PCdFTkQnLAot
SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9w
YXJzZURpZmZIZWFkZXIucGwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBsCShyZXZpc2lvbiAw
KQotKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9w
YXJzZURpZmZIZWFkZXIucGwJKHJldmlzaW9uIDApCi1AQCAtMCwwICsxLDI2MiBAQAotKyMhL3Vz
ci9iaW4vcGVybCAtdwotRU5ECi0gICAgZXhwZWN0ZWRSZXR1cm4gPT4gWwotewotICAgIHN2bkNv
bnZlcnRlZFRleHQgPT4gPDwnRU5EJywKLUluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBsCi09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNl
RGlmZkhlYWRlci5wbAkocmV2aXNpb24gMCkKLSsrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBsCShyZXZpc2lvbiAwKQot
RU5ECi0gICAgY29waWVkRnJvbVBhdGggPT4gdW5kZWYsCi0gICAgaW5kZXhQYXRoID0+ICJXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVh
ZGVyLnBsIiwKLSAgICBzY21Gb3JtYXQgPT4gInN2biIsCi0gICAgc291cmNlUmV2aXNpb24gPT4g
dW5kZWYsCi19LAotIkBAIC0wLDAgKzEsMjYyIEBAXG4iXSwKLSAgICBleHBlY3RlZE5leHRMaW5l
ID0+ICIrIyEvdXNyL2Jpbi9wZXJsIC13XG4iLAotfSwKLXsKLSAgICAjIE5ldyB0ZXN0Ci0gICAg
ZGlmZk5hbWUgPT4gIlNWTjogY29weSIsCisjIyMjCisjICAgIFNWTiB0ZXN0IGNhc2VzCisjIwor
eyAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiU1ZOOiBub24tdHJpdmlhbCBjb3BpZWRG
cm9tUGF0aCBhbmQgc291cmNlUmV2aXNpb24gdmFsdWVzIiwKICAgICBpbnB1dFRleHQgPT4gPDwn
RU5EJywKIEluZGV4OiBpbmRleF9wYXRoLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMTIsNjAgKzY4LDcg
QEAgSW5kZXg6IGluZGV4X3BhdGgucHkKICsrKyBpbmRleF9wYXRoLnB5CSh3b3JraW5nIGNvcHkp
CiBFTkQKICAgICBjb3BpZWRGcm9tUGF0aCA9PiAiY29waWVkX2Zyb21fcGF0aC5weSIsCi0gICAg
aW5kZXhQYXRoID0+ICJpbmRleF9wYXRoLnB5IiwKLSAgICBzY21Gb3JtYXQgPT4gInN2biIsCi0g
ICAgc291cmNlUmV2aXNpb24gPT4gNTMwNDgsCi19LAotIkBAIC0wLDAgKzEsNyBAQFxuIl0sCi0g
ICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiKyMgUHl0aG9uIGZpbGUuLi5cbiIsCi19LAotewotICAg
ICMgTmV3IHRlc3QKLSAgICBkaWZmTmFtZSA9PiAiU1ZOOiBcXHJcXG4gbGluZXMiLAotICAgIGlu
cHV0VGV4dCA9PiA8PEVORCwgIyBObyBzaW5nbGUgcXVvdGVzIHRvIGFsbG93IGludGVycG9sYXRp
b24gb2YgIlxyIgotSW5kZXg6IGluZGV4X3BhdGgucHlccgotPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyCi0tLS0gaW5k
ZXhfcGF0aC5weQkocmV2aXNpb24gNTMwNDgpCShmcm9tIGNvcGllZF9mcm9tX3BhdGgucHk6NTMw
NDgpXHIKLSsrKyBpbmRleF9wYXRoLnB5CSh3b3JraW5nIGNvcHkpXHIKLUBAIC0wLDAgKzEsNyBA
QFxyCi0rIyBQeXRob24gZmlsZS4uLlxyCi1FTkQKLSAgICBleHBlY3RlZFJldHVybiA9PiBbCi17
Ci0gICAgc3ZuQ29udmVydGVkVGV4dCA9PiA8PEVORCwgIyBObyBzaW5nbGUgcXVvdGVzIHRvIGFs
bG93IGludGVycG9sYXRpb24gb2YgIlxyIgotSW5kZXg6IGluZGV4X3BhdGgucHlccgotPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PVxyCi0tLS0gaW5kZXhfcGF0aC5weQkocmV2aXNpb24gNTMwNDgpCShmcm9tIGNvcGllZF9m
cm9tX3BhdGgucHk6NTMwNDgpXHIKLSsrKyBpbmRleF9wYXRoLnB5CSh3b3JraW5nIGNvcHkpXHIK
LUVORAotICAgIGNvcGllZEZyb21QYXRoID0+ICJjb3BpZWRfZnJvbV9wYXRoLnB5IiwKLSAgICBp
bmRleFBhdGggPT4gImluZGV4X3BhdGgucHkiLAotICAgIHNjbUZvcm1hdCA9PiAic3ZuIiwKLSAg
ICBzb3VyY2VSZXZpc2lvbiA9PiA1MzA0OCwKLX0sCi0iQEAgLTAsMCArMSw3IEBAXHJcbiJdLAot
ICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gIisjIFB5dGhvbiBmaWxlLi4uXHJcbiIsCi19LAotewot
ICAgICMgTmV3IHRlc3QKLSAgICBkaWZmTmFtZSA9PiAiU1ZOOiBwYXRoIGNvcnJlY3Rpb25zIiwK
LSAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKLUluZGV4OiBpbmRleF9wYXRoLnB5Ci09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLS0gYmFkX3BhdGgJKHJldmlzaW9uIDUzMDQ4KQkoZnJvbSBjb3BpZWRfZnJvbV9wYXRo
LnB5OjUzMDQ4KQotKysrIGJhZF9wYXRoCSh3b3JraW5nIGNvcHkpCi1AQCAtMCwwICsxLDcgQEAK
LSsjIFB5dGhvbiBmaWxlLi4uCi1FTkQKLSAgICBleHBlY3RlZFJldHVybiA9PiBbCi17Ci0gICAg
c3ZuQ29udmVydGVkVGV4dCA9PiA8PCdFTkQnLAotSW5kZXg6IGluZGV4X3BhdGgucHkKLT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tLSBpbmRleF9wYXRoLnB5CShyZXZpc2lvbiA1MzA0OCkJKGZyb20gY29waWVkX2Zy
b21fcGF0aC5weTo1MzA0OCkKLSsrKyBpbmRleF9wYXRoLnB5CSh3b3JraW5nIGNvcHkpCi1FTkQK
LSAgICBjb3BpZWRGcm9tUGF0aCA9PiAiY29waWVkX2Zyb21fcGF0aC5weSIsCisgICAgZXhlY3V0
YWJsZUJpdERlbHRhID0+IDAsCiAgICAgaW5kZXhQYXRoID0+ICJpbmRleF9wYXRoLnB5IiwKICAg
ICBzY21Gb3JtYXQgPT4gInN2biIsCiAgICAgc291cmNlUmV2aXNpb24gPT4gNTMwNDgsCkBAIC0x
NzYsMTU4ICs3OSwyOSBAQCBFTkQKICMjIyMKICMgICAgR2l0IHRlc3QgY2FzZXMKICMjCi17Ci0g
ICAgIyBOZXcgdGVzdAotICAgIGRpZmZOYW1lID0+ICJHaXQ6IHNpbXBsZSIsCit7ICAgIyBOZXcg
dGVzdCBjYXNlCisgICAgZGlmZk5hbWUgPT4gIkdpdDogTm9uLXplcm8gZXhlY3V0YWJsZSBiaXQi
LAogICAgIGlucHV0VGV4dCA9PiA8PCdFTkQnLAotZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCi1pbmRleCBmNWQ1ZTc0Li4zYjZhYTkyIDEwMDY0NAot
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAotKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAotQEAgLTQ3
LDcgKzQ3LDYgQEAgcHVibGljOgorZGlmZiAtLWdpdCBhL2Zvby5leGUgYi9mb28uZXhlCitvbGQg
bW9kZSAxMDA2NDQKK25ldyBtb2RlIDEwMDc1NQogRU5ECiAgICAgZXhwZWN0ZWRSZXR1cm4gPT4g
WwogewogICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gPDwnRU5EJywKLUluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCi1pbmRleCBmNWQ1ZTc0Li4zYjZh
YTkyIDEwMDY0NAotLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hE
YXRhLmgKLSsrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5o
CitJbmRleDogZm9vLmV4ZQorb2xkIG1vZGUgMTAwNjQ0CituZXcgbW9kZSAxMDA3NTUKIEVORAog
ICAgIGNvcGllZEZyb21QYXRoID0+IHVuZGVmLAotICAgIGluZGV4UGF0aCA9PiAiV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaCIsCisgICAgZXhlY3V0YWJsZUJp
dERlbHRhID0+IDEsCisgICAgaW5kZXhQYXRoID0+ICJmb28uZXhlIiwKICAgICBzY21Gb3JtYXQg
PT4gImdpdCIsCiAgICAgc291cmNlUmV2aXNpb24gPT4gdW5kZWYsCiB9LAotIkBAIC00Nyw3ICs0
Nyw2IEBAIHB1YmxpYzpcbiJdLAordW5kZWZdLAogICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5k
ZWYsCiB9LAotewotICAgICMgTmV3IHRlc3QKLSAgICBkaWZmTmFtZSA9PiAiR2l0OiBuZXcgZmls
ZSIsCi0gICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCi1kaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtaW5hY3RpdmUtY2xvc3VyZS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtaW5hY3RpdmUtY2xv
c3VyZS5odG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uM2M5ZjExNAot
LS0tIC9kZXYvbnVsbAotKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0
ZW5lci94c3MtaW5hY3RpdmUtY2xvc3VyZS5odG1sCi1AQCAtMCwwICsxLDM0IEBACi0rPGh0bWw+
Ci1FTkQKLSAgICBleHBlY3RlZFJldHVybiA9PiBbCi17Ci0gICAgc3ZuQ29udmVydGVkVGV4dCA9
PiA8PCdFTkQnLAotSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVu
ZXIveHNzLWluYWN0aXZlLWNsb3N1cmUuaHRtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4
IDAwMDAwMDAuLjNjOWYxMTQKLS0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xp
c3RlbmVyL3hzcy1pbmFjdGl2ZS1jbG9zdXJlLmh0bWwKLSsrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1pbmFjdGl2ZS1jbG9zdXJlLmh0bWwKLUVORAotICAg
IGNvcGllZEZyb21QYXRoID0+IHVuZGVmLAotICAgIGluZGV4UGF0aCA9PiAiTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtaW5hY3RpdmUtY2xvc3VyZS5odG1sIiwK
LSAgICBzY21Gb3JtYXQgPT4gImdpdCIsCi0gICAgc291cmNlUmV2aXNpb24gPT4gdW5kZWYsCi19
LAotIkBAIC0wLDAgKzEsMzQgQEBcbiJdLAotICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gIis8aHRt
bD5cbiIsCi19LAotIyMjIwotIyAgICBCaW5hcnkgdGVzdCBjYXNlcwotIyMKLXsKLSAgICAjIE5l
dyB0ZXN0Ci0gICAgZGlmZk5hbWUgPT4gIlNWTjogYmluYXJ5IGZpbGUiLAotICAgIGlucHV0VGV4
dCA9PiA8PCdFTkQnLAotSW5kZXg6IHRlc3RfZmlsZS5zd2YKLT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUNhbm5vdCBk
aXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgotc3ZuOm1pbWUtdHlwZSA9IGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQotCi1Qcm9wZXJ0eSBjaGFuZ2VzIG9uOiB0ZXN0X2ZpbGUu
c3dmCi1fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCi1OYW1lOiBzdm46bWltZS10eXBlCi0gICArIGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQotCi0KLVExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0Jn
UUVBSlBRREpBPT0KLUVORAotICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKLXsKLSAgICBzdm5Db252
ZXJ0ZWRUZXh0ID0+IDw8J0VORCcsCi1JbmRleDogdGVzdF9maWxlLnN3ZgotPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCi1FTkQKLSAgICBj
b3BpZWRGcm9tUGF0aCA9PiB1bmRlZiwKLSAgICBpbmRleFBhdGggPT4gInRlc3RfZmlsZS5zd2Yi
LAotICAgIHNjbUZvcm1hdCA9PiAic3ZuIiwKLSAgICBzb3VyY2VSZXZpc2lvbiA9PiB1bmRlZiwK
LX0sCi0ic3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVxuIl0sCi0gICAg
ZXhwZWN0ZWROZXh0TGluZSA9PiAiXG4iLAotfSwKLXsKLSAgICAjIE5ldyB0ZXN0Ci0gICAgZGlm
Zk5hbWUgPT4gIkdpdDogYmluYXJ5IGFkZGl0aW9uIiwKLSAgICBpbnB1dFRleHQgPT4gPDwnRU5E
JywKLWRpZmYgLS1naXQgYS9mb28uZ2lmIGIvZm9vLmdpZgotbmV3IGZpbGUgbW9kZSAxMDA2NDQK
LWluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0YTk1MzJl
Nzc5NGZjZDc5MWY2ZjEyMTU3NDA2ZDkwNjAxNTE2OTAKLUdJVCBiaW5hcnkgcGF0Y2gKLWxpdGVy
YWwgNwotT2NtWWV4JnJlRGE7c084KkY5TClCCi0KLWxpdGVyYWwgMAotSGNtVj9kMDAwMDEKLQot
RU5ECi0gICAgZXhwZWN0ZWRSZXR1cm4gPT4gWwotewotICAgIHN2bkNvbnZlcnRlZFRleHQgPT4g
PDwnRU5EJywKLUluZGV4OiBmb28uZ2lmCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRhOTUzMmU3Nzk0ZmNkNzkx
ZjZmMTIxNTc0MDZkOTA2MDE1MTY5MAotR0lUIGJpbmFyeSBwYXRjaAotRU5ECi0gICAgY29waWVk
RnJvbVBhdGggPT4gdW5kZWYsCi0gICAgaW5kZXhQYXRoID0+ICJmb28uZ2lmIiwKLSAgICBzY21G
b3JtYXQgPT4gImdpdCIsCi0gICAgc291cmNlUmV2aXNpb24gPT4gdW5kZWYsCi19LAotImxpdGVy
YWwgN1xuIl0sCi0gICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiT2NtWWV4JnJlRGE7c084KkY5TClC
XG4iLAotfSwKLXsKLSAgICAjIE5ldyB0ZXN0Ci0gICAgZGlmZk5hbWUgPT4gIkdpdDogYmluYXJ5
IGRlbGV0aW9uIiwKLSAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKLWRpZmYgLS1naXQgYS9mb28u
Z2lmIGIvZm9vLmdpZgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAzMjNmYWUwLi4w
MDAwMDAwCi1HSVQgYmluYXJ5IHBhdGNoCi1saXRlcmFsIDAKLUhjbVY/ZDAwMDAxCi0KLWxpdGVy
YWwgNwotT2NtWWV4JnJlRCQ7c084KkY5TClCCi0KLUVORAotICAgIGV4cGVjdGVkUmV0dXJuID0+
IFsKLXsKLSAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IDw8J0VORCcsCi1JbmRleDogZm9vLmdpZgot
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAzMjNmYWUwLi4wMDAwMDAwCi1HSVQgYmlu
YXJ5IHBhdGNoCi1FTkQKLSAgICBjb3BpZWRGcm9tUGF0aCA9PiB1bmRlZiwKLSAgICBpbmRleFBh
dGggPT4gImZvby5naWYiLAotICAgIHNjbUZvcm1hdCA9PiAiZ2l0IiwKLSAgICBzb3VyY2VSZXZp
c2lvbiA9PiB1bmRlZiwKLX0sCi0ibGl0ZXJhbCAwXG4iXSwKLSAgICBleHBlY3RlZE5leHRMaW5l
ID0+ICJIY21WP2QwMDAwMVxuIiwKLX0sCiApOwogCiBteSAkdGVzdENhc2VzQ291bnQgPSBAdGVz
dENhc2VIYXNoUmVmczsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZVN2bkRpZmZIZWFkZXIucGwgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VTdm5EaWZmSGVhZGVyLnBs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YTQzZGMKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3Qv
cGFyc2VTdm5EaWZmSGVhZGVyLnBsCkBAIC0wLDAgKzEsMjI0IEBACisjIS91c3IvYmluL3Blcmwg
LXcKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjaHJpcy5qZXJkb25l
a0BnbWFpbC5jb20pCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBV
bml0IHRlc3RzIG9mIHBhcnNlRGlmZkhlYWRlcigpLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p
bmdzOworCit1c2UgVGVzdDo6TW9yZTsKK3VzZSBWQ1NVdGlsczsKKworIyBUaGUgYXJyYXkgb2Yg
dGVzdCBjYXNlcy4KK215IEB0ZXN0Q2FzZUhhc2hSZWZzID0gKAoreworICAgICMgTmV3IHRlc3QK
KyAgICBkaWZmTmFtZSA9PiAic2ltcGxlIGRpZmYiLAorICAgIGlucHV0VGV4dCA9PiA8PCdFTkQn
LAorSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0KKz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t
LSBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCShyZXZpc2lvbiA1MzAwNCkKKysrKyBX
ZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCSh3b3JraW5nIGNvcHkpCitAQCAtMzIsNiAr
MzIsNyBAQCB1c2Ugc3RyaWN0OworIHVzZSB3YXJuaW5nczsKK0VORAorICAgIGV4cGVjdGVkUmV0
dXJuID0+IFsKK3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IDw8J0VORCcsCitJbmRleDogV2Vi
S2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFdlYktpdFRvb2xz
L1NjcmlwdHMvVkNTVXRpbHMucG0JKHJldmlzaW9uIDUzMDA0KQorKysrIFdlYktpdFRvb2xzL1Nj
cmlwdHMvVkNTVXRpbHMucG0JKHdvcmtpbmcgY29weSkKK0VORAorICAgIGNvcGllZEZyb21QYXRo
ID0+IHVuZGVmLAorICAgIGluZGV4UGF0aCA9PiAiV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGls
cy5wbSIsCisgICAgc291cmNlUmV2aXNpb24gPT4gIjUzMDA0IiwKK30sCisiQEAgLTMyLDYgKzMy
LDcgQEAgdXNlIHN0cmljdDtcbiJdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gIiB1c2Ugd2Fy
bmluZ3M7XG4iLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIm5ldyBm
aWxlIiwKKyAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKK0luZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBsCis9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CistLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0
ZXN0L3BhcnNlRGlmZkhlYWRlci5wbAkocmV2aXNpb24gMCkKKysrKyBXZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBsCShyZXZp
c2lvbiAwKQorQEAgLTAsMCArMSwyNjIgQEAKKysjIS91c3IvYmluL3BlcmwgLXcKK0VORAorICAg
IGV4cGVjdGVkUmV0dXJuID0+IFsKK3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IDw8J0VORCcs
CitJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0
L3BhcnNlRGlmZkhlYWRlci5wbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZIZWFkZXIucGwJKHJldmlzaW9u
IDApCisrKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0
L3BhcnNlRGlmZkhlYWRlci5wbAkocmV2aXNpb24gMCkKK0VORAorICAgIGNvcGllZEZyb21QYXRo
ID0+IHVuZGVmLAorICAgIGluZGV4UGF0aCA9PiAiV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbCIsCisgICAgc291cmNlUmV2
aXNpb24gPT4gdW5kZWYsCit9LAorIkBAIC0wLDAgKzEsMjYyIEBAXG4iXSwKKyAgICBleHBlY3Rl
ZE5leHRMaW5lID0+ICIrIyEvdXNyL2Jpbi9wZXJsIC13XG4iLAorfSwKK3sKKyAgICAjIE5ldyB0
ZXN0CisgICAgZGlmZk5hbWUgPT4gImNvcGllZCBmaWxlIiwKKyAgICBpbnB1dFRleHQgPT4gPDwn
RU5EJywKK0luZGV4OiBpbmRleF9wYXRoLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaW5kZXhfcGF0aC5w
eQkocmV2aXNpb24gNTMwNDgpCShmcm9tIGNvcGllZF9mcm9tX3BhdGgucHk6NTMwNDgpCisrKysg
aW5kZXhfcGF0aC5weQkod29ya2luZyBjb3B5KQorQEAgLTAsMCArMSw3IEBACisrIyBQeXRob24g
ZmlsZS4uLgorRU5ECisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworeworICAgIHN2bkNvbnZlcnRl
ZFRleHQgPT4gPDwnRU5EJywKK0luZGV4OiBpbmRleF9wYXRoLnB5Cis9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g
aW5kZXhfcGF0aC5weQkocmV2aXNpb24gNTMwNDgpCShmcm9tIGNvcGllZF9mcm9tX3BhdGgucHk6
NTMwNDgpCisrKysgaW5kZXhfcGF0aC5weQkod29ya2luZyBjb3B5KQorRU5ECisgICAgY29waWVk
RnJvbVBhdGggPT4gImNvcGllZF9mcm9tX3BhdGgucHkiLAorICAgIGluZGV4UGF0aCA9PiAiaW5k
ZXhfcGF0aC5weSIsCisgICAgc291cmNlUmV2aXNpb24gPT4gNTMwNDgsCit9LAorIkBAIC0wLDAg
KzEsNyBAQFxuIl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiKyMgUHl0aG9uIGZpbGUuLi5c
biIsCit9LAoreworICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiY29udGFpbnMgXFxy
XFxuIGxpbmVzIiwKKyAgICBpbnB1dFRleHQgPT4gPDxFTkQsICMgTm8gc2luZ2xlIHF1b3RlcyB0
byBhbGxvdyBpbnRlcnBvbGF0aW9uIG9mICJcciIKK0luZGV4OiBpbmRleF9wYXRoLnB5XHIKKz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT1ccgorLS0tIGluZGV4X3BhdGgucHkJKHJldmlzaW9uIDUzMDQ4KQkoZnJvbSBjb3Bp
ZWRfZnJvbV9wYXRoLnB5OjUzMDQ4KVxyCisrKysgaW5kZXhfcGF0aC5weQkod29ya2luZyBjb3B5
KVxyCitAQCAtMCwwICsxLDcgQEBccgorKyMgUHl0aG9uIGZpbGUuLi5ccgorRU5ECisgICAgZXhw
ZWN0ZWRSZXR1cm4gPT4gWworeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gPDxFTkQsICMgTm8g
c2luZ2xlIHF1b3RlcyB0byBhbGxvdyBpbnRlcnBvbGF0aW9uIG9mICJcciIKK0luZGV4OiBpbmRl
eF9wYXRoLnB5XHIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT1ccgorLS0tIGluZGV4X3BhdGgucHkJKHJldmlzaW9uIDUz
MDQ4KQkoZnJvbSBjb3BpZWRfZnJvbV9wYXRoLnB5OjUzMDQ4KVxyCisrKysgaW5kZXhfcGF0aC5w
eQkod29ya2luZyBjb3B5KVxyCitFTkQKKyAgICBjb3BpZWRGcm9tUGF0aCA9PiAiY29waWVkX2Zy
b21fcGF0aC5weSIsCisgICAgaW5kZXhQYXRoID0+ICJpbmRleF9wYXRoLnB5IiwKKyAgICBzb3Vy
Y2VSZXZpc2lvbiA9PiA1MzA0OCwKK30sCisiQEAgLTAsMCArMSw3IEBAXHJcbiJdLAorICAgIGV4
cGVjdGVkTmV4dExpbmUgPT4gIisjIFB5dGhvbiBmaWxlLi4uXHJcbiIsCit9LAoreworICAgICMg
TmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiY29udGFpbnMgcGF0aCBjb3JyZWN0aW9ucyIsCisg
ICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCitJbmRleDogaW5kZXhfcGF0aC5weQorPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorLS0tIGJhZF9wYXRoCShyZXZpc2lvbiA1MzA0OCkJKGZyb20gY29waWVkX2Zyb21fcGF0aC5w
eTo1MzA0OCkKKysrKyBiYWRfcGF0aAkod29ya2luZyBjb3B5KQorQEAgLTAsMCArMSw3IEBACisr
IyBQeXRob24gZmlsZS4uLgorRU5ECisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworeworICAgIHN2
bkNvbnZlcnRlZFRleHQgPT4gPDwnRU5EJywKK0luZGV4OiBpbmRleF9wYXRoLnB5Cis9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CistLS0gaW5kZXhfcGF0aC5weQkocmV2aXNpb24gNTMwNDgpCShmcm9tIGNvcGllZF9mcm9t
X3BhdGgucHk6NTMwNDgpCisrKysgaW5kZXhfcGF0aC5weQkod29ya2luZyBjb3B5KQorRU5ECisg
ICAgY29waWVkRnJvbVBhdGggPT4gImNvcGllZF9mcm9tX3BhdGgucHkiLAorICAgIGluZGV4UGF0
aCA9PiAiaW5kZXhfcGF0aC5weSIsCisgICAgc291cmNlUmV2aXNpb24gPT4gNTMwNDgsCit9LAor
IkBAIC0wLDAgKzEsNyBAQFxuIl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiKyMgUHl0aG9u
IGZpbGUuLi5cbiIsCit9LAorIyMjIworIyAgICBCaW5hcnkgdGVzdCBjYXNlcworIyMKK3sKKyAg
ICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gImJpbmFyeSBmaWxlIiwKKyAgICBpbnB1dFRl
eHQgPT4gPDwnRU5EJywKK0luZGV4OiB0ZXN0X2ZpbGUuc3dmCis9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4KK3N2bjptaW1lLXR5cGUgPSBh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKworUHJvcGVydHkgY2hhbmdlcyBvbjogdGVzdF9maWxl
LnN3ZgorX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXworTmFtZTogc3ZuOm1pbWUtdHlwZQorICAgKyBhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0KKworCitRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdC
Z1FFQUpQUURKQT09CitFTkQKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCit7CisgICAgc3ZuQ29u
dmVydGVkVGV4dCA9PiA8PCdFTkQnLAorSW5kZXg6IHRlc3RfZmlsZS5zd2YKKz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
K0Nhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgorRU5ECisgICAg
Y29waWVkRnJvbVBhdGggPT4gdW5kZWYsCisgICAgaW5kZXhQYXRoID0+ICJ0ZXN0X2ZpbGUuc3dm
IiwKKyAgICBzb3VyY2VSZXZpc2lvbiA9PiB1bmRlZiwKK30sCisic3ZuOm1pbWUtdHlwZSA9IGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbVxuIl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiXG4i
LAorfSwKKyk7CisKK215ICR0ZXN0Q2FzZXNDb3VudCA9IEB0ZXN0Q2FzZUhhc2hSZWZzOworcGxh
bih0ZXN0cyA9PiAyICogJHRlc3RDYXNlc0NvdW50KTsgIyBUb3RhbCBudW1iZXIgb2YgYXNzZXJ0
aW9ucy4KKworZm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZzKSB7CisgICAg
bXkgJHRlc3ROYW1lU3RhcnQgPSAicGFyc2VTdm5EaWZmSGVhZGVyKCk6ICR0ZXN0Q2FzZS0+e2Rp
ZmZOYW1lfTogY29tcGFyaW5nIjsKKworICAgIG15ICRmaWxlSGFuZGxlOworICAgIG9wZW4oJGZp
bGVIYW5kbGUsICI8IiwgXCR0ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOworICAgIG15ICRsaW5lID0g
PCRmaWxlSGFuZGxlPjsKKworICAgIG15IEBnb3QgPSBWQ1NVdGlsczo6cGFyc2VTdm5EaWZmSGVh
ZGVyKCRmaWxlSGFuZGxlLCAkbGluZSk7CisgICAgbXkgJGV4cGVjdGVkUmV0dXJuID0gJHRlc3RD
YXNlLT57ZXhwZWN0ZWRSZXR1cm59OworCisgICAgaXNfZGVlcGx5KFxAZ290LCAkZXhwZWN0ZWRS
ZXR1cm4sICIkdGVzdE5hbWVTdGFydCByZXR1cm4gdmFsdWUuIik7CisKKyAgICBteSAkZ290TmV4
dExpbmUgPSA8JGZpbGVIYW5kbGU+OworICAgIGlzKCRnb3ROZXh0TGluZSwgJHRlc3RDYXNlLT57
ZXhwZWN0ZWROZXh0TGluZX0sICAiJHRlc3ROYW1lU3RhcnQgbmV4dCByZWFkIGxpbmUuIik7Cit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54959</attachid>
            <date>2010-05-03 14:07:09 -0700</date>
            <delta_ts>2010-05-04 00:56:42 -0700</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>_patch-38454-2.diff</filename>
            <type>text/plain</type>
            <size>32705</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiM2QyMTExLi5jNjcwMzVkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAKIDIwMTAtMDUt
MDMgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBWQ1NVdGlscy5wbSdz
IHBhcnNlRGlmZkhlYWRlcigpIHRvIGNhbGwgdGhlIG5ldworICAgICAgICBwYXJzZUdpdERpZmZI
ZWFkZXIoKSBtZXRob2QuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4NDU0CisKKyAgICAgICAgVGhpcyByZXZpc2lvbiBtYWtlcyBtb3JlIHByb2dy
ZXNzIHRvd2FyZHMgYWRkaW5nIGV4ZWN1dGFibGUtYml0CisgICAgICAgIHN1cHBvcnQgdG8gc3Zu
LWFwcGx5IGFuZCBzdm4tdW5hcHBseS4gIEl0IGFsc28gbWFrZXMgbW9yZSBwcm9ncmVzcworICAg
ICAgICB0b3dhcmRzIHJlZmFjdG9yaW5nIHRoZSBjb2RlIGludG8gYSBtb3JlIG1haW50YWluYWJs
ZSBmb3JtLgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbToKKyAgICAgICAgICAtIFJl
bW92ZWQgZ2l0ZGlmZjJzdm5kaWZmKCkuCisgICAgICAgICAgLSBSZW1vdmVkIHRoZSBHaXQtc3Bl
Y2lmaWMgbG9naWMgZnJvbSBwYXJzZURpZmZIZWFkZXIoKSBhbmQKKyAgICAgICAgICAgIHJlbmFt
ZWQgaXQgcGFyc2VTdm5EaWZmSGVhZGVyKCkuCisgICAgICAgICAgLSBBZGRlZCBhIG5ldyBwYXJz
ZURpZmZIZWFkZXIoKSBzdWJyb3V0aW5lIHdoaWNoIGNhbGxzCisgICAgICAgICAgICBwYXJzZVN2
bkRpZmZIZWFkZXIoKSBvciBwYXJzZUdpdERpZmZIZWFkZXIoKSBkZXBlbmRpbmcgb24KKyAgICAg
ICAgICAgIHRoZSBmb3JtYXQgb2YgdGhlIGZpcnN0IGhlYWRlciBsaW5lLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2dpdGRpZmYyc3ZuZGlmZi5wbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3Qv
cGFyc2VEaWZmSGVhZGVyLnBsOgorICAgICAgICAgIC0gUmVtb3ZlZCBtb3N0IG9mIHRoZSB0ZXN0
IGNhc2VzIHNpbmNlIHRoZXNlIGNhc2VzIGFyZSBub3cKKyAgICAgICAgICAgIGNvdmVyZWQgYnkg
dGhlIHVuaXQgdGVzdHMgZm9yIHBhcnNlU3ZuRGlmZkhlYWRlcigpIGFuZAorICAgICAgICAgICAg
cGFyc2VHaXREaWZmSGVhZGVyKCkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNT
VXRpbHNfdW5pdHRlc3QvcGFyc2VTdm5EaWZmSGVhZGVyLnBsOiBBZGRlZC4KKyAgICAgICAgICAt
IENvcGllZCB0aGUgU1ZOIHVuaXQgdGVzdHMgZnJvbSBwYXJzZURpZmZIZWFkZXIucGwgYW5kIHVw
ZGF0ZWQKKyAgICAgICAgICAgIHRoZW0gYXMgbmVjZXNzYXJ5LgorCisyMDEwLTA1LTAzICBDaHJp
cyBKZXJkb25layAgPGNqZXJkb25la0B3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbmllbCBCYXRlcy4KIAogICAgICAgICBBZGRlZCBhIHBhcnNlR2l0RGlmZkhlYWRlcigpIHN1
YnJvdXRpbmUgdG8gVkNTVXRpbHMucG0gdGhhdApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9WQ1NVdGlscy5wbSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0KaW5kZXgg
NDRjZTQ1OC4uZWU5Y2Q2NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGls
cy5wbQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCkBAIC00OTAsOTMgKzQ5
MCw1NyBAQCBzdWIgcGFyc2VHaXREaWZmSGVhZGVyKCQkKQogICAgIHJldHVybiAoXCVoZWFkZXIs
ICRfKTsKIH0KIAotIyBDb252ZXJ0IHNvbWUgbGluZXMgb2YgYSBnaXQtZm9ybWF0dGVkIHBhdGNo
IHRvIFNWTiBmb3JtYXQsIHdoaWxlCi0jIHByZXNlcnZpbmcgYW55IGVuZC1vZi1saW5lIGNoYXJh
Y3RlcnMuCi0jCi0jIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdW5jb252ZXJ0ZWQg
bGluZXMgdW5jaGFuZ2VkIC0tIGZvcgotIyBleGFtcGxlIEdpdC1zcGVjaWZpYyBsaW5lcyB0aGF0
IG1heSBub3QgaGF2ZSBhbiBTVk4gYW5hbG9ndWUuICBJbgotIyBwYXJ0aWN1bGFyLCBhcHBseWlu
ZyB0aGlzIGZ1bmN0aW9uIHRvIHRoZSBsaW5lcyBvZiBhIEdpdCBwYXRjaCB3aWxsIG5vdAotIyBu
ZWNlc3NhcmlseSByZXN1bHQgaW4gYW4gU1ZOLWZvcm1hdHRlZCBwYXRjaC4KLXN1YiBnaXRkaWZm
MnN2bmRpZmYoJCkKLXsKLSAgICAkXyA9IHNoaWZ0IEBfOwotCi0gICAgaWYgKG0jXmRpZmYgLS1n
aXQgXHcvKC4rKSBcdy8oW15cclxuXSspIykgewotICAgICAgICByZXR1cm4gIkluZGV4OiAkMSRQ
T1NUTUFUQ0giOwotICAgIH0KLSAgICBpZiAobSNeLS0tIFx3LyhbXlxyXG5dKykjKSB7Ci0gICAg
ICAgIHJldHVybiAiLS0tICQxJFBPU1RNQVRDSCI7Ci0gICAgfQotICAgIGlmIChtI15cK1wrXCsg
XHcvKFteXHJcbl0rKSMpIHsKLSAgICAgICAgcmV0dXJuICIrKysgJDEkUE9TVE1BVENIIjsKLSAg
ICB9Ci0gICAgcmV0dXJuICRfOyAjIEFsbG93ICJ1bnJlY29nbml6ZWQiIGxpbmVzIHRvIHBhc3Mg
dGhyb3VnaC4KLX0KLQotIyBQYXJzZSB0aGUgbmV4dCBkaWZmIGhlYWRlciBmcm9tIHRoZSBnaXZl
biBmaWxlIGhhbmRsZSwgYW5kIGFkdmFuY2UKLSMgdGhlIGZpbGUgaGFuZGxlIHNvIHRoZSBsYXN0
IGxpbmUgcmVhZCBpcyB0aGUgZmlyc3QgbGluZSBhZnRlciB0aGUKLSMgcGFyc2VkIGhlYWRlciBi
bG9jay4KKyMgUGFyc2UgdGhlIG5leHQgU1ZOIGRpZmYgaGVhZGVyIGZyb20gdGhlIGdpdmVuIGZp
bGUgaGFuZGxlLCBhbmQgYWR2YW5jZQorIyB0aGUgaGFuZGxlIHNvIHRoZSBsYXN0IGxpbmUgcmVh
ZCBpcyB0aGUgZmlyc3QgbGluZSBhZnRlciB0aGUgaGVhZGVyLgogIwotIyBUaGlzIHN1YnJvdXRp
bmUgZGllcyBpZiBnaXZlbiBsZWFkaW5nIGp1bmsgb3IgaWYgdGhlIGVuZCBvZiB0aGUgaGVhZGVy
Ci0jIGJsb2NrIGNvdWxkIG5vdCBiZSBkZXRlY3RlZC4gVGhlIGxhc3QgbGluZSBvZiBhIGhlYWRl
ciBibG9jayBpcyBhCi0jIGxpbmUgYmVnaW5uaW5nIHdpdGggIisrKyIuCisjIFRoaXMgc3Vicm91
dGluZSBkaWVzIGlmIGdpdmVuIGxlYWRpbmcganVuayBvciBpZiBpdCBjb3VsZCBub3QgZGV0ZWN0
CisjIHRoZSBlbmQgb2YgdGhlIGhlYWRlciBibG9jay4KICMKICMgQXJnczoKLSMgICAkZmlsZUhh
bmRsZTogYWR2YW5jZWQgc28gdGhlIGxhc3QgbGluZSByZWFkIGlzIHRoZSBmaXJzdCBsaW5lIG9m
IHRoZQotIyAgICAgICAgICAgICAgICBuZXh0IGRpZmYgaGVhZGVyLiBGb3IgU1ZOLWZvcm1hdHRl
ZCBkaWZmcywgdGhpcyBpcyB0aGUKLSMgICAgICAgICAgICAgICAgIkluZGV4OiIgbGluZS4KKyMg
ICAkZmlsZUhhbmRsZTogYWR2YW5jZWQgc28gdGhlIGxhc3QgbGluZSByZWFkIGZyb20gdGhlIGhh
bmRsZSBpcyB0aGUgZmlyc3QKKyMgICAgICAgICAgICAgICAgbGluZSBvZiB0aGUgaGVhZGVyIHRv
IHBhcnNlLiAgVGhpcyBzaG91bGQgYmUgYSBsaW5lCisjICAgICAgICAgICAgICAgIGJlZ2lubmlu
ZyB3aXRoICJJbmRleDoiLgogIyAgICRsaW5lOiB0aGUgbGluZSBsYXN0IHJlYWQgZnJvbSAkZmls
ZUhhbmRsZQogIwogIyBSZXR1cm5zICgkaGVhZGVySGFzaFJlZiwgJGxhc3RSZWFkTGluZSk6Ci0j
ICAgJGhlYWRlckhhc2hSZWY6IGEgaGFzaCByZWZlcmVuY2UgcmVwcmVzZW50aW5nIGEgZGlmZiBo
ZWFkZXIKKyMgICAkaGVhZGVySGFzaFJlZjogYSBoYXNoIHJlZmVyZW5jZSByZXByZXNlbnRpbmcg
YSBkaWZmIGhlYWRlciwgYXMgZm9sbG93cy0tCiAjICAgICBjb3BpZWRGcm9tUGF0aDogaWYgYSBm
aWxlIGNvcHksIHRoZSBwYXRoIGZyb20gd2hpY2ggdGhlIGZpbGUgd2FzCiAjICAgICAgICAgICAg
ICAgICAgICAgY29waWVkLiBPdGhlcndpc2UsIHVuZGVmaW5lZC4KICMgICAgIGluZGV4UGF0aDog
dGhlIHBhdGggaW4gdGhlICJJbmRleDoiIGxpbmUuCi0jICAgICBzY21Gb3JtYXQ6IFRoZSBzdHJp
bmcgImdpdCIgb3IgInN2biIgZGVwZW5kaW5nIG9uIHRoZSBmb3JtYXQuCiAjICAgICBzb3VyY2VS
ZXZpc2lvbjogdGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgc291cmNlLiBUaGlzIGlzIHRoZSBz
YW1lCiAjICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIHJldmlzaW9uIG51bWJlciB0aGUgZmls
ZSB3YXMgY29waWVkIGZyb20sIGluCiAjICAgICAgICAgICAgICAgICAgICAgdGhlIGNhc2Ugb2Yg
YSBmaWxlIGNvcHkuCi0jICAgICBzdm5Db252ZXJ0ZWRUZXh0OiB0aGUgaGVhZGVyIHRleHQgd2l0
aCBzb21lIGxpbmVzIGNvbnZlcnRlZCB0byBTVk4KLSMgICAgICAgICAgICAgICAgICAgICAgIGZv
cm1hdC4gIEdpdC1zcGVjaWZpYyBsaW5lcyBhcmUgcHJlc2VydmVkLgotIyAgICRsYXN0UmVhZExp
bmU6IHRoZSBsaW5lIGxhc3QgcmVhZCBmcm9tICRmaWxlSGFuZGxlLiBUaGlzIGlzIHRoZSBmaXJz
dAotIyAgICAgICAgICAgICAgICAgIGxpbmUgYWZ0ZXIgdGhlIGhlYWRlciBlbmRpbmcuCi1zdWIg
cGFyc2VEaWZmSGVhZGVyKCQkKQorIyAgICAgc3ZuQ29udmVydGVkVGV4dDogdGhlIGhlYWRlciB0
ZXh0IGNvbnZlcnRlZCB0byBhIGhlYWRlciB3aXRoIHRoZSBwYXRocworIyAgICAgICAgICAgICAg
ICAgICAgICAgaW4gc29tZSBsaW5lcyBjb3JyZWN0ZWQuCisjICAgJGxhc3RSZWFkTGluZTogdGhl
IGxpbmUgbGFzdCByZWFkIGZyb20gJGZpbGVIYW5kbGUuCitzdWIgcGFyc2VTdm5EaWZmSGVhZGVy
KCQkKQogewogICAgIG15ICgkZmlsZUhhbmRsZSwgJGxpbmUpID0gQF87CiAKLSAgICBteSAkZmls
dGVyOwotICAgIGlmICgkbGluZSA9fiBtI15kaWZmIC0tZ2l0ICMpIHsKLSAgICAgICAgIyBGSVhN
RTogRGVsZXRlIHRoZSBnaXRkaWZmMnN2bmRpZmYoKSBzdWJyb3V0aW5lIGFuZCBjYWxsCi0gICAg
ICAgICMgICAgICAgIHBhcnNlR2l0RGlmZkhlYWRlcigpIGluc3RlYWQuCi0gICAgICAgICRmaWx0
ZXIgPSBcJmdpdGRpZmYyc3ZuZGlmZjsKLSAgICB9Ci0gICAgJGxpbmUgPSAmJGZpbHRlcigkbGlu
ZSkgaWYgJGZpbHRlcjsKKyAgICAkXyA9ICRsaW5lOwogCi0gICAgbXkgJGluZGV4UGF0aDsKLSAg
ICBpZiAoJGxpbmUgPX4gL15JbmRleDogKFteXHJcbl0rKS8pIHsKLSAgICAgICAgJGluZGV4UGF0
aCA9ICQxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRpZSgiQ291bGQgbm90IHBhcnNlIGZpcnN0
IGxpbmUgb2YgZGlmZiBoZWFkZXI6IFwiJGxpbmVcIi4iKTsKLSAgICB9CisgICAgbXkgJGhlYWRl
clN0YXJ0UmVnRXggPSBxci9eSW5kZXg6IC87CiAKLSAgICBteSAlaGVhZGVyOworICAgIGlmICgh
LyRoZWFkZXJTdGFydFJlZ0V4LykgeworICAgICAgICBkaWUoIkZpcnN0IGxpbmUgb2YgU1ZOIGRp
ZmYgZG9lcyBub3QgYmVnaW4gd2l0aCBcIkluZGV4IFwiOiBcIiRfXCIiKTsKKyAgICB9CiAKICAg
ICBteSAkY29waWVkRnJvbVBhdGg7CiAgICAgbXkgJGZvdW5kSGVhZGVyRW5kaW5nOwotICAgIG15
ICRsYXN0UmVhZExpbmU7IAorICAgIG15ICRpbmRleFBhdGg7CiAgICAgbXkgJHNvdXJjZVJldmlz
aW9uOwotICAgIG15ICRzdm5Db252ZXJ0ZWRUZXh0ID0gJGxpbmU7Ci0gICAgd2hpbGUgKDwkZmls
ZUhhbmRsZT4pIHsKKyAgICBteSAkc3ZuQ29udmVydGVkVGV4dDsKKyAgICB3aGlsZSAoMSkgewog
ICAgICAgICAjIFRlbXBvcmFyaWx5IHN0cmlwIG9mZiBhbnkgZW5kLW9mLWxpbmUgY2hhcmFjdGVy
cyB0byBzaW1wbGlmeQogICAgICAgICAjIHJlZ2V4IG1hdGNoaW5nIGJlbG93LgogICAgICAgICBz
LyhbXG5ccl0rKSQvLzsKICAgICAgICAgbXkgJGVvbCA9ICQxOwogCi0gICAgICAgICRfID0gJiRm
aWx0ZXIoJF8pIGlmICRmaWx0ZXI7Ci0KICAgICAgICAgIyBGaXggcGF0aHMgb24gIiItLS0iIGFu
ZCAiKysrIiBsaW5lcyB0byBtYXRjaCB0aGUgbGVhZGluZwogICAgICAgICAjIGluZGV4IGxpbmUu
Ci0gICAgICAgIGlmIChzL14tLS0gXFMrLy0tLSAkaW5kZXhQYXRoLykgeworICAgICAgICBpZiAo
L15JbmRleDogKFteXHJcbl0rKS8pIHsKKyAgICAgICAgICAgICRpbmRleFBhdGggPSAkMTsKKyAg
ICAgICAgfSBlbHNpZiAocy9eLS0tIFxTKy8tLS0gJGluZGV4UGF0aC8pIHsKICAgICAgICAgICAg
ICMgLS0tCiAgICAgICAgICAgICBpZiAoL14tLS0gLitcKHJldmlzaW9uIChcZCspXCkvKSB7CiAg
ICAgICAgICAgICAgICAgJHNvdXJjZVJldmlzaW9uID0gJDEgaWYgKCQxICE9IDApOwpAQCAtNTg5
LDMwICs1NTMsOTAgQEAgc3ViIHBhcnNlRGlmZkhlYWRlcigkJCkKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKHMvXlwrXCtcKyBcUysvKysrICRpbmRl
eFBhdGgvIHx8Ci0gICAgICAgICAgICAgICAgIC9eQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuJC8gfHwgIyBTVk4gYmluYXJ5Ci0gICAgICAgICAgICAgICAgIC9e
R0lUIGJpbmFyeSBwYXRjaCQvKSB7CisgICAgICAgICAgICAgICAgIC9eQ2Fubm90IGRpc3BsYXk6
IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuJC8pIHsKICAgICAgICAgICAgICMgKysrCiAg
ICAgICAgICAgICAkZm91bmRIZWFkZXJFbmRpbmcgPSAxOwogICAgICAgICB9CiAKICAgICAgICAg
JHN2bkNvbnZlcnRlZFRleHQgLj0gIiRfJGVvbCI7ICMgQWxzbyByZXN0b3JlIGVuZC1vZi1saW5l
IGNoYXJhY3RlcnMuCi0gICAgICAgIGlmICgkZm91bmRIZWFkZXJFbmRpbmcpIHsKLSAgICAgICAg
ICAgICRsYXN0UmVhZExpbmUgPSA8JGZpbGVIYW5kbGU+OwotICAgICAgICAgICAgbGFzdDsKLSAg
ICAgICAgfQotICAgIH0gIyAkbGFzdFJlYWRMaW5lIGlzIHVuZGVmIGlmIHdoaWxlIGxvb3AgcmFu
IG91dC4KKworICAgICAgICAkXyA9IDwkZmlsZUhhbmRsZT47ICMgTm90IGRlZmluZWQgaWYgZW5k
LW9mLWZpbGUgcmVhY2hlZC4KKworICAgICAgICBsYXN0IGlmICghZGVmaW5lZCgkXykgfHwgLyRo
ZWFkZXJTdGFydFJlZ0V4LyB8fCAkZm91bmRIZWFkZXJFbmRpbmcpOworICAgIH0KIAogICAgIGlm
ICghJGZvdW5kSGVhZGVyRW5kaW5nKSB7CiAgICAgICAgIGRpZSgiRGlkIG5vdCBmaW5kIGVuZCBv
ZiBoZWFkZXIgYmxvY2sgY29ycmVzcG9uZGluZyB0byBpbmRleCBwYXRoIFwiJGluZGV4UGF0aFwi
LiIpOwogICAgIH0KIAorICAgIG15ICVoZWFkZXI7CisKICAgICAkaGVhZGVye2NvcGllZEZyb21Q
YXRofSA9ICRjb3BpZWRGcm9tUGF0aDsKICAgICAkaGVhZGVye2luZGV4UGF0aH0gPSAkaW5kZXhQ
YXRoOwotICAgICRoZWFkZXJ7c2NtRm9ybWF0fSA9ICRmaWx0ZXIgPyAiZ2l0IiA6ICJzdm4iOwog
ICAgICRoZWFkZXJ7c291cmNlUmV2aXNpb259ID0gJHNvdXJjZVJldmlzaW9uOwogICAgICRoZWFk
ZXJ7c3ZuQ29udmVydGVkVGV4dH0gPSAkc3ZuQ29udmVydGVkVGV4dDsKIAotICAgIHJldHVybiAo
XCVoZWFkZXIsICRsYXN0UmVhZExpbmUpOworICAgIHJldHVybiAoXCVoZWFkZXIsICRfKTsKK30K
KworIyBQYXJzZSB0aGUgbmV4dCBkaWZmIGhlYWRlciBmcm9tIHRoZSBnaXZlbiBmaWxlIGhhbmRs
ZSwgYW5kIGFkdmFuY2UKKyMgdGhlIGhhbmRsZSBzbyB0aGUgbGFzdCBsaW5lIHJlYWQgaXMgdGhl
IGZpcnN0IGxpbmUgYWZ0ZXIgdGhlIGhlYWRlci4KKyMKKyMgVGhpcyBzdWJyb3V0aW5lIGRpZXMg
aWYgZ2l2ZW4gbGVhZGluZyBqdW5rIG9yIGlmIGl0IGNvdWxkIG5vdCBkZXRlY3QKKyMgdGhlIGVu
ZCBvZiB0aGUgaGVhZGVyIGJsb2NrLgorIworIyBBcmdzOgorIyAgICRmaWxlSGFuZGxlOiBhZHZh
bmNlZCBzbyB0aGUgbGFzdCBsaW5lIHJlYWQgZnJvbSB0aGUgaGFuZGxlIGlzIHRoZSBmaXJzdAor
IyAgICAgICAgICAgICAgICBsaW5lIG9mIHRoZSBoZWFkZXIgdG8gcGFyc2UuICBGb3IgU1ZOLWZv
cm1hdHRlZCBkaWZmcywgdGhpcworIyAgICAgICAgICAgICAgICBpcyBhIGxpbmUgYmVnaW5uaW5n
IHdpdGggIkluZGV4OiIuICBGb3IgR2l0LCB0aGlzIGlzIGEgbGluZQorIyAgICAgICAgICAgICAg
ICBiZWdpbm5pbmcgd2l0aCAiZGlmZiAtLWdpdCIuCisjICAgJGxpbmU6IHRoZSBsaW5lIGxhc3Qg
cmVhZCBmcm9tICRmaWxlSGFuZGxlCisjCisjIFJldHVybnMgKCRoZWFkZXJIYXNoUmVmLCAkbGFz
dFJlYWRMaW5lKToKKyMgICAkaGVhZGVySGFzaFJlZjogYSBoYXNoIHJlZmVyZW5jZSByZXByZXNl
bnRpbmcgYSBkaWZmIGhlYWRlcgorIyAgICAgY29waWVkRnJvbVBhdGg6IGlmIGEgZmlsZSBjb3B5
LCB0aGUgcGF0aCBmcm9tIHdoaWNoIHRoZSBmaWxlIHdhcworIyAgICAgICAgICAgICAgICAgICAg
IGNvcGllZC4gT3RoZXJ3aXNlLCB1bmRlZmluZWQuCisjICAgICBleGVjdXRhYmxlQml0RGVsdGE6
IGFuIGludGVnZXIgLTEsIDAsIG9yIDEsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZQorIyAgICAg
ICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlIGJpdCB3YXMgYWRkZWQsIHJlbWFpbmVkIHRo
ZSBzYW1lLCBvciB3YXMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC4gIEZvciBu
ZXcgYW5kIGRlbGV0ZWQgZmlsZXMsIHRoZSB2YWx1ZSBpcyAwCisjICAgICAgICAgICAgICAgICAg
ICAgICAgIG9ubHkgaWYgdGhlIG5ldyBvciBkZWxldGVkIGZpbGUgaXMgbm90IGV4ZWN1dGFibGUu
CisjICAgICBpbmRleFBhdGg6IHRoZSBwYXRoIHRvIHRoZSBmaWxlLgorIyAgICAgc2NtRm9ybWF0
OiB0aGUgc3RyaW5nICJnaXQiIG9yICJzdm4iIGRlcGVuZGluZyBvbiB0aGUgZm9ybWF0LgorIyAg
ICAgc291cmNlUmV2aXNpb246IHRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIHNvdXJjZS4gVGhp
cyBpcyB0aGUgc2FtZQorIyAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSByZXZpc2lvbiBudW1i
ZXIgdGhlIGZpbGUgd2FzIGNvcGllZCBmcm9tLCBpbgorIyAgICAgICAgICAgICAgICAgICAgIHRo
ZSBjYXNlIG9mIGEgZmlsZSBjb3B5LgorIyAgICAgc3ZuQ29udmVydGVkVGV4dDogdGhlIGhlYWRl
ciB0ZXh0IHdpdGggc29tZSBsaW5lcyBjb252ZXJ0ZWQgdG8gU1ZOCisjICAgICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQuICBHaXQtc3BlY2lmaWMgbGluZXMgYXJlIHByZXNlcnZlZC4KKyMgICAk
bGFzdFJlYWRMaW5lOiB0aGUgbGluZSBsYXN0IHJlYWQgZnJvbSAkZmlsZUhhbmRsZS4KK3N1YiBw
YXJzZURpZmZIZWFkZXIoJCQpCit7CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkbGluZSkgPSBAXzsK
KworICAgIG15ICRoZWFkZXI7ICAjIFRoaXMgaXMgYSBoYXNoIHJlZi4KKyAgICBteSAkbGFzdFJl
YWRMaW5lOworICAgIG15ICRzY21Gb3JtYXQ7CisKKyAgICBpZiAoJGxpbmUgPX4gL15JbmRleDov
KSB7CisgICAgICAgICRzY21Gb3JtYXQgPSAic3ZuIjsKKyAgICAgICAgKCRoZWFkZXIsICRsYXN0
UmVhZExpbmUpID0gcGFyc2VTdm5EaWZmSGVhZGVyKCRmaWxlSGFuZGxlLCAkbGluZSk7CisgICAg
fSBlbHNpZiAoJGxpbmUgPX4gL15kaWZmIC0tZ2l0LykgeworICAgICAgICAkc2NtRm9ybWF0ID0g
ImdpdCI7CisgICAgICAgICgkaGVhZGVyLCAkbGFzdFJlYWRMaW5lKSA9IHBhcnNlR2l0RGlmZkhl
YWRlcigkZmlsZUhhbmRsZSwgJGxpbmUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRpZSgiRmly
c3QgbGluZSBvZiBkaWZmIGRvZXMgbm90IGJlZ2luIHdpdGggXCJJbmRleDpcIiBvciBcImRpZmYg
LS1naXRcIjogXCIkbGluZVwiIik7CisgICAgfQorCisgICAgIyBJbml0aWFsaXplIG5vbi1leGlz
dGVudCB2YWx1ZXMgdG8gdGhlaXIgZGVmYXVsdHMuICBXZSBuZWVkIHRvIGRvIHRoaXMKKyAgICAj
IGV2ZW4gd2hlbiB1bmRlZiBpcyBleHBlY3RlZCBzaW5jZSB0aGUgdW5pdCB0ZXN0cyBjYW4gZGlz
dGluZ3Vpc2gKKyAgICAjIGJldHdlZW4gdGhlIHZhbHVlIHVuZGVmIGFuZCBhIGtleSBub3QgZXhp
c3RpbmcuCisgICAgJGhlYWRlci0+e2NvcGllZEZyb21QYXRofSA9IHVuZGVmIGlmICFkZWZpbmVk
KCRoZWFkZXItPntjb3BpZWRGcm9tUGF0aH0pOworICAgICRoZWFkZXItPntleGVjdXRhYmxlQml0
RGVsdGF9ID0gMCBpZiAhZGVmaW5lZCgkaGVhZGVyLT57ZXhlY3V0YWJsZUJpdERlbHRhfSk7Cisg
ICAgIyBpbmRleFBhdGg6IGFscmVhZHkgc2V0IGJ5IGJvdGggcGFyc2UgaW1wbGVtZW50YXRpb25z
LgorICAgICRoZWFkZXItPntzY21Gb3JtYXR9ID0gJHNjbUZvcm1hdDsKKyAgICAkaGVhZGVyLT57
c291cmNlUmV2aXNpb259ID0gdW5kZWYgaWYgIWRlZmluZWQoJGhlYWRlci0+e3NvdXJjZVJldmlz
aW9ufSk7CisgICAgIyBzdm5Db252ZXJ0ZWRUZXh0OiBhbHJlYWR5IHNldCBieSBib3RoIHBhcnNl
IGltcGxlbWVudGF0aW9ucy4KKworICAgIHJldHVybiAoJGhlYWRlciwgJGxhc3RSZWFkTGluZSk7
CiB9CiAKICMgRklYTUU6IFRoZSAlZGlmZkhhc2ggIm9iamVjdCIgc2hvdWxkIG5vdCBoYXZlIGFu
IHN2bkNvbnZlcnRlZFRleHQgcHJvcGVydHkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvZ2l0ZGlmZjJzdm5kaWZmLnBsIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2dpdGRpZmYyc3Zu
ZGlmZi5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZmMmRiNy4uMDAwMDAwMAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvZ2l0
ZGlmZjJzdm5kaWZmLnBsCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLSMhL3Vzci9i
aW4vcGVybCAtdwotIwotIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQ2hyaXMgSmVyZG9uZWsg
KGNocmlzLmplcmRvbmVrQGdtYWlsLmNvbSkKLSMgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSAKLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotIyBVbml0IHRlc3RzIG9mIFZDU1V0aWxzOjpnaXRkaWZmMnN2bmRpZmYoKQotCi11c2Ug
c3RyaWN0OwotdXNlIHdhcm5pbmdzOwotCi11c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDIwOwot
dXNlIFZDU1V0aWxzOwotCi0jIFdlIHVzZSB0aGlzIGZvciBkaXNwbGF5IHB1cnBvc2VzLCB0byBr
ZWVwIGVhY2ggdGVzdCB0aXRsZSBvbiBvbmUgbGluZS4KLXN1YiBleGNlcnB0U3RyaW5nKCQpCi17
Ci0gICAgbXkgKCR0ZXh0KSA9IEBfOwotICAgIAotICAgIG15ICRsZW5ndGggPSAyNTsKLSAgICAK
LSAgICBteSAkc2hvcnRlbmVkID0gc3Vic3RyKCR0ZXh0LCAwLCAkbGVuZ3RoKTsKLSAgICAkc2hv
cnRlbmVkIC49ICIuLi4iIGlmIChsZW5ndGgoJHRleHQpID4gJGxlbmd0aCk7Ci0gICAgCi0gICAg
cmV0dXJuICRzaG9ydGVuZWQ7Ci19Ci0KLW15ICRnaXRfcGF0Y2ggPSA8PEVORDsKLWRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAotaW5kZXggZjVkNWU3
NC4uM2I2YWE5MiAxMDA2NDQKLS0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxl
eGlibGVCb3hEYXRhLmgKLSsrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGli
bGVCb3hEYXRhLmgKLUBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKLUVORAotCi1teSAkc3ZuX3Bh
dGNoID0gPDxFTkQ7Ci1JbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJs
ZUJveERhdGEuaAotaW5kZXggZjVkNWU3NC4uM2I2YWE5MiAxMDA2NDQKLS0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCi0rKysgV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAotQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGlj
OgotRU5ECi0KLW15IEBnaXRMaW5lcyA9IHNwbGl0KCJcbiIsICRnaXRfcGF0Y2gpOwotbXkgQHN2
bkxpbmVzID0gc3BsaXQoIlxuIiwgJHN2bl9wYXRjaCk7Ci0KLSMgTmV3IHRlc3Q6IGNoZWNrIGVh
Y2ggZ2l0IGhlYWRlciBsaW5lIHdpdGggZGlmZmVyZW50IGxpbmUgZW5kaW5ncwotbXkgJHRpdGxl
SGVhZGVyID0gImdpdGRpZmYyc3ZuZGlmZjogIjsKLQotbXkgQGxpbmVFbmRpbmdQYWlycyA9ICgg
IyBkaXNwbGF5IG5hbWUsIHZhbHVlCi0gICAgWyIiLCAiIl0sCi0gICAgWyJcXG4iLCAiXG4iXSwK
LSAgICBbIlxcclxcbiIsICJcclxuIl0sCi0pOwotCi1mb3IgKG15ICRpID0gMDsgJGkgPCBAZ2l0
TGluZXM7ICRpKyspIHsKLSAgICBmb3JlYWNoIG15ICRwYWlyIChAbGluZUVuZGluZ1BhaXJzKSB7
IAotICAgICAgICBteSAkZ2l0TGluZSA9ICRnaXRMaW5lc1skaV0gLiAkcGFpci0+WzFdOwotICAg
ICAgICBteSAkZXhwZWN0ZWQgPSAkc3ZuTGluZXNbJGldIC4gJHBhaXItPlsxXTsKLSAgICAgICAg
bXkgJHRpdGxlID0gJHRpdGxlSGVhZGVyIC4gZXhjZXJwdFN0cmluZygkZ2l0TGluZSk7Ci0gICAg
ICAgICR0aXRsZSAuPSAiIFtsaW5lLWVuZDogXCIkcGFpci0+WzBdXCJdIjsKLSAgICAgICAgCi0g
ICAgICAgIG9rKCRleHBlY3RlZCBlcSBnaXRkaWZmMnN2bmRpZmYoJGdpdExpbmUpLCAkdGl0bGUp
OwotICAgIH0KLX0KLQotIyBOZXcgdGVzdAotbXkgJHRpdGxlID0gImdpdGRpZmYyc3ZuZGlmZjog
Q29udmVydCBtbmVtb25pYyBnaXQgZGlmZiB0byBzdm4gZGlmZiI7Ci0KLW15IEBwcmVmaXhlcyA9
ICgKLSAgICB7ICdhJyA9PiAnaScsICdiJyA9PiAndycgfSwgIyBnaXQtZGlmZiAoY29tcGFyZXMg
dGhlIChpKW5kZXggYW5kIHRoZSAodylvcmsgdHJlZSkKLSAgICB7ICdhJyA9PiAnYycsICdiJyA9
PiAndycgfSwgIyBnaXQtZGlmZiBIRUFEIChjb21wYXJlcyBhIChjKW9tbWl0IGFuZCB0aGUgKHcp
b3JrIHRyZWUpCi0gICAgeyAnYScgPT4gJ2MnLCAnYicgPT4gJ2knIH0sICMgZ2l0IGRpZmYgLS1j
YWNoZWQgKGNvbXBhcmVzIGEgKGMpb21taXQgYW5kIHRoZSAoaSluZGV4KQotICAgIHsgJ2EnID0+
ICdvJywgJ2InID0+ICd3JyB9LCAjIGdpdC1kaWZmIEhFQUQ6ZmlsZTEgZmlsZTIgKGNvbXBhcmVz
IGFuIChvKWJqZWN0IGFuZCBhICh3KW9yayB0cmVlIGVudGl0eSkKLSAgICB7ICdhJyA9PiAnMScs
ICdiJyA9PiAnMicgfSwgIyBnaXQgZGlmZiAtLW5vLWluZGV4IGEgYiAoY29tcGFyZXMgdHdvIG5v
bi1naXQgdGhpbmdzICgxKSBhbmQgKDIpKQotKTsKLQotbXkgJG91dCA9ICIiOwotCi1mb3JlYWNo
IG15ICRwcmVmaXggKEBwcmVmaXhlcykgewotICAgIG15ICRtbmVtb25pY19wYXRjaCA9ICRnaXRf
cGF0Y2g7Ci0gICAgJG1uZW1vbmljX3BhdGNoID1+IHMvIGFcLy8gJHByZWZpeC0+eydhJ31cLy9n
OwotICAgICRtbmVtb25pY19wYXRjaCA9fiBzLyBiXC8vICRwcmVmaXgtPnsnYid9XC8vZzsKLQot
ICAgICRvdXQgPSAiIjsKLSAgICBmb3JlYWNoIG15ICRsaW5lIChzcGxpdCgnXG4nLCAkbW5lbW9u
aWNfcGF0Y2gpKSB7Ci0gICAgICAgICRvdXQgLj0gZ2l0ZGlmZjJzdm5kaWZmKCRsaW5lKSAuICJc
biI7Ci0gICAgfQotCi0gICAgb2soJHN2bl9wYXRjaCBlcSAkb3V0LCAkdGl0bGUgLiAiICgiIC4g
JHByZWZpeC0+eydhJ30gLiAiLCIgLiAkcHJlZml4LT57J2InfSAuICIpIik7Ci19Ci0KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9w
YXJzZURpZmZIZWFkZXIucGwgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRp
bHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBsCmluZGV4IGQyYjhjOWUuLmQ0NDZmNzQgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVz
dC9wYXJzZURpZmZIZWFkZXIucGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbApAQCAtMzYsNjUgKzM2LDIxIEBA
IHVzZSB3YXJuaW5nczsKIHVzZSBUZXN0OjpNb3JlOwogdXNlIFZDU1V0aWxzOwogCi0jIFRoZSBh
cnJheSBvZiB0ZXN0IGNhc2VzLgorIyBUaGUgdW5pdCB0ZXN0cyBmb3IgcGFyc2VHaXREaWZmSGVh
ZGVyKCkgYW5kIHBhcnNlU3ZuRGlmZkhlYWRlcigpCisjIGFscmVhZHkgdGhvcm91Z2hseSB0ZXN0
IHBhcnNpbmcgZWFjaCBmb3JtYXQuCisjCisjIEZvciBwYXJzZURpZmZIZWFkZXIoKSwgaXQgc2hv
dWxkIHN1ZmZpY2UgdG8gdmVyaWZ5IHRoYXQgLS0gKDEpIGZvciBlYWNoCisjIGZvcm1hdCwgdGhl
IG1ldGhvZCBjYW4gcmV0dXJuIG5vbi10cml2aWFsIHZhbHVlcyBiYWNrIGZvciBlYWNoIGtleQor
IyBzdXBwb3J0ZWQgYnkgdGhhdCBmb3JtYXQgKGUuZy4gInNvdXJjZVJldmlzaW9uIiBmb3IgU1ZO
KSwgKDIpIHRoZSBtZXRob2QKKyMgY29ycmVjdGx5IHNldHMgZGVmYXVsdCB2YWx1ZXMgd2hlbiBz
cGVjaWZpYyBrZXktdmFsdWVzIGFyZSBub3Qgc2V0CisjIChlLmcuIHVuZGVmIGZvciAic291cmNl
UmV2aXNpb24iIGZvciBHaXQpLCBhbmQgKDMpIGtleS12YWx1ZXMgdW5pcXVlIHRvCisjIHRoaXMg
bWV0aG9kIGFyZSBzZXQgY29ycmVjdGx5IChlLmcuICJzY21Gb3JtYXQiKS4KIG15IEB0ZXN0Q2Fz
ZUhhc2hSZWZzID0gKAotewotICAgICMgTmV3IHRlc3QKLSAgICBkaWZmTmFtZSA9PiAiU1ZOOiBz
aW1wbGUiLAotICAgIGlucHV0VGV4dCA9PiA8PCdFTkQnLAotSW5kZXg6IFdlYktpdFRvb2xzL1Nj
cmlwdHMvVkNTVXRpbHMucG0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBXZWJLaXRUb29scy9TY3JpcHRzL1ZD
U1V0aWxzLnBtCShyZXZpc2lvbiA1MzAwNCkKLSsrKyBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0
aWxzLnBtCSh3b3JraW5nIGNvcHkpCi1AQCAtMzIsNiArMzIsNyBAQCB1c2Ugc3RyaWN0OwotIHVz
ZSB3YXJuaW5nczsKLUVORAotICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKLXsKLSAgICBzdm5Db252
ZXJ0ZWRUZXh0ID0+IDw8J0VORCcsCi1JbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGls
cy5wbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHJl
dmlzaW9uIDUzMDA0KQotKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHdvcmtp
bmcgY29weSkKLUVORAotICAgIGNvcGllZEZyb21QYXRoID0+IHVuZGVmLAotICAgIGluZGV4UGF0
aCA9PiAiV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbSIsCi0gICAgc2NtRm9ybWF0ID0+
ICJzdm4iLAotICAgIHNvdXJjZVJldmlzaW9uID0+ICI1MzAwNCIsCi19LAotIkBAIC0zMiw2ICsz
Miw3IEBAIHVzZSBzdHJpY3Q7XG4iXSwKLSAgICBleHBlY3RlZE5leHRMaW5lID0+ICIgdXNlIHdh
cm5pbmdzO1xuIiwKLX0sCi17Ci0gICAgIyBOZXcgdGVzdAotICAgIGRpZmZOYW1lID0+ICJTVk46
IG5ldyBmaWxlIiwKLSAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKLUluZGV4OiBXZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBs
Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxz
X3VuaXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbAkocmV2aXNpb24gMCkKLSsrKyBXZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBs
CShyZXZpc2lvbiAwKQotQEAgLTAsMCArMSwyNjIgQEAKLSsjIS91c3IvYmluL3BlcmwgLXcKLUVO
RAotICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKLXsKLSAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IDw8
J0VORCcsCi1JbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3Vu
aXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZIZWFkZXIucGwJKHJl
dmlzaW9uIDApCi0rKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3Vu
aXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbAkocmV2aXNpb24gMCkKLUVORAotICAgIGNvcGllZEZy
b21QYXRoID0+IHVuZGVmLAotICAgIGluZGV4UGF0aCA9PiAiV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbCIsCi0gICAgc2Nt
Rm9ybWF0ID0+ICJzdm4iLAotICAgIHNvdXJjZVJldmlzaW9uID0+IHVuZGVmLAotfSwKLSJAQCAt
MCwwICsxLDI2MiBAQFxuIl0sCi0gICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiKyMhL3Vzci9iaW4v
cGVybCAtd1xuIiwKLX0sCi17Ci0gICAgIyBOZXcgdGVzdAotICAgIGRpZmZOYW1lID0+ICJTVk46
IGNvcHkiLAorIyMjIworIyAgICBTVk4gdGVzdCBjYXNlcworIyMKK3sgICAjIE5ldyB0ZXN0Cisg
ICAgZGlmZk5hbWUgPT4gIlNWTjogbm9uLXRyaXZpYWwgY29waWVkRnJvbVBhdGggYW5kIHNvdXJj
ZVJldmlzaW9uIHZhbHVlcyIsCiAgICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCiBJbmRleDogaW5k
ZXhfcGF0aC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTEyLDYwICs2OCw3IEBAIEluZGV4OiBpbmRleF9w
YXRoLnB5CiArKysgaW5kZXhfcGF0aC5weQkod29ya2luZyBjb3B5KQogRU5ECiAgICAgY29waWVk
RnJvbVBhdGggPT4gImNvcGllZF9mcm9tX3BhdGgucHkiLAotICAgIGluZGV4UGF0aCA9PiAiaW5k
ZXhfcGF0aC5weSIsCi0gICAgc2NtRm9ybWF0ID0+ICJzdm4iLAotICAgIHNvdXJjZVJldmlzaW9u
ID0+IDUzMDQ4LAotfSwKLSJAQCAtMCwwICsxLDcgQEBcbiJdLAotICAgIGV4cGVjdGVkTmV4dExp
bmUgPT4gIisjIFB5dGhvbiBmaWxlLi4uXG4iLAotfSwKLXsKLSAgICAjIE5ldyB0ZXN0Ci0gICAg
ZGlmZk5hbWUgPT4gIlNWTjogXFxyXFxuIGxpbmVzIiwKLSAgICBpbnB1dFRleHQgPT4gPDxFTkQs
ICMgTm8gc2luZ2xlIHF1b3RlcyB0byBhbGxvdyBpbnRlcnBvbGF0aW9uIG9mICJcciIKLUluZGV4
OiBpbmRleF9wYXRoLnB5XHIKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1ccgotLS0tIGluZGV4X3BhdGgucHkJKHJldmlz
aW9uIDUzMDQ4KQkoZnJvbSBjb3BpZWRfZnJvbV9wYXRoLnB5OjUzMDQ4KVxyCi0rKysgaW5kZXhf
cGF0aC5weQkod29ya2luZyBjb3B5KVxyCi1AQCAtMCwwICsxLDcgQEBccgotKyMgUHl0aG9uIGZp
bGUuLi5ccgotRU5ECi0gICAgZXhwZWN0ZWRSZXR1cm4gPT4gWwotewotICAgIHN2bkNvbnZlcnRl
ZFRleHQgPT4gPDxFTkQsICMgTm8gc2luZ2xlIHF1b3RlcyB0byBhbGxvdyBpbnRlcnBvbGF0aW9u
IG9mICJcciIKLUluZGV4OiBpbmRleF9wYXRoLnB5XHIKLT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1ccgotLS0tIGluZGV4
X3BhdGgucHkJKHJldmlzaW9uIDUzMDQ4KQkoZnJvbSBjb3BpZWRfZnJvbV9wYXRoLnB5OjUzMDQ4
KVxyCi0rKysgaW5kZXhfcGF0aC5weQkod29ya2luZyBjb3B5KVxyCi1FTkQKLSAgICBjb3BpZWRG
cm9tUGF0aCA9PiAiY29waWVkX2Zyb21fcGF0aC5weSIsCi0gICAgaW5kZXhQYXRoID0+ICJpbmRl
eF9wYXRoLnB5IiwKLSAgICBzY21Gb3JtYXQgPT4gInN2biIsCi0gICAgc291cmNlUmV2aXNpb24g
PT4gNTMwNDgsCi19LAotIkBAIC0wLDAgKzEsNyBAQFxyXG4iXSwKLSAgICBleHBlY3RlZE5leHRM
aW5lID0+ICIrIyBQeXRob24gZmlsZS4uLlxyXG4iLAotfSwKLXsKLSAgICAjIE5ldyB0ZXN0Ci0g
ICAgZGlmZk5hbWUgPT4gIlNWTjogcGF0aCBjb3JyZWN0aW9ucyIsCi0gICAgaW5wdXRUZXh0ID0+
IDw8J0VORCcsCi1JbmRleDogaW5kZXhfcGF0aC5weQotPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJhZF9wYXRo
CShyZXZpc2lvbiA1MzA0OCkJKGZyb20gY29waWVkX2Zyb21fcGF0aC5weTo1MzA0OCkKLSsrKyBi
YWRfcGF0aAkod29ya2luZyBjb3B5KQotQEAgLTAsMCArMSw3IEBACi0rIyBQeXRob24gZmlsZS4u
LgotRU5ECi0gICAgZXhwZWN0ZWRSZXR1cm4gPT4gWwotewotICAgIHN2bkNvbnZlcnRlZFRleHQg
PT4gPDwnRU5EJywKLUluZGV4OiBpbmRleF9wYXRoLnB5Ci09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaW5kZXhf
cGF0aC5weQkocmV2aXNpb24gNTMwNDgpCShmcm9tIGNvcGllZF9mcm9tX3BhdGgucHk6NTMwNDgp
Ci0rKysgaW5kZXhfcGF0aC5weQkod29ya2luZyBjb3B5KQotRU5ECi0gICAgY29waWVkRnJvbVBh
dGggPT4gImNvcGllZF9mcm9tX3BhdGgucHkiLAorICAgIGV4ZWN1dGFibGVCaXREZWx0YSA9PiAw
LAogICAgIGluZGV4UGF0aCA9PiAiaW5kZXhfcGF0aC5weSIsCiAgICAgc2NtRm9ybWF0ID0+ICJz
dm4iLAogICAgIHNvdXJjZVJldmlzaW9uID0+IDUzMDQ4LApAQCAtMTc2LDE1OCArNzksMjkgQEAg
RU5ECiAjIyMjCiAjICAgIEdpdCB0ZXN0IGNhc2VzCiAjIwotewotICAgICMgTmV3IHRlc3QKLSAg
ICBkaWZmTmFtZSA9PiAiR2l0OiBzaW1wbGUiLAoreyAgICMgTmV3IHRlc3QgY2FzZQorICAgIGRp
ZmZOYW1lID0+ICJHaXQ6IE5vbi16ZXJvIGV4ZWN1dGFibGUgYml0IiwKICAgICBpbnB1dFRleHQg
PT4gPDwnRU5EJywKLWRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZs
ZXhpYmxlQm94RGF0YS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJv
eERhdGEuaAotaW5kZXggZjVkNWU3NC4uM2I2YWE5MiAxMDA2NDQKLS0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgKLSsrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgKLUBAIC00Nyw3ICs0Nyw2IEBAIHB1Ymxp
YzoKK2RpZmYgLS1naXQgYS9mb28uZXhlIGIvZm9vLmV4ZQorb2xkIG1vZGUgMTAwNjQ0CituZXcg
bW9kZSAxMDA3NTUKIEVORAogICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKIHsKICAgICBzdm5Db252
ZXJ0ZWRUZXh0ID0+IDw8J0VORCcsCi1JbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVGbGV4aWJsZUJveERhdGEuaAotaW5kZXggZjVkNWU3NC4uM2I2YWE5MiAxMDA2NDQKLS0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCi0rKysgV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAorSW5kZXg6IGZvby5leGUK
K29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CiBFTkQKICAgICBjb3BpZWRGcm9tUGF0
aCA9PiB1bmRlZiwKLSAgICBpbmRleFBhdGggPT4gIldlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlRmxleGlibGVCb3hEYXRhLmgiLAorICAgIGV4ZWN1dGFibGVCaXREZWx0YSA9PiAxLAorICAg
IGluZGV4UGF0aCA9PiAiZm9vLmV4ZSIsCiAgICAgc2NtRm9ybWF0ID0+ICJnaXQiLAogICAgIHNv
dXJjZVJldmlzaW9uID0+IHVuZGVmLAogfSwKLSJAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6XG4i
XSwKK3VuZGVmXSwKICAgICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAogfSwKLXsKLSAgICAj
IE5ldyB0ZXN0Ci0gICAgZGlmZk5hbWUgPT4gIkdpdDogbmV3IGZpbGUiLAotICAgIGlucHV0VGV4
dCA9PiA8PCdFTkQnLAotZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvbGlzdGVuZXIveHNzLWluYWN0aXZlLWNsb3N1cmUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLWluYWN0aXZlLWNsb3N1cmUuaHRtbAotbmV3IGZp
bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjNjOWYxMTQKLS0tLSAvZGV2L251bGwKLSsr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLWluYWN0aXZl
LWNsb3N1cmUuaHRtbAotQEAgLTAsMCArMSwzNCBAQAotKzxodG1sPgotRU5ECi0gICAgZXhwZWN0
ZWRSZXR1cm4gPT4gWwotewotICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gPDwnRU5EJywKLUluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1pbmFjdGl2ZS1j
bG9zdXJlLmh0bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zYzlmMTE0
Ci0tLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtaW5hY3Rp
dmUtY2xvc3VyZS5odG1sCi0rKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0
ZW5lci94c3MtaW5hY3RpdmUtY2xvc3VyZS5odG1sCi1FTkQKLSAgICBjb3BpZWRGcm9tUGF0aCA9
PiB1bmRlZiwKLSAgICBpbmRleFBhdGggPT4gIkxheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvbGlzdGVuZXIveHNzLWluYWN0aXZlLWNsb3N1cmUuaHRtbCIsCi0gICAgc2NtRm9ybWF0ID0+
ICJnaXQiLAotICAgIHNvdXJjZVJldmlzaW9uID0+IHVuZGVmLAotfSwKLSJAQCAtMCwwICsxLDM0
IEBAXG4iXSwKLSAgICBleHBlY3RlZE5leHRMaW5lID0+ICIrPGh0bWw+XG4iLAotfSwKLSMjIyMK
LSMgICAgQmluYXJ5IHRlc3QgY2FzZXMKLSMjCi17Ci0gICAgIyBOZXcgdGVzdAotICAgIGRpZmZO
YW1lID0+ICJTVk46IGJpbmFyeSBmaWxlIiwKLSAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKLUlu
ZGV4OiB0ZXN0X2ZpbGUuc3dmCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DYW5ub3QgZGlzcGxheTogZmlsZSBtYXJr
ZWQgYXMgYSBiaW5hcnkgdHlwZS4KLXN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0KLQotUHJvcGVydHkgY2hhbmdlcyBvbjogdGVzdF9maWxlLnN3ZgotX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwot
TmFtZTogc3ZuOm1pbWUtdHlwZQotICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KLQotCi1R
MWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09Ci1FTkQK
LSAgICBleHBlY3RlZFJldHVybiA9PiBbCi17Ci0gICAgc3ZuQ29udmVydGVkVGV4dCA9PiA8PCdF
TkQnLAotSW5kZXg6IHRlc3RfZmlsZS5zd2YKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUNhbm5vdCBkaXNwbGF5OiBm
aWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgotRU5ECi0gICAgY29waWVkRnJvbVBhdGggPT4g
dW5kZWYsCi0gICAgaW5kZXhQYXRoID0+ICJ0ZXN0X2ZpbGUuc3dmIiwKLSAgICBzY21Gb3JtYXQg
PT4gInN2biIsCi0gICAgc291cmNlUmV2aXNpb24gPT4gdW5kZWYsCi19LAotInN2bjptaW1lLXR5
cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cbiJdLAotICAgIGV4cGVjdGVkTmV4dExpbmUg
PT4gIlxuIiwKLX0sCi17Ci0gICAgIyBOZXcgdGVzdAotICAgIGRpZmZOYW1lID0+ICJHaXQ6IGJp
bmFyeSBhZGRpdGlvbiIsCi0gICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCi1kaWZmIC0tZ2l0IGEv
Zm9vLmdpZiBiL2Zvby5naWYKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGE5NTMyZTc3OTRmY2Q3OTFmNmYxMjE1
NzQwNmQ5MDYwMTUxNjkwCi1HSVQgYmluYXJ5IHBhdGNoCi1saXRlcmFsIDcKLU9jbVlleCZyZURh
O3NPOCpGOUwpQgotCi1saXRlcmFsIDAKLUhjbVY/ZDAwMDAxCi0KLUVORAotICAgIGV4cGVjdGVk
UmV0dXJuID0+IFsKLXsKLSAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IDw8J0VORCcsCi1JbmRleDog
Zm9vLmdpZgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0YTk1MzJlNzc5NGZjZDc5MWY2ZjEyMTU3NDA2ZDkwNjAx
NTE2OTAKLUdJVCBiaW5hcnkgcGF0Y2gKLUVORAotICAgIGNvcGllZEZyb21QYXRoID0+IHVuZGVm
LAotICAgIGluZGV4UGF0aCA9PiAiZm9vLmdpZiIsCi0gICAgc2NtRm9ybWF0ID0+ICJnaXQiLAot
ICAgIHNvdXJjZVJldmlzaW9uID0+IHVuZGVmLAotfSwKLSJsaXRlcmFsIDdcbiJdLAotICAgIGV4
cGVjdGVkTmV4dExpbmUgPT4gIk9jbVlleCZyZURhO3NPOCpGOUwpQlxuIiwKLX0sCi17Ci0gICAg
IyBOZXcgdGVzdAotICAgIGRpZmZOYW1lID0+ICJHaXQ6IGJpbmFyeSBkZWxldGlvbiIsCi0gICAg
aW5wdXRUZXh0ID0+IDw8J0VORCcsCi1kaWZmIC0tZ2l0IGEvZm9vLmdpZiBiL2Zvby5naWYKLWRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMzIzZmFlMC4uMDAwMDAwMAotR0lUIGJpbmFy
eSBwYXRjaAotbGl0ZXJhbCAwCi1IY21WP2QwMDAwMQotCi1saXRlcmFsIDcKLU9jbVlleCZyZUQk
O3NPOCpGOUwpQgotCi1FTkQKLSAgICBleHBlY3RlZFJldHVybiA9PiBbCi17Ci0gICAgc3ZuQ29u
dmVydGVkVGV4dCA9PiA8PCdFTkQnLAotSW5kZXg6IGZvby5naWYKLWRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAotaW5kZXggMzIzZmFlMC4uMDAwMDAwMAotR0lUIGJpbmFyeSBwYXRjaAotRU5ECi0g
ICAgY29waWVkRnJvbVBhdGggPT4gdW5kZWYsCi0gICAgaW5kZXhQYXRoID0+ICJmb28uZ2lmIiwK
LSAgICBzY21Gb3JtYXQgPT4gImdpdCIsCi0gICAgc291cmNlUmV2aXNpb24gPT4gdW5kZWYsCi19
LAotImxpdGVyYWwgMFxuIl0sCi0gICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiSGNtVj9kMDAwMDFc
biIsCi19LAogKTsKIAogbXkgJHRlc3RDYXNlc0NvdW50ID0gQHRlc3RDYXNlSGFzaFJlZnM7CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRl
c3QvcGFyc2VTdm5EaWZmSGVhZGVyLnBsIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlU3ZuRGlmZkhlYWRlci5wbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mNTg4NDhkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlU3ZuRGlmZkhlYWRl
ci5wbApAQCAtMCwwICsxLDIyNCBAQAorIyEvdXNyL2Jpbi9wZXJsIC13CisjCisjIENvcHlyaWdo
dCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisjIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBvZiBwYXJz
ZVN2bkRpZmZIZWFkZXIoKS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFRl
c3Q6Ok1vcmU7Cit1c2UgVkNTVXRpbHM7CisKKyMgVGhlIGFycmF5IG9mIHRlc3QgY2FzZXMuCitt
eSBAdGVzdENhc2VIYXNoUmVmcyA9ICgKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUg
PT4gInNpbXBsZSBkaWZmIiwKKyAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKK0luZGV4OiBXZWJL
aXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gV2ViS2l0VG9vbHMv
U2NyaXB0cy9WQ1NVdGlscy5wbQkocmV2aXNpb24gNTMwMDQpCisrKysgV2ViS2l0VG9vbHMvU2Ny
aXB0cy9WQ1NVdGlscy5wbQkod29ya2luZyBjb3B5KQorQEAgLTMyLDYgKzMyLDcgQEAgdXNlIHN0
cmljdDsKKyB1c2Ugd2FybmluZ3M7CitFTkQKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCit7Cisg
ICAgc3ZuQ29udmVydGVkVGV4dCA9PiA8PCdFTkQnLAorSW5kZXg6IFdlYktpdFRvb2xzL1Njcmlw
dHMvVkNTVXRpbHMucG0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0
aWxzLnBtCShyZXZpc2lvbiA1MzAwNCkKKysrKyBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxz
LnBtCSh3b3JraW5nIGNvcHkpCitFTkQKKyAgICBjb3BpZWRGcm9tUGF0aCA9PiB1bmRlZiwKKyAg
ICBpbmRleFBhdGggPT4gIldlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0iLAorICAgIHNv
dXJjZVJldmlzaW9uID0+ICI1MzAwNCIsCit9LAorIkBAIC0zMiw2ICszMiw3IEBAIHVzZSBzdHJp
Y3Q7XG4iXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+ICIgdXNlIHdhcm5pbmdzO1xuIiwKK30s
Cit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJuZXcgZmlsZSIsCisgICAgaW5w
dXRUZXh0ID0+IDw8J0VORCcsCitJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbAorPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZI
ZWFkZXIucGwJKHJldmlzaW9uIDApCisrKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZkhlYWRlci5wbAkocmV2aXNpb24gMCkKK0BAIC0w
LDAgKzEsMjYyIEBACisrIyEvdXNyL2Jpbi9wZXJsIC13CitFTkQKKyAgICBleHBlY3RlZFJldHVy
biA9PiBbCit7CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiA8PCdFTkQnLAorSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZIZWFk
ZXIucGwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKy0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNT
VXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmSGVhZGVyLnBsCShyZXZpc2lvbiAwKQorKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZIZWFk
ZXIucGwJKHJldmlzaW9uIDApCitFTkQKKyAgICBjb3BpZWRGcm9tUGF0aCA9PiB1bmRlZiwKKyAg
ICBpbmRleFBhdGggPT4gIldlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191
bml0dGVzdC9wYXJzZURpZmZIZWFkZXIucGwiLAorICAgIHNvdXJjZVJldmlzaW9uID0+IHVuZGVm
LAorfSwKKyJAQCAtMCwwICsxLDI2MiBAQFxuIl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiAi
KyMhL3Vzci9iaW4vcGVybCAtd1xuIiwKK30sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZO
YW1lID0+ICJjb3BpZWQgZmlsZSIsCisgICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCitJbmRleDog
aW5kZXhfcGF0aC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGluZGV4X3BhdGgucHkJKHJldmlzaW9uIDUz
MDQ4KQkoZnJvbSBjb3BpZWRfZnJvbV9wYXRoLnB5OjUzMDQ4KQorKysrIGluZGV4X3BhdGgucHkJ
KHdvcmtpbmcgY29weSkKK0BAIC0wLDAgKzEsNyBAQAorKyMgUHl0aG9uIGZpbGUuLi4KK0VORAor
ICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IDw8J0VO
RCcsCitJbmRleDogaW5kZXhfcGF0aC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGluZGV4X3BhdGgucHkJ
KHJldmlzaW9uIDUzMDQ4KQkoZnJvbSBjb3BpZWRfZnJvbV9wYXRoLnB5OjUzMDQ4KQorKysrIGlu
ZGV4X3BhdGgucHkJKHdvcmtpbmcgY29weSkKK0VORAorICAgIGNvcGllZEZyb21QYXRoID0+ICJj
b3BpZWRfZnJvbV9wYXRoLnB5IiwKKyAgICBpbmRleFBhdGggPT4gImluZGV4X3BhdGgucHkiLAor
ICAgIHNvdXJjZVJldmlzaW9uID0+IDUzMDQ4LAorfSwKKyJAQCAtMCwwICsxLDcgQEBcbiJdLAor
ICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gIisjIFB5dGhvbiBmaWxlLi4uXG4iLAorfSwKK3sKKyAg
ICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gImNvbnRhaW5zIFxcclxcbiBsaW5lcyIsCisg
ICAgaW5wdXRUZXh0ID0+IDw8RU5ELCAjIE5vIHNpbmdsZSBxdW90ZXMgdG8gYWxsb3cgaW50ZXJw
b2xhdGlvbiBvZiAiXHIiCitJbmRleDogaW5kZXhfcGF0aC5weVxyCis9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHIKKy0t
LSBpbmRleF9wYXRoLnB5CShyZXZpc2lvbiA1MzA0OCkJKGZyb20gY29waWVkX2Zyb21fcGF0aC5w
eTo1MzA0OClccgorKysrIGluZGV4X3BhdGgucHkJKHdvcmtpbmcgY29weSlccgorQEAgLTAsMCAr
MSw3IEBAXHIKKysjIFB5dGhvbiBmaWxlLi4uXHIKK0VORAorICAgIGV4cGVjdGVkUmV0dXJuID0+
IFsKK3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IDw8RU5ELCAjIE5vIHNpbmdsZSBxdW90ZXMg
dG8gYWxsb3cgaW50ZXJwb2xhdGlvbiBvZiAiXHIiCitJbmRleDogaW5kZXhfcGF0aC5weVxyCis9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09XHIKKy0tLSBpbmRleF9wYXRoLnB5CShyZXZpc2lvbiA1MzA0OCkJKGZyb20gY29w
aWVkX2Zyb21fcGF0aC5weTo1MzA0OClccgorKysrIGluZGV4X3BhdGgucHkJKHdvcmtpbmcgY29w
eSlccgorRU5ECisgICAgY29waWVkRnJvbVBhdGggPT4gImNvcGllZF9mcm9tX3BhdGgucHkiLAor
ICAgIGluZGV4UGF0aCA9PiAiaW5kZXhfcGF0aC5weSIsCisgICAgc291cmNlUmV2aXNpb24gPT4g
NTMwNDgsCit9LAorIkBAIC0wLDAgKzEsNyBAQFxyXG4iXSwKKyAgICBleHBlY3RlZE5leHRMaW5l
ID0+ICIrIyBQeXRob24gZmlsZS4uLlxyXG4iLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAg
ZGlmZk5hbWUgPT4gImNvbnRhaW5zIHBhdGggY29ycmVjdGlvbnMiLAorICAgIGlucHV0VGV4dCA9
PiA8PCdFTkQnLAorSW5kZXg6IGluZGV4X3BhdGgucHkKKz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBiYWRfcGF0
aAkocmV2aXNpb24gNTMwNDgpCShmcm9tIGNvcGllZF9mcm9tX3BhdGgucHk6NTMwNDgpCisrKysg
YmFkX3BhdGgJKHdvcmtpbmcgY29weSkKK0BAIC0wLDAgKzEsNyBAQAorKyMgUHl0aG9uIGZpbGUu
Li4KK0VORAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0
ID0+IDw8J0VORCcsCitJbmRleDogaW5kZXhfcGF0aC5weQorPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGluZGV4
X3BhdGgucHkJKHJldmlzaW9uIDUzMDQ4KQkoZnJvbSBjb3BpZWRfZnJvbV9wYXRoLnB5OjUzMDQ4
KQorKysrIGluZGV4X3BhdGgucHkJKHdvcmtpbmcgY29weSkKK0VORAorICAgIGNvcGllZEZyb21Q
YXRoID0+ICJjb3BpZWRfZnJvbV9wYXRoLnB5IiwKKyAgICBpbmRleFBhdGggPT4gImluZGV4X3Bh
dGgucHkiLAorICAgIHNvdXJjZVJldmlzaW9uID0+IDUzMDQ4LAorfSwKKyJAQCAtMCwwICsxLDcg
QEBcbiJdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gIisjIFB5dGhvbiBmaWxlLi4uXG4iLAor
fSwKKyMjIyMKKyMgICAgQmluYXJ5IHRlc3QgY2FzZXMKKyMjCit7CisgICAgIyBOZXcgdGVzdAor
ICAgIGRpZmZOYW1lID0+ICJiaW5hcnkgZmlsZSIsCisgICAgaW5wdXRUZXh0ID0+IDw8J0VORCcs
CitJbmRleDogdGVzdF9maWxlLnN3ZgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCitzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtCisKK1Byb3BlcnR5IGNoYW5nZXMgb246IHRlc3RfZmlsZS5zd2YKK19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KK05hbWU6IHN2bjptaW1lLXR5cGUKKyAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCisK
KworUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQmdRRUFKUFFESkE9PQor
RU5ECisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4g
PDwnRU5EJywKK0luZGV4OiB0ZXN0X2ZpbGUuc3dmCis9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDYW5ub3QgZGlzcGxh
eTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4KK0VORAorICAgIGNvcGllZEZyb21QYXRo
ID0+IHVuZGVmLAorICAgIGluZGV4UGF0aCA9PiAidGVzdF9maWxlLnN3ZiIsCisgICAgc291cmNl
UmV2aXNpb24gPT4gdW5kZWYsCit9LAorInN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW1cbiJdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gIlxuIiwKK30sCispOworCitt
eSAkdGVzdENhc2VzQ291bnQgPSBAdGVzdENhc2VIYXNoUmVmczsKK3BsYW4odGVzdHMgPT4gMiAq
ICR0ZXN0Q2FzZXNDb3VudCk7ICMgVG90YWwgbnVtYmVyIG9mIGFzc2VydGlvbnMuCisKK2ZvcmVh
Y2ggbXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgeworICAgIG15ICR0ZXN0TmFtZVN0
YXJ0ID0gInBhcnNlU3ZuRGlmZkhlYWRlcigpOiAkdGVzdENhc2UtPntkaWZmTmFtZX06IGNvbXBh
cmluZyI7CisKKyAgICBteSAkZmlsZUhhbmRsZTsKKyAgICBvcGVuKCRmaWxlSGFuZGxlLCAiPCIs
IFwkdGVzdENhc2UtPntpbnB1dFRleHR9KTsKKyAgICBteSAkbGluZSA9IDwkZmlsZUhhbmRsZT47
CisKKyAgICBteSBAZ290ID0gVkNTVXRpbHM6OnBhcnNlU3ZuRGlmZkhlYWRlcigkZmlsZUhhbmRs
ZSwgJGxpbmUpOworICAgIG15ICRleHBlY3RlZFJldHVybiA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVk
UmV0dXJufTsKKworICAgIGlzX2RlZXBseShcQGdvdCwgJGV4cGVjdGVkUmV0dXJuLCAiJHRlc3RO
YW1lU3RhcnQgcmV0dXJuIHZhbHVlLiIpOworCisgICAgbXkgJGdvdE5leHRMaW5lID0gPCRmaWxl
SGFuZGxlPjsKKyAgICBpcygkZ290TmV4dExpbmUsICR0ZXN0Q2FzZS0+e2V4cGVjdGVkTmV4dExp
bmV9LCAgIiR0ZXN0TmFtZVN0YXJ0IG5leHQgcmVhZCBsaW5lLiIpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>