<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://sourceware.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="4.4+"
          urlbase="http://sourceware.org/bugzilla/"
          
          maintainer="overseers@sourceware.org"
>

    <bug>
          <bug_id>7065</bug_id>
          
          <creation_ts>2008-12-04 00:38:00 +0000</creation_ts>
          <short_desc>Support building glibc with -fstack-protector or -fstack-protector-all</short_desc>
          <delta_ts>2012-04-21 12:55:37 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>glibc</product>
          <component>build</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nix">nix</reporter>
          <assigned_to name="Not yet assigned to anyone">unassigned</assigned_to>
          <cc>aj</cc>
    
    <cc>atoth</cc>
    
    <cc>carlos</cc>
    
    <cc>glibc-bugs</cc>
    
    <cc>jyasskin</cc>
    
    <cc>toolchain</cc>
    
    <cc>xake</cc>
    
    <cc>zorry</cc>
          <cf_gcchost>i686-pc-linux-gnu</cf_gcchost>
          <cf_gcctarget>i686-pc-linux-gnu</cf_gcctarget>
          <cf_gccbuild>i686-pc-linux-gnu</cf_gccbuild>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>25952</commentid>
    <comment_count>0</comment_count>
    <who name="Nix">nix</who>
    <bug_when>2008-12-04 00:38:31 +0000</bug_when>
    <thetext>Several distributions, including Gentoo, have patches which attempt to make 
glibc build when compiled with -fstack-protector. None of them that I have 
found actually work: at best, they make it crash instantly, because none of 
them suppress generation of stack guards around functions called before the 
guard is initialized (or even before ld-linux.so.2 has relocated itself).

For now I&apos;d consider it more of a maintenance burden than it&apos;s worth to
isolate the parts of ld.so that are called before security_init(), so
I&apos;ve just arranged to avoid using the stack-protector in ld.so, and
marked the few things not also in the dynamic loader which are used
during pre-guard-init static library initialization with
-fno-stack-protector. (An improvement might be to mark these with
-fno-stack-protector only when building the static library.)

I can&apos;t think of a way to isolate the functions in this set automatically, but 
if you get it wrong it&apos;s easy to tell because you get an instant coredump, so 
it&apos;s easy to prevent the set of -fno-stack-protectored functions from 
bitrotting, manually maintained though it must be.)

You can still use -fstack-protector-all in all the rest of glibc, which
is an order of magnitude more code than ld.so and includes really hairy
stuff like malloc() and lots of functions that themselves call
string-manipulation functions, so I&apos;d say this is a pretty good
tradeoff.

Some of the module tests need adjustment: they don&apos;t link against
libc, so must specify -fno-stack-protector; the same is true of some of the 
configury, taking care not to specify that unless GCC is actually capable of 
accepting -fstack-protector. (We specify -lssp and leave the stack protector on 
where possible in configure tests.)

Results of tests and patch against glibc 2.9 following shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25953</commentid>
    <comment_count>1</comment_count>
    <who name="Ulrich Drepper">drepper.fsp</who>
    <bug_when>2008-12-04 00:44:36 +0000</bug_when>
    <thetext>Never going to happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25956</commentid>
    <comment_count>2</comment_count>
    <who name="Nix">nix</who>
    <bug_when>2008-12-04 00:53:50 +0000</bug_when>
    <thetext>test environment: 2.6.27.7 kernel+headers, glibc 2.8, GCC 4.3.3 20081121 
(prerelease), binutils 2.19.

config flags (my standard set for this machine):

/usr/packages/glibc/2.9/configure --prefix=/usr --enable-shared \
    --enable-profile --disable-bounded --enable-bind-now        \
    --enable-add-ons=nptl,libidn --enable-kernel=2.6.25         \
    --enable-check-abi=warn --enable-omitfp                     \
    --enable-stackguard-randomization TIMEOUTFACTOR=5

Below, PASS means &apos;baseline test failures only&apos;. (I also compared
configure output to verify that -fstack-protector addition did not
change the results of any configure tests, and verified that the
appropriate -fstack-protector actually appeared in gcc commandlines at
the appropriate times.)

baseline:                              PASS, by definition
patch applied, no flags specified:     PASS
-fstack-protector in CFLAGS:           PASS
-fstack-protector-all in CFLAGS:       one failure due to #7066, buffer overrun
--without-stack-protector:             PASS
--with-stack-protector:                PASS
--with-stack-protector=all:            one failure due to #7066, buffer overrun

Test failures for baseline (unpatched):

math/test-ildoubl.out:

testing long double (inline functions)
Failure: Test: expm1 (1) == M_El - 1.0
Result:
 is:          1.71828182845904523532e+00   0xd.bf0a8b14576953500000p-3
 should be:   1.71828182845904523543e+00   0xd.bf0a8b14576953600000p-3
 difference:  1.08420217248550443401e-19   0x8.00000000000000000000p-66
 ulp       :  1.0000
 max.ulp   :  0.0000
