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 1vIr1D-00H6o6-2W for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Nov 2025 16:14: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 1vIr19-006t1Z-0s for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Nov 2025 16:14:51 +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 1vIr18-006t1Q-1g for pgsql-hackers@lists.postgresql.org; Tue, 11 Nov 2025 16:14:50 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vIr15-006ZeV-2E for pgsql-hackers@lists.postgresql.org; Tue, 11 Nov 2025 16:14:49 +0000 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-429cbdab700so300064f8f.1 for ; Tue, 11 Nov 2025 08:14:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762877684; x=1763482484; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:to:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=h6GDYxfo+SHlmkxsc2eW4MMBx/F9dt4O5zb1oli0JmI=; b=gGJ58Q1KYLWuKbY8Kd1c+DZEcWa9kIWC/6eqdNmqR+V/8HwQFIZ6ULinE4jKYpEcX5 3KTbv8g6wtPpWRpoimCpQFpEwLWhj0dyv2KopIK4RO9X0o6ueWyMpFdmLF5ldvWy+hYh 5t0oXlJI5PYM10otWaUFsWt+wJZbqCN/pavl58HsZ/Kw5+tD/xZdBUVAV4WBMKjrOpmk ieKUMOAjt9b/hT/fzwFkSP9Uu5hqNw5m9ErUXdL+d8enamfP94ih1Pgs2VdUZ6DUEhxX yhffM3T97eDFxKJi4jfp85lpqrECVhRCJkDthDqX5VKkz2M5UVySrfZRjq/k4jTownIq R22A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762877684; x=1763482484; h=in-reply-to:from:content-language:references:to:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=h6GDYxfo+SHlmkxsc2eW4MMBx/F9dt4O5zb1oli0JmI=; b=nVOW86KFbRLb/D+tzoVGaUm+U/5AFd0qVc+p7L43yqjHIAvzdyIypKuuoS58ehTjip EQ25P4lsPb067q1P/uLSmsYcHQnawJ3pvfEf24Jpp2snJNQSGO5k+XLrth4ZZ76H7x0i Pcz0rHW8/GkNySUyn2+nZaD1qGeiHEL983WvbCY4QIE3qYtYE+/OXwn8bZp9kXc1TOpy hBqUYNOiCIu720DJX/fFW+UwQZjb8Y/z1esGHfUg4pJIeAWLz6t7hh87EFlmIp6a0Q8g 7f8eNTxY4nWjHFDkphiy6XHzE7v7Ue913FgWVtHkVnwp33tzgEcz1Rv+QeVLcn3bcFmQ Macg== X-Gm-Message-State: AOJu0YwHosG0TnXJH4hSxOMY3oorJuQLIVD1dTWToNyPEfPqGfubZ2dQ Pm9M9VPUjfI9IpYteM3a5VyQcEijGK9RVCT8KBpWsCm9D8mY1cW81QwhgbM2lA== X-Gm-Gg: ASbGncvXb7KMcknjQ2mnqB3WkKDK72mjvZH2ZxujrWwTCRqAdSOmhzJX6UDyl7pYfqd syW4Dub0rleNQD3y1ewrzsCB3J2CpxJp7CsaEyC4nS4yiC5fnB429k0+2cbHrI83iBHtDVFKuVT q3ZOiOnXiIvmeTjH31Wz9lBmujrQ6WlQVUrFVxlUULndLzMOMj8CYl+M+WyWcTMCopSxDw15kjP 6FRnOu3dGY7/Q99rKzlDfp0J1xUEuvHNCkzMZavVRYsv7pHI0P78rYtk80mGguuIRrxHyINcSfN +y6qKeoC6aHcsyugBK6C+UjiCgMqX33WQYhPBqjGHaf8qSKKPA3Ezkl6nQi7MwFBtVoR1Adarfv N3NN7odAPGzzm0YmNt9YE/4GojN7pocoXn3itaGW15ri0lTvQBGzqGqi2Qq7oJVmeKx+z0Ob3rK HOWlz2NczQGJVs4gl3NzY14SWfg7mdxyHFVa8TRPsFcO05iQtSDqXA68GWxte0fhRRhbSa X-Google-Smtp-Source: AGHT+IFbeukslVrsxq6fP9bqyBA/yFb1+8XzBDvK20gYXKcrk5eSyfEM0PIrA3Pj4RJARxnzbQvd+g== X-Received: by 2002:a5d:5848:0:b0:429:b4ce:c692 with SMTP id ffacd0b85a97d-42b2dcbc75bmr5819001f8f.7.1762877684197; Tue, 11 Nov 2025 08:14:44 -0800 (PST) Received: from [192.168.5.53] ([163.116.235.144]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42abe63df69sm28955319f8f.13.2025.11.11.08.14.43 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 Nov 2025 08:14:43 -0800 (PST) Content-Type: multipart/mixed; boundary="------------p0A0shhRdR89YNmhEsv0GkGF" Message-ID: <6a131cc6-ab35-49d2-b9bf-e6ddae4cf3b1@gmail.com> Date: Tue, 11 Nov 2025 17:14:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] pg_get_domain_ddl: DDL reconstruction function for CREATE DOMAIN statement To: pgsql-hackers@lists.postgresql.org References: Content-Language: en-US From: Florin Irion In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------p0A0shhRdR89YNmhEsv0GkGF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello, Cirrus-CI was complaining because we don't sort the constraints and thus they were making the test fail because of the random order. Made it sort with `list_sort`and `list_oid_cmp`not sure if that's the best thing to sort them. Check v4 attached. Cheers, Florin Irion Tim Waizenegger EDB (EnterpriseDB) --------------p0A0shhRdR89YNmhEsv0GkGF Content-Type: text/plain; charset=UTF-8; name="v4-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.patch" Content-Disposition: attachment; filename*0="v4-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyYWVjYTUzY2JhZWM1MTBlZTU0MTQ1MDM5NzQyZTVkNDg0OTQwODk1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaW4gSXJpb24gPGZsb3Jpbi5pcmlvbkBlbnRl cnByaXNlZGIuY29tPgpEYXRlOiBUaHUsIDE4IFNlcCAyMDI1IDE4OjUyOjQzICswMjAwClN1 YmplY3Q6IFtQQVRDSCB2NF0gQWRkIHBnX2dldF9kb21haW5fZGRsKCkgZnVuY3Rpb24gdG8g cmVjb25zdHJ1Y3QgQ1JFQVRFCiBET01BSU4gc3RhdGVtZW50cwpNSU1FLVZlcnNpb246IDEu MApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdAoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN5c3Rl bSBmdW5jdGlvbiBwZ19nZXRfZG9tYWluX2RkbCgpIHRoYXQKcmVjb25zdHJ1Y3RzIHRoZSBD UkVBVEUgRE9NQUlOIHN0YXRlbWVudCBmb3IgYSBnaXZlbiBkb21haW4uIFRoZSBmdW5jdGlv bgp0YWtlcyBhIHJlZ3R5cGUgcGFyYW1ldGVyIGFuZCByZXR1cm5zIHRoZSBjb21wbGV0ZSBE REwgc3RhdGVtZW50IGluY2x1ZGluZwp0aGUgZG9tYWluIG5hbWUsIGJhc2UgdHlwZSwgZGVm YXVsdCB2YWx1ZSwgYW5kIGFsbCBhc3NvY2lhdGVkIGNvbnN0cmFpbnRzLgoKVGhlIGZ1bmN0 aW9uIGZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyBvdGhlciBEREwgcmVjb25zdHJ1Y3Rp b24gZnVuY3Rpb25zCmxpa2UgcGdfZ2V0X2Z1bmN0aW9uZGVmKCkgYW5kIHBnX2dldF9jb25z dHJhaW50ZGVmKCksIHByb3ZpZGluZyBhCmRlY29tcGlsZWQgcmVjb25zdHJ1Y3Rpb24gcmF0 aGVyIHRoYW4gdGhlIG9yaWdpbmFsIGNvbW1hbmQgdGV4dC4KCktleSBmZWF0dXJlczoKKiBT dXBwb3J0cyBkb21haW5zIHdpdGggZGVmYXVsdCB2YWx1ZXMKKiBJbmNsdWRlcyBhbGwgZG9t YWluIGNvbnN0cmFpbnRzIChDSEVDSywgTk9UIE5VTEwpCiogTk9UIFZBTElEIGNvbnN0cmFp bnQgYXJlIGhhbmRsZWQgd2l0aCBhbiBleHRyYSBBTFRFUiBjb21tYW5kLgoqIFByb3Blcmx5 IHF1b3RlcyBpZGVudGlmaWVycyBhbmQgc2NoZW1hIG5hbWVzCiogSGFuZGxlcyBjb21wbGV4 IGNvbnN0cmFpbnQgZXhwcmVzc2lvbnMKKiBwcmV0dHkgcHJpbnRpbmcgc3VwcG9ydAoKQSBu ZXcgZG9jdW1lbnRhdGlvbiBzZWN0aW9uICJHZXQgT2JqZWN0IERETCBGdW5jdGlvbnMiIGhh cyBiZWVuIGNyZWF0ZWQKdG8gZ3JvdXAgRERMIHJlY29uc3RydWN0aW9uIGZ1bmN0aW9ucywg c3RhcnRpbmcgd2l0aCBwZ19nZXRfZG9tYWluX2RkbCgpLgpUaGlzIHByb3ZpZGVzIGEgZm91 bmRhdGlvbiBmb3IgZnV0dXJlIERETCBmdW5jdGlvbnMgZm9yIG90aGVyIG9iamVjdCB0eXBl cy4KCkNvbXByZWhlbnNpdmUgcmVncmVzc2lvbiB0ZXN0cyBhcmUgaW5jbHVkZWQgY292ZXJp bmcgdmFyaW91cyBkb21haW4KY29uZmlndXJhdGlvbnMuCgpSZWZlcmVuY2U6IFBHLTE1MQpB dXRob3I6IEZsb3JpbiBJcmlvbiA8ZmxvcmluLmlyaW9uQGVudGVycHJpc2VkYi5jb20+CkF1 dGhvcjogVGltIFdhaXplbmVnZ2VyIDx0aW0ud2FpemVuZWdnZXJAZW50ZXJwcmlzZWRiLmNv bT4KUmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVyYSBhbHZoZXJyZUBhbHZoLm5vLWlwLm9y ZwpSZXZpZXdlZC1ieTogamlhbiBoZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBkb2Mv c3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbCAgICAgICAgIHwgIDQ1ICsrKysKIHNyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgfCAgIDYgKwogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICB8IDIzMyArKysrKysrKysrKysrKysr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICAzICsKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2RkbC5vdXQgfCAzMjggKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAg ICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9kZGwuc3FsICAgICAg fCAxMzUgKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA3NTEgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvb2JqZWN0X2RkbC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9vYmplY3RfZGRsLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtaW5mby5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKaW5k ZXggZDQ1MDgxMTRhNDguLjU1NTI3ZjQ2OGFlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv ZnVuYy9mdW5jLWluZm8uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8u c2dtbApAQCAtMzc5Nyw0ICszNzk3LDQ5IEBAIGFjbCAgICAgIHwge3Bvc3RncmVzPWFyd2RE eHRtL3Bvc3RncmVzLGZvbz1yL3Bvc3RncmVzfQogCiAgIDwvc2VjdDI+CiAKKyAgPHNlY3Qy IGlkPSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwiPgorICAgPHRpdGxlPkdldCBPYmplY3Qg RERMIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRoZSBmdW5jdGlvbnMg c2hvd24gaW4gPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWdldC1vYmplY3QtZGRsLXRhYmxl Ii8+CisgICAgcHJpbnQgdGhlIERETCBzdGF0ZW1lbnRzIGZvciB2YXJpb3VzIGRhdGFiYXNl IG9iamVjdHMuCisgICAgKFRoaXMgaXMgYSBkZWNvbXBpbGVkIHJlY29uc3RydWN0aW9uLCBu b3QgdGhlIG9yaWdpbmFsIHRleHQKKyAgICBvZiB0aGUgY29tbWFuZC4pCisgICA8L3BhcmE+ CisKKyAgIDx0YWJsZSBpZD0iZnVuY3Rpb25zLWdldC1vYmplY3QtZGRsLXRhYmxlIj4KKyAg ICA8dGl0bGU+R2V0IE9iamVjdCBEREwgRnVuY3Rpb25zPC90aXRsZT4KKyAgICA8dGdyb3Vw IGNvbHM9IjEiPgorICAgICA8dGhlYWQ+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSBy b2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+Cisg ICAgICAgIEZ1bmN0aW9uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICBEZXNjcmlwdGlvbgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+Cisg ICAgIDwvdGhlYWQ+CisKKyAgICAgPHRib2R5PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50 cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUi PgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfZ2V0X2RvbWFp bl9kZGw8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rp b24+cGdfZ2V0X2RvbWFpbl9kZGw8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+ZG9tYWluPC9w YXJhbWV0ZXI+IDx0eXBlPnJlZ3R5cGU8L3R5cGU+CisgICAgICAgICA8b3B0aW9uYWw+IDxw YXJhbWV0ZXI+cHJldHR5PC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDwvb3B0 aW9uYWw+KQorICAgICAgICA8cmV0dXJudmFsdWU+dGV4dDwvcmV0dXJudmFsdWU+CisgICAg ICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0cnVjdHMgdGhlIGNy ZWF0aW5nIGNvbW1hbmQgZm9yIGEgZG9tYWluLgorICAgICAgICBUaGUgcmVzdWx0IGlzIGEg Y29tcGxldGUgPGNvbW1hbmQ+Q1JFQVRFIERPTUFJTjwvY29tbWFuZD4gc3RhdGVtZW50Lgor ICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGJvZHk+Cisg ICAgPC90Z3JvdXA+CisgICA8L3RhYmxlPgorCisgIDwvc2VjdDI+CisKICAgPC9zZWN0MT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCmluZGV4IDJkOTQ2 ZDZkOWU5Li41YTk2ZmYxZWZjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fZnVuY3Rpb25zLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9m dW5jdGlvbnMuc3FsCkBAIC02NTcsNiArNjU3LDEyIEBAIExBTkdVQUdFIElOVEVSTkFMCiBT VFJJQ1QgVk9MQVRJTEUgUEFSQUxMRUwgVU5TQUZFCiBBUyAncGdfcmVwbGljYXRpb25fb3Jp Z2luX3Nlc3Npb25fc2V0dXAnOwogCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTgorIHBn X2dldF9kb21haW5fZGRsKGRvbWFpbl9uYW1lIHJlZ3R5cGUsIHByZXR0eSBib29sIERFRkFV TFQgZmFsc2UpCisgUkVUVVJOUyB0ZXh0CisgTEFOR1VBR0UgaW50ZXJuYWwKK0FTICdwZ19n ZXRfZG9tYWluX2RkbF9leHQnOworCiAtLQogLS0gVGhlIGRlZmF1bHQgcGVybWlzc2lvbnMg Zm9yIGZ1bmN0aW9ucyBtZWFuIHRoYXQgYW55b25lIGNhbiBleGVjdXRlIHRoZW0uCiAtLSBB IG51bWJlciBvZiBmdW5jdGlvbnMgc2hvdWxkbid0IGJlIGV4ZWN1dGFibGUgYnkganVzdCBh bnlvbmUsIGJ1dCByYXRoZXIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA1 NTZhYjA1N2U1YS4uMzRkNjNmMmY1MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKQEAgLTU0Niw2ICs1NDYsMTEgQEAgc3RhdGljIHZvaWQgZ2V0X2pzb25fdGFibGVfbmVz dGVkX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgSnNvblRhYmxlUGxhbiAqcGxhbiwKIAkJCQkJ CQkJCQkgIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIGJvb2wgc2hv d2ltcGxpY2l0LAogCQkJCQkJCQkJCSAgYm9vbCBuZWVkY29tbWEpOworc3RhdGljIHZvaWQg Z2V0X2Zvcm1hdHRlZF9zdHJpbmcoU3RyaW5nSW5mbyBidWYsCisJCQkJCQkJCSBpbnQgcHJl dHR5RmxhZ3MsCisJCQkJCQkJCSBpbnQgbm9PZlRhYkNoYXJzLAorCQkJCQkJCQkgY29uc3Qg Y2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlX3ByaW50Zig0LCA1KTsKK3N0YXRpYyBjaGFy ICpwZ19nZXRfZG9tYWluX2RkbF93b3JrZXIoT2lkIGRvbWFpbl9vaWQsIGludCBwcmV0dHlG bGFncyk7CiAKICNkZWZpbmUgb25seV9tYXJrZXIocnRlKSAgKChydGUpLT5pbmggPyAiIiA6 ICJPTkxZICIpCiAKQEAgLTEzNzQzLDMgKzEzNzQ4LDIzMSBAQCBnZXRfcmFuZ2VfcGFydGJv dW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpCiAKIAlyZXR1cm4gYnVmLmRhdGE7CiB9 CisKKy8qCisgKiBnZXRfZm9ybWF0dGVkX3N0cmluZworICoKKyAqIFJldHVybiBhIGZvcm1h dHRlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuCisgKgorICogcHJldHR5IC0gSWYgcHJldHR5 IGlzIHRydWUsIHRoZSBvdXRwdXQgaW5jbHVkZXMgdGFicyAoXHQpIGFuZCBuZXdsaW5lcyAo XG4pLgorICogbm9PZlRhYkNoYXJzIC0gaW5kZW50IHdpdGggc3BlY2lmaWVkIG5vIG9mIHRh YnMuCisgKiBmbXQgLSBwcmludGYtc3R5bGUgZm9ybWF0IHN0cmluZyB1c2VkIGJ5IGFwcGVu ZFN0cmluZ0luZm9WQS4KKyAqLworc3RhdGljIHZvaWQKK2dldF9mb3JtYXR0ZWRfc3RyaW5n KFN0cmluZ0luZm8gYnVmLCBpbnQgcHJldHR5RmxhZ3MsIGludCBub09mVGFiQ2hhcnMsIGNv bnN0IGNoYXIgKmZtdCwuLi4pCit7CisJdmFfbGlzdAkJYXJnczsKKworCWlmIChwcmV0dHlG bGFncyAmIFBSRVRUWUZMQUdfSU5ERU5UKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIo YnVmLCAnXG4nKTsKKwkJLyogSW5kZW50IHdpdGggdGFicyAqLworCQlmb3IgKGludCBpID0g MDsgaSA8IG5vT2ZUYWJDaGFyczsgaSsrKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hh cihidWYsICdcdCcpOworCQl9CisJfQorCWVsc2UKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIo YnVmLCAnICcpOworCisJdmFfc3RhcnQoYXJncywgZm10KTsKKwlhcHBlbmRTdHJpbmdJbmZv VkEoYnVmLCBmbXQsIGFyZ3MpOworCXZhX2VuZChhcmdzKTsKK30KKworCisvKgorICogSGVs cGVyIGZ1bmN0aW9uIHRvIHNjYW4gZG9tYWluIGNvbnN0cmFpbnRzCisgKi8KK3N0YXRpYyB2 b2lkCitzY2FuX2RvbWFpbl9jb25zdHJhaW50cyhPaWQgZG9tYWluX29pZCwgTGlzdCAqKnZh bGlkY29ucywgTGlzdCAqKmludmFsaWRjb25zKQoreworCVJlbGF0aW9uCWNvbnN0cmFpbnRS ZWw7CisJU3lzU2NhbkRlc2Mgc3NjYW47CisJU2NhbktleURhdGEgc2tleTsKKwlIZWFwVHVw bGUJY29uc3RyYWludFR1cDsKKworCSp2YWxpZGNvbnMgPSBOSUw7CisJKmludmFsaWRjb25z ID0gTklMOworCisJY29uc3RyYWludFJlbCA9IHRhYmxlX29wZW4oQ29uc3RyYWludFJlbGF0 aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2tleSwKKwkJCQlB bnVtX3BnX2NvbnN0cmFpbnRfY29udHlwaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVy LCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oZG9tYWluX29pZCkpOworCisJc3Nj YW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oY29uc3RyYWludFJlbCwKKwkJCQkJCQkgICBDb25z dHJhaW50VHlwaWRJbmRleElkLAorCQkJCQkJCSAgIHRydWUsCisJCQkJCQkJICAgTlVMTCwK KwkJCQkJCQkgICAxLAorCQkJCQkJCSAgICZza2V5KTsKKworCXdoaWxlIChIZWFwVHVwbGVJ c1ZhbGlkKGNvbnN0cmFpbnRUdXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNzY2FuKSkpCisJewor CQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RS VUNUKGNvbnN0cmFpbnRUdXApOworCisJCWlmIChjb24tPmNvbnZhbGlkYXRlZCkKKwkJCSp2 YWxpZGNvbnMgPSBsYXBwZW5kX29pZCgqdmFsaWRjb25zLCBjb24tPm9pZCk7CisJCWVsc2UK KwkJCSppbnZhbGlkY29ucyA9IGxhcHBlbmRfb2lkKCppbnZhbGlkY29ucywgY29uLT5vaWQp OworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc3NjYW4pOworCXRhYmxlX2Nsb3NlKGNvbnN0 cmFpbnRSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBTb3J0IGNvbnN0cmFpbnRzIGJ5 IE9JRCBmb3Igc3RhYmxlIG91dHB1dCAqLworCWlmIChsaXN0X2xlbmd0aCgqdmFsaWRjb25z KSA+IDEpCisJCWxpc3Rfc29ydCgqdmFsaWRjb25zLCBsaXN0X29pZF9jbXApOworCWlmIChs aXN0X2xlbmd0aCgqaW52YWxpZGNvbnMpID4gMSkKKwkJbGlzdF9zb3J0KCppbnZhbGlkY29u cywgbGlzdF9vaWRfY21wKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBidWls ZCBDUkVBVEUgRE9NQUlOIHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorYnVpbGRfY3Jl YXRlX2RvbWFpbl9zdGF0ZW1lbnQoU3RyaW5nSW5mbyBidWYsIEZvcm1fcGdfdHlwZSB0eXBG b3JtLAorCQkJCQkJCSAgTm9kZSAqZGVmYXVsdEV4cHIsIExpc3QgKnZhbGlkQ29uc3RyYWlu dHMsIGludCBwcmV0dHlGbGFncykKK3sKKwlIZWFwVHVwbGUJYmFzZVR5cGVUdXBsZTsKKwlG b3JtX3BnX3R5cGUgYmFzZVR5cGVGb3JtOworCU9pZAkJCWJhc2VDb2xsYXRpb24gPSBJbnZh bGlkT2lkOworCUxpc3RDZWxsICAgKmxjOworCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJD UkVBVEUgRE9NQUlOICVzIEFTICVzIiwKKwkJCQkJIGdlbmVyYXRlX3F1YWxpZmllZF90eXBl X25hbWUodHlwRm9ybS0+b2lkKSwKKwkJCQkJIGdlbmVyYXRlX3F1YWxpZmllZF90eXBlX25h bWUodHlwRm9ybS0+dHlwYmFzZXR5cGUpKTsKKworCS8qIEFkZCBjb2xsYXRpb24gaWYgaXQg ZGlmZmVycyBmcm9tIGJhc2UgdHlwZSdzIGNvbGxhdGlvbiAqLworCWlmIChPaWRJc1ZhbGlk KHR5cEZvcm0tPnR5cGNvbGxhdGlvbikpCisJeworCQkvKiBHZXQgYmFzZSB0eXBlJ3MgY29s bGF0aW9uIGZvciBjb21wYXJpc29uICovCisJCWJhc2VUeXBlVHVwbGUgPSBTZWFyY2hTeXND YWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0eXBGb3JtLT50eXBiYXNldHlwZSkp OworCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChiYXNlVHlwZVR1cGxlKSkKKwkJeworCQkJYmFz ZVR5cGVGb3JtID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKGJhc2VUeXBlVHVwbGUpOwor CQkJYmFzZUNvbGxhdGlvbiA9IGJhc2VUeXBlRm9ybS0+dHlwY29sbGF0aW9uOworCQkJUmVs ZWFzZVN5c0NhY2hlKGJhc2VUeXBlVHVwbGUpOworCQl9CisKKwkJLyogT25seSBhZGQgQ09M TEFURSBpZiBkb21haW4ncyBjb2xsYXRpb24gZGlmZmVycyBmcm9tIGJhc2UgdHlwZSdzICov CisJCWlmICh0eXBGb3JtLT50eXBjb2xsYXRpb24gIT0gYmFzZUNvbGxhdGlvbikKKwkJewor CQkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoYnVmLCBwcmV0dHlGbGFncywgMSwgIkNPTExBVEUg JXMiLAorCQkJCQkJCQkgZ2VuZXJhdGVfY29sbGF0aW9uX25hbWUodHlwRm9ybS0+dHlwY29s bGF0aW9uKSk7CisJCX0KKwl9CisKKwkvKiBBZGQgZGVmYXVsdCB2YWx1ZSBpZiBwcmVzZW50 ICovCisJaWYgKGRlZmF1bHRFeHByICE9IE5VTEwpCisJeworCQljaGFyCSAgICpkZWZhdWx0 VmFsdWUgPSBkZXBhcnNlX2V4cHJlc3Npb25fcHJldHR5KGRlZmF1bHRFeHByLCBOSUwsIGZh bHNlLCBmYWxzZSwgcHJldHR5RmxhZ3MsIDApOworCisJCWdldF9mb3JtYXR0ZWRfc3RyaW5n KGJ1ZiwgcHJldHR5RmxhZ3MsIDEsICJERUZBVUxUICVzIiwgZGVmYXVsdFZhbHVlKTsKKwl9 CisKKwkvKiBBZGQgdmFsaWQgY29uc3RyYWludHMgKi8KKwlmb3JlYWNoKGxjLCB2YWxpZENv bnN0cmFpbnRzKQorCXsKKwkJT2lkCQkJY29uc3RyYWludE9pZCA9IGxmaXJzdF9vaWQobGMp OworCQlIZWFwVHVwbGUJY29uc3RyYWludFR1cDsKKwkJRm9ybV9wZ19jb25zdHJhaW50IGNv bjsKKwkJY2hhcgkgICAqY29uc3RyYWludERlZjsKKworCQkvKiBMb29rIHVwIHRoZSBjb25z dHJhaW50IGluZm8gKi8KKwkJY29uc3RyYWludFR1cCA9IFNlYXJjaFN5c0NhY2hlMShDT05T VFJPSUQsIE9iamVjdElkR2V0RGF0dW0oY29uc3RyYWludE9pZCkpOworCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQoY29uc3RyYWludFR1cCkpCisJCQljb250aW51ZTsJCQkvKiBjb25zdHJh aW50IHdhcyBkcm9wcGVkIGNvbmN1cnJlbnRseSAqLworCisJCWNvbiA9IChGb3JtX3BnX2Nv bnN0cmFpbnQpIEdFVFNUUlVDVChjb25zdHJhaW50VHVwKTsKKwkJY29uc3RyYWludERlZiA9 IHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihjb25zdHJhaW50T2lkLCBmYWxzZSwgcHJl dHR5RmxhZ3MsIHRydWUpOworCisJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKGJ1ZiwgcHJldHR5 RmxhZ3MsIDEsICJDT05TVFJBSU5UICVzIiwKKwkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihO YW1lU3RyKGNvbi0+Y29ubmFtZSkpKTsKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoYnVmLCBw cmV0dHlGbGFncywgMiwgIiVzIiwgY29uc3RyYWludERlZik7CisKKwkJUmVsZWFzZVN5c0Nh Y2hlKGNvbnN0cmFpbnRUdXApOworCX0KKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1Ziwg JzsnKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBhZGQgQUxURVIgRE9NQUlO IHN0YXRlbWVudHMgZm9yIGludmFsaWQgY29uc3RyYWludHMKKyAqLworc3RhdGljIHZvaWQK K2FkZF9hbHRlcl9kb21haW5fc3RhdGVtZW50cyhTdHJpbmdJbmZvIGJ1ZiwgTGlzdCAqaW52 YWxpZENvbnN0cmFpbnRzLCBpbnQgcHJldHR5RmxhZ3MpCit7CisJTGlzdENlbGwgICAqbGM7 CisKKwlmb3JlYWNoKGxjLCBpbnZhbGlkQ29uc3RyYWludHMpCisJeworCQlPaWQJCQljb25z dHJhaW50T2lkID0gbGZpcnN0X29pZChsYyk7CisJCWNoYXIJICAgKmFsdGVyU3RtdCA9IHBn X2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihjb25zdHJhaW50T2lkLCB0cnVlLCBwcmV0dHlG bGFncywgdHJ1ZSk7CisKKwkJaWYgKGFsdGVyU3RtdCkKKwkJCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAiXG4lczsiLCBhbHRlclN0bXQpOworCX0KK30KKworLyoKKyAqIHBnX2dldF9kb21h aW5fZGRsX2V4dCAtIEdldCBDUkVBVEUgRE9NQUlOIHN0YXRlbWVudCBmb3IgYSBkb21haW4g d2l0aCBwcmV0dHktcHJpbnQgb3B0aW9uCisgKi8KK0RhdHVtCitwZ19nZXRfZG9tYWluX2Rk bF9leHQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlkb21haW5fb2lkID0gUEdfR0VU QVJHX09JRCgwKTsKKwlib29sCQlwcmV0dHkgPSBQR19HRVRBUkdfQk9PTCgxKTsKKwljaGFy CSAgICpyZXM7CisJaW50CQkJcHJldHR5RmxhZ3M7CisKKwlwcmV0dHlGbGFncyA9IHByZXR0 eSA/IEdFVF9QUkVUVFlfRkxBR1MocHJldHR5KSA6IDA7CisKKwlyZXMgPSBwZ19nZXRfZG9t YWluX2RkbF93b3JrZXIoZG9tYWluX29pZCwgcHJldHR5RmxhZ3MpOworCWlmIChyZXMgPT0g TlVMTCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKwlQR19SRVRVUk5fVEVYVF9QKHN0cmluZ190 b190ZXh0KHJlcykpOworfQorCisKKworc3RhdGljIGNoYXIgKgorcGdfZ2V0X2RvbWFpbl9k ZGxfd29ya2VyKE9pZCBkb21haW5fb2lkLCBpbnQgcHJldHR5RmxhZ3MpCit7CisJU3RyaW5n SW5mb0RhdGEgYnVmOworCUhlYXBUdXBsZQl0eXBlVHVwbGU7CisJRm9ybV9wZ190eXBlIHR5 cEZvcm07CisJTm9kZQkgICAqZGVmYXVsdEV4cHI7CisJTGlzdAkgICAqdmFsaWRDb25zdHJh aW50czsKKwlMaXN0CSAgICppbnZhbGlkQ29uc3RyYWludHM7CisKKwkvKiBMb29rIHVwIHRo ZSBkb21haW4gaW4gcGdfdHlwZSAqLworCXR5cGVUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShU WVBFT0lELCBPYmplY3RJZEdldERhdHVtKGRvbWFpbl9vaWQpKTsKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQodHlwZVR1cGxlKSkKKwkJcmV0dXJuIE5VTEw7CisKKwl0eXBGb3JtID0gKEZv cm1fcGdfdHlwZSkgR0VUU1RSVUNUKHR5cGVUdXBsZSk7CisKKwkvKiBHZXQgZGVmYXVsdCBl eHByZXNzaW9uICovCisJZGVmYXVsdEV4cHIgPSBnZXRfdHlwZGVmYXVsdChkb21haW5fb2lk KTsKKworCS8qIFNjYW4gZm9yIHZhbGlkIGFuZCBpbnZhbGlkIGNvbnN0cmFpbnRzICovCisJ c2Nhbl9kb21haW5fY29uc3RyYWludHMoZG9tYWluX29pZCwgJnZhbGlkQ29uc3RyYWludHMs ICZpbnZhbGlkQ29uc3RyYWludHMpOworCisJLyogQnVpbGQgdGhlIERETCBzdGF0ZW1lbnQg Ki8KKwlpbml0U3RyaW5nSW5mbygmYnVmKTsKKwlidWlsZF9jcmVhdGVfZG9tYWluX3N0YXRl bWVudCgmYnVmLCB0eXBGb3JtLCBkZWZhdWx0RXhwciwgdmFsaWRDb25zdHJhaW50cywgcHJl dHR5RmxhZ3MpOworCisJLyogQWRkIEFMVEVSIERPTUFJTiBzdGF0ZW1lbnRzIGZvciBpbnZh bGlkIGNvbnN0cmFpbnRzICovCisJaWYgKGxpc3RfbGVuZ3RoKGludmFsaWRDb25zdHJhaW50 cykgPiAwKQorCQlhZGRfYWx0ZXJfZG9tYWluX3N0YXRlbWVudHMoJmJ1ZiwgaW52YWxpZENv bnN0cmFpbnRzLCBwcmV0dHlGbGFncyk7CisKKwkvKiBDbGVhbnVwICovCisJbGlzdF9mcmVl KHZhbGlkQ29uc3RyYWludHMpOworCWxpc3RfZnJlZShpbnZhbGlkQ29uc3RyYWludHMpOwor CVJlbGVhc2VTeXNDYWNoZSh0eXBlVHVwbGUpOworCisJcmV0dXJuIGJ1Zi5kYXRhOworfQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNWNmOWUxMmZjYjkuLjQ3Njg3NGQwMDYz IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTg1MTUsNiArODUxNSw5IEBACiB7 IG9pZCA9PiAnMjUwOCcsIGRlc2NyID0+ICdjb25zdHJhaW50IGRlc2NyaXB0aW9uIHdpdGgg cHJldHR5LXByaW50IG9wdGlvbicsCiAgIHByb25hbWUgPT4gJ3BnX2dldF9jb25zdHJhaW50 ZGVmJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKICAgcHJv YXJndHlwZXMgPT4gJ29pZCBib29sJywgcHJvc3JjID0+ICdwZ19nZXRfY29uc3RyYWludGRl Zl9leHQnIH0sCit7IG9pZCA9PiAnODAyNCcsIGRlc2NyID0+ICdnZXQgQ1JFQVRFIHN0YXRl bWVudCBmb3IgRE9NQUlOIHdpdGggcHJldHR5IG9wdGlvbicsCisgIHByb25hbWUgPT4gJ3Bn X2dldF9kb21haW5fZGRsJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ3R5cGVz ID0+ICdyZWd0eXBlIGJvb2wnLCBwcm9zcmMgPT4gJ3BnX2dldF9kb21haW5fZGRsX2V4dCcg fSwKIHsgb2lkID0+ICcyNTA5JywKICAgZGVzY3IgPT4gJ2RlcGFyc2UgYW4gZW5jb2RlZCBl eHByZXNzaW9uIHdpdGggcHJldHR5LXByaW50IG9wdGlvbicsCiAgIHByb25hbWUgPT4gJ3Bn X2dldF9leHByJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2RkbC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVjdF9kZGwub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45YWFkNTQzNDdkYQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2RkbC5vdXQKQEAgLTAs MCArMSwzMjggQEAKKy0tCistLSBUZXN0IGZvciB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0 byBnZXQgb2JqZWN0IERETDoKKy0tIC0gcGdfZ2V0X2RvbWFpbl9kZGwKKy0tCitDUkVBVEUg RE9NQUlOIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUgQVMgVEVYVAorICAgIERFRkFVTFQgJzAw MDAwJworICAgIENPTlNUUkFJTlQgcmVncmVzc191c19wb3N0YWxfY29kZV9jaGVjaworICAg ICAgICBDSEVDSyAoCisgICAgICAgICAgICBWQUxVRSB+ICdeXGR7NX0kJworICAgIE9SIFZB TFVFIH4gJ15cZHs1fS1cZHs0fSQnCisgICAgKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgncmVncmVzc191c19wb3N0YWxfY29kZScpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBD UkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3VzX3Bvc3RhbF9jb2RlIEFTIHBnX2NhdGFs b2cudGV4dCBERUZBVUxUICcwMDAwMCc6OnRleHQgQ09OU1RSQUlOVCByZWdyZXNzX3VzX3Bv c3RhbF9jb2RlX2NoZWNrIENIRUNLICgoKFZBTFVFIH4gJ15cZHs1fSQnOjp0ZXh0KSBPUiAo VkFMVUUgfiAnXlxkezV9LVxkezR9JCc6OnRleHQpKSk7CisoMSByb3cpCisKK1NFTEVDVCBw Z19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0YWxfY29kZScsIHByZXR0eSA9PiBm YWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9t YWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJl Z3Jlc3NfdXNfcG9zdGFsX2NvZGUgQVMgcGdfY2F0YWxvZy50ZXh0IERFRkFVTFQgJzAwMDAw Jzo6dGV4dCBDT05TVFJBSU5UIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGVfY2hlY2sgQ0hFQ0sg KCgoVkFMVUUgfiAnXlxkezV9JCc6OnRleHQpIE9SIChWQUxVRSB+ICdeXGR7NX0tXGR7NH0k Jzo6dGV4dCkpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX3VzX3Bvc3RhbF9jb2RlJywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBD UkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3VzX3Bvc3RhbF9jb2RlIEFTIHBnX2NhdGFs b2cudGV4dCBERUZBVUxUICcwMDAwMCc6OnRleHQgQ09OU1RSQUlOVCByZWdyZXNzX3VzX3Bv c3RhbF9jb2RlX2NoZWNrIENIRUNLICgoKFZBTFVFIH4gJ15cZHs1fSQnOjp0ZXh0KSBPUiAo VkFMVUUgfiAnXlxkezV9LVxkezR9JCc6OnRleHQpKSk7CisoMSByb3cpCisKK1NFTEVDVCBw Z19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0YWxfY29kZScsIHByZXR0eSA9PiB0 cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5f ZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfdXNfcG9zdGFs X2NvZGUgQVMgcGdfY2F0YWxvZy50ZXh0ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg IERFRkFVTFQgJzAwMDAwJzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfdXNf cG9zdGFsX2NvZGVfY2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICBDSEVDSyAoVkFMVUUgfiAnXlxkezV9JCc6OnRleHQgT1IgVkFM VUUgfiAnXlxkezV9LVxkezR9JCc6OnRleHQpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCB0cnVlKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUgQVMgcGdfY2F0 YWxvZy50ZXh0ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIERFRkFVTFQgJzAwMDAw Jzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGVfY2hl Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICBDSEVDSyAoVkFMVUUgfiAnXlxkezV9JCc6OnRleHQgT1IgVkFMVUUgfiAnXlxkezV9LVxk ezR9JCc6OnRleHQpOworKDEgcm93KQorCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfZG9tYWlu X25vdF9udWxsIEFTIElOVCBOT1QgTlVMTDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgn cmVncmVzc19kb21haW5fbm90X251bGwnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX25vdF9udWxsIEFTIHBnX2Nh dGFsb2cuaW50NCBDT05TVFJBSU5UIHJlZ3Jlc3NfZG9tYWluX25vdF9udWxsX25vdF9udWxs IE5PVCBOVUxMOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3NfZG9tYWluX25vdF9udWxsJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fbm90X251 bGwgQVMgcGdfY2F0YWxvZy5pbnQ0KworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX2Rv bWFpbl9ub3RfbnVsbF9ub3RfbnVsbCAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg Tk9UIE5VTEw7CisoMSByb3cpCisKK0NSRUFURSBET01BSU4gcmVncmVzc19kb21haW5fY2hl Y2sgQVMgSU5UCisgICAgQ09OU1RSQUlOVCByZWdyZXNzX2EgQ0hFQ0sgKFZBTFVFIDwgMTAw KQorICAgIENPTlNUUkFJTlQgcmVncmVzc19iIENIRUNLIChWQUxVRSA+IDEwKTsKK1NFTEVD VCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fY2hlY2snKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2Rv bWFpbl9jaGVjayBBUyBwZ19jYXRhbG9nLmludDQgQ09OU1RSQUlOVCByZWdyZXNzX2EgQ0hF Q0sgKChWQUxVRSA8IDEwMCkpIENPTlNUUkFJTlQgcmVncmVzc19iIENIRUNLICgoVkFMVUUg PiAxMCkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nf ZG9tYWluX2NoZWNrJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fY2hlY2sgQVMgcGdfY2F0YWxv Zy5pbnQ0KworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX2EgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIDwgMTAw KSAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jl c3NfYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICBDSEVDSyAoVkFMVUUgPiAxMCk7CisoMSByb3cpCisKK0NSRUFURSBET01BSU4gInJlZ3Jl c3NfZG9tYWluIHdpdGggc3BhY2UiIEFTIElOVAorICAgIENPTlNUUkFJTlQgcmVncmVzc19h IENIRUNLIChWQUxVRSA8IDEwMCkKKyAgICBDT05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFp bnQgQiIgQ0hFQ0sgKFZBTFVFID4gMTApCisgICAgQ09OU1RSQUlOVCAicmVncmVzc19Db25z dHJhaW50QyIgQ0hFQ0sgKFZBTFVFICE9IDU1KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgnInJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIERPTUFJTiBwdWJsaWMuInJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiIEFTIHBn X2NhdGFsb2cuaW50NCBDT05TVFJBSU5UIHJlZ3Jlc3NfYSBDSEVDSyAoKFZBTFVFIDwgMTAw KSkgQ09OU1RSQUlOVCAicmVncmVzc19Db25zdHJhaW50IEIiIENIRUNLICgoVkFMVUUgPiAx MCkpIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWludEMiIENIRUNLICgoVkFMVUUgPD4g NTUpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCcicmVncmVzc19k b21haW4gd2l0aCBzcGFjZSInLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLiJyZWdyZXNzX2RvbWFp biB3aXRoIHNwYWNlIiBBUyBwZ19jYXRhbG9nLmludDQrCisgICAgICAgICBDT05TVFJBSU5U IHJlZ3Jlc3NfYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIDwgMTAwKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCAicmVncmVzc19Db25zdHJhaW50 IEIiICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENIRUNL IChWQUxVRSA+IDEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWludEMiICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAgICAgICBDSEVDSyAoVkFMVUUgPD4gNTUpOworKDEg cm93KQorCistLSBUZXN0IGVycm9yIGNhc2VzCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwo J3JlZ3Jlc3Nfbm9uZXhpc3RlbnRfZG9tYWluJzo6cmVndHlwZSk7ICAtLSBzaG91bGQgZmFp bAorRVJST1I6ICB0eXBlICJyZWdyZXNzX25vbmV4aXN0ZW50X2RvbWFpbiIgZG9lcyBub3Qg ZXhpc3QKK0xJTkUgMTogU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX25vbmV4 aXN0ZW50X2RvbWFpbic6OnJlZ3R5Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoTlVMTCk7ICAtLSBzaG91bGQgcmV0 dXJuIE5VTEwKKyBwZ19nZXRfZG9tYWluX2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKE5VTEwsIHByZXR0eSA9PiB0 cnVlKTsgIC0tIHNob3VsZCByZXR1cm4gTlVMTAorIHBnX2dldF9kb21haW5fZGRsIAorLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBUZXN0IGRvbWFpbnMgd2l0aCBu byBjb25zdHJhaW50cworQ1JFQVRFIERPTUFJTiByZWdyZXNzX3NpbXBsZV9kb21haW4gQVMg dGV4dDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zaW1wbGVfZG9tYWlu Jyk7CisgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVn cmVzc19zaW1wbGVfZG9tYWluIEFTIHBnX2NhdGFsb2cudGV4dDsKKygxIHJvdykKKworU0VM RUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3NpbXBsZV9kb21haW4nLCBwcmV0dHkg PT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJs aWMucmVncmVzc19zaW1wbGVfZG9tYWluIEFTIHBnX2NhdGFsb2cudGV4dDsKKygxIHJvdykK KworLS0gVGVzdCBkb21haW4gb3ZlciBhbm90aGVyIGRvbWFpbgorQ1JFQVRFIERPTUFJTiBy ZWdyZXNzX2Jhc2VfZG9tYWluIEFTIHZhcmNoYXIoMTApOworQ1JFQVRFIERPTUFJTiByZWdy ZXNzX2Rlcml2ZWRfZG9tYWluIEFTIHJlZ3Jlc3NfYmFzZV9kb21haW4gQ0hFQ0sgKExFTkdU SChWQUxVRSkgPiAzKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kZXJp dmVkX2RvbWFpbicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kZXJpdmVkX2RvbWFpbiBBUyBwdWJsaWMu cmVncmVzc19iYXNlX2RvbWFpbiBDT05TVFJBSU5UIHJlZ3Jlc3NfZGVyaXZlZF9kb21haW5f Y2hlY2sgQ0hFQ0sgKChsZW5ndGgoKFZBTFVFKTo6dGV4dCkgPiAzKSk7CisoMSByb3cpCisK K1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kZXJpdmVkX2RvbWFpbicsIHBy ZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Rv bWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kZXJpdmVkX2RvbWFpbiBB UyBwdWJsaWMucmVncmVzc19iYXNlX2RvbWFpbisKKyAgICAgICAgIENPTlNUUkFJTlQgcmVn cmVzc19kZXJpdmVkX2RvbWFpbl9jaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICBDSEVDSyAobGVuZ3RoKFZBTFVFOjp0ZXh0KSA+IDMpOworKDEg cm93KQorCistLSBUZXN0IGRvbWFpbiB3aXRoIGNvbXBsZXggZGVmYXVsdCBleHByZXNzaW9u cworQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfdGVzdF9zZXE7CitDUkVBVEUgRE9NQUlOIHJl Z3Jlc3Nfc2VxX2RvbWFpbiBBUyBpbnQgREVGQVVMVCBuZXh0dmFsKCdyZWdyZXNzX3Rlc3Rf c2VxJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfc2VxX2RvbWFpbicp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19zZXFfZG9tYWluIEFTIHBnX2Nh dGFsb2cuaW50NCBERUZBVUxUIG5leHR2YWwoJ3JlZ3Jlc3NfdGVzdF9zZXEnOjpyZWdjbGFz cyk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zZXFf ZG9tYWluJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9N QUlOIHB1YmxpYy5yZWdyZXNzX3NlcV9kb21haW4gQVMgcGdfY2F0YWxvZy5pbnQ0KworICAg ICAgICAgREVGQVVMVCBuZXh0dmFsKCdyZWdyZXNzX3Rlc3Rfc2VxJzo6cmVnY2xhc3MpOwor KDEgcm93KQorCistLSBUZXN0IGRvbWFpbiB3aXRoIGEgcmVuYW1lZCBzZXF1ZW5jZSBhcyBk ZWZhdWx0IGV4cHJlc3Npb24KK0FMVEVSIFNFUVVFTkNFIHJlZ3Jlc3NfdGVzdF9zZXEgUkVO QU1FIFRPIHJlZ3Jlc3NfdGVzdF9zZXFfcmVuYW1lZDsKK1NFTEVDVCBwZ19nZXRfZG9tYWlu X2RkbCgncmVncmVzc19zZXFfZG9tYWluJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRF IERPTUFJTiBwdWJsaWMucmVncmVzc19zZXFfZG9tYWluIEFTIHBnX2NhdGFsb2cuaW50NCBE RUZBVUxUIG5leHR2YWwoJ3JlZ3Jlc3NfdGVzdF9zZXFfcmVuYW1lZCc6OnJlZ2NsYXNzKTsK KygxIHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCB0eXBlIG1vZGlmaWVycworQ1JFQVRF IERPTUFJTiByZWdyZXNzX3ByZWNpc2VfbnVtZXJpYyBBUyBudW1lcmljKDEwLDIpIERFRkFV TFQgMC4wMDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19wcmVjaXNlX251 bWVyaWMnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21h aW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19wcmVj aXNlX251bWVyaWMgQVMgcGdfY2F0YWxvZy4ibnVtZXJpYyIgREVGQVVMVCAwLjAwOworKDEg cm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfcHJlY2lzZV9udW1l cmljJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfcHJlY2lzZV9udW1lcmljIEFT IHBnX2NhdGFsb2cuIm51bWVyaWMiKworICAgICAgICAgREVGQVVMVCAwLjAwOworKDEgcm93 KQorCistLSBUZXN0IGRvbWFpbiBvdmVyIGFycmF5IHR5cGUKK0NSRUFURSBET01BSU4gcmVn cmVzc19pbnRfYXJyYXlfZG9tYWluIEFTIGludFtdIENIRUNLIChhcnJheV9sZW5ndGgoVkFM VUUsIDEpIDw9IDUpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2ludF9h cnJheV9kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUg RE9NQUlOIHB1YmxpYy5yZWdyZXNzX2ludF9hcnJheV9kb21haW4gQVMgcGdfY2F0YWxvZy5f aW50NCBDT05TVFJBSU5UIHJlZ3Jlc3NfaW50X2FycmF5X2RvbWFpbl9jaGVjayBDSEVDSyAo KGFycmF5X2xlbmd0aChWQUxVRSwgMSkgPD0gNSkpOworKDEgcm93KQorCitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfaW50X2FycmF5X2RvbWFpbicsIHByZXR0eSA9PiB0 cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1 YmxpYy5yZWdyZXNzX2ludF9hcnJheV9kb21haW4gQVMgcGdfY2F0YWxvZy5faW50NCsKKyAg ICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19pbnRfYXJyYXlfZG9tYWluX2NoZWNrICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKGFycmF5X2xlbmd0aChWQUxV RSwgMSkgPD0gNSk7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIGluIG5vbi1wdWJsaWMg c2NoZW1hCitDUkVBVEUgU0NIRU1BIHJlZ3Jlc3NfdGVzdF9zY2hlbWE7CitDUkVBVEUgRE9N QUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluIEFTIHRleHQg REVGQVVMVCAndGVzdCc7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdGVz dF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEu cmVncmVzc19zY2hlbWFfZG9tYWluIEFTIHBnX2NhdGFsb2cudGV4dCBERUZBVUxUICd0ZXN0 Jzo6dGV4dDsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCBtdWx0aXBsZSBjb25z dHJhaW50IHR5cGVzIGNvbWJpbmVkCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfY29tcHJlaGVu c2l2ZV9kb21haW4gQVMgdmFyY2hhcig1MCkKKyAgICBOT1QgTlVMTAorICAgIERFRkFVTFQg J2RlZmF1bHRfdmFsdWUnCisgICAgQ0hFQ0sgKExFTkdUSChWQUxVRSkgPj0gNSkKKyAgICBD SEVDSyAoVkFMVUUgIX4gJ15ccyokJyk7ICAtLSBub3QganVzdCB3aGl0ZXNwYWNlCitTRUxF Q1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW4nKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbiBBUyBw Z19jYXRhbG9nLiJ2YXJjaGFyIiBERUZBVUxUICdkZWZhdWx0X3ZhbHVlJzo6Y2hhcmFjdGVy IHZhcnlpbmcgQ09OU1RSQUlOVCByZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluX25vdF9u dWxsIE5PVCBOVUxMIENPTlNUUkFJTlQgcmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbl9j aGVjayBDSEVDSyAoKGxlbmd0aCgoVkFMVUUpOjp0ZXh0KSA+PSA1KSkgQ09OU1RSQUlOVCBy ZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluX2NoZWNrMSBDSEVDSyAoKChWQUxVRSk6OnRl eHQgIX4gJ15ccyokJzo6dGV4dCkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFp bl9kZGwoJ3JlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFU RSBET01BSU4gcHVibGljLnJlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW4gQVMgcGdfY2F0 YWxvZy4idmFyY2hhciIrCisgICAgICAgICBERUZBVUxUICdkZWZhdWx0X3ZhbHVlJzo6Y2hh cmFjdGVyIHZhcnlpbmcgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENPTlNU UkFJTlQgcmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbl9ub3RfbnVsbCAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICBOT1QgTlVMTCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBDT05TVFJBSU5UIHJl Z3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW5fY2hlY2sgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgQ0hFQ0sgKGxlbmd0aChWQUxVRTo6dGV4dCkgPj0gNSkgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX2Nv bXByZWhlbnNpdmVfZG9tYWluX2NoZWNrMSAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgIENIRUNLIChWQUxVRTo6dGV4dCAhfiAnXlxzKiQnOjp0ZXh0KTsKKygxIHJv dykKKworLS0gVGVzdCBkb21haW4gb3ZlciBjb21wb3NpdGUgdHlwZQorQ1JFQVRFIFRZUEUg cmVncmVzc19hZGRyZXNzX3R5cGUgQVMgKHN0cmVldCB0ZXh0LCBjaXR5IHRleHQsIHppcGNv ZGUgdGV4dCk7CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfYWRkcmVzc19kb21haW4gQVMgcmVn cmVzc19hZGRyZXNzX3R5cGUgQ0hFQ0sgKChWQUxVRSkuemlwY29kZSB+ICdeXGR7NX0kJyk7 CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfYWRkcmVzc19kb21haW4nKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfYWRkcmVzc19kb21haW4gQVMgcHVi bGljLnJlZ3Jlc3NfYWRkcmVzc190eXBlIENPTlNUUkFJTlQgcmVncmVzc19hZGRyZXNzX2Rv bWFpbl9jaGVjayBDSEVDSyAoKChWQUxVRSkuemlwY29kZSB+ICdeXGR7NX0kJzo6dGV4dCkp OworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfYWRkcmVz c19kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19h ZGRyZXNzX2RvbWFpbiBBUyBwdWJsaWMucmVncmVzc19hZGRyZXNzX3R5cGUrCisgICAgICAg ICBDT05TVFJBSU5UIHJlZ3Jlc3NfYWRkcmVzc19kb21haW5fY2hlY2sgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENIRUNLICgoVkFMVUUpLnppcGNv ZGUgfiAnXlxkezV9JCc6OnRleHQpOworKDEgcm93KQorCistLSBUZXN0IGRvbWFpbiB3aXRo IE5PVCBWQUxJRCBjb25zdHJhaW50CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX25v dF92YWxpZCBBUyBpbnQ7CitBTFRFUiBET01BSU4gcmVncmVzc19kb21haW5fbm90X3ZhbGlk IEFERCBDT05TVFJBSU5UIGNoZWNrX3Bvc2l0aXZlIENIRUNLIChWQUxVRSA+IDApIE5PVCBW QUxJRDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90X3Zh bGlkJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFs aWQgQVMgcGdfY2F0YWxvZy5pbnQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgQUxURVIgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFs aWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcG9zaXRpdmUgQ0hFQ0sgKChWQUxVRSA+IDApKSBO T1QgVkFMSUQ7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVz c19kb21haW5fbm90X3ZhbGlkJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1 YmxpYy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQVMgcGdfY2F0YWxvZy5pbnQ0OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIEFMVEVSIERPTUFJTiBwdWJs aWMucmVncmVzc19kb21haW5fbm90X3ZhbGlkIEFERCBDT05TVFJBSU5UIGNoZWNrX3Bvc2l0 aXZlIENIRUNLIChWQUxVRSA+IDApIE5PVCBWQUxJRDsKKygxIHJvdykKKworLS0gVGVzdCBk b21haW4gd2l0aCBtaXggb2YgdmFsaWQgYW5kIG5vdCB2YWxpZCBjb25zdHJhaW50cworQ1JF QVRFIERPTUFJTiByZWdyZXNzX2RvbWFpbl9taXhlZCBBUyBpbnQgQ0hFQ0sgKFZBTFVFICE9 IDApOworQUxURVIgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX21peGVkIEFERCBDT05TVFJBSU5U IGNoZWNrX3JhbmdlIENIRUNLIChWQUxVRSBCRVRXRUVOIDEgQU5EIDEwMCkgTk9UIFZBTElE OworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9taXhlZCcpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMu cmVncmVzc19kb21haW5fbWl4ZWQgQVMgcGdfY2F0YWxvZy5pbnQ0IENPTlNUUkFJTlQgcmVn cmVzc19kb21haW5fbWl4ZWRfY2hlY2sgQ0hFQ0sgKChWQUxVRSA8PiAwKSk7KworIEFMVEVS IERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fbWl4ZWQgQUREIENPTlNUUkFJTlQgY2hl Y2tfcmFuZ2UgQ0hFQ0sgKCgoVkFMVUUgPj0gMSkgQU5EIChWQUxVRSA8PSAxMDApKSkgTk9U IFZBTElEOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nf ZG9tYWluX21peGVkJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fbWl4ZWQgQVMgcGdfY2F0YWxv Zy5pbnQ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX2RvbWFpbl9taXhlZF9jaGVj ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIDw+IDAp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgQUxURVIgRE9NQUlOIHB1YmxpYy5yZWdy ZXNzX2RvbWFpbl9taXhlZCBBREQgQ09OU1RSQUlOVCBjaGVja19yYW5nZSBDSEVDSyAoVkFM VUUgPj0gMSBBTkQgVkFMVUUgPD0gMTAwKSBOT1QgVkFMSUQ7CisoMSByb3cpCisKKy0tIFRl c3QgZG9tYWluIHdpdGggY29sbGF0aW9uCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfZG9tYWlu X3dpdGhfY29sbGF0ZSBBUyB0ZXh0IENPTExBVEUgIkMiOworU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdyZWdyZXNzX2RvbWFpbl93aXRoX2NvbGxhdGUnKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUg RE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl93aXRoX2NvbGxhdGUgQVMgcGdfY2F0YWxv Zy50ZXh0IENPTExBVEUgIkMiOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZScsIHByZXR0eSA9PiB0cnVlKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMu cmVncmVzc19kb21haW5fd2l0aF9jb2xsYXRlIEFTIHBnX2NhdGFsb2cudGV4dCsKKyAgICAg ICAgIENPTExBVEUgIkMiOworKDEgcm93KQorCistLSBDbGVhbnVwCitEUk9QIERPTUFJTiBy ZWdyZXNzX3VzX3Bvc3RhbF9jb2RlOworRFJPUCBET01BSU4gcmVncmVzc19kb21haW5fbm90 X251bGw7CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9jaGVjazsKK0RST1AgRE9NQUlO ICJyZWdyZXNzX2RvbWFpbiB3aXRoIHNwYWNlIjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfY29t cHJlaGVuc2l2ZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3Rlc3Rfc2NoZW1hLnJl Z3Jlc3Nfc2NoZW1hX2RvbWFpbjsKK0RST1AgU0NIRU1BIHJlZ3Jlc3NfdGVzdF9zY2hlbWE7 CitEUk9QIERPTUFJTiByZWdyZXNzX2FkZHJlc3NfZG9tYWluOworRFJPUCBUWVBFIHJlZ3Jl c3NfYWRkcmVzc190eXBlOworRFJPUCBET01BSU4gcmVncmVzc19pbnRfYXJyYXlfZG9tYWlu OworRFJPUCBET01BSU4gcmVncmVzc19wcmVjaXNlX251bWVyaWM7CitEUk9QIERPTUFJTiBy ZWdyZXNzX3NlcV9kb21haW47CitEUk9QIFNFUVVFTkNFIHJlZ3Jlc3NfdGVzdF9zZXFfcmVu YW1lZDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZGVyaXZlZF9kb21haW47CitEUk9QIERPTUFJ TiByZWdyZXNzX2Jhc2VfZG9tYWluOworRFJPUCBET01BSU4gcmVncmVzc19zaW1wbGVfZG9t YWluOworRFJPUCBET01BSU4gcmVncmVzc19kb21haW5fbm90X3ZhbGlkOworRFJPUCBET01B SU4gcmVncmVzc19kb21haW5fbWl4ZWQ7CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl93 aXRoX2NvbGxhdGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBmNTY0 ODJmYjlmMS4uOGI2ODgxYzM5N2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZQpAQCAtMjgsNyArMjgsNyBAQCB0ZXN0OiBzdHJpbmdzIG1kNSBudW1lcm9sb2d5IHBvaW50 IGxzZWcgbGluZSBib3ggcGF0aCBwb2x5Z29uIGNpcmNsZSBkYXRlIHRpbWUgdAogIyBnZW9t ZXRyeSBkZXBlbmRzIG9uIHBvaW50LCBsc2VnLCBsaW5lLCBib3gsIHBhdGgsIHBvbHlnb24s IGNpcmNsZQogIyBob3JvbG9neSBkZXBlbmRzIG9uIGRhdGUsIHRpbWUsIHRpbWV0eiwgdGlt ZXN0YW1wLCB0aW1lc3RhbXB0eiwgaW50ZXJ2YWwKICMgLS0tLS0tLS0tLQotdGVzdDogZ2Vv bWV0cnkgaG9yb2xvZ3kgdHN0eXBlcyByZWdleCB0eXBlX3Nhbml0eSBvcHJfc2FuaXR5IG1p c2Nfc2FuaXR5IGNvbW1lbnRzIGV4cHJlc3Npb25zIHVuaWNvZGUgeGlkIG12Y2MgZGF0YWJh c2Ugc3RhdHNfaW1wb3J0Cit0ZXN0OiBnZW9tZXRyeSBob3JvbG9neSB0c3R5cGVzIHJlZ2V4 IHR5cGVfc2FuaXR5IG9wcl9zYW5pdHkgbWlzY19zYW5pdHkgY29tbWVudHMgZXhwcmVzc2lv bnMgdW5pY29kZSB4aWQgbXZjYyBkYXRhYmFzZSBzdGF0c19pbXBvcnQgb2JqZWN0X2RkbAog CiAjIC0tLS0tLS0tLS0KICMgTG9hZCBodWdlIGFtb3VudHMgb2YgZGF0YQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb2JqZWN0X2RkbC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9vYmplY3RfZGRsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uOThmYjIwMDE3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9vYmplY3RfZGRsLnNxbApAQCAtMCwwICsxLDEzNSBAQAorLS0KKy0tIFRlc3Qg Zm9yIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIGdldCBvYmplY3QgRERMOgorLS0gLSBw Z19nZXRfZG9tYWluX2RkbAorLS0KKworQ1JFQVRFIERPTUFJTiByZWdyZXNzX3VzX3Bvc3Rh bF9jb2RlIEFTIFRFWFQKKyAgICBERUZBVUxUICcwMDAwMCcKKyAgICBDT05TVFJBSU5UIHJl Z3Jlc3NfdXNfcG9zdGFsX2NvZGVfY2hlY2sKKyAgICAgICAgQ0hFQ0sgKAorICAgICAgICAg ICAgVkFMVUUgfiAnXlxkezV9JCcKKyAgICBPUiBWQUxVRSB+ICdeXGR7NX0tXGR7NH0kJwor ICAgICk7CisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0YWxf Y29kZScpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9j b2RlJywgcHJldHR5ID0+IGZhbHNlKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVn cmVzc191c19wb3N0YWxfY29kZScsIGZhbHNlKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgncmVncmVzc191c19wb3N0YWxfY29kZScsIHByZXR0eSA9PiB0cnVlKTsKK1NFTEVDVCBw Z19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0YWxfY29kZScsIHRydWUpOworCisK K0NSRUFURSBET01BSU4gcmVncmVzc19kb21haW5fbm90X251bGwgQVMgSU5UIE5PVCBOVUxM OworCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX25vdF9udWxs Jyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX25vdF9udWxs JywgcHJldHR5ID0+IHRydWUpOworCisKK0NSRUFURSBET01BSU4gcmVncmVzc19kb21haW5f Y2hlY2sgQVMgSU5UCisgICAgQ09OU1RSQUlOVCByZWdyZXNzX2EgQ0hFQ0sgKFZBTFVFIDwg MTAwKQorICAgIENPTlNUUkFJTlQgcmVncmVzc19iIENIRUNLIChWQUxVRSA+IDEwKTsKKwor U0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9jaGVjaycpOworU0VM RUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9jaGVjaycsIHByZXR0eSA9 PiB0cnVlKTsKKworCitDUkVBVEUgRE9NQUlOICJyZWdyZXNzX2RvbWFpbiB3aXRoIHNwYWNl IiBBUyBJTlQKKyAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYSBDSEVDSyAoVkFMVUUgPCAxMDAp CisgICAgQ09OU1RSQUlOVCAicmVncmVzc19Db25zdHJhaW50IEIiIENIRUNLIChWQUxVRSA+ IDEwKQorICAgIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWludEMiIENIRUNLIChWQUxV RSAhPSA1NSk7CisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgnInJlZ3Jlc3NfZG9tYWlu IHdpdGggc3BhY2UiJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJyJyZWdyZXNzX2Rv bWFpbiB3aXRoIHNwYWNlIicsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVzdCBlcnJvciBj YXNlcworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX25vbmV4aXN0ZW50X2Rv bWFpbic6OnJlZ3R5cGUpOyAgLS0gc2hvdWxkIGZhaWwKK1NFTEVDVCBwZ19nZXRfZG9tYWlu X2RkbChOVUxMKTsgIC0tIHNob3VsZCByZXR1cm4gTlVMTAorU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKE5VTEwsIHByZXR0eSA9PiB0cnVlKTsgIC0tIHNob3VsZCByZXR1cm4gTlVMTAor CistLSBUZXN0IGRvbWFpbnMgd2l0aCBubyBjb25zdHJhaW50cworQ1JFQVRFIERPTUFJTiBy ZWdyZXNzX3NpbXBsZV9kb21haW4gQVMgdGV4dDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgncmVncmVzc19zaW1wbGVfZG9tYWluJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwo J3JlZ3Jlc3Nfc2ltcGxlX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVzdCBk b21haW4gb3ZlciBhbm90aGVyIGRvbWFpbgorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2Jhc2Vf ZG9tYWluIEFTIHZhcmNoYXIoMTApOworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2Rlcml2ZWRf ZG9tYWluIEFTIHJlZ3Jlc3NfYmFzZV9kb21haW4gQ0hFQ0sgKExFTkdUSChWQUxVRSkgPiAz KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kZXJpdmVkX2RvbWFpbicp OworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2Rlcml2ZWRfZG9tYWluJywg cHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRvbWFpbiB3aXRoIGNvbXBsZXggZGVmYXVs dCBleHByZXNzaW9ucworQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfdGVzdF9zZXE7CitDUkVB VEUgRE9NQUlOIHJlZ3Jlc3Nfc2VxX2RvbWFpbiBBUyBpbnQgREVGQVVMVCBuZXh0dmFsKCdy ZWdyZXNzX3Rlc3Rfc2VxJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nf c2VxX2RvbWFpbicpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3NlcV9k b21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIHdpdGggYSByZW5h bWVkIHNlcXVlbmNlIGFzIGRlZmF1bHQgZXhwcmVzc2lvbgorQUxURVIgU0VRVUVOQ0UgcmVn cmVzc190ZXN0X3NlcSBSRU5BTUUgVE8gcmVncmVzc190ZXN0X3NlcV9yZW5hbWVkOworU0VM RUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3NlcV9kb21haW4nKTsKKworLS0gVGVz dCBkb21haW4gd2l0aCB0eXBlIG1vZGlmaWVycworQ1JFQVRFIERPTUFJTiByZWdyZXNzX3By ZWNpc2VfbnVtZXJpYyBBUyBudW1lcmljKDEwLDIpIERFRkFVTFQgMC4wMDsKK1NFTEVDVCBw Z19nZXRfZG9tYWluX2RkbCgncmVncmVzc19wcmVjaXNlX251bWVyaWMnKTsKK1NFTEVDVCBw Z19nZXRfZG9tYWluX2RkbCgncmVncmVzc19wcmVjaXNlX251bWVyaWMnLCBwcmV0dHkgPT4g dHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIG92ZXIgYXJyYXkgdHlwZQorQ1JFQVRFIERPTUFJ TiByZWdyZXNzX2ludF9hcnJheV9kb21haW4gQVMgaW50W10gQ0hFQ0sgKGFycmF5X2xlbmd0 aChWQUxVRSwgMSkgPD0gNSk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nf aW50X2FycmF5X2RvbWFpbicpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNz X2ludF9hcnJheV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWlu IGluIG5vbi1wdWJsaWMgc2NoZW1hCitDUkVBVEUgU0NIRU1BIHJlZ3Jlc3NfdGVzdF9zY2hl bWE7CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFf ZG9tYWluIEFTIHRleHQgREVGQVVMVCAndGVzdCc7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluJyk7CisKKy0t IFRlc3QgZG9tYWluIHdpdGggbXVsdGlwbGUgY29uc3RyYWludCB0eXBlcyBjb21iaW5lZAor Q1JFQVRFIERPTUFJTiByZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluIEFTIHZhcmNoYXIo NTApCisgICAgTk9UIE5VTEwKKyAgICBERUZBVUxUICdkZWZhdWx0X3ZhbHVlJworICAgIENI RUNLIChMRU5HVEgoVkFMVUUpID49IDUpCisgICAgQ0hFQ0sgKFZBTFVFICF+ICdeXHMqJCcp OyAgLS0gbm90IGp1c3Qgd2hpdGVzcGFjZQorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdy ZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisK Ky0tIFRlc3QgZG9tYWluIG92ZXIgY29tcG9zaXRlIHR5cGUKK0NSRUFURSBUWVBFIHJlZ3Jl c3NfYWRkcmVzc190eXBlIEFTIChzdHJlZXQgdGV4dCwgY2l0eSB0ZXh0LCB6aXBjb2RlIHRl eHQpOworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2FkZHJlc3NfZG9tYWluIEFTIHJlZ3Jlc3Nf YWRkcmVzc190eXBlIENIRUNLICgoVkFMVUUpLnppcGNvZGUgfiAnXlxkezV9JCcpOworU0VM RUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2FkZHJlc3NfZG9tYWluJyk7CitTRUxF Q1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfYWRkcmVzc19kb21haW4nLCBwcmV0dHkg PT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIHdpdGggTk9UIFZBTElEIGNvbnN0cmFpbnQK K0NSRUFURSBET01BSU4gcmVncmVzc19kb21haW5fbm90X3ZhbGlkIEFTIGludDsKK0FMVEVS IERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQUREIENPTlNUUkFJTlQgY2hlY2tf cG9zaXRpdmUgQ0hFQ0sgKFZBTFVFID4gMCkgTk9UIFZBTElEOworU0VMRUNUIHBnX2dldF9k b21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQnKTsKK1NFTEVDVCBwZ19nZXRf ZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90X3ZhbGlkJywgcHJldHR5ID0+IHRydWUp OworCistLSBUZXN0IGRvbWFpbiB3aXRoIG1peCBvZiB2YWxpZCBhbmQgbm90IHZhbGlkIGNv bnN0cmFpbnRzCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX21peGVkIEFTIGludCBD SEVDSyAoVkFMVUUgIT0gMCk7CitBTFRFUiBET01BSU4gcmVncmVzc19kb21haW5fbWl4ZWQg QUREIENPTlNUUkFJTlQgY2hlY2tfcmFuZ2UgQ0hFQ0sgKFZBTFVFIEJFVFdFRU4gMSBBTkQg MTAwKSBOT1QgVkFMSUQ7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9t YWluX21peGVkJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWlu X21peGVkJywgcHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRvbWFpbiB3aXRoIGNvbGxh dGlvbgorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2RvbWFpbl93aXRoX2NvbGxhdGUgQVMgdGV4 dCBDT0xMQVRFICJDIjsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21h aW5fd2l0aF9jb2xsYXRlJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nf ZG9tYWluX3dpdGhfY29sbGF0ZScsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gQ2xlYW51cAor RFJPUCBET01BSU4gcmVncmVzc191c19wb3N0YWxfY29kZTsKK0RST1AgRE9NQUlOIHJlZ3Jl c3NfZG9tYWluX25vdF9udWxsOworRFJPUCBET01BSU4gcmVncmVzc19kb21haW5fY2hlY2s7 CitEUk9QIERPTUFJTiAicmVncmVzc19kb21haW4gd2l0aCBzcGFjZSI7CitEUk9QIERPTUFJ TiByZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluOworRFJPUCBET01BSU4gcmVncmVzc190 ZXN0X3NjaGVtYS5yZWdyZXNzX3NjaGVtYV9kb21haW47CitEUk9QIFNDSEVNQSByZWdyZXNz X3Rlc3Rfc2NoZW1hOworRFJPUCBET01BSU4gcmVncmVzc19hZGRyZXNzX2RvbWFpbjsKK0RS T1AgVFlQRSByZWdyZXNzX2FkZHJlc3NfdHlwZTsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfaW50 X2FycmF5X2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfcHJlY2lzZV9udW1lcmljOwor RFJPUCBET01BSU4gcmVncmVzc19zZXFfZG9tYWluOworRFJPUCBTRVFVRU5DRSByZWdyZXNz X3Rlc3Rfc2VxX3JlbmFtZWQ7CitEUk9QIERPTUFJTiByZWdyZXNzX2Rlcml2ZWRfZG9tYWlu OworRFJPUCBET01BSU4gcmVncmVzc19iYXNlX2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jl c3Nfc2ltcGxlX2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX25vdF92YWxp ZDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX21peGVkOworRFJPUCBET01BSU4gcmVn cmVzc19kb21haW5fd2l0aF9jb2xsYXRlOwotLSAKMi40NS4xCgo= --------------p0A0shhRdR89YNmhEsv0GkGF--