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 1seFxK-005RAN-3p for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Aug 2024 15:30:34 +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 1seFxI-00B80k-77 for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Aug 2024 15:30:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1seFxH-00B80b-OY for pgsql-hackers@lists.postgresql.org; Wed, 14 Aug 2024 15:30:31 +0000 Received: from mail-lj1-x22d.google.com ([2a00:1450:4864:20::22d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1seFxF-004prh-69 for pgsql-hackers@lists.postgresql.org; Wed, 14 Aug 2024 15:30:30 +0000 Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2f1a7faa4d5so64574901fa.3 for ; Wed, 14 Aug 2024 08:30:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723649428; x=1724254228; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=r/ubBAkTMJq3HI9b+TodXrcUYzuIuAMBHuUsNTrBa+k=; b=kzMRwlGmi3pyZd7BKJnsZfDjHhLAoaDIKXabz2AKlQe2QuGUBYSmb5xOHg5//78OSw NH9e84UofBxiCGTHXGOLJavYgGxesR2kBje5qyU6kkCK7aG0DQ0X26+K1KDi5YNQjzFo l1iZhLHBxEz4Xw3+VprpyeUHGPr9cn3jBIhhXW+2s+bRSYL4mdGQ/D3AWD8C5Chq2HJK 1StComQt8FnN8HiaEe4jG+EZcXgw/zQCfT63egjUEVkOUwxcMTIfGbevotGOtEAeloP3 8Qy8eqz3PHFff7IqKTwFjAF/Onjg/+kK8xCOWQa9pFfvEWXGmmIxIxGS0x0NgiUviseR lIMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723649428; x=1724254228; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=r/ubBAkTMJq3HI9b+TodXrcUYzuIuAMBHuUsNTrBa+k=; b=GlfwDojyHe8zC078RNPngB+0uyW6iRFceM1CzLpdQedT2aDI6R/YhUZsureVYNN+84 eDKlU3OgYmc4LH5Q5Ja7RtehZ1be454ewBGnhtApSJG04RfiD7nr9rABrcw9ZXnDwgsd I4ny5XfNuYgGccdI9ll8eUJLbLXiDDTkOHdFDMbpkEbk8GWKtyo/GnKbN6Cfl3c64jZj 9BmZp8P3SzvBdCHYvleQ3pQN6HKsh8F5ISHbkf5jUOBsuDIzErkBjYBFGZaSsh0O+TZm y1dnPlEH7Mt3Yg2f3Ex8Zd2KsADp8+U+8Kk8S0oishatk0ous2ic8U69vO9M+9f8BKzM O6Kg== X-Forwarded-Encrypted: i=1; AJvYcCUoNqacysvXOyv3dFYBYpDCWEDP7DW+C2zOi13xFovgLWovZdWKZuBEiJgDyGImJzu76hXgx2aWDRHHbGeX@lists.postgresql.org X-Gm-Message-State: AOJu0YwEYu2YOgJBbfcegHwweMlRVJAija/v1J6BGXvMtjj7Z67D63dL SY0CywbyuU7Xh6URsqXEeRVdk7kZRihD7pbC9fqtO1gU5RF5usZFKgKxAokGsVTz6Ag+4vhf8fO Ix+rOEMLnqyVfV+oPzUWxWVJ+Xec= X-Google-Smtp-Source: AGHT+IHkv6ViGuW+HS/+J6EzjG4bTgKgzNn+EYV48as2al54ItcyqspwHmz2JeAz896tLuFsoe/Z+kfVn5x+qIMDrng= X-Received: by 2002:a2e:b890:0:b0:2ef:2bb4:2ea1 with SMTP id 38308e7fff4ca-2f3aa1d80aamr22214671fa.4.1723649426947; Wed, 14 Aug 2024 08:30:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Maxim Orlov Date: Wed, 14 Aug 2024 18:30:15 +0300 Message-ID: Subject: Re: POC: make mxidoff 64 bits To: wenhui qiu Cc: Heikki Linnakangas , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000cfbfd8061fa667c4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cfbfd8061fa667c4 Content-Type: text/plain; charset="UTF-8" Hi! Sorry for delay. I was a bit busy last month. Anyway, here is my proposal for making multioffsets 64 bit. The patch set consists of three parts: 0001 - making user output of offsets 64-bit ready; 0002 - making offsets 64-bit; 0003 - provide 32 to 64 bit conversion in pg_upgarde. I'm pretty sure this is just a beginning of the conversation, so any opinions and reviews, as always, are very welcome! -- Best regards, Maxim Orlov. --000000000000cfbfd8061fa667c4 Content-Type: application/x-patch; name="v1-0002-Use-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename="v1-0002-Use-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzu04uor1 RnJvbSAyZTFmMDViM2IwNTA0MTUzZTU3MTg4ZTk2OGJiMTljYjY3NDFjMDg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA2IE1hciAyMDI0IDExOjExOjMzICswMzAwClN1YmplY3Q6IFtQQVRDSCB2MSAy LzNdIFVzZSA2NC1iaXQgbXVsdGl4YWN0IG9mZnNldHMuCgpBdXRob3I6IE1heGltIE9ybG92IDxv cmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYyB8IDE4MiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmluL3BnX3Jlc2V0d2Fs L3BnX3Jlc2V0d2FsLmMgICAgICB8ICAgMiArLQogc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9i YXNpYy5wbCAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAg ICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArLQogNSBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxNzQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCA1N2M1MTQ4OTMzLi5m MmEyYWE5NTQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtOTUs MTQgKzk1LDYgQEAKIC8qCiAgKiBEZWZpbmVzIGZvciBNdWx0aVhhY3RPZmZzZXQgcGFnZSBzaXpl cy4gIEEgcGFnZSBpcyB0aGUgc2FtZSBCTENLU1ogYXMgaXMKICAqIHVzZWQgZXZlcnl3aGVyZSBl bHNlIGluIFBvc3RncmVzLgotICoKLSAqIE5vdGU6IGJlY2F1c2UgTXVsdGlYYWN0T2Zmc2V0cyBh cmUgMzIgYml0cyBhbmQgd3JhcCBhcm91bmQgYXQgMHhGRkZGRkZGRiwKLSAqIE11bHRpWGFjdCBw YWdlIG51bWJlcmluZyBhbHNvIHdyYXBzIGFyb3VuZCBhdAotICogMHhGRkZGRkZGRi9NVUxUSVhB Q1RfT0ZGU0VUU19QRVJfUEFHRSwgYW5kIHNlZ21lbnQgbnVtYmVyaW5nIGF0Ci0gKiAweEZGRkZG RkZGL01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFL1NMUlVfUEFHRVNfUEVSX1NFR01FTlQuICBX ZSBuZWVkCi0gKiB0YWtlIG5vIGV4cGxpY2l0IG5vdGljZSBvZiB0aGF0IGZhY3QgaW4gdGhpcyBt b2R1bGUsIGV4Y2VwdCB3aGVuIGNvbXBhcmluZwotICogc2VnbWVudCBhbmQgcGFnZSBudW1iZXJz IGluIFRydW5jYXRlTXVsdGlYYWN0IChzZWUKLSAqIE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRl cykuCiAgKi8KIAogLyogV2UgbmVlZCBmb3VyIGJ5dGVzIHBlciBvZmZzZXQgKi8KQEAgLTE3NCw3 ICsxNjYsNyBAQCBNWE9mZnNldFRvTWVtYmVyUGFnZShNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQog CXJldHVybiBvZmZzZXQgLyBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRTsKIH0KIAotc3RhdGlj IGlubGluZSBpbnQKK3N0YXRpYyBpbmxpbmUgaW50NjQKIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50 KE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCiB7CiAJcmV0dXJuIE1YT2Zmc2V0VG9NZW1iZXJQYWdl KG9mZnNldCkgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOwpAQCAtMjcxLDkgKzI2Myw2IEBAIHR5 cGVkZWYgc3RydWN0IE11bHRpWGFjdFN0YXRlRGF0YQogCU11bHRpWGFjdElkIG11bHRpU3RvcExp bWl0OwogCU11bHRpWGFjdElkIG11bHRpV3JhcExpbWl0OwogCi0JLyogc3VwcG9ydCBmb3IgbWVt YmVycyBhbnRpLXdyYXBhcm91bmQgbWVhc3VyZXMgKi8KLQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0 U3RvcExpbWl0OwkvKiBrbm93biBpZiBvbGRlc3RPZmZzZXRLbm93biAqLwotCiAJLyoKIAkgKiBU aGlzIGlzIHVzZWQgdG8gc2xlZXAgdW50aWwgYSBtdWx0aXhhY3Qgb2Zmc2V0IGlzIHdyaXR0ZW4g d2hlbiB3ZSB3YW50CiAJICogdG8gY3JlYXRlIHRoZSBuZXh0IG9uZS4KQEAgLTQwOCw4ICszOTcs NiBAQCBzdGF0aWMgYm9vbCBNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhhY3RPZmZzZXQg b2Zmc2V0MSwKIAkJCQkJCQkJCU11bHRpWGFjdE9mZnNldCBvZmZzZXQyKTsKIHN0YXRpYyB2b2lk IEV4dGVuZE11bHRpWGFjdE9mZnNldChNdWx0aVhhY3RJZCBtdWx0aSk7CiBzdGF0aWMgdm9pZCBF eHRlbmRNdWx0aVhhY3RNZW1iZXIoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCwgaW50IG5tZW1iZXJz KTsKLXN0YXRpYyBib29sIE11bHRpWGFjdE9mZnNldFdvdWxkV3JhcChNdWx0aVhhY3RPZmZzZXQg Ym91bmRhcnksCi0JCQkJCQkJCQkgTXVsdGlYYWN0T2Zmc2V0IHN0YXJ0LCB1aW50MzIgZGlzdGFu Y2UpOwogc3RhdGljIGJvb2wgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKTsK IHN0YXRpYyBib29sIGZpbmRfbXVsdGl4YWN0X3N0YXJ0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0 aVhhY3RPZmZzZXQgKnJlc3VsdCk7CiBzdGF0aWMgdm9pZCBXcml0ZU1aZXJvUGFnZVhsb2dSZWMo aW50NjQgcGFnZW5vLCB1aW50OCBpbmZvKTsKQEAgLTExNTgsNzggKzExNDUsNiBAQCBHZXROZXdN dWx0aVhhY3RJZChpbnQgbm1lbWJlcnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQogCWVsc2UK IAkJKm9mZnNldCA9IG5leHRPZmZzZXQ7CiAKLQkvKi0tLS0tLS0tLS0KLQkgKiBQcm90ZWN0IGFn YWluc3Qgb3ZlcnJ1biBvZiB0aGUgbWVtYmVycyBzcGFjZSBhcyB3ZWxsLCB3aXRoIHRoZQotCSAq IGZvbGxvd2luZyBydWxlczoKLQkgKgotCSAqIElmIHdlJ3JlIHBhc3Qgb2Zmc2V0U3RvcExpbWl0 LCByZWZ1c2UgdG8gZ2VuZXJhdGUgbW9yZSBtdWx0aXMuCi0JICogSWYgd2UncmUgY2xvc2UgdG8g b2Zmc2V0U3RvcExpbWl0LCBlbWl0IGEgd2FybmluZy4KLQkgKgotCSAqIEFyYml0cmFyaWx5LCB3 ZSBzdGFydCBlbWl0dGluZyB3YXJuaW5ncyB3aGVuIHdlJ3JlIDIwIHNlZ21lbnRzIG9yIGxlc3MK LQkgKiBmcm9tIG9mZnNldFN0b3BMaW1pdC4KLQkgKgotCSAqIE5vdGUgd2UgaGF2ZW4ndCB1cGRh dGVkIHRoZSBzaGFyZWQgc3RhdGUgeWV0LCBzbyBpZiB3ZSBmYWlsIGF0IHRoaXMKLQkgKiBwb2lu dCwgdGhlIG11bHRpeGFjdCBJRCB3ZSBncmFiYmVkIGNhbiBzdGlsbCBiZSB1c2VkIGJ5IHRoZSBu ZXh0IGd1eS4KLQkgKgotCSAqIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBwb2ludCBpbiBmb3JjaW5n IGF1dG92YWN1dW0gcnVucyBoZXJlOiB0aGUKLQkgKiBtdWx0aXhhY3QgZnJlZXplIHNldHRpbmdz IHdvdWxkIGhhdmUgdG8gYmUgcmVkdWNlZCBmb3IgdGhhdCB0byBoYXZlIGFueQotCSAqIGVmZmVj dC4KLQkgKi0tLS0tLS0tLS0KLQkgKi8KLSNkZWZpbmUgT0ZGU0VUX1dBUk5fU0VHTUVOVFMJMjAK LQlpZiAoTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duICYmCi0JCU11bHRpWGFjdE9m ZnNldFdvdWxkV3JhcChNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0LCBuZXh0T2Zmc2V0 LAotCQkJCQkJCQkgbm1lbWJlcnMpKQotCXsKLQkJLyogc2VlIGNvbW1lbnQgaW4gdGhlIGNvcnJl c3BvbmRpbmcgb2Zmc2V0cyB3cmFwYXJvdW5kIGNhc2UgKi8KLQkJU2VuZFBvc3RtYXN0ZXJTaWdu YWwoUE1TSUdOQUxfU1RBUlRfQVVUT1ZBQ19MQVVOQ0hFUik7Ci0KLQkJZXJlcG9ydChFUlJPUiwK LQkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAotCQkJCSBlcnJt c2coIm11bHRpeGFjdCBcIm1lbWJlcnNcIiBsaW1pdCBleGNlZWRlZCIpLAotCQkJCSBlcnJkZXRh aWxfcGx1cmFsKCJUaGlzIGNvbW1hbmQgd291bGQgY3JlYXRlIGEgbXVsdGl4YWN0IHdpdGggJXUg bWVtYmVycywgYnV0IHRoZSByZW1haW5pbmcgc3BhY2UgaXMgb25seSBlbm91Z2ggZm9yICV1IG1l bWJlci4iLAotCQkJCQkJCQkgICJUaGlzIGNvbW1hbmQgd291bGQgY3JlYXRlIGEgbXVsdGl4YWN0 IHdpdGggJXUgbWVtYmVycywgYnV0IHRoZSByZW1haW5pbmcgc3BhY2UgaXMgb25seSBlbm91Z2gg Zm9yICV1IG1lbWJlcnMuIiwKLQkJCQkJCQkJICBNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExp bWl0IC0gbmV4dE9mZnNldCAtIDEsCi0JCQkJCQkJCSAgbm1lbWJlcnMsCi0JCQkJCQkJCSAgTXVs dGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCAtIG5leHRPZmZzZXQgLSAxKSwKLQkJCQkgZXJy aGludCgiRXhlY3V0ZSBhIGRhdGFiYXNlLXdpZGUgVkFDVVVNIGluIGRhdGFiYXNlIHdpdGggT0lE ICV1IHdpdGggcmVkdWNlZCBcInZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2VcIiBhbmQg XCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2VcIiBzZXR0aW5ncy4iLAotCQkJCQkJ IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3REQikpKTsKLQl9Ci0KLQkvKgotCSAqIENo ZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIGtpY2sgYXV0b3ZhY3V1bSBpbnRvIGFjdGlvbiwgdG8gcHJl dmVudCBtZW1iZXJzCi0JICogd3JhcGFyb3VuZC4gTkIgd2UgdXNlIGEgbXVjaCBsYXJnZXIgd2lu ZG93IHRvIHRyaWdnZXIgYXV0b3ZhY3V1bSB0aGFuCi0JICoganVzdCB0aGUgd2FybmluZyBsaW1p dC4gVGhlIHdhcm5pbmcgaXMganVzdCBhIG1lYXN1cmUgb2YgbGFzdCByZXNvcnQgLQotCSAqIHRo aXMgaXMgaW4gbGluZSB3aXRoIEdldE5ld1RyYW5zYWN0aW9uSWQncyBiZWhhdmlvdXIuCi0JICov Ci0JaWYgKCFNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gfHwKLQkJKE11bHRpWGFj dFN0YXRlLT5uZXh0T2Zmc2V0IC0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldAotCQkgPiBN VUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKSkKLQl7Ci0JCS8qCi0JCSAqIFRvIGF2b2lk IHN3YW1waW5nIHRoZSBwb3N0bWFzdGVyIHdpdGggc2lnbmFscywgd2UgaXNzdWUgdGhlIGF1dG92 YWMKLQkJICogcmVxdWVzdCBvbmx5IHdoZW4gY3Jvc3NpbmcgYSBzZWdtZW50IGJvdW5kYXJ5LiBX aXRoIGRlZmF1bHQKLQkJICogY29tcGlsYXRpb24gc2V0dGluZ3MgdGhhdCdzIHJvdWdobHkgYWZ0 ZXIgNTBrIG1lbWJlcnMuICBUaGlzIHN0aWxsCi0JCSAqIGdpdmVzIHBsZW50eSBvZiBjaGFuY2Vz IGJlZm9yZSB3ZSBnZXQgaW50byByZWFsIHRyb3VibGUuCi0JCSAqLwotCQlpZiAoKE1YT2Zmc2V0 VG9NZW1iZXJQYWdlKG5leHRPZmZzZXQpIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkgIT0KLQkJ CShNWE9mZnNldFRvTWVtYmVyUGFnZShuZXh0T2Zmc2V0ICsgbm1lbWJlcnMpIC8gU0xSVV9QQUdF U19QRVJfU0VHTUVOVCkpCi0JCQlTZW5kUG9zdG1hc3RlclNpZ25hbChQTVNJR05BTF9TVEFSVF9B VVRPVkFDX0xBVU5DSEVSKTsKLQl9Ci0KLQlpZiAoTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNl dEtub3duICYmCi0JCU11bHRpWGFjdE9mZnNldFdvdWxkV3JhcChNdWx0aVhhY3RTdGF0ZS0+b2Zm c2V0U3RvcExpbWl0LAotCQkJCQkJCQkgbmV4dE9mZnNldCwKLQkJCQkJCQkJIG5tZW1iZXJzICsg TVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UgKiBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UICogT0ZG U0VUX1dBUk5fU0VHTUVOVFMpKQotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKLQkJCQkgZXJybXNnX3BsdXJhbCgiZGF0YWJh c2Ugd2l0aCBPSUQgJXUgbXVzdCBiZSB2YWN1dW1lZCBiZWZvcmUgJWQgbW9yZSBtdWx0aXhhY3Qg bWVtYmVyIGlzIHVzZWQiLAotCQkJCQkJCSAgICJkYXRhYmFzZSB3aXRoIE9JRCAldSBtdXN0IGJl IHZhY3V1bWVkIGJlZm9yZSAlZCBtb3JlIG11bHRpeGFjdCBtZW1iZXJzIGFyZSB1c2VkIiwKLQkJ CQkJCQkgICBNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0IC0gbmV4dE9mZnNldCArIG5t ZW1iZXJzLAotCQkJCQkJCSAgIE11bHRpWGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3REQiwKLQkJ CQkJCQkgICBNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0IC0gbmV4dE9mZnNldCArIG5t ZW1iZXJzKSwKLQkJCQkgZXJyaGludCgiRXhlY3V0ZSBhIGRhdGFiYXNlLXdpZGUgVkFDVVVNIGlu IHRoYXQgZGF0YWJhc2Ugd2l0aCByZWR1Y2VkIFwidmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWlu X2FnZVwiIGFuZCBcInZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZVwiIHNldHRpbmdz LiIpKSk7Ci0KIAlFeHRlbmRNdWx0aVhhY3RNZW1iZXIobmV4dE9mZnNldCwgbm1lbWJlcnMpOwog CiAJLyoKQEAgLTE5NjgsNyArMTg4Myw3IEBAIE11bHRpWGFjdFNobWVtSW5pdCh2b2lkKQogCQkJ CSAgInBnX211bHRpeGFjdC9vZmZzZXRzIiwgTFdUUkFOQ0hFX01VTFRJWEFDVE9GRlNFVF9CVUZG RVIsCiAJCQkJICBMV1RSQU5DSEVfTVVMVElYQUNUT0ZGU0VUX1NMUlUsCiAJCQkJICBTWU5DX0hB TkRMRVJfTVVMVElYQUNUX09GRlNFVCwKLQkJCQkgIGZhbHNlKTsKKwkJCQkgIHRydWUpOwogCVNs cnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBNVUxUSVhBQ1RfT0ZG U0VUU19QRVJfUEFHRSk7CiAJU2ltcGxlTHJ1SW5pdChNdWx0aVhhY3RNZW1iZXJDdGwsCiAJCQkJ ICAibXVsdGl4YWN0X21lbWJlciIsIG11bHRpeGFjdF9tZW1iZXJfYnVmZmVycywgMCwKQEAgLTI3 MTMsOCArMjYyOCw2IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAlN dWx0aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKIAlib29sCQlvbGRlc3RPZmZzZXRLbm93biA9IGZh bHNlOwogCWJvb2wJCXByZXZPbGRlc3RPZmZzZXRLbm93bjsKLQlNdWx0aVhhY3RPZmZzZXQgb2Zm c2V0U3RvcExpbWl0ID0gMDsKLQlNdWx0aVhhY3RPZmZzZXQgcHJldk9mZnNldFN0b3BMaW1pdDsK IAogCS8qCiAJICogTkI6IEhhdmUgdG8gcHJldmVudCBjb25jdXJyZW50IHRydW5jYXRpb24sIHdl IG1pZ2h0IG90aGVyd2lzZSB0cnkgdG8KQEAgLTI3MjksNyArMjY0Miw2IEBAIFNldE9mZnNldFZh Y3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAluZXh0T2Zmc2V0ID0gTXVsdGlYYWN0U3RhdGUt Pm5leHRPZmZzZXQ7CiAJcHJldk9sZGVzdE9mZnNldEtub3duID0gTXVsdGlYYWN0U3RhdGUtPm9s ZGVzdE9mZnNldEtub3duOwogCXByZXZPbGRlc3RPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xk ZXN0T2Zmc2V0OwotCXByZXZPZmZzZXRTdG9wTGltaXQgPSBNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0 U3RvcExpbWl0OwogCUFzc2VydChNdWx0aVhhY3RTdGF0ZS0+ZmluaXNoZWRTdGFydHVwKTsKIAlM V0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCkBAIC0yNzYwLDExICsyNjcyLDcgQEAg U2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQogCQlvbGRlc3RPZmZzZXRLbm93 biA9CiAJCQlmaW5kX211bHRpeGFjdF9zdGFydChvbGRlc3RNdWx0aVhhY3RJZCwgJm9sZGVzdE9m ZnNldCk7CiAKLQkJaWYgKG9sZGVzdE9mZnNldEtub3duKQotCQkJZXJlcG9ydChERUJVRzEsCi0J CQkJCShlcnJtc2dfaW50ZXJuYWwoIm9sZGVzdCBNdWx0aVhhY3RJZCBtZW1iZXIgaXMgYXQgb2Zm c2V0ICV1IiwKLQkJCQkJCQkJCSBvbGRlc3RPZmZzZXQpKSk7Ci0JCWVsc2UKKwkJaWYgKCFvbGRl c3RPZmZzZXRLbm93bikKIAkJCWVyZXBvcnQoTE9HLAogCQkJCQkoZXJybXNnKCJNdWx0aVhhY3Qg bWVtYmVyIHdyYXBhcm91bmQgcHJvdGVjdGlvbnMgYXJlIGRpc2FibGVkIGJlY2F1c2Ugb2xkZXN0 IGNoZWNrcG9pbnRlZCBNdWx0aVhhY3QgJXUgZG9lcyBub3QgZXhpc3Qgb24gZGlzayIsCiAJCQkJ CQkJb2xkZXN0TXVsdGlYYWN0SWQpKSk7CkBAIC0yNzc3LDI0ICsyNjg1LDcgQEAgU2V0T2Zmc2V0 VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQogCSAqIG92ZXJydW4gb2Ygb2xkIGRhdGEgaW4g dGhlIG1lbWJlcnMgU0xSVSBhcmVhLiBXZSBjYW4gb25seSBkbyBzbyBpZiB0aGUKIAkgKiBvbGRl c3Qgb2Zmc2V0IGlzIGtub3duIHRob3VnaC4KIAkgKi8KLQlpZiAob2xkZXN0T2Zmc2V0S25vd24p Ci0JewotCQkvKiBtb3ZlIGJhY2sgdG8gc3RhcnQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2VnbWVu dCAqLwotCQlvZmZzZXRTdG9wTGltaXQgPSBvbGRlc3RPZmZzZXQgLSAob2xkZXN0T2Zmc2V0ICUK LQkJCQkJCQkJCQkgIChNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRSAqIFNMUlVfUEFHRVNfUEVS X1NFR01FTlQpKTsKLQotCQkvKiBhbHdheXMgbGVhdmUgb25lIHNlZ21lbnQgYmVmb3JlIHRoZSB3 cmFwYXJvdW5kIHBvaW50ICovCi0JCW9mZnNldFN0b3BMaW1pdCAtPSAoTVVMVElYQUNUX01FTUJF UlNfUEVSX1BBR0UgKiBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKTsKLQotCQlpZiAoIXByZXZPbGRl c3RPZmZzZXRLbm93biAmJiAhaXNfc3RhcnR1cCkKLQkJCWVyZXBvcnQoTE9HLAotCQkJCQkoZXJy bXNnKCJNdWx0aVhhY3QgbWVtYmVyIHdyYXBhcm91bmQgcHJvdGVjdGlvbnMgYXJlIG5vdyBlbmFi bGVkIikpKTsKLQotCQllcmVwb3J0KERFQlVHMSwKLQkJCQkoZXJybXNnX2ludGVybmFsKCJNdWx0 aVhhY3QgbWVtYmVyIHN0b3AgbGltaXQgaXMgbm93ICV1IGJhc2VkIG9uIE11bHRpWGFjdCAldSIs Ci0JCQkJCQkJCSBvZmZzZXRTdG9wTGltaXQsIG9sZGVzdE11bHRpWGFjdElkKSkpOwotCX0KLQll bHNlIGlmIChwcmV2T2xkZXN0T2Zmc2V0S25vd24pCisJaWYgKHByZXZPbGRlc3RPZmZzZXRLbm93 bikKIAl7CiAJCS8qCiAJCSAqIElmIHdlIGZhaWxlZCB0byBnZXQgdGhlIG9sZGVzdCBvZmZzZXQg dGhpcyB0aW1lLCBidXQgd2UgaGF2ZSBhCkBAIC0yODA0LDE0ICsyNjk1LDEyIEBAIFNldE9mZnNl dFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkJICovCiAJCW9sZGVzdE9mZnNldCA9IHBy ZXZPbGRlc3RPZmZzZXQ7CiAJCW9sZGVzdE9mZnNldEtub3duID0gdHJ1ZTsKLQkJb2Zmc2V0U3Rv cExpbWl0ID0gcHJldk9mZnNldFN0b3BMaW1pdDsKIAl9CiAKIAkvKiBJbnN0YWxsIHRoZSBjb21w dXRlZCB2YWx1ZXMgKi8KIAlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX0VYQ0xV U0lWRSk7CiAJTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldCA9IG9sZGVzdE9mZnNldDsKIAlN dWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gPSBvbGRlc3RPZmZzZXRLbm93bjsKLQlN dWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0ID0gb2Zmc2V0U3RvcExpbWl0OwogCUxXTG9j a1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7CiAKIAkvKgpAQCAtMjgyMSw1NCArMjcxMCw2IEBA IFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkJKG5leHRPZmZzZXQgLSBv bGRlc3RPZmZzZXQgPiBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKIH0KIAotLyoK LSAqIFJldHVybiB3aGV0aGVyIGFkZGluZyAiZGlzdGFuY2UiIHRvICJzdGFydCIgd291bGQgbW92 ZSBwYXN0ICJib3VuZGFyeSIuCi0gKgotICogV2UgdXNlIHRoaXMgdG8gZGV0ZXJtaW5lIHdoZXRo ZXIgdGhlIGFkZGl0aW9uIGlzICJ3cmFwcGluZyBhcm91bmQiIHRoZQotICogYm91bmRhcnkgcG9p bnQsIGhlbmNlIHRoZSBuYW1lLiAgVGhlIHJlYXNvbiB3ZSBkb24ndCB3YW50IHRvIHVzZSB0aGUg cmVndWxhcgotICogMl4zMS1tb2R1bG8gYXJpdGhtZXRpYyBoZXJlIGlzIHRoYXQgd2Ugd2FudCB0 byBiZSBhYmxlIHRvIHVzZSB0aGUgd2hvbGUgb2YKLSAqIHRoZSAyXjMyLTEgc3BhY2UgaGVyZSwg YWxsb3dpbmcgZm9yIG1vcmUgbXVsdGl4YWN0cyB0aGFuIHdvdWxkIGZpdAotICogb3RoZXJ3aXNl LgotICovCi1zdGF0aWMgYm9vbAotTXVsdGlYYWN0T2Zmc2V0V291bGRXcmFwKE11bHRpWGFjdE9m ZnNldCBib3VuZGFyeSwgTXVsdGlYYWN0T2Zmc2V0IHN0YXJ0LAotCQkJCQkJIHVpbnQzMiBkaXN0 YW5jZSkKLXsKLQlNdWx0aVhhY3RPZmZzZXQgZmluaXNoOwotCi0JLyoKLQkgKiBOb3RlIHRoYXQg b2Zmc2V0IG51bWJlciAwIGlzIG5vdCB1c2VkIChzZWUgR2V0TXVsdGlYYWN0SWRNZW1iZXJzKSwg c28KLQkgKiBpZiB0aGUgYWRkaXRpb24gd3JhcHMgYXJvdW5kIHRoZSBVSU5UX01BWCBib3VuZGFy eSwgc2tpcCB0aGF0IHZhbHVlLgotCSAqLwotCWZpbmlzaCA9IHN0YXJ0ICsgZGlzdGFuY2U7Ci0J aWYgKGZpbmlzaCA8IHN0YXJ0KQotCQlmaW5pc2grKzsKLQotCS8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkg KiBXaGVuIHRoZSBib3VuZGFyeSBpcyBudW1lcmljYWxseSBncmVhdGVyIHRoYW4gdGhlIHN0YXJ0 aW5nIHBvaW50LCBhbnkKLQkgKiB2YWx1ZSBudW1lcmljYWxseSBiZXR3ZWVuIHRoZSB0d28gaXMg bm90IHdyYXBwZWQ6Ci0JICoKLQkgKgk8LS0tLVMtLS0tQi0tLS0+Ci0JICoJWy0tLSkJCQkgPSBG IHdyYXBwZWQgcGFzdCBCIChhbmQgVUlOVF9NQVgpCi0JICoJCSBbLS0tKQkJID0gRiBub3Qgd3Jh cHBlZAotCSAqCQkJICBbLS0tLV0gPSBGIHdyYXBwZWQgcGFzdCBCCi0JICoKLQkgKiBXaGVuIHRo ZSBib3VuZGFyeSBpcyBudW1lcmljYWxseSBsZXNzIHRoYW4gdGhlIHN0YXJ0aW5nIHBvaW50IChp LmUuIHRoZQotCSAqIFVJTlRfTUFYIHdyYXBhcm91bmQgb2NjdXJzIHNvbWV3aGVyZSBpbiBiZXR3 ZWVuKSB0aGVuIGFsbCB2YWx1ZXMgaW4KLQkgKiBiZXR3ZWVuIGFyZSB3cmFwcGVkOgotCSAqCi0J ICoJPC0tLS1CLS0tLVMtLS0tPgotCSAqCVstLS0pCQkJID0gRiBub3Qgd3JhcHBlZCBwYXN0IEIg KGJ1dCB3cmFwcGVkIHBhc3QgVUlOVF9NQVgpCi0JICoJCSBbLS0tKQkJID0gRiB3cmFwcGVkIHBh c3QgQiAoYW5kIFVJTlRfTUFYKQotCSAqCQkJICBbLS0tLV0gPSBGIG5vdCB3cmFwcGVkCi0JICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotCSAqLwotCWlmIChzdGFydCA8IGJvdW5kYXJ5KQotCQlyZXR1cm4gZmlu aXNoID49IGJvdW5kYXJ5IHx8IGZpbmlzaCA8IHN0YXJ0OwotCWVsc2UKLQkJcmV0dXJuIGZpbmlz aCA+PSBib3VuZGFyeSAmJiBmaW5pc2ggPCBzdGFydDsKLX0KLQogLyoKICAqIEZpbmQgdGhlIHN0 YXJ0aW5nIG9mZnNldCBvZiB0aGUgZ2l2ZW4gTXVsdGlYYWN0SWQuCiAgKgpAQCAtMjk5MCw4ICsy ODMxLDkgQEAgTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKHZvaWQpCiAJICogd2UgdHJ5 IHRvIGVsaW1pbmF0ZSBmcm9tIHRoZSBzeXN0ZW0gaXMgYmFzZWQgb24gaG93IGZhciB3ZSBhcmUg cGFzdAogCSAqIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQuCiAJICovCi0JZnJhY3Rp b24gPSAoZG91YmxlKSAobWVtYmVycyAtIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQp IC8KLQkJKE1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9MRCAtIE1VTFRJWEFDVF9NRU1C RVJfU0FGRV9USFJFU0hPTEQpOworCWZyYWN0aW9uID0gKGRvdWJsZSkgKG1lbWJlcnMgLSBNVUxU SVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKKwlmcmFjdGlvbiAvPSAoZG91YmxlKSAoTVVM VElYQUNUX01FTUJFUl9EQU5HRVJfVEhSRVNIT0xEIC0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RI UkVTSE9MRCk7CisKIAl2aWN0aW1fbXVsdGl4YWN0cyA9IG11bHRpeGFjdHMgKiBmcmFjdGlvbjsK IAogCS8qIGZyYWN0aW9uIGNvdWxkIGJlID4gMS4wLCBidXQgbG93ZXN0IHBvc3NpYmxlIGZyZWV6 ZSBhZ2UgaXMgemVybyAqLwpAQCAtMzA0MSwxMCArMjg4MywxMCBAQCBTbHJ1U2NhbkRpckNiRmlu ZEVhcmxpZXN0KFNscnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwgdm9p ZCAqZGF0YQogc3RhdGljIHZvaWQKIFBlcmZvcm1NZW1iZXJzVHJ1bmNhdGlvbihNdWx0aVhhY3RP ZmZzZXQgb2xkZXN0T2Zmc2V0LCBNdWx0aVhhY3RPZmZzZXQgbmV3T2xkZXN0T2Zmc2V0KQogewot CWNvbnN0IGludAltYXhzZWdtZW50ID0gTVhPZmZzZXRUb01lbWJlclNlZ21lbnQoTWF4TXVsdGlY YWN0T2Zmc2V0KTsKLQlpbnQJCQlzdGFydHNlZ21lbnQgPSBNWE9mZnNldFRvTWVtYmVyU2VnbWVu dChvbGRlc3RPZmZzZXQpOwotCWludAkJCWVuZHNlZ21lbnQgPSBNWE9mZnNldFRvTWVtYmVyU2Vn bWVudChuZXdPbGRlc3RPZmZzZXQpOwotCWludAkJCXNlZ21lbnQgPSBzdGFydHNlZ21lbnQ7CisJ Y29uc3QgaW50NjQJbWF4c2VnbWVudCA9IE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KE1heE11bHRp WGFjdE9mZnNldCk7CisJaW50NjQJCXN0YXJ0c2VnbWVudCA9IE1YT2Zmc2V0VG9NZW1iZXJTZWdt ZW50KG9sZGVzdE9mZnNldCk7CisJaW50NjQJCWVuZHNlZ21lbnQgPSBNWE9mZnNldFRvTWVtYmVy U2VnbWVudChuZXdPbGRlc3RPZmZzZXQpOworCWludDY0CQlzZWdtZW50ID0gc3RhcnRzZWdtZW50 OwogCiAJLyoKIAkgKiBEZWxldGUgYWxsIHRoZSBzZWdtZW50cyBidXQgdGhlIGxhc3Qgb25lLiBU aGUgbGFzdCBzZWdtZW50IGNhbiBzdGlsbApAQCAtMzMzNyw3ICszMTc5LDcgQEAgTXVsdGlYYWN0 SWRQcmVjZWRlc09yRXF1YWxzKE11bHRpWGFjdElkIG11bHRpMSwgTXVsdGlYYWN0SWQgbXVsdGky KQogc3RhdGljIGJvb2wKIE11bHRpWGFjdE9mZnNldFByZWNlZGVzKE11bHRpWGFjdE9mZnNldCBv ZmZzZXQxLCBNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0MikKIHsKLQlpbnQzMgkJZGlmZiA9IChpbnQz MikgKG9mZnNldDEgLSBvZmZzZXQyKTsKKwlpbnQ2NAkJZGlmZiA9IChpbnQ2NCkgKG9mZnNldDEg LSBvZmZzZXQyKTsKIAogCXJldHVybiAoZGlmZiA8IDApOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNl dHdhbC5jCmluZGV4IDk4NWNkMDY4MDIuLjFhZjJjZTRiOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYworKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jl c2V0d2FsLmMKQEAgLTI2NCw3ICsyNjQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAKIAkJCWNhc2UgJ08nOgogCQkJCWVycm5vID0gMDsKLQkJCQlzZXRfbXhvZmYgPSBzdHJ0b3Vs KG9wdGFyZywgJmVuZHB0ciwgMCk7CisJCQkJc2V0X214b2ZmID0gc3RydG91NjQob3B0YXJnLCAm ZW5kcHRyLCAwKTsKIAkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcg fHwgZXJybm8gIT0gMCkKIAkJCQl7CiAJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhcmd1bWVu dCBmb3Igb3B0aW9uICVzIiwgIi1PIik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0d2Fs L3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbAppbmRl eCA5ODI5ZTQ4MTA2Li5mOGE4ZWVmNDRkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2Fs L3QvMDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwK QEAgLTIwNiw3ICsyMDYsNyBAQCBwdXNoIEBjbWQsCiAgIHNwcmludGYoIiVkLCVkIiwgaGV4KCRm aWxlc1swXSkgPT0gMCA/IDMgOiBoZXgoJGZpbGVzWzBdKSwgaGV4KCRmaWxlc1stMV0pKTsKIAog QGZpbGVzID0gZ2V0X3NscnVfZmlsZXMoJ3BnX211bHRpeGFjdC9vZmZzZXRzJyk7Ci0kbXVsdCA9 IDMyICogJGJsY2tzeiAvIDQ7CiskbXVsdCA9IDMyICogJGJsY2tzeiAvIDg7CiAjIC1tIGFyZ3Vt ZW50IGlzICJuZXcsb2xkIgogcHVzaCBAY21kLCAnLW0nLAogICBzcHJpbnRmKCIlZCwlZCIsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvbXVsdGl4YWN0LmgKaW5kZXggN2ZmZDI1NmM3NC4uOTA1ODM2MzRlYyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9tdWx0aXhhY3QuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjZGVmaW5lIE11bHRpWGFjdElkSXNW YWxpZChtdWx0aSkgKChtdWx0aSkgIT0gSW52YWxpZE11bHRpWGFjdElkKQogCi0jZGVmaW5lIE1h eE11bHRpWGFjdE9mZnNldAkoKE11bHRpWGFjdE9mZnNldCkgMHhGRkZGRkZGRikKKyNkZWZpbmUg TWF4TXVsdGlYYWN0T2Zmc2V0CVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZGRkZGRikKIAogLyoK ICAqIFBvc3NpYmxlIG11bHRpeGFjdCBsb2NrIG1vZGVzICgic3RhdHVzIikuICBUaGUgZmlyc3Qg Zm91ciBtb2RlcyBhcmUgZm9yCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jLmggYi9zcmMvaW5j bHVkZS9jLmgKaW5kZXggZGMxODQxMzQ2Yy4uY2NmYjgyYjQ3OCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2MuaApAQCAtNjYxLDcgKzY2MSw3IEBAIHR5cGVk ZWYgdWludDMyIFN1YlRyYW5zYWN0aW9uSWQ7CiAvKiBNdWx0aVhhY3RJZCBtdXN0IGJlIGVxdWl2 YWxlbnQgdG8gVHJhbnNhY3Rpb25JZCwgdG8gZml0IGluIHRfeG1heCAqLwogdHlwZWRlZiBUcmFu c2FjdGlvbklkIE11bHRpWGFjdElkOwogCi10eXBlZGVmIHVpbnQzMiBNdWx0aVhhY3RPZmZzZXQ7 Cit0eXBlZGVmIHVpbnQ2NCBNdWx0aVhhY3RPZmZzZXQ7CiAKIHR5cGVkZWYgdWludDMyIENvbW1h bmRJZDsKIAotLSAKMi40NS4yCgo= --000000000000cfbfd8061fa667c4 Content-Type: application/x-patch; name="v1-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Disposition: attachment; filename="v1-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzu04uo70 RnJvbSA5NTIyNjc1NmEyMjVjYTZiOTVlMmJhYWZmZjUwMjAzNGMzNTUzMTBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNyBBdWcgMjAyNCAxNjozNToyMiArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMS8zXSBV c2UgNjQtYml0IGZvcm1hdCBvdXRwdXQgZm9yIG11bHRpeGFjdCBvZmZzZXRzCgpBdXRob3I6IE1h eGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MvbXhhY3RkZXNjLmMgICB8ICA5ICsrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MveGxvZ2Rlc2MuYyAgICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L211bHRpeGFjdC5jICAgIHwgMjYgKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgIDUgKysrLS0KIHNyYy9iaW4vcGdfY29u dHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYyAgIHwgIDQgKystLQogc3JjL2Jpbi9wZ19yZXNldHdh bC9wZ19yZXNldHdhbC5jICAgICAgICAgfCAgOCArKystLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDMx IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9teGFjdGRlc2MuYwppbmRleCAzZThhZDRkNWVmLi4xYjQ4NmRlMzhjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbXhhY3RkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL214YWN0ZGVzYy5jCkBAIC02NSw4ICs2NSw4IEBAIG11bHRpeGFjdF9k ZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJeGxfbXVsdGl4 YWN0X2NyZWF0ZSAqeGxyZWMgPSAoeGxfbXVsdGl4YWN0X2NyZWF0ZSAqKSByZWM7CiAJCWludAkJ CWk7CiAKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIldSBvZmZzZXQgJXUgbm1lbWJlcnMgJWQ6 ICIsIHhscmVjLT5taWQsCi0JCQkJCQkgeGxyZWMtPm1vZmYsIHhscmVjLT5ubWVtYmVycyk7CisJ CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXUgb2Zmc2V0ICVsbHUgbm1lbWJlcnMgJWQ6ICIsIHhs cmVjLT5taWQsCisJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxyZWMtPm1vZmYsIHhscmVj LT5ubWVtYmVycyk7CiAJCWZvciAoaSA9IDA7IGkgPCB4bHJlYy0+bm1lbWJlcnM7IGkrKykKIAkJ CW91dF9tZW1iZXIoYnVmLCAmeGxyZWMtPm1lbWJlcnNbaV0pOwogCX0KQEAgLTc0LDkgKzc0LDEw IEBAIG11bHRpeGFjdF9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAl7CiAJCXhsX211bHRpeGFjdF90cnVuY2F0ZSAqeGxyZWMgPSAoeGxfbXVsdGl4YWN0X3Ry dW5jYXRlICopIHJlYzsKIAotCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIm9mZnNldHMgWyV1LCAl dSksIG1lbWJlcnMgWyV1LCAldSkiLAorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIm9mZnNldHMg WyV1LCAldSksIG1lbWJlcnMgWyVsbHUsICVsbHUpIiwKIAkJCQkJCSB4bHJlYy0+c3RhcnRUcnVu Y09mZiwgeGxyZWMtPmVuZFRydW5jT2ZmLAotCQkJCQkJIHhscmVjLT5zdGFydFRydW5jTWVtYiwg eGxyZWMtPmVuZFRydW5jTWVtYik7CisJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxyZWMt PnN0YXJ0VHJ1bmNNZW1iLAorCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIHhscmVjLT5lbmRU cnVuY01lbWIpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL3hsb2dkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYwpp bmRleCAzNjMyOTRkNjIzLi5hYWExOWM4MWM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv eGxvZ2Rlc2MuYwpAQCAtNjYsNyArNjYsNyBAQCB4bG9nX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlDaGVja1BvaW50ICpjaGVja3BvaW50ID0gKENoZWNr UG9pbnQgKikgcmVjOwogCiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAicmVkbyAlWC8lWDsgIgot CQkJCQkJICJ0bGkgJXU7IHByZXYgdGxpICV1OyBmcHcgJXM7IHdhbF9sZXZlbCAlczsgeGlkICV1 OiV1OyBvaWQgJXU7IG11bHRpICV1OyBvZmZzZXQgJXU7ICIKKwkJCQkJCSAidGxpICV1OyBwcmV2 IHRsaSAldTsgZnB3ICVzOyB3YWxfbGV2ZWwgJXM7IHhpZCAldToldTsgb2lkICV1OyBtdWx0aSAl dTsgb2Zmc2V0ICVsbHU7ICIKIAkJCQkJCSAib2xkZXN0IHhpZCAldSBpbiBEQiAldTsgb2xkZXN0 IG11bHRpICV1IGluIERCICV1OyAiCiAJCQkJCQkgIm9sZGVzdC9uZXdlc3QgY29tbWl0IHRpbWVz dGFtcCB4aWQ6ICV1LyV1OyAiCiAJCQkJCQkgIm9sZGVzdCBydW5uaW5nIHhpZCAldTsgJXMiLApA QCAtNzksNyArNzksNyBAQCB4bG9nX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQkJCQkJIFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChjaGVja3BvaW50LT5u ZXh0WGlkKSwKIAkJCQkJCSBjaGVja3BvaW50LT5uZXh0T2lkLAogCQkJCQkJIGNoZWNrcG9pbnQt Pm5leHRNdWx0aSwKLQkJCQkJCSBjaGVja3BvaW50LT5uZXh0TXVsdGlPZmZzZXQsCisJCQkJCQkg KHVuc2lnbmVkIGxvbmcgbG9uZykgY2hlY2twb2ludC0+bmV4dE11bHRpT2Zmc2V0LAogCQkJCQkJ IGNoZWNrcG9pbnQtPm9sZGVzdFhpZCwKIAkJCQkJCSBjaGVja3BvaW50LT5vbGRlc3RYaWREQiwK IAkJCQkJCSBjaGVja3BvaW50LT5vbGRlc3RNdWx0aSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v bXVsdGl4YWN0LmMKaW5kZXggYzYwMWZmOThhMS4uNTdjNTE0ODkzMyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTEyNTgsNyArMTI1OCw4IEBAIEdldE5ld011bHRp WGFjdElkKGludCBubWVtYmVycywgTXVsdGlYYWN0T2Zmc2V0ICpvZmZzZXQpCiAKIAlMV0xvY2tS ZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCi0JZGVidWdfZWxvZzQoREVCVUcyLCAiR2V0TmV3 OiByZXR1cm5pbmcgJXUgb2Zmc2V0ICV1IiwgcmVzdWx0LCAqb2Zmc2V0KTsKKwlkZWJ1Z19lbG9n NChERUJVRzIsICJHZXROZXc6IHJldHVybmluZyAldSBvZmZzZXQgJWxsdSIsIHJlc3VsdCwKKwkJ CQkodW5zaWduZWQgbG9uZyBsb25nKSAqb2Zmc2V0KTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBA IC0yMjg1LDggKzIyODYsOSBAQCBNdWx0aVhhY3RHZXRDaGVja3B0TXVsdGkoYm9vbCBpc19zaHV0 ZG93biwKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJZGVidWdfZWxvZzYo REVCVUcyLAotCQkJCSJNdWx0aVhhY3Q6IGNoZWNrcG9pbnQgaXMgbmV4dE11bHRpICV1LCBuZXh0 T2Zmc2V0ICV1LCBvbGRlc3RNdWx0aSAldSBpbiBEQiAldSIsCi0JCQkJKm5leHRNdWx0aSwgKm5l eHRNdWx0aU9mZnNldCwgKm9sZGVzdE11bHRpLCAqb2xkZXN0TXVsdGlEQik7CisJCQkJIk11bHRp WGFjdDogY2hlY2twb2ludCBpcyBuZXh0TXVsdGkgJXUsIG5leHRPZmZzZXQgJWxsdSwgb2xkZXN0 TXVsdGkgJXUgaW4gREIgJXUiLAorCQkJCSpuZXh0TXVsdGksICh1bnNpZ25lZCBsb25nIGxvbmcp ICpuZXh0TXVsdGlPZmZzZXQsICpvbGRlc3RNdWx0aSwKKwkJCQkqb2xkZXN0TXVsdGlEQik7CiB9 CiAKIC8qCkBAIC0yMzIwLDggKzIzMjIsOCBAQCB2b2lkCiBNdWx0aVhhY3RTZXROZXh0TVhhY3Qo TXVsdGlYYWN0SWQgbmV4dE11bHRpLAogCQkJCQkgIE11bHRpWGFjdE9mZnNldCBuZXh0TXVsdGlP ZmZzZXQpCiB7Ci0JZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQg bXVsdGkgdG8gJXUgb2Zmc2V0ICV1IiwKLQkJCQluZXh0TXVsdGksIG5leHRNdWx0aU9mZnNldCk7 CisJZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQgbXVsdGkgdG8g JXUgb2Zmc2V0ICVsbHUiLAorCQkJCW5leHRNdWx0aSwgKHVuc2lnbmVkIGxvbmcgbG9uZykgbmV4 dE11bHRpT2Zmc2V0KTsKIAlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX0VYQ0xV U0lWRSk7CiAJTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCA9IG5leHRNdWx0aTsKIAlNdWx0aVhh Y3RTdGF0ZS0+bmV4dE9mZnNldCA9IG5leHRNdWx0aU9mZnNldDsKQEAgLTI1MTEsOCArMjUxMyw4 IEBAIE11bHRpWGFjdEFkdmFuY2VOZXh0TVhhY3QoTXVsdGlYYWN0SWQgbWluTXVsdGksCiAJfQog CWlmIChNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCwg bWluTXVsdGlPZmZzZXQpKQogCXsKLQkJZGVidWdfZWxvZzMoREVCVUcyLCAiTXVsdGlYYWN0OiBz ZXR0aW5nIG5leHQgb2Zmc2V0IHRvICV1IiwKLQkJCQkJbWluTXVsdGlPZmZzZXQpOworCQlkZWJ1 Z19lbG9nMyhERUJVRzIsICJNdWx0aVhhY3Q6IHNldHRpbmcgbmV4dCBvZmZzZXQgdG8gJWxsdSIs CisJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIG1pbk11bHRpT2Zmc2V0KTsKIAkJTXVsdGlYYWN0 U3RhdGUtPm5leHRPZmZzZXQgPSBtaW5NdWx0aU9mZnNldDsKIAl9CiAJTFdMb2NrUmVsZWFzZShN dWx0aVhhY3RHZW5Mb2NrKTsKQEAgLTMyMDMsMTEgKzMyMDUsMTIgQEAgVHJ1bmNhdGVNdWx0aVhh Y3QoTXVsdGlYYWN0SWQgbmV3T2xkZXN0TXVsdGksIE9pZCBuZXdPbGRlc3RNdWx0aURCKQogCiAJ ZWxvZyhERUJVRzEsICJwZXJmb3JtaW5nIG11bHRpeGFjdCB0cnVuY2F0aW9uOiAiCiAJCSAib2Zm c2V0cyBbJXUsICV1KSwgb2Zmc2V0cyBzZWdtZW50cyBbJWxseCwgJWxseCksICIKLQkJICJtZW1i ZXJzIFsldSwgJXUpLCBtZW1iZXJzIHNlZ21lbnRzIFslbGx4LCAlbGx4KSIsCisJCSAibWVtYmVy cyBbJWxsdSwgJWxsdSksIG1lbWJlcnMgc2VnbWVudHMgWyVsbHgsICVsbHgpIiwKIAkJIG9sZGVz dE11bHRpLCBuZXdPbGRlc3RNdWx0aSwKIAkJICh1bnNpZ25lZCBsb25nIGxvbmcpIE11bHRpWGFj dElkVG9PZmZzZXRTZWdtZW50KG9sZGVzdE11bHRpKSwKIAkJICh1bnNpZ25lZCBsb25nIGxvbmcp IE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KG5ld09sZGVzdE11bHRpKSwKLQkJIG9sZGVzdE9m ZnNldCwgbmV3T2xkZXN0T2Zmc2V0LAorCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgb2xkZXN0T2Zm c2V0LAorCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgbmV3T2xkZXN0T2Zmc2V0LAogCQkgKHVuc2ln bmVkIGxvbmcgbG9uZykgTVhPZmZzZXRUb01lbWJlclNlZ21lbnQob2xkZXN0T2Zmc2V0KSwKIAkJ ICh1bnNpZ25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KG5ld09sZGVzdE9m ZnNldCkpOwogCkBAIC0zNDYzLDExICszNDY2LDEyIEBAIG11bHRpeGFjdF9yZWRvKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIG11bHRpeGFjdCB0 cnVuY2F0aW9uOiAiCiAJCQkgIm9mZnNldHMgWyV1LCAldSksIG9mZnNldHMgc2VnbWVudHMgWyVs bHgsICVsbHgpLCAiCi0JCQkgIm1lbWJlcnMgWyV1LCAldSksIG1lbWJlcnMgc2VnbWVudHMgWyVs bHgsICVsbHgpIiwKKwkJCSAibWVtYmVycyBbJWxsdSwgJWxsdSksIG1lbWJlcnMgc2VnbWVudHMg WyVsbHgsICVsbHgpIiwKIAkJCSB4bHJlYy5zdGFydFRydW5jT2ZmLCB4bHJlYy5lbmRUcnVuY09m ZiwKIAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudCh4 bHJlYy5zdGFydFRydW5jT2ZmKSwKIAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhhY3RJ ZFRvT2Zmc2V0U2VnbWVudCh4bHJlYy5lbmRUcnVuY09mZiksCi0JCQkgeGxyZWMuc3RhcnRUcnVu Y01lbWIsIHhscmVjLmVuZFRydW5jTWVtYiwKKwkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4bHJl Yy5zdGFydFRydW5jTWVtYiwKKwkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4bHJlYy5lbmRUcnVu Y01lbWIsCiAJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgTVhPZmZzZXRUb01lbWJlclNlZ21lbnQo eGxyZWMuc3RhcnRUcnVuY01lbWIpLAogCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0 VG9NZW1iZXJTZWdtZW50KHhscmVjLmVuZFRydW5jTWVtYikpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4IGFkODE3ZmJjYTYuLjM4ODAzN2E5NGIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC04NzcsOCArODc3 LDkgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wg Kndhc1NodXRkb3duX3B0ciwKIAkJCQkJCQkgVTY0RnJvbUZ1bGxUcmFuc2FjdGlvbklkKGNoZWNr UG9pbnQubmV4dFhpZCksCiAJCQkJCQkJIGNoZWNrUG9pbnQubmV4dE9pZCkpKTsKIAllcmVwb3J0 KERFQlVHMSwKLQkJCShlcnJtc2dfaW50ZXJuYWwoIm5leHQgTXVsdGlYYWN0SWQ6ICV1OyBuZXh0 IE11bHRpWGFjdE9mZnNldDogJXUiLAotCQkJCQkJCSBjaGVja1BvaW50Lm5leHRNdWx0aSwgY2hl Y2tQb2ludC5uZXh0TXVsdGlPZmZzZXQpKSk7CisJCQkoZXJybXNnX2ludGVybmFsKCJuZXh0IE11 bHRpWGFjdElkOiAldTsgbmV4dCBNdWx0aVhhY3RPZmZzZXQ6ICVsbHUiLAorCQkJCQkJCSBjaGVj a1BvaW50Lm5leHRNdWx0aSwKKwkJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgY2hlY2tQb2lu dC5uZXh0TXVsdGlPZmZzZXQpKSk7CiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNnX2ludGVy bmFsKCJvbGRlc3QgdW5mcm96ZW4gdHJhbnNhY3Rpb24gSUQ6ICV1LCBpbiBkYXRhYmFzZSAldSIs CiAJCQkJCQkJIGNoZWNrUG9pbnQub2xkZXN0WGlkLCBjaGVja1BvaW50Lm9sZGVzdFhpZERCKSkp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jIGIv c3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jCmluZGV4IDkzYTA1ZDgwY2Eu LjQzYjY3Mjc1NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJv bGRhdGEuYworKysgYi9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRhLmMKQEAg LTI1Myw4ICsyNTMsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCSAgIENvbnRy b2xGaWxlLT5jaGVja1BvaW50Q29weS5uZXh0T2lkKTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNr cG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6ICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxlLT5jaGVj a1BvaW50Q29weS5uZXh0TXVsdGkpOwotCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5l eHRNdWx0aU9mZnNldDogICV1XG4iKSwKLQkJICAgQ29udHJvbEZpbGUtPmNoZWNrUG9pbnRDb3B5 Lm5leHRNdWx0aU9mZnNldCk7CisJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11 bHRpT2Zmc2V0OiAgJWxsdVxuIiksCisJCSAgICh1bnNpZ25lZCBsb25nIGxvbmcpIENvbnRyb2xG aWxlLT5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCXByaW50ZihfKCJMYXRlc3Qg Y2hlY2twb2ludCdzIG9sZGVzdFhJRDogICAgICAgICV1XG4iKSwKIAkJICAgQ29udHJvbEZpbGUt PmNoZWNrUG9pbnRDb3B5Lm9sZGVzdFhpZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50 J3Mgb2xkZXN0WElEJ3MgREI6ICAgJXVcbiIpLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNl dHdhbC9wZ19yZXNldHdhbC5jIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCmlu ZGV4IGU5ZGNiNWE2ZDguLjk4NWNkMDY4MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3 YWwvcGdfcmVzZXR3YWwuYworKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMK QEAgLTczNyw4ICs3MzcsOCBAQCBQcmludENvbnRyb2xWYWx1ZXMoYm9vbCBndWVzc2VkKQogCQkg ICBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0T2lkKTsKIAlwcmludGYoXygiTGF0ZXN0 IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6ICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxl LmNoZWNrUG9pbnRDb3B5Lm5leHRNdWx0aSk7Ci0JcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50 J3MgTmV4dE11bHRpT2Zmc2V0OiAgJXVcbiIpLAotCQkgICBDb250cm9sRmlsZS5jaGVja1BvaW50 Q29weS5uZXh0TXVsdGlPZmZzZXQpOworCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5l eHRNdWx0aU9mZnNldDogICVsbHVcbiIpLAorCQkgICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250 cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCXByaW50ZihfKCJMYXRl c3QgY2hlY2twb2ludCdzIG9sZGVzdFhJRDogICAgICAgICV1XG4iKSwKIAkJICAgQ29udHJvbEZp bGUuY2hlY2tQb2ludENvcHkub2xkZXN0WGlkKTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9p bnQncyBvbGRlc3RYSUQncyBEQjogICAldVxuIiksCkBAIC04MDksOCArODA5LDggQEAgUHJpbnRO ZXdDb250cm9sVmFsdWVzKHZvaWQpCiAKIAlpZiAoc2V0X214b2ZmICE9IC0xKQogCXsKLQkJcHJp bnRmKF8oIk5leHRNdWx0aU9mZnNldDogICAgICAgICAgICAgICAgICAgICAgJXVcbiIpLAotCQkJ ICAgQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKKwkJcHJpbnRm KF8oIk5leHRNdWx0aU9mZnNldDogICAgICAgICAgICAgICAgICAgICAgJWxsdVxuIiksCisJCQkg ICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVs dGlPZmZzZXQpOwogCX0KIAogCWlmIChzZXRfb2lkICE9IDApCi0tIAoyLjQ1LjIKCg== --000000000000cfbfd8061fa667c4 Content-Type: application/x-patch; name="v1-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Disposition: attachment; filename="v1-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzu04uox2 RnJvbSAwNjNlYzI2NjJkOTRmN2E3MmUzMTYyNzAyYzQwNTFmMzRjZDY3MDAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogVHVlLCAxMyBBdWcgMjAyNCAxNDo0NDo1MCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjEg My8zXSBNYWtlIHBnX3VwZ3JhZGUgY29udmVydCBtdWx0aXhhY3Qgb2Zmc2V0cy4KCkF1dGhvcjog TWF4aW0gT3Jsb3YgPG9ybG92bWdAZ21haWwuY29tPgotLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9N YWtlZmlsZSAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCAgIHwg ICAxICsKIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgIHwgIDI5ICsrLQogc3JjL2Jp bi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCAgfCAgMTMgKy0KIHNyYy9iaW4vcGdfdXBncmFkZS9z ZWdyZXNpemUuYyAgIHwgMzUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9p bmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIHwgICAyICstCiA2IGZpbGVzIGNoYW5nZWQsIDM5 MSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9i aW4vcGdfdXBncmFkZS9zZWdyZXNpemUuYwoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFk ZS9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfdXBncmFkZS9NYWtlZmlsZQppbmRleCBiZGU5MWUyYmVi Li4wMzA4MTY1OTZmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUKKysr IGIvc3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCkBAIC0yMSw2ICsyMSw3IEBAIE9CSlMgPSBc CiAJaW5mby5vIFwKIAlvcHRpb24ubyBcCiAJcGFyYWxsZWwubyBcCisJc2VncmVzaXplLm8gXAog CXBnX3VwZ3JhZGUubyBcCiAJcmVsZmlsZW51bWJlci5vIFwKIAlzZXJ2ZXIubyBcCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX3VwZ3JhZGUv bWVzb24uYnVpbGQKaW5kZXggOTgyNWZhMzMwNS4uMmQ5ZjdlNmI2NSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9tZXNv bi5idWlsZApAQCAtMTAsNiArMTAsNyBAQCBwZ191cGdyYWRlX3NvdXJjZXMgPSBmaWxlcygKICAg J2luZm8uYycsCiAgICdvcHRpb24uYycsCiAgICdwYXJhbGxlbC5jJywKKyAgJ3NlZ3Jlc2l6ZS5j JywKICAgJ3BnX3VwZ3JhZGUuYycsCiAgICdyZWxmaWxlbnVtYmVyLmMnLAogICAnc2VydmVyLmMn LApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyBiL3NyYy9iaW4v cGdfdXBncmFkZS9wZ191cGdyYWRlLmMKaW5kZXggNjYzMjM1ODE2Zi4uZDlkOGQwZWE3OCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYworKysgYi9zcmMvYmluL3Bn X3VwZ3JhZGUvcGdfdXBncmFkZS5jCkBAIC03NTAsNyArNzUwLDMwIEBAIGNvcHlfeGFjdF94bG9n X3hpZCh2b2lkKQogCWlmIChvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyID49IE1VTFRJ WEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAmJgogCQluZXdfY2x1c3Rlci5jb250cm9sZGF0YS5j YXRfdmVyID49IE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUikKIAl7Ci0JCWNvcHlfc3Vi ZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsICJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIp OworCQkvKgorCQkgKiBJZiB0aGUgb2xkIHNlcnZlciBpcyBiZWZvcmUgdGhlIE1VTFRJWEFDVE9G RlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUgorCQkgKiBpdCBtdXN0IGhhdmUgMzItYml0IG11bHRp eGlkIG9mZnNldHMsIHRodXMgaXQgc2hvdWxkIGJlIGNvbnZlcnRlZC4KKwkJICovCisJCWlmIChv bGRfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyIDwgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENI QU5HRV9DQVRfVkVSICYmCisJCQluZXdfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyID49IE1V TFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUikKKwkJeworCQkJdWludDY0CW9sZGVz dF9vZmZzZXQgPSBjb252ZXJ0X211bHRpeGFjdF9vZmZzZXRzKCk7CisKKwkJCWlmIChvbGRlc3Rf b2Zmc2V0KQorCQkJeworCQkJCXVpbnQ2NAluZXh0X29mZnNldCA9IG9sZF9jbHVzdGVyLmNvbnRy b2xkYXRhLmNoa3BudF9ueHRteG9mZjsKKworCQkJCS8qIEhhbmRsZSBwb3NzaWJsZSB3cmFwYXJv dW5kLiAqLworCQkJCWlmIChuZXh0X29mZnNldCA8IG9sZGVzdF9vZmZzZXQpCisJCQkJCW5leHRf b2Zmc2V0ICs9ICgodWludDY0KSAxIDw8IDMyKSAtIDE7CisKKwkJCQluZXh0X29mZnNldCAtPSBv bGRlc3Rfb2Zmc2V0IC0gMTsKKwkJCQlvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0 bXhvZmYgPSBuZXh0X29mZnNldDsKKwkJCX0KKwkJfQorCQllbHNlCisJCQljb3B5X3N1YmRpcl9m aWxlcygicGdfbXVsdGl4YWN0L29mZnNldHMiLCAicGdfbXVsdGl4YWN0L29mZnNldHMiKTsKKwog CQljb3B5X3N1YmRpcl9maWxlcygicGdfbXVsdGl4YWN0L21lbWJlcnMiLCAicGdfbXVsdGl4YWN0 L21lbWJlcnMiKTsKIAogCQlwcmVwX3N0YXR1cygiU2V0dGluZyBuZXh0IG11bHRpeGFjdCBJRCBh bmQgb2Zmc2V0IGZvciBuZXcgY2x1c3RlciIpOwpAQCAtNzYwLDkgKzc4Myw5IEBAIGNvcHlfeGFj dF94bG9nX3hpZCh2b2lkKQogCQkgKiBjb3VudGVycyBoZXJlIGFuZCB0aGUgb2xkZXN0IG11bHRp IHByZXNlbnQgb24gc3lzdGVtLgogCQkgKi8KIAkJZXhlY19wcm9nKFVUSUxJVFlfTE9HX0ZJTEUs IE5VTEwsIHRydWUsIHRydWUsCi0JCQkJICAiXCIlcy9wZ19yZXNldHdhbFwiIC1PICV1IC1tICV1 LCV1IFwiJXNcIiIsCisJCQkJICAiXCIlcy9wZ19yZXNldHdhbFwiIC1PICVsbHUgLW0gJXUsJXUg XCIlc1wiIiwKIAkJCQkgIG5ld19jbHVzdGVyLmJpbmRpciwKLQkJCQkgIG9sZF9jbHVzdGVyLmNv bnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZiwKKwkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIG9s ZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZiwKIAkJCQkgIG9sZF9jbHVzdGVy LmNvbnRyb2xkYXRhLmNoa3BudF9ueHRtdWx0aSwKIAkJCQkgIG9sZF9jbHVzdGVyLmNvbnRyb2xk YXRhLmNoa3BudF9vbGRzdE11bHRpLAogCQkJCSAgbmV3X2NsdXN0ZXIucGdkYXRhKTsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmluL3BnX3VwZ3Jh ZGUvcGdfdXBncmFkZS5oCmluZGV4IGNkYjZlMmI3NTkuLjM3ZDE3M2NiODYgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaApAQCAtMTE0LDYgKzExNCwxMyBAQCBleHRlcm4gY2hhciAqb3V0cHV0X2Zp bGVzW107CiAgKi8KICNkZWZpbmUgTVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSIDIwMTMw MTIzMQogCisvKgorICogU3dpY3RoIGZyb20gMzItYml0IHRvIDY0LWJpdCBmb3IgbXVsdGl4aWQg b2Zmc2V0cy4KKyAqCisgKiBYWFg6IHNob3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBhY3R1YWwgQ0FU QUxPR19WRVJTSU9OX05PIG9uIGNvbW1pdC4KKyAqLworI2RlZmluZSBNVUxUSVhBQ1RPRkZTRVRf Rk9STUFUQ0hBTkdFX0NBVF9WRVIgMjAyNDA4MTIzCisKIC8qCiAgKiBsYXJnZSBvYmplY3QgY2h1 bmsgc2l6ZSBhZGRlZCB0byBwZ19jb250cm9sZGF0YSwKICAqIGNvbW1pdCA1ZjkzYzM3ODA1ZTc0 ODU0ODg0ODA5MTZiNDU4NWUwOThkM2NjODgzCkBAIC0yMzAsNyArMjM3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QKIAl1aW50MzIJCWNoa3BudF9ueHRlcG9jaDsKIAl1aW50MzIJCWNoa3BudF9ueHRvaWQ7 CiAJdWludDMyCQljaGtwbnRfbnh0bXVsdGk7Ci0JdWludDMyCQljaGtwbnRfbnh0bXhvZmY7CisJ dWludDY0CQljaGtwbnRfbnh0bXhvZmY7CiAJdWludDMyCQljaGtwbnRfb2xkc3RNdWx0aTsKIAl1 aW50MzIJCWNoa3BudF9vbGRzdHhpZDsKIAl1aW50MzIJCWFsaWduOwpAQCAtNDk0LDMgKzUwMSw3 IEBAIHZvaWQJCXBhcmFsbGVsX3RyYW5zZmVyX2FsbF9uZXdfZGJzKERiSW5mb0FyciAqb2xkX2Ri X2FyciwgRGJJbmZvQXJyICpuZXdfZGJfYXJyCiAJCQkJCQkJCQkJICBjaGFyICpvbGRfcGdkYXRh LCBjaGFyICpuZXdfcGdkYXRhLAogCQkJCQkJCQkJCSAgY2hhciAqb2xkX3RhYmxlc3BhY2UpOwog Ym9vbAkJcmVhcF9jaGlsZChib29sIHdhaXRfZm9yX2NoaWxkKTsKKworLyogc2VncmVzaXplLmMg Ki8KKwordWludDY0CQljb252ZXJ0X211bHRpeGFjdF9vZmZzZXRzKHZvaWQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3Nl Z3Jlc2l6ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU0N2MwYTI0 MDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvc2VncmVzaXplLmMKQEAg LTAsMCArMSwzNTAgQEAKKy8qCisgKglzZWdyZXNpemUuYworICoKKyAqCVNMUlUgc2VnbWVudCBy ZXNpemUgdXRpbGl0eQorICoKKyAqCUNvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCXNyYy9iaW4vcGdfdXBncmFkZS9zZWdyZXNpemUuYwor ICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSAicGdfdXBncmFkZS5o IgorI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKKworLyogU2VlIHNscnUuaCAqLworI2Rl ZmluZSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UCQkzMgorCisvKgorICogU29tZSBraW5kIG9mIGl0 ZXJhdG9yIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgU0xSVSBzZWdtZW50LiAgVGhlIGlk ZWEgaXMKKyAqIHRvIHNwZWNpZnkgdGhlIHNlZ21lbnQgYW5kIHBhZ2UgbnVtYmVyIGFuZCB0aGVu IG1vdmUgdGhyb3VnaCB0aGUgcGFnZXMuCisgKi8KK3R5cGVkZWYgc3RydWN0IFNscnVTZWdTdGF0 ZQoreworCWNoYXIJICAgKmRpcjsKKwljaGFyCSAgICpmbjsKKwlGSUxFCSAgICpmaWxlOworCWlu dDY0CQlzZWdubzsKKwl1aW50NjQJCXBhZ2VubzsKKwlib29sCQlsZWFkaW5nX2dhcDsKKwlib29s CQlsb25nX3NlZ21lbnRfbmFtZXM7Cit9IFNscnVTZWdTdGF0ZTsKKworLyoKKyAqIEdldCBTTFJV IHNlZ21lbiBmaWxlIG5hbWUgZnJvbSBzdGF0ZS4KKyAqCisgKiBOT1RFOiB0aGlzIGZ1bmN0aW9u IHNob3VsZCBtaXJyb3IgU2xydUZpbGVOYW1lIGNhbGwuCisgKi8KK3N0YXRpYyBpbmxpbmUgY2hh ciAqCitTbHJ1RmlsZU5hbWUoU2xydVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPmxv bmdfc2VnbWVudF9uYW1lcykKKwl7CisJCUFzc2VydChzdGF0ZS0+c2Vnbm8gPj0gMCAmJgorCQkJ ICAgc3RhdGUtPnNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkZGRkYpKTsKKwkJcmV0 dXJuIHBzcHJpbnRmKCIlcy8lMDE1bGxYIiwgc3RhdGUtPmRpciwgKGxvbmcgbG9uZykgc3RhdGUt PnNlZ25vKTsKKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0KHN0YXRlLT5zZWdubyA+PSAwICYmCisJ CQkgICBzdGF0ZS0+c2Vnbm8gPD0gSU5UNjRDT05TVCgweEZGRkZGRikpOworCQlyZXR1cm4gcHNw cmludGYoIiVzLyUwNFgiLCBzdGF0ZS0+ZGlyLCAodW5zaWduZWQgaW50KSBzdGF0ZS0+c2Vnbm8p OworCX0KK30KKworLyoKKyAqIENyZWF0ZSBTTFJVIHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGlj IHZvaWQKK2NyZWF0ZV9zZWdtZW50KFNscnVTZWdTdGF0ZSAqc3RhdGUpCit7CisJQXNzZXJ0KHN0 YXRlLT5mbiA9PSBOVUxMKTsKKwlBc3NlcnQoc3RhdGUtPmZpbGUgPT0gTlVMTCk7CisKKwlzdGF0 ZS0+Zm4gPSBTbHJ1RmlsZU5hbWUoc3RhdGUpOworCXN0YXRlLT5maWxlID0gZm9wZW4oc3RhdGUt PmZuLCAid2IiKTsKKwlpZiAoIXN0YXRlLT5maWxlKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNy ZWF0ZSBmaWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworfQorCisvKgorICogT3BlbiBleGlz dGluZyBTTFJVIHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK29wZW5fc2VnbWVudChT bHJ1U2VnU3RhdGUgKnN0YXRlKQoreworCUFzc2VydChzdGF0ZS0+Zm4gPT0gTlVMTCk7CisJQXNz ZXJ0KHN0YXRlLT5maWxlID09IE5VTEwpOworCisJc3RhdGUtPmZuID0gU2xydUZpbGVOYW1lKHN0 YXRlKTsKKwlzdGF0ZS0+ZmlsZSA9IGZvcGVuKHN0YXRlLT5mbiwgInJiIik7CisJaWYgKCFzdGF0 ZS0+ZmlsZSkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIHN0 YXRlLT5mbik7Cit9CisKKy8qCisgKiBDbG9zZSBTTFJVIHNlZ21lbnQgZmlsZS4KKyAqLworc3Rh dGljIHZvaWQKK2Nsb3NlX3NlZ21lbnQoU2xydVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3Rh dGUtPmZpbGUpCisJeworCQlmY2xvc2Uoc3RhdGUtPmZpbGUpOworCQlzdGF0ZS0+ZmlsZSA9IE5V TEw7CisJfQorCisJaWYgKHN0YXRlLT5mbikKKwl7CisJCXBmcmVlKHN0YXRlLT5mbik7CisJCXN0 YXRlLT5mbiA9IE5VTEw7CisJfQorfQorCisvKgorICogUmVhZCBuZXh0IHBhZ2UgZnJvbSB0aGUg b2xkIDMyLWJpdCBvZmZzZXQgc2VnbWVudCBmaWxlLgorICovCitzdGF0aWMgaW50CityZWFkX29s ZF9zZWdtZW50X3BhZ2UoU2xydVNlZ1N0YXRlICpzdGF0ZSwgdm9pZCAqYnVmLCBib29sICplbXB0 eSkKK3sKKwlpbnQJCWxlbjsKKworCS8qIE9wZW4gbmV4dCBzZWdtZW50IGZpbGUsIGlmIG5lZWRl ZC4gKi8KKwlpZiAoIXN0YXRlLT5mbikKKwl7CisJCWlmICghc3RhdGUtPnNlZ25vKQorCQkJc3Rh dGUtPmxlYWRpbmdfZ2FwID0gdHJ1ZTsKKworCQlvcGVuX3NlZ21lbnQoc3RhdGUpOworCisJCS8q IFNldCBwb3NpdGlvbiB0byB0aGUgbmVlZGVkIHBhZ2UuICovCisJCWlmIChzdGF0ZS0+cGFnZW5v ID4gMCAmJgorCQkJZnNlZWsoc3RhdGUtPmZpbGUsIHN0YXRlLT5wYWdlbm8gKiBCTENLU1osIFNF RUtfU0VUKSkKKwkJeworCQkJY2xvc2Vfc2VnbWVudChzdGF0ZSk7CisJCX0KKwl9CisKKwlpZiAo c3RhdGUtPmZpbGUpCisJeworCQkvKiBTZWdtZW50IGZpbGUgZG8gZXhpc3RzLCByZWFkIHBhZ2Ug ZnJvbSBpdC4gKi8KKwkJc3RhdGUtPmxlYWRpbmdfZ2FwID0gZmFsc2U7CisKKwkJbGVuID0gZnJl YWQoYnVmLCBzaXplb2YoY2hhciksIEJMQ0tTWiwgc3RhdGUtPmZpbGUpOworCisJCS8qIEFyZSB3 ZSBkb25lIG9yIHdhcyB0aGVyZSBhbiBlcnJvcj8gKi8KKwkJaWYgKGxlbiA8PSAwKQorCQl7CisJ CQlpZiAoZmVycm9yKHN0YXRlLT5maWxlKSkKKwkJCQlwZ19mYXRhbCgiZXJyb3IgcmVhZGluZyBm aWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworCisJCQlpZiAoZmVvZihzdGF0ZS0+ZmlsZSkp CisJCQl7CisJCQkJKmVtcHR5ID0gdHJ1ZTsKKwkJCQlsZW4gPSAtMTsKKworCQkJCWNsb3NlX3Nl Z21lbnQoc3RhdGUpOworCQkJfQorCQl9CisJCWVsc2UKKwkJCSplbXB0eSA9IGZhbHNlOworCX0K KwllbHNlIGlmICghc3RhdGUtPmxlYWRpbmdfZ2FwKQorCXsKKwkJLyogV2UgcmVhY2hlZCB0aGUg bGFzdCBzZWdtZW50LiAqLworCQlsZW4gPSAtMTsKKwkJKmVtcHR5ID0gdHJ1ZTsKKwl9CisJZWxz ZQorCXsKKwkJLyogU2tpcCBmZXcgZmlyc3Qgc2VnbWVudHMgaWYgdGhleSB3ZXJlIGZyb3plbiBh bmQgcmVtb3ZlZC4gKi8KKwkJbGVuID0gQkxDS1NaOworCQkqZW1wdHkgPSB0cnVlOworCX0KKwor CWlmICgrK3N0YXRlLT5wYWdlbm8gPj0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkKKwl7CisJCS8q IFN0YXJ0IGEgbmV3IHNlZ21lbnQuICovCisJCXN0YXRlLT5zZWdubysrOworCQlzdGF0ZS0+cGFn ZW5vID0gMDsKKworCQljbG9zZV9zZWdtZW50KHN0YXRlKTsKKwl9CisKKwlyZXR1cm4gbGVuOwor fQorCisvKgorICogV3JpdGUgbmV4dCBwYWdlIHRvIHRoZSBuZXcgNjQtYml0IG9mZnNldCBzZWdt ZW50IGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCit3cml0ZV9uZXdfc2VnbWVudF9wYWdlKFNscnVT ZWdTdGF0ZSAqc3RhdGUsIHZvaWQgKmJ1ZikKK3sKKwkvKgorCSAqIENyZWF0ZSBhIG5ldyBzZWdt ZW50IGZpbGUgaWYgd2Ugc3RpbGwgZGlkbid0LiAgQ3JlYXRpb24gaXMKKwkgKiBwb3N0cG9uZWQg dW50aWwgdGhlIGZpcnN0IG5vbi1lbXB0eSBwYWdlIGlzIGZvdW5kLiAgVGhpcyBoZWxwcworCSAq IG5vdCB0byBjcmVhdGUgY29tcGxldGVseSBlbXB0eSBzZWdtZW50cy4KKwkgKi8KKwlpZiAoIXN0 YXRlLT5maWxlKQorCXsKKwkJY3JlYXRlX3NlZ21lbnQoc3RhdGUpOworCisJCS8qIFdyaXRlIHpl cm9lcyB0byB0aGUgcHJldmlvdXNseSBza2lwcGVkIHByZWZpeC4gKi8KKwkJaWYgKHN0YXRlLT5w YWdlbm8gPiAwKQorCQl7CisJCQljaGFyCQl6ZXJvYnVmW0JMQ0tTWl0gPSB7MH07CisKKwkJCWZv ciAoaW50NjQgaSA9IDA7IGkgPCBzdGF0ZS0+cGFnZW5vOyBpKyspCisJCQl7CisJCQkJaWYgKGZ3 cml0ZSh6ZXJvYnVmLCBzaXplb2YoY2hhciksIEJMQ0tTWiwgc3RhdGUtPmZpbGUpICE9IEJMQ0tT WikKKwkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBzdGF0 ZS0+Zm4pOworCQkJfQorCQl9CisJfQorCisJLyogV3JpdGUgcGFnZSB0byB0aGUgbmV3IHNlZ21l bnQgKGlmIGl0IHdhcyBjcmVhdGVkKS4gKi8KKwlpZiAoc3RhdGUtPmZpbGUpCisJeworCQlpZiAo ZndyaXRlKGJ1Ziwgc2l6ZW9mKGNoYXIpLCBCTENLU1osIHN0YXRlLT5maWxlKSAhPSBCTENLU1op CisJCQlwZ19mYXRhbCgiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5m bik7CisJfQorCisJc3RhdGUtPnBhZ2VubysrOworCisJLyoKKwkgKiBEaWQgd2UgcmVhY2ggdGhl IG1heGltdW0gcGFnZSBudW1iZXI/ICBUaGVuIGNsb3NlIHNlZ21lbnQgZmlsZQorCSAqIGFuZCBj cmVhdGUgYSBuZXcgb25lIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKwkgKi8KKwlpZiAoc3RhdGUt PnBhZ2VubyA+PSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKQorCXsKKwkJc3RhdGUtPnNlZ25vKys7 CisJCXN0YXRlLT5wYWdlbm8gPSAwOworCQljbG9zZV9zZWdtZW50KHN0YXRlKTsKKwl9Cit9CisK Ky8qCisgKiBDb252ZXJ0IHBnX211bHRpeGFjdC9vZmZzZXRzIHNlZ21lbnRzIGFuZCByZXR1cm4g b2xkZXN0IG11bHRpIG9mZnNldC4KKyAqLwordWludDY0Citjb252ZXJ0X211bHRpeGFjdF9vZmZz ZXRzKHZvaWQpCit7CisJLyogU2VlIG11bHRpeGFjdC5jICovCisjZGVmaW5lIE1VTFRJWEFDVF9P RkZTRVRTX1BFUl9QQUdFX09MRAkoQkxDS1NaIC8gc2l6ZW9mKHVpbnQzMikpCisjZGVmaW5lIE1V TFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFCQkoQkxDS1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNl dCkpCisKKwlTbHJ1U2VnU3RhdGUJb2xkc2VnID0gezB9LAorCQkJCQluZXdzZWcgPSB7MH07CisJ dWludDMyCQkJb2xkYnVmW01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX09MRF0gPSB7MH07CisJ TXVsdGlYYWN0T2Zmc2V0CW5ld2J1ZltNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV0gPSB7MH07 CisJLyoKKwkgKiBJdCBpcyBtdWNoIGVhc2llciB0byBkZWFsIHdpdGggbXVsdGkgd3JhcGFyb3Vu ZCBpbiA2NCBiaXRkIGZvcm1hdC4gIFRodXMKKwkgKiB3ZSB1c2UgNjQgYml0cyBmb3IgbXVsdGkt dHJhbnNhY3Rpb25zLCBhbHRob3VnaCB0aGV5IHJlbWFpbiAzMiBiaXRzLgorCSAqLworCXVpbnQ2 NAkJCW9sZGVzdF9tdWx0aSA9IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9vbGRzdE11 bHRpLAorCQkJCQluZXh0X211bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254 dG11bHRpLAorCQkJCQltdWx0aSwKKwkJCQkJb2xkX2VudHJ5LAorCQkJCQluZXdfZW50cnk7CisJ Ym9vbAkJCWZvdW5kID0gZmFsc2U7CisJdWludDY0CQkJb2xkZXN0X29mZnNldCA9IDA7CisKKwlw cmVwX3N0YXR1cygiQ29udmVydGluZyBwZ19tdWx0aXhhY3Qvb2Zmc2V0cyB0byA2NC1iaXQiKTsK KworCW9sZHNlZy5wYWdlbm8gPSBvbGRlc3RfbXVsdGkgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJf UEFHRV9PTEQ7CisJb2xkc2VnLnNlZ25vID0gb2xkc2VnLnBhZ2VubyAvIFNMUlVfUEFHRVNfUEVS X1NFR01FTlQ7CisJb2xkc2VnLnBhZ2VubyAlPSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCW9s ZHNlZy5kaXIgPSBwc3ByaW50ZigiJXMvcGdfbXVsdGl4YWN0L29mZnNldHMiLCBvbGRfY2x1c3Rl ci5wZ2RhdGEpOworCW9sZHNlZy5sb25nX3NlZ21lbnRfbmFtZXMgPSBmYWxzZTsJCS8qIG9sZCBm b3JtYXQgWFhYWCAqLworCisJbmV3c2VnLnBhZ2VubyA9IG9sZGVzdF9tdWx0aSAvIE1VTFRJWEFD VF9PRkZTRVRTX1BFUl9QQUdFOworCW5ld3NlZy5zZWdubyA9IG5ld3NlZy5wYWdlbm8gLyBTTFJV X1BBR0VTX1BFUl9TRUdNRU5UOworCW5ld3NlZy5wYWdlbm8gJT0gU0xSVV9QQUdFU19QRVJfU0VH TUVOVDsKKwluZXdzZWcuZGlyID0gcHNwcmludGYoIiVzL3BnX211bHRpeGFjdC9vZmZzZXRzIiwg bmV3X2NsdXN0ZXIucGdkYXRhKTsKKwluZXdzZWcubG9uZ19zZWdtZW50X25hbWVzID0gdHJ1ZTsK KworCW9sZF9lbnRyeSA9IG9sZGVzdF9tdWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdF X09MRDsKKwluZXdfZW50cnkgPSBvbGRlc3RfbXVsdGkgJSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJf UEFHRTsKKworCWlmIChuZXh0X211bHRpIDwgb2xkZXN0X211bHRpKQorCQluZXh0X211bHRpICs9 ICh1aW50NjQpIDEgPDwgMzI7CQkvKiB3cmFwYXJvdW5kICovCisKKwlmb3IgKG11bHRpID0gb2xk ZXN0X211bHRpOyBtdWx0aSA8IG5leHRfbXVsdGk7IG9sZF9lbnRyeSA9IDApCisJeworCQlpbnQJ CQlvbGRsZW47CisJCWJvb2wJCWVtcHR5OworCisJCS8qIEhhbmRsZSBwb3NzaWJsZSBzZWdtZW50 IHdyYXBhcm91bmQuICovCisJCWlmIChvbGRzZWcuc2Vnbm8gPiBNYXhNdWx0aVhhY3RJZCAvCisJ CQkJCQkJCU1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX09MRCAvCisJCQkJCQkJCVNMUlVfUEFH RVNfUEVSX1NFR01FTlQpCisJCQlvbGRzZWcuc2Vnbm8gPSAwOworCisJCS8qIFJlYWQgb2xkIG9m ZnNldCBzZWdtZW50LiAqLworCQlvbGRsZW4gPSByZWFkX29sZF9zZWdtZW50X3BhZ2UoJm9sZHNl Zywgb2xkYnVmLCAmZW1wdHkpOworCQlpZiAob2xkbGVuIDw9IDAgfHwgZW1wdHkpCisJCQlwZ19m YXRhbCgiY2Fubm90IHJlYWQgcGFnZSAlbGx1IGZyb20gZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJ ICh1bnNpZ25lZCBsb25nIGxvbmcpIG9sZHNlZy5wYWdlbm8sIG9sZHNlZy5mbik7CisKKwkJLyog RmlsbCBwb3NzaWJsZSBnYXAuICovCisJCWlmIChvbGRsZW4gPCBCTENLU1opCisJCQltZW1zZXQo KGNoYXIgKikgb2xkYnVmICsgb2xkbGVuLCAwLCBCTENLU1ogLSBvbGRsZW4pOworCisJCS8qIFNh dmUgb2xkZXN0IG11bHRpIG9mZnNldCAqLworCQlpZiAoIWZvdW5kKQorCQl7CisJCQlvbGRlc3Rf b2Zmc2V0ID0gb2xkYnVmW29sZF9lbnRyeV07CisJCQlmb3VuZCA9IHRydWU7CisJCX0KKworCQkv KiAuLi4gc2tpcCB3cmFwcGVkLWFyb3VuZCBpbnZhbGlkIG11bHRpICovCisJCWlmIChtdWx0aSA9 PSAodWludDY0KSAxIDw8IDMyKQorCQl7CisJCQlBc3NlcnQob2xkc2VnLnNlZ25vID09IDApOwor CQkJQXNzZXJ0KG9sZHNlZy5wYWdlbm8gPT0gMSk7CisJCQlBc3NlcnQob2xkX2VudHJ5ID09IDAp OworCisJCQltdWx0aSArPSBGaXJzdE11bHRpWGFjdElkOworCQkJb2xkX2VudHJ5ID0gRmlyc3RN dWx0aVhhY3RJZDsKKwkJfQorCisJCS8qIENvcHkgZW50cmllcyB0byB0aGUgbmV3IHBhZ2UuICov CisJCWZvciAoOyBtdWx0aSA8IG5leHRfbXVsdGkgJiYgb2xkX2VudHJ5IDwgTVVMVElYQUNUX09G RlNFVFNfUEVSX1BBR0VfT0xEOworCQkJIG11bHRpKyssIG9sZF9lbnRyeSsrKQorCQl7CisJCQlN dWx0aVhhY3RPZmZzZXQgb2Zmc2V0ID0gb2xkYnVmW29sZF9lbnRyeV07CisKKwkJCS8qIEhhbmRs ZSBwb3NzaWJsZSBvZmZzZXQgd3JhcGFyb3VuZC4gKi8KKwkJCWlmIChvZmZzZXQgPCBvbGRlc3Rf b2Zmc2V0KQorCQkJCW9mZnNldCArPSAoKHVpbnQ2NCkgMSA8PCAzMikgLSAxOworCisJCQkvKiBT dWJ0cmFjdCBvbGRlc3Rfb2Zmc2V0LCBzbyBuZXcgb2Zmc2V0cyB3aWxsIHN0YXJ0IGZyb20gMS4g Ki8KKwkJCW5ld2J1ZltuZXdfZW50cnkrK10gPSBvZmZzZXQgLSBvbGRlc3Rfb2Zmc2V0ICsgMTsK KwkJCWlmIChuZXdfZW50cnkgPj0gTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0UpCisJCQl7CisJ CQkJLyogV3JpdGUgYSBuZXcgcGFnZS4gKi8KKwkJCQl3cml0ZV9uZXdfc2VnbWVudF9wYWdlKCZu ZXdzZWcsIG5ld2J1Zik7CisJCQkJbmV3X2VudHJ5ID0gMDsKKwkJCX0KKwkJfQorCX0KKworCS8q IFdyaXRlIHRoZSBsYXN0IGluY29tcGxldGUgcGFnZS4gKi8KKwlpZiAobmV3X2VudHJ5ID4gMCB8 fCBvbGRlc3RfbXVsdGkgPT0gbmV4dF9tdWx0aSkKKwl7CisJCW1lbXNldCgmbmV3YnVmW25ld19l bnRyeV0sIDAsCisJCQkgICBzaXplb2YobmV3YnVmWzBdKSAqIChNVUxUSVhBQ1RfT0ZGU0VUU19Q RVJfUEFHRSAtIG5ld19lbnRyeSkpOworCQl3cml0ZV9uZXdfc2VnbWVudF9wYWdlKCZuZXdzZWcs IG5ld2J1Zik7CisJfQorCisJLyogUmVsZWFzZSByZXNvdXJjZXMuICovCisJY2xvc2Vfc2VnbWVu dCgmb2xkc2VnKTsKKwljbG9zZV9zZWdtZW50KCZuZXdzZWcpOworCisJcGZyZWUob2xkc2VnLmRp cik7CisJcGZyZWUobmV3c2VnLmRpcik7CisKKwljaGVja19vaygpOworCisJcmV0dXJuIG9sZGVz dF9vZmZzZXQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24u aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCmluZGV4IDlhMGFlMjc4MjMuLmYy OWRjOWZjOTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCkBAIC01Nyw2ICs1Nyw2IEBACiAg Ki8KIAogLyoJCQkJCQkJeXl5eW1tZGROICovCi0jZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwky MDI0MDgxMjIKKyNkZWZpbmUgQ0FUQUxPR19WRVJTSU9OX05PCTIwMjQwODEyMwogCiAjZW5kaWYK LS0gCjIuNDUuMgoK --000000000000cfbfd8061fa667c4--