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=-5.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,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 18907C4740A for ; Tue, 10 Sep 2019 11:05:04 +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 DF6BD20692 for ; Tue, 10 Sep 2019 11:05:03 +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="moGCbmcn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DF6BD20692 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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 1i7dwv-0002S2-4j; Tue, 10 Sep 2019 11:04:41 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i7dwu-0002Rx-GP for xen-devel@lists.xenproject.org; Tue, 10 Sep 2019 11:04:40 +0000 X-Inumbo-ID: c7bbaa1c-d3ba-11e9-b76c-bc764e2007e4 Received: from mail-lj1-x242.google.com (unknown [2a00:1450:4864:20::242]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id c7bbaa1c-d3ba-11e9-b76c-bc764e2007e4; Tue, 10 Sep 2019 11:04:38 +0000 (UTC) Received: by mail-lj1-x242.google.com with SMTP id q64so5417022ljb.12 for ; Tue, 10 Sep 2019 04:04:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=TKwXiNGiftTdbfozaoswo8sB3T9SMJXlFYOEIsPjfR4=; b=moGCbmcngKmyfFhW+jB+TRjaiGkhewMxKKJz3yDxjtiNM2s36caz+rfq1VFXDFAI6A rusZxToi87wy4tvrAmutR0JyNbTT6tINSoiH17hPMumObsY51pjh+qvNm/EJeQZ7/CIu l1hIIQJrgjcw46x5zV4pBwhxbaE3v3LWL8SiRzaSgBqd+uhBAM7ytej6vVVqlmtsBGqP g+pffitUOa28r/48RAhqzt8PNf3LDCIYbq9N2eLnRUwlqEhoOvjY45jUettMowNaMvEo JSlbHBQ5KHQzgWlMOKLQ12lR/FzqkKl79aMMNDHGLklqwW/n/vb8nZTQA02NwhCUCfDk PFmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=TKwXiNGiftTdbfozaoswo8sB3T9SMJXlFYOEIsPjfR4=; b=JvHfEpQN+8GqGxX1cSaJv3dCOLhXtQU0qv4+2iO/f+MTTvJ6uSbnccgtVef0df9wGS ixhcQfZLw5Lq+f9sVVlEu7yjjCBc13BSv4k5qimEpw5ZKGxchcFBj+kR4JwYlr5zbAV7 qwz0ML8qQnTbBDmyPZwZS7fOVXCmhsqvntyo4Q9H8wj6+gvnGPn0u8Vn4kCjcR+YNdkh hh0IQCd6GI0s5EQxYRyFMLNwNAzp3IcaltuWccEHGL27W1E7BnyYf/IEcUNngMGkO7BV TvVzRID5/XSfsYghtZDhYAseaQbhsR/AdicVlDr6ZmShF0DZpIW2G50lVPpMGgVF4I5O wJng== X-Gm-Message-State: APjAAAWYHk0ev5pLY/PT14/RWne7/Pn9G4FKSc7Ksu24kaFsfSYvnRah Zwau0xDaZXYP4fRB9UTVujc= X-Google-Smtp-Source: APXvYqx+6/enuagSlo37fBcNQZCxkM9PQXYls2YJ94oBqhkRX2Yth8/IvWH5kNxIRgNegYPzRjuq7Q== X-Received: by 2002:a2e:a313:: with SMTP id l19mr3443195lje.205.1568113477403; Tue, 10 Sep 2019 04:04:37 -0700 (PDT) Received: from [10.17.182.120] (ll-74.141.223.85.sovam.net.ua. [85.223.141.74]) by smtp.gmail.com with ESMTPSA id f22sm4010249lfa.41.2019.09.10.04.04.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Sep 2019 04:04:36 -0700 (PDT) To: Julien Grall , xen-devel@lists.xenproject.org References: <1566324587-3442-1-git-send-email-olekstysh@gmail.com> <1566324587-3442-9-git-send-email-olekstysh@gmail.com> <2b1d815c-720d-46c1-04de-0b8eb627b22f@arm.com> From: Oleksandr Message-ID: <1f14d80f-9110-9bf1-42ba-87168896c05c@gmail.com> Date: Tue, 10 Sep 2019 14:04:36 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <2b1d815c-720d-46c1-04de-0b8eb627b22f@arm.com> Content-Language: en-US Subject: Re: [Xen-devel] [PATCH V3 8/8] iommu/arm: Add Renesas IPMMU-VMSA support X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Oleksandr Tyshchenko , Yoshihiro Shimoda , sstabellini@kernel.org, Volodymyr_Babchuk@epam.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Ck9uIDEwLjA5LjE5IDAwOjI0LCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4gSGkgT2xla3NhbmRyLAoK SGkgSnVsaWVuCgoKPgo+IE9uIDgvMjAvMTkgNzowOSBQTSwgT2xla3NhbmRyIFR5c2hjaGVua28g d3JvdGU6Cj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL0tjb25maWcgCj4+ IGIveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9LY29uZmlnCj4+IGluZGV4IGJjMGU5Y2QuLmM5M2E2 YjIgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9hcmNoL2FybS9wbGF0Zm9ybXMvS2NvbmZpZwo+PiArKysg Yi94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL0tjb25maWcKPj4gQEAgLTI1LDYgKzI1LDcgQEAgY29u ZmlnIFJDQVIzCj4+IMKgwqDCoMKgwqAgYm9vbCAiUmVuZXNhcyBSQ2FyMyBzdXBwb3J0Igo+PiDC oMKgwqDCoMKgIGRlcGVuZHMgb24gQVJNXzY0Cj4+IMKgwqDCoMKgwqAgc2VsZWN0IEhBU19TQ0lG Cj4+ICvCoMKgwqAgc2VsZWN0IElQTU1VX1ZNU0EKPgo+IEFzIGRpc2N1c3NlZCBwcmV2aW91c2x5 LCBJIHRoaW5rIHRoZSBJUE1NVSBkcml2ZXIgc2hvdWxkIGJlIG1lcmdlZCBhcyAKPiB0ZWNoIHBy ZXZpZXcgZm9yIGEgY291cGxlIG9mIHJlbGVhc2UgdG8gYWxsb3cgbW9yZSB1c2VycyB0byB0ZXN0 IAo+IGJlZm9yZSB3ZSBtYXJrIGl0IGFzIHN1cHBvcnRlZC4KClllcwoKCj4KPiBCYXNlZCBvbiB0 aGlzLCBJIHdvdWxkIG5vdCBhZHZpc2UgdG8gc2VsZWN0IElQTU1VX1ZNU0EgYnkgZGVmYXVsdCBh cyAKPiB1c2VyIG1heSBub3Qgd2FudCB0byB1c2UgdGVjaCBwcmV2aWV3IGNvZGUgYnkgZGVmYXVs dC4gSW5zdGVhZCBJIHdvdWxkIAo+IG9ubHkgc2VsZWN0IGlmIEVYUEVSVCBpcyBzZXQuCgpBZ3Jl ZS4gV2lsbCBkby4KCgo+Cj4+IMKgwqDCoMKgwqAgLS0taGVscC0tLQo+PiDCoMKgwqDCoMKgIEVu YWJsZSBhbGwgdGhlIHJlcXVpcmVkIGRyaXZlcnMgZm9yIFJlbmVzYXMgUkNhcjMKPj4gwqAgZGlm ZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL0tjb25maWcgCj4+IGIveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvS2NvbmZpZwo+PiBpbmRleCBhM2MwNjQ5Li40N2VhZGI0IDEwMDY0NAo+ PiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9LY29uZmlnCj4+ICsrKyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL0tjb25maWcKPj4gQEAgLTEyLDQgKzEyLDE3IEBAIGNvbmZpZyBBUk1f U01NVQo+PiDCoCDCoMKgwqDCoMKgwqDCoCBTYXkgWSBoZXJlIGlmIHlvdXIgU29DIGluY2x1ZGVz IGFuIElPTU1VIGRldmljZSAKPj4gaW1wbGVtZW50aW5nIHRoZQo+PiDCoMKgwqDCoMKgwqDCoCBB Uk0gU01NVSBhcmNoaXRlY3R1cmUuCj4+ICsKPj4gK2NvbmZpZyBJUE1NVV9WTVNBCj4+ICvCoMKg wqAgYm9vbCAiUmVuZXNhcyBJUE1NVS1WTVNBIGZvdW5kIGluIFItQ2FyIEdlbjMgU29DcyIKClNo YWxsIEkgYWRkIEVYUEVSVCBoZXJlIGFsc28/Cgpib29sICJSZW5lc2FzIElQTU1VLVZNU0EgZm91 bmQgaW4gUi1DYXIgR2VuMyBTb0NzIiBpZiBFWFBFUlQgPSAieSIKCgo+PiArwqDCoMKgIGRlZmF1 bHQgbgo+PiArwqDCoMKgIGRlcGVuZHMgb24gQVJNXzY0Cj4+ICvCoMKgwqAgLS0taGVscC0tLQo+ PiArwqDCoMKgwqDCoCBTdXBwb3J0IGZvciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFJlbmVzYXMg SVBNTVUtVk1TQSBmb3VuZAo+PiArwqDCoMKgwqDCoCBpbiBSLUNhciBHZW4zIFNvQ3MuCj4+ICsK Pj4gK8KgwqDCoMKgwqAgU2F5IFkgaGVyZSBpZiB5b3UgYXJlIHVzaW5nIG5ld2VzdCBSLUNhciBH ZW4zIFNvQ3MgcmV2aXNpb25zCj4+ICvCoMKgwqDCoMKgIChIMyBFUzMuMCwgTTMtVyssIGV0Yykg d2hpY2ggSVBNTVUgaGFyZHdhcmUgc3VwcG9ydHMgc3RhZ2UgMgo+PiArwqDCoMKgwqDCoCB0cmFu c2xhdGlvbiB0YWJsZSBmb3JtYXQgYW5kIGlzIGFibGUgdG8gdXNlIENQVSdzIFAyTSB0YWJsZSBh cyAKPj4gaXMuCj4+ICsKPj4gwqAgZW5kaWYKPgo+IFsuLi5dCj4KPj4gK8KgwqDCoCAvKiBXYWl0 IHVudGlsIHRoZSBSb290IGRldmljZSBoYXMgYmVlbiByZWdpc3RlcmVkIGZvciBzdXJlLiAqLwo+ PiArwqDCoMKgIGlmICggIW1tdS0+cm9vdCApCj4+ICvCoMKgwqAgewo+PiArwqDCoMKgwqDCoMKg wqAgZGV2X2Vycigmbm9kZS0+ZGV2LCAiUm9vdCBJUE1NVSBoYXNuJ3QgYmVlbiByZWdpc3RlcmVk IHlldFxuIik7Cj4KPiBUaGlzIGlzIGEgYml0IG9kZCB0byB0aHJvdyBhbiBlcnJvciBpZiB3ZSBh cmUgZ29pbmcgdG8gZGVmZXIgdGhlIHByb2JlLgoKQWdyZWUuIFdpbGwgcmVtb3ZlLgoKCj4KPj4g K3N0YXRpYyBfX2luaXQgYm9vbCBpcG1tdV9zdGFnZTJfc3VwcG9ydGVkKHZvaWQpCj4+ICt7Cj4+ ICvCoMKgwqAgc3RydWN0IGR0X2RldmljZV9ub2RlICpucDsKPj4gK8KgwqDCoCB1aW50NjRfdCBh ZGRyLCBzaXplOwo+PiArwqDCoMKgIHZvaWQgX19pb21lbSAqYmFzZTsKPj4gK8KgwqDCoCB1aW50 MzJfdCBwcm9kdWN0LCBjdXQ7Cj4+ICvCoMKgwqAgc3RhdGljIGVudW0KPj4gK8KgwqDCoCB7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBVTktOT1dOLAo+PiArwqDCoMKgwqDCoMKgwqAgU1VQUE9SVEVELAo+ PiArwqDCoMKgwqDCoMKgwqAgTk9UU1VQUE9SVEVECj4+ICvCoMKgwqAgfSBzdGFnZTJfc3VwcG9y dGVkID0gVU5LTk9XTjsKPj4gKwo+PiArwqDCoMKgIC8qIFVzZSB0aGUgZmxhZyB0byBhdm9pZCBj aGVja2luZyBmb3IgdGhlIGNvbXBhdGliaWxpdHkgbW9yZSAKPj4gdGhlbiBvbmNlLiAqLwo+Cj4g VGhlcmUgYXJlIG9ubHkgb25lIElPTU1VIHJvb3QgdGhhdCB3aWxsIGFsd2F5cyBiZSBpbml0aWFs aXplZCBmaXJzdC4gCj4gU28gY2FuJ3QgeW91IG1vdmUgdGhpcyBjb2RlIGluIHRoZSByb290IElP TU1VIHBhdGg/CgpBY3R1YWxseSwgSSBjYW4uIEdvb2QgcG9pbnQuCgoKPgo+Cj4+ICvCoMKgwqAg c3dpdGNoICggc3RhZ2UyX3N1cHBvcnRlZCApCj4+ICvCoMKgwqAgewo+PiArwqDCoMKgIGNhc2Ug U1VQUE9SVEVEOgo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4+ICsKPj4gK8KgwqDC oCBjYXNlIE5PVFNVUFBPUlRFRDoKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4g Kwo+PiArwqDCoMKgIGNhc2UgVU5LTk9XTjoKPj4gK8KgwqDCoCBkZWZhdWx0Ogo+PiArwqDCoMKg wqDCoMKgwqAgc3RhZ2UyX3N1cHBvcnRlZCA9IE5PVFNVUFBPUlRFRDsKPj4gK8KgwqDCoMKgwqDC oMKgIGJyZWFrOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIG5wID0gZHRfZmluZF9jb21w YXRpYmxlX25vZGUoTlVMTCwgTlVMTCwgInJlbmVzYXMscHJyIik7Cj4+ICvCoMKgwqAgaWYgKCAh bnAgKQo+PiArwqDCoMKgIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHByaW50ayhYRU5MT0dfRVJSICJp cG1tdTogRmFpbGVkIHRvIGZpbmQgUFJSIG5vZGVcbiIpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIGZhbHNlOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGlmICggZHRfZGV2aWNlX2dl dF9hZGRyZXNzKG5wLCAwLCAmYWRkciwgJnNpemUpICkKPj4gK8KgwqDCoCB7Cj4+ICvCoMKgwqDC oMKgwqDCoCBwcmludGsoWEVOTE9HX0VSUiAiaXBtbXU6IEZhaWxlZCB0byBnZXQgUFJSIE1NSU9c biIpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+PiArwqDCoMKgIH0KPj4gKwo+ PiArwqDCoMKgIGJhc2UgPSBpb3JlbWFwX25vY2FjaGUoYWRkciwgc2l6ZSk7Cj4+ICvCoMKgwqAg aWYgKCAhYmFzZSApCj4+ICvCoMKgwqAgewo+PiArwqDCoMKgwqDCoMKgwqAgcHJpbnRrKFhFTkxP R19FUlIgImlwbW11OiBGYWlsZWQgdG8gaW9yZW1hcCBQUlIgTU1JT1xuIik7Cj4+ICvCoMKgwqDC oMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgcHJvZHVj dCA9IHJlYWRsKGJhc2UpOwo+PiArwqDCoMKgIGN1dCA9IHByb2R1Y3QgJiBSQ0FSX0NVVF9NQVNL Owo+PiArwqDCoMKgIHByb2R1Y3QgJj0gUkNBUl9QUk9EVUNUX01BU0s7Cj4+ICsKPj4gK8KgwqDC oCBzd2l0Y2ggKCBwcm9kdWN0ICkKPj4gK8KgwqDCoCB7Cj4+ICvCoMKgwqAgY2FzZSBSQ0FSX1BS T0RVQ1RfSDM6Cj4+ICvCoMKgwqAgY2FzZSBSQ0FSX1BST0RVQ1RfTTNXOgo+PiArwqDCoMKgwqDC oMKgwqAgaWYgKCBjdXQgPj0gUkNBUl9DVVRfVkVSMzAgKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdGFnZTJfc3VwcG9ydGVkID0gU1VQUE9SVEVEOwo+PiArwqDCoMKgwqDCoMKgwqAgYnJl YWs7Cj4+ICsKPj4gK8KgwqDCoCBjYXNlIFJDQVJfUFJPRFVDVF9NM046Cj4+ICvCoMKgwqDCoMKg wqDCoCBzdGFnZTJfc3VwcG9ydGVkID0gU1VQUE9SVEVEOwo+PiArwqDCoMKgwqDCoMKgwqAgYnJl YWs7Cj4+ICsKPj4gK8KgwqDCoCBkZWZhdWx0Ogo+PiArwqDCoMKgwqDCoMKgwqAgcHJpbnRrKFhF TkxPR19FUlIgImlwbW11OiBVbnN1cHBvcnRlZCBTb0MgdmVyc2lvblxuIik7Cj4+ICvCoMKgwqDC oMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBpb3VubWFwKGJhc2Up Owo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIHN0YWdlMl9zdXBwb3J0ZWQgPT0gU1VQUE9SVEVEOwo+ PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGR0X2RldmljZV9tYXRjaCBpcG1tdV9k dF9tYXRjaFtdIF9faW5pdGNvbnN0ID0KPj4gK3sKPj4gK8KgwqDCoCBEVF9NQVRDSF9DT01QQVRJ QkxFKCJyZW5lc2FzLGlwbW11LXI4YTc3OTUiKSwKPj4gK8KgwqDCoCBEVF9NQVRDSF9DT01QQVRJ QkxFKCJyZW5lc2FzLGlwbW11LXI4YTc3OTY1IiksCj4+ICvCoMKgwqAgRFRfTUFUQ0hfQ09NUEFU SUJMRSgicmVuZXNhcyxpcG1tdS1yOGE3Nzk2IiksCj4+ICvCoMKgwqAgeyAvKiBzZW50aW5lbCAq LyB9LAo+PiArfTsKPj4gKwo+PiArc3RhdGljIF9faW5pdCBpbnQgaXBtbXVfaW5pdChzdHJ1Y3Qg ZHRfZGV2aWNlX25vZGUgKm5vZGUsIGNvbnN0IHZvaWQgCj4+ICpkYXRhKQo+PiArewo+PiArwqDC oMKgIGludCByZXQ7Cj4+ICsKPj4gK8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBFdmVuIGlmIHRo ZSBkZXZpY2UgY2FuJ3QgYmUgaW5pdGlhbGl6ZWQsIHdlIGRvbid0IHdhbnQgdG8gZ2l2ZQo+PiAr wqDCoMKgwqAgKiB0aGUgSVBNTVUgZGV2aWNlIHRvIGRvbTAuCj4+ICvCoMKgwqDCoCAqLwo+PiAr wqDCoMKgIGR0X2RldmljZV9zZXRfdXNlZF9ieShub2RlLCBET01JRF9YRU4pOwo+PiArCj4+ICvC oMKgwqAgaWYgKCAhaW9tbXVfaGFwX3B0X3NoYXJlICkKPgo+IGlvbW11X2hhcF9wdF9zaGFyZSB3 aWxsIHNvb24gYmUgaGFyZGNvZGVkIHRvIHRydWUgb24gQXJtIChzZWUgWzFdKS4gCj4gRXZlbiB3 aXRob3V0IHRoZSBwYXRjaCwgdGhlIHZhbHVlIG9mIGlvbW11X2hhcF9wdF9zaGFyZSBzaG91bGQg YmUgCj4gaWdub3JlZCBhcyBkb25lIGJ5IHRoZSBTTU1VLgoKSSBnb3QgaXQuIFdpbGwgaWdub3Jl LgoKCj4KPgo+PiArwqDCoMKgIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHByaW50a19vbmNlKFhFTkxP R19FUlIgImlwbW11OiBQMk0gdGFibGUgbXVzdCBhbHdheXMgYmUgCj4+IHNoYXJlZCBiZXR3ZWVu IHRoZSBDUFUgYW5kIHRoZSBJUE1NVVxuIik7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJ TlZBTDsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBpZiAoICFpcG1tdV9zdGFnZTJfc3Vw cG9ydGVkKCkgKQo+PiArwqDCoMKgIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHByaW50a19vbmNlKFhF TkxPR19FUlIgImlwbW11OiBQMk0gc2hhcmluZyBpcyBub3Qgc3VwcG9ydGVkIAo+PiBpbiBjdXJy ZW50IFNvQyByZXZpc2lvblxuIik7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0RFVjsK Pgo+IFRoZSBpZiBwYXJ0IGlzIHJldHVybmluZyBzby4uLgo+Cj4+ICvCoMKgwqAgfQo+PiArwqDC oMKgIGVsc2UKPgo+IC4uLiB0aGUgZWxzZSBwYXJ0IGlzIG5vdCBuZWNlc3NhcnkgcmVtb3Zpbmcg b25lIGxheWVyIG9mIGluZGVudGF0aW9uLgoKb2sKCgotLSAKUmVnYXJkcywKCk9sZWtzYW5kciBU eXNoY2hlbmtvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==