From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id D61BA1FF163 for ; Thu, 24 Oct 2024 10:05:30 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 26ABB9AC1; Thu, 24 Oct 2024 10:06:10 +0200 (CEST) To: Proxmox VE development discussion , "DERUMIER, Alexandre" Date: Thu, 24 Oct 2024 07:59:13 +0000 References: <20240930113153.2896648-1-alexandre.derumier@groupe-cyllene.com> <1350338065.715.1729678366532@webmail.proxmox.com> <257159672.1161.1729752121142@webmail.proxmox.com> In-Reply-To: <257159672.1161.1729752121142@webmail.proxmox.com> MIME-Version: 1.0 Message-ID: List-Id: Proxmox VE development discussion List-Post: From: Giotta Simon RUAGH via pve-devel Precedence: list Cc: Giotta Simon RUAGH X-Mailman-Version: 2.1.29 X-BeenThere: pve-devel@lists.proxmox.com List-Subscribe: , List-Unsubscribe: , List-Archive: Reply-To: Proxmox VE development discussion List-Help: Subject: Re: [pve-devel] [PATCH v2 pve-storage 1/2] add external snasphot support Content-Type: multipart/mixed; boundary="===============0322210416932399988==" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" --===============0322210416932399988== Content-Type: message/rfc822 Content-Disposition: inline Return-Path: X-Original-To: pve-devel@lists.proxmox.com Delivered-To: pve-devel@lists.proxmox.com Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id D8670C810D for ; Thu, 24 Oct 2024 10:06:08 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B4C5B9A9F for ; Thu, 24 Oct 2024 10:05:38 +0200 (CEST) Received: from aspmailout02.mail.admin.ch (aspmailout02.mail.admin.ch [162.23.23.166]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Thu, 24 Oct 2024 10:05:36 +0200 (CEST) Received: from mailhost01.mail.admin.ch ([10.176.106.194]) by mx02.mail.admin.ch with ESMTPS id 49O7xGDv016963-49O7xGDx016963 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Thu, 24 Oct 2024 09:59:16 +0200 From: Giotta Simon RUAGH To: Proxmox VE development discussion , "DERUMIER, Alexandre" Subject: RE: [pve-devel] [PATCH v2 pve-storage 1/2] add external snasphot support Thread-Topic: [pve-devel] [PATCH v2 pve-storage 1/2] add external snasphot support Thread-Index: AQHbEyxnEBbC/N5EJ0aMvTGR9YZf57KUIFYAgAF5MOiAAA144A== Date: Thu, 24 Oct 2024 07:59:13 +0000 Message-ID: References: <20240930113153.2896648-1-alexandre.derumier@groupe-cyllene.com> <1350338065.715.1729678366532@webmail.proxmox.com> <257159672.1161.1729752121142@webmail.proxmox.com> In-Reply-To: <257159672.1161.1729752121142@webmail.proxmox.com> Accept-Language: de-CH, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: X-TM-AS-Product-Ver: SMEX-14.0.0.3197-9.1.2019-28750.005 X-TM-AS-Result: No-10--34.972800-8.000000 X-TMASE-MatchedRID: hFbMlnd2lLPEeENaa6f3iqfDm5zpCGQxnWETdS9lWtiDPlWYpnzHzmly WVf0ITs1mlHGse9OSD8fbGiTpwYY0BNpDC2WjCEMrGHD9hZQE32dFMmljtUApy+jW320XUWzAeC toqKpdvUErmOxqGRMqf+TbdcsqcjQSDdZvQfZyfEUye2E64eUYxElzmV6ujCEfI8zAerHIi9T0N vVr+Y5+FvvYMqFGufuq1OKGmdZqMGmKR7vpyEzpLfcD+VGZ6WsWZxYhPYYrMmVmuhG06IIbUEwl AH/PleeLqp1GoM8Gugf1/ipyhCJjS/X3qM4oPQxzmr8EUhT8EvEUE88Vnkllo5Jfe6mCTxtoVFY LwcIrHaWdT+bzRet+aoWJZsOjtK+VfOAk6jEwvPd1SnIz3dLX/O/ZVQIUEuEBzKI9/9a0O3losh KYmxDJStcaP0PeI+81r0VN3mQtdQwU1m4etoyr9p2LoixsYsjRYNhzuZZjRCbyUSNdkyqztVg3Q SKO3mzvZ3Hn2UfAERvgcq5wsgLwgBGX66U10kk1bOP2UkToXONTaHnGtld6vHPBvZEdN7kV6kMf eRPdGJphNTx+4+emUoElvYed/6gYuVNk9IEXoy5xHGnqIiyOc0QwjuSC84+3jDoEywIWbNK50dV aG6LaGhVmBqXGWxu8VGsZGLXUps+y/fGrz3tI/iI/A3FBxbP8RcXD+rQ7sFE64d0xcPXxQXTKcl gl795F7cDYWuOnw7067jADSs7W5horvw0o0Yz7usMM73Odc4ZD7bjq+6lMBn2DOqUMFsvItCMOA pWp2k3v9TD3vOHOFqvo64vKhuvmpfFLRguZqOMZtS40KQqqKlMDJeKqhNb+sMesHlgpMujURk1a 3/NtkN68qpJ8bQMv9rSd36EgULA931+mNd9sFPQ/IGe82Lt8jF0kHc8YvQ= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--34.972800-8.000000 X-TMASE-Version: SMEX-14.0.0.3197-9.1.2019-28750.005 X-TM-SNTS-SMTP: 5898EC09FCDC82D577E03CB661E01FEBE10F011EFFC7BE20268D325B939035062000:9 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-FEAS-Client-IP: 10.176.106.194 X-FE-Policy-ID: 1:4:3:SYSTEM DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; d=ruag.ch; s=dkimkey1; c=relaxed/relaxed; h=from:to:subject:date:message-id:references:content-type:mime-version; bh=7BwgdKcvd7pTW5mqiQbfFBiW/DpIRd7kbfMp/IVNhjk=; b=eOT6s52Sjmv9wemZ1GZuj+FxCuAnq1BshZkT/qFcmVbRyX7aBCNeUjXXVXoc3ZdaL+s84PvnUJqd s6yqq8aaUDGh25/8VXHv9ro8jwzaNxU9f3pakK636LVGrr7ejuvxZaScoW5hHfAPhKFVrs41qhtK DYsWktfsO+rXgF7m4Sg= X-SPAM-LEVEL: Spam detection results: 0 BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_PASS -0.1 DMARC pass policy RCVD_IN_DNSWL_LOW -0.7 Sender listed at https://www.dnswl.org/, low trust RCVD_IN_MSPIKE_H4 0.001 Very Good reputation (+4) RCVD_IN_MSPIKE_WL 0.001 Mailspike good senders SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record SGkgRXZlcnlvbmUNCg0KPiBJIG1lYW4sIGlmIHdlIGRvbid0IGFsbG93IC5yYXcgZmlsZXMgdG8g YmUgc25hcHNob3R0ZWQgdGhlbiB0aGlzIHByb2JsZW0gZG9lc24ndCBleGlzdCA7KQ0KDQpRdWlj ayBjb21tZW50IGZyb20gdGhlIGJsZWFjaGVyOyBBZGRpbmcgYSBtZWNoYW5pc20gdG8gc2hhcHNo b3QgcmF3IGRpc2tzIG1pZ2h0IHNvbHZlIHRoZSBUUE0gKHRwbXN0YXRlKSBzbmFwc2hvdHRpbmcg aXNzdWUsIGFzIHdlbGwgYXMgYWxsb3dpbmcgY29udGFpbmVycyB0byBiZSBzbmFwc2hvdC4NCg0K Rm9yIGNvbnRleHQ6IA0KV2hlbiB1c2luZyBhIHN0b3JhZ2UgdGhhdCBkb2VzIG5vdCBuYXRpdmVs eSBzdXBwb3J0IHNuYXBzaG90dGluZyAoTkZTIG9uIE5ldEFwcCBvciBzaW1pbGFyIGVudGVycHJp c2Ugc3RvcmFnZSwgaW4gcGFydGljdWxhciksIHJhdyBkaXNrcyBjYW5ub3QgYmUgc25hcHNob3Qu IA0KU2luY2UgdHBtc3RhdGUgZGlza3MgY2FuIG9ubHkgYmUgc3RvcmVkIGFzIHJhdyAoYXMgSSB1 bmRlcnN0YW5kIHRoZXkgYXJlIGp1c3QgYSBiaW5hcnkgYmxvYj8pLCB0aGlzIG1ha2VzIGl0IGlt cG9zc2libGUgdG8gc25hcHNob3Qgb3IgKGxpbmstKWNsb25lIGFueSBWTXMgdGhhdCBoYXZlIGEg VFBNLiBUaGlzIGVzcGVjaWFsbHkgaXMgYW4gaXNzdWUgZm9yIGN1cnJlbnQgV2luZG93cyBjbGll bnRzLg0KU2FtZSBpc3N1ZSBmb3IgTFhDIGNvbnRhaW5lcnMsIGFzIHRoZWlyIHN0b3JhZ2UgZm9y bWF0IGlzIHJhdyBvbmx5IGFzIHdlbGwuDQogDQpodHRwczovL2J1Z3ppbGxhLnByb3htb3guY29t L3Nob3dfYnVnLmNnaT9pZD00NjkzDQoNCkJlc3RlIEdyw7xzc2UNCg0KU2ltb24gR2lvdHRhDQpT eXN0ZW1hZG1pbmlzdHJhdG9yDQoNCnNpbW9uLmdpb3R0YUBydWFnLmNoIA0KDQpSVUFHIEFHDQpT Y2hhZmZoYXVzZXJzdHJhc3NlIDU4MCB8IDgwNTIgWsO8cmljaA0KDQotLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KRnJvbTogcHZlLWRldmVsIDxwdmUtZGV2ZWwtYm91bmNlc0BsaXN0cy5wcm94 bW94LmNvbT4gT24gQmVoYWxmIE9mIEZhYmlhbiBHcsO8bmJpY2hsZXINClNlbnQ6IERvbm5lcnN0 YWcsIDI0LiBPa3RvYmVyIDIwMjQgMDg6NDINClRvOiBERVJVTUlFUiwgQWxleGFuZHJlIDxhbGV4 YW5kcmUuZGVydW1pZXJAZ3JvdXBlLWN5bGxlbmUuY29tPjsgcHZlLWRldmVsQGxpc3RzLnByb3ht b3guY29tDQpTdWJqZWN0OiBSZTogW3B2ZS1kZXZlbF0gW1BBVENIIHYyIHB2ZS1zdG9yYWdlIDEv Ml0gYWRkIGV4dGVybmFsIHNuYXNwaG90IHN1cHBvcnQNCg0KDQo+IERFUlVNSUVSLCBBbGV4YW5k cmUgPGFsZXhhbmRyZS5kZXJ1bWllckBncm91cGUtY3lsbGVuZS5jb20+IGhhdCBhbSAyMy4xMC4y MDI0IDE0OjU5IENFU1QgZ2VzY2hyaWViZW46DQo+IA0KPiAgDQo+IEhpIEZhYmlhbiwNCj4gDQo+ IHRoYW5rcyBmb3IgdGhlIHJldmlldyAhDQo+IA0KPiA+Pi0tLS0tLS0tIE1lc3NhZ2UgaW5pdGlh bCAtLS0tLS0tLQ0KPiA+PkRlOiBGYWJpYW4gR3LDvG5iaWNobGVyIDxmLmdydWVuYmljaGxlckBw cm94bW94LmNvbT4NCj4gPj7DgDogUHJveG1veCBWRSBkZXZlbG9wbWVudCBkaXNjdXNzaW9uIDxw dmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20+DQo+ID4+Q2M6IEFsZXhhbmRyZSBEZXJ1bWllciA8 YWxleGFuZHJlLmRlcnVtaWVyQGdyb3VwZS1jeWxsZW5lLmNvbT4NCj4gPj5PYmpldDogUmU6IFtw dmUtZGV2ZWxdIFtQQVRDSCB2MiBwdmUtc3RvcmFnZSAxLzJdIGFkZCBleHRlcm5hbCANCj4gPj5z bmFzcGhvdCBzdXBwb3J0DQo+ID4+RGF0ZTogMjMvMTAvMjAyNCAxMjoxMjo0Ng0KPiA+Pg0KPiA+ PnNvbWUgaGlnaCBsZXZlbCBjb21tZW50czoNCj4gPj4NCj4gPj5JIGFtIG5vdCBzdXJlIGhvdyBt dWNoIHdlIGdhaW4gaGVyZSB3aXRoIHRoZSByYXcgc3VwcG9ydD8NCj4gDQo+IFRoZXkgYXJlIHJl YWxseSBxY293MiBvdmVyaGVhZCwgbW9zdGx5IHdpdGggYmlnIGRpc2suDQo+IGFzIGZvciBnb29k IHBlcmZvcm1hbmNlLCB0aGUgcWNvdzIgbDItY2FjaGUtc2l6ZSBuZWVkIHRvIGJlIGtlZXBlZCBp biANCj4gbWVtb3J5IChhbmQgaXQncyAxTUIgYnkgZGlzaykgDQo+IGh0dHBzOi8vZXZlbnRzLnN0 YXRpYy5saW51eGZvdW5kLm9yZy9zaXRlcy9ldmVudHMvZmlsZXMvc2xpZGVzL2t2bS1mb3INCj4g dW0tMjAxNy1zbGlkZXMucGRmDQo+IA0KPiBIb3BlZnVsbHksIHRoZXkgYXJlIGltcHJvdm1lbnRz IHdpdGggdGhlICJuZXciIHN1Yi1jbHVzdGVyIGZlYXR1cmUgDQo+IGh0dHBzOi8vcGVvcGxlLmln YWxpYS5jb20vYmVydG8vZmlsZXMva3ZtLWZvcnVtLTIwMjAtc2xpZGVzLnBkZg0KPiBJJ20gYWxy ZWFkeSB1c2luZyBpdCBhdCBzbmFwc2hvdCBjcmVhdGUsIGJ1dCBJIHRoaW5rIHdlIHNob3VsZCBh bHNvIA0KPiB1c2UgaXQgZm9yIG1haW4gcWNvdzIgdm9sdW1lLg0KPiANCj4gDQo+IEJ1dCBldmVu IHdpdGggdGhhdCwgeW91IGNhbiBzdGlsbCBoYXZlIHBlcmZvcm1hbmNlIGltcGFjdC4NCj4gU28g eWVzLCBJIHRoaW5rIHRoZXkgYXJlIHJlYWxseSB1c2VjYXNlIGZvciB3b3JrbG9hZCB3aGVuIHlv dSBvbmx5IA0KPiBuZWVkIHNuYXBzaG90IHRpbWUgdG8gdGltZSAoYmVmb3JlIGFuIHVwZ3JhZGUg Zm9yIGV4YW1wbGUpLCBidXQgbWF4IA0KPiBwZXJmb3JtYW5jZSB3aXRoIG5vIHNuYXBob3QgZXhp c3QuDQoNCm15IG1haW4gcG9pbnQgaGVyZSBpcyAtIGFsbCBvdGhlciBzdG9yYWdlcyB0cmVhdCBz bmFwc2hvdHMgYXMgImNoZWFwIi4gaWYgeW91IGNvbWJpbmUgcmF3K3Fjb3cyIHNuYXBzaG90IG92 ZXJsYXlzLCBzdWRkZW5seSBwZXJmb3JtYW5jZSB3aWxsIGdldCB3b3JzZSBpZiB5b3Uga2VlcCBh IHNuYXBzaG90IGFyb3VuZCBmb3Igd2hhdGV2ZXIgcmVhc29uLi4gDQogDQo+ID4+IGl0J3MgYSBi aXQgY29uZnVzaW5nIHRvIGhhdmUgYSB2b2xpZCBlbmRpbmcgd2l0aCByYXcsIHdpdGggdGhlIA0K PiA+PmN1cnJlbnQgdm9sdW1lIGFuZCBhbGwgYnV0IHRoZSBmaXJzdCBzbmFwc2hvdCBhY3R1YWxs eSBiZWluZyBzdG9yZWQgDQo+ID4+aW4gcWNvdzIgZmlsZXMsIHdpdGggdGhlIHJhdyBmaWxlIGJl aW5nIHRoZSAib2xkZXN0IiBzbmFwc2hvdCBpbiB0aGUgDQo+ID4+Y2hhaW4uLg0KDQo+IGlmIGl0 J3MgdG9vIGNvbmZ1c2luZywgd2UgY291bGQgdXNlIGZvciBleGFtcGxlIGFuIC5zbmFwIGV4dGVu c2lvbi4NCj4gKGFzIHdlIGtub3duIHRoYXQgaXQncyBxY293MiBiZWhpbmQpDQoNCkkgaGF2ZW4n dCB0aG91Z2h0IHlldCBhYm91dCBob3cgdG8gZW5jb2RlIHRoZSBzbmFwc2hvdCBuYW1lIGludG8g dGhlIHNuYXBzaG90IGZpbGUgbmFtZSwgYnV0IHllYWgsIG1heWJlIHNvbWV0aGluZyBsaWtlICB0 aGF0IHdvdWxkIGJlIGdvb2QuIG9yIG1heWJlIHNuYXAtVk1JRC1kaXNrLURJU0sucWNvdzIgPw0K DQo+IGlmIHBvc3NpYmxlLCBJJ2QgYmUgbXVjaCBoYXBwaWVyIHdpdGggdGhlIHNuYXBzaG90IG5h bWUgaW4gdGhlIA0KPiBzbmFwc2hvdCBmaWxlIGJlaW5nIGEgMToxIG1hdGNoLCBzZWUgY29tbWVu dHMgaW5saW5lDQo+IA0KPiA+Pi0gbWFrZXMgaXQgYSBsb3QgZWFzaWVyIHRvIHVuZGVyc3RhbmQg KGFkbWluIHdhbnRzIHRvIG1hbnVhbGx5IA0KPiA+PnJlbW92ZSBzbmFwc2hvdCAiZm9vIiwgaWYg ImZvbyIgd2FzIHRoZSBsYXN0IHNuYXBzaG90IHRoZW4gcmlnaHQgbm93IA0KPiA+PnRoZSB2b2x1 bWUgY2FsbGVkICJmb28iIGlzIGFjdHVhbGx5IHRoZSBjdXJyZW50IGNvbnRlbnRzISkNCj4gDQo+ IFRoaXMgcGFydCBpcyByZWFsbHkgZGlmZmljdWx0LCBiZWNhdXNlIHlvdSBjYW4ndCBrbm93biBp biBhZHZhbmNlIHRoZSANCj4gbmFtZSBvZiB0aGUgc25hcHNob3QgeW91J2xsIHRha2UgaW4gdGhl IGZ1dHVyZS4gVGhlIG9ubHkgd2F5IGNvdWxkIGJlIA0KPiB0byBjcmVhdGUgYSAiY3VycmVudCIg dm9sdW1lICwgIHJlbmFtZSBpdCB3aGVuIHlvdSB0b29rIGFub3RoZXIgDQo+IHNuYXNwaG90IChJ J20gbm90IHN1cmUgaXQncyBwb3NzaWJsZSB0byBkbyBpdCBsaXZlLCBhbmQgdGhpcyBjb3VsZCAN Cj4gYnJlYWsgbGluayBjaGFpbiB0b28pDQo+IA0KPiBBbHNvLCBJIGRvbid0IGtub3duIGhvdyB0 byBtYW5hZ2UgdGhlIG1haW4gdm9sdW1lLCB3aGVuIHlvdSB0YWtlIHRoZSANCj4gZmlyc3Qgc25h cHNob3QgPyB3ZSBzaG91bGQgcmVuYW1lIGl0IHRvby4NCg0KSSBtZWFuLCBpZiB3ZSBkb24ndCBh bGxvdyAucmF3IGZpbGVzIHRvIGJlIHNuYXBzaG90dGVkIHRoZW4gdGhpcyBwcm9ibGVtIGRvZXNu J3QgZXhpc3QgOykNCg0KPiBzbyAidm0tZGlzay0xMDAtZGlzay0wLnJhd3xxY293MiIgICwgYmVj b21lICJ2bS1kaXNrLTEwMC1kaXNrLTAtIA0KPiBzbmFwMS4ocmF3fHFjb3cyKSIgKyBuZXcgInZt LWRpc2stMTAwLWRpc2stMC1jdXJyZW50LnFjb3cyIiA/DQoNCnRoZSB2b2xpZCBjaGFuZ2luZyBv biBzbmFwc2hvdCBzZWVtcyBsaWtlIGl0IHdvdWxkIHJlcXVpcmUgYSBsb3Qgb2YgYWRhcHRpb24u LiBPVE9ILCB0aGUgdm9saWQgY29udGFpbmluZyBhIHdyb25nIGZvcm1hdCBtaWdodCBhbHNvIGJy ZWFrIHRoaW5ncy4NCg0KPiBJJ2xsIHRyeSB0byBkbyB0ZXN0IGFnYWluIHRvIHNlZSB3aGF0IGlz IHBvc3NpYmxlLg0KPiANCj4gDQo+IA0KPiANCj4gPj4tIG1lYW5zIHdlIGRvbid0IGhhdmUgdG8g ZG8gbG9va3VwcyB2aWEgdGhlIGZ1bGwgc25hcHNob3QgbGlzdCBhbGwgDQo+ID4+dGhlIHRpbWUg KGUuZy4sIGlmIEkgd2FudCB0byBkbyBhIGZ1bGwgY2xvbmUgZnJvbSBhIHNuYXBzaG90ICJmb28i LCANCj4gPj5JIGNhbiBqdXN0IHBhc3MgdGhlIHNuYXAtZm9vIHZvbHVtZSB0byBxZW11LWltZykN Cj4gDQo+IG9rIGdvdCBpdA0KPiANCj4gDQo+IA0KPiA+PnRoZSBuYW1pbmcgc2NoZW1lIGZvciBz bmFwc2hvdHMgbmVlZHMgdG8gYmUgYWRhcHRlZCB0byBub3QgY2xhc2ggDQo+ID4+d2l0aCByZWd1 bGFyIHZvbHVtZXM6DQo+IA0KPiA+PiQgcHZlc20gYWxsb2MgZXh0c25hcCAxMzEzMTQgdm0tMTMx MzE0LWRpc2stZm9vYmFyLnFjb3cyIDJHIA0KPiA+PkZvcm1hdHRpbmcgJy9tbnQvcHZlL2V4dDQv ZXh0c25hcC9pbWFnZXMvMTMxMzE0L3ZtLTEzMTMxNC1kaXNrLQ0KPiA+PmZvb2Jhci5xY293Mics IGZtdD1xY293MiBjbHVzdGVyX3NpemU9NjU1MzYgZXh0ZW5kZWRfbDI9b2ZmIA0KPiA+PnByZWFs bG9jYXRpb249b2ZmIGNvbXByZXNzaW9uX3R5cGU9emxpYiBzaXplPTIxNDc0ODM2NDggDQo+ID4+ bGF6eV9yZWZjb3VudHM9b2ZmIHJlZmNvdW50X2JpdHM9MTYgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQg DQo+ID4+J2V4dHNuYXA6MTMxMzE0L3ZtLTEzMTMxNC1kaXNrLWZvb2Jhci5xY293MicNCj4gPj4k IHFtIHJlc2NhbiAtLXZtaWQgMTMxMzE0DQo+ID4+cmVzY2FuIHZvbHVtZXMuLi4NCj4gPj5jYW4n dCBwYXJzZSBzbmFwbmFtZSBmcm9tIHBhdGggYXQNCj4gPj4vdXNyL3NoYXJlL3Blcmw1L1BWRS9T dG9yYWdlL1BsdWdpbi5wbSBsaW5lIDE5MzQuDQo+IA0KPiBhbnkgcHJlZmVyZW5jZSBmb3IgbmFt aW5nIHNjaGVtZSA/IGZvciBsdm0gZXh0ZXJuYWwgc25hcCwgSSBoYXZlIHVzZWQgDQo+ICJ2bS0x MzEzMTQtZGlzay0wLXNuYXAtPGZvb2Jhcj4iOw0KDQpzZWUgYWJvdmUNCg0KPiA+PnN0b3JhZ2Vf bWlncmF0ZSBuZWVkcyB0byBoYW5kbGUgZXh0ZXJuYWwgc25hcHNob3RzLCBvciBhdCBsZWFzdCAN Cj4gPj5lcnJvciBvdXQuDQo+IGl0IHNob3VsZCBhbHJlYWR5IHdvcmsuIChJIGhhdmUgdGVzdGVk IG1vdmVfZGlzaywgYW5kIGxpdmUgbWlncmF0aW9uICsgDQo+IHN0b3JhZ2UgbWlncmF0aW9uKS4g cWVtdV9pbWdfY29udmVydCBvZmZsaW5lIGFuZCBxZW11IGJsb2NrIGpvYiBmb3IgDQo+IGxpdmUu DQoNCmJ1dCBkb24ndCBhbGwgb2YgdGhvc2UgbG9zZSB0aGUgc25hcHNob3RzPyBkaWQgeW91IHRl c3QgaXQgd2l0aCBzbmFwc2hvdHMgYW5kIHJvbGxiYWNrIGFmdGVyd2FyZHM/DQoNCj4gPj5JIGhh dmVuJ3QgdGVzdGVkIHRoYXQgcGFydCBvciBsaW5rZWQgY2xvbmVzIG9yIGEgbG90IG9mIG90aGVy IA0KPiA+PmFkdmFuY2VkIHJlbGF0ZWQgYWN0aW9ucyBhdCBhbGwgOykNCj4gDQo+IEZvciBsaW5r ZWQgY2xvbmUsIHdlIGNhbid0IGhhdmUgYSBiYXNlIGltYWdlIHdpdGggc25hcHNob3RzIChvdGhl ciANCj4gdGhhbiBfYmFzZV8pLiBzbyBJdCdsbCBiZSBzYWZlLg0KDQphY2sNCg0KPiA+IEFsZXhh bmRyZSBEZXJ1bWllciB2aWEgcHZlLWRldmVsIDxwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20+ IGhhdCANCj4gPiBhbQ0KPiA+IDMwLjA5LjIwMjQgMTM6MzEgQ0VTVCBnZXNjaHJpZWJlbjoNCj4g PiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgRGVydW1pZXIgPGFsZXhhbmRyZS5kZXJ1bWllckBn cm91cGUtIA0KPiA+IGN5bGxlbmUuY29tPg0KPiA+IC0tLQ0KPiA+IMKgc3JjL1BWRS9TdG9yYWdl L0RpclBsdWdpbi5wbSB8wqDCoCAxICsNCj4gPiDCoHNyYy9QVkUvU3RvcmFnZS9QbHVnaW4ucG3C oMKgwqAgfCAyMjUgDQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tDQo+ID4g LS0NCj4gPiDCoDIgZmlsZXMgY2hhbmdlZCwgMjAxIGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9u cygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9zcmMvUFZFL1N0b3JhZ2UvRGlyUGx1Z2luLnBt IA0KPiA+IGIvc3JjL1BWRS9TdG9yYWdlL0RpclBsdWdpbi5wbSBpbmRleCAyZWZhOGQ1Li4yYmVm NjczIDEwMDY0NA0KPiA+IC0tLSBhL3NyYy9QVkUvU3RvcmFnZS9EaXJQbHVnaW4ucG0NCj4gPiAr KysgYi9zcmMvUFZFL1N0b3JhZ2UvRGlyUGx1Z2luLnBtDQo+ID4gQEAgLTgwLDYgKzgwLDcgQEAg c3ViIG9wdGlvbnMgew0KPiA+IMKgIGlzX21vdW50cG9pbnQgPT4geyBvcHRpb25hbCA9PiAxIH0s DQo+ID4gwqAgYndsaW1pdCA9PiB7IG9wdGlvbmFsID0+IDEgfSwNCj4gPiDCoCBwcmVhbGxvY2F0 aW9uID0+IHsgb3B0aW9uYWwgPT4gMSB9LA0KPiA+ICsgc25hcGV4dCA9PiB7IG9wdGlvbmFsID0+ IDEgfSwNCj4gPiDCoMKgwqAgfTsNCj4gPiDCoH0NCj4gPiDCoA0KPiA+IGRpZmYgLS1naXQgYS9z cmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtIGIvc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbSANCj4g PiBpbmRleCA2NDQ0MzkwLi41ZTUxOTdhIDEwMDY0NA0KPiA+IC0tLSBhL3NyYy9QVkUvU3RvcmFn ZS9QbHVnaW4ucG0NCj4gPiArKysgYi9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtDQo+ID4gQEAg LTIxNCw2ICsyMTQsMTEgQEAgbXkgJGRlZmF1bHREYXRhID0gew0KPiA+IMKgIMKgwqDCoCBtYXhp bXVtID0+IDY1NTM1LA0KPiA+IMKgIMKgwqDCoCBvcHRpb25hbCA9PiAxLA0KPiA+IMKgIH0sDQo+ ID4gK8KgwqDCoMKgwqDCoMKgICdzbmFwZXh0JyA9PiB7DQo+ID4gKyDCoMKgwqAgdHlwZSA9PiAn Ym9vbGVhbicsDQo+ID4gKyDCoMKgwqAgZGVzY3JpcHRpb24gPT4gJ2VuYWJsZSBleHRlcm5hbCBz bmFwc2hvdC4nLA0KPiA+ICsgwqDCoMKgIG9wdGlvbmFsID0+IDEsDQo+ID4gK8KgwqDCoMKgwqDC oMKgIH0sDQo+ID4gwqDCoMKgwqAgfSwNCj4gPiDCoH07DQo+ID4gwqANCj4gPiBAQCAtNjk1LDcg KzcwMCw3IEBAIHN1YiBnZXRfc3ViZGlyIHsNCj4gPiDCoH0NCj4gPiDCoA0KPiA+IMKgc3ViIGZp bGVzeXN0ZW1fcGF0aCB7DQo+ID4gLcKgwqDCoCBteSAoJGNsYXNzLCAkc2NmZywgJHZvbG5hbWUs ICRzbmFwbmFtZSkgPSBAXzsNCj4gPiArwqDCoMKgIG15ICgkY2xhc3MsICRzY2ZnLCAkdm9sbmFt ZSwgJHNuYXBuYW1lLCAkY3VycmVudF9zbmFwKSA9IEBfOw0KPiANCj4gc2VlIGNvbW1lbnQgYmVs b3cNCj4gDQo+ID4gwqANCj4gPiDCoMKgwqDCoCBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsIHVu ZGVmLCB1bmRlZiwgJGlzQmFzZSwgJGZvcm1hdCkgPQ0KPiA+IMKgICRjbGFzcy0+cGFyc2Vfdm9s bmFtZSgkdm9sbmFtZSk7DQo+ID4gQEAgLTcwMyw3ICs3MDgsNyBAQCBzdWIgZmlsZXN5c3RlbV9w YXRoIHsNCj4gPiDCoMKgwqDCoCAjIE5vdGU6IHFjb3cyL3FlZCBoYXMgaW50ZXJuYWwgc25hcHNo b3QsIHNvIHBhdGggaXMgYWx3YXlzDQo+ID4gwqDCoMKgwqAgIyB0aGUgc2FtZSAod2l0aCBvciB3 aXRob3V0IHNuYXBzaG90ID0+IHNhbWUgZmlsZSkuDQo+ID4gwqDCoMKgwqAgZGllICJjYW4ndCBz bmFwc2hvdCB0aGlzIGltYWdlIGZvcm1hdFxuIg0KPiA+IC0gaWYgZGVmaW5lZCgkc25hcG5hbWUp ICYmICRmb3JtYXQgIX4gbS9eKHFjb3cyfHFlZCkkLzsNCj4gPiArIGlmIGRlZmluZWQoJHNuYXBu YW1lKSAmJiAhJHNjZmctPntzbmFwZXh0fSAmJiAkZm9ybWF0ICF+DQo+ID4gbS9eKHFjb3cyfHFl ZCkkLzsNCj4gPiDCoA0KPiA+IMKgwqDCoMKgIG15ICRkaXIgPSAkY2xhc3MtPmdldF9zdWJkaXIo JHNjZmcsICR2dHlwZSk7DQo+ID4gwqANCj4gPiBAQCAtNzExLDEzICs3MTYsMjIgQEAgc3ViIGZp bGVzeXN0ZW1fcGF0aCB7DQo+ID4gwqANCj4gPiDCoMKgwqDCoCBteSAkcGF0aCA9ICIkZGlyLyRu YW1lIjsNCj4gPiDCoA0KPiA+ICvCoMKgwqAgaWYoJHNjZmctPntzbmFwZXh0fSkgew0KPiA+ICsg bXkgJHNuYXBwYXRoID0gZ2V0X3NuYXBfcGF0aCgkcGF0aCwgJHNuYXBuYW1lKTsNCj4gPiArIGlm KCRzbmFwbmFtZSkgew0KPiA+ICsgwqDCoMKgICRwYXRoID0gJHNuYXBwYXRoOw0KPiA+ICsgfSBl bHNpZiAoJGN1cnJlbnRfc25hcCkgew0KPiA+ICsgwqDCoMKgICRwYXRoID0gJGN1cnJlbnRfc25h cC0+e2ZpbGV9OyAgfQ0KPiA+ICvCoMKgwqAgfQ0KPiANCj4gc2VlIGNvbW1lbnRlIGJlbG93DQo+ IA0KPiA+IMKgwqDCoMKgIHJldHVybiB3YW50YXJyYXkgPyAoJHBhdGgsICR2bWlkLCAkdnR5cGUp IDogJHBhdGg7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiDCoHN1YiBwYXRoIHsNCj4gPiDCoMKgwqDC oCBteSAoJGNsYXNzLCAkc2NmZywgJHZvbG5hbWUsICRzdG9yZWlkLCAkc25hcG5hbWUpID0gQF87 DQo+ID4gwqANCj4gPiAtwqDCoMKgIHJldHVybiAkY2xhc3MtPmZpbGVzeXN0ZW1fcGF0aCgkc2Nm ZywgJHZvbG5hbWUsICRzbmFwbmFtZSk7DQo+ID4gK8KgwqDCoCBteSAkY3VycmVudF9zbmFwc2hv dCA9ICRjbGFzcy0+Z2V0X2N1cnJlbnRfc25hcHNob3QoJHNjZmcsDQo+ID4gJHN0b3JlaWQsICR2 b2xuYW1lKTsNCj4gDQo+ID4+dGhpcyBpcyBwcmV0dHkgZXhwZW5zaXZlLCBhbmQgd291bGQgb25s eSBiZSBuZWVkZWQgaWYgJHNuYXBuYW1lIGlzIA0KPiA+Pm5vdCBzZXQuLg0KPiANCj4gVGhlIG1h aW4gcHJvYmxlbSBpcyB3aGVuIHlvdSBzdGFydCBhIHZtIG9uIGEgc3BlY2lmaWMgc25hc3Bob3Qs IHdlIA0KPiBkb24ndCBzZW5kIHRoZSAkc25hcG5hbWUgcGFyYW0uDQo+IA0KPiBPbmUgd2F5IGNv dWxkIGJlIHRoYXQgcWVtdS1zZXJ2ZXIgY2hlY2sgdGhlIGN1cnJlbnQgc25hcHNob3QgZnJvbSAN Cj4gY29uZmlnIHdoZW4gZG9pbmcgc3BlY2lmaWMgYWN0aW9uIGxpa2Ugc3RhcnQuDQoNCmlmIHdl IG1hbmFnZSB0byBmaW5kIGEgd2F5IHRvIG1ha2UgdGhlIHZvbGlkIGFsd2F5cyBwb2ludCBhdCB0 aGUgdG9wIG92ZXJsYXksIHRoZW4gdGhhdCB3b3VsZG4ndCBiZSBuZWVkZWQuLg0KDQo+ID4gK8Kg wqDCoCByZXR1cm4gJGNsYXNzLT5maWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lLCAkc25h cG5hbWUsDQo+ID4gJGN1cnJlbnRfc25hcHNob3QpOw0KPiANCj4gPj5jb3VsZG4ndCB3ZSBhdm9p ZCBleHRlbmRpbmcgdGhlIHNpZ25hdHVyZSBvZiBmaWxlc3lzdGVtX3BhdGggYW5kIA0KPiA+Pmp1 c3QNCj4gcGFzcyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBzbmFwc2hvdCBhcyAkc25hcG5hbWU/ DQo+IA0KPiBJIG5lZWQgdG8gcmVkbyB0ZXN0LCBJIGRvbid0IHJlbWVtYmVyIHdoeSBJIGhhdmUg c3BsaXR0ZWQgdGhlbSwgYnV0IA0KPiB5b3UgYXJlIHJpZ2h0LCBpdCBzaG91bGQgYmUgY2xlYW5l ci4NCj4gDQo+ID4gwqB9DQo+ID4gwqANCj4gPiDCoHN1YiBjcmVhdGVfYmFzZSB7DQo+ID4gQEAg LTEwNzQsMTMgKzEwODgsMzEgQEAgc3ViIHZvbHVtZV9yZXNpemUgew0KPiA+IMKgc3ViIHZvbHVt ZV9zbmFwc2hvdCB7DQo+ID4gwqDCoMKgwqAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAk dm9sbmFtZSwgJHNuYXApID0gQF87DQo+ID4gwqANCj4gPiAtwqDCoMKgIGRpZSAiY2FuJ3Qgc25h cHNob3QgdGhpcyBpbWFnZSBmb3JtYXRcbiIgaWYgJHZvbG5hbWUgIX4gDQo+ID4gbS9cLihxY293 MnxxZWQpJC87DQo+ID4gK8KgwqDCoCBkaWUgImNhbid0IHNuYXBzaG90IHRoaXMgaW1hZ2UgZm9y bWF0XG4iIGlmICR2b2xuYW1lICF+DQo+ID4gbS9cLihyYXd8cWNvdzJ8cWVkKSQvOw0KPiA+IMKg DQo+ID4gLcKgwqDCoCBteSAkcGF0aCA9ICRjbGFzcy0+ZmlsZXN5c3RlbV9wYXRoKCRzY2ZnLCAk dm9sbmFtZSk7DQo+ID4gK8KgwqDCoCBkaWUgImV4dGVybmFsIHNuYXBzaG90IG5lZWQgdG8gYmUg ZW5hYmxlZCB0byBzbmFwc2hvdCAucmF3DQo+ID4gdm9sdW1lc1xuIiBpZiAhJHNjZmctPntzbmFw ZXh0fTsNCj4gDQo+ID4+dGhpcyBjb25kaXRpb24gaXMgZGVmaW5pdGVseSB3cm9uZyAtIGl0IG1l YW5zIG5vIG1vcmUgc25hcHNob3R0aW5nIA0KPiA+PnVubGVzcyBleHRlcm5hbCBzbmFwc2hvdCBz dXBwb3J0IGlzIGVuYWJsZWQuLg0KPiANCj4gb29wcywgc29ycnkuDQo+IA0KPiA+IMKgDQo+ID4g LcKgwqDCoCBteSAkY21kID0gWycvdXNyL2Jpbi9xZW11LWltZycsICdzbmFwc2hvdCcsJy1jJywg JHNuYXAsICRwYXRoXTsNCj4gPiArwqDCoMKgIGlmKCRzY2ZnLT57c25hcGV4dH0pIHsNCj4gPiDC oA0KPiA+IC3CoMKgwqAgcnVuX2NvbW1hbmQoJGNtZCk7DQo+ID4gKyBteSAkcGF0aCA9ICRjbGFz cy0+cGF0aCgkc2NmZywgJHZvbG5hbWUsICRzdG9yZWlkKTsNCj4gPiArDQo+ID4gKyBteSAkc25h cHBhdGggPSBnZXRfc25hcF9wYXRoKCRwYXRoLCAkc25hcCk7IG15ICRmb3JtYXQgPSANCj4gPiAr ICgkY2xhc3MtPnBhcnNlX3ZvbG5hbWUoJHZvbG5hbWUpKVs2XTsNCj4gPiArDQo+ID4gKyBteSAk Y21kID0gWycvdXNyL2Jpbi9xZW11LWltZycsICdjcmVhdGUnLCAnLWInLCAkcGF0aCwNCj4gPiAr IMKgwqAgJy1GJywgJGZvcm1hdCwgJy1mJywgJ3Fjb3cyJywgJHNuYXBwYXRoXTsNCj4gDQo+ID4+ c2VlIGNvbW1lbnRzIG9uIHFlbXUtc2VydmVyLCBidXQuLiB3b3VsZG4ndCBpdCBiZSBiZXR0ZXIg aWYgdGhlIGZpbGUgDQo+ID4+d2l0aCAkc25hcCBpbiBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgb25l IHN0b3JpbmcgdGhhdCBzbmFwc2hvdCdzIGRhdGE/DQo+ID4+aS5lLiwgcmVuYW1lIHRoZSAiY3Vy cmVudCIgdm9sdW1lIHRvIGJlIGNhbGxlZCAuLi4tJHNuYXAuLi4gLCBhbmQgDQo+ID4+dGhlbiBj cmVhdGUgYSBuZXcgImN1cnJlbnQiIGZpbGUgd2l0aG91dCBhIHN1ZmZpeCB3aXRoIHRoZSByZW5h bWVkIA0KPiA+PnZvbHVtZSBhcyBiYWNraW5nIGZpbGU/DQo+IA0KPiBJJ2xsIHRyeSBpdCAhDQo+ IA0KPiA+ICsNCj4gPiArIG15ICRvcHRpb25zID0gImV4dGVuZGVkX2wyPW9uLCI7DQo+ID4gKyAk b3B0aW9ucyAuPSBwcmVhbGxvY2F0aW9uX2NtZF9vcHRpb24oJHNjZmcsICdxY293MicpOyBwdXNo IEAkY21kLCANCj4gPiArICctbycsICRvcHRpb25zOyBydW5fY29tbWFuZCgkY21kKTsNCj4gPiAr DQo+ID4gK8KgwqDCoCB9IGVsc2Ugew0KPiA+ICsNCj4gPiArIG15ICRwYXRoID0gJGNsYXNzLT5m aWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lKTsgIG15ICRjbWQgPSANCj4gPiArWycvdXNy L2Jpbi9xZW11LWltZycsICdzbmFwc2hvdCcsJy1jJywgJHNuYXAsICRwYXRoXTsgIA0KPiA+ICty dW5fY29tbWFuZCgkY21kKTsNCj4gPiArwqDCoMKgIH0NCj4gPiDCoA0KPiA+IMKgwqDCoMKgIHJl dHVybiB1bmRlZjsNCj4gPiDCoH0NCj4gPiBAQCAtMTA5MSwxOSArMTEyMywzOSBAQCBzdWIgdm9s dW1lX3NuYXBzaG90IHsNCj4gPiDCoHN1YiB2b2x1bWVfcm9sbGJhY2tfaXNfcG9zc2libGUgew0K PiA+IMKgwqDCoMKgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFw LCAkYmxvY2tlcnMpID0gQF87DQo+ID4gwqANCj4gPiArwqDCoMKgIGlmICgkc2NmZy0+e3NuYXBl eHR9KSB7DQo+ID4gKyAjdGVjaG5pY2FsbHksIHdlIGNvdWxkIG1hbmFnZSBtdWx0aWJyYW5jaCwg d2UgaXQgbmVlZCBsb3QgbW9yZSANCj4gPiArd29yaw0KPiA+IGZvciBzbmFwc2hvdCBkZWxldGUN Cj4gDQo+ID4+d291bGQgbXVsdGlicmFuY2ggYmUgZWFzaWVyIGlmIHRoZXJlIGlzIGEgc2ltcGxl IDE6MSBjb3JyZXNwb25kZW5jZSANCj4gPj5iZXR3ZWVuIHNuYXBzaG90cyBhbmQgdGhlaXIgZmls ZW5hbWVzPw0KPiA+Pg0KPiA+PnN3aXRjaGluZyB0byBhIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSAi aGllcmFyY2h5IiBpcyB0aGVuIGp1c3QNCj4gPj4tIGRlbGV0ZSBjdXJyZW50IHZvbHVtZQ0KPiA+ Pi0gY3JlYXRlIG5ldyBjdXJyZW50IHZvbHVtZSB1c2luZyByb2xsYmFjayB0YXJnZXQgYXMgYmFj a2luZyBmaWxlDQo+IHRoZSByb2xsYmFjay9icmFuY2ggc3dpdGNoIGlzIG5vdCB0b28gZGlmZmlj dWx0LCBtYXliZSAxOjEgbmFtaW5nIA0KPiBjb3VsZCBoZWxwLg0KPiANCj4gPj5JIGd1ZXNzIGRl bGV0aW9uIGRvZXMgYmVjb21lIGhhcmRlciB0aGVuLCBzaW5jZSBpdCBwb3RlbnRpYWxseSANCj4g Pj5yZXF1aXJlcyBtdWx0aXBsZSByZWJhc2VzLi4NCj4gDQo+IHllcywgVGhlIGJpZ2dlc3QgZGlm ZmljdWx0eSBpcyBzbmFwc2hvdCBkZWxldGUsIGFzIHlvdSBuZWVkIHRvIGNyZWF0ZSANCj4gYSBi bG9jay1zdHJlYW0gIGpvYiwgbWVyZ2luL3dyaXRpbmcgdG8gZWFjaCBicmFuY2ggY2hpbGQsIGFu ZCB5b3UgbmVlZCANCj4gdG8gZG8gaXQgYXRvbWljYWxseSB3aXRoIGEgdHJhbnNhY3Rpb24gd2l0 aCBtdWx0aXBsZSBqb2JzLg0KPiBTbyB5ZXMsIGl0J3MgcG9zc2libGUsIGJ1dCBJIHdhbnRlZCB0 byBrZWVwIGl0IGVhc3kgZm9yIG5vdy4NCg0Kc3VyZSwgdGhpcyByZXN0cmljdGlvbiBjb3VsZCBi ZSBsaWZ0ZWQgaW4gYSBmb2xsb3ctdXAhDQoNCj4gPiArIG15ICRwYXRoID0gJGNsYXNzLT5maWxl c3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lKTsgbXkgJHNuYXBwYXRoIA0KPiA+ICsgPSBnZXRf c25hcF9wYXRoKCRwYXRoLCAkc25hcCk7DQo+ID4gKw0KPiA+ICsgbXkgJHNuYXBzaG90cyA9ICRj bGFzcy0+dm9sdW1lX3NuYXBzaG90X2luZm8oJHNjZmcsICRzdG9yZWlkLA0KPiA+ICR2b2xuYW1l KTsNCj4gPiArIG15ICRjdXJyZW50cGF0aCA9ICRzbmFwc2hvdHMtPntjdXJyZW50fS0+e2ZpbGV9 OyByZXR1cm4gMSBpZiAhLWUgDQo+ID4gKyAkc25hcHBhdGggfHwgJGN1cnJlbnRwYXRoIGVxICRz bmFwcGF0aDsNCj4gPiArDQo+ID4gKyBkaWUgImNhbid0IHJvbGxiYWNrLCAnJHNuYXAnIGlzIG5v dCBtb3N0IHJlY2VudCBzbmFwc2hvdCBvbg0KPiA+ICckdm9sbmFtZSdcbiI7DQo+ID4gK8KgwqDC oCB9DQo+ID4gKw0KPiA+IMKgwqDCoMKgIHJldHVybiAxOw0KPiA+IMKgfQ0KPiA+IMKgDQo+ID4g wqBzdWIgdm9sdW1lX3NuYXBzaG90X3JvbGxiYWNrIHsNCj4gPiDCoMKgwqDCoCBteSAoJGNsYXNz LCAkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCAkc25hcCkgPSBAXzsNCj4gPiDCoA0KPiA+IC3C oMKgwqAgZGllICJjYW4ndCByb2xsYmFjayBzbmFwc2hvdCB0aGlzIGltYWdlIGZvcm1hdFxuIiBp ZiAkdm9sbmFtZSANCj4gPiAhfiBtL1wuKHFjb3cyfHFlZCkkLzsNCj4gPiArwqDCoMKgIGRpZSAi Y2FuJ3Qgcm9sbGJhY2sgc25hcHNob3QgdGhpcyBpbWFnZSBmb3JtYXRcbiIgaWYgJHZvbG5hbWUg DQo+ID4gKyF+DQo+ID4gbS9cLihyYXd8cWNvdzJ8cWVkKSQvOw0KPiA+IMKgDQo+ID4gLcKgwqDC oCBteSAkcGF0aCA9ICRjbGFzcy0+ZmlsZXN5c3RlbV9wYXRoKCRzY2ZnLCAkdm9sbmFtZSk7DQo+ ID4gK8KgwqDCoCBkaWUgImV4dGVybmFsIHNuYXBzaG90IG5lZWQgdG8gYmUgZW5hYmxlZCB0byBy b2xsYmFjayBzbmFwc2hvdA0KPiA+IC5yYXcgdm9sdW1lc1xuIiBpZiAkdm9sbmFtZSA9fiBtL1wu KHJhdykkLyAmJiAhJHNjZmctPntzbmFwZXh0fTsNCj4gPiDCoA0KPiA+IC3CoMKgwqAgbXkgJGNt ZCA9IFsnL3Vzci9iaW4vcWVtdS1pbWcnLCAnc25hcHNob3QnLCctYScsICRzbmFwLCAkcGF0aF07 DQo+ID4gK8KgwqDCoCBteSAkcGF0aCA9ICRjbGFzcy0+ZmlsZXN5c3RlbV9wYXRoKCRzY2ZnLCAk dm9sbmFtZSk7DQo+ID4gwqANCj4gPiAtwqDCoMKgIHJ1bl9jb21tYW5kKCRjbWQpOw0KPiA+ICvC oMKgwqAgaWYgKCRzY2ZnLT57c25hcGV4dH0pIHsNCj4gPiArICNzaW1wbHkgZGVsZXRlIHRoZSBj dXJyZW50IHNuYXBzaG90IGFuZCByZWNyZWF0ZSBpdCAgbXkgJHNuYXBwYXRoIA0KPiA+ICs9IGdl dF9zbmFwX3BhdGgoJHBhdGgsICRzbmFwKTsgIHVubGluaygkc25hcHBhdGgpOyAgDQo+ID4gKyRj bGFzcy0+dm9sdW1lX3NuYXBzaG90KCRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwKTsN Cj4gDQo+IHRoaXMgKnJlYWRzKiBzbyB3ZWlyZCA7KSBpdCBpcyByaWdodCBnaXZlbiB0aGUgY3Vy cmVudCBzZW1hbnRpY3MgDQo+IChjdXJyZW50IHNuYXBzaG90ID09IGxpdmUgaW1hZ2UsIHNuYXBz aG90IGRhdGEgYWN0dWFsbHkgc3RvcmVkIGluIA0KPiBwYXJlbnQgc25hcHNob3QpDQo+IA0KPiA+ ICvCoMKgwqAgfSBlbHNlIHsNCj4gPiArIG15ICRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywg J3NuYXBzaG90JywnLWEnLCAkc25hcCwgJHBhdGhdOyAgDQo+ID4gK3J1bl9jb21tYW5kKCRjbWQp Ow0KPiA+ICvCoMKgwqAgfQ0KPiA+IMKgDQo+ID4gwqDCoMKgwqAgcmV0dXJuIHVuZGVmOw0KPiA+ IMKgfQ0KPiA+IEBAIC0xMTExLDE3ICsxMTYzLDUwIEBAIHN1YiB2b2x1bWVfc25hcHNob3Rfcm9s bGJhY2sgew0KPiA+IMKgc3ViIHZvbHVtZV9zbmFwc2hvdF9kZWxldGUgew0KPiA+IMKgwqDCoMKg IG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwLCAkcnVubmluZykg PSBAXzsNCj4gPiDCoA0KPiA+IC3CoMKgwqAgZGllICJjYW4ndCBkZWxldGUgc25hcHNob3QgZm9y IHRoaXMgaW1hZ2UgZm9ybWF0XG4iIGlmICR2b2xuYW1lIA0KPiA+ICF+IG0vXC4ocWNvdzJ8cWVk KSQvOw0KPiA+ICvCoMKgwqAgZGllICJjYW4ndCBkZWxldGUgc25hcHNob3QgZm9yIHRoaXMgaW1h Z2UgZm9ybWF0XG4iIGlmICR2b2xuYW1lDQo+ID4gIX4gbS9cLihyYXd8cWNvdzJ8cWVkKSQvOw0K PiA+ICsNCj4gPiArwqDCoMKgIGRpZSAiZXh0ZXJuYWwgc25hcHNob3QgbmVlZCB0byBiZSBlbmFi bGVkIHRvIGRlbGV0ZSBzbmFwc2hvdCBvZg0KPiA+IC5yYXcgdm9sdW1lc1xuIiBpZiAhJHNjZmct PntzbmFwZXh0fTsNCj4gPiDCoA0KPiA+IMKgwqDCoMKgIHJldHVybiAxIGlmICRydW5uaW5nOw0K PiA+IMKgDQo+ID4gLcKgwqDCoCBteSAkcGF0aCA9ICRjbGFzcy0+ZmlsZXN5c3RlbV9wYXRoKCRz Y2ZnLCAkdm9sbmFtZSk7DQo+ID4gK8KgwqDCoCBteSAkY21kID0gIiI7DQo+ID4gK8KgwqDCoCBp ZiAoJHNjZmctPntzbmFwZXh0fSkgew0KPiA+ICsNCj4gPiArIG15ICRzbmFwc2hvdHMgPSAkY2xh c3MtPnZvbHVtZV9zbmFwc2hvdF9pbmZvKCRzY2ZnLCAkc3RvcmVpZCwNCj4gPiAkdm9sbmFtZSk7 DQo+ID4gKyBteSAkc25hcHBhdGggPSAkc25hcHNob3RzLT57JHNuYXB9LT57ZmlsZX07IHJldHVy biBpZiAhLWUgDQo+ID4gKyAkc25hcHBhdGg7wqAgI2FscmVhZHkgZGVsZXRlZCA/DQo+ID4gKw0K PiA+ICsgbXkgJHBhcmVudHNuYXAgPSAkc25hcHNob3RzLT57JHNuYXB9LT57cGFyZW50fTsgIG15 ICRjaGlsZHNuYXAgPSANCj4gPiArJHNuYXBzaG90cy0+eyRzbmFwfS0+e2NoaWxkfTsNCj4gPiAr wqDCoMKgwqDCoMKgwqAgZGllICJlcnJvcjogY2FuJ3QgZmluZCBhIHBhcmVudCBmb3IgdGhpcyBz bmFwc2hvdCIgaWYNCj4gPiAhJHBhcmVudHNuYXA7DQo+ID4gwqANCj4gPiAtwqDCoMKgICRjbGFz cy0+ZGVhY3RpdmF0ZV92b2x1bWUoJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJHNuYXAsIA0K PiA+IHt9KTsNCj4gPiArIG15ICRwYXJlbnRwYXRoID0gJHNuYXBzaG90cy0+eyRwYXJlbnRzbmFw fS0+e2ZpbGV9Ow0KPiA+ICsgbXkgJHBhcmVudGZvcm1hdCA9ICRzbmFwc2hvdHMtPnskcGFyZW50 c25hcH0tPnsnZm9ybWF0J30gaWYNCj4gPiAkcGFyZW50c25hcDsNCj4gPiArIG15ICRjaGlsZHBh dGggPSAkc25hcHNob3RzLT57JGNoaWxkc25hcH0tPntmaWxlfSBpZiAkY2hpbGRzbmFwOyBteSAN Cj4gPiArICRjaGlsZGZvcm1hdCA9ICRzbmFwc2hvdHMtPnskY2hpbGRzbmFwfS0+eydmb3JtYXQn fSBpZg0KPiA+ICRjaGlsZHNuYXA7DQo+ID4gwqANCj4gPiAtwqDCoMKgIG15ICRjbWQgPSBbJy91 c3IvYmluL3FlbXUtaW1nJywgJ3NuYXBzaG90JywnLWQnLCAkc25hcCwgJHBhdGhdOw0KPiA+ICsg cHJpbnQgIm1lcmdlIHNuYXBzaG90ICRzbmFwIHRvICRwYXJlbnRzbmFwXG4iOyAkY21kID0gDQo+ ID4gKyBbJy91c3IvYmluL3FlbXUtaW1nJywgJ2NvbW1pdCcsICRzbmFwcGF0aF07IHJ1bl9jb21t YW5kKCRjbWQpOw0KPiA+ICsNCj4gPiArICNpZiB3ZSBkZWxldGUgYW4gaW50ZXJtZWRpYXRlIHNu YXBzaG90LCB3ZSBuZWVkIHRvIGxpbmsgdXBwZXINCj4gPiBzbmFwc2hvdCB0byBiYXNlIHNuYXBz aG90DQo+ID4gKyBpZigkY2hpbGRwYXRoICYmIC1lICRjaGlsZHBhdGgpIHsNCj4gPiArIMKgwqDC oCBkaWUgIm1pc3NpbmcgcGFyZW50c25hcCBzbmFwc2hvdCB0byByZWJhc2UgY2hpbGQgJGNoaWxk cGF0aFxuIg0KPiA+IGlmICEkcGFyZW50cGF0aDsNCj4gPiArIMKgwqDCoCBwcmludCAibGluayAk Y2hpbGRzbmFwIHRvICRwYXJlbnRzbmFwXG4iOw0KPiA+ICsgwqDCoMKgICRjbWQgPSBbJy91c3Iv YmluL3FlbXUtaW1nJywgJ3JlYmFzZScsICctdScsICctYicsIA0KPiA+ICsgJHBhcmVudHBhdGgs DQo+ID4gJy1GJywgJHBhcmVudGZvcm1hdCwgJy1mJywgJGNoaWxkZm9ybWF0LCAkY2hpbGRwYXRo XTsNCj4gPiArIMKgwqDCoCBydW5fY29tbWFuZCgkY21kKTsNCj4gPiArIH0NCj4gDQo+ID4+d291 bGRuJ3QgYSByZWd1bGFyIHNhZmUgcmViYXNlIHdvcmsganVzdCBhcyB3ZWxsLCBpbnN0ZWFkIG9m IGNvbW1pdCANCj4gPj4rIHVuc2FmZSByZWJhc2U/IGlmIHRoZXJlIGlzIG5vIHBhcmVudCwgcGFz c2luZyBpbiAiIiBhcyAibmV3IiANCj4gPj5iYWNraW5nIGZpbGUgc2hvdWxkIHdvcmsuLg0KPiAN Cj4gSSdsbCB0ZXN0IGl0LCBidXQgSSdtIHByZXR0eSBzdXJlIHRoaXMgaXMgdGhlIGNvcnJlY3Qg d2F5Lg0KPiANCj4gPiArDQo+ID4gKyAjZGVsZXRlIHRoZSBzbmFwc2hvdA0KPiA+ICsgdW5saW5r KCRzbmFwcGF0aCk7DQo+ID4gK8KgwqDCoCB9IGVsc2Ugew0KPiA+ICsgbXkgJHBhdGggPSAkY2xh c3MtPmZpbGVzeXN0ZW1fcGF0aCgkc2NmZywgJHZvbG5hbWUpOw0KPiA+IMKgDQo+ID4gLcKgwqDC oCBydW5fY29tbWFuZCgkY21kKTsNCj4gPiArICRjbGFzcy0+ZGVhY3RpdmF0ZV92b2x1bWUoJHN0 b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJHNuYXAsIHt9KTsNCj4gPiArDQo+ID4gKyAkY21kID0g WycvdXNyL2Jpbi9xZW11LWltZycsICdzbmFwc2hvdCcsJy1kJywgJHNuYXAsICRwYXRoXTsgIA0K PiA+ICtydW5fY29tbWFuZCgkY21kKTsNCj4gPiArwqDCoMKgIH0NCj4gPiDCoA0KPiA+IMKgwqDC oMKgIHJldHVybiB1bmRlZjsNCj4gPiDCoH0NCj4gPiBAQCAtMTE0MCwxMCArMTIyNSw2IEBAIHN1 YiB2b2x1bWVfaGFzX2ZlYXR1cmUgew0KPiA+IMKgwqDCoMKgIG15ICgkY2xhc3MsICRzY2ZnLCAk ZmVhdHVyZSwgJHN0b3JlaWQsICR2b2xuYW1lLCAkc25hcG5hbWUsIA0KPiA+ICRydW5uaW5nLCAk b3B0cykgPSBAXzsNCj4gPiDCoA0KPiA+IMKgwqDCoMKgIG15ICRmZWF0dXJlcyA9IHsNCj4gPiAt IHNuYXBzaG90ID0+IHsNCj4gPiAtIMKgwqDCoCBjdXJyZW50ID0+IHsgcWNvdzIgPT4gMSB9LA0K PiA+IC0gwqDCoMKgIHNuYXAgPT4geyBxY293MiA9PiAxIH0sDQo+ID4gLSB9LA0KPiA+IMKgIGNs b25lID0+IHsNCj4gPiDCoCDCoMKgwqAgYmFzZSA9PiB7IHFjb3cyID0+IDEsIHJhdyA9PiAxLCB2 bWRrID0+IDEgfSwNCj4gPiDCoCB9LA0KPiA+IEBAIC0xMTU5LDExICsxMjQwLDIzIEBAIHN1YiB2 b2x1bWVfaGFzX2ZlYXR1cmUgew0KPiA+IMKgIMKgwqDCoCBiYXNlID0+IHsgcWNvdzIgPT4gMSwg cmF3ID0+IDEsIHZtZGsgPT4gMSB9LA0KPiA+IMKgIMKgwqDCoCBjdXJyZW50ID0+IHsgcWNvdzIg PT4gMSwgcmF3ID0+IDEsIHZtZGsgPT4gMSB9LA0KPiA+IMKgIH0sDQo+ID4gLSByZW5hbWUgPT4g ew0KPiA+IC0gwqDCoMKgIGN1cnJlbnQgPT4ge3Fjb3cyID0+IDEsIHJhdyA9PiAxLCB2bWRrID0+ IDF9LA0KPiA+IC0gfSwNCj4gPiArICdyZW5hbWUnID0+IHsNCj4gPiArIMKgwqDCoCBjdXJyZW50 ID0+IHsgcWNvdzIgPT4gMSwgcmF3ID0+IDEsIHZtZGsgPT4gMX0sIH0NCj4gPiDCoMKgwqDCoCB9 Ow0KPiA+IMKgDQo+ID4gK8KgwqDCoCBpZiAoJHNjZmctPntzbmFwZXh0fSkgew0KPiA+ICsgJGZl YXR1cmVzLT57c25hcHNob3R9ID0gew0KPiA+ICsgY3VycmVudCA9PiB7IHJhdyA9PiAxLCBxY293 MiA9PiAxIH0sDQo+ID4gKyBzbmFwID0+IHsgcmF3ID0+IDEsIHFjb3cyID0+IDEgfSwNCj4gPiAr IH0NCj4gPiArwqDCoMKgIH0gZWxzZSB7DQo+ID4gKyAkZmVhdHVyZXMtPntzbmFwc2hvdH0gPSB7 DQo+ID4gKyBjdXJyZW50ID0+IHsgcWNvdzIgPT4gMSB9LA0KPiA+ICsgc25hcCA9PiB7IHFjb3cy ID0+IDEgfSwNCj4gPiArIH07DQo+ID4gK8KgwqDCoCB9DQo+ID4gKw0KPiANCj4gPj50aGlzIGNv dWxkIGp1c3QgbGVhdmUgJGZlYXR1cmVzIGFzIGl0IGlzLCBhbmQgYWRkIHRoZSAicmF3IiBiaXRz Og0KPiA+Pg0KPiA+PmlmICgkc2NmZy0+e3NuYXBleHR9KSB7DQo+ID4+wqDCoMKgICRmZWF0dXJl cy0+e3NuYXBzaG90fS0+e2N1cnJlbnR9LT57cmF3fSA9IDE7DQo+ID4+wqDCoMKgICRmZWF0dXJl cy0+e3NuYXBzaG90fS0+e3NuYXB9LT57cmF3fSA9IDE7DQo+ID4+fQ0KPiANCj4gb2sgIQ0KPiA+ IMKgwqDCoMKgIGlmICgkZmVhdHVyZSBlcSAnY2xvbmUnKSB7DQo+ID4gwqAgaWYgKA0KPiA+IMKg IMKgwqDCoCBkZWZpbmVkKCRvcHRzLT57dmFsaWRfdGFyZ2V0X2Zvcm1hdHN9KQ0KPiA+IEBAIC0x MjIyLDcgKzEzMTUsOSBAQCBzdWIgbGlzdF9pbWFnZXMgew0KPiA+IMKgIH0NCj4gPiDCoA0KPiA+ IMKgIGlmICgkdm9sbGlzdCkgew0KPiA+IC0gwqDCoMKgIG15ICRmb3VuZCA9IGdyZXAgeyAkXyBl cSAkdm9saWQgfSBAJHZvbGxpc3Q7DQo+ID4gKyDCoMKgwqAgbXkgJHNlYXJjaF92b2xpZCA9ICR2 b2xpZDsNCj4gPiArIMKgwqDCoCAkc2VhcmNoX3ZvbGlkID1+IHMvLXNuYXAtLipcLi9cLi87DQo+ ID4gKyDCoMKgwqAgbXkgJGZvdW5kID0gZ3JlcCB7ICRfIGVxICRzZWFyY2hfdm9saWQgfSBAJHZv bGxpc3Q7DQo+ID4gwqAgwqDCoMKgIG5leHQgaWYgISRmb3VuZDsNCj4gPiDCoCB9DQo+ID4gwqAN Cj4gPiBAQCAtMTM4MCw3ICsxNDc1LDUzIEBAIHN1YiBzdGF0dXMgew0KPiA+IMKgc3ViIHZvbHVt ZV9zbmFwc2hvdF9pbmZvIHsNCj4gPiDCoMKgwqDCoCBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3Jl aWQsICR2b2xuYW1lKSA9IEBfOw0KPiA+IMKgDQo+ID4gLcKgwqDCoCBkaWUgInZvbHVtZV9zbmFw c2hvdF9pbmZvIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgJGNsYXNzIjsNCj4gPiArwqDCoMKgIGRp ZSAidm9sdW1lX3NuYXBzaG90X2luZm8gaXMgbm90IGltcGxlbWVudGVkIGZvciAkY2xhc3MiIGlm DQo+ID4gISRzY2ZnLT57c25hcGV4dH07DQo+ID4gKw0KPiA+ICvCoMKgwqAgbXkgJHBhdGggPSAk Y2xhc3MtPmZpbGVzeXN0ZW1fcGF0aCgkc2NmZywgJHZvbG5hbWUpOw0KPiA+ICsNCj4gPiArwqDC oMKgIG15ICgkdnR5cGUsICRuYW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAkYmFzZXZtaWQsICRpc0Jh c2UsDQo+ID4gJGZvcm1hdCkgPSAkY2xhc3MtPnBhcnNlX3ZvbG5hbWUoJHZvbG5hbWUpOw0KPiA+ ICsNCj4gPiArwqDCoMKgIG15ICRiYXNldm9sbmFtZSA9ICR2b2xuYW1lOw0KPiA+ICvCoMKgwqAg JGJhc2V2b2xuYW1lID1+IHMvXC4ocmF3fHFjb3cyKSQvLzsNCj4gPiArDQo+ID4gK8KgwqDCoCBt eSAkc25hcHNob3RzID0gJGNsYXNzLT5saXN0X2ltYWdlcygkc3RvcmVpZCwgJHNjZmcsICR2bWlk KTsNCj4gPiArwqDCoMKgIG15ICRpbmZvID0ge307DQo+ID4gK8KgwqDCoCBmb3IgbXkgJHNuYXAg KEAkc25hcHNob3RzKSB7DQo+ID4gKw0KPiA+ICsgbXkgJHZvbGlkID0gJHNuYXAtPnt2b2xpZH07 DQo+ID4gKyBuZXh0IGlmICgkdm9saWQgIX4gbS8kYmFzZXZvbG5hbWUvKTsNCj4gDQo+ID4+dGhp cyByZWdleCBpcyBicm9rZW4gdy5yLnQuIHBhcnRpYWwgbWF0Y2hpbmchDQo+ID4+DQo+ID4+ZS5n LiwgaWYgYSBWTSBoYXMgYm90aCBhIGRpc2sgLTEucWNvdzIgYW5kIC0xMS5xY293MiBhbmQgSSBh dHRlbXB0IHRvDQo+ID4+c25hcHNob3QgaXQgdXNpbmcgZXh0ZXJuYWwgc25hcHNob3RzOg0KPiBv ayAhDQo+IA0KPiANCj4gc25hcHNob3R0aW5nICdkcml2ZS1zY3NpMCcgKGV4dHNuYXA6MTMxMzE0 L3ZtLTEzMTMxNC1kaXNrLTAucmF3KQ0KPiBGb3JtYXR0aW5nICcvbW50L3B2ZS9leHQ0L2V4dHNu YXAvaW1hZ2VzLzEzMTMxNC92bS0xMzEzMTQtZGlzay0wLXNuYXAtDQo+IHRlc3QyLnFjb3cyJywg Zm10PXFjb3cyIGNsdXN0ZXJfc2l6ZT02NTUzNiBleHRlbmRlZF9sMj1vbg0KPiBwcmVhbGxvY2F0 aW9uPW9mZiBjb21wcmVzc2lvbl90eXBlPXpsaWIgc2l6ZT0yMDA3MDQNCj4gYmFja2luZ19maWxl PS9tbnQvcHZlL2V4dDQvZXh0c25hcC9pbWFnZXMvMTMxMzE0L3ZtLTEzMTMxNC1kaXNrLTAtc25h cC0NCj4gdGVzdC5xY293MiBiYWNraW5nX2ZtdD1yYXcgbGF6eV9yZWZjb3VudHM9b2ZmIHJlZmNv dW50X2JpdHM9MTYNCj4gc25hcHNob3R0aW5nICdkcml2ZS1zY3NpMScgKGV4dHNuYXA6MTMxMzE0 L3ZtLTEzMTMxNC1kaXNrLTEucWNvdzIpDQo+IEZvcm1hdHRpbmcgJy9tbnQvcHZlL2V4dDQvZXh0 c25hcC9pbWFnZXMvMTMxMzE0L3ZtLTEzMTMxNC1kaXNrLTExLXNuYXAtDQo+IHRlc3QyLnFjb3cy JywgZm10PXFjb3cyIGNsdXN0ZXJfc2l6ZT02NTUzNiBleHRlbmRlZF9sMj1vbg0KPiBwcmVhbGxv Y2F0aW9uPW9mZiBjb21wcmVzc2lvbl90eXBlPXpsaWIgc2l6ZT0yMTQ3NDgzNjQ4DQo+IGJhY2tp bmdfZmlsZT0vbW50L3B2ZS9leHQ0L2V4dHNuYXAvaW1hZ2VzLzEzMTMxNC92bS0xMzEzMTQtZGlz ay0NCj4gMTEucWNvdzIgYmFja2luZ19mbXQ9cWNvdzIgbGF6eV9yZWZjb3VudHM9b2ZmIHJlZmNv dW50X2JpdHM9MTYNCj4gc25hcHNob3R0aW5nICdkcml2ZS1zY3NpMicgKGV4dHNuYXA6MTMxMzE0 L3ZtLTEzMTMxNC1kaXNrLTExLnFjb3cyKQ0KPiBxZW11LWltZzogL21udC9wdmUvZXh0NC9leHRz bmFwL2ltYWdlcy8xMzEzMTQvdm0tMTMxMzE0LWRpc2stMTEtc25hcC0NCj4gdGVzdDIucWNvdzI6 IEVycm9yOiBUcnlpbmcgdG8gY3JlYXRlIGFuIGltYWdlIHdpdGggdGhlIHNhbWUgZmlsZW5hbWUg YXMNCj4gdGhlIGJhY2tpbmcgZmlsZQ0KPiBzbmFwc2hvdCBjcmVhdGUgZmFpbGVkOiBzdGFydGlu ZyBjbGVhbnVwDQo+IG1lcmdlIHNuYXBzaG90IHRlc3QyIHRvIHRlc3QNCj4gSW1hZ2UgY29tbWl0 dGVkLg0KPiBtZXJnZSBzbmFwc2hvdCB0ZXN0MiB0byBiYXNlDQo+IEltYWdlIGNvbW1pdHRlZC4N Cj4gVEFTSyBFUlJPUjogY29tbWFuZCAnL3Vzci9iaW4vcWVtdS1pbWcgY3JlYXRlIC1iDQo+IC9t bnQvcHZlL2V4dDQvZXh0c25hcC9pbWFnZXMvMTMxMzE0L3ZtLTEzMTMxNC1kaXNrLTExLXNuYXAt dGVzdDIucWNvdzINCj4gLUYgcWNvdzIgLWYgcWNvdzIgL21udC9wdmUvZXh0NC9leHRzbmFwL2lt YWdlcy8xMzEzMTQvdm0tMTMxMzE0LWRpc2stDQo+IDExLXNuYXAtdGVzdDIucWNvdzIgLW8gJ2V4 dGVuZGVkX2wyPW9uLHByZWFsbG9jYXRpb249b2ZmJycgZmFpbGVkOiBleGl0DQo+IGNvZGUgMSAN Cj4gDQo+ID4gKw0KPiA+ICsgbXkgKHVuZGVmLCAkc25hcHZvbG5hbWUpID0gcGFyc2Vfdm9sdW1l X2lkKCR2b2xpZCk7DQo+ID4gKyBteSAkc25hcG5hbWUgPSBnZXRfc25hcG5hbWVfZnJvbV9wYXRo KCR2b2xpZCk7DQo+ID4gKyBteSAkc25hcGZpbGUgPSAkY2xhc3MtPmZpbGVzeXN0ZW1fcGF0aCgk c2NmZywgJHNuYXB2b2xuYW1lLA0KPiA+ICRzbmFwbmFtZSk7DQo+ID4gKyAkc25hcG5hbWUgPSAn YmFzZScgaWYgISRzbmFwbmFtZTsNCj4gPiArDQo+ID4gKyBteSAkZm9ybWF0ID0gJHNuYXAtPnsn Zm9ybWF0J307DQo+ID4gKyBteSAkcGFyZW50ZmlsZSA9ICRzbmFwLT57cGFyZW50fTsNCj4gPiAr IG15ICRwYXJlbnRuYW1lID0gZ2V0X3NuYXBuYW1lX2Zyb21fcGF0aCgkcGFyZW50ZmlsZSkgaWYN Cj4gPiAkcGFyZW50ZmlsZTsNCj4gPiArICRwYXJlbnRuYW1lID0gJ2Jhc2UnIGlmICEkcGFyZW50 bmFtZSAmJiAkcGFyZW50ZmlsZTsNCj4gPiArDQo+ID4gKyAkaW5mby0+eyRzbmFwbmFtZX0tPntm aWxlfSA9ICRzbmFwZmlsZTsNCj4gPiArICRpbmZvLT57JHNuYXBuYW1lfS0+e3ZvbGlkfSA9ICR2 b2xpZDsNCj4gPiArICRpbmZvLT57JHNuYXBuYW1lfS0+eydmb3JtYXQnfSA9ICRmb3JtYXQ7DQo+ ID4gKyAkaW5mby0+eyRzbmFwbmFtZX0tPntwYXJlbnR9ID0gJHBhcmVudG5hbWUgaWYgJHBhcmVu dG5hbWU7DQo+ID4gKyAkaW5mby0+eyRwYXJlbnRuYW1lfS0+e2NoaWxkfSA9ICRzbmFwbmFtZSBp ZiAkcGFyZW50bmFtZTsNCj4gPiArwqDCoMKgIH0NCj4gPiArDQo+ID4gK8KgwqDCoCBteSAkY3Vy cmVudCA9IHVuZGVmOw0KPiA+ICvCoMKgwqAgZm9yIG15ICRpZCAoa2V5cyAlJGluZm8pIHsNCj4g PiArIG15ICRzbmFwID0gJGluZm8tPnskaWR9Ow0KPiA+ICsgZGllICJlcnJvcjogc25hcCAkaWQ6 IHlvdSBjYW4ndCBoYXZlIG11bHRpcGxlIGN1cnJlbnQgc25hcHNob3Q6wqANCj4gPiBjdXJyZW50 OiRjdXJyZW50XG4iIGlmICEkc25hcC0+e2NoaWxkfSAmJiAkY3VycmVudDsNCj4gPiArICRjdXJy ZW50ID0gJGlkIGlmICEkc25hcC0+e2NoaWxkfTsNCj4gPiArwqDCoMKgIH0NCj4gPiArDQo+ID4g K8KgwqDCoCBpZiAoJGN1cnJlbnQpIHsNCj4gPiArICRpbmZvLT57Y3VycmVudH0tPntmaWxlfSA9 ICRpbmZvLT57JGN1cnJlbnR9LT57ZmlsZX07DQo+ID4gKyAkaW5mby0+e2N1cnJlbnR9LT57J2Zv cm1hdCd9ID0gJGluZm8tPnskY3VycmVudH0tPnsnZm9ybWF0J307DQo+ID4gKyAkaW5mby0+e2N1 cnJlbnR9LT57cGFyZW50fSA9ICRpbmZvLT57JGN1cnJlbnR9LT57cGFyZW50fTsNCj4gPiArwqDC oMKgIH0NCj4gPiArDQo+ID4gK8KgwqDCoCByZXR1cm4gJGluZm87DQo+ID4gwqB9DQo+ID4gwqAN Cj4gPiDCoHN1YiBhY3RpdmF0ZV9zdG9yYWdlIHsNCj4gPiBAQCAtMTc2NCw0ICsxOTA1LDM4IEBA IHN1YiBjb25maWdfYXdhcmVfYmFzZV9ta2RpciB7DQo+ID4gwqDCoMKgwqAgfQ0KPiA+IMKgfQ0K PiA+IMKgDQo+ID4gK3N1YiBnZXRfc25hcF9wYXRoIHsNCj4gPiArwqDCoMKgIG15ICgkcGF0aCwg JHNuYXApID0gQF87DQo+ID4gKw0KPiA+ICvCoMKgwqAgbXkgJGJhc2VwYXRoID0gIiI7DQo+ID4g K8KgwqDCoCBteSAkYmFzZWZvcm1hdCA9ICIiOw0KPiA+ICvCoMKgwqAgaWYgKCRwYXRoID1+IG0v XigoLiopKHZtLShcZCspLWRpc2stKFxkKykpKSgtc25hcC0NCj4gPiAoLiopKT9cLihyYXd8cWNv dzIpLykgew0KPiANCj4gPj50aGlzIHJlZ2V4IGlzIHdyb25nIC0gdm9sdW1lcyBjYW4gaGF2ZSBh cmJpdHJhcnkgbmFtZXMgYWZ0ZXIgdGhlIC0NCj4gPj5kaXNrLSBwYXJ0Li4NCj4gDQo+IGFoIHNv cnJ5LiBkbyB5b3UgaGF2ZSBzb21lIGV4YW1wbGUgd2hlcmUgaXQncyB1c2VkID8gKG1heWJlIGZv ciBlZmkgb3INCj4gb3RoZXIgc3BlY2lmaWMgZGlzayA/KQ0KDQpubywgYW55IHZkaXNrIGNhbiBo YXZlIChhbG1vc3QpIGFueXRoaW5nIGFmdGVyIHRoZSAtZGlzay0gcGFydC4geW91IGNhbiBhbGxv Y2F0ZSBzdWNoIHZvbHVtZXMgdXNpbmcgYHB2ZXNtIGFsbG9jYCBvciB0aGUgQVBJICh3ZSBqdXN0 IGFyZSBub3QgdmVyeSBnb29kIGF0IGtlZXBpbmcgdGhvc2UgY3VzdG9tIHN1ZmZpeGVzIHdoZW4g bW92aW5nL21pZ3JhdGluZy8uLiA7KSkNCg0KPiA+ICsgJGJhc2VwYXRoID0gJDE7DQo+ID4gKyAk YmFzZWZvcm1hdCA9ICQ4Ow0KPiA+ICvCoMKgwqAgfQ0KPiA+ICvCoMKgwqAgbXkgJGZvcm1hdCA9 ICRzbmFwID8gJ3Fjb3cyJyA6ICRiYXNlZm9ybWF0Ow0KPiA+ICvCoMKgwqAgbXkgJHNuYXBwYXRo ID0gJHNuYXAgPyAkYmFzZXBhdGguIi1zbmFwLSRzbmFwLiRmb3JtYXQiIDogdW5kZWY7DQo+ID4g Kw0KPiA+ICvCoMKgwqAgcmV0dXJuICRzbmFwcGF0aDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Vi IGdldF9zbmFwbmFtZV9mcm9tX3BhdGggew0KPiA+ICvCoMKgwqAgbXkgKCRwYXRoKSA9IEBfOw0K PiA+ICsNCj4gPiArwqDCoMKgIGlmICgkcGF0aCA9fiBtL14oKC4qKSh2bS0oXGQrKS1kaXNrLShc ZCspKSkoLXNuYXAtDQo+ID4gKC4qKSk/XC4ocmF3fHFjb3cyKS8pIHsNCj4gDQo+ID4+aGVyZSBh cyB3ZWxsLi4gYW5kIHRoaXMgd2hvbGUgaGVscGVyIGlzIGp1c3QgdXNlZCB0d2ljZSBpbg0KPiA+ PnZvbHVtZV9zbmFwc2hvdF9pbmZvLCBtYXliZSBpdCBjb3VsZCBiZSBpbmxpbmVkIG9yIG1hZGUg cHJpdmF0ZSANCj4gb2sgIQ0KPiANCj4gDQo+ID4gKyBteSAkc25hcG5hbWUgPSAkNzsNCj4gPiAr IHJldHVybiAkc25hcG5hbWU7DQo+ID4gK8KgwqDCoCB9DQo+ID4gK8KgwqDCoCBkaWUgImNhbid0 IHBhcnNlIHNuYXBuYW1lIGZyb20gcGF0aCI7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N1YiBnZXRf Y3VycmVudF9zbmFwc2hvdCB7DQo+ID4gK8KgwqDCoCBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3Jl aWQsICR2b2xuYW1lKSA9IEBfOw0KPiA+ICvCoMKgwqAgI0lNUFJPVkUgTUU6IGZhc3RlciB3YXkg dG8gZmluZCBjdXJyZW50IHNuYXBzaG90PyAoc2VhcmNoIHRoZQ0KPiA+IG1vc3QgcmVjZW50IGNy ZWF0ZWQgc25hcHNob3QgZmlsZSA/IG5lZWQgdG8gd29ya3Mgd2l0aCBsdm0gdm9sdW1lDQo+ID4g dG9vKQ0KPiA+ICsNCj4gPiArwqDCoMKgIHJldHVybiBpZiAhJHNjZmctPntzbmFwZXh0fTsNCj4g PiArwqDCoMKgIG15ICRzbmFwc2hvdHMgPSAkY2xhc3MtPnZvbHVtZV9zbmFwc2hvdF9pbmZvKCRz Y2ZnLCAkc3RvcmVpZCwNCj4gPiAkdm9sbmFtZSk7DQo+ID4gK8KgwqDCoCByZXR1cm4gJHNuYXBz aG90cy0+e2N1cnJlbnR9Ow0KPiA+ICt9DQo+ID4gKw0KPiA+IMKgMTsNCj4gPiAtLSANCj4gPiAy LjM5LjINCg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xw0KcHZlLWRldmVsIG1haWxpbmcgbGlzdA0KcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tDQpo dHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2 ZWwNCg== --===============0322210416932399988== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel --===============0322210416932399988==--