Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tP7I2-00AKMj-JK for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Dec 2024 21:45:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tP7I0-00CbKX-0b for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Dec 2024 21:45:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tP7Hz-00CbKP-6y for pgsql-hackers@lists.postgresql.org; Sat, 21 Dec 2024 21:45:35 +0000 Received: from smtp.outgoing.loopia.se ([93.188.3.37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tP7Hu-000idL-De for pgsql-hackers@postgresql.org; Sat, 21 Dec 2024 21:45:33 +0000 Received: from s807.loopia.se (localhost [127.0.0.1]) by s807.loopia.se (Postfix) with ESMTP id 6FCE91D0BCA for ; Sat, 21 Dec 2024 22:45:26 +0100 (CET) Received: from s979.loopia.se (unknown [172.22.191.5]) by s807.loopia.se (Postfix) with ESMTP id 60AAA1D168F; Sat, 21 Dec 2024 22:45:26 +0100 (CET) Received: from s471.loopia.se (unknown [172.22.191.5]) by s979.loopia.se (Postfix) with ESMTP id 5DEC410BC39F; Sat, 21 Dec 2024 22:45:26 +0100 (CET) X-Virus-Scanned: amavisd-new at amavis.loopia.se X-Spam-Flag: NO X-Spam-Score: -1.2 X-Spam-Level: X-Spam-Status: No, score=-1.2 tagged_above=-999 required=6.2 tests=[ALL_TRUSTED=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1] autolearn=disabled Authentication-Results: s471.loopia.se (amavisd-new); dkim=pass (2048-bit key) header.d=proxel.se Received: from s899.loopia.se ([172.22.191.6]) by s471.loopia.se (s471.loopia.se [172.22.190.35]) (amavisd-new, port 10024) with LMTP id n9mK_vvWaMFp; Sat, 21 Dec 2024 22:45:25 +0100 (CET) X-Loopia-Auth: user X-Loopia-User: andreas@proxel.se X-Loopia-Originating-IP: 158.174.129.34 Received: from [192.168.0.189] (h-158-174-129-34.NA.cust.bahnhof.se [158.174.129.34]) (Authenticated sender: andreas@proxel.se) by s899.loopia.se (Postfix) with ESMTPSA id ABEF32C8BAB8; Sat, 21 Dec 2024 22:45:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proxel.se; s=loopiadkim1707418970; t=1734817525; bh=NOH3Qr5013hkdXw/FZ6gZfsQlYZaE9mwerfq8/TvoDk=; h=Date:Subject:From:To:Cc:References:In-Reply-To; b=fm5zBmyax+Nk/sGrg9qo1onMROxktYvCsU1wmvVuLd+ixjYJjOfJd56Rx4xbDNAFO aSwIYPh10kSo2mx+TlKMKzkr7KhvMYFizI7scBjkc50BVkKPAT4uv/iWIxVh2K9MY3 3jBsI7aOxm4oqBt4tuydyWdHniI/M0PDD6xre67ZP+BTrh49N3wfQ8KE59LHHtnQte NFgKTjfXpUsz1p6PmaERqyIz4t7ivFUvyxgU7cB27EB0Y7Ip2/bcX88lcN6hcTWzJD mOIaXhkRcmzVWlVI562lYVE+ZUO0ZG39IillLW3gew9jZW+XvFwrOgCteFNj3VuevA 6r/C4+xsScDpQ== Content-Type: multipart/mixed; boundary="------------t9zXGONM0lSPAZ40GJ52yR00" Message-ID: <589d56c7-4e43-4feb-8f94-244dd03ff816@proxel.se> Date: Sat, 21 Dec 2024 22:45:25 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL Property Graph Queries (SQL/PGQ) From: Andreas Karlsson To: Ashutosh Bapat , Ajay Pal Cc: Imran Zaheer , Peter Eisentraut , pgsql-hackers References: <04c0abe2-e9c5-4ffc-97b2-bedc1e3cd178@eisentraut.org> <0b862b93-dc70-4ba1-b27f-e09104bc4c2c@proxel.se> Content-Language: en-US In-Reply-To: <0b862b93-dc70-4ba1-b27f-e09104bc4c2c@proxel.se> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------t9zXGONM0lSPAZ40GJ52yR00 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 10/29/24 8:55 PM, Andreas Karlsson wrote: > I especially dislike the static variable in our patch. And as far as I > understand it you can avoid the static by changing the lexer to use the > push parser so it can emit multiple terminal tokens from one parsed > token, but I have not looked into push parsers and have no idea how this > would affect performance. Updated the patch to remove the static variable. No clue why I thought that one was necessary. Andreas --------------t9zXGONM0lSPAZ40GJ52yR00 Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-Broken-out-tokeniziation-of-arrows.patch" Content-Disposition: attachment; filename="v2-0001-Broken-out-tokeniziation-of-arrows.patch" Content-Transfer-Encoding: base64 RnJvbSA3OWU5NDc0ZmQwMmZhYjcyMTBiZWQ2YTVhM2RiM2JjNTdkNzI1MTkzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIEthcmxzc29uIDxhbmRyZWFzQHByb3hl bC5zZT4KRGF0ZTogVHVlLCAyOSBPY3QgMjAyNCAyMDoyMzoyNCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjJdIEJyb2tlbiBvdXQgdG9rZW5pemlhdGlvbiBvZiBhcnJvd3MKCi0tLQogc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgIHwgMjAgKysrKysrKysrKysrKysrLS0t CiBzcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sICAgICAgICAgfCAzNSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmMvZmVfdXRpbHMvcHNxbHNjYW4ubCAgICAgICAgICAg fCAgNSArKysrKwogc3JjL2luY2x1ZGUvcGFyc2VyL3NjYW5uZXIuaCAgICAgIHwgIDEgKwog c3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BnYy5sIHwgMzQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBzcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55ICAgICAgfCAg MSArCiA2IGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKaW5kZXggNjdlYjk2Mzk2YWYuLjE3OTA2OWUwMjk5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKQEAgLTY4MSw2ICs2ODEsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2 ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogJXRva2VuIDxpdmFsPglJQ09OU1QgUEFSQU0KICV0b2tlbgkJCVRZUEVDQVNUIERPVF9E T1QgQ09MT05fRVFVQUxTIEVRVUFMU19HUkVBVEVSCiAldG9rZW4JCQlMRVNTX0VRVUFMUyBH UkVBVEVSX0VRVUFMUyBOT1RfRVFVQUxTCisldG9rZW4JCQlMRUZUX0FSUk9XX0xFU1MgTEVG VF9BUlJPV19NSU5VUyBSSUdIVF9BUlJPVwogCiAvKgogICogSWYgeW91IHdhbnQgdG8gbWFr ZSBhbnkga2V5d29yZCBjaGFuZ2VzLCB1cGRhdGUgdGhlIGtleXdvcmQgdGFibGUgaW4KQEAg LTgyMSw3ICs4MjIsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJWxlZnQJCUFO RAogJXJpZ2h0CQlOT1QKICVub25hc3NvYwlJUyBJU05VTEwgTk9UTlVMTAkvKiBJUyBzZXRz IHByZWNlZGVuY2UgZm9yIElTIE5VTEwsIGV0YyAqLwotJW5vbmFzc29jCSc8JyAnPicgJz0n IExFU1NfRVFVQUxTIEdSRUFURVJfRVFVQUxTIE5PVF9FUVVBTFMKKyVub25hc3NvYwknPCcg TEVGVF9BUlJPV19MRVNTICc+JyAnPScgTEVTU19FUVVBTFMgR1JFQVRFUl9FUVVBTFMgTk9U X0VRVUFMUwogJW5vbmFzc29jCUJFVFdFRU4gSU5fUCBMSUtFIElMSUtFIFNJTUlMQVIgTk9U X0xBCiAlbm9uYXNzb2MJRVNDQVBFCQkJLyogRVNDQVBFIG11c3QgYmUganVzdCBhYm92ZSBM SUtFL0lMSUtFL1NJTUlMQVIgKi8KIApAQCAtODc0LDggKzg3NSw4IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAlbm9uYXNzb2MJVU5CT1VOREVEIE5FU1RFRCAvKiBpZGVhbGx5 IHdvdWxkIGhhdmUgc2FtZSBwcmVjZWRlbmNlIGFzIElERU5UICovCiAlbm9uYXNzb2MJSURF TlQgUEFSVElUSU9OIFJBTkdFIFJPV1MgR1JPVVBTIFBSRUNFRElORyBGT0xMT1dJTkcgQ1VC RSBST0xMVVAKIAkJCVNFVCBLRVlTIE9CSkVDVF9QIFNDQUxBUiBWQUxVRV9QIFdJVEggV0lU SE9VVCBQQVRICi0lbGVmdAkJT3AgT1BFUkFUT1IJCS8qIG11bHRpLWNoYXJhY3RlciBvcHMg YW5kIHVzZXItZGVmaW5lZCBvcGVyYXRvcnMgKi8KLSVsZWZ0CQknKycgJy0nCislbGVmdAkJ T3AgT1BFUkFUT1IgUklHSFRfQVJST1cJLyogbXVsdGktY2hhcmFjdGVyIG9wcyBhbmQgdXNl ci1kZWZpbmVkIG9wZXJhdG9ycyAqLworJWxlZnQJCScrJyAnLScgTEVGVF9BUlJPV19NSU5V UwogJWxlZnQJCScqJyAnLycgJyUnCiAlbGVmdAkJJ14nCiAvKiBVbmFyeSBPcGVyYXRvcnMg Ki8KQEAgLTE0ODkzLDYgKzE0ODk0LDggQEAgYV9leHByOgkJY19leHByCQkJCQkJCQkJeyAk JCA9ICQxOyB9CiAJCQkJeyAkJCA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJf T1AsICIrIiwgTlVMTCwgJDIsIEAxKTsgfQogCQkJfCAnLScgYV9leHByCQkJCQklcHJlYyBV TUlOVVMKIAkJCQl7ICQkID0gZG9OZWdhdGUoJDIsIEAxKTsgfQorCQkJfCBMRUZUX0FSUk9X X01JTlVTIGFfZXhwcgkJJXByZWMgVU1JTlVTCisJCQkJeyAkJCA9IGRvTmVnYXRlKCQyLCBA MSk7IH0KIAkJCXwgYV9leHByICcrJyBhX2V4cHIKIAkJCQl7ICQkID0gKE5vZGUgKikgbWFr ZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIisiLCAkMSwgJDMsIEAyKTsgfQogCQkJfCBhX2V4 cHIgJy0nIGFfZXhwcgpAQCAtMTQ5MDcsNiArMTQ5MTAsOCBAQCBhX2V4cHI6CQljX2V4cHIJ CQkJCQkJCQl7ICQkID0gJDE7IH0KIAkJCQl7ICQkID0gKE5vZGUgKikgbWFrZVNpbXBsZUFf RXhwcihBRVhQUl9PUCwgIl4iLCAkMSwgJDMsIEAyKTsgfQogCQkJfCBhX2V4cHIgJzwnIGFf ZXhwcgogCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAi PCIsICQxLCAkMywgQDIpOyB9CisJCQl8IGFfZXhwciBMRUZUX0FSUk9XX0xFU1MgYV9leHBy CisJCQkJeyAkJCA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsICI8Iiwg JDEsICQzLCBAMik7IH0KIAkJCXwgYV9leHByICc+JyBhX2V4cHIKIAkJCQl7ICQkID0gKE5v ZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIj4iLCAkMSwgJDMsIEAyKTsgfQog CQkJfCBhX2V4cHIgJz0nIGFfZXhwcgpAQCAtMTQ5MTcsNiArMTQ5MjIsOCBAQCBhX2V4cHI6 CQljX2V4cHIJCQkJCQkJCQl7ICQkID0gJDE7IH0KIAkJCQl7ICQkID0gKE5vZGUgKikgbWFr ZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIj49IiwgJDEsICQzLCBAMik7IH0KIAkJCXwgYV9l eHByIE5PVF9FUVVBTFMgYV9leHByCiAJCQkJeyAkJCA9IChOb2RlICopIG1ha2VTaW1wbGVB X0V4cHIoQUVYUFJfT1AsICI8PiIsICQxLCAkMywgQDIpOyB9CisJCQl8IGFfZXhwciBSSUdI VF9BUlJPVyBhX2V4cHIKKwkJCQl7ICQkID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihB RVhQUl9PUCwgIi0+IiwgJDEsICQzLCBAMik7IH0KIAogCQkJfCBhX2V4cHIgcXVhbF9PcCBh X2V4cHIJCQkJJXByZWMgT3AKIAkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUFfRXhwcihBRVhQ Ul9PUCwgJDIsICQxLCAkMywgQDIpOyB9CkBAIC0xNTM4Niw2ICsxNTM5Myw4IEBAIGJfZXhw cjoJCWNfZXhwcgogCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBS X09QLCAiXiIsICQxLCAkMywgQDIpOyB9CiAJCQl8IGJfZXhwciAnPCcgYl9leHByCiAJCQkJ eyAkJCA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsICI8IiwgJDEsICQz LCBAMik7IH0KKwkJCXwgYl9leHByIExFRlRfQVJST1dfTEVTUyBiX2V4cHIKKwkJCQl7ICQk ID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIjwiLCAkMSwgJDMsIEAy KTsgfQogCQkJfCBiX2V4cHIgJz4nIGJfZXhwcgogCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtl U2ltcGxlQV9FeHByKEFFWFBSX09QLCAiPiIsICQxLCAkMywgQDIpOyB9CiAJCQl8IGJfZXhw ciAnPScgYl9leHByCkBAIC0xNTM5Niw2ICsxNTQwNSw4IEBAIGJfZXhwcjoJCWNfZXhwcgog CQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAiPj0iLCAk MSwgJDMsIEAyKTsgfQogCQkJfCBiX2V4cHIgTk9UX0VRVUFMUyBiX2V4cHIKIAkJCQl7ICQk ID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIjw+IiwgJDEsICQzLCBA Mik7IH0KKwkJCXwgYl9leHByIFJJR0hUX0FSUk9XIGJfZXhwcgorCQkJCXsgJCQgPSAoTm9k ZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAiLT4iLCAkMSwgJDMsIEAyKTsgfQog CQkJfCBiX2V4cHIgcXVhbF9PcCBiX2V4cHIJCQkJJXByZWMgT3AKIAkJCQl7ICQkID0gKE5v ZGUgKikgbWFrZUFfRXhwcihBRVhQUl9PUCwgJDIsICQxLCAkMywgQDIpOyB9CiAJCQl8IHF1 YWxfT3AgYl9leHByCQkJCQklcHJlYyBPcApAQCAtMTY1NTQsMTYgKzE2NTY1LDE5IEBAIGFs bF9PcDoJCU9wCQkJCQkJCQkJCXsgJCQgPSAkMTsgfQogCiBNYXRoT3A6CQkgJysnCQkJCQkJ CQkJeyAkJCA9ICIrIjsgfQogCQkJfCAnLScJCQkJCQkJCQl7ICQkID0gIi0iOyB9CisJCQl8 IExFRlRfQVJST1dfTUlOVVMJCQkJCQl7ICQkID0gIi0iOyB9CiAJCQl8ICcqJwkJCQkJCQkJ CXsgJCQgPSAiKiI7IH0KIAkJCXwgJy8nCQkJCQkJCQkJeyAkJCA9ICIvIjsgfQogCQkJfCAn JScJCQkJCQkJCQl7ICQkID0gIiUiOyB9CiAJCQl8ICdeJwkJCQkJCQkJCXsgJCQgPSAiXiI7 IH0KIAkJCXwgJzwnCQkJCQkJCQkJeyAkJCA9ICI8IjsgfQorCQkJfCBMRUZUX0FSUk9XX0xF U1MJCQkJCQl7ICQkID0gIjwiOyB9CiAJCQl8ICc+JwkJCQkJCQkJCXsgJCQgPSAiPiI7IH0K IAkJCXwgJz0nCQkJCQkJCQkJeyAkJCA9ICI9IjsgfQogCQkJfCBMRVNTX0VRVUFMUwkJCQkJ CQl7ICQkID0gIjw9IjsgfQogCQkJfCBHUkVBVEVSX0VRVUFMUwkJCQkJCXsgJCQgPSAiPj0i OyB9CiAJCQl8IE5PVF9FUVVBTFMJCQkJCQkJeyAkJCA9ICI8PiI7IH0KKwkJCXwgUklHSFRf QVJST1cJCQkJCQkJeyAkJCA9ICItPiI7IH0KIAkJOwogCiBxdWFsX09wOglPcApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW4ubCBiL3NyYy9iYWNrZW5kL3BhcnNlci9z Y2FuLmwKaW5kZXggNzI0MDRlNzJmZmYuLmExN2U0MmQwZWYxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvc2Nhbi5sCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9zY2FuLmwK QEAgLTM2Niw2ICszNjYsNyBAQCBsZXNzX2VxdWFscwkJIjw9IgogZ3JlYXRlcl9lcXVhbHMJ Ij49IgogbGVzc19ncmVhdGVyCSI8PiIKIG5vdF9lcXVhbHMJCSIhPSIKK3JpZ2h0X2Fycm93 CQkiLT4iCiAKIC8qCiAgKiAic2VsZiIgaXMgdGhlIHNldCBvZiBjaGFycyB0aGF0IHNob3Vs ZCBiZSByZXR1cm5lZCBhcyBzaW5nbGUtY2hhcmFjdGVyCkBAIC04OTIsOCArODkzLDE4IEBA IG90aGVyCQkJLgogCQkJCQlyZXR1cm4gTk9UX0VRVUFMUzsKIAkJCQl9CiAKK3tyaWdodF9h cnJvd30JeworCQkJCQlTRVRfWVlMTE9DKCk7CisJCQkJCXJldHVybiBSSUdIVF9BUlJPVzsK KwkJCQl9CisKIHtzZWxmfQkJCXsKIAkJCQkJU0VUX1lZTExPQygpOworCQkJCQlpZiAoeXl0 ZXh0WzBdID09ICctJyAmJiB5eWV4dHJhLT5pbmxlZnRhcnJvdykKKwkJCQkJeworCQkJCQkJ eXlleHRyYS0+aW5sZWZ0YXJyb3cgPSBmYWxzZTsKKwkJCQkJCXJldHVybiBMRUZUX0FSUk9X X01JTlVTOworCQkJCQl9CiAJCQkJCXJldHVybiB5eXRleHRbMF07CiAJCQkJfQogCkBAIC05 MTksNiArOTMwLDI2IEBAIG90aGVyCQkJLgogCQkJCQlpZiAoc2xhc2hzdGFyKQogCQkJCQkJ bmNoYXJzID0gc2xhc2hzdGFyIC0geXl0ZXh0OwogCisJCQkJCWlmIChuY2hhcnMgPT0gMiAm JiB5eXRleHRbMF0gPT0gJzwnICYmIHl5dGV4dFsxXSA9PSAnLScpCisJCQkJCXsKKwkJCQkJ CS8qIFN0cmlwIHRoZSB1bndhbnRlZCBjaGFycyBmcm9tIHRoZSB0b2tlbiAqLworCQkJCQkJ eXlsZXNzKDEpOworCisJCQkJCQl5eWV4dHJhLT5pbmxlZnRhcnJvdyA9IHRydWU7CisKKwkJ CQkJCXJldHVybiBMRUZUX0FSUk9XX0xFU1M7CisJCQkJCX0KKworCQkJCQlpZiAobmNoYXJz ID09IDEgJiYgeXl0ZXh0WzBdID09ICctJyAmJiB5eWV4dHJhLT5pbmxlZnRhcnJvdykKKwkJ CQkJeworCQkJCQkJLyogU3RyaXAgdGhlIHVud2FudGVkIGNoYXJzIGZyb20gdGhlIHRva2Vu ICovCisJCQkJCQlpZiAobmNoYXJzIDwgeXlsZW5nKQorCQkJCQkJCXl5bGVzcyhuY2hhcnMp OworCisJCQkJCQl5eWV4dHJhLT5pbmxlZnRhcnJvdyA9IGZhbHNlOworCQkJCQkJcmV0dXJu IExFRlRfQVJST1dfTUlOVVM7CisJCQkJCX0KKwogCQkJCQkvKgogCQkJCQkgKiBGb3IgU1FM IGNvbXBhdGliaWxpdHksICcrJyBhbmQgJy0nIGNhbm5vdCBiZSB0aGUKIAkJCQkJICogbGFz dCBjaGFyIG9mIGEgbXVsdGktY2hhciBvcGVyYXRvciB1bmxlc3MgdGhlIG9wZXJhdG9yCkBA IC05ODksNiArMTAyMCw4IEBAIG90aGVyCQkJLgogCQkJCQkJCQlyZXR1cm4gTk9UX0VRVUFM UzsKIAkJCQkJCQlpZiAoeXl0ZXh0WzBdID09ICchJyAmJiB5eXRleHRbMV0gPT0gJz0nKQog CQkJCQkJCQlyZXR1cm4gTk9UX0VRVUFMUzsKKwkJCQkJCQlpZiAoeXl0ZXh0WzBdID09ICct JyAmJiB5eXRleHRbMV0gPT0gJz4nKQorCQkJCQkJCQlyZXR1cm4gUklHSFRfQVJST1c7CiAJ CQkJCQl9CiAJCQkJCX0KIApAQCAtMTI5NCw2ICsxMzI3LDggQEAgc2Nhbm5lcl9pbml0KGNv bnN0IGNoYXIgKnN0ciwKIAl5eWV4dC0+bGl0ZXJhbGJ1ZiA9IChjaGFyICopIHBhbGxvYyh5 eWV4dC0+bGl0ZXJhbGFsbG9jKTsKIAl5eWV4dC0+bGl0ZXJhbGxlbiA9IDA7CiAKKwl5eWV4 dC0+aW5sZWZ0YXJyb3cgPSBmYWxzZTsKKwogCXJldHVybiBzY2FubmVyOwogfQogCmRpZmYg LS1naXQgYS9zcmMvZmVfdXRpbHMvcHNxbHNjYW4ubCBiL3NyYy9mZV91dGlscy9wc3Fsc2Nh bi5sCmluZGV4IDhlOGIwNDllMTVmLi42ZjhmZDdjZDI1OCAxMDA2NDQKLS0tIGEvc3JjL2Zl X3V0aWxzL3BzcWxzY2FuLmwKKysrIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwKQEAgLTMw Miw2ICszMDIsNyBAQCBsZXNzX2VxdWFscwkJIjw9IgogZ3JlYXRlcl9lcXVhbHMJIj49Igog bGVzc19ncmVhdGVyCSI8PiIKIG5vdF9lcXVhbHMJCSIhPSIKK3JpZ2h0X2Fycm93ICAgICAi LT4iCiAKIC8qCiAgKiAic2VsZiIgaXMgdGhlIHNldCBvZiBjaGFycyB0aGF0IHNob3VsZCBi ZSByZXR1cm5lZCBhcyBzaW5nbGUtY2hhcmFjdGVyCkBAIC02NjEsNiArNjYyLDEwIEBAIG90 aGVyCQkJLgogCQkJCQlFQ0hPOwogCQkJCX0KIAore3JpZ2h0X2Fycm93fQl7CisJCQkJCUVD SE87CisJCQkJfQorCiAJLyoKIAkgKiBUaGVzZSBydWxlcyBhcmUgc3BlY2lmaWMgdG8gcHNx bCAtLS0gdGhleSBpbXBsZW1lbnQgcGFyZW50aGVzaXMKIAkgKiBjb3VudGluZyBhbmQgZGV0 ZWN0aW9uIG9mIGNvbW1hbmQtZW5kaW5nIHNlbWljb2xvbi4gIFRoZXNlIG11c3QKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9zY2FubmVyLmggYi9zcmMvaW5jbHVkZS9wYXJz ZXIvc2Nhbm5lci5oCmluZGV4IGQ2MjkzYjFlODc4Li42MTY0N2JlOTI4YyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3NjYW5uZXIuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIvc2Nhbm5lci5oCkBAIC0xMDUsNiArMTA1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgY29yZV95 eV9leHRyYV90eXBlCiAJaW50CQkJc3RhdGVfYmVmb3JlX3N0cl9zdG9wOwkvKiBzdGFydCBj b25kLiBiZWZvcmUgZW5kIHF1b3RlICovCiAJaW50CQkJeGNkZXB0aDsJCS8qIGRlcHRoIG9m IG5lc3RpbmcgaW4gc2xhc2gtc3RhciBjb21tZW50cyAqLwogCWNoYXIJICAgKmRvbHFzdGFy dDsJCS8qIGN1cnJlbnQgJGZvbyQgcXVvdGUgc3RhcnQgc3RyaW5nICovCisJYm9vbAkJaW5s ZWZ0YXJyb3c7CS8qIGFyZSB3ZSBwYXJzaW5nIGEgLT4gb3BlcmF0b3I/ICovCiAJWVlMVFlQ RQkJc2F2ZV95eWxsb2M7CS8qIG9uZS1lbGVtZW50IHN0YWNrIGZvciBQVVNIX1lZTExPQygp ICovCiAKIAkvKiBmaXJzdCBwYXJ0IG9mIFVURjE2IHN1cnJvZ2F0ZSBwYWlyIGZvciBVbmlj b2RlIGVzY2FwZXMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJv Yy9wZ2MubCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wZ2MubAppbmRleCA4Mjcw ODAxM2VlNi4uNWVhODgxMTdhYTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcv cHJlcHJvYy9wZ2MubAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGdjLmwK QEAgLTMzNSw2ICszMzUsNyBAQCBsZXNzX2VxdWFscwkJIjw9IgogZ3JlYXRlcl9lcXVhbHMJ Ij49IgogbGVzc19ncmVhdGVyCSI8PiIKIG5vdF9lcXVhbHMJCSIhPSIKK3JpZ2h0X2Fycm93 CQkiLT4iCiAKIC8qCiAgKiAic2VsZiIgaXMgdGhlIHNldCBvZiBjaGFycyB0aGF0IHNob3Vs ZCBiZSByZXR1cm5lZCBhcyBzaW5nbGUtY2hhcmFjdGVyCkBAIC00NjMsNiArNDY0LDggQEAg Y3BwbGluZQkJCXtzcGFjZX0qIyhbXmldW0EtWmEtel0qfHtpZn18e2lmZGVmfXx7aWZuZGVm fXx7aW1wb3J0fSkoKFwvXCpbXiovXSpcKisKICUlCiAKICV7CisJCXN0YXRpYyBib29sIGlu bGVmdGFycm93ID0gZmFsc2U7CisKIAkJLyogY29kZSB0byBleGVjdXRlIGR1cmluZyBzdGFy dCBvZiBlYWNoIGNhbGwgb2YgeXlsZXgoKSAqLwogCQljaGFyICpuZXdkZWZzeW1ib2wgPSBO VUxMOwogCkBAIC04NTQsNiArODU3LDEwIEBAIGNwcGxpbmUJCQl7c3BhY2V9KiMoW15pXVtB LVphLXpdKnx7aWZ9fHtpZmRlZn18e2lmbmRlZn18e2ltcG9ydH0pKChcL1wqW14qL10qXCor CiAJCQkJCXJldHVybiBOT1RfRVFVQUxTOwogCQkJCX0KIAore3JpZ2h0X2Fycm93fQl7CisJ CQkJCXJldHVybiBSSUdIVF9BUlJPVzsKKwkJCQl9CisKIHtpbmZvcm1peF9zcGVjaWFsfSB7 CiAJCQkJCS8qIGFyZSB3ZSBzaW11bGF0aW5nIEluZm9ybWl4PyAqLwogCQkJCQlpZiAoSU5G T1JNSVhfTU9ERSkKQEAgLTg3MSw2ICs4NzgsMTEgQEAgY3BwbGluZQkJCXtzcGFjZX0qIyhb XmldW0EtWmEtel0qfHtpZn18e2lmZGVmfXx7aWZuZGVmfXx7aW1wb3J0fSkoKFwvXCpbXiov XSpcKisKIAkJCQkJICovCiAJCQkJCWlmICh5eXRleHRbMF0gPT0gJzsnICYmIHN0cnVjdF9s ZXZlbCA9PSAwKQogCQkJCQkJQkVHSU4oQyk7CisJCQkJCWlmICh5eXRleHRbMF0gPT0gJy0n ICYmIGlubGVmdGFycm93KQorCQkJCQl7CisJCQkJCQlpbmxlZnRhcnJvdyA9IGZhbHNlOwor CQkJCQkJcmV0dXJuIExFRlRfQVJST1dfTUlOVVM7CisJCQkJCX0KIAkJCQkJcmV0dXJuIHl5 dGV4dFswXTsKIAkJCQl9CiAKQEAgLTg5Niw2ICs5MDgsMjYgQEAgY3BwbGluZQkJCXtzcGFj ZX0qIyhbXmldW0EtWmEtel0qfHtpZn18e2lmZGVmfXx7aWZuZGVmfXx7aW1wb3J0fSkoKFwv XCpbXiovXSpcKisKIAkJCQkJaWYgKHNsYXNoc3RhcikKIAkJCQkJCW5jaGFycyA9IHNsYXNo c3RhciAtIHl5dGV4dDsKIAorCQkJCQlpZiAobmNoYXJzID09IDIgJiYgeXl0ZXh0WzBdID09 ICc8JyAmJiB5eXRleHRbMV0gPT0gJy0nKQorCQkJCQl7CisJCQkJCQkvKiBTdHJpcCB0aGUg dW53YW50ZWQgY2hhcnMgZnJvbSB0aGUgdG9rZW4gKi8KKwkJCQkJCXl5bGVzcygxKTsKKwor CQkJCQkJaW5sZWZ0YXJyb3cgPSB0cnVlOworCisJCQkJCQlyZXR1cm4gTEVGVF9BUlJPV19M RVNTOworCQkJCQl9CisKKwkJCQkJaWYgKG5jaGFycyA9PSAxICYmIHl5dGV4dFswXSA9PSAn LScgJiYgaW5sZWZ0YXJyb3cpCisJCQkJCXsKKwkJCQkJCS8qIFN0cmlwIHRoZSB1bndhbnRl ZCBjaGFycyBmcm9tIHRoZSB0b2tlbiAqLworCQkJCQkJaWYgKG5jaGFycyA8IHl5bGVuZykK KwkJCQkJCQl5eWxlc3MobmNoYXJzKTsKKworCQkJCQkJaW5sZWZ0YXJyb3cgPSBmYWxzZTsK KwkJCQkJCXJldHVybiBMRUZUX0FSUk9XX01JTlVTOworCQkJCQl9CisKIAkJCQkJLyoKIAkJ CQkJICogRm9yIFNRTCBjb21wYXRpYmlsaXR5LCAnKycgYW5kICctJyBjYW5ub3QgYmUgdGhl CiAJCQkJCSAqIGxhc3QgY2hhciBvZiBhIG11bHRpLWNoYXIgb3BlcmF0b3IgdW5sZXNzIHRo ZSBvcGVyYXRvcgpAQCAtOTY4LDYgKzEwMDAsOCBAQCBjcHBsaW5lCQkJe3NwYWNlfSojKFte aV1bQS1aYS16XSp8e2lmfXx7aWZkZWZ9fHtpZm5kZWZ9fHtpbXBvcnR9KSgoXC9cKlteKi9d KlwqKwogCQkJCQkJCQlyZXR1cm4gTk9UX0VRVUFMUzsKIAkJCQkJCQlpZiAoeXl0ZXh0WzBd ID09ICchJyAmJiB5eXRleHRbMV0gPT0gJz0nKQogCQkJCQkJCQlyZXR1cm4gTk9UX0VRVUFM UzsKKwkJCQkJCQlpZiAoeXl0ZXh0WzBdID09ICctJyAmJiB5eXRleHRbMV0gPT0gJz4nKQor CQkJCQkJCQlyZXR1cm4gUklHSFRfQVJST1c7CiAJCQkJCQl9CiAJCQkJCX0KIApkaWZmIC0t Z2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueSBiL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9ncmFtLnkKaW5kZXggODE4MmNlMjhhYTEuLmM1Y2VhMzc5NTU0IDEwMDY0NAotLS0g YS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55CisrKyBiL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9ncmFtLnkKQEAgLTIzNyw2ICsyMzcsNyBAQCBzdGF0aWMJdm9pZAkJCWNoZWNrX3Jh aXNlX3BhcmFtZXRlcnMoUExwZ1NRTF9zdG10X3JhaXNlICpzdG10KTsKICV0b2tlbiA8aXZh bD4JSUNPTlNUIFBBUkFNCiAldG9rZW4JCQlUWVBFQ0FTVCBET1RfRE9UIENPTE9OX0VRVUFM UyBFUVVBTFNfR1JFQVRFUgogJXRva2VuCQkJTEVTU19FUVVBTFMgR1JFQVRFUl9FUVVBTFMg Tk9UX0VRVUFMUworJXRva2VuCQkJTEVGVF9BUlJPV19MRVNTIExFRlRfQVJST1dfTUlOVVMg UklHSFRfQVJST1cKIAogLyoKICAqIE90aGVyIHRva2VucyByZWNvZ25pemVkIGJ5IHBscGdz cWwncyBsZXhlciBpbnRlcmZhY2UgbGF5ZXIgKHBsX3NjYW5uZXIuYykuCi0tIAoyLjQ1LjIK Cg== --------------t9zXGONM0lSPAZ40GJ52yR00--