Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jSmuF-0006ua-Ho for pgsql-docs@arkaria.postgresql.org; Sun, 26 Apr 2020 19:25:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jSmuE-0000kM-AD for pgsql-docs@arkaria.postgresql.org; Sun, 26 Apr 2020 19:25:34 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jSmuD-0000kF-UV for pgsql-docs@lists.postgresql.org; Sun, 26 Apr 2020 19:25:34 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jSmuA-00055p-3o for pgsql-docs@lists.postgresql.org; Sun, 26 Apr 2020 19:25:33 +0000 Received: by mail-wr1-x444.google.com with SMTP id x17so17269515wrt.5 for ; Sun, 26 Apr 2020 12:25:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=nxe/RMsdMNR8xlGLtCyysDAq9smOWWH1190XSP1d4gc=; b=XY4DlXCz41W1c7Hnt0UKftubJNY6Nff5PSmBAlal9IKoBhPINNPniLILbn50zo+60+ WjD9cSHZlLXFKLeqwy/9yGeFszm518BvKHe6PXxd6cPs1Jv439ygAc+/pCJir6I/uGYx ++wF9BI9+96vYrso+rqswc1TVQMiOuG/W1tn5Alc2o0nLneUjG30ipv76+2s+ODwNGQO /V7DR7ljD6cCs/S0mmB7df/5dwl4s5B9YVvk0olv5Pug2vDGYgo3B3+3yUNiJDIY/GKq z/WKZKjtjFahxYYjwfU4/7W5G+oTmrEas75ODuNOTRGsZ+ekykXHBlqavNWHFQi6ckiX G3gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=nxe/RMsdMNR8xlGLtCyysDAq9smOWWH1190XSP1d4gc=; b=oLRWldwN+JNNA8BGFCrCRhcsQq4r7lkQOEQ8bQ7jAXqhQINj6kB2GHIEJpiqiuEIKo ZIwY4BDtOmskqnd5oyubWN48QxJ839YTCWNxGnyv8VI5Ubs5uBULhYsj6V39nMbhGX/Y OuEqFsBP22E8aC2gcA8bdI1D0kSdY8XspEqwS9Lfc7T920LZY2MyY9FoWicpo/jTit4h HXt5smfPmDYfbLfoq7pr4EjhVRZxbMQodwivb8OrcF184rQaFHFRMhi5XP0R53tPgdie Oy3TzirXxpztxnF4vh5lY3En9UT7y/Taq1lb7Q/pSI0imRX5UGKQuLjfGbzIENkylYrq Zplg== X-Gm-Message-State: AGi0Pubiy4yXENVOH85tFJ25mGgTzt4CHiczGEd9RmtahhFTUjQk32IX 4KoUjduP7RiPBbXnNLUH5Btisch/dn3pMjz637g= X-Google-Smtp-Source: APiQypLF47i8rlexVKfvnKwkCLE0GVVrW7u8DCRKQmJoCzICsbyeh7M+UP1nO/R95KkNbvW5kK0jCe7G6nG5aiXURic= X-Received: by 2002:a05:6000:110a:: with SMTP id z10mr23279896wrw.389.1587929128016; Sun, 26 Apr 2020 12:25:28 -0700 (PDT) MIME-Version: 1.0 References: <20200319205646.GB28431@momjian.us> <72492300-BFD4-4CCF-9136-20CC41A18A10@ya.ru> In-Reply-To: <72492300-BFD4-4CCF-9136-20CC41A18A10@ya.ru> From: yigong hu Date: Mon, 27 Apr 2020 03:24:51 +0800 Message-ID: Subject: Re: explanation for random_page_cost is outdated To: bruce@momjian.us, splarv@ya.ru, pgsql-docs@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000009b6f7105a4368f09" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000009b6f7105a4368f09 Content-Type: multipart/alternative; boundary="0000000000009b6f6e05a4368f07" --0000000000009b6f6e05a4368f07 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sorry to hijack the thread, I also recently have similar observation that the statement about random_page_cost on SSD is ambiguous. The current document says that > Storage that has a low random read cost relative to sequential, e.g. solid-state drives, might also be better modeled with a lower value for random_page_cost. However, this statement does not clarify what values might be good. For some workload, the default value 4.0 would cause bad performance and lowering random_page_cost to a value 3.0 or 2.0 does not solve the performance problem. Only when the random_page_cost is lowered to below 1.2 will the bad performance be mitigated. Thus, I would suggest elaborating on this description further as: > Storage that has a low random read cost relative to sequential, e.g. solid-state drives, might also be better modeled with a value that is close to 1 for random_page_cost. Detail: I run the PostgreSQL 11 on an SSD hardware. The database has two small tables with 6MB and 16MB separately. The pgbench runs a select join query in 1 min. The result shows that when the random_page_cost is 1, the average latency is 14ms. When the random_page_cost is 1.5, 2, 3 or 4, the average latency is 26ms. This result suggests that setting random_page_cost to a value larger than 1.5 would cause almost 2x latency. If I increase the 6MB table to 60MB and rerun the sysbench, the result shows that when the random_page_cost is 1, the average latency is 13ms. When the random_page_cost is 1.5,2,3 or 4, the average latency is 17ms. I attached my testing script, the postgresql configuration file, and planner output. On Mon, Apr 27, 2020 at 3:19 AM =D0=9E=D0=BB=D0=B5=D0=B3 =D0=A1=D0=B0=D0=BC= =D0=BE=D0=B9=D0=BB=D0=BE=D0=B2 wrote: > Yep. Unclear. What parameter is recommended for SSD? Lower? 3? 2? 1? > > Much better will be write: if you use SSD set 1. > > =D0=9E=D0=BB=D0=B5=D0=B3 > > > 19 =D0=BC=D0=B0=D1=80=D1=82=D0=B0 2020 =D0=B3., =D0=B2 23:56, Bruce Mom= jian =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB(=D0=B0): > > > > =EF=BB=BFOn Thu, Feb 27, 2020 at 02:48:44PM +0000, PG Doc comments form= wrote: > >> The following documentation comment has been logged on the website: > >> > >> Page: https://www.postgresql.org/docs/12/runtime-config-query.html > >> Description: > >> > >> Explanation for random_page_cost is rather outdated, because it did > only for > >> case of mechanical hdd. But all modern database servers, which I know, > made > >> upon SSD. Do or not do default value for random_page_cost equal to 1 i= s > the > >> question, but, IMHO, at list in the documentation about > random_page_cost > >> need to add in a speculation about SSD. > >> > >> It's important because a business programming now is mostly web > programming. > >> Most database is poorly designed by web programmer, tables looked like= a > >> primary key and a huge json (containing all) with large gin index upon > it. > >> Now I am seeing a table with a GIN index 50% of the table size. The > database > >> is on SSD, of cause. With default random_page_cost=3D4 GIN index don'= t > used > >> by planner, but with random_page_cost=3D1 the result may be not > excellent, but > >> acceptable for web programmers. > > > > Does this sentence in the random_page_cost docs unclear or not have > enough > > visibility: > > > > > https://www.postgresql.org/docs/12/runtime-config-query.html#RUNTIME-CONF= IG-QUERY-CONSTANTS > > > > Storage that has a low random read cost relative to sequential, e.g. > > solid-state drives, might also be better modeled with a lower value > for > > random_page_cost. > > > > -- > > Bruce Momjian https://momjian.us > > EnterpriseDB https://enterprisedb.com > > > > + As you are, so once was I. As I am, so you will be. + > > + Ancient Roman grave inscription + > > > > > > --0000000000009b6f6e05a4368f07 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Sorry to hijack the thread, I also recently have similar o= bservation that the statement about random_page_cost on SSD is ambiguous. T= he current document says that

> Storage that has a low random rea= d cost relative to sequential, e.g. solid-state drives, might also be bette= r modeled with a lower value for random_page_cost.

However, this sta= tement does not clarify what values might be good. For some workload, the d= efault value 4.0 would cause bad performance and lowering random_page_cost = to a value 3.0 or 2.0 does not solve the performance problem. Only when the= random_page_cost is lowered to below 1.2 will the bad performance be mitig= ated. Thus, I would suggest elaborating on this description further as:
=
=C2=A0> =C2=A0Storage that has a low random read cost relative to se= quential, e.g. solid-state drives, might also be better modeled with a valu= e that is close to 1 for random_page_cost.

Detail:

I run the = PostgreSQL 11 on an SSD hardware. The database has two small tables with 6M= B and 16MB separately. The pgbench runs a select join query in 1 min. The r= esult shows that when the random_page_cost is 1, the average latency is 14m= s. When the random_page_cost is 1.5, 2, 3 or 4, the average latency is 26ms= . This result suggests that setting random_page_cost to a value larger than= 1.5 would cause almost 2x latency. If I increase the 6MB table to 60MB and= rerun the sysbench, the result shows that when the random_page_cost is 1, = the average latency is 13ms. When the random_page_cost is 1.5,2,3 or 4, the= average latency is 17ms.

I attached my testing script, the postgres= ql configuration file, and planner output.

On Mon, Apr 27, 2020 at 3:19 = AM =D0=9E=D0=BB=D0=B5=D0=B3 =D0=A1=D0=B0=D0=BC=D0=BE=D0=B9=D0=BB=D0=BE=D0= =B2 <splarv@ya.ru> wrote:
Yep. Unclear. What para= meter is recommended for SSD? Lower? 3? 2? 1?

Much better will be write: if you use SSD set 1.

=D0=9E=D0=BB=D0=B5=D0=B3

> 19 =D0=BC=D0=B0=D1=80=D1=82=D0=B0 2020 =D0=B3., =D0=B2 23:56, Bruce Mo= mjian <bruce@momji= an.us> =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB(=D0=B0):
>
> =EF=BB=BFOn Thu, Feb 27, 2020 at 02:48:44PM +0000, PG Doc comments for= m wrote:
>> The following documentation comment has been logged on the website= :
>>
>> Page: https://www.postgresql.or= g/docs/12/runtime-config-query.html
>> Description:
>>
>> Explanation for random_page_cost is rather outdated, because it di= d only for
>> case of mechanical hdd. But all modern database servers, which I k= now, made
>> upon SSD. Do or not do default value for random_page_cost equal to= 1 is the
>> question, but, IMHO, at list in the documentation=C2=A0 about rand= om_page_cost
>> need to add in a speculation about SSD.
>>
>> It's important because a business programming now is mostly we= b programming.
>> Most database is poorly designed by web programmer, tables looked = like a
>> primary key and a huge json (containing all) with large gin index = upon it.
>> Now I am seeing a table with a GIN index 50% of the table size. Th= e database
>> is on SSD, of cause.=C2=A0 With default random_page_cost=3D4 GIN i= ndex don't used
>> by planner, but with random_page_cost=3D1 the result may be not ex= cellent, but
>> acceptable for web programmers.
>
> Does this sentence in the random_page_cost docs unclear or not have en= ough
> visibility:
>
>=C2=A0 =C2=A0 https://www.postgresql.org/docs/12/runtime-config-query.html#RUNTI= ME-CONFIG-QUERY-CONSTANTS
>=C2=A0 =C2=A0
>=C2=A0 =C2=A0 Storage that has a low random read cost relative to seque= ntial, e.g.
>=C2=A0 =C2=A0 solid-state drives, might also be better modeled with a l= ower value for
>=C2=A0 =C2=A0 random_page_cost.
>
> --
>=C2=A0 Bruce Momjian=C2=A0 <bruce@momjian.us>=C2=A0 =C2=A0 =C2=A0 =C2=A0 https://momjia= n.us
>=C2=A0 EnterpriseDB=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0https://enterprisedb.com=
>
> + As you are, so once was I.=C2=A0 As I am, so you will be. +
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 Ancient Roman grave inscription +





