Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1whUHY-000Fus-2V for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jul 2026 15:33:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1whUHX-007nRC-1F for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jul 2026 15:33:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1whUHX-007nR4-02 for pgsql-hackers@lists.postgresql.org; Wed, 08 Jul 2026 15:33:51 +0000 Received: from mail-yx1-xb12d.google.com ([2607:f8b0:4864:20::b12d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1whUHU-00000000IFe-1dYu for pgsql-hackers@lists.postgresql.org; Wed, 08 Jul 2026 15:33:51 +0000 Received: by mail-yx1-xb12d.google.com with SMTP id 956f58d0204a3-66780d9d901so1006700d50.0 for ; Wed, 08 Jul 2026 08:33:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783524827; cv=none; d=google.com; s=arc-20260327; b=ie8fPNL8wG1EGaF1fw2G1GXXuTv4URkC/guJKj/V3pUKdaonlVu25NJY3mSqQQ28wh AjLuCeQCUGNUwM6FbixNC8s8wK8quZa2mlfggXy5afGt9oD4uCZt9x+RVOir8hLRZiJb +Oa8fAqgbmD7hdRJeWXESG+h83Xb9UvhpGoBz1M6CmiuooMgZpc7xm7qUK9666Om6stm D8KpCNTSl02spwqy+ps7WM6EenWReYpCCmmub9llu8XWMp5/D3IDW0fFb1gm2H49Mwgs ZM7yTk63tbjDTpWlg8nXio8Y/GitUaY0xCe+tK+hoIKfIVnXGDAH05x1CoCw6Q+9jjZR cNMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=HAaM/JGdFTcX3YvNEEJCGQuS/blkFxlBPfY2XfN3BFI=; fh=hGx5FyfcPRvDwl9rrQ/WBHnixHQMcj0+8/plgBBvO8Y=; b=WlY7RFj5xXLcvYldiKkNaYUIsFNy7JTNqrXc6jCJC2PSxzYwHZabX3Ym8AaV+uvgBT EIP4zSdTRzd6JFL93hB2F2dHOyA4Gz+qaf4pJyP8kHSiKFy9bbqiXUmzsaJkZYWrMVCU X7mv3OTtNjLUUcnweIYHYA2VewFNHOw0gczWs02ny7ScX83DXlBYIo6PkvPXgdHFtk11 YhkzItUDs6kz2Q/jS9wpZcvhLZPcvbhtxo7dfQUdljXUwc6uYRfDFBFNqu2k76lxg4OS mU8q8ML1c7C+/zKrG2L0XHv8So0dgUuAuCAIxtM2syQ2VeOb+Z6RqZciN3x4HdkyNEGI wgRw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=percona.com; s=google; t=1783524827; x=1784129627; darn=lists.postgresql.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=HAaM/JGdFTcX3YvNEEJCGQuS/blkFxlBPfY2XfN3BFI=; b=SjAwUx0ruAPC0Kao5UQFzkyoag6+RBA63B3kzBFjVuVfmASr81JwMpPWkYRtCcD3eK wQ11hKdq2VIzGBXIMsi1OzXnkf5+8AboEfa2H8ge0stbQyW+BRf1Tx8olkR6doHmCcqf j43FSao7uGeWVww05MtzMc+7cq6g6mhiQDdSgax+KHninSWqQlc6bN+WZuMp8rvUaApz fQkxDsdYGogrtsMSQObcKxhLRVhhhx/5rA01X00GmR0Zt/KObFqsfrIBWu71cNpPWcMc aaVYRCdB6aTKit1k8Xnkh2509xSjMzBvBAREj7GSRuVtii7TJcKgzmqtzkJkQYXgkoHT L+vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783524827; x=1784129627; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=HAaM/JGdFTcX3YvNEEJCGQuS/blkFxlBPfY2XfN3BFI=; b=LPYK+BMgcRNGKVCyfWEeqY6UyK6o139QUHmaqwdJyqLqE6Zdq1x3VubHlkL4htGmRy HnhByzUBztZL3gQhFttu0Kq+IQmGfz83bP/d2zIY8ZAxmy6yYWQ4DykpKrjnpofZZ1hA sLvpeEMmz/4KEtFDroqB6RXLgcXNaN6xBk0tAELn0zCj1RYBgb2lQGLRH3DpEfEcCQlG mCqdPuVaU/en8zBWbpklpUgaVNthOXDoQNyNT+XSPUz4b+2TzSDzBN0RU4/zuj/E56fM EIWHdTRPO+LRawJbJlz2r8W4ss6xyfa5wojj3nzQzCH+InTsXxAmy3/qjwK6NGUncLhr sIxw== X-Forwarded-Encrypted: i=1; AHgh+RraVzBsn1KKbnUKJ87yx4XDuqw/GlRUDg7zf0nUKZ71UbwtrgmWYG/4vaZyihgfunSzQ8KhMmnv0sJ3QFat@lists.postgresql.org X-Gm-Message-State: AOJu0YyJgYINljIbu4UiJ0yMtlvLI0W538wZbfhExji86pQfYX2NAh9P M6+LPX4Y5Y/mq+UWvwNPS63zHwBlKpLlv0CX/VaAYCvVU2DKaskh8dhuDLulR+BF104TZ474737 ShHPu/lui810xNJToHtp9sZn/d3xrDw4RHLnskpRQqJaJxdmymCYfhyVsgbQLcBERScyDn/e6QT vJxPl8icac3kUo+fJa9DgNZONafbZg2mwLKJTMf51kjeanCHdT4iQIxtFOMfSIkoBTLK7NlEc1n x2DOkbSC84uwcS3cRkbyvwVzOXFgImr97AV5hR6Nn75SRHRU2PX/HzK1Cqt/KRuyeg= X-Gm-Gg: AfdE7cn1NwyAQ5uWoNAHm589do/XEeLGXX0cpQWOkyIRS5jeGwAsyXNLNddU4LHpcWE mH9//ssXpqCCNtP6LBXp+obY1vfa44Rq0TrqziBjJvZm0jeOd3CBGa+kRfJ19X3LG4lBCFc4jcS Dvr3eftwNJ1Js2RBYdp4SVJcCEb47CkdHD7fEy1LqCpCQ3s0ZuCCv73y971XxnEKYCCgUWNLz5D FQc/Iy5DlCtyNCdnUIXdjkEpQ0aHSzDmxmq7YmoN/ye1FlDebcfpdDKgrLh9WSPxhCxzP+2zy8M f7YI9iZj0PAUQ5R0wET6nv2ZoKgcm3589IVKxMGr2TR85lEKQeXw2+JVT9JZfMDkAxvYpwQ41zG cQtoR3mciDw6XEYyjiA9x41Zk4oGrt7HNhKAXdg== X-Received: by 2002:a05:690e:4801:b0:664:aa09:a29b with SMTP id 956f58d0204a3-6679f010faemr1981658d50.18.1783524826642; Wed, 08 Jul 2026 08:33:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Zsolt Parragi Date: Wed, 8 Jul 2026 16:33:29 +0100 X-Gm-Features: AVVi8Cfm5GbfgbrkhRpWRVGyloB366lm0wvliyg_ti6vTGIYCQ8dU1aH6i9zQng Message-ID: Subject: Re: Proposal: new file format for hba/ident/hosts configuration? To: Jacob Champion Cc: Andrew Dunstan , Tristan Partin , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000be8c4206561b3b04" X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: percona,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000be8c4206561b3b04 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jul 7, 2026 at 6:17=E2=80=AFPM Tristan Partin w= rote: > I think the best option other than TOML is JSON5. I agree, my first prototype before TOML was JSON5. On Tue, Jul 7, 2026 at 10:21=E2=80=AFPM Andrew Dunstan wrote: > Having implemented two (!) JSON parsers for PostgreSQL, as well as recent= ly a json schema validator extension [1], I have some skin in this game. > I am really not a fan of implementing more and more little languages insi= de Postgres. Doing so will incur a non-zero maintenance burden. Mainly for this reason, because if we add JSON5 support to the parser that's already in postgres, we don't have to worry about adding another library. I focused on TOML in my email because I think that's still a better configuration format than JSON5. However, we could use JSON or another format, as long as it's a well-defined, common format, it will be a big improvement. My initial implementation used JSON/JSON5, and I also still have that patchset locally, which used a similar JSON structure. I only started prototyping with TOML after the initial feedback I got during pgconfdev that most people would prefer using that. On Tue, Jul 7, 2026 at 10:48=E2=80=AFPM Jacob Champion wrote: > I'd be most interested in a mockup of the "final state" you have in > mind. That'd help highlight any need for homegrown syntax. (While > postgresql.conf may be declared out-of-scope, it's hard to imagine > we'd take steps towards an alternate format without some idea of what > the central server config is going to look like in the end.) I intentionally left my initial email somewhat vague about the details, and I didn't include the entire patchset implementing everything for the same reason: to keep the focus on generic questions like: * do we agree on working towards another configuration format? * if yes, what requirements do we have for it? * what exact issues do we want to solve, and what to leave as non-goals? I also understand your point, so I attached a few examples now, assuming a full implementation, including the toml support for postgresql.conf: 1. A very simple single file production configuration 2. A development docker image where the container has a built in configuration and users can specify an override configuration 3. A multi-tenant setup with the traditional hba/hosts/ident split 4. The same multi-tenant setup, but here the split is per tenant instead: one file for global configuration, and another 2 for the 2 tenants I want to note that for these examples: * We can replicate the same or similar structure easily in json/toml/others * For now this format is mostly based on my preferences with some feedback from others. I plan to talk about it to many more people and ask for feedback, so please treat this as a conversation starter, not a concrete suggestion * I am unsure about using the array syntax for hba rules, but so far I like it better than the alternative ideas I tried --000000000000be8c4206561b3b04 Content-Type: application/octet-stream; name="02-docker-local.toml" Content-Disposition: attachment; filename="02-docker-local.toml" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrc8a7gs1 IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQojIE1vY2t1cCAyOiBhIGNvbnRhaW5lciBpbWFnZSBmb3Ig bG9jYWwgLyB0ZXN0aW5nIC8gZGV2ZWxvcG1lbnQgdXNlLgojCiMgVGhlIGltYWdlIHNoaXBzIGEg d29ya2luZyBwb3N0Z3Jlc3FsLnRvbWwuIEF0IHJ1biB0aW1lIHRoZSB1c2VyIG1heSBtb3VudCBh bgojIGV4dHJhIGZpbGU7IHRoZSBiYXNlIGNvbmZpZyBwdWxscyBpdCBpbiB3aXRoIGFuIG9wdGlv bmFsIGluY2x1ZGUsIHNvIHRoZQojIGNvbnRhaW5lciBzdGFydHMgZmluZSB3aGV0aGVyIG9yIG5v dCB0aGF0IGZpbGUgZXhpc3RzLgoKCiMgRklMRTogL2V0Yy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwu dG9tbCAgIChiYWtlZCBpbnRvIHRoZSBpbWFnZSkKIyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpsaXN0 ZW5fYWRkcmVzc2VzID0gIioiCmZzeW5jID0gZmFsc2UKCltpbmNsdWRlXQpvcHRpb25hbCA9IFsi L2V0Yy9wb3N0Z3Jlc3FsL2NvbmYuZC9jdXN0b20udG9tbCJdCgpbaGJhXQoKW2hiYS5fZGVmYXVs dHNdCnRyYW5zcG9ydCA9ICJ0Y3AiCm1ldGhvZCA9ICJzY3JhbS1zaGEtMjU2IgoKW1toYmEucnVs ZXNdXQp0cmFuc3BvcnQgPSAibG9jYWwiCmRhdGFiYXNlcyA9ICJhbGwiCnVzZXJzID0gImFsbCIK bWV0aG9kID0gInRydXN0IgoKW1toYmEucnVsZXNdXQphZGRyZXNzID0gIjAuMC4wLjAvMCIKZGF0 YWJhc2VzID0gImFsbCIKdXNlcnMgPSAiYWxsIgoKCiMgRklMRTogIC9ldGMvcG9zdGdyZXNxbC9j b25mLmQvY3VzdG9tLnRvbWwgICAobW91bnRlZCBieSB0aGUgZGV2ZWxvcGVyKQojID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CnNoYXJlZF9idWZmZXJzID0gIjUxMk1CIgpsb2dfc3RhdGVtZW50ID0gImFs bCIKbG9nX21pbl9kdXJhdGlvbl9zdGF0ZW1lbnQgPSAwCg== --000000000000be8c4206561b3b04 Content-Type: application/octet-stream; name="01-simple-production.toml" Content-Disposition: attachment; filename="01-simple-production.toml" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrc8a7gd0 IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQojIE1vY2t1cCAxOiBhIHNpbXBsZSBzaW5nbGUtbm9kZSBw cm9kdWN0aW9uIFBvc3RncmVTUUwgaW5zdGFsbGF0aW9uLgojCiMgVGhpcyB3aG9sZSBjb25maWd1 cmF0aW9uIGxpdmVzIGluIE9ORSBmaWxlLCBwb3N0Z3Jlc3FsLnRvbWwuIAojIFRoZXJlIGlzIG5v IHBnX2hiYS50b21sIC8gcGdfaG9zdHMudG9tbCAvIHBnX2lkZW50LnRvbWwKCmxpc3Rlbl9hZGRy ZXNzZXMgPSAiKiIKbWF4X2Nvbm5lY3Rpb25zID0gMjAwCgpzaGFyZWRfYnVmZmVycyA9ICI4R0Ii CmVmZmVjdGl2ZV9jYWNoZV9zaXplID0gIjI0R0IiCndvcmtfbWVtID0gIjMyTUIiCm1haW50ZW5h bmNlX3dvcmtfbWVtID0gIjFHQiIKbWF4X3dhbF9zaXplID0gIjRHQiIKCnNzbCA9IHRydWUKc3Ns X2NlcnRfZmlsZSA9ICIvZXRjL3Bvc3RncmVzcWwvdGxzL3NlcnZlci5jcnQiCnNzbF9rZXlfZmls ZSA9ICIvZXRjL3Bvc3RncmVzcWwvdGxzL3NlcnZlci5rZXkiCgpbaGJhXQpbaGJhLl9kZWZhdWx0 c10KIyBkZWZhdWx0IHRvIHNlY3VyZSBUTFMtb25seSBUQ1AKbWV0aG9kID0gInNjcmFtLXNoYS0y NTYiCnRyYW5zcG9ydCA9ICJ0Y3AiCnNzbCA9ICJyZXF1aXJlZCIKCltbaGJhLnJ1bGVzXV0KIyBT dXBlcnVzZXIgbWFpbnRlbmFuY2Ugb3ZlciB0aGUgbG9jYWwgdW5peCBzb2NrZXQuCnRyYW5zcG9y dCA9ICJsb2NhbCIKZGF0YWJhc2VzID0gImFsbCIKdXNlcnMgPSAicG9zdGdyZXMiCm1ldGhvZCA9 ICJwZWVyIgoKW1toYmEucnVsZXNdXQojIFRoZSBhcHBsaWNhdGlvbiwgZnJvbSB0aGUgYXBwIHN1 Ym5ldCwgaW50byBpdHMgb3duIGRhdGFiYXNlCmFkZHJlc3MgPSAiMTAuMjAuMC4wLzI0IgpkYXRh YmFzZXMgPSAiYXBwZGIiCnVzZXJzID0gImFwcCIKCltbaGJhLnJ1bGVzXV0KIyBSZWFkLW9ubHkg cmVwb3J0aW5nIHJvbGUsIHNhbWUgZGF0YWJhc2UKYWRkcmVzcyA9ICIxMC4yMC4wLjAvMjQiCmRh dGFiYXNlcyA9ICJhcHBkYiIKdXNlcnMgPSAicmVwb3J0X3JvIgoKW1toYmEucnVsZXNdXQojIERC QXMgZnJvbSB0aGUgb2ZmaWNlIFZQTiwgYW55IGRhdGFiYXNlCmFkZHJlc3MgPSAiMTAuOTkuMC4w LzI0IgpkYXRhYmFzZXMgPSAiYWxsIgp1c2VycyA9IFsiZGJhIiwgInBvc3RncmVzIl0K --000000000000be8c4206561b3b04 Content-Type: application/octet-stream; name="4-enterprise-per-tenant.toml" Content-Disposition: attachment; filename="4-enterprise-per-tenant.toml" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrc8a7h43 IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQojIE1vY2t1cCAzQjogdGhlIHNhbWUgZW50ZXJwcmlzZSBp bnN0YWxsLCBzcGxpdCBieSB0ZW5hbnQgaW5zdGVhZCBvZiBieSBmaWxlIHR5cGUuCgoKIyBGSUxF OiBwb3N0Z3Jlc3FsLnRvbWwKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpsaXN0ZW5fYWRkcmVzc2Vz ID0gIioiCm1heF9jb25uZWN0aW9ucyA9IDIwMDAKc3VwZXJ1c2VyX3Jlc2VydmVkX2Nvbm5lY3Rp b25zID0gMTAKCnNoYXJlZF9idWZmZXJzID0gIjY0R0IiCmVmZmVjdGl2ZV9jYWNoZV9zaXplID0g IjE5MkdCIgp3b3JrX21lbSA9ICI2NE1CIgptYWludGVuYW5jZV93b3JrX21lbSA9ICI0R0IiCgpz c2wgPSB0cnVlCnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiA9ICJUTFN2MS4zIgpzc2xfc25pID0g dHJ1ZQoKW2luY2x1ZGVdCmZpbGVzID0gWyJ0ZW5hbnQtYWNtZS50b21sIiwgInRlbmFudC1nbG9i ZXgudG9tbCJdCgpbaGJhLl9kZWZhdWx0c10KdHJhbnNwb3J0ID0gInRjcCIKc3NsID0gInJlcXVp cmVkIgoKW2hiYS5hZG1pbl9jZXJ0XQptZXRob2QgPSAiY2VydCIKY2xpZW50Y2VydCA9ICJ2ZXJp ZnktZnVsbCIKbWFwID0gImFkbWlucyIKCltbaGJhLnJ1bGVzXV0KdHJhbnNwb3J0ID0gImxvY2Fs IgpkYXRhYmFzZXMgPSAiYWxsIgp1c2VycyA9ICJwb3N0Z3JlcyIKbWV0aG9kID0gInBlZXIiCgpb W2hiYS5ydWxlc11dCmJhc2VkX29uID0gImFkbWluX2NlcnQiCmFkZHJlc3MgPSAiMTAuOTkuMC4w LzI0IgpkYXRhYmFzZXMgPSAiYWxsIgp1c2VycyA9ICJhbGwiCgpbaG9zdHMuX2RlZmF1bHRzXQpz c2xfY2EgPSAiL2V0Yy9wb3N0Z3Jlc3FsL3Rscy9pbnRlcm5hbC1jYS5jcnQiCgpbaG9zdHMuIioi XQpzc2xfY2VydGlmaWNhdGUgPSAiL2V0Yy9wb3N0Z3Jlc3FsL3Rscy9kZWZhdWx0LmNydCIKc3Ns X2tleSA9ICIvZXRjL3Bvc3RncmVzcWwvdGxzL2RlZmF1bHQua2V5IgoKW2lkZW50LmFkbWluc10K Jy9eQ049KFteLF0rKSxPVT1EQkEsLiokJyA9ICdcMScKIkNOPWJyZWFrLWdsYXNzLE9VPU9wcyxP PUV4YW1wbGUsQz1VUyIgPSAicG9zdGdyZXMiCgoKIyBGSUxFOiB0ZW5hbnQtYWNtZS50b21sCiMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KW2hvc3RzLiJhY21lLmRiLmV4YW1wbGUuY29tIl0Kc3NsX2Nl cnRpZmljYXRlID0gIi9ldGMvcG9zdGdyZXNxbC90bHMvYWNtZS5jcnQiCnNzbF9rZXkgPSAiL2V0 Yy9wb3N0Z3Jlc3FsL3Rscy9hY21lLmtleSIKCltbaGJhLnJ1bGVzXV0KYWRkcmVzcyA9ICIxMC4x MC4wLjAvMTYiCmRhdGFiYXNlcyA9ICJhY21lIgp1c2VycyA9ICJhbGwiCm1ldGhvZCA9ICJvYXV0 aCIKaXNzdWVyID0gImh0dHBzOi8vbG9naW4uYWNtZS5leGFtcGxlLmNvbS9yZWFsbXMvYWNtZSIK c2NvcGUgPSAib3BlbmlkIHByb2ZpbGUgZW1haWwiCm1hcCA9ICJhY21lIgoKW2lkZW50LmFjbWVd CicvXiguKylAYWNtZVwuY29tJCcgPSAnXDEnCiJzdmMtYWNtZS1ldGxAYWNtZS5jb20iID0gImFj bWVfZXRsIgoKCiMgRklMRTogdGVuYW50LWdsb2JleC50b21sCiMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KW2hvc3RzLiJnbG9iZXguZGIuZXhhbXBsZS5jb20iXQpzc2xfY2VydGlmaWNhdGUgPSAiL2V0 Yy9wb3N0Z3Jlc3FsL3Rscy9nbG9iZXguY3J0Igpzc2xfa2V5ID0gIi9ldGMvcG9zdGdyZXNxbC90 bHMvZ2xvYmV4LmtleSIKcGFzc3BocmFzZV9jb21tYW5kID0gInBhc3Mgc2hvdyBwZy9nbG9iZXgt a2V5IgoKW2hiYS5nbG9iZXhfbGRhcF0KYWRkcmVzcyA9ICIxMC4yMC4wLjAvMTYiCm1ldGhvZCA9 ICJsZGFwIgpsZGFwdXJsID0gImxkYXBzOi8vbGRhcC5nbG9iZXguZXhhbXBsZS5jb20vZGM9Z2xv YmV4LGRjPWNvbT91aWQ/c3ViIgoKW1toYmEucnVsZXNdXQpiYXNlZF9vbiA9ICJnbG9iZXhfbGRh cCIKZGF0YWJhc2VzID0gImdsb2JleCIKdXNlcnMgPSAiYWxsIgoKW1toYmEucnVsZXNdXQpiYXNl ZF9vbiA9ICJnbG9iZXhfbGRhcCIKZGF0YWJhc2VzID0gImdsb2JleF9zZWNvbmQiCnVzZXJzID0g ImFsbCIK --000000000000be8c4206561b3b04 Content-Type: application/octet-stream; name="03-enterprise-multitenant.toml" Content-Disposition: attachment; filename="03-enterprise-multitenant.toml" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrc8a7gy2 IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQojIE1vY2t1cCAzIG9mIDM6IGEgbGFyZ2UgbXVsdGktdGVu YW50IGVudGVycHJpc2UgaW5zdGFsbGF0aW9uLgoKCiMgRklMRTogcG9zdGdyZXNxbC50b21sCiMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KbGlzdGVuX2FkZHJlc3NlcyA9ICIqIgptYXhfY29ubmVjdGlv bnMgPSAyMDAwCnN1cGVydXNlcl9yZXNlcnZlZF9jb25uZWN0aW9ucyA9IDEwCgpzaGFyZWRfYnVm ZmVycyA9ICI2NEdCIgplZmZlY3RpdmVfY2FjaGVfc2l6ZSA9ICIxOTJHQiIKd29ya19tZW0gPSAi NjRNQiIKbWFpbnRlbmFuY2Vfd29ya19tZW0gPSAiNEdCIgoKc3NsID0gdHJ1ZQpzc2xfbWluX3By b3RvY29sX3ZlcnNpb24gPSAiVExTdjEuMyIKc3NsX3NuaSA9IHRydWUKCltpbmNsdWRlXQpmaWxl cyA9IFsicGdfaG9zdHMudG9tbCIsICJwZ19oYmEudG9tbCIsICJwZ19pZGVudC50b21sIl0KCgoj IEZJTEU6IHBnX2hvc3RzLnRvbWwKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpbaG9zdHMuX2RlZmF1 bHRzXQpzc2xfY2EgPSAiL2V0Yy9wb3N0Z3Jlc3FsL3Rscy9pbnRlcm5hbC1jYS5jcnQiCgpbaG9z dHMuImFjbWUuZGIuZXhhbXBsZS5jb20iXQpzc2xfY2VydGlmaWNhdGUgPSAiL2V0Yy9wb3N0Z3Jl c3FsL3Rscy9hY21lLmNydCIKc3NsX2tleSA9ICIvZXRjL3Bvc3RncmVzcWwvdGxzL2FjbWUua2V5 IgoKW2hvc3RzLiJnbG9iZXguZGIuZXhhbXBsZS5jb20iXQpzc2xfY2VydGlmaWNhdGUgPSAiL2V0 Yy9wb3N0Z3Jlc3FsL3Rscy9nbG9iZXguY3J0Igpzc2xfa2V5ID0gIi9ldGMvcG9zdGdyZXNxbC90 bHMvZ2xvYmV4LmtleSIKcGFzc3BocmFzZV9jb21tYW5kID0gInBhc3Mgc2hvdyBwZy9nbG9iZXgt a2V5IgoKW2hvc3RzLiIqIl0Kc3NsX2NlcnRpZmljYXRlID0gIi9ldGMvcG9zdGdyZXNxbC90bHMv ZGVmYXVsdC5jcnQiCnNzbF9rZXkgPSAiL2V0Yy9wb3N0Z3Jlc3FsL3Rscy9kZWZhdWx0LmtleSIK CgojIEZJTEU6IHBnX2hiYS50b21sCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KW2hiYS5fZGVmYXVs dHNdCnRyYW5zcG9ydCA9ICJ0Y3AiCnNzbCA9ICJyZXF1aXJlZCIKCltoYmEuYWNtZV9vYXV0aF0K YWRkcmVzcyA9ICIxMC4xMC4wLjAvMTYiCm1ldGhvZCA9ICJvYXV0aCIKaXNzdWVyID0gImh0dHBz Oi8vbG9naW4uYWNtZS5leGFtcGxlLmNvbS9yZWFsbXMvYWNtZSIKc2NvcGUgPSAib3BlbmlkIHBy b2ZpbGUgZW1haWwiCm1hcCA9ICJhY21lX29hdXRoIgoKW2hiYS5nbG9iZXhfbGRhcF0KYWRkcmVz cyA9ICIxMC4yMC4wLjAvMTYiCm1ldGhvZCA9ICJsZGFwIgpsZGFwdXJsID0gImxkYXBzOi8vbGRh cC5nbG9iZXguZXhhbXBsZS5jb20vZGM9Z2xvYmV4LGRjPWNvbT91aWQ/c3ViIgojIC4uLgoKW2hi YS5hZG1pbl9jZXJ0XQptZXRob2QgPSAiY2VydCIKY2xpZW50Y2VydCA9ICJ2ZXJpZnktZnVsbCIK bWFwID0gImFkbWlucyIKCltbaGJhLnJ1bGVzXV0KdHJhbnNwb3J0ID0gImxvY2FsIgpkYXRhYmFz ZXMgPSAiYWxsIgp1c2VycyA9ICJwb3N0Z3JlcyIKbWV0aG9kID0gInBlZXIiCgpbW2hiYS5ydWxl c11dCmJhc2VkX29uID0gImFkbWluX2NlcnQiCmFkZHJlc3MgPSAiMTAuOTkuMC4wLzI0IgpkYXRh YmFzZXMgPSAiYWxsIgp1c2VycyA9ICJhbGwiCgpbW2hiYS5ydWxlc11dCmJhc2VkX29uID0gImFj bWVfb2F1dGgiCmRhdGFiYXNlcyA9ICJhY21lIgp1c2VycyA9ICJhbGwiCgpbW2hiYS5ydWxlc11d CmJhc2VkX29uID0gImdsb2JleF9sZGFwIgpkYXRhYmFzZXMgPSAiZ2xvYmV4Igp1c2VycyA9ICJh bGwiCgpbW2hiYS5ydWxlc11dCmJhc2VkX29uID0gImdsb2JleF9sZGFwIgpkYXRhYmFzZXMgPSAi Z2xvYmV4X3NlY29uZCIKdXNlcnMgPSAiYWxsIgoKCiMgRklMRTogcGdfaWRlbnQudG9tbAojID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CgpbaWRlbnRdCgpbaWRlbnQuYWNtZV9vYXV0aF0KJy9eKC4rKUBh Y21lXC5jb20kJyA9ICdcMScKInN2Yy1hY21lLWV0bEBhY21lLmNvbSIgPSAiYWNtZV9ldGwiCgpb aWRlbnQuYWRtaW5zXQonL15DTj0oW14sXSspLE9VPURCQSwuKiQnID0gJ1wxJwoiQ049YnJlYWst Z2xhc3MsT1U9T3BzLE89RXhhbXBsZSxDPVVTIiA9ICJwb3N0Z3JlcyIK --000000000000be8c4206561b3b04--