Maximal error of `expm1&apos;
 is      : 1 ulp
 accepted: 0 ulp

Test suite completed:
  3618 test cases plus 3005 tests for exception flags executed.
  2 errors occurred.

elf/check-localplt.out:

--- ../scripts/data/localplt-i386-linux-gnu.data        2006-01-11 
21:06:19.000000000 +0000
+++ -   2008-11-30 20:52:09.962033876 +0000
@@ -1,4 +1,5 @@
 libc.so: _Unwind_Find_FDE
+libc.so: __bzero
 libc.so: calloc
 libc.so: free
 libc.so: malloc

(This looks like something missing from localplt-i386-linux-gnu.data to
me, not a bug.)

(Holes in test coverage: not tested with a GCC too old to support
-fstack-protector. Static testing not performed: see #7064.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25957</commentid>
    <comment_count>3</comment_count>
      <attachid>3087</attachid>
    <who name="Nix">nix</who>
    <bug_when>2008-12-04 00:55:44 +0000</bug_when>
    <thetext>Created attachment 3087
stack protector support for glibc

This is posted at the request of Carlos O&apos;Donell. TBH I don&apos;t care if it
doesn&apos;t go upstream, although given that it&apos;s already found a buffer overrun in
glibc I&apos;d find that surprising. I&apos;m more interested in distros picking it up.

(And &apos;never going to happen&apos; is a peculiar statement. It has &apos;happened&apos;. The
patch *exists*.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26057</commentid>
    <comment_count>4</comment_count>
    <who name="Ryan S. Arnold">rsa</who>
    <bug_when>2008-12-10 17:09:10 +0000</bug_when>
    <thetext>Nix

A failure in elf/check-localplt.out as indicated by a new symbol in
scripts/data/localplt-i386-linux-gnu.data means that libc proper is invoking the
new symbol via the plt when in-fact it should be making a direct invocation to a
libc internal symbol.  There are very few conditions under which this is allowed
(notably those cases where we allow libc functionality to be overridden).

I&apos;ve looked through the code and it appears that the sunrpc code is the only
relevant code which uses __bzero.  I don&apos;t think there&apos;s an internal hidden
version of the symbol.  So these calls to __bzero probably shouldn&apos;t be there. 
Instead, they should use memset.  Or perhaps that patch which you&apos;re using uses
__bzero?

In order to verify, one can look at the symbol table:

objdump -DR libc.so &gt; libc.dis

Search libc.dis for:

__bzero@plt

You should see a plt call stub, e.g.

00016198 &lt;__bzero@plt&gt;:
   16198:       ff a3 0c 00 00 00       jmp    *0xc(%ebx)
   1619e:       68 00 00 00 00          push   $0x0
   161a3:       e9 e0 ff ff ff          jmp    16188 &lt;h_errno+0x16168&gt;

Now search for: &quot;call   16198&quot;

call   16198 &lt;__bzero@plt&gt;

This should bring you to the disassembly of the function which invoked __bzero
via the PLT.  You can then go into the C source file and replace this with a
memset.  Do this for all calls to the address for __bzero.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26058</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan S. Arnold">rsa</who>
    <bug_when>2008-12-10 18:51:38 +0000</bug_when>
    <thetext>Here&apos;s a more thorough write-up of the same thing I just posted:

http://sources.redhat.com/glibc/wiki/Testing/Check-localplt

Invocation of __bzero() by the sunrpc code is acceptable since that code is in a
different library than libc.so so access via the PLT is expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26101</commentid>
    <comment_count>6</comment_count>
    <who name="Nix">nix</who>
    <bug_when>2008-12-13 19:02:50 +0000</bug_when>
    <thetext>Nice description, Ryan :)

A lot of the sunrpc code *does* land in libc (all the client code). Notably, 
bindresvport(), clnt_create(), clnt_broadcast(), universal() (called from 
registerrpc() via a callback from svc_register()), svctcp_create(), 
svcudp_bufcreate(), and key_gendes(), _des_crypt() (obviously used for 
DES-encrypted SunRPC), all explicitly call __bzero() and land in libc.

Almost certainly these would use memset() were the SunRPC code not ancient 
Sun-derived gunge with a 1986 copyright date...
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26105</commentid>
    <comment_count>7</comment_count>
    <who name="Attila Tóth">atoth</who>
    <bug_when>2008-12-14 11:32:10 +0000</bug_when>
    <thetext>Keep it going, guys.

To Ulrich Drepper:
How do you mean: &quot;Never going to happen.&quot;?!

I always keen on people ignoring security measures.

Regards,
Dw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36451</commentid>
    <comment_count>8</comment_count>
    <who name="Robert Connolly">robert</who>
    <bug_when>2009-06-04 22:25:35 +0000</bug_when>
    <thetext>I&apos;ve been using a compromise. Glibc&apos;s programs can be compiled 
with -fstack-protector-all, or whatever other options you may want 
(-D_FORTIFY_SOURCE=2, -fPIE, etc), but not the libraries. I use the configparms 
file and set build-programs=no to build the libraries 
without -fstack-protector, then remove build-programs=no and add &apos;CFLAGS 
+= -fstack-protector-all&apos; to configparms. No patches needed, test suites pass 
(remove -fstack-protector during the test suite), no crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53571</commentid>
    <comment_count>9</comment_count>
      <attachid>6248</attachid>
    <who name="Nix">nix</who>
    <bug_when>2012-02-26 23:37:48 +0000</bug_when>
    <thetext>Created attachment 6248
stack protector support against eglibc 2.13.

This is the most recent version of this patch, against eglibc 2.13 (because that happens to be the version I&apos;m using now, as I track Debian&apos;s glibc). It has needed no significant revisions for years, though the recent csu changes in upstream glibc may necessitate some small revisions.

(The ChangeLog is out of date: I haven&apos;t regenerated it since 2008.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54700</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Jaeger">aj</who>
    <bug_when>2012-04-21 12:55:37 +0000</bug_when>
    <thetext>Your change contains two different changes:
* Supporting stack-protector
* A different implementation of chk_fail function

For addition to glibc, I would only look at the stack-protector support. I suggest you continue discussing this on the libc-alpha list.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3087</attachid>
            <date>2008-12-04 00:55:00 +0000</date>
            <delta_ts>2012-02-26 23:37:48 +0000</delta_ts>
            <desc>stack protector support for glibc</desc>
            <filename>stack-chk-fail-nonrecursive.diff</filename>
            <type>text/plain</type>
            <size>27734</size>
            <attacher name="Nix">nix</attacher>
            
              <data encoding="base64">MjAwOC0xMS0zMCAgTml4ICA8bml4QGVzcGVyaS5vcmcudWs+CgoJKiBkZWJ1Zy9zdGFja19jaGtf
ZmFpbC5jOiBFbmhhbmNlZCB2ZXJzaW9uLCBmcm9tIEdlbnRvby4KCgkqIGRlYnVnL01ha2VmaWxl
IChDRkxBR1Mtc3RhY2tfY2hrX2ZhaWwuYyk6IEFsd2F5cyBkdW1wIGNvcmUKCW9uIHN0YWNrIGNv
cnJ1cHRpb24uCgoJY29uZmlndXJlLWRyaXZlbiBhY3RpdmF0aW9uIG9mIHN0YWNrIHByb3RlY3Rp
b246CgoJKiBjb25maWd1cmUuaW4gKC0td2l0aC1zdGFjay1wcm90ZWN0b3IpOiBOZXcgYXJndW1l
bnQsIGFkZHMKCS1mc3RhY2stcHJvdGVjdG9yKC1hbGwpLiBFcnJvciBvdXQgaWYgc3BlY2lmaWVk
IHdoZW4gR0NDIGRvZXMKCW5vdCBzdXBwb3J0IGl0LiBVc2UgLWxzc3Agd2hlbiBsaW5raW5nIC1u
b3N0ZGxpYiBpZmYgR0NDIHN1cHBvcnRzIGl0LgoJTW92ZSB0aGUgc3RhY2sgcHJvdGVjdGlvbiBj
aGVjayBhYm92ZSBhbGwgc3VjaCBsaW5raW5nLgoJKiBjb25maWcubWFrZS5pbjogUHJvcGFnYXRl
IHRoaXMgZmxhZyB0byBhIHZhcmlhYmxlLi4uCgkqIE1ha2Vjb25maWc6IC4uLiBhbmQgY29udmVy
dCBpdCB0byBhIENGTEFHUyBhZGRpdGlvbi4KCgkqIE1ha2VydWxlcyAoJChjb21tb24tb2JqcGZ4
KXN5c2QtcnVsZXMpOiBQZXJtaXQgQ0ZMQUdTIG92ZXJyaWRlcwoJZm9yIHN5c2RlcCBydWxlcywg
dXNlZCBieSBydGxkLVJ1bGVzLgoKCUV4cGxpY2l0bHkgYXZvaWQgc3RhY2sgcHJvdGVjdGlvbiBm
b3IgY2VydGFpbiB0aGluZ3MsIGlmZiBzdGFjawoJcHJvdGVjdGlvbiBpcyBzdXBwb3J0ZWQgYnkg
dGhpcyBHQ0MgdmVyc2lvbi4KCgkqIGNzdS9NYWtlZmlsZTogRG9uJ3QgYnVpbGQgc3RhcnR1cCBm
aWxlcyB3aXRoIHN0YWNrIHByb3RlY3Rpb24uCgkqIGxpYmlvL01ha2VmaWxlOiBEb24ndCBidWls
ZCBjb2RlIGNhbGxlZCBieSBzdWNoIGZpbGVzIHdpdGgKCXN0YWNrIHByb3RlY3Rpb24uCgkqIG1p
c2MvTWFrZWZpbGU6IExpa2V3aXNlLCBmb3IgYnJrIGFuZCBzYnJrLgoJKiBzdHJpbmcvTWFrZWZp
bGU6IExpa2V3aXNlLCBmb3IgQyBtZW1jcHkgaW1wbGVtZW50YXRpb25zLgoKCSogZWxmL01ha2Vm
aWxlIChDRkxBR1MtLm9zKTogRG9uJ3QgYnVpbGQgcnRsZC1zcGVjaWZpYyBzb3VyY2UsIG9yCglp
dHMgY29ycmVzcG9uZGluZyBjb2RlIGluIHN0YXRpYyBsaWJyYXJpZXMsIHdpdGggc3RhY2sgcHJv
dGVjdGlvbi4KCURvbid0IGJ1aWxkIGZpbHRlciBtb2R1bGVzIHdpdGggc3RhY2sgcHJvdGVjdGlv
bi4KCSogZWxmL3J0bGQtUnVsZXM6IERvbid0IGJ1aWxkIHJ0bGQgdmVyc2lvbnMgb2YgY29kZSBm
cm9tIHRoZSByZXN0CglvZiBnbGliYyB3aXRoIHN0YWNrIHByb3RlY3Rpb24uIFBhc3MgY3VzdG9t
IENGTEFHUyBkb3duLgoKCSogc3RkbGliL01ha2VmaWxlOiBEb24ndCBidWlsZCB0ZXN0cyBub3Qg
bGlua2VkIGFnYWluc3QgbGliYyB3aXRoCglzdGFjayBwcm90ZWN0aW9uLgoKCSogbnNjZC9NYWtl
ZmlsZTogQnVpbGQgd2l0aCAtZnN0YWNrLXByb3RlY3Rvci1hbGwgaWYgcmVxdWVzdGVkLgoKbnB0
bDoKMjAwOC0xMS0zMCAgTml4ICA8bml4QGVzcGVyaS5vcmcudWs+CgoJKiBNYWtlZmlsZTogRG9u
J3QgYnVpbGQgc3RhcnR1cCBmaWxlcyB3aXRoIHN0YWNrIHByb3RlY3Rpb24uCgpJbmRleDogbGli
Yy1wYXRjaGVkL2RlYnVnL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmMtcGF0Y2hlZC5vcmln
L2RlYnVnL01ha2VmaWxlCTIwMDgtMTItMDMgMjI6NDU6NDIuMDAwMDAwMDAwICswMDAwCisrKyBs
aWJjLXBhdGNoZWQvZGVidWcvTWFrZWZpbGUJMjAwOC0xMi0wNCAwMDo1MjozMS4wMDAwMDAwMDAg
KzAwMDAKQEAgLTQ4LDYgKzQ4LDcgQEAKIHN0YXRpYy1vbmx5LXJvdXRpbmVzIDo9IHdhcm5pbmct
bm9wIHN0YWNrX2Noa19mYWlsX2xvY2FsCiAKIENGTEFHUy1iYWNrdHJhY2UuYyA9IC1mbm8tb21p
dC1mcmFtZS1wb2ludGVyCitDRkxBR1Mtc3RhY2tfY2hrX2ZhaWwuYyA9IC1EU1NQX1NNQVNIX0RV
TVBTX0NPUkUKIENGTEFHUy1zcHJpbnRmX2Noay5jID0gLURfSU9fTVRTQUZFX0lPCiBDRkxBR1Mt
c25wcmludGZfY2hrLmMgPSAtRF9JT19NVFNBRkVfSU8KIENGTEFHUy12c3ByaW50Zl9jaGsuYyA9
IC1EX0lPX01UU0FGRV9JTwpJbmRleDogbGliYy1wYXRjaGVkL2RlYnVnL3N0YWNrX2Noa19mYWls
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gbGliYy1wYXRjaGVkLm9yaWcvZGVidWcvc3RhY2tfY2hrX2ZhaWwu
YwkyMDA4LTEyLTAzIDIyOjQ1OjQyLjAwMDAwMDAwMCArMDAwMAorKysgbGliYy1wYXRjaGVkL2Rl
YnVnL3N0YWNrX2Noa19mYWlsLmMJMjAwOC0xMi0wNCAwMDo1MjozMS4wMDAwMDAwMDAgKzAwMDAK
QEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuCisvKiBDb3B5cmlnaHQgKEMpIDIwMDUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFy
eS4KIAogICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xNiwxNSArMTYsMjk3IEBACiAgICBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQogICAg
MDIxMTEtMTMwNyBVU0EuICAqLwogCi0jaW5jbHVkZSA8c3RkaW8uaD4KKy8qIENvcHlyaWdodCAo
QykgMjAwNi0yMDA3IEdlbnRvbyBGb3VuZGF0aW9uIEluYy4KKyAqIExpY2Vuc2UgdGVybXMgYXMg
YWJvdmUuCisgKgorICogSGFyZGVuZWQgR2VudG9vIFNTUCBoYW5kbGVyCisgKgorICogQW4gU1NQ
IGZhaWx1cmUgaGFuZGxlciB0aGF0IGRvZXMgbm90IHVzZSBmdW5jdGlvbnMgZnJvbSB0aGUgcmVz
dCBvZgorICogZ2xpYmM7IGl0IHVzZXMgdGhlIElOVEVSTkFMX1NZU0NBTEwgbWV0aG9kcyBkaXJl
Y3RseS4gIFRoaXMgZW5zdXJlcworICogbm8gcG9zc2liaWxpdHkgb2YgcmVjdXJzaW9uIGludG8g
dGhlIGhhbmRsZXIuCisgKgorICogRGlyZWN0IGFsbCBidWcgcmVwb3J0cyB0byBodHRwOi8vYnVn
cy5nZW50b28ub3JnLworICoKKyAqIFJlLXdyaXR0ZW4gZnJvbSB0aGUgZ2xpYmMtMi4zIEhhcmRl
bmVkIEdlbnRvbyBTU1AgaGFuZGxlcgorICogYnkgS2V2aW4gRi4gUXVpbm4gLSA8a2V2cXVpbm5b
QF1nZW50b28ub3JnPgorICoKKyAqIFRoZSBmb2xsb3dpbmcgcGVvcGxlIGNvbnRyaWJ1dGVkIHRv
IHRoZSBnbGliYy0yLjMgSGFyZGVuZWQKKyAqIEdlbnRvbyBTU1AgaGFuZGxlciwgZnJvbSB3aGlj
aCB0aGlzIGltcGxlbWVudGF0aW9uIGRyYXdzIG11Y2g6CisgKgorICogTmVkIEx1ZGQgLSA8c29s
YXJbQF1nZW50b28ub3JnPgorICogQWxleGFuZGVyIEdhYmVydCAtIDxwYXBweVtAXWdlbnRvby5v
cmc+CisgKiBUaGUgUGFYIFRlYW0gLSA8cGFnZWV4ZWNbQF1mcmVlbWFpbC5odT4KKyAqIFBldGVy
IFMuIE1hemluZ2VyIC0gPHBzLm1bQF1nbXgubmV0PgorICogWW9hbm4gVmFuZG9vcnNlbGFlcmUg
LSA8eW9hbm5bQF1wcmVsdWRlLWlkcy5vcmc+CisgKiBSb2JlcnQgQ29ubm9sbHkgLSA8cm9iZXJ0
W0BdbGludXhmcm9tc2NyYXRjaC5vcmc+CisgKiBDb3J5IFZpc2kgPGNvcnlbQF12aXNpLm5hbWU+
CisgKiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyW0BdZ2VudG9vLm9yZz4KKyAqLworCisjaW5jbHVk
ZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNp
bmNsdWRlIDxzaWduYWwuaD4KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8
c3lzZGVwLWNhbmNlbC5oPgorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjaW5jbHVkZSA8YnAt
Y2hlY2tzLmg+CisKKyNpbmNsdWRlIDxrZXJuZWwtZmVhdHVyZXMuaD4KKworI2luY2x1ZGUgPGFs
bG9jYS5oPgorLyogZnJvbSBzeXNkZXBzICovCisjaW5jbHVkZSA8c29ja2V0Y2FsbC5oPgorLyog
Zm9yIHRoZSBzdHVmZiBpbiBiaXRzL3NvY2tldC5oICovCisjaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgorI2luY2x1ZGUgPHN5cy91bi5oPgorCisKKy8qIFNhbml0eSBjaGVjayBvbiBTWVNDQUxMIG1h
Y3JvIG5hbWVzIC0gZm9yY2UgY29tcGlsYXRpb24KKyAqIGZhaWx1cmUgaWYgdGhlIG5hbWVzIHVz
ZWQgaGVyZSBkbyBub3QgZXhpc3QKKyAqLworI2lmICFkZWZpbmVkIF9fTlJfc29ja2V0Y2FsbCAm
JiAhZGVmaW5lZCBfX05SX3NvY2tldAorIyBlcnJvciBDYW5ub3QgZG8gc3lzY2FsbCBzb2NrZXQg
b3Igc29ja2V0Y2FsbAorI2VuZGlmCisjaWYgIWRlZmluZWQgX19OUl9zb2NrZXRjYWxsICYmICFk
ZWZpbmVkIF9fTlJfY29ubmVjdAorIyBlcnJvciBDYW5ub3QgZG8gc3lzY2FsbCBjb25uZWN0IG9y
IHNvY2tldGNhbGwKKyNlbmRpZgorI2lmbmRlZiBfX05SX3dyaXRlCisjIGVycm9yIENhbm5vdCBk
byBzeXNjYWxsIHdyaXRlCisjZW5kaWYKKyNpZm5kZWYgX19OUl9jbG9zZQorIyBlcnJvciBDYW5u
b3QgZG8gc3lzY2FsbCBjbG9zZQorI2VuZGlmCisjaWZuZGVmIF9fTlJfZ2V0cGlkCisjIGVycm9y
IENhbm5vdCBkbyBzeXNjYWxsIGdldHBpZAorI2VuZGlmCisjaWZuZGVmIF9fTlJfa2lsbAorIyBl
cnJvciBDYW5ub3QgZG8gc3lzY2FsbCBraWxsCisjZW5kaWYKKyNpZm5kZWYgX19OUl9leGl0Cisj
IGVycm9yIENhbm5vdCBkbyBzeXNjYWxsIGV4aXQKKyNlbmRpZgorI2lmZGVmIFNTUF9TTUFTSF9E
VU1QU19DT1JFCisjIGRlZmluZSBFTkFCTEVfU1NQX1NNQVNIX0RVTVBTX0NPUkUgMQorIyBpZiAh
ZGVmaW5lZCBfS0VSTkVMX05TSUcgJiYgIWRlZmluZWQgX05TSUcKKyMgIGVycm9yIE5vIF9OU0lH
IG9yIF9LRVJORUxfTlNJRyBmb3IgcnRfc2lnYWN0aW9uCisjIGVuZGlmCisjIGlmICFkZWZpbmVk
IF9fTlJfc2lnYWN0aW9uICYmICFkZWZpbmVkIF9fTlJfcnRfc2lnYWN0aW9uCisjICBlcnJvciBD
YW5ub3QgZG8gc3lzY2FsbCBzaWdhY3Rpb24gb3IgcnRfc2lnYWN0aW9uCisjIGVuZGlmCisvKiBB
bHRob3VnaCBydF9zaWdhY3Rpb24gZXhwZWN0cyBzaXplb2Yoc2lnc2V0X3QpIC0gaXQgZXhwZWN0
cyB0aGUgc2l6ZQorICogb2YgdGhlIF9rZXJuZWxfIHNpZ3NldF90IHdoaWNoIGlzIG5vdCB0aGUg
c2FtZSBhcyB0aGUgdXNlciBzaWdzZXRfdC4KKyAqIE1vc3QgYXJjaGVzIGhhdmUgdGhpcyBhcyBf
TlNJRyBiaXRzIC0gbWlwcyBoYXMgX0tFUk5FTF9OU0lHIGJpdHMgZm9yCisgKiBzb21lIHJlYXNv
bi4KKyAqLworIyBpZmRlZiBfS0VSTkVMX05TSUcKKyMgIGRlZmluZSBfU1NQX05TSUcgX0tFUk5F
TF9OU0lHCisjIGVsc2UKKyMgIGRlZmluZSBfU1NQX05TSUcgX05TSUcKKyMgZW5kaWYKKyNlbHNl
CisjIGRlZmluZSBfU1NQX05TSUcgMAorIyBkZWZpbmUgRU5BQkxFX1NTUF9TTUFTSF9EVU1QU19D
T1JFIDAKKyNlbmRpZgorCisvKiBEZWZpbmUgRE9fU0lHQUNUSU9OIC0gZGVmYXVsdCB0byBuZXdl
ciBydCBzaWduYWwgaW50ZXJmYWNlIGJ1dAorICogZmFsbGJhY2sgdG8gb2xkIGFzIG5lZWRlZC4K
KyAqLworI2lmZGVmIF9fTlJfcnRfc2lnYWN0aW9uCisjIGRlZmluZSBET19TSUdBQ1RJT04oc2ln
bnVtLCBhY3QsIG9sZGFjdCkgXAorCUlOTElORV9TWVNDQUxMKHJ0X3NpZ2FjdGlvbiwgNCwgc2ln
bnVtLCBhY3QsIG9sZGFjdCwgX1NTUF9OU0lHLzgpCisjZWxzZQorIyBkZWZpbmUgRE9fU0lHQUNU
SU9OKHNpZ251bSwgYWN0LCBvbGRhY3QpIFwKKwlJTkxJTkVfU1lTQ0FMTChzaWdhY3Rpb24sIDMs
IHNpZ251bSwgYWN0LCBvbGRhY3QpCisjZW5kaWYKKworLyogRGVmaW5lIERPX1NPQ0tFVC9ET19D
T05ORUNUIGZ1bmN0aW9ucyB0byBkZWFsIHdpdGggc29ja2V0Y2FsbCB2cyBzb2NrZXQvY29ubmVj
dCAqLworI2lmIGRlZmluZWQoX19OUl9zb2NrZXQpICYmIGRlZmluZWQoX19OUl9jb25uZWN0KQor
IyBkZWZpbmUgVVNFX09MRF9TT0NLRVRDQUxMIDAKKyNlbHNlCisjIGRlZmluZSBVU0VfT0xEX1NP
Q0tFVENBTEwgMQorI2VuZGlmCisvKiBzdHViIG91dCB0aGUgX19OUl8ncyBzbyB3ZSBjYW4gbGV0
IGdjYyBvcHRpbWl6ZSBhd2F5IGRlYWQgY29kZSAqLworI2lmbmRlZiBfX05SX3NvY2tldGNhbGwK
KyMgZGVmaW5lIF9fTlJfc29ja2V0Y2FsbCAwCisjZW5kaWYKKyNpZm5kZWYgX19OUl9zb2NrZXQK
KyMgZGVmaW5lIF9fTlJfc29ja2V0IDAKKyNlbmRpZgorI2lmbmRlZiBfX05SX2Nvbm5lY3QKKyMg
ZGVmaW5lIF9fTlJfY29ubmVjdCAwCisjZW5kaWYKKyNkZWZpbmUgRE9fU09DS0VUKHJlc3VsdCwg
ZG9tYWluLCB0eXBlLCBwcm90b2NvbCkgXAorCWRvIHsgXAorCQlpZiAoVVNFX09MRF9TT0NLRVRD
QUxMKSB7IFwKKwkJCXNvY2tldGFyZ3NbMF0gPSBkb21haW47IFwKKwkJCXNvY2tldGFyZ3NbMV0g
PSB0eXBlOyBcCisJCQlzb2NrZXRhcmdzWzJdID0gcHJvdG9jb2w7IFwKKwkJCXNvY2tldGFyZ3Nb
M10gPSAwOyBcCisJCQlyZXN1bHQgPSBJTkxJTkVfU1lTQ0FMTChzb2NrZXRjYWxsLCAyLCBTT0NL
T1Bfc29ja2V0LCBzb2NrZXRhcmdzKTsgXAorCQl9IGVsc2UgXAorCQkJcmVzdWx0ID0gSU5MSU5F
X1NZU0NBTEwoc29ja2V0LCAzLCBkb21haW4sIHR5cGUsIHByb3RvY29sKTsgXAorCX0gd2hpbGUg
KDApCisjZGVmaW5lIERPX0NPTk5FQ1QocmVzdWx0LCBzb2NrZmQsIHNlcnZfYWRkciwgYWRkcmxl
bikgXAorCWRvIHsgXAorCQlpZiAoVVNFX09MRF9TT0NLRVRDQUxMKSB7IFwKKwkJCXNvY2tldGFy
Z3NbMF0gPSBzb2NrZmQ7IFwKKwkJCXNvY2tldGFyZ3NbMV0gPSAodW5zaWduZWQgbG9uZyBpbnQp
c2Vydl9hZGRyOyBcCisJCQlzb2NrZXRhcmdzWzJdID0gYWRkcmxlbjsgXAorCQkJc29ja2V0YXJn
c1szXSA9IDA7IFwKKwkJCXJlc3VsdCA9IElOTElORV9TWVNDQUxMKHNvY2tldGNhbGwsIDIsIFNP
Q0tPUF9jb25uZWN0LCBzb2NrZXRhcmdzKTsgXAorCQl9IGVsc2UgXAorCQkJcmVzdWx0ID0gSU5M
SU5FX1NZU0NBTEwoY29ubmVjdCwgMywgc29ja2ZkLCBzZXJ2X2FkZHIsIGFkZHJsZW4pOyBcCisJ
fSB3aGlsZSAoMCkKKworI2lmbmRlZiBfUEFUSF9MT0cKKyMgZGVmaW5lIF9QQVRIX0xPRyAiL2Rl
di9sb2ciCisjZW5kaWYKKworc3RhdGljIGNvbnN0IGNoYXIgcGF0aF9sb2dbXSA9IF9QQVRIX0xP
RzsKKworLyogRm9yIGJ1aWxkaW5nIGdsaWJjIHdpdGggU1NQIHN3aXRjaGVkIG9uLCBkZWZpbmUg
X19wcm9nbmFtZSB0byBhCisgKiBjb25zdGFudCBpZiBidWlsZGluZyBmb3IgdGhlIHJ1bi10aW1l
IGxvYWRlciwgdG8gYXZvaWQgcHVsbGluZworICogaW4gbW9yZSBvZiBsaWJjLnNvIGludG8gbGQu
c28KKyAqLworI2lmZGVmIElTX0lOX3J0bGQKK3N0YXRpYyBjaGFyICpfX3Byb2duYW1lID0gIjxy
dGxkPiI7CisjZWxzZQorZXh0ZXJuIGNoYXIgKl9fcHJvZ25hbWU7CisjZW5kaWYKKwogCisvKiBD
b21tb24gaGFuZGxlciBjb2RlLCB1c2VkIGJ5IHN0YWNrX2Noa19mYWlsIGFuZCBfX3N0YWNrX3Nt
YXNoX2hhbmRsZXIKKyAqIElubGluZWQgdG8gZW5zdXJlIG5vIHNlbGYtcmVmZXJlbmNlcyB0byB0
aGUgaGFuZGxlciB3aXRoaW4gaXRzZWxmLgorICogRGF0YSBzdGF0aWMgdG8gYXZvaWQgcHV0dGlu
ZyBtb3JlIHRoYW4gbmVjZXNzYXJ5IG9uIHRoZSBzdGFjaywKKyAqIHRvIGFpZCBjb3JlIGRlYnVn
Z2luZy4KKyAqIFRoZSBjb3B5IGluIHJ0bGQgbXVzdCBiZSBoaWRkZW4gdG8gZW5zdXJlIHRoYXQg
aXQgZ2V0cyBubyByZWxvY2F0aW9ucworICogYW5kIHRodXMgZG9lcyBub3QgY3Jhc2ggaWYgY2Fs
bGVkIGR1cmluZyBsaWJjIHN0YXJ0dXAuCisgKi8KK19fYXR0cmlidXRlX18gKChfX25vcmV0dXJu
X18gLCBfX2Fsd2F5c19pbmxpbmVfXykpCisjaWZkZWYgSVNfSU5fcnRsZAorYXR0cmlidXRlX2hp
ZGRlbgorI2VuZGlmCitzdGF0aWMgaW5saW5lIHZvaWQKK19faGFyZGVuZWRfZ2VudG9vX3N0YWNr
X2Noa19mYWlsKGNoYXIgZnVuY1tdLCBpbnQgZGFtYWdlZCkKK3sKKyNkZWZpbmUgTUVTU0FHRV9C
VUZTSVogMjU2CisJc3RhdGljIHBpZF90IHBpZDsKKwlzdGF0aWMgaW50IHBsZW4sIGk7CisJc3Rh
dGljIGNoYXIgbWVzc2FnZVtNRVNTQUdFX0JVRlNJWl07CisJc3RhdGljIGNvbnN0IGNoYXIgbXNn
X3NzYVtdID0gIjogc3RhY2sgc21hc2hpbmcgYXR0YWNrIjsKKwlzdGF0aWMgY29uc3QgY2hhciBt
c2dfaW5mW10gPSAiIGluIGZ1bmN0aW9uICI7CisJc3RhdGljIGNvbnN0IGNoYXIgbXNnX3NzZFtd
ID0gIioqKiBzdGFjayBzbWFzaGluZyBkZXRlY3RlZCAqKio6ICI7CisJc3RhdGljIGNvbnN0IGNo
YXIgbXNnX3Rlcm1pbmF0ZWRbXSA9ICIgLSB0ZXJtaW5hdGVkXG4iOworCXN0YXRpYyBjb25zdCBj
aGFyIG1zZ191bmtub3duW10gPSAiPHVua25vd24+IjsKKwlzdGF0aWMgaW50IGxvZ19zb2NrZXQs
IGNvbm5lY3RfcmVzdWx0OworCXN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfdW4gc29jazsKKwlzdGF0
aWMgdW5zaWduZWQgbG9uZyBpbnQgc29ja2V0YXJnc1s0XTsKKworCS8qIEJ1aWxkIHNvY2tldCBh
ZGRyZXNzCisJICovCisJc29jay5zdW5fZmFtaWx5ID0gQUZfVU5JWDsKKwlpID0gMDsKKwl3aGls
ZSAoKHBhdGhfbG9nW2ldICE9ICdcMCcpICYmIChpPChzaXplb2Yoc29jay5zdW5fcGF0aCktMSkp
KSB7CisJCXNvY2suc3VuX3BhdGhbaV0gPSBwYXRoX2xvZ1tpXTsKKwkJaSsrOworCX0KKwlzb2Nr
LnN1bl9wYXRoW2ldID0gJ1wwJzsKKworCS8qIFRyeSBTT0NLX0RHUkFNIGNvbm5lY3Rpb24gdG8g
c3lzbG9nICovCisJY29ubmVjdF9yZXN1bHQgPSAtMTsKKwlET19TT0NLRVQobG9nX3NvY2tldCwg
QUZfVU5JWCwgU09DS19ER1JBTSwgMCk7CisJaWYgKGxvZ19zb2NrZXQgIT0gLTEpCisJCURPX0NP
Tk5FQ1QoY29ubmVjdF9yZXN1bHQsIGxvZ19zb2NrZXQsICZzb2NrLCBzaXplb2Yoc29jaykpOwor
CWlmIChjb25uZWN0X3Jlc3VsdCA9PSAtMSkgeworCQlpZiAobG9nX3NvY2tldCAhPSAtMSkKKwkJ
CUlOTElORV9TWVNDQUxMKGNsb3NlLCAxLCBsb2dfc29ja2V0KTsKKwkJLyogVHJ5IFNPQ0tfU1RS
RUFNIGNvbm5lY3Rpb24gdG8gc3lzbG9nICovCisJCURPX1NPQ0tFVChsb2dfc29ja2V0LCBBRl9V
TklYLCBTT0NLX1NUUkVBTSwgMCk7CisJCWlmIChsb2dfc29ja2V0ICE9IC0xKQorCQkJRE9fQ09O
TkVDVChjb25uZWN0X3Jlc3VsdCwgbG9nX3NvY2tldCwgJnNvY2ssIHNpemVvZihzb2NrKSk7CisJ
fQorCisJLyogQnVpbGQgbWVzc2FnZS4gIE1lc3NhZ2VzIGFyZSBnZW5lcmF0ZWQgYm90aCBpbiB0
aGUgb2xkIHN0eWxlIGFuZCBuZXcgc3R5bGUsCisJICogc28gdGhhdCBsb2cgd2F0Y2hlcnMgdGhh
dCBhcmUgY29uZmlndXJlZCBmb3IgdGhlIG9sZC1zdHlsZSBtZXNzYWdlIGNvbnRpbnVlCisJICog
dG8gd29yay4KKwkgKi8KKyNkZWZpbmUgc3RyY29uY2F0KHN0cikgXAorCQl7aT0wOyB3aGlsZSAo
KHN0cltpXSAhPSAnXDAnKSAmJiAoKGkrcGxlbik8KE1FU1NBR0VfQlVGU0laLTEpKSkgXAorCQl7
XAorCQkJbWVzc2FnZVtwbGVuK2ldPXN0cltpXTtcCisJCQlpKys7XAorCQl9XAorCQlwbGVuKz1p
O30KKworCS8qIFIuSGVuZGVyc29uIHBvc3QtZ2NjLTQgc3R5bGUgbWVzc2FnZSAqLworCXBsZW4g
PSAwOworCXN0cmNvbmNhdChtc2dfc3NkKTsKKwlpZiAoX19wcm9nbmFtZSAhPSAoY2hhciAqKTAp
CisJCXN0cmNvbmNhdChfX3Byb2duYW1lKQorCWVsc2UKKwkJc3RyY29uY2F0KG1zZ191bmtub3du
KTsKKwlzdHJjb25jYXQobXNnX3Rlcm1pbmF0ZWQpOworCisJLyogV3JpdGUgb3V0IGVycm9yIG1l
c3NhZ2UgdG8gU1RERVJSLCB0byBzeXNsb2cgaWYgb3BlbiAqLworCUlOTElORV9TWVNDQUxMKHdy
aXRlLCAzLCBTVERFUlJfRklMRU5PLCBtZXNzYWdlLCBwbGVuKTsKKwlpZiAoY29ubmVjdF9yZXN1
bHQgIT0gLTEpCisJCUlOTElORV9TWVNDQUxMKHdyaXRlLCAzLCBsb2dfc29ja2V0LCBtZXNzYWdl
LCBwbGVuKTsKKworCS8qIERyLiBFdG9oIHByZS1nY2MtNCBzdHlsZSBtZXNzYWdlICovCisJcGxl
biA9IDA7CisJaWYgKF9fcHJvZ25hbWUgIT0gKGNoYXIgKikwKQorCQlzdHJjb25jYXQoX19wcm9n
bmFtZSkKKwllbHNlCisJCXN0cmNvbmNhdChtc2dfdW5rbm93bik7CisJc3RyY29uY2F0KG1zZ19z
c2EpOworCXN0cmNvbmNhdChtc2dfaW5mKTsKKwlpZiAoZnVuYyAhPSBOVUxMKQorCQlzdHJjb25j
YXQoZnVuYykKKwllbHNlCisJCXN0cmNvbmNhdChtc2dfdW5rbm93bik7CisJc3RyY29uY2F0KG1z
Z190ZXJtaW5hdGVkKTsKKwkvKiBXcml0ZSBvdXQgZXJyb3IgbWVzc2FnZSB0byBTVERFUlIsIHRv
IHN5c2xvZyBpZiBvcGVuICovCisJSU5MSU5FX1NZU0NBTEwod3JpdGUsIDMsIFNUREVSUl9GSUxF
Tk8sIG1lc3NhZ2UsIHBsZW4pOworCWlmIChjb25uZWN0X3Jlc3VsdCAhPSAtMSkKKwkJSU5MSU5F
X1NZU0NBTEwod3JpdGUsIDMsIGxvZ19zb2NrZXQsIG1lc3NhZ2UsIHBsZW4pOwogCi1leHRlcm4g
Y2hhciAqKl9fbGliY19hcmd2IGF0dHJpYnV0ZV9oaWRkZW47CisJLyogV3JpdGUgb3V0IGVycm9y
IG1lc3NhZ2UgdG8gU1RERVJSLCB0byBzeXNsb2cgaWYgb3BlbiAqLworCUlOTElORV9TWVNDQUxM
KHdyaXRlLCAzLCBTVERFUlJfRklMRU5PLCBtZXNzYWdlLCBwbGVuKTsKKwlpZiAoY29ubmVjdF9y
ZXN1bHQgIT0gLTEpCisJCUlOTElORV9TWVNDQUxMKHdyaXRlLCAzLCBsb2dfc29ja2V0LCBtZXNz
YWdlLCBwbGVuKTsKKworCWlmIChsb2dfc29ja2V0ICE9IC0xKQorCQlJTkxJTkVfU1lTQ0FMTChj
bG9zZSwgMSwgbG9nX3NvY2tldCk7CisKKwkvKiBTdWljaWRlICovCisJcGlkID0gSU5MSU5FX1NZ
U0NBTEwoZ2V0cGlkLCAwKTsKKworCWlmIChFTkFCTEVfU1NQX1NNQVNIX0RVTVBTX0NPUkUpIHsK
KwkJc3RhdGljIHN0cnVjdCBzaWdhY3Rpb24gZGVmYXVsdF9hYm9ydF9hY3Q7CisJCS8qIFJlbW92
ZSBhbnkgdXNlci1zdXBwbGllZCBoYW5kbGVyIGZvciBTSUdBQlJULCBiZWZvcmUgdXNpbmcgaXQg
Ki8KKwkJZGVmYXVsdF9hYm9ydF9hY3Quc2FfaGFuZGxlciA9IFNJR19ERkw7CisJCWRlZmF1bHRf
YWJvcnRfYWN0LnNhX3NpZ2FjdGlvbiA9IE5VTEw7CisJCV9fc2lnZmlsbHNldCgmZGVmYXVsdF9h
Ym9ydF9hY3Quc2FfbWFzayk7CisJCWRlZmF1bHRfYWJvcnRfYWN0LnNhX2ZsYWdzID0gMDsKKwkJ
aWYgKERPX1NJR0FDVElPTihTSUdBQlJULCAmZGVmYXVsdF9hYm9ydF9hY3QsIE5VTEwpID09IDAp
CisJCQlJTkxJTkVfU1lTQ0FMTChraWxsLCAyLCBwaWQsIFNJR0FCUlQpOworCX0KKworCS8qIE5v
dGU7IGFjdGlvbnMgY2Fubm90IGJlIGFkZGVkIHRvIFNJR0tJTEwgKi8KKwlJTkxJTkVfU1lTQ0FM
TChraWxsLCAyLCBwaWQsIFNJR0tJTEwpOworCisJLyogSW4gY2FzZSB0aGUga2lsbCBkaWRuJ3Qg
d29yaywgZXhpdCBhbnl3YXkKKwkgKiBUaGUgbG9vcCBwcmV2ZW50cyBnY2MgdGhpbmtpbmcgdGhp
cyByb3V0aW5lIHJldHVybnMKKwkgKi8KKwl3aGlsZSAoMSkKKwkJSU5MSU5FX1NZU0NBTEwoZXhp
dCwgMCk7Cit9CiAKLXZvaWQKLV9fYXR0cmlidXRlX18gKChub3JldHVybikpCi1fX3N0YWNrX2No
a19mYWlsICh2b2lkKQorX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpCit2b2lkIF9fc3Rh
Y2tfY2hrX2ZhaWwodm9pZCkKIHsKLSAgX19mb3J0aWZ5X2ZhaWwgKCJzdGFjayBzbWFzaGluZyBk
ZXRlY3RlZCIpOworCV9faGFyZGVuZWRfZ2VudG9vX3N0YWNrX2Noa19mYWlsKE5VTEwsIDApOwog
fQpJbmRleDogbGliYy1wYXRjaGVkL2NvbmZpZ3VyZS5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJjLXBh
dGNoZWQub3JpZy9jb25maWd1cmUuaW4JMjAwOC0xMi0wMyAyMjo0NTo0Mi4wMDAwMDAwMDAgKzAw
MDAKKysrIGxpYmMtcGF0Y2hlZC9jb25maWd1cmUuaW4JMjAwOC0xMi0wNCAwMDo1MjozMS4wMDAw
MDAwMDAgKzAwMDAKQEAgLTIwNyw2ICsyMDcsMTkgQEAKIAkgICAgICBbYmluZG5vdz1ub10pCiBB
Q19TVUJTVChiaW5kbm93KQogCitkbmwgQnVpbGQgZ2xpYmMgd2l0aCAtZnN0YWNrLXByb3RlY3Rv
ciwgb3Igd2l0aCAtZnN0YWNrLXByb3RlY3Rvci1hbGwuCitBQ19BUkdfV0lUSChbc3RhY2stcHJv
dGVjdG9yXSwKKyAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtc3RhY2stcHJvdGVj
dG9yPUA8OkB5ZXN8bm98YWxsQDo+QF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGV0
ZWN0IHN0YWNrIG92ZXJmbG93cyBpbiBnbGliYyBmdW5jdGlvbnMgd2l0aCBsYXJnZSBzdHJpbmcg
YnVmZmVycywgb3IgaW4gYWxsIGdsaWJjIGZ1bmN0aW9uc10pLAorICAgICAgICAgICAgW3dpdGhf
c3RhY2tfcHJvdGVjdG9yPSR3aXRodmFsXSwKKyAgICAgICAgICAgIFt3aXRoX3N0YWNrX3Byb3Rl
Y3Rvcj1ub10pCitjYXNlIHgiJHdpdGhfc3RhY2tfcHJvdGVjdG9yIiBpbgorICAgIHhhbGx8eHll
c3x4bm8pIDs7CisgICAgKikgQUNfTVNHX0VSUk9SKFtOb3QgYSB2YWxpZCBhcmd1bWVudCBmb3Ig
LS13aXRoLXN0YWNrLXByb3RlY3Rvcl0pOzsKK2VzYWMKK3N0YWNrX3Byb3RlY3Q9IiR3aXRoX3N0
YWNrX3Byb3RlY3RvciIKK0FDX1NVQlNUKHN0YWNrX3Byb3RlY3QpCisKIGRubCBPbiBzb21lIHBs
YXRmb3JtcyB3ZSBjYW5ub3QgdXNlIGR5bmFtaWMgbG9hZGluZy4gIFdlIG11c3QgcHJvdmlkZQog
ZG5sIHN0YXRpYyBOU1MgbW9kdWxlcy4KIEFDX0FSR19FTkFCTEUoW3N0YXRpYy1uc3NdLApAQCAt
MTA1Nyw2ICsxMDcwLDMyIEBACiBvdmVycmlkZSBzdGRkZWYuaCA9ICMgVGhlIGluc3RhbGxlZCA8
c3RkZGVmLmg+IHNlZW1zIHRvIGJlIGxpYmMtZnJpZW5kbHkuIgogZmkKIAorQUNfQ0FDSEVfQ0hF
Q0soZm9yIC1mc3RhY2stcHJvdGVjdG9yLCBsaWJjX2N2X3NzcCwgW2RubAorY2F0ID4gY29uZnRl
c3QuYyA8PEVPRgoraW50IGZvbzsKK21haW4gKCkgeyByZXR1cm4gMDt9CitFT0YKK2lmIEFDX1RS
WV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyAtV2Vycm9yIC1m
c3RhY2stcHJvdGVjdG9yCisJCQkgICAgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAxPiZBU19NRVNT
QUdFX0xPR19GRF0pCit0aGVuCisgIGxpYmNfY3Zfc3NwPXllcworCisgIGRubCBXaGlsZSBtb3N0
IHRlc3RzIGNhbiBiZSBjb25kdWN0ZWQgd2l0aCBzdGFjayBwcm90ZWN0aW9uIG9uLCBhIGZldyBh
cmUKKyAgZG5sIGluY29tcGF0aWJsZSB3aXRoIGl0LgorICBub19zc3A9LWZuby1zdGFjay1wcm90
ZWN0b3IKKyAgbGlic3NwPS1sc3NwCitlbHNlCisgIGxpYmNfY3Zfc3NwPW5vCisgIG5vX3NzcD0K
KyAgbGlic3NwPQorCisgIGlmIHRlc3QgeCIkd2l0aF9zdGFja19wcm90ZWN0b3IiICE9IHhubzsg
dGhlbgorICAgIEFDX01TR19FUlJPUihbLS13aXRoLXN0YWNrLXByb3RlY3Rvcj0kd2l0aF9zdGFj
a19wcm90ZWN0b3Igc3BlY2lmaWVkLCBidXQgc3RhY2sgcHJvdGVjdGlvbiBpcyBub3Qgc3VwcG9y
dGVkIGJ5IHRoZSBjb21waWxlci5dKQorICBmaQorZmkKK3JtIC1mIGNvbmZ0ZXN0Kl0pCitBQ19T
VUJTVChsaWJjX2N2X3NzcCkKKwogQUNfQ0FDSEVfQ0hFQ0sod2hldGhlciB3ZSBuZWVkIHRvIHVz
ZSAtUCB0byBhc3NlbWJsZSAuUyBmaWxlcywKIAkgICAgICAgbGliY19jdl9uZWVkX21pbnVzX1As
IFtkbmwKIGNhdCA+IGNvbmZ0ZXN0LlMgPDxFT0YKQEAgLTExMjYsNyArMTE2NSw3IEBACiBFT0YK
IGlmICR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIFwKIAkgICAgLW5vc3RhcnRm
aWxlcyAtbm9zdGRsaWIgXAotCSAgICAtbyBjb25mdGVzdCBjb25mdGVzdC5zIGNvbmZ0ZXN0MS5j
IDE+JkFTX01FU1NBR0VfTE9HX0ZEIDI+JkFTX01FU1NBR0VfTE9HX0ZEOyB0aGVuCisJICAgIC1v
IGNvbmZ0ZXN0IGNvbmZ0ZXN0LnMgY29uZnRlc3QxLmMgJGxpYnNzcCAxPiZBU19NRVNTQUdFX0xP
R19GRCAyPiZBU19NRVNTQUdFX0xPR19GRDsgdGhlbgogICBsaWJjX2N2X2FzbV9zZXRfZGlyZWN0
aXZlPXllcwogZWxzZQogICBsaWJjX2N2X2FzbV9zZXRfZGlyZWN0aXZlPW5vCkBAIC0xMTg4LDcg
KzEyMjcsNyBAQAogRU9GCiAgIGlmICR7Q0MtY2N9IC1jICRBU0ZMQUdTIGNvbmZ0ZXN0LnMgMT4m
QVNfTUVTU0FHRV9MT0dfRkQgMj4mQVNfTUVTU0FHRV9MT0dfRkQ7IHRoZW4KICAgICBpZiBBQ19U
UllfQ09NTUFORChbJHtDQy1jY30gJENGTEFHUyAkTERGTEFHUyAtc2hhcmVkCi0JCQkJLW8gY29u
ZnRlc3Quc28gY29uZnRlc3QubworCQkJCS1vIGNvbmZ0ZXN0LnNvIGNvbmZ0ZXN0Lm8gJGxpYnNz
cAogCQkJCS1ub3N0YXJ0ZmlsZXMgLW5vc3RkbGliCiAJCQkJLVdsLC0tdmVyc2lvbi1zY3JpcHQs
Y29uZnRlc3QubWFwCiAJCSAgICAgICAxPiZBU19NRVNTQUdFX0xPR19GRF0pOwpAQCAtMTM2MSw3
ICsxNDAwLDcgQEAKIGludCBmb28gKHZvaWQpIHsgcmV0dXJuIDE7IH0KIGludCAoKmZwKSAodm9p
ZCkgX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW5pdF9hcnJheSIpKSkgPSBmb287CiBFT0YK
LSAgaWYgQUNfVFJZX0NPTU1BTkQoWyR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdT
IC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMKKyAgaWYgQUNfVFJZX0NPTU1BTkQoWyR7Q0MtY2N9ICRD
RkxBR1MgJENQUEZMQUdTICRMREZMQUdTICRub19zc3AgLW8gY29uZnRlc3QgY29uZnRlc3QuYwog
CQkgICAgIC1zdGF0aWMgLW5vc3RhcnRmaWxlcyAtbm9zdGRsaWIgMT4mQVNfTUVTU0FHRV9MT0df
RkRdKQogICB0aGVuCiAgICAgaWYgcmVhZGVsZiAtUyBjb25mdGVzdCB8IGZncmVwIElOSVRfQVJS
QVkgPiAvZGV2L251bGw7IHRoZW4KQEAgLTE0MDEsNyArMTQ0MCw3IEBACiBFT0YKICAgaWYgQUNf
VFJZX0NPTU1BTkQoWyR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTCiAJCSAgICAg
LWZQSUMgLXNoYXJlZCAtbyBjb25mdGVzdC5zbyBjb25mdGVzdC5jCi0JCSAgICAgLW5vc3RhcnRm
aWxlcyAtbm9zdGRsaWIKKwkJICAgICAtbm9zdGFydGZpbGVzIC1ub3N0ZGxpYiAkbGlic3NwCiAJ
CSAgICAgLVdsLC0tZW5hYmxlLW5ldy1kdGFncywteixub2RlbGV0ZSAxPiZBU19NRVNTQUdFX0xP
R19GRF0pCiAgIHRoZW4KICAgICBsaWJjX2N2X3pfbm9kZWxldGU9eWVzCkBAIC0xNDE3LDcgKzE0
NTYsNyBAQAogRU9GCiAgIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdTICRDUFBG
TEFHUyAkTERGTEFHUwogCQkJLWZQSUMgLXNoYXJlZCAtbyBjb25mdGVzdC5zbyBjb25mdGVzdC5j
Ci0JCQktbm9zdGFydGZpbGVzIC1ub3N0ZGxpYgorCQkJLW5vc3RhcnRmaWxlcyAtbm9zdGRsaWIg
JGxpYnNzcAogCQkJLVdsLC0tZW5hYmxlLW5ldy1kdGFncywteixub2Rsb3BlbiAxPiZBU19NRVNT
QUdFX0xPR19GRF0pCiAgIHRoZW4KICAgICBsaWJjX2N2X3pfbm9kbG9wZW49eWVzCkBAIC0xNDMz
LDcgKzE0NzIsNyBAQAogRU9GCiAgIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdT
ICRDUFBGTEFHUyAkTERGTEFHUwogCQkJLWZQSUMgLXNoYXJlZCAtbyBjb25mdGVzdC5zbyBjb25m
dGVzdC5jCi0JCQktbm9zdGFydGZpbGVzIC1ub3N0ZGxpYgorCQkJLW5vc3RhcnRmaWxlcyAtbm9z
dGRsaWIgJGxpYnNzcAogCQkJLVdsLC0tZW5hYmxlLW5ldy1kdGFncywteixpbml0Zmlyc3QgMT4m
QVNfTUVTU0FHRV9MT0dfRkRdKQogICB0aGVuCiAgICAgbGliY19jdl96X2luaXRmaXJzdD15ZXMK
QEAgLTE0NjgsNyArMTUwNyw3IEBACiAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDxFT0YKIGludCBfc3Rh
cnQgKHZvaWQpIHsgcmV0dXJuIDQyOyB9CiBFT0YKLSAgaWYgQUNfVFJZX0NPTU1BTkQoWyR7Q0Mt
Y2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTCisgIGlmIEFDX1RSWV9DT01NQU5EKFske0ND
LWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyAkbm9fc3NwCiAJCQkgICAgICAtZlBJQyAt
c2hhcmVkIC1vIGNvbmZ0ZXN0LnNvIGNvbmZ0ZXN0LmMKIAkJCSAgICAgIC1XbCwtQmdyb3VwIC1u
b3N0ZGxpYiAxPiZBU19NRVNTQUdFX0xPR19GRF0pCiAgIHRoZW4KQEAgLTE1MDEsNyArMTU0MCw3
IEBACiAgIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERG
TEFHUwogCQkJICAgICAgLWZQSUMgLXNoYXJlZCAtbyBjb25mdGVzdC5zbyBjb25mdGVzdC5jCiAJ
CQkgICAgICAtbGdjY19zJGxpYmNfY3ZfbGliZ2NjX3Nfc3VmZml4IC1XbCwtLWFzLW5lZWRlZAot
CQkJICAgICAgLW5vc3RkbGliIDE+JkFTX01FU1NBR0VfTE9HX0ZEXSkKKwkJCSAgICAgIC1ub3N0
ZGxpYiAkbGlic3NwIDE+JkFTX01FU1NBR0VfTE9HX0ZEXSkKICAgdGhlbgogICAgIGxpYmNfY3Zf
YXNfbmVlZGVkPXllcwogICBlbHNlCkBAIC0xNTQxLDcgKzE1ODAsNyBAQAogRU9GCiAgIGlmIEFD
X1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUwogCQkJLWZQ
SUMgLXNoYXJlZCAtbyBjb25mdGVzdC5zbyBjb25mdGVzdC5jCi0JCQktbm9zdGRsaWIgLW5vc3Rh
cnRmaWxlcworCQkJLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgJGxpYnNzcAogCQkJLVdsLC16LGNv
bWJyZWxvYyAxPiZBU19NRVNTQUdFX0xPR19GRF0pCiAgIHRoZW4KIGRubCBUaGUgZm9sbG93aW5n
IHRlc3QgaXMgYSBiaXQgd2Vhay4gIFdlIG11c3QgdXNlIGEgdG9vbCB3aGljaCBjYW4gdGVzdApA
QCAtMTU3MCw3ICsxNjA5LDcgQEAKIEVPRgogICBpZiBBQ19UUllfQ09NTUFORChbJHtDQy1jY30g
JENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MKIAkJCSAgICAgIC1mUElDIC1zaGFyZWQgLW8gY29u
ZnRlc3Quc28gY29uZnRlc3QuYwotCQkJICAgICAgLVdsLC16LGV4ZWNzdGFjayAtbm9zdGRsaWIK
KwkJCSAgICAgIC1XbCwteixleGVjc3RhY2sgLW5vc3RkbGliICRsaWJzc3AKIAkJCSAgICAgIDE+
JkFTX01FU1NBR0VfTE9HX0ZEXSkKICAgdGhlbgogICAgIGxpYmNfY3Zfel9leGVjc3RhY2s9eWVz
CkBAIC0xNjAzLDcgKzE2NDIsNyBAQAogRU9GCiAgIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNj
fSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUwogCQkJICAgICAgLWZQSUMgLXNoYXJlZCAtbyBj
b25mdGVzdC5zbyBjb25mdGVzdC5jCi0JCQkgICAgICAtV2wsLS1oYXNoLXN0eWxlPWJvdGggLW5v
c3RkbGliIDE+JkFTX01FU1NBR0VfTE9HX0ZEXSkKKwkJCSAgICAgIC1XbCwtLWhhc2gtc3R5bGU9
Ym90aCAtbm9zdGRsaWIgJGxpYnNzcCAxPiZBU19NRVNTQUdFX0xPR19GRF0pCiAgIHRoZW4KICAg
ICBsaWJjX2N2X2hhc2hzdHlsZT15ZXMKICAgZWxzZQpAQCAtMTYzMiwyMSArMTY3MSw2IEBACiBm
aQogQUNfU1VCU1QoZm5vX3VuaXRfYXRfYV90aW1lKQogCi1BQ19DQUNIRV9DSEVDSyhmb3IgLWZz
dGFjay1wcm90ZWN0b3IsIGxpYmNfY3Zfc3NwLCBbZG5sCi1jYXQgPiBjb25mdGVzdC5jIDw8RU9G
Ci1pbnQgZm9vOwotbWFpbiAoKSB7IHJldHVybiAwO30KLUVPRgotaWYgQUNfVFJZX0NPTU1BTkQo
WyR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIC1XZXJyb3IgLWZzdGFjay1wcm90
ZWN0b3IKLQkJCSAgICAtbyBjb25mdGVzdCBjb25mdGVzdC5jIDE+JkFTX01FU1NBR0VfTE9HX0ZE
XSkKLXRoZW4KLSAgbGliY19jdl9zc3A9eWVzCi1lbHNlCi0gIGxpYmNfY3Zfc3NwPW5vCi1maQot
cm0gLWYgY29uZnRlc3QqXSkKLUFDX1NVQlNUKGxpYmNfY3Zfc3NwKQotCiBBQ19DQUNIRV9DSEVD
Syhmb3IgLWZnbnU4OS1pbmxpbmUsIGxpYmNfY3ZfZ251ODlfaW5saW5lLCBbZG5sCiBjYXQgPiBj
b25mdGVzdC5jIDw8RU9GCiBpbnQgZm9vOwpAQCAtMTgzMiw3ICsxODU2LDcgQEAKIGRubCBObyBc
IGluIGNvbW1hbmQgaGVyZSBiZWNhdXNlIGl0IGVuZHMgdXAgaW5zaWRlICcnLgogaWYgQUNfVFJZ
X0NPTU1BTkQoWyR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTCiAJCQkgICAgLW5v
c3RkbGliIC1ub3N0YXJ0ZmlsZXMgLVdsLC0tbm8td2hvbGUtYXJjaGl2ZQotCQkJICAgIC1vIGNv
bmZ0ZXN0IGNvbmZ0ZXN0LmMgMT4mQVNfTUVTU0FHRV9MT0dfRkRdKTsgdGhlbgorCQkJICAgIC1v
IGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgJGxpYnNzcCAxPiZBU19NRVNTQUdFX0xPR19GRF0pOyB0aGVu
CiAgIGxpYmNfY3ZfbGRfbm9fd2hvbGVfYXJjaGl2ZT15ZXMKIGVsc2UKICAgbGliY19jdl9sZF9u
b193aG9sZV9hcmNoaXZlPW5vCkBAIC0xODUyLDcgKzE4NzYsNyBAQAogZG5sIE5vIFwgaW4gY29t
bWFuZCBoZXJlIGJlY2F1c2UgaXQgZW5kcyB1cCBpbnNpZGUgJycuCiBpZiBBQ19UUllfQ09NTUFO
RChbJHtDQy1jY30gJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MKIAkJCSAgICAtbm9zdGRsaWIg
LW5vc3RhcnRmaWxlcyAtZmV4Y2VwdGlvbnMKLQkJCSAgICAtbyBjb25mdGVzdCBjb25mdGVzdC5j
IDE+JkFTX01FU1NBR0VfTE9HX0ZEXSk7IHRoZW4KKwkJCSAgICAtbyBjb25mdGVzdCBjb25mdGVz
dC5jICRsaWJzc3AgMT4mQVNfTUVTU0FHRV9MT0dfRkRdKTsgdGhlbgogICBsaWJjX2N2X2djY19l
eGNlcHRpb25zPXllcwogZWxzZQogICBsaWJjX2N2X2djY19leGNlcHRpb25zPW5vCkBAIC0xODg3
LDcgKzE5MTEsNyBAQAogRU9GCiBkbmwgTm8gXCBpbiBjb21tYW5kIGhlcmUgYmVjYXVzZSBpdCBl
bmRzIHVwIGluc2lkZSAnJy4KIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdTICRD
UFBGTEFHUyAkTERGTEFHUyAtbm9zdGRsaWIgLW5vc3RhcnRmaWxlcwotCQkJICAgIC1vIGNvbmZ0
ZXN0IGNvbmZ0ZXN0LmMgLWxnY2MgPiZBU19NRVNTQUdFX0xPR19GRF0pOyB0aGVuCisJCQkgICAg
LW8gY29uZnRlc3QgY29uZnRlc3QuYyAtbGdjYyAkbGlic3NwID4mQVNfTUVTU0FHRV9MT0dfRkRd
KTsgdGhlbgogICBsaWJjX2N2X2djY19idWlsdGluX2V4cGVjdD15ZXMKIGVsc2UKICAgbGliY19j
dl9nY2NfYnVpbHRpbl9leHBlY3Q9bm8KSW5kZXg6IGxpYmMtcGF0Y2hlZC9jc3UvTWFrZWZpbGUK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gbGliYy1wYXRjaGVkLm9yaWcvY3N1L01ha2VmaWxlCTIwMDgtMTItMDQg
MDA6NTE6NTUuMDAwMDAwMDAwICswMDAwCisrKyBsaWJjLXBhdGNoZWQvY3N1L01ha2VmaWxlCTIw
MDgtMTItMDQgMDA6NTI6MzEuMDAwMDAwMDAwICswMDAwCkBAIC01MSw2ICs1MSwxMyBAQAogCiBp
bmNsdWRlIC4uL01ha2Vjb25maWcKIAoraWZlcSAoJChoYXZlLXNzcCkseWVzKQorQ0ZMQUdTLS5v
ICs9IC1mbm8tc3RhY2stcHJvdGVjdG9yCitDRkxBR1MtLm9nICs9IC1mbm8tc3RhY2stcHJvdGVj
dG9yCitDRkxBR1MtLm9wICs9IC1mbm8tc3RhY2stcHJvdGVjdG9yCitDRkxBR1MtLm9zICs9IC1m
bm8tc3RhY2stcHJvdGVjdG9yCitlbmRpZgorCiBpZmVxICh5ZXMsJChidWlsZC1zaGFyZWQpKQog
ZXh0cmEtb2JqcyArPSBTJChzdGFydC1pbnN0YWxsZWQtbmFtZSkKIGluc3RhbGwtbGliICs9IFMk
KHN0YXJ0LWluc3RhbGxlZC1uYW1lKQpJbmRleDogbGliYy1wYXRjaGVkL01ha2VydWxlcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBsaWJjLXBhdGNoZWQub3JpZy9NYWtlcnVsZXMJMjAwOC0xMi0wNCAwMDo1MTo1
My4wMDAwMDAwMDAgKzAwMDAKKysrIGxpYmMtcGF0Y2hlZC9NYWtlcnVsZXMJMjAwOC0xMi0wNCAw
MDo1MjozMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTIzNiw3ICsyMzYsNyBAQAogCSAgICAgd2hpbGUg
WyAkJCMgLWdlIDIgXTsgZG8JCQkJCSAgICAgIFwKIAkgICAgICAgdD0kJDE7IHNoaWZ0OyAJCQkJ
CQkgICAgICBcCiAJICAgICAgIGQ9JCQxOyBzaGlmdDsJCQkJCQkgICAgICBcCi0JICAgICAgIHY9
JCR7dCUlJX07IFsgeCIkJHYiID0geCBdIHx8IHY9IlwkJCgkJHt2fUNQUEZMQUdTKSI7CSAgICAg
IFwKKwkgICAgICAgdj0kJHt0JSUlfTsgWyB4IiQkdiIgPSB4IF0gfHwgdj0iXCQkKCQke3Z9Q1BQ
RkxBR1MpIFwkJCgkJHt2fUNGTEFHUykiOwkgICAgICBcCiAJICAgICAgIGZvciBzIGluICQkYXNt
IC5jOyBkbwkJCQkJICAgICAgXAogCQkgZWNobyAiXCQkKG9ianBmeCkkJHQkJG86ICQkZGlyLyQk
ZCQkcyBcJCQoYmVmb3JlLWNvbXBpbGUpIjsgIFwKIAkJIGVjaG8gIglcJCQoY29tcGlsZS1jb21t
YW5kJCRzKSAkJHYiOwkJCSAgICAgIFwKSW5kZXg6IGxpYmMtcGF0Y2hlZC9lbGYvcnRsZC1SdWxl
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBsaWJjLXBhdGNoZWQub3JpZy9lbGYvcnRsZC1SdWxlcwkyMDA4LTEy
LTAzIDIyOjQ1OjQyLjAwMDAwMDAwMCArMDAwMAorKysgbGliYy1wYXRjaGVkL2VsZi9ydGxkLVJ1
bGVzCTIwMDgtMTItMDQgMDA6NTI6MzEuMDAwMDAwMDAwICswMDAwCkBAIC05OCw3ICs5OCw3IEBA
CiAkKG9ianBmeClydGxkLSUub3M6ICUucyAkKGJlZm9yZS1jb21waWxlKQogCSQoY29tcGlsZS1j
b21tYW5kLnMpICQocnRsZC1DUFBGTEFHUykKICQob2JqcGZ4KXJ0bGQtJS5vczogJS5jICQoYmVm
b3JlLWNvbXBpbGUpCi0JJChjb21waWxlLWNvbW1hbmQuYykgJChydGxkLUNQUEZMQUdTKQorCSQo
Y29tcGlsZS1jb21tYW5kLmMpICQocnRsZC1DUFBGTEFHUykgJChydGxkLUNGTEFHUykKIAogIyBU
aGUgcnVsZXMgZm9yIGdlbmVyYXRlZCBzb3VyY2UgZmlsZXMuCiAkKG9ianBmeClydGxkLSUub3M6
ICQob2JqcGZ4KSUuUyAkKGJlZm9yZS1jb21waWxlKTsgJChjb21waWxlLWNvbW1hbmQuUykKQEAg
LTEyNCw0ICsxMjQsOCBAQAogIyBUaGlzIGhlcmUgaXMgdGhlIHdob2xlIHBvaW50IG9mIGFsbCB0
aGUgc2hlbmFuaWdhbnMuCiBydGxkLUNQUEZMQUdTIDo9IC1ETk9UX0lOX2xpYmM9MSAtRElTX0lO
X3J0bGQ9MQogCitpZmVxICgkKGhhdmUtc3NwKSx5ZXMpCitydGxkLUNGTEFHUyA6PSAtZm5vLXN0
YWNrLXByb3RlY3RvcgorZW5kaWYKKwogZW5kaWYKSW5kZXg6IGxpYmMtcGF0Y2hlZC9lbGYvTWFr
ZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gbGliYy1wYXRjaGVkLm9yaWcvZWxmL01ha2VmaWxlCTIwMDgt
MTItMDMgMjI6NDU6NDIuMDAwMDAwMDAwICswMDAwCisrKyBsaWJjLXBhdGNoZWQvZWxmL01ha2Vm
aWxlCTIwMDgtMTItMDQgMDA6NTI6MzEuMDAwMDAwMDAwICswMDAwCkBAIC0xMDEsNiArMTAxLDE2
IEBACiAKIGluY2x1ZGUgLi4vTWFrZWNvbmZpZwogCitpZmVxICgkKGhhdmUtc3NwKSx5ZXMpCisj
IEluIHRoZSBkeW5hbWljIGxvYWRlciwgc29tZSByb3V0aW5lcyAod2hpY2ggaW5jbHVkZSByb3V0
aW5lcyBjYWxsZWQgYmVmb3JlCisjIHRoZSBzdGFjayBndWFyZCBpcyBpbml0aWFsaXplZCkgYXJl
IGNvbXBpbGVkIHdpdGhvdXQgc3RhY2sgcHJvdGVjdGlvbi4KKyMgRG8gdGhlIHNhbWUgd2hlbiB0
aG9zZSByb3V0aW5lcyBhcmUgZm91bmQgaW4gdGhlIHN0YXRpYyBsaWJyYXJ5LgorCitDRkxBR1Mt
Lm8gKz0gJChpZiAkKGZpbHRlciAkKEBGKSwkKHBhdHN1YnN0ICUsJS5vLCQoZWxpZGUtcm91dGlu
ZXMub3MpKSksLWZuby1zdGFjay1wcm90ZWN0b3IpCitDRkxBR1MtLm9wICs9ICQoaWYgJChmaWx0
ZXIgJChARiksJChwYXRzdWJzdCAlLCUub3AsJChlbGlkZS1yb3V0aW5lcy5vcykpKSwtZm5vLXN0
YWNrLXByb3RlY3RvcikKK0NGTEFHUy0ub2cgKz0gJChpZiAkKGZpbHRlciAkKEBGKSwkKHBhdHN1
YnN0ICUsJS5vZywkKGVsaWRlLXJvdXRpbmVzLm9zKSkpLC1mbm8tc3RhY2stcHJvdGVjdG9yKQor
ZW5kaWYKKwogaWZlcSAoJCh1bndpbmQtZmluZC1mZGUpLHllcykKIHJvdXRpbmVzICs9IHVud2lu
ZC1kdzItZmRlLWdsaWJjCiBzaGFyZWQtb25seS1yb3V0aW5lcyArPSB1bndpbmQtZHcyLWZkZS1n
bGliYwpAQCAtMzk2LDYgKzQwNiw5IEBACiBDRkxBR1MtY2FjaGUuYyA9ICQoU1lTQ09ORi1GTEFH
UykKIAogQ1BQRkxBR1MtLm9zICs9ICQoaWYgJChmaWx0ZXIgJChARiksJChwYXRzdWJzdCAlLCUu
b3MsJChhbGwtcnRsZC1yb3V0aW5lcykpKSwtRE5PVF9JTl9saWJjPTEgLURJU19JTl9ydGxkPTEp
CitpZmVxICgkKGhhdmUtc3NwKSx5ZXMpCitDRkxBR1MtLm9zICs9ICQoaWYgJChmaWx0ZXIgJChA
RiksJChwYXRzdWJzdCAlLCUub3MsJChhbGwtcnRsZC1yb3V0aW5lcykpKSwtZm5vLXN0YWNrLXBy
b3RlY3RvcikKK2VuZGlmCiAKIHRlc3QtbW9kdWxlcyA9ICQoYWRkcHJlZml4ICQob2JqcGZ4KSwk
KGFkZHN1ZmZpeCAuc28sJChzdHJpcCAkKG1vZHVsZXMtbmFtZXMpKSkpCiBnZW5lcmF0ZWQgKz0g
JChhZGRzdWZmaXggLnNvLCQoc3RyaXAgJChtb2R1bGVzLW5hbWVzKSkpCkBAIC02MTcsNiArNjMw
LDEyIEBACiAJCSAgJDwgLVdsLC1GLCQob2JqcGZ4KWZpbHRtb2QyLnNvCiAkKG9ianBmeClmaWx0
ZXI6ICQob2JqcGZ4KWZpbHRtb2QxLnNvCiAKK2lmZXEgKCQoaGF2ZS1zc3ApLHllcykKKyMgVGhl
c2UgZG8gbm90IGxpbmsgYWdhaW5zdCBsaWJjLgorQ0ZMQUdTLWZpbHRtb2QxLmMgPSAtZm5vLXN0
YWNrLXByb3RlY3RvcgorQ0ZMQUdTLWZpbHRtb2QyLmMgPSAtZm5vLXN0YWNrLXByb3RlY3Rvcgor
ZW5kaWYKKwogJChvYmpwZngpdW5sb2FkOiAkKGxpYmRsKQogJChvYmpwZngpdW5sb2FkLm91dDog
JChvYmpwZngpdW5sb2FkbW9kLnNvCiAKSW5kZXg6IGxpYmMtcGF0Y2hlZC9ucHRsL01ha2VmaWxl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGxpYmMtcGF0Y2hlZC5vcmlnL25wdGwvTWFrZWZpbGUJMjAwOC0xMi0w
MyAyMjo0NTo0Mi4wMDAwMDAwMDAgKzAwMDAKKysrIGxpYmMtcGF0Y2hlZC9ucHRsL01ha2VmaWxl
CTIwMDgtMTItMDQgMDA6NTI6MzEuMDAwMDAwMDAwICswMDAwCkBAIC0yOTIsNiArMjkyLDExIEBA
CiBlbmRpZgogZW5kaWYKIAoraWZlcSAoJChoYXZlLXNzcCkseWVzKQorIyBQYXJ0cyBvZiBpbml0
LmMgYXJlIGNhbGxlZCBiZWZvcmUgdGhlIHN0YWNrIGd1YXJkIGlzIGluaXRpYWxpemVkLgorQ0ZM
QUdTLWluaXQuYyArPSAtZm5vLXN0YWNrLXByb3RlY3RvcgorZW5kaWYKKwogbW9kdWxlcy1uYW1l
cyA9IHRzdC1hdGZvcmsybW9kIHRzdC10bHMzbW9kIHRzdC10bHM0bW9kYSB0c3QtdGxzNG1vZGIg
XAogCQl0c3QtdGxzNW1vZCB0c3QtdGxzNW1vZGEgdHN0LXRsczVtb2RiIHRzdC10bHM1bW9kYyBc
CiAJCXRzdC10bHM1bW9kZCB0c3QtdGxzNW1vZGUgdHN0LXRsczVtb2RmIFwKSW5kZXg6IGxpYmMt
cGF0Y2hlZC9saWJpby9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJjLXBhdGNoZWQub3JpZy9s
aWJpby9NYWtlZmlsZQkyMDA4LTEyLTAzIDIyOjQ1OjQyLjAwMDAwMDAwMCArMDAwMAorKysgbGli
Yy1wYXRjaGVkL2xpYmlvL01ha2VmaWxlCTIwMDgtMTItMDQgMDA6NTI6MzEuMDAwMDAwMDAwICsw
MDAwCkBAIC0xNDAsNiArMTQwLDEyIEBACiBDRkxBR1Mtb2xkdG1wZmlsZS5jID0gJChleGNlcHRp
b25zKQogIyBYWFggRG8gd2UgbmVlZCBmaWxlZG9hbGxvYyBhbmQgd2ZpbGVkb2FsbG9jPyAgT3Ro
ZXJzPwogCitpZmVxICgkKGhhdmUtc3NwKSx5ZXMpCisjIGxpYmNfZmF0YWwoKSBpcyBjYWxsZWQg
aW4gZXh0cmVtaXMsIGFuZCBiZWZvcmUgc3RhdGljIGluaXRpYWxpemF0aW9uCisjIGlzIGNvbXBs
ZXRlOiBkb24ndCBzdGFjay1wcm90ZWN0IGl0LgorQ0ZMQUdTLWxpYmNfZmF0YWwubyA9IC1mbm8t
c3RhY2stcHJvdGVjdG9yCitlbmRpZgorCiBDRkxBR1MtdHN0X3B1dHdjLmMgPSAtRE9CSlBGWD1c
IiQob2JqcGZ4KVwiCiAKIHRzdF93cHJpbnRmMi1BUkdTID0gIlNvbWUgVGV4dCIKSW5kZXg6IGxp
YmMtcGF0Y2hlZC9taXNjL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmMtcGF0Y2hlZC5vcmln
L21pc2MvTWFrZWZpbGUJMjAwOC0xMi0wMyAyMjo0NTo0Mi4wMDAwMDAwMDAgKzAwMDAKKysrIGxp
YmMtcGF0Y2hlZC9taXNjL01ha2VmaWxlCTIwMDgtMTItMDQgMDA6NTI6MzEuMDAwMDAwMDAwICsw
MDAwCkBAIC0xMDEsNiArMTAxLDEyIEBACiBDRkxBR1MtdHN0LXRzZWFyY2guYyA9ICQoc3RhY2st
YWxpZ24tdGVzdC1mbGFncykKIENGTEFHUy1tbnRlbnRfci5jID0gLURfSU9fTVRTQUZFX0lPCiAK
K2lmZXEgKCQoaGF2ZS1zc3ApLHllcykKKyMgQ2FsbGVkIGR1cmluZyBzdGF0aWMgbGlicmFyeSBp
bml0aWFsaXphdGlvbi4KK0NGTEFHUy1zYnJrLmMgPSAtZm5vLXN0YWNrLXByb3RlY3RvcgorQ0ZM
QUdTLWJyay5jID0gLWZuby1zdGFjay1wcm90ZWN0b3IKK2VuZGlmCisKIGluY2x1ZGUgLi4vUnVs
ZXMKIAogJChvYmpwZngpbGliYnNkLWNvbXBhdC5hOiAkKGRlcC1kdW1teS1saWIpOyAkKG1ha2Ut
ZHVtbXktbGliKQpJbmRleDogbGliYy1wYXRjaGVkL3N0cmluZy9NYWtlZmlsZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBsaWJjLXBhdGNoZWQub3JpZy9zdHJpbmcvTWFrZWZpbGUJMjAwOC0xMi0wMyAyMjo0NTo0
Mi4wMDAwMDAwMDAgKzAwMDAKKysrIGxpYmMtcGF0Y2hlZC9zdHJpbmcvTWFrZWZpbGUJMjAwOC0x
Mi0wNCAwMDo1MjozMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTc0LDYgKzc0LDExIEBACiBDRkxBR1Mt
dGVzdC1mZnMuYyA9IC1mbm8tYnVpbHRpbgogQ0ZMQUdTLXRzdC1pbmxjYWxsLmMgPSAtZm5vLWJ1
aWx0aW4KIAoraWZlcSAoJChoYXZlLXNzcCkseWVzKQorIyBUaGlzIGlzIHVzZWQgaW4gZWFybHkg
aW5pdGlhbGl6YXRpb24uCitDRkxBR1MtbWVtY3B5LmMgPSAtZm5vLXN0YWNrLXByb3RlY3Rvcgor
ZW5kaWYKKwogaWZlcSAoJChjcm9zcy1jb21waWxpbmcpLG5vKQogdGVzdHM6ICQob2JqcGZ4KXRz
dC1zdmMub3V0CiAkKG9ianBmeCl0c3Qtc3ZjLm91dDogdHN0LXN2Yy5pbnB1dCAkKG9ianBmeCl0
c3Qtc3ZjCkluZGV4OiBsaWJjLXBhdGNoZWQvc3RkbGliL01ha2VmaWxlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGxpYmMtcGF0Y2hlZC5vcmlnL3N0ZGxpYi9NYWtlZmlsZQkyMDA4LTEyLTAzIDIyOjQ1OjQyLjAw
MDAwMDAwMCArMDAwMAorKysgbGliYy1wYXRjaGVkL3N0ZGxpYi9NYWtlZmlsZQkyMDA4LTEyLTA0
IDAwOjUyOjMxLjAwMDAwMDAwMCArMDAwMApAQCAtMTQyLDQgKzE0Miw4IEBACiAKICQob2JqcGZ4
KXRzdC1wdXRlbnZtb2Quc286ICQob2JqcGZ4KXRzdC1wdXRlbnZtb2Qub3MKIAkkKGJ1aWxkLW1v
ZHVsZSkKKyMgVGhpcyBpcyBub3Qgb25seSBub3QgaW4gbGliYywgaXQncyBub3QgZXZlbiBsaW5r
ZWQgd2l0aCBpdC4KIENGTEFHUy10c3QtcHV0ZW52bW9kLmMgPSAtRE5PVF9JTl9saWJjPTEKK2lm
ZXEgKCQoaGF2ZS1zc3ApLHllcykKK0NGTEFHUy10c3QtcHV0ZW52bW9kLmMgKz0gLWZuby1zdGFj
ay1wcm90ZWN0b3IKK2VuZGlmCkluZGV4OiBsaWJjLXBhdGNoZWQvTWFrZWNvbmZpZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBsaWJjLXBhdGNoZWQub3JpZy9NYWtlY29uZmlnCTIwMDgtMTItMDQgMDA6NTE6NTMu
MDAwMDAwMDAwICswMDAwCisrKyBsaWJjLXBhdGNoZWQvTWFrZWNvbmZpZwkyMDA4LTEyLTA0IDAw
OjUyOjMxLjAwMDAwMDAwMCArMDAwMApAQCAtNTg0LDYgKzU4NCwxMyBAQAogIyBhY3R1YWxseSBk
aWZmZXJlbnQsIHNvIGFsbG93IHRoZSBjb21waWxlciB0byBtZXJnZSB0aGVtIGFsbC4KICttZXJn
ZS1jb25zdGFudHMgPSAtZm1lcmdlLWFsbC1jb25zdGFudHMKIAorIyBXZSBtaWdodCB3YW50IHRv
IGNvbXBpbGUgd2l0aCBzb21lIHN0YWNrLXByb3RlY3Rpb24gZmxhZy4KK2lmZXEgKCQoc3RhY2st
cHJvdGVjdCkseWVzKQorK3N0YWNrLXByb3RlY3Rvcj0tZnN0YWNrLXByb3RlY3RvcgorZWxzZSBp
ZmVxICgkKHN0YWNrLXByb3RlY3QpLGFsbCkKKytzdGFjay1wcm90ZWN0b3I9LWZzdGFjay1wcm90
ZWN0b3ItYWxsCitlbmRpZgorCiAjIFRoaXMgaXMgdGhlIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMg
bWFrZWZpbGUgZGVwZW5kZW5jaWVzIGZyb20gQyBzb3VyY2UgZmlsZXMuCiAjIFRoZSAtTVAgZmxh
ZyB0ZWxscyBHQ0MgPj0gMy4yICh3aGljaCB3ZSBub3cgcmVxdWlyZSkgdG8gcHJvZHVjZSBkdW1t
eQogIyB0YXJnZXRzIGZvciBoZWFkZXJzIHNvIHRoYXQgcmVtb3ZlZCBoZWFkZXJzIGRvbid0IGJy
ZWFrIHRoZSBidWlsZC4KQEAgLTY0Myw3ICs2NTAsNyBAQAogK2NmbGFncwk6PSAkKGRlZmF1bHRf
Y2ZsYWdzKQogZW5kaWYJIyAkKCtjZmxhZ3MpID09ICIiCiAKLStjZmxhZ3MgKz0gJChjZmxhZ3Mt
Y3B1KSAkKCtnY2N3YXJuKSAkKCttZXJnZS1jb25zdGFudHMpCisrY2ZsYWdzICs9ICQoY2ZsYWdz
LWNwdSkgJCgrZ2Njd2FybikgJCgrbWVyZ2UtY29uc3RhbnRzKSAkKCtzdGFjay1wcm90ZWN0b3Ip
CiArZ2NjLW5vd2FybiA6PSAtdwogCiAjIERvbid0IGR1cGxpY2F0ZSBvcHRpb25zIGlmIHdlIGlu
aGVyaXRlZCB2YXJpYWJsZXMgZnJvbSB0aGUgcGFyZW50LgpJbmRleDogbGliYy1wYXRjaGVkL2Nv
bmZpZy5tYWtlLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmMtcGF0Y2hlZC5vcmlnL2NvbmZpZy5tYWtl
LmluCTIwMDgtMTItMDQgMDA6NTE6NTMuMDAwMDAwMDAwICswMDAwCisrKyBsaWJjLXBhdGNoZWQv
Y29uZmlnLm1ha2UuaW4JMjAwOC0xMi0wNCAwMDo1MjozMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTU2
LDYgKzU2LDcgQEAKIGhhdmUtZnBpZSA9IEBsaWJjX2N2X2ZwaWVACiBnbnU4OS1pbmxpbmUtQ0ZM
QUdTID0gQGxpYmNfY3ZfZ251ODlfaW5saW5lQAogaGF2ZS1zc3AgPSBAbGliY19jdl9zc3BACitz
dGFjay1wcm90ZWN0ID0gQHN0YWNrX3Byb3RlY3RACiBoYXZlLXNlbGludXggPSBAaGF2ZV9zZWxp
bnV4QAogaGF2ZS1saWJhdWRpdCA9IEBoYXZlX2xpYmF1ZGl0QAogaGF2ZS1saWJjYXAgPSBAaGF2
ZV9saWJjYXBACkluZGV4OiBsaWJjLXBhdGNoZWQvbnNjZC9NYWtlZmlsZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBsaWJjLXBhdGNoZWQub3JpZy9uc2NkL01ha2VmaWxlCTIwMDgtMTItMDMgMjI6NDU6NDIuMDAw
MDAwMDAwICswMDAwCisrKyBsaWJjLXBhdGNoZWQvbnNjZC9NYWtlZmlsZQkyMDA4LTEyLTA0IDAw
OjUyOjMxLjAwMDAwMDAwMCArMDAwMApAQCAtOTMsNyArOTMsMTEgQEAKIG5zY2QtY2ZsYWdzICs9
ICQocGllLWNjZmxhZykKIGVuZGlmCiBpZmVxICh5ZXMsJChoYXZlLXNzcCkpCitpZm5lcSAoYWxs
LCQoc3RhY2stcHJvdGVjdCkpCiBuc2NkLWNmbGFncyArPSAtZnN0YWNrLXByb3RlY3RvcgorZWxz
ZQorbnNjZC1jZmxhZ3MgKz0gLWZzdGFjay1wcm90ZWN0b3ItYWxsCitlbmRpZgogZW5kaWYKIAog
Q0ZMQUdTLW5zY2QuYyArPSAkKG5zY2QtY2ZsYWdzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6248</attachid>
            <date>2012-02-26 23:37:00 +0000</date>
            <delta_ts>2012-02-26 23:37:48 +0000</delta_ts>
            <desc>stack protector support against eglibc 2.13.</desc>
            <filename>stack-chk-fail-nonrecursive.diff</filename>
            <type>text/plain</type>
            <size>27727</size>
            <attacher name="Nix">nix</attacher>
            
              <data encoding="base64">MjAwOC0xMS0zMCAgTml4ICA8bml4QGVzcGVyaS5vcmcudWs+CgoJKiBkZWJ1Zy9zdGFja19jaGtf
ZmFpbC5jOiBFbmhhbmNlZCB2ZXJzaW9uLCBmcm9tIEdlbnRvby4KCgkqIGRlYnVnL01ha2VmaWxl
IChDRkxBR1Mtc3RhY2tfY2hrX2ZhaWwuYyk6IEFsd2F5cyBkdW1wIGNvcmUKCW9uIHN0YWNrIGNv
cnJ1cHRpb24uCgoJY29uZmlndXJlLWRyaXZlbiBhY3RpdmF0aW9uIG9mIHN0YWNrIHByb3RlY3Rp
b246CgoJKiBjb25maWd1cmUuaW4gKC0td2l0aC1zdGFjay1wcm90ZWN0b3IpOiBOZXcgYXJndW1l
bnQsIGFkZHMKCS1mc3RhY2stcHJvdGVjdG9yKC1hbGwpLiBFcnJvciBvdXQgaWYgc3BlY2lmaWVk
IHdoZW4gR0NDIGRvZXMKCW5vdCBzdXBwb3J0IGl0LiBVc2UgLWxzc3Agd2hlbiBsaW5raW5nIC1u
b3N0ZGxpYiBpZmYgR0NDIHN1cHBvcnRzIGl0LgoJTW92ZSB0aGUgc3RhY2sgcHJvdGVjdGlvbiBj
aGVjayBhYm92ZSBhbGwgc3VjaCBsaW5raW5nLgoJKiBjb25maWcubWFrZS5pbjogUHJvcGFnYXRl
IHRoaXMgZmxhZyB0byBhIHZhcmlhYmxlLi4uCgkqIE1ha2Vjb25maWc6IC4uLiBhbmQgY29udmVy
dCBpdCB0byBhIENGTEFHUyBhZGRpdGlvbi4KCgkqIE1ha2VydWxlcyAoJChjb21tb24tb2JqcGZ4
KXN5c2QtcnVsZXMpOiBQZXJtaXQgQ0ZMQUdTIG92ZXJyaWRlcwoJZm9yIHN5c2RlcCBydWxlcywg
dXNlZCBieSBydGxkLVJ1bGVzLgoKCUV4cGxpY2l0bHkgYXZvaWQgc3RhY2sgcHJvdGVjdGlvbiBm
b3IgY2VydGFpbiB0aGluZ3MsIGlmZiBzdGFjawoJcHJvdGVjdGlvbiBpcyBzdXBwb3J0ZWQgYnkg
dGhpcyBHQ0MgdmVyc2lvbi4KCgkqIGNzdS9NYWtlZmlsZTogRG9uJ3QgYnVpbGQgc3RhcnR1cCBm
aWxlcyB3aXRoIHN0YWNrIHByb3RlY3Rpb24uCgkqIGxpYmlvL01ha2VmaWxlOiBEb24ndCBidWls
ZCBjb2RlIGNhbGxlZCBieSBzdWNoIGZpbGVzIHdpdGgKCXN0YWNrIHByb3RlY3Rpb24uCgkqIG1p
c2MvTWFrZWZpbGU6IExpa2V3aXNlLCBmb3IgYnJrIGFuZCBzYnJrLgoJKiBzdHJpbmcvTWFrZWZp
bGU6IExpa2V3aXNlLCBmb3IgQyBtZW1jcHkgaW1wbGVtZW50YXRpb25zLgoKCSogZWxmL01ha2Vm
aWxlIChDRkxBR1MtLm9zKTogRG9uJ3QgYnVpbGQgcnRsZC1zcGVjaWZpYyBzb3VyY2UsIG9yCglp
dHMgY29ycmVzcG9uZGluZyBjb2RlIGluIHN0YXRpYyBsaWJyYXJpZXMsIHdpdGggc3RhY2sgcHJv
dGVjdGlvbi4KCURvbid0IGJ1aWxkIGZpbHRlciBtb2R1bGVzIHdpdGggc3RhY2sgcHJvdGVjdGlv
bi4KCSogZWxmL3J0bGQtUnVsZXM6IERvbid0IGJ1aWxkIHJ0bGQgdmVyc2lvbnMgb2YgY29kZSBm
cm9tIHRoZSByZXN0CglvZiBnbGliYyB3aXRoIHN0YWNrIHByb3RlY3Rpb24uIFBhc3MgY3VzdG9t
IENGTEFHUyBkb3duLgoKCSogc3RkbGliL01ha2VmaWxlOiBEb24ndCBidWlsZCB0ZXN0cyBub3Qg
bGlua2VkIGFnYWluc3QgbGliYyB3aXRoCglzdGFjayBwcm90ZWN0aW9uLgoKCSogbnNjZC9NYWtl
ZmlsZTogQnVpbGQgd2l0aCAtZnN0YWNrLXByb3RlY3Rvci1hbGwgaWYgcmVxdWVzdGVkLgoKbnB0
bDoKMjAwOC0xMS0zMCAgTml4ICA8bml4QGVzcGVyaS5vcmcudWs+CgoJKiBNYWtlZmlsZTogRG9u
J3QgYnVpbGQgc3RhcnR1cCBmaWxlcyB3aXRoIHN0YWNrIHByb3RlY3Rpb24uCgpJbmRleDogbGli
Yy1wYXRjaGVkL2RlYnVnL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmMtcGF0Y2hlZC5vcmln
L2RlYnVnL01ha2VmaWxlCTIwMTEtMDQtMTYgMTA6NDg6MDcuNjQ1MzQzNTkzICswMTAwCisrKyBs
aWJjLXBhdGNoZWQvZGVidWcvTWFrZWZpbGUJMjAxMS0wNC0xNiAxMDo0ODoxMC41NzUxNTI3MzUg
KzAxMDAKQEAgLTU5LDYgKzU5LDcgQEAKIHN0YXRpYy1vbmx5LXJvdXRpbmVzIDo9IHdhcm5pbmct
bm9wIHN0YWNrX2Noa19mYWlsX2xvY2FsCiAKIENGTEFHUy1iYWNrdHJhY2UuYyA9IC1mbm8tb21p
dC1mcmFtZS1wb2ludGVyCitDRkxBR1Mtc3RhY2tfY2hrX2ZhaWwuYyA9IC1EU1NQX1NNQVNIX0RV
TVBTX0NPUkUKIENGTEFHUy1zcHJpbnRmX2Noay5jID0gLURfSU9fTVRTQUZFX0lPCiBDRkxBR1Mt
c25wcmludGZfY2hrLmMgPSAtRF9JT19NVFNBRkVfSU8KIENGTEFHUy12c3ByaW50Zl9jaGsuYyA9
IC1EX0lPX01UU0FGRV9JTwpJbmRleDogbGliYy1wYXRjaGVkL2RlYnVnL3N0YWNrX2Noa19mYWls
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gbGliYy1wYXRjaGVkLm9yaWcvZGVidWcvc3RhY2tfY2hrX2ZhaWwu
YwkyMDExLTA0LTE2IDEwOjQ4OjA3LjY0NTM0MzU5MyArMDEwMAorKysgbGliYy1wYXRjaGVkL2Rl
YnVnL3N0YWNrX2Noa19mYWlsLmMJMjAxMS0wNC0xNiAxMDo0ODoxMC41NzUxNTI3MzUgKzAxMDAK
QEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuCisvKiBDb3B5cmlnaHQgKEMpIDIwMDUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFy
eS4KIAogICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xNiwxNSArMTYsMjk3IEBACiAgICBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQogICAg
MDIxMTEtMTMwNyBVU0EuICAqLwogCi0jaW5jbHVkZSA8c3RkaW8uaD4KKy8qIENvcHlyaWdodCAo
QykgMjAwNi0yMDA3IEdlbnRvbyBGb3VuZGF0aW9uIEluYy4KKyAqIExpY2Vuc2UgdGVybXMgYXMg
YWJvdmUuCisgKgorICogSGFyZGVuZWQgR2VudG9vIFNTUCBoYW5kbGVyCisgKgorICogQW4gU1NQ
IGZhaWx1cmUgaGFuZGxlciB0aGF0IGRvZXMgbm90IHVzZSBmdW5jdGlvbnMgZnJvbSB0aGUgcmVz
dCBvZgorICogZ2xpYmM7IGl0IHVzZXMgdGhlIElOVEVSTkFMX1NZU0NBTEwgbWV0aG9kcyBkaXJl
Y3RseS4gIFRoaXMgZW5zdXJlcworICogbm8gcG9zc2liaWxpdHkgb2YgcmVjdXJzaW9uIGludG8g
dGhlIGhhbmRsZXIuCisgKgorICogRGlyZWN0IGFsbCBidWcgcmVwb3J0cyB0byBodHRwOi8vYnVn
cy5nZW50b28ub3JnLworICoKKyAqIFJlLXdyaXR0ZW4gZnJvbSB0aGUgZ2xpYmMtMi4zIEhhcmRl
bmVkIEdlbnRvbyBTU1AgaGFuZGxlcgorICogYnkgS2V2aW4gRi4gUXVpbm4gLSA8a2V2cXVpbm5b
QF1nZW50b28ub3JnPgorICoKKyAqIFRoZSBmb2xsb3dpbmcgcGVvcGxlIGNvbnRyaWJ1dGVkIHRv
IHRoZSBnbGliYy0yLjMgSGFyZGVuZWQKKyAqIEdlbnRvbyBTU1AgaGFuZGxlciwgZnJvbSB3aGlj
aCB0aGlzIGltcGxlbWVudGF0aW9uIGRyYXdzIG11Y2g6CisgKgorICogTmVkIEx1ZGQgLSA8c29s
YXJbQF1nZW50b28ub3JnPgorICogQWxleGFuZGVyIEdhYmVydCAtIDxwYXBweVtAXWdlbnRvby5v
cmc+CisgKiBUaGUgUGFYIFRlYW0gLSA8cGFnZWV4ZWNbQF1mcmVlbWFpbC5odT4KKyAqIFBldGVy
IFMuIE1hemluZ2VyIC0gPHBzLm1bQF1nbXgubmV0PgorICogWW9hbm4gVmFuZG9vcnNlbGFlcmUg
LSA8eW9hbm5bQF1wcmVsdWRlLWlkcy5vcmc+CisgKiBSb2JlcnQgQ29ubm9sbHkgLSA8cm9iZXJ0
W0BdbGludXhmcm9tc2NyYXRjaC5vcmc+CisgKiBDb3J5IFZpc2kgPGNvcnlbQF12aXNpLm5hbWU+
CisgKiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyW0BdZ2VudG9vLm9yZz4KKyAqLworCisjaW5jbHVk
ZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNp
bmNsdWRlIDxzaWduYWwuaD4KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8
c3lzZGVwLWNhbmNlbC5oPgorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjaW5jbHVkZSA8YnAt
Y2hlY2tzLmg+CisKKyNpbmNsdWRlIDxrZXJuZWwtZmVhdHVyZXMuaD4KKworI2luY2x1ZGUgPGFs
bG9jYS5oPgorLyogZnJvbSBzeXNkZXBzICovCisjaW5jbHVkZSA8c29ja2V0Y2FsbC5oPgorLyog
Zm9yIHRoZSBzdHVmZiBpbiBiaXRzL3NvY2tldC5oICovCisjaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgorI2luY2x1ZGUgPHN5cy91bi5oPgorCisKKy8qIFNhbml0eSBjaGVjayBvbiBTWVNDQUxMIG1h
Y3JvIG5hbWVzIC0gZm9yY2UgY29tcGlsYXRpb24KKyAqIGZhaWx1cmUgaWYgdGhlIG5hbWVzIHVz
ZWQgaGVyZSBkbyBub3QgZXhpc3QKKyAqLworI2lmICFkZWZpbmVkIF9fTlJfc29ja2V0Y2FsbCAm
JiAhZGVmaW5lZCBfX05SX3NvY2tldAorIyBlcnJvciBDYW5ub3QgZG8gc3lzY2FsbCBzb2NrZXQg
b3Igc29ja2V0Y2FsbAorI2VuZGlmCisjaWYgIWRlZmluZWQgX19OUl9zb2NrZXRjYWxsICYmICFk
ZWZpbmVkIF9fTlJfY29ubmVjdAorIyBlcnJvciBDYW5ub3QgZG8gc3lzY2FsbCBjb25uZWN0IG9y
IHNvY2tldGNhbGwKKyNlbmRpZgorI2lmbmRlZiBfX05SX3dyaXRlCisjIGVycm9yIENhbm5vdCBk
byBzeXNjYWxsIHdyaXRlCisjZW5kaWYKKyNpZm5kZWYgX19OUl9jbG9zZQorIyBlcnJvciBDYW5u
b3QgZG8gc3lzY2FsbCBjbG9zZQorI2VuZGlmCisjaWZuZGVmIF9fTlJfZ2V0cGlkCisjIGVycm9y
IENhbm5vdCBkbyBzeXNjYWxsIGdldHBpZAorI2VuZGlmCisjaWZuZGVmIF9fTlJfa2lsbAorIyBl
cnJvciBDYW5ub3QgZG8gc3lzY2FsbCBraWxsCisjZW5kaWYKKyNpZm5kZWYgX19OUl9leGl0Cisj
IGVycm9yIENhbm5vdCBkbyBzeXNjYWxsIGV4aXQKKyNlbmRpZgorI2lmZGVmIFNTUF9TTUFTSF9E
VU1QU19DT1JFCisjIGRlZmluZSBFTkFCTEVfU1NQX1NNQVNIX0RVTVBTX0NPUkUgMQorIyBpZiAh
ZGVmaW5lZCBfS0VSTkVMX05TSUcgJiYgIWRlZmluZWQgX05TSUcKKyMgIGVycm9yIE5vIF9OU0lH
IG9yIF9LRVJORUxfTlNJRyBmb3IgcnRfc2lnYWN0aW9uCisjIGVuZGlmCisjIGlmICFkZWZpbmVk
IF9fTlJfc2lnYWN0aW9uICYmICFkZWZpbmVkIF9fTlJfcnRfc2lnYWN0aW9uCisjICBlcnJvciBD
YW5ub3QgZG8gc3lzY2FsbCBzaWdhY3Rpb24gb3IgcnRfc2lnYWN0aW9uCisjIGVuZGlmCisvKiBB
bHRob3VnaCBydF9zaWdhY3Rpb24gZXhwZWN0cyBzaXplb2Yoc2lnc2V0X3QpIC0gaXQgZXhwZWN0
cyB0aGUgc2l6ZQorICogb2YgdGhlIF9rZXJuZWxfIHNpZ3NldF90IHdoaWNoIGlzIG5vdCB0aGUg
c2FtZSBhcyB0aGUgdXNlciBzaWdzZXRfdC4KKyAqIE1vc3QgYXJjaGVzIGhhdmUgdGhpcyBhcyBf
TlNJRyBiaXRzIC0gbWlwcyBoYXMgX0tFUk5FTF9OU0lHIGJpdHMgZm9yCisgKiBzb21lIHJlYXNv
bi4KKyAqLworIyBpZmRlZiBfS0VSTkVMX05TSUcKKyMgIGRlZmluZSBfU1NQX05TSUcgX0tFUk5F
TF9OU0lHCisjIGVsc2UKKyMgIGRlZmluZSBfU1NQX05TSUcgX05TSUcKKyMgZW5kaWYKKyNlbHNl
CisjIGRlZmluZSBfU1NQX05TSUcgMAorIyBkZWZpbmUgRU5BQkxFX1NTUF9TTUFTSF9EVU1QU19D
T1JFIDAKKyNlbmRpZgorCisvKiBEZWZpbmUgRE9fU0lHQUNUSU9OIC0gZGVmYXVsdCB0byBuZXdl
ciBydCBzaWduYWwgaW50ZXJmYWNlIGJ1dAorICogZmFsbGJhY2sgdG8gb2xkIGFzIG5lZWRlZC4K
KyAqLworI2lmZGVmIF9fTlJfcnRfc2lnYWN0aW9uCisjIGRlZmluZSBET19TSUdBQ1RJT04oc2ln
bnVtLCBhY3QsIG9sZGFjdCkgXAorCUlOTElORV9TWVNDQUxMKHJ0X3NpZ2FjdGlvbiwgNCwgc2ln
bnVtLCBhY3QsIG9sZGFjdCwgX1NTUF9OU0lHLzgpCisjZWxzZQorIyBkZWZpbmUgRE9fU0lHQUNU
SU9OKHNpZ251bSwgYWN0LCBvbGRhY3QpIFwKKwlJTkxJTkVfU1lTQ0FMTChzaWdhY3Rpb24sIDMs
IHNpZ251bSwgYWN0LCBvbGRhY3QpCisjZW5kaWYKKworLyogRGVmaW5lIERPX1NPQ0tFVC9ET19D
T05ORUNUIGZ1bmN0aW9ucyB0byBkZWFsIHdpdGggc29ja2V0Y2FsbCB2cyBzb2NrZXQvY29ubmVj
dCAqLworI2lmIGRlZmluZWQoX19OUl9zb2NrZXQpICYmIGRlZmluZWQoX19OUl9jb25uZWN0KQor
IyBkZWZpbmUgVVNFX09MRF9TT0NLRVRDQUxMIDAKKyNlbHNlCisjIGRlZmluZSBVU0VfT0xEX1NP
Q0tFVENBTEwgMQorI2VuZGlmCisvKiBzdHViIG91dCB0aGUgX19OUl8ncyBzbyB3ZSBjYW4gbGV0
IGdjYyBvcHRpbWl6ZSBhd2F5IGRlYWQgY29kZSAqLworI2lmbmRlZiBfX05SX3NvY2tldGNhbGwK
KyMgZGVmaW5lIF9fTlJfc29ja2V0Y2FsbCAwCisjZW5kaWYKKyNpZm5kZWYgX19OUl9zb2NrZXQK
KyMgZGVmaW5lIF9fTlJfc29ja2V0IDAKKyNlbmRpZgorI2lmbmRlZiBfX05SX2Nvbm5lY3QKKyMg
ZGVmaW5lIF9fTlJfY29ubmVjdCAwCisjZW5kaWYKKyNkZWZpbmUgRE9fU09DS0VUKHJlc3VsdCwg
ZG9tYWluLCB0eXBlLCBwcm90b2NvbCkgXAorCWRvIHsgXAorCQlpZiAoVVNFX09MRF9TT0NLRVRD
QUxMKSB7IFwKKwkJCXNvY2tldGFyZ3NbMF0gPSBkb21haW47IFwKKwkJCXNvY2tldGFyZ3NbMV0g
PSB0eXBlOyBcCisJCQlzb2NrZXRhcmdzWzJdID0gcHJvdG9jb2w7IFwKKwkJCXNvY2tldGFyZ3Nb
M10gPSAwOyBcCisJCQlyZXN1bHQgPSBJTkxJTkVfU1lTQ0FMTChzb2NrZXRjYWxsLCAyLCBTT0NL
T1Bfc29ja2V0LCBzb2NrZXRhcmdzKTsgXAorCQl9IGVsc2UgXAorCQkJcmVzdWx0ID0gSU5MSU5F
X1NZU0NBTEwoc29ja2V0LCAzLCBkb21haW4sIHR5cGUsIHByb3RvY29sKTsgXAorCX0gd2hpbGUg
KDApCisjZGVmaW5lIERPX0NPTk5FQ1QocmVzdWx0LCBzb2NrZmQsIHNlcnZfYWRkciwgYWRkcmxl
bikgXAorCWRvIHsgXAorCQlpZiAoVVNFX09MRF9TT0NLRVRDQUxMKSB7IFwKKwkJCXNvY2tldGFy
Z3NbMF0gPSBzb2NrZmQ7IFwKKwkJCXNvY2tldGFyZ3NbMV0gPSAodW5zaWduZWQgbG9uZyBpbnQp
c2Vydl9hZGRyOyBcCisJCQlzb2NrZXRhcmdzWzJdID0gYWRkcmxlbjsgXAorCQkJc29ja2V0YXJn
c1szXSA9IDA7IFwKKwkJCXJlc3VsdCA9IElOTElORV9TWVNDQUxMKHNvY2tldGNhbGwsIDIsIFNP
Q0tPUF9jb25uZWN0LCBzb2NrZXRhcmdzKTsgXAorCQl9IGVsc2UgXAorCQkJcmVzdWx0ID0gSU5M
SU5FX1NZU0NBTEwoY29ubmVjdCwgMywgc29ja2ZkLCBzZXJ2X2FkZHIsIGFkZHJsZW4pOyBcCisJ
fSB3aGlsZSAoMCkKKworI2lmbmRlZiBfUEFUSF9MT0cKKyMgZGVmaW5lIF9QQVRIX0xPRyAiL2Rl
di9sb2ciCisjZW5kaWYKKworc3RhdGljIGNvbnN0IGNoYXIgcGF0aF9sb2dbXSA9IF9QQVRIX0xP
RzsKKworLyogRm9yIGJ1aWxkaW5nIGdsaWJjIHdpdGggU1NQIHN3aXRjaGVkIG9uLCBkZWZpbmUg
X19wcm9nbmFtZSB0byBhCisgKiBjb25zdGFudCBpZiBidWlsZGluZyBmb3IgdGhlIHJ1bi10aW1l
IGxvYWRlciwgdG8gYXZvaWQgcHVsbGluZworICogaW4gbW9yZSBvZiBsaWJjLnNvIGludG8gbGQu
c28KKyAqLworI2lmZGVmIElTX0lOX3J0bGQKK3N0YXRpYyBjaGFyICpfX3Byb2duYW1lID0gIjxy
dGxkPiI7CisjZWxzZQorZXh0ZXJuIGNoYXIgKl9fcHJvZ25hbWU7CisjZW5kaWYKKwogCisvKiBD
b21tb24gaGFuZGxlciBjb2RlLCB1c2VkIGJ5IHN0YWNrX2Noa19mYWlsIGFuZCBfX3N0YWNrX3Nt
YXNoX2hhbmRsZXIKKyAqIElubGluZWQgdG8gZW5zdXJlIG5vIHNlbGYtcmVmZXJlbmNlcyB0byB0
aGUgaGFuZGxlciB3aXRoaW4gaXRzZWxmLgorICogRGF0YSBzdGF0aWMgdG8gYXZvaWQgcHV0dGlu
ZyBtb3JlIHRoYW4gbmVjZXNzYXJ5IG9uIHRoZSBzdGFjaywKKyAqIHRvIGFpZCBjb3JlIGRlYnVn
Z2luZy4KKyAqIFRoZSBjb3B5IGluIHJ0bGQgbXVzdCBiZSBoaWRkZW4gdG8gZW5zdXJlIHRoYXQg
aXQgZ2V0cyBubyByZWxvY2F0aW9ucworICogYW5kIHRodXMgZG9lcyBub3QgY3Jhc2ggaWYgY2Fs
bGVkIGR1cmluZyBsaWJjIHN0YXJ0dXAuCisgKi8KK19fYXR0cmlidXRlX18gKChfX25vcmV0dXJu
X18gLCBfX2Fsd2F5c19pbmxpbmVfXykpCisjaWZkZWYgSVNfSU5fcnRsZAorYXR0cmlidXRlX2hp
ZGRlbgorI2VuZGlmCitzdGF0aWMgaW5saW5lIHZvaWQKK19faGFyZGVuZWRfZ2VudG9vX3N0YWNr
X2Noa19mYWlsKGNoYXIgZnVuY1tdLCBpbnQgZGFtYWdlZCkKK3sKKyNkZWZpbmUgTUVTU0FHRV9C
VUZTSVogMjU2CisJc3RhdGljIHBpZF90IHBpZDsKKwlzdGF0aWMgaW50IHBsZW4sIGk7CisJc3Rh
dGljIGNoYXIgbWVzc2FnZVtNRVNTQUdFX0JVRlNJWl07CisJc3RhdGljIGNvbnN0IGNoYXIgbXNn
X3NzYVtdID0gIjogc3RhY2sgc21hc2hpbmcgYXR0YWNrIjsKKwlzdGF0aWMgY29uc3QgY2hhciBt
c2dfaW5mW10gPSAiIGluIGZ1bmN0aW9uICI7CisJc3RhdGljIGNvbnN0IGNoYXIgbXNnX3NzZFtd
ID0gIioqKiBzdGFjayBzbWFzaGluZyBkZXRlY3RlZCAqKio6ICI7CisJc3RhdGljIGNvbnN0IGNo
YXIgbXNnX3Rlcm1pbmF0ZWRbXSA9ICIgLSB0ZXJtaW5hdGVkXG4iOworCXN0YXRpYyBjb25zdCBj
aGFyIG1zZ191bmtub3duW10gPSAiPHVua25vd24+IjsKKwlzdGF0aWMgaW50IGxvZ19zb2NrZXQs
IGNvbm5lY3RfcmVzdWx0OworCXN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfdW4gc29jazsKKwlzdGF0
aWMgdW5zaWduZWQgbG9uZyBpbnQgc29ja2V0YXJnc1s0XTsKKworCS8qIEJ1aWxkIHNvY2tldCBh
ZGRyZXNzCisJICovCisJc29jay5zdW5fZmFtaWx5ID0gQUZfVU5JWDsKKwlpID0gMDsKKwl3aGls
ZSAoKHBhdGhfbG9nW2ldICE9ICdcMCcpICYmIChpPChzaXplb2Yoc29jay5zdW5fcGF0aCktMSkp
KSB7CisJCXNvY2suc3VuX3BhdGhbaV0gPSBwYXRoX2xvZ1tpXTsKKwkJaSsrOworCX0KKwlzb2Nr
LnN1bl9wYXRoW2ldID0gJ1wwJzsKKworCS8qIFRyeSBTT0NLX0RHUkFNIGNvbm5lY3Rpb24gdG8g
c3lzbG9nICovCisJY29ubmVjdF9yZXN1bHQgPSAtMTsKKwlET19TT0NLRVQobG9nX3NvY2tldCwg
QUZfVU5JWCwgU09DS19ER1JBTSwgMCk7CisJaWYgKGxvZ19zb2NrZXQgIT0gLTEpCisJCURPX0NP
Tk5FQ1QoY29ubmVjdF9yZXN1bHQsIGxvZ19zb2NrZXQsICZzb2NrLCBzaXplb2Yoc29jaykpOwor
CWlmIChjb25uZWN0X3Jlc3VsdCA9PSAtMSkgeworCQlpZiAobG9nX3NvY2tldCAhPSAtMSkKKwkJ
CUlOTElORV9TWVNDQUxMKGNsb3NlLCAxLCBsb2dfc29ja2V0KTsKKwkJLyogVHJ5IFNPQ0tfU1RS
RUFNIGNvbm5lY3Rpb24gdG8gc3lzbG9nICovCisJCURPX1NPQ0tFVChsb2dfc29ja2V0LCBBRl9V
TklYLCBTT0NLX1NUUkVBTSwgMCk7CisJCWlmIChsb2dfc29ja2V0ICE9IC0xKQorCQkJRE9fQ09O
TkVDVChjb25uZWN0X3Jlc3VsdCwgbG9nX3NvY2tldCwgJnNvY2ssIHNpemVvZihzb2NrKSk7CisJ
fQorCisJLyogQnVpbGQgbWVzc2FnZS4gIE1lc3NhZ2VzIGFyZSBnZW5lcmF0ZWQgYm90aCBpbiB0
aGUgb2xkIHN0eWxlIGFuZCBuZXcgc3R5bGUsCisJICogc28gdGhhdCBsb2cgd2F0Y2hlcnMgdGhh
dCBhcmUgY29uZmlndXJlZCBmb3IgdGhlIG9sZC1zdHlsZSBtZXNzYWdlIGNvbnRpbnVlCisJICog
dG8gd29yay4KKwkgKi8KKyNkZWZpbmUgc3RyY29uY2F0KHN0cikgXAorCQl7aT0wOyB3aGlsZSAo
KHN0cltpXSAhPSAnXDAnKSAmJiAoKGkrcGxlbik8KE1FU1NBR0VfQlVGU0laLTEpKSkgXAorCQl7
XAorCQkJbWVzc2FnZVtwbGVuK2ldPXN0cltpXTtcCisJCQlpKys7XAorCQl9XAorCQlwbGVuKz1p
O30KKworCS8qIFIuSGVuZGVyc29uIHBvc3QtZ2NjLTQgc3R5bGUgbWVzc2FnZSAqLworCXBsZW4g
PSAwOworCXN0cmNvbmNhdChtc2dfc3NkKTsKKwlpZiAoX19wcm9nbmFtZSAhPSAoY2hhciAqKTAp
CisJCXN0cmNvbmNhdChfX3Byb2duYW1lKQorCWVsc2UKKwkJc3RyY29uY2F0KG1zZ191bmtub3du
KTsKKwlzdHJjb25jYXQobXNnX3Rlcm1pbmF0ZWQpOworCisJLyogV3JpdGUgb3V0IGVycm9yIG1l
c3NhZ2UgdG8gU1RERVJSLCB0byBzeXNsb2cgaWYgb3BlbiAqLworCUlOTElORV9TWVNDQUxMKHdy
aXRlLCAzLCBTVERFUlJfRklMRU5PLCBtZXNzYWdlLCBwbGVuKTsKKwlpZiAoY29ubmVjdF9yZXN1
bHQgIT0gLTEpCisJCUlOTElORV9TWVNDQUxMKHdyaXRlLCAzLCBsb2dfc29ja2V0LCBtZXNzYWdl
LCBwbGVuKTsKKworCS8qIERyLiBFdG9oIHByZS1nY2MtNCBzdHlsZSBtZXNzYWdlICovCisJcGxl
biA9IDA7CisJaWYgKF9fcHJvZ25hbWUgIT0gKGNoYXIgKikwKQorCQlzdHJjb25jYXQoX19wcm9n
bmFtZSkKKwllbHNlCisJCXN0cmNvbmNhdChtc2dfdW5rbm93bik7CisJc3RyY29uY2F0KG1zZ19z
c2EpOworCXN0cmNvbmNhdChtc2dfaW5mKTsKKwlpZiAoZnVuYyAhPSBOVUxMKQorCQlzdHJjb25j
YXQoZnVuYykKKwllbHNlCisJCXN0cmNvbmNhdChtc2dfdW5rbm93bik7CisJc3RyY29uY2F0KG1z
Z190ZXJtaW5hdGVkKTsKKwkvKiBXcml0ZSBvdXQgZXJyb3IgbWVzc2FnZSB0byBTVERFUlIsIHRv
IHN5c2xvZyBpZiBvcGVuICovCisJSU5MSU5FX1NZU0NBTEwod3JpdGUsIDMsIFNUREVSUl9GSUxF
Tk8sIG1lc3NhZ2UsIHBsZW4pOworCWlmIChjb25uZWN0X3Jlc3VsdCAhPSAtMSkKKwkJSU5MSU5F
X1NZU0NBTEwod3JpdGUsIDMsIGxvZ19zb2NrZXQsIG1lc3NhZ2UsIHBsZW4pOwogCi1leHRlcm4g
Y2hhciAqKl9fbGliY19hcmd2IGF0dHJpYnV0ZV9oaWRkZW47CisJLyogV3JpdGUgb3V0IGVycm9y
IG1lc3NhZ2UgdG8gU1RERVJSLCB0byBzeXNsb2cgaWYgb3BlbiAqLworCUlOTElORV9TWVNDQUxM
KHdyaXRlLCAzLCBTVERFUlJfRklMRU5PLCBtZXNzYWdlLCBwbGVuKTsKKwlpZiAoY29ubmVjdF9y
ZXN1bHQgIT0gLTEpCisJCUlOTElORV9TWVNDQUxMKHdyaXRlLCAzLCBsb2dfc29ja2V0LCBtZXNz
YWdlLCBwbGVuKTsKKworCWlmIChsb2dfc29ja2V0ICE9IC0xKQorCQlJTkxJTkVfU1lTQ0FMTChj
bG9zZSwgMSwgbG9nX3NvY2tldCk7CisKKwkvKiBTdWljaWRlICovCisJcGlkID0gSU5MSU5FX1NZ
U0NBTEwoZ2V0cGlkLCAwKTsKKworCWlmIChFTkFCTEVfU1NQX1NNQVNIX0RVTVBTX0NPUkUpIHsK
KwkJc3RhdGljIHN0cnVjdCBzaWdhY3Rpb24gZGVmYXVsdF9hYm9ydF9hY3Q7CisJCS8qIFJlbW92
ZSBhbnkgdXNlci1zdXBwbGllZCBoYW5kbGVyIGZvciBTSUdBQlJULCBiZWZvcmUgdXNpbmcgaXQg
Ki8KKwkJZGVmYXVsdF9hYm9ydF9hY3Quc2FfaGFuZGxlciA9IFNJR19ERkw7CisJCWRlZmF1bHRf
YWJvcnRfYWN0LnNhX3NpZ2FjdGlvbiA9IE5VTEw7CisJCV9fc2lnZmlsbHNldCgmZGVmYXVsdF9h
Ym9ydF9hY3Quc2FfbWFzayk7CisJCWRlZmF1bHRfYWJvcnRfYWN0LnNhX2ZsYWdzID0gMDsKKwkJ
aWYgKERPX1NJR0FDVElPTihTSUdBQlJULCAmZGVmYXVsdF9hYm9ydF9hY3QsIE5VTEwpID09IDAp
CisJCQlJTkxJTkVfU1lTQ0FMTChraWxsLCAyLCBwaWQsIFNJR0FCUlQpOworCX0KKworCS8qIE5v
dGU7IGFjdGlvbnMgY2Fubm90IGJlIGFkZGVkIHRvIFNJR0tJTEwgKi8KKwlJTkxJTkVfU1lTQ0FM
TChraWxsLCAyLCBwaWQsIFNJR0tJTEwpOworCisJLyogSW4gY2FzZSB0aGUga2lsbCBkaWRuJ3Qg
d29yaywgZXhpdCBhbnl3YXkKKwkgKiBUaGUgbG9vcCBwcmV2ZW50cyBnY2MgdGhpbmtpbmcgdGhp
cyByb3V0aW5lIHJldHVybnMKKwkgKi8KKwl3aGlsZSAoMSkKKwkJSU5MSU5FX1NZU0NBTEwoZXhp
dCwgMCk7Cit9CiAKLXZvaWQKLV9fYXR0cmlidXRlX18gKChub3JldHVybikpCi1fX3N0YWNrX2No
a19mYWlsICh2b2lkKQorX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpCit2b2lkIF9fc3Rh
Y2tfY2hrX2ZhaWwodm9pZCkKIHsKLSAgX19mb3J0aWZ5X2ZhaWwgKCJzdGFjayBzbWFzaGluZyBk
ZXRlY3RlZCIpOworCV9faGFyZGVuZWRfZ2VudG9vX3N0YWNrX2Noa19mYWlsKE5VTEwsIDApOwog
fQpJbmRleDogbGliYy1wYXRjaGVkL2NvbmZpZ3VyZS5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJjLXBh
dGNoZWQub3JpZy9jb25maWd1cmUuaW4JMjAxMS0wNC0xNiAxMDo0ODowNy42NTUzNDI5NDIgKzAx
MDAKKysrIGxpYmMtcGF0Y2hlZC9jb25maWd1cmUuaW4JMjAxMS0wNC0xNiAxMDo0ODoxMC41NzUx
NTI3MzUgKzAxMDAKQEAgLTIyMSw2ICsyMjEsMTkgQEAKIAkgICAgICBbYmluZG5vdz1ub10pCiBB
Q19TVUJTVChiaW5kbm93KQogCitkbmwgQnVpbGQgZ2xpYmMgd2l0aCAtZnN0YWNrLXByb3RlY3Rv
ciwgb3Igd2l0aCAtZnN0YWNrLXByb3RlY3Rvci1hbGwuCitBQ19BUkdfV0lUSChbc3RhY2stcHJv
dGVjdG9yXSwKKyAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtc3RhY2stcHJvdGVj
dG9yPUA8OkB5ZXN8bm98YWxsQDo+QF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGV0
ZWN0IHN0YWNrIG92ZXJmbG93cyBpbiBnbGliYyBmdW5jdGlvbnMgd2l0aCBsYXJnZSBzdHJpbmcg
YnVmZmVycywgb3IgaW4gYWxsIGdsaWJjIGZ1bmN0aW9uc10pLAorICAgICAgICAgICAgW3dpdGhf
c3RhY2tfcHJvdGVjdG9yPSR3aXRodmFsXSwKKyAgICAgICAgICAgIFt3aXRoX3N0YWNrX3Byb3Rl
Y3Rvcj1ub10pCitjYXNlIHgiJHdpdGhfc3RhY2tfcHJvdGVjdG9yIiBpbgorICAgIHhhbGx8eHll
c3x4bm8pIDs7CisgICAgKikgQUNfTVNHX0VSUk9SKFtOb3QgYSB2YWxpZCBhcmd1bWVudCBmb3Ig
LS13aXRoLXN0YWNrLXByb3RlY3Rvcl0pOzsKK2VzYWMKK3N0YWNrX3Byb3RlY3Q9IiR3aXRoX3N0
YWNrX3Byb3RlY3RvciIKK0FDX1NVQlNUKHN0YWNrX3Byb3RlY3QpCisKIGRubCBPbiBzb21lIHBs
YXRmb3JtcyB3ZSBjYW5ub3QgdXNlIGR5bmFtaWMgbG9hZGluZy4gIFdlIG11c3QgcHJvdmlkZQog
ZG5sIHN0YXRpYyBOU1MgbW9kdWxlcy4KIEFDX0FSR19FTkFCTEUoW3N0YXRpYy1uc3NdLApAQCAt
MTI1OSw2ICsxMjcyLDI3IEBACiBvdmVycmlkZSBzdGRkZWYuaCA9ICMgVGhlIGluc3RhbGxlZCA8
c3RkZGVmLmg+IHNlZW1zIHRvIGJlIGxpYmMtZnJpZW5kbHkuIgogZmkKIAorQUNfQ0FDSEVfQ0hF
Q0soZm9yIC1mc3RhY2stcHJvdGVjdG9yLCBsaWJjX2N2X3NzcCwgW2RubAoraWYgQUNfVFJZX0NP
TU1BTkQoWyR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIC1XZXJyb3IgLWZzdGFj
ay1wcm90ZWN0b3IKKwkJCSAgICAtbyAvZGV2L251bGwgLWMgLXggYyAvZGV2L251bGwgMT4mQVNf
TUVTU0FHRV9MT0dfRkRdKQordGhlbgorICBsaWJjX2N2X3NzcD15ZXMKKworICBkbmwgV2hpbGUg
bW9zdCB0ZXN0cyBjYW4gYmUgY29uZHVjdGVkIHdpdGggc3RhY2sgcHJvdGVjdGlvbiBvbiwgYSBm
ZXcgYXJlCisgIGRubCBpbmNvbXBhdGlibGUgd2l0aCBpdC4KKyAgbm9fc3NwPS1mbm8tc3RhY2st
cHJvdGVjdG9yCisgIGxpYnNzcD0iLWxzc3Bfbm9uc2hhcmVkIC1sc3NwIgorZWxzZQorICBsaWJj
X2N2X3NzcD1ubworICBub19zc3A9CisgIGxpYnNzcD0KKworICBpZiB0ZXN0IHgiJHdpdGhfc3Rh
Y2tfcHJvdGVjdG9yIiAhPSB4bm87IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWy0td2l0aC1zdGFj
ay1wcm90ZWN0b3I9JHdpdGhfc3RhY2tfcHJvdGVjdG9yIHNwZWNpZmllZCwgYnV0IHN0YWNrIHBy
b3RlY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY29tcGlsZXIuXSkKKyAgZmkKK2ZpXSkK
K0FDX1NVQlNUKGxpYmNfY3Zfc3NwKQorCiBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIHdlIG5lZWQg
dG8gdXNlIC1QIHRvIGFzc2VtYmxlIC5TIGZpbGVzLAogCSAgICAgICBsaWJjX2N2X25lZWRfbWlu
dXNfUCwgW2RubAogY2F0ID4gY29uZnRlc3QuUyA8PEVPRgpAQCAtMTI5MCw4ICsxMzI0LDggQEAK
IHZvaWQgX3N0YXJ0KCkgeyBnbGliY19jb25mdGVzdF9mcm9ib3p6ID0gMTsgfQogRU9GCiBpZiAk
e0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBcCi0JICAgIC1ub3N0YXJ0ZmlsZXMg
LW5vc3RkbGliIFwKLQkgICAgLW8gY29uZnRlc3QgY29uZnRlc3QucyBjb25mdGVzdDEuYyAxPiZB
U19NRVNTQUdFX0xPR19GRCAyPiZBU19NRVNTQUdFX0xPR19GRDsgdGhlbgorCSAgICAtbm9zdGFy
dGZpbGVzIC1ub3N0ZGxpYiAtZm5vLXN0YWNrLXByb3RlY3RvciBcCisJICAgIC1vIGNvbmZ0ZXN0
IGNvbmZ0ZXN0LnMgY29uZnRlc3QxLmMgJGxpYnNzcCAxPiZBU19NRVNTQUdFX0xPR19GRCAyPiZB
U19NRVNTQUdFX0xPR19GRDsgdGhlbgogICBsaWJjX2N2X2FzbV9zZXRfZGlyZWN0aXZlPXllcwog
ZWxzZQogICBsaWJjX2N2X2FzbV9zZXRfZGlyZWN0aXZlPW5vCkBAIC0xMzQ4LDcgKzEzODIsNyBA
QAogRU9GCiAgIGlmICR7Q0MtY2N9IC1jICRBU0ZMQUdTIGNvbmZ0ZXN0LnMgMT4mQVNfTUVTU0FH
RV9MT0dfRkQgMj4mQVNfTUVTU0FHRV9MT0dfRkQ7IHRoZW4KICAgICBpZiBBQ19UUllfQ09NTUFO
RChbJHtDQy1jY30gJENGTEFHUyAkTERGTEFHUyAtc2hhcmVkCi0JCQkJLW8gY29uZnRlc3Quc28g
Y29uZnRlc3QubworCQkJCS1vIGNvbmZ0ZXN0LnNvIGNvbmZ0ZXN0Lm8gJGxpYnNzcAogCQkJCS1u
b3N0YXJ0ZmlsZXMgLW5vc3RkbGliCiAJCQkJLVdsLC0tdmVyc2lvbi1zY3JpcHQsY29uZnRlc3Qu
bWFwCiAJCSAgICAgICAxPiZBU19NRVNTQUdFX0xPR19GRF0pOwpAQCAtMTUyMSw3ICsxNTU1LDcg
QEAKIGludCBmb28gKHZvaWQpIHsgcmV0dXJuIDE7IH0KIGludCAoKmZwKSAodm9pZCkgX19hdHRy
aWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW5pdF9hcnJheSIpKSkgPSBmb287CiBFT0YKLSAgaWYgQUNf
VFJZX0NPTU1BTkQoWyR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIC1vIGNvbmZ0
ZXN0IGNvbmZ0ZXN0LmMKKyAgaWYgQUNfVFJZX0NPTU1BTkQoWyR7Q0MtY2N9ICRDRkxBR1MgJENQ
UEZMQUdTICRMREZMQUdTICRub19zc3AgLW8gY29uZnRlc3QgY29uZnRlc3QuYwogCQkgICAgIC1z
dGF0aWMgLW5vc3RhcnRmaWxlcyAtbm9zdGRsaWIgMT4mQVNfTUVTU0FHRV9MT0dfRkRdKQogICB0
aGVuCiAgICAgaWYgcmVhZGVsZiAtUyBjb25mdGVzdCB8IGZncmVwIElOSVRfQVJSQVkgPiAvZGV2
L251bGw7IHRoZW4KQEAgLTE1NjMsNyArMTU5Nyw3IEBACiBFT0YKICAgaWYgQUNfVFJZX0NPTU1B
TkQoWyR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTCiAJCSAgICAgLWZQSUMgLXNo
YXJlZCAtbyBjb25mdGVzdC5zbyBjb25mdGVzdC5jCi0JCSAgICAgLW5vc3RhcnRmaWxlcyAtbm9z
dGRsaWIKKwkJICAgICAtbm9zdGFydGZpbGVzIC1ub3N0ZGxpYiAkbGlic3NwCiAJCSAgICAgLVds
LC0tZW5hYmxlLW5ldy1kdGFncywteixub2RlbGV0ZSAxPiZBU19NRVNTQUdFX0xPR19GRF0pCiAg
IHRoZW4KICAgICBsaWJjX2N2X3pfbm9kZWxldGU9eWVzCkBAIC0xNTc5LDcgKzE2MTMsNyBAQAog
RU9GCiAgIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERG
TEFHUwogCQkJLWZQSUMgLXNoYXJlZCAtbyBjb25mdGVzdC5zbyBjb25mdGVzdC5jCi0JCQktbm9z
dGFydGZpbGVzIC1ub3N0ZGxpYgorCQkJLW5vc3RhcnRmaWxlcyAtbm9zdGRsaWIgJGxpYnNzcAog
CQkJLVdsLC0tZW5hYmxlLW5ldy1kdGFncywteixub2Rsb3BlbiAxPiZBU19NRVNTQUdFX0xPR19G
RF0pCiAgIHRoZW4KICAgICBsaWJjX2N2X3pfbm9kbG9wZW49eWVzCkBAIC0xNTk1LDcgKzE2Mjks
NyBAQAogRU9GCiAgIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFH
UyAkTERGTEFHUwogCQkJLWZQSUMgLXNoYXJlZCAtbyBjb25mdGVzdC5zbyBjb25mdGVzdC5jCi0J
CQktbm9zdGFydGZpbGVzIC1ub3N0ZGxpYgorCQkJLW5vc3RhcnRmaWxlcyAtbm9zdGRsaWIgJGxp
YnNzcAogCQkJLVdsLC0tZW5hYmxlLW5ldy1kdGFncywteixpbml0Zmlyc3QgMT4mQVNfTUVTU0FH
RV9MT0dfRkRdKQogICB0aGVuCiAgICAgbGliY19jdl96X2luaXRmaXJzdD15ZXMKQEAgLTE2MzAs
NyArMTY2NCw3IEBACiAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDxFT0YKIGludCBfc3RhcnQgKHZvaWQp
IHsgcmV0dXJuIDQyOyB9CiBFT0YKLSAgaWYgQUNfVFJZX0NPTU1BTkQoWyR7Q0MtY2N9ICRDRkxB
R1MgJENQUEZMQUdTICRMREZMQUdTCisgIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZM
QUdTICRDUFBGTEFHUyAkTERGTEFHUyAkbm9fc3NwCiAJCQkgICAgICAtZlBJQyAtc2hhcmVkIC1v
IGNvbmZ0ZXN0LnNvIGNvbmZ0ZXN0LmMKIAkJCSAgICAgIC1XbCwtQmdyb3VwIC1ub3N0ZGxpYiAx
PiZBU19NRVNTQUdFX0xPR19GRF0pCiAgIHRoZW4KQEAgLTE2NjMsNyArMTY5Nyw3IEBACiAgIGlm
IEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUwogCQkJ
ICAgICAgLWZQSUMgLXNoYXJlZCAtbyBjb25mdGVzdC5zbyBjb25mdGVzdC5jCiAJCQkgICAgICAt
bGdjY19zJGxpYmNfY3ZfbGliZ2NjX3Nfc3VmZml4IC1XbCwtLWFzLW5lZWRlZAotCQkJICAgICAg
LW5vc3RkbGliIDE+JkFTX01FU1NBR0VfTE9HX0ZEXSkKKwkJCSAgICAgIC1ub3N0ZGxpYiAkbGli
c3NwIDE+JkFTX01FU1NBR0VfTE9HX0ZEXSkKICAgdGhlbgogICAgIGxpYmNfY3ZfYXNfbmVlZGVk
PXllcwogICBlbHNlCkBAIC0xNzAzLDcgKzE3MzcsNyBAQAogRU9GCiAgIGlmIEFDX1RSWV9DT01N
QU5EKFske0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUwogCQkJLWZQSUMgLXNoYXJl
ZCAtbyBjb25mdGVzdC5zbyBjb25mdGVzdC5jCi0JCQktbm9zdGRsaWIgLW5vc3RhcnRmaWxlcwor
CQkJLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgJGxpYnNzcAogCQkJLVdsLC16LGNvbWJyZWxvYyAx
PiZBU19NRVNTQUdFX0xPR19GRF0pCiAgIHRoZW4KIGRubCBUaGUgZm9sbG93aW5nIHRlc3QgaXMg
YSBiaXQgd2Vhay4gIFdlIG11c3QgdXNlIGEgdG9vbCB3aGljaCBjYW4gdGVzdApAQCAtMTczMiw3
ICsxNzY2LDcgQEAKIEVPRgogICBpZiBBQ19UUllfQ09NTUFORChbJHtDQy1jY30gJENGTEFHUyAk
Q1BQRkxBR1MgJExERkxBR1MKIAkJCSAgICAgIC1mUElDIC1zaGFyZWQgLW8gY29uZnRlc3Quc28g
Y29uZnRlc3QuYwotCQkJICAgICAgLVdsLC16LGV4ZWNzdGFjayAtbm9zdGRsaWIKKwkJCSAgICAg
IC1XbCwteixleGVjc3RhY2sgLW5vc3RkbGliICRsaWJzc3AKIAkJCSAgICAgIDE+JkFTX01FU1NB
R0VfTE9HX0ZEXSkKICAgdGhlbgogICAgIGxpYmNfY3Zfel9leGVjc3RhY2s9eWVzCkBAIC0xNzU2
LDcgKzE3OTAsNyBAQAogRU9GCiAgIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdT
ICRDUFBGTEFHUyAkTERGTEFHUwogCQkJICAgICAgLWZQSUMgLXNoYXJlZCAtbyBjb25mdGVzdC5z
byBjb25mdGVzdC5jCi0JCQkgICAgICAtV2wsLS1oYXNoLXN0eWxlPWJvdGggLW5vc3RkbGliIDE+
JkFTX01FU1NBR0VfTE9HX0ZEXSkKKwkJCSAgICAgIC1XbCwtLWhhc2gtc3R5bGU9Ym90aCAtbm9z
dGRsaWIgJGxpYnNzcCAxPiZBU19NRVNTQUdFX0xPR19GRF0pCiAgIHRoZW4KICAgICBsaWJjX2N2
X2hhc2hzdHlsZT15ZXMKICAgZWxzZQpAQCAtMTc4NSwxNiArMTgxOSw2IEBACiBmaQogQUNfU1VC
U1QoZm5vX3VuaXRfYXRfYV90aW1lKQogCi1BQ19DQUNIRV9DSEVDSyhmb3IgLWZzdGFjay1wcm90
ZWN0b3IsIGxpYmNfY3Zfc3NwLCBbZG5sCi1pZiBBQ19UUllfQ09NTUFORChbJHtDQy1jY30gJENG
TEFHUyAkQ1BQRkxBR1MgLVdlcnJvciAtZnN0YWNrLXByb3RlY3RvcgotCQkJICAgIC1vIC9kZXYv
bnVsbCAtYyAteCBjIC9kZXYvbnVsbCAxPiZBU19NRVNTQUdFX0xPR19GRF0pCi10aGVuCi0gIGxp
YmNfY3Zfc3NwPXllcwotZWxzZQotICBsaWJjX2N2X3NzcD1ubwotZmldKQotQUNfU1VCU1QobGli
Y19jdl9zc3ApCi0KIEFDX0NBQ0hFX0NIRUNLKGZvciAtZmdudTg5LWlubGluZSwgbGliY19jdl9n
bnU4OV9pbmxpbmUsIFtkbmwKIGNhdCA+IGNvbmZ0ZXN0LmMgPDxFT0YKIGludCBmb287CkBAIC0x
OTgwLDcgKzIwMDQsNyBAQAogZG5sIE5vIFwgaW4gY29tbWFuZCBoZXJlIGJlY2F1c2UgaXQgZW5k
cyB1cCBpbnNpZGUgJycuCiBpZiBBQ19UUllfQ09NTUFORChbJHtDQy1jY30gJENGTEFHUyAkQ1BQ
RkxBR1MgJExERkxBR1MKIAkJCSAgICAtbm9zdGRsaWIgLW5vc3RhcnRmaWxlcyAtV2wsLS1uby13
aG9sZS1hcmNoaXZlCi0JCQkgICAgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAxPiZBU19NRVNTQUdF
X0xPR19GRF0pOyB0aGVuCisJCQkgICAgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAkbGlic3NwIDE+
JkFTX01FU1NBR0VfTE9HX0ZEXSk7IHRoZW4KICAgbGliY19jdl9sZF9ub193aG9sZV9hcmNoaXZl
PXllcwogZWxzZQogICBsaWJjX2N2X2xkX25vX3dob2xlX2FyY2hpdmU9bm8KQEAgLTIwMDAsNyAr
MjAyNCw3IEBACiBkbmwgTm8gXCBpbiBjb21tYW5kIGhlcmUgYmVjYXVzZSBpdCBlbmRzIHVwIGlu
c2lkZSAnJy4KIGlmIEFDX1RSWV9DT01NQU5EKFske0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAk
TERGTEFHUwogCQkJICAgIC1ub3N0ZGxpYiAtbm9zdGFydGZpbGVzIC1mZXhjZXB0aW9ucwotCQkJ
ICAgIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgMT4mQVNfTUVTU0FHRV9MT0dfRkRdKTsgdGhlbgor
CQkJICAgIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgJGxpYnNzcCAxPiZBU19NRVNTQUdFX0xPR19G
RF0pOyB0aGVuCiAgIGxpYmNfY3ZfZ2NjX2V4Y2VwdGlvbnM9eWVzCiBlbHNlCiAgIGxpYmNfY3Zf
Z2NjX2V4Y2VwdGlvbnM9bm8KQEAgLTIwMzUsNyArMjA1OSw3IEBACiBFT0YKIGRubCBObyBcIGlu
IGNvbW1hbmQgaGVyZSBiZWNhdXNlIGl0IGVuZHMgdXAgaW5zaWRlICcnLgogaWYgQUNfVFJZX0NP
TU1BTkQoWyR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIC1ub3N0ZGxpYiAtbm9z
dGFydGZpbGVzCi0JCQkgICAgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAtbGdjYyA+JkFTX01FU1NB
R0VfTE9HX0ZEXSk7IHRoZW4KKwkJCSAgICAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1sZ2NjICRs
aWJzc3AgPiZBU19NRVNTQUdFX0xPR19GRF0pOyB0aGVuCiAgIGxpYmNfY3ZfZ2NjX2J1aWx0aW5f
ZXhwZWN0PXllcwogZWxzZQogICBsaWJjX2N2X2djY19idWlsdGluX2V4cGVjdD1ubwpJbmRleDog
bGliYy1wYXRjaGVkL2NzdS9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJjLXBhdGNoZWQub3Jp
Zy9jc3UvTWFrZWZpbGUJMjAxMS0wNC0xNiAxMDo0ODowOS43OTUyMDM1NDQgKzAxMDAKKysrIGxp
YmMtcGF0Y2hlZC9jc3UvTWFrZWZpbGUJMjAxMS0wNC0xNiAxMDo0ODoxMC41NzUxNTI3MzUgKzAx
MDAKQEAgLTUzLDYgKzUzLDEzIEBACiAKIGluY2x1ZGUgLi4vTWFrZWNvbmZpZwogCitpZmVxICgk
KGhhdmUtc3NwKSx5ZXMpCitDRkxBR1MtLm8gKz0gLWZuby1zdGFjay1wcm90ZWN0b3IKK0NGTEFH
Uy0ub2cgKz0gLWZuby1zdGFjay1wcm90ZWN0b3IKK0NGTEFHUy0ub3AgKz0gLWZuby1zdGFjay1w
cm90ZWN0b3IKK0NGTEFHUy0ub3MgKz0gLWZuby1zdGFjay1wcm90ZWN0b3IKK2VuZGlmCisKIGlm
ZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCiBleHRyYS1vYmpzICs9IFMkKHN0YXJ0LWluc3RhbGxl
ZC1uYW1lKQogaW5zdGFsbC1saWIgKz0gUyQoc3RhcnQtaW5zdGFsbGVkLW5hbWUpCkluZGV4OiBs
aWJjLXBhdGNoZWQvTWFrZXJ1bGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmMtcGF0Y2hlZC5vcmlnL01h
a2VydWxlcwkyMDExLTA0LTE2IDEwOjQ4OjA5Ljc5NTIwMzU0NCArMDEwMAorKysgbGliYy1wYXRj
aGVkL01ha2VydWxlcwkyMDExLTA0LTE2IDEwOjQ4OjEwLjU3NTE1MjczNSArMDEwMApAQCAtMjUy
LDcgKzI1Miw3IEBACiAJICAgICB3aGlsZSBbICQkIyAtZ2UgMiBdOyBkbwkJCQkJICAgICAgXAog
CSAgICAgICB0PSQkMTsgc2hpZnQ7IAkJCQkJCSAgICAgIFwKIAkgICAgICAgZD0kJDE7IHNoaWZ0
OwkJCQkJCSAgICAgIFwKLQkgICAgICAgdj0kJHt0JSUlfTsgWyB4IiQkdiIgPSB4IF0gfHwgdj0i
XCQkKCQke3Z9Q1BQRkxBR1MpIjsJICAgICAgXAorCSAgICAgICB2PSQke3QlJSV9OyBbIHgiJCR2
IiA9IHggXSB8fCB2PSJcJCQoJCR7dn1DUFBGTEFHUykgXCQkKCQke3Z9Q0ZMQUdTKSI7CSAgICAg
IFwKIAkgICAgICAgZm9yIHMgaW4gJCRhc20gLmM7IGRvCQkJCQkgICAgICBcCiAJCSBlY2hvICJc
JCQob2JqcGZ4KSQkdCQkbzogJCRkaXIvJCRkJCRzIFwkJChiZWZvcmUtY29tcGlsZSkiOyAgXAog
CQkgZWNobyAiCVwkJChjb21waWxlLWNvbW1hbmQkJHMpICQkdiI7CQkJICAgICAgXApJbmRleDog
bGliYy1wYXRjaGVkL2VsZi9ydGxkLVJ1bGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmMtcGF0Y2hlZC5v
cmlnL2VsZi9ydGxkLVJ1bGVzCTIwMTEtMDQtMTYgMTA6NDg6MDcuNjU1MzQyOTQyICswMTAwCisr
KyBsaWJjLXBhdGNoZWQvZWxmL3J0bGQtUnVsZXMJMjAxMS0wNC0xNiAxMDo0ODoxMC41NzUxNTI3
MzUgKzAxMDAKQEAgLTEwNCw3ICsxMDQsNyBAQAogJChvYmpwZngpcnRsZC0lLm9zOiAlLnMgJChi
ZWZvcmUtY29tcGlsZSkKIAkkKGNvbXBpbGUtY29tbWFuZC5zKSAkKHJ0bGQtQ1BQRkxBR1MpCiAk
KG9ianBmeClydGxkLSUub3M6ICUuYyAkKGJlZm9yZS1jb21waWxlKQotCSQoY29tcGlsZS1jb21t
YW5kLmMpICQocnRsZC1DUFBGTEFHUykKKwkkKGNvbXBpbGUtY29tbWFuZC5jKSAkKHJ0bGQtQ1BQ
RkxBR1MpICQocnRsZC1DRkxBR1MpCiAKICMgVGhlIHJ1bGVzIGZvciBnZW5lcmF0ZWQgc291cmNl
IGZpbGVzLgogJChvYmpwZngpcnRsZC0lLm9zOiAkKG9ianBmeClydGxkLSUuUyAkKGJlZm9yZS1j
b21waWxlKTsgJChjb21waWxlLWNvbW1hbmQuUykKQEAgLTEzMyw0ICsxMzMsOCBAQAogIyBUaGlz
IGhlcmUgaXMgdGhlIHdob2xlIHBvaW50IG9mIGFsbCB0aGUgc2hlbmFuaWdhbnMuCiBydGxkLUNQ
UEZMQUdTIDo9IC1ETk9UX0lOX2xpYmM9MSAtRElTX0lOX3J0bGQ9MQogCitpZmVxICgkKGhhdmUt
c3NwKSx5ZXMpCitydGxkLUNGTEFHUyA6PSAtZm5vLXN0YWNrLXByb3RlY3RvcgorZW5kaWYKKwog
ZW5kaWYKSW5kZXg6IGxpYmMtcGF0Y2hlZC9lbGYvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGli
Yy1wYXRjaGVkLm9yaWcvZWxmL01ha2VmaWxlCTIwMTEtMDQtMTYgMTA6NDg6MDcuNjU1MzQyOTQy
ICswMTAwCisrKyBsaWJjLXBhdGNoZWQvZWxmL01ha2VmaWxlCTIwMTEtMDQtMTYgMTA6NDg6MTAu
NTc1MTUyNzM1ICswMTAwCkBAIC0xMjksNiArMTI5LDE2IEBACiAKIGluY2x1ZGUgLi4vTWFrZWNv
bmZpZwogCitpZmVxICgkKGhhdmUtc3NwKSx5ZXMpCisjIEluIHRoZSBkeW5hbWljIGxvYWRlciwg
c29tZSByb3V0aW5lcyAod2hpY2ggaW5jbHVkZSByb3V0aW5lcyBjYWxsZWQgYmVmb3JlCisjIHRo
ZSBzdGFjayBndWFyZCBpcyBpbml0aWFsaXplZCkgYXJlIGNvbXBpbGVkIHdpdGhvdXQgc3RhY2sg
cHJvdGVjdGlvbi4KKyMgRG8gdGhlIHNhbWUgd2hlbiB0aG9zZSByb3V0aW5lcyBhcmUgZm91bmQg
aW4gdGhlIHN0YXRpYyBsaWJyYXJ5LgorCitDRkxBR1MtLm8gKz0gJChpZiAkKGZpbHRlciAkKEBG
KSwkKHBhdHN1YnN0ICUsJS5vLCQoZWxpZGUtcm91dGluZXMub3MpKSksLWZuby1zdGFjay1wcm90
ZWN0b3IpCitDRkxBR1MtLm9wICs9ICQoaWYgJChmaWx0ZXIgJChARiksJChwYXRzdWJzdCAlLCUu
b3AsJChlbGlkZS1yb3V0aW5lcy5vcykpKSwtZm5vLXN0YWNrLXByb3RlY3RvcikKK0NGTEFHUy0u
b2cgKz0gJChpZiAkKGZpbHRlciAkKEBGKSwkKHBhdHN1YnN0ICUsJS5vZywkKGVsaWRlLXJvdXRp
bmVzLm9zKSkpLC1mbm8tc3RhY2stcHJvdGVjdG9yKQorZW5kaWYKKwogaWZlcSAoJCh1bndpbmQt
ZmluZC1mZGUpLHllcykKIHJvdXRpbmVzICs9IHVud2luZC1kdzItZmRlLWdsaWJjCiBzaGFyZWQt
b25seS1yb3V0aW5lcyArPSB1bndpbmQtZHcyLWZkZS1nbGliYwpAQCAtNDc2LDYgKzQ4Niw5IEBA
CiBDRkxBR1MtY2FjaGUuYyA9ICQoU1lTQ09ORi1GTEFHUykKIAogQ1BQRkxBR1MtLm9zICs9ICQo
aWYgJChmaWx0ZXIgJChARiksJChwYXRzdWJzdCAlLCUub3MsJChhbGwtcnRsZC1yb3V0aW5lcykp
KSwtRE5PVF9JTl9saWJjPTEgLURJU19JTl9ydGxkPTEpCitpZmVxICgkKGhhdmUtc3NwKSx5ZXMp
CitDRkxBR1MtLm9zICs9ICQoaWYgJChmaWx0ZXIgJChARiksJChwYXRzdWJzdCAlLCUub3MsJChh
bGwtcnRsZC1yb3V0aW5lcykpKSwtZm5vLXN0YWNrLXByb3RlY3RvcikKK2VuZGlmCiAKIHRlc3Qt
bW9kdWxlcyA9ICQoYWRkcHJlZml4ICQob2JqcGZ4KSwkKGFkZHN1ZmZpeCAuc28sJChzdHJpcCAk
KG1vZHVsZXMtbmFtZXMpKSkpCiBnZW5lcmF0ZWQgKz0gJChhZGRzdWZmaXggLnNvLCQoc3RyaXAg
JChtb2R1bGVzLW5hbWVzKSkpCkBAIC03MDgsNiArNzIxLDEyIEBACiAJCSAgJDwgLVdsLC1GLCQo
b2JqcGZ4KWZpbHRtb2QyLnNvCiAkKG9ianBmeClmaWx0ZXI6ICQob2JqcGZ4KWZpbHRtb2QxLnNv
CiAKK2lmZXEgKCQoaGF2ZS1zc3ApLHllcykKKyMgVGhlc2UgZG8gbm90IGxpbmsgYWdhaW5zdCBs
aWJjLgorQ0ZMQUdTLWZpbHRtb2QxLmMgPSAtZm5vLXN0YWNrLXByb3RlY3RvcgorQ0ZMQUdTLWZp
bHRtb2QyLmMgPSAtZm5vLXN0YWNrLXByb3RlY3RvcgorZW5kaWYKKwogJChvYmpwZngpdW5sb2Fk
OiAkKGxpYmRsKQogJChvYmpwZngpdW5sb2FkLm91dDogJChvYmpwZngpdW5sb2FkbW9kLnNvCiAK
SW5kZXg6IGxpYmMtcGF0Y2hlZC9ucHRsL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmMtcGF0
Y2hlZC5vcmlnL25wdGwvTWFrZWZpbGUJMjAxMS0wNC0xNiAxMDo0ODowNy42NTUzNDI5NDIgKzAx
MDAKKysrIGxpYmMtcGF0Y2hlZC9ucHRsL01ha2VmaWxlCTIwMTEtMDQtMTYgMTA6NDg6MTAuNTc1
MTUyNzM1ICswMTAwCkBAIC0zMTQsNiArMzE0LDExIEBACiBlbmRpZgogZW5kaWYKIAoraWZlcSAo
JChoYXZlLXNzcCkseWVzKQorIyBQYXJ0cyBvZiBucHRsLWluaXQuYyBhcmUgY2FsbGVkIGJlZm9y
ZSB0aGUgc3RhY2sgZ3VhcmQgaXMgaW5pdGlhbGl6ZWQuCitDRkxBR1MtbnB0bC1pbml0LmMgKz0g
LWZuby1zdGFjay1wcm90ZWN0b3IKK2VuZGlmCisKIG1vZHVsZXMtbmFtZXMgPSB0c3QtYXRmb3Jr
Mm1vZCB0c3QtdGxzM21vZCB0c3QtdGxzNG1vZGEgdHN0LXRsczRtb2RiIFwKIAkJdHN0LXRsczVt
b2QgdHN0LXRsczVtb2RhIHRzdC10bHM1bW9kYiB0c3QtdGxzNW1vZGMgXAogCQl0c3QtdGxzNW1v
ZGQgdHN0LXRsczVtb2RlIHRzdC10bHM1bW9kZiBcCkluZGV4OiBsaWJjLXBhdGNoZWQvbGliaW8v
TWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gbGliYy1wYXRjaGVkLm9yaWcvbGliaW8vTWFrZWZpbGUJ
MjAxMS0wNC0xNiAxMDo0ODowNy42NTUzNDI5NDIgKzAxMDAKKysrIGxpYmMtcGF0Y2hlZC9saWJp
by9NYWtlZmlsZQkyMDExLTA0LTE2IDEwOjQ4OjEwLjU3NTE1MjczNSArMDEwMApAQCAtMTYyLDYg
KzE2MiwxMiBAQAogQ0ZMQUdTLW9sZHRtcGZpbGUuYyA9ICQoZXhjZXB0aW9ucykKICMgWFhYIERv
IHdlIG5lZWQgZmlsZWRvYWxsb2MgYW5kIHdmaWxlZG9hbGxvYz8gIE90aGVycz8KIAoraWZlcSAo
JChoYXZlLXNzcCkseWVzKQorIyBsaWJjX2ZhdGFsKCkgaXMgY2FsbGVkIGluIGV4dHJlbWlzLCBh
bmQgYmVmb3JlIHN0YXRpYyBpbml0aWFsaXphdGlvbgorIyBpcyBjb21wbGV0ZTogZG9uJ3Qgc3Rh
Y2stcHJvdGVjdCBpdC4KK0NGTEFHUy1saWJjX2ZhdGFsLm8gPSAtZm5vLXN0YWNrLXByb3RlY3Rv
cgorZW5kaWYKKwogQ0ZMQUdTLXRzdF9wdXR3Yy5jID0gLURPQkpQRlg9XCIkKG9ianBmeClcIgog
CiB0c3Rfd3ByaW50ZjItQVJHUyA9ICJTb21lIFRleHQiCkluZGV4OiBsaWJjLXBhdGNoZWQvbWlz
Yy9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJjLXBhdGNoZWQub3JpZy9taXNjL01ha2VmaWxl
CTIwMTEtMDQtMTYgMTA6NDg6MDcuNjU1MzQyOTQyICswMTAwCisrKyBsaWJjLXBhdGNoZWQvbWlz
Yy9NYWtlZmlsZQkyMDExLTA0LTE2IDEwOjQ4OjEwLjU3NTE1MjczNSArMDEwMApAQCAtMTEyLDYg
KzExMiwxMiBAQAogQ0ZMQUdTLXRzdC10c2VhcmNoLmMgPSAkKHN0YWNrLWFsaWduLXRlc3QtZmxh
Z3MpCiBDRkxBR1MtbW50ZW50X3IuYyA9IC1EX0lPX01UU0FGRV9JTwogCitpZmVxICgkKGhhdmUt
c3NwKSx5ZXMpCisjIENhbGxlZCBkdXJpbmcgc3RhdGljIGxpYnJhcnkgaW5pdGlhbGl6YXRpb24u
CitDRkxBR1Mtc2Jyay5jID0gLWZuby1zdGFjay1wcm90ZWN0b3IKK0NGTEFHUy1icmsuYyA9IC1m
bm8tc3RhY2stcHJvdGVjdG9yCitlbmRpZgorCiBpbmNsdWRlIC4uL1J1bGVzCiAKICQob2JqcGZ4
KWxpYmJzZC1jb21wYXQuYTogJChkZXAtZHVtbXktbGliKTsgJChtYWtlLWR1bW15LWxpYikKSW5k
ZXg6IGxpYmMtcGF0Y2hlZC9zdHJpbmcvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliYy1wYXRj
aGVkLm9yaWcvc3RyaW5nL01ha2VmaWxlCTIwMTEtMDQtMTYgMTA6NDg6MDcuNjU1MzQyOTQyICsw
MTAwCisrKyBsaWJjLXBhdGNoZWQvc3RyaW5nL01ha2VmaWxlCTIwMTEtMDQtMTYgMTA6NDg6MTAu
NTc1MTUyNzM1ICswMTAwCkBAIC04NCw2ICs4NCwxMSBAQAogQ0ZMQUdTLXRzdC1pbmxjYWxsLmMg
PSAtZm5vLWJ1aWx0aW4KIENGTEFHUy1idWctc3Ryc3RyMS5jID0gLWZuby1idWlsdGluCiAKK2lm
ZXEgKCQoaGF2ZS1zc3ApLHllcykKKyMgVGhpcyBpcyB1c2VkIGluIGVhcmx5IGluaXRpYWxpemF0
aW9uLgorQ0ZMQUdTLW1lbWNweS5jID0gLWZuby1zdGFjay1wcm90ZWN0b3IKK2VuZGlmCisKICMg
ZWdsaWJjOiBpZmVxICgkKGNyb3NzLWNvbXBpbGluZyksbm8pCiB0ZXN0czogJChvYmpwZngpdHN0
LXN2Yy5vdXQKICQob2JqcGZ4KXRzdC1zdmMub3V0OiB0c3Qtc3ZjLmlucHV0ICQob2JqcGZ4KXRz
dC1zdmMKSW5kZXg6IGxpYmMtcGF0Y2hlZC9zdGRsaWIvTWFrZWZpbGUKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
bGliYy1wYXRjaGVkLm9yaWcvc3RkbGliL01ha2VmaWxlCTIwMTEtMDQtMTYgMTA6NDg6MDcuNjU1
MzQyOTQyICswMTAwCisrKyBsaWJjLXBhdGNoZWQvc3RkbGliL01ha2VmaWxlCTIwMTEtMDQtMTYg
MTA6NDg6MTAuNTc1MTUyNzM1ICswMTAwCkBAIC0xNTgsNCArMTU4LDggQEAKIAogJChvYmpwZngp
dHN0LXB1dGVudm1vZC5zbzogJChvYmpwZngpdHN0LXB1dGVudm1vZC5vcwogCSQoYnVpbGQtbW9k
dWxlKQorIyBUaGlzIGlzIG5vdCBvbmx5IG5vdCBpbiBsaWJjLCBpdCdzIG5vdCBldmVuIGxpbmtl
ZCB3aXRoIGl0LgogQ0ZMQUdTLXRzdC1wdXRlbnZtb2QuYyA9IC1ETk9UX0lOX2xpYmM9MQoraWZl
cSAoJChoYXZlLXNzcCkseWVzKQorQ0ZMQUdTLXRzdC1wdXRlbnZtb2QuYyArPSAtZm5vLXN0YWNr
LXByb3RlY3RvcgorZW5kaWYKSW5kZXg6IGxpYmMtcGF0Y2hlZC9NYWtlY29uZmlnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGxpYmMtcGF0Y2hlZC5vcmlnL01ha2Vjb25maWcJMjAxMS0wNC0xNiAxMDo0ODowOS43
OTUyMDM1NDQgKzAxMDAKKysrIGxpYmMtcGF0Y2hlZC9NYWtlY29uZmlnCTIwMTEtMDQtMTYgMTA6
NDg6MTAuNTc1MTUyNzM1ICswMTAwCkBAIC02MjAsNiArNjIwLDEzIEBACiAjIGFjdHVhbGx5IGRp
ZmZlcmVudCwgc28gYWxsb3cgdGhlIGNvbXBpbGVyIHRvIG1lcmdlIHRoZW0gYWxsLgogK21lcmdl
LWNvbnN0YW50cyA9IC1mbWVyZ2UtYWxsLWNvbnN0YW50cwogCisjIFdlIG1pZ2h0IHdhbnQgdG8g
Y29tcGlsZSB3aXRoIHNvbWUgc3RhY2stcHJvdGVjdGlvbiBmbGFnLgoraWZlcSAoJChzdGFjay1w
cm90ZWN0KSx5ZXMpCisrc3RhY2stcHJvdGVjdG9yPS1mc3RhY2stcHJvdGVjdG9yCitlbHNlIGlm
ZXEgKCQoc3RhY2stcHJvdGVjdCksYWxsKQorK3N0YWNrLXByb3RlY3Rvcj0tZnN0YWNrLXByb3Rl
Y3Rvci1hbGwKK2VuZGlmCisKICMgVGhpcyBpcyB0aGUgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBt
YWtlZmlsZSBkZXBlbmRlbmNpZXMgZnJvbSBDIHNvdXJjZSBmaWxlcy4KICMgVGhlIC1NUCBmbGFn
IHRlbGxzIEdDQyA+PSAzLjIgKHdoaWNoIHdlIG5vdyByZXF1aXJlKSB0byBwcm9kdWNlIGR1bW15
CiAjIHRhcmdldHMgZm9yIGhlYWRlcnMgc28gdGhhdCByZW1vdmVkIGhlYWRlcnMgZG9uJ3QgYnJl
YWsgdGhlIGJ1aWxkLgpAQCAtNjc5LDcgKzY4Niw3IEBACiArY2ZsYWdzCTo9ICQoZGVmYXVsdF9j
ZmxhZ3MpCiBlbmRpZgkjICQoK2NmbGFncykgPT0gIiIKIAotK2NmbGFncyArPSAkKGNmbGFncy1j
cHUpICQoK2djY3dhcm4pICQoK21lcmdlLWNvbnN0YW50cykKKytjZmxhZ3MgKz0gJChjZmxhZ3Mt
Y3B1KSAkKCtnY2N3YXJuKSAkKCttZXJnZS1jb25zdGFudHMpICQoK3N0YWNrLXByb3RlY3RvcikK
ICtnY2Mtbm93YXJuIDo9IC13CiAKICMgRG9uJ3QgZHVwbGljYXRlIG9wdGlvbnMgaWYgd2UgaW5o
ZXJpdGVkIHZhcmlhYmxlcyBmcm9tIHRoZSBwYXJlbnQuCkluZGV4OiBsaWJjLXBhdGNoZWQvY29u
ZmlnLm1ha2UuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliYy1wYXRjaGVkLm9yaWcvY29uZmlnLm1ha2Uu
aW4JMjAxMS0wNC0xNiAxMDo0ODowOS43OTUyMDM1NDQgKzAxMDAKKysrIGxpYmMtcGF0Y2hlZC9j
b25maWcubWFrZS5pbgkyMDExLTA0LTE2IDEwOjQ4OjEwLjU3NTE1MjczNSArMDEwMApAQCAtNjEs
NiArNjEsNyBAQAogaGF2ZS1mcGllID0gQGxpYmNfY3ZfZnBpZUAKIGdudTg5LWlubGluZS1DRkxB
R1MgPSBAZ251ODlfaW5saW5lQAogaGF2ZS1zc3AgPSBAbGliY19jdl9zc3BACitzdGFjay1wcm90
ZWN0ID0gQHN0YWNrX3Byb3RlY3RACiBoYXZlLXNlbGludXggPSBAaGF2ZV9zZWxpbnV4QAogaGF2
ZS1saWJhdWRpdCA9IEBoYXZlX2xpYmF1ZGl0QAogaGF2ZS1saWJjYXAgPSBAaGF2ZV9saWJjYXBA
CkluZGV4OiBsaWJjLXBhdGNoZWQvbnNjZC9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJjLXBh
dGNoZWQub3JpZy9uc2NkL01ha2VmaWxlCTIwMTEtMDQtMTYgMTA6NDg6MDcuNjU1MzQyOTQyICsw
MTAwCisrKyBsaWJjLXBhdGNoZWQvbnNjZC9NYWtlZmlsZQkyMDExLTA0LTE2IDEwOjQ4OjEwLjU3
NTE1MjczNSArMDEwMApAQCAtMTAwLDcgKzEwMCwxMSBAQAogbnNjZC1jZmxhZ3MgKz0gJChwaWUt
Y2NmbGFnKQogZW5kaWYKIGlmZXEgKHllcywkKGhhdmUtc3NwKSkKK2lmbmVxIChhbGwsJChzdGFj
ay1wcm90ZWN0KSkKIG5zY2QtY2ZsYWdzICs9IC1mc3RhY2stcHJvdGVjdG9yCitlbHNlCituc2Nk
LWNmbGFncyArPSAtZnN0YWNrLXByb3RlY3Rvci1hbGwKK2VuZGlmCiBlbmRpZgogCiBDRkxBR1Mt
bnNjZC5jICs9ICQobnNjZC1jZmxhZ3MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>