From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from azure-sdnproxy.icoremail.net (azure-sdnproxy.icoremail.net [207.46.229.174]) by sourceware.org (Postfix) with SMTP id 652B83858C66 for ; Mon, 6 Mar 2023 01:06:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 652B83858C66 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eswincomputing.com Received: from E0001792LT (unknown [113.200.72.66]) by app1 (Coremail) with SMTP id EwgMCgDHMpaGPAVkxzUDAA--.3059S2; Mon, 06 Mar 2023 09:06:15 +0800 (CST) Date: Mon, 6 Mar 2023 09:06:14 +0800 From: "Feng Wang" To: jiawei Cc: gcc-patches Subject: Re: Re: [PATCH] RISC-V: Optimize the MASK opt generation References: <3dea2b5d.ca8e.186a6ae5ae9.Coremail.jiawei@iscas.ac.cn>, <2023030317124502639214@eswincomputing.com> X-Priority: 3 X-GUID: 55622F37-9470-4A51-B842-5EB2A10E492B X-Has-Attach: no X-Mailer: Foxmail 7.2.15.80[cn] Mime-Version: 1.0 Message-ID: <2023030609061454430019@eswincomputing.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-CM-TRANSID:EwgMCgDHMpaGPAVkxzUDAA--.3059S2 X-Coremail-Antispam: 1UD129KBjvAXoW3Cr1kJr13tr4kJr1rJryrWFg_yoW8Cw47Jo WIgrs8t3WrXw4I9r48W34UJwn8J3WDCwnrJF4UArn3JFnYqF1qg34UKaykXay7JryxWFW5 JFnrJFyDZa47Jr15n29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UjIYCTnIWjp_UUUYO7k0a2IF6w4kM7kC6x804xWl1xkIjI8I6I8E6xAIw20EY4v2 0xvaj40_Wr0E3s1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7 IYx2IY67AKxVWDJVCq3wA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVWxJr0_GcWl84ACjcxK 6I8E87Iv67AKxVWxJr0_GcWl84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcx kEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6x8ErcxFaVAv8VW8 Jr1UJr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JM4xvF2IEb7IF0Fy264 kE64k0F24lc2xSY4AK67AK6w4l42xK82IYc2Ij64vIr41l42xK82IY6x8ErcxFaVAv8VW8 Jr1UJr1l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x 8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1Y6r17MIIYrxkI7VAKI48JMIIF0xvE 2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42 xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF 7I0E14v26r1j6r4UMVCEFcxC0VAYjxAxZFUvcSsGvfC2KfnxnUUI43ZEXa7IUnW8BUUUUU U== X-CM-SenderInfo: pzdqwwxhqjqvxvzl0uprps33xlqjhudrp/ X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: T24gMjAyMy0wMy0wMyAxNzoxMiDCoEZlbmcgV2FuZzx3YW5nZmVuZ0Blc3dpbmNvbXB1dGluZy5j b20+IHdyb3RlOgo+Cj5PbiAyMDIzLTAzLTAzIDE2OjU0IMKgamlhd2VpPGppYXdlaUBpc2Nhcy5h Yy5jbj4gd3JvdGU6Cj4+Cj4+VGhlIE1hc2sgZmxhZyBpbiB0aGUgc2luZ2xlIFRhcmdldFZhcmlh YmxlIGlzIG5vdCBlbm91Z2ggZHVlIHRvIG1vcmUKPj5hbmQgbW9yZSBleHRlbnNpb25zIHdlcmUg YWRkZWQuU28gSSBvcHRpbWl6ZSB0aGUgZGVmaW5hdGlvbiBvZiBNYXNrCj4+ZmxhZywgcGxlYXNl IHJlZmVyIHRvIHRoZSBiZWxvdyBjYXNlOgo+PlRoZXJlIGFyZSBzb21lIG5ldyBNQVNLIGZsYWdz IGZvciAndicgZXh0ZW5zaW9uKFpWTDMyQixaVkw2NEIsLi4uLFpWTDY1NTM2QiksCj4+YnV0IHRo ZXNlIE1BU0sgZmxhZ3MgY2FuJ3Qgc3RvcmUgaW50byB4X3RhcmdldF9mbGFncyxiZWNhdXNlIHRo ZSB0b3RhbCBudW1iZXIKPj5vZiBNQVNLIGZsYWdzIGV4Y2VlZCAzMi4gSW4gdGhpcyBwYXRjaCB3 ZSBjYW4gd3JpdGUgaXQgbGlrZSB0aGlzIGluIHRoaXMgc2NlbmNlLgo+Pgo+PlRhcmdldFZhcmlh YmxlCj4+aW50IHJpc2N2X3p2bF9mbGFncwo+Pgo+Pk1hc2soWlZMMzJCKSBpbiBUYXJnZXRWYXJp YWJsZShyaXNjdl96dmxfZmxhZ3MpCj4+Cj4+VGhlIGNvcnJlc3BvbmRpbmcgTUFTSyBhbmQgVEFS R0VUIHdpbGwgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuCj4+Cj4+Z2NjL0NoYW5nZUxvZzoK Pj4KPj7CoMKgwqDCoMKgwqDCoCAqIGNvbmZpZy9yaXNjdi9yaXNjdi1vcHRzLmjCoMKgIERlbGV0 ZSBiZWxvdyBkZWZpbmF0aW9ucwo+PsKgwqDCoMKgwqDCoMKgIChNQVNLX1pJQ1NSKTogRGVsZXRl Owo+PsKgwqDCoMKgwqDCoMKgIChNQVNLX1pJRkVOQ0VJKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDC oMKgIChUQVJHRVRfWklDU1IpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aSUZF TkNFSSk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aQVdSUyk6IERlbGV0ZTsKPj7C oMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pBV1JTKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChN QVNLX1pCQSk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aQkIpOiBEZWxldGU7Cj4+ wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkJDKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChNQVNL X1pCUyk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pCQSk6IERlbGV0ZTsKPj7C oMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pCQik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFS R0VUX1pCQyk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pCUyk6IERlbGV0ZTsK Pj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aRklOWCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAo TUFTS19aRElOWCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aSElOWCk6IERlbGV0 ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aSElOWE1JTik6IERlbGV0ZTsKPj7CoMKgwqDCoMKg wqDCoCAoVEFSR0VUX1pGSU5YKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWkRJ TlgpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aSElOWCk6IERlbGV0ZTsKPj7C oMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pISU5YTUlOKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKg IChNQVNLX1pCS0IpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkJLQyk6IERlbGV0 ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aQktYKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKg IChNQVNLX1pLTkUpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWktORCk6IERlbGV0 ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aS05IKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKg IChNQVNLX1pLUik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aS1NFRCk6IERlbGV0 ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aS1NIKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKg IChNQVNLX1pLVCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pCS0IpOiBEZWxl dGU7Cj4+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aQktDKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDC oMKgIChUQVJHRVRfWkJLWCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pLTkUp OiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aS05EKTogRGVsZXRlOwo+PsKgwqDC oMKgwqDCoMKgIChUQVJHRVRfWktOSCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VU X1pLUik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pLU0VEKTogRGVsZXRlOwo+ PsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWktTSCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAo VEFSR0VUX1pLVCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19WRUNUT1JfRUxFTl8z Mik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19WRUNUT1JfRUxFTl82NCk6IERlbGV0 ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19WRUNUT1JfRUxFTl9GUF8zMik6IERlbGV0ZTsKPj7C oMKgwqDCoMKgwqDCoCAoTUFTS19WRUNUT1JfRUxFTl9GUF82NCk6IERlbGV0ZTsKPj7CoMKgwqDC oMKgwqDCoCAoVEFSR0VUX1ZFQ1RPUl9FTEVOXzMyKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKg IChUQVJHRVRfVkVDVE9SX0VMRU5fNjQpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKFRBUkdF VF9WRUNUT1JfRUxFTl9GUF8zMik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1ZF Q1RPUl9FTEVOX0ZQXzY0KTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChNQVNLX1pWTDMyQik6 IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aVkw2NEIpOiBEZWxldGU7Cj4+wqDCoMKg wqDCoMKgwqAgKE1BU0tfWlZMMTI4Qik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19a VkwyNTZCKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChNQVNLX1pWTDUxMkIpOiBEZWxldGU7 Cj4+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWlZMMTAyNEIpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKg wqAgKE1BU0tfWlZMMjA0OEIpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWlZMNDA5 NkIpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWlZMODE5MkIpOiBEZWxldGU7Cj4+ wqDCoMKgwqDCoMKgwqAgKE1BU0tfWlZMMTYzODRCKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKg IChNQVNLX1pWTDMyNzY4Qik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aVkw2NTUz NkIpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkwzMkIpOiBEZWxldGU7Cj4+ wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkw2NEIpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAg KFRBUkdFVF9aVkwxMjhCKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWlZMMjU2 Qik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDUxMkIpOiBEZWxldGU7Cj4+ wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkwxMDI0Qik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDC oCAoVEFSR0VUX1pWTDIwNDhCKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWlZM NDA5NkIpOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkw4MTkyQik6IERlbGV0 ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDE2Mzg0Qik6IERlbGV0ZTsKPj7CoMKgwqDC oMKgwqDCoCAoVEFSR0VUX1pWTDMyNzY4Qik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFS R0VUX1pWTDY1NTM2Qik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aSUNCT1opOiBE ZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWklDQk9NKTogRGVsZXRlOwo+PsKgwqDCoMKg wqDCoMKgIChNQVNLX1pJQ0JPUCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pJ Q0JPWik6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pJQ0JPTSk6IERlbGV0ZTsK Pj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pJQ0JPUCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDC oCAoTUFTS19aRkhNSU4pOiBEZWxldGU7Cj4+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkZIKTogRGVs ZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWkZITUlOKTogRGVsZXRlOwo+PsKgwqDCoMKg wqDCoMKgIChUQVJHRVRfWkZIKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChNQVNLX1pNTVVM KTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWk1NVUwpOiBEZWxldGU7Cj4+wqDC oMKgwqDCoMKgwqAgKE1BU0tfU1ZJTlZBTCk6IERlbGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoTUFT S19TVk5BUE9UKTogRGVsZXRlOwo+PsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfU1ZJTlZBTCk6IERl bGV0ZTsKPj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1NWTkFQT1QpOiBEZWxldGU7Cj4+wqDCoMKg wqDCoMKgwqAgKiBjb25maWcvcmlzY3YvcmlzY3Yub3B0OiBBZGQgbmV3IE1hc2sgZGVmaW5hdGlv bi4KPj7CoMKgwqDCoMKgwqDCoCAqIG9wdC1mdW5jdGlvbnMuYXdrOsKgwqDCoMKgwqAgQWRkIG5l dyBmdW5jdGlvbiB0byBmaW5kIHRoZSBpbmRleAo+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvZiB0YXJnZXQgdmFyaWFi bGUgZnJvbSBleHRyYV90YXJnZXRfdmFycy4KPj7CoMKgwqDCoMKgwqDCoCAqIG9wdC1yZWFkLmF3 azrCoMKgwqDCoMKgwqDCoMKgwqDCoCBBZGQgbmV3IGZ1bmN0aW9uIHRvIHN0b3JlIHRoZSBNYXNr IGZsYWdzLgo+PsKgwqDCoMKgwqDCoMKgICogb3B0aC1nZW4uYXdrOsKgwqDCoMKgwqDCoMKgwqDC oMKgIEFkZCBuZXcgZnVuY3Rpb24gdG8gb3V0cHV0IHRoZSBkZWZpbmF0aW9uIG9mCj4+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIE1hc2sgTWFjcm8gYW5kIFRhcmdldCBNYWNyby4KPj4tLS0KPj4gZ2NjL2NvbmZpZy9yaXNj di9yaXNjdi1vcHRzLmggfCAxMTUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ PiBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm9wdMKgwqDCoCB8wqAgOTAgKysrKysrKysrKysrKysr KysrKysrKysrKysKPj4gZ2NjL29wdC1mdW5jdGlvbnMuYXdrwqDCoMKgwqDCoMKgwqDCoCB8wqAg MTEgKysrKwo+PiBnY2Mvb3B0LXJlYWQuYXdrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg IDE2ICsrKystCj4+IGdjYy9vcHRoLWdlbi5hd2vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqAgMjIgKysrKysrKwo+PiA1IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAxMTYg ZGVsZXRpb25zKC0pCj4+Cj4+ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Ytb3B0 cy5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1vcHRzLmgKPj5pbmRleCAyNWZkODViMDliMS4u N2NmMjg4MzhjYjUgMTAwNjQ0Cj4+LS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1vcHRzLmgK Pj4rKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LW9wdHMuaAo+PkBAIC02NiwxMjEgKzY2LDYg QEAgZW51bSBzdGFja19wcm90ZWN0b3JfZ3VhcmQgewo+PsKgwqAgU1NQX1RMUywJLyogcGVyLXRo cmVhZCBjYW5hcnkgaW4gVExTIGJsb2NrICovCj4+wqDCoCBTU1BfR0xPQkFMCS8qIGdsb2JhbCBj YW5hcnkgKi8KPj4gfTsKPj4tCj4+LSNkZWZpbmUgTUFTS19aSUNTUsKgwqDCoCAoMSA8PCAwKQo+ Pi0jZGVmaW5lIE1BU0tfWklGRU5DRUkgKDEgPDwgMSkKPj4tCj4+LSNkZWZpbmUgVEFSR0VUX1pJ Q1NSwqDCoMKgICgocmlzY3Zfemlfc3ViZXh0ICYgTUFTS19aSUNTUikgIT0gMCkKPj4tI2RlZmlu ZSBUQVJHRVRfWklGRU5DRUkgKChyaXNjdl96aV9zdWJleHQgJiBNQVNLX1pJRkVOQ0VJKSAhPSAw KQo+Pi0KPj4tI2RlZmluZSBNQVNLX1pBV1JTwqDCoCAoMSA8PCAwKQo+Pi0jZGVmaW5lIFRBUkdF VF9aQVdSUyAoKHJpc2N2X3phX3N1YmV4dCAmIE1BU0tfWkFXUlMpICE9IDApCj4+LQo+Pi0jZGVm aW5lIE1BU0tfWkJBwqDCoMKgwqDCoCAoMSA8PCAwKQo+Pi0jZGVmaW5lIE1BU0tfWkJCwqDCoMKg wqDCoCAoMSA8PCAxKQo+Pi0jZGVmaW5lIE1BU0tfWkJDwqDCoMKgwqDCoCAoMSA8PCAyKQo+Pi0j ZGVmaW5lIE1BU0tfWkJTwqDCoMKgwqDCoCAoMSA8PCAzKQo+Pi0KPj4tI2RlZmluZSBUQVJHRVRf WkJBwqDCoMKgICgocmlzY3ZfemJfc3ViZXh0ICYgTUFTS19aQkEpICE9IDApCj4+LSNkZWZpbmUg VEFSR0VUX1pCQsKgwqDCoCAoKHJpc2N2X3piX3N1YmV4dCAmIE1BU0tfWkJCKSAhPSAwKQo+Pi0j ZGVmaW5lIFRBUkdFVF9aQkPCoMKgwqAgKChyaXNjdl96Yl9zdWJleHQgJiBNQVNLX1pCQykgIT0g MCkKPj4tI2RlZmluZSBUQVJHRVRfWkJTwqDCoMKgICgocmlzY3ZfemJfc3ViZXh0ICYgTUFTS19a QlMpICE9IDApCj4+LQo+Pi0jZGVmaW5lIE1BU0tfWkZJTljCoMKgwqDCoMKgICgxIDw8IDApCj4+ LSNkZWZpbmUgTUFTS19aRElOWMKgwqDCoMKgwqAgKDEgPDwgMSkKPj4tI2RlZmluZSBNQVNLX1pI SU5YwqDCoMKgwqDCoCAoMSA8PCAyKQo+Pi0jZGVmaW5lIE1BU0tfWkhJTlhNSU7CoMKgICgxIDw8 IDMpCj4+LQo+Pi0jZGVmaW5lIFRBUkdFVF9aRklOWMKgwqDCoCAoKHJpc2N2X3ppbnhfc3ViZXh0 ICYgTUFTS19aRklOWCkgIT0gMCkKPj4tI2RlZmluZSBUQVJHRVRfWkRJTljCoMKgwqAgKChyaXNj dl96aW54X3N1YmV4dCAmIE1BU0tfWkRJTlgpICE9IDApCj4+LSNkZWZpbmUgVEFSR0VUX1pISU5Y wqDCoMKgICgocmlzY3ZfemlueF9zdWJleHQgJiBNQVNLX1pISU5YKSAhPSAwKQo+Pi0jZGVmaW5l IFRBUkdFVF9aSElOWE1JTiAoKHJpc2N2X3ppbnhfc3ViZXh0ICYgTUFTS19aSElOWE1JTikgIT0g MCkKPj4tCj4+LSNkZWZpbmUgTUFTS19aQktCwqDCoMKgwqAgKDEgPDwgMCkKPj4tI2RlZmluZSBN QVNLX1pCS0PCoMKgwqDCoCAoMSA8PCAxKQo+Pi0jZGVmaW5lIE1BU0tfWkJLWMKgwqDCoMKgICgx IDw8IDIpCj4+LSNkZWZpbmUgTUFTS19aS05FwqDCoMKgwqAgKDEgPDwgMykKPj4tI2RlZmluZSBN QVNLX1pLTkTCoMKgwqDCoCAoMSA8PCA0KQo+Pi0jZGVmaW5lIE1BU0tfWktOSMKgwqDCoMKgICgx IDw8IDUpCj4+LSNkZWZpbmUgTUFTS19aS1LCoMKgwqDCoMKgICgxIDw8IDYpCj4+LSNkZWZpbmUg TUFTS19aS1NFRMKgwqDCoCAoMSA8PCA3KQo+Pi0jZGVmaW5lIE1BU0tfWktTSMKgwqDCoMKgICgx IDw8IDgpCj4+LSNkZWZpbmUgTUFTS19aS1TCoMKgwqDCoMKgICgxIDw8IDkpCj4+LQo+Pi0jZGVm aW5lIFRBUkdFVF9aQktCwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWkJLQikgIT0gMCkK Pj4tI2RlZmluZSBUQVJHRVRfWkJLQ8KgwqAgKChyaXNjdl96a19zdWJleHQgJiBNQVNLX1pCS0Mp ICE9IDApCj4+LSNkZWZpbmUgVEFSR0VUX1pCS1jCoMKgICgocmlzY3Zfemtfc3ViZXh0ICYgTUFT S19aQktYKSAhPSAwKQo+Pi0jZGVmaW5lIFRBUkdFVF9aS05FwqDCoCAoKHJpc2N2X3prX3N1YmV4 dCAmIE1BU0tfWktORSkgIT0gMCkKPj4tI2RlZmluZSBUQVJHRVRfWktORMKgwqAgKChyaXNjdl96 a19zdWJleHQgJiBNQVNLX1pLTkQpICE9IDApCj4+LSNkZWZpbmUgVEFSR0VUX1pLTkjCoMKgICgo cmlzY3Zfemtfc3ViZXh0ICYgTUFTS19aS05IKSAhPSAwKQo+Pi0jZGVmaW5lIFRBUkdFVF9aS1LC oMKgwqAgKChyaXNjdl96a19zdWJleHQgJiBNQVNLX1pLUikgIT0gMCkKPj4tI2RlZmluZSBUQVJH RVRfWktTRUTCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWktTRUQpICE9IDApCj4+LSNkZWZp bmUgVEFSR0VUX1pLU0jCoMKgICgocmlzY3Zfemtfc3ViZXh0ICYgTUFTS19aS1NIKSAhPSAwKQo+ Pi0jZGVmaW5lIFRBUkdFVF9aS1TCoMKgwqAgKChyaXNjdl96a19zdWJleHQgJiBNQVNLX1pLVCkg IT0gMCkKPj4tCj4+LSNkZWZpbmUgTUFTS19WRUNUT1JfRUxFTl8zMsKgwqDCoCAoMSA8PCAwKQo+ Pi0jZGVmaW5lIE1BU0tfVkVDVE9SX0VMRU5fNjTCoMKgwqAgKDEgPDwgMSkKPj4tI2RlZmluZSBN QVNLX1ZFQ1RPUl9FTEVOX0ZQXzMyICgxIDw8IDIpCj4+LSNkZWZpbmUgTUFTS19WRUNUT1JfRUxF Tl9GUF82NCAoMSA8PCAzKQo+Pi0KPj4tI2RlZmluZSBUQVJHRVRfVkVDVE9SX0VMRU5fMzIgXAo+ Pi3CoCAoKHJpc2N2X3ZlY3Rvcl9lbGVuX2ZsYWdzICYgTUFTS19WRUNUT1JfRUxFTl8zMikgIT0g MCkKPj4tI2RlZmluZSBUQVJHRVRfVkVDVE9SX0VMRU5fNjQgXAo+Pi3CoCAoKHJpc2N2X3ZlY3Rv cl9lbGVuX2ZsYWdzICYgTUFTS19WRUNUT1JfRUxFTl82NCkgIT0gMCkKPj4tI2RlZmluZSBUQVJH RVRfVkVDVE9SX0VMRU5fRlBfMzIgXAo+Pi3CoCAoKHJpc2N2X3ZlY3Rvcl9lbGVuX2ZsYWdzICYg TUFTS19WRUNUT1JfRUxFTl9GUF8zMikgIT0gMCkKPj4tI2RlZmluZSBUQVJHRVRfVkVDVE9SX0VM RU5fRlBfNjQgXAo+Pi3CoCAoKHJpc2N2X3ZlY3Rvcl9lbGVuX2ZsYWdzICYgTUFTS19WRUNUT1Jf RUxFTl9GUF82NCkgIT0gMCkKPj4tCj4+LSNkZWZpbmUgTUFTS19aVkwzMkLCoMKgwqAgKDEgPDzC oCAwKQo+Pi0jZGVmaW5lIE1BU0tfWlZMNjRCwqDCoMKgICgxIDw8wqAgMSkKPj4tI2RlZmluZSBN QVNLX1pWTDEyOELCoMKgICgxIDw8wqAgMikKPj4tI2RlZmluZSBNQVNLX1pWTDI1NkLCoMKgICgx IDw8wqAgMykKPj4tI2RlZmluZSBNQVNLX1pWTDUxMkLCoMKgICgxIDw8wqAgNCkKPj4tI2RlZmlu ZSBNQVNLX1pWTDEwMjRCwqAgKDEgPDzCoCA1KQo+Pi0jZGVmaW5lIE1BU0tfWlZMMjA0OELCoCAo MSA8PMKgIDYpCj4+LSNkZWZpbmUgTUFTS19aVkw0MDk2QsKgICgxIDw8wqAgNykKPj4tI2RlZmlu ZSBNQVNLX1pWTDgxOTJCwqAgKDEgPDzCoCA4KQo+Pi0jZGVmaW5lIE1BU0tfWlZMMTYzODRCICgx IDw8wqAgOSkKPj4tI2RlZmluZSBNQVNLX1pWTDMyNzY4QiAoMSA8PCAxMCkKPj4tI2RlZmluZSBN QVNLX1pWTDY1NTM2QiAoMSA8PCAxMSkKPj4tCj4+LSNkZWZpbmUgVEFSR0VUX1pWTDMyQsKgwqDC oCAoKHJpc2N2X3p2bF9mbGFncyAmIE1BU0tfWlZMMzJCKSAhPSAwKQo+Pi0jZGVmaW5lIFRBUkdF VF9aVkw2NELCoMKgwqAgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDY0QikgIT0gMCkKPj4t I2RlZmluZSBUQVJHRVRfWlZMMTI4QsKgwqAgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDEy OEIpICE9IDApCj4+LSNkZWZpbmUgVEFSR0VUX1pWTDI1NkLCoMKgICgocmlzY3ZfenZsX2ZsYWdz ICYgTUFTS19aVkwyNTZCKSAhPSAwKQo+Pi0jZGVmaW5lIFRBUkdFVF9aVkw1MTJCwqDCoCAoKHJp c2N2X3p2bF9mbGFncyAmIE1BU0tfWlZMNTEyQikgIT0gMCkKPj4tI2RlZmluZSBUQVJHRVRfWlZM MTAyNELCoCAoKHJpc2N2X3p2bF9mbGFncyAmIE1BU0tfWlZMMTAyNEIpICE9IDApCj4+LSNkZWZp bmUgVEFSR0VUX1pWTDIwNDhCwqAgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDIwNDhCKSAh PSAwKQo+Pi0jZGVmaW5lIFRBUkdFVF9aVkw0MDk2QsKgICgocmlzY3ZfenZsX2ZsYWdzICYgTUFT S19aVkw0MDk2QikgIT0gMCkKPj4tI2RlZmluZSBUQVJHRVRfWlZMODE5MkLCoCAoKHJpc2N2X3p2 bF9mbGFncyAmIE1BU0tfWlZMODE5MkIpICE9IDApCj4+LSNkZWZpbmUgVEFSR0VUX1pWTDE2Mzg0 QiAoKHJpc2N2X3p2bF9mbGFncyAmIE1BU0tfWlZMMTYzODRCKSAhPSAwKQo+Pi0jZGVmaW5lIFRB UkdFVF9aVkwzMjc2OEIgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDMyNzY4QikgIT0gMCkK Pj4tI2RlZmluZSBUQVJHRVRfWlZMNjU1MzZCICgocmlzY3ZfenZsX2ZsYWdzICYgTUFTS19aVkw2 NTUzNkIpICE9IDApCj4+LQo+Pi0jZGVmaW5lIE1BU0tfWklDQk9awqDCoCAoMSA8PCAwKQo+Pi0j ZGVmaW5lIE1BU0tfWklDQk9NwqDCoCAoMSA8PCAxKQo+Pi0jZGVmaW5lIE1BU0tfWklDQk9QwqDC oCAoMSA8PCAyKQo+Pi0KPj4tI2RlZmluZSBUQVJHRVRfWklDQk9aICgocmlzY3ZfemljbW9fc3Vi ZXh0ICYgTUFTS19aSUNCT1opICE9IDApCj4+LSNkZWZpbmUgVEFSR0VUX1pJQ0JPTSAoKHJpc2N2 X3ppY21vX3N1YmV4dCAmIE1BU0tfWklDQk9NKSAhPSAwKQo+Pi0jZGVmaW5lIFRBUkdFVF9aSUNC T1AgKChyaXNjdl96aWNtb19zdWJleHQgJiBNQVNLX1pJQ0JPUCkgIT0gMCkKPj4tCj4+LSNkZWZp bmUgTUFTS19aRkhNSU7CoMKgICgxIDw8IDApCj4+LSNkZWZpbmUgTUFTS19aRkjCoMKgwqDCoMKg ICgxIDw8IDEpCj4+LQo+Pi0jZGVmaW5lIFRBUkdFVF9aRkhNSU4gKChyaXNjdl96Zl9zdWJleHQg JiBNQVNLX1pGSE1JTikgIT0gMCkKPj4tI2RlZmluZSBUQVJHRVRfWkZIwqDCoMKgICgocmlzY3Zf emZfc3ViZXh0ICYgTUFTS19aRkgpICE9IDApCj4+LQo+Pi0jZGVmaW5lIE1BU0tfWk1NVUzCoMKg wqDCoMKgICgxIDw8IDApCj4+LSNkZWZpbmUgVEFSR0VUX1pNTVVMwqDCoMKgICgocmlzY3Zfem1f c3ViZXh0ICYgTUFTS19aTU1VTCkgIT0gMCkKPj4tCj4+LSNkZWZpbmUgTUFTS19TVklOVkFMICgx IDw8IDApCj4+LSNkZWZpbmUgTUFTS19TVk5BUE9UICgxIDw8IDEpCj4+LQo+Pi0jZGVmaW5lIFRB UkdFVF9TVklOVkFMICgocmlzY3Zfc3Zfc3ViZXh0ICYgTUFTS19TVklOVkFMKSAhPSAwKQo+Pi0j ZGVmaW5lIFRBUkdFVF9TVk5BUE9UICgocmlzY3Zfc3Zfc3ViZXh0ICYgTUFTS19TVk5BUE9UKSAh PSAwKQo+Pi0KPj4gLyogQml0IG9mIHJpc2N2X3p2bF9mbGFncyB3aWxsIHNldCBjb250aW50dWx5 LCBOLTEgYml0IHdpbGwgc2V0IGlmIE4tYml0IGlzCj4+wqDCoMKgIHNldCwgZS5nLiBNQVNLX1pW TDY0QiBoYXMgc2V0IHRoZW4gTUFTS19aVkwzMkIgaXMgc2V0LCBzbyB3ZSBjYW4gdXNlCj4+wqDC oMKgIHBvcGNvdW50IHRvIGNhY2x1bGF0ZSB0aGUgbWluaW1hbCBWTEVOLsKgICovCj4+ZGlmZiAt LWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yub3B0IGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di5vcHQKPj5pbmRleCA3YzNjYTQ4ZDFjYy4uNzdmNTUzMzU2YjEgMTAwNjQ0Cj4+LS0tIGEvZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi5vcHQKPj4rKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm9w dAo+PkBAIC0yMDMsMzYgKzIwMywxMjYgQEAgbG9uZyByaXNjdl9zdGFja19wcm90ZWN0b3JfZ3Vh cmRfb2Zmc2V0ID0gMAo+PiBUYXJnZXRWYXJpYWJsZQo+PiBpbnQgcmlzY3Zfemlfc3ViZXh0Cj4+ Cj4+K01hc2soWklDU1IpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppX3N1YmV4dCkKPj4rCj4+ K01hc2soWklGRU5DRUkpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppX3N1YmV4dCkKPj4rCj4+ IFRhcmdldFZhcmlhYmxlCj4+IGludCByaXNjdl96YV9zdWJleHQKPj4KPj4rTWFzayhaQVdSUykg aW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfemFfc3ViZXh0KQo+PisKPj4gVGFyZ2V0VmFyaWFibGUK Pj4gaW50IHJpc2N2X3piX3N1YmV4dAo+Pgo+PitNYXNrKFpCQSkgaW4gVGFyZ2V0VmFyaWFibGUo cmlzY3ZfemJfc3ViZXh0KQo+PisKPj4rTWFzayhaQkIpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2 X3piX3N1YmV4dCkKPj4rCj4+K01hc2soWkJDKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96Yl9z dWJleHQpCj4+Kwo+PitNYXNrKFpCUykgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfemJfc3ViZXh0 KQo+PisKPj4gVGFyZ2V0VmFyaWFibGUKPj4gaW50IHJpc2N2X3ppbnhfc3ViZXh0Cj4+Cj4+K01h c2soWkZJTlgpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+PisKPj4rTWFz ayhaRElOWCkgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfemlueF9zdWJleHQpCj4+Kwo+PitNYXNr KFpISU5YKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96aW54X3N1YmV4dCkKPj4rCj4+K01hc2so WkhJTlhNSU4pIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+PisKPj4gVGFy Z2V0VmFyaWFibGUKPj4gaW50IHJpc2N2X3prX3N1YmV4dAo+Pgo+PitNYXNrKFpCS0IpIGluIFRh cmdldFZhcmlhYmxlKHJpc2N2X3prX3N1YmV4dCkKPj4rCj4+K01hc2soWkJLQykgaW4gVGFyZ2V0 VmFyaWFibGUocmlzY3Zfemtfc3ViZXh0KQo+PisKPj4rTWFzayhaQktYKSBpbiBUYXJnZXRWYXJp YWJsZShyaXNjdl96a19zdWJleHQpCj4+Kwo+PitNYXNrKFpLTkUpIGluIFRhcmdldFZhcmlhYmxl KHJpc2N2X3prX3N1YmV4dCkKPj4rCj4+K01hc2soWktORCkgaW4gVGFyZ2V0VmFyaWFibGUocmlz Y3Zfemtfc3ViZXh0KQo+PisKPj4rTWFzayhaS05IKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96 a19zdWJleHQpCj4+Kwo+PitNYXNrKFpLUikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3Zfemtfc3Vi ZXh0KQo+PisKPj4rTWFzayhaS1NFRCkgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3Zfemtfc3ViZXh0 KQo+PisKPj4rTWFzayhaS1NIKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4+ Kwo+PitNYXNrKFpLVCkgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3Zfemtfc3ViZXh0KQo+PisKPj4g VGFyZ2V0VmFyaWFibGUKPj4gaW50IHJpc2N2X3ZlY3Rvcl9lbGVuX2ZsYWdzCj4+Cj4+K01hc2so VkVDVE9SX0VMRU5fMzIpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ZlY3Rvcl9lbGVuX2ZsYWdz KQo+PisKPj4rTWFzayhWRUNUT1JfRUxFTl82NCkgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfdmVj dG9yX2VsZW5fZmxhZ3MpCj4+Kwo+PitNYXNrKFZFQ1RPUl9FTEVOX0ZQXzMyKSBpbiBUYXJnZXRW YXJpYWJsZShyaXNjdl92ZWN0b3JfZWxlbl9mbGFncykKPj4rCj4+K01hc2soVkVDVE9SX0VMRU5f RlBfNjQpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ZlY3Rvcl9lbGVuX2ZsYWdzKQo+PisKPj4g VGFyZ2V0VmFyaWFibGUKPj4gaW50IHJpc2N2X3p2bF9mbGFncwo+Pgo+PitNYXNrKFpWTDMyQikg aW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+PisKPj4rTWFzayhaVkw2NEIpIGlu IFRhcmdldFZhcmlhYmxlKHJpc2N2X3p2bF9mbGFncykKPj4rCj4+K01hc2soWlZMMTI4QikgaW4g VGFyZ2V0VmFyaWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+PisKPj4rTWFzayhaVkwyNTZCKSBpbiBU YXJnZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4+Kwo+PitNYXNrKFpWTDUxMkIpIGluIFRh cmdldFZhcmlhYmxlKHJpc2N2X3p2bF9mbGFncykKPj4rCj4+K01hc2soWlZMMTAyNEIpIGluIFRh cmdldFZhcmlhYmxlKHJpc2N2X3p2bF9mbGFncykKPj4rCj4+K01hc2soWlZMMjA0OEIpIGluIFRh cmdldFZhcmlhYmxlKHJpc2N2X3p2bF9mbGFncykKPj4rCj4+K01hc2soWlZMNDA5NkIpIGluIFRh cmdldFZhcmlhYmxlKHJpc2N2X3p2bF9mbGFncykKPj4rCj4+K01hc2soWlZMODE5MkIpIGluIFRh cmdldFZhcmlhYmxlKHJpc2N2X3p2bF9mbGFncykKPj4rCj4+K01hc2soWlZMMTYzODRCKSBpbiBU YXJnZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4+Kwo+PitNYXNrKFpWTDMyNzY4QikgaW4g VGFyZ2V0VmFyaWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+PisKPj4rTWFzayhaVkw2NTUzNkIpIGlu IFRhcmdldFZhcmlhYmxlKHJpc2N2X3p2bF9mbGFncykKPj4rCj4+IFRhcmdldFZhcmlhYmxlCj4+ IGludCByaXNjdl96aWNtb19zdWJleHQKPj4KPj4rTWFzayhaSUNCT1opIGluIFRhcmdldFZhcmlh YmxlKHJpc2N2X3ppY21vX3N1YmV4dCkKPj4rCj4+K01hc2soWklDQk9NKSBpbiBUYXJnZXRWYXJp YWJsZShyaXNjdl96aWNtb19zdWJleHQpCj4+Kwo+PitNYXNrKFpJQ0JPUCkgaW4gVGFyZ2V0VmFy aWFibGUocmlzY3ZfemljbW9fc3ViZXh0KQo+PisKPj4gVGFyZ2V0VmFyaWFibGUKPj4gaW50IHJp c2N2X3pmX3N1YmV4dAo+Pgo+PitNYXNrKFpGSE1JTikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3Zf emZfc3ViZXh0KQo+PisKPj4rTWFzayhaRkgpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3pmX3N1 YmV4dCkKPj4rCj4+IFRhcmdldFZhcmlhYmxlCj4+IGludCByaXNjdl96bV9zdWJleHQKPj4KPj4r TWFzayhaTU1VTCkgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3Zfem1fc3ViZXh0KQo+PisKPj4gVGFy Z2V0VmFyaWFibGUKPj4gaW50IHJpc2N2X3N2X3N1YmV4dAo+Pgo+PitNYXNrKFNWSU5WQUwpIGlu IFRhcmdldFZhcmlhYmxlKHJpc2N2X3N2X3N1YmV4dCkKPj4rCj4+K01hc2soU1ZOQVBPVCkgaW4g VGFyZ2V0VmFyaWFibGUocmlzY3Zfc3Zfc3ViZXh0KQo+PitJdCBsb29rcyBsaWtlIGEgZ29vZCBp ZGVhLiBIb3dldmVyLCB0aGVyZSBhcmUgc3RpbGwgbWFueSBtb2R1bGVzIHRoYXQgbG9vayB2ZXJ5 IHNpbWlsYXIsIGNhbiB3ZSBmdXJ0aGVyIG9wdGltaXplIHRoZXNlIGNvZGVzLkJSLEppYXdlaQo+ Pgo+PiBFbnVtCj4+IE5hbWUoaXNhX3NwZWNfY2xhc3MpIFR5cGUoZW51bSByaXNjdl9pc2Ffc3Bl Y19jbGFzcykKPj4gU3VwcG9ydGVkIElTQSBzcGVjcyAoZm9yIHVzZSB3aXRoIHRoZSAtbWlzYS1z cGVjPSBvcHRpb24pOgo+PmRpZmYgLS1naXQgYS9nY2Mvb3B0LWZ1bmN0aW9ucy5hd2sgYi9nY2Mv b3B0LWZ1bmN0aW9ucy5hd2sKPj5pbmRleCAyYWVlMGI5ZjFjMy4uOWQ2MDgwZDY0YTggMTAwNjQ0 Cj4+LS0tIGEvZ2NjL29wdC1mdW5jdGlvbnMuYXdrCj4+KysrIGIvZ2NjL29wdC1mdW5jdGlvbnMu YXdrCj4+QEAgLTM4NywzICszODcsMTQgQEAgZnVuY3Rpb24gaW50ZWdlcl9yYW5nZV9pbmZvKHJh bmdlX29wdGlvbiwgaW5pdCwgb3B0aW9uLCB1aW50ZWdlcl91c2VkKQo+PsKgwqDCoMKgIGVsc2UK Pj7CoMKgwqDCoMKgwqDCoMKgIHJldHVybiAiLTEsIC0xIgo+PiB9Cj4+Kwo+PisjIEZpbmQgdGhl IGluZGV4IG9mIHRhcmdldCB2YXJpYWJsZSBmcm9tIGV4dHJhX3RhcmdldF92YXJzCj4+K2Z1bmN0 aW9uIGZpbmRfaW5kZXgodmFyLCB2YXJfYXJyeSwgbl92YXJfYXJyeSkKPj4rewo+PivCoMKgwqAg Zm9yICh2YXJfaW5kZXggPSAwOyB2YXJfaW5kZXggPCBuX3Zhcl9hcnJ5OyB2YXJfaW5kZXgrKykK Pj4rwqDCoMKgIHsKPj4rwqDCoMKgwqDCoMKgwqAgaWYgKHZhcl9hcnJ5W3Zhcl9pbmRleF0gPT0g dmFyKQo+PivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrCj4+K8KgwqDCoCB9Cj4+K8KgwqDC oCByZXR1cm4gdmFyX2luZGV4Cj4+K30KPj5cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKPj5k aWZmIC0tZ2l0IGEvZ2NjL29wdC1yZWFkLmF3ayBiL2djYy9vcHQtcmVhZC5hd2sKPj5pbmRleCBj ZTM2MTdjOGQ0YS4uZWJlNDhkYjk2OGIgMTAwNjQ0Cj4+LS0tIGEvZ2NjL29wdC1yZWFkLmF3awo+ PisrKyBiL2djYy9vcHQtcmVhZC5hd2sKPj5AQCAtMjIsNiArMjIsNyBAQCBCRUdJTiB7Cj4+IG5f b3B0cyA9IDAKPj4gbl9sYW5ncyA9IDAKPj4gbl90YXJnZXRfc2F2ZSA9IDAKPj4rCW5fdGFyZ2V0 X3ZhcnMgPSAwCj4+IG5fZXh0cmFfdmFycyA9IDAKPj4gbl9leHRyYV90YXJnZXRfdmFycyA9IDAK Pj4gbl9leHRyYV9tYXNrcyA9IDAKPj5AQCAtMTIxLDcgKzEyMiwyMCBAQCBCRUdJTiB7Cj4+IG5f b3B0cysrOwo+PiB9Cj4+IGVsc2Ugewo+Pi0JZXh0cmFfbWFza3Nbbl9leHRyYV9tYXNrcysrXSA9 IG5hbWUKPj4rCWlmKCQwIH4gImluIikKPj4rCXsKPj4rCXRhcmdldF92YXIgPSBvcHRfYXJncygi VGFyZ2V0VmFyaWFibGUiLCAkMSkKPj4rCXZhcl9pbmRleCA9IGZpbmRfaW5kZXgodGFyZ2V0X3Zh ciwgdGFyZ2V0X3ZhcnMsIG5fdGFyZ2V0X3ZhcnMpCj4+KwlpZiAodmFyX2luZGV4ID09IG5fdGFy Z2V0X3ZhcnMpCj4+Kwl7Cj4+Kwl0YXJnZXRfdmFyc1tuX3RhcmdldF92YXJzKytdID0gdGFyZ2V0 X3Zhcgo+PisJfQo+PisJb3RoZXJfbWFza3NbdmFyX2luZGV4XVtuX290aGVyX21hc2tbdmFyX2lu ZGV4XSsrXSA9IG5hbWUKPj4rCX0KPj4rCWVsc2UKPj4rCXsKPj4rCWV4dHJhX21hc2tzW25fZXh0 cmFfbWFza3MrK10gPSBuYW1lCj4+Kwl9Cj4+IH0KPj4gfQo+PiB9Cj4+ZGlmZiAtLWdpdCBhL2dj Yy9vcHRoLWdlbi5hd2sgYi9nY2Mvb3B0aC1nZW4uYXdrCj4+aW5kZXggOGJiYThlYzQ1NDkuLjI0 N2E5ZmI4OTQ0IDEwMDY0NAo+Pi0tLSBhL2djYy9vcHRoLWdlbi5hd2sKPj4rKysgYi9nY2Mvb3B0 aC1nZW4uYXdrCj4+QEAgLTQwNiw2ICs0MDYsMTggQEAgZm9yIChpID0gMDsgaSA8IG5fZXh0cmFf bWFza3M7IGkrKykgewo+PiBwcmludCAiI2RlZmluZSBNQVNLXyIgZXh0cmFfbWFza3NbaV0gIiAo MVUgPDwgIiBtYXNrbnVtWyIiXSsrICIpIgo+PiB9Cj4+Cj4+K2ZvciAoaSA9IDA7IGkgPCBuX3Rh cmdldF92YXJzOyBpKyspCj4+K3sKPj4rCWlmIChmaW5kX2luZGV4KHRhcmdldF92YXJzW2ldLCBl eHRyYV90YXJnZXRfdmFycywgbl9leHRyYV90YXJnZXRfdmFycykgPT0gbl9leHRyYV90YXJnZXRf dmFycykKPj4rCWNvbnRpbnVlCj4+Kwlmb3IgKGogPSAwOyBqIDwgbl9vdGhlcl9tYXNrW2ldOyBq KyspCj4+Kwl7Cj4+KwlwcmludCAiI2RlZmluZSBNQVNLXyIgb3RoZXJfbWFza3NbaV1bal0gIiAo MVUgPDwgIiBvdGhlcl9tYXNrbnVtW2ldWyIiXSsrICIpIgo+PisJfQo+PisJaWYgKG90aGVyX21h c2tudW1baV1bIiJdID4gMzIpCj4+KwlwcmludCAiI2Vycm9yIHRvbyBtYW55IHRhcmdldCBtYXNr cyBmb3IiIGV4dHJhX3RhcmdldF92YXJzW2ldCj4+K30KPj4rCj4+IGZvciAodmFyIGluIG1hc2tu dW0pIHsKPj4gaWYgKHZhciAhPSAiIiAmJiBob3N0X3dpZGVfaW50W3Zhcl0gPT0gInllcyIpIHsK Pj4gcHJpbnQgIiNpZiBkZWZpbmVkKEhPU1RfQklUU19QRVJfV0lERV9JTlQpICYmICIgbWFza251 bVt2YXJdICIgPiBIT1NUX0JJVFNfUEVSX1dJREVfSU5UIgo+PkBAIC00NTcsNiArNDY5LDE2IEBA IGZvciAoaSA9IDA7IGkgPCBuX2V4dHJhX21hc2tzOyBpKyspIHsKPj4gcHJpbnQgIiNkZWZpbmUg VEFSR0VUXyIgZXh0cmFfbWFza3NbaV0gXAo+PiDCoMKgwqDCoMKgICIgKCh0YXJnZXRfZmxhZ3Mg JiBNQVNLXyIgZXh0cmFfbWFza3NbaV0gIikgIT0gMCkiCj4+IH0KPj4rZm9yIChpID0gMDsgaSA8 IG5fdGFyZ2V0X3ZhcnM7IGkrKykKPj4rewo+PisJaWYgKGZpbmRfaW5kZXgodGFyZ2V0X3ZhcnNb aV0sIGV4dHJhX3RhcmdldF92YXJzLCBuX2V4dHJhX3RhcmdldF92YXJzKSA9PSBuX2V4dHJhX3Rh cmdldF92YXJzKQo+PisJY29udGludWUKPj4rCWZvciAoaiA9IDA7IGogPCBuX290aGVyX21hc2tb aV07IGorKykKPj4rCXsKPj4rCXByaW50ICIjZGVmaW5lIFRBUkdFVF8iIG90aGVyX21hc2tzW2ld W2pdIFwKPj4rCcKgwqDCoMKgwqAgIiAoKCIgdGFyZ2V0X3ZhcnNbaV0gIiAmIE1BU0tfIiBvdGhl cl9tYXNrc1tpXVtqXSAiKSAhPSAwKSIKPj4rCX0KPj4rfQo+PiBwcmludCAiIgo+Pgo+PiBmb3Ig KGkgPSAwOyBpIDwgbl9vcHRzOyBpKyspIHsKPj4tLQo+PjIuMTcuMQo+Cj5IaSBKaWF3ZWksCj4K PlRoYW5rcyBmb3IgeW91ciByZXBsYXksIEkgd2lsbCB0cnkgdG8gb3B0aW1pemUgdGhlIGdlbmVy YXRpb24gY29kZSB0byBlbGltaW5hdGUgdGhlIHJlZHVuZGFudCBjb2Rlcy4KPgo+V2FuZyBGZW5n Cj5CZXN0IHJlZ2FyZHMKPiAKSGkgSmlhd2VpLAoKSSBzdHVkaWVkIHRoZSBjb2RlIG9mIGdlbmVy YXRpb24gYWdhaW4gYW5kIEkgdGhpbmsgaXQgaXMgYmV0dGVyIHRvIGJlIGluZGVwZW5kZW50IHRo aXMgcGFydCBpbiBvcmRlciBub3QgdG8gCmFmZmVjdCB0aGUgcHJvY2Vzc2luZyBvZiBvdGhlciBh cmNoaXRlY3R1cmVzLsKgSWYgeW91IGhhdmUgYW55IHN1Z2dlc3Rpb25zLCB5b3UgY2FuIGRpc2N1 c3Mgd2l0aCBtZS4gVGhhbmsgeW91LgoKV2FuZyBGZW5nCkJlc3QgcmVnYXJkcw==