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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7C538C77B75 for ; Tue, 23 May 2023 13:54:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:CC :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=Aeck2tMNuyY+9PaGI846lQWhyrKUafW5aNKG1dZKPsU=; b=Lbuy/V5BqP51sL 01YoP0y+S5f/0KldvpI1jyRxP1Sd+sHY+deYAWVp0T2CMpI5Xju6RoZ4Lvv0VQ5UAlnwpiZBqi3hC pcC/wZ5SlaSqpmo7HEUxVBc29ODWeiE0iFYZB2evVI91H7gsWvigrZ0jG826JGOWLqlN7LLxwjYS5 OAzL/BJXSOrbXo9+7MHO1+7Q1b7nioc1Ewv1x/vySdET0e7PNqpOG5pZSgMh//650lJurtuJyy4Hl kBPskNEm3oJizCTeSrPmCGX440eI6+pKam4YCax4vQ3jUFBARvP1SrDke2ramiidl2DVYiNeYQLJj Yya49bHlErKKSwbL6m2g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q1ST5-00AQMh-2d; Tue, 23 May 2023 13:54:27 +0000 Received: from mx.sberdevices.ru ([45.89.227.171]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q1SSm-00AQCg-0V; Tue, 23 May 2023 13:54:13 +0000 Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id 7425D5FD02; Tue, 23 May 2023 16:54:01 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1684850041; bh=EEnUKx15kCXa8L+oInysTAxZfz9CTEZv+3zggjX0I7s=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=Uif3ccBorE+ICiC2YLVyh4A1AjSM4fnPbkuHrwEw9rzsDxlhJhl8pxYJBUYX4Qq3T RYFagq2bEr/NOllu3Ne2PGX/jWBvSaVDo2nZaG0OjDCCq/pBQKgyNKsW2aGneCxbk1 VVUYDVlgnX4xB+dqTK6vJxztMXY5cMT4dnedeadQ5mrR6DdaRdktQGS+epHHHI4neh CfiE0u54d7iYu1EZiewhsa+BTKw67GI0/6eixtZ9/YxWLHM9LfYyLp7JtZcKO0I4Ep Emly9V1BsmDkNwO2w+7RhD6m8ptdsItEDVQC4UlmXX44i9B1lp+DpzWm2T3T6abN90 y94KRUU81RWOQ== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Tue, 23 May 2023 16:54:00 +0300 (MSK) From: Dmitry Rokosov To: , , , , , , , CC: , , , , , , , , Dmitry Rokosov Subject: [PATCH v16 0/6] add Amlogic A1 clock controller drivers Date: Tue, 23 May 2023 16:53:45 +0300 Message-ID: <20230523135351.19133-1-ddrokosov@sberdevices.ru> X-Mailer: git-send-email 2.36.0 MIME-Version: 1.0 X-Originating-IP: [172.16.1.6] X-ClientProxiedBy: S-MS-EXCH02.sberdevices.ru (172.16.1.5) To S-MS-EXCH01.sberdevices.ru (172.16.1.4) X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2023/05/23 12:15:00 #21372692 X-KSMG-AntiVirus-Status: Clean, skipped X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230523_065408_909180_63BE96CC X-CRM114-Status: GOOD ( 29.76 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org QTEgU29DIGhhcyBmb3VyIGNsb2NrIGNvbnRyb2xsZXJzIG9uIHRoZSBib2FyZDogUExMLCBQZXJp cGhlcmFscywgQ1BVLAphbmQgQXVkaW8uIFRoZSBhdWRpbyBjbG9jayBjb250cm9sbGVyIGlzIGRp ZmZlcmVudCBmcm9tIG90aGVycywgYnV0IHRoZQpyZXN0IGFyZSB2ZXJ5IHNpbWlsYXIgZnJvbSBh IGZ1bmN0aW9uYWwgYW5kIHJlZ21hcCBwb2ludCBvZiB2aWV3LgpUaGlzIHBhdGNoIHNlcmllcyBh ZGQgc3VwcG9ydCBmb3IgQW1sb2dpYyBBMSBQTEwgYW5kIFBlcmlwaGVyYWxzIGNsb2NrCmRyaXZl cnMuCkl0IGJsb2NrcyBhbGwgQTEgcGVyaXBoZXJhbHMgbWFpbmxpbmUgc3VwcG9ydCBhbmQgYSBj b3VwbGUgb2YgcGF0Y2ggc2VyaWVzLAp3aGljaCB3ZXJlIGFscmVhZHkgcmV2aWV3ZWQgYW5kIGFj a2VkLCBidXQgd2VyZW4ndCBtZXJnZWQgZHVlIHRvIHBlbmRpbmcKY2xvY2sgY29udHJvbGxlciBk cml2ZXJzIHNlcmllcywgZS5nLgpodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMzA0MTgx MTE2MTIuMTk0NzktMS1kZHJva29zb3ZAc2JlcmRldmljZXMucnUvCgpUT0RPOiBDUFUgYW5kIEF1 ZGlvIGNsb2NrIGNvbnRyb2xsZXJzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBwYXRjaApzZXJp ZXMsIGl0IHdpbGwgYmUgc2VudCBsYXRlci4gVGhlIGZvbGxvd2luZyBjbGtzIGZyb20gdGhlc2Ug Y29udHJvbGxlcnMKYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdzoKKiBBdWRpbyBjbGtzIC0gdmFk LCBtY2xrX3ZhZCwgbWNsa19kLCByZXNhbXBsZV9hLCBsb2NrZXJfaW4sIG1jbGtfYiwKICAgcGRt ZGNsaywgcGRtc3lzY2xrLCBlcWRyYywgc3BkaWZpbiwgbWNsa19hLCBhdWRpbzJfdG9hdWRpb3Rv cCwKICAgYXVkaW8yX3RvdmFkLCBhdWRpbzJfdG9kZHJfdmFkLCBhdWRpbzJfdGRtaW5fdmFkLCBh dWRpbzJfcGRtLAogICBhdWRpbzJfZGRyX2FyYiwgYXVkaW9fYXVkaW9sb2NrZXIsIGF1ZGlvX2Vx ZHJjLCBhdWRpb19yZXNhbXBsZWEsCiAgIGF1ZGlvX3NwZGlmaW4sIGF1ZGlvX3RvZGRyYiwgYXVk aW9fdG9kZHJhLCBhdWRpb19mcmRkcmIsIGF1ZGlvX2ZyZGRyYSwKICAgYXVkaW9fdGRtb3V0Yiwg YXVkaW9fdGRtb3V0YSwgYXVkaW9fbG9vcGJhY2thLCBhdWRpb190ZG1pbmxiLAogICBhdWRpb190 ZG1pbmIsIGF1ZGlvX3RkbWluYSwgYXVkaW9fZGRyX2FyYiwgbWNsa19jCgoqIENQVSBjbGtzOiBj cHVfZml4ZWRfc291cmNlX3NlbDAsIGNwdV9maXhlZF9zb3VyY2VfZGl2MCwKICAgICAgICAgICAg Y3B1X2ZpeGVkX3NvdXJjZV9zZWwxLCBjcHVfZml4ZWRfc291cmNlX2RpdjEsIGNwdV9jbGsKClZh bGlkYXRpb246CiogdG8gZG91YmxlIGNoZWNrIGFsbCBjbGsgZmxhZ3MgcnVuIGJlbG93IGhlbHBl ciBzY3JpcHQ6CiAgICBwdXNoZCAvc3lzL2tlcm5lbC9kZWJ1Zy9jbGsKICAgIGZvciBmIGluICo7 IGRvCiAgICAgICAgaWYgW1sgLWYgIiRmL2Nsa19mbGFncyIgXV07IHRoZW4KICAgICAgICAgICAg ZmxhZ3M9IiQoY2F0ICRmL2Nsa19mbGFncyB8IGF3ayAneyQxPSQxfTsxJyB8IHNlZCAnOmE7Tjsk IWJhO3MvXG4vIHwgL2cnKSIKICAgICAgICAgICAgZWNobyAtZSAiJGY6ICRmbGFncyIKICAgICAg ICBmaQogICAgZG9uZQogICAgcG9wZAoKKiB0byB0cmFjZSBjdXJyZW50IGNsa3Mgc3RhdGUgdXNl ICcvc3lzL2tlcm5lbC9kZWJ1Zy9jbGsvY2xrX2R1bXAnIG5vZGUKICB3aXRoIGpxIHBvc3QtcHJv Y2Vzc2luZzoKICAgICQgY2F0IC9zeXMva2VybmVsL2RlYnVnL2Nsay9jbGtfZHVtcCB8IGpxICcu JyA+IGNsa19kdW1wLmpzb24KCiogdG8gZGVidWcgY2xrIHJhdGUgcHJvcGFnYXRpb24sIGNvbXBp bGUga2VybmVsIHdpdGggdGhlIGZvbGxvd2luZwogIGRlZmluaXRpb246CiAgICAkIHNlZCAtaSAi cy91bmRlZiBDTE9DS19BTExPV19XUklURV9ERUJVR0ZTL2RlZmluZSBDTE9DS19BTExPV19XUklU RV9ERUJVR0ZTL2ciIGRyaXZlcnMvY2xrL2Nsay5jCiAgYWZ0ZXIgdGhhdCwgY2xrX3JhdGUgZGVi dWcgbm9kZSBmb3IgZWFjaCBjbG9jayB3aWxsIGJlIGF2YWlsYWJsZSBmb3IKICB3cml0ZSBvcGVy YXRpb24KCkNoYW5nZXMgdjE2IHNpbmNlIHYxNSBhcyBbMTZdOgogICAgLSByZW1vdmUgYWxsIENM S19TRVRfUkFURV9OT19SRVBBUkVOVCBmbGFnIGZyb20gYWxsIFJUQyByZWxhdGVkCiAgICAgIGNs b2NrIG9iamVjdHMsIGluY2x1ZGluZyBQV00sIGJhc2VkIG9uIElSQyB0YWxrIHdpdGggTWFydGlu CiAgICAgIEJsdW1lbnN0aW5nbDoKICAgICAgaHR0cHM6Ly9saWJlcmEuaXJjbG9nLndoaXRlcXVh cmsub3JnL2xpbnV4LWFtbG9naWMvMjAyMy0wNS0xOAogICAgICBvbmx5IEdFTkNMSyBzdGlsbCBo YXMgdGhpcyBmbGFnLCBiZWNhdXNlIGl0J3MgYSBkZWJ1ZyBjbG9jawogICAgLSBzaW5jZSB0aGUg c3lzdGVtIGNsb2NrIGlzIHNldCB1cCBieSB0aGUgQm9vdFJPTSBjb2RlLCBhbGwgc3lzXyoKICAg ICAgZGl2aWRlcnMgYW5kIGdhdGVzIHNob3VsZCBiZSByZWFkLW9ubHkKCkNoYW5nZXMgdjE1IHNp bmNlIHYxNCBhcyBbMTVdOgogICAgLSByZW5hbWUgYWxsIGR0IGJpbmRpbmdzIHJlbGF0ZWQgdG8g QTEgUGVyaXBoZXJhbHMgQ2xvY2sgQ29udHJvbGxlcgogICAgICBmcm9tICIqYTEtY2xrYyoiIHRv ICIqYTEtcGVyaXBoZXJhbHMtY2xrYyoiCiAgICAtIGNoYW5nZSBDT01NT05fQ0xLX0ExIGNvbmZp ZyB0byBDT01NT05fQ0xLX0ExX1BFUklQSEVSQUxTCiAgICAtIHJlbmFtZSBjb21wYXRpYmxlIHN0 cmluZyBmcm9tICJhMS1jbGtjIiB0byAiYTEtcGVyaXBoZXJhbHMtY2xrYyIKICAgIC0gb3BlbiB0 aGUgU0RfRU1NQ19TRUwyIGNsb2NrIG9iamVjdCB0byBwdWJsaWMgZHQgYmluZGluZ3MgZHVlIHRv CiAgICAgIHNldmVyYWwgaGFyZHdhcmUgaXNzdWVzIGR1cmluZyBhdXRvLXJlcGFyZW50aW5nIHdp dGggcmF0ZQogICAgICBwcm9wYWdhdGlvbjsgY3VycmVudGx5LCB0aGUgTWVzb24gTU1DIGRyaXZl ciBpbml0aWFsaXplcyBpdHMKICAgICAgcGFyZW50IHVzaW5nIGFuIGFzc2lnbmVkLWNsb2NrcyBt ZWNoYW5pc20gYW5kIHNldHMgYW4gYXBwcm9wcmlhdGUKICAgICAgcmF0ZS4gQSByZWxhdGVkIHBh dGNoIGZvciBtZXNvbi1hMS5kdHNpIHdpbGwgYmUgcHJvdmlkZWQgYWZ0ZXIgdGhlCiAgICAgIGNs b2NrIHBhdGNoIHNlcmllcyBpcyBtZXJnZWQKICAgIC0gcmVtb3ZlICdkcml2ZXInIGtleXdvcmQg ZnJvbSBkdCBiaW5kaW5ncyBjb21taXQgbXNncyBhbmQgcGF0Y2hzZXRzCiAgICAtIG1ha2UgRW5n bGlzaCBncmFtbWFyIGJldHRlciEKCkNoYW5nZXMgdjE0IHNpbmNlIHYxMyBhdCBbMTRdOgogICAg LSByZW1vdmUgdGhlIHRlcm0gIk1lc29uIiBmcm9tIGFsbCBwYXRjaHNldHMgb3IgcmVwbGFjZSBp dCB3aXRoCiAgICAgICJBbWxvZ2ljIgogICAgLSBwdXJnZSBleHRyYSBjb21tYXMgYXMgcGVyIE1h cnRpbidzIHN1Z2dlc3Rpb24KICAgIC0gZHJvcCB0aGUgdW5uZWVkZWQgdXNlIG9mIG9mX21hdGNo X3B0cigpLCBzaW5jZSBhbGwgTWVzb24gY2xvY2sKICAgICAgZHJpdmVycyBkZXBlbmQgb24gdGhl IEFSTTY0IGNvbmZpZyB3aGljaCBzZWxlY3RzIENPTkZJR19PRiBieSBkZWZhdWx0CgpDaGFuZ2Vz IHYxMyBzaW5jZSB2MTIgYXQgWzEzXToKICAgIC0gbWFrZSB0aGUgY2xvY2sgb2JqZWN0IHJlZ2lz dHJhdGlvbiBvcmRlciBmcm9tIHRoZSByb290cyB0byB0aGUgbGVhdmVzCiAgICAtIHJlYXJyYW5n ZSB0aGUgY2xraWRzIGZvbGxvd2luZyBhYm92ZSBydWxlCgpDaGFuZ2VzIHYxMiBzaW5jZSB2MTEg YXQgWzEyXToKICAgIC0gc3BsaXQgdGhlIERUIGJpbmRpbmdzIHBhdGNoc2V0IGludG8gdHdvIHBh dGNoZXM6IG9uZSBmb3IgdGhlIFBMTCBjbG9jawogICAgICBjb250cm9sbGVyIGRyaXZlciwgYW5k IG9uZSBmb3IgdGhlIHBlcmlwaGVyYWxzIGNsb2NrIGNvbnRyb2xsZXIgZHJpdmVyCiAgICAtIHRv IHNhdGlzZnkgdGhlIERUIGJpbmRpbmcgY2hlY2tlciwgdXNlIGZha2UgcmVmZXJlbmNlcyB0byB0 aGUKICAgICAgcGVyaXBoZXJhbHMgY2xvY2sgY29udHJvbGxlciBpbiB0aGUgUExMIERUIGJpbmRp bmdzIHNjaGVtYSwgYW5kIHRoZW4KICAgICAgcmVwbGFjZSB0aGVtIHdpdGggcmVhbCByZWZlcmVu Y2VzIHdoZW4gdGhlIHBlcmlwaGVyYWxzIGJpbmRpbmdzCiAgICAgIGJlY29tZSBhdmFpbGFibGUu CiAgICAtIHJlbW92ZSB0aGUgcHVibGljL3ByaXZhdGUgY2xvY2tzIGNvbmNlcHQgZnJvbSBib3Ro IGNvbnRyb2xsZXJzLAogICAgICBhbmQgaW5zdGVhZCB1c2UgYSBsaW5lYXIgY2xraWQgbGlzdCB3 aXRoIGJvdGggZXhwb3NlZCBhbmQgaW50ZXJuYWwKICAgICAgb2JqZWN0cywgYWxsIG9mIHdoaWNo IGFyZSByZWdpc3RlcmVkIGluIHRoZSBjbG9jayBwcm92aWRlcgogICAgLSBjb21iaW5lIGFsbCBj b21tZW50cyBhYm91dCBSVEMgY2hpbGRyZW4gd2l0aCB0aGUgZmxhZwogICAgICAnQ0xLX1NFVF9S QVRFX05PX1JFUEFSRU5UJyBpbnRvIGEgc2luZ2xlIGl0ZW0gd2l0aCBtdWx0aXBsZQogICAgICBy ZWZlcmVuY2VzIHRvIGl0CgpDaGFuZ2VzIHYxMSBzaW5jZSB2MTAgYXQgWzExXToKICAgIC0gY2hh bmdlIGluY2x1ZGUvZHQtYmluZGluZ3MgbGljZW5zZSB0byBwcm9wZXIgdmFsdWUgcmVxdWlyZWQg Zm9yCiAgICAgIGJpbmRpbmdzIGZpbGVzOiAnR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZScK ICAgIC0gcGxsIGFuZCBwZXJpcGhlcmFscyBjbG9ja3MgYXJlIHNwbGl0IGludG8gcHVibGljIGFu ZCBwcml2YXRlIHBhcnRzOwogICAgICBwdWJsaWMgY2xvY2tzIGFyZSBhdmFpbGFibGUgZm9yIGV4 dGVybmFsIGNvbnN1bWVycyB0aHJvdWdoIHRoZSBEVCBsYXllciwKICAgICAgcHJpdmF0ZSBjbG9j a3MgaW5jbHVkZSBpbnRlcm5hbCBtdXhlcyBhbmQgZGl2aWRlcnMgb2YgY29tcG9zaXRlIGNsb2Nr cywKICAgICAgdGhleSBhcmUgcGxhY2VkIGluc2lkZSBjbG9jayBjb250cm9sbGVyIGRyaXZlciB3 aXRob3V0IGV4dGVybmFsIGFjY2VzcwogICAgLSBtYWtlIHB1YmxpYyBjbGtzIENMS0lEIGJpbmRp bmdzIGNvbnRpbnVvdXMKICAgIC0gbWFyayB0aGUgZm9sbG93aW5nIGNsb2NrIG11eGVzIGFzIE5P X1JFUEFSRU5UIGFuZCBhZGQgdGhlbSB0bwogICAgICBwdWJsaWMgY2xvY2tzIGxpc3Q6IEdFTl9T RUwsIERTUEFfQV9TRUwsIERTUEFfQl9TRUwsIERTUEJfQV9TRUwsCiAgICAgIERTUF9CX0JfU0VM LCBQV01fQV9TRUwsIFBXTV9CX1NFTCwgUFdNX0NfU0VMLCBQV01fRF9TRUwsCiAgICAgIFBXTV9F X1NFTCwgUFdNX0ZfU0VMLCBDRUNBXzMyS19TRUwsIENFQ0JfMzJLX1NFTDsgZWFjaCBvZiB0aGVt IGNhbgogICAgICBiZSBpbmhlcml0ZWQgZnJvbSBtb3JlIGFjY3VyYXRlIFJUQyBjbG9jayBhbmQg c29tZXRpbWVzIGl0J3MKICAgICAgcmVxdWlyZWQgdG8gZm9yYmlkIHJlcGFyZW50aW5nIGluIHN1 Y2ggc2l0dWF0aW9uOyBhbHNvIEdFTl9TRUwgY2FuCiAgICAgIGJlIGNvbm5lY3RlZCB0byBleHRl cm5hbCBQQUQgYW5kIHNob3VsZCBub3QgY2hhbmdlIHBhcmVudAogICAgICBhdXRvbWF0aWNhbGx5 IGR1ZSB0byByYXRlIHByb3BhZ2F0aW9uLiBGb3Igc3VjaCBjbG9ja3MgdXNlciBtdXN0CiAgICAg IHNldHVwIHBhcmVudHMgb24gdGhlIERUIHNpZGUKCkNoYW5nZXMgdjEwIHNpbmNlIHY5IGF0IFsx MF06CiAgICAtIHNwbGl0IGdlbmVyYWwgY2xrLXBsbCBjaGFuZ2VzIGludG8gdHdvIGRpZmZlcmVu dCBwYXRjaHNldHM6CiAgICAgIG9wdGlvbmFsIHJzdCB1c2FnZSBhbmQgbmV3IHBvd2VyIHNlcXVl bmNlCiAgICAtIHNxdWFzaCBkdCBiaW5kaW5ncyBwYXRjaHNldHMgdG8gYXZvaWQgY2hpY2tlbi1v ci10aGUtZWdnIHByb2JsZW0KICAgICAgZHVyaW5nIHJ1biBkdCBiaW5kaW5nIGNoZWNrIHJvdXRp bmVzCiAgICAtIGFkZCB2ZW5kb3IgcHJlZml4IHRvIFBMTCBhbmQgUGVyaXBoZXJhbHMgY2xrY3Mg YmluZGluZ3MgZmlsZW5hbWVzCiAgICAtIGNsZWFyIG1hbmFnZWQgaGlmaV9wbGwgZmllbGRzIGZy b20gaW5pdGlhbCBwb2tlIHRhYmxlCiAgICAtIG1vdmUgRFNQQV9TRUwsIERTUEJfU0VMIGFuZCBT QVJBRENfU0VMIHRvIHByaXZhdGUgY2xraWQgdGFibGUsCiAgICAgIGJlY2F1c2UgaXQgc2hvdWxk IG5vdCBiZSBvcGVuZWQgZm9yIGRpcmVjdCB1c2FnZQogICAgLSBwd21fYSBjbGsgdXNlZCBmb3Ig dm9sdGFnZSByZWd1bGF0aW9uIGlzIG5vdCBjcml0aWNhbCBhbnltb3JlLCBpdAogICAgICBtdXN0 IGJlIGluY2x1ZGVkIHRvIHRoZSBwcm9wZXIgY3B1IHZvbHRhZ2UgcmVndWxhdGlvbiBzZXR1cCAo d2lsbAogICAgICBiZSBhdmFpbGFibGUgaW4gdGhlIG5leHQgcGF0Y2ggc2VyaWVzKQogICAgLSBh cyBkaXNjdXNzZWQgd2l0aCBKZXJvbWUsIGRzcFggY2xrcyBhcmUgc2ltcGxlIGNsb2NrcyBhbmQg aXQKICAgICAgc2hvdWxkIGJlIGVuYWJsZWQvZGlzYWJsZWQvaWdub3JlZC9hbnl0aGluZyBlbHNl IGZyb20gYXBwcm9wcmlhdGUKICAgICAgRFNQIGRyaXZlciwgc28gcmVtb3ZlIENMS19JR05PUkVf VU5VU0VEIHRhZ3MKICAgIC0gcHJvdmlkZSBtb3JlIHVuZGVyc3RhbmRhYmxlIGNvbW1lbnRzIGFu ZCByZW1vdmUgaXJyZWxldmFudCAoSSBob3BlIHNvKQogICAgLSByZW1vdmUgQ09ORklHX09GIHVz YWdlLCBiZWNhdXNlIGl0J3MgcmVkdW5kYW50CiAgICAtIGZpeCBsaWNlbnNlIGlzc3VlLCBpdCdz IEdQTC0yLjArIG9ubHkgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbgogICAgLSBzb21lIGNvbW1pdCBt c2dzIHJld29yZGluZwoKQ2hhbmdlcyB2OSBzaW5jZSB2OCBhdCBbOV06CiAgICAtIHJlbW92ZSBj b21tb24gYTEtY2xrYyBkcml2ZXIgZm9yIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIGExIGNsb2NrCiAg ICAgIGNvbnRyb2xsZXJzIGFzIEplcm9tZSBzdWdnZXN0ZWQgKGl0IHdpbGwgYmUgZGlzY3Vzc2Vk IGFmdGVyIHM0IGFuZAogICAgICBhMSBjbGtzIGxhbmRlZCwgaG9wZSBzbykKICAgIC0gcmVwbGFj ZSBpbmhlcml0ZWQgYTEtcGxsIGNsa19wbGxfb3BzIHdpdGggY29tbW9uIG9wcyBhbmQKICAgINC+ 0LvQviAgaW50cm9kdWNlIGN1c3RvbSBBMSBQTEwgbG9naWMgdW5kZXIgTUVTT05fUEFSTV9BUFBM SUNBQkxFKCkKICAgICAgY29uZGl0aW9ucwogICAgLSByZW5hbWUgeHRhbCBkZXBlbmRlZCBjbG9j a3MgaW4gUExMIGFuZCBQZXJpcGhlcmFscyBkb21haW5zCiAgICAtIHJlbW92ZSAnYTFfJyBwcmVm aXggZm9yIGFsbCBjbG9ja3MsIGJlY2F1c2UgdGhleSBhcmUgYWxyZWFkeQogICAgICBpbnNpZGUg QTEgZHJpdmVyLCBpdCdzIHJlZHVuZGFudAogICAgLSBjaGFuZ2UgdWRlbGF5KCkgdG8gdXNsZWVw X3JhbmdlKCkgYXMgcHJlZmVycmVkIGZvciBzbWFsbCBtc2VjCiAgICAgIGFtb3VudAogICAgLSBw dXJnZSBhbGwgZG91YmxlIHF1b3RlcyBmcm9tIHRoZSB5YW1sIHNjaGVtYXMKICAgIC0gdXNlIHBy b3BlciBkdCBub2RlIG5hbWVzIGZvbGxvd2luZyBrZXJuZWwgZ3VpZGVsaW5lcwogICAgICBodHRw czovL2RldmljZXRyZWUtc3BlY2lmaWNhdGlvbi5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvY2hh cHRlcjItZGV2aWNldHJlZS1iYXNpY3MuaHRtbCNnZW5lcmljLW5hbWVzLXJlY29tbWVuZGF0aW9u CiAgICAtIHVzZSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UoKSBpbnN0ZWFkIG9mIHNp bXBsZQogICAgICBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoKQogICAgLSBtYXJrIGFsbCBkc3BYIGNs b2NrcyBhcyBDTEtfSUdOT1JFX1VOVVNFRCwgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudAogICAgICB0 byB0b3VjaCB0aGVzZSBjbG9ja3MgZHVyaW5nIENDRiBpbml0aWFsaXphdGlvbiBkdWUgdG8gcG9z c2libGUKICAgICAgd29ya2xvYWQgZXhlY3V0aW9uIG9uIGl0IHN0YXJ0ZWQgZnJvbSBib290bG9h ZGVyOyBpbiB0aGlzIGNhc2UKICAgICAgYm9vdGxvYWRlciBhbHJlYWR5IG1hZGUgYWxsIGluaXRp YWxpemF0aW9uIHN0dWZmIGZvciBkc3BYCiAgICAtIGFsc28gbWFyayBhbGwgZHNwWCB3aXRoIE5P X1JFUEFSRU5UIHRhZywgYmVjYXVzZSBmcm9tIGRzcFggY2xvY2tzCiAgICAgIHdlIHdhbnQgdG8g c2VsZWN0IHByb3BlciBjbGsgc291cmNlIGZyb20gZGV2aWNlIHRyZWUKCkNoYW5nZXMgdjggc2lu Y2UgdjcgYXQgWzhdOgogICAgLSBpbnRyb2R1Y2VkIGExLWNsa2MgY29tbW9uIGRyaXZlciBmb3Ig YWxsIEExIGNsb2NrIGNvbnRyb2xsZXJzCiAgICAtIGV4cG9ydGVkIG1lc29uX2Nsa19wbGxfd2Fp dF9sb2NrIHN5bWJvbAogICAgLSBzdXBwb3J0ZWQgbWVzb24tYTEtY2xrYyBjb21tb24gZHJpdmVy IGluIHRoZSBhMS1wbGwgYW5kIGExIGNsa2MKICAgIC0gaW5oZXJpdGVkIGExLXBsbCBmcm9tIHRo ZSBiYXNlIGNsay1wbGwgZHJpdmVyLCBpbXBsZW1lbnRlZCBvd24KICAgICAgdmVyc2lvbiBvZiBp bml0L2VuYWJsZS9kaXNhYmxlL2VuYWJsZWQgcm91dGluZXM7IHJhdGUgY2FsY3VsYXRpbmcKICAg ICAgbG9naWMgaXMgZnVsbHkgdGhlIHNhbWUKICAgIC0gYWxpZ25lZCBDTEtJRC1yZWxhdGVkIGRl ZmluaXRpb25zIHdpdGggQ0xLSUQgbGlzdCBmcm9tIG9yZGVyCiAgICAgIHBlcnNwZWN0aXZlIHRv IHJlbW92ZSBob2xlcyBhbmQgcGVybXV0YXRpb25zCiAgICAtIGNvcnJlY3RlZCBLY29uZmlnIGRl cGVuZGVuY2llcyBhbmQgdHlwZXMKICAgIC0gcHJvdmlkZWQgY29ycmVjdCBNT0RVTEVfQVVUSE9S cygpCiAgICAtIG9wdGltaXplZCBhbmQgZml4ZWQgdXAgc29tZSBjbG9jayByZWxhdGlvbnNoaXBz CiAgICAtIHJlbW92ZWQgdW51c2VkIHJlZ2lzdGVyIG9mZnNldCBkZWZpbml0aW9ucwogICAgLSBm aXhlZCB1cCBBMSBQTEwgYW5kIFBlcmlwaGVyYWxzIGNsa2MgZHRiX2NoZWNrIGVycm9ycwogICAg LSBmaXhlZCBjbGtfc3VtbWFyeSBrZXJuZWwgcGFuaWMgZHVlIHRvIG1pc3NpbmcgYTFfcGFkX2N0 cmwKICAgICAgY2xrX3JlZ21hcCBkZWZpbml0aW9uCiAgICAtIGluY2x1ZGVkIFBMTCBhbmQgUGVy aXBoZXJhbHMgY2xrIGNvbnRyb2xsZXJzIHRvIHRoZSBiYXNlIGExIGR0cwogICAgLSBUaGUgcHJl dmlvdXMgdjcgdmVyc2lvbiBbOF0gaGFkIHNldmVyYWwgbG9naWMgYW5kIHN0eWxlIHByb2JsZW1z LAogICAgICBhbGwgb2YgdGhlbSBhcmUgcmVzb2x2ZWQgaW4gdGhpcyB2ZXJzaW9uLiBPcmlnaW5h bCBKaWFuIEh1IHY3IHBhdGNoZXMKICAgICAgYXJlIG5vdCB0b3VjaGVkLCBhbmQgYWxsIGFkZGl0 aW9uYWwgZml4ZXMgYXJlIGltcGxlbWVudGVkIGluIHNlcGFyYXRlCiAgICAgIHBhdGNoZXMuIFBh dGNoICJjbGs6IG1lc29uOiBhZGQgc3VwcG9ydCBmb3IgQTEgUExMIGNsb2NrIG9wcyIgaXMKICAg ICAgcmVtb3ZlZCwgYmVjYXVzZSBhMS1wbGwgY2xrIGRyaXZlciBpbmhlcml0cyBhbGwgc3R1ZmYg ZnJvbSBjbGstcGxsCiAgICAgIGJhc2UgZHJpdmVyLCBqdXN0IGltcGxlbWVudHMgY3VzdG9tIGlu aXQvZW5hYmxlL2Rpc2FibGUvaXNfZW5hYmxlZAogICAgICBjYWxsYmFja3MuCgpDaGFuZ2VzIHY3 IHNpbmNlIHY2IGF0IFs3XToKICAgIC0gZml4ICdkdF9iaW5kaW5nX2NoZWNrJyBjb21waWxpbmcg ZXJyb3IKICAgIC0gYWRkIGFja2VkLWJ5CgpDaGFuZ2VzIHY2IHNpbmNlIHY1IGF0IFs2XToKICAg IC0gZml4IHlhbWwgZmlsZQogICAgLSBhZGQgcnN0L2N1cnJlbnRfZW4vbF9kZXRlY3QgcGFybSBk ZXRlY3Rpb24KICAgIC0gcmVtb3ZlICdtZXNvbl9lZWNsa2NfZGF0YScgaW4gYTEuYyBhbmQgYTEt cGxsLmMKCkNoYW5nZXMgdjUgc2luY2UgdjQgYXQgWzVdOgogICAgLSBjaGFuZ2UgeWFtbCBHUEwK ICAgIC0gZHJvcCBtZXNvbi1lZWNsay5jIHBhdGNoLCBhZGQgcHJvYmUgZnVuY3Rpb24gaW4gZWFj aCBkcml2ZXIKICAgIC0gYWRkIENMS19JU19DUklUSUNBTCBmb3Igc3lzX2NsayBjbG9jaywgZHJv cCB0aGUgZmxhZyBmb3Igc3lzX2EKICAgICAgYW5kIHN5c19iCiAgICAtIGFkZCBuZXcgcGFybSBm b3IgcGxsLCBhZGQgcHJvdGVjdGlvbiBmb3IgcnN0IHBhcm0KICAgIC0gZHJvcCBmbGFnIGZvciBh MV9maXhlZF9wbGwKICAgIC0gcmVtb3ZlIHRoZSBzYW1lIGNvbW1lbnQgZm9yIGZjbGtfZGl2LCBh ZGQgInJlZmVyIHRvIgogICAgLSBhZGQgY3JpdGljYWwgZmxhZyBmb3IgYTFfc3lzX2NsawogICAg LSByZW1vdmUgcnRjIHRhYmxlCiAgICAtIHJlbmFtZSBhMV9kc3BhX2VuX2RzcGEgYW5kIGExX2Rz cGJfZW5fZHNwYgogICAgLSByZW1vdmUgdXNlbGVzcyBjb21tZW50CgpDaGFuZ2VzIHY0IHNpbmNl IHYzIGF0IFszXToKICAgIC0gZml4IHJlcGFyZW50aW5nIG9ycGhhbiBmYWlsZWQsIGl0IGRlcGVu ZHMgb24gamVyb21lJ3MgcGF0Y2ggWzRdCiAgICAtIGZpeCBjaGFuZ2VsaXN0IGluIHYzIGFib3V0 IHJlcGFyZW50aW5nIG9ycGhhbgogICAgLSByZW1vdmUgdGhlIGR0cyBwYXRjaCAKCkNoYW5nZXMg djMgc2luY2UgdjIgYXQgWzJdOgogICAgLSBhZGQgcHJvYmUgZnVuY3Rpb24gZm9yIEExCiAgICAt IHNlcGFyYXRlIHRoZSBjbG9jayBkcml2ZXIgaW50byB0d28gcGF0Y2gKICAgIC0gY2hhbmdlIHNv bWUgY2xvY2sgZmxhZ3MgYW5kIG9wcwogICAgLSBhZGQgc3VwcG9ydCBmb3IgYTEgUExMIG9wcwog ICAgLSBhZGQgQTEgY2xvY2sgbm9kZQogICAgLSBmaXggcmVwYXJlbnRpbmcgb3JwaGFuIGNsb2Nr IGZhaWxlZCwgcmVnaXN0ZXJpbmcgeHRhbF9maXhwbGwKICAgICAgYW5kIHh0YWxfaGlmaXBsbCBh ZnRlciB0aGUgcHJvdmlkZXIgcmVnaXN0cmF0aW9uLCBpdCBpcyBub3QKICAgICAgYSBiZXN0IHdh eS4KCkNoYW5nZXMgdjIgc2luY2UgdjEgYXQgWzFdOgogICAgLSBwbGFjZSBBMSBjb25maWcgYWxw aGFiZXRpY2FsbHkKICAgIC0gYWRkIGFjdHVhbCByZWFzb24gZm9yIFJPIG9wcywgQ0xLX0lTX0NS SVRJQ0FMLCBDTEtfSUdOT1JFX1VOVVNFRAogICAgLSBzZXBhcmF0ZSB0aGUgZHJpdmVyIGludG8g dHdvIGRyaXZlcjogcGVyaXBoZXJhbCBhbmQgcGxsIGRyaXZlcgogICAgLSBkZWxldGUgQ0xLX0lH Tk9SRV9VTlVTRUQgZmxhZyBmb3IgcHdtIGIvYy9kL2UvZiBjbG9jaywgZHNwIGNsb2NrCiAgICAt IGRlbGV0ZSB0aGUgY2hhbmdlIGluIEtjb25maWcucGxhdGZvcm1zLCBhZGRyZXNzIHRvIEtldmlu IGFsb25lCiAgICAtIHJlbW92ZSB0aGUgdXNlbGVzcyBjb21tZW50cwogICAgLSBtb2RpZnkgdGhl IG1lc29uIHBsbCBkcml2ZXIgdG8gc3VwcG9ydCBBMSBQTExzCgpMaW5rczoKICAgIFsxXSBodHRw czovL2xrbWwua2VybmVsLm9yZy9yLzE1Njk0MTE4ODgtOTgxMTYtMS1naXQtc2VuZC1lbWFpbC1q aWFuLmh1QGFtbG9naWMuY29tCiAgICBbMl0gaHR0cHM6Ly9sa21sLmtlcm5lbC5vcmcvci8xNTcx MzgyODY1LTQxOTc4LTEtZ2l0LXNlbmQtZW1haWwtamlhbi5odUBhbWxvZ2ljLmNvbQogICAgWzNd IGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAxOTExMjkxNDQ2MDUuMTgyNzc0LTEtamlhbi5o dUBhbWxvZ2ljLmNvbQogICAgWzRdIGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAxOTEyMDMw ODA4MDUuMTA0NjI4LTEtamJydW5ldEBiYXlsaWJyZS5jb20KICAgIFs1XSBodHRwczovL2xrbWwu a2VybmVsLm9yZy9yLzIwMTkxMjA2MDc0MDUyLjE1NTU3LTEtamlhbi5odUBhbWxvZ2ljLmNvbQog ICAgWzZdIGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAxOTEyMjcwOTQ2MDYuMTQzNjM3LTEt amlhbi5odUBhbWxvZ2ljLmNvbQogICAgWzddIGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAy MDAxMTYwODA0NDAuMTE4Njc5LTEtamlhbi5odUBhbWxvZ2ljLmNvbQogICAgWzhdIGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2xpbnV4LWFtbG9naWMvMjAyMDAxMjAwMzQ5MzcuMTI4NjAwLTEtamlh bi5odUBhbWxvZ2ljLmNvbS8KICAgIFs5XSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1h bWxvZ2ljLzIwMjIxMjAxMjI1NzAzLjY1MDctMS1kZHJva29zb3ZAc2JlcmRldmljZXMucnUvCiAg ICBbMTBdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIzMDMwMTE4Mzc1OS4xNjE2My0x LWRkcm9rb3NvdkBzYmVyZGV2aWNlcy5ydS8KICAgIFsxMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5v cmcvYWxsLzIwMjMwMzEzMjAxMjU5LjE5OTk4LTEtZGRyb2tvc292QHNiZXJkZXZpY2VzLnJ1Lwog ICAgWzEyXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMzAzMjExOTMwMTQuMjYzNDkt MS1kZHJva29zb3ZAc2JlcmRldmljZXMucnUvCiAgICBbMTNdIGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2FsbC8yMDIzMDQwNDE1NTMzMi45NTcxLTEtZGRyb2tvc292QHNiZXJkZXZpY2VzLnJ1Lwog ICAgWzE0XSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1hbWxvZ2ljLzIwMjMwNDA1MTk1 OTI3LjEzNDg3LTEtZGRyb2tvc292QHNiZXJkZXZpY2VzLnJ1LwogICAgWzE1XSBodHRwczovL2xv cmUua2VybmVsLm9yZy9hbGwvMjAyMzA0MjYwOTU4MDUuMTUzMzgtMS1kZHJva29zb3ZAc2JlcmRl dmljZXMucnUvCiAgICBbMTZdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIzMDUxNzEz MzMwOS45ODc0LTEtZGRyb2tvc292QHNiZXJkZXZpY2VzLnJ1LwoKRG1pdHJ5IFJva29zb3YgKDYp OgogIGNsazogbWVzb246IG1ha2UgcGxsIHJzdCBiaXQgYXMgb3B0aW9uYWwKICBjbGs6IG1lc29u OiBpbnRyb2R1Y2UgbmV3IHBsbCBwb3dlci1vbiBzZXF1ZW5jZSBmb3IgQTEgU29DIGZhbWlseQog IGR0LWJpbmRpbmdzOiBjbG9jazogbWVzb246IGFkZCBBMSBQTEwgY2xvY2sgY29udHJvbGxlciBi aW5kaW5ncwogIGNsazogbWVzb246IGExOiBhZGQgQW1sb2dpYyBBMSBQTEwgY2xvY2sgY29udHJv bGxlciBkcml2ZXIKICBkdC1iaW5kaW5nczogY2xvY2s6IG1lc29uOiBhZGQgQTEgUGVyaXBoZXJh bHMgY2xvY2sgY29udHJvbGxlcgogICAgYmluZGluZ3MKICBjbGs6IG1lc29uOiBhMTogYWRkIEFt bG9naWMgQTEgUGVyaXBoZXJhbHMgY2xvY2sgY29udHJvbGxlciBkcml2ZXIKCiAuLi4vY2xvY2sv YW1sb2dpYyxhMS1wZXJpcGhlcmFscy1jbGtjLnlhbWwgICAgfCAgIDczICsKIC4uLi9iaW5kaW5n cy9jbG9jay9hbWxvZ2ljLGExLXBsbC1jbGtjLnlhbWwgICB8ICAgNTkgKwogTUFJTlRBSU5FUlMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL2Nsay9t ZXNvbi9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsKIGRyaXZlcnMvY2xrL21l c29uL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogZHJpdmVycy9jbGsvbWVz b24vYTEtcGVyaXBoZXJhbHMuYyAgICAgICAgICAgIHwgMjI0MyArKysrKysrKysrKysrKysrKwog ZHJpdmVycy9jbGsvbWVzb24vYTEtcGVyaXBoZXJhbHMuaCAgICAgICAgICAgIHwgIDExMyArCiBk cml2ZXJzL2Nsay9tZXNvbi9hMS1wbGwuYyAgICAgICAgICAgICAgICAgICAgfCAgMzU2ICsrKwog ZHJpdmVycy9jbGsvbWVzb24vYTEtcGxsLmggICAgICAgICAgICAgICAgICAgIHwgICA0NyArCiBk cml2ZXJzL2Nsay9tZXNvbi9jbGstcGxsLmMgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICstCiBk cml2ZXJzL2Nsay9tZXNvbi9jbGstcGxsLmggICAgICAgICAgICAgICAgICAgfCAgICAyICsKIC4u Li9jbG9jay9hbWxvZ2ljLGExLXBlcmlwaGVyYWxzLWNsa2MuaCAgICAgICB8ICAxMTUgKwogLi4u L2R0LWJpbmRpbmdzL2Nsb2NrL2FtbG9naWMsYTEtcGxsLWNsa2MuaCAgIHwgICAyMCArCiAxMyBm aWxlcyBjaGFuZ2VkLCAzMDkxIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2FtbG9n aWMsYTEtcGVyaXBoZXJhbHMtY2xrYy55YW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2FtbG9naWMsYTEtcGxsLWNsa2MueWFtbAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL21lc29uL2ExLXBlcmlwaGVyYWxzLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Nsay9tZXNvbi9hMS1wZXJpcGhlcmFscy5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jbGsvbWVzb24vYTEtcGxsLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2Nsay9tZXNvbi9hMS1wbGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1 ZGUvZHQtYmluZGluZ3MvY2xvY2svYW1sb2dpYyxhMS1wZXJpcGhlcmFscy1jbGtjLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2FtbG9naWMsYTEtcGxsLWNs a2MuaAoKLS0gCjIuMzYuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWFtbG9naWMK 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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C81A2C77B75 for ; Tue, 23 May 2023 13:54:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234409AbjEWNyN (ORCPT ); Tue, 23 May 2023 09:54:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37932 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237011AbjEWNyJ (ORCPT ); Tue, 23 May 2023 09:54:09 -0400 Received: from mx.sberdevices.ru (mx.sberdevices.ru [45.89.227.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D2C4CA; Tue, 23 May 2023 06:54:03 -0700 (PDT) Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id 7425D5FD02; Tue, 23 May 2023 16:54:01 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1684850041; bh=EEnUKx15kCXa8L+oInysTAxZfz9CTEZv+3zggjX0I7s=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=Uif3ccBorE+ICiC2YLVyh4A1AjSM4fnPbkuHrwEw9rzsDxlhJhl8pxYJBUYX4Qq3T RYFagq2bEr/NOllu3Ne2PGX/jWBvSaVDo2nZaG0OjDCCq/pBQKgyNKsW2aGneCxbk1 VVUYDVlgnX4xB+dqTK6vJxztMXY5cMT4dnedeadQ5mrR6DdaRdktQGS+epHHHI4neh CfiE0u54d7iYu1EZiewhsa+BTKw67GI0/6eixtZ9/YxWLHM9LfYyLp7JtZcKO0I4Ep Emly9V1BsmDkNwO2w+7RhD6m8ptdsItEDVQC4UlmXX44i9B1lp+DpzWm2T3T6abN90 y94KRUU81RWOQ== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Tue, 23 May 2023 16:54:00 +0300 (MSK) From: Dmitry Rokosov To: , , , , , , , CC: , , , , , , , , Dmitry Rokosov Subject: [PATCH v16 0/6] add Amlogic A1 clock controller drivers Date: Tue, 23 May 2023 16:53:45 +0300 Message-ID: <20230523135351.19133-1-ddrokosov@sberdevices.ru> X-Mailer: git-send-email 2.36.0 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [172.16.1.6] X-ClientProxiedBy: S-MS-EXCH02.sberdevices.ru (172.16.1.5) To S-MS-EXCH01.sberdevices.ru (172.16.1.4) X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2023/05/23 12:15:00 #21372692 X-KSMG-AntiVirus-Status: Clean, skipped Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org A1 SoC has four clock controllers on the board: PLL, Peripherals, CPU, and Audio. The audio clock controller is different from others, but the rest are very similar from a functional and regmap point of view. This patch series add support for Amlogic A1 PLL and Peripherals clock drivers. It blocks all A1 peripherals mainline support and a couple of patch series, which were already reviewed and acked, but weren't merged due to pending clock controller drivers series, e.g. https://lore.kernel.org/all/20230418111612.19479-1-ddrokosov@sberdevices.ru/ TODO: CPU and Audio clock controllers are not included in this patch series, it will be sent later. The following clks from these controllers are not supported for now: * Audio clks - vad, mclk_vad, mclk_d, resample_a, locker_in, mclk_b, pdmdclk, pdmsysclk, eqdrc, spdifin, mclk_a, audio2_toaudiotop, audio2_tovad, audio2_toddr_vad, audio2_tdmin_vad, audio2_pdm, audio2_ddr_arb, audio_audiolocker, audio_eqdrc, audio_resamplea, audio_spdifin, audio_toddrb, audio_toddra, audio_frddrb, audio_frddra, audio_tdmoutb, audio_tdmouta, audio_loopbacka, audio_tdminlb, audio_tdminb, audio_tdmina, audio_ddr_arb, mclk_c * CPU clks: cpu_fixed_source_sel0, cpu_fixed_source_div0, cpu_fixed_source_sel1, cpu_fixed_source_div1, cpu_clk Validation: * to double check all clk flags run below helper script: pushd /sys/kernel/debug/clk for f in *; do if [[ -f "$f/clk_flags" ]]; then flags="$(cat $f/clk_flags | awk '{$1=$1};1' | sed ':a;N;$!ba;s/\n/ | /g')" echo -e "$f: $flags" fi done popd * to trace current clks state use '/sys/kernel/debug/clk/clk_dump' node with jq post-processing: $ cat /sys/kernel/debug/clk/clk_dump | jq '.' > clk_dump.json * to debug clk rate propagation, compile kernel with the following definition: $ sed -i "s/undef CLOCK_ALLOW_WRITE_DEBUGFS/define CLOCK_ALLOW_WRITE_DEBUGFS/g" drivers/clk/clk.c after that, clk_rate debug node for each clock will be available for write operation Changes v16 since v15 as [16]: - remove all CLK_SET_RATE_NO_REPARENT flag from all RTC related clock objects, including PWM, based on IRC talk with Martin Blumenstingl: https://libera.irclog.whitequark.org/linux-amlogic/2023-05-18 only GENCLK still has this flag, because it's a debug clock - since the system clock is set up by the BootROM code, all sys_* dividers and gates should be read-only Changes v15 since v14 as [15]: - rename all dt bindings related to A1 Peripherals Clock Controller from "*a1-clkc*" to "*a1-peripherals-clkc*" - change COMMON_CLK_A1 config to COMMON_CLK_A1_PERIPHERALS - rename compatible string from "a1-clkc" to "a1-peripherals-clkc" - open the SD_EMMC_SEL2 clock object to public dt bindings due to several hardware issues during auto-reparenting with rate propagation; currently, the Meson MMC driver initializes its parent using an assigned-clocks mechanism and sets an appropriate rate. A related patch for meson-a1.dtsi will be provided after the clock patch series is merged - remove 'driver' keyword from dt bindings commit msgs and patchsets - make English grammar better! Changes v14 since v13 at [14]: - remove the term "Meson" from all patchsets or replace it with "Amlogic" - purge extra commas as per Martin's suggestion - drop the unneeded use of of_match_ptr(), since all Meson clock drivers depend on the ARM64 config which selects CONFIG_OF by default Changes v13 since v12 at [13]: - make the clock object registration order from the roots to the leaves - rearrange the clkids following above rule Changes v12 since v11 at [12]: - split the DT bindings patchset into two patches: one for the PLL clock controller driver, and one for the peripherals clock controller driver - to satisfy the DT binding checker, use fake references to the peripherals clock controller in the PLL DT bindings schema, and then replace them with real references when the peripherals bindings become available. - remove the public/private clocks concept from both controllers, and instead use a linear clkid list with both exposed and internal objects, all of which are registered in the clock provider - combine all comments about RTC children with the flag 'CLK_SET_RATE_NO_REPARENT' into a single item with multiple references to it Changes v11 since v10 at [11]: - change include/dt-bindings license to proper value required for bindings files: 'GPL-2.0-only OR BSD-2-Clause' - pll and peripherals clocks are split into public and private parts; public clocks are available for external consumers through the DT layer, private clocks include internal muxes and dividers of composite clocks, they are placed inside clock controller driver without external access - make public clks CLKID bindings continuous - mark the following clock muxes as NO_REPARENT and add them to public clocks list: GEN_SEL, DSPA_A_SEL, DSPA_B_SEL, DSPB_A_SEL, DSP_B_B_SEL, PWM_A_SEL, PWM_B_SEL, PWM_C_SEL, PWM_D_SEL, PWM_E_SEL, PWM_F_SEL, CECA_32K_SEL, CECB_32K_SEL; each of them can be inherited from more accurate RTC clock and sometimes it's required to forbid reparenting in such situation; also GEN_SEL can be connected to external PAD and should not change parent automatically due to rate propagation. For such clocks user must setup parents on the DT side Changes v10 since v9 at [10]: - split general clk-pll changes into two different patchsets: optional rst usage and new power sequence - squash dt bindings patchsets to avoid chicken-or-the-egg problem during run dt binding check routines - add vendor prefix to PLL and Peripherals clkcs bindings filenames - clear managed hifi_pll fields from initial poke table - move DSPA_SEL, DSPB_SEL and SARADC_SEL to private clkid table, because it should not be opened for direct usage - pwm_a clk used for voltage regulation is not critical anymore, it must be included to the proper cpu voltage regulation setup (will be available in the next patch series) - as discussed with Jerome, dspX clks are simple clocks and it should be enabled/disabled/ignored/anything else from appropriate DSP driver, so remove CLK_IGNORE_UNUSED tags - provide more understandable comments and remove irrelevant (I hope so) - remove CONFIG_OF usage, because it's redundant - fix license issue, it's GPL-2.0+ only in the current version - some commit msgs rewording Changes v9 since v8 at [9]: - remove common a1-clkc driver for the first version of a1 clock controllers as Jerome suggested (it will be discussed after s4 and a1 clks landed, hope so) - replace inherited a1-pll clk_pll_ops with common ops and оло introduce custom A1 PLL logic under MESON_PARM_APPLICABLE() conditions - rename xtal depended clocks in PLL and Peripherals domains - remove 'a1_' prefix for all clocks, because they are already inside A1 driver, it's redundant - change udelay() to usleep_range() as preferred for small msec amount - purge all double quotes from the yaml schemas - use proper dt node names following kernel guidelines https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation - use devm_platform_ioremap_resource() instead of simple devm_ioremap_resource() - mark all dspX clocks as CLK_IGNORE_UNUSED, because we do not want to touch these clocks during CCF initialization due to possible workload execution on it started from bootloader; in this case bootloader already made all initialization stuff for dspX - also mark all dspX with NO_REPARENT tag, because from dspX clocks we want to select proper clk source from device tree Changes v8 since v7 at [8]: - introduced a1-clkc common driver for all A1 clock controllers - exported meson_clk_pll_wait_lock symbol - supported meson-a1-clkc common driver in the a1-pll and a1 clkc - inherited a1-pll from the base clk-pll driver, implemented own version of init/enable/disable/enabled routines; rate calculating logic is fully the same - aligned CLKID-related definitions with CLKID list from order perspective to remove holes and permutations - corrected Kconfig dependencies and types - provided correct MODULE_AUTHORs() - optimized and fixed up some clock relationships - removed unused register offset definitions - fixed up A1 PLL and Peripherals clkc dtb_check errors - fixed clk_summary kernel panic due to missing a1_pad_ctrl clk_regmap definition - included PLL and Peripherals clk controllers to the base a1 dts - The previous v7 version [8] had several logic and style problems, all of them are resolved in this version. Original Jian Hu v7 patches are not touched, and all additional fixes are implemented in separate patches. Patch "clk: meson: add support for A1 PLL clock ops" is removed, because a1-pll clk driver inherits all stuff from clk-pll base driver, just implements custom init/enable/disable/is_enabled callbacks. Changes v7 since v6 at [7]: - fix 'dt_binding_check' compiling error - add acked-by Changes v6 since v5 at [6]: - fix yaml file - add rst/current_en/l_detect parm detection - remove 'meson_eeclkc_data' in a1.c and a1-pll.c Changes v5 since v4 at [5]: - change yaml GPL - drop meson-eeclk.c patch, add probe function in each driver - add CLK_IS_CRITICAL for sys_clk clock, drop the flag for sys_a and sys_b - add new parm for pll, add protection for rst parm - drop flag for a1_fixed_pll - remove the same comment for fclk_div, add "refer to" - add critical flag for a1_sys_clk - remove rtc table - rename a1_dspa_en_dspa and a1_dspb_en_dspb - remove useless comment Changes v4 since v3 at [3]: - fix reparenting orphan failed, it depends on jerome's patch [4] - fix changelist in v3 about reparenting orphan - remove the dts patch Changes v3 since v2 at [2]: - add probe function for A1 - separate the clock driver into two patch - change some clock flags and ops - add support for a1 PLL ops - add A1 clock node - fix reparenting orphan clock failed, registering xtal_fixpll and xtal_hifipll after the provider registration, it is not a best way. Changes v2 since v1 at [1]: - place A1 config alphabetically - add actual reason for RO ops, CLK_IS_CRITICAL, CLK_IGNORE_UNUSED - separate the driver into two driver: peripheral and pll driver - delete CLK_IGNORE_UNUSED flag for pwm b/c/d/e/f clock, dsp clock - delete the change in Kconfig.platforms, address to Kevin alone - remove the useless comments - modify the meson pll driver to support A1 PLLs Links: [1] https://lkml.kernel.org/r/1569411888-98116-1-git-send-email-jian.hu@amlogic.com [2] https://lkml.kernel.org/r/1571382865-41978-1-git-send-email-jian.hu@amlogic.com [3] https://lkml.kernel.org/r/20191129144605.182774-1-jian.hu@amlogic.com [4] https://lkml.kernel.org/r/20191203080805.104628-1-jbrunet@baylibre.com [5] https://lkml.kernel.org/r/20191206074052.15557-1-jian.hu@amlogic.com [6] https://lkml.kernel.org/r/20191227094606.143637-1-jian.hu@amlogic.com [7] https://lkml.kernel.org/r/20200116080440.118679-1-jian.hu@amlogic.com [8] https://lore.kernel.org/linux-amlogic/20200120034937.128600-1-jian.hu@amlogic.com/ [9] https://lore.kernel.org/linux-amlogic/20221201225703.6507-1-ddrokosov@sberdevices.ru/ [10] https://lore.kernel.org/all/20230301183759.16163-1-ddrokosov@sberdevices.ru/ [11] https://lore.kernel.org/all/20230313201259.19998-1-ddrokosov@sberdevices.ru/ [12] https://lore.kernel.org/all/20230321193014.26349-1-ddrokosov@sberdevices.ru/ [13] https://lore.kernel.org/all/20230404155332.9571-1-ddrokosov@sberdevices.ru/ [14] https://lore.kernel.org/linux-amlogic/20230405195927.13487-1-ddrokosov@sberdevices.ru/ [15] https://lore.kernel.org/all/20230426095805.15338-1-ddrokosov@sberdevices.ru/ [16] https://lore.kernel.org/all/20230517133309.9874-1-ddrokosov@sberdevices.ru/ Dmitry Rokosov (6): clk: meson: make pll rst bit as optional clk: meson: introduce new pll power-on sequence for A1 SoC family dt-bindings: clock: meson: add A1 PLL clock controller bindings clk: meson: a1: add Amlogic A1 PLL clock controller driver dt-bindings: clock: meson: add A1 Peripherals clock controller bindings clk: meson: a1: add Amlogic A1 Peripherals clock controller driver .../clock/amlogic,a1-peripherals-clkc.yaml | 73 + .../bindings/clock/amlogic,a1-pll-clkc.yaml | 59 + MAINTAINERS | 1 + drivers/clk/meson/Kconfig | 20 + drivers/clk/meson/Makefile | 2 + drivers/clk/meson/a1-peripherals.c | 2243 +++++++++++++++++ drivers/clk/meson/a1-peripherals.h | 113 + drivers/clk/meson/a1-pll.c | 356 +++ drivers/clk/meson/a1-pll.h | 47 + drivers/clk/meson/clk-pll.c | 47 +- drivers/clk/meson/clk-pll.h | 2 + .../clock/amlogic,a1-peripherals-clkc.h | 115 + .../dt-bindings/clock/amlogic,a1-pll-clkc.h | 20 + 13 files changed, 3091 insertions(+), 7 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/amlogic,a1-peripherals-clkc.yaml create mode 100644 Documentation/devicetree/bindings/clock/amlogic,a1-pll-clkc.yaml create mode 100644 drivers/clk/meson/a1-peripherals.c create mode 100644 drivers/clk/meson/a1-peripherals.h create mode 100644 drivers/clk/meson/a1-pll.c create mode 100644 drivers/clk/meson/a1-pll.h create mode 100644 include/dt-bindings/clock/amlogic,a1-peripherals-clkc.h create mode 100644 include/dt-bindings/clock/amlogic,a1-pll-clkc.h -- 2.36.0 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 65D2EC7EE23 for ; Tue, 23 May 2023 13:55:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:CC :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=SIYu4lEn0aUA0y3W6E83saPVyMwTIHEcoEfuTz2ESr4=; b=yvZRgLtA40bYwB uWKuKfEuSdyiOTFxkSzvfQ7CWbvKwa8JNCpVE2Ie0hw6AJLFKlAq5UzMnA5r9/h1WBvAah4AL8Bmt WiArieoqI6qr6vgVlMCfmGoBp5Eigh5J8g/lpwpTTZ7NeqZw19lbJeZAj2QykaXgbwAuKzOn9qvIS q3yP3Y4Vw+i834VLR5Vq7+DykeuWtEBVdDXZpkVzCxVU8HQbSlIhQ15L/iDwBaZqjsCRRV62CMY1v rqShUYqCzbGiNRE3QK08suTGGEK5Bu0MvhawFT/0ZtBiC49R2U9+L65Y+gha9B2CfyApy2n8F400S zYj8PTb8SRggKrezL/FQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q1STA-00AQPa-2W; Tue, 23 May 2023 13:54:32 +0000 Received: from mx.sberdevices.ru ([45.89.227.171]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q1SSm-00AQCg-0V; Tue, 23 May 2023 13:54:13 +0000 Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id 7425D5FD02; Tue, 23 May 2023 16:54:01 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1684850041; bh=EEnUKx15kCXa8L+oInysTAxZfz9CTEZv+3zggjX0I7s=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=Uif3ccBorE+ICiC2YLVyh4A1AjSM4fnPbkuHrwEw9rzsDxlhJhl8pxYJBUYX4Qq3T RYFagq2bEr/NOllu3Ne2PGX/jWBvSaVDo2nZaG0OjDCCq/pBQKgyNKsW2aGneCxbk1 VVUYDVlgnX4xB+dqTK6vJxztMXY5cMT4dnedeadQ5mrR6DdaRdktQGS+epHHHI4neh CfiE0u54d7iYu1EZiewhsa+BTKw67GI0/6eixtZ9/YxWLHM9LfYyLp7JtZcKO0I4Ep Emly9V1BsmDkNwO2w+7RhD6m8ptdsItEDVQC4UlmXX44i9B1lp+DpzWm2T3T6abN90 y94KRUU81RWOQ== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Tue, 23 May 2023 16:54:00 +0300 (MSK) From: Dmitry Rokosov To: , , , , , , , CC: , , , , , , , , Dmitry Rokosov Subject: [PATCH v16 0/6] add Amlogic A1 clock controller drivers Date: Tue, 23 May 2023 16:53:45 +0300 Message-ID: <20230523135351.19133-1-ddrokosov@sberdevices.ru> X-Mailer: git-send-email 2.36.0 MIME-Version: 1.0 X-Originating-IP: [172.16.1.6] X-ClientProxiedBy: S-MS-EXCH02.sberdevices.ru (172.16.1.5) To S-MS-EXCH01.sberdevices.ru (172.16.1.4) X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2023/05/23 12:15:00 #21372692 X-KSMG-AntiVirus-Status: Clean, skipped X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230523_065408_909180_63BE96CC X-CRM114-Status: GOOD ( 29.76 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org QTEgU29DIGhhcyBmb3VyIGNsb2NrIGNvbnRyb2xsZXJzIG9uIHRoZSBib2FyZDogUExMLCBQZXJp cGhlcmFscywgQ1BVLAphbmQgQXVkaW8uIFRoZSBhdWRpbyBjbG9jayBjb250cm9sbGVyIGlzIGRp ZmZlcmVudCBmcm9tIG90aGVycywgYnV0IHRoZQpyZXN0IGFyZSB2ZXJ5IHNpbWlsYXIgZnJvbSBh IGZ1bmN0aW9uYWwgYW5kIHJlZ21hcCBwb2ludCBvZiB2aWV3LgpUaGlzIHBhdGNoIHNlcmllcyBh ZGQgc3VwcG9ydCBmb3IgQW1sb2dpYyBBMSBQTEwgYW5kIFBlcmlwaGVyYWxzIGNsb2NrCmRyaXZl cnMuCkl0IGJsb2NrcyBhbGwgQTEgcGVyaXBoZXJhbHMgbWFpbmxpbmUgc3VwcG9ydCBhbmQgYSBj b3VwbGUgb2YgcGF0Y2ggc2VyaWVzLAp3aGljaCB3ZXJlIGFscmVhZHkgcmV2aWV3ZWQgYW5kIGFj a2VkLCBidXQgd2VyZW4ndCBtZXJnZWQgZHVlIHRvIHBlbmRpbmcKY2xvY2sgY29udHJvbGxlciBk cml2ZXJzIHNlcmllcywgZS5nLgpodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMzA0MTgx MTE2MTIuMTk0NzktMS1kZHJva29zb3ZAc2JlcmRldmljZXMucnUvCgpUT0RPOiBDUFUgYW5kIEF1 ZGlvIGNsb2NrIGNvbnRyb2xsZXJzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBwYXRjaApzZXJp ZXMsIGl0IHdpbGwgYmUgc2VudCBsYXRlci4gVGhlIGZvbGxvd2luZyBjbGtzIGZyb20gdGhlc2Ug Y29udHJvbGxlcnMKYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdzoKKiBBdWRpbyBjbGtzIC0gdmFk LCBtY2xrX3ZhZCwgbWNsa19kLCByZXNhbXBsZV9hLCBsb2NrZXJfaW4sIG1jbGtfYiwKICAgcGRt ZGNsaywgcGRtc3lzY2xrLCBlcWRyYywgc3BkaWZpbiwgbWNsa19hLCBhdWRpbzJfdG9hdWRpb3Rv cCwKICAgYXVkaW8yX3RvdmFkLCBhdWRpbzJfdG9kZHJfdmFkLCBhdWRpbzJfdGRtaW5fdmFkLCBh dWRpbzJfcGRtLAogICBhdWRpbzJfZGRyX2FyYiwgYXVkaW9fYXVkaW9sb2NrZXIsIGF1ZGlvX2Vx ZHJjLCBhdWRpb19yZXNhbXBsZWEsCiAgIGF1ZGlvX3NwZGlmaW4sIGF1ZGlvX3RvZGRyYiwgYXVk aW9fdG9kZHJhLCBhdWRpb19mcmRkcmIsIGF1ZGlvX2ZyZGRyYSwKICAgYXVkaW9fdGRtb3V0Yiwg YXVkaW9fdGRtb3V0YSwgYXVkaW9fbG9vcGJhY2thLCBhdWRpb190ZG1pbmxiLAogICBhdWRpb190 ZG1pbmIsIGF1ZGlvX3RkbWluYSwgYXVkaW9fZGRyX2FyYiwgbWNsa19jCgoqIENQVSBjbGtzOiBj cHVfZml4ZWRfc291cmNlX3NlbDAsIGNwdV9maXhlZF9zb3VyY2VfZGl2MCwKICAgICAgICAgICAg Y3B1X2ZpeGVkX3NvdXJjZV9zZWwxLCBjcHVfZml4ZWRfc291cmNlX2RpdjEsIGNwdV9jbGsKClZh bGlkYXRpb246CiogdG8gZG91YmxlIGNoZWNrIGFsbCBjbGsgZmxhZ3MgcnVuIGJlbG93IGhlbHBl ciBzY3JpcHQ6CiAgICBwdXNoZCAvc3lzL2tlcm5lbC9kZWJ1Zy9jbGsKICAgIGZvciBmIGluICo7 IGRvCiAgICAgICAgaWYgW1sgLWYgIiRmL2Nsa19mbGFncyIgXV07IHRoZW4KICAgICAgICAgICAg ZmxhZ3M9IiQoY2F0ICRmL2Nsa19mbGFncyB8IGF3ayAneyQxPSQxfTsxJyB8IHNlZCAnOmE7Tjsk IWJhO3MvXG4vIHwgL2cnKSIKICAgICAgICAgICAgZWNobyAtZSAiJGY6ICRmbGFncyIKICAgICAg ICBmaQogICAgZG9uZQogICAgcG9wZAoKKiB0byB0cmFjZSBjdXJyZW50IGNsa3Mgc3RhdGUgdXNl ICcvc3lzL2tlcm5lbC9kZWJ1Zy9jbGsvY2xrX2R1bXAnIG5vZGUKICB3aXRoIGpxIHBvc3QtcHJv Y2Vzc2luZzoKICAgICQgY2F0IC9zeXMva2VybmVsL2RlYnVnL2Nsay9jbGtfZHVtcCB8IGpxICcu JyA+IGNsa19kdW1wLmpzb24KCiogdG8gZGVidWcgY2xrIHJhdGUgcHJvcGFnYXRpb24sIGNvbXBp bGUga2VybmVsIHdpdGggdGhlIGZvbGxvd2luZwogIGRlZmluaXRpb246CiAgICAkIHNlZCAtaSAi cy91bmRlZiBDTE9DS19BTExPV19XUklURV9ERUJVR0ZTL2RlZmluZSBDTE9DS19BTExPV19XUklU RV9ERUJVR0ZTL2ciIGRyaXZlcnMvY2xrL2Nsay5jCiAgYWZ0ZXIgdGhhdCwgY2xrX3JhdGUgZGVi dWcgbm9kZSBmb3IgZWFjaCBjbG9jayB3aWxsIGJlIGF2YWlsYWJsZSBmb3IKICB3cml0ZSBvcGVy YXRpb24KCkNoYW5nZXMgdjE2IHNpbmNlIHYxNSBhcyBbMTZdOgogICAgLSByZW1vdmUgYWxsIENM S19TRVRfUkFURV9OT19SRVBBUkVOVCBmbGFnIGZyb20gYWxsIFJUQyByZWxhdGVkCiAgICAgIGNs b2NrIG9iamVjdHMsIGluY2x1ZGluZyBQV00sIGJhc2VkIG9uIElSQyB0YWxrIHdpdGggTWFydGlu CiAgICAgIEJsdW1lbnN0aW5nbDoKICAgICAgaHR0cHM6Ly9saWJlcmEuaXJjbG9nLndoaXRlcXVh cmsub3JnL2xpbnV4LWFtbG9naWMvMjAyMy0wNS0xOAogICAgICBvbmx5IEdFTkNMSyBzdGlsbCBo YXMgdGhpcyBmbGFnLCBiZWNhdXNlIGl0J3MgYSBkZWJ1ZyBjbG9jawogICAgLSBzaW5jZSB0aGUg c3lzdGVtIGNsb2NrIGlzIHNldCB1cCBieSB0aGUgQm9vdFJPTSBjb2RlLCBhbGwgc3lzXyoKICAg ICAgZGl2aWRlcnMgYW5kIGdhdGVzIHNob3VsZCBiZSByZWFkLW9ubHkKCkNoYW5nZXMgdjE1IHNp bmNlIHYxNCBhcyBbMTVdOgogICAgLSByZW5hbWUgYWxsIGR0IGJpbmRpbmdzIHJlbGF0ZWQgdG8g QTEgUGVyaXBoZXJhbHMgQ2xvY2sgQ29udHJvbGxlcgogICAgICBmcm9tICIqYTEtY2xrYyoiIHRv ICIqYTEtcGVyaXBoZXJhbHMtY2xrYyoiCiAgICAtIGNoYW5nZSBDT01NT05fQ0xLX0ExIGNvbmZp ZyB0byBDT01NT05fQ0xLX0ExX1BFUklQSEVSQUxTCiAgICAtIHJlbmFtZSBjb21wYXRpYmxlIHN0 cmluZyBmcm9tICJhMS1jbGtjIiB0byAiYTEtcGVyaXBoZXJhbHMtY2xrYyIKICAgIC0gb3BlbiB0 aGUgU0RfRU1NQ19TRUwyIGNsb2NrIG9iamVjdCB0byBwdWJsaWMgZHQgYmluZGluZ3MgZHVlIHRv CiAgICAgIHNldmVyYWwgaGFyZHdhcmUgaXNzdWVzIGR1cmluZyBhdXRvLXJlcGFyZW50aW5nIHdp dGggcmF0ZQogICAgICBwcm9wYWdhdGlvbjsgY3VycmVudGx5LCB0aGUgTWVzb24gTU1DIGRyaXZl ciBpbml0aWFsaXplcyBpdHMKICAgICAgcGFyZW50IHVzaW5nIGFuIGFzc2lnbmVkLWNsb2NrcyBt ZWNoYW5pc20gYW5kIHNldHMgYW4gYXBwcm9wcmlhdGUKICAgICAgcmF0ZS4gQSByZWxhdGVkIHBh dGNoIGZvciBtZXNvbi1hMS5kdHNpIHdpbGwgYmUgcHJvdmlkZWQgYWZ0ZXIgdGhlCiAgICAgIGNs b2NrIHBhdGNoIHNlcmllcyBpcyBtZXJnZWQKICAgIC0gcmVtb3ZlICdkcml2ZXInIGtleXdvcmQg ZnJvbSBkdCBiaW5kaW5ncyBjb21taXQgbXNncyBhbmQgcGF0Y2hzZXRzCiAgICAtIG1ha2UgRW5n bGlzaCBncmFtbWFyIGJldHRlciEKCkNoYW5nZXMgdjE0IHNpbmNlIHYxMyBhdCBbMTRdOgogICAg LSByZW1vdmUgdGhlIHRlcm0gIk1lc29uIiBmcm9tIGFsbCBwYXRjaHNldHMgb3IgcmVwbGFjZSBp dCB3aXRoCiAgICAgICJBbWxvZ2ljIgogICAgLSBwdXJnZSBleHRyYSBjb21tYXMgYXMgcGVyIE1h cnRpbidzIHN1Z2dlc3Rpb24KICAgIC0gZHJvcCB0aGUgdW5uZWVkZWQgdXNlIG9mIG9mX21hdGNo X3B0cigpLCBzaW5jZSBhbGwgTWVzb24gY2xvY2sKICAgICAgZHJpdmVycyBkZXBlbmQgb24gdGhl IEFSTTY0IGNvbmZpZyB3aGljaCBzZWxlY3RzIENPTkZJR19PRiBieSBkZWZhdWx0CgpDaGFuZ2Vz IHYxMyBzaW5jZSB2MTIgYXQgWzEzXToKICAgIC0gbWFrZSB0aGUgY2xvY2sgb2JqZWN0IHJlZ2lz dHJhdGlvbiBvcmRlciBmcm9tIHRoZSByb290cyB0byB0aGUgbGVhdmVzCiAgICAtIHJlYXJyYW5n ZSB0aGUgY2xraWRzIGZvbGxvd2luZyBhYm92ZSBydWxlCgpDaGFuZ2VzIHYxMiBzaW5jZSB2MTEg YXQgWzEyXToKICAgIC0gc3BsaXQgdGhlIERUIGJpbmRpbmdzIHBhdGNoc2V0IGludG8gdHdvIHBh dGNoZXM6IG9uZSBmb3IgdGhlIFBMTCBjbG9jawogICAgICBjb250cm9sbGVyIGRyaXZlciwgYW5k IG9uZSBmb3IgdGhlIHBlcmlwaGVyYWxzIGNsb2NrIGNvbnRyb2xsZXIgZHJpdmVyCiAgICAtIHRv IHNhdGlzZnkgdGhlIERUIGJpbmRpbmcgY2hlY2tlciwgdXNlIGZha2UgcmVmZXJlbmNlcyB0byB0 aGUKICAgICAgcGVyaXBoZXJhbHMgY2xvY2sgY29udHJvbGxlciBpbiB0aGUgUExMIERUIGJpbmRp bmdzIHNjaGVtYSwgYW5kIHRoZW4KICAgICAgcmVwbGFjZSB0aGVtIHdpdGggcmVhbCByZWZlcmVu Y2VzIHdoZW4gdGhlIHBlcmlwaGVyYWxzIGJpbmRpbmdzCiAgICAgIGJlY29tZSBhdmFpbGFibGUu CiAgICAtIHJlbW92ZSB0aGUgcHVibGljL3ByaXZhdGUgY2xvY2tzIGNvbmNlcHQgZnJvbSBib3Ro IGNvbnRyb2xsZXJzLAogICAgICBhbmQgaW5zdGVhZCB1c2UgYSBsaW5lYXIgY2xraWQgbGlzdCB3 aXRoIGJvdGggZXhwb3NlZCBhbmQgaW50ZXJuYWwKICAgICAgb2JqZWN0cywgYWxsIG9mIHdoaWNo IGFyZSByZWdpc3RlcmVkIGluIHRoZSBjbG9jayBwcm92aWRlcgogICAgLSBjb21iaW5lIGFsbCBj b21tZW50cyBhYm91dCBSVEMgY2hpbGRyZW4gd2l0aCB0aGUgZmxhZwogICAgICAnQ0xLX1NFVF9S QVRFX05PX1JFUEFSRU5UJyBpbnRvIGEgc2luZ2xlIGl0ZW0gd2l0aCBtdWx0aXBsZQogICAgICBy ZWZlcmVuY2VzIHRvIGl0CgpDaGFuZ2VzIHYxMSBzaW5jZSB2MTAgYXQgWzExXToKICAgIC0gY2hh bmdlIGluY2x1ZGUvZHQtYmluZGluZ3MgbGljZW5zZSB0byBwcm9wZXIgdmFsdWUgcmVxdWlyZWQg Zm9yCiAgICAgIGJpbmRpbmdzIGZpbGVzOiAnR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZScK ICAgIC0gcGxsIGFuZCBwZXJpcGhlcmFscyBjbG9ja3MgYXJlIHNwbGl0IGludG8gcHVibGljIGFu ZCBwcml2YXRlIHBhcnRzOwogICAgICBwdWJsaWMgY2xvY2tzIGFyZSBhdmFpbGFibGUgZm9yIGV4 dGVybmFsIGNvbnN1bWVycyB0aHJvdWdoIHRoZSBEVCBsYXllciwKICAgICAgcHJpdmF0ZSBjbG9j a3MgaW5jbHVkZSBpbnRlcm5hbCBtdXhlcyBhbmQgZGl2aWRlcnMgb2YgY29tcG9zaXRlIGNsb2Nr cywKICAgICAgdGhleSBhcmUgcGxhY2VkIGluc2lkZSBjbG9jayBjb250cm9sbGVyIGRyaXZlciB3 aXRob3V0IGV4dGVybmFsIGFjY2VzcwogICAgLSBtYWtlIHB1YmxpYyBjbGtzIENMS0lEIGJpbmRp bmdzIGNvbnRpbnVvdXMKICAgIC0gbWFyayB0aGUgZm9sbG93aW5nIGNsb2NrIG11eGVzIGFzIE5P X1JFUEFSRU5UIGFuZCBhZGQgdGhlbSB0bwogICAgICBwdWJsaWMgY2xvY2tzIGxpc3Q6IEdFTl9T RUwsIERTUEFfQV9TRUwsIERTUEFfQl9TRUwsIERTUEJfQV9TRUwsCiAgICAgIERTUF9CX0JfU0VM LCBQV01fQV9TRUwsIFBXTV9CX1NFTCwgUFdNX0NfU0VMLCBQV01fRF9TRUwsCiAgICAgIFBXTV9F X1NFTCwgUFdNX0ZfU0VMLCBDRUNBXzMyS19TRUwsIENFQ0JfMzJLX1NFTDsgZWFjaCBvZiB0aGVt IGNhbgogICAgICBiZSBpbmhlcml0ZWQgZnJvbSBtb3JlIGFjY3VyYXRlIFJUQyBjbG9jayBhbmQg c29tZXRpbWVzIGl0J3MKICAgICAgcmVxdWlyZWQgdG8gZm9yYmlkIHJlcGFyZW50aW5nIGluIHN1 Y2ggc2l0dWF0aW9uOyBhbHNvIEdFTl9TRUwgY2FuCiAgICAgIGJlIGNvbm5lY3RlZCB0byBleHRl cm5hbCBQQUQgYW5kIHNob3VsZCBub3QgY2hhbmdlIHBhcmVudAogICAgICBhdXRvbWF0aWNhbGx5 IGR1ZSB0byByYXRlIHByb3BhZ2F0aW9uLiBGb3Igc3VjaCBjbG9ja3MgdXNlciBtdXN0CiAgICAg IHNldHVwIHBhcmVudHMgb24gdGhlIERUIHNpZGUKCkNoYW5nZXMgdjEwIHNpbmNlIHY5IGF0IFsx MF06CiAgICAtIHNwbGl0IGdlbmVyYWwgY2xrLXBsbCBjaGFuZ2VzIGludG8gdHdvIGRpZmZlcmVu dCBwYXRjaHNldHM6CiAgICAgIG9wdGlvbmFsIHJzdCB1c2FnZSBhbmQgbmV3IHBvd2VyIHNlcXVl bmNlCiAgICAtIHNxdWFzaCBkdCBiaW5kaW5ncyBwYXRjaHNldHMgdG8gYXZvaWQgY2hpY2tlbi1v ci10aGUtZWdnIHByb2JsZW0KICAgICAgZHVyaW5nIHJ1biBkdCBiaW5kaW5nIGNoZWNrIHJvdXRp bmVzCiAgICAtIGFkZCB2ZW5kb3IgcHJlZml4IHRvIFBMTCBhbmQgUGVyaXBoZXJhbHMgY2xrY3Mg YmluZGluZ3MgZmlsZW5hbWVzCiAgICAtIGNsZWFyIG1hbmFnZWQgaGlmaV9wbGwgZmllbGRzIGZy b20gaW5pdGlhbCBwb2tlIHRhYmxlCiAgICAtIG1vdmUgRFNQQV9TRUwsIERTUEJfU0VMIGFuZCBT QVJBRENfU0VMIHRvIHByaXZhdGUgY2xraWQgdGFibGUsCiAgICAgIGJlY2F1c2UgaXQgc2hvdWxk IG5vdCBiZSBvcGVuZWQgZm9yIGRpcmVjdCB1c2FnZQogICAgLSBwd21fYSBjbGsgdXNlZCBmb3Ig dm9sdGFnZSByZWd1bGF0aW9uIGlzIG5vdCBjcml0aWNhbCBhbnltb3JlLCBpdAogICAgICBtdXN0 IGJlIGluY2x1ZGVkIHRvIHRoZSBwcm9wZXIgY3B1IHZvbHRhZ2UgcmVndWxhdGlvbiBzZXR1cCAo d2lsbAogICAgICBiZSBhdmFpbGFibGUgaW4gdGhlIG5leHQgcGF0Y2ggc2VyaWVzKQogICAgLSBh cyBkaXNjdXNzZWQgd2l0aCBKZXJvbWUsIGRzcFggY2xrcyBhcmUgc2ltcGxlIGNsb2NrcyBhbmQg aXQKICAgICAgc2hvdWxkIGJlIGVuYWJsZWQvZGlzYWJsZWQvaWdub3JlZC9hbnl0aGluZyBlbHNl IGZyb20gYXBwcm9wcmlhdGUKICAgICAgRFNQIGRyaXZlciwgc28gcmVtb3ZlIENMS19JR05PUkVf VU5VU0VEIHRhZ3MKICAgIC0gcHJvdmlkZSBtb3JlIHVuZGVyc3RhbmRhYmxlIGNvbW1lbnRzIGFu ZCByZW1vdmUgaXJyZWxldmFudCAoSSBob3BlIHNvKQogICAgLSByZW1vdmUgQ09ORklHX09GIHVz YWdlLCBiZWNhdXNlIGl0J3MgcmVkdW5kYW50CiAgICAtIGZpeCBsaWNlbnNlIGlzc3VlLCBpdCdz IEdQTC0yLjArIG9ubHkgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbgogICAgLSBzb21lIGNvbW1pdCBt c2dzIHJld29yZGluZwoKQ2hhbmdlcyB2OSBzaW5jZSB2OCBhdCBbOV06CiAgICAtIHJlbW92ZSBj b21tb24gYTEtY2xrYyBkcml2ZXIgZm9yIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIGExIGNsb2NrCiAg ICAgIGNvbnRyb2xsZXJzIGFzIEplcm9tZSBzdWdnZXN0ZWQgKGl0IHdpbGwgYmUgZGlzY3Vzc2Vk IGFmdGVyIHM0IGFuZAogICAgICBhMSBjbGtzIGxhbmRlZCwgaG9wZSBzbykKICAgIC0gcmVwbGFj ZSBpbmhlcml0ZWQgYTEtcGxsIGNsa19wbGxfb3BzIHdpdGggY29tbW9uIG9wcyBhbmQKICAgINC+ 0LvQviAgaW50cm9kdWNlIGN1c3RvbSBBMSBQTEwgbG9naWMgdW5kZXIgTUVTT05fUEFSTV9BUFBM SUNBQkxFKCkKICAgICAgY29uZGl0aW9ucwogICAgLSByZW5hbWUgeHRhbCBkZXBlbmRlZCBjbG9j a3MgaW4gUExMIGFuZCBQZXJpcGhlcmFscyBkb21haW5zCiAgICAtIHJlbW92ZSAnYTFfJyBwcmVm aXggZm9yIGFsbCBjbG9ja3MsIGJlY2F1c2UgdGhleSBhcmUgYWxyZWFkeQogICAgICBpbnNpZGUg QTEgZHJpdmVyLCBpdCdzIHJlZHVuZGFudAogICAgLSBjaGFuZ2UgdWRlbGF5KCkgdG8gdXNsZWVw X3JhbmdlKCkgYXMgcHJlZmVycmVkIGZvciBzbWFsbCBtc2VjCiAgICAgIGFtb3VudAogICAgLSBw dXJnZSBhbGwgZG91YmxlIHF1b3RlcyBmcm9tIHRoZSB5YW1sIHNjaGVtYXMKICAgIC0gdXNlIHBy b3BlciBkdCBub2RlIG5hbWVzIGZvbGxvd2luZyBrZXJuZWwgZ3VpZGVsaW5lcwogICAgICBodHRw czovL2RldmljZXRyZWUtc3BlY2lmaWNhdGlvbi5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvY2hh cHRlcjItZGV2aWNldHJlZS1iYXNpY3MuaHRtbCNnZW5lcmljLW5hbWVzLXJlY29tbWVuZGF0aW9u CiAgICAtIHVzZSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UoKSBpbnN0ZWFkIG9mIHNp bXBsZQogICAgICBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoKQogICAgLSBtYXJrIGFsbCBkc3BYIGNs b2NrcyBhcyBDTEtfSUdOT1JFX1VOVVNFRCwgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudAogICAgICB0 byB0b3VjaCB0aGVzZSBjbG9ja3MgZHVyaW5nIENDRiBpbml0aWFsaXphdGlvbiBkdWUgdG8gcG9z c2libGUKICAgICAgd29ya2xvYWQgZXhlY3V0aW9uIG9uIGl0IHN0YXJ0ZWQgZnJvbSBib290bG9h ZGVyOyBpbiB0aGlzIGNhc2UKICAgICAgYm9vdGxvYWRlciBhbHJlYWR5IG1hZGUgYWxsIGluaXRp YWxpemF0aW9uIHN0dWZmIGZvciBkc3BYCiAgICAtIGFsc28gbWFyayBhbGwgZHNwWCB3aXRoIE5P X1JFUEFSRU5UIHRhZywgYmVjYXVzZSBmcm9tIGRzcFggY2xvY2tzCiAgICAgIHdlIHdhbnQgdG8g c2VsZWN0IHByb3BlciBjbGsgc291cmNlIGZyb20gZGV2aWNlIHRyZWUKCkNoYW5nZXMgdjggc2lu Y2UgdjcgYXQgWzhdOgogICAgLSBpbnRyb2R1Y2VkIGExLWNsa2MgY29tbW9uIGRyaXZlciBmb3Ig YWxsIEExIGNsb2NrIGNvbnRyb2xsZXJzCiAgICAtIGV4cG9ydGVkIG1lc29uX2Nsa19wbGxfd2Fp dF9sb2NrIHN5bWJvbAogICAgLSBzdXBwb3J0ZWQgbWVzb24tYTEtY2xrYyBjb21tb24gZHJpdmVy IGluIHRoZSBhMS1wbGwgYW5kIGExIGNsa2MKICAgIC0gaW5oZXJpdGVkIGExLXBsbCBmcm9tIHRo ZSBiYXNlIGNsay1wbGwgZHJpdmVyLCBpbXBsZW1lbnRlZCBvd24KICAgICAgdmVyc2lvbiBvZiBp bml0L2VuYWJsZS9kaXNhYmxlL2VuYWJsZWQgcm91dGluZXM7IHJhdGUgY2FsY3VsYXRpbmcKICAg ICAgbG9naWMgaXMgZnVsbHkgdGhlIHNhbWUKICAgIC0gYWxpZ25lZCBDTEtJRC1yZWxhdGVkIGRl ZmluaXRpb25zIHdpdGggQ0xLSUQgbGlzdCBmcm9tIG9yZGVyCiAgICAgIHBlcnNwZWN0aXZlIHRv IHJlbW92ZSBob2xlcyBhbmQgcGVybXV0YXRpb25zCiAgICAtIGNvcnJlY3RlZCBLY29uZmlnIGRl cGVuZGVuY2llcyBhbmQgdHlwZXMKICAgIC0gcHJvdmlkZWQgY29ycmVjdCBNT0RVTEVfQVVUSE9S cygpCiAgICAtIG9wdGltaXplZCBhbmQgZml4ZWQgdXAgc29tZSBjbG9jayByZWxhdGlvbnNoaXBz CiAgICAtIHJlbW92ZWQgdW51c2VkIHJlZ2lzdGVyIG9mZnNldCBkZWZpbml0aW9ucwogICAgLSBm aXhlZCB1cCBBMSBQTEwgYW5kIFBlcmlwaGVyYWxzIGNsa2MgZHRiX2NoZWNrIGVycm9ycwogICAg LSBmaXhlZCBjbGtfc3VtbWFyeSBrZXJuZWwgcGFuaWMgZHVlIHRvIG1pc3NpbmcgYTFfcGFkX2N0 cmwKICAgICAgY2xrX3JlZ21hcCBkZWZpbml0aW9uCiAgICAtIGluY2x1ZGVkIFBMTCBhbmQgUGVy aXBoZXJhbHMgY2xrIGNvbnRyb2xsZXJzIHRvIHRoZSBiYXNlIGExIGR0cwogICAgLSBUaGUgcHJl dmlvdXMgdjcgdmVyc2lvbiBbOF0gaGFkIHNldmVyYWwgbG9naWMgYW5kIHN0eWxlIHByb2JsZW1z LAogICAgICBhbGwgb2YgdGhlbSBhcmUgcmVzb2x2ZWQgaW4gdGhpcyB2ZXJzaW9uLiBPcmlnaW5h bCBKaWFuIEh1IHY3IHBhdGNoZXMKICAgICAgYXJlIG5vdCB0b3VjaGVkLCBhbmQgYWxsIGFkZGl0 aW9uYWwgZml4ZXMgYXJlIGltcGxlbWVudGVkIGluIHNlcGFyYXRlCiAgICAgIHBhdGNoZXMuIFBh dGNoICJjbGs6IG1lc29uOiBhZGQgc3VwcG9ydCBmb3IgQTEgUExMIGNsb2NrIG9wcyIgaXMKICAg ICAgcmVtb3ZlZCwgYmVjYXVzZSBhMS1wbGwgY2xrIGRyaXZlciBpbmhlcml0cyBhbGwgc3R1ZmYg ZnJvbSBjbGstcGxsCiAgICAgIGJhc2UgZHJpdmVyLCBqdXN0IGltcGxlbWVudHMgY3VzdG9tIGlu aXQvZW5hYmxlL2Rpc2FibGUvaXNfZW5hYmxlZAogICAgICBjYWxsYmFja3MuCgpDaGFuZ2VzIHY3 IHNpbmNlIHY2IGF0IFs3XToKICAgIC0gZml4ICdkdF9iaW5kaW5nX2NoZWNrJyBjb21waWxpbmcg ZXJyb3IKICAgIC0gYWRkIGFja2VkLWJ5CgpDaGFuZ2VzIHY2IHNpbmNlIHY1IGF0IFs2XToKICAg IC0gZml4IHlhbWwgZmlsZQogICAgLSBhZGQgcnN0L2N1cnJlbnRfZW4vbF9kZXRlY3QgcGFybSBk ZXRlY3Rpb24KICAgIC0gcmVtb3ZlICdtZXNvbl9lZWNsa2NfZGF0YScgaW4gYTEuYyBhbmQgYTEt cGxsLmMKCkNoYW5nZXMgdjUgc2luY2UgdjQgYXQgWzVdOgogICAgLSBjaGFuZ2UgeWFtbCBHUEwK ICAgIC0gZHJvcCBtZXNvbi1lZWNsay5jIHBhdGNoLCBhZGQgcHJvYmUgZnVuY3Rpb24gaW4gZWFj aCBkcml2ZXIKICAgIC0gYWRkIENMS19JU19DUklUSUNBTCBmb3Igc3lzX2NsayBjbG9jaywgZHJv cCB0aGUgZmxhZyBmb3Igc3lzX2EKICAgICAgYW5kIHN5c19iCiAgICAtIGFkZCBuZXcgcGFybSBm b3IgcGxsLCBhZGQgcHJvdGVjdGlvbiBmb3IgcnN0IHBhcm0KICAgIC0gZHJvcCBmbGFnIGZvciBh MV9maXhlZF9wbGwKICAgIC0gcmVtb3ZlIHRoZSBzYW1lIGNvbW1lbnQgZm9yIGZjbGtfZGl2LCBh ZGQgInJlZmVyIHRvIgogICAgLSBhZGQgY3JpdGljYWwgZmxhZyBmb3IgYTFfc3lzX2NsawogICAg LSByZW1vdmUgcnRjIHRhYmxlCiAgICAtIHJlbmFtZSBhMV9kc3BhX2VuX2RzcGEgYW5kIGExX2Rz cGJfZW5fZHNwYgogICAgLSByZW1vdmUgdXNlbGVzcyBjb21tZW50CgpDaGFuZ2VzIHY0IHNpbmNl IHYzIGF0IFszXToKICAgIC0gZml4IHJlcGFyZW50aW5nIG9ycGhhbiBmYWlsZWQsIGl0IGRlcGVu ZHMgb24gamVyb21lJ3MgcGF0Y2ggWzRdCiAgICAtIGZpeCBjaGFuZ2VsaXN0IGluIHYzIGFib3V0 IHJlcGFyZW50aW5nIG9ycGhhbgogICAgLSByZW1vdmUgdGhlIGR0cyBwYXRjaCAKCkNoYW5nZXMg djMgc2luY2UgdjIgYXQgWzJdOgogICAgLSBhZGQgcHJvYmUgZnVuY3Rpb24gZm9yIEExCiAgICAt IHNlcGFyYXRlIHRoZSBjbG9jayBkcml2ZXIgaW50byB0d28gcGF0Y2gKICAgIC0gY2hhbmdlIHNv bWUgY2xvY2sgZmxhZ3MgYW5kIG9wcwogICAgLSBhZGQgc3VwcG9ydCBmb3IgYTEgUExMIG9wcwog ICAgLSBhZGQgQTEgY2xvY2sgbm9kZQogICAgLSBmaXggcmVwYXJlbnRpbmcgb3JwaGFuIGNsb2Nr IGZhaWxlZCwgcmVnaXN0ZXJpbmcgeHRhbF9maXhwbGwKICAgICAgYW5kIHh0YWxfaGlmaXBsbCBh ZnRlciB0aGUgcHJvdmlkZXIgcmVnaXN0cmF0aW9uLCBpdCBpcyBub3QKICAgICAgYSBiZXN0IHdh eS4KCkNoYW5nZXMgdjIgc2luY2UgdjEgYXQgWzFdOgogICAgLSBwbGFjZSBBMSBjb25maWcgYWxw aGFiZXRpY2FsbHkKICAgIC0gYWRkIGFjdHVhbCByZWFzb24gZm9yIFJPIG9wcywgQ0xLX0lTX0NS SVRJQ0FMLCBDTEtfSUdOT1JFX1VOVVNFRAogICAgLSBzZXBhcmF0ZSB0aGUgZHJpdmVyIGludG8g dHdvIGRyaXZlcjogcGVyaXBoZXJhbCBhbmQgcGxsIGRyaXZlcgogICAgLSBkZWxldGUgQ0xLX0lH Tk9SRV9VTlVTRUQgZmxhZyBmb3IgcHdtIGIvYy9kL2UvZiBjbG9jaywgZHNwIGNsb2NrCiAgICAt IGRlbGV0ZSB0aGUgY2hhbmdlIGluIEtjb25maWcucGxhdGZvcm1zLCBhZGRyZXNzIHRvIEtldmlu IGFsb25lCiAgICAtIHJlbW92ZSB0aGUgdXNlbGVzcyBjb21tZW50cwogICAgLSBtb2RpZnkgdGhl IG1lc29uIHBsbCBkcml2ZXIgdG8gc3VwcG9ydCBBMSBQTExzCgpMaW5rczoKICAgIFsxXSBodHRw czovL2xrbWwua2VybmVsLm9yZy9yLzE1Njk0MTE4ODgtOTgxMTYtMS1naXQtc2VuZC1lbWFpbC1q aWFuLmh1QGFtbG9naWMuY29tCiAgICBbMl0gaHR0cHM6Ly9sa21sLmtlcm5lbC5vcmcvci8xNTcx MzgyODY1LTQxOTc4LTEtZ2l0LXNlbmQtZW1haWwtamlhbi5odUBhbWxvZ2ljLmNvbQogICAgWzNd IGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAxOTExMjkxNDQ2MDUuMTgyNzc0LTEtamlhbi5o dUBhbWxvZ2ljLmNvbQogICAgWzRdIGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAxOTEyMDMw ODA4MDUuMTA0NjI4LTEtamJydW5ldEBiYXlsaWJyZS5jb20KICAgIFs1XSBodHRwczovL2xrbWwu a2VybmVsLm9yZy9yLzIwMTkxMjA2MDc0MDUyLjE1NTU3LTEtamlhbi5odUBhbWxvZ2ljLmNvbQog ICAgWzZdIGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAxOTEyMjcwOTQ2MDYuMTQzNjM3LTEt amlhbi5odUBhbWxvZ2ljLmNvbQogICAgWzddIGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAy MDAxMTYwODA0NDAuMTE4Njc5LTEtamlhbi5odUBhbWxvZ2ljLmNvbQogICAgWzhdIGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2xpbnV4LWFtbG9naWMvMjAyMDAxMjAwMzQ5MzcuMTI4NjAwLTEtamlh bi5odUBhbWxvZ2ljLmNvbS8KICAgIFs5XSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1h bWxvZ2ljLzIwMjIxMjAxMjI1NzAzLjY1MDctMS1kZHJva29zb3ZAc2JlcmRldmljZXMucnUvCiAg ICBbMTBdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIzMDMwMTE4Mzc1OS4xNjE2My0x LWRkcm9rb3NvdkBzYmVyZGV2aWNlcy5ydS8KICAgIFsxMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5v cmcvYWxsLzIwMjMwMzEzMjAxMjU5LjE5OTk4LTEtZGRyb2tvc292QHNiZXJkZXZpY2VzLnJ1Lwog ICAgWzEyXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMzAzMjExOTMwMTQuMjYzNDkt MS1kZHJva29zb3ZAc2JlcmRldmljZXMucnUvCiAgICBbMTNdIGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2FsbC8yMDIzMDQwNDE1NTMzMi45NTcxLTEtZGRyb2tvc292QHNiZXJkZXZpY2VzLnJ1Lwog ICAgWzE0XSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1hbWxvZ2ljLzIwMjMwNDA1MTk1 OTI3LjEzNDg3LTEtZGRyb2tvc292QHNiZXJkZXZpY2VzLnJ1LwogICAgWzE1XSBodHRwczovL2xv cmUua2VybmVsLm9yZy9hbGwvMjAyMzA0MjYwOTU4MDUuMTUzMzgtMS1kZHJva29zb3ZAc2JlcmRl dmljZXMucnUvCiAgICBbMTZdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIzMDUxNzEz MzMwOS45ODc0LTEtZGRyb2tvc292QHNiZXJkZXZpY2VzLnJ1LwoKRG1pdHJ5IFJva29zb3YgKDYp OgogIGNsazogbWVzb246IG1ha2UgcGxsIHJzdCBiaXQgYXMgb3B0aW9uYWwKICBjbGs6IG1lc29u OiBpbnRyb2R1Y2UgbmV3IHBsbCBwb3dlci1vbiBzZXF1ZW5jZSBmb3IgQTEgU29DIGZhbWlseQog IGR0LWJpbmRpbmdzOiBjbG9jazogbWVzb246IGFkZCBBMSBQTEwgY2xvY2sgY29udHJvbGxlciBi aW5kaW5ncwogIGNsazogbWVzb246IGExOiBhZGQgQW1sb2dpYyBBMSBQTEwgY2xvY2sgY29udHJv bGxlciBkcml2ZXIKICBkdC1iaW5kaW5nczogY2xvY2s6IG1lc29uOiBhZGQgQTEgUGVyaXBoZXJh bHMgY2xvY2sgY29udHJvbGxlcgogICAgYmluZGluZ3MKICBjbGs6IG1lc29uOiBhMTogYWRkIEFt bG9naWMgQTEgUGVyaXBoZXJhbHMgY2xvY2sgY29udHJvbGxlciBkcml2ZXIKCiAuLi4vY2xvY2sv YW1sb2dpYyxhMS1wZXJpcGhlcmFscy1jbGtjLnlhbWwgICAgfCAgIDczICsKIC4uLi9iaW5kaW5n cy9jbG9jay9hbWxvZ2ljLGExLXBsbC1jbGtjLnlhbWwgICB8ICAgNTkgKwogTUFJTlRBSU5FUlMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL2Nsay9t ZXNvbi9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsKIGRyaXZlcnMvY2xrL21l c29uL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogZHJpdmVycy9jbGsvbWVz b24vYTEtcGVyaXBoZXJhbHMuYyAgICAgICAgICAgIHwgMjI0MyArKysrKysrKysrKysrKysrKwog ZHJpdmVycy9jbGsvbWVzb24vYTEtcGVyaXBoZXJhbHMuaCAgICAgICAgICAgIHwgIDExMyArCiBk cml2ZXJzL2Nsay9tZXNvbi9hMS1wbGwuYyAgICAgICAgICAgICAgICAgICAgfCAgMzU2ICsrKwog ZHJpdmVycy9jbGsvbWVzb24vYTEtcGxsLmggICAgICAgICAgICAgICAgICAgIHwgICA0NyArCiBk cml2ZXJzL2Nsay9tZXNvbi9jbGstcGxsLmMgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICstCiBk cml2ZXJzL2Nsay9tZXNvbi9jbGstcGxsLmggICAgICAgICAgICAgICAgICAgfCAgICAyICsKIC4u Li9jbG9jay9hbWxvZ2ljLGExLXBlcmlwaGVyYWxzLWNsa2MuaCAgICAgICB8ICAxMTUgKwogLi4u L2R0LWJpbmRpbmdzL2Nsb2NrL2FtbG9naWMsYTEtcGxsLWNsa2MuaCAgIHwgICAyMCArCiAxMyBm aWxlcyBjaGFuZ2VkLCAzMDkxIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2FtbG9n aWMsYTEtcGVyaXBoZXJhbHMtY2xrYy55YW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2FtbG9naWMsYTEtcGxsLWNsa2MueWFtbAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL21lc29uL2ExLXBlcmlwaGVyYWxzLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Nsay9tZXNvbi9hMS1wZXJpcGhlcmFscy5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jbGsvbWVzb24vYTEtcGxsLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2Nsay9tZXNvbi9hMS1wbGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1 ZGUvZHQtYmluZGluZ3MvY2xvY2svYW1sb2dpYyxhMS1wZXJpcGhlcmFscy1jbGtjLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2FtbG9naWMsYTEtcGxsLWNs a2MuaAoKLS0gCjIuMzYuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK