From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [IPv6:2a00:1450:4864:20::635]) by sourceware.org (Postfix) with ESMTPS id 9C6DF3858D1E; Sun, 25 Feb 2024 20:40:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9C6DF3858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9C6DF3858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::635 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708893663; cv=none; b=mKN+oBerWq/s8fMdo1YatjyrrotmcYZQX44j7z/KdGwCVqhUJkABoG3E3iAAZUvk6MtLgawByOUGq1nFb73FR0hrI2PFDntamuB6RGKzm7G0v+Nts2Epm+ufW41BQD3I+6bRTteoTd1ECaexKfuJJbWEkO14os2jnUOFhjepSVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708893663; c=relaxed/simple; bh=JlKCWPYmEL0d2B2lR+H9pg5/IpLfAveg8xp08KBkYTg=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=fEQDV49X6DPJNnCPjG4x9HUzc2flfOiCJA/K9WvFmA9nYAN7BOSVG+2V9Bw1i7X0qAN99MhHy2stXAvQs60E68hS4YVH6LDuOf2zbzMfSMMuSNi5IgpiIK5ddqPlpnArBdrtaRvnuqx0EIANWGzRTGFvMWurW3/TfyY52dd0ewg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-a3d5e77cfbeso432174966b.0; Sun, 25 Feb 2024 12:40:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708893658; x=1709498458; darn=gcc.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=742a/OkKWf8uiFmzdIG6Pu97N83uuYAL3N4HCFzWLOs=; b=D1IsgFHZx7QbWitP+TduePW+5YGCEq87BUUAGZx2XOKdU2GyFAoZFospHEbDqWI3e+ qi2FoGXkMTyLmHCttP9Odzcz/z2moPTYVrYVO4tD47drC3D4gqZ6nvwDcAiOWX+54u// zdipcnFeSATGSmI2Mu9pQbPs6JuSWTTHQ53E92wUlS/HdNjsFXztwcST0d+vf9bAsTk4 zQ6gRJNUtLM9Xvs881CzBYNbl28tu4UNAvy/t6jFZVf0RJ+3NkztzmggbQ//5ojLY6T0 KuqSUB4FO2ibyX5YTvQ47Q+doIqXDGruqg8MbdsxWwDWrmOYne82HQ/RVOIXWkkJ8c4P xVGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708893658; x=1709498458; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=742a/OkKWf8uiFmzdIG6Pu97N83uuYAL3N4HCFzWLOs=; b=Fbbq8AI4fHdP5pa9t3EGcf0X/TV1D+2JeE9XOZ8nCFEnfbF8U1ao5RuGX8Edks+EUT 9NuBj/fP/CbhoqPV8b3KKEzyHK+belYmNF/o/T8L57Fn0i5kRS3LSXUcsS39XPrPtOR5 VdpnqL/83qRHbq2FWpobVvt7aOWUj3McBnoNYBumJRgehJIAZIfzKxS4/OfpOt89cb58 ogRpWTqc0gwIC1nemgGxkKbPk+SUnujSBVLszb8Kblljekfk154E0lurgypypwy4Lax6 PIt7HkcXgnJMbFU5n18mVDm63x2E3d6ALCkIzfedzy+3gp6Wz5juHSRtQkJnODQ715oF l+Qg== X-Forwarded-Encrypted: i=1; AJvYcCUI/HXBe3vur+UC+E4OLpV8e4Z5/TVw6w/SzNnGk0DZgF+m7o+dm/CC2mNSaZgTYLZnRwdZv1EyiQBIs2NkGbvFQdCA X-Gm-Message-State: AOJu0YwRuzp1rKX6/AQ+6eAxBg5ilBs5A3Qg7TpQ7EAxFy9/klhbly3d eafkc4xec4iYdC0rV9AbLYhjZ7QBKR48oLiQHlr883qELmS8o5FYtfF2OD7/MjkgEUS3bltVNgI YtLMjKmclY09w7ZmoNp+S0rbqtr8vSMonkas= X-Google-Smtp-Source: AGHT+IHc17sk0wbBL9S0qdWBwBp5daFJm3tIuOA/5op6QUUlZfk8jvyRUMJVtn8Qvh1v9ok8S/L2LVLVg7Zo5DsEkqg= X-Received: by 2002:a17:906:1159:b0:a3e:feee:3a5b with SMTP id i25-20020a170906115900b00a3efeee3a5bmr4418769eja.3.1708893657996; Sun, 25 Feb 2024 12:40:57 -0800 (PST) MIME-Version: 1.0 References: <5a4694d0-c610-4297-8255-77a15cda92c4@gmx.de> In-Reply-To: <5a4694d0-c610-4297-8255-77a15cda92c4@gmx.de> From: Alexander Westbrooks Date: Sun, 25 Feb 2024 14:40:47 -0600 Message-ID: Subject: Re: [PATCH] Fortran - Error compiling PDT Type-bound Procedures [PR82943/86148/86268] To: Harald Anlauf Cc: gcc-patches@gcc.gnu.org, fortran@gcc.gnu.org Content-Type: multipart/mixed; boundary="00000000000071b8d406123acf31" X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000071b8d406123acf31 Content-Type: multipart/alternative; boundary="00000000000071b8d306123acf2f" --00000000000071b8d306123acf2f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Harald, Thank you for reviewing my code. I've been doing research and debugging to investigate the error thrown by Intel and NAG for the deferred parameter in the dummy variable declaration. I found where the problem was and added the fix as part of my patch. I've attached the patch as a file, which also includes your feedback and suggested fixes. I've updated the test case pdt_37.f03 to check for the POINTER or ALLOCATABLE error as you suggested. All regression tests pass, including the new ones, after including the fix for the POINTER or ALLOCATABLE error for CLASS declarations of PDTs when deferred length parameters are used. This was tested on WSL 2, with Ubuntu 20.04 distro. Is this okay to push to the trunk? Thanks, Alexander Westbrooks On Sun, Feb 11, 2024 at 2:11=E2=80=AFPM Harald Anlauf wrote: > Hi Alex, > > I've been unable to apply your patch to my local trunk, likely due to > whitespace issues my newsreader handles differently from your site. > I see it inline instead of attached. > > A few general remarks: > > Please follow the general recommendation regarding style if possible, > see https://www.gnu.org/prep/standards/standards.html#Formatting > regarding formatting/whitespace use (5.1) and comments (5.2) > > Also, when an error message text spans multiple lines, please place the > whitespace at the end of a line, not at the beginning of the new one: > > > + if ( resolve_bindings_derived->attr.pdt_template && > > + !gfc_pdt_is_instance_of(resolve_bindings_derived, > > + CLASS_DATA(me_arg)->ts.u.derived)) > > + { > > + gfc_error ("Argument %qs of %qs with PASS(%s) at %L must be of" > > + " the parametric derived-type %qs", me_arg->name, proc->name, > > gfc_error ("Argument %qs of %qs with PASS(%s) at %L must be of " > "the parametric derived-type %qs", me_arg->name, > proc->name, > > > + me_arg->name, &where, resolve_bindings_derived->name); > > + goto error; > > + } > > The following change is almost unreadable: the lnegthy comment is split > over three parts and almost hides the code. Couldn't this be combined > into one comment before the function? > > > diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc > > index fddf68f8398..11f4bac0415 100644 > > --- a/gcc/fortran/symbol.cc > > +++ b/gcc/fortran/symbol.cc > > @@ -5172,6 +5172,35 @@ gfc_type_is_extension_of (gfc_symbol *t1, > gfc_symbol > > *t2) > > return gfc_compare_derived_types (t1, t2); > > } > > > > +/* Check if a parameterized derived type t2 is an instance of a PDT > > template t1 */ > > + > > +bool > > +gfc_pdt_is_instance_of(gfc_symbol *t1, gfc_symbol *t2) > > +{ > > + if ( !t1->attr.pdt_template || !t2->attr.pdt_type ) > > + return false; > > + > > + /* > > + in decl.cc, gfc_get_pdt_instance, a pdt instance is given a 3 > > character prefix "Pdt", followed > > + by an underscore list of the kind parameters, up to a maximum of 8. > > + > > + So to check if a PDT Type corresponds to the template, extract the > > core derive_type name, > > + and then see if it is type compatible by name... > > + > > + For example: > > + > > + Pdtf_2_2 -> extract out the 'f' -> see if the derived type 'f' is > > compatible with symbol t1 > > + */ > > + > > + // Starting at index 3 of the string in order to skip past the 'Pdt' > > prefix > > + // Also, here the length of the template name is used in order to > avoid > > the > > + // kind parameter suffixes that are placed at the end of PDT instance > > names. > > + if ( !(strncmp(&(t2->name[3]), t1->name, strlen(t1->name)) =3D=3D 0)= ) > > + return false; > > + > > + return true; > > +} > > + > > > > /* Check if two typespecs are type compatible (F03:5.1.1.2): > > If ts1 is nonpolymorphic, ts2 must be the same type. > > The following testcase tests for errors. I tried Intel and NAG on it > after commenting the 'contains' section of the type desclaration. > Both complained about subroutine deferred_len_param, e.g. > > Intel: > A colon may only be used as a type parameter value in the declaration of > an object that has the POINTER or ALLOCATABLE attribute. [THIS] > class(param_deriv_type(:)), intent(inout) :: this > > NAG: > Entity THIS of type PARAM_DERIV_TYPE(A=3D:) has a deferred length type > parameter but is not a data pointer or allocatable > > Do we detect this after your patch? If the answer is yes, > can we add another subroutine where we check for this error? > (the dg-error suggests we only expect assumed len type parameters.) > If no, maybe add a comment in the testcase that this subroutine > may need updating later. > > > diff --git a/gcc/testsuite/gfortran.dg/pdt_37.f03 > > b/gcc/testsuite/gfortran.dg/pdt_37.f03 > > new file mode 100644 > > index 00000000000..68d376fad25 > > --- /dev/null > > +++ b/gcc/testsuite/gfortran.dg/pdt_37.f03 > > @@ -0,0 +1,34 @@ > > +! { dg-do compile } > > +! > > +! Tests the fixes for PR82943. > > +! > > +! This test focuses on the errors produced by incorrect LEN parameters > for > > dummy > > +! arguments of PDT Typebound Procedures. > > +! > > +! Contributed by Alexander Westbrooks > > +! > > +module test_len_param > > + > > + type :: param_deriv_type(a) > > + integer, len :: a > > + contains > > + procedure :: assumed_len_param ! Good. No error > expected. > > + procedure :: deferred_len_param ! { dg-error "All LEN > type > > parameters of the passed dummy argument" } > > + procedure :: fixed_len_param ! { dg-error "All LEN > type > > parameters of the passed dummy argument" } > > + end type > > + > > +contains > > + subroutine assumed_len_param(this) > > + class(param_deriv_type(*)), intent(inout) :: this > > + end subroutine > > + > > + subroutine deferred_len_param(this) > > + class(param_deriv_type(:)), intent(inout) :: this > > + end subroutine > > + > > + subroutine fixed_len_param(this) > > + class(param_deriv_type(10)), intent(inout) :: this > > + end subroutine > > + > > +end module > > + > > --00000000000071b8d306123acf2f-- --00000000000071b8d406123acf31 Content-Type: application/octet-stream; name="0001-Fortran-Error-compiling-PDT-Type-bound-Procedures-PR.patch" Content-Disposition: attachment; filename="0001-Fortran-Error-compiling-PDT-Type-bound-Procedures-PR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt1z5hb40 RnJvbSBiY2RkZTQwMzBmODA0YjgyMDVhOTI1NTY3MGUyZTlhNTUzOTVmZTgy IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgV2Vz dGJyb29rcyA8YWxleGFuZGVyd0BnY2MuZ251Lm9yZz4KRGF0ZTogU3VuLCAy NSBGZWIgMjAyNCAxNDoyODoxNCAtMDYwMApTdWJqZWN0OiBbUEFUQ0hdIEZv cnRyYW4gLSBFcnJvciBjb21waWxpbmcgUERUIFR5cGUtYm91bmQgUHJvY2Vk dXJlcwogW1BSODI5NDMvODYxNDgvODYyNjhdCgpUaGlzIHBhdGNoIGFsbG93 cyBwYXJhbWV0ZXJpemVkIGRlcml2ZWQgdHlwZXMgdG8gY29tcGlsZSBzdWNj ZXNzZnVsbHkKd2hlbiB0eXBlYm91bmQgcHJvY2VkdXJlcyBhcmUgc3BlY2lm aWVkIGluIHRoZSB0eXBlIHNwZWNpZmljYXRpb24uCkZ1cnRoZXJtb3JlLCBp dCBhbGxvd3MgZnVuY3Rpb24gY2FsbHMgZm9yIFBEVHMgYnkgc2V0dGluZyB0 aGUKZjJrX2Rlcml2ZWQgc3BhY2Ugb2YgUERUIGluc3RhbmNlcyB0byByZWZl cmVuY2UgdGhlaXIgb3JpZ2luYWwgdGVtcGxhdGUsCnRoZXJlYnkgZ2l2aW5n IGl0IHJlZmVyZW50aWFsIGFjY2VzcyB0byB0aGUgdHlwZWJvdW5kIHByb2Nl ZHVyZXMgb2YgdGhlCnRlbXBsYXRlLiBMYXN0bHksIGl0IGFkZHMgYSBjaGVj ayBmb3IgZGVmZXJyZWQgbGVuZ3RoIHBhcmFtZXRlcnMgb2YKUERUcyBpbiBD TEFTUyBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLCBhbmQgY29ycmVjdGx5IHRo cm93cyBhbiBlcnJvciBpZgpzdWNoIGRlY2xhcmF0aW9ucyBhcmUgbWlzc2lu ZyBQT0lOVEVSIG9yIEFMTE9DQVRBQkxFIGF0dHJpYnV0ZXMuCgoyMDI0LTAy LTI1ICBBbGV4YW5kZXIgV2VzdGJyb29rcyAgPGFsZXhhbmRlcndAZ2NjLmdu dS5vcmc+CgpnY2MvZm9ydHJhbi9DaGFuZ2VMb2c6CglQUiBmb3J0cmFuLzgy OTQzCglQUiBmb3J0cmFuLzg2MTQ4CglQUiBmb3J0cmFuLzg2MjY4CgkqIGRl Y2wuY2MgKGdmY19nZXRfcGR0X2luc3RhbmNlKTogU2V0IHRoZSBQRFQgaW5z dGFuY2UgZmllbGQKICAgICAgICAgICdmMmtfZGVyaXZlZCcsIGlmIG5vdCBz ZXQgYWxyZWFkeSwgdG8gcG9pbnQgdG8gdGhlIGdpdmVuCiAgICAgICAgICBQ RFQgdGVtcGxhdGUgJ2Yya19kZXJpdmVkJyBuYW1lc3BhY2UgaW4gb3JkZXIg dG8gZ2l2ZSB0aGUKICAgICAgICAgIFBEVCBpbnN0YW5jZSByZWZlcmVudGlh bCBhY2Nlc3MgdG8gdGhlIHR5cGVib3VuZCBwcm9jZWR1cmVzCiAgICAgICAg ICBvZiB0aGUgdGVtcGxhdGUuCgkqIGdmb3J0cmFuLmggKGdmY19wZHRfaXNf aW5zdGFuY2Vfb2YpOiBBZGQgcHJvdG90eXBlLgoJKiByZXNvbHZlLmNjIChy ZXNvbHZlX3R5cGVib3VuZF9wcm9jZWR1cmUpOiBJZiB0aGUgZGVyaXZlZCB0 eXBlCiAgICAgICAgICBkb2VzIG5vdCBoYXZlIHRoZSBhdHRyaWJ1dGUgJ3Bk dF90ZW1wbGF0ZScgc2V0LCBjb21wYXJlIHRoZQogICAgICAgICAgZHVtbXkg YXJndW1lbnQgdG8gdGhlICdyZXNvbHZlX2JpbmRpbmdzX2Rlcml2ZWQnIHR5 cGUgbGlrZSB1c3VhbC4KICAgICAgICAgIElmIHRoZSBkZXJpdmVkIHR5cGUg aXMgYSAncGR0X3RlbXBsYXRlJywgdGhlbiBjaGVjayBpZiB0aGUKICAgICAg ICAgIGR1bW15IGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIHRoZSBQRFQg dGVtcGxhdGUuIElmIHRoZSBkZXJpdmVkCiAgICAgICAgICB0eXBlIGlzIGEg UERUIHRlbXBsYXRlLCBhbmQgdGhlIGR1bW15IGFyZ3VtZW50IGlzIGFuIGlu c3RhbmNlIG9mCiAgICAgICAgICB0aGF0IHRlbXBsYXRlLCBidXQgdGhlIGR1 bW15IGFyZ3VtZW50ICdwYXJhbV9saXN0JyBpcyBub3QKICAgICAgICAgIFNQ RUNfQVNTVU1FRCwgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBMRU4gcGFyYW1l dGVycyBpbiB0aGUKICAgICAgICAgIGR1bW15IGFyZ3VtZW50LiBJZiB0aGVy ZSBhcmUgbm8gTEVOIHBhcmFtZXRlcnMsIHRoZW4gdGhpcyBpbXBsaWVzCiAg ICAgICAgICB0aGF0IHRoZXJlIGFyZSBvbmx5IEtJTkQgcGFyYW1ldGVycyBp biB0aGUgZHVtbXkgYXJndW1lbnQuCiAgICAgICAgICBJZiB0aGVyZSBhcmUg TEVOIHBhcmFtZXRlcnMsIHRoaXMgd291bGQgYmUgYW4gZXJyb3IsIGZvciBh bGwKICAgICAgICAgIExFTiBwYXJhbWV0ZXJzIGZvciB0aGUgZHVtbXkgYXJn dW1lbnQgTVVTVCBiZSBhc3N1bWVkIGZvcgogICAgICAgICAgdHlwZWJvdW5k IHByb2NlZHVyZXMgb2YgUERUcy4KICAgICAgICAocmVzb2x2ZV9wZHQpOiBB ZGQgYSBjaGVjayBmb3IgQUxMT0NBVEFCTEUgYW5kIFBPSU5URVIgYXR0cmli dXRlcyBmb3IKICAgICAgICAgIFNQRUNfREVGRVJSRUQgcGFyYW1ldGVycyBv ZiBQRFQgY2xhc3Mgc3ltYm9scy4gIEFMTE9DQVRBQkxFIGFuZAogICAgICAg ICAgUE9JTlRFUiBhdHRyaWJ1dGVzIGZvciBhIFBEVCBjbGFzcyBzeW1ib2wg YXJlIHN0b3JlZCBpbiB0aGUKICAgICAgICAgICdjbGFzc19wb2ludGVyJyBh bmQgJ2FsbG9jYXRhYmxlJyBhdHRyaWJ1dGVzIG9mIHRoZSAnX2RhdGEnCiAg ICAgICAgICBjb21wb25lbnQgcmVzcGVjdGl2ZWx5LgoJKiBzeW1ib2wuY2Mg KGdmY19wZHRfaXNfaW5zdGFuY2Vfb2YpOiBOZXcgZnVuY3Rpb24uCgpnY2Mv dGVzdHN1aXRlL0NoYW5nZUxvZzoKCVBSIGZvcnRyYW4vODI5NDMKCVBSIGZv cnRyYW4vODYxNDgKCVBSIGZvcnRyYW4vODYyNjgKCSogZ2ZvcnRyYW4uZGcv cGR0XzQuZjAzOiBVcGRhdGUgbW9kaWZpZWQgZXJyb3IgbWVzc2FnZS4KCSog Z2ZvcnRyYW4uZGcvcGR0XzM0LmYwMzogTmV3IHRlc3QuCgkqIGdmb3J0cmFu LmRnL3BkdF8zNS5mMDM6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9wZHRf MzYuZjAzOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvcGR0XzM3LmYwMzog TmV3IHRlc3QuCgpTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgV2VzdGJyb29r cyA8YWxleGFuZGVyd0BnY2MuZ251Lm9yZz4KLS0tCiBnY2MvZm9ydHJhbi9k ZWNsLmNjICAgICAgICAgICAgICAgICAgfCAxNSArKysrKysKIGdjYy9mb3J0 cmFuL2dmb3J0cmFuLmggICAgICAgICAgICAgICB8ICAxICsKIGdjYy9mb3J0 cmFuL3Jlc29sdmUuY2MgICAgICAgICAgICAgICB8IDc4ICsrKysrKysrKysr KysrKysrKysrKysrLS0tLS0KIGdjYy9mb3J0cmFuL3N5bWJvbC5jYyAgICAg ICAgICAgICAgICB8IDI2ICsrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvcGR0XzM0LmYwMyB8IDQyICsrKysrKysrKysrKysrKwogZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMzUuZjAzIHwgNDUgKysrKysr KysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMzYu ZjAzIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvcGR0XzM3LmYwMyB8IDc0ICsrKysrKysrKysrKysr KysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF80 LmYwMyAgfCAgMiArLQogOSBmaWxlcyBjaGFuZ2VkLCAzMzQgaW5zZXJ0aW9u cygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMzQuZjAzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMzUuZjAz CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9wZHRfMzYuZjAzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9wZHRfMzcuZjAzCgpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vZGVjbC5jYyBiL2djYy9mb3J0cmFuL2RlY2wuY2MKaW5kZXggNTAz ZWNiOGQ5YjUuLmMyOWIyYmIwZjQ1IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJh bi9kZWNsLmNjCisrKyBiL2djYy9mb3J0cmFuL2RlY2wuY2MKQEAgLTQwODMs NiArNDA4MywyMSBAQCBnZmNfZ2V0X3BkdF9pbnN0YW5jZSAoZ2ZjX2FjdHVh bF9hcmdsaXN0ICpwYXJhbV9saXN0LCBnZmNfc3ltYm9sICoqc3ltLAogCSAg Y29udGludWU7CiAJfQogCisgIC8qIAorICAgIEFkZHJlc3NpbmcgUFI4Mjk0 MywgdGhpcyB3aWxsIGZpeCB0aGUgaXNzdWUgd2hlcmUgYSBmdW5jdGlvbi9z dWJyb3V0aW5lIGlzIGRlY2xhcmVkIGFzIG5vdAorICAgIGEgbWVtYmVyIG9m IHRoZSBQRFQgaW5zdGFuY2UuIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgYmVj YXVzZSB0aGUgUERUIGluc3RhbmNlIGRpZCBub3QgaGF2ZQorICAgIGFjY2Vz cyB0byBpdHMgdGVtcGxhdGUncyBmMmtfZGVyaXZlZCBuYW1lc3BhY2UgaW4g b3JkZXIgdG8gZmluZCB0aGUgdHlwZWJvdW5kIHByb2NlZHVyZXMuCisKKyAg ICBUaGUgbnVtYmVyIG9mIHJlZmVyZW5jZXMgdG8gdGhlIFBEVCB0ZW1wbGF0 ZSdzIGYya19kZXJpdmVkIHdpbGwgZW5zdXJlIHRoYXQgZjJrX2Rlcml2ZWQg aXMgCisgICAgcHJvcGVybHkgZnJlZWQgbGF0ZXIgb24uCisgICovCisKKyAg aWYgKCFpbnN0YW5jZS0+ZjJrX2Rlcml2ZWQgJiYgcGR0LT5mMmtfZGVyaXZl ZCkKKyAgeworICAgIGluc3RhbmNlLT5mMmtfZGVyaXZlZCA9IHBkdC0+ZjJr X2Rlcml2ZWQ7CisgICAgaW5zdGFuY2UtPmYya19kZXJpdmVkLT5yZWZzKys7 CisgIH0KKwogICAgICAgLyogU2V0IHRoZSBjb21wb25lbnQga2luZCB1c2lu ZyB0aGUgcGFyYW1ldGVyaXplZCBleHByZXNzaW9uLiAgKi8KICAgICAgIGlm ICgoYzEtPnRzLmtpbmQgPT0gMCB8fCBjMS0+dHMudHlwZSA9PSBCVF9DSEFS QUNURVIpCiAJICAgJiYgYzEtPmtpbmRfZXhwciAhPSBOVUxMKQpkaWZmIC0t Z2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCBiL2djYy9mb3J0cmFuL2dm b3J0cmFuLmgKaW5kZXggZmQ4NDNhMzI0MWQuLmJhNDZmMTA0ZjE3IDEwMDY0 NAotLS0gYS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCisrKyBiL2djYy9mb3J0 cmFuL2dmb3J0cmFuLmgKQEAgLTM1ODYsNiArMzU4Niw3IEBAIHZvaWQgZ2Zj X3RyYXZlcnNlX2dzeW1ib2wgKGdmY19nc3ltYm9sICosIHZvaWQgKCopKGdm Y19nc3ltYm9sICosIHZvaWQgKiksIHZvaWQKIGdmY190eXBlYm91bmRfcHJv YyogZ2ZjX2dldF90eXBlYm91bmRfcHJvYyAoZ2ZjX3R5cGVib3VuZF9wcm9j Kik7CiBnZmNfc3ltYm9sKiBnZmNfZ2V0X2Rlcml2ZWRfc3VwZXJfdHlwZSAo Z2ZjX3N5bWJvbCopOwogYm9vbCBnZmNfdHlwZV9pc19leHRlbnNpb25fb2Yg KGdmY19zeW1ib2wgKiwgZ2ZjX3N5bWJvbCAqKTsKK2Jvb2wgZ2ZjX3BkdF9p c19pbnN0YW5jZV9vZihnZmNfc3ltYm9sICosIGdmY19zeW1ib2wgKik7CiBi b29sIGdmY190eXBlX2NvbXBhdGlibGUgKGdmY190eXBlc3BlYyAqLCBnZmNf dHlwZXNwZWMgKik7CiAKIHZvaWQgZ2ZjX2NvcHlfZm9ybWFsX2FyZ3NfaW50 ciAoZ2ZjX3N5bWJvbCAqLCBnZmNfaW50cmluc2ljX3N5bSAqLApkaWZmIC0t Z2l0IGEvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYyBiL2djYy9mb3J0cmFuL3Jl c29sdmUuY2MKaW5kZXggNDRmODlmNmFmYjQuLjRkNzcyODlhMzE5IDEwMDY0 NAotLS0gYS9nY2MvZm9ydHJhbi9yZXNvbHZlLmNjCisrKyBiL2djYy9mb3J0 cmFuL3Jlc29sdmUuY2MKQEAgLTE0NzYwLDE0ICsxNDc2MCw2NCBAQCByZXNv bHZlX3R5cGVib3VuZF9wcm9jZWR1cmUgKGdmY19zeW10cmVlKiBzdHJlZSkK IAkgIGdvdG8gZXJyb3I7CiAJfQogCi0gICAgICBpZiAoQ0xBU1NfREFUQSAo bWVfYXJnKS0+dHMudS5kZXJpdmVkCi0JICAhPSByZXNvbHZlX2JpbmRpbmdz X2Rlcml2ZWQpCi0JewotCSAgZ2ZjX2Vycm9yICgiQXJndW1lbnQgJXFzIG9m ICVxcyB3aXRoIFBBU1MoJXMpIGF0ICVMIG11c3QgYmUgb2YiCi0JCSAgICAg IiB0aGUgZGVyaXZlZC10eXBlICVxcyIsIG1lX2FyZy0+bmFtZSwgcHJvYy0+ bmFtZSwKLQkJICAgICBtZV9hcmctPm5hbWUsICZ3aGVyZSwgcmVzb2x2ZV9i aW5kaW5nc19kZXJpdmVkLT5uYW1lKTsKLQkgIGdvdG8gZXJyb3I7Ci0JfQor ICAvKiBUaGUgZGVyaXZlZCB0eXBlIGlzIG5vdCBhIFBEVCB0ZW1wbGF0ZS4g IFJlc29sdmUgYXMgdXN1YWwuICAgKi8KKyAgaWYgKCAhcmVzb2x2ZV9iaW5k aW5nc19kZXJpdmVkLT5hdHRyLnBkdF90ZW1wbGF0ZSAKKyAgICAgICAmJiAo Q0xBU1NfREFUQSAobWVfYXJnKS0+dHMudS5kZXJpdmVkICE9IHJlc29sdmVf YmluZGluZ3NfZGVyaXZlZCkpCisgICAgeworICAgICAgZ2ZjX2Vycm9yICgi QXJndW1lbnQgJXFzIG9mICVxcyB3aXRoIFBBU1MoJXMpIGF0ICVMIG11c3Qg YmUgb2YgIgorICAgICAgICAgICJ0aGUgZGVyaXZlZC10eXBlICVxcyIsIG1l X2FyZy0+bmFtZSwgcHJvYy0+bmFtZSwKKyAgICAgICAgICBtZV9hcmctPm5h bWUsICZ3aGVyZSwgcmVzb2x2ZV9iaW5kaW5nc19kZXJpdmVkLT5uYW1lKTsK KyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAKKyAgaWYgKCByZXNvbHZl X2JpbmRpbmdzX2Rlcml2ZWQtPmF0dHIucGR0X3RlbXBsYXRlIAorICAgICAg ICYmICFnZmNfcGR0X2lzX2luc3RhbmNlX29mKHJlc29sdmVfYmluZGluZ3Nf ZGVyaXZlZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q0xBU1NfREFUQShtZV9hcmcpLT50cy51LmRlcml2ZWQpKQorICAgIHsKKyAg ICAgIGdmY19lcnJvciAoIkFyZ3VtZW50ICVxcyBvZiAlcXMgd2l0aCBQQVNT KCVzKSBhdCAlTCBtdXN0IGJlIG9mICIKKyAgICAgICAgICAidGhlIHBhcmFt ZXRyaWMgZGVyaXZlZC10eXBlICVxcyIsIG1lX2FyZy0+bmFtZSwgcHJvYy0+ bmFtZSwKKyAgICAgICAgICBtZV9hcmctPm5hbWUsICZ3aGVyZSwgcmVzb2x2 ZV9iaW5kaW5nc19kZXJpdmVkLT5uYW1lKTsKKyAgICAgIGdvdG8gZXJyb3I7 CisgICAgfQorCisgIGlmICggcmVzb2x2ZV9iaW5kaW5nc19kZXJpdmVkLT5h dHRyLnBkdF90ZW1wbGF0ZQorICAgICAgICAmJiBnZmNfcGR0X2lzX2luc3Rh bmNlX29mKHJlc29sdmVfYmluZGluZ3NfZGVyaXZlZCwgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ0xBU1NfREFUQShtZV9hcmcpLT50 cy51LmRlcml2ZWQpCisgICAgICAgICYmIChtZV9hcmctPnBhcmFtX2xpc3Qg IT0gTlVMTCkKKyAgICAgICAgJiYgKGdmY19zcGVjX2xpc3RfdHlwZShtZV9h cmctPnBhcmFtX2xpc3QsIENMQVNTX0RBVEEobWVfYXJnKS0+dHMudS5kZXJp dmVkKSAKKyAgICAgICAgICAgICAgIT0gU1BFQ19BU1NVTUVEKSkKKyAgICB7 CisKKyAgICAgIC8qIEFkZCBhIGNoZWNrIHRvIHZlcmlmeSBpZiB0aGVyZSBh cmUgYW55IExFTiBwYXJhbWV0ZXJzIGluIHRoZSBmaXJzdCBwbGFjZS4gICAK KyAgICAgICAgIElmIHRoZXJlIGFyZSBMRU4gcGFyYW1ldGVycywgdGhyb3cg dGhpcyBlcnJvci4gIElmIHRoZXJlIGFyZSBvbmx5IEtJTkQgCisgICAgICAg ICBwYXJhbWV0ZXJzLCB0aGVuIGRvbid0IHRyaWdnZXIgdGhpcyBlcnJvci4g ICovCisgICAgICBnZmNfY29tcG9uZW50ICpjOworICAgICAgYm9vbCBzZWVu X2xlbl9wYXJhbSA9IGZhbHNlOworICAgICAgZ2ZjX2FjdHVhbF9hcmdsaXN0 ICptZV9hcmdfcGFyYW0gPSBtZV9hcmctPnBhcmFtX2xpc3Q7CisKKyAgICAg IGZvciAoOyBtZV9hcmdfcGFyYW07IG1lX2FyZ19wYXJhbSA9IG1lX2FyZ19w YXJhbS0+bmV4dCkKKyAgICAgICAgeworICAgICAgICAgIGMgPSBnZmNfZmlu ZF9jb21wb25lbnQoCisgICAgICAgICAgICAgICAgQ0xBU1NfREFUQShtZV9h cmcpLT50cy51LmRlcml2ZWQsIAorICAgICAgICAgICAgICAgIG1lX2FyZ19w YXJhbS0+bmFtZSwKKyAgICAgICAgICAgICAgICB0cnVlLCB0cnVlLCBOVUxM KTsKKworICAgICAgICAgIGdjY19hc3NlcnQgKGMgIT0gTlVMTCk7CisgICAg ICAgICAgaWYgKGMtPmF0dHIucGR0X2tpbmQpCisgICAgICAgICAgICBjb250 aW51ZTsKKworICAgICAgICAgIC8vIEdldHRpbmcgaGVyZSBpbXBsaWVzIHRo YXQgdGhlcmUgaXMgYSBwZHRfbGVuIHBhcmFtZXRlciBpbiB0aGUgbGlzdC4g IAorICAgICAgICAgIHNlZW5fbGVuX3BhcmFtID0gdHJ1ZTsKKyAgICAgICAg ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICBpZiAoc2Vlbl9sZW5fcGFy YW0pCisgICAgICAgIHsKKyAgICAgICAgICBnZmNfZXJyb3IgKCJBbGwgTEVO IHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgcGFzc2VkIGR1bW15IGFyZ3VtZW50 ICVxcyAiCisgICAgICAgICAgICAgICJvZiAlcXMgYXQgJUwgbXVzdCBiZSBB U1NVTUVELiIsIG1lX2FyZy0+bmFtZSwgcHJvYy0+bmFtZSwgJndoZXJlKTsK KyAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQogCiAg ICAgICBnY2NfYXNzZXJ0IChtZV9hcmctPnRzLnR5cGUgPT0gQlRfQ0xBU1Mp OwogICAgICAgaWYgKENMQVNTX0RBVEEgKG1lX2FyZyktPmFzICYmIENMQVNT X0RBVEEgKG1lX2FyZyktPmFzLT5yYW5rICE9IDApCkBAIC0xNTg4NiwxMSAr MTU5MzYsMTMgQEAgcmVzb2x2ZV9wZHQgKGdmY19zeW1ib2wqIHN5bSkKICAg ICAgIGVsc2UgaWYgKHBhcmFtLT5zcGVjX3R5cGUgPT0gU1BFQ19BU1NVTUVE KQogCWFzc3VtZWRfbGVuX2V4cHJzID0gdHJ1ZTsKIAotICAgICAgaWYgKHBh cmFtLT5zcGVjX3R5cGUgPT0gU1BFQ19ERUZFUlJFRAotCSAgJiYgIWF0dHIt PmFsbG9jYXRhYmxlICYmICFhdHRyLT5wb2ludGVyKQotCWdmY19lcnJvciAo IlRoZSBvYmplY3QgJXFzIGF0ICVMIGhhcyBhIGRlZmVycmVkIExFTiAiCi0J CSAgICJwYXJhbWV0ZXIgJXFzIGFuZCBpcyBuZWl0aGVyIGFsbG9jYXRhYmxl ICIKLQkJICAgIm5vciBhIHBvaW50ZXIiLCBzeW0tPm5hbWUsICZzeW0tPmRl Y2xhcmVkX2F0LAorICAgICAgaWYgKHBhcmFtLT5zcGVjX3R5cGUgPT0gU1BF Q19ERUZFUlJFRCAmJiAhYXR0ci0+YWxsb2NhdGFibGUgCisgICAgICAmJiAo ICAgKHN5bS0+dHMudHlwZSA9PSBCVF9ERVJJVkVEICYmICFhdHRyLT5wb2lu dGVyKQorICAgICAgICAgIHx8IChzeW0tPnRzLnR5cGUgPT0gQlRfQ0xBU1Mg ICAmJiAhYXR0ci0+Y2xhc3NfcG9pbnRlcikpKQorCWdmY19lcnJvciAoIkVu dGl0eSAlcXMgYXQgJUwgaGFzIGEgZGVmZXJyZWQgTEVOICIKKwkJICAgInBh cmFtZXRlciAlcXMgYW5kIHJlcXVpcmVzIGVpdGhlciB0aGUgUE9JTlRFUiAi CisgICAgICAgIm9yIEFMTE9DQVRBQkxFIGF0dHJpYnV0ZSIsCisJCSAgIHN5 bS0+bmFtZSwgJnN5bS0+ZGVjbGFyZWRfYXQsCiAJCSAgIHBhcmFtLT5uYW1l KTsKIAogICAgIH0KZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3N5bWJvbC5j YyBiL2djYy9mb3J0cmFuL3N5bWJvbC5jYwppbmRleCBmZGRmNjhmODM5OC4u NmNmZTY0ZmMzMzMgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3N5bWJvbC5j YworKysgYi9nY2MvZm9ydHJhbi9zeW1ib2wuY2MKQEAgLTUxNzIsNiArNTE3 MiwzMiBAQCBnZmNfdHlwZV9pc19leHRlbnNpb25fb2YgKGdmY19zeW1ib2wg KnQxLCBnZmNfc3ltYm9sICp0MikKICAgcmV0dXJuIGdmY19jb21wYXJlX2Rl cml2ZWRfdHlwZXMgKHQxLCB0Mik7CiB9CiAKKy8qIENoZWNrIGlmIHBhcmFt ZXRlcml6ZWQgZGVyaXZlZCB0eXBlIHQyIGlzIGFuIGluc3RhbmNlIG9mIHBk dCB0ZW1wbGF0ZSB0MQorICAKKyAgIGdmY19zeW1ib2wgKnQxIC0+IHBkdCB0 ZW1wbGF0ZSB0byB2ZXJpZnkgdDIgYWdhaW5zdC4gIAorICAgZ2ZjX3N5bWJv bCAqdDIgLT4gcGR0IGluc3RhbmNlIHRvIGJlIHZlcmlmaWVkLiAgCisgICAK KyAgIEluIGRlY2wuY2MsIGdmY19nZXRfcGR0X2luc3RhbmNlLCBhIHBkdCBp bnN0YW5jZSBpcyBnaXZlbiBhIDMgY2hhcmFjdGVyIAorICAgcHJlZml4ICJQ ZHQiLCBmb2xsb3dlZCBieSBhbiB1bmRlcnNjb3JlIGxpc3Qgb2YgdGhlIGtp bmQgcGFyYW1ldGVycywgCisgICB1cCB0byBhIG1heGltdW0gb2YgOCBraW5k IHBhcmFtZXRlcnMuICBUbyB2ZXJpZnkgaWYgYSBQRFQgVHlwZSBjb3JyZXNw b25kcworICAgdG8gdGhlIHRlbXBsYXRlLCB0aGlzIGZ1bmN0aW9ucyBleHRy YWN0cyB0MidzIGRlcml2ZV90eXBlIG5hbWUsCisgICBhbmQgY29tcGFyZXMg aXQgdG8gdGhlIGRlcml2ZV90eXBlIG5hbWUgb2YgdDEgZm9yIGNvbXBhdGli aWxpdHkuICAKKworICAgRm9yIGV4YW1wbGU6CisKKyAgIHQyLT5uYW1lID0g UGR0Zl8yXzI7IGV4dHJhY3Qgb3V0IHRoZSAnZicgYW5kIGNvbXBhcmUgd2l0 aCB0MS0+bmFtZS4gICovCitib29sCitnZmNfcGR0X2lzX2luc3RhbmNlX29m KGdmY19zeW1ib2wgKnQxLCBnZmNfc3ltYm9sICp0MikKK3sKKyAgaWYgKCAh dDEtPmF0dHIucGR0X3RlbXBsYXRlIHx8ICF0Mi0+YXR0ci5wZHRfdHlwZSAp CisgICAgcmV0dXJuIGZhbHNlOworCisgIC8qIExpbWl0IGNvbXBhcmlzb24g dG8gbGVuZ3RoIG9mIHQxLT5uYW1lIHRvIGlnbm9yZSBuZXcga2luZCBwYXJh bXMuICAqLworICBpZiAoICEoc3RybmNtcCgmKHQyLT5uYW1lWzNdKSwgdDEt Pm5hbWUsIHN0cmxlbih0MS0+bmFtZSkpID09IDApICkKKyAgICByZXR1cm4g ZmFsc2U7CisKKyAgcmV0dXJuIHRydWU7Cit9CiAKIC8qIENoZWNrIGlmIHR3 byB0eXBlc3BlY3MgYXJlIHR5cGUgY29tcGF0aWJsZSAoRjAzOjUuMS4xLjIp OgogICAgSWYgdHMxIGlzIG5vbnBvbHltb3JwaGljLCB0czIgbXVzdCBiZSB0 aGUgc2FtZSB0eXBlLgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9wZHRfMzQuZjAzIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9wZHRfMzQuZjAzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5jNjAxMDcxYmEzYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzM0LmYwMwpAQCAtMCwwICsxLDQy IEBACishIHsgZGctZG8gY29tcGlsZSB9CishCishIFRlc3RzIHRoZSBmaXhl cyBmb3IgUFI4Mjk0My4KKyEKKyEgQ29udHJpYnV0ZWQgYnkgQWxleGFuZGVy IFdlc3Ricm9va3MgIDxjdGVjaG5vZGV2QGdtYWlsLmNvbT4KKyEKK21vZHVs ZSBtCisgICAgcHVibGljIDo6IGZvbywgYmFyLCBmb29iYXIKKworICAgIHR5 cGUsIHB1YmxpYyA6OiBnb29kX3R5cGUobikKKyAgICAgICBpbnRlZ2VyLCBs ZW4gOjogbiA9IDEKKyAgICBjb250YWlucworICAgICAgIHByb2NlZHVyZSA6 OiBmb28KKyAgICBlbmQgdHlwZQorCisgICAgdHlwZSwgcHVibGljIDo6IGdv b2RfdHlwZTIoaykKKyAgICAgICBpbnRlZ2VyLCBraW5kIDo6IGsgPSAxICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgY29udGFpbnMK KyAgICAgICBwcm9jZWR1cmUgOjogYmFyCisgICAgZW5kIHR5cGUKKworICAg IHR5cGUsIHB1YmxpYyA6OiBnb29kX3R5cGUzKG4sIGspCisgICAgICAgIGlu dGVnZXIsIGxlbiA6OiBuID0gMQorICAgICAgIGludGVnZXIsIGtpbmQgOjog ayA9IDEKKyAgICBjb250YWlucworICAgICAgIHByb2NlZHVyZSA6OiBmb29i YXIKKyAgICBlbmQgdHlwZQorICAKKyAgICBjb250YWlucworICAgICAgICBz dWJyb3V0aW5lIGZvbyh0aGlzKQorICAgICAgICAgICAgY2xhc3MoZ29vZF90 eXBlKCopKSwgaW50ZW50KGlub3V0KSA6OiB0aGlzCisgICAgICAgIGVuZCBz dWJyb3V0aW5lCisKKyAgICAgICAgc3Vicm91dGluZSBiYXIodGhpcykKKyAg ICAgICAgICAgIGNsYXNzKGdvb2RfdHlwZTIoMikpLCBpbnRlbnQoaW5vdXQp IDo6IHRoaXMKKyAgICAgICAgZW5kIHN1YnJvdXRpbmUKKworICAgICAgICBz dWJyb3V0aW5lIGZvb2Jhcih0aGlzKQorICAgICAgICAgICAgY2xhc3MoZ29v ZF90eXBlMygqLDIpKSwgaW50ZW50KGlub3V0KSA6OiB0aGlzCisgICAgICAg IGVuZCBzdWJyb3V0aW5lCisKKyBlbmQgbW9kdWxlClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9wZHRfMzUuZjAzIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9wZHRfMzUuZjAzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi44Yjk5OTQ4ZmE3MwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzM1LmYwMwpAQCAtMCwwICsxLDQ1 IEBACishIHsgZGctZG8gY29tcGlsZSB9CishCishIFRlc3RzIHRoZSBmaXhl cyBmb3IgUFI4Mjk0My4KKyEKKyEgVGhpcyB0ZXN0IGZvY3VzZXMgb24gaW5o ZXJpdGFuY2UgZm9yIHRoZSB0eXBlIGJvdW5kIHByb2NlZHVyZXMuCishCish IENvbnRyaWJ1dGVkIGJ5IEFsZXhhbmRlciBXZXN0YnJvb2tzICA8Y3RlY2hu b2RldkBnbWFpbC5jb20+CishCittb2R1bGUgbQorCisgICBwdWJsaWMgOjog Zm9vLCBiYXIsIGZvb2JhcgorCisgICB0eXBlLCBwdWJsaWMgOjogZ29vZHBk dF9sdmxfMChhLCBiKQorICAgICAgIGludGVnZXIsIGtpbmQgOjogYSA9IDEK KyAgICAgICBpbnRlZ2VyLCBsZW4gOjogYgorICAgY29udGFpbnMKKyAgICAg ICBwcm9jZWR1cmUgOjogZm9vCisgICBlbmQgdHlwZQorCisgICB0eXBlLCBw dWJsaWMsIEVYVEVORFMoZ29vZHBkdF9sdmxfMCkgOjogZ29vZHBkdF9sdmxf MSAoYykKKyAgICAgICBpbnRlZ2VyLCBsZW4gOjogYworICAgY29udGFpbnMK KyAgICAgICBwcm9jZWR1cmUgOjogYmFyCisgICBlbmQgdHlwZQorCisgICB0 eXBlLCBwdWJsaWMsIEVYVEVORFMoZ29vZHBkdF9sdmxfMSkgOjogZ29vZHBk dF9sdmxfMiAoZCkKKyAgICAgICBpbnRlZ2VyLCBsZW4gOjogZAorICAgY29u dGFpbnMKKyAgICAgICBwcm9jZWR1cmUgOjogZm9vYmFyCisgICBlbmQgdHlw ZQorCitjb250YWlucworICAgc3Vicm91dGluZSBmb28odGhpcykKKyAgICAg ICBjbGFzcyhnb29kcGR0X2x2bF8wKDEsKikpLCBpbnRlbnQoaW5vdXQpIDo6 IHRoaXMKKyAgIGVuZCBzdWJyb3V0aW5lCisKKyAgIHN1YnJvdXRpbmUgYmFy KHRoaXMpCisgICAgICAgY2xhc3MoZ29vZHBkdF9sdmxfMSgxLCosKikpLCBp bnRlbnQoaW5vdXQpIDo6IHRoaXMKKyAgIGVuZCBzdWJyb3V0aW5lCisKKyAg IHN1YnJvdXRpbmUgZm9vYmFyKHRoaXMpCisgICAgICAgY2xhc3MoZ29vZHBk dF9sdmxfMigxLCosKiwqKSksIGludGVudChpbm91dCkgOjogdGhpcworICAg ZW5kIHN1YnJvdXRpbmUKKworZW5kIG1vZHVsZQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvcGR0XzM2LmYwMyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv cGR0XzM2LmYwMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uYTM1MWMwZTRmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNi5mMDMKQEAgLTAsMCArMSw2NSBA QAorISB7IGRnLWRvIHJ1biB9CishCishIFRlc3RzIHRoZSBmaXhlcyBmb3Ig UFI4Mjk0My4KKyEKKyEgVGhpcyB0ZXN0IGZvY3VzZXMgb24gY2FsbGluZyB0 aGUgdHlwZSBib3VuZCBwcm9jZWR1cmVzIGluIGEgcHJvZ3JhbS4KKyEKKyEg Q29udHJpYnV0ZWQgYnkgQWxleGFuZGVyIFdlc3Ricm9va3MgIDxjdGVjaG5v ZGV2QGdtYWlsLmNvbT4KKyEKK21vZHVsZSB0ZXN0bW9kCisKKyAgIHB1Ymxp YyA6OiBmb28KKworICAgdHlwZSwgcHVibGljIDo6IHRvdWdoX2x2bF8wKGEs IGIpCisgICAgICAgaW50ZWdlciwga2luZCA6OiBhID0gMQorICAgICAgIGlu dGVnZXIsIGxlbiA6OiBiCisgICBjb250YWlucworICAgICAgIHByb2NlZHVy ZSA6OiBmb28KKyAgIGVuZCB0eXBlCisKKyAgIHR5cGUsIHB1YmxpYywgRVhU RU5EUyh0b3VnaF9sdmxfMCkgOjogdG91Z2hfbHZsXzEgKGMpCisgICAgICAg aW50ZWdlciwgbGVuIDo6IGMKKyAgIGNvbnRhaW5zCisgICAgICAgcHJvY2Vk dXJlIDo6IGJhcgorICAgZW5kIHR5cGUKKworICAgdHlwZSwgcHVibGljLCBF WFRFTkRTKHRvdWdoX2x2bF8xKSA6OiB0b3VnaF9sdmxfMiAoZCkKKyAgICAg ICBpbnRlZ2VyLCBsZW4gOjogZAorICAgY29udGFpbnMKKyAgICAgICBwcm9j ZWR1cmUgOjogZm9vYmFyCisgICBlbmQgdHlwZQorCitjb250YWlucworICAg c3Vicm91dGluZSBmb28odGhpcykKKyAgICAgICBjbGFzcyh0b3VnaF9sdmxf MCgxLCopKSwgaW50ZW50KGlub3V0KSA6OiB0aGlzCisgICBlbmQgc3Vicm91 dGluZQorCisgICBzdWJyb3V0aW5lIGJhcih0aGlzKQorICAgICAgIGNsYXNz KHRvdWdoX2x2bF8xKDEsKiwqKSksIGludGVudChpbm91dCkgOjogdGhpcwor ICAgZW5kIHN1YnJvdXRpbmUKKworICAgc3Vicm91dGluZSBmb29iYXIodGhp cykKKyAgICAgICBjbGFzcyh0b3VnaF9sdmxfMigxLCosKiwqKSksIGludGVu dChpbm91dCkgOjogdGhpcworICAgZW5kIHN1YnJvdXRpbmUKKworZW5kIG1v ZHVsZQorCitQUk9HUkFNIHRlc3Rwcm9ncmFtCisgICBVU0UgdGVzdG1vZAor ICAgCisgICBUWVBFKHRvdWdoX2x2bF8wKDEsNSkpICAgICA6OiB0ZXN0X3Bk dF8wCisgICBUWVBFKHRvdWdoX2x2bF8xKDEsNSw2KSkgICA6OiB0ZXN0X3Bk dF8xCisgICBUWVBFKHRvdWdoX2x2bF8yKDEsNSw2LDcpKSA6OiB0ZXN0X3Bk dF8yCisKKyAgIENBTEwgdGVzdF9wZHRfMCVmb28oKQorCisgICBDQUxMIHRl c3RfcGR0XzElZm9vKCkKKyAgIENBTEwgdGVzdF9wZHRfMSViYXIoKQorCisg ICBDQUxMIHRlc3RfcGR0XzIlZm9vKCkKKyAgIENBTEwgdGVzdF9wZHRfMiVi YXIoKQorICAgQ0FMTCB0ZXN0X3BkdF8yJWZvb2JhcigpCisKKworRU5EIFBS T0dSQU0gdGVzdHByb2dyYW0KKyAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3Bk dF8zNy5mMDMgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNy5m MDMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUz YTgyMmFhMDJhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9wZHRfMzcuZjAzCkBAIC0wLDAgKzEsNzQgQEAKKyEgeyBk Zy1kbyBjb21waWxlIH0KKyEKKyEgVGVzdHMgdGhlIGZpeGVzIGZvciBQUjgy OTQzLgorIQorISBUaGlzIHRlc3QgZm9jdXNlcyBvbiB0aGUgZXJyb3JzIHBy b2R1Y2VkIGJ5IGluY29ycmVjdCBMRU4gcGFyYW1ldGVycyBmb3IgZHVtbXkg CishIGFyZ3VtZW50cyBvZiBQRFQgVHlwZWJvdW5kIFByb2NlZHVyZXMuCish CishIENvbnRyaWJ1dGVkIGJ5IEFsZXhhbmRlciBXZXN0YnJvb2tzICA8Y3Rl Y2hub2RldkBnbWFpbC5jb20+CishCittb2R1bGUgdGVzdF9sZW5fcGFyYW0K KworICAgdHlwZSA6OiBwYXJhbV9kZXJpdl90eXBlKGEpCisgICAgICAgaW50 ZWdlciwgbGVuIDo6IGEKKyAgIGNvbnRhaW5zCisgICAgICAgcHJvY2VkdXJl IDo6IGFzc3VtZWRfbGVuX3BhcmFtICAgICAgICAgICAhIEdvb2QuIE5vIGVy cm9yIGV4cGVjdGVkLgorICAgICAgIHByb2NlZHVyZSA6OiBhc3N1bWVkX2xl bl9wYXJhbV9wdHIgICAgICAgISB7IGRnLWVycm9yICJtdXN0IG5vdCBiZSBQ T0lOVEVSIiB9CisgICAgICAgcHJvY2VkdXJlIDo6IGFzc3VtZWRfbGVuX3Bh cmFtX2FsbG9jICAgICAhIHsgZGctZXJyb3IgIm11c3Qgbm90IGJlIEFMTE9D QVRBQkxFIiB9CisgICAgICAgcHJvY2VkdXJlIDo6IGRlZmVycmVkX2xlbl9w YXJhbSAgICAgICAgICAhIHsgZGctZXJyb3IgIm11c3QgYmUgQVNTVU1FRCIg fQorICAgICAgIHByb2NlZHVyZSA6OiBkZWZlcnJlZF9sZW5fcGFyYW1fcHRy ICAgICAgISB7IGRnLWVycm9yICJtdXN0IGJlIEFTU1VNRUQiIH0KKyAgICAg ICBwcm9jZWR1cmUgOjogZGVmZXJyZWRfbGVuX3BhcmFtX2FsbG9jICAgICEg eyBkZy1lcnJvciAibXVzdCBiZSBBU1NVTUVEIiB9CisgICAgICAgcHJvY2Vk dXJlIDo6IGZpeGVkX2xlbl9wYXJhbSAgICAgICAgICAgICAhIHsgZGctZXJy b3IgIm11c3QgYmUgQVNTVU1FRCIgfQorICAgICAgIHByb2NlZHVyZSA6OiBm aXhlZF9sZW5fcGFyYW1fcHRyICAgICAgICAgISB7IGRnLWVycm9yICJtdXN0 IGJlIEFTU1VNRUQiIH0KKyAgICAgICBwcm9jZWR1cmUgOjogZml4ZWRfbGVu X3BhcmFtX2FsbG9jICAgICAgICEgeyBkZy1lcnJvciAibXVzdCBiZSBBU1NV TUVEIiB9CisKKyAgIGVuZCB0eXBlCisKK2NvbnRhaW5zCisgICAgc3Vicm91 dGluZSBhc3N1bWVkX2xlbl9wYXJhbSh0aGlzKQorICAgICAgIGNsYXNzKHBh cmFtX2Rlcml2X3R5cGUoKikpLCBpbnRlbnQoaW5vdXQpIDo6IHRoaXMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgISBHb29kLiBObyBlcnJvciBleHBl Y3RlZC4KKyAgICAhICAgIFRZUEUocGFyYW1fZGVyaXZfdHlwZSgqKSksIGlu dGVudChpbm91dCkgOjogdGhhdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICEgR29vZC4gTm8gZXJyb3IgZXhwZWN0ZWQuIAorICAgIGVuZCBzdWJyb3V0 aW5lCisKKyAgICBzdWJyb3V0aW5lIGFzc3VtZWRfbGVuX3BhcmFtX3B0cih0 aGlzLCB0aGF0KQorICAgICAgICBjbGFzcyhwYXJhbV9kZXJpdl90eXBlKCop KSwgaW50ZW50KGlub3V0KSwgcG9pbnRlciA6OiB0aGlzICAgICAgICAgICAg ICAgICAgISBHb29kLiBObyBlcnJvciBleHBlY3RlZC4KKyAgICAgICAgISBU WVBFKHBhcmFtX2Rlcml2X3R5cGUoKikpLCBpbnRlbnQoaW5vdXQpLCBhbGxv Y2F0YWJsZSA6OiB0aGF0ICAgICAgICAgICAgICEgR29vZC4gTm8gZXJyb3Ig ZXhwZWN0ZWQuICAgICAgICAgICAgCisgICAgZW5kIHN1YnJvdXRpbmUKKwor ICAgIHN1YnJvdXRpbmUgYXNzdW1lZF9sZW5fcGFyYW1fYWxsb2ModGhpcywg dGhhdCkKKyAgICAgICAgY2xhc3MocGFyYW1fZGVyaXZfdHlwZSgqKSksIGlu dGVudChpbm91dCksIGFsbG9jYXRhYmxlIDo6IHRoaXMgICAgICAgICAgICAg ICEgR29vZC4gTm8gZXJyb3IgZXhwZWN0ZWQuCisgICAgICAgIFRZUEUocGFy YW1fZGVyaXZfdHlwZSgqKSksIGludGVudChpbm91dCksIGFsbG9jYXRhYmxl IDo6IHRoYXQgICAgICAgICAgICAgICAhIEdvb2QuIE5vIGVycm9yIGV4cGVj dGVkLgorICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICBzdWJyb3V0aW5lIGRl ZmVycmVkX2xlbl9wYXJhbSh0aGlzLCB0aGF0KSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICEgeyBkZy1lcnJvciAicmVxdWlyZXMg ZWl0aGVyIHRoZSBQT0lOVEVSIG9yIEFMTE9DQVRBQkxFIGF0dHJpYnV0ZSIg fQorICAgICAgICBjbGFzcyhwYXJhbV9kZXJpdl90eXBlKDopKSwgaW50ZW50 KGlub3V0KSA6OiB0aGlzICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICBUWVBFKHBhcmFtX2Rlcml2X3R5cGUoOikpLCBpbnRlbnQoaW5vdXQpIDo6 IHRoYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBHb29kLiBObyBl cnJvciBleHBlY3RlZC4gIAorICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICBz dWJyb3V0aW5lIGRlZmVycmVkX2xlbl9wYXJhbV9wdHIodGhpcywgdGhhdCkg CisgICAgICAgIGNsYXNzKHBhcmFtX2Rlcml2X3R5cGUoOikpLCBpbnRlbnQo aW5vdXQpLCBwb2ludGVyIDo6IHRoaXMgICAgICAgICAgICAgICAgICAhIEdv b2QuIE5vIGVycm9yIGV4cGVjdGVkLgorICAgICAgICBUWVBFKHBhcmFtX2Rl cml2X3R5cGUoOikpLCBpbnRlbnQoaW5vdXQpLCBwb2ludGVyIDo6IHRoYXQg ICAgICAgICAgICAgICAgICAgISBHb29kLiBObyBlcnJvciBleHBlY3RlZC4K KyAgICBlbmQgc3Vicm91dGluZQorCisgICAgc3Vicm91dGluZSBkZWZlcnJl ZF9sZW5fcGFyYW1fYWxsb2ModGhpcywgdGhhdCkKKyAgICAgICAgY2xhc3Mo cGFyYW1fZGVyaXZfdHlwZSg6KSksIGludGVudChpbm91dCksIGFsbG9jYXRh YmxlIDo6IHRoaXMgICAgICAgICAgICAgICEgR29vZC4gTm8gZXJyb3IgZXhw ZWN0ZWQuCisgICAgICAgIFRZUEUocGFyYW1fZGVyaXZfdHlwZSg6KSksIGlu dGVudChpbm91dCksIGFsbG9jYXRhYmxlIDo6IHRoYXQgICAgICAgICAgICAg ICAhIEdvb2QuIE5vIGVycm9yIGV4cGVjdGVkLgorICAgIGVuZCBzdWJyb3V0 aW5lCisKKyAgICBzdWJyb3V0aW5lIGZpeGVkX2xlbl9wYXJhbSh0aGlzLCB0 aGF0KQorICAgICAgICBjbGFzcyhwYXJhbV9kZXJpdl90eXBlKDEwKSksIGlu dGVudChpbm91dCkgOjogdGhpcyAgICAgICAgICAgICAgICAgICAgICAgICAg ISBHb29kLiBObyBlcnJvciBleHBlY3RlZC4KKyAgICAgICAgVFlQRShwYXJh bV9kZXJpdl90eXBlKDEwKSksIGludGVudChpbm91dCkgOjogdGhhdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICEgR29vZC4gTm8gZXJyb3IgZXhwZWN0 ZWQuICAgICAgICAKKyAgICBlbmQgc3Vicm91dGluZQorCisgICAgc3Vicm91 dGluZSBmaXhlZF9sZW5fcGFyYW1fcHRyKHRoaXMsIHRoYXQpCisgICAgICAg IGNsYXNzKHBhcmFtX2Rlcml2X3R5cGUoMTApKSwgaW50ZW50KGlub3V0KSwg cG9pbnRlciA6OiB0aGlzICAgICAgICAgICAgICAgICAhIEdvb2QuIE5vIGVy cm9yIGV4cGVjdGVkLgorICAgICAgICBUWVBFKHBhcmFtX2Rlcml2X3R5cGUo MTApKSwgaW50ZW50KGlub3V0KSwgcG9pbnRlciA6OiB0aGF0ICAgICAgICAg ICAgICAgICAgISBHb29kLiBObyBlcnJvciBleHBlY3RlZC4gICAKKyAgICBl bmQgc3Vicm91dGluZQorCisgICAgc3Vicm91dGluZSBmaXhlZF9sZW5fcGFy YW1fYWxsb2ModGhpcywgdGhhdCkKKyAgICAgICAgY2xhc3MocGFyYW1fZGVy aXZfdHlwZSgxMCkpLCBpbnRlbnQoaW5vdXQpLCBhbGxvY2F0YWJsZSA6OiB0 aGlzICAgICAgICAgICAgICEgR29vZC4gTm8gZXJyb3IgZXhwZWN0ZWQuCisg ICAgICAgIFRZUEUocGFyYW1fZGVyaXZfdHlwZSgxMCkpLCBpbnRlbnQoaW5v dXQpLCBhbGxvY2F0YWJsZSA6OiB0aGF0ICAgICAgICAgICAgICAhIEdvb2Qu IE5vIGVycm9yIGV4cGVjdGVkLgorICAgIGVuZCBzdWJyb3V0aW5lCisKK2Vu ZCBtb2R1bGUKKyAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvcGR0XzQuZjAzIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9w ZHRfNC5mMDMKaW5kZXggMzc0MTJlNGNhODIuLmY3NGFjODliZjhjIDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF80LmYwMwor KysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF80LmYwMwpAQCAt OTYsNyArOTYsNyBAQCBjb250YWlucwogICBzdWJyb3V0aW5lIGZvbyhhcmcp CiAgICAgdHlwZSAobXl0eXBlKDQsICopKSA6OiBhcmcgICAgICAhIE9LCiAg IGVuZCBzdWJyb3V0aW5lCi0gIHN1YnJvdXRpbmUgYmFyKGFyZykgICAgICAg ICAgICAgICAhIHsgZGctZXJyb3IgImlzIG5laXRoZXIgYWxsb2NhdGFibGUg bm9yIGEgcG9pbnRlciIgfQorICBzdWJyb3V0aW5lIGJhcihhcmcpICAgICAg ICAgICAgICAgISB7IGRnLWVycm9yICJyZXF1aXJlcyBlaXRoZXIgdGhlIFBP SU5URVIgb3IgQUxMT0NBVEFCTEUgYXR0cmlidXRlIiB9IAogICAgIHR5cGUg KHRoeXR5cGUoOCwgOiwgNCkpIDo6IGFyZwogICBlbmQgc3Vicm91dGluZQog ICBzdWJyb3V0aW5lIGZvb2JhcihhcmcpICAgICAgICAgICAgISBPSwotLSAK Mi4yNS4xCgo= --00000000000071b8d406123acf31--