From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-28.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A00C3C433EF for ; Fri, 17 Sep 2021 23:11:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7035A6113A for ; Fri, 17 Sep 2021 23:11:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233116AbhIQXMh (ORCPT ); Fri, 17 Sep 2021 19:12:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232079AbhIQXMh (ORCPT ); Fri, 17 Sep 2021 19:12:37 -0400 Received: from mail-qk1-x749.google.com (mail-qk1-x749.google.com [IPv6:2607:f8b0:4864:20::749]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 32308C061574 for ; Fri, 17 Sep 2021 16:11:14 -0700 (PDT) Received: by mail-qk1-x749.google.com with SMTP id w17-20020ae9e511000000b00431497430b7so63374140qkf.12 for ; Fri, 17 Sep 2021 16:11:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc:content-transfer-encoding; bh=AlkVqMXycYxybYKO9oiNrI8pg9W8S+wQXKBWHYMKe8M=; b=Vb2smLpnK8O1eQAT3NN2unafD/mArBNWgdhNXgRvieZPz4DpanKrSq7HF1thzVLjiQ 9B4QwSYHasPc8IJEhQlyKzIvrIDqqYi8XGSFYZC0veZRxp4xFglYN95hqmKBv94T37dM ZeFNE6VB99nm7vf38o0ZFxcePpHNz6O5ddtBPSg+Sx7cSMTRFPgPm3eFYAC8HMPZmnlo bqeQKIsAv8gzP26EAUxCIgxcHnkAzaKoKsDHhq3UlqlLRmOuPF09D0p1xI1kiwjl4iBC kMbV6WbJIEs/kIFhXVkZ5nbJTjdrnNgfVQMiHbxI5s6CsWquOir4YR0Ajekp7t2T6Y+p Hz0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc:content-transfer-encoding; bh=AlkVqMXycYxybYKO9oiNrI8pg9W8S+wQXKBWHYMKe8M=; b=f8JVjMYH3VQHwhAxHDJtMuAfFWm9HDy0cGx4P0V3GYkacaaSCwEH4xFq0NZpJmVEYL 3Ys8cTq2d2juojSQ3rI1tU3Ckjwu4DD4fCMuPQahzesKZjQ5ZqmmpjV3Ny3AKNSkqBNa YIuhEv0PESI02w43C145Vw633PI5WaU6qCMJFx+41H9m7SOgk9UJtLiOh1UrUFa762li 9ceFbMrfiYyaYWa3k6/lqEVXdMj+O/b3LEVLPfHDGHL/MAffc1o6XK/yM3ShiwTQLSUe 0ydCbSA3Zht7bYczd8nTygW5POVGb/PBpE1Oidaqf6dBhJ/Mbl4PFMe5Kjge4TZnCC/D YtRA== X-Gm-Message-State: AOAM530WqBBFUoRqn5wwyZf4yuPRLiOMH1Rp3OGh3vwcTtT2QvQ4fc68 vdGMcLtqmNiunWONzsP76SvGrQE= X-Google-Smtp-Source: ABdhPJy0IZa4n4YNFMrpVJXmQ7p2WYQS3x2AccgsMlG12ENNAc7pqu11UoQFyacrQglNVC1M9f4gywU= X-Received: from sdf2.svl.corp.google.com ([2620:15c:2c4:201:5937:6f21:df47:504]) (user=sdf job=sendgmr) by 2002:a25:5645:: with SMTP id k66mr16396530ybb.259.1631920273176; Fri, 17 Sep 2021 16:11:13 -0700 (PDT) Date: Fri, 17 Sep 2021 16:11:11 -0700 In-Reply-To: Message-Id: Mime-Version: 1.0 References: <20210917061020.821711-1-andrii@kernel.org> <20210917061020.821711-9-andrii@kernel.org> Subject: Re: [PATCH bpf-next 8/9] libbpf: add opt-in strict BPF program section name handling logic From: sdf@google.com To: Andrii Nakryiko Cc: Andrii Nakryiko , bpf , Alexei Starovoitov , Daniel Borkmann , Kernel Team Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=yes Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org T24gMDkvMTcsIEFuZHJpaSBOYWtyeWlrbyB3cm90ZToNCj4gT24gRnJpLCBTZXAgMTcsIDIwMjEg YXQgMTA6MjYgQU0gPHNkZkBnb29nbGUuY29tPiB3cm90ZToNCj4gPg0KPiA+IE9uIDA5LzE2LCBB bmRyaWkgTmFrcnlpa28gd3JvdGU6DQo+ID4gPiBJbXBsZW1lbnQgc3RyaWN0IEVMRiBzZWN0aW9u IG5hbWUgaGFuZGxpbmcgZm9yIEJQRiBwcm9ncmFtcy4gSXQgIA0KPiB1dGlsaXplcw0KPiA+ID4g YGxpYmJwZl9zZXRfc3RyaWN0X21vZGUoKWAgZnJhbWV3b3JrIGFuZCBhZGRzIG5ldyBmbGFnOg0K PiA+ID4gTElCQlBGX1NUUklDVF9TRUNfTkFNRS4NCj4gPg0KPiA+ID4gSWYgdGhpcyBmbGFnIGlz IHNldCwgbGliYnBmIHdpbGwgZW5mb3JjZSBleGFjdCBzZWN0aW9uIG5hbWUgbWF0Y2hpbmcgIA0K PiBmb3INCj4gPiA+IGEgbG90IG9mIHByb2dyYW0gdHlwZXMgdGhhdCBwcmV2aW91c2x5IGFsbG93 ZWQganVzdCBwYXJ0aWFsIHByZWZpeA0KPiA+ID4gbWF0Y2guIEUuZy4sIGlmIHByZXZpb3VzbHkg U0VDKCJ4ZHBfd2hhdGV2ZXJfaV93YW50Iikgd2FzIGFsbG93ZWQsIG5vdw0KPiA+ID4gaW4gc3Ry aWN0IG1vZGUgb25seSBTRUMoInhkcCIpIHdpbGwgYmUgYWNjZXB0ZWQsIHdoaWNoIG1ha2VzIFNF QygiIikNCj4gPiA+IGRlZmluaXRpb25zIGNsZWFuZXIgYW5kIG1vcmUgc3RydWN0dXJlZC4gU0VD KCkgbm93IHdvbid0IGJlIHVzZWQgYXMgIA0KPiB5ZXQNCj4gPiA+IGFub3RoZXIgd2F5IHRvIHVu aXF1ZWx5IGVuY29kZSBCUEYgcHJvZ3JhbSBpZGVudGlmaWVyIChmb3IgdGhhdA0KPiA+ID4gQyBm dW5jdGlvbiBuYW1lIGlzIGJldHRlciBhbmQgaXMgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUgd2l0 aGluDQo+ID4gPiBicGZfb2JqZWN0KS4gTm93IFNFQygpIGlzIHN0cmljdGx5IEJQRiBwcm9ncmFt IHR5cGUgYW5kLCBkZXBlbmRpbmcgb24NCj4gPiA+IHByb2dyYW0gdHlwZSwgZXh0cmEgbG9hZC9h dHRhY2ggcGFyYW1ldGVyIHNwZWNpZmljYXRpb24uDQo+ID4NCj4gPiA+IExpYmJwZiBjb21wbGV0 ZWx5IHN1cHBvcnRzIG11bHRpcGxlIEJQRiBwcm9ncmFtcyBpbiB0aGUgc2FtZSBFTEYNCj4gPiA+ IHNlY3Rpb24sIHNvIG11bHRpcGxlIEJQRiBwcm9ncmFtcyBvZiB0aGUgc2FtZSB0eXBlL3NwZWNp ZmljYXRpb24gIA0KPiBlYXNpbHkNCj4gPiA+IGNvLWV4aXN0IHRvZ2V0aGVyIHdpdGhpbiB0aGUg c2FtZSBicGZfb2JqZWN0IHNjb3BlLg0KPiA+DQo+ID4gPiBBZGRpdGlvbmFsbHksIGEgbmV3IChm b3Igbm93IGludGVybmFsKSBjb252ZW50aW9uIGlzIGludHJvZHVjZWQ6ICANCj4gc2VjdGlvbg0K PiA+ID4gbmFtZSB0aGF0IGNhbiBiZSBhIHN0YW5kLWFsb25lIGV4YWN0IEJQRiBwcm9ncmFtIHR5 cGUgc3BlY2lmaWNhdG9yLCAgDQo+IGJ1dA0KPiA+ID4gYWxzbyBjb3VsZCBoYXZlIGV4dHJhIHBh cmFtZXRlcnMgYWZ0ZXIgJy8nIGRlbGltaXRlci4gQW4gZXhhbXBsZSBvZiAgDQo+IHN1Y2gNCj4g PiA+IHNlY3Rpb24gaXMgInN0cnVjdF9vcHMiLCB3aGljaCBjYW4gYmUgc3BlY2lmaWVkIGJ5IGl0 c2VsZiwgYnV0IGFsc28NCj4gPiA+IGFsbG93cyB0byBzcGVjaWZ5IHRoZSBpbnRlbmRlZCBvcGVy YXRpb24gdG8gYmUgYXR0YWNoZWQgdG8sIGUuZy4sDQo+ID4gPiAic3RydWN0X29wcy9kY3RjcF9p bml0Ii4gTm90ZSwgdGhhdCAic3RydWN0X29wc19zb21lX29wIiBpcyBub3QgIA0KPiBhbGxvd2Vk Lg0KPiA+ID4gU3VjaCBzZWN0aW9uIGRlZmluaXRpb24gaXMgc3BlY2lmaWVkIGFzICJzdHJ1Y3Rf b3BzKyIuDQo+ID4NCj4gPiA+IFRoaXMgY2hhbmdlIGlzIHBhcnQgb2YgbGliYnBmIDEuMCBlZmZv cnQgKFswXSwgWzFdKS4NCj4gPg0KPiA+ID4gICAgWzBdIENsb3NlczogaHR0cHM6Ly9naXRodWIu Y29tL2xpYmJwZi9saWJicGYvaXNzdWVzLzI3MQ0KPiA+ID4gICAgWzFdDQo+ID4gPiAgDQo+IGh0 dHBzOi8vZ2l0aHViLmNvbS9saWJicGYvbGliYnBmL3dpa2kvTGliYnBmOi10aGUtcm9hZC10by12 MS4wI3N0cmljdGVyLWFuZC1tb3JlLXVuaWZvcm0tYnBmLXByb2dyYW0tc2VjdGlvbi1uYW1lLXNl Yy1oYW5kbGluZw0KPiA+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBBbmRyaWkgTmFrcnlpa28gPGFu ZHJpaUBrZXJuZWwub3JnPg0KPiA+ID4gLS0tDQo+ID4gPiAgIHRvb2xzL2xpYi9icGYvbGliYnBm LmMgICAgICAgIHwgMTM1ICANCj4gKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQ0K PiA+ID4gICB0b29scy9saWIvYnBmL2xpYmJwZl9sZWdhY3kuaCB8ICAgOSArKysNCj4gPiA+ICAg MiBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkNCj4gPg0K PiA+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMgYi90b29scy9saWIvYnBm L2xpYmJwZi5jDQo+ID4gPiBpbmRleCA1NjA4Mjg2NWNlZmYuLmYwODQ2ZjYwOWUyNiAxMDA2NDQN Cj4gPiA+IC0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMNCj4gPiA+ICsrKyBiL3Rvb2xzL2xp Yi9icGYvbGliYnBmLmMNCj4gPiA+IEBAIC0yMzIsNiArMjMyLDcgQEAgZW51bSBzZWNfZGVmX2Zs YWdzIHsNCj4gPiA+ICAgICAgIFNFQ19BVFRBQ0hBQkxFX09QVCA9IFNFQ19BVFRBQ0hBQkxFIHwg U0VDX0VYUF9BVFRBQ0hfT1BULA0KPiA+ID4gICAgICAgU0VDX0FUVEFDSF9CVEYgPSA0LA0KPiA+ ID4gICAgICAgU0VDX1NMRUVQQUJMRSA9IDgsDQo+ID4gPiArICAgICBTRUNfU0xPUFBZX1BGWCA9 IDE2LCAvKiBhbGxvdyBub24tc3RyaWN0IHByZWZpeCBtYXRjaGluZyAqLw0KPiA+ID4gICB9Ow0K PiA+DQo+ID4gPiAgIHN0cnVjdCBicGZfc2VjX2RlZiB7DQo+ID4gPiBAQCAtNzk3NiwxNSArNzk3 NywxNSBAQCBzdGF0aWMgc3RydWN0IGJwZl9saW5rICphdHRhY2hfbHNtKGNvbnN0ICANCj4gc3Ry dWN0DQo+ID4gPiBicGZfcHJvZ3JhbSAqcHJvZywgbG9uZyBjb29raWUpOw0KPiA+ID4gICBzdGF0 aWMgc3RydWN0IGJwZl9saW5rICphdHRhY2hfaXRlcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0g KnByb2csICANCj4gbG9uZw0KPiA+ID4gY29va2llKTsNCj4gPg0KPiA+ID4gICBzdGF0aWMgY29u c3Qgc3RydWN0IGJwZl9zZWNfZGVmIHNlY3Rpb25fZGVmc1tdID0gew0KPiA+ID4gLSAgICAgU0VD X0RFRigic29ja2V0IiwgICAgICAgICAgICAgICBTT0NLRVRfRklMVEVSLCAwLCBTRUNfTk9ORSks DQo+ID4gPiAtICAgICBTRUNfREVGKCJza19yZXVzZXBvcnQvbWlncmF0ZSIsIFNLX1JFVVNFUE9S VCwNCj4gPiA+IEJQRl9TS19SRVVTRVBPUlRfU0VMRUNUX09SX01JR1JBVEUsIFNFQ19BVFRBQ0hB QkxFKSwNCj4gPiA+IC0gICAgIFNFQ19ERUYoInNrX3JldXNlcG9ydCIsICAgICAgICAgU0tfUkVV U0VQT1JULCAgDQo+IEJQRl9TS19SRVVTRVBPUlRfU0VMRUNULA0KPiA+ID4gU0VDX0FUVEFDSEFC TEUpLA0KPiA+ID4gKyAgICAgU0VDX0RFRigic29ja2V0IiwgICAgICAgICAgICAgICBTT0NLRVRf RklMVEVSLCAwLCAgDQo+IFNFQ19TTE9QUFlfUEZYKSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoInNr X3JldXNlcG9ydC9taWdyYXRlIiwgU0tfUkVVU0VQT1JULA0KPiA+ID4gQlBGX1NLX1JFVVNFUE9S VF9TRUxFQ1RfT1JfTUlHUkFURSwgU0VDX0FUVEFDSEFCTEUgfCBTRUNfU0xPUFBZX1BGWCksDQo+ ID4gPiArICAgICBTRUNfREVGKCJza19yZXVzZXBvcnQiLCAgICAgICAgIFNLX1JFVVNFUE9SVCwg IA0KPiBCUEZfU0tfUkVVU0VQT1JUX1NFTEVDVCwNCj4gPiA+IFNFQ19BVFRBQ0hBQkxFIHwgU0VD X1NMT1BQWV9QRlgpLA0KPiA+ID4gICAgICAgU0VDX0RFRigia3Byb2JlLyIsICAgICAgICAgICAg ICBLUFJPQkUsIDAsIFNFQ19OT05FLCAgDQo+IGF0dGFjaF9rcHJvYmUpLA0KPiA+ID4gICAgICAg U0VDX0RFRigidXByb2JlLyIsICAgICAgICAgICAgICBLUFJPQkUsIDAsIFNFQ19OT05FKSwNCj4g PiA+ICAgICAgIFNFQ19ERUYoImtyZXRwcm9iZS8iLCAgICAgICAgICAgS1BST0JFLCAwLCBTRUNf Tk9ORSwgIA0KPiBhdHRhY2hfa3Byb2JlKSwNCj4gPiA+ICAgICAgIFNFQ19ERUYoInVyZXRwcm9i ZS8iLCAgICAgICAgICAgS1BST0JFLCAwLCBTRUNfTk9ORSksDQo+ID4gPiAtICAgICBTRUNfREVG KCJjbGFzc2lmaWVyIiwgICAgICAgICAgIFNDSEVEX0NMUywgMCwgU0VDX05PTkUpLA0KPiA+ID4g LSAgICAgU0VDX0RFRigiYWN0aW9uIiwgICAgICAgICAgICAgICBTQ0hFRF9BQ1QsIDAsIFNFQ19O T05FKSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoImNsYXNzaWZpZXIiLCAgICAgICAgICAgU0NIRURf Q0xTLCAwLCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJhY3Rpb24iLCAg ICAgICAgICAgICAgIFNDSEVEX0FDVCwgMCwgU0VDX1NMT1BQWV9QRlgpLA0KPiA+ID4gICAgICAg U0VDX0RFRigidHJhY2Vwb2ludC8iLCAgICAgICAgICBUUkFDRVBPSU5ULCAwLCBTRUNfTk9ORSwg IA0KPiBhdHRhY2hfdHApLA0KPiA+ID4gICAgICAgU0VDX0RFRigidHAvIiwgICAgICAgICAgICAg ICAgICBUUkFDRVBPSU5ULCAwLCBTRUNfTk9ORSwgIA0KPiBhdHRhY2hfdHApLA0KPiA+ID4gICAg ICAgU0VDX0RFRigicmF3X3RyYWNlcG9pbnQvIiwgICAgICBSQVdfVFJBQ0VQT0lOVCwgMCwgU0VD X05PTkUsICANCj4gYXR0YWNoX3Jhd190cCksDQo+ID4gPiBAQCAtODAwMyw0NCArODAwNCw0NCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9zZWNfZGVmICANCj4gc2VjdGlvbl9kZWZzW10gPSB7 DQo+ID4gPiAgICAgICBTRUNfREVGKCJzeXNjYWxsIiwgICAgICAgICAgICAgIFNZU0NBTEwsIDAs IFNFQ19TTEVFUEFCTEUpLA0KPiA+ID4gICAgICAgU0VDX0RFRigieGRwX2Rldm1hcC8iLCAgICAg ICAgICBYRFAsIEJQRl9YRFBfREVWTUFQLCAgDQo+IFNFQ19BVFRBQ0hBQkxFKSwNCj4gPiA+ICAg ICAgIFNFQ19ERUYoInhkcF9jcHVtYXAvIiwgICAgICAgICAgWERQLCBCUEZfWERQX0NQVU1BUCwg IA0KPiBTRUNfQVRUQUNIQUJMRSksDQo+ID4gPiAtICAgICBTRUNfREVGKCJ4ZHAiLCAgICAgICAg ICAgICAgICAgIFhEUCwgQlBGX1hEUCwgIA0KPiBTRUNfQVRUQUNIQUJMRV9PUFQpLA0KPiA+ID4g LSAgICAgU0VDX0RFRigicGVyZl9ldmVudCIsICAgICAgICAgICBQRVJGX0VWRU5ULCAwLCBTRUNf Tk9ORSksDQo+ID4gPiAtICAgICBTRUNfREVGKCJsd3RfaW4iLCAgICAgICAgICAgICAgIExXVF9J TiwgMCwgU0VDX05PTkUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigibHd0X291dCIsICAgICAgICAg ICAgICBMV1RfT1VULCAwLCBTRUNfTk9ORSksDQo+ID4gPiAtICAgICBTRUNfREVGKCJsd3RfeG1p dCIsICAgICAgICAgICAgIExXVF9YTUlULCAwLCBTRUNfTk9ORSksDQo+ID4gPiAtICAgICBTRUNf REVGKCJsd3Rfc2VnNmxvY2FsIiwgICAgICAgIExXVF9TRUc2TE9DQUwsIDAsIFNFQ19OT05FKSwN Cj4gPiA+IC0gICAgIFNFQ19ERUYoImNncm91cF9za2IvaW5ncmVzcyIsICAgQ0dST1VQX1NLQiwg IA0KPiBCUEZfQ0dST1VQX0lORVRfSU5HUkVTUywNCj4gPiA+IFNFQ19BVFRBQ0hBQkxFX09QVCks DQo+ID4gPiAtICAgICBTRUNfREVGKCJjZ3JvdXBfc2tiL2VncmVzcyIsICAgIENHUk9VUF9TS0Is ICANCj4gQlBGX0NHUk9VUF9JTkVUX0VHUkVTUywNCj4gPiA+IFNFQ19BVFRBQ0hBQkxFX09QVCks DQo+ID4gPiAtICAgICBTRUNfREVGKCJjZ3JvdXAvc2tiIiwgICAgICAgICAgIENHUk9VUF9TS0Is IDAsIFNFQ19OT05FKSwNCj4gPiA+IC0gICAgIFNFQ19ERUYoImNncm91cC9zb2NrX2NyZWF0ZSIs ICAgQ0dST1VQX1NPQ0ssICANCj4gQlBGX0NHUk9VUF9JTkVUX1NPQ0tfQ1JFQVRFLA0KPiA+ID4g U0VDX0FUVEFDSEFCTEUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL3NvY2tfcmVsZWFz ZSIsICBDR1JPVVBfU09DSywNCj4gPiA+IEJQRl9DR1JPVVBfSU5FVF9TT0NLX1JFTEVBU0UsIFNF Q19BVFRBQ0hBQkxFKSwNCj4gPiA+IC0gICAgIFNFQ19ERUYoImNncm91cC9zb2NrIiwgICAgICAg ICAgQ0dST1VQX1NPQ0ssICANCj4gQlBGX0NHUk9VUF9JTkVUX1NPQ0tfQ1JFQVRFLA0KPiA+ID4g U0VDX0FUVEFDSEFCTEVfT1BUKSwNCj4gPiA+IC0gICAgIFNFQ19ERUYoImNncm91cC9wb3N0X2Jp bmQ0IiwgICAgQ0dST1VQX1NPQ0ssICANCj4gQlBGX0NHUk9VUF9JTkVUNF9QT1NUX0JJTkQsDQo+ ID4gPiBTRUNfQVRUQUNIQUJMRSksDQo+ID4gPiAtICAgICBTRUNfREVGKCJjZ3JvdXAvcG9zdF9i aW5kNiIsICAgIENHUk9VUF9TT0NLLCAgDQo+IEJQRl9DR1JPVVBfSU5FVDZfUE9TVF9CSU5ELA0K PiA+ID4gU0VDX0FUVEFDSEFCTEUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL2RldiIs ICAgICAgICAgICBDR1JPVVBfREVWSUNFLCAgDQo+IEJQRl9DR1JPVVBfREVWSUNFLA0KPiA+ID4g U0VDX0FUVEFDSEFCTEVfT1BUKSwNCj4gPiA+IC0gICAgIFNFQ19ERUYoInNvY2tvcHMiLCAgICAg ICAgICAgICAgU09DS19PUFMsIEJQRl9DR1JPVVBfU09DS19PUFMsICANCj4gU0VDX0FUVEFDSEFC TEVfT1BUKSwNCj4gPiA+IC0gICAgIFNFQ19ERUYoInNrX3NrYi9zdHJlYW1fcGFyc2VyIiwgU0tf U0tCLCAgDQo+IEJQRl9TS19TS0JfU1RSRUFNX1BBUlNFUiwNCj4gPiA+IFNFQ19BVFRBQ0hBQkxF X09QVCksDQo+ID4gPiAtICAgICBTRUNfREVGKCJza19za2Ivc3RyZWFtX3ZlcmRpY3QiLFNLX1NL QiwgIA0KPiBCUEZfU0tfU0tCX1NUUkVBTV9WRVJESUNULA0KPiA+ID4gU0VDX0FUVEFDSEFCTEVf T1BUKSwNCj4gPiA+IC0gICAgIFNFQ19ERUYoInNrX3NrYiIsICAgICAgICAgICAgICAgU0tfU0tC LCAwLCBTRUNfTk9ORSksDQo+ID4gPiAtICAgICBTRUNfREVGKCJza19tc2ciLCAgICAgICAgICAg ICAgIFNLX01TRywgQlBGX1NLX01TR19WRVJESUNULCAgDQo+IFNFQ19BVFRBQ0hBQkxFX09QVCks DQo+ID4gPiAtICAgICBTRUNfREVGKCJsaXJjX21vZGUyIiwgICAgICAgICAgIExJUkNfTU9ERTIs IEJQRl9MSVJDX01PREUyLCAgDQo+IFNFQ19BVFRBQ0hBQkxFX09QVCksDQo+ID4gPiAtICAgICBT RUNfREVGKCJmbG93X2Rpc3NlY3RvciIsICAgICAgIEZMT1dfRElTU0VDVE9SLCAgDQo+IEJQRl9G TE9XX0RJU1NFQ1RPUiwNCj4gPiA+IFNFQ19BVFRBQ0hBQkxFX09QVCksDQo+ID4gPiAtICAgICBT RUNfREVGKCJjZ3JvdXAvYmluZDQiLCAgICAgICAgIENHUk9VUF9TT0NLX0FERFIsICANCj4gQlBG X0NHUk9VUF9JTkVUNF9CSU5ELA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUpLA0KPiA+ID4gLSAgICAg U0VDX0RFRigiY2dyb3VwL2JpbmQ2IiwgICAgICAgICBDR1JPVVBfU09DS19BRERSLCAgDQo+IEJQ Rl9DR1JPVVBfSU5FVDZfQklORCwNCj4gPiA+IFNFQ19BVFRBQ0hBQkxFKSwNCj4gPiA+IC0gICAg IFNFQ19ERUYoImNncm91cC9jb25uZWN0NCIsICAgICAgQ0dST1VQX1NPQ0tfQUREUiwgIA0KPiBC UEZfQ0dST1VQX0lORVQ0X0NPTk5FQ1QsDQo+ID4gPiBTRUNfQVRUQUNIQUJMRSksDQo+ID4gPiAt ICAgICBTRUNfREVGKCJjZ3JvdXAvY29ubmVjdDYiLCAgICAgIENHUk9VUF9TT0NLX0FERFIsICAN Cj4gQlBGX0NHUk9VUF9JTkVUNl9DT05ORUNULA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUpLA0KPiA+ ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL3NlbmRtc2c0IiwgICAgICBDR1JPVVBfU09DS19BRERS LCAgDQo+IEJQRl9DR1JPVVBfVURQNF9TRU5ETVNHLA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUpLA0K PiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL3NlbmRtc2c2IiwgICAgICBDR1JPVVBfU09DS19B RERSLCAgDQo+IEJQRl9DR1JPVVBfVURQNl9TRU5ETVNHLA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUp LA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL3JlY3Ztc2c0IiwgICAgICBDR1JPVVBfU09D S19BRERSLCAgDQo+IEJQRl9DR1JPVVBfVURQNF9SRUNWTVNHLA0KPiA+ID4gU0VDX0FUVEFDSEFC TEUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL3JlY3Ztc2c2IiwgICAgICBDR1JPVVBf U09DS19BRERSLCAgDQo+IEJQRl9DR1JPVVBfVURQNl9SRUNWTVNHLA0KPiA+ID4gU0VDX0FUVEFD SEFCTEUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL2dldHBlZXJuYW1lNCIsICBDR1JP VVBfU09DS19BRERSLA0KPiA+ID4gQlBGX0NHUk9VUF9JTkVUNF9HRVRQRUVSTkFNRSwgU0VDX0FU VEFDSEFCTEUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL2dldHBlZXJuYW1lNiIsICBD R1JPVVBfU09DS19BRERSLA0KPiA+ID4gQlBGX0NHUk9VUF9JTkVUNl9HRVRQRUVSTkFNRSwgU0VD X0FUVEFDSEFCTEUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL2dldHNvY2tuYW1lNCIs ICBDR1JPVVBfU09DS19BRERSLA0KPiA+ID4gQlBGX0NHUk9VUF9JTkVUNF9HRVRTT0NLTkFNRSwg U0VDX0FUVEFDSEFCTEUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL2dldHNvY2tuYW1l NiIsICBDR1JPVVBfU09DS19BRERSLA0KPiA+ID4gQlBGX0NHUk9VUF9JTkVUNl9HRVRTT0NLTkFN RSwgU0VDX0FUVEFDSEFCTEUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL3N5c2N0bCIs ICAgICAgICBDR1JPVVBfU1lTQ1RMLCAgDQo+IEJQRl9DR1JPVVBfU1lTQ1RMLA0KPiA+ID4gU0VD X0FUVEFDSEFCTEUpLA0KPiA+ID4gLSAgICAgU0VDX0RFRigiY2dyb3VwL2dldHNvY2tvcHQiLCAg ICBDR1JPVVBfU09DS09QVCwgIA0KPiBCUEZfQ0dST1VQX0dFVFNPQ0tPUFQsDQo+ID4gPiBTRUNf QVRUQUNIQUJMRSksDQo+ID4gPiAtICAgICBTRUNfREVGKCJjZ3JvdXAvc2V0c29ja29wdCIsICAg IENHUk9VUF9TT0NLT1BULCAgDQo+IEJQRl9DR1JPVVBfU0VUU09DS09QVCwNCj4gPiA+IFNFQ19B VFRBQ0hBQkxFKSwNCj4gPiA+IC0gICAgIFNFQ19ERUYoInN0cnVjdF9vcHMiLCAgICAgICAgICAg U1RSVUNUX09QUywgMCwgU0VDX05PTkUpLA0KPiA+ID4gKyAgICAgU0VDX0RFRigieGRwIiwgICAg ICAgICAgICAgICAgICBYRFAsIEJQRl9YRFAsICANCj4gU0VDX0FUVEFDSEFCTEVfT1BUIHwgU0VD X1NMT1BQWV9QRlgpLA0KPiA+ID4gKyAgICAgU0VDX0RFRigicGVyZl9ldmVudCIsICAgICAgICAg ICBQRVJGX0VWRU5ULCAwLCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJs d3RfaW4iLCAgICAgICAgICAgICAgIExXVF9JTiwgMCwgU0VDX1NMT1BQWV9QRlgpLA0KPiA+ID4g KyAgICAgU0VDX0RFRigibHd0X291dCIsICAgICAgICAgICAgICBMV1RfT1VULCAwLCBTRUNfU0xP UFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJsd3RfeG1pdCIsICAgICAgICAgICAgIExX VF9YTUlULCAwLCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJsd3Rfc2Vn NmxvY2FsIiwgICAgICAgIExXVF9TRUc2TE9DQUwsIDAsICANCj4gU0VDX1NMT1BQWV9QRlgpLA0K PiA+ID4gKyAgICAgU0VDX0RFRigiY2dyb3VwX3NrYi9pbmdyZXNzIiwgICBDR1JPVVBfU0tCLCAg DQo+IEJQRl9DR1JPVVBfSU5FVF9JTkdSRVNTLA0KPiA+ID4gU0VDX0FUVEFDSEFCTEVfT1BUIHwg U0VDX1NMT1BQWV9QRlgpLA0KPiA+ID4gKyAgICAgU0VDX0RFRigiY2dyb3VwX3NrYi9lZ3Jlc3Mi LCAgICBDR1JPVVBfU0tCLCAgDQo+IEJQRl9DR1JPVVBfSU5FVF9FR1JFU1MsDQo+ID4gPiBTRUNf QVRUQUNIQUJMRV9PUFQgfCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJj Z3JvdXAvc2tiIiwgICAgICAgICAgIENHUk9VUF9TS0IsIDAsIFNFQ19TTE9QUFlfUEZYKSwNCj4g PiA+ICsgICAgIFNFQ19ERUYoImNncm91cC9zb2NrX2NyZWF0ZSIsICAgQ0dST1VQX1NPQ0ssICAN Cj4gQlBGX0NHUk9VUF9JTkVUX1NPQ0tfQ1JFQVRFLA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUgfCBT RUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJjZ3JvdXAvc29ja19yZWxlYXNl IiwgIENHUk9VUF9TT0NLLA0KPiA+ID4gQlBGX0NHUk9VUF9JTkVUX1NPQ0tfUkVMRUFTRSwgU0VD X0FUVEFDSEFCTEUgfCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJjZ3Jv dXAvc29jayIsICAgICAgICAgIENHUk9VUF9TT0NLLCAgDQo+IEJQRl9DR1JPVVBfSU5FVF9TT0NL X0NSRUFURSwNCj4gPiA+IFNFQ19BVFRBQ0hBQkxFX09QVCB8IFNFQ19TTE9QUFlfUEZYKSwNCj4g PiA+ICsgICAgIFNFQ19ERUYoImNncm91cC9wb3N0X2JpbmQ0IiwgICAgQ0dST1VQX1NPQ0ssICAN Cj4gQlBGX0NHUk9VUF9JTkVUNF9QT1NUX0JJTkQsDQo+ID4gPiBTRUNfQVRUQUNIQUJMRSB8IFNF Q19TTE9QUFlfUEZYKSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoImNncm91cC9wb3N0X2JpbmQ2Iiwg ICAgQ0dST1VQX1NPQ0ssICANCj4gQlBGX0NHUk9VUF9JTkVUNl9QT1NUX0JJTkQsDQo+ID4gPiBT RUNfQVRUQUNIQUJMRSB8IFNFQ19TTE9QUFlfUEZYKSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoImNn cm91cC9kZXYiLCAgICAgICAgICAgQ0dST1VQX0RFVklDRSwgIA0KPiBCUEZfQ0dST1VQX0RFVklD RSwNCj4gPiA+IFNFQ19BVFRBQ0hBQkxFX09QVCB8IFNFQ19TTE9QUFlfUEZYKSwNCj4gPiA+ICsg ICAgIFNFQ19ERUYoInNvY2tvcHMiLCAgICAgICAgICAgICAgU09DS19PUFMsIEJQRl9DR1JPVVBf U09DS19PUFMsICANCj4gU0VDX0FUVEFDSEFCTEVfT1BUIHwNCj4gPiA+IFNFQ19TTE9QUFlfUEZY KSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoInNrX3NrYi9zdHJlYW1fcGFyc2VyIiwgU0tfU0tCLCAg DQo+IEJQRl9TS19TS0JfU1RSRUFNX1BBUlNFUiwNCj4gPiA+IFNFQ19BVFRBQ0hBQkxFX09QVCB8 IFNFQ19TTE9QUFlfUEZYKSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoInNrX3NrYi9zdHJlYW1fdmVy ZGljdCIsU0tfU0tCLCAgDQo+IEJQRl9TS19TS0JfU1RSRUFNX1ZFUkRJQ1QsDQo+ID4gPiBTRUNf QVRUQUNIQUJMRV9PUFQgfCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJz a19za2IiLCAgICAgICAgICAgICAgIFNLX1NLQiwgMCwgU0VDX1NMT1BQWV9QRlgpLA0KPiA+ID4g KyAgICAgU0VDX0RFRigic2tfbXNnIiwgICAgICAgICAgICAgICBTS19NU0csIEJQRl9TS19NU0df VkVSRElDVCwgIA0KPiBTRUNfQVRUQUNIQUJMRV9PUFQgfA0KPiA+ID4gU0VDX1NMT1BQWV9QRlgp LA0KPiA+ID4gKyAgICAgU0VDX0RFRigibGlyY19tb2RlMiIsICAgICAgICAgICBMSVJDX01PREUy LCBCUEZfTElSQ19NT0RFMiwgIA0KPiBTRUNfQVRUQUNIQUJMRV9PUFQgfA0KPiA+ID4gU0VDX1NM T1BQWV9QRlgpLA0KPiA+ID4gKyAgICAgU0VDX0RFRigiZmxvd19kaXNzZWN0b3IiLCAgICAgICBG TE9XX0RJU1NFQ1RPUiwgIA0KPiBCUEZfRkxPV19ESVNTRUNUT1IsDQo+ID4gPiBTRUNfQVRUQUNI QUJMRV9PUFQgfCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJjZ3JvdXAv YmluZDQiLCAgICAgICAgIENHUk9VUF9TT0NLX0FERFIsICANCj4gQlBGX0NHUk9VUF9JTkVUNF9C SU5ELA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUgfCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAg ICBTRUNfREVGKCJjZ3JvdXAvYmluZDYiLCAgICAgICAgIENHUk9VUF9TT0NLX0FERFIsICANCj4g QlBGX0NHUk9VUF9JTkVUNl9CSU5ELA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUgfCBTRUNfU0xPUFBZ X1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJjZ3JvdXAvY29ubmVjdDQiLCAgICAgIENHUk9V UF9TT0NLX0FERFIsICANCj4gQlBGX0NHUk9VUF9JTkVUNF9DT05ORUNULA0KPiA+ID4gU0VDX0FU VEFDSEFCTEUgfCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiArICAgICBTRUNfREVGKCJjZ3JvdXAv Y29ubmVjdDYiLCAgICAgIENHUk9VUF9TT0NLX0FERFIsICANCj4gQlBGX0NHUk9VUF9JTkVUNl9D T05ORUNULA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUgfCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiAr ICAgICBTRUNfREVGKCJjZ3JvdXAvc2VuZG1zZzQiLCAgICAgIENHUk9VUF9TT0NLX0FERFIsICAN Cj4gQlBGX0NHUk9VUF9VRFA0X1NFTkRNU0csDQo+ID4gPiBTRUNfQVRUQUNIQUJMRSB8IFNFQ19T TE9QUFlfUEZYKSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoImNncm91cC9zZW5kbXNnNiIsICAgICAg Q0dST1VQX1NPQ0tfQUREUiwgIA0KPiBCUEZfQ0dST1VQX1VEUDZfU0VORE1TRywNCj4gPiA+IFNF Q19BVFRBQ0hBQkxFIHwgU0VDX1NMT1BQWV9QRlgpLA0KPiA+ID4gKyAgICAgU0VDX0RFRigiY2dy b3VwL3JlY3Ztc2c0IiwgICAgICBDR1JPVVBfU09DS19BRERSLCAgDQo+IEJQRl9DR1JPVVBfVURQ NF9SRUNWTVNHLA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUgfCBTRUNfU0xPUFBZX1BGWCksDQo+ID4g PiArICAgICBTRUNfREVGKCJjZ3JvdXAvcmVjdm1zZzYiLCAgICAgIENHUk9VUF9TT0NLX0FERFIs ICANCj4gQlBGX0NHUk9VUF9VRFA2X1JFQ1ZNU0csDQo+ID4gPiBTRUNfQVRUQUNIQUJMRSB8IFNF Q19TTE9QUFlfUEZYKSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoImNncm91cC9nZXRwZWVybmFtZTQi LCAgQ0dST1VQX1NPQ0tfQUREUiwNCj4gPiA+IEJQRl9DR1JPVVBfSU5FVDRfR0VUUEVFUk5BTUUs IFNFQ19BVFRBQ0hBQkxFIHwgU0VDX1NMT1BQWV9QRlgpLA0KPiA+ID4gKyAgICAgU0VDX0RFRigi Y2dyb3VwL2dldHBlZXJuYW1lNiIsICBDR1JPVVBfU09DS19BRERSLA0KPiA+ID4gQlBGX0NHUk9V UF9JTkVUNl9HRVRQRUVSTkFNRSwgU0VDX0FUVEFDSEFCTEUgfCBTRUNfU0xPUFBZX1BGWCksDQo+ ID4gPiArICAgICBTRUNfREVGKCJjZ3JvdXAvZ2V0c29ja25hbWU0IiwgIENHUk9VUF9TT0NLX0FE RFIsDQo+ID4gPiBCUEZfQ0dST1VQX0lORVQ0X0dFVFNPQ0tOQU1FLCBTRUNfQVRUQUNIQUJMRSB8 IFNFQ19TTE9QUFlfUEZYKSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoImNncm91cC9nZXRzb2NrbmFt ZTYiLCAgQ0dST1VQX1NPQ0tfQUREUiwNCj4gPiA+IEJQRl9DR1JPVVBfSU5FVDZfR0VUU09DS05B TUUsIFNFQ19BVFRBQ0hBQkxFIHwgU0VDX1NMT1BQWV9QRlgpLA0KPiA+ID4gKyAgICAgU0VDX0RF RigiY2dyb3VwL3N5c2N0bCIsICAgICAgICBDR1JPVVBfU1lTQ1RMLCAgDQo+IEJQRl9DR1JPVVBf U1lTQ1RMLA0KPiA+ID4gU0VDX0FUVEFDSEFCTEUgfCBTRUNfU0xPUFBZX1BGWCksDQo+ID4gPiAr ICAgICBTRUNfREVGKCJjZ3JvdXAvZ2V0c29ja29wdCIsICAgIENHUk9VUF9TT0NLT1BULCAgDQo+ IEJQRl9DR1JPVVBfR0VUU09DS09QVCwNCj4gPiA+IFNFQ19BVFRBQ0hBQkxFIHwgU0VDX1NMT1BQ WV9QRlgpLA0KPiA+ID4gKyAgICAgU0VDX0RFRigiY2dyb3VwL3NldHNvY2tvcHQiLCAgICBDR1JP VVBfU09DS09QVCwgIA0KPiBCUEZfQ0dST1VQX1NFVFNPQ0tPUFQsDQo+ID4gPiBTRUNfQVRUQUNI QUJMRSB8IFNFQ19TTE9QUFlfUEZYKSwNCj4gPiA+ICsgICAgIFNFQ19ERUYoInN0cnVjdF9vcHMr IiwgICAgICAgICAgU1RSVUNUX09QUywgMCwgU0VDX05PTkUpLA0KPiA+ID4gICAgICAgU0VDX0RF Rigic2tfbG9va3VwLyIsICAgICAgICAgICBTS19MT09LVVAsIEJQRl9TS19MT09LVVAsICANCj4g U0VDX0FUVEFDSEFCTEUpLA0KPiA+ID4gICB9Ow0KPiA+DQo+ID4gPiBAQCAtODA0OCwxMSArODA0 OSw1MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9zZWNfZGVmICANCj4gc2VjdGlvbl9kZWZz W10gPSB7DQo+ID4NCj4gPiA+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBicGZfc2VjX2RlZiAqZmlu ZF9zZWNfZGVmKGNvbnN0IGNoYXIgKnNlY19uYW1lKQ0KPiA+ID4gICB7DQo+ID4gPiAtICAgICBp bnQgaSwgbiA9IEFSUkFZX1NJWkUoc2VjdGlvbl9kZWZzKTsNCj4gPiA+ICsgICAgIGNvbnN0IHN0 cnVjdCBicGZfc2VjX2RlZiAqc2VjX2RlZjsNCj4gPiA+ICsgICAgIGVudW0gc2VjX2RlZl9mbGFn cyBzZWNfZmxhZ3M7DQo+ID4gPiArICAgICBpbnQgaSwgbiA9IEFSUkFZX1NJWkUoc2VjdGlvbl9k ZWZzKSwgbGVuOw0KPiA+ID4gKyAgICAgYm9vbCBzdHJpY3QgPSBsaWJicGZfbW9kZSAmIExJQkJQ Rl9TVFJJQ1RfU0VDX05BTUU7DQo+ID4NCj4gPiA+ICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBp KyspIHsNCj4gPiA+IC0gICAgICAgICAgICAgaWYgKHN0cl9oYXNfcGZ4KHNlY19uYW1lLCBzZWN0 aW9uX2RlZnNbaV0uc2VjKSkNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gJnNl Y3Rpb25fZGVmc1tpXTsNCj4gPiA+ICsgICAgICAgICAgICAgc2VjX2RlZiA9ICZzZWN0aW9uX2Rl ZnNbaV07DQo+ID4gPiArICAgICAgICAgICAgIHNlY19mbGFncyA9IHNlY19kZWYtPmNvb2tpZTsN Cj4gPiA+ICsgICAgICAgICAgICAgbGVuID0gc3RybGVuKHNlY19kZWYtPnNlYyk7DQo+ID4gPiAr DQo+ID4gPiArICAgICAgICAgICAgIC8qICJ0eXBlLyIgYWx3YXlzIGhhcyB0byBoYXZlIHByb3Bl ciBTRUMoInR5cGUvZXh0cmFzIikgIA0KPiBmb3JtICovDQo+ID4gPiArICAgICAgICAgICAgIGlm IChzZWNfZGVmLT5zZWNbbGVuIC0gMV0gPT0gJy8nKSB7DQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgaWYgKHN0cl9oYXNfcGZ4KHNlY19uYW1lLCBzZWNfZGVmLT5zZWMpKQ0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlY19kZWY7DQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gPiArICAgICAgICAgICAgIH0NCj4gPiA+ICsN Cj4gPiA+ICsgICAgICAgICAgICAgLyogInR5cGUrIiBtZWFucyBpdCBjYW4gYmUgZWl0aGVyIGV4 YWN0IFNFQygidHlwZSIpIG9yDQo+ID4gPiArICAgICAgICAgICAgICAqIHdlbGwtZm9ybWVkIFNF QygidHlwZS9leHRyYXMiKSB3aXRoIHByb3BlciAnLycgIA0KPiBzZXBhcmF0b3INCj4gPiA+ICsg ICAgICAgICAgICAgICovDQo+ID4gPiArICAgICAgICAgICAgIGlmIChzZWNfZGVmLT5zZWNbbGVu IC0gMV0gPT0gJysnKSB7DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgbGVuLS07DQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgLyogbm90IGV2ZW4gYSBwcmVmaXggKi8NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICBpZiAoc3RybmNtcChzZWNfbmFtZSwgc2VjX2RlZi0+c2VjLCBs ZW4pICE9IDApDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAvKiBleGFjdCBtYXRjaCBvciBoYXMgJy8nIHNl cGFyYXRvciAqLw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChzZWNfbmFtZVtsZW5d ID09ICdcMCcgfHwgc2VjX25hbWVbbGVuXSAgDQo+ID09ICcvJykNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWNfZGVmOw0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gKyAgICAgICAgICAgICB9DQo+ID4gPiArDQo+ID4gPiAr ICAgICAgICAgICAgIC8qIFNFQ19TTE9QUFlfUEZYIGRlZmluaXRpb25zIGFyZSBhbGxvd2VkIHRv IGJlIGp1c3QgIA0KPiBwcmVmaXgNCj4gPiA+ICsgICAgICAgICAgICAgICogbWF0Y2hlcywgdW5s ZXNzIHN0cmljdCBzZWN0aW9uIG5hbWUgbW9kZQ0KPiA+ID4gKyAgICAgICAgICAgICAgKiAoTElC QlBGX1NUUklDVF9TRUNfTkFNRSkgaXMgZW5hYmxlZCwgaW4gd2hpY2ggY2FzZSAgDQo+IHRoZQ0K PiA+ID4gKyAgICAgICAgICAgICAgKiBtYXRjaCBoYXMgdG8gYmUgZXhhY3QuDQo+ID4gPiArICAg ICAgICAgICAgICAqLw0KPiA+ID4gKyAgICAgICAgICAgICBpZiAoKHNlY19mbGFncyAmIFNFQ19T TE9QUFlfUEZYKSAmJiAhc3RyaWN0KSAgew0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlm IChzdHJfaGFzX3BmeChzZWNfbmFtZSwgc2VjX2RlZi0+c2VjKSkNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWNfZGVmOw0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gKyAgICAgICAgICAgICB9DQo+ID4gPiArDQo+ID4gPiAr ICAgICAgICAgICAgIC8qIERlZmluaXRpb25zIG5vdCBtYXJrZWQgU0VDX1NMT1BQWV9QRlggKGUu Zy4sDQo+ID4gPiArICAgICAgICAgICAgICAqIFNFQygic3lzY2FsbCIpKSBhcmUgZXhhY3QgbWF0 Y2hlcyBpbiBib3RoIG1vZGVzLg0KPiA+ID4gKyAgICAgICAgICAgICAgKi8NCj4gPiA+ICsgICAg ICAgICAgICAgaWYgKHN0cmNtcChzZWNfbmFtZSwgc2VjX2RlZi0+c2VjKSA9PSAwKQ0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWNfZGVmOw0KPiA+ID4gICAgICAgfQ0KPiA+ ID4gICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiAgIH0NCj4gPiA+IGRpZmYgLS1naXQgYS90b29s cy9saWIvYnBmL2xpYmJwZl9sZWdhY3kuaCAgDQo+IGIvdG9vbHMvbGliL2JwZi9saWJicGZfbGVn YWN5LmgNCj4gPiA+IGluZGV4IGRmMGQwM2RjZmZhYi4uNzRlNmY4NjBmNzAzIDEwMDY0NA0KPiA+ ID4gLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGZfbGVnYWN5LmgNCj4gPiA+ICsrKyBiL3Rvb2xz L2xpYi9icGYvbGliYnBmX2xlZ2FjeS5oDQo+ID4gPiBAQCAtNDYsNiArNDYsMTUgQEAgZW51bSBs aWJicGZfc3RyaWN0X21vZGUgew0KPiA+ID4gICAgICAgICovDQo+ID4gPiAgICAgICBMSUJCUEZf U1RSSUNUX0RJUkVDVF9FUlJTID0gMHgwMiwNCj4gPg0KPiA+ID4gKyAgICAgLyoNCj4gPiA+ICsg ICAgICAqIEVuZm9yY2Ugc3RyaWN0IEJQRiBwcm9ncmFtIHNlY3Rpb24gKFNFQygpKSBuYW1lcy4N Cj4gPiA+ICsgICAgICAqIEUuZy4sIHdoaWxlIHByZWZpb3VzbHkgU0VDKCJ4ZHBfd2hhdGV2ZXIi KSBvciAgDQo+IFNFQygicGVyZl9ldmVudF9ibGFoIikNCj4gPiA+IHdlcmUNCj4gPiA+ICsgICAg ICAqIGFsbG93ZWQsIHdpdGggTElCQlBGX1NUUklDVF9TRUNfUFJFRklYIHRoaXMgd2lsbCBiZWNv bWUNCj4gPiA+ICsgICAgICAqIHVucmVjb2duaXplZCBieSBsaWJicGYgYW5kIHdvdWxkIGhhdmUg dG8gYmUganVzdCBTRUMoInhkcCIpICANCj4gYW5kDQo+ID4gPiArICAgICAgKiBTRUMoInhkcCIp IGFuZCBTRUMoInBlcmZfZXZlbnQiKS4NCj4gPiA+ICsgICAgICAqLw0KPiA+ID4gKyAgICAgTElC QlBGX1NUUklDVF9TRUNfTkFNRSA9IDB4MDQsDQo+ID4NCj4gPiBUbyBjbGFyaWZ5OiBJJ20gYXNz dW1pbmcsIGFzIGRpc2N1c3NlZCwgd2UnbGwgc3RpbGwgc3VwcG9ydCB0aGF0IG9sZCwNCj4gPiBu b24tY29uZm9ybWluZyBuYW1pbmcgaW4gbGliYnBmIDEuMCwgcmlnaHQ/IEl0IGp1c3Qgd29uJ3Qg YmUgZW5hYmxlZA0KPiA+IGJ5IGRlZmF1bHQuDQoNCj4gTm8sIHdlIHdvbid0LiBBbGwgdGhvc2Ug b3B0LWluIHN0cmljdCBmbGFncyB3aWxsIGJlIHR1cm5lZCBvbg0KPiBwZXJtYW5lbnRseSBpbiBs aWJicGYgMS4wLiBCdXQgSSdtIGFkZGluZyBhbiBhYmlsaXR5IHRvIHByb3ZpZGUgY3VzdG9tDQo+ IGNhbGxiYWNrcyB0byBoYW5kbGUgd2hhdGV2ZXIgKHJlYXNvbmFibGUpIEJQRiBwcm9ncmFtIHNl Y3Rpb24gbmFtZXMuDQo+IFNvIGlmIHNvbWVvbmUgaGFzIGEgcmVhbCBpbXBvcnRhbnQgY2FzZSBu ZWVkaW5nIGN1c3RvbSBoYW5kbGluZywgaXQncw0KPiBub3QgYSBiaWcgcHJvYmxlbSB0byBpbXBs ZW1lbnQgdGhhdCBsb2dpYyBvbiB0aGVpciBvd24uIElmIHNvbWVvbmUgaXMNCj4ganVzdCByZXNp c3RpbmcgbWFraW5nIHRoZWlyIGNvZGUgY29uZm9ybWluZywgd2VsbC4uLiBTdGF5IG9uIHRoZSBv bGQNCj4gZml4ZWQgdmVyc2lvbiwgd3JpdGUgYSBjYWxsYmFjaywgb3IganVzdCBkbyB0aGUgbWVj aGFuaWNhbCByZW5hbWUsIGhvdw0KPiBoYXJkIGNhbiB0aGF0IGJlPyBXZSBhcmUgZHJvcHBpbmcg YnBmX3Byb2dyYW1fX2ZpbmRfcHJvZ3JhbV9ieV90aXRsZSgpDQo+IGluIGxpYmJwZiAxLjAsIHRo YXQgQVBJIGlzIG1lYW5pbmdsZXNzIHdpdGggbXVsdGlwbGUgcHJvZ3JhbXMgcGVyDQo+IHNlY3Rp b24sIHNvIHlvdSdkIGhhdmUgdG8gdXBkYXRlIHlvdXIgbG9naWMgdG8gZWl0aGVyIHNrZWxldG9u IG9yDQo+IGJwZl9wcm9ncmFtX19maW5kX3Byb2dyYW1fYnlfbmFtZSgpIGFueXdheXMuDQoNCkkg c2VlLiBJIHdhcyBhc3N1bWluZyBzb21lIG9mIHRoZW0gd291bGQgc3RheSwgaWlyYyBUb2tlIGFs c28gd2FzIGFza2luZw0KZm9yIHRoaXMgb25lIHRvIHN0YXkgKG9yIHdhcyBpdCB0aGUgb2xkIG1h cHMgZm9ybWF0PykuIEZUUiwgSSdtIG5vdA0KcmVzaXN0aW5nIGFueSBjaGFuZ2VzLCBJJ20gd2ls bGluZyB0byBpbnZlc3Qgc29tZSB0aW1lIHRvIHVwZGF0ZSBvdXINCmNhbGxlcnMsIGp1c3QgdHJ5 aW5nIHRvIHVuZGVyc3RhbmQgd2hhdCBteSBvcHRpb25zIGFyZS4gV2UgZG8gaGF2ZSBzb21lDQpj YXNlcyB3aGVyZSB3ZSBkZXBlbmQgb24gdGhlIHNlY3Rpb24gbmFtZXMsIHNvIG1heWJlIEkgc2hv dWxkIGp1c3QNCnN3aXRjaCBmcm9tIGJwZl9wcm9ncmFtX190aXRsZSB0byBicGZfcHJvZ3JhbV9f bmFtZSAoYW5kIGRvIGFwcHJvcHJpYXRlDQpyZW5hbWluZykuDQoNClJFIHNrZWxldG9uOiBJJ20g bm90IHRvbyBlYWdlciB0byBhZG9wdCBpdCwgSSdsbCB3YWl0IGZvciB2ZXJzaW9uIDIgOi0pDQoN Cg0KPiA+DQo+ID4gQnR3LCBmb3Jnb3QgdG8gdXBkYXRlIHlvdSwgSSd2ZSBlbmFibGVkIExJQkJQ Rl9TVFJJQ1RfRElSRUNUX0VSUlMgYW5kDQo+ID4gTElCQlBGX1NUUklDVF9DTEVBTl9QVFJTIGFu ZCBldmVyeXRoaW5nIHNlZW1zIHRvIGJlIHdvcmtpbmcgZmluZSDwn6SeDQoNCj4gR3JlYXQhIFRo ZSBwcm9ibGVtIGlzIHRoYXQgeW91IHdvdWxkIHNlZSB0aGUgZGlmZmVyZW5jZSBvbmx5IHdoZW4N Cj4gYWN0dWFsIHJ1bnRpbWUgZmFpbHVyZSBoYXBwZW5zLiBTbyBJJ2Qgc3RpbGwgcmVjb21tZW5k IGF1ZGl0aW5nIHRoZQ0KPiBjb2RlLCBpZiBwb3NzaWJsZS4NCg==