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 1vetZx-001bAL-2W for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Jan 2026 11:25:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vetZv-00Br5v-1O for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Jan 2026 11:25:52 +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.96) (envelope-from ) id 1vetZu-00Br5n-2i for pgsql-hackers@lists.postgresql.org; Sun, 11 Jan 2026 11:25:51 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vetZs-005VuE-1R for pgsql-hackers@lists.postgresql.org; Sun, 11 Jan 2026 11:25:50 +0000 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-4779ce2a624so45975635e9.2 for ; Sun, 11 Jan 2026 03:25:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768130744; x=1768735544; darn=lists.postgresql.org; h=user-agent:mime-version:date:autocrypt:to:from:subject:message-id :from:to:cc:subject:date:message-id:reply-to; bh=JOKG0LOObZcOvowkWuSslndgiHrhc46nVYkC9xmNDuE=; b=K0R3k5I9+Yw4iogw51IDbBmhAAqGD4ST2UwNMkl6zcbTLK2U7FAxWbqluEBLCV0QrZ 5sgHycTaYJYHSyXT6pJMUHWBroHZbrxZDxcPHX+HsFAwSLwRLj1ZFVytS4l+/9YOlMDl Q7cF9/u6jdSPyMYu++US1q4h5XN9SpO+YPF/u4SMl5v8Rjqr8hypRUOjLhPO++fvOeEq 8QbajcHRlz9fOG1X7qX3CfsiKjyM9ky43SDm1AHH+CJ/7u2Xqv5D7WbCLfddZVeMAGQw emsyPMldA4wQxuIxTtYV5qQy0zlmkY5atRhPNfbUuC8DhwBzzCrFpBWoWoPSt24r3hiq EmYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768130744; x=1768735544; h=user-agent:mime-version:date:autocrypt:to:from:subject:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JOKG0LOObZcOvowkWuSslndgiHrhc46nVYkC9xmNDuE=; b=ESu4N1zUoyMRfgqmK4wb0hMbyNjX8B2RcqJhP34HKbpF6j9jylAARPPu9JI5F69fbX Vn1IobquvzSBxbN/0fXNskppGL0dweVOc4DAQ7eHpJlFs8gbhKVLiAXCvtX7Hr7pCL8e H4JP9T41K+ZCxPS3H8KkBvh/zVONQz1wDRrmRSqZKGdDxzAW5jisnt04cZEihlIYc3G7 DNpp1S0nlkBk1vWA2mYecdWleHtzxXmTclXttYVLT6GHV0wqblBmALKYpnHgno93N5ky 59L0v682YNcF//2uQ1WgvGldGXD1UMHq0bsA7VW+sCYB8ZFpcD9D91i04wnr0tsETUqM j/mQ== X-Gm-Message-State: AOJu0Yz/huMkDd7JlwExYH6YP1eUcXpgno4b3f8I2501sg/UFj2YRO4h CNrIEDRREY7yOpcwMt+j6X9FLoA884bHdwjsO3Er56Uew4/tCjC7/PCaicrwlVg= X-Gm-Gg: AY/fxX61IZZ58c/7CMdu/c8Potn7BA3g0wng9P2d2BJI2O7GsHm/b039eLE6Kt9NRnx Dku2Z8cC4rvjvRUDilxDqQ4g/V4+OQe0284UBB1VU7WrSP16ds+dsqpYme5xkWC0EIN8NDfL3Ey L8/LLXuya78V6XFzv2u0GhIrwHWAa1/WvblpswdlFM7e9RDFbXW8Y/39ImrYYNfLd+lLc2LTPU+ r/ACRiBQDDbPLr8Imh5T1eKYoOElBvApBNzPkzzab5N2rxPWHVEQPwWPcmtmWC3/WvNoggFIgrv QGeINv11yV9AsW7Td0dNU5bt4mdxTFi59BexC9hgx0Nlsg0B8b+8gJRLeLgsmnbeIx9uG/Xt6uU +LcaKhlbbqXOW4zH9dy10ryxqu67SAg1CvLVDawq+9MJAISzAMqZLraTkIBZBkQC5uXmBAOZ5Kn j7hkITaBt40mLazNrHAs6hThL31hpnVAKLQx8gqI07ttiXZam/S9s/4ifg5U94xEWTztE7gS8Pe d2jj0NXIjNYkMvOgcDj/bM= X-Google-Smtp-Source: AGHT+IE5HSMy8WQPTJVqybFv+vo2PplcwEPgybjSLQ6spgiq6bJvS3OojxWocTdx6H2iZBvGt7oFUg== X-Received: by 2002:a05:600c:8b82:b0:477:7b9a:bb07 with SMTP id 5b1f17b1804b1-47d84b5405amr177871385e9.35.1768130744111; Sun, 11 Jan 2026 03:25:44 -0800 (PST) Received: from ?IPv6:2a00:6d43:908:5802:70c8:4b66:b529:14a? ([2a00:6d43:908:5802:70c8:4b66:b529:14a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d7f4184cbsm313919845e9.6.2026.01.11.03.25.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Jan 2026 03:25:41 -0800 (PST) Message-ID: <70d20c14d1c14f93e4200c1a9327b97d7c18a782.camel@gmail.com> Subject: Add pg_get_publication_ddl function From: "Jonathan Gonzalez V." To: pgsql-hackers@lists.postgresql.org Autocrypt: addr=jonathan.abdiel@gmail.com; prefer-encrypt=mutual; keydata=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 oQ0KXJ6d0Ud8Vdn/b0A== Content-Type: multipart/mixed; boundary="=-u/osygZXVwLqu3t39w9T" Date: Sun, 11 Jan 2026 12:20:40 +0100 MIME-Version: 1.0 User-Agent: Evolution 3.56.2-4 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-u/osygZXVwLqu3t39w9T Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable Hi all! Following the set of pg_get_{object}_ddl functions described by Andrew Dustan[1] I'm attaching another patch that I created for the PUBLICATION object, I had to left some stuff out and added others based on other patches feedback for the same type of functions: * Pretty print: There's a few patched that implemented the pretty print using spaces or tabs, by default or not, etc. I just decided to keep this out of this patch, the idea is to follow any decision that can be made for all the patches at some point, and mostly probably have a=A0 common set of functions to use in all these functions since there will be a lot of them, and rewriting every time the same and reviewing the same possible code may take some time and I think it's better to have the base set of functions and later work on stuff like pretty print. * Testing: I've added a regress test with the name `publiction_ddl.sql`, those, it's close to the publication object in names on the list of files and not inside a big generic file with many SQL for different objects. Those, we can keep a list of file in a fixed section inside the file `parallel_schedule`. The patch add the function, tests and documentation, but on the documentation side I don't know if it should go anywhere else or if the current location it's ok, I haven't found any decision on the that specific subject. Related to the required privileges, to CREATE or ALTER a PUBLICATION you require a specific set of privileges, but there's no defined privilege to "view" a publication, being really strict, this function could leak information like columns and tables that exist inside the database without even have permissions to see those tables, the same will be for sequences in the future. This took me to the question, does a kind of "view" privilege exists for these objects? Because you can have access to the database or even some tables but not all of them at the same time, and this could lead to a leak of data. I'm really new on PostgreSQL development, but I couldn't find the "view" privilege that will allow to read a PUBLICATION and check it, but in my opinion not being allowed to create a publication doesn't mean that you cannot see the content of it, am I missing a privilege here or if you can't create you shouldn't be able to "view" a publication?=20 Related to the default values, there's a couple of things that I think it should be there just because, either are always defined or to make clear the value is there since it will affect the object: * publish: this field contains a list of permissions [2] that are a list of variables inside a struct with values always being set * publish_generated_columns: the default is well defined and not adding the default to the statement will make sense, but since the others two will be there, for useful and educational purposes, this makes sense to me. * publish_via_partition_root: this boolean is always set, so adding it make sense since it will make explicit to someone debugging a publication how this will behave on a TRUNCATE situation. Thank you in advance for the reviews and all the time on this! [1] https://www.postgresql.org/message-id/flat/945db7c5-be75-45bf-b55b-cb1e56f2= e3e9%40dunslane.net [2] https://www.postgresql.org/docs/18/sql-createpublication.html#SQL-CREATEPUB= LICATION-PARAMS-WITH --=20 Jonathan Gonzalez V. EnterpriseDB --=-u/osygZXVwLqu3t39w9T Content-Disposition: attachment; filename="v1-0001-Introduce-a-new-function-pg_get_publication_ddl.patch" Content-Type: text/x-patch; name="v1-0001-Introduce-a-new-function-pg_get_publication_ddl.patch"; charset="ISO-8859-1" Content-Transfer-Encoding: base64 RnJvbSBiNzc0MWQ1ZjAyY2VlNWJlZjIxMGY2OTc1Yzg1MGI3MDEyM2Y3NWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSm9uYXRoYW4gR29uemFsZXogVi4iIDxqb25hdGhhbi5hYmRp ZWxAZ21haWwuY29tPgpEYXRlOiBTdW4sIDUgT2N0IDIwMjUgMTg6MTE6NTYgKzAyMDAKU3ViamVj dDogW1BBVENIIHYxIDEvMV0gSW50cm9kdWNlIGEgbmV3IGZ1bmN0aW9uIHBnX2dldF9wdWJsaWNh dGlvbl9kZGwoKSB0aGF0CiByZXR1cm5zIHRoZSBDUkVBVEUgZGRsIHN0YXRlbWVudCBmb3IgYSBn aXZpbmcgUFVCTElDQVRJT04uCgpUaGUgZnVuY3Rpb25zIGFjY2VwdHMgYSBwdWJsaWNhdGlvbiBu YW1lIG9yIE9JRCBpbmRpc3RpbmN0aXZlbHksCnRodXNlLCBwcm92aWRlcyBhbiBlYXN5IHdheSB0 byBjYWxsIHRoZSBmdW5jdGlvbiBhcyBhIHVzZXIgb3IgZnJvbQppbnNpZGUgdGhlIFBvc3RncmVz IGNvZGUgb3IgYW55IFNRTCBzdGF0ZW1lbnQuCgpDb21wcmhlbnNpdmUgcmVncmVzc2lvbiB0ZXN0 cyBhcmUgaW5jbHVkZWQgY292ZXJpbmcgdmFyaW91cwpwb3NzaWJsZSBzaXR1YXRpb25zIGZvciBh IGdpdmVuIHB1YmxpY2F0aW9uLgoKU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gR29uemFsZXogVi4g PGpvbmF0aGFuLmFiZGllbEBnbWFpbC5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1p bmZvLnNnbWwgICAgICAgICAgICAgIHwgIDQ1ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyAgICAgICAgICAgICB8IDI0NyArKysrKysrKysrKysrKysrKysKIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uX2RkbC5vdXQgfCAyMTEgKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDQgKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb25fZGRsLnNxbCAgICAgIHwgMTIxICsrKysr KysrKwogNiBmaWxlcyBjaGFuZ2VkLCA2MzYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb25fZGRsLm91dAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uX2RkbC5zcWwKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbCBiL2RvYy9zcmMvc2dt bC9mdW5jL2Z1bmMtaW5mby5zZ21sCmluZGV4IDE3NWYxODMxNWNkLi42MDA1MzRmZjExZiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKQEAgLTM4MzAsNCArMzgzMCw0OSBAQCBhY2wgICAgICB8 IHtwb3N0Z3Jlcz1hcndkRHh0bS9wb3N0Z3Jlcyxmb289ci9wb3N0Z3Jlc30KIAogICA8L3NlY3Qy PgogCisgIDxzZWN0MiBpZD0iZnVuY3Rpb25zLWdldC1vYmplY3QtZGRsIj4KKyAgIDx0aXRsZT5H ZXQgT2JqZWN0IERETCBGdW5jdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgZnVu Y3Rpb25zIHNob3duIGluIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0LWRkbC10 YWJsZSIvPgorICAgIHByaW50IHRoZSBEREwgc3RhdGVtZW50cyBmb3IgdmFyaW91cyBkYXRhYmFz ZSBvYmplY3RzLgorICAgIChUaGlzIGlzIGEgZGVjb21waWxlZCByZWNvbnN0cnVjdGlvbiwgbm90 IHRoZSBvcmlnaW5hbCB0ZXh0CisgICAgb2YgdGhlIGNvbW1hbmQuKQorICAgPC9wYXJhPgorCisg ICA8dGFibGUgaWQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0LWRkbC10YWJsZSI+CisgICAgPHRpdGxl PkdldCBPYmplY3QgRERMIEZ1bmN0aW9uczwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIxIj4K KyAgICAgPHRoZWFkPgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICBGdW5jdGlvbgor ICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRGVzY3JpcHRpb24KKyAgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICA8L3RoZWFkPgorCisgICAgIDx0 Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAg ICAgIDxwcmltYXJ5PnBnX2dldF9wdWJsaWNhdGlvbl9kZGw8L3ByaW1hcnk+CisgICAgICAgIDwv aW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+cGdfZ2V0X3B1YmxpY2F0aW9uX2RkbDwvZnVu Y3Rpb24+ICggPHBhcmFtZXRlcj5wdWJsaWNhdGlvbjwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0PC90 eXBlPiBvciA8dHlwZT5vaWQ8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPnRleHQ8L3Jl dHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmVjcmVh dGUgdGhlIENSRUFURSBzdGF0ZW1lbnQgZm9yIGEgZ2l2aW5nIFBVQkxJQ0FUSU9OLgorICAgICAg ICBUaGUgcmVzdWx0IGlzIGEgY29tcGxldGUgPGNvbW1hbmQ+Q1JFQVRFIFBVQkxJQ0FUSU9OPC9j b21tYW5kPiBzdGF0ZW1lbnQuCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4K KyAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKyAgIDwvdGFibGU+CisKKyAgPC9zZWN0Mj4K KworCiAgIDwvc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggMDMzYjYyNWYz ZmMuLmI0ZTA2ZDNmODgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zMCwxMCAr MzAsMTIgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX2RlcGVuZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFuZ3VhZ2UuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZV9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19v cGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2Mu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgpAQCAtNTQ2LDYgKzU0OCw3IEBAIHN0YXRp YyB2b2lkIGdldF9qc29uX3RhYmxlX25lc3RlZF9jb2x1bW5zKFRhYmxlRnVuYyAqdGYsIEpzb25U YWJsZVBsYW4gKnBsYW4sCiAJCQkJCQkJCQkJICBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJ CQkJCQkJCQkJICBib29sIHNob3dpbXBsaWNpdCwKIAkJCQkJCQkJCQkgIGJvb2wgbmVlZGNvbW1h KTsKK3N0YXRpYyBEYXR1bSBwZ19kb19wdWJsaWNhdGlvbl9kZGwoUHVibGljYXRpb24gKnB1Yik7 CiAKICNkZWZpbmUgb25seV9tYXJrZXIocnRlKSAgKChydGUpLT5pbmggPyAiIiA6ICJPTkxZICIp CiAKQEAgLTEzNzQzLDMgKzEzNzQ2LDI0NyBAQCBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhM aXN0ICpib3VuZF9kYXR1bXMpCiAKIAlyZXR1cm4gYnVmLmRhdGE7CiB9CisKKy8qCisgKiBwZ19k b19wdWJsaWNhdGlvbl9kZGwKKyAqICAgQ29tbW9uIGNvZGUgdG8gZ2V0IHRoZSBEREwgZnJvIGEg UFVCTElDQVRJT04KKyAqICAgYnkgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCBhbmQgcGdfZ2V0X3B1 YmxpY2F0aW9uX2RkbF9uYW1lCisgKi8KK0RhdHVtCitwZ19kb19wdWJsaWNhdGlvbl9kZGwoUHVi bGljYXRpb24gKnB1YikKK3sKKwlTdHJpbmdJbmZvCWJ1ZjsKKwlMaXN0CSAgICpwdWJsaWNhdGlv bnM7CisJTGlzdAkgICAqcHViX3NjaGVtYXM7CisJYm9vbAkJZmlyc3RfcGVybTsKKworCWlmIChw dWIgPT0gTlVMTCkKKwkJcmV0dXJuIChEYXR1bSkgTlVMTDsKKworCXB1YmxpY2F0aW9ucyA9IEdl dFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yi0+b2lkLCBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CisJ cHViX3NjaGVtYXMgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViLT5vaWQpOworCisJYnVmID0g bWFrZVN0cmluZ0luZm8oKTsKKworCS8qCisJICogd2UgYWRkIHRoZSBwdWJsaWNhdGlvbiBuYW1l LCB0aGlzIGlzbid0IGNvdmVyZWQgYnkgdGhlIHNjaGVtYSwgeWV0PworCSAqLworCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAiQ1JFQVRFIFBVQkxJQ0FUSU9OICVzIiwgcXVvdGVfaWRlbnRpZmllcihw dWItPm5hbWUpKTsKKworCS8qCisJICogaGF2aW5nIGFsbCB0YWJsZXMgb3IgYWxsIHNlcXVlbmNl IG1lYW5zIHRoZXJlJ3Mgbm90IHB1YmxpY2F0aW9ucyBwZXIKKwkgKiB0YWJsZQorCSAqLworCWlm IChwdWItPmFsbHRhYmxlcyB8fCBwdWItPmFsbHNlcXVlbmNlcykKKwl7CisJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAiIEZPUiAiKTsKKworCQlpZiAocHViLT5hbGx0YWJsZXMpCisJCQlhcHBlbmRT dHJpbmdJbmZvKGJ1ZiwgIkFMTCBUQUJMRVMiKTsKKworCQkvKiBUaGUgc2VxdWVuY2UgYXJlIHB1 Ymxpc2hlZCBvbmx5IG9uIHZlcnNpb25zIDE5KyAqLworCQlpZiAocHViLT5hbGxzZXF1ZW5jZXMp CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKKwkJCQkJCQkgIiVzQUxMIFNFUVVFTkNFIiwKKwkJ CQkJCQkgcHViLT5hbGx0YWJsZXMgPyAiLCAiIDogIiAiKTsKKwl9CisJZWxzZSBpZiAocHVibGlj YXRpb25zICE9IE5JTCkKKwl7CisKKwkJTGlzdENlbGwgICAqcHViX2NlbGw7CisJCVJlbGF0aW9u CXJlbDsKKwkJY2hhcgkgICAqc2NoZW1hbmFtZSA9IE5VTEw7CisJCWNoYXIJICAgKnRhYmxlbmFt ZTsKKwkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEZP UiBUQUJMRSAiKTsKKworCQkvKgorCQkgKiBwdWJsaWNhdGlvbiBhbiBoYXZlIHJlbGF0aW9ucyBv ZiB0YWJsZXMsIGluIHNjaGVtYSBvciBjdXJyZW50CisJCSAqIHNjaGVtYQorCQkgKgorCQkgKi8K KwkJZm9yZWFjaChwdWJfY2VsbCwgcHVibGljYXRpb25zKQorCQl7CisJCQlIZWFwVHVwbGUJcHVi dHVwbGUgPSBOVUxMOworCQkJRGF0dW0JCWNvbHVtbnM7CisJCQlEYXR1bQkJY29uZGl0aW9uczsK KwkJCWJvb2wJCWNvbHNfbnVsbHMsCisJCQkJCQljb25kaXRpb25fbnVsbHM7CisKKwkJCS8qIE9w ZW4gdGhlIHRhYmxlIHJlbGF0aW9uIGZvciB0aGlzIHB1YmxpY2F0aW9uICovCisJCQlyZWwgPSBy ZWxhdGlvbl9vcGVuKHB1Yl9jZWxsLT5vaWRfdmFsdWUsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQl0 YWJsZW5hbWUgPSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpOworCisJCQlpZiAoUmVsYXRp b25HZXROYW1lc3BhY2UocmVsKSAhPSBQR19QVUJMSUNfTkFNRVNQQUNFKQorCQkJCXNjaGVtYW5h bWUgPSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSk7CisKKwkJ CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMlcyIsCisJCQkJCQkJIGZpcnN0ID8gIiIgOiAiLCAi LAorCQkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihzY2hlbWFuYW1lLCB0YWJsZW5h bWUpKTsKKwkJCWZpcnN0ID0gZmFsc2U7CisKKwkJCXB1YnR1cGxlID0gU2VhcmNoU3lzQ2FjaGVD b3B5MihQVUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHJl bC0+cmRfaWQpLAorCQkJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHViLT5vaWQpKTsKKwkJ CWNvbHVtbnMgPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHB1YnR1cGxlLAor CQkJCQkJCQkJICBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLAorCQkJCQkJCQkJICAm Y29sc19udWxscyk7CisKKwkJCWNvbmRpdGlvbnMgPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJ T05SRUxNQVAsIHB1YnR1cGxlLAorCQkJCQkJCQkJCSBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9w cnF1YWwsCisJCQkJCQkJCQkJICZjb25kaXRpb25fbnVsbHMpOworCisJCQkvKiBJZiBubyBudWxs LCBtZWFucyB3ZSBoYXZlIGEgbGlzdCBvZiBjb2x1bW5zIHRvIHB1Ymxpc2ggKi8KKwkJCWlmICgh Y29sc19udWxscykKKwkJCXsKKwkJCQlBcnJheVR5cGUgICphcnI7CisJCQkJaW50CQkJbmNvbHVt bnM7CisJCQkJaW50MTYJICAgKmNvbHM7CisJCQkJYm9vbAkJZmNvbCA9IHRydWU7CisKKwkJCQlh cnIgPSBEYXR1bUdldEFycmF5VHlwZVAoY29sdW1ucyk7CisJCQkJbmNvbHVtbnMgPSBBUlJfRElN UyhhcnIpWzBdOworCQkJCWNvbHMgPSAoaW50MTYgKikgQVJSX0RBVEFfUFRSKGFycik7CisKKwkJ CQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkg PCBuY29sdW1uczsgaSsrKQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyVz IiwKKwkJCQkJCQkJCSBmY29sID8gIiIgOiAiLCAiLAorCQkJCQkJCQkJIGdldF9hdHRuYW1lKHJl bC0+cmRfaWQsIGNvbHNbaV0sIHRydWUpKTsKKwkJCQkJZmNvbCA9IGZhbHNlOworCQkJCX0KKwkJ CQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJ ZiB0aGVyZSdzIGEgY29uZGl0aW9uIGdvZXMgYWZ0ZXIgdGhlIGNvbHVtbnMgYnV0IGlmIHRoZXJl J3Mgbm8KKwkJCSAqIGNvbHVtbiB3ZSBjYW4gaGF2ZSBjb25kaXRpb25zIHRvbworCQkJICovCisJ CQlpZiAoIWNvbmRpdGlvbl9udWxscykKKwkJCXsKKwkJCQlOb2RlCSAgICpub2RlOworCQkJCUxp c3QJICAgKmNvbnRleHQ7CisJCQkJY2hhcgkgICAqc3RyOworCisJCQkJbm9kZSA9IHN0cmluZ1Rv Tm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKGNvbmRpdGlvbnMpKTsKKwkJCQljb250ZXh0ID0gZGVw YXJzZV9jb250ZXh0X2ZvcigKKwkJCQkJCQkJCQkJICBnZXRfcmVsYXRpb25fbmFtZShyZWwtPnJk X2lkKSwKKwkJCQkJCQkJCQkJICByZWwtPnJkX2lkKTsKKwkJCQlzdHIgPSBkZXBhcnNlX2V4cHJl c3Npb25fcHJldHR5KAorCQkJCQkJCQkJCQkJbm9kZSwgY29udGV4dCwgZmFsc2UsIGZhbHNlLAor CQkJCQkJCQkJCQkJR0VUX1BSRVRUWV9GTEFHUyhmYWxzZSksIDApOworCisJCQkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIgV0hFUkUgJXMgIiwgc3RyKTsKKwkJCX0KKworCQkJLyogQ2xvc2UgdGhl IHJlbGF0aW9uICovCisJCQlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisJ CX0KKwl9CisKKwkvKiBpZiB3ZSBoYXZlIHNjaGVtYXMsIGZvciBzdXJlIHRoaXMgd2lsbCBnbyBy aWdodCBiZWZvcmUgdGhlIFdJVEggKi8KKwlpZiAocHViX3NjaGVtYXMgIT0gTklMKQorCXsKKwkJ TGlzdENlbGwgICAqc2NoZW1hX2NlbGw7CisJCWJvb2wJCWZpcnN0X3NjaGVtYSA9IHRydWU7CisK KwkJLyoKKwkJICogc2NoZW1hcyBjYW4gYmUgcHJlY2VlZGVkIGJ5IGEgbGlzdCBvZiB0YWJsZXMK KwkJICovCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMgVEFCTEVTIElOIFNDSEVNQSIsCisJ CQkJCQkgcHVibGljYXRpb25zID09IE5JTCA/ICIgRk9SIiA6ICIsIik7CisKKwkJLyogc2NoZW1h cyBjYW4gYmUgb25lIG9yIGEgbGlzdCAqLworCQlmb3JlYWNoKHNjaGVtYV9jZWxsLCBwdWJfc2No ZW1hcykKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyAlcyIsCisJCQkJCQkJIGZp cnN0X3NjaGVtYSA/ICIiIDogIiwiLAorCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGdldF9uYW1l c3BhY2VfbmFtZShzY2hlbWFfY2VsbC0+b2lkX3ZhbHVlKSkpOworCQkJZmlyc3Rfc2NoZW1hID0g ZmFsc2U7CisJCX0KKwl9CisKKwkvKiBhbHdheXMgYWRkIHRoZSBXSVRIIG9wdGlvbnMgKi8KKwlh cHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBXSVRIICgiKTsKKworCS8qIHB1Ymxpc2ggc3RyaW5nICov CisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJwdWJsaXNoPSciKTsKKworCS8qCisJICogd2UgbmVl ZCB0byBrbm93IGlmIHdlJ3JlIHRoZSBzZWNvbmQgcGVybWlzc2lvbiBhZGRlZCB0byBwcmVmaXgg d2l0aCBhCisJICogIiwgIiBzdHJpbmcKKwkgKi8KKwlmaXJzdF9wZXJtID0gdHJ1ZTsKKwlpZiAo cHViLT5wdWJhY3Rpb25zLnB1Ymluc2VydCkKKwl7CisJCS8qCisJCSAqIGJ5IHByZWNlZGVuY2Ug d2Uga25vdyB0aGF0IHRoZSBpbnNlcnQgd2lsbCBhbHdheXMgYmUgZmlyc3QsIG5vIG5lZWQKKwkJ ICogdG8gY2hlY2sgcHJldmlvdXMgdmFsdWVzCisJCSAqLworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwgImluc2VydCIpOworCQlmaXJzdF9wZXJtID0gZmFsc2U7CisJfQorCisJaWYgKHB1Yi0+cHVi YWN0aW9ucy5wdWJ1cGRhdGUpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzdXBkYXRl IiwgZmlyc3RfcGVybSA/ICIiIDogIiwgIik7CisJCWZpcnN0X3Blcm0gPSBmYWxzZTsKKwl9CisJ aWYgKHB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGUpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwgIiVzZGVsZXRlIiwgZmlyc3RfcGVybSA/ICIiIDogIiwgIik7CisJCWZpcnN0X3Blcm0gPSBm YWxzZTsKKwl9CisKKwlpZiAocHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlKQorCXsKKwkJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICIlc3RydW5jYXRlIiwgZmlyc3RfcGVybSA/ICIiIDogIiwgIik7 CisJfQorCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICInLCAiKTsKKworCS8qIHB1Ymxpc2hfZ2Vu ZXJhdGVkX2NvbHVtbnMgc3RyaW5nICovCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJwdWJsaXNo X2dlbmVyYXRlZF9jb2x1bW5zPSclcycsICIsCisJCQkJCSBwdWItPnB1YmdlbmNvbHNfdHlwZSA9 PSBQVUJMSVNIX0dFTkNPTFNfTk9ORSA/ICJub25lIiA6ICJzdG9yZWQiKTsKKworCS8qIHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290IHZhbHVlICovCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdD0nJXMnKSIsCisJCQkJCSBwdWItPnB1YnZpYXJvb3Qg PyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworCS8qIHRoZSBzdGF0ZW1lbnQgc2hvdWxkIGFsd2F5cyBm aW5pc2ggd2l0aCBhIDsgKi8KKwlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICc7Jyk7CisKKwlQ R19SRVRVUk5fVEVYVF9QKHN0cmluZ190b190ZXh0KGJ1Zi0+ZGF0YSkpOworfQorCisvKgorICog cGdfZ2V0X3B1YmxpY2F0aW9uX2RkbF9uYW1lCisgKiAgIEdldCB0aGUgQ1JFQVRFIHN0YXRlbWVu dCBmb3IgUFVCTElDQVRJT04gYnkgbmFtZQorICovCitEYXR1bQorcGdfZ2V0X3B1YmxpY2F0aW9u X2RkbF9uYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJY2hhcgkgICAqcHViX25hbWUgPSB0ZXh0 X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCVB1YmxpY2F0aW9uICpwdWI7CisK KwlwdWIgPSBHZXRQdWJsaWNhdGlvbkJ5TmFtZShwdWJfbmFtZSwgZmFsc2UpOworCisJcmV0dXJu IHBnX2RvX3B1YmxpY2F0aW9uX2RkbChwdWIpOworfQorCisvKgorICogcGdfZ2V0X3B1YmxpY2F0 aW9uX2RkbAorICogICBHZXQgdGhlIENSRUFURSBzdGF0ZW1lbnQgZm9yIFBVQkxJQ0FUSU9OIGJ5 IE9JRAorICovCitEYXR1bQorcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbChQR19GVU5DVElPTl9BUkdT KQoreworCU9pZAkJCXB1Yl9vaWQgPSBQR19HRVRBUkdfT0lEKDApOworCVB1YmxpY2F0aW9uICpw dWI7CisKKwlwdWIgPSBHZXRQdWJsaWNhdGlvbihwdWJfb2lkKTsKKworCXJldHVybiBwZ19kb19w dWJsaWNhdGlvbl9kZGwocHViKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDJhYzY5 YmYyZGY1Li43YmJiMWQyNzUxZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjMzNiw2 ICsxMjMzNiwxNCBAQAogICBwcm9uYW1lID0+ICdwZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZScs IHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVz ID0+ICdyZWdjbGFzcycsCiAgIHByb3NyYyA9PiAncGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUn IH0sCit7IG9pZCA9PiAnNjEyMicsCisgIGRlc2NyID0+ICdyZXR1cm5zIHRoZSBjcmVhdGUgc3Rh dGVtZW50IGZvciBhIHB1YmxpY2F0aW9uJywKKwlwcm9uYW1lID0+ICdwZ19nZXRfcHVibGljYXRp b25fZGRsJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisJcHJvYXJndHlwZXMgPT4gJ29pZCcsIHBy b3NyYyA9PiAncGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCcgfSwKK3sgb2lkID0+ICc2MTIzJywKKyAg ZGVzY3IgPT4gJ3JldHVybnMgdGhlIGNyZWF0ZSBzdGF0ZW1lbnQgZm9yIGEgcHVibGljYXRpb24n LAorCXByb25hbWUgPT4gJ3BnX2dldF9wdWJsaWNhdGlvbl9kZGwnLCBwcm9yZXR0eXBlID0+ICd0 ZXh0JywKKwlwcm9hcmd0eXBlcyA9PiAndGV4dCcsIHByb3NyYyA9PiAncGdfZ2V0X3B1YmxpY2F0 aW9uX2RkbF9uYW1lJyB9LAogCiAjIHJscwogeyBvaWQgPT4gJzMyOTgnLApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbl9kZGwub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbl9kZGwub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi45ZDE2MmMwN2Q1MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb25fZGRsLm91dApAQCAtMCwwICsxLDIxMSBA QAorLS0KKy0tIFRlc3QgZm9yIERETCBzdGF0ZW1lbnQgZnJvbToKKy0tIC0gcGdfZ2V0X3B1Ymxp Y2F0aW9uX2RkbAorLS0KKy0tIHN1cHJlc3Mgd2FybmluZyB0aGF0IGRlcGVuZHMgb24gd2FsX2xl dmVsCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CistLSBlbXB0eSBwdWJsaWNh dGlvbiBpcyBwb3NzaWJsZSBhbmQgYWxsb3dlZAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf ZGRsXzE7CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgndGVzdHB1Yl9kZGxfMScpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf ZGRsXzEgV0lUSCAocHVibGlzaD0naW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnLCBw dWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPSdub25lJywgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3Q9J2ZhbHNlJyk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKChT RUxFQ1Qgb2lkIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1Yl9kZGxf MScpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2RkbF8xIFdJVEggKHB1Ymxpc2g9J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5j YXRlJywgcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucz0nbm9uZScsIHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290PSdmYWxzZScpOworKDEgcm93KQorCistLSBjcmVhdGUgYmFzZSB0YWJsZSB0byB0 ZXN0IGJhc2ljIHRhYmxlIHB1YmxpY2F0aW9uCitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9kZGxfdGJs MSAoZm9vIGludCwgYmFyIGludCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9kZGxfdGJsMiAoZm9v IGludCwgYmFyIGludCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9kZGxfdGJsMyAoZm9vIGludCwg YmFyIGludCwgYmVxdWUgaW50LCBiYXogaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX2RkbF90 Ymw0IChmb28gaW50LCBiYXIgaW50LCBiZXF1ZSBib29sKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2RkbF8yIEZPUiBUQUJMRSB0ZXN0cHViX2RkbF90YmwxLCB0ZXN0cHViX2RkbF90Ymwy LCB0ZXN0cHViX2RkbF90YmwzIFdJVEggKHB1Ymxpc2g9J2RlbGV0ZScsIHB1Ymxpc2hfZ2VuZXJh dGVkX2NvbHVtbnM9J3N0b3JlZCcsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PSd0cnVlJyk7 CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgndGVzdHB1Yl9kZGxfMicpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX2RkbF8yIEZPUiBUQUJMRSB0ZXN0cHViX2RkbF90YmwxLCB0ZXN0cHViX2Rk bF90YmwyLCB0ZXN0cHViX2RkbF90YmwzIFdJVEggKHB1Ymxpc2g9J2RlbGV0ZScsIHB1Ymxpc2hf Z2VuZXJhdGVkX2NvbHVtbnM9J3N0b3JlZCcsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PSd0 cnVlJyk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKChTRUxFQ1Qg b2lkIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1Yl9kZGxfMicpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcHVibGljYXRpb25fZGRsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9kZGxfMiBGT1IgVEFCTEUgdGVzdHB1Yl9kZGxfdGJsMSwgdGVz dHB1Yl9kZGxfdGJsMiwgdGVzdHB1Yl9kZGxfdGJsMyBXSVRIIChwdWJsaXNoPSdkZWxldGUnLCBw dWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPSdzdG9yZWQnLCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdD0ndHJ1ZScpOworKDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF8y IFNFVCAocHVibGlzaCA9ICdkZWxldGUsIHVwZGF0ZScpOworU0VMRUNUIHBnX2dldF9wdWJsaWNh dGlvbl9kZGwoJ3Rlc3RwdWJfZGRsXzInKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZGRsXzIgRk9SIFRBQkxFIHRlc3RwdWJfZGRsX3RibDEsIHRlc3RwdWJfZGRsX3RibDIs IHRlc3RwdWJfZGRsX3RibDMgV0lUSCAocHVibGlzaD0ndXBkYXRlLCBkZWxldGUnLCBwdWJsaXNo X2dlbmVyYXRlZF9jb2x1bW5zPSdzdG9yZWQnLCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdD0n dHJ1ZScpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgoU0VMRUNU IG9pZCBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWU9J3Rlc3RwdWJfZGRsXzInKSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF8yIEZPUiBUQUJMRSB0ZXN0 cHViX2RkbF90YmwxLCB0ZXN0cHViX2RkbF90YmwyLCB0ZXN0cHViX2RkbF90YmwzIFdJVEggKHB1 Ymxpc2g9J3VwZGF0ZSwgZGVsZXRlJywgcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucz0nc3RvcmVk JywgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q9J3RydWUnKTsKKygxIHJvdykKKworLS0gY3Jl YXRlIHB1YmxpY2F0aW9uIGZvciBvbmUgdGFibGUgd2l0aCBvbmUgY29sdW1uIGFuZCBhIGNvbmRp dGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzMgRk9SIFRBQkxFIE9OTFkgdGVz dHB1Yl9kZGxfdGJsMSAoYmFyKSBXSEVSRSAoYmFyID0gMSk7CitTRUxFQ1QgcGdfZ2V0X3B1Ymxp Y2F0aW9uX2RkbCgndGVzdHB1Yl9kZGxfMycpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9kZGxfMyBGT1IgVEFCTEUgdGVzdHB1Yl9kZGxfdGJsMShiYXIpIFdIRVJF IChiYXIgPSAxKSAgV0lUSCAocHVibGlzaD0naW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNh dGUnLCBwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPSdub25lJywgcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3Q9J2ZhbHNlJyk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25f ZGRsKChTRUxFQ1Qgb2lkIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1 Yl9kZGxfMycpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcHVi bGljYXRpb25fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRs XzMgRk9SIFRBQkxFIHRlc3RwdWJfZGRsX3RibDEoYmFyKSBXSEVSRSAoYmFyID0gMSkgIFdJVEgg KHB1Ymxpc2g9J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJywgcHVibGlzaF9nZW5l cmF0ZWRfY29sdW1ucz0nbm9uZScsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PSdmYWxzZScp OworKDEgcm93KQorCistLSBjcmVhdGUgcHVibGljYXRpb24gZm9yIG9uZSB0YWJsZSB3aXRoIHR3 byBjb2x1bW5zIGFuZCBhIGNvbmRpdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRs XzQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl9kZGxfdGJsMyAoYmFyLGJheikgV0hFUkUgKGJhciA9 IGJheik7CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgndGVzdHB1Yl9kZGxfNCcpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9k ZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Rk bF80IEZPUiBUQUJMRSB0ZXN0cHViX2RkbF90YmwzKGJhciwgYmF6KSBXSEVSRSAoYmFyID0gYmF6 KSAgV0lUSCAocHVibGlzaD0naW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnLCBwdWJs aXNoX2dlbmVyYXRlZF9jb2x1bW5zPSdub25lJywgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q9 J2ZhbHNlJyk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKChTRUxF Q1Qgb2lkIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1Yl9kZGxfNCcp KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcHVibGljYXRp b25fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9kZGxfNCBGT1IgVEFCTEUgdGVzdHB1Yl9kZGxfdGJsMyhiYXIsIGJheikgV0hFUkUgKGJhciA9 IGJheikgIFdJVEggKHB1Ymxpc2g9J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJywg cHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucz0nbm9uZScsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290PSdmYWxzZScpOworKDEgcm93KQorCistLSBjcmVhdGUgcHVibGljYXRpb24gZm9yIG9uZSB0 YWJsZSB3aXRoIHR3byBjb2x1bW5zIGFuZCBhIGNvbmRpdGlvbiB3aXRoIGFuIGV4cHJlc2lvbgor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzUgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl9k ZGxfdGJsNCAoYmFyLGJlcXVlKSBXSEVSRSAoYmVxdWUgSVMgVFJVRSk7CitTRUxFQ1QgcGdfZ2V0 X3B1YmxpY2F0aW9uX2RkbCgndGVzdHB1Yl9kZGxfNScpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF81IEZPUiBU QUJMRSB0ZXN0cHViX2RkbF90Ymw0KGJhciwgYmVxdWUpIFdIRVJFIChiZXF1ZSBJUyBUUlVFKSAg V0lUSCAocHVibGlzaD0naW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnLCBwdWJsaXNo X2dlbmVyYXRlZF9jb2x1bW5zPSdub25lJywgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q9J2Zh bHNlJyk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKChTRUxFQ1Qg b2lkIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1Yl9kZGxfNScpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcHVibGljYXRp b25fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9kZGxfNSBGT1IgVEFCTEUgdGVzdHB1Yl9kZGxfdGJsNChiYXIsIGJlcXVlKSBX SEVSRSAoYmVxdWUgSVMgVFJVRSkgIFdJVEggKHB1Ymxpc2g9J2luc2VydCwgdXBkYXRlLCBkZWxl dGUsIHRydW5jYXRlJywgcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucz0nbm9uZScsIHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290PSdmYWxzZScpOworKDEgcm93KQorCistLSBjcmVhdGUgcHVibGlj YXRpb24gZm9yIGFsbCB0YWJsZXMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF82IEZP UiBBTEwgVEFCTEVTOworU0VMRUNUIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwoJ3Rlc3RwdWJfZGRs XzYnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF82IEZPUiBBTEwgVEFCTEVT IFdJVEggKHB1Ymxpc2g9J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJywgcHVibGlz aF9nZW5lcmF0ZWRfY29sdW1ucz0nbm9uZScsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PSdm YWxzZScpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgoU0VMRUNU IG9pZCBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWU9J3Rlc3RwdWJfZGRsXzYnKSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kZGxfNiBGT1IgQUxMIFRBQkxFUyBXSVRI IChwdWJsaXNoPSdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScsIHB1Ymxpc2hfZ2Vu ZXJhdGVkX2NvbHVtbnM9J25vbmUnLCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdD0nZmFsc2Un KTsKKygxIHJvdykKKworLS0gY3JlYXRlIHB1YmxhdGlvbiBmb3IgYWxsIHRhYmxlcyBhbmQgYWxs IHNlcXVlbmNlcworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzcgRk9SIEFMTCBUQUJM RVMsIEFMTCBTRVFVRU5DRVM7CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgndGVzdHB1 Yl9kZGxfNycpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3B1YmxpY2F0aW9uX2Rk bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX2RkbF83IEZPUiBBTEwgVEFCTEVTLCBBTEwgU0VRVUVOQ0UgV0lUSCAocHVi bGlzaD0naW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnLCBwdWJsaXNoX2dlbmVyYXRl ZF9jb2x1bW5zPSdub25lJywgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q9J2ZhbHNlJyk7Ciso MSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKChTRUxFQ1Qgb2lkIEZST00g cGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1Yl9kZGxfNycpKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kZGxfNyBG T1IgQUxMIFRBQkxFUywgQUxMIFNFUVVFTkNFIFdJVEggKHB1Ymxpc2g9J2luc2VydCwgdXBkYXRl LCBkZWxldGUsIHRydW5jYXRlJywgcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucz0nbm9uZScsIHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PSdmYWxzZScpOworKDEgcm93KQorCistLSBjcmVhdGUg c2NoZW1hIGZvciBzY2hlbWEgcHVibGljYXRpb24KK0NSRUFURSBTQ0hFTUEgcHViX3NjaGVtYV90 ZXN0X2RkbDsKK0NSRUFURSBUQUJMRSBwdWJfc2NoZW1hX3Rlc3RfZGRsLnNjaGVtYV90YmwxIChm b28gaW50LCBiYXIgaW50KTsKK0NSRUFURSBUQUJMRSBwdWJfc2NoZW1hX3Rlc3RfZGRsLnNjaGVt YV90YmwyIChmb28gaW50LCBiYXIgaW50KTsKK0NSRUFURSBUQUJMRSBwdWJfc2NoZW1hX3Rlc3Rf ZGRsLnNjaGVtYV90YmwzIChmb28gaW50LCBiYXIgaW50LCBiYXogaW50KTsKKy0tIGNyZWF0ZSBh IHB1YmxpY2F0aW9uIGZvciBhIGxpc3Qgb2YgdGFibGVzCitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9kZGxfOCBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfc2NoZW1hX3Rlc3RfZGRsLCBUQUJM RSBwdWJfc2NoZW1hX3Rlc3RfZGRsLnNjaGVtYV90YmwxLCBwdWJfc2NoZW1hX3Rlc3RfZGRsLnNj aGVtYV90YmwyOworU0VMRUNUIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwoJ3Rlc3RwdWJfZGRsXzgn KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9kZGxfOCBGT1IgVEFCTEUgcHViX3NjaGVtYV90ZXN0X2RkbC5zY2hlbWFfdGJsMSwgcHViX3Nj aGVtYV90ZXN0X2RkbC5zY2hlbWFfdGJsMiwgVEFCTEVTIElOIFNDSEVNQSBwdWJfc2NoZW1hX3Rl c3RfZGRsIFdJVEggKHB1Ymxpc2g9J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJywg cHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucz0nbm9uZScsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290PSdmYWxzZScpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgo U0VMRUNUIG9pZCBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWU9J3Rlc3RwdWJfZGRs XzgnKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfcHVibGljYXRpb25fZGRsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZGRsXzggRk9SIFRBQkxFIHB1Yl9zY2hlbWFfdGVzdF9kZGwuc2NoZW1hX3RibDEsIHB1 Yl9zY2hlbWFfdGVzdF9kZGwuc2NoZW1hX3RibDIsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3NjaGVt YV90ZXN0X2RkbCBXSVRIIChwdWJsaXNoPSdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0 ZScsIHB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM9J25vbmUnLCBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdD0nZmFsc2UnKTsKKygxIHJvdykKKworLS0gY3JlYXRlIHB1YmxpY2F0aW9uIGluIHNj aGVtYSBvbmx5IGZvciB0YWJsZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzkgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3NjaGVtYV90ZXN0X2RkbCwgVEFCTEUgcHViX3NjaGVtYV90 ZXN0X2RkbC5zY2hlbWFfdGJsMTsKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKCd0ZXN0 cHViX2RkbF85Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZGRsXzkgRk9SIFRBQkxFIHB1Yl9zY2hlbWFfdGVzdF9kZGwuc2NoZW1hX3RibDEsIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3NjaGVtYV90ZXN0X2RkbCBXSVRIIChwdWJsaXNoPSdpbnNlcnQsIHVw ZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScsIHB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM9J25vbmUn LCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdD0nZmFsc2UnKTsKKygxIHJvdykKKworU0VMRUNU IHBnX2dldF9wdWJsaWNhdGlvbl9kZGwoKFNFTEVDVCBvaWQgRlJPTSBwZ19wdWJsaWNhdGlvbiBX SEVSRSBwdWJuYW1lPSd0ZXN0cHViX2RkbF85JykpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF85IEZPUiBUQUJMRSBwdWJfc2NoZW1hX3Rlc3RfZGRs LnNjaGVtYV90YmwxLCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl9zY2hlbWFfdGVzdF9kZGwgV0lUSCAo cHVibGlzaD0naW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnLCBwdWJsaXNoX2dlbmVy YXRlZF9jb2x1bW5zPSdub25lJywgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q9J2ZhbHNlJyk7 CisoMSByb3cpCisKKy0tIGNyZWF0ZSBwdWJsaWNhdGlvbiBmb3IgYWxsIHRhYmxlcyBpbiBzY2hl bWEKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF8xMCBGT1IgVEFCTEVTIElOIFNDSEVN QSBwdWJfc2NoZW1hX3Rlc3RfZGRsOworU0VMRUNUIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwoJ3Rl c3RwdWJfZGRsXzEwJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcHVi bGljYXRpb25fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kZGxfMTAgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3NjaGVtYV90ZXN0X2RkbCBXSVRIIChwdWJsaXNoPSdpbnNlcnQs IHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScsIHB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM9J25v bmUnLCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdD0nZmFsc2UnKTsKKygxIHJvdykKKworU0VM RUNUIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwoKFNFTEVDVCBvaWQgRlJPTSBwZ19wdWJsaWNhdGlv biBXSEVSRSBwdWJuYW1lPSd0ZXN0cHViX2RkbF8xMCcpKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2RkbF8xMCBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfc2NoZW1hX3Rlc3RfZGRsIFdJ VEggKHB1Ymxpc2g9J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJywgcHVibGlzaF9n ZW5lcmF0ZWRfY29sdW1ucz0nbm9uZScsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PSdmYWxz ZScpOworKDEgcm93KQorCistLSBhIG5ldyBzY2hlbWEgZm9yIG11bHRpcGxlIHNjaGVtYXMKK0NS RUFURSBTQ0hFTUEgcHViX3NjaGVtYV90ZXN0X2RkbF8yOworQ1JFQVRFIFRBQkxFIHB1Yl9zY2hl bWFfdGVzdF9kZGxfMi5zY2hlbWFfdGJsMSAoZm9vIGludCwgYmFyIGludCk7CistLSBjcmVhdGUg YSBwdWJsaWNhdGlvbiBmb3IgYSBsaXN0IG9mIHNjaGVtYXMKK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2RkbF8xMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfc2NoZW1hX3Rlc3RfZGRsLCBw dWJfc2NoZW1hX3Rlc3RfZGRsXzI7CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgndGVz dHB1Yl9kZGxfMTEnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9wdWJsaWNhdGlvbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kZGxfMTEgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3NjaGVtYV90ZXN0X2RkbCwgcHViX3NjaGVtYV90ZXN0X2RkbF8yIFdJVEggKHB1Ymxp c2g9J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJywgcHVibGlzaF9nZW5lcmF0ZWRf Y29sdW1ucz0nbm9uZScsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PSdmYWxzZScpOworKDEg cm93KQorCitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgoU0VMRUNUIG9pZCBGUk9NIHBn X3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWU9J3Rlc3RwdWJfZGRsXzExJykpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2RkbF8xMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfc2NoZW1hX3Rlc3RfZGRsLCBw dWJfc2NoZW1hX3Rlc3RfZGRsXzIgV0lUSCAocHVibGlzaD0naW5zZXJ0LCB1cGRhdGUsIGRlbGV0 ZSwgdHJ1bmNhdGUnLCBwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPSdub25lJywgcHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3Q9J2ZhbHNlJyk7CisoMSByb3cpCisKKy0tIGNsZWFudXAgcHVibGlj YXRpb25zCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzE7CitEUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZGRsXzI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzM7CitEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzU7 CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzY7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZGRsXzc7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzg7CitEUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZGRsXzk7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzEwOworRFJP UCBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF8xMTsKKy0tIGNsZWFudXAgdGFibGVzCitEUk9QIFRB QkxFIHRlc3RwdWJfZGRsX3RibDE7CitEUk9QIFRBQkxFIHRlc3RwdWJfZGRsX3RibDI7CitEUk9Q IFRBQkxFIHRlc3RwdWJfZGRsX3RibDM7CitEUk9QIFRBQkxFIHRlc3RwdWJfZGRsX3RibDQ7Cist LSBjbGVhbnVwIHRhYmxlcyBpbiBzY2hlbWFzCitEUk9QIFRBQkxFICBwdWJfc2NoZW1hX3Rlc3Rf ZGRsLnNjaGVtYV90YmwxOworRFJPUCBUQUJMRSAgcHViX3NjaGVtYV90ZXN0X2RkbC5zY2hlbWFf dGJsMjsKK0RST1AgVEFCTEUgIHB1Yl9zY2hlbWFfdGVzdF9kZGwuc2NoZW1hX3RibDM7CitEUk9Q IFRBQkxFICBwdWJfc2NoZW1hX3Rlc3RfZGRsXzIuc2NoZW1hX3RibDE7CistLSBjbGVhbnVwIHNj aGVtYXMKK0RST1AgU0NIRU1BIHB1Yl9zY2hlbWFfdGVzdF9kZGw7CitEUk9QIFNDSEVNQSBwdWJf c2NoZW1hX3Rlc3RfZGRsXzI7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMDIxZDU3ZjY2YmIuLmNlNTM1MTc1OWI0IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEzNyw2ICsxMzcsMTAgQEAgdGVzdDogZXZlbnRf dHJpZ2dlcl9sb2dpbgogIyB0aGlzIHRlc3QgYWxzbyB1c2VzIGV2ZW50IHRyaWdnZXJzLCBzbyBs aWtld2lzZSBydW4gaXQgYnkgaXRzZWxmCiB0ZXN0OiBmYXN0X2RlZmF1bHQKIAorIyBydW4gdGhl IHJldGFpbCBEREwgdGVzdHMgYXQgdGhlIGVuZCBtYWtlIHNlbnNlIHRvIG5vdCBpbnRlcnJ1cHQg d2l0aCBvdGhlcgorIyB0ZXN0cyBpbiBjYXNlIHRoZSBvYmplY3QgbmFtZXMgYXJlIHRoZSBzYW1l IHRvIG90aGVyIG9iamVjdHMgcHJldmlvdXNseSB1c2VkLgordGVzdDogcHVibGljYXRpb25fZGRs CisKICMgcnVuIHRhYmxlc3BhY2UgdGVzdCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJvcHMgdGhl IHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0cyBtYXkg dXNlLgogdGVzdDogdGFibGVzcGFjZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb25fZGRsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uX2Rk bC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU5M2JjZjcwNjky Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb25fZGRs LnNxbApAQCAtMCwwICsxLDEyMSBAQAorLS0KKy0tIFRlc3QgZm9yIERETCBzdGF0ZW1lbnQgZnJv bToKKy0tIC0gcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbAorLS0KKworLS0gc3VwcmVzcyB3YXJuaW5n IHRoYXQgZGVwZW5kcyBvbiB3YWxfbGV2ZWwKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VS Uk9SJzsKKy0tIGVtcHR5IHB1YmxpY2F0aW9uIGlzIHBvc3NpYmxlIGFuZCBhbGxvd2VkCitDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kZGxfMTsKKworU0VMRUNUIHBnX2dldF9wdWJsaWNhdGlv bl9kZGwoJ3Rlc3RwdWJfZGRsXzEnKTsKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKChT RUxFQ1Qgb2lkIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1Yl9kZGxf MScpKTsKKworLS0gY3JlYXRlIGJhc2UgdGFibGUgdG8gdGVzdCBiYXNpYyB0YWJsZSBwdWJsaWNh dGlvbgorQ1JFQVRFIFRBQkxFIHRlc3RwdWJfZGRsX3RibDEgKGZvbyBpbnQsIGJhciBpbnQpOwor Q1JFQVRFIFRBQkxFIHRlc3RwdWJfZGRsX3RibDIgKGZvbyBpbnQsIGJhciBpbnQpOworQ1JFQVRF IFRBQkxFIHRlc3RwdWJfZGRsX3RibDMgKGZvbyBpbnQsIGJhciBpbnQsIGJlcXVlIGludCwgYmF6 IGludCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9kZGxfdGJsNCAoZm9vIGludCwgYmFyIGludCwg YmVxdWUgYm9vbCk7CisKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF8yIEZPUiBUQUJM RSB0ZXN0cHViX2RkbF90YmwxLCB0ZXN0cHViX2RkbF90YmwyLCB0ZXN0cHViX2RkbF90YmwzIFdJ VEggKHB1Ymxpc2g9J2RlbGV0ZScsIHB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM9J3N0b3JlZCcs IHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PSd0cnVlJyk7CisKK1NFTEVDVCBwZ19nZXRfcHVi bGljYXRpb25fZGRsKCd0ZXN0cHViX2RkbF8yJyk7CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9u X2RkbCgoU0VMRUNUIG9pZCBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWU9J3Rlc3Rw dWJfZGRsXzInKSk7CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzIgU0VUIChwdWJs aXNoID0gJ2RlbGV0ZSwgdXBkYXRlJyk7CisKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRs KCd0ZXN0cHViX2RkbF8yJyk7CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgoU0VMRUNU IG9pZCBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWU9J3Rlc3RwdWJfZGRsXzInKSk7 CisKKy0tIGNyZWF0ZSBwdWJsaWNhdGlvbiBmb3Igb25lIHRhYmxlIHdpdGggb25lIGNvbHVtbiBh bmQgYSBjb25kaXRpb24KKworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzMgRk9SIFRB QkxFIE9OTFkgdGVzdHB1Yl9kZGxfdGJsMSAoYmFyKSBXSEVSRSAoYmFyID0gMSk7CisKK1NFTEVD VCBwZ19nZXRfcHVibGljYXRpb25fZGRsKCd0ZXN0cHViX2RkbF8zJyk7CitTRUxFQ1QgcGdfZ2V0 X3B1YmxpY2F0aW9uX2RkbCgoU0VMRUNUIG9pZCBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1 Ym5hbWU9J3Rlc3RwdWJfZGRsXzMnKSk7CisKKy0tIGNyZWF0ZSBwdWJsaWNhdGlvbiBmb3Igb25l IHRhYmxlIHdpdGggdHdvIGNvbHVtbnMgYW5kIGEgY29uZGl0aW9uCisKK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX2RkbF80IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfZGRsX3RibDMgKGJhcixi YXopIFdIRVJFIChiYXIgPSBiYXopOworCitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgn dGVzdHB1Yl9kZGxfNCcpOworU0VMRUNUIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwoKFNFTEVDVCBv aWQgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lPSd0ZXN0cHViX2RkbF80JykpOwor CistLSBjcmVhdGUgcHVibGljYXRpb24gZm9yIG9uZSB0YWJsZSB3aXRoIHR3byBjb2x1bW5zIGFu ZCBhIGNvbmRpdGlvbiB3aXRoIGFuIGV4cHJlc2lvbgorCitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9kZGxfNSBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX2RkbF90Ymw0IChiYXIsYmVxdWUpIFdI RVJFIChiZXF1ZSBJUyBUUlVFKTsKKworU0VMRUNUIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwoJ3Rl c3RwdWJfZGRsXzUnKTsKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKChTRUxFQ1Qgb2lk IEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1Yl9kZGxfNScpKTsKKwor LS0gY3JlYXRlIHB1YmxpY2F0aW9uIGZvciBhbGwgdGFibGVzCitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9kZGxfNiBGT1IgQUxMIFRBQkxFUzsKKworU0VMRUNUIHBnX2dldF9wdWJsaWNhdGlv bl9kZGwoJ3Rlc3RwdWJfZGRsXzYnKTsKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKChT RUxFQ1Qgb2lkIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1Yl9kZGxf NicpKTsKKworLS0gY3JlYXRlIHB1YmxhdGlvbiBmb3IgYWxsIHRhYmxlcyBhbmQgYWxsIHNlcXVl bmNlcworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzcgRk9SIEFMTCBUQUJMRVMsIEFM TCBTRVFVRU5DRVM7CisKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKCd0ZXN0cHViX2Rk bF83Jyk7CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgoU0VMRUNUIG9pZCBGUk9NIHBn X3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWU9J3Rlc3RwdWJfZGRsXzcnKSk7CisKKy0tIGNyZWF0 ZSBzY2hlbWEgZm9yIHNjaGVtYSBwdWJsaWNhdGlvbgorQ1JFQVRFIFNDSEVNQSBwdWJfc2NoZW1h X3Rlc3RfZGRsOworQ1JFQVRFIFRBQkxFIHB1Yl9zY2hlbWFfdGVzdF9kZGwuc2NoZW1hX3RibDEg KGZvbyBpbnQsIGJhciBpbnQpOworQ1JFQVRFIFRBQkxFIHB1Yl9zY2hlbWFfdGVzdF9kZGwuc2No ZW1hX3RibDIgKGZvbyBpbnQsIGJhciBpbnQpOworQ1JFQVRFIFRBQkxFIHB1Yl9zY2hlbWFfdGVz dF9kZGwuc2NoZW1hX3RibDMgKGZvbyBpbnQsIGJhciBpbnQsIGJheiBpbnQpOworCistLSBjcmVh dGUgYSBwdWJsaWNhdGlvbiBmb3IgYSBsaXN0IG9mIHRhYmxlcworQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZGRsXzggRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3NjaGVtYV90ZXN0X2RkbCwg VEFCTEUgcHViX3NjaGVtYV90ZXN0X2RkbC5zY2hlbWFfdGJsMSwgcHViX3NjaGVtYV90ZXN0X2Rk bC5zY2hlbWFfdGJsMjsKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKCd0ZXN0cHViX2Rk bF84Jyk7CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgoU0VMRUNUIG9pZCBGUk9NIHBn X3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWU9J3Rlc3RwdWJfZGRsXzgnKSk7CisKKy0tIGNyZWF0 ZSBwdWJsaWNhdGlvbiBpbiBzY2hlbWEgb25seSBmb3IgdGFibGUKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2RkbF85IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl9zY2hlbWFfdGVzdF9kZGws IFRBQkxFIHB1Yl9zY2hlbWFfdGVzdF9kZGwuc2NoZW1hX3RibDE7CitTRUxFQ1QgcGdfZ2V0X3B1 YmxpY2F0aW9uX2RkbCgndGVzdHB1Yl9kZGxfOScpOworU0VMRUNUIHBnX2dldF9wdWJsaWNhdGlv bl9kZGwoKFNFTEVDVCBvaWQgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lPSd0ZXN0 cHViX2RkbF85JykpOworCistLSBjcmVhdGUgcHVibGljYXRpb24gZm9yIGFsbCB0YWJsZXMgaW4g c2NoZW1hCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kZGxfMTAgRk9SIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3NjaGVtYV90ZXN0X2RkbDsKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRs KCd0ZXN0cHViX2RkbF8xMCcpOworU0VMRUNUIHBnX2dldF9wdWJsaWNhdGlvbl9kZGwoKFNFTEVD VCBvaWQgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lPSd0ZXN0cHViX2RkbF8xMCcp KTsKKworLS0gYSBuZXcgc2NoZW1hIGZvciBtdWx0aXBsZSBzY2hlbWFzCitDUkVBVEUgU0NIRU1B IHB1Yl9zY2hlbWFfdGVzdF9kZGxfMjsKK0NSRUFURSBUQUJMRSBwdWJfc2NoZW1hX3Rlc3RfZGRs XzIuc2NoZW1hX3RibDEgKGZvbyBpbnQsIGJhciBpbnQpOworCistLSBjcmVhdGUgYSBwdWJsaWNh dGlvbiBmb3IgYSBsaXN0IG9mIHNjaGVtYXMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Rk bF8xMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfc2NoZW1hX3Rlc3RfZGRsLCBwdWJfc2NoZW1h X3Rlc3RfZGRsXzI7CitTRUxFQ1QgcGdfZ2V0X3B1YmxpY2F0aW9uX2RkbCgndGVzdHB1Yl9kZGxf MTEnKTsKK1NFTEVDVCBwZ19nZXRfcHVibGljYXRpb25fZGRsKChTRUxFQ1Qgb2lkIEZST00gcGdf cHVibGljYXRpb24gV0hFUkUgcHVibmFtZT0ndGVzdHB1Yl9kZGxfMTEnKSk7CisKKy0tIGNsZWFu dXAgcHVibGljYXRpb25zCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzE7CitEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzM7 CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZGRsXzU7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzY7CitEUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZGRsXzc7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzg7CitEUk9Q IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRsXzk7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGRs XzEwOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2RkbF8xMTsKKworLS0gY2xlYW51cCB0YWJs ZXMKK0RST1AgVEFCTEUgdGVzdHB1Yl9kZGxfdGJsMTsKK0RST1AgVEFCTEUgdGVzdHB1Yl9kZGxf dGJsMjsKK0RST1AgVEFCTEUgdGVzdHB1Yl9kZGxfdGJsMzsKK0RST1AgVEFCTEUgdGVzdHB1Yl9k ZGxfdGJsNDsKKworLS0gY2xlYW51cCB0YWJsZXMgaW4gc2NoZW1hcworRFJPUCBUQUJMRSAgcHVi X3NjaGVtYV90ZXN0X2RkbC5zY2hlbWFfdGJsMTsKK0RST1AgVEFCTEUgIHB1Yl9zY2hlbWFfdGVz dF9kZGwuc2NoZW1hX3RibDI7CitEUk9QIFRBQkxFICBwdWJfc2NoZW1hX3Rlc3RfZGRsLnNjaGVt YV90YmwzOworRFJPUCBUQUJMRSAgcHViX3NjaGVtYV90ZXN0X2RkbF8yLnNjaGVtYV90YmwxOwor CistLSBjbGVhbnVwIHNjaGVtYXMKK0RST1AgU0NIRU1BIHB1Yl9zY2hlbWFfdGVzdF9kZGw7CitE Uk9QIFNDSEVNQSBwdWJfc2NoZW1hX3Rlc3RfZGRsXzI7CitSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOwotLSAKMi41MS4wCgo= --=-u/osygZXVwLqu3t39w9T--