--0000000000009b6f6e05a4368f07-- --0000000000009b6f7105a4368f09 Content-Type: application/octet-stream; name="postgresql.conf" Content-Disposition: attachment; filename="postgresql.conf" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k9hfxijs1 IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFBvc3RncmVTUUwgY29uZmlndXJhdGlv biBmaWxlCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgZmlsZSBjb25z aXN0cyBvZiBsaW5lcyBvZiB0aGUgZm9ybToKIwojICAgbmFtZSA9IHZhbHVlCiMKIyAoVGhlICI9 IiBpcyBvcHRpb25hbC4pICBXaGl0ZXNwYWNlIG1heSBiZSB1c2VkLiAgQ29tbWVudHMgYXJlIGlu dHJvZHVjZWQgd2l0aAojICIjIiBhbnl3aGVyZSBvbiBhIGxpbmUuICBUaGUgY29tcGxldGUgbGlz dCBvZiBwYXJhbWV0ZXIgbmFtZXMgYW5kIGFsbG93ZWQKIyB2YWx1ZXMgY2FuIGJlIGZvdW5kIGlu IHRoZSBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24uCiMKIyBUaGUgY29tbWVudGVkLW91dCBzZXR0 aW5ncyBzaG93biBpbiB0aGlzIGZpbGUgcmVwcmVzZW50IHRoZSBkZWZhdWx0IHZhbHVlcy4KIyBS ZS1jb21tZW50aW5nIGEgc2V0dGluZyBpcyBOT1Qgc3VmZmljaWVudCB0byByZXZlcnQgaXQgdG8g dGhlIGRlZmF1bHQgdmFsdWU7CiMgeW91IG5lZWQgdG8gcmVsb2FkIHRoZSBzZXJ2ZXIuCiMKIyBU aGlzIGZpbGUgaXMgcmVhZCBvbiBzZXJ2ZXIgc3RhcnR1cCBhbmQgd2hlbiB0aGUgc2VydmVyIHJl Y2VpdmVzIGEgU0lHSFVQCiMgc2lnbmFsLiAgSWYgeW91IGVkaXQgdGhlIGZpbGUgb24gYSBydW5u aW5nIHN5c3RlbSwgeW91IGhhdmUgdG8gU0lHSFVQIHRoZQojIHNlcnZlciBmb3IgdGhlIGNoYW5n ZXMgdG8gdGFrZSBlZmZlY3QsIHJ1biAicGdfY3RsIHJlbG9hZCIsIG9yIGV4ZWN1dGUKIyAiU0VM RUNUIHBnX3JlbG9hZF9jb25mKCkiLiAgU29tZSBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgbWFya2Vk IGJlbG93LAojIHJlcXVpcmUgYSBzZXJ2ZXIgc2h1dGRvd24gYW5kIHJlc3RhcnQgdG8gdGFrZSBl ZmZlY3QuCiMKIyBBbnkgcGFyYW1ldGVyIGNhbiBhbHNvIGJlIGdpdmVuIGFzIGEgY29tbWFuZC1s aW5lIG9wdGlvbiB0byB0aGUgc2VydmVyLCBlLmcuLAojICJwb3N0Z3JlcyAtYyBsb2dfY29ubmVj dGlvbnM9b24iLiAgU29tZSBwYXJhbWV0ZXJzIGNhbiBiZSBjaGFuZ2VkIGF0IHJ1biB0aW1lCiMg d2l0aCB0aGUgIlNFVCIgU1FMIGNvbW1hbmQuCiMKIyBNZW1vcnkgdW5pdHM6ICBrQiA9IGtpbG9i eXRlcyAgICAgICAgVGltZSB1bml0czogIG1zICA9IG1pbGxpc2Vjb25kcwojICAgICAgICAgICAg ICAgIE1CID0gbWVnYWJ5dGVzICAgICAgICAgICAgICAgICAgICAgcyAgID0gc2Vjb25kcwojICAg ICAgICAgICAgICAgIEdCID0gZ2lnYWJ5dGVzICAgICAgICAgICAgICAgICAgICAgbWluID0gbWlu dXRlcwojICAgICAgICAgICAgICAgIFRCID0gdGVyYWJ5dGVzICAgICAgICAgICAgICAgICAgICAg aCAgID0gaG91cnMKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGQgICA9IGRheXMKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRklMRSBMT0NBVElP TlMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBUaGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlc2Ug dmFyaWFibGVzIGFyZSBkcml2ZW4gZnJvbSB0aGUgLUQgY29tbWFuZC1saW5lCiMgb3B0aW9uIG9y IFBHREFUQSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgcmVwcmVzZW50ZWQgaGVyZSBhcyBDb25maWdE aXIuCgojZGF0YV9kaXJlY3RvcnkgPSAnQ29uZmlnRGlyJwkJIyB1c2UgZGF0YSBpbiBhbm90aGVy IGRpcmVjdG9yeQoJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQojaGJhX2ZpbGUgPSAn Q29uZmlnRGlyL3BnX2hiYS5jb25mJwkjIGhvc3QtYmFzZWQgYXV0aGVudGljYXRpb24gZmlsZQoJ CQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQojaWRlbnRfZmlsZSA9ICdDb25maWdEaXIv cGdfaWRlbnQuY29uZicJIyBpZGVudCBjb25maWd1cmF0aW9uIGZpbGUKCQkJCQkjIChjaGFuZ2Ug cmVxdWlyZXMgcmVzdGFydCkKCiMgSWYgZXh0ZXJuYWxfcGlkX2ZpbGUgaXMgbm90IGV4cGxpY2l0 bHkgc2V0LCBubyBleHRyYSBQSUQgZmlsZSBpcyB3cml0dGVuLgojZXh0ZXJuYWxfcGlkX2ZpbGUg PSAnJwkJCSMgd3JpdGUgYW4gZXh0cmEgUElEIGZpbGUKCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMg cmVzdGFydCkKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ09OTkVDVElPTlMgQU5EIEFVVEhF TlRJQ0FUSU9OCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgLSBDb25uZWN0aW9uIFNldHRpbmdz IC0KCiNsaXN0ZW5fYWRkcmVzc2VzID0gJ2xvY2FsaG9zdCcJCSMgd2hhdCBJUCBhZGRyZXNzKGVz KSB0byBsaXN0ZW4gb247CgkJCQkJIyBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhZGRyZXNzZXM7 CgkJCQkJIyBkZWZhdWx0cyB0byAnbG9jYWxob3N0JzsgdXNlICcqJyBmb3IgYWxsCgkJCQkJIyAo Y2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiNwb3J0ID0gNTQzMgkJCQkjIChjaGFuZ2UgcmVxdWly ZXMgcmVzdGFydCkKI21heF9jb25uZWN0aW9ucyA9IDEwMAkJCSMgKGNoYW5nZSByZXF1aXJlcyBy ZXN0YXJ0KQojc3VwZXJ1c2VyX3Jlc2VydmVkX2Nvbm5lY3Rpb25zID0gMwkjIChjaGFuZ2UgcmVx dWlyZXMgcmVzdGFydCkKdW5peF9zb2NrZXRfZGlyZWN0b3JpZXMgPSAnL3RtcCcJIyBjb21tYS1z ZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcwoJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0 YXJ0KQp1bml4X3NvY2tldF9ncm91cCA9ICcnCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQp CiN1bml4X3NvY2tldF9wZXJtaXNzaW9ucyA9IDA3NzcJCSMgYmVnaW4gd2l0aCAwIHRvIHVzZSBv Y3RhbCBub3RhdGlvbgoJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQojYm9uam91ciA9 IG9mZgkJCQkjIGFkdmVydGlzZSBzZXJ2ZXIgdmlhIEJvbmpvdXIKCQkJCQkjIChjaGFuZ2UgcmVx dWlyZXMgcmVzdGFydCkKI2JvbmpvdXJfbmFtZSA9ICcnCQkJIyBkZWZhdWx0cyB0byB0aGUgY29t cHV0ZXIgbmFtZQoJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQoKIyAtIFRDUCBLZWVw YWxpdmVzIC0KIyBzZWUgIm1hbiA3IHRjcCIgZm9yIGRldGFpbHMKCiN0Y3Bfa2VlcGFsaXZlc19p ZGxlID0gMAkJIyBUQ1BfS0VFUElETEUsIGluIHNlY29uZHM7CgkJCQkJIyAwIHNlbGVjdHMgdGhl IHN5c3RlbSBkZWZhdWx0CiN0Y3Bfa2VlcGFsaXZlc19pbnRlcnZhbCA9IDAJCSMgVENQX0tFRVBJ TlRWTCwgaW4gc2Vjb25kczsKCQkJCQkjIDAgc2VsZWN0cyB0aGUgc3lzdGVtIGRlZmF1bHQKI3Rj cF9rZWVwYWxpdmVzX2NvdW50ID0gMAkJIyBUQ1BfS0VFUENOVDsKCQkJCQkjIDAgc2VsZWN0cyB0 aGUgc3lzdGVtIGRlZmF1bHQKCiMgLSBBdXRoZW50aWNhdGlvbiAtCgojYXV0aGVudGljYXRpb25f dGltZW91dCA9IDFtaW4JCSMgMXMtNjAwcwojcGFzc3dvcmRfZW5jcnlwdGlvbiA9IG1kNQkJIyBt ZDUgb3Igc2NyYW0tc2hhLTI1NgojZGJfdXNlcl9uYW1lc3BhY2UgPSBvZmYKCiMgR1NTQVBJIHVz aW5nIEtlcmJlcm9zCiNrcmJfc2VydmVyX2tleWZpbGUgPSAnJwoja3JiX2Nhc2VpbnNfdXNlcnMg PSBvZmYKCiMgLSBTU0wgLQoKI3NzbCA9IG9mZgojc3NsX2NhX2ZpbGUgPSAnJwojc3NsX2NlcnRf ZmlsZSA9ICdzZXJ2ZXIuY3J0Jwojc3NsX2NybF9maWxlID0gJycKI3NzbF9rZXlfZmlsZSA9ICdz ZXJ2ZXIua2V5Jwojc3NsX2NpcGhlcnMgPSAnSElHSDpNRURJVU06KzNERVM6IWFOVUxMJyAjIGFs bG93ZWQgU1NMIGNpcGhlcnMKI3NzbF9wcmVmZXJfc2VydmVyX2NpcGhlcnMgPSBvbgojc3NsX2Vj ZGhfY3VydmUgPSAncHJpbWUyNTZ2MScKI3NzbF9kaF9wYXJhbXNfZmlsZSA9ICcnCiNzc2xfcGFz c3BocmFzZV9jb21tYW5kID0gJycKI3NzbF9wYXNzcGhyYXNlX2NvbW1hbmRfc3VwcG9ydHNfcmVs b2FkID0gb2ZmCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJFU09VUkNFIFVTQUdFIChleGNl cHQgV0FMKQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIC0gTWVtb3J5IC0KCiNzaGFyZWRfYnVm ZmVycyA9IDEyOE1CCQkJIyBtaW4gMTI4a0IKCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFy dCkKI2h1Z2VfcGFnZXMgPSB0cnkJCQkjIG9uLCBvZmYsIG9yIHRyeQoJCQkJCSMgKGNoYW5nZSBy ZXF1aXJlcyByZXN0YXJ0KQojdGVtcF9idWZmZXJzID0gMzJNQgkJCSMgbWluIDgwMGtCCiNtYXhf cHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMAkJIyB6ZXJvIGRpc2FibGVzIHRoZSBmZWF0dXJlCgkJ CQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiMgQ2F1dGlvbjogaXQgaXMgbm90IGFkdmlz YWJsZSB0byBzZXQgbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyBub256ZXJvIHVubGVzcwojIHlv dSBhY3RpdmVseSBpbnRlbmQgdG8gdXNlIHByZXBhcmVkIHRyYW5zYWN0aW9ucy4KI3dvcmtfbWVt ID0gMzJNQgkJCQkjIG1pbiA2NGtCCiNtYWludGVuYW5jZV93b3JrX21lbSA9IDY0TUIJCSMgbWlu IDFNQgojYXV0b3ZhY3V1bV93b3JrX21lbSA9IC0xCQkjIG1pbiAxTUIsIG9yIC0xIHRvIHVzZSBt YWludGVuYW5jZV93b3JrX21lbQojbWF4X3N0YWNrX2RlcHRoID0gMk1CCQkJIyBtaW4gMTAwa0IK I2R5bmFtaWNfc2hhcmVkX21lbW9yeV90eXBlID0gcG9zaXgJIyB0aGUgZGVmYXVsdCBpcyB0aGUg Zmlyc3Qgb3B0aW9uCgkJCQkJIyBzdXBwb3J0ZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW06CgkJ CQkJIyAgIHBvc2l4CgkJCQkJIyAgIHN5c3YKCQkJCQkjICAgd2luZG93cwoJCQkJCSMgICBtbWFw CgkJCQkJIyB1c2Ugbm9uZSB0byBkaXNhYmxlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeQoJCQkJCSMg KGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQoKIyAtIERpc2sgLQoKI3RlbXBfZmlsZV9saW1pdCA9 IC0xCQkJIyBsaW1pdHMgcGVyLXByb2Nlc3MgdGVtcCBmaWxlIHNwYWNlCgkJCQkJIyBpbiBrQiwg b3IgLTEgZm9yIG5vIGxpbWl0CgojIC0gS2VybmVsIFJlc291cmNlcyAtCgojbWF4X2ZpbGVzX3Bl cl9wcm9jZXNzID0gMTAwMAkJIyBtaW4gMjUKCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFy dCkKCiMgLSBDb3N0LUJhc2VkIFZhY3V1bSBEZWxheSAtCgojdmFjdXVtX2Nvc3RfZGVsYXkgPSAw CQkJIyAwLTEwMCBtaWxsaXNlY29uZHMKI3ZhY3V1bV9jb3N0X3BhZ2VfaGl0ID0gMQkJIyAwLTEw MDAwIGNyZWRpdHMKI3ZhY3V1bV9jb3N0X3BhZ2VfbWlzcyA9IDEwCQkjIDAtMTAwMDAgY3JlZGl0 cwojdmFjdXVtX2Nvc3RfcGFnZV9kaXJ0eSA9IDIwCQkjIDAtMTAwMDAgY3JlZGl0cwojdmFjdXVt X2Nvc3RfbGltaXQgPSAyMDAJCSMgMS0xMDAwMCBjcmVkaXRzCgojIC0gQmFja2dyb3VuZCBXcml0 ZXIgLQoKI2Jnd3JpdGVyX2RlbGF5ID0gMjAwbXMJCQkjIDEwLTEwMDAwbXMgYmV0d2VlbiByb3Vu ZHMKI2Jnd3JpdGVyX2xydV9tYXhwYWdlcyA9IDEwMAkJIyBtYXggYnVmZmVycyB3cml0dGVuL3Jv dW5kLCAwIGRpc2FibGVzCiNiZ3dyaXRlcl9scnVfbXVsdGlwbGllciA9IDIuMAkJIyAwLTEwLjAg bXVsdGlwbGllciBvbiBidWZmZXJzIHNjYW5uZWQvcm91bmQKI2Jnd3JpdGVyX2ZsdXNoX2FmdGVy ID0gMAkJIyBtZWFzdXJlZCBpbiBwYWdlcywgMCBkaXNhYmxlcwoKIyAtIEFzeW5jaHJvbm91cyBC ZWhhdmlvciAtCgojZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5ID0gMQkJIyAxLTEwMDA7IDAgZGlz YWJsZXMgcHJlZmV0Y2hpbmcKI21heF93b3JrZXJfcHJvY2Vzc2VzID0gOAkJIyAoY2hhbmdlIHJl cXVpcmVzIHJlc3RhcnQpCiNtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VycyA9IDIJIyB0 YWtlbiBmcm9tIG1heF9wYXJhbGxlbF93b3JrZXJzCiNtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJf Z2F0aGVyID0gMAkjIHRha2VuIGZyb20gbWF4X3BhcmFsbGVsX3dvcmtlcnMKI3BhcmFsbGVsX2xl YWRlcl9wYXJ0aWNpcGF0aW9uID0gb24KI21heF9wYXJhbGxlbF93b3JrZXJzID0gOAkJIyBtYXhp bXVtIG51bWJlciBvZiBtYXhfd29ya2VyX3Byb2Nlc3NlcyB0aGF0CgkJCQkJIyBjYW4gYmUgdXNl ZCBpbiBwYXJhbGxlbCBvcGVyYXRpb25zCiNvbGRfc25hcHNob3RfdGhyZXNob2xkID0gLTEJCSMg MW1pbi02MGQ7IC0xIGRpc2FibGVzOyAwIGlzIGltbWVkaWF0ZQoJCQkJCSMgKGNoYW5nZSByZXF1 aXJlcyByZXN0YXJ0KQojYmFja2VuZF9mbHVzaF9hZnRlciA9IDAJCSMgbWVhc3VyZWQgaW4gcGFn ZXMsIDAgZGlzYWJsZXMKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgV1JJVEUtQUhFQUQgTE9H CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgLSBTZXR0aW5ncyAtCgojd2FsX2xldmVsID0gbG9n aWNhbAkJCSMgbWluaW1hbCwgcmVwbGljYSwgb3IgbG9naWNhbAoJCQkJCSMgKGNoYW5nZSByZXF1 aXJlcyByZXN0YXJ0KQojZnN5bmMgPSBvbgkJCQkjIGZsdXNoIGRhdGEgdG8gZGlzayBmb3IgY3Jh c2ggc2FmZXR5CgkJCQkJIyAodHVybmluZyB0aGlzIG9mZiBjYW4gY2F1c2UKCQkJCQkjIHVucmVj b3ZlcmFibGUgZGF0YSBjb3JydXB0aW9uKQpzeW5jaHJvbm91c19jb21taXQgPSBvbgkJIyBzeW5j aHJvbml6YXRpb24gbGV2ZWw7CgkJCQkJIyBvZmYsIGxvY2FsLCByZW1vdGVfd3JpdGUsIHJlbW90 ZV9hcHBseSwgb3Igb24KI3dhbF9zeW5jX21ldGhvZCA9IGZkYXRhc3luYwkJIyB0aGUgZGVmYXVs dCBpcyB0aGUgZmlyc3Qgb3B0aW9uCgkJCQkJIyBzdXBwb3J0ZWQgYnkgdGhlIG9wZXJhdGluZyBz eXN0ZW06CgkJCQkJIyAgIG9wZW5fZGF0YXN5bmMKCQkJCQkjICAgZmRhdGFzeW5jIChkZWZhdWx0 IG9uIExpbnV4KQoJCQkJCSMgICBmc3luYwoJCQkJCSMgICBmc3luY193cml0ZXRocm91Z2gKCQkJ CQkjICAgb3Blbl9zeW5jCiNmdWxsX3BhZ2Vfd3JpdGVzID0gb24JCQkjIHJlY292ZXIgZnJvbSBw YXJ0aWFsIHBhZ2Ugd3JpdGVzCiN3YWxfY29tcHJlc3Npb24gPSBvZmYJCQkjIGVuYWJsZSBjb21w cmVzc2lvbiBvZiBmdWxsLXBhZ2Ugd3JpdGVzCiN3YWxfbG9nX2hpbnRzID0gb2ZmCQkJIyBhbHNv IGRvIGZ1bGwgcGFnZSB3cml0ZXMgb2Ygbm9uLWNyaXRpY2FsIHVwZGF0ZXMKCQkJCQkjIChjaGFu Z2UgcmVxdWlyZXMgcmVzdGFydCkKI3dhbF9idWZmZXJzID0gLTEJCQkjIG1pbiAzMmtCLCAtMSBz ZXRzIGJhc2VkIG9uIHNoYXJlZF9idWZmZXJzCgkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3Rh cnQpCiN3YWxfd3JpdGVyX2RlbGF5ID0gMjAwbXMJCSMgMS0xMDAwMCBtaWxsaXNlY29uZHMKI3dh bF93cml0ZXJfZmx1c2hfYWZ0ZXIgPSAxTUIJCSMgbWVhc3VyZWQgaW4gcGFnZXMsIDAgZGlzYWJs ZXMKCiNjb21taXRfZGVsYXkgPSAwCQkJIyByYW5nZSAwLTEwMDAwMCwgaW4gbWljcm9zZWNvbmRz CiNjb21taXRfc2libGluZ3MgPSA1CQkJIyByYW5nZSAxLTEwMDAKCiMgLSBDaGVja3BvaW50cyAt CgojY2hlY2twb2ludF90aW1lb3V0ID0gNW1pbgkJIyByYW5nZSAzMHMtMWQKI21heF93YWxfc2l6 ZSA9IDFHQgojbWluX3dhbF9zaXplID0gODBNQgojY2hlY2twb2ludF9jb21wbGV0aW9uX3Rhcmdl dCA9IDAuNQkjIGNoZWNrcG9pbnQgdGFyZ2V0IGR1cmF0aW9uLCAwLjAgLSAxLjAKI2NoZWNrcG9p bnRfZmx1c2hfYWZ0ZXIgPSAwCQkjIG1lYXN1cmVkIGluIHBhZ2VzLCAwIGRpc2FibGVzCiNjaGVj a3BvaW50X3dhcm5pbmcgPSAzMHMJCSMgMCBkaXNhYmxlcwoKIyAtIEFyY2hpdmluZyAtCgojYXJj aGl2ZV9tb2RlID0gb24JCSMgZW5hYmxlcyBhcmNoaXZpbmc7IG9mZiwgb24sIG9yIGFsd2F5cwoJ CQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiNhcmNoaXZlX2NvbW1hbmQgPSAnY3AgJXAg L2hvbWUvczJlL3NvZnR3YXJlL3Bvc3RncmVzcWwvMTEuMC9kYXRhL3BnX2FyY2hpdmUvJWYnCQkj IGNvbW1hbmQgdG8gdXNlIHRvIGFyY2hpdmUgYSBsb2dmaWxlIHNlZ21lbnQKCQkJCSMgcGxhY2Vo b2xkZXJzOiAlcCA9IHBhdGggb2YgZmlsZSB0byBhcmNoaXZlCgkJCQkjICAgICAgICAgICAgICAg JWYgPSBmaWxlIG5hbWUgb25seQoJCQkJIyBlLmcuICd0ZXN0ICEgLWYgL21udC9zZXJ2ZXIvYXJj aGl2ZWRpci8lZiAmJiBjcCAlcCAvbW50L3NlcnZlci9hcmNoaXZlZGlyLyVmJwojYXJjaGl2ZV90 aW1lb3V0ID0gMzAgCQkjIGZvcmNlIGEgbG9nZmlsZSBzZWdtZW50IHN3aXRjaCBhZnRlciB0aGlz CgkJCQkjIG51bWJlciBvZiBzZWNvbmRzOyAwIGRpc2FibGVzCgoKIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQojIFJFUExJQ0FUSU9OCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgLSBTZW5kaW5nIFNl cnZlcnMgLQoKIyBTZXQgdGhlc2Ugb24gdGhlIG1hc3RlciBhbmQgb24gYW55IHN0YW5kYnkgdGhh dCB3aWxsIHNlbmQgcmVwbGljYXRpb24gZGF0YS4KCiNtYXhfd2FsX3NlbmRlcnMgPSAxCQkjIG1h eCBudW1iZXIgb2Ygd2Fsc2VuZGVyIHByb2Nlc3NlcwoJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJl c3RhcnQpCiN3YWxfa2VlcF9zZWdtZW50cyA9IDAJCSMgaW4gbG9nZmlsZSBzZWdtZW50czsgMCBk aXNhYmxlcwojd2FsX3NlbmRlcl90aW1lb3V0ID0gNjBzCSMgaW4gbWlsbGlzZWNvbmRzOyAwIGRp c2FibGVzCgojbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gMTAJIyBtYXggbnVtYmVyIG9mIHJlcGxp Y2F0aW9uIHNsb3RzCgkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKI3RyYWNrX2NvbW1p dF90aW1lc3RhbXAgPSBvZmYJIyBjb2xsZWN0IHRpbWVzdGFtcCBvZiB0cmFuc2FjdGlvbiBjb21t aXQKCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQoKIyAtIE1hc3RlciBTZXJ2ZXIgLQoK IyBUaGVzZSBzZXR0aW5ncyBhcmUgaWdub3JlZCBvbiBhIHN0YW5kYnkgc2VydmVyLgoKI3N5bmNo cm9ub3VzX3N0YW5kYnlfbmFtZXMgPSAnJwkjIHN0YW5kYnkgc2VydmVycyB0aGF0IHByb3ZpZGUg c3luYyByZXAKCQkJCSMgbWV0aG9kIHRvIGNob29zZSBzeW5jIHN0YW5kYnlzLCBudW1iZXIgb2Yg c3luYyBzdGFuZGJ5cywKCQkJCSMgYW5kIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFwcGxpY2F0 aW9uX25hbWUKCQkJCSMgZnJvbSBzdGFuZGJ5KHMpOyAnKicgPSBhbGwKI3ZhY3V1bV9kZWZlcl9j bGVhbnVwX2FnZSA9IDAJIyBudW1iZXIgb2YgeGFjdHMgYnkgd2hpY2ggY2xlYW51cCBpcyBkZWxh eWVkCgojIC0gU3RhbmRieSBTZXJ2ZXJzIC0KCiMgVGhlc2Ugc2V0dGluZ3MgYXJlIGlnbm9yZWQg b24gYSBtYXN0ZXIgc2VydmVyLgoKI2hvdF9zdGFuZGJ5ID0gb24JCQkjICJvZmYiIGRpc2FsbG93 cyBxdWVyaWVzIGR1cmluZyByZWNvdmVyeQoJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0 KQojbWF4X3N0YW5kYnlfYXJjaGl2ZV9kZWxheSA9IDMwcwkjIG1heCBkZWxheSBiZWZvcmUgY2Fu Y2VsaW5nIHF1ZXJpZXMKCQkJCQkjIHdoZW4gcmVhZGluZyBXQUwgZnJvbSBhcmNoaXZlOwoJCQkJ CSMgLTEgYWxsb3dzIGluZGVmaW5pdGUgZGVsYXkKI21heF9zdGFuZGJ5X3N0cmVhbWluZ19kZWxh eSA9IDMwcwkjIG1heCBkZWxheSBiZWZvcmUgY2FuY2VsaW5nIHF1ZXJpZXMKCQkJCQkjIHdoZW4g cmVhZGluZyBzdHJlYW1pbmcgV0FMOwoJCQkJCSMgLTEgYWxsb3dzIGluZGVmaW5pdGUgZGVsYXkK I3dhbF9yZWNlaXZlcl9zdGF0dXNfaW50ZXJ2YWwgPSAxMHMJIyBzZW5kIHJlcGxpZXMgYXQgbGVh c3QgdGhpcyBvZnRlbgoJCQkJCSMgMCBkaXNhYmxlcwojaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBv ZmYJCSMgc2VuZCBpbmZvIGZyb20gc3RhbmRieSB0byBwcmV2ZW50CgkJCQkJIyBxdWVyeSBjb25m bGljdHMKI3dhbF9yZWNlaXZlcl90aW1lb3V0ID0gNjBzCQkjIHRpbWUgdGhhdCByZWNlaXZlciB3 YWl0cyBmb3IKCQkJCQkjIGNvbW11bmljYXRpb24gZnJvbSBtYXN0ZXIKCQkJCQkjIGluIG1pbGxp c2Vjb25kczsgMCBkaXNhYmxlcwojd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsID0gNXMJIyB0 aW1lIHRvIHdhaXQgYmVmb3JlIHJldHJ5aW5nIHRvCgkJCQkJIyByZXRyaWV2ZSBXQUwgYWZ0ZXIg YSBmYWlsZWQgYXR0ZW1wdAoKIyAtIFN1YnNjcmliZXJzIC0KCiMgVGhlc2Ugc2V0dGluZ3MgYXJl IGlnbm9yZWQgb24gYSBwdWJsaXNoZXIuCgojbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy cyA9IDQJIyB0YWtlbiBmcm9tIG1heF93b3JrZXJfcHJvY2Vzc2VzCgkJCQkJIyAoY2hhbmdlIHJl cXVpcmVzIHJlc3RhcnQpCiNtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMg dGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCgoKIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQojIFFVRVJZIFRVTklORwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIC0gUGxh bm5lciBNZXRob2QgQ29uZmlndXJhdGlvbiAtCgojZW5hYmxlX2JpdG1hcHNjYW4gPSBvbgojZW5h YmxlX2hhc2hhZ2cgPSBvbgojZW5hYmxlX2hhc2hqb2luID0gb2ZmCiNlbmFibGVfaW5kZXhzY2Fu ID0gb24KI2VuYWJsZV9pbmRleG9ubHlzY2FuID0gb2ZmCiNlbmFibGVfbWF0ZXJpYWwgPSBvbgoj ZW5hYmxlX21lcmdlam9pbiA9IG9mZgojZW5hYmxlX25lc3Rsb29wID0gb2ZmCiNlbmFibGVfcGFy YWxsZWxfYXBwZW5kID0gb24KI2VuYWJsZV9zZXFzY2FuID0gb2ZmCiNlbmFibGVfc29ydCA9IG9u CiNlbmFibGVfdGlkc2NhbiA9IG9uCiNlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luID0gb24KI2Vu YWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9mZgojZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbgojZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nID0gb24KCiMgLSBQbGFubmVyIENvc3QgQ29u c3RhbnRzIC0KCiNzZXFfcGFnZV9jb3N0ID0gMS4wCQkJIyBtZWFzdXJlZCBvbiBhbiBhcmJpdHJh cnkgc2NhbGUKcmFuZG9tX3BhZ2VfY29zdCA9IDEuMAkJCSMgc2FtZSBzY2FsZSBhcyBhYm92ZQoj Y3B1X3R1cGxlX2Nvc3QgPSAwLjAxCQkJIyBzYW1lIHNjYWxlIGFzIGFib3ZlCiNjcHVfaW5kZXhf dHVwbGVfY29zdCA9IDAuMDA1CQkjIHNhbWUgc2NhbGUgYXMgYWJvdmUKI2NwdV9vcGVyYXRvcl9j b3N0ID0gMC4wMDI1CQkjIHNhbWUgc2NhbGUgYXMgYWJvdmUKI3BhcmFsbGVsX3R1cGxlX2Nvc3Qg PSAwLjEJCSMgc2FtZSBzY2FsZSBhcyBhYm92ZQojcGFyYWxsZWxfc2V0dXBfY29zdCA9IDEwMDAu MAkjIHNhbWUgc2NhbGUgYXMgYWJvdmUKCiNqaXRfYWJvdmVfY29zdCA9IDEwMDAwMAkJIyBwZXJm b3JtIEpJVCBjb21waWxhdGlvbiBpZiBhdmFpbGFibGUKCQkJCQkjIGFuZCBxdWVyeSBtb3JlIGV4 cGVuc2l2ZSB0aGFuIHRoaXM7CgkJCQkJIyAtMSBkaXNhYmxlcwojaml0X2lubGluZV9hYm92ZV9j b3N0ID0gNTAwMDAwCQkjIGlubGluZSBzbWFsbCBmdW5jdGlvbnMgaWYgcXVlcnkgaXMKCQkJCQkj IG1vcmUgZXhwZW5zaXZlIHRoYW4gdGhpczsgLTEgZGlzYWJsZXMKI2ppdF9vcHRpbWl6ZV9hYm92 ZV9jb3N0ID0gNTAwMDAwCSMgdXNlIGV4cGVuc2l2ZSBKSVQgb3B0aW1pemF0aW9ucyBpZgoJCQkJ CSMgcXVlcnkgaXMgbW9yZSBleHBlbnNpdmUgdGhhbiB0aGlzOwoJCQkJCSMgLTEgZGlzYWJsZXMK CiNtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gOE1CCiNtaW5fcGFyYWxsZWxfaW5kZXhf c2Nhbl9zaXplID0gNTEya0IKI2VmZmVjdGl2ZV9jYWNoZV9zaXplID0gNEdCCgojIC0gR2VuZXRp YyBRdWVyeSBPcHRpbWl6ZXIgLQoKI2dlcW8gPSBvbgojZ2Vxb190aHJlc2hvbGQgPSAxMgojZ2Vx b19lZmZvcnQgPSA1CQkJIyByYW5nZSAxLTEwCiNnZXFvX3Bvb2xfc2l6ZSA9IDAJCQkjIHNlbGVj dHMgZGVmYXVsdCBiYXNlZCBvbiBlZmZvcnQKI2dlcW9fZ2VuZXJhdGlvbnMgPSAwCQkJIyBzZWxl Y3RzIGRlZmF1bHQgYmFzZWQgb24gZWZmb3J0CiNnZXFvX3NlbGVjdGlvbl9iaWFzID0gMi4wCQkj IHJhbmdlIDEuNS0yLjAKI2dlcW9fc2VlZCA9IDAuMAkJCSMgcmFuZ2UgMC4wLTEuMAoKIyAtIE90 aGVyIFBsYW5uZXIgT3B0aW9ucyAtCgojZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldCA9IDUwMDAJ IyByYW5nZSAxLTEwMDAwCiNjb25zdHJhaW50X2V4Y2x1c2lvbiA9IHBhcnRpdGlvbgkjIG9uLCBv ZmYsIG9yIHBhcnRpdGlvbgojY3Vyc29yX3R1cGxlX2ZyYWN0aW9uID0gMC4xCQkjIHJhbmdlIDAu MC0xLjAKI2Zyb21fY29sbGFwc2VfbGltaXQgPSA4CiNqb2luX2NvbGxhcHNlX2xpbWl0ID0gOAkJ IyAxIGRpc2FibGVzIGNvbGxhcHNpbmcgb2YgZXhwbGljaXQKCQkJCQkjIEpPSU4gY2xhdXNlcwoj Zm9yY2VfcGFyYWxsZWxfbW9kZSA9IG9mZgojaml0ID0gb2ZmCQkJCSMgYWxsb3cgSklUIGNvbXBp bGF0aW9uCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJFUE9SVElORyBBTkQgTE9HR0lORwoj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIC0gV2hlcmUgdG8gTG9nIC0KCiNsb2dfZGVzdGluYXRp b24gPSAnY3N2bG9nJwkJIyBWYWxpZCB2YWx1ZXMgYXJlIGNvbWJpbmF0aW9ucyBvZgoJCQkJCSMg c3RkZXJyLCBjc3Zsb2csIHN5c2xvZywgYW5kIGV2ZW50bG9nLAoJCQkJCSMgZGVwZW5kaW5nIG9u IHBsYXRmb3JtLiAgY3N2bG9nCgkJCQkJIyByZXF1aXJlcyBsb2dnaW5nX2NvbGxlY3RvciB0byBi ZSBvbi4KCiMgVGhpcyBpcyB1c2VkIHdoZW4gbG9nZ2luZyB0byBzdGRlcnI6CiNsb2dnaW5nX2Nv bGxlY3RvciA9IG9uCQkjIEVuYWJsZSBjYXB0dXJpbmcgb2Ygc3RkZXJyIGFuZCBjc3Zsb2cKCQkJ CQkjIGludG8gbG9nIGZpbGVzLiBSZXF1aXJlZCB0byBiZSBvbiBmb3IKCQkJCQkjIGNzdmxvZ3Mu CgkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCgojIFRoZXNlIGFyZSBvbmx5IHVzZWQg aWYgbG9nZ2luZ19jb2xsZWN0b3IgaXMgb246CiNsb2dfZGlyZWN0b3J5ID0gJy9ob21lL3MyZS9z b2Z0d2FyZS9wb3N0Z3Jlc3FsLzExLjAvbG9nJwkJCSMgZGlyZWN0b3J5IHdoZXJlIGxvZyBmaWxl cyBhcmUgd3JpdHRlbiwKCQkJCQkjIGNhbiBiZSBhYnNvbHV0ZSBvciByZWxhdGl2ZSB0byBQR0RB VEEKI2xvZ19maWxlbmFtZSA9ICdwb3N0Z3Jlc3FsLSVZLSVtLSVkXyVIJU0lUy5sb2cnCSMgbG9n IGZpbGUgbmFtZSBwYXR0ZXJuLAoJCQkJCSMgY2FuIGluY2x1ZGUgc3RyZnRpbWUoKSBlc2NhcGVz CiNsb2dfZmlsZV9tb2RlID0gMDYwMAkJCSMgY3JlYXRpb24gbW9kZSBmb3IgbG9nIGZpbGVzLAoJ CQkJCSMgYmVnaW4gd2l0aCAwIHRvIHVzZSBvY3RhbCBub3RhdGlvbgojbG9nX3RydW5jYXRlX29u X3JvdGF0aW9uID0gb2ZmCQkjIElmIG9uLCBhbiBleGlzdGluZyBsb2cgZmlsZSB3aXRoIHRoZQoJ CQkJCSMgc2FtZSBuYW1lIGFzIHRoZSBuZXcgbG9nIGZpbGUgd2lsbCBiZQoJCQkJCSMgdHJ1bmNh dGVkIHJhdGhlciB0aGFuIGFwcGVuZGVkIHRvLgoJCQkJCSMgQnV0IHN1Y2ggdHJ1bmNhdGlvbiBv bmx5IG9jY3VycyBvbgoJCQkJCSMgdGltZS1kcml2ZW4gcm90YXRpb24sIG5vdCBvbiByZXN0YXJ0 cwoJCQkJCSMgb3Igc2l6ZS1kcml2ZW4gcm90YXRpb24uICBEZWZhdWx0IGlzCgkJCQkJIyBvZmYs IG1lYW5pbmcgYXBwZW5kIHRvIGV4aXN0aW5nIGZpbGVzCgkJCQkJIyBpbiBhbGwgY2FzZXMuCiNs b2dfcm90YXRpb25fYWdlID0gMWQJCQkjIEF1dG9tYXRpYyByb3RhdGlvbiBvZiBsb2dmaWxlcyB3 aWxsCgkJCQkJIyBoYXBwZW4gYWZ0ZXIgdGhhdCB0aW1lLiAgMCBkaXNhYmxlcy4KI2xvZ19yb3Rh dGlvbl9zaXplID0gMTBNQgkJIyBBdXRvbWF0aWMgcm90YXRpb24gb2YgbG9nZmlsZXMgd2lsbAoJ CQkJCSMgaGFwcGVuIGFmdGVyIHRoYXQgbXVjaCBsb2cgb3V0cHV0LgoJCQkJCSMgMCBkaXNhYmxl cy4KCiMgVGhlc2UgYXJlIHJlbGV2YW50IHdoZW4gbG9nZ2luZyB0byBzeXNsb2c6CiNzeXNsb2df ZmFjaWxpdHkgPSAnTE9DQUwwJwojc3lzbG9nX2lkZW50ID0gJ3Bvc3RncmVzJwojc3lzbG9nX3Nl cXVlbmNlX251bWJlcnMgPSBvbgojc3lzbG9nX3NwbGl0X21lc3NhZ2VzID0gb24KCiMgVGhpcyBp cyBvbmx5IHJlbGV2YW50IHdoZW4gbG9nZ2luZyB0byBldmVudGxvZyAod2luMzIpOgojIChjaGFu Z2UgcmVxdWlyZXMgcmVzdGFydCkKI2V2ZW50X3NvdXJjZSA9ICdQb3N0Z3JlU1FMJwoKIyAtIFdo ZW4gdG8gTG9nIC0KCiNjbGllbnRfbWluX21lc3NhZ2VzID0gbm90aWNlCQkjIHZhbHVlcyBpbiBv cmRlciBvZiBkZWNyZWFzaW5nIGRldGFpbDoKCQkJCQkjICAgZGVidWc1CgkJCQkJIyAgIGRlYnVn NAoJCQkJCSMgICBkZWJ1ZzMKCQkJCQkjICAgZGVidWcyCgkJCQkJIyAgIGRlYnVnMQoJCQkJCSMg ICBsb2cKCQkJCQkjICAgbm90aWNlCgkJCQkJIyAgIHdhcm5pbmcKCQkJCQkjICAgZXJyb3IKCiNs b2dfbWluX21lc3NhZ2VzID0gd2FybmluZwkJIyB2YWx1ZXMgaW4gb3JkZXIgb2YgZGVjcmVhc2lu ZyBkZXRhaWw6CgkJCQkJIyAgIGRlYnVnNQoJCQkJCSMgICBkZWJ1ZzQKCQkJCQkjICAgZGVidWcz CgkJCQkJIyAgIGRlYnVnMgoJCQkJCSMgICBkZWJ1ZzEKCQkJCQkjICAgaW5mbwoJCQkJCSMgICBu b3RpY2UKCQkJCQkjICAgd2FybmluZwoJCQkJCSMgICBlcnJvcgoJCQkJCSMgICBsb2cKCQkJCQkj ICAgZmF0YWwKCQkJCQkjICAgcGFuaWMKCiNsb2dfbWluX2Vycm9yX3N0YXRlbWVudCA9IGVycm9y CSMgdmFsdWVzIGluIG9yZGVyIG9mIGRlY3JlYXNpbmcgZGV0YWlsOgoJCQkJCSMgICBkZWJ1ZzUK CQkJCQkjICAgZGVidWc0CgkJCQkJIyAgIGRlYnVnMwoJCQkJCSMgICBkZWJ1ZzIKCQkJCQkjICAg ZGVidWcxCgkJCQkJIyAgIGluZm8KCQkJCQkjICAgbm90aWNlCgkJCQkJIyAgIHdhcm5pbmcKCQkJ CQkjICAgZXJyb3IKCQkJCQkjICAgbG9nCgkJCQkJIyAgIGZhdGFsCgkJCQkJIyAgIHBhbmljIChl ZmZlY3RpdmVseSBvZmYpCgojbG9nX21pbl9kdXJhdGlvbl9zdGF0ZW1lbnQgPSAtMQkjIC0xIGlz IGRpc2FibGVkLCAwIGxvZ3MgYWxsIHN0YXRlbWVudHMKCQkJCQkjIGFuZCB0aGVpciBkdXJhdGlv bnMsID4gMCBsb2dzIG9ubHkKCQkJCQkjIHN0YXRlbWVudHMgcnVubmluZyBhdCBsZWFzdCB0aGlz IG51bWJlcgoJCQkJCSMgb2YgbWlsbGlzZWNvbmRzCgoKIyAtIFdoYXQgdG8gTG9nIC0KCiNkZWJ1 Z19wcmludF9wYXJzZSA9IG9mZgojZGVidWdfcHJpbnRfcmV3cml0dGVuID0gb2ZmCiNkZWJ1Z19w cmludF9wbGFuID0gb2ZmCiNkZWJ1Z19wcmV0dHlfcHJpbnQgPSBvbgojbG9nX2NoZWNrcG9pbnRz ID0gb2ZmCiNsb2dfY29ubmVjdGlvbnMgPSBvZmYKI2xvZ19kaXNjb25uZWN0aW9ucyA9IG9mZgoj bG9nX2R1cmF0aW9uID0gb2ZmCiNsb2dfZXJyb3JfdmVyYm9zaXR5ID0gZGVmYXVsdAkJIyB0ZXJz ZSwgZGVmYXVsdCwgb3IgdmVyYm9zZSBtZXNzYWdlcwojbG9nX2hvc3RuYW1lID0gb2ZmCiNsb2df bGluZV9wcmVmaXggPSAnJW0gWyVwXSAnCQkjIHNwZWNpYWwgdmFsdWVzOgoJCQkJCSMgICAlYSA9 IGFwcGxpY2F0aW9uIG5hbWUKCQkJCQkjICAgJXUgPSB1c2VyIG5hbWUKCQkJCQkjICAgJWQgPSBk YXRhYmFzZSBuYW1lCgkJCQkJIyAgICVyID0gcmVtb3RlIGhvc3QgYW5kIHBvcnQKCQkJCQkjICAg JWggPSByZW1vdGUgaG9zdAoJCQkJCSMgICAlcCA9IHByb2Nlc3MgSUQKCQkJCQkjICAgJXQgPSB0 aW1lc3RhbXAgd2l0aG91dCBtaWxsaXNlY29uZHMKCQkJCQkjICAgJW0gPSB0aW1lc3RhbXAgd2l0 aCBtaWxsaXNlY29uZHMKCQkJCQkjICAgJW4gPSB0aW1lc3RhbXAgd2l0aCBtaWxsaXNlY29uZHMg KGFzIGEgVW5peCBlcG9jaCkKCQkJCQkjICAgJWkgPSBjb21tYW5kIHRhZwoJCQkJCSMgICAlZSA9 IFNRTCBzdGF0ZQoJCQkJCSMgICAlYyA9IHNlc3Npb24gSUQKCQkJCQkjICAgJWwgPSBzZXNzaW9u IGxpbmUgbnVtYmVyCgkJCQkJIyAgICVzID0gc2Vzc2lvbiBzdGFydCB0aW1lc3RhbXAKCQkJCQkj ICAgJXYgPSB2aXJ0dWFsIHRyYW5zYWN0aW9uIElECgkJCQkJIyAgICV4ID0gdHJhbnNhY3Rpb24g SUQgKDAgaWYgbm9uZSkKCQkJCQkjICAgJXEgPSBzdG9wIGhlcmUgaW4gbm9uLXNlc3Npb24KCQkJ CQkjICAgICAgICBwcm9jZXNzZXMKCQkJCQkjICAgJSUgPSAnJScKCQkJCQkjIGUuZy4gJzwldSUl JWQ+ICcKI2xvZ19sb2NrX3dhaXRzID0gb2ZmCQkJIyBsb2cgbG9jayB3YWl0cyA+PSBkZWFkbG9j a190aW1lb3V0CmxvZ19zdGF0ZW1lbnQgPSAnbm9uZScJCQkjIG5vbmUsIGRkbCwgbW9kLCBhbGwK I2xvZ19yZXBsaWNhdGlvbl9jb21tYW5kcyA9IG9mZgojbG9nX3RlbXBfZmlsZXMgPSAtMQkJCSMg bG9nIHRlbXBvcmFyeSBmaWxlcyBlcXVhbCBvciBsYXJnZXIKCQkJCQkjIHRoYW4gdGhlIHNwZWNp ZmllZCBzaXplIGluIGtpbG9ieXRlczsKCQkJCQkjIC0xIGRpc2FibGVzLCAwIGxvZ3MgYWxsIHRl bXAgZmlsZXMKI2xvZ190aW1lem9uZSA9ICdHTVQnCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg UFJPQ0VTUyBUSVRMRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojY2x1c3Rlcl9uYW1lID0gJycJ CQkjIGFkZGVkIHRvIHByb2Nlc3MgdGl0bGVzIGlmIG5vbmVtcHR5CgkJCQkJIyAoY2hhbmdlIHJl cXVpcmVzIHJlc3RhcnQpCiN1cGRhdGVfcHJvY2Vzc190aXRsZSA9IG9uCgoKIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQojIFNUQVRJU1RJQ1MKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyAtIFF1ZXJ5 IGFuZCBJbmRleCBTdGF0aXN0aWNzIENvbGxlY3RvciAtCgojdHJhY2tfYWN0aXZpdGllcyA9IG9u CiN0cmFja19jb3VudHMgPSBvbgojdHJhY2tfaW9fdGltaW5nID0gb2ZmCiN0cmFja19mdW5jdGlv bnMgPSBub25lCQkJIyBub25lLCBwbCwgYWxsCiN0cmFja19hY3Rpdml0eV9xdWVyeV9zaXplID0g MTAyNAkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKI3N0YXRzX3RlbXBfZGlyZWN0b3J5ID0g J3BnX3N0YXRfdG1wJwoKCiMgLSBNb25pdG9yaW5nIC0KCiNsb2dfcGFyc2VyX3N0YXRzID0gb2Zm CiNsb2dfcGxhbm5lcl9zdGF0cyA9IG9mZgojbG9nX2V4ZWN1dG9yX3N0YXRzID0gb2ZmCiNsb2df c3RhdGVtZW50X3N0YXRzID0gb2ZmCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEFVVE9WQUNV VU0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKI2F1dG92YWN1dW0gPSBvbgkJCSMgRW5hYmxlIGF1 dG92YWN1dW0gc3VicHJvY2Vzcz8gICdvbicKCQkJCQkjIHJlcXVpcmVzIHRyYWNrX2NvdW50cyB0 byBhbHNvIGJlIG9uLgojbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gLTEJIyAtMSBkaXNh YmxlcywgMCBsb2dzIGFsbCBhY3Rpb25zIGFuZAoJCQkJCSMgdGhlaXIgZHVyYXRpb25zLCA+IDAg bG9ncyBvbmx5CgkJCQkJIyBhY3Rpb25zIHJ1bm5pbmcgYXQgbGVhc3QgdGhpcyBudW1iZXIKCQkJ CQkjIG9mIG1pbGxpc2Vjb25kcy4KI2F1dG92YWN1dW1fbWF4X3dvcmtlcnMgPSAzCQkjIG1heCBu dW1iZXIgb2YgYXV0b3ZhY3V1bSBzdWJwcm9jZXNzZXMKCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMg cmVzdGFydCkKI2F1dG92YWN1dW1fbmFwdGltZSA9IDFtaW4JCSMgdGltZSBiZXR3ZWVuIGF1dG92 YWN1dW0gcnVucwojYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkID0gNTAJIyBtaW4gbnVtYmVy IG9mIHJvdyB1cGRhdGVzIGJlZm9yZQoJCQkJCSMgdmFjdXVtCiNhdXRvdmFjdXVtX2FuYWx5emVf dGhyZXNob2xkID0gNTAJIyBtaW4gbnVtYmVyIG9mIHJvdyB1cGRhdGVzIGJlZm9yZQoJCQkJCSMg YW5hbHl6ZQojYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yID0gMC4yCSMgZnJhY3Rpb24g b2YgdGFibGUgc2l6ZSBiZWZvcmUgdmFjdXVtCiNhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFj dG9yID0gMC4xCSMgZnJhY3Rpb24gb2YgdGFibGUgc2l6ZSBiZWZvcmUgYW5hbHl6ZQojYXV0b3Zh Y3V1bV9mcmVlemVfbWF4X2FnZSA9IDIwMDAwMDAwMAkjIG1heGltdW0gWElEIGFnZSBiZWZvcmUg Zm9yY2VkIHZhY3V1bQoJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQojYXV0b3ZhY3V1 bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgPSA0MDAwMDAwMDAJIyBtYXhpbXVtIG11bHRpeGFj dCBhZ2UKCQkJCQkjIGJlZm9yZSBmb3JjZWQgdmFjdXVtCgkJCQkJIyAoY2hhbmdlIHJlcXVpcmVz IHJlc3RhcnQpCiNhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5ID0gMjBtcwkjIGRlZmF1bHQg dmFjdXVtIGNvc3QgZGVsYXkgZm9yCgkJCQkJIyBhdXRvdmFjdXVtLCBpbiBtaWxsaXNlY29uZHM7 CgkJCQkJIyAtMSBtZWFucyB1c2UgdmFjdXVtX2Nvc3RfZGVsYXkKI2F1dG92YWN1dW1fdmFjdXVt X2Nvc3RfbGltaXQgPSAtMQkjIGRlZmF1bHQgdmFjdXVtIGNvc3QgbGltaXQgZm9yCgkJCQkJIyBh dXRvdmFjdXVtLCAtMSBtZWFucyB1c2UKCQkJCQkjIHZhY3V1bV9jb3N0X2xpbWl0CgoKIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQojIENMSUVOVCBDT05ORUNUSU9OIERFRkFVTFRTCiMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KCiMgLSBTdGF0ZW1lbnQgQmVoYXZpb3IgLQoKI3NlYXJjaF9wYXRoID0gJyIk dXNlciIsIHB1YmxpYycJIyBzY2hlbWEgbmFtZXMKI3Jvd19zZWN1cml0eSA9IG9uCiNkZWZhdWx0 X3RhYmxlc3BhY2UgPSAnJwkJIyBhIHRhYmxlc3BhY2UgbmFtZSwgJycgdXNlcyB0aGUgZGVmYXVs dAojdGVtcF90YWJsZXNwYWNlcyA9ICcnCQkJIyBhIGxpc3Qgb2YgdGFibGVzcGFjZSBuYW1lcywg JycgdXNlcwoJCQkJCSMgb25seSBkZWZhdWx0IHRhYmxlc3BhY2UKI2NoZWNrX2Z1bmN0aW9uX2Jv ZGllcyA9IG9uCiNkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9ICdyZWFkIGNvbW1pdHRl ZCcKI2RlZmF1bHRfdHJhbnNhY3Rpb25fcmVhZF9vbmx5ID0gb2ZmCiNkZWZhdWx0X3RyYW5zYWN0 aW9uX2RlZmVycmFibGUgPSBvZmYKI3Nlc3Npb25fcmVwbGljYXRpb25fcm9sZSA9ICdvcmlnaW4n CiNzdGF0ZW1lbnRfdGltZW91dCA9IDAJCQkjIGluIG1pbGxpc2Vjb25kcywgMCBpcyBkaXNhYmxl ZAojbG9ja190aW1lb3V0ID0gMAkJCSMgaW4gbWlsbGlzZWNvbmRzLCAwIGlzIGRpc2FibGVkCiNp ZGxlX2luX3RyYW5zYWN0aW9uX3Nlc3Npb25fdGltZW91dCA9IDAJIyBpbiBtaWxsaXNlY29uZHMs IDAgaXMgZGlzYWJsZWQKI3ZhY3V1bV9mcmVlemVfbWluX2FnZSA9IDUwMDAwMDAwCiN2YWN1dW1f ZnJlZXplX3RhYmxlX2FnZSA9IDE1MDAwMDAwMAojdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWlu X2FnZSA9IDUwMDAwMDAKI3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZSA9IDE1MDAw MDAwMAojdmFjdXVtX2NsZWFudXBfaW5kZXhfc2NhbGVfZmFjdG9yID0gMC4xCSMgZnJhY3Rpb24g b2YgdG90YWwgbnVtYmVyIG9mIHR1cGxlcwoJCQkJCQkjIGJlZm9yZSBpbmRleCBjbGVhbnVwLCAw IGFsd2F5cyBwZXJmb3JtcwoJCQkJCQkjIGluZGV4IGNsZWFudXAKI2J5dGVhX291dHB1dCA9ICdo ZXgnCQkJIyBoZXgsIGVzY2FwZQojeG1sYmluYXJ5ID0gJ2Jhc2U2NCcKI3htbG9wdGlvbiA9ICdj b250ZW50JwojZ2luX2Z1enp5X3NlYXJjaF9saW1pdCA9IDAKI2dpbl9wZW5kaW5nX2xpc3RfbGlt aXQgPSA0TUIKCiMgLSBMb2NhbGUgYW5kIEZvcm1hdHRpbmcgLQoKI2RhdGVzdHlsZSA9ICdpc28s IG1keScKI2ludGVydmFsc3R5bGUgPSAncG9zdGdyZXMnCiN0aW1lem9uZSA9ICdHTVQnCiN0aW1l em9uZV9hYmJyZXZpYXRpb25zID0gJ0RlZmF1bHQnICAgICAjIFNlbGVjdCB0aGUgc2V0IG9mIGF2 YWlsYWJsZSB0aW1lIHpvbmUKCQkJCQkjIGFiYnJldmlhdGlvbnMuICBDdXJyZW50bHksIHRoZXJl IGFyZQoJCQkJCSMgICBEZWZhdWx0CgkJCQkJIyAgIEF1c3RyYWxpYSAoaGlzdG9yaWNhbCB1c2Fn ZSkKCQkJCQkjICAgSW5kaWEKCQkJCQkjIFlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIGZpbGUgaW4K CQkJCQkjIHNoYXJlL3RpbWV6b25lc2V0cy8uCiNleHRyYV9mbG9hdF9kaWdpdHMgPSAwCQkJIyBt aW4gLTE1LCBtYXggMwojY2xpZW50X2VuY29kaW5nID0gc3FsX2FzY2lpCQkjIGFjdHVhbGx5LCBk ZWZhdWx0cyB0byBkYXRhYmFzZQoJCQkJCSMgZW5jb2RpbmcKCiMgVGhlc2Ugc2V0dGluZ3MgYXJl IGluaXRpYWxpemVkIGJ5IGluaXRkYiwgYnV0IHRoZXkgY2FuIGJlIGNoYW5nZWQuCiNsY19tZXNz YWdlcyA9ICdDJwkJCSMgbG9jYWxlIGZvciBzeXN0ZW0gZXJyb3IgbWVzc2FnZQoJCQkJCSMgc3Ry aW5ncwojbGNfbW9uZXRhcnkgPSAnQycJCQkjIGxvY2FsZSBmb3IgbW9uZXRhcnkgZm9ybWF0dGlu ZwojbGNfbnVtZXJpYyA9ICdDJwkJCSMgbG9jYWxlIGZvciBudW1iZXIgZm9ybWF0dGluZwojbGNf dGltZSA9ICdDJwkJCQkjIGxvY2FsZSBmb3IgdGltZSBmb3JtYXR0aW5nCgojIGRlZmF1bHQgY29u ZmlndXJhdGlvbiBmb3IgdGV4dCBzZWFyY2gKI2RlZmF1bHRfdGV4dF9zZWFyY2hfY29uZmlnID0g J3BnX2NhdGFsb2cuc2ltcGxlJwoKIyAtIFNoYXJlZCBMaWJyYXJ5IFByZWxvYWRpbmcgLQoKc2hh cmVkX3ByZWxvYWRfbGlicmFyaWVzID0gJ3BnX3N0YXRfc3RhdGVtZW50cycJIyAoY2hhbmdlIHJl cXVpcmVzIHJlc3RhcnQpCiNsb2NhbF9wcmVsb2FkX2xpYnJhcmllcyA9ICcnCiNzZXNzaW9uX3By ZWxvYWRfbGlicmFyaWVzID0gJycKI2ppdF9wcm92aWRlciA9ICdsbHZtaml0JwkJIyBKSVQgbGli cmFyeSB0byB1c2UKCiMgLSBPdGhlciBEZWZhdWx0cyAtCgojZHluYW1pY19saWJyYXJ5X3BhdGgg PSAnJGxpYmRpcicKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTE9DSyBNQU5BR0VNRU5UCiMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiNkZWFkbG9ja190aW1lb3V0ID0gMXMKI21heF9sb2Nrc19w ZXJfdHJhbnNhY3Rpb24gPSA2NAkJIyBtaW4gMTAKCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVz dGFydCkKI21heF9wcmVkX2xvY2tzX3Blcl90cmFuc2FjdGlvbiA9IDY0CSMgbWluIDEwCgkJCQkJ IyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiNtYXhfcHJlZF9sb2Nrc19wZXJfcmVsYXRpb24g PSAtMgkjIG5lZ2F0aXZlIHZhbHVlcyBtZWFuCgkJCQkJIyAobWF4X3ByZWRfbG9ja3NfcGVyX3Ry YW5zYWN0aW9uCgkJCQkJIyAgLyAtbWF4X3ByZWRfbG9ja3NfcGVyX3JlbGF0aW9uKSAtIDEKI21h eF9wcmVkX2xvY2tzX3Blcl9wYWdlID0gMiAgICAgICAgICAgICMgbWluIDAKCgojLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiMgVkVSU0lPTiBBTkQgUExBVEZPUk0gQ09NUEFUSUJJTElUWQojLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgojIC0gUHJldmlvdXMgUG9zdGdyZVNRTCBWZXJzaW9ucyAtCgojYXJy YXlfbnVsbHMgPSBvbgojYmFja3NsYXNoX3F1b3RlID0gc2FmZV9lbmNvZGluZwkjIG9uLCBvZmYs IG9yIHNhZmVfZW5jb2RpbmcKI2RlZmF1bHRfd2l0aF9vaWRzID0gb2ZmCiNlc2NhcGVfc3RyaW5n X3dhcm5pbmcgPSBvbgojbG9fY29tcGF0X3ByaXZpbGVnZXMgPSBvZmYKI29wZXJhdG9yX3ByZWNl ZGVuY2Vfd2FybmluZyA9IG9mZgojcXVvdGVfYWxsX2lkZW50aWZpZXJzID0gb2ZmCiNzdGFuZGFy ZF9jb25mb3JtaW5nX3N0cmluZ3MgPSBvbgojc3luY2hyb25pemVfc2Vxc2NhbnMgPSBvbgoKIyAt IE90aGVyIFBsYXRmb3JtcyBhbmQgQ2xpZW50cyAtCgojdHJhbnNmb3JtX251bGxfZXF1YWxzID0g b2ZmCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEVSUk9SIEhBTkRMSU5HCiMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KCiNleGl0X29uX2Vycm9yID0gb2ZmCQkJIyB0ZXJtaW5hdGUgc2Vzc2lvbiBv biBhbnkgZXJyb3I/CiNyZXN0YXJ0X2FmdGVyX2NyYXNoID0gb24JCSMgcmVpbml0aWFsaXplIGFm dGVyIGJhY2tlbmQgY3Jhc2g/CgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENPTkZJRyBGSUxF IElOQ0xVREVTCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgVGhlc2Ugb3B0aW9ucyBhbGxvdyBz ZXR0aW5ncyB0byBiZSBsb2FkZWQgZnJvbSBmaWxlcyBvdGhlciB0aGFuIHRoZQojIGRlZmF1bHQg cG9zdGdyZXNxbC5jb25mLgoKI2luY2x1ZGVfZGlyID0gJ2NvbmYuZCcJCQkjIGluY2x1ZGUgZmls ZXMgZW5kaW5nIGluICcuY29uZicgZnJvbQoJCQkJCSMgZGlyZWN0b3J5ICdjb25mLmQnCiNpbmNs dWRlX2lmX2V4aXN0cyA9ICdleGlzdHMuY29uZicJIyBpbmNsdWRlIGZpbGUgb25seSBpZiBpdCBl eGlzdHMKI2luY2x1ZGUgPSAnc3BlY2lhbC5jb25mJwkJIyBpbmNsdWRlIGZpbGUKCgojLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiMgQ1VTVE9NSVpFRCBPUFRJT05TCiMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCiMgQWRkIHNldHRpbmdzIGZvciBleHRlbnNpb25zIGhlcmUK --0000000000009b6f7105a4368f09 Content-Type: application/x-shellscript; name="query_analytical.sh" Content-Disposition: attachment; filename="query_analytical.sh" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k9hfxijt2 IyEvYmluL2Jhc2gKUFNRTD0uL2Jpbi9wc3FsCkRBVEFCQVNFPXRlc3QKcmVzdGFydF9jbWQ9Jy4v YmluL3Bvc3RncmVzIC0tY29uZmlnLWZpbGU9cG9zdGdyZXNxbC5jb25mIC1EIGRhdGEvICcKc3Rv cF9jbWQ9Jy4vYmluL3BnX2N0bCAtRCBkYXRhLyBzdG9wJwoKZWNobyAic3RhcnRpbmcgcG9zdGdy ZXNxbC4uLiIKJHtyZXN0YXJ0X2NtZH0gJgpzbGVlcCAzCmVjaG8gImluaXQgZGF0YWJhc2UuLi4i CiRQU1FMICR7REFUQUJBU0V9IC1xWGMgImRyb3AgdGFibGUgaWYgZXhpc3RzIHZpb2xldF9COyIK JFBTUUwgJHtEQVRBQkFTRX0gLXFYYyAiZHJvcCB0YWJsZSBpZiBleGlzdHMgdmlvbGV0X0E7Igok UFNRTCAke0RBVEFCQVNFfSAtcVhjICJjcmVhdGUgVEFCTEUgdmlvbGV0X0IoaWQgaW50IHByaW1h cnkga2V5LGNvbDIgaW50LCBkZXAgdmFyY2hhcigyMCksIHRleHQgdmFyY2hhcig1MCksc2Nob29s IHZhcmNoYXIoMTApKTsiCiRQU1FMICR7REFUQUJBU0V9IC1xWGMgImluc2VydCBpbnRvIHZpb2xl dF9CIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBhcyBrZXksIChyYW5kb20oKSooMTBe NCkpOjppbnRlZ2VyLCAnZGVwX0EnLHJhbmRvbSgpOjp2YXJjaGFyKDUwKSxyYW5kb20oKTo6dmFy Y2hhcigxMCk7IgokUFNRTCAke0RBVEFCQVNFfSAtcVhjICJpbnNlcnQgaW50byB2aW9sZXRfQiBz ZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMjAwMDApIGFzIGtleSwgKHJhbmRvbSgpKigxMF40 KSk6OmludGVnZXIsICdkZXBfQicscmFuZG9tKCk6OnZhcmNoYXIoNTApLHJhbmRvbSgpOjp2YXJj aGFyKDEwKTsiCiRQU1FMICR7REFUQUJBU0V9IC1xWGMgImluc2VydCBpbnRvIHZpb2xldF9CIHNl bGVjdCBnZW5lcmF0ZV9zZXJpZXMoMjAwMDEsMjEwMDApIGFzIGtleSwgKHJhbmRvbSgpKigxMF40 KSk6OmludGVnZXIsICdkZXBfQScscmFuZG9tKCk6OnZhcmNoYXIoNTApLHJhbmRvbSgpOjp2YXJj aGFyKDEwKTsiCiRQU1FMICR7REFUQUJBU0V9IC1xWGMgImluc2VydCBpbnRvIHZpb2xldF9CIHNl bGVjdCBnZW5lcmF0ZV9zZXJpZXMoMjEwMDEsNDAwMDApIGFzIGtleSwgKHJhbmRvbSgpKigxMF40 KSk6OmludGVnZXIsICdkZXBfQicscmFuZG9tKCk6OnZhcmNoYXIoNTApLHJhbmRvbSgpOjp2YXJj aGFyKDEwKTsiCiRQU1FMICR7REFUQUJBU0V9IC1xWGMgImluc2VydCBpbnRvIHZpb2xldF9CIHNl bGVjdCBnZW5lcmF0ZV9zZXJpZXMoNDEwMDEsNDIwMDApIGFzIGtleSwgKHJhbmRvbSgpKigxMF40 KSk6OmludGVnZXIsICdkZXBfQScscmFuZG9tKCk6OnZhcmNoYXIoNTApLHJhbmRvbSgpOjp2YXJj aGFyKDEwKTsiCiRQU1FMICR7REFUQUJBU0V9IC1xWGMgImluc2VydCBpbnRvIHZpb2xldF9CIHNl bGVjdCBnZW5lcmF0ZV9zZXJpZXMoNDIwMDEsNjAwMDApIGFzIGtleSwgKHJhbmRvbSgpKigxMF40 KSk6OmludGVnZXIsICdkZXBfQicscmFuZG9tKCk6OnZhcmNoYXIoNTApLHJhbmRvbSgpOjp2YXJj aGFyKDEwKTsiCiRQU1FMICR7REFUQUJBU0V9IC1xWGMgImluc2VydCBpbnRvIHZpb2xldF9CIHNl bGVjdCBnZW5lcmF0ZV9zZXJpZXMoNjAwMDEsMjAwMDAwKSBhcyBrZXksIChyYW5kb20oKSooMTBe NCkpOjppbnRlZ2VyLCByYW5kb20oKTo6dmFyY2hhcigyMCkscmFuZG9tKCk6OnZhcmNoYXIoNTAp LHJhbmRvbSgpOjp2YXJjaGFyKDEwKTsiCiRQU1FMICR7REFUQUJBU0V9IC1xWGMgImNyZWF0ZSBp bmRleCBpbmRleF9kZXAgb24gdmlvbGV0X0IoZGVwKTsiCiRQU1FMICR7REFUQUJBU0V9IC1xWGMg ImNyZWF0ZSBUQUJMRSB2aW9sZXRfQShpZCBpbnQgcHJpbWFyeSBrZXksZXZlbnRfaWQgaW50LCBw aG9uZSB2YXJjaGFyKDEwKSwgbmFtZSB2YXJjaGFyKDIyKSk7IgokUFNRTCAke0RBVEFCQVNFfSAt cVhjICJpbnNlcnQgaW50byB2aW9sZXRfQSBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMDAw KSBhcyBrZXksIChyYW5kb20oKSooMTBeNSkpOjppbnRlZ2VyLHJhbmRvbSgpOjp2YXJjaGFyKDEw KSwgcmFuZG9tKCk6OnZhcmNoYXIoMjApOyIKJFBTUUwgJHtEQVRBQkFTRX0gLXFYYyAiYW5hbHl6 ZTsiCmVjaG8gInRlc3RpbmcgcmFuZG9tX3BhZ2VfY29zdCAxIgokUFNRTCAke0RBVEFCQVNFfSAt cVhjICJzZXQgcmFuZG9tX3BhZ2VfY29zdCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHNl bGVjdCAqIGZyb20gdmlvbGV0X0EgSk9JTiB2aW9sZXRfQiBPTiB2aW9sZXRfQi5pZD12aW9sZXRf QS5pZCB3aGVyZSBkZXAgPSAnZGVwX0EnOyIKZWNobyAidGVzdGluZyByYW5kb21fcGFnZV9jb3N0 IDIiCiRQU1FMICR7REFUQUJBU0V9IC1xWGMgInNldCByYW5kb21fcGFnZV9jb3N0ID0gMjsKICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ICogZnJvbSB2aW9sZXRfQSBKT0lOIHZpb2xldF9C IE9OIHZpb2xldF9CLmlkPXZpb2xldF9BLmlkIHdoZXJlIGRlcCA9ICdkZXBfQSc7IgplY2hvICJ0 ZXN0aW5nIHJhbmRvbV9wYWdlX2Nvc3QgMyIKJFBTUUwgJHtEQVRBQkFTRX0gLXFYYyAic2V0IHJh bmRvbV9wYWdlX2Nvc3QgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgKiBmcm9t IHZpb2xldF9BIEpPSU4gdmlvbGV0X0IgT04gdmlvbGV0X0IuaWQ9dmlvbGV0X0EuaWQgd2hlcmUg ZGVwID0gJ2RlcF9BJzsiCmVjaG8gInRlc3RpbmcgcmFuZG9tX3BhZ2VfY29zdCA0IgokUFNRTCAk e0RBVEFCQVNFfSAtcVhjICJzZXQgcmFuZG9tX3BhZ2VfY29zdCA9IDQ7CiAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGVjdCAqIGZyb20gdmlvbGV0X0EgSk9JTiB2aW9sZXRfQiBPTiB2aW9sZXRf Qi5pZD12aW9sZXRfQS5pZCB3aGVyZSBkZXAgPSAnZGVwX0EnOyIKCiR7c3RvcF9jbWR9Cg== --0000000000009b6f7105a4368f09 Content-Type: application/octet-stream; name=planner_output Content-Disposition: attachment; filename=planner_output Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k9hfxihs0 cmFuZG9tX3BhZ2VfY29zdAkoMTAwMDAwLDIwMDAwMCwzMDAwKSwgaW5kZXggZm9yIGRlcF9hCSgz MTAwMDAsMjAwMDAwLDMwMDApLCBpbmRleCBmb3IgZGVwX2EJKDM2MDAwMCwyMDAwMDAsMzAwMCks IGluZGV4IGZvciBkZXBfYQkoMzcwMDAwLDIwMDAwMCwzMDAwKSwgaW5kZXggZm9yIGRlcF9hCSgx MDAwMDAwLDIwMDAwMCwzMDAwKSwgaW5kZXggZm9yIGRlcF9hCSgxMTAwMDAwLDIwMDAwMCwzMDAw KSwgaW5kZXggZm9yIGRlcF9hCjQJc2xvdyhIYXNoSm9pbikJc2xvdyhIYXNoSm9pbikJc2xvdyhI YXNoSm9pbikJbWVkaXVtKE1lcmdlSm9pbikJbWVkaXVtKE1lcmdlSm9pbikJKE1lcmdlSm9pbikK MwlzbG93KEhhc2hKb2luKQlzbG93KEhhc2hKb2luKQltZWRpdW0oTWVyZ2VKb2luKQltZWRpdW0o TWVyZ2VKb2luKQltZWRpdW0oTWVyZ2VKb2luKQkoTWVyZ2VKb2luKQoyCXNsb3coSGFzaEpvaW4p CW1lZGl1bShNZXJnZUpvaW4pCW1lZGl1bShNZXJnZUpvaW4pCW1lZGl1bShNZXJnZUpvaW4pCW1l ZGl1bShNZXJnZUpvaW4pCShNZXJnZUpvaW4pCjEJZmFzdChuZXN0bG9vcCkJZmFzdChuZXN0bG9v cCkJZmFzdChuZXN0bG9vcCkJZmFzdChuZXN0bG9vcCkJZmFzdChuZXN0bG9vcCkJKE1lcmdlSm9p bikKCSgxMDAwMDAsMjAwMDAwLDMyMDApLCBpbmRleCBmb3IgZGVwX2EJKDIwMDAwMCwyMDAwMDAs MzAwMCksIGluZGV4IGZvciBkZXBfYQkoMzYwMDAwLDIwMDAwMCw1MDAwKSwgaW5kZXggZm9yIGRl cF9hCQkJCjQJc2FtZShIYXNoSm9pbikJc2xvdyhIYXNoSm9pbikJc2xvdyhIYXNoSm9pbikJCQkK MwlzYW1lKEhhc2hKb2luKQlzbG93KEhhc2hKb2luKQltZWRpdW0oTWVyZ2VKb2luKQkJCQoyCXNh bWUoSGFzaEpvaW4pCXNsb3coSGFzaEpvaW4pCW1lZGl1bShNZXJnZUpvaW4pCQkJCjEJc2FtZShI YXNoSm9pbikJZmFzdChuZXN0bG9vcCkJZmFzdChuZXN0bG9vcCkJCQkKCQkJKDM2MDAwMCwyMDAw MDAsNjAwMCksIGluZGV4IGZvciBkZXBfYQkJCQoJCQkoSGFzaEpvaW4pCQkJCgkJCShNZXJnZUpv aW4pCQkJCgkJCShNZXJnZUpvaW4pCQkJCgkJCShNZXJnZUpvaW4pCg== --0000000000009b6f7105a4368f09--