From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id CC3BB1FF17C for <inbox@lore.proxmox.com>; Wed, 2 Apr 2025 18:31:54 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D2BA01F327; Wed, 2 Apr 2025 18:31:40 +0200 (CEST) Mime-Version: 1.0 Date: Wed, 02 Apr 2025 18:31:35 +0200 Message-Id: <D8WAOUZPCMO5.37G29XB8M94OE@proxmox.com> To: "Proxmox VE development discussion" <pve-devel@lists.proxmox.com> From: "Max Carrara" <m.carrara@proxmox.com> X-Mailer: aerc 0.18.2-0-ge037c095a049 References: <20250326142059.261938-1-m.carrara@proxmox.com> <20250326142059.261938-3-m.carrara@proxmox.com> <1743421835.hd6pyusvlb.astroid@yuna.none> In-Reply-To: <1743421835.hd6pyusvlb.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.077 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH v1 pve-storage 2/8] pluginbase: add high-level plugin API description X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> T24gTW9uIE1hciAzMSwgMjAyNSBhdCA1OjEzIFBNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg d3JvdGU6Cj4gT24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4g PiBBZGQgYSBzaG9ydCBwYXJhZ3JhcGggaW4gREVTQ1JJUFRJT04gc2VydmluZyBhcyBhbiBpbnRy b2R1Y3Rpb24gYXMKPiA+IHdlbGwgYXMgdGhlIEdFTkVSQUwgUEFSQU1FVEVSUyBhbmQgQ0FDSElO RyBFWFBFTlNJVkUgT1BFUkFUSU9OUwo+ID4gc2VjdGlvbnMuCj4gPiAKPiA+IFRoZXNlIHNlY3Rp b25zIGFyZSBhZGRlZCBpbiBvcmRlciB0byBhdm9pZCByZXBlYXRlZGx5IGRlc2NyaWJpbmcgdGhl Cj4gPiBzYW1lIHBhcmFtZXRlcnMgYXMgd2VsbCBhcyB0byBlbGFib3JhdGUgb24gLyBjbGFyaWZ5 IGEgY291cGxlIHRlcm1zLAo+ID4gZS5nLiB3aGF0IHRoZSAkY2FjaGUgcGFyYW1ldGVyIGRvZXMg b3Igd2hhdCBhIHZvbHVtZSBpbiBvdXIgY2FzZSBpcy4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTog TWF4IENhcnJhcmEgPG0uY2FycmFyYUBwcm94bW94LmNvbT4KPiA+IC0tLQo+ID4gIHNyYy9QVkUv U3RvcmFnZS9QbHVnaW5CYXNlLnBtIHwgNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiA+ICAxIGZpbGUgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKQo+ID4gCj4gPiBkaWZm IC0tZ2l0IGEvc3JjL1BWRS9TdG9yYWdlL1BsdWdpbkJhc2UucG0gYi9zcmMvUFZFL1N0b3JhZ2Uv UGx1Z2luQmFzZS5wbQo+ID4gaW5kZXggZTU2YWE3Mi4uMTY5NzdmMyAxMDA2NDQKPiA+IC0tLSBh L3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBtCj4gPiArKysgYi9zcmMvUFZFL1N0b3JhZ2Uv UGx1Z2luQmFzZS5wbQo+ID4gQEAgLTQsNiArNCw4MyBAQCBDPFBWRTo6U3RvcmFnZTo6UGx1Z2lu QmFzZT4gLSBTdG9yYWdlIFBsdWdpbiBBUEkgSW50ZXJmYWNlCj4gPiAgCj4gPiAgPWhlYWQxIERF U0NSSVBUSU9OCj4gPiAgCj4gPiArVGhpcyBtb2R1bGUgZG9jdW1lbnRzIHRoZSBwdWJsaWMgU3Rv cmFnZSBQbHVnaW4gQVBJIG9mIFBWRSBhbmQgc2VydmVzCj4gPiArYXMgYSBiYXNlIGZvciBDPEw8 UFZFOjpTdG9yYWdlOjpQbHVnaW4+Pi4gUGx1Z2lucyBtdXN0IEI8YWx3YXlzPiBpbmhlcml0IGZy b20KPiA+ICtDPEw8UFZFOjpTdG9yYWdlOjpQbHVnaW4+PiwgYXMgdGhpcyBtb2R1bGUgaXMgZm9y IGRvY3VtZW50YXRpb24gcHVycG9zZXMKPiA+ICtvbmx5Lgo+Cj4gZG9lcyB0aGlzIG1ha2Ugc2Vu c2U/IGlmIHdlIG5vdyBwcm92aWRlIGEgY2xlYW4gYmFzZSBmb3IgdGhlIHN0cnVjdHVyZQo+IG9m IHBsdWdpbnMsIHdoeSBzaG91bGRuJ3QgcGx1Z2lucyBiZSBhYmxlIHRvIHVzZSB0aGF0LCBidXQg aW5zdGVhZCBoYXZlCj4gdG8gaW5oZXJpdCBmcm9tIFBWRTo6U3RvcmFnZTo6UGx1Z2luIHdoaWNo IGhhcyBhIGxvdCBvZiBleHRyYSBzdHVmZiB0aGF0Cj4gbWFrZXMgdGhpbmdzIG1lc3N5Pwo+Cj4g Z3JhbnRlZCwgc3dpdGNoaW5nIG92ZXIgdG8gbG9hZCBmcm9tIFBsdWdpbkJhc2UgY291bGQgYmUg ZG9uZSBhcyBhCj4gZm9sbG93IHVwIG9yIHdpdGggOS4wIChvciBub3QgYXQgYWxsLCBpZiB0aGVy ZSBpcyBhIHJhdGlvbmFsZSkuLgo+Cj4gYWZ0ZXIgdGhpcyBzZXJpZXMgd2UgaGF2ZToKPgo+IFNl Y3Rpb25Db25maWcKPiAtPiBQbHVnaW5CYXNlIChub3QgYW4gYWN0dWFsIGJhc2UgcGx1Z2luIHcu ci50LiBTZWN0aW9uQ29uZmlnLCBhbmQgbm90Cj4gc29tZXRoaW5nIHlvdSBiYXNlIHBsdWdpbnMg b24gYXMgYSByZXN1bHQpCj4gLS0+IFBsdWdpbiAoYSBjb21iaW5hdGlvbiBvZiBiYXNlIHBsdWdp biBhbmQgYmFzZSBvZiBhbGwgb3VyCj4gZGlyZWN0b3J5LWJhc2VkIHBsdWdpbnMpCj4gLS0tPiBv dGhlciBwbHVnaW5zLCBpbmNsdWRpbmcgdGhpcmQgcGFydHkgb25lcwo+Cj4gd2hpY2ggc2VlbXMg dW5mb3J0dW5hdGUsIGV2ZW4gaWYgdGhlIGNvbnRlbnRzIG9mIFBsdWdpbkJhc2UgYXJlIGhlbHBm dWwKPiB3aGVuIGltcGxlbWVudGluZyB5b3VyIG93bi4uCj4KPiBJTUhPIHRoaXMgc2hvdWxkIGVp dGhlciBiZQo+Cj4gU2VjdGlvbkNvbmZpZwo+IC0+IFBsdWdpbkJhc2UgKGFjdHVhbCBiYXNlIHBs dWdpbiwgd2l0aCBTZWN0aW9uQ29uZmlnIGltcGxlbWVudGF0aW9ucwo+IG1vdmVkIG92ZXIgZnJv bSBjdXJyZW50IFBsdWdpbi5wbSBhcyBuZWVkZWQpCj4gLS0+IFBsdWdpblRlbXBsYXRlICh3aGF0 J3MgY3VycmVudGx5IFBsdWdpbkJhc2UgaW4gdGhpcyBzZXJpZXMgLSBuaWNlbHkKPiBkb2N1bWVu dGVkIHBhcmVudCBvZiB0aGlyZCBwYXJ0eSBwbHVnaW5zLCBub3QgYWN0dWFsbHkgcmVnaXN0ZXJl ZCwganVzdAo+IGNvbnRhaW5zIHRoZSBzdG9yYWdlLmNmZyBpbnRlcmZhY2Ugd2l0aG91dCB0aGUg bG93LWxldmVsIFNlY3Rpb25Db25maWcKPiB0aGluZ3MpCj4gLS0tPiBOZXdUaGlyZFBhcnR5UGx1 Z2luIChjbGVhbiBzbGF0ZSBpbXBsZW1lbnRhdGlvbiBqdXN0IHVzaW5nIHRoZQo+IG5pY2VseSBk b2N1bWVudGVkIGludGVyZmFjZXMsIGd1YXJhbnRlZWQgdG8gbm90IHVzZSBhbnkgaGVscGVycyBm cm9tCj4gUGx1Z2luIHNpbmNlIGl0J3Mgbm90IGEgKGdyYW5kKXBhcmVudCkKPiAtLT4gUGx1Z2lu IChiYXNlIG9mIGJ1aWx0LWluIHBsdWdpbnMsIHByb2JhYmx5IGJhc2Ugb2YgZXhpc3RpbmcgdGhp cmQKPiBwYXJ0eSBwbHVnaW5zLCBzaG91bGQgaWRlYWxseSBoYXZlIGEgZGlmZmVyZW50IG5hbWUg aW4gdGhlIGZ1dHVyZSEpCj4gLS0tPiBEaXJQbHVnaW4KPiAtLS0+IC4uLgo+IC0tLT4gRXhpc3Rp bmdUaGlyZFBhcnR5UGx1Z2luICh0aGlzIG1pZ2h0IHJlbHkgb24gaGVscGVycyBmcm9tIFBsdWdp biwKPiBzbyB3ZSBjYW4ndCBqdXN0IHJlbmFtZSB0aGF0IG9uZSB1bmxlc3Mgd2Ugd2FpdCBmb3Ig OS4wKQo+Cj4gb3IKPgo+IFNlY3Rpb25Db25maWcKPiAtPiBQbHVnaW5CYXNlIChhY3R1YWwgYmFz ZSBwbHVnaW4gKyBkb2NzIG9mIFBsdWdpbiBBUEkpCj4gLS0+IFBsdWdpbiAoYmFzZSBvZiBvdXIg cGx1Z2lucyBhbmQgZXhpc3RpbmcgdGhpcmQgcGFydHkgb25lcywgZGlyLXJlbGF0ZWQgaGVscGVy cywgLi4pCj4gLS0tPiBvdGhlciBwbHVnaW5zLCBpbmNsdWRpbmcgdGhpcmQgcGFydHkgb25lcwo+ IC0tPiBOZXdUaGlyZFBhcnR5UGx1Z2luIChjbGVhbiBzbGF0ZSBhcyBhYm92ZSkKCkkgYWdyZWUg d2l0aCB5b3VyIHBvaW50IGhlcmUgLS0gZm9yIG5vdywgYDo6UGx1Z2luQmFzZWAgc2hvdWxkIElN TyBzdGlsbApvbmx5IGJlIGFib3V0IGRvY3VtZW50YXRpb24gYW5kIGVudW1lcmF0aW5nIHdoYXQn cyBwYXJ0IG9mIHRoZSBQbHVnaW4KQVBJLCAqYnV0KiBhZGRpbmcgbW9yZSBsYXllcnMgaW5iZXR3 ZWVuIGNhbiBzdGlsbCBiZSBkb25lIGV2ZW50dWFsbHkuCgpIb3dldmVyLCBJIHRoaW5rIHdlIHNo b3VsZG4ndCBoYXZlIHR3byBkaWZmZXJlbnQgcGFyZW50cyBmb3IgaW50ZXJuYWwKYW5kIGV4dGVy bmFsIHBsdWdpbnMsIGFzIGl0IHdvdWxkIGludHJvZHVjZSB5ZXQgYW5vdGhlciB0aGluZyB3ZSdk IGhhdmUKdG8gdHJhY2sgd3J0LiBBUElBR0UgcmVzZXRzIGV0Yy4gTWF5YmUgaXQncyBub3QgYWN0 dWFsbHkgYW4gaXNzdWUgaW4KdGhpcyBjYXNlLCBidXQgLi4uCgpUaGF0IGFjdHVhbGx5IGdpdmVz IG1lIGFuIGlkZWEgdGhhdCdzIHNpbWlsYXIgdG8geW91ciBmaXJzdCBzdWdnZXN0aW9uOgoKQXMg b2YgdGhpcyBzZXJpZXMsIHRoZSBoaWVyYXJjaHkgd291bGQgYmUgYXMgZm9sbG93czoKClBsdWdp bkJhc2UK4pSU4pSA4pSAIFBsdWdpbgogICAg4pSc4pSA4pSAIEV4aXN0aW5nVGhpcmRQYXJ0eVBs dWdpbgogICAg4pSc4pSA4pSAIERpclBsdWdpbgogICAg4pSU4pSA4pSAIC4uLgoKV2UgY291bGQg a2VlcCBgUGx1Z2luQmFzZWAgYXMgaXQgaXMsIHNpbmNlIElNTyBoYXZpbmcgdGhlIGRvY3MgYW5k IHRoZQpTZWN0aW9uQ29uZmlnLXJlbGF0ZWQgc3R1ZmYgaW4gb25lIHBsYWNlIGlzIGZpbmUsIHVu bGVzcyB3ZSByZWFsbHkgd2FudAp0byBrZWVwIHRoZSBkb2NzIHNlcGFyYXRlIGZyb20gdGhlIHJl c3Qgb2YgdGhlIGNvZGUuIChXb3VsZCBzZWVtIGEgYml0CnJlZHVuZGFudCB0byBpbnRyb2R1Y2Ug YW5vdGhlciBpbmhlcml0YW5jZSBsYXllciBpbiB0aGF0IGNhc2UsIGJ1dCBJCnBlcnNvbmFsbHkg ZG9uJ3QgbWluZC4pCgpUaGVuLCB3ZSBldmVudHVhbGx5IGludHJvZHVjZSBgUGx1Z2luVGVtcGxh dGVgIG9uIHRoZSBzYW1lIGxheWVyIGFzCmBQbHVnaW5gLiBgUGx1Z2luVGVtcGxhdGVgIHdvdWxk IG9ubHkgY29udGFpbiBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZQptb3N0IGJhc2ljIG1ldGhvZHMg KGFuZCBub3QgcHJvdmlkZSBkZWZhdWx0cyBmb3IgZmlsZS1iYXNlZCBzdG9yYWdlcykuCgpQbHVn aW5CYXNlCuKUnOKUgOKUgCBQbHVnaW4K4pSCwqDCoCDilJzilIDilIAgRXhpc3RpbmdUaGlyZFBh cnR5UGx1Z2luCuKUgsKgwqAg4pSc4pSA4pSAIERpclBsdWdpbgrilILCoMKgIOKUlOKUgOKUgCAu Li4K4pSU4pSA4pSAIFBsdWdpblRlbXBsYXRlCgpUaGUgaWRlYSBiZWhpbmQgdGhpcyBpcyB0aGF0 IHdlIGNvdWxkIHRoZW4gIm1pZ3JhdGUiIGVhY2ggcGx1Z2luIGFuZApiYXNlIGl0IG9mZiBgUGx1 Z2luVGVtcGxhdGVgIGluc3RlYWQuIEhlbHBlcnMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4KcGx1 Z2lucyBjb3VsZCBnbyBpbnRvIGBQVkU6OlN0b3JhZ2U6OkNvbW1vbjo6KmAgaW5zdGVhZCBvZiBi ZWluZwppbXBsaWNpdGx5IGJlY29taW5nIHBhcnQgb2YgcGx1Z2lucycgbW9kdWxlcyBkdWUgdG8g aW5oZXJpdGFuY2UuCgpQbHVnaW5CYXNlCuKUnOKUgOKUgCBQbHVnaW4K4pSCwqDCoCDilJzilIDi lIAgLi4uCuKUgsKgwqAg4pSU4pSA4pSAIEV4aXN0aW5nVGhpcmRQYXJ0eVBsdWdpbgrilJTilIDi lIAgUGx1Z2luVGVtcGxhdGUKICAgIOKUnOKUgOKUgCAuLi4KICAgIOKUlOKUgOKUgCBEaXJQbHVn aW4gKGNsZWFuZWQgdXApCgpUaGF0IHdheSB3ZSBjb3VsZCBzdGVwIGJ5IHN0ZXAgImRpc2VudGFu Z2xlIiB0aGUgZXhpc3RpbmcgcGx1Z2lucyBmcm9tCmVhY2ggb3RoZXIgd2l0aG91dCBoYXZpbmcg dG8gY29uc3RhbnRseSBrZWVwIHRoZSBvcmlnaW5hbCBiZWhhdmlvdXIocykKb2YgYFBsdWdpbmAg aW4gdGhlIGJhY2sgb2Ygb25lJ3MgaGVhZCBhbmQgYWNjb3VudCBmb3IgdGhlbS4gSW5zdGVhZCwK ZWFjaCBwbHVnaW4gd291bGQgaW1wbGVtZW50IHByZWNpc2VseSB3aGF0IGl0IGl0c2VsZiBuZWVk cy4KClNpbmNlIGJvdGggdGhlIG9sZCBgUGx1Z2luYCBhbmQgdGhlIG5ldyBgUGx1Z2luVGVtcGxh dGVgIHNoYXJlIHRoZSBzYW1lCmludGVyZmFjZSwgbmFtZWx5IGBQbHVnaW5CYXNlYCwgd2UgY291 bGQgc3RpbGwgc3VwcG9ydCB0aGUgb2xkIGBQbHVnaW5gCnVudGlsIGV2ZXJ5dGhpbmcncyBiZWVu IG1vdmVkIG92ZXIgYW5kIHRoaXJkLXBhcnR5IGRldnMgaGF2ZSBoYWQgZW5vdWdoCnRpbWUgdG8g YWRhcHQgdGhlaXIgb3duIGNvZGUsIHRvby4KCldoaWxlIGRvaW5nIGFsbCB0aGlzLCB3ZSBjb3Vs ZCBhbHNvIHJld29yayBwYXJ0cyBvZiB0aGUgQVBJIHRoYXQgZGlkbid0CmFnZSB0aGF0IGdyYWNl ZnVsbHksIHBlcmhhcHMgZGVwcmVjYXRlIGNlcnRhaW4gb2xkIG1ldGhvZHMsIGludHJvZHVjZQpu ZXcgbWV0aG9kcywgZXRjLiBhcyB3ZSdkIGhhdmUgYSAiY2xlYW4iIGJyZWFrLCBzb3Rvc3BlYWsu CgoKU28sIHRvIHN1bW1hcml6ZSBteSBpZGVhOgotIEtlZXAgYFBsdWdpbkJhc2VgIGFzIGl0IGlz IHJpZ2h0IG5vdywgYnV0IGFsc28gaW5jbHVkZQogIFNlY3Rpb25Db25maWctcmVsYXRlZCBjb2Rl Ci0gSW50cm9kdWNlIGBQbHVnaW5UZW1wbGF0ZWAgd2l0aCBtaW5pbWFsIGltcGxlbWVudGF0aW9u IGxhdGVyIGRvd24gdGhlCiAgbGluZSBvbiB0aGUgc2FtZSBpbmhlcml0YW5jZSBsYXllciBhcyBg UGx1Z2luYAotIFNsb3dseSBtaWdyYXRlIG91ciBwbHVnaW5zLCBiYXNpbmcgdGhlbSBvZmYgb2Yg YFBsdWdpblRlbXBsYXRlYCB3aGlsZQogIHRvc3Npbmcgb3V0IG9sZCBjb2RlLCBtYWtpbmcgdGhl bSBpbmRlcGVuZGVudCBmcm9tIG9uZSBhbm90aGVyLCBhbmQKICBjb2xsZWN0aW5nIHNoYXJlZCBo ZWxwZXJzIGluIGBQVkU6OlN0b3JhZ2U6OkNvbW1vbjo6KmAKCgpJJ2QgcmVhbGx5IGxpa2UgdG8g aGVhciB5b3VyIHRob3VnaHRzIG9uIHRoaXMsIGJlY2F1c2UgSSdtIG5vdCBzdXJlIGlmCnRoaXMg aXMgKmFjdHVhbGx5KiBmZWFzaWJsZSBvciBwcm92aWRlcyBhbnkgUk9JIGRvd24gdGhlIGxpbmUu IE9uZQphbHRlcm5hdGl2ZSB0aGF0IEkgY2FuIHRoaW5rIG9mIGlzIHRvIGp1c3Qga2VlcCB0aGUg aW5oZXJpdGFuY2UKaGllcmFyY2h5IGFzIGl0IGlzIChhcyBpbiB0aGlzIHNlcmllcykgYW5kIGRp c2VudGFuZ2xlIHRoZSBwbHVnaW5zIGFzCnRoZXkgYXJlIHJpZ2h0IG5vdywgd2l0aG91dCBjaGFu Z2luZyB0aGVpciBwYXJlbnQgKHNvLCBhbG1vc3QgdGhlIHNhbWUKYXMgeW91ciBzZWNvbmQgaWRl YSkuIEkgZGlkIHN0YXJ0IGJyZWFraW5nIGFwYXJ0IG91ciBwbHVnaW5zIGxpa2UgdGhhdApsYXN0 IHllYXIsIGJ1dCB0aGF0IHdhcyB0b28gbXVjaCBhbGwgYXQgb25jZSBbMV0uCgpbMV06IGh0dHBz Oi8vbG9yZS5wcm94bW94LmNvbS9wdmUtZGV2ZWwvMjAyNDA3MTcwOTQwMzQuMTI0ODU3LTEtbS5j YXJyYXJhQHByb3htb3guY29tLwoKPgo+IHNpZGUtbm90ZTogc2hvdWxkIHdlIG1lbnRpb24gc29t ZXdoZXJlIHRoYXQgcGx1Z2luIGNvZGUgaXMgbm90IGNhbGxlZAo+IGRpcmVjdGx5IChwcmUtZXhp c3RpbmcgZXhjZXB0aW9ucyB0aGF0IHdlIHdhbnQgdG8gZ2V0IHJpZCBvZmYgaWdub3JlZCksCj4g YnV0IHRoYXQgUFZFOjpTdG9yYWdlIGlzIHRoZSAiZ2F0ZXdheSIvaW50ZXJmYWNlIGZvciBpdD8K ClllYWgsIGdvb2QgcG9pbnQ7IHdlIHNob3VsZCBkZWZpbml0ZWx5IG1lbnRpb24gdGhhdC4gV2ls bCBpbmNsdWRlIGl0IGluIHYyIQoKPgo+ID4gKwo+ID4gKz1oZWFkMiBERUZBVUxUIElNUExFTUVO VEFUSU9OUwo+ID4gKwo+ID4gK0M8TDxQVkU6OlN0b3JhZ2U6OlBsdWdpbj4+IGltcGxlbWVudHMg bW9zdCBvZiB0aGUgbWV0aG9kcyBsaXN0ZWQgaW4KPiA+ICtMPC9QTFVHSU4gSU5URVJGQUNFIE1F VEhPRFM+IGJ5IGRlZmF1bHQuIFRoZXNlIHByb3ZpZGVkIGltcGxlbWVudGF0aW9ucyBhcmUKPiA+ ICt0YWlsb3JlZCB0b3dhcmRzIGZpbGUtYmFzZWQgc3RvcmFnZXMgYW5kIGNhbiB0aGVyZWZvcmUg YmUgdXNlZCBhcy1pcyBpbiB0aGF0Cj4gPiArY2FzZS4gUGx1Z2lucyBmb3Igb3RoZXIga2luZHMg b2Ygc3RvcmFnZXMgd2lsbCBtb3N0IGxpa2VseSBoYXZlIHRvIGFkYXB0IGVhY2gKPiA+ICttZXRo b2QgZm9yIHRoZWlyIGluZGl2aWR1YWwgdXNlIGNhc2VzLgo+Cj4gc2VlIGFib3ZlCj4KPiA+ICsK PiA+ICs9aGVhZDIgR0VORVJBTCBQQVJBTUVURVJTCj4gPiArCj4gPiArVGhlIHBhcmFtZXRlciBu YW1pbmcgdGhyb3VnaG91dCB0aGUgY29kZSBpcyBrZXB0IGFzIGNvbnNpc3RlbnQgYXMgcG9zc2li bGUuCj4gPiArVGhlcmVmb3JlLCBjb21tb24gcmVhcHBlYXJpbmcgc3Vicm91dGluZSBwYXJhbWV0 ZXJzIGFyZSBsaXN0ZWQgaGVyZSBmb3IKPiA+ICtjb252ZW5pZW5jZToKPiA+ICsKPiA+ICs9b3Zl cgo+ID4gKwo+ID4gKz1pdGVtICogQzw8IFwlc2NmZyA+Pgo+ID4gKwo+ID4gK1RoZSBzdG9yYWdl IGNvbmZpZ3VyYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBDPCRzdG9yZWlkPi4gVGhp cyBpcyBhCj4gPiArcmVmZXJlbmNlIHRvIGEgaGFzaCB0aGF0IHJlcHJlc2VudHMgdGhlIHNlY3Rp b24gYXNzb2NpYXRlZCB3aXRoIEM8JHN0b3JlaWQ+IGluCj4gPiArQzwvZXRjL3B2ZS9zdG9yYWdl LmNmZz4uCj4gPiArCj4gPiArPWl0ZW0gKiBDPDwgJHN0b3JlaWQgPj4KPiA+ICsKPiA+ICtUaGUg SUQgb2YgdGhlIHN0b3JhZ2UuIFRoaXMgSUQgaXMgdXNlci1wcm92aWRlZDsgdGhlIElEcyBmb3Ig ZXhpc3RpbmcKPiA+ICtzdG9yYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIFVJIHZpYSBCPDwgRGF0 YWNlbnRlciA+IFN0b3JhZ2UgPj4uCj4KPiBUaGUgdW5pcXVlIElEIG9mIHRoZSBzdG9yYWdlLCBh cyB1c2VkIGluIEM8L2V0Yy9wdmUvc3RvcmFnZS5jZmc+IGFuZCBhcwo+IHBhcnQgb2YgZXZlcnkg dm9saWQuCj4KPiB0aGlzIGlzIG5vdCByZWFsbHkgdXNlci1wcm92aWRlZCBpbiBtb3N0IGNhc2Vz ICh0aGF0IG1ha2VzIGl0IHNvdW5kIGxpa2UKPiB5b3UgaGF2ZSB0byBiZSBzdXBlciBjYXJlZnVs IHdoZW4gaGFuZGxpbmcgaXQgdG8gcHJldmVudCBleHBsb2l0cyksCj4gYWx0aG91Z2ggdGhlIHVz ZXIgb2YgY291cnNlIGluaXRpYWxseSBuYW1lZCB0aGUgc2VjdGlvbiBsaWtlIHRoYXQgOykKCkFD SyEgVGhhbmtzIGZvciB0aGUgc3VnZ2VzdGlvbiEKCj4KPiA+ICsKPiA+ICs9aXRlbSAqIEM8PCAk dm9sbmFtZSA+Pgo+ID4gKwo+ID4gK1RoZSBuYW1lIG9mIGEgdm9sdW1lLiBUaGUgdGVybSBJPHZv bHVtZT4gY2FuIHJlZmVyIHRvIGEgZGlzayBpbWFnZSwgYW4gSVNPCj4gPiAraW1hZ2UsIGEgYmFj a3VwLCBldGMuIGRlcGVuZGluZyBvbiB0aGUgY29udGVudCB0eXBlIG9mIHRoZSB2b2x1bWUuCj4K PiBiYWNrdXAgYXJjaGl2ZS9zbmFwc2hvdCA/Cj4KPiBzaG91bGQgd2UgbGlzdCBhbGwgdHlwZXMg aGVyZT8KClBlcmhhcHMgbm90IGhlcmUsIGJ1dCBtYXliZSBpbiBhIHNlcGFyYXRlIHNlY3Rpb24g aW5zdGVhZCB0byB3aGljaCB3ZQpjYW4gcmVmZXIgdG8/IFRoZW4gYWdhaW4sIHRoZXkncmUgbGlz dGVkIGluIHRoZSBkb2NzdHJpbmcgZm9yCmBwbHVnaW5kYXRhKClgLiBQZXJoYXBzIGl0cyBkb2Nz IGNvdWxkIGJlbmVmaXQgZnJvbSBzdWNoIGEgc2VjdGlvbiwgdG9vLgoKSSdsbCBzZWUgd2hhdCBJ IGNhbiBkby4KCj4KPiA+ICsKPiA+ICs9aXRlbSAqIEM8PCAkdm9saWQgPj4KPiA+ICsKPiA+ICtU aGUgSUQgb2YgYSB2b2x1bWUsIHdoaWNoIGlzIGVzc2VudGlhbGx5IEM8IiR7c3RvcmVpZH06JHt2 b2xuYW1lfSI+LiBMZXNzIHVzZWQKPiA+ICt3aXRoaW4gdGhlIHBsdWdpbiBBUEksIGJ1dCBuZXZl cnRoZWxlc3MgcmVsZXZhbnQuCj4KPiBzL2Vzc2VudGlhbGx5Ly8gKGl0IGlzIGV4YWN0bHkgdGhh dCwgbm90IGVzc2VudGlhbGx5KQo+Cj4gdGhlIHNlY29uZCBzZW50ZW5jZSBkb2Vzbid0IHJlYWxs eSBhZGQgbXVjaCwgaWYgd2Ugd2FudCB0byBrZWVwIGl0LCB0aGVuCj4gSSBzdWdnZXN0IHJlcGxh Y2luZyBpdCB3aXRoIHNvbWV0aGluZyBsaWtlCj4KPiBGcmVxdWVudGx5IHVzZWQgaW4gZ3Vlc3Qt c3BlY2lmaWMgQVBJIGNhbGxzIGFuZCBwYXNzZWQgdG8KPiBQVkU6OlN0b3JhZ2U6OnBhcnNlX3Zv bHVtZV9pZCB0byBzcGxpdCBpdCBpbnRvIHN0b3JlaWQgYW5kIHZvbG5hbWUgcGFydHMKPiBiZWZv cmUgY2FsbGluZyBpbnRvIHN0b3JhZ2UgcGx1Z2luIGNvZGUuCgpBZ3JlZSwgdGhpcyBpcyBtdWNo IGJldHRlci4KCj4KPiA+ICsKPiA+ICs9aXRlbSAqIEM8PCAkc25hcG5hbWUgPj4gKG9yIEM8PCAk c25hcCA+PikKPiA+ICsKPiA+ICtUaGUgbmFtZSBvZiBhIHNuYXBzaG90IGFzc29jaWF0ZWQgd2l0 aCB0aGUgZ2l2ZW4gQzwkdm9sbmFtZT4uCj4KPiB3aGF0IGlzICJnaXZlbiIgaGVyZT8gdGhlIHBo cmFzaW5nIGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgSU1ITyA7KQoKV29vcHMsIHRoYXQgd2Fz IGEgcmVtbmFudCBvZiB3aGVuIEkgd2FzIG1vdmluZyB0aGlzIGFyb3VuZC4gVGhhbmtzIGZvcgpz cG90dGluZyEKCj4KPiBUaGUgbmFtZSBvZiBhIHNuYXBzaG90IG9mIGEgdm9sdW1lLgo+Cj4gPiAr Cj4gPiArPWl0ZW0gKiBDPDwgXCVjYWNoZSA+Pgo+ID4gKwo+ID4gK1NlZSBMPENBQ0hJTkcgRVhQ RU5TSVZFIE9QRVJBVElPTlM+Lgo+ID4gKwo+ID4gKz1pdGVtICogQzw8ICR2bWlkID4+Cj4gPiAr Cj4gPiArVGhlIElEIG9mIGEgZ3Vlc3QgKHNvLCBlaXRoZXIgb2YgYSBWTSBvciBhIGNvbnRhaW5l cikuCj4gPiArCj4gPiArPWJhY2sKPiA+ICsKPiA+ICs9aGVhZDIgQ0FDSElORyBFWFBFTlNJVkUg T1BFUkFUSU9OUwo+ID4gKwo+ID4gK0NlcnRhaW4gbWV0aG9kcyB0YWtlIGEgQzxcJWNhY2hlPiBh cyBwYXJhbWV0ZXIsIHdoaWNoIGlzIHVzZWQgdG8gc3RvcmUgdGhlCj4gPiArcmVzdWx0cyBvZiB0 aW1lLWNvbnN1bWluZyAvIGV4cGVuc2l2ZSBvcGVyYXRpb25zIHNwZWNpZmljIHRvIGNlcnRhaW4g cGx1Z2lucy4KPgo+IHRoaXMgaXMgbm90IHJlYWxseSBhY2N1cmF0ZS4gdGhlIGNhY2hlIGlzIHVz ZWQgdG8gc3RvcmUgZGlmZmVyZW50Cj4gaW5mb3JtYXRpb24sIGN1cnJlbnRseSAoYWNjb3JkaW5n IHRvIGEgcXVpY2sgZ3JlcCB0aHJvdWdoIHRoZSBjb2RlKToKPgo+IGZvciBzdG9yYWdlcyAoYWN0 aXZhdGVfc3RvcmFnZS9hY3RpdmF0ZV9zdG9yYWdlX2xpc3QpOgo+IC0gcGFyc2VkIC9wcm9jL21v dW50cyBmb3IgdmFyaW91cyBkaXItYmFzZWQgc3RvcmFnZXMgd2hlcmUgdGhlIHBsdWdpbgo+ICAg aGFuZGxlcyBtb3VudGluZywgdG8gc3BlZWQgdXAgImlzIHN0b3JhZ2UgYWxyZWFkeSBtb3VudGVk IiBjaGVja3MKPiAtIHVkZXYgc2VxdWVuY2UgbnVtYmVycyAodG8ga25vdyB3aGV0aGVyIHVkZXYg bmVlZHMgc2V0dGxpbmcgYWZ0ZXIKPiAgIGFjdGl2YXRpbmcgYSBzdG9yYWdlKQo+IC0gYSBmbGFn IHRoYXQgYSBzdG9yYWdlIHdhcyBhY3RpdmF0ZWQgKGFzIGFuIG9wdGltaXphdGlvbiB0byBza2lw Cj4gICAiaXMgaXQgYWxyZWFkeSBhY3RpdmUiIGNoZWNrcykKPgo+IHRoaXMgYWxyZWFkeSBtaXhl cyBzdGF0ZSBvZiBQVkU6OlN0b3JhZ2Ugd2l0aCBwbHVnaW4tc3BlY2lmaWMgZGF0YSwKPiB3aGlj aCBpcyBhIG1lc3MuCj4KPiB3aGVuIGxpc3RpbmcgaW1hZ2VzIGFjcm9zcyBtdWx0aXBsZSBzdG9y YWdlczoKPiAtIHZncy9sdnMgb3V0cHV0IChMVk0gcGx1Z2lucykKPgo+IHRoYXQgb25lIHdlJ3Zl IGVsaW1pbmF0ZWQgZnJvbSBtb3N0IHBsdWdpbnMsIHNpbmNlIGl0IHJhcmVseSBtYWtlcwo+IHNl bnNlLiBMVk0gaXMgYSBiaXQgb2YgYW4gZXhjZXB0aW9uIHRoZXJlLCBhcyB3ZSBxdWVyeSBnbG9i YWwgTFZNIHN0YXRlCj4gdGhhdCBpcyB2YWxpZCBmb3IgbXVsdGlwbGUgc3RvcmFnZSBpbnN0YW5j ZXMuIHRoaXMgbWF5YmUgY291bGQgYmUKPiBjaGFuZ2VkIHRvIGRyb3AgdGhlIHVzYWdlIGFzIHdl bGwsIGFuZCBpbnN0ZWFkIHF1ZXJ5IFZHLXNwZWNpZmljCj4gaW5mb3JtYXRpb24gb25seT8KPgo+ ID4gK1RoZSBleGFjdCBsaWZldGltZSBvZiB0aGUgY2FjaGVkIGRhdGEgaXMgQjx1bnNwZWNpZmll ZD4sIHNpbmNlIGl0IGRlcGVuZHMgb24KPiA+ICt0aGUgZXhhY3QgdXNhZ2Ugb2YgdGhlIEM8TDxQ VkU6OlN0b3JhZ2U+PiBBUEksIGJ1dCBjYW4gZ2VuZXJhbGx5IGJlIGFzc3VtZWQgdG8KPiA+ICti ZSBCPHNob3J0LWxpdmVkPi4KPgo+IHRoaXMgaXMgbm90IHJlYWxseSBzb21ldGhpbmcgdGhhdCBo ZWxwcyBtZSBhcyBhIHBsdWdpbiBkZXZlbG9wZXIgLSB3aGF0Cj4ga2luZCBvZiBpbmZvcm1hdGlv biBjYW4vc2hvdWxkL211c3QgSSBzdG9yZSBpbiB0aGUgY2FjaGUgKG9yIG5vdCk/IGhvdwo+IGlz IGl0IHN0cnVjdHVyZWQ/Cj4KPiA+ICsKPiA+ICtGb3IgZXhhbXBsZSwgdGhlIEM8TDxQVkU6OlN0 b3JhZ2U6OkxWTVBsdWdpbj4+IHVzZXMgdGhpcyBjYWNoZSB0byBzdG9yZSB0aGUKPiA+ICtwYXJz ZWQgb3V0cHV0IG9mIHRoZSBDPGx2cz4gY29tbWFuZC4gU2luY2UgdGhlIG51bWJlciBhbmQgcHJl Y2lzZSBpbmZvcm1hdGlvbgo+ID4gK2Fib3V0IExWTSdzIGxvZ2ljYWwgdm9sdW1lcyBpcyB1bmxp a2VseSB0byBjaGFuZ2Ugd2l0aGluIGEgc2hvcnQgdGltZSwgb3RoZXIKPiA+ICtBUEkgbWV0aG9k cyBjYW4gdGhlbiB1c2UgdGhpcyBkYXRhIGluIG9yZGVyIHRvIGF2b2lkIHJlcGVhdGVkbHkgY2Fs bGluZyBhbmQKPiA+ICtwYXJzaW5nIHRoZSBvdXRwdXQgb2YgQzxsdnM+Lgo+Cj4gdGhpcyByZWFk cyBsaWtlIHRoZSBjYWNoZSBpcyB1c2VkIGFjcm9zcyBQVkUgQVBJIGNhbGxzIChhbHRob3VnaCBt YXliZQo+IHlvdSBtZWFudCAic3RvcmFnZSBwbHVnaW4gQVBJIj8pLiB0aGUgb3JpZ2luYWwgKGZs YXdlZCkgcmVhc29uIHdhcy9pcwo+IHRoYXQgaWYgd2UgYWN0aXZhdGUgMjAgdm9sdW1lcyBvbiBh IHNpbmdsZSBzdG9yYWdlIGZvciBhIGNlcnRhaW4gdGFzaywKPiB0aGVuIGl0IGlzIGVub3VnaCB0 byBjaGVjayB3aXRoIExWTSBvbmNlIGFuZCByZS11c2UgdGhlIChzbGlnaHRseSBzdGFsZSkKPiBk YXRhLiB0aGlzIHNpbmNlIGdvdCBlbGltaW5hdGVkIGZyb20gbW9zdCBwbHVnaW5zIGFzIGl0IHdh cyBub3Qgd29ya2luZy4KPiB0aGUgb3RoZXIgdXNlIGNhc2UgKHNlZSBhYm92ZSkgaXMgaWYgd2Ug KHBvdGVudGlhbGx5KSBhY3RpdmF0ZSAxMAo+IHN0b3JhZ2VzLCB3ZSBjYW4gY2hlY2sgb25jZSB3 aGF0IGlzIGFscmVhZHkgbW91bnRlZCBhbmQgcmUtdXNlIHRoYXQgZm9yCj4gdGhlIHN1YnNlcXVl bnQgOSBhY3RpdmF0aW9ucy4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzIHdvcnRoIGl0IGVpdGhlciB0 bwo+IGJlIGhvbmVzdC4KPgo+ID4gKwo+ID4gK1RoaXJkLXBhcnR5IHBsdWdpbiBkZXZlbG9wZXJz IHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgZGF0YSBzdG9yZWQgYW5kIHJldHJpZXZlZAo+ID4gK2lz IHNwZWNpZmljIHRvIHRoZWlyIHBsdWdpbiwgYW5kIG5vdCByZWx5IG9uIHRoZSBkYXRhIHRoYXQg b3RoZXIgcGx1Z2lucyBtaWdodAo+ID4gK3N0b3JlIGluIEM8XCVjYWNoZT4uIEZ1cnRoZXJtb3Jl LCB0aGUgbmFtZXMgb2Yga2V5cyBzaG91bGQgYmUgcmF0aGVyIHVuaXF1ZSBpbgo+ID4gK3RoZSBz ZW5zZSB0aGF0IHRoZXkncmUgdW5saWtlbHkgdG8gY29uZmxpY3Qgd2l0aCBhbnkgZnV0dXJlIGtl eXMgdGhhdCBtYXkgYmUKPiA+ICtpbnRyb2R1Y2VkIGludGVybmFsbHkuIFRvIGlsbHVzdHJhdGUs IGUuZy4gQzxteXBsdWdpbl9tb3VudHM+IHNob3VsZCBiZSB1c2VkCj4gPiAraW5zdGVhZCBvZiBh IHBsYWluIEM8bW91bnRzPiBrZXkuCj4KPiBhbmQgdGhpcyBoZXJlIGNsZWFybHkgc2hvd3MgdGhh dCB0aGUgY3VycmVudCBpbnRlcmZhY2UgaXMgYm9ndXMgYW5kCj4gdW5kZXItc3BlY2lmaWVkIGlu IGFueSBjYXNlLiBzbyB1bnRpbCB0aGF0IGlzIGZpeGVkLCB0aGlzIGhlcmUgc2hvdWxkCj4gcmVh ZCAiaWdub3JlIHRoZSBjYWNoZSBwYXJhbWV0ZXIgaXQgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5 Ii4gaWYgYQo+IHBsdWdpbiBuZWVkcyB0byBjYWNoZSB0aGluZ3MgaW50ZXJuYWxseSwgaXQgY2Fu IGRvIHNvIGFueXdheSBiYXNlZCBvbgo+IGl0cyBvd24gY3JpdGVyaWEuLgoKSW4gdGhlIGluaXRp YWwgZGVzY3JpcHRpb24gSSB0cmllZCB0byBzaW1wbGlmeSAvIGdlbmVyYWxpemUgaXRzCmRlc2Ny aXB0aW9uIGFuZCBub3QgcmVhbGx5IGRvY3VtZW50IGV2ZXJ5IHNpbmdsZSBpbXBsZW1lbnRhdGlv biBkZXRhaWwKc28gdGhhdCB0aGlyZC1wYXJ0eSBkZXZzIGNvdWxkIHVzZSBpdCBmb3IgdGhlaXIg b3duIHB1cnBvc2VzIGluIG9yZGVyIHRvCmF2b2lkIHJ1bm5pbmcgdGhlIHNhbWUgdGltZS1jb25z dW1pbmcgY29kZSBpbiBzaG9ydCBzdWNjZXNzaW9uLgoKSSBoYWRuJ3QgcmVhbGx5IHRob3VnaHQg b2YgdGhlIGZhY3QgdGhhdCBwbHVnaW5zIGNhbiBqdXN0IGtlZXAgYW4KaW50ZXJuYWwgY2FjaGUg aWYgdGhleSB3YW50IHRvIGNhY2hlIHN0dWZmLiDwn6SmCgpTbyB5ZWFoLCBhZnRlciByZWFkaW5n IGFsbCB0aGlzLCBJIGFncmVlIHRoYXQgd2Ugc2hvdWxkIGp1c3QgZGV0ZXIgdGhpcmQKcGFydGll cyBmcm9tIHVzaW5nIHRoZSBwYXJhbWV0ZXIgYWx0b2dldGhlci4KClNpZGUtbm90ZTogSSdsbCBh bHNvIHJlZnJhaW4gZnJvbSB1c2luZyBpdCBpbiB0aGUgU1NIRlMgZXhhbXBsZSBwbHVnaW4gSQpy ZWNlbnRseSBjb29rZWQgdXAgWzJdLgoKWzJdOiBodHRwczovL2xvcmUucHJveG1veC5jb20vcHZl LWRldmVsLzIwMjUwMzI4MTcxMjA5LjUwMzEzMi0xLW0uY2FycmFyYUBwcm94bW94LmNvbS8KCj4K Pgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gcHZl LWRldmVsIG1haWxpbmcgbGlzdAo+IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+IGh0dHBz Oi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAoK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2 ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3Rz LnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK