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 1vlV9b-00DAd1-2Q for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Jan 2026 16:46:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vlV9Z-00AWc2-2r for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Jan 2026 16:45:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vlV9Z-00AWbu-1F for pgsql-hackers@lists.postgresql.org; Thu, 29 Jan 2026 16:45:57 +0000 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vlV9W-00000000244-3Go6 for pgsql-hackers@lists.postgresql.org; Thu, 29 Jan 2026 16:45:57 +0000 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-42fbb061a08so170778f8f.2 for ; Thu, 29 Jan 2026 08:45:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769705154; x=1770309954; darn=lists.postgresql.org; h=in-reply-to:from:cc:content-language:references:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=MwWj2Ccm71DCBQogduesd2hYhsgbYio6/+4I8S85UQU=; b=fWX1/6k1x99yvT+SusLENMK7unzXljLQjdoK3XqSvooOapgMa45ULclXozepV02Tj2 7cnADpvZZE35MvUOdAk7q6u10JWWslv369GBgT5Bt63JSuIIW1691ptANCf78rk1PMCf K4TU/hRONc5ysiVQ0n3pB6jY6080cd4Ty3fBKcMFNnbGEpNcR3pkpA6JPi1wgsxSDm0w RmO9o/ZIdbdO+6tUbHGASM7K+F9UfiPx+/1ZmZjvFBtkRSAFjjHGxJS1xDw49H3gQVuZ aHzPzA2evwcG5n57qbRePVVFEwEKWshOEfaPVbBRhz3eqLkPYaIOBXaAg8/jZRf/dalq GXbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769705154; x=1770309954; h=in-reply-to:from:cc: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=MwWj2Ccm71DCBQogduesd2hYhsgbYio6/+4I8S85UQU=; b=jWe59tvFt++tsB6ZG9r+fHHdNX7nys8qgHq+G9r4js18oLRLXmFs8+GeFR4VzfrPXO 9X65UoDV+Hm4g+LWx8EtcPFOmNNOJKvDNWhBh0ceT0BorsVLbFQkdgxTOJXFX2e0dDps dUro8R8EtqHgQHPFSpmmJrQ3/Gsj8fPoTOWwWkgqoQPmRTd7JEtYeIcugZm0RQ3URvvE hUWTOwD4M9ZKVDevN16I5oUtcAhwJ5lKRU9TSMaV4Dn8e0OvxLjQHdR8D4Jec+8+uWag NEX6G5sl/j89bl2ptesS1AMpyp9TYz6ixQqYKbrIwdJV4neJgQRwyN/wct7lRXMj0WhS k6OA== X-Gm-Message-State: AOJu0YwrdIg2A1p9krlSuWYs5zrkxhLnoM0jcVCBc95WrIUV/uCtEne0 R5kdNzad59sSnaUQWL8RIGUHbrzvkR+i3SDYBJzI4JkMwOjIWetP7LJ43wTrbw== X-Gm-Gg: AZuq6aI8IRqBwoOb8AeKpzItL4dblUlulvwgRqAd8jhM7xGZhW4ftNtTyq2sgfqYVwd 7e8ka7x3fDGxmvVaj2/u8lxLbTQsJ0xMTaS6dnb5mh0nvM9BrNrXA7H5T9Z1z0Pn8HEhhPi0O4J qI7gBeWTUit0QxEC2mfibT3aarCCK8CL3256QsotilbKNZI50UD6oHDdOtpQaNB6u+uQHcAoUU2 I9VAHuWhn5YH69S4YZcLzRUJZ9cwrdnIuUGes5f/Uy3vNlZ9/Z6Yx2Hl05Hh0ohEFhTaGekBe4C 2UiX/noxndWv2+u6LLmg1UEPR8lx3VfqlT2tjRckcWEIHT8807ZXtWHJkmdWd6WI+USEy9kgz1j g9rRZvZ0/DcqK23jErNKMK1OcRuPoV5kUUXtxZBC1O2o+AZlKdsgbowz+NSsw44cYYeXWGmhvRv JueHuQTCrvT5vvgXO+/0ayMm2phvDLDm1MQP/peY7aQLrafMFNu35B/1rFbp/pATAYZBag X-Received: by 2002:a05:6000:1848:b0:435:d7b1:9cf1 with SMTP id ffacd0b85a97d-435f3ad87e5mr142637f8f.7.1769705153531; Thu, 29 Jan 2026 08:45:53 -0800 (PST) Received: from [192.168.5.53] ([163.116.172.146]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-435e10e474csm15636166f8f.2.2026.01.29.08.45.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Jan 2026 08:45:52 -0800 (PST) Content-Type: multipart/mixed; boundary="------------GNCbG2nUQ0wuzkgCnt3Wm9AT" Message-ID: Date: Thu, 29 Jan 2026 17:45:52 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] pg_get_domain_ddl: DDL reconstruction function for CREATE DOMAIN statement To: haritabh1992@gmail.com References: <5dbba701-c93b-4625-b35b-76d52131535e@gmail.com> <176953843500.1247419.17388294117341687241.pgcf@coridan.postgresql.org> Content-Language: en-US Cc: pgsql-hackers@lists.postgresql.org From: Florin Irion In-Reply-To: <176953843500.1247419.17388294117341687241.pgcf@coridan.postgresql.org> 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. --------------GNCbG2nUQ0wuzkgCnt3Wm9AT Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 27/01/26 19:27, Haritabh Gupta wrote: > Hello, > Please find below some comments (mostly minor ones): > > 1. We need to add the following comma in the docs change. so that it looks same as other functions: > diff --git a/doc/src/sgml/func/func-info.sgml b/doc/src/sgml/func/func-info.sgml > index 25f87b78344..bc01c73f4ea 100644 > --- a/doc/src/sgml/func/func-info.sgml > +++ b/doc/src/sgml/func/func-info.sgml > @@ -3861,7 +3861,7 @@ acl | {postgres=arwdDxtm/postgres,foo=r/postgres} > pg_get_domain_ddl > > pg_get_domain_ddl ( domain regtype > - pretty boolean ) > + , pretty boolean ) > text > > > > > 2. In the function signature there is `int prettyFlags` argument, while the doc suggests `pretty`: > +/* > + * get_formatted_string > + * > + * Return a formatted version of the string. > + * > + * pretty - If pretty is true, the output includes tabs (\t) and newlines (\n). > + * noOfTabChars - indent with specified no of tabs. > + * fmt - printf-style format string used by appendStringInfoVA. > + */ > +static void > +get_formatted_string(StringInfo buf, int prettyFlags, int noOfTabChars, const char *fmt,...) > > > 3. In a similar patch (https://www.postgresql.org/message-id/flat/CANxoLDdJsRJqnjMXV3yjsk07Z5iRWxG-c2hZJC7bAKqf8ZXj_A@mail.gmail.com), author has defined a separate macro to make the usage of `GET_PRETTY_FLAGS` cleaner, We can use the same in function `pg_get_domain_ddl_ext`: > +#define GET_DDL_PRETTY_FLAGS(pretty) \ > + ((pretty) ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) \ > + : 0) > > +Datum > +pg_get_policy_ddl(PG_FUNCTION_ARGS) > +{ > + Oid tableID = PG_GETARG_OID(0); > + Name policyName = PG_GETARG_NAME(1); > + bool pretty = PG_GETARG_BOOL(2); > + int prettyFlags; > + char *res; > + > + prettyFlags = GET_DDL_PRETTY_FLAGS(pretty); Thanks for reviewing! I addressed your first 3 suggestions and attached v6. > 4. Usually the tests for the function to get the DDL definition of an object are present in the same testcase file where the `CREATE...` command exists, e.g. test for `pg_get_indexdef` exists in `create_index.sql` file. Similarly tests for `pg_get_functiondef` exists in `create_procedure.sql` file and so on. Currently in the patch, the tests for `pg_get_domain_ddl` are put in a new file `object_ddl.sql` but I guess it can be put in the existing file `domain.sql` because that is where the `CREATE DOMAIN...` tests reside. For number 4 I think it's better to keep it in a separate file as this is just one of the "get_object_ddl" functions, and in this `object_ddl` file we can add more test also for other functions similar to this one. What do you/others think? Cheers, Florin Irion EDB -- www.enterprisedb.com --------------GNCbG2nUQ0wuzkgCnt3Wm9AT Content-Type: text/plain; charset=UTF-8; name="v6-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.patch" Content-Disposition: attachment; filename*0="v6-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.pa"; filename*1="tch" Content-Transfer-Encoding: base64 YEZyb20gMzBhYTFkMmE2Yzc5MjBkY2VjMjA4ZGE0MTA3ZjA0Mzg0NGVmYjQ5YiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRmxvcmluIElyaW9uIDxmbG9yaW4uaXJpb25AZW50 ZXJwcmlzZWRiLmNvbT4KRGF0ZTogVGh1LCAxOCBTZXAgMjAyNSAxODo1Mjo0MyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjZdIEFkZCBwZ19nZXRfZG9tYWluX2RkbCgpIGZ1bmN0aW9uIHRv IHJlY29uc3RydWN0IENSRUFURQogRE9NQUlOIHN0YXRlbWVudHMKTUlNRS1WZXJzaW9uOiAx LjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBzeXN0 ZW0gZnVuY3Rpb24gcGdfZ2V0X2RvbWFpbl9kZGwoKSB0aGF0CnJlY29uc3RydWN0cyB0aGUg Q1JFQVRFIERPTUFJTiBzdGF0ZW1lbnQgZm9yIGEgZ2l2ZW4gZG9tYWluLiBUaGUgZnVuY3Rp b24KdGFrZXMgYSByZWd0eXBlIHBhcmFtZXRlciBhbmQgcmV0dXJucyB0aGUgY29tcGxldGUg RERMIHN0YXRlbWVudCBpbmNsdWRpbmcKdGhlIGRvbWFpbiBuYW1lLCBiYXNlIHR5cGUsIGRl ZmF1bHQgdmFsdWUsIGFuZCBhbGwgYXNzb2NpYXRlZCBjb25zdHJhaW50cy4KClRoZSBmdW5j dGlvbiBmb2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gYXMgb3RoZXIgRERMIHJlY29uc3RydWN0 aW9uIGZ1bmN0aW9ucwpsaWtlIHBnX2dldF9mdW5jdGlvbmRlZigpIGFuZCBwZ19nZXRfY29u c3RyYWludGRlZigpLCBwcm92aWRpbmcgYQpkZWNvbXBpbGVkIHJlY29uc3RydWN0aW9uIHJh dGhlciB0aGFuIHRoZSBvcmlnaW5hbCBjb21tYW5kIHRleHQuCgpLZXkgZmVhdHVyZXM6Ciog U3VwcG9ydHMgZG9tYWlucyB3aXRoIGRlZmF1bHQgdmFsdWVzCiogSW5jbHVkZXMgYWxsIGRv bWFpbiBjb25zdHJhaW50cyAoQ0hFQ0ssIE5PVCBOVUxMKQoqIE5PVCBWQUxJRCBjb25zdHJh aW50IGFyZSBoYW5kbGVkIHdpdGggYW4gZXh0cmEgQUxURVIgY29tbWFuZC4KKiBQcm9wZXJs eSBxdW90ZXMgaWRlbnRpZmllcnMgYW5kIHNjaGVtYSBuYW1lcwoqIEhhbmRsZXMgY29tcGxl eCBjb25zdHJhaW50IGV4cHJlc3Npb25zCiogcHJldHR5IHByaW50aW5nIHN1cHBvcnQKKiB3 YXJuIGFnYWluc3QgY29uZmxpY3RpbmcgYnVpbHQtaW4gbmFtZXMKKiBVc2VzIEdFVF9ERExf UFJFVFRZX0ZMQUdTIG1hY3JvIGZvciBjb25zaXN0ZW50IHByZXR0eS1wcmludGluZyBiZWhh dmlvcgoKQSBuZXcgZG9jdW1lbnRhdGlvbiBzZWN0aW9uICJHZXQgT2JqZWN0IERETCBGdW5j dGlvbnMiIGhhcyBiZWVuIGNyZWF0ZWQKdG8gZ3JvdXAgRERMIHJlY29uc3RydWN0aW9uIGZ1 bmN0aW9ucywgc3RhcnRpbmcgd2l0aCBwZ19nZXRfZG9tYWluX2RkbCgpLgpUaGlzIHByb3Zp ZGVzIGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIERETCBmdW5jdGlvbnMgZm9yIG90aGVyIG9i amVjdCB0eXBlcy4KCkNvbXByZWhlbnNpdmUgcmVncmVzc2lvbiB0ZXN0cyBhcmUgaW5jbHVk ZWQgY292ZXJpbmcgdmFyaW91cyBkb21haW4KY29uZmlndXJhdGlvbnMuIEluIGEgc2VwYXJh dGUgZmlsZSBzcWwvb2JqZWN0X2RkbC5zcWwgd2hlcmUgbW9yZQoiZ2V0X29iamVjdF9kZGwi IGZ1bmN0aW9ucyBjYW4gYmUgdGVzdGVkIGluIHRoZSBmdXR1cmUuCgpSZWZlcmVuY2U6IFBH LTE1MQpBdXRob3I6IEZsb3JpbiBJcmlvbiA8ZmxvcmluLmlyaW9uQGVudGVycHJpc2VkYi5j b20+CkF1dGhvcjogVGltIFdhaXplbmVnZ2VyIDx0aW0ud2FpemVuZWdnZXJAZW50ZXJwcmlz ZWRiLmNvbT4KUmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVyYSBhbHZoZXJyZUBhbHZoLm5v LWlwLm9yZwpSZXZpZXdlZC1ieTogamlhbiBoZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IE5laWwgQ2hlbiA8Y2FycGVudGVyLm5haWwuY3pAZ21haWwuY29tPgpSZXZp ZXdlZC1ieTogTWFuIFplbmcgPHplbmdtYW5AaGFsb2RidGVjaC5jb20+ClJldmlld2VkLWJ5 OiBIYXJpdGFiaCA8R3VwdGEgaGFyaXRhYmgxOTkyQGdtYWlsLmNvbT4KLS0tCiBkb2Mvc3Jj L3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbCAgICAgICAgIHwgIDUzICsrKysKIHNyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgfCAgIDYgKwogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICB8IDI0NSArKysrKysrKysrKysrKysrCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICAzICsKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2RkbC5vdXQgfCAzNDggKysrKysrKysrKysr KysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAg fCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9kZGwuc3FsICAgICAgfCAx NDUgKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA4MDEgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvb2JqZWN0X2RkbC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNz L3NxbC9vYmplY3RfZGRsLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1 bmMtaW5mby5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKaW5kZXgg Mjk0ZjQ1ZTgyYTMuLmViMTI4ZmVkZTA5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVu Yy9mdW5jLWluZm8uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dt bApAQCAtMzg0NSw0ICszODQ1LDU3IEBAIGFjbCAgICAgIHwge3Bvc3RncmVzPWFyd2REeHRt L3Bvc3RncmVzLGZvbz1yL3Bvc3RncmVzfQogCiAgIDwvc2VjdDI+CiAKKyAgPHNlY3QyIGlk PSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwiPgorICAgPHRpdGxlPkdldCBPYmplY3QgRERM IEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRoZSBmdW5jdGlvbnMgc2hv d24gaW4gPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWdldC1vYmplY3QtZGRsLXRhYmxlIi8+ CisgICAgcHJpbnQgdGhlIERETCBzdGF0ZW1lbnRzIGZvciB2YXJpb3VzIGRhdGFiYXNlIG9i amVjdHMuCisgICAgKFRoaXMgaXMgYSBkZWNvbXBpbGVkIHJlY29uc3RydWN0aW9uLCBub3Qg dGhlIG9yaWdpbmFsIHRleHQKKyAgICBvZiB0aGUgY29tbWFuZC4pCisgICA8L3BhcmE+CisK KyAgIDx0YWJsZSBpZD0iZnVuY3Rpb25zLWdldC1vYmplY3QtZGRsLXRhYmxlIj4KKyAgICA8 dGl0bGU+R2V0IE9iamVjdCBEREwgRnVuY3Rpb25zPC90aXRsZT4KKyAgICA8dGdyb3VwIGNv bHM9IjEiPgorICAgICA8dGhlYWQ+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xl PSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAg ICAgIEZ1bmN0aW9uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBE ZXNjcmlwdGlvbgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAg IDwvdGhlYWQ+CisKKyAgICAgPHRib2R5PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkg cm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgor ICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfZ2V0X2RvbWFpbl9k ZGw8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+ cGdfZ2V0X2RvbWFpbl9kZGw8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+ZG9tYWluPC9wYXJh bWV0ZXI+IDx0eXBlPnJlZ3R5cGU8L3R5cGU+CisgICAgICAgICA8b3B0aW9uYWw+LCA8cGFy YW1ldGVyPnByZXR0eTwvcGFyYW1ldGVyPiA8dHlwZT5ib29sZWFuPC90eXBlPiA8L29wdGlv bmFsPikKKyAgICAgICAgPHJldHVybnZhbHVlPnRleHQ8L3JldHVybnZhbHVlPgorICAgICAg IDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmVjb25zdHJ1Y3RzIHRoZSBjcmVh dGluZyBjb21tYW5kIGZvciBhIGRvbWFpbi4KKyAgICAgICAgVGhlIHJlc3VsdCBpcyBhIGNv bXBsZXRlIDxjb21tYW5kPkNSRUFURSBET01BSU48L2NvbW1hbmQ+IHN0YXRlbWVudC4KKyAg ICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8cGFyYW1ldGVyPmRv bWFpbjwvcGFyYW1ldGVyPiBwYXJhbWV0ZXIgdXNlcyB0eXBlIDx0eXBlPnJlZ3R5cGU8L3R5 cGU+LAorICAgICAgICB3aGljaCBmb2xsb3dzIHRoZSBzdGFuZGFyZCA8dmFybmFtZT5zZWFy Y2hfcGF0aDwvdmFybmFtZT4gZm9yIHR5cGUgbmFtZQorICAgICAgICByZXNvbHV0aW9uLiBJ ZiBhIGRvbWFpbiBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgYnVpbHQtaW4gdHlwZSBuYW1lCisg ICAgICAgIChmb3IgZXhhbXBsZSwgYSBkb21haW4gbmFtZWQgPGxpdGVyYWw+aW50PC9saXRl cmFsPiksIHlvdSBtdXN0IHVzZSBhCisgICAgICAgIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSAo Zm9yIGV4YW1wbGUsIDxsaXRlcmFsPidwdWJsaWMuaW50Jzo6cmVndHlwZTwvbGl0ZXJhbD4p CisgICAgICAgIHRvIHJlZmVyZW5jZSB0aGUgZG9tYWluLgorICAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+CisgICA8 L3RhYmxlPgorCisgIDwvc2VjdDI+CisKICAgPC9zZWN0MT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCmluZGV4IGViOWUzMWFlMWJmLi5jMzAzYWZmYWRj ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNx bAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCkBAIC02 NTcsNiArNjU3LDEyIEBAIExBTkdVQUdFIElOVEVSTkFMCiBTVFJJQ1QgVk9MQVRJTEUgUEFS QUxMRUwgVU5TQUZFCiBBUyAncGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXAn OwogCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTgorIHBnX2dldF9kb21haW5fZGRsKGRv bWFpbl9uYW1lIHJlZ3R5cGUsIHByZXR0eSBib29sIERFRkFVTFQgZmFsc2UpCisgUkVUVVJO UyB0ZXh0CisgTEFOR1VBR0UgaW50ZXJuYWwKK0FTICdwZ19nZXRfZG9tYWluX2RkbF9leHQn OworCiAtLQogLS0gVGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGZ1bmN0aW9ucyBtZWFu IHRoYXQgYW55b25lIGNhbiBleGVjdXRlIHRoZW0uCiAtLSBBIG51bWJlciBvZiBmdW5jdGlv bnMgc2hvdWxkbid0IGJlIGV4ZWN1dGFibGUgYnkganVzdCBhbnlvbmUsIGJ1dCByYXRoZXIK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBiNWE3YWQ5MDY2ZS4uMjlmY2Ix NTQzMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTk0LDYgKzk0LDEx IEBACiAJKChwcmV0dHkpID8gKFBSRVRUWUZMQUdfUEFSRU4gfCBQUkVUVFlGTEFHX0lOREVO VCB8IFBSRVRUWUZMQUdfU0NIRU1BKSBcCiAJIDogUFJFVFRZRkxBR19JTkRFTlQpCiAKKy8q IENvbnZlcnNpb24gb2YgImJvb2wgcHJldHR5IiBvcHRpb24gZm9yIERETCBzdGF0ZW1lbnRz ICgwIHdoZW4gZmFsc2UpICovCisjZGVmaW5lIEdFVF9ERExfUFJFVFRZX0ZMQUdTKHByZXR0 eSkgXAorCSgocHJldHR5KSA/IChQUkVUVFlGTEFHX1BBUkVOIHwgUFJFVFRZRkxBR19JTkRF TlQgfCBQUkVUVFlGTEFHX1NDSEVNQSkgXAorCSA6IDApCisKIC8qIERlZmF1bHQgbGluZSBs ZW5ndGggZm9yIHByZXR0eS1wcmludCB3cmFwcGluZzogMCBtZWFucyB3cmFwIGFsd2F5cyAq LwogI2RlZmluZSBXUkFQX0NPTFVNTl9ERUZBVUxUCQkwCiAKQEAgLTU0Niw2ICs1NTEsMTEg QEAgc3RhdGljIHZvaWQgZ2V0X2pzb25fdGFibGVfbmVzdGVkX2NvbHVtbnMoVGFibGVGdW5j ICp0ZiwgSnNvblRhYmxlUGxhbiAqcGxhbiwKIAkJCQkJCQkJCQkgIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIGJvb2wgc2hvd2ltcGxpY2l0LAogCQkJCQkJCQkJ CSAgYm9vbCBuZWVkY29tbWEpOworc3RhdGljIHZvaWQgZ2V0X2Zvcm1hdHRlZF9zdHJpbmco U3RyaW5nSW5mbyBidWYsCisJCQkJCQkJCSBpbnQgcHJldHR5RmxhZ3MsCisJCQkJCQkJCSBp bnQgbm9PZlRhYkNoYXJzLAorCQkJCQkJCQkgY29uc3QgY2hhciAqZm10LC4uLikgcGdfYXR0 cmlidXRlX3ByaW50Zig0LCA1KTsKK3N0YXRpYyBjaGFyICpwZ19nZXRfZG9tYWluX2RkbF93 b3JrZXIoT2lkIGRvbWFpbl9vaWQsIGludCBwcmV0dHlGbGFncyk7CiAKICNkZWZpbmUgb25s eV9tYXJrZXIocnRlKSAgKChydGUpLT5pbmggPyAiIiA6ICJPTkxZICIpCiAKQEAgLTEzNzQx LDMgKzEzNzUxLDIzOCBAQCBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3Vu ZF9kYXR1bXMpCiAKIAlyZXR1cm4gYnVmLmRhdGE7CiB9CisKKy8qCisgKiBnZXRfZm9ybWF0 dGVkX3N0cmluZworICoKKyAqIFJldHVybiBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIHRoZSBz dHJpbmcuCisgKgorICogcHJldHR5RmxhZ3MgLSBJZiBwcmV0dHkgaXMgdHJ1ZSwgdGhlIG91 dHB1dCBpbmNsdWRlcyB0YWJzIChcdCkgYW5kIG5ld2xpbmVzIChcbikuCisgKiBub09mVGFi Q2hhcnMgLSBpbmRlbnQgd2l0aCBzcGVjaWZpZWQgbm8gb2YgdGFicy4KKyAqIGZtdCAtIHBy aW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5nIHVzZWQgYnkgYXBwZW5kU3RyaW5nSW5mb1ZBLgor ICovCitzdGF0aWMgdm9pZAorZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoU3RyaW5nSW5mbyBidWYs IGludCBwcmV0dHlGbGFncywgaW50IG5vT2ZUYWJDaGFycywgY29uc3QgY2hhciAqZm10LC4u LikKK3sKKwl2YV9saXN0CQlhcmdzOworCisJaWYgKHByZXR0eUZsYWdzICYgUFJFVFRZRkxB R19JTkRFTlQpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICdcbicpOworCQkv KiBJbmRlbnQgd2l0aCB0YWJzICovCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbm9PZlRhYkNo YXJzOyBpKyspCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1x0Jyk7CisJ CX0KKwl9CisJZWxzZQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisKKwl2 YV9zdGFydChhcmdzLCBmbXQpOworCWFwcGVuZFN0cmluZ0luZm9WQShidWYsIGZtdCwgYXJn cyk7CisJdmFfZW5kKGFyZ3MpOworfQorCisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gdG8g c2NhbiBkb21haW4gY29uc3RyYWludHMKKyAqLworc3RhdGljIHZvaWQKK3NjYW5fZG9tYWlu X2NvbnN0cmFpbnRzKE9pZCBkb21haW5fb2lkLCBMaXN0ICoqdmFsaWRjb25zLCBMaXN0ICoq aW52YWxpZGNvbnMpCit7CisJUmVsYXRpb24JY29uc3RyYWludFJlbDsKKwlTeXNTY2FuRGVz YyBzc2NhbjsKKwlTY2FuS2V5RGF0YSBza2V5OworCUhlYXBUdXBsZQljb25zdHJhaW50VHVw OworCisJKnZhbGlkY29ucyA9IE5JTDsKKwkqaW52YWxpZGNvbnMgPSBOSUw7CisKKwljb25z dHJhaW50UmVsID0gdGFibGVfb3BlbihDb25zdHJhaW50UmVsYXRpb25JZCwgQWNjZXNzU2hh cmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZza2V5LAorCQkJCUFudW1fcGdfY29uc3RyYWlu dF9jb250eXBpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJ T2JqZWN0SWRHZXREYXR1bShkb21haW5fb2lkKSk7CisKKwlzc2NhbiA9IHN5c3RhYmxlX2Jl Z2luc2Nhbihjb25zdHJhaW50UmVsLAorCQkJCQkJCSAgIENvbnN0cmFpbnRUeXBpZEluZGV4 SWQsCisJCQkJCQkJICAgdHJ1ZSwKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIDEsCisJ CQkJCQkJICAgJnNrZXkpOworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQoY29uc3RyYWlu dFR1cCA9IHN5c3RhYmxlX2dldG5leHQoc3NjYW4pKSkKKwl7CisJCUZvcm1fcGdfY29uc3Ry YWludCBjb24gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29uc3RyYWludFR1 cCk7CisKKwkJaWYgKGNvbi0+Y29udmFsaWRhdGVkKQorCQkJKnZhbGlkY29ucyA9IGxhcHBl bmRfb2lkKCp2YWxpZGNvbnMsIGNvbi0+b2lkKTsKKwkJZWxzZQorCQkJKmludmFsaWRjb25z ID0gbGFwcGVuZF9vaWQoKmludmFsaWRjb25zLCBjb24tPm9pZCk7CisJfQorCisJc3lzdGFi bGVfZW5kc2Nhbihzc2Nhbik7CisJdGFibGVfY2xvc2UoY29uc3RyYWludFJlbCwgQWNjZXNz U2hhcmVMb2NrKTsKKworCS8qIFNvcnQgY29uc3RyYWludHMgYnkgT0lEIGZvciBzdGFibGUg b3V0cHV0ICovCisJaWYgKGxpc3RfbGVuZ3RoKCp2YWxpZGNvbnMpID4gMSkKKwkJbGlzdF9z b3J0KCp2YWxpZGNvbnMsIGxpc3Rfb2lkX2NtcCk7CisJaWYgKGxpc3RfbGVuZ3RoKCppbnZh bGlkY29ucykgPiAxKQorCQlsaXN0X3NvcnQoKmludmFsaWRjb25zLCBsaXN0X29pZF9jbXAp OworfQorCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHRvIGJ1aWxkIENSRUFURSBET01BSU4g c3RhdGVtZW50CisgKi8KK3N0YXRpYyB2b2lkCitidWlsZF9jcmVhdGVfZG9tYWluX3N0YXRl bWVudChTdHJpbmdJbmZvIGJ1ZiwgRm9ybV9wZ190eXBlIHR5cEZvcm0sCisJCQkJCQkJICBO b2RlICpkZWZhdWx0RXhwciwgTGlzdCAqdmFsaWRDb25zdHJhaW50cywgaW50IHByZXR0eUZs YWdzKQoreworCUhlYXBUdXBsZQliYXNlVHlwZVR1cGxlOworCUZvcm1fcGdfdHlwZSBiYXNl VHlwZUZvcm07CisJT2lkCQkJYmFzZUNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisJTGlzdENl bGwgICAqbGM7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIkNSRUFURSBET01BSU4gJXMg QVMgJXMiLAorCQkJCQkgZ2VuZXJhdGVfcXVhbGlmaWVkX3R5cGVfbmFtZSh0eXBGb3JtLT5v aWQpLAorCQkJCQkgZ2VuZXJhdGVfcXVhbGlmaWVkX3R5cGVfbmFtZSh0eXBGb3JtLT50eXBi YXNldHlwZSkpOworCisJLyogQWRkIGNvbGxhdGlvbiBpZiBpdCBkaWZmZXJzIGZyb20gYmFz ZSB0eXBlJ3MgY29sbGF0aW9uICovCisJaWYgKE9pZElzVmFsaWQodHlwRm9ybS0+dHlwY29s bGF0aW9uKSkKKwl7CisJCS8qIEdldCBiYXNlIHR5cGUncyBjb2xsYXRpb24gZm9yIGNvbXBh cmlzb24gKi8KKwkJYmFzZVR5cGVUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBP YmplY3RJZEdldERhdHVtKHR5cEZvcm0tPnR5cGJhc2V0eXBlKSk7CisJCWlmIChIZWFwVHVw bGVJc1ZhbGlkKGJhc2VUeXBlVHVwbGUpKQorCQl7CisJCQliYXNlVHlwZUZvcm0gPSAoRm9y bV9wZ190eXBlKSBHRVRTVFJVQ1QoYmFzZVR5cGVUdXBsZSk7CisJCQliYXNlQ29sbGF0aW9u ID0gYmFzZVR5cGVGb3JtLT50eXBjb2xsYXRpb247CisJCQlSZWxlYXNlU3lzQ2FjaGUoYmFz ZVR5cGVUdXBsZSk7CisJCX0KKworCQkvKiBPbmx5IGFkZCBDT0xMQVRFIGlmIGRvbWFpbidz IGNvbGxhdGlvbiBkaWZmZXJzIGZyb20gYmFzZSB0eXBlJ3MgKi8KKwkJaWYgKHR5cEZvcm0t PnR5cGNvbGxhdGlvbiAhPSBiYXNlQ29sbGF0aW9uKQorCQl7CisJCQlnZXRfZm9ybWF0dGVk X3N0cmluZyhidWYsIHByZXR0eUZsYWdzLCAxLCAiQ09MTEFURSAlcyIsCisJCQkJCQkJCSBn ZW5lcmF0ZV9jb2xsYXRpb25fbmFtZSh0eXBGb3JtLT50eXBjb2xsYXRpb24pKTsKKwkJfQor CX0KKworCS8qIEFkZCBkZWZhdWx0IHZhbHVlIGlmIHByZXNlbnQgKi8KKwlpZiAoZGVmYXVs dEV4cHIgIT0gTlVMTCkKKwl7CisJCWNoYXIJICAgKmRlZmF1bHRWYWx1ZSA9IGRlcGFyc2Vf ZXhwcmVzc2lvbl9wcmV0dHkoZGVmYXVsdEV4cHIsIE5JTCwgZmFsc2UsIGZhbHNlLCBwcmV0 dHlGbGFncywgMCk7CisKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoYnVmLCBwcmV0dHlGbGFn cywgMSwgIkRFRkFVTFQgJXMiLCBkZWZhdWx0VmFsdWUpOworCX0KKworCS8qIEFkZCB2YWxp ZCBjb25zdHJhaW50cyAqLworCWZvcmVhY2gobGMsIHZhbGlkQ29uc3RyYWludHMpCisJewor CQlPaWQJCQljb25zdHJhaW50T2lkID0gbGZpcnN0X29pZChsYyk7CisJCUhlYXBUdXBsZQlj b25zdHJhaW50VHVwOworCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uOworCQljaGFyCSAgICpj b25zdHJhaW50RGVmOworCisJCS8qIExvb2sgdXAgdGhlIGNvbnN0cmFpbnQgaW5mbyAqLwor CQljb25zdHJhaW50VHVwID0gU2VhcmNoU3lzQ2FjaGUxKENPTlNUUk9JRCwgT2JqZWN0SWRH ZXREYXR1bShjb25zdHJhaW50T2lkKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZChjb25z dHJhaW50VHVwKSkKKwkJCWNvbnRpbnVlOwkJCS8qIGNvbnN0cmFpbnQgd2FzIGRyb3BwZWQg Y29uY3VycmVudGx5ICovCisKKwkJY29uID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RS VUNUKGNvbnN0cmFpbnRUdXApOworCQljb25zdHJhaW50RGVmID0gcGdfZ2V0X2NvbnN0cmFp bnRkZWZfd29ya2VyKGNvbnN0cmFpbnRPaWQsIGZhbHNlLCBwcmV0dHlGbGFncywgdHJ1ZSk7 CisKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoYnVmLCBwcmV0dHlGbGFncywgMSwgIkNPTlNU UkFJTlQgJXMiLAorCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKE5hbWVTdHIoY29uLT5jb25u YW1lKSkpOworCQlnZXRfZm9ybWF0dGVkX3N0cmluZyhidWYsIHByZXR0eUZsYWdzLCAyLCAi JXMiLCBjb25zdHJhaW50RGVmKTsKKworCQlSZWxlYXNlU3lzQ2FjaGUoY29uc3RyYWludFR1 cCk7CisJfQorCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnOycpOworfQorCisvKgor ICogSGVscGVyIGZ1bmN0aW9uIHRvIGFkZCBBTFRFUiBET01BSU4gc3RhdGVtZW50cyBmb3Ig aW52YWxpZCBjb25zdHJhaW50cworICovCitzdGF0aWMgdm9pZAorYWRkX2FsdGVyX2RvbWFp bl9zdGF0ZW1lbnRzKFN0cmluZ0luZm8gYnVmLCBMaXN0ICppbnZhbGlkQ29uc3RyYWludHMs IGludCBwcmV0dHlGbGFncykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMs IGludmFsaWRDb25zdHJhaW50cykKKwl7CisJCU9pZAkJCWNvbnN0cmFpbnRPaWQgPSBsZmly c3Rfb2lkKGxjKTsKKwkJY2hhcgkgICAqYWx0ZXJTdG10ID0gcGdfZ2V0X2NvbnN0cmFpbnRk ZWZfd29ya2VyKGNvbnN0cmFpbnRPaWQsIHRydWUsIHByZXR0eUZsYWdzLCB0cnVlKTsKKwor CQlpZiAoYWx0ZXJTdG10KQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJcbiVzOyIsIGFs dGVyU3RtdCk7CisJfQorfQorCisvKgorICogcGdfZ2V0X2RvbWFpbl9kZGxfZXh0IC0gR2V0 IENSRUFURSBET01BSU4gc3RhdGVtZW50IGZvciBhIGRvbWFpbiB3aXRoIHByZXR0eS1wcmlu dCBvcHRpb24KKyAqLworRGF0dW0KK3BnX2dldF9kb21haW5fZGRsX2V4dChQR19GVU5DVElP Tl9BUkdTKQoreworCU9pZAkJCWRvbWFpbl9vaWQgPSBQR19HRVRBUkdfT0lEKDApOworCWJv b2wJCXByZXR0eSA9IFBHX0dFVEFSR19CT09MKDEpOworCWNoYXIJICAgKnJlczsKKwlpbnQJ CQlwcmV0dHlGbGFnczsKKworCXByZXR0eUZsYWdzID0gR0VUX0RETF9QUkVUVFlfRkxBR1Mo cHJldHR5KTsKKworCXJlcyA9IHBnX2dldF9kb21haW5fZGRsX3dvcmtlcihkb21haW5fb2lk LCBwcmV0dHlGbGFncyk7CisJaWYgKHJlcyA9PSBOVUxMKQorCQlQR19SRVRVUk5fTlVMTCgp OworCVBHX1JFVFVSTl9URVhUX1Aoc3RyaW5nX3RvX3RleHQocmVzKSk7Cit9CisKKworCitz dGF0aWMgY2hhciAqCitwZ19nZXRfZG9tYWluX2RkbF93b3JrZXIoT2lkIGRvbWFpbl9vaWQs IGludCBwcmV0dHlGbGFncykKK3sKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJSGVhcFR1cGxl CXR5cGVUdXBsZTsKKwlGb3JtX3BnX3R5cGUgdHlwRm9ybTsKKwlOb2RlCSAgICpkZWZhdWx0 RXhwcjsKKwlMaXN0CSAgICp2YWxpZENvbnN0cmFpbnRzOworCUxpc3QJICAgKmludmFsaWRD b25zdHJhaW50czsKKworCS8qIExvb2sgdXAgdGhlIGRvbWFpbiBpbiBwZ190eXBlICovCisJ dHlwZVR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0o ZG9tYWluX29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0eXBlVHVwbGUpKQorCQly ZXR1cm4gTlVMTDsKKworCXR5cEZvcm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHlw ZVR1cGxlKTsKKworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhY3R1YWxseSBhIGRvbWFpbiAq LworCWlmICh0eXBGb3JtLT50eXB0eXBlICE9IFRZUFRZUEVfRE9NQUlOKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJ CSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBkb21haW4iLCBmb3JtYXRfdHlwZV9iZShkb21h aW5fb2lkKSksCisJCQkJIGVycmhpbnQoIlVzZSBhIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSBp ZiB0aGUgZG9tYWluIG5hbWUgY29uZmxpY3RzIHdpdGggYSBidWlsdC1pbiBuYW1lLiIpKSk7 CisKKwkvKiBHZXQgZGVmYXVsdCBleHByZXNzaW9uICovCisJZGVmYXVsdEV4cHIgPSBnZXRf dHlwZGVmYXVsdChkb21haW5fb2lkKTsKKworCS8qIFNjYW4gZm9yIHZhbGlkIGFuZCBpbnZh bGlkIGNvbnN0cmFpbnRzICovCisJc2Nhbl9kb21haW5fY29uc3RyYWludHMoZG9tYWluX29p ZCwgJnZhbGlkQ29uc3RyYWludHMsICZpbnZhbGlkQ29uc3RyYWludHMpOworCisJLyogQnVp bGQgdGhlIERETCBzdGF0ZW1lbnQgKi8KKwlpbml0U3RyaW5nSW5mbygmYnVmKTsKKwlidWls ZF9jcmVhdGVfZG9tYWluX3N0YXRlbWVudCgmYnVmLCB0eXBGb3JtLCBkZWZhdWx0RXhwciwg dmFsaWRDb25zdHJhaW50cywgcHJldHR5RmxhZ3MpOworCisJLyogQWRkIEFMVEVSIERPTUFJ TiBzdGF0ZW1lbnRzIGZvciBpbnZhbGlkIGNvbnN0cmFpbnRzICovCisJaWYgKGxpc3RfbGVu Z3RoKGludmFsaWRDb25zdHJhaW50cykgPiAwKQorCQlhZGRfYWx0ZXJfZG9tYWluX3N0YXRl bWVudHMoJmJ1ZiwgaW52YWxpZENvbnN0cmFpbnRzLCBwcmV0dHlGbGFncyk7CisKKwkvKiBD bGVhbnVwICovCisJbGlzdF9mcmVlKHZhbGlkQ29uc3RyYWludHMpOworCWxpc3RfZnJlZShp bnZhbGlkQ29uc3RyYWludHMpOworCVJlbGVhc2VTeXNDYWNoZSh0eXBlVHVwbGUpOworCisJ cmV0dXJuIGJ1Zi5kYXRhOworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNWU1 ZTMzZjY0ZmMuLjYzNzBkNTEwOGRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTg1MzEsNiArODUzMSw5IEBACiB7IG9pZCA9PiAnMjUwOCcsIGRlc2NyID0+ICdjb25zdHJh aW50IGRlc2NyaXB0aW9uIHdpdGggcHJldHR5LXByaW50IG9wdGlvbicsCiAgIHByb25hbWUg PT4gJ3BnX2dldF9jb25zdHJhaW50ZGVmJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0 eXBlID0+ICd0ZXh0JywKICAgcHJvYXJndHlwZXMgPT4gJ29pZCBib29sJywgcHJvc3JjID0+ ICdwZ19nZXRfY29uc3RyYWludGRlZl9leHQnIH0sCit7IG9pZCA9PiAnODAyNCcsIGRlc2Ny ID0+ICdnZXQgQ1JFQVRFIHN0YXRlbWVudCBmb3IgRE9NQUlOIHdpdGggcHJldHR5IG9wdGlv bicsCisgIHByb25hbWUgPT4gJ3BnX2dldF9kb21haW5fZGRsJywgcHJvcmV0dHlwZSA9PiAn dGV4dCcsCisgIHByb2FyZ3R5cGVzID0+ICdyZWd0eXBlIGJvb2wnLCBwcm9zcmMgPT4gJ3Bn X2dldF9kb21haW5fZGRsX2V4dCcgfSwKIHsgb2lkID0+ICcyNTA5JywKICAgZGVzY3IgPT4g J2RlcGFyc2UgYW4gZW5jb2RlZCBleHByZXNzaW9uIHdpdGggcHJldHR5LXByaW50IG9wdGlv bicsCiAgIHByb25hbWUgPT4gJ3BnX2dldF9leHByJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBw cm9yZXR0eXBlID0+ICd0ZXh0JywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvb2JqZWN0X2RkbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVj dF9kZGwub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMjQx Yjg5YTc3MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b2JqZWN0X2RkbC5vdXQKQEAgLTAsMCArMSwzNDggQEAKKy0tCistLSBUZXN0IGZvciB0aGUg Zm9sbG93aW5nIGZ1bmN0aW9ucyB0byBnZXQgb2JqZWN0IERETDoKKy0tIC0gcGdfZ2V0X2Rv bWFpbl9kZGwKKy0tCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUgQVMg VEVYVAorICAgIERFRkFVTFQgJzAwMDAwJworICAgIENPTlNUUkFJTlQgcmVncmVzc191c19w b3N0YWxfY29kZV9jaGVjaworICAgICAgICBDSEVDSyAoCisgICAgICAgICAgICBWQUxVRSB+ ICdeXGR7NX0kJworICAgIE9SIFZBTFVFIH4gJ15cZHs1fS1cZHs0fSQnCisgICAgKTsKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0YWxfY29kZScpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3VzX3Bv c3RhbF9jb2RlIEFTIHBnX2NhdGFsb2cudGV4dCBERUZBVUxUICcwMDAwMCc6OnRleHQgQ09O U1RSQUlOVCByZWdyZXNzX3VzX3Bvc3RhbF9jb2RlX2NoZWNrIENIRUNLICgoKFZBTFVFIH4g J15cZHs1fSQnOjp0ZXh0KSBPUiAoVkFMVUUgfiAnXlxkezV9LVxkezR9JCc6OnRleHQpKSk7 CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0 YWxfY29kZScsIHByZXR0eSA9PiBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENS RUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUgQVMgcGdfY2F0YWxv Zy50ZXh0IERFRkFVTFQgJzAwMDAwJzo6dGV4dCBDT05TVFJBSU5UIHJlZ3Jlc3NfdXNfcG9z dGFsX2NvZGVfY2hlY2sgQ0hFQ0sgKCgoVkFMVUUgfiAnXlxkezV9JCc6OnRleHQpIE9SIChW QUxVRSB+ICdeXGR7NX0tXGR7NH0kJzo6dGV4dCkpKTsKKygxIHJvdykKKworU0VMRUNUIHBn X2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJywgZmFsc2UpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3VzX3Bv c3RhbF9jb2RlIEFTIHBnX2NhdGFsb2cudGV4dCBERUZBVUxUICcwMDAwMCc6OnRleHQgQ09O U1RSQUlOVCByZWdyZXNzX3VzX3Bvc3RhbF9jb2RlX2NoZWNrIENIRUNLICgoKFZBTFVFIH4g J15cZHs1fSQnOjp0ZXh0KSBPUiAoVkFMVUUgfiAnXlxkezV9LVxkezR9JCc6OnRleHQpKSk7 CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0 YWxfY29kZScsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVi bGljLnJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUgQVMgcGdfY2F0YWxvZy50ZXh0ICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgIERFRkFVTFQgJzAwMDAwJzo6dGV4dCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBD T05TVFJBSU5UIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGVfY2hlY2sgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICBDSEVDSyAoVkFMVUUgfiAn XlxkezV9JCc6OnRleHQgT1IgVkFMVUUgfiAnXlxkezV9LVxkezR9JCc6OnRleHQpOworKDEg cm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2Nv ZGUnLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9k b21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfdXNf cG9zdGFsX2NvZGUgQVMgcGdfY2F0YWxvZy50ZXh0ICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgIERFRkFVTFQgJzAwMDAwJzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jl c3NfdXNfcG9zdGFsX2NvZGVfY2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgICBDSEVDSyAoVkFMVUUgfiAnXlxkezV9JCc6OnRleHQg T1IgVkFMVUUgfiAnXlxkezV9LVxkezR9JCc6OnRleHQpOworKDEgcm93KQorCitDUkVBVEUg RE9NQUlOIHJlZ3Jlc3NfZG9tYWluX25vdF9udWxsIEFTIElOVCBOT1QgTlVMTDsKK1NFTEVD VCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90X251bGwnKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9k b21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9t YWluX25vdF9udWxsIEFTIHBnX2NhdGFsb2cuaW50NCBDT05TVFJBSU5UIHJlZ3Jlc3NfZG9t YWluX25vdF9udWxsX25vdF9udWxsIE5PVCBOVUxMOworKDEgcm93KQorCitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX25vdF9udWxsJywgcHJldHR5ID0+IHRy dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMu cmVncmVzc19kb21haW5fbm90X251bGwgQVMgcGdfY2F0YWxvZy5pbnQ0KworICAgICAgICAg Q09OU1RSQUlOVCByZWdyZXNzX2RvbWFpbl9ub3RfbnVsbF9ub3RfbnVsbCAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICAgTk9UIE5VTEw7CisoMSByb3cpCisKK0NSRUFURSBET01B SU4gcmVncmVzc19kb21haW5fY2hlY2sgQVMgSU5UCisgICAgQ09OU1RSQUlOVCByZWdyZXNz X2EgQ0hFQ0sgKFZBTFVFIDwgMTAwKQorICAgIENPTlNUUkFJTlQgcmVncmVzc19iIENIRUNL IChWQUxVRSA+IDEwKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21h aW5fY2hlY2snKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9N QUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9jaGVjayBBUyBwZ19jYXRhbG9nLmludDQgQ09O U1RSQUlOVCByZWdyZXNzX2EgQ0hFQ0sgKChWQUxVRSA8IDEwMCkpIENPTlNUUkFJTlQgcmVn cmVzc19iIENIRUNLICgoVkFMVUUgPiAxMCkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX2NoZWNrJywgcHJldHR5ID0+IHRydWUpOwor ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21h aW5fY2hlY2sgQVMgcGdfY2F0YWxvZy5pbnQ0KworICAgICAgICAgQ09OU1RSQUlOVCByZWdy ZXNzX2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgQ0hFQ0sgKFZBTFVFIDwgMTAwKSAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgICBDSEVDSyAoVkFMVUUgPiAxMCk7CisoMSByb3cpCisK K0NSRUFURSBET01BSU4gInJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiIEFTIElOVAorICAg IENPTlNUUkFJTlQgcmVncmVzc19hIENIRUNLIChWQUxVRSA8IDEwMCkKKyAgICBDT05TVFJB SU5UICJyZWdyZXNzX0NvbnN0cmFpbnQgQiIgQ0hFQ0sgKFZBTFVFID4gMTApCisgICAgQ09O U1RSQUlOVCAicmVncmVzc19Db25zdHJhaW50QyIgQ0hFQ0sgKFZBTFVFICE9IDU1KTsKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgnInJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiJyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMuInJlZ3Jlc3NfZG9t YWluIHdpdGggc3BhY2UiIEFTIHBnX2NhdGFsb2cuaW50NCBDT05TVFJBSU5UIHJlZ3Jlc3Nf YSBDSEVDSyAoKFZBTFVFIDwgMTAwKSkgQ09OU1RSQUlOVCAicmVncmVzc19Db25zdHJhaW50 IEIiIENIRUNLICgoVkFMVUUgPiAxMCkpIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWlu dEMiIENIRUNLICgoVkFMVUUgPD4gNTUpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9k b21haW5fZGRsKCcicmVncmVzc19kb21haW4gd2l0aCBzcGFjZSInLCBwcmV0dHkgPT4gdHJ1 ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4g cHVibGljLiJyZWdyZXNzX2RvbWFpbiB3aXRoIHNwYWNlIiBBUyBwZ19jYXRhbG9nLmludDQr CisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIDwgMTAw KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlO VCAicmVncmVzc19Db25zdHJhaW50IEIiICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgICAgICAgIENIRUNLIChWQUxVRSA+IDEwKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWlu dEMiICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICBDSEVD SyAoVkFMVUUgPD4gNTUpOworKDEgcm93KQorCistLSBUZXN0IGVycm9yIGNhc2VzCitTRUxF Q1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfbm9uZXhpc3RlbnRfZG9tYWluJzo6cmVn dHlwZSk7ICAtLSBzaG91bGQgZmFpbAorRVJST1I6ICB0eXBlICJyZWdyZXNzX25vbmV4aXN0 ZW50X2RvbWFpbiIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdyZWdyZXNzX25vbmV4aXN0ZW50X2RvbWFpbic6OnJlZ3R5Li4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwo TlVMTCk7ICAtLSBzaG91bGQgcmV0dXJuIE5VTEwKKyBwZ19nZXRfZG9tYWluX2RkbCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5f ZGRsKE5VTEwsIHByZXR0eSA9PiB0cnVlKTsgIC0tIHNob3VsZCByZXR1cm4gTlVMTAorIHBn X2dldF9kb21haW5fZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3BnX2NsYXNzJyk7ICAtLSBzaG91bGQgZmFpbCAt IG5vdCBhIGRvbWFpbgorRVJST1I6ICAicGdfY2xhc3MiIGlzIG5vdCBhIGRvbWFpbgorSElO VDogIFVzZSBhIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSBpZiB0aGUgZG9tYWluIG5hbWUgY29u ZmxpY3RzIHdpdGggYSBidWlsdC1pbiBuYW1lLgorU0VMRUNUIHBnX2dldF9kb21haW5fZGRs KCdpbnRlZ2VyJyk7ICAtLSBzaG91bGQgZmFpbCAtIG5vdCBhIGRvbWFpbgorRVJST1I6ICAi aW50ZWdlciIgaXMgbm90IGEgZG9tYWluCitISU5UOiAgVXNlIGEgc2NoZW1hLXF1YWxpZmll ZCBuYW1lIGlmIHRoZSBkb21haW4gbmFtZSBjb25mbGljdHMgd2l0aCBhIGJ1aWx0LWluIG5h bWUuCistLSBUZXN0IGRvbWFpbnMgd2l0aCBubyBjb25zdHJhaW50cworQ1JFQVRFIERPTUFJ TiByZWdyZXNzX3NpbXBsZV9kb21haW4gQVMgdGV4dDsKK1NFTEVDVCBwZ19nZXRfZG9tYWlu X2RkbCgncmVncmVzc19zaW1wbGVfZG9tYWluJyk7CisgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19zaW1wbGVfZG9tYWluIEFTIHBnX2Nh dGFsb2cudGV4dDsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX3NpbXBsZV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19zaW1wbGVfZG9tYWluIEFT IHBnX2NhdGFsb2cudGV4dDsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gb3ZlciBhbm90 aGVyIGRvbWFpbgorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2Jhc2VfZG9tYWluIEFTIHZhcmNo YXIoMTApOworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2Rlcml2ZWRfZG9tYWluIEFTIHJlZ3Jl c3NfYmFzZV9kb21haW4gQ0hFQ0sgKExFTkdUSChWQUxVRSkgPiAzKTsKK1NFTEVDVCBwZ19n ZXRfZG9tYWluX2RkbCgncmVncmVzc19kZXJpdmVkX2RvbWFpbicpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVz c19kZXJpdmVkX2RvbWFpbiBBUyBwdWJsaWMucmVncmVzc19iYXNlX2RvbWFpbiBDT05TVFJB SU5UIHJlZ3Jlc3NfZGVyaXZlZF9kb21haW5fY2hlY2sgQ0hFQ0sgKChsZW5ndGgoKFZBTFVF KTo6dGV4dCkgPiAzKSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgn cmVncmVzc19kZXJpdmVkX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJs aWMucmVncmVzc19kZXJpdmVkX2RvbWFpbiBBUyBwdWJsaWMucmVncmVzc19iYXNlX2RvbWFp bisKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19kZXJpdmVkX2RvbWFpbl9jaGVjayAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICBDSEVDSyAobGVu Z3RoKFZBTFVFOjp0ZXh0KSA+IDMpOworKDEgcm93KQorCistLSBUZXN0IGRvbWFpbiB3aXRo IGNvbXBsZXggZGVmYXVsdCBleHByZXNzaW9ucworQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3Nf dGVzdF9zZXE7CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3Nfc2VxX2RvbWFpbiBBUyBpbnQgREVG QVVMVCBuZXh0dmFsKCdyZWdyZXNzX3Rlc3Rfc2VxJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFp bl9kZGwoJ3JlZ3Jlc3Nfc2VxX2RvbWFpbicpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMu cmVncmVzc19zZXFfZG9tYWluIEFTIHBnX2NhdGFsb2cuaW50NCBERUZBVUxUIG5leHR2YWwo J3JlZ3Jlc3NfdGVzdF9zZXEnOjpyZWdjbGFzcyk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19n ZXRfZG9tYWluX2RkbCgncmVncmVzc19zZXFfZG9tYWluJywgcHJldHR5ID0+IHRydWUpOwor ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3NlcV9kb21h aW4gQVMgcGdfY2F0YWxvZy5pbnQ0KworICAgICAgICAgREVGQVVMVCBuZXh0dmFsKCdyZWdy ZXNzX3Rlc3Rfc2VxJzo6cmVnY2xhc3MpOworKDEgcm93KQorCistLSBUZXN0IGRvbWFpbiB3 aXRoIGEgcmVuYW1lZCBzZXF1ZW5jZSBhcyBkZWZhdWx0IGV4cHJlc3Npb24KK0FMVEVSIFNF UVVFTkNFIHJlZ3Jlc3NfdGVzdF9zZXEgUkVOQU1FIFRPIHJlZ3Jlc3NfdGVzdF9zZXFfcmVu YW1lZDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zZXFfZG9tYWluJyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19zZXFf ZG9tYWluIEFTIHBnX2NhdGFsb2cuaW50NCBERUZBVUxUIG5leHR2YWwoJ3JlZ3Jlc3NfdGVz dF9zZXFfcmVuYW1lZCc6OnJlZ2NsYXNzKTsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4g d2l0aCB0eXBlIG1vZGlmaWVycworQ1JFQVRFIERPTUFJTiByZWdyZXNzX3ByZWNpc2VfbnVt ZXJpYyBBUyBudW1lcmljKDEwLDIpIERFRkFVTFQgMC4wMDsKK1NFTEVDVCBwZ19nZXRfZG9t YWluX2RkbCgncmVncmVzc19wcmVjaXNlX251bWVyaWMnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRF IERPTUFJTiBwdWJsaWMucmVncmVzc19wcmVjaXNlX251bWVyaWMgQVMgcGdfY2F0YWxvZy4i bnVtZXJpYyIgREVGQVVMVCAwLjAwOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFp bl9kZGwoJ3JlZ3Jlc3NfcHJlY2lzZV9udW1lcmljJywgcHJldHR5ID0+IHRydWUpOworICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGlj LnJlZ3Jlc3NfcHJlY2lzZV9udW1lcmljIEFTIHBnX2NhdGFsb2cuIm51bWVyaWMiKworICAg ICAgICAgREVGQVVMVCAwLjAwOworKDEgcm93KQorCistLSBUZXN0IGRvbWFpbiBvdmVyIGFy cmF5IHR5cGUKK0NSRUFURSBET01BSU4gcmVncmVzc19pbnRfYXJyYXlfZG9tYWluIEFTIGlu dFtdIENIRUNLIChhcnJheV9sZW5ndGgoVkFMVUUsIDEpIDw9IDUpOworU0VMRUNUIHBnX2dl dF9kb21haW5fZGRsKCdyZWdyZXNzX2ludF9hcnJheV9kb21haW4nKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2ludF9h cnJheV9kb21haW4gQVMgcGdfY2F0YWxvZy5faW50NCBDT05TVFJBSU5UIHJlZ3Jlc3NfaW50 X2FycmF5X2RvbWFpbl9jaGVjayBDSEVDSyAoKGFycmF5X2xlbmd0aChWQUxVRSwgMSkgPD0g NSkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfaW50 X2FycmF5X2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2ludF9hcnJheV9kb21h aW4gQVMgcGdfY2F0YWxvZy5faW50NCsKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19p bnRfYXJyYXlfZG9tYWluX2NoZWNrICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgQ0hFQ0sgKGFycmF5X2xlbmd0aChWQUxVRSwgMSkgPD0gNSk7CisoMSByb3cpCisKKy0t IFRlc3QgZG9tYWluIGluIG5vbi1wdWJsaWMgc2NoZW1hCitDUkVBVEUgU0NIRU1BIHJlZ3Jl c3NfdGVzdF9zY2hlbWE7CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEucmVn cmVzc19zY2hlbWFfZG9tYWluIEFTIHRleHQgREVGQVVMVCAndGVzdCc7CitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9t YWluJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUg RE9NQUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluIEFTIHBn X2NhdGFsb2cudGV4dCBERUZBVUxUICd0ZXN0Jzo6dGV4dDsKKygxIHJvdykKKworLS0gVGVz dCBkb21haW4gd2l0aCBtdWx0aXBsZSBjb25zdHJhaW50IHR5cGVzIGNvbWJpbmVkCitDUkVB VEUgRE9NQUlOIHJlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW4gQVMgdmFyY2hhcig1MCkK KyAgICBOT1QgTlVMTAorICAgIERFRkFVTFQgJ2RlZmF1bHRfdmFsdWUnCisgICAgQ0hFQ0sg KExFTkdUSChWQUxVRSkgPj0gNSkKKyAgICBDSEVDSyAoVkFMVUUgIX4gJ15ccyokJyk7ICAt LSBub3QganVzdCB3aGl0ZXNwYWNlCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3NfY29tcHJlaGVuc2l2ZV9kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVz c19jb21wcmVoZW5zaXZlX2RvbWFpbiBBUyBwZ19jYXRhbG9nLiJ2YXJjaGFyIiBERUZBVUxU ICdkZWZhdWx0X3ZhbHVlJzo6Y2hhcmFjdGVyIHZhcnlpbmcgQ09OU1RSQUlOVCByZWdyZXNz X2NvbXByZWhlbnNpdmVfZG9tYWluX25vdF9udWxsIE5PVCBOVUxMIENPTlNUUkFJTlQgcmVn cmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbl9jaGVjayBDSEVDSyAoKGxlbmd0aCgoVkFMVUUp Ojp0ZXh0KSA+PSA1KSkgQ09OU1RSQUlOVCByZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWlu X2NoZWNrMSBDSEVDSyAoKChWQUxVRSk6OnRleHQgIX4gJ15ccyokJzo6dGV4dCkpOworKDEg cm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfY29tcHJlaGVuc2l2 ZV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfY29t cHJlaGVuc2l2ZV9kb21haW4gQVMgcGdfY2F0YWxvZy4idmFyY2hhciIrCisgICAgICAgICBE RUZBVUxUICdkZWZhdWx0X3ZhbHVlJzo6Y2hhcmFjdGVyIHZhcnlpbmcgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19jb21wcmVoZW5zaXZl X2RvbWFpbl9ub3RfbnVsbCAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICBO T1QgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW5f Y2hlY2sgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKGxl bmd0aChWQUxVRTo6dGV4dCkgPj0gNSkgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluX2NoZWNrMSAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENIRUNLIChWQUxVRTo6dGV4 dCAhfiAnXlxzKiQnOjp0ZXh0KTsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gb3ZlciBj b21wb3NpdGUgdHlwZQorQ1JFQVRFIFRZUEUgcmVncmVzc19hZGRyZXNzX3R5cGUgQVMgKHN0 cmVldCB0ZXh0LCBjaXR5IHRleHQsIHppcGNvZGUgdGV4dCk7CitDUkVBVEUgRE9NQUlOIHJl Z3Jlc3NfYWRkcmVzc19kb21haW4gQVMgcmVncmVzc19hZGRyZXNzX3R5cGUgQ0hFQ0sgKChW QUxVRSkuemlwY29kZSB+ICdeXGR7NX0kJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwo J3JlZ3Jlc3NfYWRkcmVzc19kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9k b21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJl Z3Jlc3NfYWRkcmVzc19kb21haW4gQVMgcHVibGljLnJlZ3Jlc3NfYWRkcmVzc190eXBlIENP TlNUUkFJTlQgcmVncmVzc19hZGRyZXNzX2RvbWFpbl9jaGVjayBDSEVDSyAoKChWQUxVRSku emlwY29kZSB+ICdeXGR7NX0kJzo6dGV4dCkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfYWRkcmVzc19kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JF QVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19hZGRyZXNzX2RvbWFpbiBBUyBwdWJsaWMucmVn cmVzc19hZGRyZXNzX3R5cGUrCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYWRkcmVz c19kb21haW5fY2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgIENIRUNLICgoVkFMVUUpLnppcGNvZGUgfiAnXlxkezV9JCc6OnRleHQpOworKDEg cm93KQorCistLSBUZXN0IGRvbWFpbiB3aXRoIE5PVCBWQUxJRCBjb25zdHJhaW50CitDUkVB VEUgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX25vdF92YWxpZCBBUyBpbnQ7CitBTFRFUiBET01B SU4gcmVncmVzc19kb21haW5fbm90X3ZhbGlkIEFERCBDT05TVFJBSU5UIGNoZWNrX3Bvc2l0 aXZlIENIRUNLIChWQUxVRSA+IDApIE5PVCBWQUxJRDsKK1NFTEVDVCBwZ19nZXRfZG9tYWlu X2RkbCgncmVncmVzc19kb21haW5fbm90X3ZhbGlkJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1 YmxpYy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQVMgcGdfY2F0YWxvZy5pbnQ0OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgQUxURVIgRE9NQUlOIHB1 YmxpYy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcG9z aXRpdmUgQ0hFQ0sgKChWQUxVRSA+IDApKSBOT1QgVkFMSUQ7CisoMSByb3cpCisKK1NFTEVD VCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90X3ZhbGlkJywgcHJldHR5 ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFs aWQgQVMgcGdfY2F0YWxvZy5pbnQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworIEFMVEVSIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fbm90X3ZhbGlk IEFERCBDT05TVFJBSU5UIGNoZWNrX3Bvc2l0aXZlIENIRUNLIChWQUxVRSA+IDApIE5PVCBW QUxJRDsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCBtaXggb2YgdmFsaWQgYW5k IG5vdCB2YWxpZCBjb25zdHJhaW50cworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2RvbWFpbl9t aXhlZCBBUyBpbnQgQ0hFQ0sgKFZBTFVFICE9IDApOworQUxURVIgRE9NQUlOIHJlZ3Jlc3Nf ZG9tYWluX21peGVkIEFERCBDT05TVFJBSU5UIGNoZWNrX3JhbmdlIENIRUNLIChWQUxVRSBC RVRXRUVOIDEgQU5EIDEwMCkgTk9UIFZBTElEOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRs KCdyZWdyZXNzX2RvbWFpbl9taXhlZCcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fbWl4ZWQgQVMgcGdf Y2F0YWxvZy5pbnQ0IENPTlNUUkFJTlQgcmVncmVzc19kb21haW5fbWl4ZWRfY2hlY2sgQ0hF Q0sgKChWQUxVRSA8PiAwKSk7KworIEFMVEVSIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21h aW5fbWl4ZWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcmFuZ2UgQ0hFQ0sgKCgoVkFMVUUgPj0g MSkgQU5EIChWQUxVRSA8PSAxMDApKSkgTk9UIFZBTElEOworKDEgcm93KQorCitTRUxFQ1Qg cGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX21peGVkJywgcHJldHR5ID0+IHRy dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVz c19kb21haW5fbWl4ZWQgQVMgcGdfY2F0YWxvZy5pbnQ0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlO VCByZWdyZXNzX2RvbWFpbl9taXhlZF9jaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICAgICAgICAgQ0hFQ0sgKFZBTFVFIDw+IDApOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgQUxURVIgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9taXhlZCBBREQgQ09OU1RS QUlOVCBjaGVja19yYW5nZSBDSEVDSyAoVkFMVUUgPj0gMSBBTkQgVkFMVUUgPD0gMTAwKSBO T1QgVkFMSUQ7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIHdpdGggY29sbGF0aW9uCitD UkVBVEUgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZSBBUyB0ZXh0IENPTExB VEUgIkMiOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl93aXRo X2NvbGxhdGUnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Rv bWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFp bl93aXRoX2NvbGxhdGUgQVMgcGdfY2F0YWxvZy50ZXh0IENPTExBVEUgIkMiOworKDEgcm93 KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX3dpdGhfY29s bGF0ZScsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fd2l0aF9jb2xsYXRl IEFTIHBnX2NhdGFsb2cudGV4dCsKKyAgICAgICAgIENPTExBVEUgIkMiOworKDEgcm93KQor CistLSBUZXN0IGRvbWFpbiB0aGF0IHNoYWRvd3MgYSBidWlsdC1pbiB0eXBlIG5hbWUgKG11 c3QgdXNlIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSkKK0NSRUFURSBET01BSU4gcHVibGljLmlu dCBBUyBwZ19jYXRhbG9nLmludDQ7CistLSBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2UgJ2lu dCcgcmVzb2x2ZXMgdG8gcGdfY2F0YWxvZy5pbnQ0LCBub3QgcHVibGljLmludAorU0VMRUNU IHBnX2dldF9kb21haW5fZGRsKCdpbnQnKTsgIC0tIHNob3VsZCBmYWlsCitFUlJPUjogICJp bnRlZ2VyIiBpcyBub3QgYSBkb21haW4KK0hJTlQ6ICBVc2UgYSBzY2hlbWEtcXVhbGlmaWVk IG5hbWUgaWYgdGhlIGRvbWFpbiBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgYnVpbHQtaW4gbmFt ZS4KKy0tIFRoaXMgc2hvdWxkIHdvcmsgd2l0aCBzY2hlbWEtcXVhbGlmaWVkIG5hbWUKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncHVibGljLmludCcpOworICAgICAgICAgICAgICAg cGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy4i aW50IiBBUyBwZ19jYXRhbG9nLmludDQ7CisoMSByb3cpCisKKy0tIENsZWFudXAKK0RST1Ag RE9NQUlOIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGU7CitEUk9QIERPTUFJTiByZWdyZXNzX2Rv bWFpbl9ub3RfbnVsbDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX2NoZWNrOworRFJP UCBET01BSU4gInJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiOworRFJPUCBET01BSU4gcmVn cmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfdGVzdF9z Y2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluOworRFJPUCBTQ0hFTUEgcmVncmVzc190ZXN0 X3NjaGVtYTsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfYWRkcmVzc19kb21haW47CitEUk9QIFRZ UEUgcmVncmVzc19hZGRyZXNzX3R5cGU7CitEUk9QIERPTUFJTiByZWdyZXNzX2ludF9hcnJh eV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3ByZWNpc2VfbnVtZXJpYzsKK0RST1Ag RE9NQUlOIHJlZ3Jlc3Nfc2VxX2RvbWFpbjsKK0RST1AgU0VRVUVOQ0UgcmVncmVzc190ZXN0 X3NlcV9yZW5hbWVkOworRFJPUCBET01BSU4gcmVncmVzc19kZXJpdmVkX2RvbWFpbjsKK0RS T1AgRE9NQUlOIHJlZ3Jlc3NfYmFzZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3Np bXBsZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQ7CitE Uk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9taXhlZDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3Nf ZG9tYWluX3dpdGhfY29sbGF0ZTsKK0RST1AgRE9NQUlOIHB1YmxpYy5pbnQ7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAwMjFkNTdmNjZiYi4uZjE1YjQ2ZmM4MGYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMjgsNyArMjgsNyBAQCB0 ZXN0OiBzdHJpbmdzIG1kNSBudW1lcm9sb2d5IHBvaW50IGxzZWcgbGluZSBib3ggcGF0aCBw b2x5Z29uIGNpcmNsZSBkYXRlIHRpbWUgdAogIyBnZW9tZXRyeSBkZXBlbmRzIG9uIHBvaW50 LCBsc2VnLCBsaW5lLCBib3gsIHBhdGgsIHBvbHlnb24sIGNpcmNsZQogIyBob3JvbG9neSBk ZXBlbmRzIG9uIGRhdGUsIHRpbWUsIHRpbWV0eiwgdGltZXN0YW1wLCB0aW1lc3RhbXB0eiwg aW50ZXJ2YWwKICMgLS0tLS0tLS0tLQotdGVzdDogZ2VvbWV0cnkgaG9yb2xvZ3kgdHN0eXBl cyByZWdleCB0eXBlX3Nhbml0eSBvcHJfc2FuaXR5IG1pc2Nfc2FuaXR5IGNvbW1lbnRzIGV4 cHJlc3Npb25zIHVuaWNvZGUgeGlkIG12Y2MgZGF0YWJhc2Ugc3RhdHNfaW1wb3J0IHBnX25k aXN0aW5jdCBwZ19kZXBlbmRlbmNpZXMgb2lkOAordGVzdDogZ2VvbWV0cnkgaG9yb2xvZ3kg dHN0eXBlcyByZWdleCB0eXBlX3Nhbml0eSBvcHJfc2FuaXR5IG1pc2Nfc2FuaXR5IGNvbW1l bnRzIGV4cHJlc3Npb25zIHVuaWNvZGUgeGlkIG12Y2MgZGF0YWJhc2Ugc3RhdHNfaW1wb3J0 IHBnX25kaXN0aW5jdCBwZ19kZXBlbmRlbmNpZXMgb2lkOCBvYmplY3RfZGRsCiAKICMgLS0t LS0tLS0tLQogIyBMb2FkIGh1Z2UgYW1vdW50cyBvZiBkYXRhCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9vYmplY3RfZGRsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L29iamVjdF9kZGwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li40ZWIwZTViODZkNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L29iamVjdF9kZGwuc3FsCkBAIC0wLDAgKzEsMTQ1IEBACistLQorLS0gVGVzdCBmb3IgdGhl IGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gZ2V0IG9iamVjdCBEREw6CistLSAtIHBnX2dldF9k b21haW5fZGRsCistLQorCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUg QVMgVEVYVAorICAgIERFRkFVTFQgJzAwMDAwJworICAgIENPTlNUUkFJTlQgcmVncmVzc191 c19wb3N0YWxfY29kZV9jaGVjaworICAgICAgICBDSEVDSyAoCisgICAgICAgICAgICBWQUxV RSB+ICdeXGR7NX0kJworICAgIE9SIFZBTFVFIH4gJ15cZHs1fS1cZHs0fSQnCisgICAgKTsK KworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJyk7 CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCBw cmV0dHkgPT4gZmFsc2UpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3Vz X3Bvc3RhbF9jb2RlJywgZmFsc2UpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX3VzX3Bvc3RhbF9jb2RlJywgcHJldHR5ID0+IHRydWUpOworU0VMRUNUIHBnX2dldF9k b21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJywgdHJ1ZSk7CisKKworQ1JFQVRF IERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfbnVsbCBBUyBJTlQgTk9UIE5VTEw7CisKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90X251bGwnKTsKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90X251bGwnLCBwcmV0 dHkgPT4gdHJ1ZSk7CisKKworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2RvbWFpbl9jaGVjayBB UyBJTlQKKyAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYSBDSEVDSyAoVkFMVUUgPCAxMDApCisg ICAgQ09OU1RSQUlOVCByZWdyZXNzX2IgQ0hFQ0sgKFZBTFVFID4gMTApOworCitTRUxFQ1Qg cGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX2NoZWNrJyk7CitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX2NoZWNrJywgcHJldHR5ID0+IHRydWUp OworCisKK0NSRUFURSBET01BSU4gInJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiIEFTIElO VAorICAgIENPTlNUUkFJTlQgcmVncmVzc19hIENIRUNLIChWQUxVRSA8IDEwMCkKKyAgICBD T05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFpbnQgQiIgQ0hFQ0sgKFZBTFVFID4gMTApCisg ICAgQ09OU1RSQUlOVCAicmVncmVzc19Db25zdHJhaW50QyIgQ0hFQ0sgKFZBTFVFICE9IDU1 KTsKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCcicmVncmVzc19kb21haW4gd2l0aCBz cGFjZSInKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgnInJlZ3Jlc3NfZG9tYWluIHdp dGggc3BhY2UiJywgcHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGVycm9yIGNhc2VzCitT RUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfbm9uZXhpc3RlbnRfZG9tYWluJzo6 cmVndHlwZSk7ICAtLSBzaG91bGQgZmFpbAorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKE5V TEwpOyAgLS0gc2hvdWxkIHJldHVybiBOVUxMCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwo TlVMTCwgcHJldHR5ID0+IHRydWUpOyAgLS0gc2hvdWxkIHJldHVybiBOVUxMCitTRUxFQ1Qg cGdfZ2V0X2RvbWFpbl9kZGwoJ3BnX2NsYXNzJyk7ICAtLSBzaG91bGQgZmFpbCAtIG5vdCBh IGRvbWFpbgorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdpbnRlZ2VyJyk7ICAtLSBzaG91 bGQgZmFpbCAtIG5vdCBhIGRvbWFpbgorCistLSBUZXN0IGRvbWFpbnMgd2l0aCBubyBjb25z dHJhaW50cworQ1JFQVRFIERPTUFJTiByZWdyZXNzX3NpbXBsZV9kb21haW4gQVMgdGV4dDsK K1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zaW1wbGVfZG9tYWluJyk7CitT RUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfc2ltcGxlX2RvbWFpbicsIHByZXR0 eSA9PiB0cnVlKTsKKworLS0gVGVzdCBkb21haW4gb3ZlciBhbm90aGVyIGRvbWFpbgorQ1JF QVRFIERPTUFJTiByZWdyZXNzX2Jhc2VfZG9tYWluIEFTIHZhcmNoYXIoMTApOworQ1JFQVRF IERPTUFJTiByZWdyZXNzX2Rlcml2ZWRfZG9tYWluIEFTIHJlZ3Jlc3NfYmFzZV9kb21haW4g Q0hFQ0sgKExFTkdUSChWQUxVRSkgPiAzKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgn cmVncmVzc19kZXJpdmVkX2RvbWFpbicpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdy ZWdyZXNzX2Rlcml2ZWRfZG9tYWluJywgcHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRv bWFpbiB3aXRoIGNvbXBsZXggZGVmYXVsdCBleHByZXNzaW9ucworQ1JFQVRFIFNFUVVFTkNF IHJlZ3Jlc3NfdGVzdF9zZXE7CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3Nfc2VxX2RvbWFpbiBB UyBpbnQgREVGQVVMVCBuZXh0dmFsKCdyZWdyZXNzX3Rlc3Rfc2VxJyk7CitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfc2VxX2RvbWFpbicpOworU0VMRUNUIHBnX2dldF9k b21haW5fZGRsKCdyZWdyZXNzX3NlcV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0t IFRlc3QgZG9tYWluIHdpdGggYSByZW5hbWVkIHNlcXVlbmNlIGFzIGRlZmF1bHQgZXhwcmVz c2lvbgorQUxURVIgU0VRVUVOQ0UgcmVncmVzc190ZXN0X3NlcSBSRU5BTUUgVE8gcmVncmVz c190ZXN0X3NlcV9yZW5hbWVkOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNz X3NlcV9kb21haW4nKTsKKworLS0gVGVzdCBkb21haW4gd2l0aCB0eXBlIG1vZGlmaWVycwor Q1JFQVRFIERPTUFJTiByZWdyZXNzX3ByZWNpc2VfbnVtZXJpYyBBUyBudW1lcmljKDEwLDIp IERFRkFVTFQgMC4wMDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19wcmVj aXNlX251bWVyaWMnKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19wcmVj aXNlX251bWVyaWMnLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIG92ZXIg YXJyYXkgdHlwZQorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2ludF9hcnJheV9kb21haW4gQVMg aW50W10gQ0hFQ0sgKGFycmF5X2xlbmd0aChWQUxVRSwgMSkgPD0gNSk7CitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfaW50X2FycmF5X2RvbWFpbicpOworU0VMRUNUIHBn X2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2ludF9hcnJheV9kb21haW4nLCBwcmV0dHkgPT4g dHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIGluIG5vbi1wdWJsaWMgc2NoZW1hCitDUkVBVEUg U0NIRU1BIHJlZ3Jlc3NfdGVzdF9zY2hlbWE7CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfdGVz dF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluIEFTIHRleHQgREVGQVVMVCAndGVzdCc7 CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVz c19zY2hlbWFfZG9tYWluJyk7CisKKy0tIFRlc3QgZG9tYWluIHdpdGggbXVsdGlwbGUgY29u c3RyYWludCB0eXBlcyBjb21iaW5lZAorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2NvbXByZWhl bnNpdmVfZG9tYWluIEFTIHZhcmNoYXIoNTApCisgICAgTk9UIE5VTEwKKyAgICBERUZBVUxU ICdkZWZhdWx0X3ZhbHVlJworICAgIENIRUNLIChMRU5HVEgoVkFMVUUpID49IDUpCisgICAg Q0hFQ0sgKFZBTFVFICF+ICdeXHMqJCcpOyAgLS0gbm90IGp1c3Qgd2hpdGVzcGFjZQorU0VM RUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluJyk7 CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21h aW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIG92ZXIgY29tcG9zaXRl IHR5cGUKK0NSRUFURSBUWVBFIHJlZ3Jlc3NfYWRkcmVzc190eXBlIEFTIChzdHJlZXQgdGV4 dCwgY2l0eSB0ZXh0LCB6aXBjb2RlIHRleHQpOworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2Fk ZHJlc3NfZG9tYWluIEFTIHJlZ3Jlc3NfYWRkcmVzc190eXBlIENIRUNLICgoVkFMVUUpLnpp cGNvZGUgfiAnXlxkezV9JCcpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNz X2FkZHJlc3NfZG9tYWluJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nf YWRkcmVzc19kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIHdp dGggTk9UIFZBTElEIGNvbnN0cmFpbnQKK0NSRUFURSBET01BSU4gcmVncmVzc19kb21haW5f bm90X3ZhbGlkIEFTIGludDsKK0FMVEVSIERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfdmFs aWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcG9zaXRpdmUgQ0hFQ0sgKFZBTFVFID4gMCkgTk9U IFZBTElEOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9ub3Rf dmFsaWQnKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90 X3ZhbGlkJywgcHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRvbWFpbiB3aXRoIG1peCBv ZiB2YWxpZCBhbmQgbm90IHZhbGlkIGNvbnN0cmFpbnRzCitDUkVBVEUgRE9NQUlOIHJlZ3Jl c3NfZG9tYWluX21peGVkIEFTIGludCBDSEVDSyAoVkFMVUUgIT0gMCk7CitBTFRFUiBET01B SU4gcmVncmVzc19kb21haW5fbWl4ZWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcmFuZ2UgQ0hF Q0sgKFZBTFVFIEJFVFdFRU4gMSBBTkQgMTAwKSBOT1QgVkFMSUQ7CitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX21peGVkJyk7CitTRUxFQ1QgcGdfZ2V0X2Rv bWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX21peGVkJywgcHJldHR5ID0+IHRydWUpOworCist LSBUZXN0IGRvbWFpbiB3aXRoIGNvbGxhdGlvbgorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2Rv bWFpbl93aXRoX2NvbGxhdGUgQVMgdGV4dCBDT0xMQVRFICJDIjsKK1NFTEVDVCBwZ19nZXRf ZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fd2l0aF9jb2xsYXRlJyk7CitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZScsIHByZXR0eSA9 PiB0cnVlKTsKKworLS0gVGVzdCBkb21haW4gdGhhdCBzaGFkb3dzIGEgYnVpbHQtaW4gdHlw ZSBuYW1lIChtdXN0IHVzZSBzY2hlbWEtcXVhbGlmaWVkIG5hbWUpCitDUkVBVEUgRE9NQUlO IHB1YmxpYy5pbnQgQVMgcGdfY2F0YWxvZy5pbnQ0OworLS0gVGhpcyBzaG91bGQgZmFpbCBi ZWNhdXNlICdpbnQnIHJlc29sdmVzIHRvIHBnX2NhdGFsb2cuaW50NCwgbm90IHB1YmxpYy5p bnQKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgnaW50Jyk7ICAtLSBzaG91bGQgZmFpbAor LS0gVGhpcyBzaG91bGQgd29yayB3aXRoIHNjaGVtYS1xdWFsaWZpZWQgbmFtZQorU0VMRUNU IHBnX2dldF9kb21haW5fZGRsKCdwdWJsaWMuaW50Jyk7CisKKy0tIENsZWFudXAKK0RST1Ag RE9NQUlOIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGU7CitEUk9QIERPTUFJTiByZWdyZXNzX2Rv bWFpbl9ub3RfbnVsbDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX2NoZWNrOworRFJP UCBET01BSU4gInJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiOworRFJPUCBET01BSU4gcmVn cmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfdGVzdF9z Y2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluOworRFJPUCBTQ0hFTUEgcmVncmVzc190ZXN0 X3NjaGVtYTsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfYWRkcmVzc19kb21haW47CitEUk9QIFRZ UEUgcmVncmVzc19hZGRyZXNzX3R5cGU7CitEUk9QIERPTUFJTiByZWdyZXNzX2ludF9hcnJh eV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3ByZWNpc2VfbnVtZXJpYzsKK0RST1Ag RE9NQUlOIHJlZ3Jlc3Nfc2VxX2RvbWFpbjsKK0RST1AgU0VRVUVOQ0UgcmVncmVzc190ZXN0 X3NlcV9yZW5hbWVkOworRFJPUCBET01BSU4gcmVncmVzc19kZXJpdmVkX2RvbWFpbjsKK0RS T1AgRE9NQUlOIHJlZ3Jlc3NfYmFzZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3Np bXBsZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQ7CitE Uk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9taXhlZDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3Nf ZG9tYWluX3dpdGhfY29sbGF0ZTsKK0RST1AgRE9NQUlOIHB1YmxpYy5pbnQ7Ci0tIAoyLjQ1 LjEKCg== --------------GNCbG2nUQ0wuzkgCnt3Wm9AT--