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=-8.4 required=3.0 tests=DKIM_ADSP_ALL,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 8719DC2D0DB for ; Wed, 29 Jan 2020 14:47:35 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 4E54F206F0 for ; Wed, 29 Jan 2020 14:47:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="MWV6xdHC" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4E54F206F0 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iwocf-0007Za-Jl; Wed, 29 Jan 2020 14:47:17 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iwoce-0007ZS-B1 for xen-devel@lists.xenproject.org; Wed, 29 Jan 2020 14:47:16 +0000 X-Inumbo-ID: 3ba59565-42a6-11ea-88ed-12813bfff9fa Received: from smtp-fw-2101.amazon.com (unknown [72.21.196.25]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 3ba59565-42a6-11ea-88ed-12813bfff9fa; Wed, 29 Jan 2020 14:47:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1580309232; x=1611845232; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7gJRAoIp3Ebqxjrei2weksVfqgTvtuB6rMeX3G2GbZA=; b=MWV6xdHCybnuURPJSlRE9iE6DFOD2mdV6s2rtATbPQP5VjkHBs5H3gAv Zc5tf1CchGUb8cHQUOCOkUtG/86FWDSJdu5REUsdYj3/2VjzGqVTLvt4H vnaeD8vu4XRTPy2o6MAMSrbG52BVixKMX8wa3bGyM+kzl2ITzb31dn19d c=; IronPort-SDR: q234+rSG3nHnr5eqvhX6OTMhLVnfESd1rcOfIy+o8pV1Xz7M26+SCHfvrDYTZuK/wu+Dz4my6L G2SjKSTcbc6Q== X-IronPort-AV: E=Sophos;i="5.70,378,1574121600"; d="scan'208";a="14769090" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-1a-807d4a99.us-east-1.amazon.com) ([10.43.8.2]) by smtp-border-fw-out-2101.iad2.amazon.com with ESMTP; 29 Jan 2020 14:47:12 +0000 Received: from EX13MTAUEA002.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-1a-807d4a99.us-east-1.amazon.com (Postfix) with ESMTPS id EB30AA233A; Wed, 29 Jan 2020 14:47:08 +0000 (UTC) Received: from EX13D32EUB004.ant.amazon.com (10.43.166.212) by EX13MTAUEA002.ant.amazon.com (10.43.61.77) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Wed, 29 Jan 2020 14:47:08 +0000 Received: from EX13MTAUEA002.ant.amazon.com (10.43.61.77) by EX13D32EUB004.ant.amazon.com (10.43.166.212) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Wed, 29 Jan 2020 14:47:07 +0000 Received: from u2f063a87eabd5f.cbg10.amazon.com (10.125.106.135) by mail-relay.amazon.com (10.43.61.169) with Microsoft SMTP Server id 15.0.1236.3 via Frontend Transport; Wed, 29 Jan 2020 14:47:05 +0000 From: Paul Durrant To: Date: Wed, 29 Jan 2020 14:47:01 +0000 Message-ID: <20200129144702.1543-2-pdurrant@amazon.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200129144702.1543-1-pdurrant@amazon.com> References: <20200129144702.1543-1-pdurrant@amazon.com> MIME-Version: 1.0 Precedence: Bulk Subject: [Xen-devel] [PATCH v4 1/2] docs/designs: Add a design document for non-cooperative live migration X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Julien Grall , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Paul Durrant , Ian Jackson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SXQgaGFzIGJlY29tZSBhcHBhcmVudCB0byBzb21lIGxhcmdlIGNsb3VkIHByb3ZpZGVycyB0aGF0 IHRoZSBjdXJyZW50Cm1vZGVsIG9mIGNvb3BlcmF0aXZlIG1pZ3JhdGlvbiBvZiBndWVzdHMgdW5k ZXIgWGVuIGlzIG5vdCB1c2FibGUgYXMgaXQKcmVsaWVzIG9uIHNvZnR3YXJlIHJ1bm5pbmcgaW5z aWRlIHRoZSBndWVzdCwgd2hpY2ggaXMgbGlrZWx5IGJleW9uZCB0aGUKcHJvdmlkZXIncyBjb250 cm9sLgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBwcm9wb3NhbCBmb3Igbm9uLWNvb3BlcmF0aXZl IGxpdmUgbWlncmF0aW9uLApkZXNpZ25lZCBub3QgdG8gcmVseSBvbiBhbnkgZ3Vlc3Qtc2lkZSBz b2Z0d2FyZS4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGR1cnJhbnRAYW1hem9uLmNv bT4KLS0tCkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDYzog R2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogSWFuIEphY2tz b24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hA c3VzZS5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbkB4ZW4ub3JnPgpDYzogS29ucmFkIFJ6 ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFiZWxs aW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogV2VpIExpdSA8d2xAeGVuLm9yZz4KCnY0 OgogLSBGaXggaXNzdWVzIHJhaXNlZCBieSBXZWkKCnYyOgogLSBVc2UgdGhlIHRlcm0gJ25vbi1j b29wZXJhdGl2ZScgaW5zdGVhZCBvZiAndHJhbnNwYXJlbnQnCiAtIFJlcGxhY2UgJ3RydXN0IGlu JyB3aXRoICdyZWxpYW5jZSBvbicgd2hlbiByZWZlcnJpbmcgdG8gZ3Vlc3Qtc2lkZQogICBzb2Z0 d2FyZQotLS0KIGRvY3MvZGVzaWducy9ub24tY29vcGVyYXRpdmUtbWlncmF0aW9uLm1kIHwgMjcy ICsrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNzIgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvY3MvZGVzaWducy9ub24tY29vcGVyYXRpdmUtbWlncmF0 aW9uLm1kCgpkaWZmIC0tZ2l0IGEvZG9jcy9kZXNpZ25zL25vbi1jb29wZXJhdGl2ZS1taWdyYXRp b24ubWQgYi9kb2NzL2Rlc2lnbnMvbm9uLWNvb3BlcmF0aXZlLW1pZ3JhdGlvbi5tZApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41ZGIzOTM5ZGI1Ci0tLSAvZGV2L251bGwK KysrIGIvZG9jcy9kZXNpZ25zL25vbi1jb29wZXJhdGl2ZS1taWdyYXRpb24ubWQKQEAgLTAsMCAr MSwyNzIgQEAKKyMgTm9uLUNvb3BlcmF0aXZlIE1pZ3JhdGlvbiBvZiBHdWVzdHMgb24gWGVuCisK KyMjIEJhY2tncm91bmQKKworVGhlIG5vcm1hbCBtb2RlbCBvZiBtaWdyYXRpb24gaW4gWGVuIGlz IGRyaXZlbiBieSB0aGUgZ3Vlc3QgYmVjYXVzZSBpdCB3YXMKK29yaWdpbmFsbHkgaW1wbGVtZW50 ZWQgZm9yIFBWIGd1ZXN0cywgd2hlcmUgdGhlIGd1ZXN0IG11c3QgYmUgYXdhcmUgaXQgaXMKK3J1 bm5pbmcgdW5kZXIgWGVuIGFuZCBpcyBoZW5jZSBleHBlY3RlZCB0byBjby1vcGVyYXRlLiBUaGlz IG1vZGVsIGRhdGVzIGZyb20KK2FuIGVyYSB3aGVuIGl0IHdhcyBhc3N1bWVkIHRoYXQgdGhlIGhv c3QgYWRtaW5pc3RyYXRvciBoYWQgY29udHJvbCBvZiBhdCBsZWFzdAordGhlIHByaXZpbGVnZWQg c29mdHdhcmUgcnVubmluZyBpbiB0aGUgZ3Vlc3QgKGkuZS4gdGhlIGd1ZXN0IGtlcm5lbCkgd2hp Y2ggbWF5CitzdGlsbCBiZSB0cnVlIGluIGFuIGVudGVycHJpc2UgZGVwbG95bWVudCBidXQgaXMg bm90IGdlbmVyYWxseSB0cnVlIGluIGEgY2xvdWQKK2Vudmlyb25tZW50LiBUaGUgYWltIG9mIHRo aXMgZGVzaWduIGlzIHRvIHByb3ZpZGUgYSBtb2RlbCB3aGljaCBpcyBwdXJlbHkgaG9zdAorZHJp dmVuLCByZXF1aXJpbmcgbm8gY28tb3BlcmF0aW9uIGZyb20gdGhlIHNvZnR3YXJlIHJ1bm5pbmcg aW4gdGhlCitndWVzdCwgYW5kIGlzIHRodXMgc3VpdGFibGUgZm9yIGNsb3VkIHNjZW5hcmlvcy4K KworUFYgZ3Vlc3RzIGFyZSBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgcHJvamVjdCBiZWNhdXNlLCBh cyBpcyBvdXRsaW5lZCBhYm92ZSwgdGhleQoraGF2ZSBhIHN5bWJpb3RpYyByZWxhdGlvbnNoaXAg d2l0aCB0aGUgaHlwZXJ2aXNvciBhbmQgdGhlcmVmb3JlIGEgY2VydGFpbiBsZXZlbAorb2YgY28t b3BlcmF0aW9uIGNhbiBiZSBhc3N1bWVkLgorCitIVk0gZ3Vlc3RzIGNhbiBhbHJlYWR5IGJlIG1p Z3JhdGVkIG9uIFhlbiB3aXRob3V0IGd1ZXN0IGNvLW9wZXJhdGlvbiBidXQgb25seQoraWYgdGhl eSBkb27igJl0IGhhdmUgUFYgZHJpdmVycyBpbnN0YWxsZWRbMV0gb3IgYXJlIGluIHBvd2VyIHN0 YXRlIFMzLiBUaGUKK3JlYXNvbiBmb3Igbm90IGV4cGVjdGluZyBjby1vcGVyYXRpb24gaWYgdGhl IGd1ZXN0IGlzIGluIFMzIGlzIG9idmlvdXMsIGJ1dCB0aGUKK3JlYXNvbiBjby1vcGVyYXRpb24g aXMgZXhwZWN0ZWQgaWYgUFYgZHJpdmVycyBhcmUgaW5zdGFsbGVkIGlzIGR1ZSB0byB0aGUKK25h dHVyZSBvZiBQViBwcm90b2NvbHMuCisKKyMjIFhlbnN0b3JlIE5vZGVzIGFuZCBEb21haW4gSUQK KworVGhlIFBWIGRyaXZlciBtb2RlbCBjb25zaXN0cyBvZiBhICpmcm9udGVuZCogYW5kIGEgKmJh Y2tlbmQqLiBUaGUgZnJvbnRlbmQgcnVucworaW5zaWRlIHRoZSBndWVzdCBkb21haW4gYW5kIHRo ZSBiYWNrZW5kIHJ1bnMgaW5zaWRlIGEgKnNlcnZpY2UgZG9tYWluKiB3aGljaAorbWF5IG9yIG1h eSBub3QgYmUgZG9tYWluIDAuIFRoZSBmcm9udGVuZCBhbmQgYmFja2VuZCB0eXBpY2FsbHkgcGFz cyBkYXRhIHZpYQorbWVtb3J5IHBhZ2VzIHdoaWNoIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGUgdHdv IGRvbWFpbnMsIGJ1dCB0aGlzIGNoYW5uZWwgb2YKK2NvbW11bmljYXRpb24gaXMgZ2VuZXJhbGx5 IGVzdGFibGlzaGVkIHVzaW5nIHhlbnN0b3JlICh0aGUgc3RvcmUgcHJvdG9jb2wKK2l0c2VsZiBi ZWluZyBhbiBleGNlcHRpb24gdG8gdGhpcyBmb3Igb2J2aW91cyBjaGlja2VuLWFuZC1lZ2cgcmVh c29ucykuCisKK1R5cGljYWwgcHJvdG9jb2wgZXN0YWJsaXNobWVudCBpcyBiYXNlZCBvbiB1c2Ug b2YgdHdvIHNlcGFyYXRlIHhlbnN0b3JlCisqYXJlYXMqLiBJZiB3ZSBjb25zaWRlciBQViBkcml2 ZXJzIGZvciB0aGUgKm5ldGlmKiBwcm90b2NvbCAoaS5lLiBjbGFzcyB2aWYpCithbmQgYXNzdW1l IHRoZSBndWVzdCBoYXMgZG9taWQgWCwgdGhlIHNlcnZpY2UgZG9tYWluIGhhcyBkb21pZCBZLCBh bmQgdGhlIHZpZgoraGFzIGluZGV4IFogdGhlbiB0aGUgZnJvbnRlbmQgYXJlYSB3aWxsIHJlc2lk ZSB1bmRlciB0aGUgcGFyZW50IG5vZGU6CisKK2AvbG9jYWwvZG9tYWluL1kvZGV2aWNlL3ZpZi9a YAorCitBbGwgYmFja2VuZHMsIGJ5IGNvbnZlbnRpb24sIHR5cGljYWxseSByZXNpZGUgdW5kZXIg cGFyZW50IG5vZGU6CisKK2AvbG9jYWwvZG9tYWluL1gvYmFja2VuZGAKKworYW5kIHRoZSBub3Jt YWwgYmFja2VuZCBhcmVhIGZvciB2aWYgWiB3b3VsZCBiZToKKworYC9sb2NhbC9kb21haW4vWC9i YWNrZW5kL3ZpZi9ZL1pgCisKK2J1dCB0aGlzIHNob3VsZCBub3QgYmUgYXNzdW1lZC4KKworVGhl IHRvb2xzdGFjayB3aWxsIHBsYWNlIHR3byBub2RlcyBpbiB0aGUgZnJvbnRlbmQgYXJlYSB0byBl eHBsaWNpdGx5IGxvY2F0ZQordGhlIGJhY2tlbmQ6CisKKyAgICAqIGBiYWNrZW5kYDogdGhlIGZ1 bGx5IHF1YWxpZmllZCB4ZW5zdG9yZSBwYXRoIG9mIHRoZSBiYWNrZW5kIGFyZWEKKyAgICAqIGBi YWNrZW5kLWlkYDogdGhlIGRvbWlkIG9mIHRoZSBzZXJ2aWNlIGRvbWFpbgorCithbmQgc2ltaWxh cmx5IHR3byBub2RlcyBpbiB0aGUgYmFja2VuZCBhcmVhIHRvIGxvY2F0ZSB0aGUgZnJvbnRlbmQg YXJlYToKKworICAgICogYGZyb250ZW5kYDogdGhlIGZ1bGx5IHF1YWxpZmllZCB4ZW5zdG9yZSBw YXRoIG9mIHRoZSBmcm9udGVuZCBhcmVhCisgICAgKiBgZnJvbnRlbmQtaWRgOiB0aGUgZG9taWQg b2YgdGhlIGd1ZXN0IGRvbWFpbgorCisKK1RoZSBndWVzdCBkb21haW4gb25seSBoYXMgd3JpdGUg cGVybWlzc2lvbiB0byB0aGUgZnJvbnRlbmQgYXJlYSBhbmQgc2ltaWxhcmx5Cit0aGUgc2Vydmlj ZSBkb21haW4gb25seSBoYXMgd3JpdGUgcGVybWlzc2lvbiB0byB0aGUgYmFja2VuZCBhcmVhLCBi dXQgYm90aCBlbmRzCitoYXZlIHJlYWQgcGVybWlzc2lvbiB0byBib3RoIGFyZWFzLgorCitVbmRl ciBib3RoIGZyb250ZW5kIGFuZCBiYWNrZW5kIGFyZWFzIGlzIGEgbm9kZSBjYWxsZWQgKnN0YXRl Ki4gVGhpcyBpcyBrZXkgdG8KK3Byb3RvY29sIGVzdGFibGlzaG1lbnQuIFVwb24gUFYgZGV2aWNl IGNyZWF0aW9uIHRoZSB0b29sc3RhY2sgd2lsbCBzZXQgdGhlCit2YWx1ZSBvZiBib3RoIHN0YXRl IG5vZGVzIHRvIDEgKFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nWzJdKS4gVGhpcyBzaG91bGQgY2F1 c2UKK2VudW1lcmF0aW9uIG9mIGFwcHJvcHJpYXRlIGRldmljZXMgaW4gYm90aCB0aGUgZ3Vlc3Qg YW5kIHNlcnZpY2UgZG9tYWlucy4gVGhlCitiYWNrZW5kIGRldmljZSwgb25jZSBpdCBoYXMgd3Jp dHRlbiBhbnkgbmVjZXNzYXJ5IHByb3RvY29sIHNwZWNpZmljIGluZm9ybWF0aW9uCitpbnRvIHRo ZSB4ZW5zdG9yZSBiYWNrZW5kIGFyZWEgKHRvIGJlIHJlYWQgYnkgdGhlIGZyb250ZW5kIGRyaXZl cikgd2lsbCB1cGRhdGUKK3RoZSBiYWNrZW5kIHN0YXRlIG5vZGUgdG8gMiAoWGVuYnVzU3RhdGVJ bml0V2FpdCkuIEZyb20gdGhpcyBwb2ludCBvbiBQVgorcHJvdG9jb2xzIGRpZmZlciBzbGlnaHRs eTsgdGhlIGZvbGxvd2luZyBpbGx1c3RyYXRpb24gaXMgdHJ1ZSBvZiB0aGUgbmV0aWYKK3Byb3Rv Y29sLgorCitVcG9uIHNlZWluZyBhIGJhY2tlbmQgc3RhdGUgdmFsdWUgb2YgMiwgdGhlIGZyb250 ZW5kIGRyaXZlciB3aWxsIHRoZW4gcmVhZCB0aGUKK3Byb3RvY29sIHNwZWNpZmljIGluZm9ybWF0 aW9uLCB3cml0ZSBkZXRhaWxzIG9mIGdyYW50IHJlZmVyZW5jZXMgKGZvciBzaGFyZWQKK3BhZ2Vz KSBhbmQgZXZlbnQgY2hhbm5lbCBwb3J0cyAoZm9yIHNpZ25hbGxpbmcpIHRoYXQgaXQgaGFzIGNy ZWF0ZWQsIGFuZCBzZXQKK3RoZSBzdGF0ZSBub2RlIGluIHRoZSBmcm9udGVuZCBhcmVhIHRvIDQg KFhlbmJ1c1N0YXRlQ29ubmVjdGVkKS4gVXBvbiBzZWUgdGhpcworZnJvbnRlbmQgc3RhdGUsIHRo ZSBiYWNrZW5kIGRyaXZlciB3aWxsIHRoZW4gcmVhZCB0aGUgZ3JhbnQgcmVmZXJlbmNlcyAobWFw cGluZwordGhlIHNoYXJlZCBwYWdlcykgYW5kIGV2ZW50IGNoYW5uZWwgcG9ydHMgKG9wZW5pbmcg aXRzIGVuZCBvZiB0aGVtKSBhbmQgc2V0IHRoZQorc3RhdGUgbm9kZSBpbiB0aGUgYmFja2VuZCBh cmVhIHRvIDQuIFByb3RvY29sIGVzdGFibGlzaG1lbnQgaXMgbm93IGNvbXBsZXRlIGFuZAordGhl IGZyb250ZW5kIGFuZCBiYWNrZW5kIHN0YXJ0IHRvIHBhc3MgZGF0YS4KKworQmVjYXVzZSB0aGUg ZG9taWQgb2YgYm90aCBlbmRzIG9mIGEgUFYgcHJvdG9jb2wgZm9ybXMgYSBrZXkgcGFydCBvZiBu ZWdvdGlhdGluZwordGhlIGRhdGEgcGxhbmUgZm9yIHRoYXQgcHJvdG9jb2wgKGJlY2F1c2UgaXQg aXMgZW5jb2RlZCBpbnRvIGJvdGggeGVuc3RvcmUKK25vZGVzIGFuZCBub2RlIHBhdGhzKSwgYW5k IGJlY2F1c2UgZ3Vlc3TigJlzIG93biBkb21pZCBhbmQgdGhlIGRvbWlkIG9mIHRoZQorc2Vydmlj ZSBkb21haW4gYXJlIHZpc2libGUgdG8gdGhlIGd1ZXN0IGluIHhlbnN0b3JlIChhbmQgaGVuY2Ug bWF5IGNhY2hlZAoraW50ZXJuYWxseSksIGFuZCBuZWl0aGVyIGFyZSBuZWNlc3NhcmlseSBwcmVz ZXJ2ZWQgZHVyaW5nIG1pZ3JhdGlvbiwgaXQgaXMKK2hlbmNlIG5lY2Vzc2FyeSB0byBoYXZlIHRo ZSBjby1vcGVyYXRpb24gb2YgdGhlIGZyb250ZW5kIGluIHJlLW5lZ290aWF0aW5nIHRoZQorcHJv dG9jb2wgdXNpbmcgdGhlIG5ldyBkb21pZCBhZnRlciBtaWdyYXRpb24uCisKK01vcmVvdmVyIHRo ZSBiYWNrZW5kLWlkIHZhbHVlIHdpbGwgYmUgdXNlZCBieSB0aGUgZnJvbnRlbmQgZHJpdmVyIGlu IHNldHRpbmcgdXAKK2dyYW50IHRhYmxlIGVudHJpZXMgYW5kIGV2ZW50IGNoYW5uZWxzIHRvIGNv bW11bmljYXRlIHdpdGggdGhlIHNlcnZpY2UgZG9tYWluLAorc28gdGhlIGNvLW9wZXJhdGlvbiBv ZiB0aGUgZ3Vlc3QgaXMgcmVxdWlyZWQgdG8gcmUtZXN0YWJsaXNoIHRoZXNlIGluIHRoZSBuZXcK K2hvc3QgZW52aXJvbm1lbnQgYWZ0ZXIgbWlncmF0aW9uLgorCitUaHVzIGlmIHdlIGFyZSB0byBj aGFuZ2UgdGhlIG1vZGVsIGFuZCBzdXBwb3J0IG1pZ3JhdGlvbiBvZiBhIGd1ZXN0IHdpdGggUFYK K2RyaXZlcnMsIHdpdGhvdXQgdGhlIGNvLW9wZXJhdGlvbiBvZiB0aGUgZnJvbnRlbmQgZHJpdmVy IGNvZGUsIHRoZSBwYXRocyBhbmQKK3ZhbHVlcyBpbiBib3RoIHRoZSBmcm9udGVuZCBhbmQgYmFj a2VuZCB4ZW5zdG9yZSBhcmVhcyBtdXN0IHJlbWFpbiB1bmNoYW5nZWQKK2FuZCB2YWxpZCBpbiB0 aGUgbmV3IGhvc3QgZW52aXJvbm1lbnQsIGFuZCB0aGUgZ3JhbnQgdGFibGUgZW50cmllcyBhbmQg ZXZlbnQKK2NoYW5uZWxzIG11c3QgYmUgcHJlc2VydmVkIChhbmQgcmVtYWluIG9wZXJhdGlvbmFs IG9uY2UgZ3Vlc3QgZXhlY3V0aW9uIGlzCityZXN1bWVkKS4KKworQmVjYXVzZSB0aGUgc2Vydmlj ZSBkb21haW7igJlzIGRvbWlkIGlzIHVzZWQgZGlyZWN0bHkgYnkgdGhlIGd1ZXN0IGluIHNldHRp bmcKK3VwIGdyYW50IGVudHJpZXMgYW5kIGV2ZW50IGNoYW5uZWxzLCB0aGUgYmFja2VuZCBkcml2 ZXJzIGluIHRoZSBuZXcgaG9zdAorZW52aXJvbm1lbnQgbXVzdCBiZSBwcm92aWRlZCBieSBzZXJ2 aWNlIGRvbWFpbiB3aXRoIHRoZSBzYW1lIGRvbWlkLiBBbHNvLAorYmVjYXVzZSB0aGUgZ3Vlc3Qg Y2FuIHNhbXBsZSBpdHMgb3duIGRvbWlkIGZyb20gdGhlIGZyb250ZW5kIGFyZWEgYW5kIHVzZSBp dCBpbgoraHlwZXJjYWxscyAoZS5nLiBIVk1PUF9zZXRfcGFyYW0pIHJhdGhlciB0aGFuIERPTUlE X1NFTEYsIHRoZSBndWVzdCBkb21pZCBtdXN0CithbHNvIGJlIHByZXNlcnZlZCB0byBtYWludGFp biB0aGUgQUJJLgorCitGdXJ0aGVybW9yZSwgaXQgd2lsbCBuZWNlc3NhcnkgdG8gbW9kaWZ5IGJh Y2tlbmQgZHJpdmVycyB0byByZS1lc3RhYmxpc2gKK2NvbW11bmljYXRpb24gd2l0aCBmcm9udGVu ZCBkcml2ZXJzIHdpdGhvdXQgcGVydHVyYmluZyB0aGUgY29udGVudCBvZiB0aGUKK2JhY2tlbmQg YXJlYSBvciByZXF1aXJpbmcgYW55IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBvZiB0aGUgeGVuc3Rv cmUgc3RhdGUgbm9kZXMuCisKKyMjIE90aGVyIFBhcmEtVmlydHVhbCBTdGF0ZQorCisjIyMgU2hh cmVkIFJpbmdzCisKK0JlY2F1c2UgdGhlIGNvbnNvbGUgYW5kIHN0b3JlIHByb3RvY29sIHNoYXJl ZCBwYWdlcyBhcmUgYWN0dWFsbHkgcGFydCBvZiB0aGUKK2d1ZXN0IG1lbW9yeSBpbWFnZSAoaW4g YW4gRTgyMCByZXNlcnZlZCByZWdpb24ganVzdCBiZWxvdyA0RykgdGhlbiB0aGUgY29udGVudAor d2lsbCBnZXQgbWlncmF0ZWQgYXMgcGFydCBvZiB0aGUgZ3Vlc3QgbWVtb3J5IGltYWdlLiBIZW5j ZSBubyBhZGRpdGlvbmFsIGNvZGUKK2lzIHJlcXVpcmUgdG8gcHJldmVudCBhbnkgZ3Vlc3Qgdmlz aWJsZSBjaGFuZ2UgaW4gdGhlIGNvbnRlbnQuCisKKyMjIyBTaGFyZWQgSW5mbworCitUaGVyZSBp cyBhbHJlYWR5IGEgcmVjb3JkIGRlZmluZWQgaW4gKmxpYnhlbmN0cmwgRG9tYWluIEltYWdlIEZv cm1hdCogWzNdCitjYWxsZWQgYFNIQVJFRF9JTkZPYCB3aGljaCBzaW1wbHkgY29udGFpbnMgYSBj b21wbGV0ZSBjb3B5IG9mIHRoZSBkb21haW7igJlzCitzaGFyZWQgaW5mbyBwYWdlLiBJdCBpcyBu b3QgY3VycmVudGx5IGluY3VkZWQgaW4gYW4gSFZNICh0eXBlIGAweDAwMDJgKQorbWlncmF0aW9u IHN0cmVhbS4gSXQgbWF5IGJlIGZlYXNpYmxlIHRvIGluY2x1ZGUgaXQgYXMgYW4gb3B0aW9uYWwg cmVjb3JkCitidXQgaXQgaXMgbm90IGNsZWFyIHRoYXQgdGhlIGNvbnRlbnQgb2YgdGhlIHNoYXJl ZCBpbmZvIHBhZ2UgZXZlciBuZWVkcwordG8gYmUgcHJlc2VydmVkIGZvciBhbiBIVk0gZ3Vlc3Qu CisKK0ZvciBhIFBWIGd1ZXN0IHRoZSBgYXJjaF9zaGFyZWRfaW5mb2Agc3ViLXN0cnVjdHVyZSBj b250YWlucyBpbXBvcnRhbnQKK2luZm9ybWF0aW9uIGFib3V0IHRoZSBndWVzdOKAmXMgUDJNLCBi dXQgdGhpcyBpbmZvcm1hdGlvbiBpcyBub3QgcmVsZXZhbnQgZm9yCithbiBIVk0gZ3Vlc3Qgd2hl cmUgdGhlIFAyTSBpcyBub3QgZGlyZWN0bHkgbWFuaXB1bGF0ZWQgdmlhIHRoZSBndWVzdC4gVGhl IG90aGVyCitzdGF0ZSBjb250YWluZWQgaW4gdGhlIGBzaGFyZWRfaW5mb2Agc3RydWN0dXJlIHJl bGF0ZXMgdGhlIGRvbWFpbiB3YWxsLWNsb2NrCisodGhlIHN0YXRlIG9mIHdoaWNoIHNob3VsZCBh bHJlYWR5IGJlIHRyYW5zZmVycmVkIGJ5IHRoZSBgUlRDYCBIVk0gY29udGV4dAoraW5mb3JtYXRp b24gd2hpY2ggY29udGFpbmVkIGluIHRoZSBgSFZNX0NPTlRFWFRgIHNhdmUgcmVjb3JkKSBhbmQg c29tZSBldmVudAorY2hhbm5lbCBzdGF0ZSAocGFydGljdWxhcmx5IGlmIHVzaW5nIHRoZSAqMmwq IHByb3RvY29sKS4gRXZlbnQgY2hhbm5lbCBzdGF0ZQord2lsbCBuZWVkIHRvIGJlIGZ1bGx5IHRy YW5zZmVycmVkIGlmIHdlIGFyZSBub3QgZ29pbmcgdG8gcmVxdWlyZSB0aGUgZ3Vlc3QKK2NvLW9w ZXJhdGlvbiB0byByZS1vcGVuIHRoZSBjaGFubmVscyBhbmQgc28gaXQgc2hvdWxkIGJlIHBvc3Np YmxlIHRvIHJlLWJ1aWxkIGEKK3NoYXJlZCBpbmZvIHBhZ2UgZm9yIGFuIEhWTSBndWVzdCBmcm9t IHN1Y2ggb3RoZXIgc3RhdGUuCisKK05vdGUgdGhhdCB0aGUgc2hhcmVkIGluZm8gcGFnZSBhbHNv IGNvbnRhaW5zIGFuIGFycmF5IG9mIGBYRU5fTEVHQUNZX01BWF9WQ1BVU2AKKygzMikgYHZjcHVf aW5mb2Agc3RydWN0dXJlcy4gQSBkb21haW4gbWF5IG5vbWluYXRlIGEgZGlmZmVyZW50IGd1ZXN0 IHBoeXNpY2FsCithZGRyZXNzIHRvIHVzZSBmb3IgdGhlIHZjcHUgaW5mby4gVGhpcyBpcyBtYW5k YXRvcnkgZm9yIGlmIGEgZG9tYWluIHdhbnRzIHRvCit1c2UgbW9yZSB0aGFuIDMyIHZDUFVzIGFu ZCBvcHRpb25hbCBmb3IgbGVnYWN5IHZDUFVzLiBUaGlzIG1hcHBpbmcgaXMgbm90CitjdXJyZW50 bHkgdHJhbnNmZXJyZWQgaW4gdGhlIG1pZ3JhdGlvbiBzdGF0ZSBzbyB0aGlzIHdpbGwgZWl0aGVy IG5lZWQgdG8gYmUKK2FkZGVkIGludG8gYW4gZXhpc3Rpbmcgc2F2ZSByZWNvcmQsIG9yIGFuIGFk ZGl0aW9uYWwgdHlwZSBvZiBzYXZlIHJlY29yZCB3aWxsCitiZSBuZWVkZWQuCisKKyMjIyBYZW5z dG9yZSBXYXRjaGVzCisKK0FzIG1lbnRpb25lZCBhYm92ZSwgbm8gZG9tYWluIFhlbnN0b3JlIHN0 YXRlIGlzIGN1cnJlbnRseSB0cmFuc2ZlcnJlZCBpbiB0aGUKK21pZ3JhdGlvbiBzdHJlYW0uIFRo ZXJlIGlzIGEgcmVjb3JkIGRlZmluZWQgaW4gKmxpYnhlbmxpZ2h0IERvbWFpbiBJbWFnZQorRm9y bWF0KiBbNF0gY2FsbGVkIGBFTVVMQVRPUl9YRU5TVE9SRV9EQVRBYCBmb3IgdHJhbnNmZXJyaW5n IFhlbnN0b3JlIG5vZGVzCityZWxhdGluZyB0byBlbXVsYXRvcnMgYnV0IG5vIHJlY29yZCB0eXBl IGlzIGRlZmluZWQgZm9yIG5vZGVzIHJlbGF0aW5nIHRvIHRoZQorZG9tYWluIGl0c2VsZiwgbm9y IGZvciByZWdpc3RlcmVkICp3YXRjaGVzKi4gQSBYZW5TdG9yZSB3YXRjaCBpcyBhIG1lY2hhbmlz bQordXNlZCBieSBQViBmcm9udGVuZCBhbmQgYmFja2VuZCBkcml2ZXJzIHRvIHJlcXVlc3QgYSBu b3RpZmljYXRpb24gaWYgdGhlIHZhbHVlCitvZiBhIHBhcnRpY3VsYXIgbm9kZSAoZS5nLiB0aGUg b3RoZXIgZW5k4oCZcyBzdGF0ZSBub2RlKSBjaGFuZ2VzLCBzbyBpdCBpcworaW1wb3J0YW50IHRo YXQgd2F0Y2hlcyBjb250aW51ZSB0byBmdW5jdGlvbiBhZnRlciBhIG1pZ3JhdGlvbi4gT25lIG9y IG1vcmUgbmV3CitzYXZlIHJlY29yZHMgd2lsbCB0aGVyZWZvcmUgYmUgcmVxdWlyZWQgdG8gdHJh bnNmZXIgWGVuc3RvcmUgc3RhdGUuIEl0IHdpbGwKK2Fsc28gYmUgbmVjZXNzYXJ5IHRvIGV4dGVu ZCB0aGUgKnN0b3JlKiBwcm90b2NvbFs1XSB3aXRoIG1lY2hhbmlzbXMgdG8gYWxsb3cKK3RoZSB0 b29sc3RhY2sgdG8gYWNxdWlyZSB0aGUgbGlzdCBvZiB3YXRjaGVzIHRoYXQgdGhlIGd1ZXN0IGhh cyByZWdpc3RlcmVkIGFuZAorZm9yIHRoZSB0b29sc3RhY2sgdG8gcmVnaXN0ZXIgYSB3YXRjaCBv biBiZWhhbGYgb2YgYSBkb21haW4uCisKKyMjIyBFdmVudCBjaGFubmVscworCitFdmVudCBjaGFu bmVscyBhcmUgZXNzZW50aWFsbHkgdGhlIHBhcmEtdmlydHVhbCBlcXVpdmFsZW50IG9mIGludGVy cnVwdHMuIFRoZXkKK2FyZSBhbiBpbXBvcnRhbnQgcGFydCBvZiBwb3N0IFBWIHByb3RvY29scy4g Tm9ybWFsbHkgYSBmcm9udGVuZCBkcml2ZXIgY3JlYXRlcworYW4gKmludGVyLWRvbWFpbiogZXZl bnQgY2hhbm5lbCBiZXR3ZWVuIGl0cyBvd24gZG9tYWluIGFuZCB0aGUgZG9tYWluIHJ1bm5pbmcK K3RoZSBiYWNrZW5kLCB3aGljaCBpdCBkaXNjb3ZlcnMgdXNpbmcgdGhlIGBiYWNrZW5kLWlkYCBu b2RlIGluIFhlbnN0b3JlIChzZWUKK2Fib3ZlKSwgYnkgbWFraW5nIGEgYEVWVENITk9QX2FsbG9j X3VuYm91bmRgIGh5cGVyY2FsbC4gVGhpcyBoeXBlcmNhbGwKK2FsbG9jYXRlcyBhbiBldmVudCBj aGFubmVsIG9iamVjdCBpbiB0aGUgaHlwZXJ2aXNvciBhbmQgYXNzaWducyBhICpsb2NhbCBwb3J0 KgorbnVtYmVyIHdoaWNoIGlzIHRoZW4gd3JpdHRlbiBpbnRvIHRoZSBmcm9udGVuZCBhcmVhIGlu IFhlbnN0b3JlLiBUaGUgYmFja2VuZAorZHJpdmVyIHRoZW4gcmVhZHMgdGhpcyBwb3J0IG51bWJl ciBhbmQgKmJpbmRzKiB0byB0aGUgZXZlbnQgY2hhbm5lbCBieQorc3BlY2lmeWluZyBpdCwgYW5k IHRoZSB2YWx1ZSBvZiBgZnJvbnRlbmQtaWRgLCBhcyAqcmVtb3RlIGRvbWFpbiogYW5kICpyZW1v dGUKK3BvcnQqIChyZXNwZWN0aXZlbHkpIHRvIGEgYEVWVENITk9QX2JpbmRfaW50ZXJkb21haW5g IGh5cGVyY2FsbC4gT25jZQorY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCBpbiB0aGlzIGZhc2hp b24gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVycyBjYW4gdXNlCit0aGUgZXZlbnQgY2hhbm5l bCBhcyBhICptYWlsYm94KiB0byBub3RpZnkgZWFjaCBvdGhlciB3aGVuIGEgc2hhcmVkIHJpbmcg aGFzCitiZWVuIHVwZGF0ZWQgd2l0aCBuZXcgcmVxdWVzdHMgb3IgcmVzcG9uc2Ugc3RydWN0dXJl cy4KKworQ3VycmVudGx5IG5vIGV2ZW50IGNoYW5uZWwgc3RhdGUgaXMgcHJlc2VydmVkIG9uIG1p Z3JhdGlvbiwgcmVxdWlyaW5nIGZyb250ZW5kCithbmQgYmFja2VuZCBkcml2ZXJzIHRvIGNyZWF0 ZSBhbmQgYmluZCBhIGNvbXBsZXRlIG5ldyBzZXQgb2YgZXZlbnQgY2hhbm5lbHMgaW4KK29yZGVy IHRvIHJlLWVzdGFibGlzaCBhIHByb3RvY29sIGNvbm5lY3Rpb24uIEhlbmNlLCBvbmUgb3IgbW9y ZSBuZXcgc2F2ZQorcmVjb3JkcyB3aWxsIGJlIHJlcXVpcmVkIHRvIHRyYW5zZmVyIGV2ZW50IGNo YW5uZWwgc3RhdGUgaW4gb3JkZXIgdG8gYXZvaWQgdGhlCituZWVkIGZvciBleHBsaWNpdCBhY3Rp b24gYnkgZnJvbnRlbmQgZHJpdmVycyBydW5uaW5nIGluIHRoZSBndWVzdC4gTm90ZSB0aGF0Cit0 aGUgbG9jYWwgcG9ydCBudW1iZXJzIG5lZWQgdG8gcHJlc2VydmVkIGluIHRoaXMgc3RhdGUgYXMg dGhleSBhcmUgdGhlIG9ubHkKK2NvbnRleHQgdGhlIGd1ZXN0IGhhcyB0byByZWZlciB0byB0aGUg aHlwZXJ2aXNvciBldmVudCBjaGFubmVsIG9iamVjdHMuCisgTm90ZSBhbHNvIHRoYXQgdGhlIFBW ICpzdG9yZSogKFhlbnN0b3JlIGFjY2VzcykgYW5kICpjb25zb2xlKiBwcm90b2NvbHMgYWxzbwor cmVseSBvbiBldmVudCBjaGFubmVscyB3aGljaCBhcmUgc2V0IHVwIGJ5IHRoZSB0b29sc3RhY2su IE5vcm1hbGx5LCBlYXJseSBpbgorbWlncmF0aW9uLCB0aGUgdG9vbHN0YWNrIHJ1bm5pbmcgb24g dGhlIHJlbW90ZSBob3N0IHdvdWxkIHNldCB1cCBhIG5ldyBwYWlyIG9mCitldmVudCBjaGFubmVs cyBmb3IgdGhlc2UgcHJvdG9jb2xzIGluIHRoZSBkZXN0aW5hdGlvbiBkb21haW4uIFRoZXNlIG1h eSBub3QgYmUKK2Fzc2lnbmVkIHRoZSBzYW1lIGxvY2FsIHBvcnQgbnVtYmVycyBhcyB0aGUgcHJv dG9jb2xzIHJ1bm5pbmcgaW4gdGhlIHNvdXJjZQorZG9tYWluLiBGb3Igbm9uLWNvb3BlcmF0aXZl IG1pZ3JhdGlvbiB0aGVzZSBjaGFubmVscyBtdXN0IGVpdGhlciBiZSBjcmVhdGVkIHdpdGgKK2Zp eGVkIHBvcnQgbnVtYmVycywgb3IgdGhlaXIgY3JlYXRpb24gbXVzdCBiZSBhdm9pZGVkIGFuZCBp bnN0ZWFkIGJlIGluY2x1ZGVkCitpbiB0aGUgZ2VuZXJhbCBldmVudCBjaGFubmVsIHN0YXRlIHJl Y29yZChzKS4KKworIyMjIEdyYW50IHRhYmxlCisKK1RoZSBncmFudCB0YWJsZSBpcyBlc3NlbnRp YWxseSB0aGUgcGFyYS12aXJ0dWFsIGVxdWl2YWxlbnQgb2YgYW4gSU9NTVUuIEZvcgorZXhhbXBs ZSwgdGhlIHNoYXJlZCByaW5ncyBvZiBhIFBWIHByb3RvY29sIGFyZSAqZ3JhbnRlZCogYnkgYSBm cm9udGVuZCBkcml2ZXIKK3RvIHRoZSBiYWNrZW5kIGRyaXZlciBieSBhbGxvY2F0aW5nICpncmFu dCBlbnRyaWVzKiBpbiB0aGUgZ3Vlc3TigJlzIHRhYmxlLAorZmlsbGluZyBpbiBkZXRhaWxzIG9m IHRoZSBtZW1vcnkgcGFnZXMgYW5kIHRoZW4gd3JpdGluZyB0aGUgKmdyYW50IHJlZmVyZW5jZXMq CisodGhlIGluZGV4IHZhbHVlcyBvZiB0aGUgZ3JhbnQgZW50cmllcykgaW50byBYZW5zdG9yZS4g VGhlIGdyYW50IHJlZmVyZW5jZXMgb2YKK3RoZSBwcm90b2NvbCBidWZmZXJzIHRoZW1zZWx2ZXMg YXJlIHR5cGljYWxseSB3cml0dGVuIGRpcmVjdGx5IGludG8gdGhlIHJlcXVlc3QKK3N0cnVjdHVy ZXMgcGFzc2VkIHZpYSBhIHNoYXJlZCByaW5nLgorCitUaGUgZ3Vlc3QgaXMgcmVzcG9uc2libGUg Zm9yIG1hbmFnaW5nIGl0cyBvd24gZ3JhbnQgdGFibGUuIE5vIGh5cGVyY2FsbCBpcworcmVxdWly ZWQgdG8gZ3JhbnQgYSBtZW1vcnkgcGFnZSB0byBhbm90aGVyIGRvbWFpbi4gSXQgaXMgc3VmZmlj aWVudCB0byBmaW5kIGFuCit1bnVzZWQgZ3JhbnQgZW50cnkgYW5kIHNldCBiaXRzIGluIHRoZSBl bnRyeSB0byBnaXZlIHJlYWQgYW5kL29yIHdyaXRlIGFjY2VzcwordG8gYSByZW1vdGUgZG9tYWlu IGFsc28gc3BlY2lmaWVkIGluIHRoZSBlbnRyeSBhbG9uZyB3aXRoIHRoZSBwYWdlIGZyYW1lCitu dW1iZXIuIFRodXMgdGhlIGxheW91dCBhbmQgY29udGVudCBvZiB0aGUgZ3JhbnQgdGFibGUgbG9n aWNhbGx5IGZvcm1zIHBhcnQgb2YKK3RoZSBndWVzdCBzdGF0ZS4KKworQ3VycmVudGx5IG5vIGdy YW50IHRhYmxlIHN0YXRlIGlzIG1pZ3JhdGVkLCByZXF1aXJpbmcgYSBndWVzdCB0byBzZXBhcmF0 ZWx5CittYWludGFpbiBhbnkgc3RhdGUgdGhhdCBpdCB3aXNoZXMgdG8gcGVyc2lzdCBlbHNld2hl cmUgaW4gaXRzIG1lbW9yeSBpbWFnZSBhbmQKK3RoZW4gcmVzdG9yZSBpdCBhZnRlciBtaWdyYXRp b24uIFRodXMgdG8gYXZvaWQgdGhlIG5lZWQgZm9yIHN1Y2ggZXhwbGljaXQKK2FjdGlvbiBieSB0 aGUgZ3Vlc3QsIG9uZSBvciBtb3JlIG5ldyBzYXZlIHJlY29yZHMgd2lsbCBiZSByZXF1aXJlZCB0 byBtaWdyYXRlCit0aGUgY29udGVudHMgb2YgdGhlIGdyYW50IHRhYmxlLgorCisjIE91dGxpbmUg UHJvcG9zYWwKKworKiBQViBiYWNrZW5kIGRyaXZlcnMgd2lsbCBiZSBtb2RpZmllZCB0byB1bmls YXRlcmFsbHkgcmUtZXN0YWJsaXNoIGNvbm5lY3Rpb24KK3RvIGEgZnJvbnRlbmQgaWYgdGhlIGJh Y2tlbmQgc3RhdGUgbm9kZSBpcyByZXN0b3JlZCB3aXRoIHZhbHVlIDQKKyhYZW5idXNTdGF0ZUNv bm5lY3RlZClbNl0uCisKKyogVGhlIHRvb2xzdGFjayBzaG91bGQgYmUgbW9kaWZpZWQgdG8gYWxs b3cgZG9taWQgdG8gYmUgcmFuZG9taXplZCBvbiBpbml0aWFsCitjcmVhdGlvbiBvciBkZWZhdWx0 IG1pZ3JhdGlvbiwgYnV0IG1ha2UgaXQgaWRlbnRpY2FsIHRvIHRoZSBzb3VyY2UgZG9tYWluIG9u Citub24tY29vcGVyYXRpdmUgbWlncmF0aW9uLiBOb24tQ29vcGVyYXRpdmUgbWlncmF0aW9uIHdp bGwgaGF2ZSB0byBiZSBkZW5pZWQgaWYgdGhlCitkb21pZCBpcyB1bmF2YWlsYWJsZSBvbiB0aGUg dGFyZ2V0IGhvc3QsIGJ1dCByYW5kb21pemF0aW9uIG9mIGRvbWlkIG9uIGNyZWF0aW9uCitzaG91 bGQgaG9wZWZ1bGx5IG1pbmltaXplIHRoZSBsaWtlbGlob29kIG9mIHRoaXMuIE5vbi1Db29wZXJh dGl2ZSBtaWdyYXRpb24gdG8KK2xvY2FsaG9zdCB3aWxsIGNsZWFybHkgbm90IGJlIHBvc3NpYmxl LiBQYXRjaGVzIGhhdmUgYWxyZWFkeSBiZWVuIHNlbnQgdG8KK2B4ZW4tZGV2ZWxgIHRvIG1ha2Ug dGhpcyBjaGFuZ2VbN10uCisKKyogYHhlbnN0b3JlZGAgc2hvdWxkIGJlIG1vZGlmaWVkIHRvIGlt cGxlbWVudCB0aGUgbmV3IG1lY2hhbmlzbXMgbmVlZGVkLiBTZWUKKypPdGhlciBQYXJhLVZpcnR1 YWwgU3RhdGUqIGFib3ZlLiBBIGZ1cnRoZXIgZGVzaWduIGRvY3VtZW50IHdpbGwgcHJvcG9zZQor YWRkaXRpb25hbCBwcm90b2NvbCBtZXNzYWdlcy4KKworKiBXaXRoaW4gdGhlIG1pZ3JhdGlvbiBz dHJlYW0gZXh0cmEgc2F2ZSByZWNvcmRzIHdpbGwgYmUgZGVmaW5lZCBhcyByZXF1aXJlZC4KK1Nl ZSAqT3RoZXIgUGFyYS1WaXJ0dWFsIFN0YXRlKiBhYm92ZS4gQSBmdXJ0aGVyIGRlc2lnbiBkb2N1 bWVudCB3aWxsIHByb3Bvc2UKK21vZGlmaWNhdGlvbnMgdG8gdGhlIGxpYnhlbmxpZ2h0IGFuZCBs aWJ4ZW5jdHJsIERvbWFpbiBJbWFnZSBGb3JtYXRzLgorCisqIEFuIG9wdGlvbiBzaG91bGQgYmUg YWRkZWQgdG8gdGhlIHRvb2xzdGFjayB0byBpbml0aWF0ZSBhIG5vbi1jb29wZXJhdGl2ZQorbWln cmF0aW9uLCBpbnN0ZWFkIG9mIHRoZSAoZGVmYXVsdCkgcG90ZW50aWFsbHkgY28tb3BlcmF0aXZl IG1pZ3JhdGlvbi4KK0Vzc2VudGlhbGx5IHRoaXMgc2hvdWxkIHNraXAgdGhlIGNoZWNrIHRvIHNl ZSBpZiBQViBkcml2ZXJzIGFuZCBtaWdyYXRlIGFzIGlmCit0aGVyZSBhcmUgbm9uZSBwcmVzZW50 LCBidXQgYWxzbyBlbmFibGluZyB0aGUgZXh0cmEgc2F2ZSByZWNvcmRzLiBOb3RlIHRoYXQgYXQK K2xlYXN0IHNvbWUgb2YgdGhlIGV4dHJhIHJlY29yZHMgc2hvdWxkIG9ubHkgZm9ybSBwYXJ0IG9m IGEgbm9uLWNvb3BlcmF0aXZlCittaWdyYXRpb24gc3RyZWFtLiBGb3IgZXhhbXBsZSwgbWlncmF0 aW5nIGV2ZW50IGNoYW5uZWwgc3RhdGUgd291bGQgYmUgY291bnRlcgorcHJvZHVjdGl2ZSBpbiBh IG5vcm1hbCBtaWdyYXRpb24gYXMgdGhpcyB3aWxsIGVzc2VudGlhbGx5IGxlYWsgZXZlbnQgY2hh bm5lbAorb2JqZWN0cyBhdCB0aGUgcmVjZWl2aW5nIGVuZC4gT3RoZXJzLCBzdWNoIGFzIGdyYW50 IHRhYmxlIHN0YXRlLCBjb3VsZAorcG90ZW50aWFsbHkgaGFybWxlc3NseSBmb3JtIHBhcnQgb2Yg YSBub3JtYWwgbWlncmF0aW9uIHN0cmVhbS4KKworKiAqICoKK1sxXSBQViBkcml2ZXJzIGFyZSBk ZWVtZWQgdG8gYmUgaW5zdGFsbGVkIGlmIHRoZSBIVk0gcGFyYW1ldGVyCisqSFZNX1BBUkFNX0NB TExCQUNLX0lSUSogaGFzIGJlZW4gc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUuCisKK1syXSBTZWUg aHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZ2l0d2ViLz9wPXhlbi5naXQ7YT1ibG9iO2Y9eGVuL2lu Y2x1ZGUvcHVibGljL2lvL3hlbmJ1cy5oCisKK1szXSBTZWUgaHR0cHM6Ly94ZW5iaXRzLnhlbi5v cmcvZ2l0d2ViLz9wPXhlbi5naXQ7YT1ibG9iO2Y9ZG9jcy9zcGVjcy9saWJ4Yy1taWdyYXRpb24t c3RyZWFtLnBhbmRvYworCitbNF0gU2VlIGh0dHBzOi8veGVuYml0cy54ZW4ub3JnL2dpdHdlYi8/ cD14ZW4uZ2l0O2E9YmxvYjtmPWRvY3Mvc3BlY3MvbGlieGwtbWlncmF0aW9uLXN0cmVhbS5wYW5k b2MKKworWzVdIFNlZSBodHRwczovL3hlbmJpdHMueGVuLm9yZy9naXR3ZWIvP3A9eGVuLmdpdDth PWJsb2I7Zj1kb2NzL21pc2MveGVuc3RvcmUudHh0CisKK1s2XSBgeGVuLWJsa2JhY2tgIGFuZCBg eGVuLW5ldGJhY2tgIGhhdmUgYWxyZWFkeSBiZWVuIG1vZGlmaWVkIGluIExpbnV4IHRvIGRvCit0 aGlzLgorCitbN10gU2VlIGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRt bC94ZW4tZGV2ZWwvMjAyMC0wMS9tc2cwMDYzMi5odG1sCisKLS0gCjIuMjAuMQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=