From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22c.google.com (mail-oi1-x22c.google.com [IPv6:2607:f8b0:4864:20::22c]) by sourceware.org (Postfix) with ESMTPS id 6FBE2385B508 for ; Thu, 23 Feb 2023 14:28:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6FBE2385B508 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oi1-x22c.google.com with SMTP id bh20so12415222oib.9 for ; Thu, 23 Feb 2023 06:28:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=z/TaneaycPDncd/6ZVH92fbMj314f2KfditakZGNNK4=; b=HYijR6c5ItOP4JKSkdKjHXcnSYL8L7Bx+OLVI71PVdMCLrYdOEbmjdng93V6wwyVJC mYzLq7CLD5mcoqA8GAaQpE83r/CaQrYF4V/HKAflGcYflAqH+g7abUw1pVSrAMSwnUJA SAdSmCayZ/mi3bFhS7LDCU3d1hEWqI2Rovvr0f+k+0nouoPeRIv1EZ8WCTWZmbi0iyhB wGeJ7954BvaWLibZKXTD1lUxhkJtWyNZY7tmmmcyQOcojRDVEt0SGtkiQ1G4uDxlwoWe w61h3BNi+8h5RegL6KjZQAQnaLAENFywSLc2z8pZMcc7HcfFg0EFa8NUrbxS+FHs3g6p +77Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=z/TaneaycPDncd/6ZVH92fbMj314f2KfditakZGNNK4=; b=aGtstjB86qbIEFmcrDj9pVrzU3sK/1KAVjCQ3aeRqhBewBq2vtY1PU+OBAXMvWMbEf 2qQ9VstRFxpGrpazxzGEt8p7mqEBP+MGlQuXSjlXU3ZGGhzO8XdUvq0O1Mn2P6ZXW9Jx bnydW1kVaXk0bHaOk9ToKzZ/RWJ1forW+hw9NN6OQiLBBtMSHLN12wfCFnSP9YE4LW7k H25jkuN8pgkvH8EfTMGsYYrIhe671Lnqh6EoLJMd4YwYmkImYHGhlGGeCfaOlrZuDnbm 19TwehSHUbc+ATZu+JVR8PFe5woFkWSS9pBHERyWcWVroeuKtE0CPcT94LRW/x2YzuNY 4wqg== X-Gm-Message-State: AO0yUKUk2r2MPH7svYkR1rcZx9QzYmnGifH1NjD5XsBbM9aoj9xukZfI Bs8MT1soeyr2SSxiRK7fUmiBpNtzRtpIPZRpclKYF/1k1xE= X-Google-Smtp-Source: AK7set/cTlBB48A8VNsNfOcWiSlkTboYthO+4v729D52MfCbaW1Lq7Z2wJMBEGPGkDMYF1V/qqSB/7/tAiVLeOnniGM= X-Received: by 2002:a05:6808:f08:b0:371:111d:7011 with SMTP id m8-20020a0568080f0800b00371111d7011mr821061oiw.272.1677162487679; Thu, 23 Feb 2023 06:28:07 -0800 (PST) MIME-Version: 1.0 From: Rimvydas Jasinskas Date: Thu, 23 Feb 2023 16:27:46 +0200 Message-ID: Subject: Support for module-wide attributes To: Rimvydas Jasinskas via Fortran Content-Type: multipart/mixed; boundary="0000000000004f82e305f55ed245" X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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: --0000000000004f82e305f55ed245 Content-Type: text/plain; charset="UTF-8" Hello everyone, this patch implements module-wide gcc directive support to apply attributes to the whole module. Patch closely follows how plain SAVE statement is implemented with seen_save/gfc_save_all() by using "mod_ext_attr" bitfield in a current namespace. There are certain complications how WEAK attribute could be safely applied to non local symbols, applying WEAK attribute requires to delay this until build_function_decl() sets the final attr.access field. For a time being I opted out to explicitly reject setting the NO_ARG_CHECK attribute for the whole module. There should not be a legitimate case to apply it for every dummy argument. One DEPRECATED diagnostic (for deprecated parameter use case inside the same module) did not carry out from the original gfortran.dg/attr_deprecated.f90 testcase. Not sure how to tackle it yet, parsing order is a bit confusing. Giving diagnostics for deprecated symbols inside the whole module marked as deprecated seems to be a bit excessive. Only giving diagnostics for the actual use cases of such marked module components would seem to be more intuitive. Also from the original testcase: use m ! { dg-warning "Using parameter 'parm' declared at .1. is deprecated" } shouldn't diagnostic prefer to report "use" location instead of declaration, since it is more important for the user? The declaration location could be additionally reported as dg-note using some helper function that checks if the symbol is "imported at (1)" versus "declared at (1)". Regtested cleanly on x86_64-pc-linux-gnu. Regards, Rimvydas --0000000000004f82e305f55ed245 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Fortran-Add-support-for-module-wide-attributes.patch" Content-Disposition: attachment; filename="0002-Fortran-Add-support-for-module-wide-attributes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_leh6mest0 RnJvbSBlNTMxOWMxNzMzYmNhNTZiZTcxMGM4Y2JjZTc2M2ZlNDU5ZGZhZTczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaW12eWRhcyBKYXNpbnNrYXMgPHJpbXZ5ZGFzLmphc0BnbWFp bC5jb20+CkRhdGU6IFRodSwgMjMgRmViIDIwMjMgMTI6NTk6NTcgKzAwMDAKU3ViamVjdDogRm9y dHJhbjogQWRkIHN1cHBvcnQgZm9yIG1vZHVsZS13aWRlIGF0dHJpYnV0ZXMKCiBUaGUgV0VBSyBh dHRyaWJ1dGUgaGFuZGxpbmcgbmVlZHMgdG8gYmUgZGVsYXllZCBhZnRlciBzeW0tPmF0dHIuYWNj ZXNzIGlzIHNldC4KCmdjYy9mb3J0cmFuL0NoYW5nZUxvZzoKCgkqIGRlY2wuY2MgKGdmY19tYXRj aF9nY2NfYXR0cmlidXRlcyk6IEFkZCBkaWFnbm9zdGljIGZvciBOT19BUkdfQ0hFQ0suCgkqIGdm b3J0cmFuLmggKGdmY19hcHBseV9tb2RfZXh0X2F0dHIpOiBOZXcgcHJvdG90eXBlLgoJKGdmY19u YW1lc3BhY2UpOiBBZGQgbW9kX2V4dF9hdHRyIGJpdGZpZWxkLgoJKiByZXNvbHZlLmNjIChyZXNv bHZlX3R5cGVzKTogVXNlIGdmY19hcHBseV9tb2RfZXh0X2F0dHIoKS4KCSogc3ltYm9sLmNjIChh cHBseV9tb2RfZXh0X2F0dHIpOiBOZXcgcHJvY2VkdXJlLgoJKGdmY19hcHBseV9tb2RfZXh0X2F0 dHIpOiBOZXcgcHJvY2VkdXJlLgoJKiB0cmFucy1kZWNsLmNjIChidWlsZF9mdW5jdGlvbl9kZWNs KTogSGFuZGxlIG1vZHVsZS13aWRlIFdFQUsKCWF0dHJpYnV0ZSBmb3IgcHVibGljIHByb2NlZHVy ZXMuICBNb3ZlIGxvY2FsICdhdHRyJyBjb3B5IGRvd24uCgkoZ2ZjX2NyZWF0ZV9tb2R1bGVfdmFy aWFibGUpOiBIYW5kbGUgbW9kdWxlLXdpZGUgV0VBSyBhdHRyaWJ1dGUgZm9yCglub24tcHJpdmF0 ZSB2YXJpYWJsZXMuCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGdmb3J0cmFuLmRnL2F0 dHJfZGVwcmVjYXRlZC0zLmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL2F0dHJfZGVwcmVj YXRlZC00LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL25vX2FyZ19jaGVja180LmY5MDog TmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL25vaW5saW5lLTIuZjkwOiBOZXcgdGVzdC4KCSogZ2Zv cnRyYW4uZGcvbm9yZXR1cm4tNi5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy93ZWFrLTEw LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL3dlYWstMTEuZjkwOiBOZXcgdGVzdC4KCSog Z2ZvcnRyYW4uZGcvd2Vhay0xMi5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy93ZWFrLTku ZjkwOiBOZXcgdGVzdC4KClNpZ25lZC1vZmYtYnk6IFJpbXZ5ZGFzIEphc2luc2thcyA8cmltdnlk YXMuamFzQGdtYWlsLmNvbT4KLS0tCiBnY2MvZm9ydHJhbi9kZWNsLmNjICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAxMSArKysrKysKIGdjYy9mb3J0cmFuL2dmb3J0cmFuLmggICAgICAgICAg ICAgICAgICAgICAgICB8ICAzICsrCiBnY2MvZm9ydHJhbi9yZXNvbHZlLmNjICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMyArKwogZ2NjL2ZvcnRyYW4vc3ltYm9sLmNjICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMzggKysrKysrKysrKysrKysrKysrKwogZ2NjL2ZvcnRyYW4vdHJhbnMtZGVj bC5jYyAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKy0KIC4uLi9nZm9ydHJhbi5kZy9h dHRyX2RlcHJlY2F0ZWQtMy5mOTAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKwogLi4uL2dm b3J0cmFuLmRnL2F0dHJfZGVwcmVjYXRlZC00LmY5MCAgICAgICAgIHwgMjQgKysrKysrKysrKysr CiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vX2FyZ19jaGVja180LmY5MCAgfCAxNCArKysr KysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vaW5saW5lLTIuZjkwICAgICAgfCAyOSAr KysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub3JldHVybi02LmY5MCAg ICAgIHwgMTAgKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvd2Vhay0xMC5mOTAgICAg ICAgICB8IDE3ICsrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy93ZWFrLTExLmY5 MCAgICAgICAgIHwgMTcgKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3dlYWst MTIuZjkwICAgICAgICAgfCAxOCArKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv d2Vhay05LmY5MCAgICAgICAgICB8IDE3ICsrKysrKysrKwogMTQgZmlsZXMgY2hhbmdlZCwgMjQ1 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9hdHRyX2RlcHJlY2F0ZWQtMy5mOTAKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2F0dHJfZGVwcmVjYXRlZC00LmY5MAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9fYXJnX2NoZWNrXzQu ZjkwCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub2lubGlu ZS0yLmY5MAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9y ZXR1cm4tNi5mOTAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L3dlYWstMTAuZjkwCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy93ZWFrLTExLmY5MAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvd2Vhay0xMi5mOTAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL3dlYWstOS5mOTAKCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9kZWNsLmNjIGIvZ2NjL2Zv cnRyYW4vZGVjbC5jYwppbmRleCBlZWMwMzE0Y2Y0Yy4uOWJjMDVmNWFjZDggMTAwNjQ0Ci0tLSBh L2djYy9mb3J0cmFuL2RlY2wuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vZGVjbC5jYwpAQCAtMTE4MTEs NiArMTE4MTEsMTcgQEAgZ2ZjX21hdGNoX2djY19hdHRyaWJ1dGVzICh2b2lkKQogCiAgICAgICBz eW0tPmF0dHIuZXh0X2F0dHIgfD0gYXR0ci5leHRfYXR0cjsKIAorICAgICAgaWYgKHN5bS0+YXR0 ci5mbGF2b3IgPT0gRkxfTU9EVUxFKQorCXsKKwkgIGlmIChhdHRyLmV4dF9hdHRyICYgKDEgPDwg RVhUX0FUVFJfTk9fQVJHX0NIRUNLKSkKKwkgICAgeworCSAgICAgIGdmY19lcnJvciAoIlRoZSAl PE5PX0FSR19DSEVDSyU+IGF0dHJpYnV0ZSBjYW5ub3QgYmUgYXBwbGllZCIKKwkJCSAiIG1vZHVs ZS13aWRlIGF0ICVDIik7CisJICAgICAgcmV0dXJuIE1BVENIX05POworCSAgICB9CisJICBnZmNf Y3VycmVudF9ucy0+bW9kX2V4dF9hdHRyIHw9IGF0dHIuZXh0X2F0dHI7CisJfQorCiAgICAgICBp ZiAoZ2ZjX21hdGNoX2VvcyAoKSA9PSBNQVRDSF9ZRVMpCiAJYnJlYWs7CiAKZGlmZiAtLWdpdCBh L2djYy9mb3J0cmFuL2dmb3J0cmFuLmggYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCmluZGV4IGZl YTI1MzEyY2Y0Li41ZTA2NDI5NDI0YiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4u aAorKysgYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCkBAIC0yMTYwLDYgKzIxNjAsOCBAQCB0eXBl ZGVmIHN0cnVjdCBnZmNfbmFtZXNwYWNlCiAKICAgaW50IHNhdmVfYWxsLCBzZWVuX3NhdmUsIHNl ZW5faW1wbGljaXRfbm9uZTsKIAorICB1bnNpZ25lZCBtb2RfZXh0X2F0dHI7CisKICAgLyogTm9y bWFsbHkgd2UgZG9uJ3QgbmVlZCB0byByZWZjb3VudCBuYW1lc3BhY2VzLiAgSG93ZXZlciB3aGVu IHdlIHJlYWQKICAgICAgYSBtb2R1bGUgY29udGFpbmluZyBhIGZ1bmN0aW9uIHdpdGggbXVsdGlw bGUgZW50cnkgcG9pbnRzLCB0aGlzCiAgICAgIHdpbGwgYXBwZWFyIGFzIHNldmVyYWwgZnVuY3Rp b25zIHdpdGggdGhlIHNhbWUgZm9ybWFsIG5hbWVzcGFjZS4gICovCkBAIC0zNTEzLDYgKzM1MTUs NyBAQCB2b2lkIGdmY190cmF2ZXJzZV9zeW10cmVlIChnZmNfc3ltdHJlZSAqLCB2b2lkICgqKShn ZmNfc3ltdHJlZSAqKSk7CiB2b2lkIGdmY190cmF2ZXJzZV9ucyAoZ2ZjX25hbWVzcGFjZSAqLCB2 b2lkICgqKShnZmNfc3ltYm9sICopKTsKIHZvaWQgZ2ZjX3RyYXZlcnNlX3VzZXJfb3AgKGdmY19u YW1lc3BhY2UgKiwgdm9pZCAoKikoZ2ZjX3VzZXJfb3AgKikpOwogdm9pZCBnZmNfc2F2ZV9hbGwg KGdmY19uYW1lc3BhY2UgKik7Cit2b2lkIGdmY19hcHBseV9tb2RfZXh0X2F0dHIgKGdmY19uYW1l c3BhY2UgKik7CiAKIHZvaWQgZ2ZjX2VuZm9yY2VfY2xlYW5fc3ltYm9sX3N0YXRlICh2b2lkKTsK IApkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYyBiL2djYy9mb3J0cmFuL3Jlc29s dmUuY2MKaW5kZXggMjc4MGM4MmM3OTguLjgzOWI2M2QxNzE1IDEwMDY0NAotLS0gYS9nY2MvZm9y dHJhbi9yZXNvbHZlLmNjCisrKyBiL2djYy9mb3J0cmFuL3Jlc29sdmUuY2MKQEAgLTE3NjAwLDYg KzE3NjAwLDkgQEAgcmVzb2x2ZV90eXBlcyAoZ2ZjX25hbWVzcGFjZSAqbnMpCiAgIGlmIChucy0+ c2F2ZV9hbGwgfHwgKCFmbGFnX2F1dG9tYXRpYyAmJiAhcmVjdXJzaXZlKSkKICAgICBnZmNfc2F2 ZV9hbGwgKG5zKTsKIAorICBpZiAobnMtPm1vZF9leHRfYXR0cikKKyAgICBnZmNfYXBwbHlfbW9k X2V4dF9hdHRyIChucyk7CisKICAgaXRlcl9zdGFjayA9IE5VTEw7CiAgIGZvciAoZCA9IG5zLT5k YXRhOyBkOyBkID0gZC0+bmV4dCkKICAgICByZXNvbHZlX2RhdGEgKGQpOwpkaWZmIC0tZ2l0IGEv Z2NjL2ZvcnRyYW4vc3ltYm9sLmNjIGIvZ2NjL2ZvcnRyYW4vc3ltYm9sLmNjCmluZGV4IDJjZTBm M2U0ZGY3Li4yZTIwMjQ0M2I4MiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vc3ltYm9sLmNjCisr KyBiL2djYy9mb3J0cmFuL3N5bWJvbC5jYwpAQCAtNDI4NCw2ICs0Mjg0LDQ0IEBAIGdmY19zYXZl X2FsbCAoZ2ZjX25hbWVzcGFjZSAqbnMpCiAgIGdmY190cmF2ZXJzZV9ucyAobnMsIHNhdmVfc3lt Ym9sKTsKIH0KIAorLyogR2l2ZW4gYSBzeW1ib2wsIGFwcGx5IG1vZHVsZS13aWRlIGF0dHJpYnV0 ZXMgaWYgaXQgaXMgYWxsb3dlZC4gICovCisKK3N0YXRpYyB2b2lkCithcHBseV9tb2RfZXh0X2F0 dHIgKGdmY19zeW1ib2wgKnN5bSkKK3sKKyAgdW5zaWduZWQgZXh0X21hc2sgPSAoMSA8PCBFWFRf QVRUUl9MQVNUKSAtIDE7CisKKyAgaWYgKHN5bS0+YXR0ci51c2VfYXNzb2MpCisgICAgcmV0dXJu OworCisgIC8qIEV4Y2x1ZGUgTk9fQVJHX0NIRUNLIGF0dHJpYnV0ZSBieSBkZWZhdWx0LCBoYW5k bGVkIGluIGRlY2wuY2MuICAqLworICBleHRfbWFzayAtPSAoMSA8PCBFWFRfQVRUUl9OT19BUkdf Q0hFQ0spOworCisgIC8qIEV4Y2x1ZGUgV0VBSyBhdHRyaWJ1dGUgaGVyZSwgaGFuZGxlZCBvbmNl IGF0dHIuYWNjZXNzIGlzIGZ1bGx5IHNldC4gICovCisgIGV4dF9tYXNrIC09ICgxIDw8IEVYVF9B VFRSX1dFQUspOworCisgIC8qIElnbm9yZSBhbGwgcHJvY2VkdXJlLW9ubHkgbW9kdWxlLXdpZGUg YXR0cmlidXRlcyBmb3IgdmFyaWFibGVzLiAgKi8KKyAgaWYgKHN5bS0+YXR0ci5mbGF2b3IgIT0g RkxfUFJPQ0VEVVJFKQorICAgIHsKKyAgICAgIGV4dF9tYXNrIC09IDEgPDwgRVhUX0FUVFJfU1RE Q0FMTDsKKyAgICAgIGV4dF9tYXNrIC09IDEgPDwgRVhUX0FUVFJfQ0RFQ0w7CisgICAgICBleHRf bWFzayAtPSAxIDw8IEVYVF9BVFRSX0ZBU1RDQUxMOworICAgICAgZXh0X21hc2sgLT0gMSA8PCBF WFRfQVRUUl9OT0lOTElORTsKKyAgICAgIGV4dF9tYXNrIC09IDEgPDwgRVhUX0FUVFJfTk9SRVRV Uk47CisgICB9CisKKyAgc3ltLT5hdHRyLmV4dF9hdHRyIHw9IHN5bS0+bnMtPm1vZF9leHRfYXR0 ciAmIGV4dF9tYXNrOworfQorCisKKy8qIEFwcGx5IG1vZHVsZS13aWRlIGF0dHJpYnV0ZXMgdG8g c3ltYm9scyB3aGVyZSBwb3NzaWJsZS4gICovCisKK3ZvaWQKK2dmY19hcHBseV9tb2RfZXh0X2F0 dHIgKGdmY19uYW1lc3BhY2UgKm5zKQoreworICBnZmNfdHJhdmVyc2VfbnMgKG5zLCBhcHBseV9t b2RfZXh0X2F0dHIpOworfQorCiAKIC8qIE1ha2Ugc3VyZSB0aGF0IG5vIGNoYW5nZXMgdG8gc3lt Ym9scyBhcmUgcGVuZGluZy4gICovCiAKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWRl Y2wuY2MgYi9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmNjCmluZGV4IDI0YTg1Y2Y2MDQzLi41ZjNh NzVhMTUyNCAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYworKysgYi9nY2Mv Zm9ydHJhbi90cmFucy1kZWNsLmNjCkBAIC0yMzk5LDggKzIzOTksNiBAQCBidWlsZF9mdW5jdGlv bl9kZWNsIChnZmNfc3ltYm9sICogc3ltLCBib29sIGdsb2JhbCkKICAgZm5kZWNsID0gYnVpbGRf ZGVjbCAoaW5wdXRfbG9jYXRpb24sCiAJCSAgICAgICBGVU5DVElPTl9ERUNMLCBnZmNfc3ltX2lk ZW50aWZpZXIgKHN5bSksIHR5cGUpOwogCi0gIGF0dHIgPSBzeW0tPmF0dHI7Ci0KICAgLyogSW5p dGlhbGl6ZSBERUNMX0VYVEVSTkFMIGFuZCBUUkVFX1BVQkxJQyBiZWZvcmUgY2FsbGluZyBkZWNs X2F0dHJpYnV0ZXM7CiAgICAgIFRSRUVfUFVCTElDIHNwZWNpZmllcyB3aGV0aGVyIGEgZnVuY3Rp b24gaXMgZ2xvYmFsbHkgYWRkcmVzc2FibGUgKGkuZS4KICAgICAgdGhlIG9wcG9zaXRlIG9mIGRl Y2xhcmluZyBhIGZ1bmN0aW9uIGFzIHN0YXRpYyBpbiBDKS4gICovCkBAIC0yNDIxLDYgKzI0MTks MTMgQEAgYnVpbGRfZnVuY3Rpb25fZGVjbCAoZ2ZjX3N5bWJvbCAqIHN5bSwgYm9vbCBnbG9iYWwp CiAgIGlmIChzeW0tPmF0dHIucmVmZXJlbmNlZCB8fCBzeW0tPmF0dHIuZW50cnlfbWFzdGVyKQog ICAgIFRSRUVfVVNFRCAoZm5kZWNsKSA9IDE7CiAKKyAgLyogQWRkIG1vZHVsZS13aWRlIFdFQUsg YXR0cmlidXRlIGFmdGVyIGF0dHIuYWNjZXNzIGlzIHNldC4gICovCisgIGlmIChzeW0tPm1vZHVs ZSAmJiBzeW0tPmF0dHIuYWNjZXNzICE9IEFDQ0VTU19QUklWQVRFCisgICAgICAmJiBzeW0tPm5z LT5tb2RfZXh0X2F0dHIgJiAoMSA8PCBFWFRfQVRUUl9XRUFLKSkKKyAgICBzeW0tPmF0dHIuZXh0 X2F0dHIgfD0gKDEgPDwgRVhUX0FUVFJfV0VBSyk7CisKKyAgYXR0ciA9IHN5bS0+YXR0cjsKKwog ICBhdHRyaWJ1dGVzID0gYWRkX2F0dHJpYnV0ZXNfdG9fZGVjbCAoYXR0ciwgTlVMTF9UUkVFKTsK ICAgZGVjbF9hdHRyaWJ1dGVzICgmZm5kZWNsLCBhdHRyaWJ1dGVzLCAwKTsKIApAQCAtNTI3Myw2 ICs1Mjc4LDEzIEBAIGdmY19jcmVhdGVfbW9kdWxlX3ZhcmlhYmxlIChnZmNfc3ltYm9sICogc3lt KQogCQkgIlVudXNlZCBQUklWQVRFIG1vZHVsZSB2YXJpYWJsZSAlcXMgZGVjbGFyZWQgYXQgJUwi LAogCQkgc3ltLT5uYW1lLCAmc3ltLT5kZWNsYXJlZF9hdCk7CiAKKyAgLyogQWRkIG1vZHVsZS13 aWRlIFdFQUsgYXR0cmlidXRlIGFmdGVyIGF0dHIuYWNjZXNzIGlzIHNldC4gIEFsbG93IG9ubHkK KyAgICAgZXhwbGljaXQgd2VhayBkZWNsYXJhdGlvbiBmb3IgcHJpdmF0ZSB2YXJpYWJsZXMgZm9y IG5vdywgbWFpbmx5IHRvIGF2b2lkCisgICAgIHVuaW50ZW5kZWQgY29tcGxpY2F0aW9ucyB3aXRo IGhpZGRlbi93ZWFrIHN5bWJvbHMuICAqLworICBpZiAoc3ltLT5tb2R1bGUgJiYgc3ltLT5hdHRy LmFjY2VzcyAhPSBBQ0NFU1NfUFJJVkFURQorICAgICAgJiYgc3ltLT5ucy0+bW9kX2V4dF9hdHRy ICYgKDEgPDwgRVhUX0FUVFJfV0VBSykpCisgICAgc3ltLT5hdHRyLmV4dF9hdHRyIHw9ICgxIDw8 IEVYVF9BVFRSX1dFQUspOworCiAgIC8qIFdlIGFsd2F5cyB3YW50IG1vZHVsZSB2YXJpYWJsZXMg dG8gYmUgY3JlYXRlZC4gICovCiAgIHN5bS0+YXR0ci5yZWZlcmVuY2VkID0gMTsKICAgLyogQ3Jl YXRlIHRoZSBkZWNsLiAgKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv YXR0cl9kZXByZWNhdGVkLTMuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9hdHRyX2Rl cHJlY2F0ZWQtMy5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5 YmQ2YzM4OGJkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9h dHRyX2RlcHJlY2F0ZWQtMy5mOTAKQEAgLTAsMCArMSwzMCBAQAorISB7IGRnLWRvIGNvbXBpbGUg fQorCittb2R1bGUgbQorICBpbXBsaWNpdCBub25lCisgIGludGVnZXIgOjogQQorICBpbnRlZ2Vy LCBwYXJhbWV0ZXIgOjogUEFSTSA9IDUgICEgeyBkZy13YXJuaW5nICJVc2luZyBwYXJhbWV0ZXIg J3Bhcm0nIGRlY2xhcmVkIGF0IC4xLiBpcyBkZXByZWNhdGVkIiAiVE9ETyIgeyB4ZmFpbCAqLSot KiB9IH0KKyFHQ0MkIEFUVFJJQlVURVMgIERFUFJFQ0FURUQgOjogbQorY29udGFpbnMKK3N1YnJv dXRpbmUgZm9vCitlbmQKK2ludGVnZXIgZnVuY3Rpb24gZnVuYygpCisgIGZ1bmMgPSA0MgorZW5k CitzdWJyb3V0aW5lIGJhcgorICBpbnRlZ2VyIDo6IGkKKyAgY2FsbCBmb28gICAgISB7IGRnLXdh cm5pbmcgIlVzaW5nIHN1YnJvdXRpbmUgJ2ZvbycgYXQgLjEuIGlzIGRlcHJlY2F0ZWQiIH0KKyAg cHJpbnQgKiwgQSAgISB7IGRnLXdhcm5pbmcgIlVzaW5nIHZhcmlhYmxlICdhJyBhdCAuMS4gaXMg ZGVwcmVjYXRlZCIgfQorICBpID0gZnVuYygpICAhIHsgZGctd2FybmluZyAiVXNpbmcgZnVuY3Rp b24gJ2Z1bmMnIGF0IC4xLiBpcyBkZXByZWNhdGVkIiB9CisgIHByaW50ICosIFBBUk0KK2VuZAor CitlbmQgbW9kdWxlIG0KKwordXNlIG0gICEgeyBkZy13YXJuaW5nICJVc2luZyBwYXJhbWV0ZXIg J3Bhcm0nIGRlY2xhcmVkIGF0IC4xLiBpcyBkZXByZWNhdGVkIiB9CisgIGludGVnZXIgOjogaQor ICBjYWxsIGZvbyAgISB7IGRnLXdhcm5pbmcgIlVzaW5nIHN1YnJvdXRpbmUgJ2ZvbycgYXQgLjEu IGlzIGRlcHJlY2F0ZWQiIH0KKyAgcHJpbnQgKiwgQSAgISB7IGRnLXdhcm5pbmcgIlVzaW5nIHZh cmlhYmxlICdhJyBhdCAuMS4gaXMgZGVwcmVjYXRlZCIgfQorICBpID0gZnVuYygpICAhIHsgZGct d2FybmluZyAiVXNpbmcgZnVuY3Rpb24gJ2Z1bmMnIGF0IC4xLiBpcyBkZXByZWNhdGVkIiB9Cisg IHByaW50ICosIFBBUk0KK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9hdHRyX2RlcHJlY2F0ZWQtNC5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2F0dHJf ZGVwcmVjYXRlZC00LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MjIyMzdiOTFjMDYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L2F0dHJfZGVwcmVjYXRlZC00LmY5MApAQCAtMCwwICsxLDI0IEBACishIHsgZGctZG8gY29tcGls ZSB9CisKK21vZHVsZSBtCisgIGltcGxpY2l0IG5vbmUKKyFHQ0MkIEFUVFJJQlVURVMgIERFUFJF Q0FURUQgOjogbQorICBpbnRlcmZhY2UgZGFyCisgIHByb2NlZHVyZSA6OiBmb28KKyAgc3Vicm91 dGluZSBiYXIocCkKKyAgICBpbXBsaWNpdCBub25lCisgICAgcmVhbCA6OiBwCisgIGVuZCBzdWJy b3V0aW5lCisgIGVuZCBpbnRlcmZhY2UKK2NvbnRhaW5zCitzdWJyb3V0aW5lIGZvbyhuKQorICBp bXBsaWNpdCBub25lCisgIGludGVnZXIgOjogbgorZW5kIHN1YnJvdXRpbmUKK2VuZCBtb2R1bGUg bQorCit1c2UgbQorICBjYWxsIGZvbygxKSAgISB7IGRnLXdhcm5pbmcgIlVzaW5nIHN1YnJvdXRp bmUgJ2ZvbycgYXQgLjEuIGlzIGRlcHJlY2F0ZWQiIH0KKyAgY2FsbCBkYXIoMSkgICEgeyBkZy13 YXJuaW5nICJVc2luZyBzdWJyb3V0aW5lICdmb28nIGF0IC4xLiBpcyBkZXByZWNhdGVkIiB9Cisg IGNhbGwgZGFyKDEuKSAhIHsgZGctd2FybmluZyAiVXNpbmcgc3Vicm91dGluZSAnYmFyJyBhdCAu MS4gaXMgZGVwcmVjYXRlZCIgfQorZW5kCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL25vX2FyZ19jaGVja180LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9f YXJnX2NoZWNrXzQuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4w OTcxODQzMzFlMQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv bm9fYXJnX2NoZWNrXzQuZjkwCkBAIC0wLDAgKzEsMTQgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0K KyEKK21vZHVsZSBtcGlfaW50ZXJmYWNlCisgIGltcGxpY2l0IG5vbmUKKyFHQ0MkIGF0dHJpYnV0 ZXMgTk9fQVJHX0NIRUNLIDo6IG1waV9pbnRlcmZhY2UKKyEgeyBkZy1lcnJvciAiVGhlICdOT19B UkdfQ0hFQ0snIGF0dHJpYnV0ZSBjYW5ub3QgYmUgYXBwbGllZCBtb2R1bGUtd2lkZSIgInJlamVj dCIge3RhcmdldCAqLSotKn0gLi0xIH0KKyAgaW50ZWdlciA6OiBpCitjb250YWlucworICBzdWJy b3V0aW5lIGZvbyhuLHApCisgICAgaW1wbGljaXQgbm9uZQorICAgIGludGVnZXIgOjogbgorICAg IHJlYWwgOjogcAorICBlbmQgc3Vicm91dGluZQorZW5kIG1vZHVsZQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub2lubGluZS0yLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvbm9pbmxpbmUtMi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjk2MDEwZmE3Y2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9ub2lubGluZS0yLmY5MApAQCAtMCwwICsxLDI5IEBACishIHsgZGctZG8gY29tcGls ZSB9CishIHsgZGctb3B0aW9ucyAiLU8yIC1mZHVtcC10cmVlLWRvbTIiIH0KKworbW9kdWxlIG0K KyFHQ0MkIEFUVFJJQlVURVMgbm9pbmxpbmUgOjogbQoraW50ZWdlciA6OiBhYmMoNykKK2NvbnRh aW5zCisKK3N1YnJvdXRpbmUgYmFyKG4sbSxwLHMpCitpbXBsaWNpdCBub25lCitpbnRlZ2VyIDo6 IG4sbQorcmVhbCxpbnRlbnQoaW5vdXQpIDo6IHAobikscygqKQorY2FsbCBmb28obixtLHAscykK K2NhbGwgZm9vKG4sbSxwLHMpCitlbmQgc3Vicm91dGluZSBiYXIKKworc3Vicm91dGluZSBmb28o bixtLHAsYikKK2ltcGxpY2l0IG5vbmUKK2ludGVnZXIgOjogbixtLGoKK3JlYWwsaW50ZW50KGlu b3V0KSA6OiBwKG4pLGIoKikKK2RvIGo9MSxuCisgIGIobStqLTEpPXAoaikKK2VuZGRvCittPW0r bgorZW5kIHN1YnJvdXRpbmUgZm9vCisKK2VuZCBtb2R1bGUKKworISB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgImZvbyBcXCgiIDQgImRvbTIifSB9CmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTYuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9ub3JldHVybi02LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNGUxZGUzODRjZmUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL25vcmV0dXJuLTYuZjkwCkBAIC0wLDAgKzEsMTAgQEAKKyEgeyBkZy1kbyBjb21waWxl IH0KKyEgeyBkZy1vcHRpb25zICItV2FsbCAtV2V4dHJhIiB9CisKK21vZHVsZSBtCishR0NDJCBB VFRSSUJVVEVTIG5vcmV0dXJuIDo6IG0KK2ludGVnZXIgOjogaWprCitjb250YWlucworc3Vicm91 dGluZSBmb28KK2VuZCBzdWJyb3V0aW5lIGZvbyAhIHsgZGctd2FybmluZyAiJ25vcmV0dXJuJyBm dW5jdGlvbiBkb2VzIHJldHVybiIgIiIgfQorZW5kIG1vZHVsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy93ZWFrLTEwLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvd2Vhay0xMC5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMz ODJjNDU1ZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy93 ZWFrLTEwLmY5MApAQCAtMCwwICsxLDE3IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsgZGct cmVxdWlyZS13ZWFrICIiIH0KKyEgeyBkZy1vcHRpb25zICItV2FsbCAtV2V4dHJhIiB9Cittb2R1 bGUgZm9vCitpbXBsaWNpdCBub25lCishR0NDJCBBVFRSSUJVVEVTIHdlYWsgOjogZm9vCitpbnRl Z2VyIDo6IGlqaworcHJpdmF0ZSA6OiBpamssYmFyCishR0NDJCBBVFRSSUJVVEVTIHdlYWsgOjog YmFyCitjb250YWlucworc3Vicm91dGluZSBiYXIgISB7IGRnLWVycm9yICJ3ZWFrIGRlY2xhcmF0 aW9uIG9mICdiYXInIG11c3QgYmUgcHVibGljIiAiIiB9CitpamsgPSAxCitlbmQgc3Vicm91dGlu ZQorc3Vicm91dGluZSBkYXIKK2NhbGwgYmFyCitlbmQgc3Vicm91dGluZQorZW5kIG1vZHVsZQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy93ZWFrLTExLmY5MCBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvd2Vhay0xMS5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmU0OWYxMzEwMWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy93ZWFrLTExLmY5MApAQCAtMCwwICsxLDE3IEBACishIHsgZGctZG8g Y29tcGlsZSB9CishIHsgZGctcmVxdWlyZS13ZWFrICIiIH0KKyEgeyBkZy1za2lwLWlmICIiIHsg eDg2XzY0LSotbWluZ3cqIH0gfQorISB7IGRnLXNraXAtaWYgIiIgeyBudnB0eC0qLSogfSB9Cish IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAid2Vha1xbXiBcdFxdKlxbIFx0XF1fP19fZm9v X01PRF9hYmMiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIndlYWtcW14gXHRc XSpcWyBcdFxdXz9fX2Zvb19NT0RfYmFyIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ3ZWFrXFteIFx0XF0qXFsgXHRcXV8/X19mb29fTU9EX2RhciIgfSB9Cittb2R1bGUgZm9v CitpbXBsaWNpdCBub25lCishR0NDJCBBVFRSSUJVVEVTIHdlYWsgOjogZm9vCityZWFsIDo6IGFi Yyg3KQorY29udGFpbnMKKyBzdWJyb3V0aW5lIGJhcgorIGVuZCBzdWJyb3V0aW5lCisgaW50ZWdl ciBmdW5jdGlvbiBkYXIoKQorIGVuZCBmdW5jdGlvbgorZW5kIG1vZHVsZQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy93ZWFrLTEyLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvd2Vhay0xMi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjM5ZGViMWVhZmJlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy93ZWFrLTEyLmY5MApAQCAtMCwwICsxLDE4IEBACishIHsgZGctZG8gY29tcGlsZSB9Cish IHsgZGctcmVxdWlyZS13ZWFrICIiIH0KKyEgeyBkZy1za2lwLWlmICIiIHsgeDg2XzY0LSotbWlu Z3cqIH0gfQorISB7IGRnLXNraXAtaWYgIiIgeyBudnB0eC0qLSogfSB9CishIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3QgIndlYWtcW14gXHRcXSpcWyBcdFxdXz9fX2Zvb19NT0RfYWJj IiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAid2Vha1xbXiBcdFxdKlxb IFx0XF1fP19fZm9vX01PRF9iYXIiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt bm90ICJ3ZWFrXFteIFx0XF0qXFsgXHRcXV8/X19mb29fTU9EX2RhciIgfSB9Cittb2R1bGUgZm9v CitpbXBsaWNpdCBub25lCitwcml2YXRlCishR0NDJCBBVFRSSUJVVEVTIHdlYWsgOjogZm9vCity ZWFsIDo6IGFiYyg3KQorY29udGFpbnMKKyBzdWJyb3V0aW5lIGJhcgorIGVuZCBzdWJyb3V0aW5l CisgaW50ZWdlciBmdW5jdGlvbiBkYXIoKQorIGVuZCBmdW5jdGlvbgorZW5kIG1vZHVsZQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy93ZWFrLTkuZjkwIGIvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy93ZWFrLTkuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5iNWU5MmZjMDlkZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvd2Vhay05LmY5MApAQCAtMCwwICsxLDE3IEBACishIHsgZGctZG8gY29tcGls ZSB9CishIHsgZGctcmVxdWlyZS13ZWFrICIiIH0KKyEgeyBkZy1vcHRpb25zICItV2FsbCAtV2V4 dHJhIiB9Cittb2R1bGUgZm9vCitpbXBsaWNpdCBub25lCishR0NDJCBBVFRSSUJVVEVTIHdlYWsg OjogZm9vCitpbnRlZ2VyIDo6IGlqaworcHJpdmF0ZQorcHVibGljIDo6IGRhcgorY29udGFpbnMK K3N1YnJvdXRpbmUgYmFyCitpamsgPSAxCitlbmQgc3Vicm91dGluZQorc3Vicm91dGluZSBkYXIK K2NhbGwgYmFyCitlbmQgc3Vicm91dGluZQorZW5kIG1vZHVsZQotLSAKMi4zOS4yCgo= --0000000000004f82e305f55ed245--