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=-9.8 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 CD050C2D0A3 for ; Thu, 29 Oct 2020 19:54:00 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 249ED20838 for ; Thu, 29 Oct 2020 19:53:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CAzgok2B" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 249ED20838 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=containers-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 53CF987562; Thu, 29 Oct 2020 19:53:58 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pVNkPAb04uj7; Thu, 29 Oct 2020 19:53:56 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by hemlock.osuosl.org (Postfix) with ESMTP id 8934B87561; Thu, 29 Oct 2020 19:53:56 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 6DDC3C088B; Thu, 29 Oct 2020 19:53:56 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 4E473C0051 for ; Thu, 29 Oct 2020 19:53:54 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 3F9ED84D35 for ; Thu, 29 Oct 2020 19:53:54 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZWC9gFNrUC1y for ; Thu, 29 Oct 2020 19:53:52 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by whitealder.osuosl.org (Postfix) with ESMTPS id BDC5884C63 for ; Thu, 29 Oct 2020 19:53:51 +0000 (UTC) Received: by mail-wr1-f65.google.com with SMTP id g12so4064827wrp.10 for ; Thu, 29 Oct 2020 12:53:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=cc:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=REIA8X66yZu20+dtZ3E6RBW5Bhn6WWNGEorw32YjsiA=; b=CAzgok2B/oy3C9Q48tJ+NHMMd5HHNjY738xut3pYiE0pnflVsCQEdVQTBLpxuD+IgX WQUUZdHJKU8eWCXQzI3RmJBSyDssAjKTCwbYXBRPLfflfj+hX3f0lwBQ06/dTKVmcPLJ UicL8GMCty9OPqi6Z/EyX86WmHIVg9f2o6DXAj+FQKJZnS5RKw3IeR8udmIuUH5J6Pk/ svNLbovwG+gtg0mwoR9wKzJRaLwOBr5EQNSUP9HQdX36kjvpHp0qEs3jNwUWVb1oOhkR RL3xAWxyLYvrHB0jX1+SHw9SPU+n+tKcIeuoWCoICIVViNgzCiUcv6q7+X8CrbEUG1vz M+vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:cc:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=REIA8X66yZu20+dtZ3E6RBW5Bhn6WWNGEorw32YjsiA=; b=hrsUgPYvwjVNikQNqMi2H4hD6tSk8ADF9ML03KTQL+ErOV30l2cO+9Ev/8oYIwUoc/ hv55+lp9WUfZRvONGOTq39U9nR7wxspyYm9r/dZFcEhJb03ZtidtkNZF03KHkKqnBTcp 0TnIQCx+dGmYp4WjSPhZH9HbmD41ObSmNvCMbcOv4VSf0P5cl0MAovxYgu8GEabeAsLO zkzoGMYuim5O7cpY0jtDzKpUko2cBHHtLYthhpSzWnOuBGK/v4VeoT4Jj4XYIvX3AcYk HMAWDclUgqZ364ntqjruK/u9IaACPMU3I3mR54WXHRiUEL3MWoAulg9XfI1hiISkARbH 3Y5A== X-Gm-Message-State: AOAM530h20K2U9cIJ8rAQMhFuigRf/L9UZhEjZrWnf1aUEWYwZv3iEWt J1r3FPhMwaotG3yGmcYNBXU= X-Google-Smtp-Source: ABdhPJzwDIXNj2hsyJQvNM/Z7oAkd5gAs4Mw8YcbECairI5W6QxGeukTBN7ilXCbYIpdpgGm89TLrQ== X-Received: by 2002:adf:f3c7:: with SMTP id g7mr8287024wrp.394.1604001229885; Thu, 29 Oct 2020 12:53:49 -0700 (PDT) Received: from ?IPv6:2001:a61:245a:d801:2e74:88ad:ef9:5218? ([2001:a61:245a:d801:2e74:88ad:ef9:5218]) by smtp.gmail.com with ESMTPSA id 71sm7538596wrm.20.2020.10.29.12.53.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Oct 2020 12:53:49 -0700 (PDT) Subject: Re: For review: seccomp_user_notif(2) manual page [v2] To: Christian Brauner References: <63598b4f-6ce3-5a11-4552-cdfe308f68e4@gmail.com> <20201029152609.k3urvzjocf3s7uml@gmail.com> From: "Michael Kerrisk (man-pages)" Message-ID: <91b74ce1-de95-2b92-c62e-e2715d6071d3@gmail.com> Date: Thu, 29 Oct 2020 20:53:45 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.3.1 MIME-Version: 1.0 In-Reply-To: <20201029152609.k3urvzjocf3s7uml@gmail.com> Content-Language: en-US Cc: Giuseppe Scrivano , Song Liu , Will Drewry , Kees Cook , Daniel Borkmann , linux-man , Robert Sesek , Containers , Jann Horn , lkml , Alexei Starovoitov , mtk.manpages@gmail.com, bpf , Andy Lutomirski , Christian Brauner X-BeenThere: containers@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux Containers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: containers-bounces@lists.linux-foundation.org Sender: "Containers" SGVsbG8gQ2hyaXN0aWFuCgpUaGFua3MgZm9yIHRha2luZyBhIGxvb2sgYXQgdGhlIHBhZ2UuCgpP biAxMC8yOS8yMCA0OjI2IFBNLCBDaHJpc3RpYW4gQnJhdW5lciB3cm90ZToKPiBPbiBNb24sIE9j dCAyNiwgMjAyMCBhdCAxMDo1NTowNEFNICswMTAwLCBNaWNoYWVsIEtlcnJpc2sgKG1hbi1wYWdl cykgd3JvdGU6Cj4+IEhpIGFsbCAoYW5kIGVzcGVjaWFsbHkgVHljaG8gYW5kIFNhcmd1biksCj4+ Cj4+IEZvbGxvd2luZyByZXZpZXcgY29tbWVudHMgb24gdGhlIGZpcnN0IGRyYWZ0ICh0aGFua3Mg dG8gSmFubiwgS2VlcywKPj4gQ2hyaXN0aWFuIGFuZCBUeWNobyksIEkndmUgbWFkZSBhIGxvdCBv ZiBjaGFuZ2VzIHRvIHRoaXMgcGFnZS4KPj4gSSd2ZSBhbHNvIGFkZGVkIGEgZmV3IEZJWE1FcyBy ZWxhdGluZyB0byBvdXRzdGFuZGluZyBBUEkgaXNzdWVzLgo+PiBJJ2QgbGlrZSBhIHNlY29uZCBw YXNzIHJldmlldyBvZiB0aGUgcGFnZSBiZWZvcmUgSSByZWxlYXNlIGl0Lgo+PiBCdXQgYWxzbywg dGhpcyBtYWlsIHNlcnZlcyBhcyBhIHdheSBvZiBub3RpbmcgdGhlIG91dHN0YW5kaW5nIEFQSQo+ PiBpc3N1ZXMuCj4+Cj4+IFR5Y2hvOiBJIHN0aWxsIGhhdmUgYW4gb3V0c3RhbmRpbmcgcXVlc3Rp b24gZm9yIHlvdSBhdCBbMl0uCj4+Cj4+IFNhcmd1bjogY2FuIHlvdSBwbGVhc2UgcHJlcGFyZSBz b21ldGhpbmcgb24gU0VDQ09NUF9BRERGRF9GTEFHX1NFVEZECj4+IGFuZCBTRUNDT01QX0lPQ1RM X05PVElGX0FEREZEIHRvIGJlIGFkZGVkIHRvIHRoaXMgcGFnZT8KPj4KPj4gSSd2ZSBzaG93biB0 aGUgcmVuZGVyZWQgdmVyc2lvbiBvZiB0aGUgcGFnZSBiZWxvdy4gVGhlIHBhZ2Ugc291cmNlCj4+ IGN1cnJlbnRseSBzaXRzIGluIGEgYnJhbmNoIGF0Cj4+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcv cHViL3NjbS9kb2NzL21hbi1wYWdlcy9tYW4tcGFnZXMuZ2l0L2xvZy8/aD1zZWNjb21wX3VzZXJf bm90aWYKPj4KPj4gQXQgdGhpcyBwb2ludCwgSSdtIG1haW5seSBpbnRlcmVzdGVkIGluIGZlZWRi YWNrIGFib3V0IHRoZSBGSVhNRXMsCj4+IHNvbWUgb2Ygd2hpY2ggcmVsYXRlIHRvIHRoZSB0ZXh0 IG9mIHRoZSBwYWdlIGl0c2VsZiwgd2hpbGUgdGhlCj4+IG90aGVycyByZWxhdGUgdG8gdGhlIHZh cmlvdXMgb3V0c3RhbmRpbmcgQVBJIGlzc3Vlcy4gVGhlIGZpcnN0IAo+PiBGSVhNRSBwcm92aWRl cyBhIHNtYWxsIG9wcG9ydHVuaXR5IGZvciBzb21lIGJpa2VzaGVkZGluZyA6LSk7Cj4gCj4gSSBs aWtlIHRoaXMgbWFucGFnZS4gSSB0aGluayB0aGlzIGlzIHRoZSBtb3N0IGNvbXByZWhlbnNpdmUg ZXhwbGFuYXRpb24KPiBvZiBhbnkgc2VjY29tcCBmZWF0dXJlCgpUaGFua3MgKGF0IGxlYXN0LCBJ IHRoaW5rIHNvLi4uKQoKPiBhbmQgc29tZXdoYXQgdW5kZXJzdGFuZGFibGUuCiAgICAgIF5eXl5e Xl5eCgooLi4uIGJ1dCBJJ20gbm90IHN1cmUgOy0pLikKCj4gSnVzdCB0aW55IGNvbW1lbnRzIGJl bG93LCBob3BlZnVsbHkgbm8gYmlrZS1zaGVkZGluZyB0aG91Z2guIDopCgpNb3N0IHJlbGV2YW50 IHBvaW50IGZvciBiaWtlc2hlZGRpbmcgaXMgdGhlIHBhZ2UgbmFtZS4gSSBwbGFuIAp0byBjaGFu Z2UgaXQgdG8gc2VjY29tcF91bm90aWZ5KDIpIChzaG9ydGVyLCByZWFkcyBiZXR0ZXIgb3V0IGxv dWQpLgoKPj4gVGhhbmtzLAo+Pgo+PiBNaWNoYWVsCj4+Cj4+IFsxXSBodHRwczovL2xvcmUua2Vy bmVsLm9yZy9saW51eC1tYW4vNDVmMDdmMTctMThiNi1kMTg3LTA5MTQtNmYzNDFmZTkwODU3QGdt YWlsLmNvbS8KPj4gWzJdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LW1hbi84ZjIwZDU4 Ni05NjA5LWVmODMtYzg1YS0yNzJlMzdlNjg0ZDhAZ21haWwuY29tLwo+Pgo+PiA9PT09PQo+Pgo+ PiBTRUNDT01QX1VTRVJfTk9USUYoMikgICBMaW51eCBQcm9ncmFtbWVyJ3MgTWFudWFsICBTRUND T01QX1VTRVJfTk9USUYoMikKClsuLi5dCgo+PiAgICAgICAgQW4gb3ZlcnZpZXcgb2YgdGhlIHN0 ZXBzIHBlcmZvcm1lZCBieSB0aGUgdGFyZ2V0IGFuZCB0aGUKPj4gICAgICAgIHN1cGVydmlzb3Ig aXMgYXMgZm9sbG93czoKPj4KPj4gICAgICAgIDEuIFRoZSB0YXJnZXQgZXN0YWJsaXNoZXMgYSBz ZWNjb21wIGZpbHRlciBpbiB0aGUgdXN1YWwgbWFubmVyLAo+PiAgICAgICAgICAgYnV0IHdpdGgg dHdvIGRpZmZlcmVuY2VzOgo+Pgo+PiAgICAgICAgICAgwrcgVGhlIHNlY2NvbXAoMikgZmxhZ3Mg YXJndW1lbnQgaW5jbHVkZXMgdGhlIGZsYWcKPj4gICAgICAgICAgICAgU0VDQ09NUF9GSUxURVJf RkxBR19ORVdfTElTVEVORVIuICBDb25zZXF1ZW50bHksIHRoZSByZXR1cm4KPj4gICAgICAgICAg ICAgdmFsdWUgb2YgdGhlIChzdWNjZXNzZnVsKSBzZWNjb21wKDIpIGNhbGwgaXMgYSBuZXcKPj4g ICAgICAgICAgICAgImxpc3RlbmluZyIgZmlsZSBkZXNjcmlwdG9yIHRoYXQgY2FuIGJlIHVzZWQg dG8gcmVjZWl2ZQo+PiAgICAgICAgICAgICBub3RpZmljYXRpb25zLiAgT25seSBvbmUgImxpc3Rl bmluZyIgc2VjY29tcCBmaWx0ZXIgY2FuIGJlCj4+ICAgICAgICAgICAgIGluc3RhbGxlZCBmb3Ig YSB0aHJlYWQuCj4+Cj4+ICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUkAo+PiAgICAgICAgICAgICDilIJGSVhNRSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUggo+PiAgICAgICAgICAgICDi lJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKQKPj4gICAg ICAgICAgICAg4pSCSXMgdGhlIGxhc3Qgc2VudGVuY2UgYWJvdmUgY29ycmVjdD8gICAgICAgICAg ICAgICAgICDilIIKPj4gICAgICAgICAgICAg4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKPj4gICAgICAgICAgICAg4pSCS2VlcyBDb29r ICgyNSBPY3QgMjAyMCkgbm90ZXM6ICAgICAgICAgICAgICAgICAgICAgICDilIIKPj4gICAgICAg ICAgICAg4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICDilIIKPj4gICAgICAgICAgICAg4pSCSSBsaWtlIHRoaXMgbGltaXRhdGlvbiwgYnV0IEkg ZXhwZWN0IHRoYXQgaXQnbGwgbmVlZCDilIIKPj4gICAgICAgICAgICAg4pSCdG8gY2hhbmdlIGlu IHRoZSBmdXR1cmUuIEV2ZW4gd2l0aCBMU01zLCB3ZSBzZWUgdGhlICDilIIKPj4gICAgICAgICAg ICAg4pSCbmVlZCBmb3IgYXJiaXRyYXJ5IHN0YWNraW5nLCBhbmQgdGhlIGlkZWEgb2YgdGhlcmUg ICDilIIKPj4gICAgICAgICAgICAg4pSCYmVpbmcgb25seSAxIHN1cGVydmlzb3Igd2lsbCBldmVu dHVhbGx5IGJyZWFrIGRvd24uICDilIIKPj4gICAgICAgICAgICAg4pSCUmlnaHQgbm93IHRoZXJl IGlzIG9ubHkgMSBiZWNhdXNlIG9ubHkgY29udGFpbmVyICAgICDilIIKPj4gICAgICAgICAgICAg 4pSCbWFuYWdlcnMgYXJlIHVzaW5nIHRoaXMgZmVhdHVyZS4gQnV0IGlmIHNvbWUgZGFlbW9uICDi lIIKPj4gICAgICAgICAgICAg4pSCc3RhcnRzIHVzaW5nIGl0IHRvIGlzb2xhdGUgc29tZSB0aHJl YWQsIHN1ZGRlbmx5IGl0ICDilIIKPj4gICAgICAgICAgICAg4pSCbWlnaHQgYnJlYWsgaWYgYSBj b250YWluZXIgbWFuYWdlciBpcyB0cnlpbmcgdG8gICAgICDilIIKPj4gICAgICAgICAgICAg4pSC bGlzdGVuIHRvIGl0IHRvbywgZXRjLiBJIGV4cGVjdCBpdCB3b24ndCBiZSBuZWVkZWQgICDilIIK Pj4gICAgICAgICAgICAg4pSCc29vbiwgYnV0IEkgZG8gdGhpbmsgaXQnbGwgY2hhbmdlLiAgICAg ICAgICAgICAgICAgICDilIIKPj4gICAgICAgICAgICAg4pSCICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKPj4gICAgICAgICAgICAg4pSU4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYCj4+Cj4+ICAgICAg ICAgICDCtyBJbiBjYXNlcyB3aGVyZSBpdCBpcyBhcHByb3ByaWF0ZSwgdGhlIHNlY2NvbXAgZmls dGVyIHJldHVybnMKPj4gICAgICAgICAgICAgdGhlIGFjdGlvbiB2YWx1ZSBTRUNDT01QX1JFVF9V U0VSX05PVElGLiAgVGhpcyByZXR1cm4gdmFsdWUKPj4gICAgICAgICAgICAgd2lsbCB0cmlnZ2Vy IGEgbm90aWZpY2F0aW9uIGV2ZW50Lgo+Pgo+PiAgICAgICAgMi4gSW4gb3JkZXIgdGhhdCB0aGUg c3VwZXJ2aXNvciBjYW4gb2J0YWluIG5vdGlmaWNhdGlvbnMgdXNpbmcKPj4gICAgICAgICAgIHRo ZSBsaXN0ZW5pbmcgZmlsZSBkZXNjcmlwdG9yLCAoYSBkdXBsaWNhdGUgb2YpIHRoYXQgZmlsZQo+ PiAgICAgICAgICAgZGVzY3JpcHRvciBtdXN0IGJlIHBhc3NlZCBmcm9tIHRoZSB0YXJnZXQgdG8g dGhlIHN1cGVydmlzb3IuCj4+ICAgICAgICAgICBPbmUgd2F5IGluIHdoaWNoIHRoaXMgY291bGQg YmUgZG9uZSBpcyBieSBwYXNzaW5nIHRoZSBmaWxlCj4+ICAgICAgICAgICBkZXNjcmlwdG9yIG92 ZXIgYSBVTklYIGRvbWFpbiBzb2NrZXQgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZQo+PiAgICAgICAg ICAgdGFyZ2V0IGFuZCB0aGUgc3VwZXJ2aXNvciAodXNpbmcgdGhlIFNDTV9SSUdIVFMgYW5jaWxs YXJ5Cj4+ICAgICAgICAgICBtZXNzYWdlIHR5cGUgZGVzY3JpYmVkIGluIHVuaXgoNykpLgo+IAo+ IEZ3aXcsIG9uIG5ld2VyIGtlcm5lbHMgeW91IGNvdWxkIGFsc28gdXNlIHBpZGZkX2dldGZkKCkg Zm9yIHRoYXQuCgpUaGFua3MuIEkgYWRkZWQgdGhhdCB0byB0aGUgdGV4dC4KCj4+ICAgICAgICAz LiBUaGUgc3VwZXJ2aXNvciB3aWxsIHJlY2VpdmUgbm90aWZpY2F0aW9uIGV2ZW50cyBvbiB0aGUK Pj4gICAgICAgICAgIGxpc3RlbmluZyBmaWxlIGRlc2NyaXB0b3IuICBUaGVzZSBldmVudHMgYXJl IHJldHVybmVkIGFzCj4+ICAgICAgICAgICBzdHJ1Y3R1cmVzIG9mIHR5cGUgc2VjY29tcF9ub3Rp Zi4gIEJlY2F1c2UgdGhpcyBzdHJ1Y3R1cmUgYW5kCj4+ICAgICAgICAgICBpdHMgc2l6ZSBtYXkg ZXZvbHZlIG92ZXIga2VybmVsIHZlcnNpb25zLCB0aGUgc3VwZXJ2aXNvciBtdXN0Cj4+ICAgICAg ICAgICBmaXJzdCBkZXRlcm1pbmUgdGhlIHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUgdXNpbmcgdGhl Cj4+ICAgICAgICAgICBzZWNjb21wKDIpIFNFQ0NPTVBfR0VUX05PVElGX1NJWkVTIG9wZXJhdGlv biwgd2hpY2ggcmV0dXJucyBhCj4+ICAgICAgICAgICBzdHJ1Y3R1cmUgb2YgdHlwZSBzZWNjb21w X25vdGlmX3NpemVzLiAgVGhlIHN1cGVydmlzb3IKPj4gICAgICAgICAgIGFsbG9jYXRlcyBhIGJ1 ZmZlciBvZiBzaXplIHNlY2NvbXBfbm90aWZfc2l6ZXMuc2VjY29tcF9ub3RpZgo+PiAgICAgICAg ICAgYnl0ZXMgdG8gcmVjZWl2ZSBub3RpZmljYXRpb24gZXZlbnRzLiAgSW4gYWRkaXRpb24sdGhl Cj4+ICAgICAgICAgICBzdXBlcnZpc29yIGFsbG9jYXRlcyBhbm90aGVyIGJ1ZmZlciBvZiBzaXpl Cj4+ICAgICAgICAgICBzZWNjb21wX25vdGlmX3NpemVzLnNlY2NvbXBfbm90aWZfcmVzcCBieXRl cyBmb3IgdGhlIHJlc3BvbnNlCj4+ICAgICAgICAgICAoYSBzdHJ1Y3Qgc2VjY29tcF9ub3RpZl9y ZXNwIHN0cnVjdHVyZSkgdGhhdCBpdCB3aWxsIHByb3ZpZGUKPj4gICAgICAgICAgIHRvIHRoZSBr ZXJuZWwgKGFuZCB0aHVzIHRoZSB0YXJnZXQpLgo+Pgo+PiAgICAgICAgNC4gVGhlIHRhcmdldCB0 aGVuIHBlcmZvcm1zIGl0cyB3b3JrbG9hZCwgd2hpY2ggaW5jbHVkZXMgc3lzdGVtCj4+ICAgICAg ICAgICBjYWxscyB0aGF0IHdpbGwgYmUgY29udHJvbGxlZCBieSB0aGUgc2VjY29tcCBmaWx0ZXIu ICBXaGVuZXZlcgo+PiAgICAgICAgICAgb25lIG9mIHRoZXNlIHN5c3RlbSBjYWxscyBjYXVzZXMg dGhlIGZpbHRlciB0byByZXR1cm4gdGhlCj4+ICAgICAgICAgICBTRUNDT01QX1JFVF9VU0VSX05P VElGIGFjdGlvbiB2YWx1ZSwgdGhlIGtlcm5lbCBkb2VzIG5vdCAoeWV0KQo+PiAgICAgICAgICAg ZXhlY3V0ZSB0aGUgc3lzdGVtIGNhbGw7IGluc3RlYWQsIGV4ZWN1dGlvbiBvZiB0aGUgdGFyZ2V0 IGlzCj4+ICAgICAgICAgICB0ZW1wb3JhcmlseSBibG9ja2VkIGluc2lkZSB0aGUga2VybmVsIChp biBhIHNsZWVwIHN0YXRlIHRoYXQKPj4gICAgICAgICAgIGlzIGludGVycnVwdGlibGUgYnkgc2ln bmFscykgYW5kIGEgbm90aWZpY2F0aW9uIGV2ZW50IGlzCj4+ICAgICAgICAgICBnZW5lcmF0ZWQg b24gdGhlIGxpc3RlbmluZyBmaWxlIGRlc2NyaXB0b3IuCj4+Cj4+ICAgICAgICA1LiBUaGUgc3Vw ZXJ2aXNvciBjYW4gbm93IHJlcGVhdGVkbHkgbW9uaXRvciB0aGUgbGlzdGVuaW5nIGZpbGUKPj4g ICAgICAgICAgIGRlc2NyaXB0b3IgZm9yIFNFQ0NPTVBfUkVUX1VTRVJfTk9USUYtdHJpZ2dlcmVk IGV2ZW50cy4gIFRvIGRvCj4+ICAgICAgICAgICB0aGlzLCB0aGUgc3VwZXJ2aXNvciB1c2VzIHRo ZSBTRUNDT01QX0lPQ1RMX05PVElGX1JFQ1YKPj4gICAgICAgICAgIGlvY3RsKDIpIG9wZXJhdGlv biB0byByZWFkIGluZm9ybWF0aW9uIGFib3V0IGEgbm90aWZpY2F0aW9uCj4+ICAgICAgICAgICBl dmVudDsgdGhpcyBvcGVyYXRpb24gYmxvY2tzIHVudGlsIGFuIGV2ZW50IGlzIGF2YWlsYWJsZS4g IFRoZQo+IAo+IE1heWJlIG1lbnRpb24gdGhhdCB1c2VycyBjYW4gY2hvb3NlIHRvIGVpdGhlciB1 c2UgdGhlIGJsb2NraW5nIGlvY3RsKCkKPiBkaXJlY3RseSBvciB1c2UgcG9sbCBzZW1hbnRpY3Mg YW5kIHBvaW50IHRvIHRoZSBzZWN0aW9uIGJlbG93LgoKVGhhbmtzLiBJIGFkZGVkIG1lbnRpb24g b2YgdGhlIHBvbGwvc2VsZWN0L2Vwb2xsIGhlcmUuCgo+IChEbyB3ZSBzdXBwb3J0IE9fTk9OQkxP Q0sgd2l0aCBTRUNDT01QX0lPQ1RMX05PVElGX1JFQ1YgYW5kIGlmIG5vdCBzaG91bGQKPiB3ZT8p CgpBIHF1aWNrIHRlc3Qgc3VnZ2VzdHMgdGhhdCBPX05PTkJMT0NLIGhhcyBubyBlZmZlY3Qgb24g dGhlIGJsb2NraW5nCmJlaGF2aW9yIG9mIFNFQ0NPTVBfSU9DVExfTk9USUZfUkVDVi4KCihJJ3Zl IGFkZGVkIHlvdXIgcXVlc3Rpb24gYW5kIHRoaXMgaW5mbyBhcyBhIEZJWE1FIGluIHRoZSBwYWdl LikKCj4+ICAgICAgICAgICBvcGVyYXRpb24gcmV0dXJucyBhIHNlY2NvbXBfbm90aWYgc3RydWN0 dXJlIGNvbnRhaW5pbmcKPj4gICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzeXN0ZW0g Y2FsbCB0aGF0IGlzIGJlaW5nIGF0dGVtcHRlZCBieQo+PiAgICAgICAgICAgdGhlIHRhcmdldC4K Pj4KPj4gICAgICAgIDYuIFRoZSBzZWNjb21wX25vdGlmIHN0cnVjdHVyZSByZXR1cm5lZCBieSB0 aGUKPj4gICAgICAgICAgIFNFQ0NPTVBfSU9DVExfTk9USUZfUkVDViBvcGVyYXRpb24gaW5jbHVk ZXMgdGhlIHNhbWUKPj4gICAgICAgICAgIGluZm9ybWF0aW9uIChhIHNlY2NvbXBfZGF0YSBzdHJ1 Y3R1cmUpIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUKPj4gICAgICAgICAgIHNlY2NvbXAgZmlsdGVy LiAgVGhpcyBpbmZvcm1hdGlvbiBhbGxvd3MgdGhlIHN1cGVydmlzb3IgdG8KPj4gICAgICAgICAg IGRpc2NvdmVyIHRoZSBzeXN0ZW0gY2FsbCBudW1iZXIgYW5kIHRoZSBhcmd1bWVudHMgZm9yIHRo ZQo+PiAgICAgICAgICAgdGFyZ2V0J3Mgc3lzdGVtIGNhbGwuICBJbiBhZGRpdGlvbiwgdGhlIG5v dGlmaWNhdGlvbiBldmVudAo+PiAgICAgICAgICAgY29udGFpbnMgdGhlIElEIG9mIHRoZSB0aHJl YWQgdGhhdCB0cmlnZ2VyZWQgdGhlIG5vdGlmaWNhdGlvbgo+PiAgICAgICAgICAgYW5kIGEgdW5p cXVlIGNvb2tpZSB2YWx1ZSB0aGF0IGlzIHVzZWQgaW4gc3Vic2VxdWVudAo+PiAgICAgICAgICAg U0VDQ09NUF9JT0NUTF9OT1RJRl9JRF9WQUxJRCBhbmQgU0VDQ09NUF9JT0NUTF9OT1RJRl9TRU5E Cj4+ICAgICAgICAgICBvcGVyYXRpb25zLgo+Pgo+PiAgICAgICAgICAgVGhlIGluZm9ybWF0aW9u IGluIHRoZSBub3RpZmljYXRpb24gY2FuIGJlIHVzZWQgdG8gZGlzY292ZXIKPj4gICAgICAgICAg IHRoZSB2YWx1ZXMgb2YgcG9pbnRlciBhcmd1bWVudHMgZm9yIHRoZSB0YXJnZXQncyBzeXN0ZW0g Y2FsbC4KPj4gICAgICAgICAgIChUaGlzIGlzIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIGRvbmUg ZnJvbSB3aXRoaW4gYSBzZWNjb21wCj4+ICAgICAgICAgICBmaWx0ZXIuKSAgT25lIHdheSBpbiB3 aGljaCB0aGUgc3VwZXJ2aXNvciBjYW4gZG8gdGhpcyBpcyB0bwo+PiAgICAgICAgICAgb3BlbiB0 aGUgY29ycmVzcG9uZGluZyAvcHJvYy9bdGlkXS9tZW0gZmlsZSAoc2VlIHByb2MoNSkpIGFuZAo+ PiAgICAgICAgICAgcmVhZCBieXRlcyBmcm9tIHRoZSBsb2NhdGlvbiB0aGF0IGNvcnJlc3BvbmRz IHRvIG9uZSBvZiB0aGUKPj4gICAgICAgICAgIHBvaW50ZXIgYXJndW1lbnRzIHdob3NlIHZhbHVl IGlzIHN1cHBsaWVkIGluIHRoZSBub3RpZmljYXRpb24KPj4gICAgICAgICAgIGV2ZW50LiAgKFRo ZSBzdXBlcnZpc29yIG11c3QgYmUgY2FyZWZ1bCB0byBhdm9pZCBhIHJhY2UKPj4gICAgICAgICAg IGNvbmRpdGlvbiB0aGF0IGNhbiBvY2N1ciB3aGVuIGRvaW5nIHRoaXM7IHNlZSB0aGUgZGVzY3Jp cHRpb24KPj4gICAgICAgICAgIG9mIHRoZSBTRUNDT01QX0lPQ1RMX05PVElGX0lEX1ZBTElEIGlv Y3RsKDIpIG9wZXJhdGlvbiBiZWxvdy4pCj4+ICAgICAgICAgICBJbiBhZGRpdGlvbiwgdGhlIHN1 cGVydmlzb3IgY2FuIGFjY2VzcyBvdGhlciBzeXN0ZW0KPj4gICAgICAgICAgIGluZm9ybWF0aW9u IHRoYXQgaXMgdmlzaWJsZSBpbiB1c2VyIHNwYWNlIGJ1dCB3aGljaCBpcyBub3QKPj4gICAgICAg ICAgIGFjY2Vzc2libGUgZnJvbSBhIHNlY2NvbXAgZmlsdGVyLgo+Pgo+PiAgICAgICAgNy4gSGF2 aW5nIG9idGFpbmVkIGluZm9ybWF0aW9uIGFzIHBlciB0aGUgcHJldmlvdXMgc3RlcCwgdGhlCj4+ ICAgICAgICAgICBzdXBlcnZpc29yIG1heSB0aGVuIGNob29zZSB0byBwZXJmb3JtIGFuIGFjdGlv biBpbiByZXNwb25zZSB0bwo+PiAgICAgICAgICAgdGhlIHRhcmdldCdzIHN5c3RlbSBjYWxsICh3 aGljaCwgYXMgbm90ZWQgYWJvdmUsIGlzIG5vdAo+PiAgICAgICAgICAgZXhlY3V0ZWQgd2hlbiB0 aGUgc2VjY29tcCBmaWx0ZXIgcmV0dXJucyB0aGUKPj4gICAgICAgICAgIFNFQ0NPTVBfUkVUX1VT RVJfTk9USUYgYWN0aW9uIHZhbHVlKS4KPj4KPj4gICAgICAgICAgIE9uZSBleGFtcGxlIHVzZSBj YXNlIGhlcmUgcmVsYXRlcyB0byBjb250YWluZXJzLiAgVGhlIHRhcmdldAo+PiAgICAgICAgICAg bWF5IGJlIGxvY2F0ZWQgaW5zaWRlIGEgY29udGFpbmVyIHdoZXJlIGl0IGRvZXMgbm90IGhhdmUK Pj4gICAgICAgICAgIHN1ZmZpY2llbnQgY2FwYWJpbGl0aWVzIHRvIG1vdW50IGEgZmlsZXN5c3Rl bSBpbiB0aGUKPj4gICAgICAgICAgIGNvbnRhaW5lcidzIG1vdW50IG5hbWVzcGFjZS4gIEhvd2V2 ZXIsIHRoZSBzdXBlcnZpc29yIG1heSBiZSBhCj4+ICAgICAgICAgICBtb3JlIHByaXZpbGVnZWQg cHJvY2VzcyB0aGF0IGRvZXMgaGF2ZSBzdWZmaWNpZW50IGNhcGFiaWxpdGllcwo+PiAgICAgICAg ICAgdG8gcGVyZm9ybSB0aGUgbW91bnQgb3BlcmF0aW9uLgo+Pgo+PiAgICAgICAgOC4gVGhlIHN1 cGVydmlzb3IgdGhlbiBzZW5kcyBhIHJlc3BvbnNlIHRvIHRoZSBub3RpZmljYXRpb24uICBUaGUK Pj4gICAgICAgICAgIGluZm9ybWF0aW9uIGluIHRoaXMgcmVzcG9uc2UgaXMgdXNlZCBieSB0aGUg a2VybmVsIHRvCj4+ICAgICAgICAgICBjb25zdHJ1Y3QgYSByZXR1cm4gdmFsdWUgZm9yIHRoZSB0 YXJnZXQncyBzeXN0ZW0gY2FsbCBhbmQKPj4gICAgICAgICAgIHByb3ZpZGUgYSB2YWx1ZSB0aGF0 IHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlIGVycm5vIHZhcmlhYmxlIG9mCj4+ICAgICAgICAgICB0 aGUgdGFyZ2V0Lgo+Pgo+PiAgICAgICAgICAgVGhlIHJlc3BvbnNlIGlzIHNlbnQgdXNpbmcgdGhl IFNFQ0NPTVBfSU9DVExfTk9USUZfU0VORAo+PiAgICAgICAgICAgaW9jdGwoMikgb3BlcmF0aW9u LCB3aGljaCBpcyB1c2VkIHRvIHRyYW5zbWl0IGEKPj4gICAgICAgICAgIHNlY2NvbXBfbm90aWZf cmVzcCBzdHJ1Y3R1cmUgdG8gdGhlIGtlcm5lbC4gIFRoaXMgc3RydWN0dXJlCj4+ICAgICAgICAg ICBpbmNsdWRlcyBhIGNvb2tpZSB2YWx1ZSB0aGF0IHRoZSBzdXBlcnZpc29yIG9idGFpbmVkIGlu IHRoZQo+PiAgICAgICAgICAgc2VjY29tcF9ub3RpZiBzdHJ1Y3R1cmUgcmV0dXJuZWQgYnkgdGhl Cj4+ICAgICAgICAgICBTRUNDT01QX0lPQ1RMX05PVElGX1JFQ1Ygb3BlcmF0aW9uLiAgVGhpcyBj b29raWUgdmFsdWUgYWxsb3dzCj4+ICAgICAgICAgICB0aGUga2VybmVsIHRvIGFzc29jaWF0ZSB0 aGUgcmVzcG9uc2Ugd2l0aCB0aGUgdGFyZ2V0LiAgVGhpcwo+PiAgICAgICAgICAgc3RydWN0dXJl IG11c3QgaW5jbHVkZSB0aGUgY29va2llIHZhbHVlIHRoYXQgdGhlIHN1cGVydmlzb3IKPj4gICAg ICAgICAgIG9idGFpbmVkIGluIHRoZSBzZWNjb21wX25vdGlmIHN0cnVjdHVyZSByZXR1cm5lZCBi eSB0aGUKPj4gICAgICAgICAgIFNFQ0NPTVBfSU9DVExfTk9USUZfUkVDViBvcGVyYXRpb247IHRo ZSBjb29raWUgYWxsb3dzIHRoZQo+PiAgICAgICAgICAga2VybmVsIHRvIGFzc29jaWF0ZSB0aGUg cmVzcG9uc2Ugd2l0aCB0aGUgdGFyZ2V0Lgo+Pgo+PiAgICAgICAgOS4gT25jZSB0aGUgbm90aWZp Y2F0aW9uIGhhcyBiZWVuIHNlbnQsIHRoZSBzeXN0ZW0gY2FsbCBpbiB0aGUKPj4gICAgICAgICAg IHRhcmdldCB0aHJlYWQgdW5ibG9ja3MsIHJldHVybmluZyB0aGUgaW5mb3JtYXRpb24gdGhhdCB3 YXMKPj4gICAgICAgICAgIHByb3ZpZGVkIGJ5IHRoZSBzdXBlcnZpc29yIGluIHRoZSBub3RpZmlj YXRpb24gcmVzcG9uc2UuCj4+Cj4+ICAgICAgICBBcyBhIHZhcmlhdGlvbiBvbiB0aGUgbGFzdCB0 d28gc3RlcHMsIHRoZSBzdXBlcnZpc29yIGNhbiBzZW5kIGEKPj4gICAgICAgIHJlc3BvbnNlIHRo YXQgdGVsbHMgdGhlIGtlcm5lbCB0aGF0IGl0IHNob3VsZCBleGVjdXRlIHRoZSB0YXJnZXQKPj4g ICAgICAgIHRocmVhZCdzIHN5c3RlbSBjYWxsOyBzZWUgdGhlIGRpc2N1c3Npb24gb2YKPj4gICAg ICAgIFNFQ0NPTVBfVVNFUl9OT1RJRl9GTEFHX0NPTlRJTlVFLCBiZWxvdy4KPj4KPj4gICAgaW9j dGwoMikgb3BlcmF0aW9ucwo+PiAgICAgICAgVGhlIGZvbGxvd2luZyBpb2N0bCgyKSBvcGVyYXRp b25zIGFyZSBwcm92aWRlZCB0byBzdXBwb3J0IHNlY2NvbXAKPj4gICAgICAgIHVzZXItc3BhY2Ug bm90aWZpY2F0aW9uLiAgRm9yIGVhY2ggb2YgdGhlc2Ugb3BlcmF0aW9ucywgdGhlIGZpcnN0Cj4g Cj4gSG0sIHNpbmNlIHRoZSBpb2N0bHMoKSBhcmUgYXNzb2NpYXRkIHdpdGggdGhlIHNlY2NvbXAg bm90aWZ5IGZpbGUKPiBkZXNjcmlwdG9yIG1heWJlIHdlIHNob3VsZCByZXBocmFzZSB0aGlzIGEg Yml0IHRvIG1ha2UgdGhpcyBtb3JlCj4gb2J2aW91czoKPiAiWy4uLl0gaW9jdGwoMikgb3BlcmF0 aW9ucyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBzZWNjb21wIHVzZXItc3BhY2UgZmlsZSBkZXNjcmlw dG9yIgo+IFRoYXQgbWlnaHQgbGluZS11cGVyIGJldHRlciB3aXRoIHRoZSBmb2xsb3dpbmcgc2Vu dGVuY2UuIEp1c3QgYSB0aG91Z2h0LAo+IGZlZWwgZnJlZSB0byBpZ25vcmUuCgpZZXAsIHlvdXIg aWRlYSBpcyBiZXR0ZXIuIEkgY2hhbmdlZCB0aGUgdGV4dC4KCj4+ICAgICAgICAoZmlsZSBkZXNj cmlwdG9yKSBhcmd1bWVudCBvZiBpb2N0bCgyKSBpcyB0aGUgbGlzdGVuaW5nIGZpbGUKPj4gICAg ICAgIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBjYWxsIHRvIHNlY2NvbXAoMikgd2l0aCB0aGUK Pj4gICAgICAgIFNFQ0NPTVBfRklMVEVSX0ZMQUdfTkVXX0xJU1RFTkVSIGZsYWcuCj4+Cj4+ICAg ICAgICBTRUNDT01QX0lPQ1RMX05PVElGX1JFQ1YKPj4gICAgICAgICAgICAgICBUaGlzIG9wZXJh dGlvbiBpcyB1c2VkIHRvIG9idGFpbiBhIHVzZXItc3BhY2Ugbm90aWZpY2F0aW9uCj4+ICAgICAg ICAgICAgICAgZXZlbnQuICBJZiBubyBzdWNoIGV2ZW50IGlzIGN1cnJlbnRseSBwZW5kaW5nLCB0 aGUKPj4gICAgICAgICAgICAgICBvcGVyYXRpb24gYmxvY2tzIHVudGlsIGFuIGV2ZW50IG9jY3Vy cy4gIFRoZSB0aGlyZAo+PiAgICAgICAgICAgICAgIGlvY3RsKDIpIGFyZ3VtZW50IGlzIGEgcG9p bnRlciB0byBhIHN0cnVjdHVyZSBvZiB0aGUKPj4gICAgICAgICAgICAgICBmb2xsb3dpbmcgZm9y bSB3aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXZlbnQuCj4+ICAgICAgICAg ICAgICAgVGhpcyBzdHJ1Y3R1cmUgbXVzdCBiZSB6ZXJvZWQgb3V0IGJlZm9yZSB0aGUgY2FsbC4K Pj4KPj4gICAgICAgICAgICAgICAgICAgc3RydWN0IHNlY2NvbXBfbm90aWYgewo+PiAgICAgICAg ICAgICAgICAgICAgICAgX191NjQgIGlkOyAgICAgICAgICAgICAgLyogQ29va2llICovCj4+ICAg ICAgICAgICAgICAgICAgICAgICBfX3UzMiAgcGlkOyAgICAgICAgICAgICAvKiBUSUQgb2YgdGFy Z2V0IHRocmVhZCAqLwo+PiAgICAgICAgICAgICAgICAgICAgICAgX191MzIgIGZsYWdzOyAgICAg ICAgICAgLyogQ3VycmVudGx5IHVudXNlZCAoMCkgKi8KPj4gICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBzZWNjb21wX2RhdGEgZGF0YTsgICAvKiBTZWUgc2VjY29tcCgyKSAqLwo+PiAgICAg ICAgICAgICAgICAgICB9Owo+Pgo+PiAgICAgICAgICAgICAgIFRoZSBmaWVsZHMgaW4gdGhpcyBz dHJ1Y3R1cmUgYXJlIGFzIGZvbGxvd3M6Cj4+Cj4+ICAgICAgICAgICAgICAgaWQgICAgIFRoaXMg aXMgYSBjb29raWUgZm9yIHRoZSBub3RpZmljYXRpb24uICBFYWNoIHN1Y2gKPj4gICAgICAgICAg ICAgICAgICAgICAgY29va2llIGlzIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIGZvciB0aGUKPj4g ICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyBzZWNjb21wIGZpbHRlci4KPj4KPj4g ICAgICAgICAgICAgICAgICAgICAgwrcgSXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUKPj4gICAgICAg ICAgICAgICAgICAgICAgICBTRUNDT01QX0lPQ1RMX05PVElGX0lEX1ZBTElEIGlvY3RsKDIpIG9w ZXJhdGlvbgo+PiAgICAgICAgICAgICAgICAgICAgICAgIHRvIHZlcmlmeSB0aGF0IHRoZSB0YXJn ZXQgaXMgc3RpbGwgYWxpdmUuCj4+Cj4+ICAgICAgICAgICAgICAgICAgICAgIMK3IFdoZW4gcmV0 dXJuaW5nIGEgbm90aWZpY2F0aW9uIHJlc3BvbnNlIHRvIHRoZQo+PiAgICAgICAgICAgICAgICAg ICAgICAgIGtlcm5lbCwgdGhlIHN1cGVydmlzb3IgbXVzdCBpbmNsdWRlIHRoZSBjb29raWUKPj4g ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpbiB0aGUgc2VjY29tcF9ub3RpZl9yZXNwIHN0 cnVjdHVyZSB0aGF0IGlzCj4+ICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGFzIHRo ZSBhcmd1bWVudCBvZiB0aGUKPj4gICAgICAgICAgICAgICAgICAgICAgICBTRUNDT01QX0lPQ1RM X05PVElGX1NFTkQgb3BlcmF0aW9uLgo+Pgo+PiAgICAgICAgICAgICAgIHBpZCAgICBUaGlzIGlz IHRoZSB0aHJlYWQgSUQgb2YgdGhlIHRhcmdldCB0aHJlYWQgdGhhdAo+PiAgICAgICAgICAgICAg ICAgICAgICB0cmlnZ2VyZWQgdGhlIG5vdGlmaWNhdGlvbiBldmVudC4KPj4KPj4gICAgICAgICAg ICAgICBmbGFncyAgVGhpcyBpcyBhIGJpdCBtYXNrIG9mIGZsYWdzIHByb3ZpZGluZyBmdXJ0aGVy Cj4+ICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHRoZSBldmVudC4gIEluIHRo ZSBjdXJyZW50Cj4+ICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uLCB0aGlzIGZp ZWxkIGlzIGFsd2F5cyB6ZXJvLgo+IAo+IEkgdGhpbmsgd2UgaGF2ZW4ndCBzZXR0bGVkIHdoZXRo ZXIgdGhpcyBpcyBpbnB1dCBvciBvdXRwdXQgb25seS4gSSBndWVzcwo+IHdlIGNvdWxkIHRlY2hu aWNhbGx5IHVzZSBpdCBmb3IgYm90aC4KClNvLCBjaGFuZ2Ugc29tZXRoaW5nIGhlcmUgaW4gdGhl IHBhZ2U/Cgo+IAo+Pgo+PiAgICAgICAgICAgICAgIGRhdGEgICBUaGlzIGlzIGEgc2VjY29tcF9k YXRhIHN0cnVjdHVyZSBjb250YWluaW5nCj4+ICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0 aW9uIGFib3V0IHRoZSBzeXN0ZW0gY2FsbCB0aGF0IHRyaWdnZXJlZAo+PiAgICAgICAgICAgICAg ICAgICAgICB0aGUgbm90aWZpY2F0aW9uLiAgVGhpcyBpcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgdGhh dAo+PiAgICAgICAgICAgICAgICAgICAgICBpcyBwYXNzZWQgdG8gdGhlIHNlY2NvbXAgZmlsdGVy LiAgU2VlIHNlY2NvbXAoMikKPj4gICAgICAgICAgICAgICAgICAgICAgZm9yIGRldGFpbHMgb2Yg dGhpcyBzdHJ1Y3R1cmUuCj4+Cj4+ICAgICAgICAgICAgICAgT24gc3VjY2VzcywgdGhpcyBvcGVy YXRpb24gcmV0dXJucyAwOyBvbiBmYWlsdXJlLCAtMSBpcwo+PiAgICAgICAgICAgICAgIHJldHVy bmVkLCBhbmQgZXJybm8gaXMgc2V0IHRvIGluZGljYXRlIHRoZSBjYXVzZSBvZiB0aGUKPj4gICAg ICAgICAgICAgICBlcnJvci4gIFRoaXMgb3BlcmF0aW9uIGNhbiBmYWlsIHdpdGggdGhlIGZvbGxv d2luZyBlcnJvcnM6Cj4+Cj4+ICAgICAgICAgICAgICAgRUlOVkFMIChzaW5jZSBMaW51eCA1LjUp Cj4+ICAgICAgICAgICAgICAgICAgICAgIFRoZSBzZWNjb21wX25vdGlmIHN0cnVjdHVyZSB0aGF0 IHdhcyBwYXNzZWQgdG8gdGhlCj4+ICAgICAgICAgICAgICAgICAgICAgIGNhbGwgY29udGFpbmVk IG5vbnplcm8gZmllbGRzLgo+Pgo+PiAgICAgICAgICAgICAgIEVOT0VOVCBUaGUgdGFyZ2V0IHRo cmVhZCB3YXMga2lsbGVkIGJ5IGEgc2lnbmFsIGFzIHRoZQo+PiAgICAgICAgICAgICAgICAgICAg ICBub3RpZmljYXRpb24gaW5mb3JtYXRpb24gd2FzIGJlaW5nIGdlbmVyYXRlZCwgb3IKPj4gICAg ICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCdzIChibG9ja2VkKSBzeXN0ZW0gY2FsbCB3YXMg aW50ZXJydXB0ZWQKPj4gICAgICAgICAgICAgICAgICAgICAgYnkgYSBzaWduYWwgaGFuZGxlci4K PiAKPiAoVGVjaG5pY2FsbHkgYWxzbyBFRkFVTFQgYmVjYXVzZSB0aGUgdXNlciBwcm92aWRlZCBh IGdhcmJhZ2UgYWRkcmVzcy4pCgpZZWFoLiBCdXQgdGhhdCBlcnJvciBpcyBraW5kIG9mIHByZXN1 bWVkIGFueXdoZXJlIGEgcG9pbnRlciAKaXMgcHJvdmlkZWQuCgo+PiAgICAgICAg4pSM4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQCj4+ICAgICAgICDilIJG SVhNRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUggo+ PiAgICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSkCj4+ICAgICAgICDilIJGcm9tIG15IGV4cGVyaW1lbnRzLCBpdCBhcHBlYXJzIHRoYXQgaWYg YSAgICAgICAgICAgIOKUggo+PiAgICAgICAg4pSCU0VDQ09NUF9JT0NUTF9OT1RJRl9SRUNWIGlz IGRvbmUgYWZ0ZXIgdGhlIHRhcmdldCAgICDilIIKPj4gICAgICAgIOKUgnRocmVhZCB0ZXJtaW5h dGVzLCB0aGVuIHRoZSBpb2N0bCgpIHNpbXBseSBibG9ja3MgICAg4pSCCj4+ICAgICAgICDilIIo cmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIGVycm9yIHRvIGluZGljYXRlIHRoYXQgdGhlIOKUggo+ PiAgICAgICAg4pSCdGFyZ2V0IG5vIGxvbmdlciBleGlzdHMpLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICDilIIKPj4gICAgICAgIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAg4pSCCj4+ICAgICAgICDilIJJIGZvdW5kIHRoYXQgc3VycHJp c2luZywgYW5kIGl0IHJlcXVpcmVkIHNvbWUgICAgICAgIOKUggo+PiAgICAgICAg4pSCY29udG9y dGlvbnMgaW4gdGhlIGV4YW1wbGUgcHJvZ3JhbS4gIEl0IHdhcyBub3QgICAgICDilIIKPj4gICAg ICAgIOKUgnBvc3NpYmxlIHRvIGNvZGUgbXkgU0lHQ0hMRCBoYW5kbGVyICh3aGljaCByZWFwcyB0 aGUg4pSCCj4+ICAgICAgICDilIJ6b21iaWUgd2hlbiB0aGUgd29ya2VyL3RhcmdldCB0ZXJtaW5h dGVzKSB0byBzaW1wbHkgIOKUggo+PiAgICAgICAg4pSCc2V0IGEgZmxhZyBjaGVja2VkIGluIHRo ZSBtYWluIGhhbmRsZU5vdGlmaWNhdGlvbnMoKSDilIIKPj4gICAgICAgIOKUgmxvb3AsIHNpbmNl IHRoaXMgY3JlYXRlZCBhbiB1bmF2b2lkYWJsZSByYWNlIHdoZXJlICAg4pSCCj4+ICAgICAgICDi lIJ0aGUgY2hpbGQgbWlnaHQgdGVybWluYXRlIGp1c3QgYWZ0ZXIgSSBoYWQgY2hlY2tlZCAgIOKU ggo+PiAgICAgICAg4pSCdGhlIGZsYWcsIGJ1dCBiZWZvcmUgSSBibG9ja2VkIChmb3JldmVyISkg aW4gdGhlICAgICDilIIKPj4gICAgICAgIOKUglNFQ0NPTVBfSU9DVExfTk9USUZfUkVDViBvcGVy YXRpb24uIEluc3RlYWQsIEkgaGFkICAg4pSCCj4+ICAgICAgICDilIJ0byBjb2RlIHRoZSBzaWdu YWwgaGFuZGxlciB0byBzaW1wbHkgY2FsbCBfZXhpdCgyKSAgIOKUggo+PiAgICAgICAg4pSCaW4g b3JkZXIgdG8gdGVybWluYXRlIHRoZSBwYXJlbnQgcHJvY2VzcyAodGhlICAgICAgICDilIIKPj4g ICAgICAgIOKUgnN1cGVydmlzb3IpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAg4pSCCj4+ICAgICAgICDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIOKUggo+PiAgICAgICAg4pSCSXMgdGhpcyBleHBlY3RlZCBiZWhh dmlvcj8gSXQgc2VlbXMgdG8gbWUgcmF0aGVyICAgICDilIIKPj4gICAgICAgIOKUgmRlc2lyYWJs ZSB0aGF0IFNFQ0NPTVBfSU9DVExfTk9USUZfUkVDViBzaG91bGQgZ2l2ZSAg4pSCCj4+ICAgICAg ICDilIJhbiBlcnJvciBpZiB0aGUgdGFyZ2V0IGhhcyB0ZXJtaW5hdGVkLiAgICAgICAgICAgICAg IOKUggo+PiAgICAgICAg4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICDilIIKPj4gICAgICAgIOKUgkphbm4gcG9zdGVkIGEgcGF0Y2ggdG8gcmVj dGlmeSB0aGlzLCBidXQgdGhlcmUgd2FzICAg4pSCCj4+ICAgICAgICDilIJubyByZXNwb25zZSAo TG9yZSBsaW5rOiBodHRwczovL2JpdC5seS8zanZVQnhrKSB0byAgIOKUggo+PiAgICAgICAg4pSC aGlzIHF1ZXN0aW9uIGFib3V0IGZpeGluZyB0aGlzIGlzc3VlLiAoSSd2ZSB0cmllZCAgICDilIIK Pj4gICAgICAgIOKUgmJ1aWxkaW5nIHdpdGggdGhlIHBhdGNoLCBidXQgZW5jb3VudGVyZWQgYW4g aXNzdWUgICAg4pSCCj4+ICAgICAgICDilIJ3aXRoIHRoZSB0YXJnZXQgcHJvY2VzcyBlbnRlcmlu ZyBEIHN0YXRlIGFmdGVyIGEgICAgIOKUggo+PiAgICAgICAg4pSCc2lnbmFsLikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKPj4gICAgICAgIOKUgiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCCj4+ICAg ICAgICDilIJGb3Igbm93LCB0aGlzIGJlaGF2aW9yIGlzIGRvY3VtZW50ZWQgaW4gQlVHUy4gICAg ICAgIOKUggo+PiAgICAgICAg4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICDilIIKPj4gICAgICAgIOKUgktlZXMgQ29vayBjb21tZW50ZWQ6IExl dCdzIGNoYW5nZSBbdGhpc10gQVNBUCEgICAgICAg4pSCCj4+ICAgICAgICDilJTilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgKPj4KPj4gICAgICAgIFNFQ0NP TVBfSU9DVExfTk9USUZfSURfVkFMSUQKPj4gICAgICAgICAgICAgICBUaGlzIG9wZXJhdGlvbiBj YW4gYmUgdXNlZCB0byBjaGVjayB0aGF0IGEgbm90aWZpY2F0aW9uIElECj4+ICAgICAgICAgICAg ICAgcmV0dXJuZWQgYnkgYW4gZWFybGllciBTRUNDT01QX0lPQ1RMX05PVElGX1JFQ1Ygb3BlcmF0 aW9uCj4+ICAgICAgICAgICAgICAgaXMgc3RpbGwgdmFsaWQgKGkuZS4sIHRoYXQgdGhlIHRhcmdl dCBzdGlsbCBleGlzdHMgYW5kIGl0cwo+PiAgICAgICAgICAgICAgIHN5c3RlbSBjYWxsIGlzIHN0 aWxsIGJsb2NrZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSkuCj4+Cj4+ICAgICAgICAgICAgICAg VGhlIHRoaXJkIGlvY3RsKDIpIGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byB0aGUgY29va2llCj4+ ICAgICAgICAgICAgICAgKGlkKSByZXR1cm5lZCBieSB0aGUgU0VDQ09NUF9JT0NUTF9OT1RJRl9S RUNWIG9wZXJhdGlvbi4KPj4KPj4gICAgICAgICAgICAgICBUaGlzIG9wZXJhdGlvbiBpcyBuZWNl c3NhcnkgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIHRoYXQKPj4gICAgICAgICAgICAgICBjYW4g b2NjdXIgd2hlbiB0aGUgcGlkIHJldHVybmVkIGJ5IHRoZQo+PiAgICAgICAgICAgICAgIFNFQ0NP TVBfSU9DVExfTk9USUZfUkVDViBvcGVyYXRpb24gdGVybWluYXRlcywgYW5kIHRoYXQKPj4gICAg ICAgICAgICAgICBwcm9jZXNzIElEIGlzIHJldXNlZCBieSBhbm90aGVyIHByb2Nlc3MuICBBbiBl eGFtcGxlIG9mCj4+ICAgICAgICAgICAgICAgdGhpcyBraW5kIG9mIHJhY2UgaXMgdGhlIGZvbGxv d2luZwo+Pgo+PiAgICAgICAgICAgICAgIDEuIEEgbm90aWZpY2F0aW9uIGlzIGdlbmVyYXRlZCBv biB0aGUgbGlzdGVuaW5nIGZpbGUKPj4gICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLiAgVGhl IHJldHVybmVkIHNlY2NvbXBfbm90aWYgY29udGFpbnMgdGhlCj4+ICAgICAgICAgICAgICAgICAg VElEIG9mIHRoZSB0YXJnZXQgdGhyZWFkIChpbiB0aGUgcGlkIGZpZWxkIG9mIHRoZQo+PiAgICAg ICAgICAgICAgICAgIHN0cnVjdHVyZSkuCj4+Cj4+ICAgICAgICAgICAgICAgMi4gVGhlIHRhcmdl dCB0ZXJtaW5hdGVzLgo+Pgo+PiAgICAgICAgICAgICAgIDMuIEFub3RoZXIgdGhyZWFkIG9yIHBy b2Nlc3MgaXMgY3JlYXRlZCBvbiB0aGUgc3lzdGVtIHRoYXQKPj4gICAgICAgICAgICAgICAgICBi eSBjaGFuY2UgcmV1c2VzIHRoZSBUSUQgdGhhdCB3YXMgZnJlZWQgd2hlbiB0aGUgdGFyZ2V0Cj4+ ICAgICAgICAgICAgICAgICAgdGVybWluYXRlZC4KPj4KPj4gICAgICAgICAgICAgICA0LiBUaGUg c3VwZXJ2aXNvciBvcGVuKDIpcyB0aGUgL3Byb2MvW3RpZF0vbWVtIGZpbGUgZm9yCj4+ICAgICAg ICAgICAgICAgICAgdGhlIFRJRCBvYnRhaW5lZCBpbiBzdGVwIDEsIHdpdGggdGhlIGludGVudGlv biBvZiAoc2F5KQo+PiAgICAgICAgICAgICAgICAgIGluc3BlY3RpbmcgdGhlIG1lbW9yeSBsb2Nh dGlvbihzKSB0aGF0IGNvbnRhaW5pbmcgdGhlCj4+ICAgICAgICAgICAgICAgICAgYXJndW1lbnQo cykgb2YgdGhlIHN5c3RlbSBjYWxsIHRoYXQgdHJpZ2dlcmVkIHRoZQo+PiAgICAgICAgICAgICAg ICAgIG5vdGlmaWNhdGlvbiBpbiBzdGVwIDEuCj4+Cj4+ICAgICAgICAgICAgICAgSW4gdGhlIGFi b3ZlIHNjZW5hcmlvLCB0aGUgcmlzayBpcyB0aGF0IHRoZSBzdXBlcnZpc29yIG1heQo+PiAgICAg ICAgICAgICAgIHRyeSB0byBhY2Nlc3MgdGhlIG1lbW9yeSBvZiBhIHByb2Nlc3Mgb3RoZXIgdGhh biB0aGUKPj4gICAgICAgICAgICAgICB0YXJnZXQuICBUaGlzIHJhY2UgY2FuIGJlIGF2b2lkZWQg YnkgZm9sbG93aW5nIHRoZSBjYWxsIHRvCj4+ICAgICAgICAgICAgICAgb3BlbigyKSB3aXRoIGEg U0VDQ09NUF9JT0NUTF9OT1RJRl9JRF9WQUxJRCBvcGVyYXRpb24gdG8KPj4gICAgICAgICAgICAg ICB2ZXJpZnkgdGhhdCB0aGUgcHJvY2VzcyB0aGF0IGdlbmVyYXRlZCB0aGUgbm90aWZpY2F0aW9u IGlzCj4+ICAgICAgICAgICAgICAgc3RpbGwgYWxpdmUuICAoTm90ZSB0aGF0IGlmIHRoZSB0YXJn ZXQgdGVybWluYXRlcyBhZnRlcgo+PiAgICAgICAgICAgICAgIHRoZSBsYXR0ZXIgc3RlcCwgYSBz dWJzZXF1ZW50IHJlYWQoMikgZnJvbSB0aGUgZmlsZQo+PiAgICAgICAgICAgICAgIGRlc2NyaXB0 b3IgbWF5IHJldHVybiAwLCBpbmRpY2F0aW5nIGVuZCBvZiBmaWxlLikKPj4KPj4gICAgICAgICAg ICAgICBPbiBzdWNjZXNzIChpLmUuLCB0aGUgbm90aWZpY2F0aW9uIElEIGlzIHN0aWxsIHZhbGlk KSwKPj4gICAgICAgICAgICAgICB0aGlzIG9wZXJhdGlvbiByZXR1cm5zIDAuICBPbiBmYWlsdXJl IChpLmUuLCB0aGUKPj4gICAgICAgICAgICAgICBub3RpZmljYXRpb24gSUQgaXMgbm8gbG9uZ2Vy IHZhbGlkKSwgLTEgaXMgcmV0dXJuZWQsIGFuZAo+PiAgICAgICAgICAgICAgIGVycm5vIGlzIHNl dCB0byBFTk9FTlQuCj4+Cj4+ICAgICAgICBTRUNDT01QX0lPQ1RMX05PVElGX1NFTkQKPj4gICAg ICAgICAgICAgICBUaGlzIG9wZXJhdGlvbiBpcyB1c2VkIHRvIHNlbmQgYSBub3RpZmljYXRpb24g cmVzcG9uc2UKPj4gICAgICAgICAgICAgICBiYWNrIHRvIHRoZSBrZXJuZWwuICBUaGUgdGhpcmQg aW9jdGwoMikgYXJndW1lbnQgb2YgdGhpcwo+PiAgICAgICAgICAgICAgIHN0cnVjdHVyZSBpcyBh IHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgb2YgdGhlIGZvbGxvd2luZwo+PiAgICAgICAgICAgICAg IGZvcm06Cj4+Cj4+ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZWNjb21wX25vdGlmX3Jlc3Ag ewo+PiAgICAgICAgICAgICAgICAgICAgICAgX191NjQgaWQ7ICAgICAgICAgICAgICAgLyogQ29v a2llIHZhbHVlICovCj4+ICAgICAgICAgICAgICAgICAgICAgICBfX3M2NCB2YWw7ICAgICAgICAg ICAgICAvKiBTdWNjZXNzIHJldHVybiB2YWx1ZSAqLwo+PiAgICAgICAgICAgICAgICAgICAgICAg X19zMzIgZXJyb3I7ICAgICAgICAgICAgLyogMCAoc3VjY2Vzcykgb3IgbmVnYXRpdmUKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIG51bWJl ciAqLwo+PiAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZmxhZ3M7ICAgICAgICAgICAgLyog U2VlIGJlbG93ICovCj4+ICAgICAgICAgICAgICAgICAgIH07Cj4+Cj4+ICAgICAgICAgICAgICAg VGhlIGZpZWxkcyBvZiB0aGlzIHN0cnVjdHVyZSBhcmUgYXMgZm9sbG93czoKPj4KPj4gICAgICAg ICAgICAgICBpZCAgICAgVGhpcyBpcyB0aGUgY29va2llIHZhbHVlIHRoYXQgd2FzIG9idGFpbmVk IHVzaW5nCj4+ICAgICAgICAgICAgICAgICAgICAgIHRoZSBTRUNDT01QX0lPQ1RMX05PVElGX1JF Q1Ygb3BlcmF0aW9uLiAgVGhpcwo+PiAgICAgICAgICAgICAgICAgICAgICBjb29raWUgdmFsdWUg YWxsb3dzIHRoZSBrZXJuZWwgdG8gY29ycmVjdGx5Cj4+ICAgICAgICAgICAgICAgICAgICAgIGFz c29jaWF0ZSB0aGlzIHJlc3BvbnNlIHdpdGggdGhlIHN5c3RlbSBjYWxsIHRoYXQKPj4gICAgICAg ICAgICAgICAgICAgICAgdHJpZ2dlcmVkIHRoZSB1c2VyLXNwYWNlIG5vdGlmaWNhdGlvbi4KPj4K Pj4gICAgICAgICAgICAgICB2YWwgICAgVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVz ZWQgZm9yIGEgc3Bvb2ZlZAo+PiAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzIHJldHVybiBm b3IgdGhlIHRhcmdldCdzIHN5c3RlbSBjYWxsOyBzZWUKPj4gICAgICAgICAgICAgICAgICAgICAg YmVsb3cuCj4+Cj4+ICAgICAgICAgICAgICAgZXJyb3IgIFRoaXMgaXMgdGhlIHZhbHVlIHRoYXQg d2lsbCBiZSB1c2VkIGFzIHRoZSBlcnJvcgo+PiAgICAgICAgICAgICAgICAgICAgICBudW1iZXIg KGVycm5vKSBmb3IgYSBzcG9vZmVkIGVycm9yIHJldHVybiBmb3IgdGhlCj4+ICAgICAgICAgICAg ICAgICAgICAgIHRhcmdldCdzIHN5c3RlbSBjYWxsOyBzZWUgYmVsb3cuCj4+Cj4+ICAgICAgICAg ICAgICAgZmxhZ3MgIFRoaXMgaXMgYSBiaXQgbWFzayB0aGF0IGluY2x1ZGVzIHplcm8gb3IgbW9y ZSBvZgo+PiAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGZsYWdzOgo+Pgo+PiAg ICAgICAgICAgICAgICAgICAgICBTRUNDT01QX1VTRVJfTk9USUZfRkxBR19DT05USU5VRSAoc2lu Y2UgTGludXggNS41KQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVsbCB0aGUga2Vy bmVsIHRvIGV4ZWN1dGUgdGhlIHRhcmdldCdzCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzeXN0ZW0gY2FsbC4KPj4KPj4gICAgICAgICAgICAgICBUd28ga2luZHMgb2YgcmVzcG9uc2Ug YXJlIHBvc3NpYmxlOgo+Pgo+PiAgICAgICAgICAgICAgIMK3IEEgcmVzcG9uc2UgdG8gdGhlIGtl cm5lbCB0ZWxsaW5nIGl0IHRvIGV4ZWN1dGUgdGhlCj4+ICAgICAgICAgICAgICAgICB0YXJnZXQn cyBzeXN0ZW0gY2FsbC4gIEluIHRoaXMgY2FzZSwgdGhlIGZsYWdzIGZpZWxkCj4+ICAgICAgICAg ICAgICAgICBpbmNsdWRlcyBTRUNDT01QX1VTRVJfTk9USUZfRkxBR19DT05USU5VRSBhbmQgdGhl IGVycm9yCj4+ICAgICAgICAgICAgICAgICBhbmQgdmFsIGZpZWxkcyBtdXN0IGJlIHplcm8uCj4+ Cj4+ICAgICAgICAgICAgICAgICBUaGlzIGtpbmQgb2YgcmVzcG9uc2UgY2FuIGJlIHVzZWZ1bCBp biBjYXNlcyB3aGVyZSB0aGUKPj4gICAgICAgICAgICAgICAgIHN1cGVydmlzb3IgbmVlZHMgdG8g ZG8gZGVlcGVyIGFuYWx5c2lzIG9mIHRoZSB0YXJnZXQncwo+PiAgICAgICAgICAgICAgICAgc3lz dGVtIGNhbGwgdGhhbiBpcyBwb3NzaWJsZSBmcm9tIGEgc2VjY29tcCBmaWx0ZXIKPj4gICAgICAg ICAgICAgICAgIChlLmcuLCBleGFtaW5pbmcgdGhlIHZhbHVlcyBvZiBwb2ludGVyIGFyZ3VtZW50 cyksIGFuZCwKPj4gICAgICAgICAgICAgICAgIGhhdmluZyBkZWNpZGVkIHRoYXQgdGhlIHN5c3Rl bSBjYWxsIGRvZXMgbm90IHJlcXVpcmUKPj4gICAgICAgICAgICAgICAgIGVtdWxhdGlvbiBieSB0 aGUgc3VwZXJ2aXNvciwgdGhlIHN1cGVydmlzb3Igd2FudHMgdGhlCj4+ICAgICAgICAgICAgICAg ICBzeXN0ZW0gY2FsbCB0byBiZSBleGVjdXRlZCBub3JtYWxseSBpbiB0aGUgdGFyZ2V0Lgo+Pgo+ PiAgICAgICAgICAgICAgICAgVGhlIFNFQ0NPTVBfVVNFUl9OT1RJRl9GTEFHX0NPTlRJTlVFIGZs YWcgc2hvdWxkIGJlIHVzZWQKPj4gICAgICAgICAgICAgICAgIHdpdGggY2F1dGlvbjsgc2VlIE5P VEVTLgo+Pgo+PiAgICAgICAgICAgICAgIMK3IEEgc3Bvb2ZlZCByZXR1cm4gdmFsdWUgZm9yIHRo ZSB0YXJnZXQncyBzeXN0ZW0gY2FsbC4gIEluCj4+ICAgICAgICAgICAgICAgICB0aGlzIGNhc2Us IHRoZSBrZXJuZWwgZG9lcyBub3QgZXhlY3V0ZSB0aGUgdGFyZ2V0J3MKPj4gICAgICAgICAgICAg ICAgIHN5c3RlbSBjYWxsLCBpbnN0ZWFkIGNhdXNpbmcgdGhlIHN5c3RlbSBjYWxsIHRvIHJldHVy biBhCj4+ICAgICAgICAgICAgICAgICBzcG9vZmVkIHZhbHVlIGFzIHNwZWNpZmllZCBieSBmaWVs ZHMgb2YgdGhlCj4+ICAgICAgICAgICAgICAgICBzZWNjb21wX25vdGlmX3Jlc3Agc3RydWN0dXJl LiAgVGhlIHN1cGVydmlzb3Igc2hvdWxkIHNldAo+PiAgICAgICAgICAgICAgICAgdGhlIGZpZWxk cyBvZiB0aGlzIHN0cnVjdHVyZSBhcyBmb2xsb3dzOgo+Pgo+PiAgICAgICAgICAgICAgICAgKyAg ZmxhZ3MgZG9lcyBub3QgY29udGFpbgo+PiAgICAgICAgICAgICAgICAgICAgU0VDQ09NUF9VU0VS X05PVElGX0ZMQUdfQ09OVElOVUUuCj4+Cj4+ICAgICAgICAgICAgICAgICArICBlcnJvciBpcyBz ZXQgZWl0aGVyIHRvIDAgZm9yIGEgc3Bvb2ZlZCAic3VjY2VzcyIKPj4gICAgICAgICAgICAgICAg ICAgIHJldHVybiBvciB0byBhIG5lZ2F0aXZlIGVycm9yIG51bWJlciBmb3IgYSBzcG9vZmVkCj4+ ICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZSIgcmV0dXJuLiAgSW4gdGhlIGZvcm1lciBjYXNl LCB0aGUga2VybmVsCj4+ICAgICAgICAgICAgICAgICAgICBjYXVzZXMgdGhlIHRhcmdldCdzIHN5 c3RlbSBjYWxsIHRvIHJldHVybiB0aGUgdmFsdWUKPj4gICAgICAgICAgICAgICAgICAgIHNwZWNp ZmllZCBpbiB0aGUgdmFsIGZpZWxkLiAgSW4gdGhlIGxhdGVyIGNhc2UsIHRoZQo+IAo+IE5vdCBh IG5hdGl2ZSBFbmdsaXNoIHNwZWFrZXIgYnV0IHNob3VsZG4ndCB0aGlzIGJlICJsYXR0ZXIiPwoK WXVwIQoKPj4gICAgICAgICAgICAgICAgICAgIGtlcm5lbCBjYXVzZXMgdGhlIHRhcmdldCdzIHN5 c3RlbSBjYWxsIHRvIHJldHVybiAtMSwKPj4gICAgICAgICAgICAgICAgICAgIGFuZCBlcnJubyBp cyBhc3NpZ25lZCB0aGUgbmVnYXRlZCBlcnJvciB2YWx1ZS4KPj4KPj4gICAgICAgICAgICAgICAg ICsgIHZhbCBpcyBzZXQgdG8gYSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgcmV0dXJu Cj4+ICAgICAgICAgICAgICAgICAgICB2YWx1ZSBmb3IgYSBzcG9vZmVkICJzdWNjZXNzIiByZXR1 cm4gZm9yIHRoZSB0YXJnZXQncwo+PiAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGNhbGwuICBU aGUgdmFsdWUgaW4gdGhpcyBmaWVsZCBpcyBpZ25vcmVkIGlmCj4+ICAgICAgICAgICAgICAgICAg ICB0aGUgZXJyb3IgZmllbGQgY29udGFpbnMgYSBub256ZXJvIHZhbHVlLgo+Pgo+PiAgICAgICAg ICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSQCj4+ICAgICAgICAgICAgICAgICAgICDilIJGSVhNRSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUggo+PiAgICAgICAgICAgICAgICAgICAg4pSc 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkCj4+ICAgICAg ICAgICAgICAgICAgICDilIJLZWVzIENvb2sgc3VnZ2VzdGVkOiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIOKUggo+PiAgICAgICAgICAgICAgICAgICAg4pSCICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKPj4gICAgICAgICAgICAg ICAgICAgIOKUglN0cmljdGx5IHNwZWFraW5nLCB0aGlzIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZp YywgICAg4pSCCj4+ICAgICAgICAgICAgICAgICAgICDilIJidXQgYWxsIGFyY2hpdGVjdHVyZXMg ZG8gaXQgdGhpcyB3YXkuIFNob3VsZCBzZWNjb21wIOKUggo+PiAgICAgICAgICAgICAgICAgICAg 4pSCZW5mb3JjZSB2YWwgPT0gMCB3aGVuIGVyciAhPSAwID8gICAgICAgICAgICAgICAgICAgICDi lIIKPiAKPiBGZWVscyBsaWtlIGl0IHNob3VsZCwgYXQgbGVhc3QgZm9yIHRoZSBTRU5EIGlvY3Rs IHdoZXJlIHdlIGFscmVhZHkKPiB2ZXJpZnkgdGhhdCB2YWwgYW5kIGVyciBhcmUgYm90aCAwIHdo ZW4gQ09OVElOVUUgaXMgc3BlY2lmaWVkIChhcyB5b3UKPiBwb2ludGVkIG91dCBjb3JyZWN0bHkg YWJvdmUpLgoKWW91ciBjb21tZW50cyBlbmRlZCBoZXJlICh3aXRoIG5vIHNpZ24tb2ZmKS4gV2Fz IHRoYXQgaW50ZW50aW9uYWw/CgpUaGFua3MsCgpNaWNoYWVsCgoKLS0gCk1pY2hhZWwgS2Vycmlz awpMaW51eCBtYW4tcGFnZXMgbWFpbnRhaW5lcjsgaHR0cDovL3d3dy5rZXJuZWwub3JnL2RvYy9t YW4tcGFnZXMvCkxpbnV4L1VOSVggU3lzdGVtIFByb2dyYW1taW5nIFRyYWluaW5nOiBodHRwOi8v bWFuNy5vcmcvdHJhaW5pbmcvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkNvbnRhaW5lcnMgbWFpbGluZyBsaXN0CkNvbnRhaW5lcnNAbGlzdHMubGludXgt Zm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4v bGlzdGluZm8vY29udGFpbmVycw==