<?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>160784</bug_id>
          
          <creation_ts>2016-08-11 15:10:39 -0700</creation_ts>
          <short_desc>[JSC] Revert most of r203808</short_desc>
          <delta_ts>2017-05-08 16:11:05 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1219428</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-11 15:10:39 -0700</bug_when>
    <thetext>[JSC] Revert most of r203808</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219431</commentid>
    <comment_count>1</comment_count>
      <attachid>285860</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-11 15:15:45 -0700</bug_when>
    <thetext>Created attachment 285860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219442</commentid>
    <comment_count>2</comment_count>
      <attachid>285860</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-11 16:27:25 -0700</bug_when>
    <thetext>Comment on attachment 285860
Patch

r=me

Ben mentioned that he saw time spent in madvise using fastMalloc. I think I can probably fix that with a little dedicated work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219460</commentid>
    <comment_count>3</comment_count>
      <attachid>285860</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-11 17:23:52 -0700</bug_when>
    <thetext>Comment on attachment 285860
Patch

Clearing flags on attachment: 285860

Committed r204393: &lt;http://trac.webkit.org/changeset/204393&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219461</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-11 17:23:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221311</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-18 20:13:24 -0700</bug_when>
    <thetext>It looks like this progressed JetStream as expected by around 1%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221382</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-19 09:44:27 -0700</bug_when>
    <thetext>Can you link to the result? Was it MacBook Air?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306090</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-08 15:26:58 -0700</bug_when>
    <thetext>I tested an up-to-date variant of this patch on a 2012 MacBook Air today and it appeared to be performance-neutral:

Benchmark report for Octane on admins-MacBook-Air-2 (MacBookAir5,2).

VMs tested:
&quot;Baseline&quot; at /Volumes/Big/ggaren/OpenSource/WebKitBuildBaseline/Release/jsc
&quot;Patch&quot; at /Volumes/Big/ggaren/OpenSource/WebKitBuild/Release/jsc (r215991)

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution
times with 95% confidence intervals in milliseconds.

                            Baseline                   Patch                                       

encrypt                 0.21080+-0.01634          0.20457+-0.00450         might be 1.0304x faster
decrypt                 3.53045+-0.03419    ?     3.57919+-0.15867       ? might be 1.0138x slower
deltablue      x2       0.17226+-0.01387    ?     0.17273+-0.00168       ?
earley                  0.36054+-0.00550    ?     0.36670+-0.01024       ? might be 1.0171x slower
boyer                   6.06766+-0.16303          6.01835+-0.14738       
navier-stokes  x2       5.94829+-0.05020          5.94349+-0.03419       
raytrace       x2       1.08885+-0.03810    ?     1.09791+-0.03960       ?
richards       x2       0.11626+-0.00874    ?     0.11770+-0.00836       ? might be 1.0124x slower
splay          x2       0.44481+-0.00488    ?     0.45395+-0.01899       ? might be 1.0205x slower
regexp         x2      25.87122+-1.85551    ?    25.87526+-0.73672       ?
pdfjs          x2      53.79756+-1.25736         53.56009+-0.63223       
mandreel       x2      73.84762+-3.91344    ?    78.50292+-18.05527      ? might be 1.0630x slower
gbemu          x2      52.98956+-11.26955        48.84833+-1.53337         might be 1.0848x faster
closure                 0.71097+-0.00467    ?     0.71797+-0.02552       ?
jquery                  9.94422+-0.20686          9.89728+-0.44068       
box2d          x2      13.90082+-1.11011    ?    14.98441+-2.20534       ? might be 1.0780x slower
zlib           x2     477.03310+-45.25841   ?   480.52492+-15.20169      ?
typescript     x2    1294.37280+-685.71484     1043.26562+-40.76296        might be 1.2407x faster

&lt;geometric&gt;             7.29211+-0.33598          7.25063+-0.10316         might be 1.0057x faster


Benchmark report for AsmBench on admins-MacBook-Air-2 (MacBookAir5,2).

VMs tested:
&quot;Baseline&quot; at /Volumes/Big/ggaren/OpenSource/WebKitBuildBaseline/Release/jsc
&quot;Patch&quot; at /Volumes/Big/ggaren/OpenSource/WebKitBuild/Release/jsc (r215991)

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times
with 95% confidence intervals in milliseconds.

                                 Baseline                   Patch                                       

bigfib.cpp                  702.9005+-25.5903         678.8968+-63.2468         might be 1.0354x faster
cray.c                      513.4209+-25.0330    ?    521.9055+-30.1923       ? might be 1.0165x slower
dry.c                       618.8755+-185.6885   ?    637.2598+-169.5742      ? might be 1.0297x slower
FloatMM.c                   939.8940+-14.4910    ?    940.7554+-15.4689       ?
gcc-loops.cpp              4916.3853+-44.1230        4843.4827+-50.9797         might be 1.0151x faster
n-body.c                   1106.8958+-13.9958        1105.8504+-13.3921       
Quicksort.c                 511.9797+-41.7437    ?    512.0046+-24.8828       ?
stepanov_container.cpp     4315.5320+-224.2974       4297.3511+-66.7650       
Towers.c                    300.1309+-7.9935          296.7681+-12.0559         might be 1.0113x faster

