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.94.2) (envelope-from ) id 1v31Kv-00A8JB-3O for pgsql-hackers@arkaria.postgresql.org; Mon, 29 Sep 2025 00:01:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v31Kt-00FwQ0-34 for pgsql-hackers@arkaria.postgresql.org; Mon, 29 Sep 2025 00:01:47 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v31Ks-00FwPs-IC for pgsql-hackers@lists.postgresql.org; Mon, 29 Sep 2025 00:01:47 +0000 Received: from mail-vs1-xe2b.google.com ([2607:f8b0:4864:20::e2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v31Kq-000PoA-0J for pgsql-hackers@postgresql.org; Mon, 29 Sep 2025 00:01:46 +0000 Received: by mail-vs1-xe2b.google.com with SMTP id ada2fe7eead31-5b99f5d5479so1391178137.0 for ; Sun, 28 Sep 2025 17:01:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759104104; x=1759708904; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=7zsRiHxoRbiMAsVdTS3q+phneSYPhH/joiC7cZUxRwA=; b=BMTEM/TmZzTScklZ1VeKJAXIYfyrE2PE7qUmk2+kScLUQg+X/AgYMp43TzVCD1VPOy zJYa0kIlSsDKTOcl+uicDTNfi2zQRSfS7usZ4IR0YFqLRAGyj6fDMtX8hjc8YdfPeXQy iiy9V5UVa8dcAjUWe/KD6guE0JRiY7OOh8mCM+dAZ75a05cj+/rXzHUdwyI9z4bH/YTy HVEoIVzIDHdxJGzioQHmTjPv1i8NdTy7iQWoqAxPRphmnUsSX0eJHk7mjy7V2DE4SBR4 HxfFTMoxLYtaOvCt90vU6/E2OlP/m28BIOKhdGz/2XP/CY8ph6JgzuTtiBdI3gH0yRMu 346w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759104104; x=1759708904; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=7zsRiHxoRbiMAsVdTS3q+phneSYPhH/joiC7cZUxRwA=; b=KwN2Pc64S8tHUKvYaIANWJr1mk78PDvDiifDDSJtHDbT2L7ua3FypOlB+j+M7p8fDb dZCZM76lR8Fr7DUESdd8JHsNB2jiMOVNhLBvW5Qzz6Z5tofooykvaQ75HkrW8/3lyEbV VIFxz0E3HYcS+nYBdOoMBVmvmV75EkrGrXUkPMaEnMZuiroGWG1ztPf3EanijtyHLElG 17uqATs1bu9E1Rc1xI6+HJcuPkvdGCBRufdBTmmnOiQXoqbVD8Ypj0y3wu3gejwQP7/P +9yADPB4mGxdYc9oXZeeQvDCKXMTg+sOgyO4OXPXGnDv4AHXLJ01gZAliFECXhW2fh+L 1qlg== X-Gm-Message-State: AOJu0YxvUKTNXJHWo7ncODIpcAP0JH+gueF5gh5Guk7WlMzMEn5pXdU5 66Q2BgRJURwzMSaCv3YFS9xv0a0Qhsye2/gWKlZSWvwvHvqnzWiYYsoTDgAATte3r/B1wrE+SHZ 4wggICFRPlooij4GBqSkk0Bvi776kJAHprpGeJkI= X-Gm-Gg: ASbGncsij+3kbbr+12Ngs6+XLNLkAQ+DT/8jQ9J1U7WMP3ewGrGT7sPT+oZLMVYRXRj VMs+kgAdBjfqa0rMSAQ+RhG4amb56BUyrHW0UsyEa8EZi1FioxcxEoGAPOzF2exqueudmB2WdbU UnmQVD4/H4UUi3xWClz+8+RReGJnIVz5q/kybbWM36Uxd9eGXs6PBDTXrjw7SqoxQmodUnAq7wd vlSwpLT+l1QBx3SAE3nEKoslQ+bmDKWDqYs/TfEatrxuc5i911/XiHmXQGsyCa/+++UibmH0Sel v2VqByqVGN8ZJ2GJInbpSANTyUX63xDUMdWI2Bs= X-Google-Smtp-Source: AGHT+IH4wwR7ouPzYyO1GXlTlygzIwU9NH28RFcqA6wi3xpeUPk71E2TAA41TKS56PcJYuhNtv/ZR/0XM5FSaT0Th60= X-Received: by 2002:a05:6102:3bf2:b0:528:9956:6a3d with SMTP id ada2fe7eead31-5baeba2ebacmr2028135137.12.1759104103885; Sun, 28 Sep 2025 17:01:43 -0700 (PDT) MIME-Version: 1.0 From: jian he Date: Mon, 29 Sep 2025 08:00:00 +0800 X-Gm-Features: AS18NWCE2VyJveTiBnDN3mvB8usKYmDWbiBQ9vfowMxZaOZ1l1h69GpTFQfwSds Message-ID: Subject: create table like including storage parameter To: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000003c4949063fe55798" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003c4949063fe55798 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable hi. attached patch is to make CREATE TABLE LIKE copy source relation storage parameter demo: create table t(a text) with (fillfactor =3D 100, toast.vacuum_truncate=3Dtr= ue); create table t2(like t including storage parameter) with (parallel_workers = =3D 3); Table "public.t2" Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description --------+------+-----------+----------+---------+----------+-------------+-= -------------+------------- a | text | | | | extended | | | Access method: heap Options: parallel_workers=3D3, fillfactor=3D100, toast.vacuum_truncate=3Dtr= ue of course, duplicate storage mention would result error, for example: create table t3(like t including storage parameter) with (fillfactor =3D 10= 0); Since we already support INCLUDING STORAGE, I=E2=80=99m not sure that INCLUDING STORAGE PARAMETER is the right syntax to go with. --0000000000003c4949063fe55798 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-create-table-like-incluing-storage-parameter.patch" Content-Disposition: attachment; filename="v1-0001-create-table-like-incluing-storage-parameter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3m0u5v0 RnJvbSBhNDk3YjAzMDk3NzJiN2MyMDJkNTRiNjVmOWM5NmI2NTVjYTQwMTc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgMjggU2VwIDIwMjUgMTk6MjA6MDAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx IDEvMV0gY3JlYXRlIHRhYmxlIGxpa2UgaW5jbHVpbmcgc3RvcmFnZSBwYXJhbWV0ZXIKCmRlbW86 CmNyZWF0ZSB0YWJsZSB0KGEgdGV4dCkgd2l0aCAoZmlsbGZhY3RvciA9IDEwMCwgdG9hc3QudmFj dXVtX3RydW5jYXRlPXRydWUpOwpjcmVhdGUgdGFibGUgdDIobGlrZSB0IGluY2x1ZGluZyBzdG9y YWdlIHBhcmFtZXRlcik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUYWJsZSAicHVibGljLnQyIgogQ29sdW1uIHwgVHlwZSB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwgQ29tcHJlc3Npb24gfCBTdGF0cyB0YXJnZXQgfCBEZXNj cmlwdGlvbgotLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KIGEg ICAgICB8IHRleHQgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBleHRlbmRlZCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwKQWNjZXNzIG1ldGhvZDogaGVhcApPcHRpb25z OiBmaWxsZmFjdG9yPTEwMCwgdG9hc3QudmFjdXVtX3RydW5jYXRlPXRydWUKCmRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbCAgICAgICAgICAgIHwgMTkgKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3Jl bG9wdGlvbnMuYyAgICAgICAgfCA0OSArKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMgICAgICAgICAgICB8IDYzICsrKysrKysrKysrKysrKysrKysKIHNyYy9p bmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmggICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxICsKIC4uLi9yZWdyZXNz L2V4cGVjdGVkL2NyZWF0ZV90YWJsZV9saWtlLm91dCAgICB8IDM5ICsrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsICAgIHwgMjggKysrKysrKysr CiA4IGZpbGVzIGNoYW5nZWQsIDIwMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggZGMwMDBlOTEzYzEuLmEzODljZTU5N2E5IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3M9InBh cmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8 cmVwbGFjZWFibGUgY2wKIAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmxpa2Vfb3B0aW9uPC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKLXsgSU5DTFVESU5H IHwgRVhDTFVESU5HIH0geyBDT01NRU5UUyB8IENPTVBSRVNTSU9OIHwgQ09OU1RSQUlOVFMgfCBE RUZBVUxUUyB8IEdFTkVSQVRFRCB8IElERU5USVRZIHwgSU5ERVhFUyB8IFNUQVRJU1RJQ1MgfCBT VE9SQUdFIHwgQUxMIH0KK3sgSU5DTFVESU5HIHwgRVhDTFVESU5HIH0geyBDT01NRU5UUyB8IENP TVBSRVNTSU9OIHwgQ09OU1RSQUlOVFMgfCBERUZBVUxUUyB8IEdFTkVSQVRFRCB8IElERU5USVRZ IHwgSU5ERVhFUyB8IFNUQVRJU1RJQ1MgfCBTVE9SQUdFIHwgU1RPUkFHRSBQQVJBTUVURVIgfCBB TEwgfQogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0 aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIApAQCAtNzc2LDYgKzc3 NiwyMyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVt ZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0 ZXRhYmxlLXBhcm1zLWxpa2Utb3B0LXN0b3JhZ2UtcGFyYW10ZXIiPgorICAgICAgICA8dGVybT48 bGl0ZXJhbD5JTkNMVURJTkcgU1RPUkFHRSBQQVJBTUVURVI8L2xpdGVyYWw+PC90ZXJtPgorICAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8bGl0ZXJhbD5TVE9S QUdFIFBBUkFNRVRFUjwvbGl0ZXJhbD4gc2V0dGluZ3MgZm9yIHRoZSBjb3BpZWQgdGFibGUgd2ls bCBiZSBjb3BpZWQuCisgICAgICAgICAgRm9yIHRhYmxlIHN0b3JhZ2UgcGFyYW1ldGVycywgc2Vl IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZS1zdG9yYWdlLXBhcmFtZXRlcnMiLz4gYmVs b3cgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBh cmE+CisgICAgICAgICAgRG8gbm90IGNvbmZ1c2UgdGhpcyB3aXRoIDxsaXRlcmFsPklOQ0xVRElO RyBTVE9SQUdFPC9saXRlcmFsPi4KKyAgICAgICAgICA8bGl0ZXJhbD5JTkNMVURJTkcgU1RPUkFH RTwvbGl0ZXJhbD4gaXMgZm9yIGNvcHlpbmcgdGFibGUgY29sdW1uIHN0b3JhZ2UgcHJvcGVydHks CisgICAgICAgICAgdGhpcyBpcyBmb3IgY29weWluZyB0YWJsZSBzdG9yYWdlIHBhcmFtZXRlcnMu CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlz dGVudHJ5PgorCiAgICAgICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1z LWxpa2Utb3B0LWFsbCI+CiAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPklOQ0xVRElORyBBTEw8L2xp dGVyYWw+PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v cmVsb3B0aW9ucy5jCmluZGV4IDBhZjNmZWE2OGZhLi43NDVhNzFkNTE5MiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKQEAgLTEzODMsNiArMTM4Myw1NSBAQCB1bnRyYW5z Zm9ybVJlbE9wdGlvbnMoRGF0dW0gb3B0aW9ucykKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgor ICogQ29udmVydCB0aGUgcmVsb3B0aW9ucyBmcm9tIHRleHQtYXJyYXkgZm9ybWF0IGludG8gYSBM aXN0IG9mIERlZkVsZW0uICBUaGlzCisgKiBpcyB0aGUgcmV2ZXJzZSBvcGVyYXRpb24gb2YgdHJh bnNmb3JtUmVsT3B0aW9ucygpLiBJZiBhbnkgb3B0aW9uIGluY2x1ZGVzIGEKKyAqIG5hbWVzcGFj ZSBxdWFsaWZpY2F0aW9uLCBjcmVhdGUgdGhlIERlZkVsZW0gaW4gdGhhdCBuYW1lc3BhY2UuCisg KiBJZiBuYW1lU3BhY2UgaXMgTlVMTCwgdGhpcyBiZWhhdmUgdGhlIHNhbWUgYXMgdW50cmFuc2Zv cm1SZWxPcHRpb25zLgorICovCitMaXN0ICoKK3VudHJhbnNmb3JtUmVsT3B0aW9uc0V4dGVuZGVk KERhdHVtIG9wdGlvbnMsIGNoYXIqIG5hbWVTcGFjZSkKK3sKKwlMaXN0CSAgICpyZXN1bHQgPSBO SUw7CisJQXJyYXlUeXBlICAqYXJyYXk7CisJRGF0dW0JICAgKm9wdGlvbmRhdHVtczsKKwlpbnQJ CQlub3B0aW9uczsKKwlpbnQJCQlpOworCisJLyogTm90aGluZyB0byBkbyBpZiBubyBvcHRpb25z ICovCisJaWYgKCFQb2ludGVySXNWYWxpZChEYXR1bUdldFBvaW50ZXIob3B0aW9ucykpKQorCQly ZXR1cm4gcmVzdWx0OworCisJYXJyYXkgPSBEYXR1bUdldEFycmF5VHlwZVAob3B0aW9ucyk7CisK KwlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKGFycmF5LCBURVhUT0lELCAmb3B0aW9uZGF0dW1z LCBOVUxMLCAmbm9wdGlvbnMpOworCisJZm9yIChpID0gMDsgaSA8IG5vcHRpb25zOyBpKyspCisJ eworCQljaGFyCSAgICpzOworCQljaGFyCSAgICpwOworCQlOb2RlCSAgICp2YWwgPSBOVUxMOwor CisJCXMgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKG9wdGlvbmRhdHVtc1tpXSk7CisJCXAgPSBzdHJj aHIocywgJz0nKTsKKwkJaWYgKHApCisJCXsKKwkJCSpwKysgPSAnXDAnOworCQkJdmFsID0gKE5v ZGUgKikgbWFrZVN0cmluZyhwKTsKKwkJfQorCisJCWlmIChuYW1lU3BhY2UgPT0gTlVMTCkKKwkJ CXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBtYWtlRGVmRWxlbShzLCB2YWwsIC0xKSk7CisJCWVs c2UKKwkJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBtYWtlRGVmRWxlbUV4dGVuZGVkKG5hbWVT cGFjZSwgcywgdmFsLAorCQkJCQkJCQkJCQkJCQkgREVGRUxFTV9VTlNQRUMsCisJCQkJCQkJCQkJ CQkJCSAtMSkpOworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKKwogLyoKICAqIEV4dHJhY3Qg YW5kIHBhcnNlIHJlbG9wdGlvbnMgZnJvbSBhIHBnX2NsYXNzIHR1cGxlLgogICoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CmluZGV4IDlmZDQ4YWNiMWY4Li5iYWE5MTA4YWM0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC00MjE2LDYg KzQyMTYsNyBAQCBUYWJsZUxpa2VPcHRpb246CiAJCQkJfCBJTkRFWEVTCQkJeyAkJCA9IENSRUFU RV9UQUJMRV9MSUtFX0lOREVYRVM7IH0KIAkJCQl8IFNUQVRJU1RJQ1MJCXsgJCQgPSBDUkVBVEVf VEFCTEVfTElLRV9TVEFUSVNUSUNTOyB9CiAJCQkJfCBTVE9SQUdFCQkJeyAkJCA9IENSRUFURV9U QUJMRV9MSUtFX1NUT1JBR0U7IH0KKwkJCQl8IFNUT1JBR0UgUEFSQU1FVEVSCXsgJCQgPSBDUkVB VEVfVEFCTEVfTElLRV9TVE9SQUdFX1BBUkFNRVRFUjsgfQogCQkJCXwgQUxMCQkJCXsgJCQgPSBD UkVBVEVfVEFCTEVfTElLRV9BTEw7IH0KIAkJOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YwppbmRleCBlOTZiMzhhNTlkNS4uYmQ0MDFjYmE1ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYwpAQCAtODUsNiArODUsNyBAQCB0eXBlZGVmIHN0cnVjdAogCUxpc3QJICAgKmZrY29u c3RyYWludHM7CS8qIEZPUkVJR04gS0VZIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqaXhjb25z dHJhaW50czsJLyogaW5kZXgtY3JlYXRpbmcgY29uc3RyYWludHMgKi8KIAlMaXN0CSAgICpsaWtl Y2xhdXNlczsJLyogTElLRSBjbGF1c2VzIHRoYXQgbmVlZCBwb3N0LXByb2Nlc3NpbmcgKi8KKwlM aXN0CSAgICpvcHRpb25zOwkJLyogb3B0aW9ucyBmcm9tIFdJVEggY2xhdXNlLCB0YWJsZSBBTSBz cGVjaWZpYyBwYXJhbWV0ZXJzICovCiAJTGlzdAkgICAqYmxpc3Q7CQkJLyogImJlZm9yZSBsaXN0 IiBvZiB0aGluZ3MgdG8gZG8gYmVmb3JlCiAJCQkJCQkJCSAqIGNyZWF0aW5nIHRoZSB0YWJsZSAq LwogCUxpc3QJICAgKmFsaXN0OwkJCS8qICJhZnRlciBsaXN0IiBvZiB0aGluZ3MgdG8gZG8gYWZ0 ZXIgY3JlYXRpbmcKQEAgLTI0NSw2ICsyNDYsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0 ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCWN4dC5ma2NvbnN0cmFpbnRz ID0gTklMOwogCWN4dC5peGNvbnN0cmFpbnRzID0gTklMOwogCWN4dC5saWtlY2xhdXNlcyA9IE5J TDsKKwljeHQub3B0aW9ucyA9IHN0bXQtPm9wdGlvbnM7CiAJY3h0LmJsaXN0ID0gTklMOwogCWN4 dC5hbGlzdCA9IE5JTDsKIAljeHQucGtleSA9IE5VTEw7CkBAIC0zNjksNiArMzcxLDcgQEAgdHJh bnNmb3JtQ3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmlu ZykKIAlzdG10LT50YWJsZUVsdHMgPSBjeHQuY29sdW1uczsKIAlzdG10LT5jb25zdHJhaW50cyA9 IGN4dC5ja2NvbnN0cmFpbnRzOwogCXN0bXQtPm5uY29uc3RyYWludHMgPSBjeHQubm5jb25zdHJh aW50czsKKwlzdG10LT5vcHRpb25zID0gY3h0Lm9wdGlvbnM7CiAKIAlyZXN1bHQgPSBsYXBwZW5k KGN4dC5ibGlzdCwgc3RtdCk7CiAJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBjeHQuYWxp c3QpOwpAQCAtMTI2OCw2ICsxMjcxLDY1IEBAIHRyYW5zZm9ybVRhYmxlTGlrZUNsYXVzZShDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBUYWJsZUxpa2VDbGF1c2UgKnRhYmxlX2xpa2VfY2xhCiAJCX0K IAl9CiAKKwkvKiBMaWtld2lzZSwgY29weSBzdG9yYWdlIHBhcmFtdGVyIGlmIHJlcXVlc3RlZCAq LworCWlmICgodGFibGVfbGlrZV9jbGF1c2UtPm9wdGlvbnMgJiBDUkVBVEVfVEFCTEVfTElLRV9T VE9SQUdFX1BBUkFNRVRFUikgJiYKKwkJIWN4dC0+aXNmb3JlaWduKQorCXsKKwkJSGVhcFR1cGxl CXR1cGxlOworCQlEYXR1bQkJcmVsb3B0aW9uczsKKwkJYm9vbAkJaXNudWxsOworCQlPaWQJCQly ZWxpZDsKKwkJTGlzdAkJKm9sZG9wdGlvbnMgPSBOSUw7CisJCUxpc3QJCSpvbGR0b2FzdG9wdGlv bnMgPSBOSUw7CisKKwkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKKwkJdHVw bGUgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CisJ CWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCByZWxpZCk7CisKKwkJcmVsb3B0aW9ucyA9IFN5 c0NhY2hlR2V0QXR0cihSRUxPSUQsIHR1cGxlLAorCQkJCQkJCQkJIEFudW1fcGdfY2xhc3NfcmVs b3B0aW9ucywgJmlzbnVsbCk7CisKKwkJaWYgKCFpc251bGwpCisJCXsKKwkJCW9sZG9wdGlvbnMg PSB1bnRyYW5zZm9ybVJlbE9wdGlvbnMocmVsb3B0aW9ucyk7CisKKwkJCWZvcmVhY2hfbm9kZShE ZWZFbGVtLCBvcHRpb24sIG9sZG9wdGlvbnMpCisJCQkJY3h0LT5vcHRpb25zID0gbGFwcGVuZChj eHQtPm9wdGlvbnMsIG9wdGlvbik7CisJCX0KKworCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwor CisJCS8qIG5vdyBnZXQgdGhlIHNvdXJjZSByZWxhdGlvbiB0b2FzdCByZWxhdGlvbiByZWxvcHRp b25zICovCisJCWlmIChPaWRJc1ZhbGlkKHJlbGF0aW9uLT5yZF9yZWwtPnJlbHRvYXN0cmVsaWQp KQorCQl7CisJCQlSZWxhdGlvbgl0b2FzdHJlbDsKKworCQkJT2lkCQkJdG9hc3RpZCA9IHJlbGF0 aW9uLT5yZF9yZWwtPnJlbHRvYXN0cmVsaWQ7CisKKwkJCXRvYXN0cmVsID0gdGFibGVfb3Blbih0 b2FzdGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQkvKiBGZXRjaCBoZWFwIHR1cGxlICovCisJ CQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0odG9hc3Rp ZCkpOworCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdG9hc3QgcmVsYXRpb24gJXUiLCB0b2FzdGlkKTsKKwor CQkJLyogR2V0IHRoZSB0b2FzdCByZWxvcHRpb25zICovCisJCQlyZWxvcHRpb25zID0gU3lzQ2Fj aGVHZXRBdHRyKFJFTE9JRCwgdHVwbGUsIEFudW1fcGdfY2xhc3NfcmVsb3B0aW9ucywKKwkJCQkJ CQkJCQkgJmlzbnVsbCk7CisJCQlpZiAoIWlzbnVsbCkKKwkJCXsKKwkJCQlvbGR0b2FzdG9wdGlv bnMgPSB1bnRyYW5zZm9ybVJlbE9wdGlvbnNFeHRlbmRlZChyZWxvcHRpb25zLCAidG9hc3QiKTsK KwkJCQlmb3JlYWNoX25vZGUoRGVmRWxlbSwgb3B0aW9uLCBvbGR0b2FzdG9wdGlvbnMpCisJCQkJ CWN4dC0+b3B0aW9ucyA9IGxhcHBlbmQoY3h0LT5vcHRpb25zLCBvcHRpb24pOworCQkJfQorCisJ CQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCisJCQl0YWJsZV9jbG9zZSh0b2FzdHJlbCwgTm9M b2NrKTsKKwkJfQorCX0KKwogCS8qCiAJICogUmVwcm9kdWNlIG5vdC1udWxsIGNvbnN0cmFpbnRz LCBpZiBhbnksIGJ5IGNvcHlpbmcgdGhlbS4gIFdlIGRvIHRoaXMKIAkgKiByZWdhcmRsZXNzIG9m IG9wdGlvbnMgZ2l2ZW4uCkBAIC0zNTc1LDYgKzM2MzcsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxl U3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCWN4dC5ma2NvbnN0cmFpbnRz ID0gTklMOwogCWN4dC5peGNvbnN0cmFpbnRzID0gTklMOwogCWN4dC5saWtlY2xhdXNlcyA9IE5J TDsKKwljeHQub3B0aW9ucyA9IE5JTDsKIAljeHQuYmxpc3QgPSBOSUw7CiAJY3h0LmFsaXN0ID0g TklMOwogCWN4dC5wa2V5ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9y ZWxvcHRpb25zLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oCmluZGV4IGE2MDRh NDcwMmMzLi44NTg5NjE2ZDA4YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9w dGlvbnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oCkBAIC0yMzYsNiAr MjM2LDcgQEAgZXh0ZXJuIERhdHVtIHRyYW5zZm9ybVJlbE9wdGlvbnMoRGF0dW0gb2xkT3B0aW9u cywgTGlzdCAqZGVmTGlzdCwKIAkJCQkJCQkJIGNvbnN0IGNoYXIgKm5hbWVTcGFjZSwgY29uc3Qg Y2hhciAqY29uc3QgdmFsaWRuc3BzW10sCiAJCQkJCQkJCSBib29sIGFjY2VwdE9pZHNPZmYsIGJv b2wgaXNSZXNldCk7CiBleHRlcm4gTGlzdCAqdW50cmFuc2Zvcm1SZWxPcHRpb25zKERhdHVtIG9w dGlvbnMpOworZXh0ZXJuIExpc3QgKnVudHJhbnNmb3JtUmVsT3B0aW9uc0V4dGVuZGVkKERhdHVt IG9wdGlvbnMsIGNoYXIqIG5hbWVTcGFjZSk7CiBleHRlcm4gYnl0ZWEgKmV4dHJhY3RSZWxPcHRp b25zKEhlYXBUdXBsZSB0dXBsZSwgVHVwbGVEZXNjIHR1cGRlc2MsCiAJCQkJCQkJCWFtb3B0aW9u c19mdW5jdGlvbiBhbW9wdGlvbnMpOwogZXh0ZXJuIHZvaWQgKmJ1aWxkX3JlbG9wdGlvbnMoRGF0 dW0gcmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0ZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA4 NmEyMzZiZDU4Yi4uOTdkYmI3MGRmYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTc5Myw2 ICs3OTMsNyBAQCB0eXBlZGVmIGVudW0gVGFibGVMaWtlT3B0aW9uCiAJQ1JFQVRFX1RBQkxFX0xJ S0VfSU5ERVhFUyA9IDEgPDwgNiwKIAlDUkVBVEVfVEFCTEVfTElLRV9TVEFUSVNUSUNTID0gMSA8 PCA3LAogCUNSRUFURV9UQUJMRV9MSUtFX1NUT1JBR0UgPSAxIDw8IDgsCisJQ1JFQVRFX1RBQkxF X0xJS0VfU1RPUkFHRV9QQVJBTUVURVIgPSAxIDw8IDksCiAJQ1JFQVRFX1RBQkxFX0xJS0VfQUxM ID0gUEdfSU5UMzJfTUFYCiB9IFRhYmxlTGlrZU9wdGlvbjsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV90YWJsZV9saWtlLm91dAppbmRleCBkM2MzNWMxNDg0Ny4uMTkz NzcxZjM0MDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3Rh YmxlX2xpa2Uub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3RhYmxl X2xpa2Uub3V0CkBAIC02OTksMyArNjk5LDQyIEBAIERST1AgRk9SRUlHTiBUQUJMRSBjdGxfZm9y ZWlnbl90YWJsZTE7CiBEUk9QIEZPUkVJR04gVEFCTEUgY3RsX2ZvcmVpZ25fdGFibGUyOwogRFJP UCBGT1JFSUdOIERBVEEgV1JBUFBFUiBjdGxfZHVtbXkgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3Ag Y2FzY2FkZXMgdG8gc2VydmVyIGN0bF9zMAorLS1DUkVBVEUgVEFCTEUgTElLRSB3aXRoIFNUT1JB R0UgUEFSQU1FVEVSCitjcmVhdGUgdGFibGUgdChhIHRleHQpIHdpdGggKAorICAgIGZpbGxmYWN0 b3IgPSAxMDAsCisgICAgdG9hc3RfdHVwbGVfdGFyZ2V0ID0gMTI4LAorICAgIHZhY3V1bV9pbmRl eF9jbGVhbnVwID0gYXV0bywKKyAgICB0b2FzdC52YWN1dW1faW5kZXhfY2xlYW51cCA9IGF1dG8s CisgICAgdmFjdXVtX3RydW5jYXRlID0gdHJ1ZSwKKyAgICB0b2FzdC52YWN1dW1fdHJ1bmNhdGUg PSBmYWxzZSwKKyAgICBsb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gPSAxMDAsCisgICAgdG9h c3QubG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gMTAwKTsKK2NyZWF0ZSB0YWJsZSB0MShs aWtlIHQgaW5jbHVkaW5nIHN0b3JhZ2UgcGFyYW1ldGVyKSB3aXRoIChmaWxsZmFjdG9yID0gMTAw KTsgLS1lcnJvcgorRVJST1I6ICBwYXJhbWV0ZXIgImZpbGxmYWN0b3IiIHNwZWNpZmllZCBtb3Jl IHRoYW4gb25jZQorY3JlYXRlIHRhYmxlIHQxKGxpa2UgdCBleGNsdWRpbmcgc3RvcmFnZSBwYXJh bWV0ZXIpIHdpdGggKGZpbGxmYWN0b3IgPSAxMDApOyAtLW9rCitcZCsgdDEKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50MSIKKyBDb2x1bW4gfCBUeXBl IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAg ICAgfCB0ZXh0IHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAg ICAgICAgICAgICAgfCAKK09wdGlvbnM6IGZpbGxmYWN0b3I9MTAwCisKK2NyZWF0ZSB0YWJsZSB0 MihsaWtlIHQgaW5jbHVkaW5nIHN0b3JhZ2UgcGFyYW1ldGVyKSB3aXRoICgKKyAgcGFyYWxsZWxf d29ya2VycyA9IDMsCisgIHRvYXN0LmF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCA9IDEwMSwK KyAgdG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yID0gMC4zKTsKK3NlbGVjdCAg ICBjLnJlbG5hbWUsIGMucmVsb3B0aW9ucywgdGMucmVsb3B0aW9ucyBhcyB0b2FzdF9vcHRpb25z Citmcm9tICAgICAgcGdfY2F0YWxvZy5wZ19jbGFzcyBjCitsZWZ0IGpvaW4gcGdfY2F0YWxvZy5w Z19jbGFzcyB0YyBPTiAoYy5yZWx0b2FzdHJlbGlkID0gdGMub2lkKQord2hlcmUgICAgIGMucmVs bmFtZSBpbiAoJ3QnLCAndDInKQorb3JkZXIgYnkgIGMucmVsbmFtZSBcZ3gKKy1bIFJFQ09SRCAx IF0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityZWxuYW1lICAgICAgIHwg dAorcmVsb3B0aW9ucyAgICB8IHtmaWxsZmFjdG9yPTEwMCx0b2FzdF90dXBsZV90YXJnZXQ9MTI4 LHZhY3V1bV9pbmRleF9jbGVhbnVwPWF1dG8sdmFjdXVtX3RydW5jYXRlPXRydWUsbG9nX2F1dG92 YWN1dW1fbWluX2R1cmF0aW9uPTEwMH0KK3RvYXN0X29wdGlvbnMgfCB7dmFjdXVtX2luZGV4X2Ns ZWFudXA9YXV0byx2YWN1dW1fdHJ1bmNhdGU9ZmFsc2UsbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0 aW9uPTEwMH0KKy1bIFJFQ09SRCAyIF0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCityZWxuYW1lICAgICAgIHwgdDIKK3JlbG9wdGlvbnMgICAgfCB7cGFyYWxsZWxfd29ya2Vy cz0zLGZpbGxmYWN0b3I9MTAwLHRvYXN0X3R1cGxlX3RhcmdldD0xMjgsdmFjdXVtX2luZGV4X2Ns ZWFudXA9YXV0byx2YWN1dW1fdHJ1bmNhdGU9dHJ1ZSxsb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRp b249MTAwfQordG9hc3Rfb3B0aW9ucyB8IHthdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ9MTAx LGF1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3Rvcj0wLjMsdmFjdXVtX2luZGV4X2NsZWFudXA9 YXV0byx2YWN1dW1fdHJ1bmNhdGU9ZmFsc2UsbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uPTEw MH0KKworZHJvcCB0YWJsZSB0LCB0MSwgdDI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jcmVhdGVfdGFibGVfbGlrZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVf dGFibGVfbGlrZS5zcWwKaW5kZXggOTMzODliNTdkYmYuLjQ3ZjY3ZDI0NGUyIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGVfbGlrZS5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsCkBAIC0yODAsMyArMjgwLDMxIEBA IERST1AgVEFCTEUgY3RsX3RhYmxlOwogRFJPUCBGT1JFSUdOIFRBQkxFIGN0bF9mb3JlaWduX3Rh YmxlMTsKIERST1AgRk9SRUlHTiBUQUJMRSBjdGxfZm9yZWlnbl90YWJsZTI7CiBEUk9QIEZPUkVJ R04gREFUQSBXUkFQUEVSIGN0bF9kdW1teSBDQVNDQURFOworCistLUNSRUFURSBUQUJMRSBMSUtF IHdpdGggU1RPUkFHRSBQQVJBTUVURVIKK2NyZWF0ZSB0YWJsZSB0KGEgdGV4dCkgd2l0aCAoCisg ICAgZmlsbGZhY3RvciA9IDEwMCwKKyAgICB0b2FzdF90dXBsZV90YXJnZXQgPSAxMjgsCisgICAg dmFjdXVtX2luZGV4X2NsZWFudXAgPSBhdXRvLAorICAgIHRvYXN0LnZhY3V1bV9pbmRleF9jbGVh bnVwID0gYXV0bywKKyAgICB2YWN1dW1fdHJ1bmNhdGUgPSB0cnVlLAorICAgIHRvYXN0LnZhY3V1 bV90cnVuY2F0ZSA9IGZhbHNlLAorICAgIGxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDEw MCwKKyAgICB0b2FzdC5sb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gPSAxMDApOworCitjcmVh dGUgdGFibGUgdDEobGlrZSB0IGluY2x1ZGluZyBzdG9yYWdlIHBhcmFtZXRlcikgd2l0aCAoZmls bGZhY3RvciA9IDEwMCk7IC0tZXJyb3IKK2NyZWF0ZSB0YWJsZSB0MShsaWtlIHQgZXhjbHVkaW5n IHN0b3JhZ2UgcGFyYW1ldGVyKSB3aXRoIChmaWxsZmFjdG9yID0gMTAwKTsgLS1vaworXGQrIHQx CisKK2NyZWF0ZSB0YWJsZSB0MihsaWtlIHQgaW5jbHVkaW5nIHN0b3JhZ2UgcGFyYW1ldGVyKSB3 aXRoICgKKyAgcGFyYWxsZWxfd29ya2VycyA9IDMsCisgIHRvYXN0LmF1dG92YWN1dW1fdmFjdXVt X3RocmVzaG9sZCA9IDEwMSwKKyAgdG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9y ID0gMC4zKTsKKworc2VsZWN0ICAgIGMucmVsbmFtZSwgYy5yZWxvcHRpb25zLCB0Yy5yZWxvcHRp b25zIGFzIHRvYXN0X29wdGlvbnMKK2Zyb20gICAgICBwZ19jYXRhbG9nLnBnX2NsYXNzIGMKK2xl ZnQgam9pbiBwZ19jYXRhbG9nLnBnX2NsYXNzIHRjIE9OIChjLnJlbHRvYXN0cmVsaWQgPSB0Yy5v aWQpCit3aGVyZSAgICAgYy5yZWxuYW1lIGluICgndCcsICd0MicpCitvcmRlciBieSAgYy5yZWxu YW1lIFxneAorCitkcm9wIHRhYmxlIHQsIHQxLCB0MjsKLS0gCjIuMzQuMQoK --0000000000003c4949063fe55798--