Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp2125435pxb; Sat, 19 Feb 2022 02:59:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJzqXUTCzTnW+DrRs2nUO5WxoHqmYcp8A8IWFgsQhWy80JFc+Cf1lWT+ATKWoKLHHSiMwnIu X-Received: by 2002:a05:6402:2922:b0:40f:7241:74d4 with SMTP id ee34-20020a056402292200b0040f724174d4mr12555231edb.43.1645268380564; Sat, 19 Feb 2022 02:59:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645268380; cv=none; d=google.com; s=arc-20160816; b=TIHKKMFGzI3tV/XnCZt9c734SYFKS0OkmYsVTx3ND8arHcdYhf7k3ciul6RefOaC2A tLuwDei3+XyuLjubhtfRou3A7oh4/3OdxPqyLgGPYA/9lBiDTAKJZRMZfF7SJUe8So+c Q2iFJ3xouwXlHOQ2ci6mVcmh3l3aljb9mCnD8XXaXcDYPTb1Qa8/c1GespoeQLLrMf2K 89/4jBcvjabx6J0ejTsKCZGz08vpxmIUp4FE9vo7en5ZCT+66YqAU3Ez/qLU6Oo59wWf xK6l8+2qEGeONVf49Je6vngGkzZ/jY4J9UzRU1z2cptdxbHBG5Bfq3DLYl8sKsyXeTld G56w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:content-language:cc:to:from:user-agent :mime-version:date:message-id; bh=+oRnQLoDpCuusXrOKp9YCt8evCtRenKJyZUsnRyAnNM=; b=Yuz9eVc9zXMGFs51CwLb3zGuwZ1dfFEnd0AMU9DNaK83zO1Efr5TNyM2LJCEaiK7sX Pq/0Rtaz9lFi9FMX30ux5n7PLkuzYmBjumYr4nXdlQ+GtYUT9k3CLSWC7g/mBEA7ZDth 7898hZbDtQDqgKGjEPb5UJorNdIjZgPE9Sxj1vie1h7CdtZnwH7+fRc7x4z6x/7ynt2Q GpCMyS1L+KUhx7RHf5g0DMEDHsONl9zArFxFDoJt0LuANDnsWSps07tqM34dzI9bn0dO pHEIJ+RwMsHPlt7rlM2HSZpTad/MoHaoc7ZnnuvSNVH2InB3fkET4RivcZUSkrVmYiYz D9qQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s1si4901578ejn.15.2022.02.19.02.59.16; Sat, 19 Feb 2022 02:59:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240622AbiBSJpI (ORCPT + 99 others); Sat, 19 Feb 2022 04:45:08 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231863AbiBSJpG (ORCPT ); Sat, 19 Feb 2022 04:45:06 -0500 Received: from mx1.molgen.mpg.de (mx3.molgen.mpg.de [141.14.17.11]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 737CD6622E; Sat, 19 Feb 2022 01:44:46 -0800 (PST) Received: from [192.168.0.2] (ip5f5aebda.dynamic.kabel-deutschland.de [95.90.235.218]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: pmenzel) by mx.molgen.mpg.de (Postfix) with ESMTPSA id 3F3E261E6478B; Sat, 19 Feb 2022 10:44:43 +0100 (CET) Content-Type: multipart/mixed; boundary="------------lcjbEMl588JUc0Q7wOMQsJw7" Message-ID: <32f90c33-eeb9-64a0-b2e2-9258ba2e1820@molgen.mpg.de> Date: Sat, 19 Feb 2022 10:44:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.6.0 From: Paul Menzel To: Mimi Zohar , Dmitry Kasatkin Cc: linux-integrity@vger.kernel.org, LKML Content-Language: en-US Subject: init_ima() adds 8 % to boot time X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------lcjbEMl588JUc0Q7wOMQsJw7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Dear Linux folks, Debian builds its Linux kernel image with `CONFIG_IMA=y` since version 5.13.9 [1]. Unfortunately, on the Dell Latitude E7250 `init_ima` takes around 33 ms, adding 8 % to the boot time up to loading the initrd. [ 0.000000] Linux version 5.17.0-rc4-amd64 (debian-kernel@lists.debian.org) (gcc-11 (Debian 11.2.0-16) 11.2.0, GNU ld (GNU Binutils for Debian) 2.38) #1 SMP PREEMPT Debian 5.17~rc4-1~exp1 (2022-02-18) […] [ 0.238520] calling init_tis+0x0/0xde @ 1 [ 0.254749] tpm_tis 00:08: 1.2 TPM (device-id 0x3205, rev-id 80) [ 0.285665] initcall init_tis+0x0/0xde returned 0 after 46038 usecs […] [ 0.301327] calling init_ima+0x0/0xb5 @ 1 [ 0.301332] ima: Allocated hash algorithm: sha256 [ 0.335502] ima: No architecture policies found [ 0.335520] initcall init_ima+0x0/0xb5 returned 0 after 33389 usecs […] [ 0.447312] Run /init as init process Tracing `init_ima` with a depth of 5 shows `ima_calc_boot_aggregate_tfm()` takes 24 ms, and `ima_add_template_entry()` takes 10 ms. 1.282630 | 1) swapper-1 | | ima_add_boot_aggregate() { 1.282631 | 1) swapper-1 | | ima_calc_boot_aggregate() { 1.282631 | 1) swapper-1 | 0.153 us | ima_alloc_tfm(); 1.282631 | 1) swapper-1 | * 24404.59 us | ima_calc_boot_aggregate_tfm(); 1.307037 | 1) swapper-1 | 0.482 us | ima_free_tfm.part.0(); 1.307038 | 1) swapper-1 | * 24407.06 us | } /* ima_calc_boot_aggregate */ 1.307038 | 1) swapper-1 | | ima_alloc_init_template() { 1.307038 | 1) swapper-1 | 0.173 us | ima_template_desc_current(); 1.307039 | 1) swapper-1 | 0.836 us | __kmalloc(); 1.307040 | 1) swapper-1 | 0.580 us | __kmalloc(); 1.307041 | 1) swapper-1 | 1.555 us | ima_eventdigest_ng_init(); 1.307043 | 1) swapper-1 | 1.275 us | ima_eventname_ng_init(); 1.307044 | 1) swapper-1 | 0.256 us | ima_eventsig_init(); 1.307045 | 1) swapper-1 | 6.618 us | } /* ima_alloc_init_template */ 1.307045 | 1) swapper-1 | | ima_store_template() { 1.307045 | 1) swapper-1 | 5.049 us | ima_calc_field_array_hash(); 1.307051 | 1) swapper-1 | # 9316.953 us | ima_add_template_entry(); 1.316369 | 1) swapper-1 | # 9323.728 us | } /* ima_store_template */ 1.316369 | 1) swapper-1 | * 33738.54 us | } /* ima_add_boot_aggregate */ Tracing `ima_calc_boot_aggregate_tfm()` (attached) shows that the first `tpm1_pcr_read()` takes 16 ms in `tpm_transmit()`. Is communicating with the TPM supposed to be that slow? In the last years, Linux decreased it’s boot time a lot, so do you see a way to move things out of the hot path and get `init_ima` well below 10 ms? (As systems get faster and faster, having systems with standard distributions to be up below two seconds after pressing the power button should be a reasonable goal (500 ms firmware (like coreboot) + 500 ms Linux kernel + 1 s user space). Kind regards, Paul [1]: https://salsa.debian.org/kernel-team/linux/-/commit/6e679322d7d98d30b4a8a3d1b659c899a6e9d4df --------------lcjbEMl588JUc0Q7wOMQsJw7 Content-Type: text/plain; charset=UTF-8; name="linux-5.17-rc4-ima_calc_boot_aggregate_tfm.trace.txt" Content-Disposition: attachment; filename="linux-5.17-rc4-ima_calc_boot_aggregate_tfm.trace.txt" Content-Transfer-Encoding: base64 IyB0cmFjZXI6IGZ1bmN0aW9uX2dyYXBoCiMKIyAgICAgVElNRSAgICAgICAgQ1BVICBUQVNL L1BJRCAgICAgICAgIERVUkFUSU9OICAgICAgICAgICAgICAgICAgRlVOQ1RJT04gQ0FMTFMK IyAgICAgIHwgICAgICAgICAgfCAgICAgfCAgICB8ICAgICAgICAgICB8ICAgfCAgICAgICAg ICAgICAgICAgICAgIHwgICB8ICAgfCAgIHwKICAgIDEuMjc4OTcwIHwgICAwKSAgIHN3YXBw ZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgaW1hX2NhbGNfYm9vdF9hZ2dyZWdhdGVfdGZt KCkgewogICAgMS4yNzg5NzEgfCAgIDApICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAg ICB8ICAgIHRwbV9wY3JfcmVhZCgpIHsKICAgIDEuMjc4OTcxIHwgICAwKSAgIHN3YXBwZXIt MSAgICB8ICAgICAgICAgICAgICAgfCAgICAgIHRwbV9maW5kX2dldF9vcHMoKSB7CiAgICAx LjI3ODk3MSB8ICAgMCkgICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg IHRwbV90cnlfZ2V0X29wcygpIHsKICAgIDEuMjc4OTcxIHwgICAwKSAgIHN3YXBwZXItMSAg ICB8ICAgMC4yMDEgdXMgICAgfCAgICAgICAgICBnZXRfZGV2aWNlKCk7CiAgICAxLjI3ODk3 MiB8ICAgMCkgICBzd2FwcGVyLTEgICAgfCAgIDAuMjY1IHVzICAgIHwgICAgICAgICAgZG93 bl9yZWFkKCk7CiAgICAxLjI3ODk3MiB8ICAgMCkgICBzd2FwcGVyLTEgICAgfCAgIDAuMjUy IHVzICAgIHwgICAgICAgICAgbXV0ZXhfbG9jaygpOwogICAgMS4yNzg5NzIgfCAgIDApICAg c3dhcHBlci0xICAgIHwgICA4LjI1NyB1cyAgICB8ICAgICAgICAgIHRwbV9jaGlwX3N0YXJ0 KCk7CiAgICAxLjI3ODk4MSB8ICAgMCkgICBzd2FwcGVyLTEgICAgfCAgIDkuNzk0IHVzICAg IHwgICAgICAgIH0gLyogdHBtX3RyeV9nZXRfb3BzICovCiAgICAxLjI3ODk4MSB8ICAgMCkg ICBzd2FwcGVyLTEgICAgfCArIDEwLjEyMCB1cyAgIHwgICAgICB9IC8qIHRwbV9maW5kX2dl dF9vcHMgKi8KICAgIDEuMjc4OTgxIHwgICAwKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAg ICAgICAgfCAgICAgIHRwbTFfcGNyX3JlYWQoKSB7CiAgICAxLjI3ODk4MSB8ICAgMCkgICBz d2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIF9fZ2V0X2ZyZWVfcGFnZXMo KSB7CiAgICAxLjI3ODk4MSB8ICAgMCkgICBzd2FwcGVyLTEgICAgfCAgIDAuODI1IHVzICAg IHwgICAgICAgICAgYWxsb2NfcGFnZXMoKTsKICAgIDEuMjc4OTgyIHwgICAwKSAgIHN3YXBw ZXItMSAgICB8ICAgMS4xMjIgdXMgICAgfCAgICAgICAgfSAvKiBfX2dldF9mcmVlX3BhZ2Vz ICovCiAgICAxLjI3ODk4MyB8ICAgMCkgICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAgICAg IHwgICAgICAgIHRwbV90cmFuc21pdF9jbWQoKSB7CiAgICAxLjI3ODk4MyB8ICAgMCkgICBz d2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgdHBtX3RyYW5zbWl0KCkg ewogICAgMS4yOTUxODMgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgKiAxNjE5OS4yNiB1cyB8 ICAgICAgICAgIH0gLyogdHBtX3RyYW5zbWl0ICovCiAgICAxLjI5NTE4MyB8ICAgMykgICBz d2FwcGVyLTEgICAgfCAqIDE2MjAwLjY5IHVzIHwgICAgICAgIH0gLyogdHBtX3RyYW5zbWl0 X2NtZCAqLwogICAgMS4yOTUxODQgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAg ICAgICB8ICAgICAgICBmcmVlX3BhZ2VzKCkgewogICAgMS4yOTUxODQgfCAgIDMpICAgc3dh cHBlci0xICAgIHwgICAxLjgyNyB1cyAgICB8ICAgICAgICAgIF9fZnJlZV9wYWdlcygpOwog ICAgMS4yOTUxODYgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAyLjM5NSB1cyAgICB8ICAg ICAgICB9IC8qIGZyZWVfcGFnZXMgKi8KICAgIDEuMjk1MTg2IHwgICAzKSAgIHN3YXBwZXIt MSAgICB8ICogMTYyMDUuMjQgdXMgfCAgICAgIH0gLyogdHBtMV9wY3JfcmVhZCAqLwogICAg MS4yOTUxODcgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAg dHBtX3B1dF9vcHMoKSB7CiAgICAxLjI5NTE4NyB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAg ICAgICAgICAgICAgIHwgICAgICAgIHRwbV9jaGlwX3N0b3AoKSB7CiAgICAxLjI5NTE4NyB8 ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuMzk4IHVzICAgIHwgICAgICAgICAgdHBtX3Jl bGlucXVpc2hfbG9jYWxpdHkoKTsKICAgIDEuMjk1MTg4IHwgICAzKSAgIHN3YXBwZXItMSAg ICB8ICAgMC4yNTYgdXMgICAgfCAgICAgICAgICB0cG1fdGlzX2Nsa3J1bl9lbmFibGUoKTsK ICAgIDEuMjk1MTg4IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMS40MjYgdXMgICAgfCAg ICAgICAgfSAvKiB0cG1fY2hpcF9zdG9wICovCiAgICAxLjI5NTE4OSB8ICAgMykgICBzd2Fw cGVyLTEgICAgfCAgIDAuMTczIHVzICAgIHwgICAgICAgIG11dGV4X3VubG9jaygpOwogICAg MS4yOTUxODkgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjE3NSB1cyAgICB8ICAgICAg ICB1cF9yZWFkKCk7CiAgICAxLjI5NTE4OSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAu MjM2IHVzICAgIHwgICAgICAgIHB1dF9kZXZpY2UoKTsKICAgIDEuMjk1MTkwIHwgICAzKSAg IHN3YXBwZXItMSAgICB8ICAgMy4wNTEgdXMgICAgfCAgICAgIH0gLyogdHBtX3B1dF9vcHMg Ki8KICAgIDEuMjk1MTkwIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICogMTYyMTkuMzAgdXMg fCAgICB9IC8qIHRwbV9wY3JfcmVhZCAqLwogICAgMS4yOTUxOTAgfCAgIDMpICAgc3dhcHBl ci0xICAgIHwgICAgICAgICAgICAgICB8ICAgIGNyeXB0b19zaGFzaF91cGRhdGUoKSB7CiAg ICAxLjI5NTE5MSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuMjAwIHVzICAgIHwgICAg ICBjcnlwdG9fc2hhMV91cGRhdGUoKTsKICAgIDEuMjk1MTkxIHwgICAzKSAgIHN3YXBwZXIt MSAgICB8ICAgMC42OTMgdXMgICAgfCAgICB9IC8qIGNyeXB0b19zaGFzaF91cGRhdGUgKi8K ICAgIDEuMjk1MTkxIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAg ICB0cG1fcGNyX3JlYWQoKSB7CiAgICAxLjI5NTE5MSB8ICAgMykgICBzd2FwcGVyLTEgICAg fCAgICAgICAgICAgICAgIHwgICAgICB0cG1fZmluZF9nZXRfb3BzKCkgewogICAgMS4yOTUx OTIgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICB0cG1f dHJ5X2dldF9vcHMoKSB7CiAgICAxLjI5NTE5MiB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAg IDAuMjQxIHVzICAgIHwgICAgICAgICAgZ2V0X2RldmljZSgpOwogICAgMS4yOTUxOTIgfCAg IDMpICAgc3dhcHBlci0xICAgIHwgICAwLjI0NSB1cyAgICB8ICAgICAgICAgIGRvd25fcmVh ZCgpOwogICAgMS4yOTUxOTMgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjIzMiB1cyAg ICB8ICAgICAgICAgIG11dGV4X2xvY2soKTsKICAgIDEuMjk1MTkzIHwgICAzKSAgIHN3YXBw ZXItMSAgICB8ICAgOC4xODEgdXMgICAgfCAgICAgICAgICB0cG1fY2hpcF9zdGFydCgpOwog ICAgMS4yOTUyMDEgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICA5Ljg5MCB1cyAgICB8ICAg ICAgICB9IC8qIHRwbV90cnlfZ2V0X29wcyAqLwogICAgMS4yOTUyMDIgfCAgIDMpICAgc3dh cHBlci0xICAgIHwgKyAxMC4yMTcgdXMgICB8ICAgICAgfSAvKiB0cG1fZmluZF9nZXRfb3Bz ICovCiAgICAxLjI5NTIwMiB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAgICAg IHwgICAgICB0cG0xX3Bjcl9yZWFkKCkgewogICAgMS4yOTUyMDIgfCAgIDMpICAgc3dhcHBl ci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICBfX2dldF9mcmVlX3BhZ2VzKCkgewog ICAgMS4yOTUyMDIgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAyLjEwOCB1cyAgICB8ICAg ICAgICAgIGFsbG9jX3BhZ2VzKCk7CiAgICAxLjI5NTIwNSB8ICAgMykgICBzd2FwcGVyLTEg ICAgfCAgIDIuNTEyIHVzICAgIHwgICAgICAgIH0gLyogX19nZXRfZnJlZV9wYWdlcyAqLwog ICAgMS4yOTUyMDUgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAg ICAgICB0cG1fdHJhbnNtaXRfY21kKCkgewogICAgMS4yOTUyMDUgfCAgIDMpICAgc3dhcHBl ci0xICAgIHwgIyAxMTg2LjE2MCB1cyB8ICAgICAgICAgIHRwbV90cmFuc21pdCgpOwogICAg MS4yOTYzOTIgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgIyAxMTg3LjU1MiB1cyB8ICAgICAg ICB9IC8qIHRwbV90cmFuc21pdF9jbWQgKi8KICAgIDEuMjk2MzkzIHwgICAzKSAgIHN3YXBw ZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgZnJlZV9wYWdlcygpIHsKICAgIDEu Mjk2MzkzIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMS42MTUgdXMgICAgfCAgICAgICAg ICBfX2ZyZWVfcGFnZXMoKTsKICAgIDEuMjk2Mzk1IHwgICAzKSAgIHN3YXBwZXItMSAgICB8 ICAgMi4wOTAgdXMgICAgfCAgICAgICAgfSAvKiBmcmVlX3BhZ2VzICovCiAgICAxLjI5NjM5 NSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAjIDExOTMuMTI2IHVzIHwgICAgICB9IC8qIHRw bTFfcGNyX3JlYWQgKi8KICAgIDEuMjk2Mzk1IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAg ICAgICAgICAgICAgfCAgICAgIHRwbV9wdXRfb3BzKCkgewogICAgMS4yOTYzOTYgfCAgIDMp ICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICB0cG1fY2hpcF9zdG9w KCkgewogICAgMS4yOTYzOTYgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjM5NCB1cyAg ICB8ICAgICAgICAgIHRwbV9yZWxpbnF1aXNoX2xvY2FsaXR5KCk7CiAgICAxLjI5NjM5NiB8 ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuMjQ5IHVzICAgIHwgICAgICAgICAgdHBtX3Rp c19jbGtydW5fZW5hYmxlKCk7CiAgICAxLjI5NjM5NyB8ICAgMykgICBzd2FwcGVyLTEgICAg fCAgIDEuMzM4IHVzICAgIHwgICAgICAgIH0gLyogdHBtX2NoaXBfc3RvcCAqLwogICAgMS4y OTYzOTcgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjE2OCB1cyAgICB8ICAgICAgICBt dXRleF91bmxvY2soKTsKICAgIDEuMjk2Mzk3IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAg MC4xNjMgdXMgICAgfCAgICAgICAgdXBfcmVhZCgpOwogICAgMS4yOTYzOTggfCAgIDMpICAg c3dhcHBlci0xICAgIHwgICAwLjI0MSB1cyAgICB8ICAgICAgICBwdXRfZGV2aWNlKCk7CiAg ICAxLjI5NjM5OCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDIuOTk2IHVzICAgIHwgICAg ICB9IC8qIHRwbV9wdXRfb3BzICovCiAgICAxLjI5NjM5OCB8ICAgMykgICBzd2FwcGVyLTEg ICAgfCAjIDEyMDcuMjYyIHVzIHwgICAgfSAvKiB0cG1fcGNyX3JlYWQgKi8KICAgIDEuMjk2 Mzk5IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICBjcnlwdG9f c2hhc2hfdXBkYXRlKCkgewogICAgMS4yOTYzOTkgfCAgIDMpICAgc3dhcHBlci0xICAgIHwg ICAwLjE4OSB1cyAgICB8ICAgICAgY3J5cHRvX3NoYTFfdXBkYXRlKCk7CiAgICAxLjI5NjQw MCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuOTE5IHVzICAgIHwgICAgfSAvKiBjcnlw dG9fc2hhc2hfdXBkYXRlICovCiAgICAxLjI5NjQwMCB8ICAgMykgICBzd2FwcGVyLTEgICAg fCAgICAgICAgICAgICAgIHwgICAgdHBtX3Bjcl9yZWFkKCkgewogICAgMS4yOTY0MDAgfCAg IDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgdHBtX2ZpbmRfZ2V0 X29wcygpIHsKICAgIDEuMjk2NDAwIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAg ICAgICAgfCAgICAgICAgdHBtX3RyeV9nZXRfb3BzKCkgewogICAgMS4yOTY0MDEgfCAgIDMp ICAgc3dhcHBlci0xICAgIHwgICAwLjIzOSB1cyAgICB8ICAgICAgICAgIGdldF9kZXZpY2Uo KTsKICAgIDEuMjk2NDAxIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMC4yNDMgdXMgICAg fCAgICAgICAgICBkb3duX3JlYWQoKTsKICAgIDEuMjk2NDAyIHwgICAzKSAgIHN3YXBwZXIt MSAgICB8ICAgMC4yMjggdXMgICAgfCAgICAgICAgICBtdXRleF9sb2NrKCk7CiAgICAxLjI5 NjQwMiB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDcuOTM5IHVzICAgIHwgICAgICAgICAg dHBtX2NoaXBfc3RhcnQoKTsKICAgIDEuMjk2NDEwIHwgICAzKSAgIHN3YXBwZXItMSAgICB8 ICAgOS42NTAgdXMgICAgfCAgICAgICAgfSAvKiB0cG1fdHJ5X2dldF9vcHMgKi8KICAgIDEu Mjk2NDEwIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgOS45NzUgdXMgICAgfCAgICAgIH0g LyogdHBtX2ZpbmRfZ2V0X29wcyAqLwogICAgMS4yOTY0MTEgfCAgIDMpICAgc3dhcHBlci0x ICAgIHwgICAgICAgICAgICAgICB8ICAgICAgdHBtMV9wY3JfcmVhZCgpIHsKICAgIDEuMjk2 NDExIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgX19n ZXRfZnJlZV9wYWdlcygpIHsKICAgIDEuMjk2NDExIHwgICAzKSAgIHN3YXBwZXItMSAgICB8 ICAgMi40NjAgdXMgICAgfCAgICAgICAgICBhbGxvY19wYWdlcygpOwogICAgMS4yOTY0MTQg fCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAyLjg2NyB1cyAgICB8ICAgICAgICB9IC8qIF9f Z2V0X2ZyZWVfcGFnZXMgKi8KICAgIDEuMjk2NDE0IHwgICAzKSAgIHN3YXBwZXItMSAgICB8 ICAgICAgICAgICAgICAgfCAgICAgICAgdHBtX3RyYW5zbWl0X2NtZCgpIHsKICAgIDEuMjk2 NDE0IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICMgMTE4Ny45NjMgdXMgfCAgICAgICAgICB0 cG1fdHJhbnNtaXQoKTsKICAgIDEuMjk3NjAzIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICMg MTE4OS4zMTkgdXMgfCAgICAgICAgfSAvKiB0cG1fdHJhbnNtaXRfY21kICovCiAgICAxLjI5 NzYwNCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIGZy ZWVfcGFnZXMoKSB7CiAgICAxLjI5NzYwNCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDEu NjEyIHVzICAgIHwgICAgICAgICAgX19mcmVlX3BhZ2VzKCk7CiAgICAxLjI5NzYwNiB8ICAg MykgICBzd2FwcGVyLTEgICAgfCAgIDIuMTE0IHVzICAgIHwgICAgICAgIH0gLyogZnJlZV9w YWdlcyAqLwogICAgMS4yOTc2MDYgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgIyAxMTk1LjI5 MSB1cyB8ICAgICAgfSAvKiB0cG0xX3Bjcl9yZWFkICovCiAgICAxLjI5NzYwNiB8ICAgMykg ICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICB0cG1fcHV0X29wcygpIHsK ICAgIDEuMjk3NjA2IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAg ICAgICAgdHBtX2NoaXBfc3RvcCgpIHsKICAgIDEuMjk3NjA3IHwgICAzKSAgIHN3YXBwZXIt MSAgICB8ICAgMC40MDcgdXMgICAgfCAgICAgICAgICB0cG1fcmVsaW5xdWlzaF9sb2NhbGl0 eSgpOwogICAgMS4yOTc2MDcgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjI1NCB1cyAg ICB8ICAgICAgICAgIHRwbV90aXNfY2xrcnVuX2VuYWJsZSgpOwogICAgMS4yOTc2MDggfCAg IDMpICAgc3dhcHBlci0xICAgIHwgICAxLjM1NCB1cyAgICB8ICAgICAgICB9IC8qIHRwbV9j aGlwX3N0b3AgKi8KICAgIDEuMjk3NjA4IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMC4x NzggdXMgICAgfCAgICAgICAgbXV0ZXhfdW5sb2NrKCk7CiAgICAxLjI5NzYwOCB8ICAgMykg ICBzd2FwcGVyLTEgICAgfCAgIDAuMTU3IHVzICAgIHwgICAgICAgIHVwX3JlYWQoKTsKICAg IDEuMjk3NjA5IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMC4yMzUgdXMgICAgfCAgICAg ICAgcHV0X2RldmljZSgpOwogICAgMS4yOTc2MDkgfCAgIDMpICAgc3dhcHBlci0xICAgIHwg ICAyLjk3MyB1cyAgICB8ICAgICAgfSAvKiB0cG1fcHV0X29wcyAqLwogICAgMS4yOTc2MDkg fCAgIDMpICAgc3dhcHBlci0xICAgIHwgIyAxMjA5LjM1MCB1cyB8ICAgIH0gLyogdHBtX3Bj cl9yZWFkICovCiAgICAxLjI5NzYxMCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAgICAg ICAgICAgIHwgICAgY3J5cHRvX3NoYXNoX3VwZGF0ZSgpIHsKICAgIDEuMjk3NjEwIHwgICAz KSAgIHN3YXBwZXItMSAgICB8ICAgMC4xODYgdXMgICAgfCAgICAgIGNyeXB0b19zaGExX3Vw ZGF0ZSgpOwogICAgMS4yOTc2MTEgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjkxOSB1 cyAgICB8ICAgIH0gLyogY3J5cHRvX3NoYXNoX3VwZGF0ZSAqLwogICAgMS4yOTc2MTEgfCAg IDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgIHRwbV9wY3JfcmVhZCgp IHsKICAgIDEuMjk3NjExIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAg fCAgICAgIHRwbV9maW5kX2dldF9vcHMoKSB7CiAgICAxLjI5NzYxMiB8ICAgMykgICBzd2Fw cGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHRwbV90cnlfZ2V0X29wcygpIHsK ICAgIDEuMjk3NjEyIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMC4yMzggdXMgICAgfCAg ICAgICAgICBnZXRfZGV2aWNlKCk7CiAgICAxLjI5NzYxMiB8ICAgMykgICBzd2FwcGVyLTEg ICAgfCAgIDAuMjQxIHVzICAgIHwgICAgICAgICAgZG93bl9yZWFkKCk7CiAgICAxLjI5NzYx MyB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuMjMxIHVzICAgIHwgICAgICAgICAgbXV0 ZXhfbG9jaygpOwogICAgMS4yOTc2MTMgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICA3Ljg3 MiB1cyAgICB8ICAgICAgICAgIHRwbV9jaGlwX3N0YXJ0KCk7CiAgICAxLjI5NzYyMSB8ICAg MykgICBzd2FwcGVyLTEgICAgfCAgIDkuNjExIHVzICAgIHwgICAgICAgIH0gLyogdHBtX3Ry eV9nZXRfb3BzICovCiAgICAxLjI5NzYyMSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDku OTUzIHVzICAgIHwgICAgICB9IC8qIHRwbV9maW5kX2dldF9vcHMgKi8KICAgIDEuMjk3NjIy IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICAgIHRwbTFfcGNy X3JlYWQoKSB7CiAgICAxLjI5NzYyMiB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAgICAg ICAgICAgIHwgICAgICAgIF9fZ2V0X2ZyZWVfcGFnZXMoKSB7CiAgICAxLjI5NzYyMiB8ICAg MykgICBzd2FwcGVyLTEgICAgfCAgIDIuMDg4IHVzICAgIHwgICAgICAgICAgYWxsb2NfcGFn ZXMoKTsKICAgIDEuMjk3NjI0IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMi40OTkgdXMg ICAgfCAgICAgICAgfSAvKiBfX2dldF9mcmVlX3BhZ2VzICovCiAgICAxLjI5NzYyNSB8ICAg MykgICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHRwbV90cmFuc21p dF9jbWQoKSB7CiAgICAxLjI5NzYyNSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAjIDExODYu OTMyIHVzIHwgICAgICAgICAgdHBtX3RyYW5zbWl0KCk7CiAgICAxLjI5ODgxMyB8ICAgMykg ICBzd2FwcGVyLTEgICAgfCAjIDExODguMjY2IHVzIHwgICAgICAgIH0gLyogdHBtX3RyYW5z bWl0X2NtZCAqLwogICAgMS4yOTg4MTMgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAg ICAgICAgICB8ICAgICAgICBmcmVlX3BhZ2VzKCkgewogICAgMS4yOTg4MTQgfCAgIDMpICAg c3dhcHBlci0xICAgIHwgICAxLjYwNSB1cyAgICB8ICAgICAgICAgIF9fZnJlZV9wYWdlcygp OwogICAgMS4yOTg4MTUgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAyLjA4NiB1cyAgICB8 ICAgICAgICB9IC8qIGZyZWVfcGFnZXMgKi8KICAgIDEuMjk4ODE1IHwgICAzKSAgIHN3YXBw ZXItMSAgICB8ICMgMTE5My44MTcgdXMgfCAgICAgIH0gLyogdHBtMV9wY3JfcmVhZCAqLwog ICAgMS4yOTg4MTYgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAg ICAgdHBtX3B1dF9vcHMoKSB7CiAgICAxLjI5ODgxNiB8ICAgMykgICBzd2FwcGVyLTEgICAg fCAgICAgICAgICAgICAgIHwgICAgICAgIHRwbV9jaGlwX3N0b3AoKSB7CiAgICAxLjI5ODgx NiB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuNDE1IHVzICAgIHwgICAgICAgICAgdHBt X3JlbGlucXVpc2hfbG9jYWxpdHkoKTsKICAgIDEuMjk4ODE3IHwgICAzKSAgIHN3YXBwZXIt MSAgICB8ICAgMC4yNjQgdXMgICAgfCAgICAgICAgICB0cG1fdGlzX2Nsa3J1bl9lbmFibGUo KTsKICAgIDEuMjk4ODE3IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMS4zNjQgdXMgICAg fCAgICAgICAgfSAvKiB0cG1fY2hpcF9zdG9wICovCiAgICAxLjI5ODgxOCB8ICAgMykgICBz d2FwcGVyLTEgICAgfCAgIDAuMTcwIHVzICAgIHwgICAgICAgIG11dGV4X3VubG9jaygpOwog ICAgMS4yOTg4MTggfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjE1NyB1cyAgICB8ICAg ICAgICB1cF9yZWFkKCk7CiAgICAxLjI5ODgxOCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAg IDAuMjY0IHVzICAgIHwgICAgICAgIHB1dF9kZXZpY2UoKTsKICAgIDEuMjk4ODE5IHwgICAz KSAgIHN3YXBwZXItMSAgICB8ICAgMy4wMDcgdXMgICAgfCAgICAgIH0gLyogdHBtX3B1dF9v cHMgKi8KICAgIDEuMjk4ODE5IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICMgMTIwNy45OTcg dXMgfCAgICB9IC8qIHRwbV9wY3JfcmVhZCAqLwogICAgMS4yOTg4MjAgfCAgIDMpICAgc3dh cHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgIGNyeXB0b19zaGFzaF91cGRhdGUoKSB7 CiAgICAxLjI5ODgyMCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuNzc2IHVzICAgIHwg ICAgICBjcnlwdG9fc2hhMV91cGRhdGUoKTsKICAgIDEuMjk4ODIxIHwgICAzKSAgIHN3YXBw ZXItMSAgICB8ICAgMS41NjQgdXMgICAgfCAgICB9IC8qIGNyeXB0b19zaGFzaF91cGRhdGUg Ki8KICAgIDEuMjk4ODIxIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAg fCAgICB0cG1fcGNyX3JlYWQoKSB7CiAgICAxLjI5ODgyMSB8ICAgMykgICBzd2FwcGVyLTEg ICAgfCAgICAgICAgICAgICAgIHwgICAgICB0cG1fZmluZF9nZXRfb3BzKCkgewogICAgMS4y OTg4MjEgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICB0 cG1fdHJ5X2dldF9vcHMoKSB7CiAgICAxLjI5ODgyMiB8ICAgMykgICBzd2FwcGVyLTEgICAg fCAgIDAuMjM5IHVzICAgIHwgICAgICAgICAgZ2V0X2RldmljZSgpOwogICAgMS4yOTg4MjIg fCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjI1MiB1cyAgICB8ICAgICAgICAgIGRvd25f cmVhZCgpOwogICAgMS4yOTg4MjMgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjIyOCB1 cyAgICB8ICAgICAgICAgIG11dGV4X2xvY2soKTsKICAgIDEuMjk4ODIzIHwgICAzKSAgIHN3 YXBwZXItMSAgICB8ICAgNy44NzIgdXMgICAgfCAgICAgICAgICB0cG1fY2hpcF9zdGFydCgp OwogICAgMS4yOTg4MzEgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICA5LjU3NiB1cyAgICB8 ICAgICAgICB9IC8qIHRwbV90cnlfZ2V0X29wcyAqLwogICAgMS4yOTg4MzEgfCAgIDMpICAg c3dhcHBlci0xICAgIHwgICA5LjkwMCB1cyAgICB8ICAgICAgfSAvKiB0cG1fZmluZF9nZXRf b3BzICovCiAgICAxLjI5ODgzMSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAg ICAgIHwgICAgICB0cG0xX3Bjcl9yZWFkKCkgewogICAgMS4yOTg4MzIgfCAgIDMpICAgc3dh cHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICBfX2dldF9mcmVlX3BhZ2VzKCkg ewogICAgMS4yOTg4MzIgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAyLjI1NyB1cyAgICB8 ICAgICAgICAgIGFsbG9jX3BhZ2VzKCk7CiAgICAxLjI5ODgzNCB8ICAgMykgICBzd2FwcGVy LTEgICAgfCAgIDIuNjc0IHVzICAgIHwgICAgICAgIH0gLyogX19nZXRfZnJlZV9wYWdlcyAq LwogICAgMS4yOTg4MzUgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8 ICAgICAgICB0cG1fdHJhbnNtaXRfY21kKCkgewogICAgMS4yOTg4MzUgfCAgIDMpICAgc3dh cHBlci0xICAgIHwgIyAxMTg2LjEzOCB1cyB8ICAgICAgICAgIHRwbV90cmFuc21pdCgpOwog ICAgMS4zMDAwMjIgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgIyAxMTg3LjQ5NCB1cyB8ICAg ICAgICB9IC8qIHRwbV90cmFuc21pdF9jbWQgKi8KICAgIDEuMzAwMDIyIHwgICAzKSAgIHN3 YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgZnJlZV9wYWdlcygpIHsKICAg IDEuMzAwMDIzIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMS42MTkgdXMgICAgfCAgICAg ICAgICBfX2ZyZWVfcGFnZXMoKTsKICAgIDEuMzAwMDI1IHwgICAzKSAgIHN3YXBwZXItMSAg ICB8ICAgMi4wOTkgdXMgICAgfCAgICAgICAgfSAvKiBmcmVlX3BhZ2VzICovCiAgICAxLjMw MDAyNSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAjIDExOTMuMjU0IHVzIHwgICAgICB9IC8q IHRwbTFfcGNyX3JlYWQgKi8KICAgIDEuMzAwMDI1IHwgICAzKSAgIHN3YXBwZXItMSAgICB8 ICAgICAgICAgICAgICAgfCAgICAgIHRwbV9wdXRfb3BzKCkgewogICAgMS4zMDAwMjUgfCAg IDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICB0cG1fY2hpcF9z dG9wKCkgewogICAgMS4zMDAwMjYgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjQwMiB1 cyAgICB8ICAgICAgICAgIHRwbV9yZWxpbnF1aXNoX2xvY2FsaXR5KCk7CiAgICAxLjMwMDAy NiB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuMjQ1IHVzICAgIHwgICAgICAgICAgdHBt X3Rpc19jbGtydW5fZW5hYmxlKCk7CiAgICAxLjMwMDAyNyB8ICAgMykgICBzd2FwcGVyLTEg ICAgfCAgIDEuMzM5IHVzICAgIHwgICAgICAgIH0gLyogdHBtX2NoaXBfc3RvcCAqLwogICAg MS4zMDAwMjcgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjE3MCB1cyAgICB8ICAgICAg ICBtdXRleF91bmxvY2soKTsKICAgIDEuMzAwMDI3IHwgICAzKSAgIHN3YXBwZXItMSAgICB8 ICAgMC4xNTYgdXMgICAgfCAgICAgICAgdXBfcmVhZCgpOwogICAgMS4zMDAwMjggfCAgIDMp ICAgc3dhcHBlci0xICAgIHwgICAwLjIzNiB1cyAgICB8ICAgICAgICBwdXRfZGV2aWNlKCk7 CiAgICAxLjMwMDAyOCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDIuOTI3IHVzICAgIHwg ICAgICB9IC8qIHRwbV9wdXRfb3BzICovCiAgICAxLjMwMDAyOCB8ICAgMykgICBzd2FwcGVy LTEgICAgfCAjIDEyMDYuOTkzIHVzIHwgICAgfSAvKiB0cG1fcGNyX3JlYWQgKi8KICAgIDEu MzAwMDI4IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICBjcnlw dG9fc2hhc2hfdXBkYXRlKCkgewogICAgMS4zMDAwMjkgfCAgIDMpICAgc3dhcHBlci0xICAg IHwgICAwLjE5MSB1cyAgICB8ICAgICAgY3J5cHRvX3NoYTFfdXBkYXRlKCk7CiAgICAxLjMw MDAyOSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuNjg4IHVzICAgIHwgICAgfSAvKiBj cnlwdG9fc2hhc2hfdXBkYXRlICovCiAgICAxLjMwMDAyOSB8ICAgMykgICBzd2FwcGVyLTEg ICAgfCAgICAgICAgICAgICAgIHwgICAgdHBtX3Bjcl9yZWFkKCkgewogICAgMS4zMDAwMzAg fCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgdHBtX2ZpbmRf Z2V0X29wcygpIHsKICAgIDEuMzAwMDMwIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAg ICAgICAgICAgfCAgICAgICAgdHBtX3RyeV9nZXRfb3BzKCkgewogICAgMS4zMDAwMzAgfCAg IDMpICAgc3dhcHBlci0xICAgIHwgICAwLjIzOSB1cyAgICB8ICAgICAgICAgIGdldF9kZXZp Y2UoKTsKICAgIDEuMzAwMDMxIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMC4yNDggdXMg ICAgfCAgICAgICAgICBkb3duX3JlYWQoKTsKICAgIDEuMzAwMDMxIHwgICAzKSAgIHN3YXBw ZXItMSAgICB8ICAgMC4yMzMgdXMgICAgfCAgICAgICAgICBtdXRleF9sb2NrKCk7CiAgICAx LjMwMDAzMSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDguMTIyIHVzICAgIHwgICAgICAg ICAgdHBtX2NoaXBfc3RhcnQoKTsKICAgIDEuMzAwMDQwIHwgICAzKSAgIHN3YXBwZXItMSAg ICB8ICAgOS45NjIgdXMgICAgfCAgICAgICAgfSAvKiB0cG1fdHJ5X2dldF9vcHMgKi8KICAg IDEuMzAwMDQwIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICsgMTAuMjkyIHVzICAgfCAgICAg IH0gLyogdHBtX2ZpbmRfZ2V0X29wcyAqLwogICAgMS4zMDAwNDAgfCAgIDMpICAgc3dhcHBl ci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgdHBtMV9wY3JfcmVhZCgpIHsKICAgIDEu MzAwMDQxIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAg X19nZXRfZnJlZV9wYWdlcygpIHsKICAgIDEuMzAwMDQxIHwgICAzKSAgIHN3YXBwZXItMSAg ICB8ICAgMi40MDcgdXMgICAgfCAgICAgICAgICBhbGxvY19wYWdlcygpOwogICAgMS4zMDAw NDMgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAyLjgxMyB1cyAgICB8ICAgICAgICB9IC8q IF9fZ2V0X2ZyZWVfcGFnZXMgKi8KICAgIDEuMzAwMDQ0IHwgICAzKSAgIHN3YXBwZXItMSAg ICB8ICAgICAgICAgICAgICAgfCAgICAgICAgdHBtX3RyYW5zbWl0X2NtZCgpIHsKICAgIDEu MzAwMDQ0IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICMgMTE4Ni42NDMgdXMgfCAgICAgICAg ICB0cG1fdHJhbnNtaXQoKTsKICAgIDEuMzAxMjMyIHwgICAzKSAgIHN3YXBwZXItMSAgICB8 ICMgMTE4OC4wMzEgdXMgfCAgICAgICAgfSAvKiB0cG1fdHJhbnNtaXRfY21kICovCiAgICAx LjMwMTIzMiB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg IGZyZWVfcGFnZXMoKSB7CiAgICAxLjMwMTIzMiB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAg IDEuNjA0IHVzICAgIHwgICAgICAgICAgX19mcmVlX3BhZ2VzKCk7CiAgICAxLjMwMTIzNCB8 ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDIuMDk1IHVzICAgIHwgICAgICAgIH0gLyogZnJl ZV9wYWdlcyAqLwogICAgMS4zMDEyMzQgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgIyAxMTkz LjkwOSB1cyB8ICAgICAgfSAvKiB0cG0xX3Bjcl9yZWFkICovCiAgICAxLjMwMTIzNCB8ICAg MykgICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICB0cG1fcHV0X29wcygp IHsKICAgIDEuMzAxMjM1IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAg fCAgICAgICAgdHBtX2NoaXBfc3RvcCgpIHsKICAgIDEuMzAxMjM1IHwgICAzKSAgIHN3YXBw ZXItMSAgICB8ICAgMC40MDIgdXMgICAgfCAgICAgICAgICB0cG1fcmVsaW5xdWlzaF9sb2Nh bGl0eSgpOwogICAgMS4zMDEyMzYgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjI0NyB1 cyAgICB8ICAgICAgICAgIHRwbV90aXNfY2xrcnVuX2VuYWJsZSgpOwogICAgMS4zMDEyMzYg fCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAxLjYyMiB1cyAgICB8ICAgICAgICB9IC8qIHRw bV9jaGlwX3N0b3AgKi8KICAgIDEuMzAxMjM3IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAg MC4xNjYgdXMgICAgfCAgICAgICAgbXV0ZXhfdW5sb2NrKCk7CiAgICAxLjMwMTIzNyB8ICAg MykgICBzd2FwcGVyLTEgICAgfCAgIDAuMTY3IHVzICAgIHwgICAgICAgIHVwX3JlYWQoKTsK ICAgIDEuMzAxMjM3IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMC4yMzUgdXMgICAgfCAg ICAgICAgcHV0X2RldmljZSgpOwogICAgMS4zMDEyMzggfCAgIDMpICAgc3dhcHBlci0xICAg IHwgICAzLjIzNyB1cyAgICB8ICAgICAgfSAvKiB0cG1fcHV0X29wcyAqLwogICAgMS4zMDEy MzggfCAgIDMpICAgc3dhcHBlci0xICAgIHwgIyAxMjA4LjU2NCB1cyB8ICAgIH0gLyogdHBt X3Bjcl9yZWFkICovCiAgICAxLjMwMTIzOSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAg ICAgICAgICAgIHwgICAgY3J5cHRvX3NoYXNoX3VwZGF0ZSgpIHsKICAgIDEuMzAxMjM5IHwg ICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMC4xODUgdXMgICAgfCAgICAgIGNyeXB0b19zaGEx X3VwZGF0ZSgpOwogICAgMS4zMDEyMzkgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjkz MyB1cyAgICB8ICAgIH0gLyogY3J5cHRvX3NoYXNoX3VwZGF0ZSAqLwogICAgMS4zMDEyMzkg fCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgIHRwbV9wY3JfcmVh ZCgpIHsKICAgIDEuMzAxMjQwIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAg ICAgfCAgICAgIHRwbV9maW5kX2dldF9vcHMoKSB7CiAgICAxLjMwMTI0MCB8ICAgMykgICBz d2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHRwbV90cnlfZ2V0X29wcygp IHsKICAgIDEuMzAxMjQwIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMC4yNDAgdXMgICAg fCAgICAgICAgICBnZXRfZGV2aWNlKCk7CiAgICAxLjMwMTI0MSB8ICAgMykgICBzd2FwcGVy LTEgICAgfCAgIDAuMjQ3IHVzICAgIHwgICAgICAgICAgZG93bl9yZWFkKCk7CiAgICAxLjMw MTI0MSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuMjMzIHVzICAgIHwgICAgICAgICAg bXV0ZXhfbG9jaygpOwogICAgMS4zMDEyNDIgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICA3 LjgyNCB1cyAgICB8ICAgICAgICAgIHRwbV9jaGlwX3N0YXJ0KCk7CiAgICAxLjMwMTI1MCB8 ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDkuNzI2IHVzICAgIHwgICAgICAgIH0gLyogdHBt X3RyeV9nZXRfb3BzICovCiAgICAxLjMwMTI1MCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAr IDEwLjA1NCB1cyAgIHwgICAgICB9IC8qIHRwbV9maW5kX2dldF9vcHMgKi8KICAgIDEuMzAx MjUwIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICAgIHRwbTFf cGNyX3JlYWQoKSB7CiAgICAxLjMwMTI1MCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAg ICAgICAgICAgIHwgICAgICAgIF9fZ2V0X2ZyZWVfcGFnZXMoKSB7CiAgICAxLjMwMTI1MCB8 ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDIuMzQxIHVzICAgIHwgICAgICAgICAgYWxsb2Nf cGFnZXMoKTsKICAgIDEuMzAxMjUzIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMi43NTQg dXMgICAgfCAgICAgICAgfSAvKiBfX2dldF9mcmVlX3BhZ2VzICovCiAgICAxLjMwMTI1MyB8 ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHRwbV90cmFu c21pdF9jbWQoKSB7CiAgICAxLjMwMTI1MyB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAjIDEx NjMuODQwIHVzIHwgICAgICAgICAgdHBtX3RyYW5zbWl0KCk7CiAgICAxLjMwMjQxOCB8ICAg MykgICBzd2FwcGVyLTEgICAgfCAjIDExNjQuNjM5IHVzIHwgICAgICAgIH0gLyogdHBtX3Ry YW5zbWl0X2NtZCAqLwogICAgMS4zMDI0MTggfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAg ICAgICAgICAgICB8ICAgICAgICBmcmVlX3BhZ2VzKCkgewogICAgMS4zMDI0MTggfCAgIDMp ICAgc3dhcHBlci0xICAgIHwgICAwLjcxNSB1cyAgICB8ICAgICAgICAgIF9fZnJlZV9wYWdl cygpOwogICAgMS4zMDI0MTkgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAxLjE1NCB1cyAg ICB8ICAgICAgICB9IC8qIGZyZWVfcGFnZXMgKi8KICAgIDEuMzAyNDE5IHwgICAzKSAgIHN3 YXBwZXItMSAgICB8ICMgMTE2OS4zNDggdXMgfCAgICAgIH0gLyogdHBtMV9wY3JfcmVhZCAq LwogICAgMS4zMDI0MjAgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8 ICAgICAgdHBtX3B1dF9vcHMoKSB7CiAgICAxLjMwMjQyMCB8ICAgMykgICBzd2FwcGVyLTEg ICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHRwbV9jaGlwX3N0b3AoKSB7CiAgICAxLjMw MjQyMCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuMzMxIHVzICAgIHwgICAgICAgICAg dHBtX3JlbGlucXVpc2hfbG9jYWxpdHkoKTsKICAgIDEuMzAyNDIwIHwgICAzKSAgIHN3YXBw ZXItMSAgICB8ICAgMC4xODUgdXMgICAgfCAgICAgICAgICB0cG1fdGlzX2Nsa3J1bl9lbmFi bGUoKTsKICAgIDEuMzAyNDIxIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMS4wOTQgdXMg ICAgfCAgICAgICAgfSAvKiB0cG1fY2hpcF9zdG9wICovCiAgICAxLjMwMjQyMSB8ICAgMykg ICBzd2FwcGVyLTEgICAgfCAgIDAuMTgwIHVzICAgIHwgICAgICAgIG11dGV4X3VubG9jaygp OwogICAgMS4zMDI0MjEgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjE1OSB1cyAgICB8 ICAgICAgICB1cF9yZWFkKCk7CiAgICAxLjMwMjQyMiB8ICAgMykgICBzd2FwcGVyLTEgICAg fCAgIDAuMTc3IHVzICAgIHwgICAgICAgIHB1dF9kZXZpY2UoKTsKICAgIDEuMzAyNDIyIHwg ICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMi40OTMgdXMgICAgfCAgICAgIH0gLyogdHBtX3B1 dF9vcHMgKi8KICAgIDEuMzAyNDIyIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICMgMTE4Mi43 MTYgdXMgfCAgICB9IC8qIHRwbV9wY3JfcmVhZCAqLwogICAgMS4zMDI0MjIgfCAgIDMpICAg c3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgIGNyeXB0b19zaGFzaF91cGRhdGUo KSB7CiAgICAxLjMwMjQyMyB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuNzUxIHVzICAg IHwgICAgICBjcnlwdG9fc2hhMV91cGRhdGUoKTsKICAgIDEuMzAyNDIzIHwgICAzKSAgIHN3 YXBwZXItMSAgICB8ICAgMS4xMDMgdXMgICAgfCAgICB9IC8qIGNyeXB0b19zaGFzaF91cGRh dGUgKi8KICAgIDEuMzAyNDI0IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAg ICAgfCAgICB0cG1fcGNyX3JlYWQoKSB7CiAgICAxLjMwMjQyNCB8ICAgMykgICBzd2FwcGVy LTEgICAgfCAgICAgICAgICAgICAgIHwgICAgICB0cG1fZmluZF9nZXRfb3BzKCkgewogICAg MS4zMDI0MjQgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAg ICB0cG1fdHJ5X2dldF9vcHMoKSB7CiAgICAxLjMwMjQyNCB8ICAgMykgICBzd2FwcGVyLTEg ICAgfCAgIDAuMTc4IHVzICAgIHwgICAgICAgICAgZ2V0X2RldmljZSgpOwogICAgMS4zMDI0 MjUgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjI1MCB1cyAgICB8ICAgICAgICAgIGRv d25fcmVhZCgpOwogICAgMS4zMDI0MjUgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjIz MiB1cyAgICB8ICAgICAgICAgIG11dGV4X2xvY2soKTsKICAgIDEuMzAyNDI1IHwgICAzKSAg IHN3YXBwZXItMSAgICB8ICAgNy44MDcgdXMgICAgfCAgICAgICAgICB0cG1fY2hpcF9zdGFy dCgpOwogICAgMS4zMDI0MzMgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICA5LjMzMyB1cyAg ICB8ICAgICAgICB9IC8qIHRwbV90cnlfZ2V0X29wcyAqLwogICAgMS4zMDI0MzMgfCAgIDMp ICAgc3dhcHBlci0xICAgIHwgICA5LjY1NiB1cyAgICB8ICAgICAgfSAvKiB0cG1fZmluZF9n ZXRfb3BzICovCiAgICAxLjMwMjQzNCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgICAgICAg ICAgICAgIHwgICAgICB0cG0xX3Bjcl9yZWFkKCkgewogICAgMS4zMDI0MzQgfCAgIDMpICAg c3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICBfX2dldF9mcmVlX3BhZ2Vz KCkgewogICAgMS4zMDI0MzQgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAxLjMxNCB1cyAg ICB8ICAgICAgICAgIGFsbG9jX3BhZ2VzKCk7CiAgICAxLjMwMjQzNiB8ICAgMykgICBzd2Fw cGVyLTEgICAgfCAgIDEuNjcyIHVzICAgIHwgICAgICAgIH0gLyogX19nZXRfZnJlZV9wYWdl cyAqLwogICAgMS4zMDI0MzYgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAg ICB8ICAgICAgICB0cG1fdHJhbnNtaXRfY21kKCkgewogICAgMS4zMDI0MzYgfCAgIDMpICAg c3dhcHBlci0xICAgIHwgIyAxMTg1LjA1NSB1cyB8ICAgICAgICAgIHRwbV90cmFuc21pdCgp OwogICAgMS4zMDM2MjIgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgIyAxMTg2LjQxMiB1cyB8 ICAgICAgICB9IC8qIHRwbV90cmFuc21pdF9jbWQgKi8KICAgIDEuMzAzNjIzIHwgICAzKSAg IHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgZnJlZV9wYWdlcygpIHsK ICAgIDEuMzAzNjIzIHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgMS42MjMgdXMgICAgfCAg ICAgICAgICBfX2ZyZWVfcGFnZXMoKTsKICAgIDEuMzAzNjI1IHwgICAzKSAgIHN3YXBwZXIt MSAgICB8ICAgMi4xODggdXMgICAgfCAgICAgICAgfSAvKiBmcmVlX3BhZ2VzICovCiAgICAx LjMwMzYyNSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAjIDExOTEuMTcwIHVzIHwgICAgICB9 IC8qIHRwbTFfcGNyX3JlYWQgKi8KICAgIDEuMzAzNjI1IHwgICAzKSAgIHN3YXBwZXItMSAg ICB8ICAgICAgICAgICAgICAgfCAgICAgIHRwbV9wdXRfb3BzKCkgewogICAgMS4zMDM2MjUg fCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICB0cG1fY2hp cF9zdG9wKCkgewogICAgMS4zMDM2MjYgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjM5 MSB1cyAgICB8ICAgICAgICAgIHRwbV9yZWxpbnF1aXNoX2xvY2FsaXR5KCk7CiAgICAxLjMw MzYyNiB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuMjYzIHVzICAgIHwgICAgICAgICAg dHBtX3Rpc19jbGtydW5fZW5hYmxlKCk7CiAgICAxLjMwMzYyNyB8ICAgMykgICBzd2FwcGVy LTEgICAgfCAgIDEuMzYwIHVzICAgIHwgICAgICAgIH0gLyogdHBtX2NoaXBfc3RvcCAqLwog ICAgMS4zMDM2MjcgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjE3MiB1cyAgICB8ICAg ICAgICBtdXRleF91bmxvY2soKTsKICAgIDEuMzAzNjI3IHwgICAzKSAgIHN3YXBwZXItMSAg ICB8ICAgMC4xNTkgdXMgICAgfCAgICAgICAgdXBfcmVhZCgpOwogICAgMS4zMDM2MjggfCAg IDMpICAgc3dhcHBlci0xICAgIHwgICAwLjIyOCB1cyAgICB8ICAgICAgICBwdXRfZGV2aWNl KCk7CiAgICAxLjMwMzYyOCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDIuOTU4IHVzICAg IHwgICAgICB9IC8qIHRwbV9wdXRfb3BzICovCiAgICAxLjMwMzYyOCB8ICAgMykgICBzd2Fw cGVyLTEgICAgfCAjIDEyMDQuNTgyIHVzIHwgICAgfSAvKiB0cG1fcGNyX3JlYWQgKi8KICAg IDEuMzAzNjI5IHwgICAzKSAgIHN3YXBwZXItMSAgICB8ICAgICAgICAgICAgICAgfCAgICBj cnlwdG9fc2hhc2hfdXBkYXRlKCkgewogICAgMS4zMDM2MjkgfCAgIDMpICAgc3dhcHBlci0x ICAgIHwgICAwLjE4MyB1cyAgICB8ICAgICAgY3J5cHRvX3NoYTFfdXBkYXRlKCk7CiAgICAx LjMwMzYzMCB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAgIDAuOTc0IHVzICAgIHwgICAgfSAv KiBjcnlwdG9fc2hhc2hfdXBkYXRlICovCiAgICAxLjMwMzYzMCB8ICAgMykgICBzd2FwcGVy LTEgICAgfCAgICAgICAgICAgICAgIHwgICAgY3J5cHRvX3NoYXNoX2ZpbmFsKCkgewogICAg MS4zMDM2MzAgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAwLjcyMCB1cyAgICB8ICAgICAg c2hhMV9maW5hbCgpOwogICAgMS4zMDM2MzEgfCAgIDMpICAgc3dhcHBlci0xICAgIHwgICAx LjE1NSB1cyAgICB8ICAgIH0gLyogY3J5cHRvX3NoYXNoX2ZpbmFsICovCiAgICAxLjMwMzYz MSB8ICAgMykgICBzd2FwcGVyLTEgICAgfCAqIDI0NjYxLjk0IHVzIHwgIH0gLyogaW1hX2Nh bGNfYm9vdF9hZ2dyZWdhdGVfdGZtICovCg== --------------lcjbEMl588JUc0Q7wOMQsJw7--