&lt;geometric&gt;                 968.3045+-36.8348         966.3857+-33.1399         might be 1.0020x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306093</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-08 15:29:16 -0700</bug_when>
    <thetext>(Also neutral on Mac Pro.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306097</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2017-05-08 15:39:08 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #7)
&gt; I tested an up-to-date variant of this patch on a 2012 MacBook Air today and
&gt; it appeared to be performance-neutral:

Awesome!

Did you have to change the allocator?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306121</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-08 16:11:05 -0700</bug_when>
    <thetext>&gt; Did you have to change the allocator?

I didn&apos;t end up changing the allocator.

My plan was to speed up the allocator by profiling -- but then I couldn&apos;t reproduce the regression. 

This might mean that some other changes since last year have resolved the issue -- but I guess there&apos;s still a chance that my computer just doesn&apos;t agree with the bot.

I&apos;m going to re-test in-browser.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285860</attachid>
            <date>2016-08-11 15:15:45 -0700</date>
            <delta_ts>2016-08-11 17:23:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160784-20160811151407.patch</filename>
            <type>text/plain</type>
            <size>42278</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YzRmZmU0ZDFmYzRmZTkzNGQzYzc3NThjNjBlY2M1YTYyODdlODJiLi5kZGIzMDAzMTUxMTVkODJk
NTU4ZWFmMTJlNDliOGVjNjU0Yjc2NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNi0wOC0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBSZXZlcnQgbW9zdCBvZiByMjAzODA4CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2hpbmcgdG8gZmFzdE1h
bGxvYygpIGNhdXNlZCByZWdyZXNzaW9ucyBvbiBKZXRzdHJlYW0gYW5kIE9jdGFuZQorICAgICAg
ICBvbiBNYWNCb29rIEFpci4gSSB3YXMgYWJsZSB0byBnZXQgYmFjayBzb21lIG9mIGl0IGluIHRo
ZSBmb2xsb3dpbmcKKyAgICAgICAgcGF0Y2hlcyBidXQgdGhlIHRlc3RzIHRoYXQgbmV2ZXIgZ28g
dG8gRlRMIGFyZSBzdGlsbCByZWdyZXNzZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXZlcnQg
cjIwMzgwOCBleGNlcHQgb2YgdGhlIG5vZGUgaW5kZXguCisgICAgICAgIE5vZGVzIGFyZSBhbGxv
Y2F0ZWQgd2l0aCB0aGUgY3VzdG9tIGFsbG9jYXRvciBsaWtlIGJlZm9yZSBidXQgdGhleSBhcmUK
KyAgICAgICAgbm93IGFsc28ga2VwdCBpbiBhIHRhYmxlLCBhZGRyZXNzZWQgYnkgdGhlIG5vZGUg
aW5kZXguCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0IzU3BhcnNlQ29s
bGVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6cGFja0luZGlj
ZXMpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdBbGxvY2F0b3IuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yOjpSZWdpb246OnNpemUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFsbG9jYXRvcjo6UmVnaW9uOjpoZWFkZXJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpB
bGxvY2F0b3I6OlJlZ2lvbjo6bnVtYmVyT2ZUaGluZ3NQZXJSZWdpb24pOgorICAgICAgICAoSlND
OjpERkc6OkFsbG9jYXRvcjo6UmVnaW9uOjpkYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpBbGxv
Y2F0b3I6OlJlZ2lvbjo6aXNJblRoaXNSZWdpb24pOgorICAgICAgICAoSlNDOjpERkc6OkFsbG9j
YXRvcjo6UmVnaW9uOjpyZWdpb25Gb3IpOgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRvcjxU
Pjo6QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpBbGxvY2F0b3I8VD46On5BbGxvY2F0
b3IpOgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRvcjxUPjo6YWxsb2NhdGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkFsbG9jYXRvcjxUPjo6ZnJlZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWxs
b2NhdG9yPFQ+OjpmcmVlQWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpBbGxvY2F0b3I8VD46OnJl
c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpBbGxvY2F0b3I8VD46OmluZGV4T2YpOgorICAgICAg
ICAoSlNDOjpERkc6OkFsbG9jYXRvcjxUPjo6YWxsb2NhdG9yT2YpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFsbG9jYXRvcjxUPjo6YnVtcEFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBbGxv
Y2F0b3I8VD46OmZyZWVMaXN0QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRv
cjxUPjo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKEpTQzo6REZHOjpBbGxvY2F0b3I8VD46OmZy
ZWVSZWdpb25zU3RhcnRpbmdBdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+Ojpz
dGFydEJ1bXBpbmdJbik6CisgICAgICAgICogZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6R3JhcGg6OkdyYXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
fkdyYXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkTm9kZVRvTWFwQnlJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmRlbGV0ZU5vZGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjpwYWNrTm9kZUluZGljZXMpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGROb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6bWF4Tm9kZUNvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bm9kZUF0KToK
KyAgICAgICAgKiBkZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpMb25nTGl2ZWRTdGF0ZTo6TG9uZ0xpdmVkU3RhdGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkxvbmdMaXZlZFN0YXRlOjp+TG9uZ0xpdmVkU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6
OkxvbmdMaXZlZFN0YXRlOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogZGZnL0RGR0xvbmdMaXZl
ZFN0YXRlLmg6IEFkZGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgICogZGZn
L0RGR05vZGVBbGxvY2F0b3IuaDogQWRkZWQuCisgICAgICAgIChvcGVyYXRvciBuZXcgKToKKyAg
ICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGls
ZUluVGhyZWFkKToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBs
KToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJ1blRocmVhZCk6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorCiAyMDE2LTA4LTExICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luXSBXYXJuaW5nIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCAwM2RmY2FiYTg0Y2FkOWVkZTU2OTc1ZWQyNTkxNDIzNTdjNGQ5OWU4Li44
MzE1MGNiNzhlMmJjNTA4YzgxOTgzMzAwNWZiMzY5NjUyN2FiYjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMTIsNiArMzEyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBkZmcvREZHTGF6eUpTVmFsdWUuY3BwCiAgICAgZGZnL0RGR0xhenlOb2Rl
LmNwcAogICAgIGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCisgICAgZGZnL0RGR0xv
bmdMaXZlZFN0YXRlLmNwcAogICAgIGRmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5j
cHAKICAgICBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RG
R01heUV4aXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUyODExNWFkZWUx
M2UyOGI5OTlmNmQxYTI0MmVkNWE5YTg5OTM0YTQuLjRhYzM2NWMzM2MyODE5ZTAyODNlMTY4MTk5
YTdkZjc2NTg1NjM5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODUsNiAr
ODg1LDggQEAKIAkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxh
Y2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgg
Ki87IH07CiAJCTBGRjA1NEY5MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlv
bkZ1enouY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGMDU0RjcxQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ei5jcHAg
Ki87IH07CiAJCTBGRjA1NEZBMUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlv
bkZ1enouaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjA1NEY4MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkYwRjE5OTE2
QjcyOUY2MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUMxNkI2Mjc3MjAwM0Y2OTZCIC8q
IERGR0xvbmdMaXZlZFN0YXRlLmNwcCAqLzsgfTsKKwkJMEZGMEYxOUIxNkI3MjlGQTAwNURGOTVC
IC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3Rh
dGUuaCAqLzsgfTsKIAkJMEZGMEYxOUMxNkI3MkEwMzAwNURGOTVCIC8qIERGR05vZGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUUxNkI2
Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGUuY3BwICovOyB9OwogCQkwRkYwRjE5RDE2QjcyQTA4MDA1
REY5NUIgLyogREZHQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQjRCNTFBMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdDb21tb24uY3BwICov
OyB9OwogCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxQjE2QjYyNzcyMDAz
RjY5NkIgLyogREZHRWRnZS5jcHAgKi87IH07CkBAIC05MzcsNyArOTM5LDkgQEAKIAkJMEZGQTU0
OTgxNkI4ODM1MzAwQjNBOTgyIC8qIEE2NERPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MkEzQTIzMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRE
T3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGQjZDMzgxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQjZDMzYxQUY0OEREQzAwREIx
QkY3IC8qIFR5cGVvZlR5cGUuY3BwICovOyB9OwogCQkwRkZCNkMzOTFBRjQ4RERDMDBEQjFCRjcg
LyogVHlwZW9mVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZGQjZDMzcxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkZCOTIxODE2RDAyRUIy
MDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9y
LmggKi87IH07CiAJCTBGRkI5MjFBMTZEMDJFQzUwMDU1QTVEQiAvKiBERkdCYXNpY0Jsb2NrSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
NTY1MjIxNkFCNzgwQTAwMTk3NjUzIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggKi87IH07CisJ
CTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxRjE2QjYyNzcyMDAz
RjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICovOyB9OwogCQkwRkZCOTIxQzE2RDAyRjExMDA1
NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERG
R09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgfTsKIAkJMEZGQjkyMUQxNkQwMkYzMDAwNTVB
NURCIC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyogREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaCAqLzsgfTsKIAkJMEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVD
b25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI3OTMsOSArMjc5
NywxMyBAQAogCQkwRkIzODc5MTFCRkQzMUExMDBFM0FCMUUgLyogRlRMQ29tcGlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExDb21waWxlLmNwcDsgcGF0aCA9
IGZ0bC9GVExDb21waWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNDM4
QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVjdHVyZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkI0QjUxMDE2QjNBOTY0MDAzRjY5NkIgLyogREZHTWluaWZpZWRJRC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElELmg7IHBhdGggPSBk
ZmcvREZHTWluaWZpZWRJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0QjUx
OTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0FsbG9jYXRvci5oOyBwYXRoID0gZGZnL0RGR0FsbG9jYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUxQTE2QjYyNzcyMDAzRjY5NkIgLyog
REZHQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Nv
bW1vbi5jcHA7IHBhdGggPSBkZmcvREZHQ29tbW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZCNEI1MUIxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0VkZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRWRnZS5jcHA7IHBhdGggPSBkZmcvREZH
RWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjRCNTFDMTZCNjI3NzIw
MDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdMb25nTGl2ZWRTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHTG9uZ0xp
dmVkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0QjUxRDE2QjYy
NzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHTG9uZ0xpdmVkU3RhdGUuaDsgcGF0aCA9IGRmZy9ERkdMb25nTGl2ZWRT
dGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUxRTE2QjYyNzcyMDAz
RjY5NkIgLyogREZHTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdOb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZCNEI1MUYxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGVBbGxvY2F0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUFsbG9jYXRvci5oOyBw
YXRoID0gZGZnL0RGR05vZGVBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZCNEI1MjExNkI2Mjc4RDAwM0Y2OTZCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25FeGVjdXRhYmxl
RHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRCNTIyMTZCNjI3OEQw
MDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGgu
Y3BwOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02MTkzLDYgKzYyMDEsNyBAQAogCQkJCTBGMThEM0NEMUI1NUE2RTAwMDJDNUM5
RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAogCQkJCTBGMThEM0NF
MUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLywK
IAkJCQkwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oICovLAor
CQkJCTBGQjRCNTE5MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdBbGxvY2F0b3IuaCAqLywKIAkJCQkw
RjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oICovLAogCQkJ
CTBGMkREODBDMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
LmNwcCAqLywKIAkJCQkwRjJERDgwRDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZS5oICovLApAQCAtNjM0Miw2ICs2MzUxLDggQEAKIAkJCQk3OUM0QjE1QzFC
QTIxNThGMDBGRDU5MkUgLyogREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5o
ICovLAogCQkJCUE3RDg5Q0VDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lz
UGhhc2UuY3BwICovLAogCQkJCUE3RDg5Q0VEMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVz
c0FuYWx5c2lzUGhhc2UuaCAqLywKKwkJCQkwRkI0QjUxQzE2QjYyNzcyMDAzRjY5NkIgLyogREZH
TG9uZ0xpdmVkU3RhdGUuY3BwICovLAorCQkJCTBGQjRCNTFEMTZCNjI3NzIwMDNGNjk2QiAvKiBE
RkdMb25nTGl2ZWRTdGF0ZS5oICovLAogCQkJCUE3NjdCNUIzMTdBMEI5NjUwMDYzRDk0MCAvKiBE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJQTc2N0I1QjQxN0EwQjk2
NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggKi8sCiAJCQkJNzlG
OEZDMUMxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNw
cCAqLywKQEAgLTYzNjEsNiArNjM3Miw3IEBACiAJCQkJQTczNzgxMEIxNzk5RUEyRTAwODE3NTMz
IC8qIERGR05hdHVyYWxMb29wcy5oICovLAogCQkJCTBGQjRCNTFFMTZCNjI3NzIwMDNGNjk2QiAv
KiBERkdOb2RlLmNwcCAqLywKIAkJCQk4NkVDQTNFOTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9k
ZS5oICovLAorCQkJCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlQWxsb2NhdG9y
LmggKi8sCiAJCQkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAg
Ki8sCiAJCQkJMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovLAog
CQkJCTBGNUQwODVDMUI4Q0Y5OUQwMDExNDNCNCAvKiBERkdOb2RlT3JpZ2luLmNwcCAqLywKQEAg
LTcyOTgsNiArNzMxMCw3IEBACiAJCQkJOTk4RUQ2NzUxQkVENzY4QzAwREQ4MDE3IC8qIFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRjgxQzEzNkUy
NTAwMzIzRjY3IC8qIEIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3Vt
ZW50UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4QkUwMEJCQjhF
OCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTczOTUsNiArNzQwOCw3IEBACiAJCQkJOTlENkExMTYxQkVBRDM0RDAwRTI1
QzM3IC8qIFJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5QzRC
MTVFMUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3QTBCOENDMDA3NzNBRDggLyogREZH
TGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkYwRjE5QjE2Qjcy
OUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MzM4REYyMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlGOEZDMUYxQjlGRUQwRjAwQ0E2NkFCIC8q
IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTc0MDcs
NiArNzQyMSw3IEBACiAJCQkJMEZGMkNENUMxQjYxQTRGODAwNDk1NUE4IC8qIERGR011bHRpR2V0
QnlPZmZzZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1
MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRF
RjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGQjkyMUIxNkQw
MkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
Qjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBp
biBIZWFkZXJzICovLApAQCAtODk3Miw2ICs4OTg3LDcgQEAKIAkJCQlBN0Q5QTI5NzE3QTBCQzc0
MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc5QzRCMTVE
MUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0ZCMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdM
aXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGMEYxOTkxNkI3
MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3NjdCNUI1MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OUY4RkMxRTFCOUZFRDBGMDBDQTY2QUIgLyogREZH
TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODc0
RUQxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01heUV4aXQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKaW5kZXggMzRlNjFk
YTEzM2Y0ZmI5M2U5NzhjOTEwYzE3Y2I5MWMxNTliZWJmYi4uYzM5OGIzY2ViYzk2YjEyYjE2ZmIx
MzA4OGEzMTk0YmUzZmFhMTUyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU3BhcnNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Nw
YXJzZUNvbGxlY3Rpb24uaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBCM1NwYXJzZUNvbGxl
Y3Rpb25faAogI2RlZmluZSBCM1NwYXJzZUNvbGxlY3Rpb25faAogCisjaWYgRU5BQkxFKEIzX0pJ
VCkKKwogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTc0LDQyICs3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgbV92ZWN0b3JbdmFsdWUt
Pm1faW5kZXhdID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICB2b2lkIHBhY2tJbmRpY2VzKCkKLSAg
ICB7Ci0gICAgICAgIGlmIChtX2luZGV4RnJlZUxpc3QuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIHVuc2lnbmVkIGhvbGVJbmRleCA9IDA7Ci0gICAgICAgIHVuc2ln
bmVkIGVuZEluZGV4ID0gbV92ZWN0b3Iuc2l6ZSgpOwotCi0gICAgICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgICAgICB3aGlsZSAoaG9sZUluZGV4IDwgZW5kSW5kZXggJiYgbV92ZWN0b3JbaG9s
ZUluZGV4XSkKLSAgICAgICAgICAgICAgICArK2hvbGVJbmRleDsKLQotICAgICAgICAgICAgaWYg
KGhvbGVJbmRleCA9PSBlbmRJbmRleCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIEFTU0VSVChob2xlSW5kZXggPCBtX3ZlY3Rvci5zaXplKCkpOwotICAgICAgICAgICAgQVNT
RVJUKCFtX3ZlY3Rvcltob2xlSW5kZXhdKTsKLQotICAgICAgICAgICAgZG8gewotICAgICAgICAg
ICAgICAgIC0tZW5kSW5kZXg7Ci0gICAgICAgICAgICB9IHdoaWxlICghbV92ZWN0b3JbZW5kSW5k
ZXhdICYmIGVuZEluZGV4ID4gaG9sZUluZGV4KTsKLQotICAgICAgICAgICAgaWYgKGhvbGVJbmRl
eCA9PSBlbmRJbmRleCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEFTU0VS
VChlbmRJbmRleCA+IGhvbGVJbmRleCk7Ci0gICAgICAgICAgICBBU1NFUlQobV92ZWN0b3JbZW5k
SW5kZXhdKTsKLQotICAgICAgICAgICAgYXV0byYgdmFsdWUgPSBtX3ZlY3RvcltlbmRJbmRleF07
Ci0gICAgICAgICAgICB2YWx1ZS0+bV9pbmRleCA9IGhvbGVJbmRleDsKLSAgICAgICAgICAgIG1f
dmVjdG9yW2hvbGVJbmRleF0gPSBXVEZNb3ZlKHZhbHVlKTsKLSAgICAgICAgICAgICsraG9sZUlu
ZGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgbV9pbmRleEZyZWVMaXN0LnJlc2l6ZSgwKTsKLSAg
ICAgICAgbV92ZWN0b3IucmVzaXplKGVuZEluZGV4KTsKLSAgICB9Ci0KICAgICB1bnNpZ25lZCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuaXNFbXB0eSgpOyB9CiAgICAgCkBAIC0xNzQsNSAr
MTQwLDcgQEAgcHJpdmF0ZToKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKKyNlbmRpZiAv
LyBFTkFCTEUoQjNfSklUKQorCiAjZW5kaWYgLy8gQjNTcGFyc2VDb2xsZWN0aW9uX2gKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbGxvY2F0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM4MGRmMDAx
YzVmMjJhNDg2ZDZhYzhkMzg5ZTdjMjM5ZDBiNTlhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWxsb2NhdG9yLmgKQEAgLTAsMCArMSwyMzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdB
bGxvY2F0b3JfaAorI2RlZmluZSBERkdBbGxvY2F0b3JfaAorCisjaWYgRU5BQkxFKERGR19KSVQp
CisKKyNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gQ3VzdG9tIHBvb2wgYWxs
b2NhdG9yIGZvciBleGFjdGx5IG9uZSB0eXBlICh0eXBlIFQpLiBJdCBoYXMgZmFzdCAoTygxKSwg
b25seSBhIGZldworLy8gaW5zdHJ1Y3Rpb25zKSBhbGxvY2F0b3IsIGFuZCBhIHNpbWlsYXJseSBm
YXN0IGZyZWUoKS4gUmVjeWNsaW5nIHdvcmtzIGlmIGVpdGhlciBvZgorLy8gdGhlIGZvbGxvd2lu
ZyBpcyB0cnVlOgorLy8gLSBUIGhhcyBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4gSW4gdGhhdCBjYXNl
IHlvdSBkb24ndCBoYXZlIHRvIGV2ZXIgY2FsbCBmcmVlKCkgb24KKy8vICAgYW55dGhpbmcuIFlv
dSBjYW4ganVzdCBjYWxsIGZyZWVBbGwoKSBpbnN0ZWFkLgorLy8gLSBZb3UgY2FsbCBmcmVlKCkg
b24gYWxsIFQncyB0aGF0IHlvdSBhbGxvY2F0ZWQsIGFuZCBuZXZlciB1c2UgZnJlZUFsbCgpLgor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICBB
bGxvY2F0b3IoKTsKKyAgICB+QWxsb2NhdG9yKCk7CisgICAgCisgICAgdm9pZCogYWxsb2NhdGUo
KTsgLy8gVXNlIHBsYWNlbWVudCBuZXcgdG8gYWxsb2NhdGUsIGFuZCBhdm9pZCB1c2luZyB0aGlz
IG1ldGhvZC4KKyAgICB2b2lkIGZyZWUoVCopOyAvLyBDYWxsIHRoaXMgbWV0aG9kIHRvIGRlbGV0
ZTsgbmV2ZXIgdXNlICdkZWxldGUnIGRpcmVjdGx5LgorICAgIAorICAgIHZvaWQgZnJlZUFsbCgp
OyAvLyBPbmx5IGNhbGwgdGhpcyBpZiB5b3UndmUgZWl0aGVyIGZyZWVkIGV2ZXJ5dGhpbmcgb3Ig
aWYgVCBoYXMgYSB0cml2aWFsIGRlc3RydWN0b3IuCisgICAgdm9pZCByZXNldCgpOyAvLyBMaWtl
IGZyZWVBbGwoKSwgYnV0IGFsc28gcmV0dXJucyBhbGwgbWVtb3J5IHRvIHRoZSBPUy4KKyAgICAK
KyAgICB1bnNpZ25lZCBpbmRleE9mKGNvbnN0IFQqKTsKKyAgICAKKyAgICBzdGF0aWMgQWxsb2Nh
dG9yKiBhbGxvY2F0b3JPZihjb25zdCBUKik7CisgICAgCitwcml2YXRlOgorICAgIHZvaWQqIGJ1
bXBBbGxvY2F0ZSgpOworICAgIHZvaWQqIGZyZWVMaXN0QWxsb2NhdGUoKTsKKyAgICB2b2lkKiBh
bGxvY2F0ZVNsb3coKTsKKworICAgIHN0cnVjdCBSZWdpb24geworICAgICAgICBzdGF0aWMgc2l6
ZV90IHNpemUoKSB7IHJldHVybiA2NCAqIEtCOyB9CisgICAgICAgIHN0YXRpYyBzaXplX3QgaGVh
ZGVyU2l6ZSgpIHsgcmV0dXJuIHN0ZDo6bWF4KHNpemVvZihSZWdpb24pLCBzaXplb2YoVCkpOyB9
CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpIHsgcmV0
dXJuIChzaXplKCkgLSBoZWFkZXJTaXplKCkpIC8gc2l6ZW9mKFQpOyB9CisgICAgICAgIFQqIGRh
dGEoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykg
KyBoZWFkZXJTaXplKCkpOyB9CisgICAgICAgIGJvb2wgaXNJblRoaXNSZWdpb24oY29uc3QgVCog
cG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvaW50ZXIgLSBkYXRhKCkp
IDwgbnVtYmVyT2ZUaGluZ3NQZXJSZWdpb24oKTsgfQorICAgICAgICBzdGF0aWMgUmVnaW9uKiBy
ZWdpb25Gb3IoY29uc3QgVCogcG9pbnRlcikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFJlZ2lvbio+
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBvaW50ZXIpICYgfihzaXplKCkgLSAxKSk7IH0KKyAg
ICAgICAgCisgICAgICAgIHZvaWQqIG1fYWxsb2NhdGlvbjsKKyAgICAgICAgQWxsb2NhdG9yKiBt
X2FsbG9jYXRvcjsKKyAgICAgICAgUmVnaW9uKiBtX25leHQ7CisgICAgfTsKKyAgICAKKyAgICB2
b2lkIGZyZWVSZWdpb25zU3RhcnRpbmdBdChSZWdpb24qKTsKKyAgICB2b2lkIHN0YXJ0QnVtcGlu
Z0luKFJlZ2lvbiopOworICAgIAorICAgIFJlZ2lvbiogbV9yZWdpb25IZWFkOworICAgIHZvaWQq
KiBtX2ZyZWVMaXN0SGVhZDsKKyAgICBUKiBtX2J1bXBFbmQ7CisgICAgdW5zaWduZWQgbV9idW1w
UmVtYWluaW5nOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBBbGxvY2F0b3I8
VD46OkFsbG9jYXRvcigpCisgICAgOiBtX3JlZ2lvbkhlYWQoMCkKKyAgICAsIG1fZnJlZUxpc3RI
ZWFkKDApCisgICAgLCBtX2J1bXBSZW1haW5pbmcoMCkKK3sKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK2lubGluZSBBbGxvY2F0b3I8VD46On5BbGxvY2F0b3IoKQoreworICAgIHJlc2V0KCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitBTFdBWVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRv
cjxUPjo6YWxsb2NhdGUoKQoreworICAgIHZvaWQqIHJlc3VsdCA9IGJ1bXBBbGxvY2F0ZSgpOwor
ICAgIGlmIChMSUtFTFkoISFyZXN1bHQpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIHJl
dHVybiBmcmVlTGlzdEFsbG9jYXRlKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lk
IEFsbG9jYXRvcjxUPjo6ZnJlZShUKiBvYmplY3QpCit7CisgICAgb2JqZWN0LT5+VCgpOworICAg
IAorICAgIHZvaWQqKiBjZWxsID0gYml0d2lzZV9jYXN0PHZvaWQqKj4ob2JqZWN0KTsKKyAgICAq
Y2VsbCA9IG1fZnJlZUxpc3RIZWFkOworICAgIG1fZnJlZUxpc3RIZWFkID0gY2VsbDsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgQWxsb2NhdG9yPFQ+OjpmcmVlQWxsKCkKK3sKKyAg
ICBpZiAoIW1fcmVnaW9uSGVhZCkgeworICAgICAgICBBU1NFUlQoIW1fYnVtcFJlbWFpbmluZyk7
CisgICAgICAgIEFTU0VSVCghbV9mcmVlTGlzdEhlYWQpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIC8vIFNpbmNlIHRoZSBjYWxsZXIgaXMgb3B0aW5nIG91dCBvZiBjYWxsaW5n
IHRoZSBkZXN0cnVjdG9yIGZvciBhbnkgYWxsb2NhdGVkIHRoaW5nLAorICAgIC8vIHdlIGhhdmUg
dHdvIGNob2ljZXMsIHBsdXMgYSBjb250aW51dW0gYmV0d2Vlbjogd2UgY2FuIGVpdGhlciBqdXN0
IGRlbGV0ZSBhbGwgcmVnaW9ucworICAgIC8vIChpLmUuIGNhbGwgcmVzZXQoKSksIG9yIHdlIGNh
biBtYWtlIGFsbCByZWdpb25zIGF2YWlsYWJsZSBmb3IgcmV1c2UuIFdlIGRvIHNvbWV0aGluZwor
ICAgIC8vIHRoYXQgb3B0aW1pemVzIGZvciAoYSkgc3BlZWQgb2YgZnJlZUFsbCgpLCAoYikgdGhl
IGFzc3VtcHRpb24gdGhhdCBpZiB0aGUgdXNlciBjYWxscworICAgIC8vIGZyZWVBbGwoKSB0aGVu
IHRoZXkgd2lsbCBwcm9iYWJseSBiZSBjYWxsaW5nIGFsbG9jYXRlKCkgaW4gdGhlIG5lYXIgZnV0
dXJlLiBOYW1lbHksCisgICAgLy8gd2UgZnJlZSBhbGwgYnV0IG9uZSByZWdpb24sIGFuZCBtYWtl
IHRoZSByZW1haW5pbmcgcmVnaW9uIGEgYnVtcCBhbGxvY2F0aW9uIHJlZ2lvbi4KKyAgICAKKyAg
ICBmcmVlUmVnaW9uc1N0YXJ0aW5nQXQobV9yZWdpb25IZWFkLT5tX25leHQpOworICAgIAorICAg
IG1fcmVnaW9uSGVhZC0+bV9uZXh0ID0gMDsKKyAgICBtX2ZyZWVMaXN0SGVhZCA9IDA7CisgICAg
c3RhcnRCdW1waW5nSW4obV9yZWdpb25IZWFkKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3ZvaWQgQWxsb2NhdG9yPFQ+OjpyZXNldCgpCit7CisgICAgZnJlZVJlZ2lvbnNTdGFydGluZ0F0
KG1fcmVnaW9uSGVhZCk7CisgICAgCisgICAgbV9yZWdpb25IZWFkID0gMDsKKyAgICBtX2ZyZWVM
aXN0SGVhZCA9IDA7CisgICAgbV9idW1wUmVtYWluaW5nID0gMDsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3Vuc2lnbmVkIEFsbG9jYXRvcjxUPjo6aW5kZXhPZihjb25zdCBUKiBvYmplY3Qp
Cit7CisgICAgdW5zaWduZWQgbnVtUmVnaW9ucyA9IDA7CisgICAgZm9yIChSZWdpb24qIHJlZ2lv
biA9IG1fcmVnaW9uSGVhZDsgcmVnaW9uOyByZWdpb24gPSByZWdpb24tPm1fbmV4dCkKKyAgICAg
ICAgbnVtUmVnaW9ucysrOworICAgIHVuc2lnbmVkIHJlZ2lvbkluZGV4ID0gMDsKKyAgICBmb3Ig
KFJlZ2lvbiogcmVnaW9uID0gbV9yZWdpb25IZWFkOyByZWdpb247IHJlZ2lvbiA9IHJlZ2lvbi0+
bV9uZXh0KSB7CisgICAgICAgIGlmIChyZWdpb24tPmlzSW5UaGlzUmVnaW9uKG9iamVjdCkpCisg
ICAgICAgICAgICByZXR1cm4gKG51bVJlZ2lvbnMgLSAxIC0gcmVnaW9uSW5kZXgpICogUmVnaW9u
OjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpICsgKG9iamVjdCAtIHJlZ2lvbi0+ZGF0YSgpKTsK
KyAgICAgICAgcmVnaW9uSW5kZXgrKzsKKyAgICB9CisgICAgQ1JBU0goKTsKKyAgICByZXR1cm4g
MDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0FsbG9jYXRvcjxUPiogQWxsb2NhdG9yPFQ+
OjphbGxvY2F0b3JPZihjb25zdCBUKiBvYmplY3QpCit7CisgICAgcmV0dXJuIFJlZ2lvbjo6cmVn
aW9uRm9yKG9iamVjdCktPm1fYWxsb2NhdG9yOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
QUxXQVlTX0lOTElORSB2b2lkKiBBbGxvY2F0b3I8VD46OmJ1bXBBbGxvY2F0ZSgpCit7CisgICAg
aWYgKHVuc2lnbmVkIHJlbWFpbmluZyA9IG1fYnVtcFJlbWFpbmluZykgeworICAgICAgICByZW1h
aW5pbmctLTsKKyAgICAgICAgbV9idW1wUmVtYWluaW5nID0gcmVtYWluaW5nOworICAgICAgICBy
ZXR1cm4gbV9idW1wRW5kIC0gKHJlbWFpbmluZyArIDEpOworICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQqIEFsbG9jYXRvcjxUPjo6ZnJlZUxpc3RB
bGxvY2F0ZSgpCit7CisgICAgdm9pZCoqIHJlc3VsdCA9IG1fZnJlZUxpc3RIZWFkOworICAgIGlm
IChVTkxJS0VMWSghcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdygpOworICAg
IG1fZnJlZUxpc3RIZWFkID0gYml0d2lzZV9jYXN0PHZvaWQqKj4oKnJlc3VsdCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQqIEFsbG9jYXRvcjxU
Pjo6YWxsb2NhdGVTbG93KCkKK3sKKyAgICBBU1NFUlQoIW1fZnJlZUxpc3RIZWFkKTsKKyAgICBB
U1NFUlQoIW1fYnVtcFJlbWFpbmluZyk7CisgICAgCisgICAgaWYgKGxvZ0NvbXBpbGF0aW9uQ2hh
bmdlcygpKQorICAgICAgICBkYXRhTG9nKCJBbGxvY2F0aW5nIGFub3RoZXIgYWxsb2NhdG9yIHJl
Z2lvbi5cbiIpOworCisgICAgdm9pZCogYWxsb2NhdGlvbiA9IGZhc3RBbGlnbmVkTWFsbG9jKFJl
Z2lvbjo6c2l6ZSgpLCBSZWdpb246OnNpemUoKSk7CisgICAgUmVnaW9uKiByZWdpb24gPSBzdGF0
aWNfY2FzdDxSZWdpb24qPihhbGxvY2F0aW9uKTsKKyAgICByZWdpb24tPm1fYWxsb2NhdGlvbiA9
IGFsbG9jYXRpb247CisgICAgcmVnaW9uLT5tX2FsbG9jYXRvciA9IHRoaXM7CisgICAgc3RhcnRC
dW1waW5nSW4ocmVnaW9uKTsKKyAgICByZWdpb24tPm1fbmV4dCA9IG1fcmVnaW9uSGVhZDsKKyAg
ICBtX3JlZ2lvbkhlYWQgPSByZWdpb247CisgICAgCisgICAgdm9pZCogcmVzdWx0ID0gYnVtcEFs
bG9jYXRlKCk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgQWxsb2NhdG9yPFQ+OjpmcmVlUmVnaW9uc1N0YXJ0
aW5nQXQodHlwZW5hbWUgQWxsb2NhdG9yPFQ+OjpSZWdpb24qIHJlZ2lvbikKK3sKKyAgICB3aGls
ZSAocmVnaW9uKSB7CisgICAgICAgIFJlZ2lvbiogbmV4dFJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0
OworICAgICAgICBmYXN0QWxpZ25lZEZyZWUocmVnaW9uLT5tX2FsbG9jYXRpb24pOworICAgICAg
ICByZWdpb24gPSBuZXh0UmVnaW9uOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3ZvaWQgQWxsb2NhdG9yPFQ+OjpzdGFydEJ1bXBpbmdJbih0eXBlbmFtZSBBbGxvY2F0b3I8VD46
OlJlZ2lvbiogcmVnaW9uKQoreworICAgIG1fYnVtcEVuZCA9IHJlZ2lvbi0+ZGF0YSgpICsgUmVn
aW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpOworICAgIG1fYnVtcFJlbWFpbmluZyA9IFJl
Z2lvbjo6bnVtYmVyT2ZUaGluZ3NQZXJSZWdpb24oKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdBbGxv
Y2F0b3JfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKaW5kZXggZTE5
OTc3MzU0NDQxNjRmY2I2MDViMmFkN2U1MzcwYzdkNWI3NTA4My4uZmYzMjU3YTliM2Y0NDNiZTcw
MTA4MWQ3Nzc4NDM0ODU0YjFjZjU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJp
dmVyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21w
aWxlSW1wbCgKICAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uRGVmZXJyZWQ7CiAgICAgfQogICAg
IAotICAgIHBsYW4tPmNvbXBpbGVJblRocmVhZChudWxscHRyKTsKKyAgICBwbGFuLT5jb21waWxl
SW5UaHJlYWQoKnZtLmRmZ1N0YXRlLCAwKTsKICAgICByZXR1cm4gcGxhbi0+ZmluYWxpemVXaXRo
b3V0Tm90aWZ5aW5nQ2FsbGJhY2soKTsKIH0KICNlbHNlIC8vIEVOQUJMRShERkdfSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA0NGMyOGM1Y2Y0MmMxY2E5ZWRm
ZmQ5ZTEyYTlmNWY1ZmQ2NmMyZTBhLi4yOWI4MjkyNDU5Y2U4Yzg1NjU2ZDkyYTk3NGM0NjhkY2Nl
MWY4NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtNjYsMTEg
KzY2LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBkZmdPcE5hbWVzW10gPSB7CiAjdW5kZWYgU1RS
SU5HSVpFX0RGR19PUF9FTlVNCiB9OwogCi1HcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFu
KQorR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbiwgTG9uZ0xpdmVkU3RhdGUmIGxvbmdM
aXZlZFN0YXRlKQogICAgIDogbV92bSh2bSkKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9j
b2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2NvZGVC
bG9jay0+YWx0ZXJuYXRpdmUoKSkKKyAgICAsIG1fYWxsb2NhdG9yKGxvbmdMaXZlZFN0YXRlLm1f
YWxsb2NhdG9yKQogICAgICwgbV9jZmcoc3RkOjptYWtlX3VuaXF1ZTxDRkc+KCp0aGlzKSkKICAg
ICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9yZUZp
eHBvaW50KQpAQCAtODYsNiArODcsMTcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxh
bikKIAogR3JhcGg6On5HcmFwaCgpCiB7CisgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSBudW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICBCYXNpY0Jsb2NrKiBibG9j
ayA9IHRoaXMtPmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICBpZiAoIWJsb2NrKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBwaGlJbmRleCA9IGJsb2Nr
LT5waGlzLnNpemUoKTsgcGhpSW5kZXgtLTspCisgICAgICAgICAgICBtX2FsbG9jYXRvci5mcmVl
KGJsb2NrLT5waGlzW3BoaUluZGV4XSk7CisgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4
ID0gYmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07KQorICAgICAgICAgICAgbV9hbGxvY2F0b3Iu
ZnJlZShibG9jay0+YXQobm9kZUluZGV4KSk7CisgICAgfQorICAgIG1fYWxsb2NhdG9yLmZyZWVB
bGwoKTsKIH0KIAogY29uc3QgY2hhciAqR3JhcGg6Om9wTmFtZShOb2RlVHlwZSBvcCkKQEAgLTU2
Nyw2ICs1NzksMTkgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29u
dGV4dCogY29udGV4dCkKICAgICB9CiB9CiAKK3ZvaWQgR3JhcGg6OmFkZE5vZGVUb01hcEJ5SW5k
ZXgoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobV9ub2RlSW5kZXhGcmVlTGlzdC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgbm9kZS0+bV9pbmRleCA9IG1fbm9kZXNCeUluZGV4LnNpemUoKTsKKyAgICAg
ICAgbV9ub2Rlc0J5SW5kZXguYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHVuc2lnbmVkIGluZGV4ID0gbV9ub2RlSW5kZXhGcmVlTGlzdC50YWtlTGFzdCgpOworICAg
IG5vZGUtPm1faW5kZXggPSBpbmRleDsKKyAgICBBU1NFUlQoIW1fbm9kZXNCeUluZGV4W2luZGV4
XSk7CisgICAgbV9ub2Rlc0J5SW5kZXhbaW5kZXhdID0gbm9kZTsKK30KKwogdm9pZCBHcmFwaDo6
ZGVsZXRlTm9kZShOb2RlKiBub2RlKQogewogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpICYm
IG1fZm9ybSA9PSBTU0EpIHsKQEAgLTU3NSwxMiArNjAwLDQ5IEBAIHZvaWQgR3JhcGg6OmRlbGV0
ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERGR19BU1NFUlQoKnRoaXMsIG5vZGUsICFi
bG9jay0+c3NhLT5saXZlQXRUYWlsLmNvbnRhaW5zKG5vZGUpKTsKICAgICAgICAgfQogICAgIH0K
LSAgICBtX25vZGVzLnJlbW92ZShub2RlKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZXNC
eUluZGV4W25vZGUtPm1faW5kZXhdID09IG5vZGUpOworICAgIHVuc2lnbmVkIG5vZGVJbmRleCA9
IG5vZGUtPm1faW5kZXg7CisgICAgbV9ub2Rlc0J5SW5kZXhbbm9kZUluZGV4XSA9IG51bGxwdHI7
CisgICAgbV9ub2RlSW5kZXhGcmVlTGlzdC5hcHBlbmQobm9kZUluZGV4KTsKKworICAgIG1fYWxs
b2NhdG9yLmZyZWUobm9kZSk7CiB9CiAKIHZvaWQgR3JhcGg6OnBhY2tOb2RlSW5kaWNlcygpCiB7
Ci0gICAgbV9ub2Rlcy5wYWNrSW5kaWNlcygpOworICAgIGlmIChtX25vZGVJbmRleEZyZWVMaXN0
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgaG9sZUluZGV4ID0g
MDsKKyAgICB1bnNpZ25lZCBlbmRJbmRleCA9IG1fbm9kZXNCeUluZGV4LnNpemUoKTsKKworICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgIHdoaWxlIChob2xlSW5kZXggPCBlbmRJbmRleCAmJiBt
X25vZGVzQnlJbmRleFtob2xlSW5kZXhdKQorICAgICAgICAgICAgKytob2xlSW5kZXg7CisKKyAg
ICAgICAgaWYgKGhvbGVJbmRleCA9PSBlbmRJbmRleCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBBU1NFUlQoaG9sZUluZGV4IDwgbV9ub2Rlc0J5SW5kZXguc2l6ZSgpKTsKKyAgICAgICAg
QVNTRVJUKCFtX25vZGVzQnlJbmRleFtob2xlSW5kZXhdKTsKKworICAgICAgICBkbyB7CisgICAg
ICAgICAgICAtLWVuZEluZGV4OworICAgICAgICB9IHdoaWxlICghbV9ub2Rlc0J5SW5kZXhbZW5k
SW5kZXhdICYmIGVuZEluZGV4ID4gaG9sZUluZGV4KTsKKworICAgICAgICBpZiAoaG9sZUluZGV4
ID09IGVuZEluZGV4KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEFTU0VSVChlbmRJbmRl
eCA+IGhvbGVJbmRleCk7CisgICAgICAgIEFTU0VSVChtX25vZGVzQnlJbmRleFtlbmRJbmRleF0p
OworCisgICAgICAgIGF1dG8mIHZhbHVlID0gbV9ub2Rlc0J5SW5kZXhbZW5kSW5kZXhdOworICAg
ICAgICB2YWx1ZS0+bV9pbmRleCA9IGhvbGVJbmRleDsKKyAgICAgICAgbV9ub2Rlc0J5SW5kZXhb
aG9sZUluZGV4XSA9IFdURk1vdmUodmFsdWUpOworICAgICAgICArK2hvbGVJbmRleDsKKyAgICB9
CisKKyAgICBtX25vZGVJbmRleEZyZWVMaXN0LnJlc2l6ZSgwKTsKKyAgICBtX25vZGVzQnlJbmRl
eC5yZXNpemUoZW5kSW5kZXgpOwogfQogCiB2b2lkIEdyYXBoOjpkZXRocmVhZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNTJiNGZmYTZmNGYxZDA0MDZiNmI1NTY0Mzlm
NmQyZTJhN2QwMTg1MC4uOTQyZWUyNGEyNTk3YjU2M2Y5NjNjMGVkZjAzNGRlM2VjMTVjNjRkMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMjksMTMgKzI5LDE0IEBACiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKLSNpbmNs
dWRlICJCM1NwYXJzZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQXJn
dW1lbnRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJE
RkdGcm96ZW5WYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCiAjaW5jbHVk
ZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkRGR05vZGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJE
RkdQbGFuLmgiCiAjaW5jbHVkZSAiREZHUHJvcGVydHlUeXBlS2V5LmgiCiAjaW5jbHVkZSAiREZH
U2Nhbm5hYmxlLmgiCkBAIC0xMjMsNyArMTI0LDcgQEAgZW51bSBBZGRTcGVjdWxhdGlvbk1vZGUg
ewogLy8gTm9kZXMgdGhhdCBhcmUgJ2RlYWQnIHJlbWFpbiBpbiB0aGUgdmVjdG9yIHdpdGggcmVm
Q291bnQgMC4KIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIHB1Ymxp
YzoKLSAgICBHcmFwaChWTSYsIFBsYW4mKTsKKyAgICBHcmFwaChWTSYsIFBsYW4mLCBMb25nTGl2
ZWRTdGF0ZSYpOwogICAgIH5HcmFwaCgpOwogICAgIAogICAgIHZvaWQgY2hhbmdlQ2hpbGQoRWRn
ZSYgZWRnZSwgTm9kZSogbmV3Tm9kZSkKQEAgLTE4MywyMCArMTg0LDIyIEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CiAgICAgTm9kZSogYWRkTm9kZShQYXJhbXMu
Li4gcGFyYW1zKQogICAgIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG5ldyBOb2RlKHBhcmFtcy4u
Lik7Ci0gICAgICAgIG1fbm9kZXMuYWRkKHN0ZDo6dW5pcXVlX3B0cjxOb2RlPihub2RlKSk7Cisg
ICAgICAgIE5vZGUqIG5vZGUgPSBuZXcgKG1fYWxsb2NhdG9yKSBOb2RlKHBhcmFtcy4uLik7Cisg
ICAgICAgIGFkZE5vZGVUb01hcEJ5SW5kZXgobm9kZSk7CiAgICAgICAgIHJldHVybiBub2RlOwog
ICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CiAgICAgTm9kZSogYWRkTm9k
ZShTcGVjdWxhdGVkVHlwZSB0eXBlLCBQYXJhbXMuLi4gcGFyYW1zKQogICAgIHsKLSAgICAgICAg
Tm9kZSogbm9kZSA9IGFkZE5vZGUocGFyYW1zLi4uKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG5l
dyAobV9hbGxvY2F0b3IpIE5vZGUocGFyYW1zLi4uKTsKICAgICAgICAgbm9kZS0+cHJlZGljdCh0
eXBlKTsKKyAgICAgICAgYWRkTm9kZVRvTWFwQnlJbmRleChub2RlKTsKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQorCiAgICAgdm9pZCBkZWxldGVOb2RlKE5vZGUqKTsKLSAgICB1bnNpZ25l
ZCBtYXhOb2RlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX25vZGVzLnNpemUoKTsgfQotICAgIE5v
ZGUqIG5vZGVBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9ub2Rlc1tpbmRleF07
IH0KKyAgICB1bnNpZ25lZCBtYXhOb2RlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX25vZGVzQnlJ
bmRleC5zaXplKCk7IH0KKyAgICBOb2RlKiBub2RlQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fbm9kZXNCeUluZGV4W2luZGV4XTsgfQogICAgIHZvaWQgcGFja05vZGVJbmRpY2Vz
KCk7CiAKICAgICBWZWN0b3I8QWJzdHJhY3RWYWx1ZSwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+
JiBhYnN0cmFjdFZhbHVlc0NhY2hlKCkgeyByZXR1cm4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOyB9
CkBAIC04MzQsNiArODM3LDggQEAgcHVibGljOgogICAgIFBsYW4mIG1fcGxhbjsKICAgICBDb2Rl
QmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOworICAg
IAorICAgIE5vZGVBbGxvY2F0b3ImIG1fYWxsb2NhdG9yOwogCiAgICAgVmVjdG9yPCBSZWZQdHI8
QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJn
Q2hpbGRyZW47CkBAIC05MjIsNyArOTI3LDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9oYXNEZWJ1
Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzIHsgZmFsc2UgfTsK
IHByaXZhdGU6Ci0gICAgdm9pZCBhZG9wdE5vZGVPdXRPZkxpbmUoTm9kZSYpOworICAgIHZvaWQg
YWRkTm9kZVRvTWFwQnlJbmRleChOb2RlKik7CiAKICAgICBib29sIGlzU3RyaW5nUHJvdG90eXBl
TWV0aG9kU2FuZShKU0dsb2JhbE9iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiAKQEAgLTk1
Niw3ICs5NjEsOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gYnl0ZWNvZGVDYW5UcnVuY2F0
ZUludGVnZXIoYWRkLT5hcml0aE5vZGVGbGFncygpKSA/IFNwZWN1bGF0ZUludDMyQW5kVHJ1bmNh
dGVDb25zdGFudHMgOiBEb250U3BlY3VsYXRlSW50MzI7CiAgICAgfQogCi0gICAgQjM6OlNwYXJz
ZUNvbGxlY3Rpb248Tm9kZT4gbV9ub2RlczsKKyAgICBWZWN0b3I8Tm9kZSosIDAsIFVuc2FmZVZl
Y3Rvck92ZXJmbG93PiBtX25vZGVzQnlJbmRleDsKKyAgICBWZWN0b3I8dW5zaWduZWQsIDAsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiBtX25vZGVJbmRleEZyZWVMaXN0OwogICAgIFZlY3RvcjxBYnN0
cmFjdFZhbHVlLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9hYnN0cmFjdFZhbHVlc0NhY2hl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb25nTGl2
ZWRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YTJmMmYxZjBjOWY2ZjM4YTgyNTlhMTM2YTFkMmE2MzY5NTU4MWQ4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb25nTGl2
ZWRTdGF0ZS5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHTG9u
Z0xpdmVkU3RhdGUuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK0xvbmdMaXZlZFN0
YXRlOjpMb25nTGl2ZWRTdGF0ZSgpCit7Cit9CisKK0xvbmdMaXZlZFN0YXRlOjp+TG9uZ0xpdmVk
U3RhdGUoKQoreworfQorCit2b2lkIExvbmdMaXZlZFN0YXRlOjpzaHJpbmtUb0ZpdCgpCit7Cisg
ICAgbV9hbGxvY2F0b3IucmVzZXQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwor
CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTG9uZ0xpdmVkU3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTG9uZ0xpdmVkU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2ZhYjA0MDc3OTliMWFiY2QyMGIy
ZTgwZjlkZDQxZTM2ZjJkOWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMb25nTGl2ZWRTdGF0ZS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdMb25nTGl2ZWRT
dGF0ZV9oCisjZGVmaW5lIERGR0xvbmdMaXZlZFN0YXRlX2gKKworI2lmIEVOQUJMRShERkdfSklU
KQorCisjaW5jbHVkZSAiREZHTm9kZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKKworY2xhc3MgTG9uZ0xpdmVkU3RhdGUgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOyBXVEZfTUFLRV9OT05DT1BZQUJMRShMb25nTGl2ZWRTdGF0ZSk7CitwdWJs
aWM6CisgICAgTG9uZ0xpdmVkU3RhdGUoKTsKKyAgICB+TG9uZ0xpdmVkU3RhdGUoKTsKKyAgICAK
KyAgICB2b2lkIHNocmlua1RvRml0KCk7CisgICAgCisgICAgTm9kZUFsbG9jYXRvciBtX2FsbG9j
YXRvcjsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCisjZW5kaWYgLy8gREZHTG9uZ0xpdmVkU3RhdGVfaAorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGM0NDExZGQ2Mjg1Mjk3YzBiNWRiZGQ3NjVjZDUxNDJh
OGRmMTUzYWIuLjMxZmE4YjY5NGNhZTUxMjU5MzVjZjY0YWRmOWM5MTE1ZGQwNmVhYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkIzU3BhcnNlQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkJhc2ljQmxvY2tMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkRGR0Fic3RyYWN0VmFsdWUuaCIKQEAgLTIzMSw3ICsyMzAsNiBAQCBzdHJ1Y3QgU3RhY2tBY2Nl
c3NEYXRhIHsKIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUgb3BlcmF0aW9uIGluIHRo
ZSBkYXRhIGZsb3cgZ3JhcGguCiBzdHJ1Y3QgTm9kZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBWYXJBcmdUYWcgeyBWYXJBcmcgfTsKICAgICAKQEAg
LTIzNDYsNyArMjM0NCw3IEBAIHB1YmxpYzoKICAgICBBZGphY2VuY3lMaXN0IGNoaWxkcmVuOwog
CiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBCMzo6U3BhcnNlQ29sbGVjdGlvbjxOb2RlPjsK
KyAgICBmcmllbmQgY2xhc3MgR3JhcGg7CiAKICAgICB1bnNpZ25lZCBtX2luZGV4IHsgc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07CiAgICAgdW5zaWduZWQgbV9vcCA6IDEw
OyAvLyByZWFsIHR5cGUgaXMgTm9kZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlQWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkwMjRjYzE5MWEwYjk3OTE3YTM2ZmM5OTdl
NDA4YmE1YWU2M2U5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZUFsbG9jYXRvci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdOb2RlQWxsb2NhdG9yX2gK
KyNkZWZpbmUgREZHTm9kZUFsbG9jYXRvcl9oCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2lu
Y2x1ZGUgIkRGR0FsbG9jYXRvci5oIgorI2luY2x1ZGUgIkRGR05vZGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit0eXBlZGVmIEFsbG9jYXRvcjxOb2RlPiBOb2RlQWxs
b2NhdG9yOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKK2lubGluZSB2b2lkKiBvcGVy
YXRvciBuZXcgKHNpemVfdCBzaXplLCBKU0M6OkRGRzo6Tm9kZUFsbG9jYXRvciYgYWxsb2NhdG9y
KQoreworICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBzaXplb2YoSlNDOjpERkc6Ok5v
ZGUpKTsKKyAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKCk7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR05vZGVBbGxvY2F0b3JfaAorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCAxMDllOGE2N2Y4YzRhOTNhZmRlZmQ1YWEw
NTBjNmM2N2IxZWQ1ZjAzLi45YTIyOTQyNmIxZDFlZWRkNDJkOGU0NmM0OWI1Mzc3ZGZjYThlMDcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTE3MCw3ICsxNzAsNyBA
QCBib29sIFBsYW46OnJlcG9ydENvbXBpbGVUaW1lcygpIGNvbnN0CiAgICAgICAgIHx8IChPcHRp
b25zOjpyZXBvcnRGVExDb21waWxlVGltZXMoKSAmJiBpc0ZUTChtb2RlKSk7CiB9CiAKLXZvaWQg
UGxhbjo6Y29tcGlsZUluVGhyZWFkKFRocmVhZERhdGEqIHRocmVhZERhdGEpCit2b2lkIFBsYW46
OmNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRTdGF0ZSYgbG9uZ0xpdmVkU3RhdGUsIFRocmVhZERh
dGEqIHRocmVhZERhdGEpCiB7CiAgICAgdGhpcy0+dGhyZWFkRGF0YSA9IHRocmVhZERhdGE7CiAg
ICAgCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBQbGFuOjpjb21waWxlSW5UaHJlYWQoVGhyZWFk
RGF0YSogdGhyZWFkRGF0YSkKICAgICBpZiAobG9nQ29tcGlsYXRpb25DaGFuZ2VzKG1vZGUpKQog
ICAgICAgICBkYXRhTG9nKCJERkcoUGxhbikgY29tcGlsaW5nICIsICpjb2RlQmxvY2ssICIgd2l0
aCAiLCBtb2RlLCAiLCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zID0gIiwgY29kZUJsb2NrLT5pbnN0
cnVjdGlvbkNvdW50KCksICJcbiIpOwogCi0gICAgQ29tcGlsYXRpb25QYXRoIHBhdGggPSBjb21w
aWxlSW5UaHJlYWRJbXBsKCk7CisgICAgQ29tcGlsYXRpb25QYXRoIHBhdGggPSBjb21waWxlSW5U
aHJlYWRJbXBsKGxvbmdMaXZlZFN0YXRlKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKHBhdGggPT0g
Q2FuY2VsUGF0aCB8fCBmaW5hbGl6ZXIpOwogICAgIFJFTEVBU0VfQVNTRVJUKChwYXRoID09IENh
bmNlbFBhdGgpID09IChzdGFnZSA9PSBDYW5jZWxsZWQpKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2
b2lkIFBsYW46OmNvbXBpbGVJblRocmVhZChUaHJlYWREYXRhKiB0aHJlYWREYXRhKQogICAgIH0K
IH0KIAotUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQor
UGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoTG9uZ0xpdmVk
U3RhdGUmIGxvbmdMaXZlZFN0YXRlKQogewogICAgIGNsZWFuTXVzdEhhbmRsZVZhbHVlc0lmTmVj
ZXNzYXJ5KCk7CiAgICAgCkBAIC0yNDYsNyArMjQ2LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRo
IFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAg
IH0KICAgICAKLSAgICBHcmFwaCBkZmcoKnZtLCAqdGhpcyk7CisgICAgR3JhcGggZGZnKCp2bSwg
KnRoaXMsIGxvbmdMaXZlZFN0YXRlKTsKICAgICAKICAgICBpZiAoIXBhcnNlKGRmZykpIHsKICAg
ICAgICAgZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5kZXggNmUzNTI2ODVjY2IxNmUzYmI1
OTU0ZTMyODFmNjUzMDYxOTNhZDFlZS4uOTU5NGRmZjJmMzAzZDYwM2I3ZjkxOGEzMzExMDc1YTUx
ZTc3NmZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgY2xhc3MgU2xvdFZpc2l0b3I7CiAKIG5hbWVzcGFjZSBERkcgewogCitjbGFzcyBMb25nTGl2
ZWRTdGF0ZTsKIGNsYXNzIFRocmVhZERhdGE7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTU5
LDcgKzYwLDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxh
bj4gewogICAgICAgICBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcyk7
CiAgICAgflBsYW4oKTsKIAotICAgIHZvaWQgY29tcGlsZUluVGhyZWFkKFRocmVhZERhdGEqKTsK
KyAgICB2b2lkIGNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRTdGF0ZSYsIFRocmVhZERhdGEqKTsK
ICAgICAKICAgICBDb21waWxhdGlvblJlc3VsdCBmaW5hbGl6ZVdpdGhvdXROb3RpZnlpbmdDYWxs
YmFjaygpOwogICAgIHZvaWQgZmluYWxpemVBbmROb3RpZnlDYWxsYmFjaygpOwpAQCAtMTIwLDcg
KzEyMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXBvcnRDb21waWxlVGltZXMoKSBjb25zdDsK
ICAgICAKICAgICBlbnVtIENvbXBpbGF0aW9uUGF0aCB7IEZhaWxQYXRoLCBERkdQYXRoLCBGVExQ
YXRoLCBDYW5jZWxQYXRoIH07Ci0gICAgQ29tcGlsYXRpb25QYXRoIGNvbXBpbGVJblRocmVhZElt
cGwoKTsKKyAgICBDb21waWxhdGlvblBhdGggY29tcGlsZUluVGhyZWFkSW1wbChMb25nTGl2ZWRT
dGF0ZSYpOwogICAgIAogICAgIGJvb2wgaXNTdGlsbFZhbGlkKCk7CiAgICAgdm9pZCByZWFsbHlB
ZGQoQ29tbW9uRGF0YSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNw
cAppbmRleCA5YjZkMmMzYzY2YjU4NDJhMmI4ODk1MjY1Njk1ZjYwYTEyZmIwMTMyLi43MjFjMDhh
YjQ1MGM2YTQxNTAxMmEwYjQ1YWY3NWNhNWVlZGZkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMjksOCArMjksOSBAQAogI2lmIEVOQUJMRShERkdf
SklUKQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiRGVmZXJHQy5oIgorI2lu
Y2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHU2FmZXBvaW50LmgiCisj
aW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDxt
dXRleD4KIApAQCAtMzYxLDYgKzM2Miw4IEBAIHZvaWQgV29ya2xpc3Q6OnJ1blRocmVhZChUaHJl
YWREYXRhKiBkYXRhKQogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgp
KQogICAgICAgICBkYXRhTG9nKCp0aGlzLCAiOiBUaHJlYWQgc3RhcnRlZFxuIik7CiAgICAgCisg
ICAgTG9uZ0xpdmVkU3RhdGUgbG9uZ0xpdmVkU3RhdGU7CisgICAgCiAgICAgZm9yICg7Oykgewog
ICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbjsKICAgICAgICAgewpAQCAtMzk2LDcgKzM5OSw3IEBA
IHZvaWQgV29ya2xpc3Q6OnJ1blRocmVhZChUaHJlYWREYXRhKiBkYXRhKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coKnRoaXMsICI6IENvbXBpbGluZyAiLCBwbGFuLT5rZXkoKSwgIiBhc3luY2hy
b25vdXNseVxuIik7CiAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXBsYW4t
PnZtLT5oZWFwLmlzQ29sbGVjdGluZygpKTsKLSAgICAgICAgICAgIHBsYW4tPmNvbXBpbGVJblRo
cmVhZChkYXRhKTsKKyAgICAgICAgICAgIHBsYW4tPmNvbXBpbGVJblRocmVhZChsb25nTGl2ZWRT
dGF0ZSwgZGF0YSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSA9PSBQ
bGFuOjpDYW5jZWxsZWQgfHwgIXBsYW4tPnZtLT5oZWFwLmlzQ29sbGVjdGluZygpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IGNkNTM4ZDhmZGI2NGRmM2YyZTgxZDkyMDE4YjhkNTBkZDFmMzAxMTYuLjNlNzI2M2FhMTAx
MjI1NTc2Y2I0NmUwMmNjZGI5NTkyN2ZkYmYzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5o
IgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNl
dHRlci5oIgorI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHV29y
a2xpc3QuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFcnJvckluc3Rh
bmNlLmgiCkBAIC0yOTAsNiArMjkxLDExIEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICB9CiAKICAgICBjYWxsRnJhbWVGb3JDYXRjaCA9IG51bGxwdHI7CisK
KyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBpZiAoY2FuVXNlSklUKCkpCisgICAgICAgIGRmZ1N0
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxERkc6OkxvbmdMaXZlZFN0YXRlPigpOworI2VuZGlmCiAg
ICAgCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIGxhc3QsIGFzIGEgZnJlZSB3YXkgb2YgYXNzZXJ0
aW5nIHRoYXQgVk0gaW5pdGlhbGl6YXRpb24gaXRzZWxmCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1OTY0ZTdmZTA1YjQzZmYxNWVlMjVh
MzQ0YzU5NGUxYjQ0MTZlNDJlLi4xMGIwNGY4YTVhZjYzYzA2MDY5OTlkNzE2M2Y5Y2YzMjFmOTk5
YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEyMCw2ICsxMjAsMTEgQEAg
Y2xhc3MgV2F0Y2hkb2c7CiBjbGFzcyBXYXRjaHBvaW50OwogY2xhc3MgV2F0Y2hwb2ludFNldDsK
IAorI2lmIEVOQUJMRShERkdfSklUKQorbmFtZXNwYWNlIERGRyB7CitjbGFzcyBMb25nTGl2ZWRT
dGF0ZTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKICNpZiBFTkFCTEUoRlRMX0pJVCkK
IG5hbWVzcGFjZSBGVEwgewogY2xhc3MgVGh1bmtzOwpAQCAtMjY3LDYgKzI3MiwxMCBAQCBwdWJs
aWM6CiAgICAgLy8gZGVzdHJ1Y3RlZCBhZnRlciBhbGwgdGhlIG9iamVjdHMgdGhhdCByZWZlcmVu
Y2UgaXQuCiAgICAgSGVhcCBoZWFwOwogCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgc3RkOjp1
bmlxdWVfcHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCiAgICAgVk1UeXBlIHZtVHlwZTsKICAgICBDbGllbnREYXRhKiBjbGllbnRE
YXRhOwogICAgIFZNRW50cnlGcmFtZSogdG9wVk1FbnRyeUZyYW1lOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>