From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Tomas Mraz To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: update to the 1.1.1c release Date: Tue, 09 Jun 2026 12:44:31 GMT Message-ID: <178100907142.1.6309771769465897461.rpms-openssl-31d61b19d554@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 31d61b19d554907fbc9d34f30c96c68c7e6c8e73 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDMxZDYxYjE5ZDU1NDkwN2ZiYzlkMzRmMzBjOTZj NjhjN2U2YzhlNzMKQXV0aG9yIDogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMTktMDUtMjlUMTc6MjM6MzErMDI6MDAKU3RhdHMgIDogKzMxOS8tMjQ2MyBp biAxMiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMv b3BlbnNzbC9jLzMxZDYxYjE5ZDU1NDkwN2ZiYzlkMzRmMzBjOTZjNjhjN2U2YzhlNzM/YnJhbmNo PXJlYmFzZV80MGJldGEKCkxvZzoKdXBkYXRlIHRvIHRoZSAxLjEuMWMgcmVsZWFzZQoKLS0tCmRp ZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCAzYjhhYTQ1Li5hM2E2MDU0 IDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTQzLDMgKzQzLDQg QEAgb3BlbnNzbC0xLjAuMGEtdXNhLnRhci5iejIKIC9vcGVuc3NsLTEuMS4xLWhvYmJsZWQudGFy Lnh6CiAvb3BlbnNzbC0xLjEuMWEtaG9iYmxlZC50YXIueHoKIC9vcGVuc3NsLTEuMS4xYi1ob2Ji bGVkLnRhci54egorL29wZW5zc2wtMS4xLjFjLWhvYmJsZWQudGFyLnh6CgpkaWZmIC0tZ2l0IGEv ZWN0ZXN0LmMgYi9lY3Rlc3QuYwppbmRleCA1YzIwYWMzLi41M2FkZjg4IDEwMDY0NAotLS0gYS9l Y3Rlc3QuYworKysgYi9lY3Rlc3QuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg MjAwMS0yMDE4IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KKyAqIENvcHlyaWdodCAyMDAxLTIwMTkgVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3JzLiBB bGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChjKSAyMDAyLCBPcmFjbGUgYW5kL29y IGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkCiAgKgogICogTGljZW5zZWQgdW5k ZXIgdGhlIE9wZW5TU0wgbGljZW5zZSAodGhlICJMaWNlbnNlIikuICBZb3UgbWF5IG5vdCB1c2UK QEAgLTcyOCw2ICs3MjgsNzUgQEAgZXJyOgogICAgIEJOX0NUWF9mcmVlKGN0eCk7CiAgICAgcmV0 dXJuIHI7CiB9CisKKy8qCisgKiBUZXN0cyBhIHBvaW50IGtub3duIHRvIGNhdXNlIGFuIGluY29y cmVjdCB1bmRlcmZsb3cgaW4gYW4gb2xkIHZlcnNpb24gb2YKKyAqIGVjcF9uaXN0NTIxLmMKKyAq Lworc3RhdGljIGludCB1bmRlcmZsb3dfdGVzdCh2b2lkKQoreworICAgIEJOX0NUWCAqY3R4ID0g TlVMTDsKKyAgICBFQ19HUk9VUCAqZ3JwID0gTlVMTDsKKyAgICBFQ19QT0lOVCAqUCA9IE5VTEws ICpRID0gTlVMTCwgKlIgPSBOVUxMOworICAgIEJJR05VTSAqeDEgPSBOVUxMLCAqeTEgPSBOVUxM LCAqejEgPSBOVUxMLCAqeDIgPSBOVUxMLCAqeTIgPSBOVUxMOworICAgIEJJR05VTSAqayA9IE5V TEw7CisgICAgaW50IHRlc3RyZXN1bHQgPSAwOworICAgIGNvbnN0IGNoYXIgKngxc3RyID0KKyAg ICAgICAgIjE1MzRmMDA3N2ZmZmZmZTg3ZTlhZGNmZTAwMDAwMDAwMDAwMDAwMDAwMDAwM2UwNWEy MWQyNDAwMDAyZTAzMWIxZjQiCisgICAgICAgICJiODAwMDBjNmZhZmE0ZjNjMTI4ODc5OGQ2MjRh MjQ3YjVlMmZmZmZmZmZmZmZmZmZmZWZlMDk5MjQxOTAwMDA0IjsKKyAgICBjb25zdCBjaGFyICpw NTIxbTEgPQorICAgICAgICAiMWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZiIKKyAgICAgICAgImZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUiOworCisgICAg Y3R4ID0gQk5fQ1RYX25ldygpOworICAgIGlmICghVEVTVF9wdHIoY3R4KSkKKyAgICAgICAgcmV0 dXJuIDA7CisKKyAgICBCTl9DVFhfc3RhcnQoY3R4KTsKKyAgICB4MSA9IEJOX0NUWF9nZXQoY3R4 KTsKKyAgICB5MSA9IEJOX0NUWF9nZXQoY3R4KTsKKyAgICB6MSA9IEJOX0NUWF9nZXQoY3R4KTsK KyAgICB4MiA9IEJOX0NUWF9nZXQoY3R4KTsKKyAgICB5MiA9IEJOX0NUWF9nZXQoY3R4KTsKKyAg ICBrID0gQk5fQ1RYX2dldChjdHgpOworICAgIGlmICghVEVTVF9wdHIoaykpCisgICAgICAgIGdv dG8gZXJyOworCisgICAgZ3JwID0gRUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWUoTklEX3NlY3A1 MjFyMSk7CisgICAgUCA9IEVDX1BPSU5UX25ldyhncnApOworICAgIFEgPSBFQ19QT0lOVF9uZXco Z3JwKTsKKyAgICBSID0gRUNfUE9JTlRfbmV3KGdycCk7CisgICAgaWYgKCFURVNUX3B0cihncnAp IHx8ICFURVNUX3B0cihQKSB8fCAhVEVTVF9wdHIoUSkgfHwgIVRFU1RfcHRyKFIpKQorICAgICAg ICBnb3RvIGVycjsKKworICAgIGlmICghVEVTVF9pbnRfZ3QoQk5faGV4MmJuKCZ4MSwgeDFzdHIp LCAwKQorICAgICAgICAgICAgfHwgIVRFU1RfaW50X2d0KEJOX2hleDJibigmeTEsIHA1MjFtMSks IDApCisgICAgICAgICAgICB8fCAhVEVTVF9pbnRfZ3QoQk5faGV4MmJuKCZ6MSwgcDUyMW0xKSwg MCkKKyAgICAgICAgICAgIHx8ICFURVNUX2ludF9ndChCTl9oZXgyYm4oJmssICIwMiIpLCAwKQor ICAgICAgICAgICAgfHwgIVRFU1RfdHJ1ZShFQ19QT0lOVF9zZXRfSnByb2plY3RpdmVfY29vcmRp bmF0ZXNfR0ZwKGdycCwgUCwgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTEsIHoxLCBjdHgpKQorICAgICAgICAg ICAgfHwgIVRFU1RfdHJ1ZShFQ19QT0lOVF9tdWwoZ3JwLCBRLCBOVUxMLCBQLCBrLCBjdHgpKQor ICAgICAgICAgICAgfHwgIVRFU1RfdHJ1ZShFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVz KGdycCwgUSwgeDEsIHkxLCBjdHgpKQorICAgICAgICAgICAgfHwgIVRFU1RfdHJ1ZShFQ19QT0lO VF9kYmwoZ3JwLCBSLCBQLCBjdHgpKQorICAgICAgICAgICAgfHwgIVRFU1RfdHJ1ZShFQ19QT0lO VF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzKGdycCwgUiwgeDIsIHkyLCBjdHgpKSkKKyAgICAgICAg Z290byBlcnI7CisKKyAgICBpZiAoIVRFU1RfaW50X2VxKEJOX2NtcCh4MSwgeDIpLCAwKQorICAg ICAgICAgICAgfHwgIVRFU1RfaW50X2VxKEJOX2NtcCh5MSwgeTIpLCAwKSkKKyAgICAgICAgZ290 byBlcnI7CisKKyAgICB0ZXN0cmVzdWx0ID0gMTsKKworIGVycjoKKyAgICBCTl9DVFhfZW5kKGN0 eCk7CisgICAgRUNfUE9JTlRfZnJlZShQKTsKKyAgICBFQ19QT0lOVF9mcmVlKFEpOworICAgIEVD X1BPSU5UX2ZyZWUoUik7CisgICAgRUNfR1JPVVBfZnJlZShncnApOworICAgIEJOX0NUWF9mcmVl KGN0eCk7CisKKyAgICByZXR1cm4gdGVzdHJlc3VsdDsKK30KICMgZW5kaWYKIAogc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgcDUyMV9uYW1lZFtdID0gewpAQCAtODM1LDYgKzkwNCw3IEBAIGlu dCBzZXR1cF90ZXN0cyh2b2lkKQogIyBlbmRpZgogIyBpZm5kZWYgT1BFTlNTTF9OT19FQ19OSVNU UF82NF9HQ0NfMTI4CiAgICAgQUREX0FMTF9URVNUUyhuaXN0cF9zaW5nbGVfdGVzdCwgT1NTTF9O RUxFTShuaXN0cF90ZXN0c19wYXJhbXMpKTsKKyAgICBBRERfVEVTVCh1bmRlcmZsb3dfdGVzdCk7 CiAjIGVuZGlmCiAgICAgQUREX0FMTF9URVNUUyhpbnRlcm5hbF9jdXJ2ZV90ZXN0LCBjcnZfbGVu KTsKICAgICBBRERfQUxMX1RFU1RTKGludGVybmFsX2N1cnZlX3Rlc3RfbWV0aG9kLCBjcnZfbGVu KTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMS4xLWVjLWN1cnZlcy5wYXRjaCBiL29wZW5zc2wt MS4xLjEtZWMtY3VydmVzLnBhdGNoCmluZGV4IDM2OGY1NDQuLmE4M2EzMzEgMTAwNjQ0Ci0tLSBh L29wZW5zc2wtMS4xLjEtZWMtY3VydmVzLnBhdGNoCisrKyBiL29wZW5zc2wtMS4xLjEtZWMtY3Vy dmVzLnBhdGNoCkBAIC0xLDQwICsxLDM4IEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9hcHBz L3NwZWVkLmMuY3VydmVzIG9wZW5zc2wtMS4xLjFiL2FwcHMvc3BlZWQuYwotLS0tIG9wZW5zc2wt MS4xLjFiL2FwcHMvc3BlZWQuYy5jdXJ2ZXMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9hcHBzL3NwZWVkLmMJMjAxOS0wMi0yOCAxMToyMDo0 Mi4zNDcxNzAxNjcgKzAxMDAKLUBAIC00ODksODIgKzQ4OSwyOCBAQCBzdGF0aWMgY29uc3QgT1BU X1BBSVIgcnNhX2Nob2ljZXNbXSA9IHsKLSBzdGF0aWMgZG91YmxlIHJzYV9yZXN1bHRzW1JTQV9O VU1dWzJdOyAgLyogMiBvcHM6IHNpZ24gdGhlbiB2ZXJpZnkgKi8KK2RpZmYgLXVwIG9wZW5zc2wt MS4xLjFjL2FwcHMvc3BlZWQuYy5jdXJ2ZXMgb3BlbnNzbC0xLjEuMWMvYXBwcy9zcGVlZC5jCist LS0gb3BlbnNzbC0xLjEuMWMvYXBwcy9zcGVlZC5jLmN1cnZlcwkyMDE5LTA1LTI4IDE1OjEyOjIx LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFjL2FwcHMvc3BlZWQuYwkyMDE5LTA1 LTI5IDE1OjM2OjUzLjMzMjIyNDQ3MCArMDIwMAorQEAgLTQ5MCw5MCArNDkwLDMwIEBAIHN0YXRp YyBkb3VibGUgcnNhX3Jlc3VsdHNbUlNBX05VTV1bMl07CiAgI2VuZGlmIC8qIE9QRU5TU0xfTk9f UlNBICovCiAgCi0tI2RlZmluZSBSX0VDX1AxNjAgICAgMAotLSNkZWZpbmUgUl9FQ19QMTkyICAg IDEKLS0jZGVmaW5lIFJfRUNfUDIyNCAgICAyCi0tI2RlZmluZSBSX0VDX1AyNTYgICAgMwotLSNk ZWZpbmUgUl9FQ19QMzg0ICAgIDQKLS0jZGVmaW5lIFJfRUNfUDUyMSAgICA1Ci0tI2RlZmluZSBS X0VDX0sxNjMgICAgNgotLSNkZWZpbmUgUl9FQ19LMjMzICAgIDcKLS0jZGVmaW5lIFJfRUNfSzI4 MyAgICA4Ci0tI2RlZmluZSBSX0VDX0s0MDkgICAgOQotLSNkZWZpbmUgUl9FQ19LNTcxICAgIDEw Ci0tI2RlZmluZSBSX0VDX0IxNjMgICAgMTEKLS0jZGVmaW5lIFJfRUNfQjIzMyAgICAxMgotLSNk ZWZpbmUgUl9FQ19CMjgzICAgIDEzCi0tI2RlZmluZSBSX0VDX0I0MDkgICAgMTQKLS0jZGVmaW5l IFJfRUNfQjU3MSAgICAxNQotLSNkZWZpbmUgUl9FQ19CUlAyNTZSMSAgMTYKLS0jZGVmaW5lIFJf RUNfQlJQMjU2VDEgIDE3Ci0tI2RlZmluZSBSX0VDX0JSUDM4NFIxICAxOAotLSNkZWZpbmUgUl9F Q19CUlAzODRUMSAgMTkKLS0jZGVmaW5lIFJfRUNfQlJQNTEyUjEgIDIwCi0tI2RlZmluZSBSX0VD X0JSUDUxMlQxICAyMQotLSNkZWZpbmUgUl9FQ19YMjU1MTkgIDIyCi0tI2RlZmluZSBSX0VDX1g0 NDggICAgMjMKLSsjZGVmaW5lIFJfRUNfUDIyNCAgICAwCi0rI2RlZmluZSBSX0VDX1AyNTYgICAg MQotKyNkZWZpbmUgUl9FQ19QMzg0ICAgIDIKLSsjZGVmaW5lIFJfRUNfUDUyMSAgICAzCi0rI2Rl ZmluZSBSX0VDX1gyNTUxOSAgNAotKyNkZWZpbmUgUl9FQ19YNDQ4ICAgIDUKKyBlbnVtIHsKKy0g ICAgUl9FQ19QMTYwLAorLSAgICBSX0VDX1AxOTIsCisgICAgIFJfRUNfUDIyNCwKKyAgICAgUl9F Q19QMjU2LAorICAgICBSX0VDX1AzODQsCisgICAgIFJfRUNfUDUyMSwKKy0jaWZuZGVmIE9QRU5T U0xfTk9fRUMyTQorLSAgICBSX0VDX0sxNjMsCistICAgIFJfRUNfSzIzMywKKy0gICAgUl9FQ19L MjgzLAorLSAgICBSX0VDX0s0MDksCistICAgIFJfRUNfSzU3MSwKKy0gICAgUl9FQ19CMTYzLAor LSAgICBSX0VDX0IyMzMsCistICAgIFJfRUNfQjI4MywKKy0gICAgUl9FQ19CNDA5LAorLSAgICBS X0VDX0I1NzEsCistI2VuZGlmCistICAgIFJfRUNfQlJQMjU2UjEsCistICAgIFJfRUNfQlJQMjU2 VDEsCistICAgIFJfRUNfQlJQMzg0UjEsCistICAgIFJfRUNfQlJQMzg0VDEsCistICAgIFJfRUNf QlJQNTEyUjEsCistICAgIFJfRUNfQlJQNTEyVDEsCisgICAgIFJfRUNfWDI1NTE5LAorICAgICBS X0VDX1g0NDgKKyB9OworIAogICNpZm5kZWYgT1BFTlNTTF9OT19FQwogIHN0YXRpYyBPUFRfUEFJ UiBlY2RzYV9jaG9pY2VzW10gPSB7CiAtICAgIHsiZWNkc2FwMTYwIiwgUl9FQ19QMTYwfSwKQEAg LTQzLDYgKzQxLDcgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvYXBwcy9zcGVlZC5jLmN1cnZl cyBvcGVuc3NsLTEuMS4xYi9hcHBzL3NwZWVkLmMKICAgICAgeyJlY2RzYXAyNTYiLCBSX0VDX1Ay NTZ9LAogICAgICB7ImVjZHNhcDM4NCIsIFJfRUNfUDM4NH0sCiAgICAgIHsiZWNkc2FwNTIxIiwg Ul9FQ19QNTIxfSwKKy0jIGlmbmRlZiBPUEVOU1NMX05PX0VDMk0KIC0gICAgeyJlY2RzYWsxNjMi LCBSX0VDX0sxNjN9LAogLSAgICB7ImVjZHNhazIzMyIsIFJfRUNfSzIzM30sCiAtICAgIHsiZWNk c2FrMjgzIiwgUl9FQ19LMjgzfSwKQEAgLTUzLDYgKzUyLDcgQEAgZGlmZiAtdXAgb3BlbnNzbC0x LjEuMWIvYXBwcy9zcGVlZC5jLmN1cnZlcyBvcGVuc3NsLTEuMS4xYi9hcHBzL3NwZWVkLmMKIC0g ICAgeyJlY2RzYWIyODMiLCBSX0VDX0IyODN9LAogLSAgICB7ImVjZHNhYjQwOSIsIFJfRUNfQjQw OX0sCiAtICAgIHsiZWNkc2FiNTcxIiwgUl9FQ19CNTcxfSwKKy0jIGVuZGlmCiAtICAgIHsiZWNk c2FicnAyNTZyMSIsIFJfRUNfQlJQMjU2UjF9LAogLSAgICB7ImVjZHNhYnJwMjU2dDEiLCBSX0VD X0JSUDI1NlQxfSwKIC0gICAgeyJlY2RzYWJycDM4NHIxIiwgUl9FQ19CUlAzODRSMX0sCkBAIC03 MSw2ICs3MSw3IEBAIGRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2FwcHMvc3BlZWQuYy5jdXJ2ZXMg b3BlbnNzbC0xLjEuMWIvYXBwcy9zcGVlZC5jCiAgICAgIHsiZWNkaHAyNTYiLCBSX0VDX1AyNTZ9 LAogICAgICB7ImVjZGhwMzg0IiwgUl9FQ19QMzg0fSwKICAgICAgeyJlY2RocDUyMSIsIFJfRUNf UDUyMX0sCistIyBpZm5kZWYgT1BFTlNTTF9OT19FQzJNCiAtICAgIHsiZWNkaGsxNjMiLCBSX0VD X0sxNjN9LAogLSAgICB7ImVjZGhrMjMzIiwgUl9FQ19LMjMzfSwKIC0gICAgeyJlY2RoazI4MyIs IFJfRUNfSzI4M30sCkBAIC04MSw2ICs4Miw3IEBAIGRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2Fw cHMvc3BlZWQuYy5jdXJ2ZXMgb3BlbnNzbC0xLjEuMWIvYXBwcy9zcGVlZC5jCiAtICAgIHsiZWNk aGIyODMiLCBSX0VDX0IyODN9LAogLSAgICB7ImVjZGhiNDA5IiwgUl9FQ19CNDA5fSwKIC0gICAg eyJlY2RoYjU3MSIsIFJfRUNfQjU3MX0sCistIyBlbmRpZgogLSAgICB7ImVjZGhicnAyNTZyMSIs IFJfRUNfQlJQMjU2UjF9LAogLSAgICB7ImVjZGhicnAyNTZ0MSIsIFJfRUNfQlJQMjU2VDF9LAog LSAgICB7ImVjZGhicnAzODRyMSIsIFJfRUNfQlJQMzg0UjF9LApAQCAtOTAsNyArOTIsNyBAQCBk aWZmIC11cCBvcGVuc3NsLTEuMS4xYi9hcHBzL3NwZWVkLmMuY3VydmVzIG9wZW5zc2wtMS4xLjFi L2FwcHMvc3BlZWQuYwogICAgICB7ImVjZGh4MjU1MTkiLCBSX0VDX1gyNTUxOX0sCiAgICAgIHsi ZWNkaHg0NDgiLCBSX0VDX1g0NDh9CiAgfTsKLUBAIC0xNDk1LDI5ICsxNDQxLDEwIEBAIGludCBz cGVlZF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0xNTA0LDMxICsxNDQ0LDEwIEBA IGludCBzcGVlZF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgIHVuc2lnbmVk IGludCBiaXRzOwogICAgICB9IHRlc3RfY3VydmVzW10gPSB7CiAgICAgICAgICAvKiBQcmltZSBD dXJ2ZXMgKi8KQEAgLTEwMCw2ICsxMDIsNyBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9hcHBz L3NwZWVkLmMuY3VydmVzIG9wZW5zc2wtMS4xLjFiL2FwcHMvc3BlZWQuYwogICAgICAgICAgeyJu aXN0cDI1NiIsIE5JRF9YOV82Ml9wcmltZTI1NnYxLCAyNTZ9LAogICAgICAgICAgeyJuaXN0cDM4 NCIsIE5JRF9zZWNwMzg0cjEsIDM4NH0sCiAgICAgICAgICB7Im5pc3RwNTIxIiwgTklEX3NlY3A1 MjFyMSwgNTIxfSwKKy0jIGlmbmRlZiBPUEVOU1NMX05PX0VDMk0KIC0gICAgICAgIC8qIEJpbmFy eSBDdXJ2ZXMgKi8KIC0gICAgICAgIHsibmlzdGsxNjMiLCBOSURfc2VjdDE2M2sxLCAxNjN9LAog LSAgICAgICAgeyJuaXN0azIzMyIsIE5JRF9zZWN0MjMzazEsIDIzM30sCkBAIC0xMTEsNiArMTE0 LDcgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvYXBwcy9zcGVlZC5jLmN1cnZlcyBvcGVuc3Ns LTEuMS4xYi9hcHBzL3NwZWVkLmMKIC0gICAgICAgIHsibmlzdGIyODMiLCBOSURfc2VjdDI4M3Ix LCAyODN9LAogLSAgICAgICAgeyJuaXN0YjQwOSIsIE5JRF9zZWN0NDA5cjEsIDQwOX0sCiAtICAg ICAgICB7Im5pc3RiNTcxIiwgTklEX3NlY3Q1NzFyMSwgNTcxfSwKKy0jIGVuZGlmCiAtICAgICAg ICB7ImJyYWlucG9vbFAyNTZyMSIsIE5JRF9icmFpbnBvb2xQMjU2cjEsIDI1Nn0sCiAtICAgICAg ICB7ImJyYWlucG9vbFAyNTZ0MSIsIE5JRF9icmFpbnBvb2xQMjU2dDEsIDI1Nn0sCiAtICAgICAg ICB7ImJyYWlucG9vbFAzODRyMSIsIE5JRF9icmFpbnBvb2xQMzg0cjEsIDM4NH0sCkBAIC0xMjAs NyArMTI0LDcgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvYXBwcy9zcGVlZC5jLmN1cnZlcyBv cGVuc3NsLTEuMS4xYi9hcHBzL3NwZWVkLmMKICAgICAgICAgIC8qIE90aGVyIGFuZCBFQ0RIIG9u bHkgb25lcyAqLwogICAgICAgICAgeyJYMjU1MTkiLCBOSURfWDI1NTE5LCAyNTN9LAogICAgICAg ICAgeyJYNDQ4IiwgTklEX1g0NDgsIDQ0OH0KLUBAIC0yMDE3LDkgKzE5NDQsOSBAQCBpbnQgc3Bl ZWRfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMjAyOCw5ICsxOTQ3LDkgQEAgaW50 IHNwZWVkX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICMgIGVuZGlmCiAgCiAgIyAgaWZu ZGVmIE9QRU5TU0xfTk9fRUMKQEAgLTEzMyw0NiArMTM3LDM4IEBAIGRpZmYgLXVwIG9wZW5zc2wt MS4xLjFiL2FwcHMvc3BlZWQuYy5jdXJ2ZXMgb3BlbnNzbC0xLjEuMWIvYXBwcy9zcGVlZC5jCiAg ICAgICAgICBlY2RzYV9jW2ldWzBdID0gZWNkc2FfY1tpIC0gMV1bMF0gLyAyOwogICAgICAgICAg ZWNkc2FfY1tpXVsxXSA9IGVjZHNhX2NbaSAtIDFdWzFdIC8gMjsKICAgICAgICAgIGlmIChlY2Rz YV9kb2l0W2ldIDw9IDEgJiYgZWNkc2FfY1tpXVswXSA9PSAwKQotQEAgLTIwMzEsNiArMTk1OCw3 IEBAIGludCBzcGVlZF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0yMDQyLDcgKzE5 NjEsNyBAQCBpbnQgc3BlZWRfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAg ICAgfQogICAgICAgICAgfQogICAgICB9Ci0rI2lmIDAKKy0jICAgaWZuZGVmIE9QRU5TU0xfTk9f RUMyTQorKyMgICBpZiAwCiAgICAgIGVjZHNhX2NbUl9FQ19LMTYzXVswXSA9IGNvdW50IC8gMTAw MDsKICAgICAgZWNkc2FfY1tSX0VDX0sxNjNdWzFdID0gY291bnQgLyAxMDAwIC8gMjsKICAgICAg Zm9yIChpID0gUl9FQ19LMjMzOyBpIDw9IFJfRUNfSzU3MTsgaSsrKSB7Ci1AQCAtMjA1OSw5ICsx OTg3LDkgQEAgaW50IHNwZWVkX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAg ICAgIH0KLSAgICAgICAgIH0KK0BAIC0yMDczLDggKzE5OTIsOCBAQCBpbnQgc3BlZWRfbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgIH0KLS0KKyAjICAgZW5kaWYKKyAKIC0gICAgZWNk aF9jW1JfRUNfUDE2MF1bMF0gPSBjb3VudCAvIDEwMDA7CiAtICAgIGZvciAoaSA9IFJfRUNfUDE5 MjsgaSA8PSBSX0VDX1A1MjE7IGkrKykgewotKyNlbmRpZgogKyAgICBlY2RoX2NbUl9FQ19QMjI0 XVswXSA9IGNvdW50IC8gMTAwMDsKICsgICAgZm9yIChpID0gUl9FQ19QMjU2OyBpIDw9IFJfRUNf UDUyMTsgaSsrKSB7CiAgICAgICAgICBlY2RoX2NbaV1bMF0gPSBlY2RoX2NbaSAtIDFdWzBdIC8g MjsKICAgICAgICAgIGlmIChlY2RoX2RvaXRbaV0gPD0gMSAmJiBlY2RoX2NbaV1bMF0gPT0gMCkK ICAgICAgICAgICAgICBlY2RoX2RvaXRbaV0gPSAwOwotQEAgLTIwNzEsNiArMTk5OSw3IEBAIGlu dCBzcGVlZF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0yMDg0LDcgKzIwMDMsNyBA QCBpbnQgc3BlZWRfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAgICAgfQog ICAgICAgICAgfQogICAgICB9Ci0rI2lmIDAKKy0jICAgaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQor KyMgICBpZiAwCiAgICAgIGVjZGhfY1tSX0VDX0sxNjNdWzBdID0gY291bnQgLyAxMDAwOwogICAg ICBmb3IgKGkgPSBSX0VDX0syMzM7IGkgPD0gUl9FQ19LNTcxOyBpKyspIHsKICAgICAgICAgIGVj ZGhfY1tpXVswXSA9IGVjZGhfY1tpIC0gMV1bMF0gLyAyOwotQEAgLTIxMTYsNiArMjA0NSw3IEBA IGludCBzcGVlZF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAgICB9Ci0g ICAgICAgICB9Ci0gICAgIH0KLSsjZW5kaWYKLSAgICAgLyogZGVmYXVsdCBpdGVyYXRpb24gY291 bnQgZm9yIHRoZSBsYXN0IHR3byBFQyBDdXJ2ZXMgKi8KLSAgICAgZWNkaF9jW1JfRUNfWDI1NTE5 XVswXSA9IGNvdW50IC8gMTgwMDsKLSAgICAgZWNkaF9jW1JfRUNfWDQ0OF1bMF0gPSBjb3VudCAv IDcyMDA7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNwX3NtcGwuYy5jdXJ2 ZXMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjcF9zbXBsLmMKLS0tLSBvcGVuc3NsLTEuMS4x Yi9jcnlwdG8vZWMvZWNwX3NtcGwuYy5jdXJ2ZXMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNwX3NtcGwuYwkyMDE5LTAy LTI4IDExOjE5OjMwLjYyODQ3OTMwMCArMDEwMAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWMvY3J5 cHRvL2VjL2VjcF9zbXBsLmMuY3VydmVzIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9lYy9lY3Bfc21w bC5jCistLS0gb3BlbnNzbC0xLjEuMWMvY3J5cHRvL2VjL2VjcF9zbXBsLmMuY3VydmVzCTIwMTkt MDUtMjggMTU6MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWMvY3J5cHRv L2VjL2VjcF9zbXBsLmMJMjAxOS0wNS0yOSAxNTozMDowOS4wNzEzNDk1MjAgKzAyMDAKIEBAIC0x NDUsNiArMTQ1LDExIEBAIGludCBlY19HRnBfc2ltcGxlX2dyb3VwX3NldF9jdXJ2ZShFQ19HUk8K ICAgICAgICAgIHJldHVybiAwOwogICAgICB9CkBAIC0xODUsMjIgKzE4MSwzMCBAQCBkaWZmIC11 cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNwX3NtcGwuYy5jdXJ2ZXMgb3BlbnNzbC0xLjEu MWIvY3J5cHRvL2VjL2VjcAogICAgICBpZiAoY3R4ID09IE5VTEwpIHsKICAgICAgICAgIGN0eCA9 IG5ld19jdHggPSBCTl9DVFhfbmV3KCk7CiAgICAgICAgICBpZiAoY3R4ID09IE5VTEwpCi1kaWZm IC11cCBvcGVuc3NsLTEuMS4xYi90ZXN0L2VjZHNhdGVzdC5jLmN1cnZlcyBvcGVuc3NsLTEuMS4x Yi90ZXN0L2VjZHNhdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjEuMWIvdGVzdC9lY2RzYXRlc3QuYy5j dXJ2ZXMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEu MS4xYi90ZXN0L2VjZHNhdGVzdC5jCTIwMTktMDItMjggMTE6MTk6MzAuNjI4NDc5MzAwICswMTAw Ci1AQCAtMTc2LDYgKzE3Niw3IEBAIHN0YXRpYyBpbnQgeDlfNjJfdGVzdHModm9pZCkKLSAgICAg aWYgKCFjaGFuZ2VfcmFuZCgpKQotICAgICAgICAgZ290byB4OTYyX2VycjsKLSAKLSsjaWYgMAot ICAgICBpZiAoIVRFU1RfdHJ1ZSh4OV82Ml90ZXN0X2ludGVybmFsKE5JRF9YOV82Ml9wcmltZTE5 MnYxLAotICAgICAgICAgICAgICAgICAgIjMzNDI0MDM1MzY0MDU5ODE3MjkzOTM0ODgzMzQ2OTQ2 MDA0MTU1OTY4ODE4MjY4NjkzNTE2Nzc2MTMiLAotICAgICAgICAgICAgICAgICAgIjU3MzU4MjIz Mjg4ODgxNTUyNTQ2ODM4OTQ5OTc4OTc1NzE5NTE1Njg1NTM2NDI4OTIwMjk5ODIzNDIiKSkpCi1A QCAtMTg2LDYgKzE4Nyw3IEBAIHN0YXRpYyBpbnQgeDlfNjJfdGVzdHModm9pZCkKLSAgICAgICAg ICAgICAgICAgICIzMjM4MTM1NTMyMDk3OTczNTc3MDgwNzg3NzY4MzEyNTA1MDU5MzE4OTEwNTE3 NTUwMDc4NDI3ODE5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjc4NTA1MTc5NDQ4 NzgzIikpKQotICAgICAgICAgZ290byB4OTYyX2VycjsKLSsjZW5kaWYKK2RpZmYgLXVwIG9wZW5z c2wtMS4xLjFjL3Rlc3QvZWNkc2F0ZXN0LmguY3VydmVzIG9wZW5zc2wtMS4xLjFjL3Rlc3QvZWNk c2F0ZXN0LmgKKy0tLSBvcGVuc3NsLTEuMS4xYy90ZXN0L2VjZHNhdGVzdC5oLmN1cnZlcwkyMDE5 LTA1LTI5IDE1OjMwOjA5LjAxMDM1MDU5NSArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFjL3Rlc3Qv ZWNkc2F0ZXN0LmgJMjAxOS0wNS0yOSAxNTo0MToyNC41ODY0NDQyOTQgKzAyMDAKK0BAIC0zMiwy MyArMzIsNiBAQCB0eXBlZGVmIHN0cnVjdCB7CisgfSBlY2RzYV9jYXZzX2thdF90OwogIAotICMg aWZuZGVmIE9QRU5TU0xfTk9fRUMyTQotICAgICBpZiAoIVRFU1RfdHJ1ZSh4OV82Ml90ZXN0X2lu dGVybmFsKE5JRF9YOV82Ml9jMnRuYjE5MXYxLAorIHN0YXRpYyBjb25zdCBlY2RzYV9jYXZzX2th dF90IGVjZHNhX2NhdnNfa2F0c1tdID0geworLSAgICAvKiBwcmltZSBLQVRzIGZyb20gWDkuNjIg Ki8KKy0gICAge05JRF9YOV82Ml9wcmltZTE5MnYxLCBOSURfc2hhMSwKKy0gICAgICI2MTYyNjMi LCAgICAgICAgICAgICAgICAgIC8qICJhYmMiICovCistICAgICAiMWE4ZDU5OGZjMTViZjBmZDg5 MDMwYjVjYjExMTFhZWI5MmFlOGJhZjVlYTQ3NWZiIiwKKy0gICAgICIwNDYyYjEyZDYwNjkwY2Rj ZjMzMGJhYmFiNmU2OTc2M2I0NzFmOTk0ZGQ3MDJkMTZhNTYzYmY1ZWMwODA2OTcwNWZmZmY2NWUi CistICAgICAiNWNhNWMwZDY5NzE2ZGZjYjM0NzQzNzM5MDIiLAorLSAgICAgImZhNmRlMjk3NDZi YmViN2Y4YmIxZTc2MWY4NWY3ZGZiMjk4MzE2OWQ4MmZhMmY0ZSIsCistICAgICAiODg1MDUyMzgw ZmYxNDdiNzM0YzMzMGM0M2QzOWIyYzRhODlmMjliMGY3NDlmZWFkIiwKKy0gICAgICJlOWVjYzc4 MTA2ZGVmODJiZjEwNzBjZjFkNGQ4MDRjM2NiMzkwMDQ2OTUxZGY2ODYifSwKKy0gICAge05JRF9Y OV82Ml9wcmltZTIzOXYxLCBOSURfc2hhMSwKKy0gICAgICI2MTYyNjMiLCAgICAgICAgICAgICAg ICAgIC8qICJhYmMiICovCistICAgICAiN2VmN2M2ZmFiZWZmZmRlYTg2NDIwNmU4MGIwYjA4YTkz MzFlZDkzZTY5ODU2MWI2NGNhMGY3Nzc3ZjNkIiwKKy0gICAgICIwNDViNmRjNTNiYzYxYTI1NDhm ZmIwZjY3MTQ3MmRlNmM5NTIxYTlkMmQyNTM0ZTY1YWJmY2JkNWZlMGM3MDdmZDlmMWVkMmUiCist ICAgICAiNjVmMDlmNmNlMDg5M2JhZjVlOGUzMWU2YWU4MmVhOGMzNTkyMzM1YmU5MDZkMzhkZWUi LAorLSAgICAgIjY1NmM3MTk2YmY4N2RjYzVkMWYxMDIwOTA2ZGYyNzgyMzYwZDM2YjJkZTdhMTdl Y2UzN2Q1MDM3ODRhZiIsCistICAgICAiMmNiN2YzNjgwM2ViYjljNDI3YzU4ZDgyNjVmMTFmYzUw ODQ3NDcxMzMwNzhmYzI3OWRlODc0ZmJlY2IwIiwKKy0gICAgICIyZWVhZTk4ODEwNGU5YzIyMzRh M2MyYmViMWY1M2JmYTVkYzExZmYzNmE4NzVkMWUzY2NiMWY3ZTQ1Y2YifSwKKyAgICAgLyogcHJp bWUgS0FUcyBmcm9tIE5JU1QgQ0FWUCAqLworICAgICB7TklEX3NlY3AyMjRyMSwgTklEX3NoYTIy NCwKKyAgICAgICI2OTkzMjVkNmZjOGZiYmI0OTgxYTZkZWQzYzNhNTRhZDJlNGUzZGI4YTU2Njky MDE5MTIwNjRjNjRlNzAwYzEzOTI0OGNkYzEiCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjEuMS1l dnAta2RmLnBhdGNoIGIvb3BlbnNzbC0xLjEuMS1ldnAta2RmLnBhdGNoCmluZGV4IGNiMTBlYmEu LjZhNzNhNjEgMTAwNjQ0Ci0tLSBhL29wZW5zc2wtMS4xLjEtZXZwLWtkZi5wYXRjaAorKysgYi9v cGVuc3NsLTEuMS4xLWV2cC1rZGYucGF0Y2gKQEAgLTUyMjEsMTcgKzUyMjEsMTYgQEAgZGlmZiAt dXAgb3BlbnNzbC0xLjEuMWIvdGVzdC9yZWNpcGVzLzMwLXRlc3RfZXZwX2tkZi50LmV2cC1rZGYg b3BlbnNzbC0xLjEuMWIvdGUKICt1c2UgT3BlblNTTDo6VGVzdDo6U2ltcGxlOwogKwogK3NpbXBs ZV90ZXN0KCJ0ZXN0X2V2cF9rZGYiLCAiZXZwX2tkZl90ZXN0Iik7Ci1kaWZmIC11cCBvcGVuc3Ns LTEuMS4xYi90ZXN0L3JlY2lwZXMvMzAtdGVzdF9ldnAudC5ldnAta2RmIG9wZW5zc2wtMS4xLjFi L3Rlc3QvcmVjaXBlcy8zMC10ZXN0X2V2cC50Ci0tLS0gb3BlbnNzbC0xLjEuMWIvdGVzdC9yZWNp cGVzLzMwLXRlc3RfZXZwLnQuZXZwLWtkZgkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCAr MDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL3Rlc3QvcmVjaXBlcy8zMC10ZXN0X2V2cC50CTIwMTkt MDItMjggMTM6MDU6MDUuNjU5NTIxMzI2ICswMTAwCi1AQCAtMTUsOCArMTUsOCBAQCB1c2UgT3Bl blNTTDo6VGVzdCBxdy86REVGQVVMVCBkYXRhX2ZpbGUvCitkaWZmIC11cCBvcGVuc3NsLTEuMS4x Yy90ZXN0L3JlY2lwZXMvMzAtdGVzdF9ldnAudC5ldnAta2RmIG9wZW5zc2wtMS4xLjFjL3Rlc3Qv cmVjaXBlcy8zMC10ZXN0X2V2cC50CistLS0gb3BlbnNzbC0xLjEuMWMvdGVzdC9yZWNpcGVzLzMw LXRlc3RfZXZwLnQuZXZwLWtkZgkyMDE5LTA1LTI5IDE2OjU1OjM4LjIzNjk2MDU0MyArMDIwMAor KysrIG9wZW5zc2wtMS4xLjFjL3Rlc3QvcmVjaXBlcy8zMC10ZXN0X2V2cC50CTIwMTktMDUtMjkg MTY6NTc6NDYuMzQ4NzE4MDEyICswMjAwCitAQCAtMTUsNyArMTUsNyBAQCB1c2UgT3BlblNTTDo6 VGVzdCBxdy86REVGQVVMVCBkYXRhX2ZpbGUvCiAgc2V0dXAoInRlc3RfZXZwIik7CiAgCiAgbXkg QGZpbGVzID0gKCAiZXZwY2lwaC50eHQiLCAiZXZwZGlnZXN0LnR4dCIsICJldnBlbmNvZC50eHQi LCAiZXZwa2RmLnR4dCIsCiAtICAgICJldnBtYWMudHh0IiwgImV2cHBiZS50eHQiLCAiZXZwcGtl eS50eHQiLCAiZXZwcGtleV9lY2MudHh0IiwKLS0gICAgImV2cGNhc2UudHh0IiApOwotKyAgICAi ZXZwcGtleV9rZGYudHh0IiwgImV2cG1hYy50eHQiLCAiZXZwcGJlLnR4dCIsICJldnBwa2V5LnR4 dCIsCi0rICAgICJldnBwa2V5X2VjYy50eHQiLCAiZXZwY2FzZS50eHQiICk7CisrICAgICJldnBw a2V5X2tkZi50eHQiLCAiZXZwbWFjLnR4dCIsICJldnBwYmUudHh0IiwgImV2cHBrZXkudHh0Iiwg ImV2cHBrZXlfZWNjLnR4dCIsCisgICAgICJldnBjYXNlLnR4dCIsICJldnBjY21jYXZzLnR4dCIg KTsKICAKICBwbGFuIHRlc3RzID0+IHNjYWxhcihAZmlsZXMpOwogIAoKZGlmZiAtLWdpdCBhL29w ZW5zc2wtMS4xLjEtZmlwcy1wb3N0LXJhbmQucGF0Y2ggYi9vcGVuc3NsLTEuMS4xLWZpcHMtcG9z dC1yYW5kLnBhdGNoCmluZGV4IDZlNzE0YmMuLmZjNjBlMzMgMTAwNjQ0Ci0tLSBhL29wZW5zc2wt MS4xLjEtZmlwcy1wb3N0LXJhbmQucGF0Y2gKKysrIGIvb3BlbnNzbC0xLjEuMS1maXBzLXBvc3Qt cmFuZC5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFhL2NyeXB0 by9maXBzL2ZpcHMuYy5maXBzLXBvc3QtcmFuZCBvcGVuc3NsLTEuMS4xYS9jcnlwdG8vZmlwcy9m aXBzLmMKLS0tLSBvcGVuc3NsLTEuMS4xYS9jcnlwdG8vZmlwcy9maXBzLmMuZmlwcy1wb3N0LXJh bmQJMjAxOS0wMS0xNSAxNDoxNDowNy44MTMzNjA2MzcgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4x YS9jcnlwdG8vZmlwcy9maXBzLmMJMjAxOS0wMS0xNSAxNDoxNDowNy44MzgzNjAxNzMgKzAxMDAK K2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9maXBzL2ZpcHMuYy5maXBzLXBvc3QtcmFu ZCBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vZmlwcy9maXBzLmMKKy0tLSBvcGVuc3NsLTEuMS4xYy9j cnlwdG8vZmlwcy9maXBzLmMuZmlwcy1wb3N0LXJhbmQJMjAxOS0wNS0yOSAxNTo1Mzo1Ni4zMjgy MTYwMDIgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vZmlwcy9maXBzLmMJMjAxOS0w NS0yOSAxNTo1Mzo1Ni4zNTkyMTU0NTcgKzAyMDAKIEBAIC02OCw2ICs2OCw3IEBACiAgCiAgIyBp bmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KQEAgLTUxLDEwICs1MSwxMCBAQCBkaWZmIC11cCBvcGVu c3NsLTEuMS4xYS9jcnlwdG8vZmlwcy9maXBzLmMuZmlwcy1wb3N0LXJhbmQgb3BlbnNzbC0xLjEu MWEvY3J5cHRvLwogICAgICAgICAgcmV0ID0gMTsKICAgICAgICAgIGdvdG8gZW5kOwogICAgICB9 Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYS9jcnlwdG8vaW5jbHVkZS9pbnRlcm5hbC9maXBzX2lu dC5oLmZpcHMtcG9zdC1yYW5kIG9wZW5zc2wtMS4xLjFhL2NyeXB0by9pbmNsdWRlL2ludGVybmFs L2ZpcHNfaW50LmgKLS0tLSBvcGVuc3NsLTEuMS4xYS9jcnlwdG8vaW5jbHVkZS9pbnRlcm5hbC9m aXBzX2ludC5oLmZpcHMtcG9zdC1yYW5kCTIwMTktMDEtMTUgMTQ6MTQ6MDcuODIxMzYwNDg5ICsw MTAwCi0rKysgb3BlbnNzbC0xLjEuMWEvY3J5cHRvL2luY2x1ZGUvaW50ZXJuYWwvZmlwc19pbnQu aAkyMDE5LTAxLTE1IDE0OjE0OjA3LjgzODM2MDE3MyArMDEwMAotQEAgLTc2LDYgKzc2LDggQEAg aW50IEZJUFNfc2VsZnRlc3RfaG1hYyh2b2lkKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFjL2Ny eXB0by9pbmNsdWRlL2ludGVybmFsL2ZpcHNfaW50LmguZmlwcy1wb3N0LXJhbmQgb3BlbnNzbC0x LjEuMWMvY3J5cHRvL2luY2x1ZGUvaW50ZXJuYWwvZmlwc19pbnQuaAorLS0tIG9wZW5zc2wtMS4x LjFjL2NyeXB0by9pbmNsdWRlL2ludGVybmFsL2ZpcHNfaW50LmguZmlwcy1wb3N0LXJhbmQJMjAx OS0wNS0yOSAxNTo1Mzo1Ni4zMzcyMTU4NDQgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYy9jcnlw dG8vaW5jbHVkZS9pbnRlcm5hbC9maXBzX2ludC5oCTIwMTktMDUtMjkgMTU6NTM6NTYuMzU5MjE1 NDU3ICswMjAwCitAQCAtNzcsNiArNzcsOCBAQCBpbnQgRklQU19zZWxmdGVzdF9obWFjKHZvaWQp OwogIGludCBGSVBTX3NlbGZ0ZXN0X2RyYmcodm9pZCk7CiAgaW50IEZJUFNfc2VsZnRlc3RfY21h Yyh2b2lkKTsKICAKQEAgLTYzLDkgKzYzLDkgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWEvY3J5 cHRvL2luY2x1ZGUvaW50ZXJuYWwvZmlwc19pbnQuaC5maXBzLXBvc3QtcmFuZCBvcGVuc3MKICBp bnQgZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KEVWUF9QS0VZICpwa2V5LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRicywgaW50IHRic2xl biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICprYXQsCi1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYS9jcnlwdG8vcmFuZC9yYW5kX3VuaXguYy5m aXBzLXBvc3QtcmFuZCBvcGVuc3NsLTEuMS4xYS9jcnlwdG8vcmFuZC9yYW5kX3VuaXguYwotLS0t IG9wZW5zc2wtMS4xLjFhL2NyeXB0by9yYW5kL3JhbmRfdW5peC5jLmZpcHMtcG9zdC1yYW5kCTIw MTgtMTEtMjAgMTQ6MzU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWEvY3J5 cHRvL3JhbmQvcmFuZF91bml4LmMJMjAxOS0wMS0xNSAxNDoxNzoyMi40MTY3NDg1NDQgKzAxMDAK K2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9yYW5kL3JhbmRfdW5peC5jLmZpcHMtcG9z dC1yYW5kIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9yYW5kL3JhbmRfdW5peC5jCistLS0gb3BlbnNz bC0xLjEuMWMvY3J5cHRvL3JhbmQvcmFuZF91bml4LmMuZmlwcy1wb3N0LXJhbmQJMjAxOS0wNS0y OCAxNToxMjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vcmFu ZC9yYW5kX3VuaXguYwkyMDE5LTA1LTI5IDE2OjU0OjE2LjQ3MTM5MTgwMiArMDIwMAogQEAgLTE2 LDEwICsxNiwxMiBAQAogICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KICAjaW5jbHVkZSAicmFu ZF9sY2wuaCIKQEAgLTc0LDEyICs3NCwxMyBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMS4xYS9jcnlw dG8vcmFuZC9yYW5kX3VuaXguYy5maXBzLXBvc3QtcmFuZCBvcGVuc3NsLTEuMS4xYS9jcgogICNp bmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlICJpbnRlcm5hbC9kc28uaCIKICAjaWYgZGVmaW5l ZChfX2xpbnV4KQotICMgaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKy0jIGluY2x1ZGUgPGFzbS91 bmlzdGQuaD4KKysjIGluY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CiArIyBpbmNsdWRlIDxzeXMvcmFu ZG9tLmg+CiAgI2VuZGlmCiAgI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAgIyBpbmNsdWRlIDxz eXMvdHlwZXMuaD4KLUBAIC0yNTgsNyArMjYwLDcgQEAgc3RhdGljIHNzaXplX3Qgc3lzY3RsX3Jh bmRvbShjaGFyICpidWYsCitAQCAtMjc5LDcgKzI4MSw3IEBAIHN0YXRpYyBzc2l6ZV90IHN5c2N0 bF9yYW5kb20oY2hhciAqYnVmLAogICAqIHN5c2NhbGxfcmFuZG9tKCk6IFRyeSB0byBnZXQgcmFu ZG9tIGRhdGEgdXNpbmcgYSBzeXN0ZW0gY2FsbAogICAqIHJldHVybnMgdGhlIG51bWJlciBvZiBi eXRlcyByZXR1cm5lZCBpbiBidWYsIG9yIDwgMCBvbiBlcnJvci4KICAgKi8KQEAgLTg4LDcgKzg5 LDcgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWEvY3J5cHRvL3JhbmQvcmFuZF91bml4LmMuZmlw cy1wb3N0LXJhbmQgb3BlbnNzbC0xLjEuMWEvY3IKICB7CiAgICAgIC8qCiAgICAgICAqIE5vdGU6 ICdidWZsZW4nIGVxdWFscyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHdoaWNoIGlzIHVzZWQgYnkg dGhlCi1AQCAtMjgwLDYgKzI4Miw3IEBAIHN0YXRpYyBzc2l6ZV90IHN5c2NhbGxfcmFuZG9tKHZv aWQgKmJ1ZiwKK0BAIC0zMDEsNiArMzAzLDcgQEAgc3RhdGljIHNzaXplX3Qgc3lzY2FsbF9yYW5k b20odm9pZCAqYnVmLAogICAgICAgKiAtIExpbnV4IHNpbmNlIDMuMTcgd2l0aCBnbGliYyAyLjI1 CiAgICAgICAqIC0gRnJlZUJTRCBzaW5jZSAxMi4wICgxMjAwMDYxKQogICAgICAgKi8KQEAgLTk2 LDIwICs5NywyMSBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMS4xYS9jcnlwdG8vcmFuZC9yYW5kX3Vu aXguYy5maXBzLXBvc3QtcmFuZCBvcGVuc3NsLTEuMS4xYS9jcgogICMgIGlmIGRlZmluZWQoX19H TlVDX18pICYmIF9fR05VQ19fPj0yICYmIGRlZmluZWQoX19FTEZfXykgJiYgIWRlZmluZWQoX19o cHV4KQogICAgICBleHRlcm4gaW50IGdldGVudHJvcHkodm9pZCAqYnVmZmVyLCBzaXplX3QgbGVu Z3RoKSBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSk7CiAgCi1AQCAtMzAxLDEwICszMDQsMTAgQEAgc3Rh dGljIHNzaXplX3Qgc3lzY2FsbF9yYW5kb20odm9pZCAqYnVmLAorQEAgLTMyMiwxMCArMzI1LDEw IEBAIHN0YXRpYyBzc2l6ZV90IHN5c2NhbGxfcmFuZG9tKHZvaWQgKmJ1ZiwKICAgICAgaWYgKHBf Z2V0ZW50cm9weS5wICE9IE5VTEwpCiAgICAgICAgICByZXR1cm4gcF9nZXRlbnRyb3B5LmYoYnVm LCBidWZsZW4pID09IDAgPyAoc3NpemVfdClidWZsZW4gOiAtMTsKICAjICBlbmRpZgogLQogKyMg IGVuZGlmCiAgICAgIC8qIExpbnV4IHN1cHBvcnRzIHRoaXMgc2luY2UgdmVyc2lvbiAzLjE3ICov Ci0gIyAgaWYgZGVmaW5lZChfX2xpbnV4KSAmJiBkZWZpbmVkKFNZU19nZXRyYW5kb20pCi0tICAg IHJldHVybiBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZiwgYnVmbGVuLCAwKTsKKy0jICBpZiBk ZWZpbmVkKF9fbGludXgpICYmIGRlZmluZWQoX19OUl9nZXRyYW5kb20pCistICAgIHJldHVybiBz eXNjYWxsKF9fTlJfZ2V0cmFuZG9tLCBidWYsIGJ1ZmxlbiwgMCk7CisrIyAgaWYgZGVmaW5lZChf X2xpbnV4KSAmJiBkZWZpbmVkKFNZU19nZXRyYW5kb20pCiArICAgIHJldHVybiBzeXNjYWxsKFNZ U19nZXRyYW5kb20sIGJ1ZiwgYnVmbGVuLCBub25ibG9jaz9HUk5EX05PTkJMT0NLOjApOwogICMg IGVsaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykpICYmIGRl ZmluZWQoS0VSTl9BUk5EKQogICAgICByZXR1cm4gc3lzY3RsX3JhbmRvbShidWYsIGJ1Zmxlbik7 CiAgIyAgZWxzZQotQEAgLTQ1NCw4ICs0NTcsMTAgQEAgc2l6ZV90IHJhbmRfcG9vbF9hY3F1aXJl X2VudHJvcHkoUkFORF9QTworQEAgLTQ3NSw4ICs0NzgsMTAgQEAgc2l6ZV90IHJhbmRfcG9vbF9h Y3F1aXJlX2VudHJvcHkoUkFORF9QTwogICAgICBzaXplX3QgYnl0ZXNfbmVlZGVkOwogICAgICBz aXplX3QgZW50cm9weV9hdmFpbGFibGUgPSAwOwogICAgICB1bnNpZ25lZCBjaGFyICpidWZmZXI7 CkBAIC0xMjEsNyArMTIzLDcgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWEvY3J5cHRvL3JhbmQv cmFuZF91bml4LmMuZmlwcy1wb3N0LXJhbmQgb3BlbnNzbC0xLjEuMWEvY3IKICAgICAgewogICAg ICAgICAgc3NpemVfdCBieXRlczsKICAgICAgICAgIC8qIE1heGltdW0gYWxsb3dlZCBudW1iZXIg b2YgY29uc2VjdXRpdmUgdW5zdWNjZXNzZnVsIGF0dGVtcHRzICovCi1AQCAtNDY0LDcgKzQ2OSw3 IEBAIHNpemVfdCByYW5kX3Bvb2xfYWNxdWlyZV9lbnRyb3B5KFJBTkRfUE8KK0BAIC00ODUsNyAr NDkwLDcgQEAgc2l6ZV90IHJhbmRfcG9vbF9hY3F1aXJlX2VudHJvcHkoUkFORF9QTwogICAgICAg ICAgYnl0ZXNfbmVlZGVkID0gcmFuZF9wb29sX2J5dGVzX25lZWRlZChwb29sLCAxIC8qZW50cm9w eV9mYWN0b3IqLyk7CiAgICAgICAgICB3aGlsZSAoYnl0ZXNfbmVlZGVkICE9IDAgJiYgYXR0ZW1w dHMtLSA+IDApIHsKICAgICAgICAgICAgICBidWZmZXIgPSByYW5kX3Bvb2xfYWRkX2JlZ2luKHBv b2wsIGJ5dGVzX25lZWRlZCk7CkBAIC0xMzAsNyArMTMyLDcgQEAgZGlmZiAtdXAgb3BlbnNzbC0x LjEuMWEvY3J5cHRvL3JhbmQvcmFuZF91bml4LmMuZmlwcy1wb3N0LXJhbmQgb3BlbnNzbC0xLjEu MWEvY3IKICAgICAgICAgICAgICBpZiAoYnl0ZXMgPiAwKSB7CiAgICAgICAgICAgICAgICAgIHJh bmRfcG9vbF9hZGRfZW5kKHBvb2wsIGJ5dGVzLCA4ICogYnl0ZXMpOwogICAgICAgICAgICAgICAg ICBieXRlc19uZWVkZWQgLT0gYnl0ZXM7Ci1AQCAtNDk2LDggKzUwMSwxMCBAQCBzaXplX3QgcmFu ZF9wb29sX2FjcXVpcmVfZW50cm9weShSQU5EX1BPCitAQCAtNTQwLDggKzU0NSwxMCBAQCBzaXpl X3QgcmFuZF9wb29sX2FjcXVpcmVfZW50cm9weShSQU5EX1BPCiAgICAgICAgICAgICAgaW50IGF0 dGVtcHRzID0gMzsKICAgICAgICAgICAgICBjb25zdCBpbnQgZmQgPSBnZXRfcmFuZG9tX2Rldmlj ZShpKTsKICAKQEAgLTE0Miw3ICsxNDQsNyBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMS4xYS9jcnlw dG8vcmFuZC9yYW5kX3VuaXguYy5maXBzLXBvc3QtcmFuZCBvcGVuc3NsLTEuMS4xYS9jcgogIAog ICAgICAgICAgICAgIHdoaWxlIChieXRlc19uZWVkZWQgIT0gMCAmJiBhdHRlbXB0cy0tID4gMCkg ewogICAgICAgICAgICAgICAgICBidWZmZXIgPSByYW5kX3Bvb2xfYWRkX2JlZ2luKHBvb2wsIGJ5 dGVzX25lZWRlZCk7Ci1AQCAtNTU3LDcgKzU2NCw5IEBAIHNpemVfdCByYW5kX3Bvb2xfYWNxdWly ZV9lbnRyb3B5KFJBTkRfUE8KK0BAIC02MDEsNyArNjA4LDkgQEAgc2l6ZV90IHJhbmRfcG9vbF9h Y3F1aXJlX2VudHJvcHkoUkFORF9QTwogICAgICAgICAgfQogICAgICB9CiAgIyAgIGVuZGlmCgpk aWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjEuMS1maXBzLnBhdGNoIGIvb3BlbnNzbC0xLjEuMS1maXBz LnBhdGNoCmluZGV4IDA5ZDg2OTIuLmQ1OWM0NDAgMTAwNjQ0Ci0tLSBhL29wZW5zc2wtMS4xLjEt Zmlwcy5wYXRjaAorKysgYi9vcGVuc3NsLTEuMS4xLWZpcHMucGF0Y2gKQEAgLTEsMyArMSwxNSBA QAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvYXBwcy9wa2NzMTIuYy5maXBzIG9wZW5zc2wtMS4x LjFiL2FwcHMvcGtjczEyLmMKKy0tLSBvcGVuc3NsLTEuMS4xYi9hcHBzL3BrY3MxMi5jLmZpcHMJ MjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9h cHBzL3BrY3MxMi5jCTIwMTktMDUtMjQgMTI6MDg6NDAuNTI0NTIzNzM1ICswMjAwCitAQCAtMTI2 LDcgKzEyNiw3IEBAIGludCBwa2NzMTJfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAg IGludCBleHBvcnRfY2VydCA9IDAsIG9wdGlvbnMgPSAwLCBjaGFpbiA9IDAsIHR3b3Bhc3MgPSAw LCBrZXl0eXBlID0gMDsKKyAgICAgaW50IGl0ZXIgPSBQS0NTMTJfREVGQVVMVF9JVEVSLCBtYWNp dGVyID0gUEtDUzEyX0RFRkFVTFRfSVRFUjsKKyAjIGlmbmRlZiBPUEVOU1NMX05PX1JDMgorLSAg ICBpbnQgY2VydF9wYmUgPSBOSURfcGJlX1dpdGhTSEExQW5kNDBCaXRSQzJfQ0JDOworKyAgICBp bnQgY2VydF9wYmUgPSBGSVBTX21vZGUoKSA/IE5JRF9wYmVfV2l0aFNIQTFBbmQzX0tleV9Ucmlw bGVERVNfQ0JDIDogTklEX3BiZV9XaXRoU0hBMUFuZDQwQml0UkMyX0NCQzsKKyAjIGVsc2UKKyAg ICAgaW50IGNlcnRfcGJlID0gTklEX3BiZV9XaXRoU0hBMUFuZDNfS2V5X1RyaXBsZURFU19DQkM7 CisgIyBlbmRpZgogZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvYXBwcy9zcGVlZC5jLmZpcHMgb3Bl bnNzbC0xLjEuMWIvYXBwcy9zcGVlZC5jCiAtLS0gb3BlbnNzbC0xLjEuMWIvYXBwcy9zcGVlZC5j LmZpcHMJMjAxOS0wNS0wNyAxMTo1MjozNS44ODc1OTc4OTkgKzAyMDAKICsrKyBvcGVuc3NsLTEu MS4xYi9hcHBzL3NwZWVkLmMJMjAxOS0wNS0wNyAxNjo1MTozNi45NDYzNTAxNTkgKzAyMDAKQEAg LTk4NSw5ICs5OTcsOSBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZwL2NfYWxs ZC5jLmZpcHMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9jX2FsbAogKyAgICB9CiArI2VuZGlm CiAgfQotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9kaWdlc3QuYy5maXBzIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9ldnAvZGlnZXN0LmMKLS0tLSBvcGVuc3NsLTEuMS4xYi9jcnlw dG8vZXZwL2RpZ2VzdC5jLmZpcHMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZwL2RpZ2VzdC5jCTIwMTktMDItMjggMTE6MzA6 MDYuODAzNzQ1NzI2ICswMTAwCitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vZXZwL2Rp Z2VzdC5jLmZpcHMgb3BlbnNzbC0xLjEuMWMvY3J5cHRvL2V2cC9kaWdlc3QuYworLS0tIG9wZW5z c2wtMS4xLjFjL2NyeXB0by9ldnAvZGlnZXN0LmMuZmlwcwkyMDE5LTA1LTI4IDE1OjEyOjIxLjAw MDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9ldnAvZGlnZXN0LmMJMjAx OS0wNS0yOSAxNTo0Nzo1OS4yMjA0OTk5NzEgKzAyMDAKIEBAIC0xNCw2ICsxNCw5IEBACiAgI2lu Y2x1ZGUgPG9wZW5zc2wvZW5naW5lLmg+CiAgI2luY2x1ZGUgImludGVybmFsL2V2cF9pbnQuaCIK QEAgLTEwMjcsMTcgKzEwMzksMTggQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2 cC9kaWdlc3QuYy5maXBzIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ldnAvZGlnZXMKICAgICAgICAg IGlmIChjdHgtPmRpZ2VzdCAmJiBjdHgtPmRpZ2VzdC0+Y3R4X3NpemUpIHsKICAgICAgICAgICAg ICBPUEVOU1NMX2NsZWFyX2ZyZWUoY3R4LT5tZF9kYXRhLCBjdHgtPmRpZ2VzdC0+Y3R4X3NpemUp OwogICAgICAgICAgICAgIGN0eC0+bWRfZGF0YSA9IE5VTEw7Ci1AQCAtMTUwLDYgKzE2OCw5IEBA IGludCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RYICpjdHgsIGMKK0BAIC0xNTAsNiArMTY4 LDEwIEBAIGludCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RYICpjdHgsIGMKICAKICBpbnQg RVZQX0RpZ2VzdFVwZGF0ZShFVlBfTURfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf dCBjb3VudCkKICB7CiArI2lmZGVmIE9QRU5TU0xfRklQUwogKyAgICBGSVBTX3NlbGZ0ZXN0X2No ZWNrKCk7CiArI2VuZGlmCi0gICAgIHJldHVybiBjdHgtPnVwZGF0ZShjdHgsIGRhdGEsIGNvdW50 KTsKLSB9CisrCisgICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICAgcmV0dXJuIDE7CiAgCi1A QCAtMTY3LDYgKzE4OCw5IEBAIGludCBFVlBfRGlnZXN0RmluYWxfZXgoRVZQX01EX0NUWCAqY3R4 LAorQEAgLTE3MCw2ICsxOTIsOSBAQCBpbnQgRVZQX0RpZ2VzdEZpbmFsX2V4KEVWUF9NRF9DVFgg KmN0eCwKICB7CiAgICAgIGludCByZXQ7CiAgCkBAIC05ODY5LDExICs5ODgyLDExIEBAIGRpZmYg LXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9maXBzL2ZpcHNfc3RhbmRhbG9uZV9obWFjLmMuZmlw cyBvcGVuc3NsLTEuMS4xYi9jCiArI2VuZGlmCiArICAgIHJldHVybiAwOwogK30KLWRpZmYgLXVw IG9wZW5zc2wtMS4xLjFiL2NyeXB0by9obWFjL2htYWMuYy5maXBzIG9wZW5zc2wtMS4xLjFiL2Ny eXB0by9obWFjL2htYWMuYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9obWFjL2htYWMuYy5m aXBzCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjEu MWIvY3J5cHRvL2htYWMvaG1hYy5jCTIwMTktMDItMjggMTE6MzA6MDYuODE3NzQ1NDY2ICswMTAw Ci1AQCAtMzYsNiArMzYsMTMgQEAgaW50IEhNQUNfSW5pdF9leChITUFDX0NUWCAqY3R4LCBjb25z dCB2bwotICAgICB9CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vaG1hYy9obWFjLmMu ZmlwcyBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vaG1hYy9obWFjLmMKKy0tLSBvcGVuc3NsLTEuMS4x Yy9jcnlwdG8vaG1hYy9obWFjLmMuZmlwcwkyMDE5LTA1LTI5IDE1OjQ2OjE5LjEzODI2MTEwNiAr MDIwMAorKysrIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9obWFjL2htYWMuYwkyMDE5LTA1LTI5IDE1 OjQ5OjA5LjUwODI2MzEzMyArMDIwMAorQEAgLTQzLDYgKzQzLDEzIEBAIGludCBITUFDX0luaXRf ZXgoSE1BQ19DVFggKmN0eCwgY29uc3Qgdm8KKyAgICAgICAgIHJldHVybiAwOwogIAogICAgICBp ZiAoa2V5ICE9IE5VTEwpIHsKICsjaWZkZWYgT1BFTlNTTF9GSVBTCkBAIC0xMTc1NiwxMyArMTE3 NjksMTMgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvdGVzdC9yZWNpcGVzLzMwLXRlc3RfZXZw X2RhdGEvZXZwY2lwaC50eHQuZmlwcyBvcGVuc3NsLTEKICAKICBDaXBoZXIgPSBhZXMtMTI4LXh0 cwogIEtleSA9IDExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL3V0aWwvbGliY3J5cHRv Lm51bS5maXBzIG9wZW5zc2wtMS4xLjFiL3V0aWwvbGliY3J5cHRvLm51bQotLS0tIG9wZW5zc2wt MS4xLjFiL3V0aWwvbGliY3J5cHRvLm51bS5maXBzCTIwMTktMDItMjggMTE6MzA6MDYuODI0NzQ1 MzM1ICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvdXRpbC9saWJjcnlwdG8ubnVtCTIwMTktMDIt MjggMTE6MzM6NTQuMjg0NTE2OTkxICswMTAwCi1AQCAtNDU3OSwzICs0NTc5LDM4IEBAIEVWUF9Q S0VZX21ldGhfc2V0X2RpZ2VzdF9jdXN0b20KLSBFVlBfUEtFWV9tZXRoX2dldF9kaWdlc3RfY3Vz dG9tICAgICAgICAgNDUzMwkxXzFfMQlFWElTVDo6RlVOQ1RJT046CitkaWZmIC11cCBvcGVuc3Ns LTEuMS4xYy91dGlsL2xpYmNyeXB0by5udW0uZmlwcyBvcGVuc3NsLTEuMS4xYy91dGlsL2xpYmNy eXB0by5udW0KKy0tLSBvcGVuc3NsLTEuMS4xYy91dGlsL2xpYmNyeXB0by5udW0uZmlwcwkyMDE5 LTA1LTI5IDE1OjQ2OjE5LjE1NDI2MDgyNCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFjL3V0aWwv bGliY3J5cHRvLm51bQkyMDE5LTA1LTI5IDE1OjUwOjEwLjM5MDE5MTgwNSArMDIwMAorQEAgLTQ1 ODAsMyArNDU4MCwzOCBAQCBFVlBfUEtFWV9tZXRoX2dldF9kaWdlc3RfY3VzdG9tCiAgT1BFTlNT TF9JTklUX3NldF9jb25maWdfZmlsZW5hbWUgICAgICAgIDQ1MzQJMV8xXzFiCUVYSVNUOjpGVU5D VElPTjpTVERJTwogIE9QRU5TU0xfSU5JVF9zZXRfY29uZmlnX2ZpbGVfZmxhZ3MgICAgICA0NTM1 CTFfMV8xYglFWElTVDo6RlVOQ1RJT046U1RESU8KKyBFVlBfUEtFWV9nZXQwX2VuZ2luZSAgICAg ICAgICAgICAgICAgICAgNDUzNgkxXzFfMWMJRVhJU1Q6OkZVTkNUSU9OOkVOR0lORQogK0ZJUFNf ZHJiZ19yZXNlZWQgICAgICAgICAgICAgICAgICAgICAgICA2MzQ4CTFfMV8wZwlFWElTVDo6RlVO Q1RJT046CiArRklQU19zZWxmdGVzdF9jaGVjayAgICAgICAgICAgICAgICAgICAgIDYzNDkJMV8x XzBnCUVYSVNUOjpGVU5DVElPTjoKICtGSVBTX3JhbmRfc2V0X21ldGhvZCAgICAgICAgICAgICAg ICAgICAgNjM1MAkxXzFfMGcJRVhJU1Q6OkZVTkNUSU9OOgoKZGlmZiAtLWdpdCBhL29wZW5zc2wt MS4xLjEtcmVncmVzc2lvbi1maXhlcy5wYXRjaCBiL29wZW5zc2wtMS4xLjEtcmVncmVzc2lvbi1m aXhlcy5wYXRjaAppbmRleCA0ZThjMzg4Li4xMTA5OWExIDEwMDY0NAotLS0gYS9vcGVuc3NsLTEu MS4xLXJlZ3Jlc3Npb24tZml4ZXMucGF0Y2gKKysrIGIvb3BlbnNzbC0xLjEuMS1yZWdyZXNzaW9u LWZpeGVzLnBhdGNoCkBAIC0xNCwyNCArMTQsMyBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9j cnlwdG8vY29uZi9jb25mX2xpYi5jLnJlZ3Jlc3Npb24gb3BlbnNzbC0xLjEuMWIvY3J5cHRvLwog ICAgICByZXQtPmZsYWdzID0gREVGQVVMVF9DT05GX01GTEFHUzsKICAKICAgICAgcmV0dXJuIHJl dDsKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ldnAvZXZwX2VuYy5jLnJlZ3Jlc3Np b24gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9ldnBfZW5jLmMKLS0tLSBvcGVuc3NsLTEuMS4x Yi9jcnlwdG8vZXZwL2V2cF9lbmMuYy5yZWdyZXNzaW9uCTIwMTktMDUtMDcgMTE6NTI6MzUuOTgy NTk2MjQyICswMjAwCi0rKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9ldnBfZW5jLmMJMjAx OS0wNS0xMCAxNDozMDo0Mi4yNjkyNDMzODMgKzAyMDAKLUBAIC0zMzgsNyArMzM4LDcgQEAgc3Rh dGljIGludCBldnBfRW5jcnlwdERlY3J5cHRVcGRhdGUoRVZQXwotIAotICAgICBibCA9IGN0eC0+ Y2lwaGVyLT5ibG9ja19zaXplOwotIAotLSAgICBpZiAoaW5sIDw9IDApIHsKLSsgICAgaWYgKG91 dCAhPSBOVUxMICYmIGluID09IE5VTEwgJiYgaW5sIDw9IDApIHsKLSAgICAgICAgICpvdXRsID0g MDsKLSAgICAgICAgIHJldHVybiBpbmwgPT0gMDsKLSAgICAgfQotQEAgLTQ5MSw3ICs0OTEsNyBA QCBpbnQgRVZQX0RlY3J5cHRVcGRhdGUoRVZQX0NJUEhFUl9DVFggKmN0Ci0gICAgIGlmIChFVlBf Q0lQSEVSX0NUWF90ZXN0X2ZsYWdzKGN0eCwgRVZQX0NJUEhfRkxBR19MRU5HVEhfQklUUykpCi0g ICAgICAgICBjbXBsID0gKGNtcGwgKyA3KSAvIDg7Ci0gCi0tICAgIGlmIChpbmwgPD0gMCkgewot KyAgICBpZiAob3V0ICE9IE5VTEwgJiYgaW4gPT0gTlVMTCAmJiBpbmwgPD0gMCkgewotICAgICAg ICAgKm91dGwgPSAwOwotICAgICAgICAgcmV0dXJuIGlubCA9PSAwOwotICAgICB9CgpkaWZmIC0t Z2l0IGEvb3BlbnNzbC0xLjEuMS1zeXN0ZW0tY2lwaGVybGlzdC5wYXRjaCBiL29wZW5zc2wtMS4x LjEtc3lzdGVtLWNpcGhlcmxpc3QucGF0Y2gKaW5kZXggMDhhYzhlNi4uYTcwZjIwYiAxMDA2NDQK LS0tIGEvb3BlbnNzbC0xLjEuMS1zeXN0ZW0tY2lwaGVybGlzdC5wYXRjaAorKysgYi9vcGVuc3Ns LTEuMS4xLXN5c3RlbS1jaXBoZXJsaXN0LnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotZGlmZiAtdXAg b3BlbnNzbC0xLjEuMS1wcmU5L0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbC5zeXN0 ZW0tY2lwaGVybGlzdCBvcGVuc3NsLTEuMS4xLXByZTkvQ29uZmlndXJhdGlvbnMvdW5peC1NYWtl ZmlsZS50bXBsCi0tLS0gb3BlbnNzbC0xLjEuMS1wcmU5L0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFr ZWZpbGUudG1wbC5zeXN0ZW0tY2lwaGVybGlzdAkyMDE4LTA4LTIyIDEyOjE1OjU0LjUyMDc0MjY3 OCArMDIwMAotKysrIG9wZW5zc2wtMS4xLjEtcHJlOS9Db25maWd1cmF0aW9ucy91bml4LU1ha2Vm aWxlLnRtcGwJMjAxOC0wOC0yMiAxMjoxNTo1NC41NTQ3NDM1MTEgKzAyMDAKK2RpZmYgLXVwIG9w ZW5zc2wtMS4xLjFjL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbC5zeXN0ZW0tY2lw aGVybGlzdCBvcGVuc3NsLTEuMS4xYy9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwK Ky0tLSBvcGVuc3NsLTEuMS4xYy9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwuc3lz dGVtLWNpcGhlcmxpc3QJMjAxOS0wNS0yOSAxNTo0MjoyNy45NTEzMjkyNzEgKzAyMDAKKysrKyBv cGVuc3NsLTEuMS4xYy9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwJMjAxOS0wNS0y OSAxNTo0MjoyNy45NzQzMjg4NjcgKzAyMDAKIEBAIC0xODAsNiArMTgwLDEwIEBAIE1BTkRJUj0k KElOU1RBTExUT1ApL3NoYXJlL21hbgogIERPQ0RJUj0kKElOU1RBTExUT1ApL3NoYXJlL2RvYy8k KEJBU0VOQU1FKQogIEhUTUxESVI9JChET0NESVIpL2h0bWwKQEAgLTIwLDE1ICsyMCwxNSBAQCBk aWZmIC11cCBvcGVuc3NsLTEuMS4xLXByZTkvQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50 bXBsLnN5c3RlbS1jaXBoZXJsaXN0IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobWFwIHsgIi1JIi4kX30gQHskY29uZmlne0NQUElOQ0xVREVTfX0pLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBAeyRjb25maWd7Q1BQRkxBR1N9fSkgLX0KICBDRkxBR1M9 ey0gam9pbignICcsIEB7JGNvbmZpZ3tDRkxBR1N9fSkgLX0KLWRpZmYgLXVwIG9wZW5zc2wtMS4x LjEtcHJlOS9Db25maWd1cmUuc3lzdGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0xLjEuMS1wcmU5L0Nv bmZpZ3VyZQotLS0tIG9wZW5zc2wtMS4xLjEtcHJlOS9Db25maWd1cmUuc3lzdGVtLWNpcGhlcmxp c3QJMjAxOC0wOC0yMSAxNDoxNDoxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMS4x LXByZTkvQ29uZmlndXJlCTIwMTgtMDgtMjIgMTI6MTY6NDYuNjAwMDE4MzQzICswMjAwCitkaWZm IC11cCBvcGVuc3NsLTEuMS4xYy9Db25maWd1cmUuc3lzdGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0x LjEuMWMvQ29uZmlndXJlCistLS0gb3BlbnNzbC0xLjEuMWMvQ29uZmlndXJlLnN5c3RlbS1jaXBo ZXJsaXN0CTIwMTktMDUtMjggMTU6MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0x LjEuMWMvQ29uZmlndXJlCTIwMTktMDUtMjkgMTU6NDU6MTAuNDY1NDY5NTMzICswMjAwCiBAQCAt MjQsNyArMjQsNyBAQCB1c2UgT3BlblNTTDo6R2xvYjsKICBteSAkb3JpZ19kZWF0aF9oYW5kbGVy ID0gJFNJR3tfX0RJRV9ffTsKICAkU0lHe19fRElFX199ID0gXCZkZWF0aF9oYW5kbGVyOwogIAot LW15ICR1c2FnZT0iVXNhZ2U6IENvbmZpZ3VyZSBbbm8tPGNpcGhlcj4gLi4uXSBbZW5hYmxlLTxj aXBoZXI+IC4uLl0gWy1EeHh4XSBbLWx4eHhdIFstTHh4eF0gWy1meHh4XSBbLUt4eHhdIFtuby1o dy14eHh8bm8taHddIFtbbm8tXXRocmVhZHNdIFtbbm8tXXNoYXJlZF0gW1tuby1demxpYnx6bGli LWR5bmFtaWNdIFtuby1hc21dIFtuby1kc29dIFtuby1lZ2RdIFtzY3RwXSBbMzg2XSBbLS1wcmVm aXg9RElSXSBbLS1vcGVuc3NsZGlyPU9QRU5TU0xESVJdIFstLXdpdGgteHh4Wz12dnZdXSBbLS1j b25maWc9RklMRV0gb3MvY29tcGlsZXJbOmZsYWdzXVxuIjsKLStteSAkdXNhZ2U9IlVzYWdlOiBD b25maWd1cmUgW25vLTxjaXBoZXI+IC4uLl0gW2VuYWJsZS08Y2lwaGVyPiAuLi5dIFstRHh4eF0g Wy1seHh4XSBbLUx4eHhdIFstZnh4eF0gWy1LeHh4XSBbbm8taHcteHh4fG5vLWh3XSBbW25vLV10 aHJlYWRzXSBbW25vLV1zaGFyZWRdIFtbbm8tXXpsaWJ8emxpYi1keW5hbWljXSBbbm8tYXNtXSBb bm8tZHNvXSBbbm8tZWdkXSBbc2N0cF0gWzM4Nl0gWy0tcHJlZml4PURJUl0gWy0tb3BlbnNzbGRp cj1PUEVOU1NMRElSXSBbLS1zeXN0ZW0tY2lwaGVycy1maWxlPVNZU1RFTUNJUEhFUkZJTEVdIFst LXdpdGgteHh4Wz12dnZdXSBbLS1jb25maWc9RklMRV0gb3MvY29tcGlsZXJbOmZsYWdzXVxuIjsK Ky1teSAkdXNhZ2U9IlVzYWdlOiBDb25maWd1cmUgW25vLTxjaXBoZXI+IC4uLl0gW2VuYWJsZS08 Y2lwaGVyPiAuLi5dIFstRHh4eF0gWy1seHh4XSBbLUx4eHhdIFstZnh4eF0gWy1LeHh4XSBbbm8t aHcteHh4fG5vLWh3XSBbW25vLV10aHJlYWRzXSBbW25vLV1zaGFyZWRdIFtbbm8tXXpsaWJ8emxp Yi1keW5hbWljXSBbbm8tYXNtXSBbbm8tZWdkXSBbc2N0cF0gWzM4Nl0gWy0tcHJlZml4PURJUl0g Wy0tb3BlbnNzbGRpcj1PUEVOU1NMRElSXSBbLS13aXRoLXh4eFs9dnZ2XV0gWy0tY29uZmlnPUZJ TEVdIG9zL2NvbXBpbGVyWzpmbGFnc11cbiI7CisrbXkgJHVzYWdlPSJVc2FnZTogQ29uZmlndXJl IFtuby08Y2lwaGVyPiAuLi5dIFtlbmFibGUtPGNpcGhlcj4gLi4uXSBbLUR4eHhdIFstbHh4eF0g Wy1MeHh4XSBbLWZ4eHhdIFstS3h4eF0gW25vLWh3LXh4eHxuby1od10gW1tuby1ddGhyZWFkc10g W1tuby1dc2hhcmVkXSBbW25vLV16bGlifHpsaWItZHluYW1pY10gW25vLWFzbV0gW25vLWVnZF0g W3NjdHBdIFszODZdIFstLXByZWZpeD1ESVJdIFstLW9wZW5zc2xkaXI9T1BFTlNTTERJUl0gWy0t c3lzdGVtLWNpcGhlcnMtZmlsZT1TWVNURU1DSVBIRVJGSUxFXSBbLS13aXRoLXh4eFs9dnZ2XV0g Wy0tY29uZmlnPUZJTEVdIG9zL2NvbXBpbGVyWzpmbGFnc11cbiI7CiAgCiAgIyBPcHRpb25zOgog ICMKQEAgLTUwLDE4ICs1MCwxOCBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMS4xLXByZTkvQ29uZmln dXJlLnN5c3RlbS1jaXBoZXJsaXN0IG9wZW5zc2wtMS4xLjEtcHJlOS9Db25maQogIG15ICRhdXRv X3RocmVhZHM9MTsgICAgIyBlbmFibGUgdGhyZWFkcyBhdXRvbWF0aWNhbGx5PyB0cnVlIGJ5IGRl ZmF1bHQKICBteSAkZGVmYXVsdF9yYW5saWI7CiAgCi1AQCAtODE3LDYgKzgyMSwxMCBAQCB3aGls ZSAoQGFyZ3Zjb3B5KQotIAkJCSAgICBwdXNoIEBzZWVkX3NvdXJjZXMsICR4OwotIAkJCSAgICB9 CitAQCAtODI0LDYgKzgyOCwxMCBAQCB3aGlsZSAoQGFyZ3Zjb3B5KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwdXNoIEBzZWVkX3NvdXJjZXMsICR4OworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogKwkJZWxzaWYgKC9eLS1z eXN0ZW0tY2lwaGVycy1maWxlPSguKikkLykKICsJCQl7CiArCQkJJGNvbmZpZ3tzeXN0ZW1fY2lw aGVyc19maWxlfT0kMTsKICsJCQl9Ci0gCQllbHNpZiAoL14tLWNyb3NzLWNvbXBpbGUtcHJlZml4 PSguKikkLykKLSAJCQl7Ci0gCQkJJHVzZXJ7Q1JPU1NfQ09NUElMRX09JDE7Ci1AQCAtMTAwMyw2 ICsxMDExLDggQEAgaWYgKCR0YXJnZXQgZXEgIkhBU0giKSB7CisgICAgICAgICAgICAgICAgIGVs c2lmICgvXi0tY3Jvc3MtY29tcGlsZS1wcmVmaXg9KC4qKSQvKQorICAgICAgICAgICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAkdXNlcntDUk9TU19DT01QSUxFfT0k MTsKK0BAIC0xMDE2LDYgKzEwMjQsOCBAQCBpZiAoJHRhcmdldCBlcSAiSEFTSCIpIHsKICAgICAg ZXhpdCAwOwogIH0KICAKQEAgLTcwLDkgKzcwLDkgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMS1w cmU5L0NvbmZpZ3VyZS5zeXN0ZW0tY2lwaGVybGlzdCBvcGVuc3NsLTEuMS4xLXByZTkvQ29uZmkK ICBwcmludCAiQ29uZmlndXJpbmcgT3BlblNTTCB2ZXJzaW9uICRjb25maWd7dmVyc2lvbn0gKCRj b25maWd7dmVyc2lvbl9udW19KSAiOwogIHByaW50ICJmb3IgJHRhcmdldFxuIjsKICAKLWRpZmYg LXVwIG9wZW5zc2wtMS4xLjEtcHJlOS9kb2MvbWFuMS9jaXBoZXJzLnBvZC5zeXN0ZW0tY2lwaGVy bGlzdCBvcGVuc3NsLTEuMS4xLXByZTkvZG9jL21hbjEvY2lwaGVycy5wb2QKLS0tLSBvcGVuc3Ns LTEuMS4xLXByZTkvZG9jL21hbjEvY2lwaGVycy5wb2Quc3lzdGVtLWNpcGhlcmxpc3QJMjAxOC0w OC0yMSAxNDoxNDoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMS4xLXByZTkvZG9j L21hbjEvY2lwaGVycy5wb2QJMjAxOC0wOC0yMiAxMjoxNTo1NC41NTU3NDM1MzYgKzAyMDAKK2Rp ZmYgLXVwIG9wZW5zc2wtMS4xLjFjL2RvYy9tYW4xL2NpcGhlcnMucG9kLnN5c3RlbS1jaXBoZXJs aXN0IG9wZW5zc2wtMS4xLjFjL2RvYy9tYW4xL2NpcGhlcnMucG9kCistLS0gb3BlbnNzbC0xLjEu MWMvZG9jL21hbjEvY2lwaGVycy5wb2Quc3lzdGVtLWNpcGhlcmxpc3QJMjAxOS0wNS0yOCAxNTox MjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYy9kb2MvbWFuMS9jaXBoZXJz LnBvZAkyMDE5LTA1LTI5IDE1OjQyOjI3Ljk3NTMyODg0OSArMDIwMAogQEAgLTE4Miw2ICsxODIs MTUgQEAgQXMgb2YgT3BlblNTTCAxLjAuMCwgdGhlIEI8QUxMPiBjaXBoZXIgcwogIAogIFRoZSBj aXBoZXIgc3VpdGVzIG5vdCBlbmFibGVkIGJ5IEI8QUxMPiwgY3VycmVudGx5IEI8ZU5VTEw+LgpA QCAtODksOSArODksOSBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMS4xLXByZTkvZG9jL21hbjEvY2lw aGVycy5wb2Quc3lzdGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0xLjEuMQogID1pdGVtIEI8SElHSD4K ICAKICAiSGlnaCIgZW5jcnlwdGlvbiBjaXBoZXIgc3VpdGVzLiBUaGlzIGN1cnJlbnRseSBtZWFu cyB0aG9zZSB3aXRoIGtleSBsZW5ndGhzCi1kaWZmIC11cCBvcGVuc3NsLTEuMS4xLXByZTkvaW5j bHVkZS9vcGVuc3NsL3NzbC5oLnN5c3RlbS1jaXBoZXJsaXN0IG9wZW5zc2wtMS4xLjEtcHJlOS9p bmNsdWRlL29wZW5zc2wvc3NsLmgKLS0tLSBvcGVuc3NsLTEuMS4xLXByZTkvaW5jbHVkZS9vcGVu c3NsL3NzbC5oLnN5c3RlbS1jaXBoZXJsaXN0CTIwMTgtMDgtMjEgMTQ6MTQ6MTUuMDAwMDAwMDAw ICswMjAwCi0rKysgb3BlbnNzbC0xLjEuMS1wcmU5L2luY2x1ZGUvb3BlbnNzbC9zc2wuaAkyMDE4 LTA4LTIyIDEyOjE1OjU0LjU1Nzc0MzU4NSArMDIwMAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWMv aW5jbHVkZS9vcGVuc3NsL3NzbC5oLnN5c3RlbS1jaXBoZXJsaXN0IG9wZW5zc2wtMS4xLjFjL2lu Y2x1ZGUvb3BlbnNzbC9zc2wuaAorLS0tIG9wZW5zc2wtMS4xLjFjL2luY2x1ZGUvb3BlbnNzbC9z c2wuaC5zeXN0ZW0tY2lwaGVybGlzdAkyMDE5LTA1LTI4IDE1OjEyOjIxLjAwMDAwMDAwMCArMDIw MAorKysrIG9wZW5zc2wtMS4xLjFjL2luY2x1ZGUvb3BlbnNzbC9zc2wuaAkyMDE5LTA1LTI5IDE1 OjQyOjI3Ljk3NTMyODg0OSArMDIwMAogQEAgLTE4Niw2ICsxODYsMTEgQEAgZXh0ZXJuICJDIiB7 CiAgICogdGhyb3dpbmcgb3V0IGFub255bW91cyBhbmQgdW5lbmNyeXB0ZWQgY2lwaGVyc3VpdGVz ISAoVGhlIGxhdHRlciBhcmUgbm90CiAgICogYWN0dWFsbHkgZW5hYmxlZCBieSBBTEwsIGJ1dCAi QUxMOlJTQSIgd291bGQgZW5hYmxlIHNvbWUgb2YgdGhlbS4pCkBAIC0xMDQsOSArMTA0LDkgQEAg ZGlmZiAtdXAgb3BlbnNzbC0xLjEuMS1wcmU5L2luY2x1ZGUvb3BlbnNzbC9zc2wuaC5zeXN0ZW0t Y2lwaGVybGlzdCBvcGVuc3NsLTEuMS4KICAKICAvKiBVc2VkIGluIFNTTF9zZXRfc2h1dGRvd24o KS9TU0xfZ2V0X3NodXRkb3duKCk7ICovCiAgIyBkZWZpbmUgU1NMX1NFTlRfU0hVVERPV04gICAg ICAgMQotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMS1wcmU5L3NzbC9zc2xfY2lwaC5jLnN5c3RlbS1j aXBoZXJsaXN0IG9wZW5zc2wtMS4xLjEtcHJlOS9zc2wvc3NsX2NpcGguYwotLS0tIG9wZW5zc2wt MS4xLjEtcHJlOS9zc2wvc3NsX2NpcGguYy5zeXN0ZW0tY2lwaGVybGlzdAkyMDE4LTA4LTIxIDE0 OjE0OjE1LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4xLjEtcHJlOS9zc2wvc3NsX2Np cGguYwkyMDE4LTA4LTIyIDEyOjE1OjU0LjU1Nzc0MzU4NSArMDIwMAorZGlmZiAtdXAgb3BlbnNz bC0xLjEuMWMvc3NsL3NzbF9jaXBoLmMuc3lzdGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0xLjEuMWMv c3NsL3NzbF9jaXBoLmMKKy0tLSBvcGVuc3NsLTEuMS4xYy9zc2wvc3NsX2NpcGguYy5zeXN0ZW0t Y2lwaGVybGlzdAkyMDE5LTA1LTI4IDE1OjEyOjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5z c2wtMS4xLjFjL3NzbC9zc2xfY2lwaC5jCTIwMTktMDUtMjkgMTU6NDI6MjcuOTc2MzI4ODMxICsw MjAwCiBAQCAtOSw2ICs5LDggQEAKICAgKiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uv bGljZW5zZS5odG1sCiAgICovCkBAIC0xMTYsNyArMTE2LDcgQEAgZGlmZiAtdXAgb3BlbnNzbC0x LjEuMS1wcmU5L3NzbC9zc2xfY2lwaC5jLnN5c3RlbS1jaXBoZXJsaXN0IG9wZW5zc2wtMS4xLjEt cHJlOS8KICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8Y3R5cGUuaD4KICAjaW5jbHVk ZSA8b3BlbnNzbC9vYmplY3RzLmg+Ci1AQCAtMTM5Nyw2ICsxMzk5LDUzIEBAIGludCBTU0xfc2V0 X2NpcGhlcnN1aXRlcyhTU0wgKnMsIGNvbnN0IGMKK0BAIC0xMzk5LDYgKzE0MDEsNTMgQEAgaW50 IFNTTF9zZXRfY2lwaGVyc3VpdGVzKFNTTCAqcywgY29uc3QgYwogICAgICByZXR1cm4gcmV0Owog IH0KICAKQEAgLTE3MCw3ICsxNzAsNyBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMS4xLXByZTkvc3Ns L3NzbF9jaXBoLmMuc3lzdGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0xLjEuMS1wcmU5LwogIFNUQUNL X09GKFNTTF9DSVBIRVIpICpzc2xfY3JlYXRlX2NpcGhlcl9saXN0KGNvbnN0IFNTTF9NRVRIT0Qg KnNzbF9tZXRob2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnRsczEzX2NpcGhlcnN1aXRlcywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFDS19PRihTU0xfQ0lQSEVSKSAq KmNpcGhlcl9saXN0LAotQEAgLTE0MTAsMTUgKzE0NTksMjUgQEAgU1RBQ0tfT0YoU1NMX0NJUEhF UikgKnNzbF9jcmVhdGVfY2lwaGVyXworQEAgLTE0MTIsMTUgKzE0NjEsMjUgQEAgU1RBQ0tfT0Yo U1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyXwogICAgICBjb25zdCBjaGFyICpydWxlX3A7 CiAgICAgIENJUEhFUl9PUkRFUiAqY29fbGlzdCA9IE5VTEwsICpoZWFkID0gTlVMTCwgKnRhaWwg PSBOVUxMLCAqY3VycjsKICAgICAgY29uc3QgU1NMX0NJUEhFUiAqKmNhX2xpc3QgPSBOVUxMOwpA QCAtMTk4LDcgKzE5OCw3IEBAIGRpZmYgLXVwIG9wZW5zc2wtMS4xLjEtcHJlOS9zc2wvc3NsX2Np cGguYy5zeXN0ZW0tY2lwaGVybGlzdCBvcGVuc3NsLTEuMS4xLXByZTkvCiAgI2VuZGlmCiAgCiAg ICAgIC8qCi1AQCAtMTQ0MSw3ICsxNTAwLDcgQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9j cmVhdGVfY2lwaGVyXworQEAgLTE0NDMsNyArMTUwMiw3IEBAIFNUQUNLX09GKFNTTF9DSVBIRVIp ICpzc2xfY3JlYXRlX2NpcGhlcl8KICAgICAgY29fbGlzdCA9IE9QRU5TU0xfbWFsbG9jKHNpemVv ZigqY29fbGlzdCkgKiBudW1fb2ZfY2lwaGVycyk7CiAgICAgIGlmIChjb19saXN0ID09IE5VTEwp IHsKICAgICAgICAgIFNTTGVycihTU0xfRl9TU0xfQ1JFQVRFX0NJUEhFUl9MSVNULCBFUlJfUl9N QUxMT0NfRkFJTFVSRSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEu MS1wcmU5L3NzbC9zc2xfY2lwaC5jLnN5c3RlbS1jaXBoZXJsaXN0IG9wZW5zc2wtMS4xLjEtcHJl OS8KICAgICAgfQogIAogICAgICBzc2xfY2lwaGVyX2NvbGxlY3RfY2lwaGVycyhzc2xfbWV0aG9k LCBudW1fb2ZfY2lwaGVycywKLUBAIC0xNTA3LDggKzE1NjYsNyBAQCBTVEFDS19PRihTU0xfQ0lQ SEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCitAQCAtMTUwOSw4ICsxNTY4LDcgQEAgU1RBQ0tfT0Yo U1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyXwogICAgICAgKiBpbiBmb3JjZSB3aXRoaW4g ZWFjaCBjbGFzcwogICAgICAgKi8KICAgICAgaWYgKCFzc2xfY2lwaGVyX3N0cmVuZ3RoX3NvcnQo JmhlYWQsICZ0YWlsKSkgewpAQCAtMjE3LDcgKzIxNyw3IEBAIGRpZmYgLXVwIG9wZW5zc2wtMS4x LjEtcHJlOS9zc2wvc3NsX2NpcGguYy5zeXN0ZW0tY2lwaGVybGlzdCBvcGVuc3NsLTEuMS4xLXBy ZTkvCiAgICAgIH0KICAKICAgICAgLyoKLUBAIC0xNTUzLDkgKzE2MTEsOCBAQCBTVEFDS19PRihT U0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCitAQCAtMTU1NSw5ICsxNjEzLDggQEAgU1RB Q0tfT0YoU1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyXwogICAgICBudW1fb2ZfYWxpYXNf bWF4ID0gbnVtX29mX2NpcGhlcnMgKyBudW1fb2ZfZ3JvdXBfYWxpYXNlcyArIDE7CiAgICAgIGNh X2xpc3QgPSBPUEVOU1NMX21hbGxvYyhzaXplb2YoKmNhX2xpc3QpICogbnVtX29mX2FsaWFzX21h eCk7CiAgICAgIGlmIChjYV9saXN0ID09IE5VTEwpIHsKQEAgLTIyOCw3ICsyMjgsNyBAQCBkaWZm IC11cCBvcGVuc3NsLTEuMS4xLXByZTkvc3NsL3NzbF9jaXBoLmMuc3lzdGVtLWNpcGhlcmxpc3Qg b3BlbnNzbC0xLjEuMS1wcmU5LwogICAgICB9CiAgICAgIHNzbF9jaXBoZXJfY29sbGVjdF9hbGlh c2VzKGNhX2xpc3QsIG51bV9vZl9ncm91cF9hbGlhc2VzLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkaXNhYmxlZF9ta2V5LCBkaXNhYmxlZF9hdXRoLCBkaXNhYmxlZF9lbmMsCi1A QCAtMTU4MSw4ICsxNjM4LDcgQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lw aGVyXworQEAgLTE1ODMsOCArMTY0MCw3IEBAIFNUQUNLX09GKFNTTF9DSVBIRVIpICpzc2xfY3Jl YXRlX2NpcGhlcl8KICAgICAgT1BFTlNTTF9mcmVlKGNhX2xpc3QpOyAgICAgIC8qIE5vdCBuZWVk ZWQgYW55bW9yZSAqLwogIAogICAgICBpZiAoIW9rKSB7ICAgICAgICAgICAgICAgICAgLyogUnVs ZSBwcm9jZXNzaW5nIGZhaWx1cmUgKi8KQEAgLTIzOCw3ICsyMzgsNyBAQCBkaWZmIC11cCBvcGVu c3NsLTEuMS4xLXByZTkvc3NsL3NzbF9jaXBoLmMuc3lzdGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0x LjEuMS1wcmU5LwogICAgICB9CiAgCiAgICAgIC8qCi1AQCAtMTU5MCwxNCArMTY0NiwxOCBAQCBT VEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCitAQCAtMTU5MiwxNCArMTY0 OCwxOCBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCiAgICAgICAq IGlmIHdlIGNhbm5vdCBnZXQgb25lLgogICAgICAgKi8KICAgICAgaWYgKChjaXBoZXJzdGFjayA9 IHNrX1NTTF9DSVBIRVJfbmV3X251bGwoKSkgPT0gTlVMTCkgewpAQCAtMjU5LDcgKzI1OSw3IEBA IGRpZmYgLXVwIG9wZW5zc2wtMS4xLjEtcHJlOS9zc2wvc3NsX2NpcGguYy5zeXN0ZW0tY2lwaGVy bGlzdCBvcGVuc3NsLTEuMS4xLXByZTkvCiAgICAgICAgICAgICAgc2tfU1NMX0NJUEhFUl9mcmVl KGNpcGhlcnN0YWNrKTsKICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgIH0KLUBA IC0xNjI5LDYgKzE2ODksMTQgQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lw aGVyXworQEAgLTE2MzEsNiArMTY5MSwxNCBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2Ny ZWF0ZV9jaXBoZXJfCiAgICAgICpjaXBoZXJfbGlzdCA9IGNpcGhlcnN0YWNrOwogIAogICAgICBy ZXR1cm4gY2lwaGVyc3RhY2s7CkBAIC0yNzQsMTAgKzI3NCwxMCBAQCBkaWZmIC11cCBvcGVuc3Ns LTEuMS4xLXByZTkvc3NsL3NzbF9jaXBoLmMuc3lzdGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0xLjEu MS1wcmU5LwogIH0KICAKICBjaGFyICpTU0xfQ0lQSEVSX2Rlc2NyaXB0aW9uKGNvbnN0IFNTTF9D SVBIRVIgKmNpcGhlciwgY2hhciAqYnVmLCBpbnQgbGVuKQotZGlmZiAtdXAgb3BlbnNzbC0xLjEu MS1wcmU5L3NzbC9zc2xfbGliLmMuc3lzdGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0xLjEuMS1wcmU5 L3NzbC9zc2xfbGliLmMKLS0tLSBvcGVuc3NsLTEuMS4xLXByZTkvc3NsL3NzbF9saWIuYy5zeXN0 ZW0tY2lwaGVybGlzdAkyMDE4LTA4LTIyIDEyOjE1OjU0LjU1Mjc0MzQ2MiArMDIwMAotKysrIG9w ZW5zc2wtMS4xLjEtcHJlOS9zc2wvc3NsX2xpYi5jCTIwMTgtMDgtMjIgMTI6MTU6NTQuNTU4NzQz NjA5ICswMjAwCi1AQCAtNjU4LDcgKzY1OCw3IEBAIGludCBTU0xfQ1RYX3NldF9zc2xfdmVyc2lv bihTU0xfQ1RYICpjdHgKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFjL3NzbC9zc2xfbGliLmMuc3lz dGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0xLjEuMWMvc3NsL3NzbF9saWIuYworLS0tIG9wZW5zc2wt MS4xLjFjL3NzbC9zc2xfbGliLmMuc3lzdGVtLWNpcGhlcmxpc3QJMjAxOS0wNS0yOSAxNTo0Mjoy Ny45NzAzMjg5MzcgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYy9zc2wvc3NsX2xpYi5jCTIwMTkt MDUtMjkgMTU6NDI6MjcuOTc3MzI4ODE0ICswMjAwCitAQCAtNjYyLDcgKzY2Miw3IEBAIGludCBT U0xfQ1RYX3NldF9zc2xfdmVyc2lvbihTU0xfQ1RYICpjdHgKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGN0eC0+dGxzMTNfY2lwaGVyc3VpdGVzLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJihjdHgtPmNpcGhlcl9saXN0KSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICYoY3R4LT5jaXBoZXJfbGlzdF9ieV9pZCksCkBAIC0yODYsNyArMjg2LDcg QEAgZGlmZiAtdXAgb3BlbnNzbC0xLjEuMS1wcmU5L3NzbC9zc2xfbGliLmMuc3lzdGVtLWNpcGhl cmxpc3Qgb3BlbnNzbC0xLjEuMS1wcmU5L3MKICAgICAgaWYgKChzayA9PSBOVUxMKSB8fCAoc2tf U1NMX0NJUEhFUl9udW0oc2spIDw9IDApKSB7CiAgICAgICAgICBTU0xlcnIoU1NMX0ZfU1NMX0NU WF9TRVRfU1NMX1ZFUlNJT04sIFNTTF9SX1NTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTKTsKICAg ICAgICAgIHJldHVybiAwOwotQEAgLTI5MzMsNyArMjkzMyw3IEBAIFNTTF9DVFggKlNTTF9DVFhf bmV3KGNvbnN0IFNTTF9NRVRIT0QgKm0KK0BAIC0yOTU0LDcgKzI5NTQsNyBAQCBTU0xfQ1RYICpT U0xfQ1RYX25ldyhjb25zdCBTU0xfTUVUSE9EICptCiAgICAgIGlmICghc3NsX2NyZWF0ZV9jaXBo ZXJfbGlzdChyZXQtPm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dC0+dGxzMTNfY2lwaGVyc3VpdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnJldC0+Y2lwaGVyX2xpc3QsICZyZXQtPmNpcGhlcl9saXN0X2J5X2lkLApAQCAtMjk1LDkgKzI5 NSw5IEBAIGRpZmYgLXVwIG9wZW5zc2wtMS4xLjEtcHJlOS9zc2wvc3NsX2xpYi5jLnN5c3RlbS1j aXBoZXJsaXN0IG9wZW5zc2wtMS4xLjEtcHJlOS9zCiAgICAgICAgICB8fCBza19TU0xfQ0lQSEVS X251bShyZXQtPmNpcGhlcl9saXN0KSA8PSAwKSB7CiAgICAgICAgICBTU0xlcnIoU1NMX0ZfU1NM X0NUWF9ORVcsIFNTTF9SX0xJQlJBUllfSEFTX05PX0NJUEhFUlMpOwogICAgICAgICAgZ290byBl cnIyOwotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvdGVzdC9jaXBoZXJsaXN0X3Rlc3QuYy5zeXN0 ZW0tY2lwaGVybGlzdCBvcGVuc3NsLTEuMS4xYi90ZXN0L2NpcGhlcmxpc3RfdGVzdC5jCi0tLS0g b3BlbnNzbC0xLjEuMWIvdGVzdC9jaXBoZXJsaXN0X3Rlc3QuYy5zeXN0ZW0tY2lwaGVybGlzdAky MDE5LTAyLTI4IDExOjI3OjE1LjE4MTkzNjA4MSArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL3Rl c3QvY2lwaGVybGlzdF90ZXN0LmMJMjAxOS0wMi0yOCAxMToyODo1My4zNTcxMTEwNTUgKzAxMDAK K2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFjL3Rlc3QvY2lwaGVybGlzdF90ZXN0LmMuc3lzdGVtLWNp cGhlcmxpc3Qgb3BlbnNzbC0xLjEuMWMvdGVzdC9jaXBoZXJsaXN0X3Rlc3QuYworLS0tIG9wZW5z c2wtMS4xLjFjL3Rlc3QvY2lwaGVybGlzdF90ZXN0LmMuc3lzdGVtLWNpcGhlcmxpc3QJMjAxOS0w NS0yOCAxNToxMjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYy90ZXN0L2Np cGhlcmxpc3RfdGVzdC5jCTIwMTktMDUtMjkgMTU6NDI6MjcuOTc3MzI4ODE0ICswMjAwCiBAQCAt MjUxLDcgKzI1MSw5IEBAIGVuZDoKICAKICBpbnQgc2V0dXBfdGVzdHModm9pZCkKCmRpZmYgLS1n aXQgYS9vcGVuc3NsLTEuMS4xLXVwc3RyZWFtLXN5bmMucGF0Y2ggYi9vcGVuc3NsLTEuMS4xLXVw c3RyZWFtLXN5bmMucGF0Y2gKaW5kZXggMmNmODQ5Zi4uNjczNWU2YSAxMDA2NDQKLS0tIGEvb3Bl bnNzbC0xLjEuMS11cHN0cmVhbS1zeW5jLnBhdGNoCisrKyBiL29wZW5zc2wtMS4xLjEtdXBzdHJl YW0tc3luYy5wYXRjaApAQCAtMSwyMjgyICsxLDY3IEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMS4x Yi9hcHBzL2FzbjFwYXJzLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9hcHBzL2FzbjFwYXJzLmMKLS0t LSBvcGVuc3NsLTEuMS4xYi9hcHBzL2FzbjFwYXJzLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMw LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2FwcHMvYXNuMXBhcnMuYwkyMDE5 LTA1LTAzIDA4OjU1OjUxLjUzMjQwNzAwMyArMDIwMAotQEAgLTE3MCwxNyArMTcwLDE3IEBAIGlu dCBhc24xcGFyc2VfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YKLSAgICAgaWYgKGRlcmZpbGUg JiYgKGRlcm91dCA9IGJpb19vcGVuX2RlZmF1bHQoZGVyZmlsZSwgJ3cnLCBGT1JNQVRfQVNOMSkp ID09IE5VTEwpCi0gICAgICAgICBnb3RvIGVuZDsKLSAKLSsgICAgaWYgKChidWYgPSBCVUZfTUVN X25ldygpKSA9PSBOVUxMKQotKyAgICAgICAgZ290byBlbmQ7Ci0gICAgIGlmIChzdHJpY3RwZW0p IHsKLS0gICAgICAgIGlmIChQRU1fcmVhZF9iaW8oaW4sICZuYW1lLCAmaGVhZGVyLCAmc3RyLCAm bnVtKSAhPQotLSAgICAgICAgICAgIDEpIHsKLSsgICAgICAgIGlmIChQRU1fcmVhZF9iaW8oaW4s ICZuYW1lLCAmaGVhZGVyLCAmc3RyLCAmbnVtKSAhPSAxKSB7Ci0gICAgICAgICAgICAgQklPX3By aW50ZihiaW9fZXJyLCAiRXJyb3IgcmVhZGluZyBQRU0gZmlsZVxuIik7Ci0gICAgICAgICAgICAg RVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKLSAgICAgICAgICAgICBnb3RvIGVuZDsKLSAgICAg ICAgIH0KLSsgICAgICAgIGJ1Zi0+ZGF0YSA9IChjaGFyICopc3RyOwotKyAgICAgICAgYnVmLT5s ZW5ndGggPSBidWYtPm1heCA9IG51bTsKLSAgICAgfSBlbHNlIHsKLS0KLS0gICAgICAgIGlmICgo YnVmID0gQlVGX01FTV9uZXcoKSkgPT0gTlVMTCkKLS0gICAgICAgICAgICBnb3RvIGVuZDsKLSAg ICAgICAgIGlmICghQlVGX01FTV9ncm93KGJ1ZiwgQlVGU0laICogOCkpCi0gICAgICAgICAgICAg Z290byBlbmQ7ICAgICAgICAgICAvKiBQcmUtYWxsb2NhdGUgOi0pICovCi0gCi1AQCAtMzAzLDgg KzMwMyw2IEBAIGludCBhc24xcGFyc2VfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YKLSAgICAg QlVGX01FTV9mcmVlKGJ1Zik7Ci0gICAgIE9QRU5TU0xfZnJlZShuYW1lKTsKLSAgICAgT1BFTlNT TF9mcmVlKGhlYWRlcik7Ci0tICAgIGlmIChzdHJpY3RwZW0pCi0tICAgICAgICBPUEVOU1NMX2Zy ZWUoc3RyKTsKLSAgICAgQVNOMV9UWVBFX2ZyZWUoYXQpOwotICAgICBza19PUEVOU1NMX1NUUklO R19mcmVlKG9zayk7Ci0gICAgIHJldHVybiByZXQ7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9j cnlwdG8vYWVzL2FzbS9hZXNwOC1wcGMucGwuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYWVz L2FzbS9hZXNwOC1wcGMucGwKLS0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYWVzL2FzbS9hZXNw OC1wcGMucGwuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9hZXMvYXNtL2Flc3A4LXBwYy5wbAkyMDE5LTA1LTAzIDA4OjU1 OjUxLjU1MTQwNjY3NiArMDIwMAotQEAgLTE4MjksNyArMTgyOSw3IEBAIExjdHIzMl9lbmM4eF90 aHJlZToKLSAJc3R2eF91CQkkb3V0MSwkeDEwLCRvdXQKLSAJc3R2eF91CQkkb3V0MiwkeDIwLCRv dXQKLSAJYWRkaQkJJG91dCwkb3V0LDB4MzAKLS0JYgkJTGNiY19kZWM4eF9kb25lCi0rCWIJCUxj dHIzMl9lbmM4eF9kb25lCi0gCi0gLmFsaWduCTUKLSBMY3RyMzJfZW5jOHhfdHdvOgotQEAgLTE4 NDEsNyArMTg0MSw3IEBAIExjdHIzMl9lbmM4eF90d286Ci0gCXN0dnhfdQkJJG91dDAsJHgwMCwk b3V0Ci0gCXN0dnhfdQkJJG91dDEsJHgxMCwkb3V0Ci0gCWFkZGkJCSRvdXQsJG91dCwweDIwCi0t CWIJCUxjYmNfZGVjOHhfZG9uZQotKwliCQlMY3RyMzJfZW5jOHhfZG9uZQotIAotIC5hbGlnbgk1 Ci0gTGN0cjMyX2VuYzh4X29uZToKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9iaW8v Yl9hZGRyLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYmlvL2JfYWRkci5jCi0tLS0gb3Bl bnNzbC0xLjEuMWIvY3J5cHRvL2Jpby9iX2FkZHIuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAu MDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2Jpby9iX2FkZHIuYwky MDE5LTA1LTAzIDA4OjU1OjUxLjU1NTQwNjYwOCArMDIwMAotQEAgLTY4Myw2ICs2ODMsMTIgQEAg aW50IEJJT19sb29rdXBfZXgoY29uc3QgY2hhciAqaG9zdCwgY29ucwotICAgICAgICAgaGludHMu YWlfZmFtaWx5ID0gZmFtaWx5OwotICAgICAgICAgaGludHMuYWlfc29ja3R5cGUgPSBzb2NrdHlw ZTsKLSAgICAgICAgIGhpbnRzLmFpX3Byb3RvY29sID0gcHJvdG9jb2w7Ci0rI2lmZGVmIEFJX0FE RFJDT05GSUcKLSsjaWZkZWYgQUZfVU5TUEVDCi0rICAgICAgICBpZiAoZmFtaWx5ID09IEFGX1VO U1BFQykKLSsjZW5kaWYKLSsgICAgICAgICAgICBoaW50cy5haV9mbGFncyB8PSBBSV9BRERSQ09O RklHOwotKyNlbmRpZgotIAotICAgICAgICAgaWYgKGxvb2t1cF90eXBlID09IEJJT19MT09LVVBf U0VSVkVSKQotICAgICAgICAgICAgIGhpbnRzLmFpX2ZsYWdzIHw9IEFJX1BBU1NJVkU7Ci1kaWZm IC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYmlvL2Jzc19tZW0uYy5zeW5jIG9wZW5zc2wtMS4x LjFiL2NyeXB0by9iaW8vYnNzX21lbS5jCi0tLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2Jpby9i c3NfbWVtLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9iaW8vYnNzX21lbS5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTU2 NDA2NTkxICswMjAwCi1AQCAtNTcsNyArNTcsMTIgQEAgc3RhdGljIGNvbnN0IEJJT19NRVRIT0Qg c2VjbWVtX21ldGhvZCA9Ci0gICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgIC8qIG1lbV9j YWxsYmFja19jdHJsICovCi0gfTsKLSAKLS0vKiBCSU8gbWVtb3J5IHN0b3JlcyBidWZmZXIgYW5k IHJlYWQgcG9pbnRlciAgKi8KLSsvKgotKyAqIEJJTyBtZW1vcnkgc3RvcmVzIGJ1ZmZlciBhbmQg cmVhZCBwb2ludGVyCi0rICogaG93ZXZlciB0aGUgcm9sZXMgYXJlIGRpZmZlcmVudCBmb3IgcmVh ZCBvbmx5IEJJT3MuCi0rICogSW4gdGhhdCBjYXNlIHRoZSByZWFkcCBqdXN0IHN0b3JlcyB0aGUg b3JpZ2luYWwgc3RhdGUKLSsgKiB0byBiZSB1c2VkIGZvciByZXNldC4KLSsgKi8KLSB0eXBlZGVm IHN0cnVjdCBiaW9fYnVmX21lbV9zdCB7Ci0gICAgIHN0cnVjdCBidWZfbWVtX3N0ICpidWY7ICAg LyogYWxsb2NhdGVkIGJ1ZmZlciAqLwotICAgICBzdHJ1Y3QgYnVmX21lbV9zdCAqcmVhZHA7IC8q IHJlYWQgcG9pbnRlciAqLwotQEAgLTE5MiwxMSArMTk3LDE0IEBAIHN0YXRpYyBpbnQgbWVtX3Jl YWQoQklPICpiLCBjaGFyICpvdXQsIGkKLSAgICAgQklPX0JVRl9NRU0gKmJibSA9IChCSU9fQlVG X01FTSAqKWItPnB0cjsKLSAgICAgQlVGX01FTSAqYm0gPSBiYm0tPnJlYWRwOwotIAotKyAgICBp ZiAoYi0+ZmxhZ3MgJiBCSU9fRkxBR1NfTUVNX1JET05MWSkKLSsgICAgICAgIGJtID0gYmJtLT5i dWY7Ci0gICAgIEJJT19jbGVhcl9yZXRyeV9mbGFncyhiKTsKLSAgICAgcmV0ID0gKG91dGwgPj0g MCAmJiAoc2l6ZV90KW91dGwgPiBibS0+bGVuZ3RoKSA/IChpbnQpYm0tPmxlbmd0aCA6IG91dGw7 Ci0gICAgIGlmICgob3V0ICE9IE5VTEwpICYmIChyZXQgPiAwKSkgewotICAgICAgICAgbWVtY3B5 KG91dCwgYm0tPmRhdGEsIHJldCk7Ci0gICAgICAgICBibS0+bGVuZ3RoIC09IHJldDsKLSsgICAg ICAgIGJtLT5tYXggLT0gcmV0OwotICAgICAgICAgYm0tPmRhdGEgKz0gcmV0OwotICAgICB9IGVs c2UgaWYgKGJtLT5sZW5ndGggPT0gMCkgewotICAgICAgICAgcmV0ID0gYi0+bnVtOwotQEAgLTI0 MSwyOSArMjQ5LDM2IEBAIHN0YXRpYyBsb25nIG1lbV9jdHJsKEJJTyAqYiwgaW50IGNtZCwgbG8K LSAgICAgQklPX0JVRl9NRU0gKmJibSA9IChCSU9fQlVGX01FTSAqKWItPnB0cjsKLSAgICAgQlVG X01FTSAqYm07Ci0gCi0rICAgIGlmIChiLT5mbGFncyAmIEJJT19GTEFHU19NRU1fUkRPTkxZKQot KyAgICAgICAgYm0gPSBiYm0tPmJ1ZjsKLSsgICAgZWxzZQotKyAgICAgICAgYm0gPSBiYm0tPnJl YWRwOwotKwotICAgICBzd2l0Y2ggKGNtZCkgewotICAgICBjYXNlIEJJT19DVFJMX1JFU0VUOgot ICAgICAgICAgYm0gPSBiYm0tPmJ1ZjsKLSAgICAgICAgIGlmIChibS0+ZGF0YSAhPSBOVUxMKSB7 Ci0tICAgICAgICAgICAgLyogRm9yIHJlYWQgb25seSBjYXNlIHJlc2V0IHRvIHRoZSBzdGFydCBh Z2FpbiAqLwotLSAgICAgICAgICAgIGlmICgoYi0+ZmxhZ3MgJiBCSU9fRkxBR1NfTUVNX1JET05M WSkgfHwgKGItPmZsYWdzICYgQklPX0ZMQUdTX05PTkNMRUFSX1JTVCkpIHsKLS0gICAgICAgICAg ICAgICAgYm0tPmxlbmd0aCA9IGJtLT5tYXg7Ci0rICAgICAgICAgICAgaWYgKCEoYi0+ZmxhZ3Mg JiBCSU9fRkxBR1NfTUVNX1JET05MWSkpIHsKLSsgICAgICAgICAgICAgICAgaWYgKGItPmZsYWdz ICYgQklPX0ZMQUdTX05PTkNMRUFSX1JTVCkgewotKyAgICAgICAgICAgICAgICAgICAgYm0tPmxl bmd0aCA9IGJtLT5tYXg7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAg ICAgICAgICBtZW1zZXQoYm0tPmRhdGEsIDAsIGJtLT5tYXgpOwotKyAgICAgICAgICAgICAgICAg ICAgYm0tPmxlbmd0aCA9IDA7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAg KmJibS0+cmVhZHAgPSAqYmJtLT5idWY7Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAg ICAgICAgICAgbWVtc2V0KGJtLT5kYXRhLCAwLCBibS0+bWF4KTsKLS0gICAgICAgICAgICAgICAg Ym0tPmxlbmd0aCA9IDA7Ci0rICAgICAgICAgICAgICAgIC8qIEZvciByZWFkIG9ubHkgY2FzZSBq dXN0IHJlc2V0IHRvIHRoZSBzdGFydCBhZ2FpbiAqLwotKyAgICAgICAgICAgICAgICAqYmJtLT5i dWYgPSAqYmJtLT5yZWFkcDsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgKmJibS0+cmVh ZHAgPSAqYmJtLT5idWY7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBC SU9fQ1RSTF9FT0Y6Ci0tICAgICAgICBibSA9IGJibS0+cmVhZHA7Ci0gICAgICAgICByZXQgPSAo bG9uZykoYm0tPmxlbmd0aCA9PSAwKTsKLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIEJJT19D X1NFVF9CVUZfTUVNX0VPRl9SRVRVUk46Ci0gICAgICAgICBiLT5udW0gPSAoaW50KW51bTsKLSAg ICAgICAgIGJyZWFrOwotICAgICBjYXNlIEJJT19DVFJMX0lORk86Ci0tICAgICAgICBibSA9IGJi bS0+cmVhZHA7Ci0gICAgICAgICByZXQgPSAobG9uZylibS0+bGVuZ3RoOwotICAgICAgICAgaWYg KHB0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgcHB0ciA9IChjaGFyICoqKXB0cjsKLUBAIC0y NzgsOCArMjkzLDkgQEAgc3RhdGljIGxvbmcgbWVtX2N0cmwoQklPICpiLCBpbnQgY21kLCBsbwot ICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgQklPX0NfR0VUX0JVRl9NRU1fUFRSOgotICAgICAg ICAgaWYgKHB0ciAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgbWVtX2J1Zl9zeW5jKGIpOwotLSAg ICAgICAgICAgIGJtID0gYmJtLT5yZWFkcDsKLSsgICAgICAgICAgICBpZiAoIShiLT5mbGFncyAm IEJJT19GTEFHU19NRU1fUkRPTkxZKSkKLSsgICAgICAgICAgICAgICAgbWVtX2J1Zl9zeW5jKGIp OwotKyAgICAgICAgICAgIGJtID0gYmJtLT5idWY7Ci0gICAgICAgICAgICAgcHB0ciA9IChjaGFy ICoqKXB0cjsKLSAgICAgICAgICAgICAqcHB0ciA9IChjaGFyICopYm07Ci0gICAgICAgICB9Ci1A QCAtMjk0LDcgKzMxMCw2IEBAIHN0YXRpYyBsb25nIG1lbV9jdHJsKEJJTyAqYiwgaW50IGNtZCwg bG8KLSAgICAgICAgIHJldCA9IDBMOwotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgQklPX0NU UkxfUEVORElORzoKLS0gICAgICAgIGJtID0gYmJtLT5yZWFkcDsKLSAgICAgICAgIHJldCA9IChs b25nKWJtLT5sZW5ndGg7Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBCSU9fQ1RSTF9EVVA6 Ci1AQCAtMzE4LDYgKzMzMyw4IEBAIHN0YXRpYyBpbnQgbWVtX2dldHMoQklPICpicCwgY2hhciAq YnVmLAotICAgICBCSU9fQlVGX01FTSAqYmJtID0gKEJJT19CVUZfTUVNICopYnAtPnB0cjsKLSAg ICAgQlVGX01FTSAqYm0gPSBiYm0tPnJlYWRwOwotIAotKyAgICBpZiAoYnAtPmZsYWdzICYgQklP X0ZMQUdTX01FTV9SRE9OTFkpCi0rICAgICAgICBibSA9IGJibS0+YnVmOwotICAgICBCSU9fY2xl YXJfcmV0cnlfZmxhZ3MoYnApOwotICAgICBqID0gYm0tPmxlbmd0aDsKLSAgICAgaWYgKChzaXpl IC0gMSkgPCBqKQotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2JuL2FzbS9wcGMucGwu c3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYm4vYXNtL3BwYy5wbAotLS0tIG9wZW5zc2wtMS4x LjFiL2NyeXB0by9ibi9hc20vcHBjLnBsLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYm4vYXNtL3BwYy5wbAkyMDE5LTA1 LTAzIDA4OjU1OjUxLjUzMDQwNzAzNyArMDIwMAotQEAgLTI1OCw2ICsyNTgsNyBAQCAkZGF0YT08 PEVPRjsKLSAjIC50ZXh0IHNlY3Rpb24KLSAKLSAJLm1hY2hpbmUJImFueSIKLSsJLnRleHQKLSAK LSAjCi0gIwlOT1RFOglUaGUgZm9sbG93aW5nIGxhYmVsIG5hbWUgc2hvdWxkIGJlIGNoYW5nZWQg dG8KLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ibi9ibl9jdHguYy5zeW5jIG9wZW5z c2wtMS4xLjFiL2NyeXB0by9ibi9ibl9jdHguYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9i bi9ibl9jdHguYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCi0rKysg b3BlbnNzbC0xLjEuMWIvY3J5cHRvL2JuL2JuX2N0eC5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTI0 NDA3MTQwICswMjAwCi1AQCAtMTk0LDYgKzE5NCw4IEBAIHZvaWQgQk5fQ1RYX3N0YXJ0KEJOX0NU WCAqY3R4KQotIAotIHZvaWQgQk5fQ1RYX2VuZChCTl9DVFggKmN0eCkKLSB7Ci0rICAgIGlmIChj dHggPT0gTlVMTCkKLSsgICAgICAgIHJldHVybjsKLSAgICAgQ1RYREJHX0VOVFJZKCJCTl9DVFhf ZW5kIiwgY3R4KTsKLSAgICAgaWYgKGN0eC0+ZXJyX3N0YWNrKQotICAgICAgICAgY3R4LT5lcnJf c3RhY2stLTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ibi9ibl9saWIuYy5zeW5j IG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ibi9ibl9saWIuYwotLS0tIG9wZW5zc2wtMS4xLjFiL2Ny eXB0by9ibi9ibl9saWIuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAw Ci0rKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2JuL2JuX2xpYi5jCTIwMTktMDUtMDMgMDg6NTU6 NTEuNTI1NDA3MTIzICswMjAwCi1AQCAtMzM4LDYgKzMzOCw4IEBAIHZvaWQgQk5fc3dhcChCSUdO VU0gKmEsIEJJR05VTSAqYikKLSAKLSB2b2lkIEJOX2NsZWFyKEJJR05VTSAqYSkKLSB7Ci0rICAg IGlmIChhID09IE5VTEwpCi0rICAgICAgICByZXR1cm47Ci0gICAgIGJuX2NoZWNrX3RvcChhKTsK LSAgICAgaWYgKGEtPmQgIT0gTlVMTCkKLSAgICAgICAgIE9QRU5TU0xfY2xlYW5zZShhLT5kLCBz aXplb2YoKmEtPmQpICogYS0+ZG1heCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8v Ym4vYm5fcHJpbWUuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ibi9ibl9wcmltZS5jCi0t LS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2JuL2JuX3ByaW1lLmMuc3luYwkyMDE5LTAyLTI2IDE1 OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ibi9ibl9w cmltZS5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTI1NDA3MTIzICswMjAwCi1AQCAtMTM1LDggKzEz NSw3IEBAIGludCBCTl9nZW5lcmF0ZV9wcmltZV9leChCSUdOVU0gKnJldCwgaW4KLSAgICAgZm91 bmQgPSAxOwotICBlcnI6Ci0gICAgIE9QRU5TU0xfZnJlZShtb2RzKTsKLS0gICAgaWYgKGN0eCAh PSBOVUxMKQotLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOwotKyAgICBCTl9DVFhfZW5kKGN0eCk7 Ci0gICAgIEJOX0NUWF9mcmVlKGN0eCk7Ci0gICAgIGJuX2NoZWNrX3RvcChyZXQpOwotICAgICBy ZXR1cm4gZm91bmQ7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vY2hhY2hhL2J1aWxk LmluZm8uc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vY2hhY2hhL2J1aWxkLmluZm8KLS0tLSBv cGVuc3NsLTEuMS4xYi9jcnlwdG8vY2hhY2hhL2J1aWxkLmluZm8uc3luYwkyMDE5LTAyLTI2IDE1 OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9jaGFjaGEv YnVpbGQuaW5mbwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUzODQwNjkwMCArMDIwMAotQEAgLTksNiAr OSw4IEBAIEdFTkVSQVRFW2NoYWNoYS1hcm12NC5TXT1hc20vY2hhY2hhLWFybXYKLSBJTkNMVURF W2NoYWNoYS1hcm12NC5vXT0uLgotIEdFTkVSQVRFW2NoYWNoYS1hcm12OC5TXT1hc20vY2hhY2hh LWFybXY4LnBsICQoUEVSTEFTTV9TQ0hFTUUpCi0gSU5DTFVERVtjaGFjaGEtYXJtdjgub109Li4K LStHRU5FUkFURVtjaGFjaGEtczM5MHguU109YXNtL2NoYWNoYS1zMzkweC5wbCAkKFBFUkxBU01f U0NIRU1FKQotK0lOQ0xVREVbY2hhY2hhLXMzOTB4Lm9dPS4uCi0gCi0gQkVHSU5SQVdbTWFrZWZp bGUodW5peCldCi0gIyMjIyMgQ0hBQ0hBIGFzc2VtYmxlciBpbXBsZW1lbnRhdGlvbnMKLWRpZmYg LXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9jb25mL2NvbmZfc2FwLmMuc3luYyBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vY29uZi9jb25mX3NhcC5jCi0tLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2Nv bmYvY29uZl9zYXAuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2NvbmYvY29uZl9zYXAuYwkyMDE5LTA1LTAzIDA4OjU1 OjUxLjU1MDQwNjY5NCArMDIwMAotQEAgLTM1LDYgKzM1LDcgQEAgdm9pZCBPUEVOU1NMX2NvbmZp Zyhjb25zdCBjaGFyICphcHBuYW1lKQotICAgICBtZW1zZXQoJnNldHRpbmdzLCAwLCBzaXplb2Yo c2V0dGluZ3MpKTsKLSAgICAgaWYgKGFwcG5hbWUgIT0gTlVMTCkKLSAgICAgICAgIHNldHRpbmdz LmFwcG5hbWUgPSBzdHJkdXAoYXBwbmFtZSk7Ci0rICAgIHNldHRpbmdzLmZsYWdzID0gREVGQVVM VF9DT05GX01GTEFHUzsKLSAgICAgT1BFTlNTTF9pbml0X2NyeXB0byhPUEVOU1NMX0lOSVRfTE9B RF9DT05GSUcsICZzZXR0aW5ncyk7Ci0gfQotICNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjEu MWIvY3J5cHRvL2RoL2RoX2NoZWNrLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZGgvZGhf Y2hlY2suYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9kaC9kaF9jaGVjay5jLnN5bmMJMjAx OS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlw dG8vZGgvZGhfY2hlY2suYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUyNTQwNzEyMyArMDIwMAotQEAg LTU4LDEwICs1OCw4IEBAIGludCBESF9jaGVja19wYXJhbXMoY29uc3QgREggKmRoLCBpbnQgKnIK LSAKLSAgICAgb2sgPSAxOwotICBlcnI6Ci0tICAgIGlmIChjdHggIT0gTlVMTCkgewotLSAgICAg ICAgQk5fQ1RYX2VuZChjdHgpOwotLSAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKLS0gICAgfQot KyAgICBCTl9DVFhfZW5kKGN0eCk7Ci0rICAgIEJOX0NUWF9mcmVlKGN0eCk7Ci0gICAgIHJldHVy biBvazsKLSB9Ci0gCi1AQCAtMTcxLDEwICsxNjksOCBAQCBpbnQgREhfY2hlY2soY29uc3QgREgg KmRoLCBpbnQgKnJldCkKLSAgICAgfQotICAgICBvayA9IDE7Ci0gIGVycjoKLS0gICAgaWYgKGN0 eCAhPSBOVUxMKSB7Ci0tICAgICAgICBCTl9DVFhfZW5kKGN0eCk7Ci0tICAgICAgICBCTl9DVFhf ZnJlZShjdHgpOwotLSAgICB9Ci0rICAgIEJOX0NUWF9lbmQoY3R4KTsKLSsgICAgQk5fQ1RYX2Zy ZWUoY3R4KTsKLSAgICAgcmV0dXJuIG9rOwotIH0KLSAKLUBAIC0yMjUsOSArMjIxLDcgQEAgaW50 IERIX2NoZWNrX3B1Yl9rZXkoY29uc3QgREggKmRoLCBjb25zdAotIAotICAgICBvayA9IDE7Ci0g IGVycjoKLS0gICAgaWYgKGN0eCAhPSBOVUxMKSB7Ci0tICAgICAgICBCTl9DVFhfZW5kKGN0eCk7 Ci0tICAgICAgICBCTl9DVFhfZnJlZShjdHgpOwotLSAgICB9Ci0rICAgIEJOX0NUWF9lbmQoY3R4 KTsKLSsgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKLSAgICAgcmV0dXJuIG9rOwotIH0KLWRpZmYgLXVw IG9wZW5zc2wtMS4xLjFiL2NyeXB0by9kaC9kaF9nZW4uYy5zeW5jIG9wZW5zc2wtMS4xLjFiL2Ny eXB0by9kaC9kaF9nZW4uYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9kaC9kaF9nZW4uYy5z eW5jCTIwMTktMDUtMDMgMDg6NTU6NDUuMTcwNTE2MjI0ICswMjAwCi0rKysgb3BlbnNzbC0xLjEu MWIvY3J5cHRvL2RoL2RoX2dlbi5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTI1NDA3MTIzICswMjAw Ci1AQCAtMTQ0LDkgKzE0NCw3IEBAIHN0YXRpYyBpbnQgZGhfYnVpbHRpbl9nZW5wYXJhbXMoREgg KnJldCwKLSAgICAgICAgIG9rID0gMDsKLSAgICAgfQotIAotLSAgICBpZiAoY3R4ICE9IE5VTEwp IHsKLS0gICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKLS0gICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7 Ci0tICAgIH0KLSsgICAgQk5fQ1RYX2VuZChjdHgpOwotKyAgICBCTl9DVFhfZnJlZShjdHgpOwot ICAgICByZXR1cm4gb2s7Ci0gfQotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2RoL2Ro X2tleS5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2RoL2RoX2tleS5jCi0tLS0gb3BlbnNz bC0xLjEuMWIvY3J5cHRvL2RoL2RoX2tleS5jLnN5bmMJMjAxOS0wNS0wMyAwODo1NTo0NS4xNzA1 MTYyMjQgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZGgvZGhfa2V5LmMJMjAxOS0w NS0wMyAwODo1NTo1MS41MjY0MDcxMDYgKzAyMDAKLUBAIC0yMzcsMTAgKzIzNyw4IEBAIHN0YXRp YyBpbnQgY29tcHV0ZV9rZXkodW5zaWduZWQgY2hhciAqa2UKLSAKLSAgICAgcmV0ID0gQk5fYm4y YmluKHRtcCwga2V5KTsKLSAgZXJyOgotLSAgICBpZiAoY3R4ICE9IE5VTEwpIHsKLS0gICAgICAg IEJOX0NUWF9lbmQoY3R4KTsKLS0gICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7Ci0tICAgIH0KLSsg ICAgQk5fQ1RYX2VuZChjdHgpOwotKyAgICBCTl9DVFhfZnJlZShjdHgpOwotICAgICByZXR1cm4g cmV0OwotIH0KLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9kc2EvZHNhX2dlbi5j LnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2RzYS9kc2FfZ2VuLmMKLS0tLSBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vZHNhL2RzYV9nZW4uYy5zeW5jCTIwMTktMDUtMDMgMDg6NTU6NDUuMTcxNTE2 MjA3ICswMjAwCi0rKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2RzYS9kc2FfZ2VuLmMJMjAxOS0w NS0wMyAwODo1NTo1MS41MjY0MDcxMDYgKzAyMDAKLUBAIC0zMDgsOCArMzA4LDcgQEAgaW50IGRz YV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplXwotICAgICAgICAgaWYgKHNlZWRfb3V0 KQotICAgICAgICAgICAgIG1lbWNweShzZWVkX291dCwgc2VlZCwgcXNpemUpOwotICAgICB9Ci0t ICAgIGlmIChjdHgpCi0tICAgICAgICBCTl9DVFhfZW5kKGN0eCk7Ci0rICAgIEJOX0NUWF9lbmQo Y3R4KTsKLSAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKLSAgICAgQk5fTU9OVF9DVFhfZnJlZShtb250 KTsKLSAgICAgcmV0dXJuIG9rOwotQEAgLTY0MSw4ICs2NDAsNyBAQCBpbnQgZHNhX2J1aWx0aW5f cGFyYW1nZW4yKERTQSAqcmV0LCBzaXplCi0gICAgIE9QRU5TU0xfZnJlZShzZWVkKTsKLSAgICAg aWYgKHNlZWRfb3V0ICE9IHNlZWRfdG1wKQotICAgICAgICAgT1BFTlNTTF9mcmVlKHNlZWRfdG1w KTsKLS0gICAgaWYgKGN0eCkKLS0gICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKLSsgICAgQk5fQ1RY X2VuZChjdHgpOwotICAgICBCTl9DVFhfZnJlZShjdHgpOwotICAgICBCTl9NT05UX0NUWF9mcmVl KG1vbnQpOwotICAgICBFVlBfTURfQ1RYX2ZyZWUobWN0eCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vZWMvZWNkaF9vc3NsLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMv ZWNkaF9vc3NsLmMKLS0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNkaF9vc3NsLmMuc3lu YwkyMDE5LTA1LTAzIDA4OjU1OjQ1LjE3MTUxNjIwNyArMDIwMAotKysrIG9wZW5zc2wtMS4xLjFi L2NyeXB0by9lYy9lY2RoX29zc2wuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU1NjQwNjU5MSArMDIw MAotQEAgLTEyMyw3ICsxMjMsNyBAQCBpbnQgZWNkaF9zaW1wbGVfY29tcHV0ZV9rZXkodW5zaWdu ZWQgY2hhCi0gICAgIHJldCA9IDE7Ci0gCi0gIGVycjoKLS0gICAgRUNfUE9JTlRfZnJlZSh0bXAp OwotKyAgICBFQ19QT0lOVF9jbGVhcl9mcmVlKHRtcCk7Ci0gICAgIGlmIChjdHgpCi0gICAgICAg ICBCTl9DVFhfZW5kKGN0eCk7Ci0gICAgIEJOX0NUWF9mcmVlKGN0eCk7Ci1kaWZmIC11cCBvcGVu c3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNfbGliLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8v ZWMvZWNfbGliLmMKLS0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNfbGliLmMuc3luYwky MDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2Ny eXB0by9lYy9lY19saWIuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUyNzQwNzA4OCArMDIwMAotQEAg LTEwNzQsOCArMTA3NCw3IEBAIHN0YXRpYyBpbnQgZWNfZmllbGRfaW52ZXJzZV9tb2Rfb3JkKGNv bnMKLSAgICAgcmV0ID0gMTsKLSAKLSAgZXJyOgotLSAgICBpZiAoY3R4ICE9IE5VTEwpCi0tICAg ICAgICBCTl9DVFhfZW5kKGN0eCk7Ci0rICAgIEJOX0NUWF9lbmQoY3R4KTsKLSAgICAgQk5fQ1RY X2ZyZWUobmV3X2N0eCk7Ci0gICAgIHJldHVybiByZXQ7Ci0gfQotZGlmZiAtdXAgb3BlbnNzbC0x LjEuMWIvY3J5cHRvL2VjL2VjX211bHQuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9lYy9l Y19tdWx0LmMKLS0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNfbXVsdC5jLnN5bmMJMjAx OS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlw dG8vZWMvZWNfbXVsdC5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTQwNDA2ODY1ICswMjAwCi1AQCAt Mzc4LDcgKzM3OCw3IEBAIGludCBlY19zY2FsYXJfbXVsX2xhZGRlcihjb25zdCBFQ19HUk9VUAot IAotICBlcnI6Ci0gICAgIEVDX1BPSU5UX2ZyZWUocCk7Ci0tICAgIEVDX1BPSU5UX2ZyZWUocyk7 Ci0rICAgIEVDX1BPSU5UX2NsZWFyX2ZyZWUocyk7Ci0gICAgIEJOX0NUWF9lbmQoY3R4KTsKLSAK LSAgICAgcmV0dXJuIHJldDsKLUBAIC00NDEsNyArNDQxLDcgQEAgaW50IGVjX3dOQUZfbXVsKGNv bnN0IEVDX0dST1VQICpncm91cCwgRQotICAgICAgICAgICogc2NhbGFyIG11bHRpcGxpY2F0aW9u IGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGEgTW9udGdvbWVyeSBsYWRkZXIsCi0gICAgICAgICAg KiB3aXRoIHZhcmlvdXMgdGltaW5nIGF0dGFjayBkZWZlbnNlcy4KLSAgICAgICAgICAqLwotLSAg ICAgICAgaWYgKChzY2FsYXIgIT0gTlVMTCkgJiYgKG51bSA9PSAwKSkgewotKyAgICAgICAgaWYg KChzY2FsYXIgIT0gZ3JvdXAtPm9yZGVyKSAmJiAoc2NhbGFyICE9IE5VTEwpICYmIChudW0gPT0g MCkpIHsKLSAgICAgICAgICAgICAvKi0KLSAgICAgICAgICAgICAgKiBJbiB0aGlzIGNhc2Ugd2Ug d2FudCB0byBjb21wdXRlIHNjYWxhciAqIEdlbmVyYXRvclBvaW50OiB0aGlzCi0gICAgICAgICAg ICAgICogY29kZXBhdGggaXMgcmVhY2hlZCBtb3N0IHByb21pbmVudGx5IGJ5IChlcGhlbWVyYWwp IGtleQotQEAgLTQ1Miw3ICs0NTIsNyBAQCBpbnQgZWNfd05BRl9tdWwoY29uc3QgRUNfR1JPVVAg Kmdyb3VwLCBFCi0gICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgcmV0dXJuIGVjX3NjYWxh cl9tdWxfbGFkZGVyKGdyb3VwLCByLCBzY2FsYXIsIE5VTEwsIGN0eCk7Ci0gICAgICAgICB9Ci0t ICAgICAgICBpZiAoKHNjYWxhciA9PSBOVUxMKSAmJiAobnVtID09IDEpKSB7Ci0rICAgICAgICBp ZiAoKHNjYWxhciA9PSBOVUxMKSAmJiAobnVtID09IDEpICYmIChzY2FsYXJzWzBdICE9IGdyb3Vw LT5vcmRlcikpIHsKLSAgICAgICAgICAgICAvKi0KLSAgICAgICAgICAgICAgKiBJbiB0aGlzIGNh c2Ugd2Ugd2FudCB0byBjb21wdXRlIHNjYWxhciAqIFZhcmlhYmxlUG9pbnQ6IHRoaXMKLSAgICAg ICAgICAgICAgKiBjb2RlcGF0aCBpcyByZWFjaGVkIG1vc3QgcHJvbWluZW50bHkgYnkgdGhlIHNl Y29uZCBoYWxmIG9mIEVDREgsCi1AQCAtOTQ4LDggKzk0OCw3IEBAIGludCBlY193TkFGX3ByZWNv bXB1dGVfbXVsdChFQ19HUk9VUCAqZ3IKLSAgICAgcmV0ID0gMTsKLSAKLSAgZXJyOgotLSAgICBp ZiAoY3R4ICE9IE5VTEwpCi0tICAgICAgICBCTl9DVFhfZW5kKGN0eCk7Ci0rICAgIEJOX0NUWF9l bmQoY3R4KTsKLSAgICAgQk5fQ1RYX2ZyZWUobmV3X2N0eCk7Ci0gICAgIEVDX2VjX3ByZV9jb21w X2ZyZWUocHJlX2NvbXApOwotICAgICBpZiAocG9pbnRzKSB7Ci1kaWZmIC11cCBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vZWMvZWNwX25pc3RwNTIxLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8v ZWMvZWNwX25pc3RwNTIxLmMKLS0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNwX25pc3Rw NTIxLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4xLjFiL2NyeXB0by9lYy9lY3BfbmlzdHA1MjEuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUz MjQwNzAwMyArMDIwMAotQEAgLTM1NywxMCArMzU3LDE1IEBAIHN0YXRpYyB2b2lkIGZlbGVtX2Rp ZmY2NChmZWxlbSBvdXQsIGNvbnMKLSBzdGF0aWMgdm9pZCBmZWxlbV9kaWZmXzEyOF82NChsYXJn ZWZlbGVtIG91dCwgY29uc3QgZmVsZW0gaW4pCi0gewotICAgICAvKgotLSAgICAgKiBJbiBvcmRl ciB0byBwcmV2ZW50IHVuZGVyZmxvdywgd2UgYWRkIDAgbW9kIHAgYmVmb3JlIHN1YnRyYWN0aW5n LgotKyAgICAgKiBJbiBvcmRlciB0byBwcmV2ZW50IHVuZGVyZmxvdywgd2UgYWRkIDY0cCBtb2Qg cCAod2hpY2ggaXMgZXF1aXZhbGVudAotKyAgICAgKiB0byAwIG1vZCBwKSBiZWZvcmUgc3VidHJh Y3RpbmcuIHAgaXMgMl41MjEgLSAxLCBpLmUuIGluIGJpbmFyeSBhIDUyMQotKyAgICAgKiBkaWdp dCBudW1iZXIgd2l0aCBhbGwgYml0cyBzZXQgdG8gMS4gU2VlICJUaGUgcmVwcmVzZW50YXRpb24g b2YgZmllbGQKLSsgICAgICogZWxlbWVudHMiIGNvbW1lbnQgYWJvdmUgZm9yIGEgZGVzY3JpcHRp b24gb2YgaG93IGxpbWJzIGFyZSB1c2VkIHRvCi0rICAgICAqIHJlcHJlc2VudCBhIG51bWJlci4g NjRwIGlzIHJlcHJlc2VudGVkIHdpdGggOCBsaW1icyBjb250YWluaW5nIGEgbnVtYmVyCi0rICAg ICAqIHdpdGggNTggYml0cyBzZXQgYW5kIG9uZSBsaW1iIHdpdGggYSBudW1iZXIgd2l0aCA1NyBi aXRzIHNldC4KLSAgICAgICovCi0tICAgIHN0YXRpYyBjb25zdCBsaW1iIHR3bzYzbTYgPSAoKChs aW1iKSAxKSA8PCA2MikgLSAoKChsaW1iKSAxKSA8PCA1KTsKLS0gICAgc3RhdGljIGNvbnN0IGxp bWIgdHdvNjNtNSA9ICgoKGxpbWIpIDEpIDw8IDYyKSAtICgoKGxpbWIpIDEpIDw8IDQpOwotKyAg ICBzdGF0aWMgY29uc3QgbGltYiB0d282M202ID0gKCgobGltYikgMSkgPDwgNjMpIC0gKCgobGlt YikgMSkgPDwgNik7Ci0rICAgIHN0YXRpYyBjb25zdCBsaW1iIHR3bzYzbTUgPSAoKChsaW1iKSAx KSA8PCA2MykgLSAoKChsaW1iKSAxKSA8PCA1KTsKLSAKLSAgICAgb3V0WzBdICs9IHR3bzYzbTYg LSBpblswXTsKLSAgICAgb3V0WzFdICs9IHR3bzYzbTUgLSBpblsxXTsKLWRpZmYgLXVwIG9wZW5z c2wtMS4xLjFiL2NyeXB0by9lYy9lY3BfbmlzdHoyNTYuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL2Ny eXB0by9lYy9lY3BfbmlzdHoyNTYuYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9lYy9lY3Bf bmlzdHoyNTYuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCi0rKysg b3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjcF9uaXN0ejI1Ni5jCTIwMTktMDUtMDMgMDg6NTU6 NTEuNTI4NDA3MDcxICswMjAwCi1AQCAtODg4LDggKzg4OCw3IEBAIF9fb3d1ciBzdGF0aWMgaW50 IGVjcF9uaXN0ejI1Nl9tdWx0X3ByZWMKLSAgICAgcmV0ID0gMTsKLSAKLSAgZXJyOgotLSAgICBp ZiAoY3R4ICE9IE5VTEwpCi0tICAgICAgICBCTl9DVFhfZW5kKGN0eCk7Ci0rICAgIEJOX0NUWF9l bmQoY3R4KTsKLSAgICAgQk5fQ1RYX2ZyZWUobmV3X2N0eCk7Ci0gCi0gICAgIEVDX25pc3R6MjU2 X3ByZV9jb21wX2ZyZWUocHJlX2NvbXApOwotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRv L2VjL2VjcF9zbXBsLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNwX3NtcGwuYwot LS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9lYy9lY3Bfc21wbC5jLnN5bmMJMjAxOS0wNS0wMyAw ODo1NTo0NS4xNTI1MTY1MzMgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNw X3NtcGwuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUyODQwNzA3MSArMDIwMAotQEAgLTMxMiw4ICsz MTIsNyBAQCBpbnQgZWNfR0ZwX3NpbXBsZV9ncm91cF9jaGVja19kaXNjcmltaW5hCi0gICAgIHJl dCA9IDE7Ci0gCi0gIGVycjoKLS0gICAgaWYgKGN0eCAhPSBOVUxMKQotLSAgICAgICAgQk5fQ1RY X2VuZChjdHgpOwotKyAgICBCTl9DVFhfZW5kKGN0eCk7Ci0gICAgIEJOX0NUWF9mcmVlKG5ld19j dHgpOwotICAgICByZXR1cm4gcmV0OwotIH0KLUBAIC03OTIsOCArNzkxLDcgQEAgaW50IGVjX0dG cF9zaW1wbGVfYWRkKGNvbnN0IEVDX0dST1VQICpncgotICAgICByZXQgPSAxOwotIAotICBlbmQ6 Ci0tICAgIGlmIChjdHgpICAgICAgICAgICAgICAgICAgICAvKiBvdGhlcndpc2Ugd2UgYWxyZWFk eSBjYWxsZWQgQk5fQ1RYX2VuZCAqLwotLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOwotKyAgICBC Tl9DVFhfZW5kKGN0eCk7Ci0gICAgIEJOX0NUWF9mcmVlKG5ld19jdHgpOwotICAgICByZXR1cm4g cmV0OwotIH0KLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9lcnIvZXJyLmMuc3luYyBv cGVuc3NsLTEuMS4xYi9jcnlwdG8vZXJyL2Vyci5jCi0tLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRv L2Vyci9lcnIuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCi0rKysg b3BlbnNzbC0xLjEuMWIvY3J5cHRvL2Vyci9lcnIuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU0ODQw NjcyOCArMDIwMAotQEAgLTUyMyw4ICs1MjMsMjQgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2V0 X2Vycm9yX3ZhbHVlcyhpbgotICAgICAgICAgcmV0dXJuIEVSUl9SX0lOVEVSTkFMX0VSUk9SOwot ICAgICB9Ci0gCi0rICAgIHdoaWxlIChlcy0+Ym90dG9tICE9IGVzLT50b3ApIHsKLSsgICAgICAg IGlmIChlcy0+ZXJyX2ZsYWdzW2VzLT50b3BdICYgRVJSX0ZMQUdfQ0xFQVIpIHsKLSsgICAgICAg ICAgICBlcnJfY2xlYXIoZXMsIGVzLT50b3ApOwotKyAgICAgICAgICAgIGVzLT50b3AgPSBlcy0+ dG9wID4gMCA/IGVzLT50b3AgLSAxIDogRVJSX05VTV9FUlJPUlMgLSAxOwotKyAgICAgICAgICAg IGNvbnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAgaSA9IChlcy0+Ym90dG9tICsgMSkgJSBF UlJfTlVNX0VSUk9SUzsKLSsgICAgICAgIGlmIChlcy0+ZXJyX2ZsYWdzW2ldICYgRVJSX0ZMQUdf Q0xFQVIpIHsKLSsgICAgICAgICAgICBlcy0+Ym90dG9tID0gaTsKLSsgICAgICAgICAgICBlcnJf Y2xlYXIoZXMsIGVzLT5ib3R0b20pOwotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAg fQotKyAgICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSAgICAgaWYgKGVzLT5ib3R0b20gPT0gZXMt PnRvcCkKLSAgICAgICAgIHJldHVybiAwOwotKwotICAgICBpZiAodG9wKQotICAgICAgICAgaSA9 IGVzLT50b3A7ICAgICAgICAgICAgLyogbGFzdCBlcnJvciAqLwotICAgICBlbHNlCi1AQCAtOTEz LDI1ICs5MjksNiBAQCBpbnQgRVJSX2NsZWFyX2xhc3RfbWFyayh2b2lkKQotICAgICByZXR1cm4g MTsKLSB9Ci0gCi0tI2lmZGVmIFVJTlRQVFJfVAotLSMgdW5kZWYgVUlOVFBUUl9UCi0tI2VuZGlm Ci0tLyoKLS0gKiB1aW50cHRyX3QgaXMgdGhlIGFuc3dlciwgYnV0IHVuZm9ydHVuYXRlbHkgQzg5 LCBjdXJyZW50ICJsZWFzdCBjb21tb24KLS0gKiBkZW5vbWluYXRvciIgZG9lc24ndCBkZWZpbmUg aXQuIE1vc3QgbGVnYWN5IHBsYXRmb3JtcyB0eXBlZGVmIGl0IGFueXdheSwKLS0gKiBzbyB0aGF0 IGF0dGVtcHQgdG8gZmlsbCB0aGUgZ2FwcyBtZWFucyB0aGF0IG9uZSB3b3VsZCBoYXZlIHRvIGlk ZW50aWZ5Ci0tICogdGhhdCB0cmFjayB0aGVzZSBnYXBzLCB3aGljaCB3b3VsZCBiZSB1bmRlc2ly YWJsZS4gTWFjcm8gaXQgaXMuLi4KLS0gKi8KLS0jaWYgZGVmaW5lZChfX1ZNUykgJiYgX19JTklU SUFMX1BPSU5URVJfU0laRT09NjQKLS0vKgotLSAqIEJ1dCB3ZSBjYW4ndCB1c2Ugc2l6ZV90IG9u IFZNUywgYmVjYXVzZSBpdCBhZGhlcmVzIHRvIHNpemVvZihzaXplX3QpPT00Ci0tICogZXZlbiBp biA2NC1iaXQgYnVpbGRzLCB3aGljaCBtZWFucyB0aGF0IGl0IHdvbid0IHdvcmsgYXMgbWFzay4K LS0gKi8KLS0jIGRlZmluZSBVSU5UUFRSX1QgdW5zaWduZWQgbG9uZyBsb25nCi0tI2Vsc2UKLS0j IGRlZmluZSBVSU5UUFRSX1Qgc2l6ZV90Ci0tI2VuZGlmCi0tCi0gdm9pZCBlcnJfY2xlYXJfbGFz dF9jb25zdGFudF90aW1lKGludCBjbGVhcikKLSB7Ci0gICAgIEVSUl9TVEFURSAqZXM7Ci1AQCAt OTQzLDExICs5NDAsMTEgQEAgdm9pZCBlcnJfY2xlYXJfbGFzdF9jb25zdGFudF90aW1lKGludCBj bAotIAotICAgICB0b3AgPSBlcy0+dG9wOwotIAotLSAgICBlcy0+ZXJyX2ZsYWdzW3RvcF0gJj0g figwIC0gY2xlYXIpOwotLSAgICBlcy0+ZXJyX2J1ZmZlclt0b3BdICY9IH4oMFVMIC0gY2xlYXIp OwotLSAgICBlcy0+ZXJyX2ZpbGVbdG9wXSA9IChjb25zdCBjaGFyICopKChVSU5UUFRSX1QpZXMt PmVycl9maWxlW3RvcF0gJgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH4oKFVJTlRQVFJfVCkwIC0gY2xlYXIpKTsKLS0gICAgZXMtPmVycl9saW5lW3RvcF0gfD0gMCAt IGNsZWFyOwotLQotLSAgICBlcy0+dG9wID0gKHRvcCArIEVSUl9OVU1fRVJST1JTIC0gY2xlYXIp ICUgRVJSX05VTV9FUlJPUlM7Ci0rICAgIC8qCi0rICAgICAqIEZsYWcgZXJyb3IgYXMgY2xlYXJl ZCBidXQgcmVtb3ZlIGl0IGVsc2V3aGVyZSB0byBhdm9pZCB0d28gZXJyb3JzCi0rICAgICAqIGFj Y2Vzc2luZyB0aGUgc2FtZSBlcnJvciBzdGFjayBsb2NhdGlvbiwgcmV2ZWFsaW5nIHRpbWluZyBp bmZvcm1hdGlvbi4KLSsgICAgICovCi0rICAgIGNsZWFyID0gY29uc3RhbnRfdGltZV9zZWxlY3Rf aW50KGNvbnN0YW50X3RpbWVfZXFfaW50KGNsZWFyLCAwKSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCwgRVJSX0ZMQUdfQ0xFQVIpOwotKyAgICBlcy0+ZXJyX2ZsYWdz W3RvcF0gfD0gY2xlYXI7Ci0gfQotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9k aWdlc3QuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ldnAvZGlnZXN0LmMKLS0tLSBvcGVu c3NsLTEuMS4xYi9jcnlwdG8vZXZwL2RpZ2VzdC5jLnN5bmMJMjAxOS0wNS0wMyAwODo1NTo1MS41 NTM0MDY2NDIgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZwL2RpZ2VzdC5jCTIw MTktMDUtMDMgMDg6NTY6NDAuODAwNTYxMTY4ICswMjAwCi1AQCAtMTcxLDYgKzE3MSw5IEBAIGlu dCBFVlBfRGlnZXN0VXBkYXRlKEVWUF9NRF9DVFggKmN0eCwgY28KLSAjaWZkZWYgT1BFTlNTTF9G SVBTCi0gICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsKLSAjZW5kaWYKLSsgICAgaWYgKGNvdW50 ID09IDApCitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vZHNhL2RzYV9hbWV0aC5jLnN5 bmMgb3BlbnNzbC0xLjEuMWMvY3J5cHRvL2RzYS9kc2FfYW1ldGguYworLS0tIG9wZW5zc2wtMS4x LjFjL2NyeXB0by9kc2EvZHNhX2FtZXRoLmMuc3luYwkyMDE5LTA1LTI4IDE1OjEyOjIxLjAwMDAw MDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9kc2EvZHNhX2FtZXRoLmMJMjAx OS0wNS0yOSAxNzoxMDozOS43NjgxODcyODMgKzAyMDAKK0BAIC01MDMsNyArNTAzLDcgQEAgc3Rh dGljIGludCBkc2FfcGtleV9jdHJsKEVWUF9QS0VZICpwa2V5LAorIAorICAgICBjYXNlIEFTTjFf UEtFWV9DVFJMX0RFRkFVTFRfTURfTklEOgorICAgICAgICAgKihpbnQgKilhcmcyID0gTklEX3No YTI1NjsKKy0gICAgICAgIHJldHVybiAyOwogKyAgICAgICAgcmV0dXJuIDE7Ci0rCi0gICAgIHJl dHVybiBjdHgtPnVwZGF0ZShjdHgsIGRhdGEsIGNvdW50KTsKLSB9Ci0gCi1kaWZmIC11cCBvcGVu c3NsLTEuMS4xYi9jcnlwdG8vZXZwL2VfYXJpYS5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRv L2V2cC9lX2FyaWEuYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ldnAvZV9hcmlhLmMuc3lu YwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFi L2NyeXB0by9ldnAvZV9hcmlhLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NDU0MDY3NzkgKzAyMDAK LUBAIC00ODYsNiArNDg2LDE2IEBAIHN0YXRpYyBpbnQgYXJpYV9nY21fY2lwaGVyKEVWUF9DSVBI RVJfQ1QKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotK3N0YXRpYyBpbnQgYXJpYV9nY21fY2xlYW51 cChFVlBfQ0lQSEVSX0NUWCAqY3R4KQotK3sKLSsgICAgRVZQX0FSSUFfR0NNX0NUWCAqZ2N0eCA9 IEVWUF9DX0RBVEEoRVZQX0FSSUFfR0NNX0NUWCwgY3R4KTsKLSsKLSsgICAgaWYgKGdjdHgtPml2 ICE9IEVWUF9DSVBIRVJfQ1RYX2l2X25vY29uc3QoY3R4KSkKLSsgICAgICAgIE9QRU5TU0xfZnJl ZShnY3R4LT5pdik7Ci0rCi0rICAgIHJldHVybiAxOwotK30KLSsKLSBzdGF0aWMgaW50IGFyaWFf Y2NtX2luaXRfa2V5KEVWUF9DSVBIRVJfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtl eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaXYs IGludCBlbmMpCi0gewotQEAgLTcyNyw2ICs3MzcsOCBAQCBzdGF0aWMgaW50IGFyaWFfY2NtX2Np cGhlcihFVlBfQ0lQSEVSX0NUCi0gICAgIH0KLSB9Ci0gCi0rI2RlZmluZSBhcmlhX2NjbV9jbGVh bnVwICAgIE5VTEwKLSsKLSAjZGVmaW5lIEFSSUFfQVVUSF9GTEFHUyAgKEVWUF9DSVBIX0ZMQUdf REVGQVVMVF9BU04xIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRVZQX0NJUEhfQ1VT VE9NX0lWIHwgRVZQX0NJUEhfRkxBR19DVVNUT01fQ0lQSEVSIFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgRVZQX0NJUEhfQUxXQVlTX0NBTExfSU5JVCB8IEVWUF9DSVBIX0NUUkxfSU5J VCBcCi1AQCAtNzM5LDcgKzc1MSw3IEBAIHN0YXRpYyBjb25zdCBFVlBfQ0lQSEVSIGFyaWFfIyNr ZXlsZW4jI18KLSAgICAgICAgIEFSSUFfQVVUSF9GTEFHU3xFVlBfQ0lQSF8jI01PREUjI19NT0RF LCAgICBcCi0gICAgICAgICBhcmlhXyMjbW9kZSMjX2luaXRfa2V5LCAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICAgYXJpYV8jI21vZGUjI19jaXBoZXIsICAgICAgICAgICAgICAgICAgICAg IFwKLS0gICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICBhcmlhXyMjbW9kZSMjX2NsZWFudXAsICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICAgc2l6ZW9mKEVWUF9BUklBXyMjTU9ERSMjX0NUWCksICAgICAgICAgICAgIFwKLSAg ICAgICAgIE5VTEwsTlVMTCxhcmlhXyMjbW9kZSMjX2N0cmwsTlVMTCB9OyAgICAgICBcCi0gY29u c3QgRVZQX0NJUEhFUiAqRVZQX2FyaWFfIyNrZXlsZW4jI18jI21vZGUodm9pZCkgXAotZGlmZiAt dXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9lX2NoYWNoYTIwX3BvbHkxMzA1LmMuc3luYyBv cGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZwL2VfY2hhY2hhMjBfcG9seTEzMDUuYwotLS0tIG9wZW5z c2wtMS4xLjFiL2NyeXB0by9ldnAvZV9jaGFjaGEyMF9wb2x5MTMwNS5jLnN5bmMJMjAxOS0wNS0w MyAwODo1NTo0NS4yMTY1MTU0MzQgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZw L2VfY2hhY2hhMjBfcG9seTEzMDUuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU1MTQwNjY3NiArMDIw MAotQEAgLTMwLDYgKzMwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgewotIAotICNkZWZpbmUgZGF0YShj dHgpICAgKChFVlBfQ0hBQ0hBX0tFWSAqKShjdHgpLT5jaXBoZXJfZGF0YSkKLSAKLSsjZGVmaW5l IENIQUNIQTIwX1BPTFkxMzA1X01BWF9JVkxFTiAgICAgMTIKLSsKLSBzdGF0aWMgaW50IGNoYWNo YV9pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAqY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgdXNlcl9rZXlbQ0hBQ0hBX0tFWV9TSVpFXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGl2W0NIQUNIQV9DVFJf U0laRV0sIGludCBlbmMpCi1AQCAtNTMzLDcgKzUzNSw3IEBAIHN0YXRpYyBpbnQgY2hhY2hhMjBf cG9seTEzMDVfY3RybChFVlBfQ0kKLSAgICAgICAgIHJldHVybiAxOwotIAotICAgICBjYXNlIEVW UF9DVFJMX0FFQURfU0VUX0lWTEVOOgotLSAgICAgICAgaWYgKGFyZyA8PSAwIHx8IGFyZyA+IENI QUNIQV9DVFJfU0laRSkKLSsgICAgICAgIGlmIChhcmcgPD0gMCB8fCBhcmcgPiBDSEFDSEEyMF9Q T0xZMTMwNV9NQVhfSVZMRU4pCi0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICBhY3R4 LT5ub25jZV9sZW4gPSBhcmc7Ci0gICAgICAgICByZXR1cm4gMTsKLWRpZmYgLXVwIG9wZW5zc2wt MS4xLjFiL2NyeXB0by9ldnAvZXZwX2VuYy5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2 cC9ldnBfZW5jLmMKLS0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZwL2V2cF9lbmMuYy5zeW5j CTIwMTktMDUtMDMgMDg6NTU6NDUuMTc0NTE2MTU1ICswMjAwCi0rKysgb3BlbnNzbC0xLjEuMWIv Y3J5cHRvL2V2cC9ldnBfZW5jLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NDQ0MDY3OTcgKzAyMDAK LUBAIC0zMzgsNiArMzM4LDExIEBAIHN0YXRpYyBpbnQgZXZwX0VuY3J5cHREZWNyeXB0VXBkYXRl KEVWUF8KLSAKLSAgICAgYmwgPSBjdHgtPmNpcGhlci0+YmxvY2tfc2l6ZTsKLSAKLSsgICAgaWYg KGlubCA8PSAwKSB7Ci0rICAgICAgICAqb3V0bCA9IDA7Ci0rICAgICAgICByZXR1cm4gaW5sID09 IDA7Ci0rICAgIH0KLSsKLSAgICAgaWYgKGN0eC0+Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX0ZM QUdfQ1VTVE9NX0NJUEhFUikgewotICAgICAgICAgLyogSWYgYmxvY2sgc2l6ZSA+IDEgdGhlbiB0 aGUgY2lwaGVyIHdpbGwgaGF2ZSB0byBkbyB0aGlzIGNoZWNrICovCi0gICAgICAgICBpZiAoYmwg PT0gMSAmJiBpc19wYXJ0aWFsbHlfb3ZlcmxhcHBpbmcob3V0LCBpbiwgY21wbCkpIHsKLUBAIC0z NTMsMTAgKzM1OCw2IEBAIHN0YXRpYyBpbnQgZXZwX0VuY3J5cHREZWNyeXB0VXBkYXRlKEVWUF8K LSAgICAgICAgIHJldHVybiAxOwotICAgICB9Ci0gCi0tICAgIGlmIChpbmwgPD0gMCkgewotLSAg ICAgICAgKm91dGwgPSAwOwotLSAgICAgICAgcmV0dXJuIGlubCA9PSAwOwotLSAgICB9Ci0gICAg IGlmIChpc19wYXJ0aWFsbHlfb3ZlcmxhcHBpbmcob3V0ICsgY3R4LT5idWZfbGVuLCBpbiwgY21w bCkpIHsKLSAgICAgICAgIEVWUGVycihFVlBfRl9FVlBfRU5DUllQVERFQ1JZUFRVUERBVEUsIEVW UF9SX1BBUlRJQUxMWV9PVkVSTEFQUElORyk7Ci0gICAgICAgICByZXR1cm4gMDsKLUBAIC00OTAs NiArNDkxLDExIEBAIGludCBFVlBfRGVjcnlwdFVwZGF0ZShFVlBfQ0lQSEVSX0NUWCAqY3QKLSAg ICAgaWYgKEVWUF9DSVBIRVJfQ1RYX3Rlc3RfZmxhZ3MoY3R4LCBFVlBfQ0lQSF9GTEFHX0xFTkdU SF9CSVRTKSkKLSAgICAgICAgIGNtcGwgPSAoY21wbCArIDcpIC8gODsKLSAKLSsgICAgaWYgKGlu bCA8PSAwKSB7Ci0rICAgICAgICAqb3V0bCA9IDA7Ci0rICAgICAgICByZXR1cm4gaW5sID09IDA7 Ci0rICAgIH0KLSsKLSAgICAgaWYgKGN0eC0+Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdf Q1VTVE9NX0NJUEhFUikgewotICAgICAgICAgaWYgKGIgPT0gMSAmJiBpc19wYXJ0aWFsbHlfb3Zl cmxhcHBpbmcob3V0LCBpbiwgY21wbCkpIHsKLSAgICAgICAgICAgICBFVlBlcnIoRVZQX0ZfRVZQ X0RFQ1JZUFRVUERBVEUsIEVWUF9SX1BBUlRJQUxMWV9PVkVSTEFQUElORyk7Ci1AQCAtNTA1LDEx ICs1MTEsNiBAQCBpbnQgRVZQX0RlY3J5cHRVcGRhdGUoRVZQX0NJUEhFUl9DVFggKmN0Ci0gICAg ICAgICByZXR1cm4gMTsKLSAgICAgfQotIAotLSAgICBpZiAoaW5sIDw9IDApIHsKLS0gICAgICAg ICpvdXRsID0gMDsKLS0gICAgICAgIHJldHVybiBpbmwgPT0gMDsKLS0gICAgfQotLQotICAgICBp ZiAoY3R4LT5mbGFncyAmIEVWUF9DSVBIX05PX1BBRERJTkcpCi0gICAgICAgICByZXR1cm4gZXZw X0VuY3J5cHREZWNyeXB0VXBkYXRlKGN0eCwgb3V0LCBvdXRsLCBpbiwgaW5sKTsKLSAKLWRpZmYg LXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9obWFjL2htYWMuYy5zeW5jIG9wZW5zc2wtMS4xLjFi L2NyeXB0by9obWFjL2htYWMuYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9obWFjL2htYWMu Yy5zeW5jCTIwMTktMDUtMDMgMDg6NTU6NDUuMTg5NTE1ODk4ICswMjAwCi0rKysgb3BlbnNzbC0x LjEuMWIvY3J5cHRvL2htYWMvaG1hYy5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTM4NDA2OTAwICsw MjAwCi1AQCAtMzUsNiArMzUsMTMgQEAgaW50IEhNQUNfSW5pdF9leChITUFDX0NUWCAqY3R4LCBj b25zdCB2bwotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLSsgICAgLyoKLSsgICAgICog VGhlIEhNQUMgY29uc3RydWN0aW9uIGlzIG5vdCBhbGxvd2VkICB0byBiZSB1c2VkIHdpdGggdGhl Ci0rICAgICAqIGV4dGVuZGFibGUtb3V0cHV0IGZ1bmN0aW9ucyAoWE9GKSBzaGFrZTEyOCBhbmQg c2hha2UyNTYuCi0rICAgICAqLwotKyAgICBpZiAoKEVWUF9NRF9tZXRoX2dldF9mbGFncyhtZCkg JiBFVlBfTURfRkxBR19YT0YpICE9IDApCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSAgICAgaWYg KGtleSAhPSBOVUxMKSB7Ci0gI2lmZGVmIE9QRU5TU0xfRklQUwotICAgICAgICAgaWYgKEZJUFNf bW9kZSgpICYmICEoRVZQX01EX2ZsYWdzKG1kKSAmIEVWUF9NRF9GTEFHX0ZJUFMpCi1kaWZmIC11 cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vaW5pdC5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRv L2luaXQuYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9pbml0LmMuc3luYwkyMDE5LTAyLTI2 IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9pbml0 LmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NTA0MDY2OTQgKzAyMDAKLUBAIC03MDIsNyArNzAyLDcg QEAgaW50IE9QRU5TU0xfaW5pdF9jcnlwdG8odWludDY0X3Qgb3B0cywgYwotICAgICAgICAgcmV0 ID0gUlVOX09OQ0UoJmNvbmZpZywgb3NzbF9pbml0X2NvbmZpZyk7Ci0gICAgICAgICBjb25mX3Nl dHRpbmdzID0gTlVMTDsKLSAgICAgICAgIENSWVBUT19USFJFQURfdW5sb2NrKGluaXRfbG9jayk7 Ci0tICAgICAgICBpZiAoIXJldCkKLSsgICAgICAgIGlmIChyZXQgPD0gMCkKLSAgICAgICAgICAg ICByZXR1cm4gMDsKLSAgICAgfQotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL21v ZGVzL2FzbS9naGFzaC14ODZfNjQucGwuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vbW9kZXMv YXNtL2doYXNoLXg4Nl82NC5wbAotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9tb2Rlcy9hc20v Z2hhc2gteDg2XzY0LnBsLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vbW9kZXMvYXNtL2doYXNoLXg4Nl82NC5wbAkyMDE5 LTA1LTAzIDA4OjU1OjUxLjUzNDQwNjk2OSArMDIwMAotQEAgLTExNTUsNiArMTE1NSw3IEBAIF9f XwotIH0gZWxzZSB7Ci0gJGNvZGUuPTw8X19fOwotIAlqbXAJLkxfaW5pdF9jbG11bAotKy5jZmlf ZW5kcHJvYwotIC5zaXplCWdjbV9pbml0X2F2eCwuLWdjbV9pbml0X2F2eAotIF9fXwotIH0KLUBA IC0xNTk0LDYgKzE1OTUsNyBAQCBfX18KLSB9IGVsc2UgewotICRjb2RlLj08PF9fXzsKLSAJam1w CS5MX2doYXNoX2NsbXVsCi0rLmNmaV9lbmRwcm9jCi0gLnNpemUJZ2NtX2doYXNoX2F2eCwuLWdj bV9naGFzaF9hdngKLSBfX18KLSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vbW9k ZXMvY2NtMTI4LmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vbW9kZXMvY2NtMTI4LmMKLS0t LSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vbW9kZXMvY2NtMTI4LmMuc3luYwkyMDE5LTAyLTI2IDE1 OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9tb2Rlcy9j Y20xMjguYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU0MzQwNjgxNCArMDIwMAotQEAgLTQyNSw3ICs0 MjUsNyBAQCBzaXplX3QgQ1JZUFRPX2NjbTEyOF90YWcoQ0NNMTI4X0NPTlRFWFQKICAKLSAgICAg TSAqPSAyOwotICAgICBNICs9IDI7Ci0tICAgIGlmIChsZW4gPCBNKQotKyAgICBpZiAobGVuICE9 IE0pCi0gICAgICAgICByZXR1cm4gMDsKLSAgICAgbWVtY3B5KHRhZywgY3R4LT5jbWFjLmMsIE0p OwotICAgICByZXR1cm4gTTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9vX3N0ci5j LnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL29fc3RyLmMKLS0tLSBvcGVuc3NsLTEuMS4xYi9j cnlwdG8vb19zdHIuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL29fc3RyLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NTA0 MDY2OTQgKzAyMDAKLUBAIC0yMjMsNyArMjIzLDI2IEBAIGludCBvcGVuc3NsX3N0cmVycm9yX3Io aW50IGVycm51bSwgY2hhcgotICNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUj49MTQw MAotICAgICByZXR1cm4gIXN0cmVycm9yX3MoYnVmLCBidWZsZW4sIGVycm51bSk7Ci0gI2VsaWYg ZGVmaW5lZChfR05VX1NPVVJDRSkKLS0gICAgcmV0dXJuIHN0cmVycm9yX3IoZXJybnVtLCBidWYs IGJ1ZmxlbikgIT0gTlVMTDsKLSsgICAgY2hhciAqZXJyOwotKwotKyAgICAvKgotKyAgICAgKiBH TlUgc3RyZXJyb3JfciBtYXkgbm90IGFjdHVhbGx5IHNldCBidWYuCi0rICAgICAqIEl0IGNhbiBy ZXR1cm4gYSBwb2ludGVyIHRvIHNvbWUgKGltbXV0YWJsZSkgc3RhdGljIHN0cmluZyBpbiB3aGlj aCBjYXNlCi0rICAgICAqIGJ1ZiBpcyBsZWZ0IHVudXNlZC4KLSsgICAgICovCi0rICAgIGVyciA9 IHN0cmVycm9yX3IoZXJybnVtLCBidWYsIGJ1Zmxlbik7Ci0rICAgIGlmIChlcnIgPT0gTlVMTCkK LSsgICAgICAgIHJldHVybiAwOwotKyAgICAvKgotKyAgICAgKiBJZiBlcnIgaXMgc3RhdGljYWxs eSBhbGxvY2F0ZWQsIGVyciAhPSBidWYgYW5kIHdlIG5lZWQgdG8gY29weSB0aGUgZGF0YS4KLSsg ICAgICogSWYgZXJyIHBvaW50cyBzb21ld2hlcmUgaW5zaWRlIGJ1ZiwgT1BFTlNTTF9zdHJsY3B5 IGNhbiBoYW5kbGUgdGhpcywKLSsgICAgICogc2luY2Ugc3JjIGFuZCBkZXN0IGFyZSBub3QgYW5u b3RhdGVkIHdpdGggX19yZXN0cmljdCBhbmQgdGhlIGZ1bmN0aW9uCi0rICAgICAqIHJlYWRzIHNy YyBieXRlIGZvciBieXRlIGFuZCB3cml0ZXMgdG8gZGVzdC4KLSsgICAgICogSWYgZXJyID09IGJ1 ZiB3ZSBkbyBub3QgaGF2ZSB0byBjb3B5IGFueXRoaW5nLgotKyAgICAgKi8KLSsgICAgaWYgKGVy ciAhPSBidWYpCi0rICAgICAgICBPUEVOU1NMX3N0cmxjcHkoYnVmLCBlcnIsIGJ1Zmxlbik7Ci0r ICAgIHJldHVybiAxOwotICNlbGlmIChkZWZpbmVkKF9QT1NJWF9DX1NPVVJDRSkgJiYgX1BPU0lY X0NfU09VUkNFID49IDIwMDExMkwpIHx8IFwKLSAgICAgICAoZGVmaW5lZChfWE9QRU5fU09VUkNF KSAmJiBfWE9QRU5fU09VUkNFID49IDYwMCkKLSAgICAgLyoKLUBAIC0yMzQsNiArMjUzLDcgQEAg aW50IG9wZW5zc2xfc3RyZXJyb3JfcihpbnQgZXJybnVtLCBjaGFyCi0gICAgIHJldHVybiAhc3Ry ZXJyb3JfcihlcnJudW0sIGJ1ZiwgYnVmbGVuKTsKLSAjZWxzZQotICAgICBjaGFyICplcnI7Ci0r Ci0gICAgIC8qIEZhbGwgYmFjayB0byBub24tdGhyZWFkIHNhZmUgc3RyZXJyb3IoKS4uLml0cyBh bGwgd2UgY2FuIGRvICovCi0gICAgIGlmIChidWZsZW4gPCAyKQotICAgICAgICAgcmV0dXJuIDA7 Ci1AQCAtMjQxLDggKzI2MSw3IEBAIGludCBvcGVuc3NsX3N0cmVycm9yX3IoaW50IGVycm51bSwg Y2hhcgotICAgICAvKiBDYW4gdGhpcyBldmVyIGhhcHBlbj8gKi8KLSAgICAgaWYgKGVyciA9PSBO VUxMKQotICAgICAgICAgcmV0dXJuIDA7Ci0tICAgIHN0cm5jcHkoYnVmLCBlcnIsIGJ1ZmxlbiAt IDEpOwotLSAgICBidWZbYnVmbGVuIC0gMV0gPSAnXDAnOwotKyAgICBPUEVOU1NMX3N0cmxjcHko YnVmLCBlcnIsIGJ1Zmxlbik7Ci0gICAgIHJldHVybiAxOwotICNlbmRpZgorICAgICBkZWZhdWx0 OgorICAgICAgICAgcmV0dXJuIC0yOworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWMvY3J5cHRvL2Vy ci9lcnIuYy5zeW5jIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9lcnIvZXJyLmMKKy0tLSBvcGVuc3Ns LTEuMS4xYy9jcnlwdG8vZXJyL2Vyci5jLnN5bmMJMjAxOS0wNS0yOCAxNToxMjoyMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vZXJyL2Vyci5jCTIwMTktMDUtMjkg MTc6MDc6MTMuMzQ1NzkzNzkyICswMjAwCitAQCAtMTg0LDggKzE4NCw4IEBAIHN0YXRpYyBFUlJf U1RSSU5HX0RBVEEgKmludF9lcnJfZ2V0X2l0ZW0KICB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4x Yi9jcnlwdG8vcG9seTEzMDUvYnVpbGQuaW5mby5zeW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9w b2x5MTMwNS9idWlsZC5pbmZvCi0tLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3BvbHkxMzA1L2J1 aWxkLmluZm8uc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9wb2x5MTMwNS9idWlsZC5pbmZvCTIwMTktMDUtMDMgMDg6NTU6 NTEuNTM4NDA2OTAwICswMjAwCi1AQCAtMTcsNiArMTcsNyBAQCBHRU5FUkFURVtwb2x5MTMwNS1h cm12OC5TXT1hc20vcG9seTEzMDUtCi0gSU5DTFVERVtwb2x5MTMwNS1hcm12OC5vXT0uLgotIEdF TkVSQVRFW3BvbHkxMzA1LW1pcHMuU109YXNtL3BvbHkxMzA1LW1pcHMucGwgJChQRVJMQVNNX1ND SEVNRSkKLSBJTkNMVURFW3BvbHkxMzA1LW1pcHMub109Li4KLStHRU5FUkFURVtwb2x5MTMwNS1z MzkweC5TXT1hc20vcG9seTEzMDUtczM5MHgucGwgJChQRVJMQVNNX1NDSEVNRSkKLSAKLSBCRUdJ TlJBV1tNYWtlZmlsZSh1bml4KV0KLSB7LSAkYnVpbGRkaXIgLX0vcG9seTEzMDUtJS5TOgl7LSAk c291cmNlZGlyIC19L2FzbS9wb2x5MTMwNS0lLnBsCi1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9j cnlwdG8vcmM0L2J1aWxkLmluZm8uc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcmM0L2J1aWxk LmluZm8KLS0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcmM0L2J1aWxkLmluZm8uc3luYwkyMDE5 LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0 by9yYzQvYnVpbGQuaW5mbwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUzODQwNjkwMCArMDIwMAotQEAg LTExLDYgKzExLDggQEAgR0VORVJBVEVbcmM0LW1kNS14ODZfNjQuc109YXNtL3JjNC1tZDUteAot IAotIEdFTkVSQVRFW3JjNC1wYXJpc2Muc109YXNtL3JjNC1wYXJpc2MucGwgJChQRVJMQVNNX1ND SEVNRSkKLSAKLStHRU5FUkFURVtyYzQtczM5MHguc109YXNtL3JjNC1zMzkweC5wbCAkKFBFUkxB U01fU0NIRU1FKQotKwotIEJFR0lOUkFXW01ha2VmaWxlXQotICMgR05VIG1ha2UgImNhdGNoIGFs bCIKLSB7LSAkYnVpbGRkaXIgLX0vcmM0LSUuczoJey0gJHNvdXJjZWRpciAtfS9hc20vcmM0LSUu cGwKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX2FtZXRoLmMuc3luYyBv cGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9hbWV0aC5jCi0tLS0gb3BlbnNzbC0xLjEuMWIv Y3J5cHRvL3JzYS9yc2FfYW1ldGguYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAw ICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfYW1ldGguYwkyMDE5LTA1 LTAzIDA4OjU1OjUxLjUzMzQwNjk4NiArMDIwMAotQEAgLTU4MywxMCArNTgzLDEyIEBAIHN0YXRp YyBSU0FfUFNTX1BBUkFNUyAqcnNhX2N0eF90b19wc3MoRVYKLSAgICAgICAgIHJldHVybiBOVUxM OwotICAgICBpZiAoc2FsdGxlbiA9PSAtMSkgewotICAgICAgICAgc2FsdGxlbiA9IEVWUF9NRF9z aXplKHNpZ21kKTsKLS0gICAgfSBlbHNlIGlmIChzYWx0bGVuID09IC0yKSB7Ci0rICAgIH0gZWxz ZSBpZiAoc2FsdGxlbiA9PSAtMiB8fCBzYWx0bGVuID09IC0zKSB7Ci0gICAgICAgICBzYWx0bGVu ID0gRVZQX1BLRVlfc2l6ZShwaykgLSBFVlBfTURfc2l6ZShzaWdtZCkgLSAyOwotICAgICAgICAg aWYgKChFVlBfUEtFWV9iaXRzKHBrKSAmIDB4NykgPT0gMSkKLSAgICAgICAgICAgICBzYWx0bGVu LS07Ci0rICAgICAgICBpZiAoc2FsdGxlbiA8IDApCi0rICAgICAgICAgICAgcmV0dXJuIE5VTEw7 Ci0gICAgIH0KLSAKLSAgICAgcmV0dXJuIHJzYV9wc3NfcGFyYW1zX2NyZWF0ZShzaWdtZCwgbWdm MW1kLCBzYWx0bGVuKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX2dl bi5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfZ2VuLmMKLS0tLSBvcGVuc3Ns LTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9nZW4uYy5zeW5jCTIwMTktMDUtMDMgMDg6NTU6NDUuMTkx NTE1ODY0ICswMjAwCi0rKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfZ2VuLmMJMjAx OS0wNS0wMyAwODo1NTo1MS41Mjg0MDcwNzEgKzAyMDAKLUBAIC03NDYsOCArNzQ2LDcgQEAgc3Rh dGljIGludCByc2FfYnVpbHRpbl9rZXlnZW4oUlNBICpyc2EsCi0gICAgICAgICBSU0FlcnIoUlNB X0ZfUlNBX0JVSUxUSU5fS0VZR0VOLCBFUlJfTElCX0JOKTsKLSAgICAgICAgIG9rID0gMDsKLSAg ICAgfQotLSAgICBpZiAoY3R4ICE9IE5VTEwpCi0tICAgICAgICBCTl9DVFhfZW5kKGN0eCk7Ci0r ICAgIEJOX0NUWF9lbmQoY3R4KTsKLSAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKLSAgICAgcmV0dXJu IG9rOwotIH0KLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX29hZXAuYy5z eW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX29hZXAuYwotLS0tIG9wZW5zc2wtMS4x LjFiL2NyeXB0by9yc2EvcnNhX29hZXAuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAw MDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2Ffb2FlcC5jCTIwMTkt MDUtMDMgMDg6NTU6NTEuNTQ5NDA2NzExICswMjAwCi1AQCAtMSw1ICsxLDUgQEAKLSAvKgotLSAq IENvcHlyaWdodCAxOTk5LTIwMTggVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3JzLiBBbGwgUmln aHRzIFJlc2VydmVkLgotKyAqIENvcHlyaWdodCAxOTk5LTIwMTkgVGhlIE9wZW5TU0wgUHJvamVj dCBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICAqCi0gICogTGljZW5zZWQgdW5kZXIg dGhlIE9wZW5TU0wgbGljZW5zZSAodGhlICJMaWNlbnNlIikuICBZb3UgbWF5IG5vdCB1c2UKLSAg KiB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBj YW4gb2J0YWluIGEgY29weQotQEAgLTE0Myw3ICsxNDMsNyBAQCBpbnQgUlNBX3BhZGRpbmdfY2hl Y2tfUEtDUzFfT0FFUF9tZ2YxKHVuCi0gICAgICAqIHxudW18IGlzIHRoZSBsZW5ndGggb2YgdGhl IG1vZHVsdXM7IHxmbGVufCBpcyB0aGUgbGVuZ3RoIG9mIHRoZQotICAgICAgKiBlbmNvZGVkIG1l c3NhZ2UuIFRoZXJlZm9yZSwgZm9yIGFueSB8ZnJvbXwgdGhhdCB3YXMgb2J0YWluZWQgYnkKLSAg ICAgICogZGVjcnlwdGluZyBhIGNpcGhlcnRleHQsIHdlIG11c3QgaGF2ZSB8ZmxlbnwgPD0gfG51 bXwuIFNpbWlsYXJseSwKLS0gICAgICogbnVtIDwgMiAqIG1kbGVuICsgMiBtdXN0IGhvbGQgZm9y IHRoZSBtb2R1bHVzIGlycmVzcGVjdGl2ZSBvZgotKyAgICAgKiB8bnVtfCA+PSAyICogfG1kbGVu fCArIDIgbXVzdCBob2xkIGZvciB0aGUgbW9kdWx1cyBpcnJlc3BlY3RpdmUgb2YKLSAgICAgICog dGhlIGNpcGhlcnRleHQsIHNlZSBQS0NTICMxIHYyLjIsIHNlY3Rpb24gNy4xLjIuCi0gICAgICAq IFRoaXMgZG9lcyBub3QgbGVhayBhbnkgc2lkZS1jaGFubmVsIGluZm9ybWF0aW9uLgotICAgICAg Ki8KLUBAIC0xNzksMTcgKzE3OSwxNiBAQCBpbnQgUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfT0FF UF9tZ2YxKHVuCi0gICAgICAgICBmcm9tIC09IDEgJiBtYXNrOwotICAgICAgICAgKi0tZW0gPSAq ZnJvbSAmIG1hc2s7Ci0gICAgIH0KLS0gICAgZnJvbSA9IGVtOwotIAotICAgICAvKgotICAgICAg KiBUaGUgZmlyc3QgYnl0ZSBtdXN0IGJlIHplcm8sIGhvd2V2ZXIgd2UgbXVzdCBub3QgbGVhayBp ZiB0aGlzIGlzCi0gICAgICAqIHRydWUuIFNlZSBKYW1lcyBILiBNYW5nZXIsICJBIENob3NlbiBD aXBoZXJ0ZXh0ICBBdHRhY2sgb24gUlNBCi0gICAgICAqIE9wdGltYWwgQXN5bW1ldHJpYyBFbmNy eXB0aW9uIFBhZGRpbmcgKE9BRVApIFsuLi5dIiwgQ1JZUFRPIDIwMDEpLgotICAgICAgKi8KLS0g ICAgZ29vZCA9IGNvbnN0YW50X3RpbWVfaXNfemVybyhmcm9tWzBdKTsKLSsgICAgZ29vZCA9IGNv bnN0YW50X3RpbWVfaXNfemVybyhlbVswXSk7Ci0gCi0tICAgIG1hc2tlZHNlZWQgPSBmcm9tICsg MTsKLS0gICAgbWFza2VkZGIgPSBmcm9tICsgMSArIG1kbGVuOwotKyAgICBtYXNrZWRzZWVkID0g ZW0gKyAxOwotKyAgICBtYXNrZWRkYiA9IGVtICsgMSArIG1kbGVuOwotIAotICAgICBpZiAoUEtD UzFfTUdGMShzZWVkLCBtZGxlbiwgbWFza2VkZGIsIGRibGVuLCBtZ2YxbWQpKQotICAgICAgICAg Z290byBjbGVhbnVwOwotQEAgLTIzMCwyOSArMjI5LDMwIEBAIGludCBSU0FfcGFkZGluZ19jaGVj a19QS0NTMV9PQUVQX21nZjEodW4KLSAgICAgbWxlbiA9IGRibGVuIC0gbXNnX2luZGV4OwotIAot ICAgICAvKgotLSAgICAgKiBGb3IgZ29vZCBtZWFzdXJlLCBkbyB0aGlzIGNoZWNrIGluIGNvbnN0 YW50IHRpbmUgYXMgd2VsbC4KLSsgICAgICogRm9yIGdvb2QgbWVhc3VyZSwgZG8gdGhpcyBjaGVj ayBpbiBjb25zdGFudCB0aW1lIGFzIHdlbGwuCi0gICAgICAqLwotICAgICBnb29kICY9IGNvbnN0 YW50X3RpbWVfZ2UodGxlbiwgbWxlbik7Ci0gCi0gICAgIC8qCi0tICAgICAqIEV2ZW4gdGhvdWdo IHdlIGNhbid0IGZha2UgcmVzdWx0J3MgbGVuZ3RoLCB3ZSBjYW4gcHJldGVuZCBjb3B5aW5nCi0t ICAgICAqIHx0bGVufCBieXRlcyB3aGVyZSB8bWxlbnwgYnl0ZXMgd291bGQgYmUgcmVhbC4gTGFz dCB8dGxlbnwgb2YgfGRibGVufAotLSAgICAgKiBieXRlcyBhcmUgdmlld2VkIGFzIGNpcmN1bGFy IGJ1ZmZlciB3aXRoIHN0YXJ0IGF0IHx0bGVufC18bWxlbid8LAotLSAgICAgKiB3aGVyZSB8bWxl bid8IGlzICJzYXR1cmF0ZWQiIHxtbGVufCB2YWx1ZS4gRGVkdWNpbmcgaW5mb3JtYXRpb24KLS0g ICAgICogYWJvdXQgZmFpbHVyZSBvciB8bWxlbnwgd291bGQgdGFrZSBhdHRhY2tlcidzIGFiaWxp dHkgdG8gb2JzZXJ2ZQotLSAgICAgKiBtZW1vcnkgYWNjZXNzIHBhdHRlcm4gd2l0aCBieXRlIGdy YW51bGFyaXR5ICphcyBpdCBvY2N1cnMqLiBJdAotLSAgICAgKiBzaG91bGQgYmUgbm90ZWQgdGhh dCBmYWlsdXJlIGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gbm9ybWFsCi0tICAgICAqIG9wZXJh dGlvbiBpZiB8dGxlbnwgaXMgZml4ZWQgYnkgcHJvdG9jb2wuCi0rICAgICAqIE1vdmUgdGhlIHJl c3VsdCBpbi1wbGFjZSBieSB8ZGJsZW58LXxtZGxlbnwtMS18bWxlbnwgYnl0ZXMgdG8gdGhlIGxl ZnQuCi0rICAgICAqIFRoZW4gaWYgfGdvb2R8IG1vdmUgfG1sZW58IGJ5dGVzIGZyb20gfGRifCt8 bWRsZW58KzEgdG8gfHRvfC4KLSsgICAgICogT3RoZXJ3aXNlIGxlYXZlIHx0b3wgdW5jaGFuZ2Vk LgotKyAgICAgKiBDb3B5IHRoZSBtZW1vcnkgYmFjayBpbiBhIHdheSB0aGF0IGRvZXMgbm90IHJl dmVhbCB0aGUgc2l6ZSBvZgotKyAgICAgKiB0aGUgZGF0YSBiZWluZyBjb3BpZWQgdmlhIGEgdGlt aW5nIHNpZGUgY2hhbm5lbC4gVGhpcyByZXF1aXJlcyBjb3B5aW5nCi0rICAgICAqIHBhcnRzIG9m IHRoZSBidWZmZXIgbXVsdGlwbGUgdGltZXMgYmFzZWQgb24gdGhlIGJpdHMgc2V0IGluIHRoZSBy ZWFsCi0rICAgICAqIGxlbmd0aC4gQ2xlYXIgYml0cyBkbyBhIG5vbi1jb3B5IHdpdGggaWRlbnRp Y2FsIGFjY2VzcyBwYXR0ZXJuLgotKyAgICAgKiBUaGUgbG9vcCBiZWxvdyBoYXMgb3ZlcmFsbCBj b21wbGV4aXR5IG9mIE8oTipsb2coTikpLgotICAgICAgKi8KLS0gICAgdGxlbiA9IGNvbnN0YW50 X3RpbWVfc2VsZWN0X2ludChjb25zdGFudF90aW1lX2x0KGRibGVuLCB0bGVuKSwgZGJsZW4sIHRs ZW4pOwotLSAgICBtc2dfaW5kZXggPSBjb25zdGFudF90aW1lX3NlbGVjdF9pbnQoZ29vZCwgbXNn X2luZGV4LCBkYmxlbiAtIHRsZW4pOwotLSAgICBtbGVuID0gZGJsZW4gLSBtc2dfaW5kZXg7Ci0t ICAgIGZvciAoZnJvbSA9IGRiICsgbXNnX2luZGV4LCBtYXNrID0gZ29vZCwgaSA9IDA7IGkgPCB0 bGVuOyBpKyspIHsKLS0gICAgICAgIHVuc2lnbmVkIGludCBlcXVhbHMgPSBjb25zdGFudF90aW1l X2VxKGksIG1sZW4pOwotLQotLSAgICAgICAgZnJvbSAtPSBkYmxlbiAmIGVxdWFsczsgLyogaWYg KGkgPT0gZGJsZW4pIHJld2luZCAgICovCi0tICAgICAgICBtYXNrICY9IG1hc2sgXiBlcXVhbHM7 ICAvKiBpZiAoaSA9PSBkYmxlbikgbWFzayA9IDAgKi8KLS0gICAgICAgIHRvW2ldID0gY29uc3Rh bnRfdGltZV9zZWxlY3RfOChtYXNrLCBmcm9tW2ldLCB0b1tpXSk7Ci0rICAgIHRsZW4gPSBjb25z dGFudF90aW1lX3NlbGVjdF9pbnQoY29uc3RhbnRfdGltZV9sdChkYmxlbiAtIG1kbGVuIC0gMSwg dGxlbiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJsZW4gLSBtZGxl biAtIDEsIHRsZW4pOwotKyAgICBmb3IgKG1zZ19pbmRleCA9IDE7IG1zZ19pbmRleCA8IGRibGVu IC0gbWRsZW4gLSAxOyBtc2dfaW5kZXggPDw9IDEpIHsKLSsgICAgICAgIG1hc2sgPSB+Y29uc3Rh bnRfdGltZV9lcShtc2dfaW5kZXggJiAoZGJsZW4gLSBtZGxlbiAtIDEgLSBtbGVuKSwgMCk7Ci0r ICAgICAgICBmb3IgKGkgPSBtZGxlbiArIDE7IGkgPCBkYmxlbiAtIG1zZ19pbmRleDsgaSsrKQot KyAgICAgICAgICAgIGRiW2ldID0gY29uc3RhbnRfdGltZV9zZWxlY3RfOChtYXNrLCBkYltpICsg bXNnX2luZGV4XSwgZGJbaV0pOwotKyAgICB9Ci0rICAgIGZvciAoaSA9IDA7IGkgPCB0bGVuOyBp KyspIHsKLSsgICAgICAgIG1hc2sgPSBnb29kICYgY29uc3RhbnRfdGltZV9sdChpLCBtbGVuKTsK LSsgICAgICAgIHRvW2ldID0gY29uc3RhbnRfdGltZV9zZWxlY3RfOChtYXNrLCBkYltpICsgbWRs ZW4gKyAxXSwgdG9baV0pOwotICAgICB9Ci0gCi0gICAgIC8qCi1kaWZmIC11cCBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vcnNhL3JzYV9vc3NsLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNh L3JzYV9vc3NsLmMKLS0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9vc3NsLmMuc3lu YwkyMDE5LTA1LTAzIDA4OjU1OjQ1LjE5MTUxNTg2NCArMDIwMAotKysrIG9wZW5zc2wtMS4xLjFi L2NyeXB0by9yc2EvcnNhX29zc2wuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU0ODQwNjcyOCArMDIw MAotQEAgLTE3NCw4ICsxNzQsNyBAQCBzdGF0aWMgaW50IHJzYV9vc3NsX3B1YmxpY19lbmNyeXB0 KGludCBmCi0gICAgICAqLwotICAgICByID0gQk5fYm4yYmlucGFkKHJldCwgdG8sIG51bSk7Ci0g IGVycjoKLS0gICAgaWYgKGN0eCAhPSBOVUxMKQotLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOwot KyAgICBCTl9DVFhfZW5kKGN0eCk7Ci0gICAgIEJOX0NUWF9mcmVlKGN0eCk7Ci0gICAgIE9QRU5T U0xfY2xlYXJfZnJlZShidWYsIG51bSk7Ci0gICAgIHJldHVybiByOwotQEAgLTM5Niw4ICszOTUs NyBAQCBzdGF0aWMgaW50IHJzYV9vc3NsX3ByaXZhdGVfZW5jcnlwdChpbnQKLSAgICAgICovCi0g ICAgIHIgPSBCTl9ibjJiaW5wYWQocmVzLCB0bywgbnVtKTsKLSAgZXJyOgotLSAgICBpZiAoY3R4 ICE9IE5VTEwpCi0tICAgICAgICBCTl9DVFhfZW5kKGN0eCk7Ci0rICAgIEJOX0NUWF9lbmQoY3R4 KTsKLSAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKLSAgICAgT1BFTlNTTF9jbGVhcl9mcmVlKGJ1Ziwg bnVtKTsKLSAgICAgcmV0dXJuIHI7Ci1AQCAtNTM5LDExICs1MzcsMTAgQEAgc3RhdGljIGludCBy c2Ffb3NzbF9wcml2YXRlX2RlY3J5cHQoaW50Ci0gICAgICAgICBnb3RvIGVycjsKLSAgICAgfQot ICAgICBSU0FlcnIoUlNBX0ZfUlNBX09TU0xfUFJJVkFURV9ERUNSWVBULCBSU0FfUl9QQURESU5H X0NIRUNLX0ZBSUxFRCk7Ci0tICAgIGVycl9jbGVhcl9sYXN0X2NvbnN0YW50X3RpbWUociA+PSAw KTsKLSsgICAgZXJyX2NsZWFyX2xhc3RfY29uc3RhbnRfdGltZSgxICYgfmNvbnN0YW50X3RpbWVf bXNiKHIpKTsKLSAKLSAgZXJyOgotLSAgICBpZiAoY3R4ICE9IE5VTEwpCi0tICAgICAgICBCTl9D VFhfZW5kKGN0eCk7Ci0rICAgIEJOX0NUWF9lbmQoY3R4KTsKLSAgICAgQk5fQ1RYX2ZyZWUoY3R4 KTsKLSAgICAgT1BFTlNTTF9jbGVhcl9mcmVlKGJ1ZiwgbnVtKTsKLSAgICAgcmV0dXJuIHI7Ci1A QCAtNjU1LDggKzY1Miw3IEBAIHN0YXRpYyBpbnQgcnNhX29zc2xfcHVibGljX2RlY3J5cHQoaW50 IGYKLSAgICAgICAgIFJTQWVycihSU0FfRl9SU0FfT1NTTF9QVUJMSUNfREVDUllQVCwgUlNBX1Jf UEFERElOR19DSEVDS19GQUlMRUQpOwotIAotICBlcnI6Ci0tICAgIGlmIChjdHggIT0gTlVMTCkK LS0gICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKLSsgICAgQk5fQ1RYX2VuZChjdHgpOwotICAgICBC Tl9DVFhfZnJlZShjdHgpOwotICAgICBPUEVOU1NMX2NsZWFyX2ZyZWUoYnVmLCBudW0pOwotICAg ICByZXR1cm4gcjsKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX3BrMS5j LnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfcGsxLmMKLS0tLSBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vcnNhL3JzYV9wazEuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAw MDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfcGsxLmMJMjAxOS0w NS0wMyAwODo1NTo1MS41NDk0MDY3MTEgKzAyMDAKLUBAIC0xLDUgKzEsNSBAQAotIC8qCi0tICog Q29weXJpZ2h0IDE5OTUtMjAxOCBUaGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMuIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCi0rICogQ29weXJpZ2h0IDE5OTUtMjAxOSBUaGUgT3BlblNTTCBQcm9qZWN0 IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gICoKLSAgKiBMaWNlbnNlZCB1bmRlciB0 aGUgT3BlblNTTCBsaWNlbnNlICh0aGUgIkxpY2Vuc2UiKS4gIFlvdSBtYXkgbm90IHVzZQotICAq IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IGNh biBvYnRhaW4gYSBjb3B5Ci1AQCAtMTkyLDE1ICsxOTIsMTQgQEAgaW50IFJTQV9wYWRkaW5nX2No ZWNrX1BLQ1MxX3R5cGVfMih1bnNpZwotICAgICAgICAgZnJvbSAtPSAxICYgbWFzazsKLSAgICAg ICAgICotLWVtID0gKmZyb20gJiBtYXNrOwotICAgICB9Ci0tICAgIGZyb20gPSBlbTsKLSAKLS0g ICAgZ29vZCA9IGNvbnN0YW50X3RpbWVfaXNfemVybyhmcm9tWzBdKTsKLS0gICAgZ29vZCAmPSBj b25zdGFudF90aW1lX2VxKGZyb21bMV0sIDIpOwotKyAgICBnb29kID0gY29uc3RhbnRfdGltZV9p c196ZXJvKGVtWzBdKTsKLSsgICAgZ29vZCAmPSBjb25zdGFudF90aW1lX2VxKGVtWzFdLCAyKTsK LSAKLSAgICAgLyogc2NhbiBvdmVyIHBhZGRpbmcgZGF0YSAqLwotICAgICBmb3VuZF96ZXJvX2J5 dGUgPSAwOwotICAgICBmb3IgKGkgPSAyOyBpIDwgbnVtOyBpKyspIHsKLS0gICAgICAgIHVuc2ln bmVkIGludCBlcXVhbHMwID0gY29uc3RhbnRfdGltZV9pc196ZXJvKGZyb21baV0pOwotKyAgICAg ICAgdW5zaWduZWQgaW50IGVxdWFsczAgPSBjb25zdGFudF90aW1lX2lzX3plcm8oZW1baV0pOwot IAotICAgICAgICAgemVyb19pbmRleCA9IGNvbnN0YW50X3RpbWVfc2VsZWN0X2ludCh+Zm91bmRf emVyb19ieXRlICYgZXF1YWxzMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaSwgemVyb19pbmRleCk7Ci1AQCAtMjA4LDcgKzIwNyw3IEBAIGludCBSU0Ff cGFkZGluZ19jaGVja19QS0NTMV90eXBlXzIodW5zaWcKLSAgICAgfQotIAotICAgICAvKgotLSAg ICAgKiBQUyBtdXN0IGJlIGF0IGxlYXN0IDggYnl0ZXMgbG9uZywgYW5kIGl0IHN0YXJ0cyB0d28g Ynl0ZXMgaW50byB8ZnJvbXwuCi0rICAgICAqIFBTIG11c3QgYmUgYXQgbGVhc3QgOCBieXRlcyBs b25nLCBhbmQgaXQgc3RhcnRzIHR3byBieXRlcyBpbnRvIHxlbXwuCi0gICAgICAqIElmIHdlIG5l dmVyIGZvdW5kIGEgMC1ieXRlLCB0aGVuIHx6ZXJvX2luZGV4fCBpcyAwIGFuZCB0aGUgY2hlY2sK LSAgICAgICogYWxzbyBmYWlscy4KLSAgICAgICovCi1AQCAtMjI3LDI0ICsyMjYsMjUgQEAgaW50 IFJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX3R5cGVfMih1bnNpZwotICAgICBnb29kICY9IGNvbnN0 YW50X3RpbWVfZ2UodGxlbiwgbWxlbik7Ci0gCi0gICAgIC8qCi0tICAgICAqIEV2ZW4gdGhvdWdo IHdlIGNhbid0IGZha2UgcmVzdWx0J3MgbGVuZ3RoLCB3ZSBjYW4gcHJldGVuZCBjb3B5aW5nCi0t ICAgICAqIHx0bGVufCBieXRlcyB3aGVyZSB8bWxlbnwgYnl0ZXMgd291bGQgYmUgcmVhbC4gTGFz dCB8dGxlbnwgb2YgfG51bXwKLS0gICAgICogYnl0ZXMgYXJlIHZpZXdlZCBhcyBjaXJjdWxhciBi dWZmZXIgd2l0aCBzdGFydCBhdCB8dGxlbnwtfG1sZW4nfCwKLS0gICAgICogd2hlcmUgfG1sZW4n fCBpcyAic2F0dXJhdGVkIiB8bWxlbnwgdmFsdWUuIERlZHVjaW5nIGluZm9ybWF0aW9uCi0tICAg ICAqIGFib3V0IGZhaWx1cmUgb3IgfG1sZW58IHdvdWxkIHRha2UgYXR0YWNrZXIncyBhYmlsaXR5 IHRvIG9ic2VydmUKLS0gICAgICogbWVtb3J5IGFjY2VzcyBwYXR0ZXJuIHdpdGggYnl0ZSBncmFu dWxhcml0eSAqYXMgaXQgb2NjdXJzKi4gSXQKLS0gICAgICogc2hvdWxkIGJlIG5vdGVkIHRoYXQg ZmFpbHVyZSBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIG5vcm1hbAotLSAgICAgKiBvcGVyYXRp b24gaWYgfHRsZW58IGlzIGZpeGVkIGJ5IHByb3RvY29sLgotLSAgICAgKi8KLS0gICAgdGxlbiA9 IGNvbnN0YW50X3RpbWVfc2VsZWN0X2ludChjb25zdGFudF90aW1lX2x0KG51bSwgdGxlbiksIG51 bSwgdGxlbik7Ci0tICAgIG1zZ19pbmRleCA9IGNvbnN0YW50X3RpbWVfc2VsZWN0X2ludChnb29k LCBtc2dfaW5kZXgsIG51bSAtIHRsZW4pOwotLSAgICBtbGVuID0gbnVtIC0gbXNnX2luZGV4Owot LSAgICBmb3IgKGZyb20gKz0gbXNnX2luZGV4LCBtYXNrID0gZ29vZCwgaSA9IDA7IGkgPCB0bGVu OyBpKyspIHsKLS0gICAgICAgIHVuc2lnbmVkIGludCBlcXVhbHMgPSBjb25zdGFudF90aW1lX2Vx KGksIG1sZW4pOwotLQotLSAgICAgICAgZnJvbSAtPSB0bGVuICYgZXF1YWxzOyAgLyogaWYgKGkg PT0gbWxlbikgcmV3aW5kICAgKi8KLS0gICAgICAgIG1hc2sgJj0gbWFzayBeIGVxdWFsczsgIC8q IGlmIChpID09IG1sZW4pIG1hc2sgPSAwICovCi0tICAgICAgICB0b1tpXSA9IGNvbnN0YW50X3Rp bWVfc2VsZWN0XzgobWFzaywgZnJvbVtpXSwgdG9baV0pOwotKyAgICAgKiBNb3ZlIHRoZSByZXN1 bHQgaW4tcGxhY2UgYnkgfG51bXwtMTEtfG1sZW58IGJ5dGVzIHRvIHRoZSBsZWZ0LgotKyAgICAg KiBUaGVuIGlmIHxnb29kfCBtb3ZlIHxtbGVufCBieXRlcyBmcm9tIHxlbXwrMTEgdG8gfHRvfC4K LSsgICAgICogT3RoZXJ3aXNlIGxlYXZlIHx0b3wgdW5jaGFuZ2VkLgotKyAgICAgKiBDb3B5IHRo ZSBtZW1vcnkgYmFjayBpbiBhIHdheSB0aGF0IGRvZXMgbm90IHJldmVhbCB0aGUgc2l6ZSBvZgot KyAgICAgKiB0aGUgZGF0YSBiZWluZyBjb3BpZWQgdmlhIGEgdGltaW5nIHNpZGUgY2hhbm5lbC4g VGhpcyByZXF1aXJlcyBjb3B5aW5nCi0rICAgICAqIHBhcnRzIG9mIHRoZSBidWZmZXIgbXVsdGlw bGUgdGltZXMgYmFzZWQgb24gdGhlIGJpdHMgc2V0IGluIHRoZSByZWFsCi0rICAgICAqIGxlbmd0 aC4gQ2xlYXIgYml0cyBkbyBhIG5vbi1jb3B5IHdpdGggaWRlbnRpY2FsIGFjY2VzcyBwYXR0ZXJu LgotKyAgICAgKiBUaGUgbG9vcCBiZWxvdyBoYXMgb3ZlcmFsbCBjb21wbGV4aXR5IG9mIE8oTips b2coTikpLgotKyAgICAgKi8KLSsgICAgdGxlbiA9IGNvbnN0YW50X3RpbWVfc2VsZWN0X2ludChj b25zdGFudF90aW1lX2x0KG51bSAtIDExLCB0bGVuKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBudW0gLSAxMSwgdGxlbik7Ci0rICAgIGZvciAobXNnX2luZGV4ID0gMTsg bXNnX2luZGV4IDwgbnVtIC0gMTE7IG1zZ19pbmRleCA8PD0gMSkgewotKyAgICAgICAgbWFzayA9 IH5jb25zdGFudF90aW1lX2VxKG1zZ19pbmRleCAmIChudW0gLSAxMSAtIG1sZW4pLCAwKTsKLSsg ICAgICAgIGZvciAoaSA9IDExOyBpIDwgbnVtIC0gbXNnX2luZGV4OyBpKyspCi0rICAgICAgICAg ICAgZW1baV0gPSBjb25zdGFudF90aW1lX3NlbGVjdF84KG1hc2ssIGVtW2kgKyBtc2dfaW5kZXhd LCBlbVtpXSk7Ci0rICAgIH0KLSsgICAgZm9yIChpID0gMDsgaSA8IHRsZW47IGkrKykgewotKyAg ICAgICAgbWFzayA9IGdvb2QgJiBjb25zdGFudF90aW1lX2x0KGksIG1sZW4pOwotKyAgICAgICAg dG9baV0gPSBjb25zdGFudF90aW1lX3NlbGVjdF84KG1hc2ssIGVtW2kgKyAxMV0sIHRvW2ldKTsK LSAgICAgfQotIAotICAgICBPUEVOU1NMX2NsZWFyX2ZyZWUoZW0sIG51bSk7Ci1kaWZmIC11cCBv cGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9wbWV0aC5jLnN5bmMgb3BlbnNzbC0xLjEuMWIv Y3J5cHRvL3JzYS9yc2FfcG1ldGguYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNh X3BtZXRoLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX3BtZXRoLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41 NDM0MDY4MTQgKzAyMDAKLUBAIC0xLDUgKzEsNSBAQAotIC8qCi0tICogQ29weXJpZ2h0IDIwMDYt MjAxOCBUaGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0r ICogQ29weXJpZ2h0IDIwMDYtMjAxOSBUaGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMuIEFsbCBS aWdodHMgUmVzZXJ2ZWQuCi0gICoKLSAgKiBMaWNlbnNlZCB1bmRlciB0aGUgT3BlblNTTCBsaWNl bnNlICh0aGUgIkxpY2Vuc2UiKS4gIFlvdSBtYXkgbm90IHVzZQotICAqIHRoaXMgZmlsZSBleGNl cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IGNhbiBvYnRhaW4gYSBjb3B5 Ci1AQCAtNyw2ICs3LDggQEAKLSAgKiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGlj ZW5zZS5odG1sCi0gICovCi0gCi0rI2luY2x1ZGUgImludGVybmFsL2NvbnN0YW50X3RpbWVfbG9j bC5oIgotKwotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlICJpbnRlcm5hbC9jcnlwdGxp Yi5oIgotICNpbmNsdWRlIDxvcGVuc3NsL2FzbjF0Lmg+Ci1AQCAtMzQwLDEwICszNDIsOSBAQCBz dGF0aWMgaW50IHBrZXlfcnNhX2RlY3J5cHQoRVZQX1BLRVlfQ1RYCi0gICAgICAgICByZXQgPSBS U0FfcHJpdmF0ZV9kZWNyeXB0KGlubGVuLCBpbiwgb3V0LCBjdHgtPnBrZXktPnBrZXkucnNhLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY3R4LT5wYWRfbW9kZSk7Ci0gICAg IH0KLS0gICAgaWYgKHJldCA8IDApCi0tICAgICAgICByZXR1cm4gcmV0OwotLSAgICAqb3V0bGVu ID0gcmV0OwotLSAgICByZXR1cm4gMTsKLSsgICAgKm91dGxlbiA9IGNvbnN0YW50X3RpbWVfc2Vs ZWN0X3MoY29uc3RhbnRfdGltZV9tc2JfcyhyZXQpLCAqb3V0bGVuLCByZXQpOwotKyAgICByZXQg PSBjb25zdGFudF90aW1lX3NlbGVjdF9pbnQoY29uc3RhbnRfdGltZV9tc2IocmV0KSwgcmV0LCAx KTsKLSsgICAgcmV0dXJuIHJldDsKLSB9Ci0gCi0gc3RhdGljIGludCBjaGVja19wYWRkaW5nX21k KGNvbnN0IEVWUF9NRCAqbWQsIGludCBwYWRkaW5nKQotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIv Y3J5cHRvL3JzYS9yc2Ffc3NsLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9z c2wuYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX3NzbC5jLnN5bmMJMjAxOS0w Mi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8v cnNhL3JzYV9zc2wuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU1MDQwNjY5NCArMDIwMAotQEAgLTEs NSArMSw1IEBACi0gLyoKLS0gKiBDb3B5cmlnaHQgMTk5NS0yMDE4IFRoZSBPcGVuU1NMIFByb2pl Y3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSsgKiBDb3B5cmlnaHQgMTk5NS0yMDE5 IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAgKgot ICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBPcGVuU1NMIGxpY2Vuc2UgKHRoZSAiTGljZW5zZSIpLiAg WW91IG1heSBub3QgdXNlCi0gICogdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg dGhlIExpY2Vuc2UuICBZb3UgY2FuIG9idGFpbiBhIGNvcHkKLUBAIC01NSw3ICs1NSw3IEBAIGlu dCBSU0FfcGFkZGluZ19hZGRfU1NMdjIzKHVuc2lnbmVkIGNoYXIKLSAKLSAvKgotICAqIENvcHkg b2YgUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8yIHdpdGggYSB0d2lzdCB0aGF0IHJlamVj dHMgcGFkZGluZwotLSAqIGlmIG51bCBkZWxpbWl0ZXIgaXMgcHJlY2VkZWQgYnkgOCBjb25zZWN1 dGl2ZSAweDAzIGJ5dGVzLiBJdCBhbHNvCi0rICogaWYgbnVsIGRlbGltaXRlciBpcyBub3QgcHJl Y2VkZWQgYnkgOCBjb25zZWN1dGl2ZSAweDAzIGJ5dGVzLiBJdCBhbHNvCi0gICogcHJlc2VydmVz IGVycm9yIGNvZGUgcmVwb3J0aW5nIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgotICAqLwot IGludCBSU0FfcGFkZGluZ19jaGVja19TU0x2MjModW5zaWduZWQgY2hhciAqdG8sIGludCB0bGVu LAotQEAgLTY3LDcgKzY3LDEwIEBAIGludCBSU0FfcGFkZGluZ19jaGVja19TU0x2MjModW5zaWdu ZWQgY2gKLSAgICAgdW5zaWduZWQgaW50IGdvb2QsIGZvdW5kX3plcm9fYnl0ZSwgbWFzaywgdGhy ZWVzX2luX3JvdzsKLSAgICAgaW50IHplcm9faW5kZXggPSAwLCBtc2dfaW5kZXgsIG1sZW4gPSAt MSwgZXJyOwotIAotLSAgICBpZiAoZmxlbiA8IDEwKSB7Ci0rICAgIGlmICh0bGVuIDw9IDAgfHwg ZmxlbiA8PSAwKQotKyAgICAgICAgcmV0dXJuIC0xOwotKwotKyAgICBpZiAoZmxlbiA+IG51bSB8 fCBudW0gPCAxMSkgewotICAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9QQURESU5HX0NIRUNLX1NT TFYyMywgUlNBX1JfREFUQV9UT09fU01BTEwpOwotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9 Ci1AQCAtODksMTAgKzkyLDkgQEAgaW50IFJTQV9wYWRkaW5nX2NoZWNrX1NTTHYyMyh1bnNpZ25l ZCBjaAotICAgICAgICAgZnJvbSAtPSAxICYgbWFzazsKLSAgICAgICAgICotLWVtID0gKmZyb20g JiBtYXNrOwotICAgICB9Ci0tICAgIGZyb20gPSBlbTsKLSAKLS0gICAgZ29vZCA9IGNvbnN0YW50 X3RpbWVfaXNfemVybyhmcm9tWzBdKTsKLS0gICAgZ29vZCAmPSBjb25zdGFudF90aW1lX2VxKGZy b21bMV0sIDIpOwotKyAgICBnb29kID0gY29uc3RhbnRfdGltZV9pc196ZXJvKGVtWzBdKTsKLSsg ICAgZ29vZCAmPSBjb25zdGFudF90aW1lX2VxKGVtWzFdLCAyKTsKLSAgICAgZXJyID0gY29uc3Rh bnRfdGltZV9zZWxlY3RfaW50KGdvb2QsIDAsIFJTQV9SX0JMT0NLX1RZUEVfSVNfTk9UXzAyKTsK LSAgICAgbWFzayA9IH5nb29kOwotIAotQEAgLTEwMCwxOCArMTAyLDE4IEBAIGludCBSU0FfcGFk ZGluZ19jaGVja19TU0x2MjModW5zaWduZWQgY2gKLSAgICAgZm91bmRfemVyb19ieXRlID0gMDsK LSAgICAgdGhyZWVzX2luX3JvdyA9IDA7Ci0gICAgIGZvciAoaSA9IDI7IGkgPCBudW07IGkrKykg ewotLSAgICAgICAgdW5zaWduZWQgaW50IGVxdWFsczAgPSBjb25zdGFudF90aW1lX2lzX3plcm8o ZnJvbVtpXSk7Ci0rICAgICAgICB1bnNpZ25lZCBpbnQgZXF1YWxzMCA9IGNvbnN0YW50X3RpbWVf aXNfemVybyhlbVtpXSk7Ci0gCi0gICAgICAgICB6ZXJvX2luZGV4ID0gY29uc3RhbnRfdGltZV9z ZWxlY3RfaW50KH5mb3VuZF96ZXJvX2J5dGUgJiBlcXVhbHMwLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCB6ZXJvX2luZGV4KTsKLSAgICAgICAgIGZv dW5kX3plcm9fYnl0ZSB8PSBlcXVhbHMwOwotIAotICAgICAgICAgdGhyZWVzX2luX3JvdyArPSAx ICYgfmZvdW5kX3plcm9fYnl0ZTsKLS0gICAgICAgIHRocmVlc19pbl9yb3cgJj0gZm91bmRfemVy b19ieXRlIHwgY29uc3RhbnRfdGltZV9lcShmcm9tW2ldLCAzKTsKLSsgICAgICAgIHRocmVlc19p bl9yb3cgJj0gZm91bmRfemVyb19ieXRlIHwgY29uc3RhbnRfdGltZV9lcShlbVtpXSwgMyk7Ci0g ICAgIH0KLSAKLSAgICAgLyoKLS0gICAgICogUFMgbXVzdCBiZSBhdCBsZWFzdCA4IGJ5dGVzIGxv bmcsIGFuZCBpdCBzdGFydHMgdHdvIGJ5dGVzIGludG8gfGZyb218LgotKyAgICAgKiBQUyBtdXN0 IGJlIGF0IGxlYXN0IDggYnl0ZXMgbG9uZywgYW5kIGl0IHN0YXJ0cyB0d28gYnl0ZXMgaW50byB8 ZW18LgotICAgICAgKiBJZiB3ZSBuZXZlciBmb3VuZCBhIDAtYnl0ZSwgdGhlbiB8emVyb19pbmRl eHwgaXMgMCBhbmQgdGhlIGNoZWNrCi0gICAgICAqIGFsc28gZmFpbHMuCi0gICAgICAqLwotQEAg LTEyMCw3ICsxMjIsNyBAQCBpbnQgUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzKHVuc2lnbmVkIGNo Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUl9OVUxMX0JFRk9SRV9C TE9DS19NSVNTSU5HKTsKLSAgICAgbWFzayA9IH5nb29kOwotIAotLSAgICBnb29kICY9IGNvbnN0 YW50X3RpbWVfbHQodGhyZWVzX2luX3JvdywgOCk7Ci0rICAgIGdvb2QgJj0gY29uc3RhbnRfdGlt ZV9nZSh0aHJlZXNfaW5fcm93LCA4KTsKLSAgICAgZXJyID0gY29uc3RhbnRfdGltZV9zZWxlY3Rf aW50KG1hc2sgfCBnb29kLCBlcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSU0FfUl9TU0xWM19ST0xMQkFDS19BVFRBQ0spOwotICAgICBtYXNrID0gfmdvb2Q7Ci1AQCAt MTM5LDI0ICsxNDEsMjUgQEAgaW50IFJTQV9wYWRkaW5nX2NoZWNrX1NTTHYyMyh1bnNpZ25lZCBj aAotICAgICBlcnIgPSBjb25zdGFudF90aW1lX3NlbGVjdF9pbnQobWFzayB8IGdvb2QsIGVyciwg UlNBX1JfREFUQV9UT09fTEFSR0UpOwotIAotICAgICAvKgotLSAgICAgKiBFdmVuIHRob3VnaCB3 ZSBjYW4ndCBmYWtlIHJlc3VsdCdzIGxlbmd0aCwgd2UgY2FuIHByZXRlbmQgY29weWluZwotLSAg ICAgKiB8dGxlbnwgYnl0ZXMgd2hlcmUgfG1sZW58IGJ5dGVzIHdvdWxkIGJlIHJlYWwuIExhc3Qg fHRsZW58IG9mIHxudW18Ci0tICAgICAqIGJ5dGVzIGFyZSB2aWV3ZWQgYXMgY2lyY3VsYXIgYnVm ZmVyIHdpdGggc3RhcnQgYXQgfHRsZW58LXxtbGVuJ3wsCi0tICAgICAqIHdoZXJlIHxtbGVuJ3wg aXMgInNhdHVyYXRlZCIgfG1sZW58IHZhbHVlLiBEZWR1Y2luZyBpbmZvcm1hdGlvbgotLSAgICAg KiBhYm91dCBmYWlsdXJlIG9yIHxtbGVufCB3b3VsZCB0YWtlIGF0dGFja2VyJ3MgYWJpbGl0eSB0 byBvYnNlcnZlCi0tICAgICAqIG1lbW9yeSBhY2Nlc3MgcGF0dGVybiB3aXRoIGJ5dGUgZ3JhbnVs YXJpdHkgKmFzIGl0IG9jY3VycyouIEl0Ci0tICAgICAqIHNob3VsZCBiZSBub3RlZCB0aGF0IGZh aWx1cmUgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBub3JtYWwKLS0gICAgICogb3BlcmF0aW9u IGlmIHx0bGVufCBpcyBmaXhlZCBieSBwcm90b2NvbC4KLSsgICAgICogTW92ZSB0aGUgcmVzdWx0 IGluLXBsYWNlIGJ5IHxudW18LTExLXxtbGVufCBieXRlcyB0byB0aGUgbGVmdC4KLSsgICAgICog VGhlbiBpZiB8Z29vZHwgbW92ZSB8bWxlbnwgYnl0ZXMgZnJvbSB8ZW18KzExIHRvIHx0b3wuCi0r ICAgICAqIE90aGVyd2lzZSBsZWF2ZSB8dG98IHVuY2hhbmdlZC4KLSsgICAgICogQ29weSB0aGUg bWVtb3J5IGJhY2sgaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCByZXZlYWwgdGhlIHNpemUgb2YKLSsg ICAgICogdGhlIGRhdGEgYmVpbmcgY29waWVkIHZpYSBhIHRpbWluZyBzaWRlIGNoYW5uZWwuIFRo aXMgcmVxdWlyZXMgY29weWluZwotKyAgICAgKiBwYXJ0cyBvZiB0aGUgYnVmZmVyIG11bHRpcGxl IHRpbWVzIGJhc2VkIG9uIHRoZSBiaXRzIHNldCBpbiB0aGUgcmVhbAotKyAgICAgKiBsZW5ndGgu IENsZWFyIGJpdHMgZG8gYSBub24tY29weSB3aXRoIGlkZW50aWNhbCBhY2Nlc3MgcGF0dGVybi4K LSsgICAgICogVGhlIGxvb3AgYmVsb3cgaGFzIG92ZXJhbGwgY29tcGxleGl0eSBvZiBPKE4qbG9n KE4pKS4KLSAgICAgICovCi0tICAgIHRsZW4gPSBjb25zdGFudF90aW1lX3NlbGVjdF9pbnQoY29u c3RhbnRfdGltZV9sdChudW0sIHRsZW4pLCBudW0sIHRsZW4pOwotLSAgICBtc2dfaW5kZXggPSBj b25zdGFudF90aW1lX3NlbGVjdF9pbnQoZ29vZCwgbXNnX2luZGV4LCBudW0gLSB0bGVuKTsKLS0g ICAgbWxlbiA9IG51bSAtIG1zZ19pbmRleDsKLS0gICAgZm9yIChmcm9tICs9IG1zZ19pbmRleCwg bWFzayA9IGdvb2QsIGkgPSAwOyBpIDwgdGxlbjsgaSsrKSB7Ci0tICAgICAgICB1bnNpZ25lZCBp bnQgZXF1YWxzID0gY29uc3RhbnRfdGltZV9lcShpLCBtbGVuKTsKLS0KLS0gICAgICAgIGZyb20g LT0gdGxlbiAmIGVxdWFsczsgIC8qIGlmIChpID09IG1sZW4pIHJld2luZCAgICovCi0tICAgICAg ICBtYXNrICY9IG1hc2sgXiBlcXVhbHM7ICAvKiBpZiAoaSA9PSBtbGVuKSBtYXNrID0gMCAqLwot LSAgICAgICAgdG9baV0gPSBjb25zdGFudF90aW1lX3NlbGVjdF84KG1hc2ssIGZyb21baV0sIHRv W2ldKTsKLSsgICAgdGxlbiA9IGNvbnN0YW50X3RpbWVfc2VsZWN0X2ludChjb25zdGFudF90aW1l X2x0KG51bSAtIDExLCB0bGVuKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudW0gLSAxMSwgdGxlbik7Ci0rICAgIGZvciAobXNnX2luZGV4ID0gMTsgbXNnX2luZGV4IDwg bnVtIC0gMTE7IG1zZ19pbmRleCA8PD0gMSkgewotKyAgICAgICAgbWFzayA9IH5jb25zdGFudF90 aW1lX2VxKG1zZ19pbmRleCAmIChudW0gLSAxMSAtIG1sZW4pLCAwKTsKLSsgICAgICAgIGZvciAo aSA9IDExOyBpIDwgbnVtIC0gbXNnX2luZGV4OyBpKyspCi0rICAgICAgICAgICAgZW1baV0gPSBj b25zdGFudF90aW1lX3NlbGVjdF84KG1hc2ssIGVtW2kgKyBtc2dfaW5kZXhdLCBlbVtpXSk7Ci0r ICAgIH0KLSsgICAgZm9yIChpID0gMDsgaSA8IHRsZW47IGkrKykgewotKyAgICAgICAgbWFzayA9 IGdvb2QgJiBjb25zdGFudF90aW1lX2x0KGksIG1sZW4pOwotKyAgICAgICAgdG9baV0gPSBjb25z dGFudF90aW1lX3NlbGVjdF84KG1hc2ssIGVtW2kgKyAxMV0sIHRvW2ldKTsKLSAgICAgfQotIAot ICAgICBPUEVOU1NMX2NsZWFyX2ZyZWUoZW0sIG51bSk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4x Yi9jcnlwdG8vcnNhL3JzYV94OTMxZy5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9y c2FfeDkzMWcuYwotLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX3g5MzFnLmMuc3lu YwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFi L2NyeXB0by9yc2EvcnNhX3g5MzFnLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41MzA0MDcwMzcgKzAy MDAKLUBAIC0xMzMsOCArMTMzLDcgQEAgaW50IFJTQV9YOTMxX2Rlcml2ZV9leChSU0EgKnJzYSwg QklHTlVNCi0gCi0gICAgIHJldCA9IDE7Ci0gIGVycjoKLS0gICAgaWYgKGN0eCkKLS0gICAgICAg IEJOX0NUWF9lbmQoY3R4KTsKLSsgICAgQk5fQ1RYX2VuZChjdHgpOwotICAgICBCTl9DVFhfZnJl ZShjdHgpOwotICAgICBCTl9DVFhfZnJlZShjdHgyKTsKLSAKLUBAIC0xODgsOCArMTg3LDcgQEAg aW50IFJTQV9YOTMxX2dlbmVyYXRlX2tleV9leChSU0EgKnJzYSwgaQotICAgICBvayA9IDE7Ci0g Ci0gIGVycm9yOgotLSAgICBpZiAoY3R4KQotLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOwotKyAg ICBCTl9DVFhfZW5kKGN0eCk7Ci0gICAgIEJOX0NUWF9mcmVlKGN0eCk7Ci0gCi0gICAgIGlmIChv aykKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by94NTA5L3g1MDlfbHUuYy5zeW5jIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by94NTA5L3g1MDlfbHUuYwotLS0tIG9wZW5zc2wtMS4xLjFiL2Ny eXB0by94NTA5L3g1MDlfbHUuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICsw MTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3g1MDkveDUwOV9sdS5jCTIwMTktMDUtMDMg MDg6NTU6NTEuNTQ2NDA2NzYyICswMjAwCi1AQCAtMjk3LDYgKzI5Nyw5IEBAIGludCBYNTA5X1NU T1JFX0NUWF9nZXRfYnlfc3ViamVjdChYNTA5X1MKLSAgICAgaWYgKGN0eCA9PSBOVUxMKQotICAg ICAgICAgcmV0dXJuIDA7Ci0gCi0rICAgIHN0bXAudHlwZSA9IFg1MDlfTFVfTk9ORTsKLSsgICAg c3RtcC5kYXRhLnB0ciA9IE5VTEw7Ci0rCi0gICAgIENSWVBUT19USFJFQURfd3JpdGVfbG9jayhj dHgtPmxvY2spOwotICAgICB0bXAgPSBYNTA5X09CSkVDVF9yZXRyaWV2ZV9ieV9zdWJqZWN0KGN0 eC0+b2JqcywgdHlwZSwgbmFtZSk7Ci0gICAgIENSWVBUT19USFJFQURfdW5sb2NrKGN0eC0+bG9j ayk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMS9wa2V5dXRsLnBvZC5zeW5jIG9w ZW5zc2wtMS4xLjFiL2RvYy9tYW4xL3BrZXl1dGwucG9kCi0tLS0gb3BlbnNzbC0xLjEuMWIvZG9j L21hbjEvcGtleXV0bC5wb2Quc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEw MAotKysrIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4xL3BrZXl1dGwucG9kCTIwMTktMDUtMDMgMDg6 NTU6NTEuNTU1NDA2NjA4ICswMjAwCi1AQCAtMjcyLDIwICsyNzIsMTkgQEAgdmFsdWUgbGVzcyB0 aGFuIHRoZSBtaW5pbXVtIHJlc3RyaWN0aW9uLgotID1oZWFkMSBEU0EgQUxHT1JJVEhNCi0gCi0g VGhlIERTQSBhbGdvcml0aG0gc3VwcG9ydHMgc2lnbmluZyBhbmQgdmVyaWZpY2F0aW9uIG9wZXJh dGlvbnMgb25seS4gQ3VycmVudGx5Ci0tdGhlcmUgYXJlIG5vIGFkZGl0aW9uYWwgb3B0aW9ucyBv dGhlciB0aGFuIEI8ZGlnZXN0Pi4gT25seSB0aGUgU0hBMQotLWRpZ2VzdCBjYW4gYmUgdXNlZCBh bmQgdGhpcyBkaWdlc3QgaXMgYXNzdW1lZCBieSBkZWZhdWx0LgotK3RoZXJlIGFyZSBubyBhZGRp dGlvbmFsIEI8LXBrZXlvcHQ+IG9wdGlvbnMgb3RoZXIgdGhhbiBCPGRpZ2VzdD4uIFRoZSBTSEEx Ci0rZGlnZXN0IGlzIGFzc3VtZWQgYnkgZGVmYXVsdC4KLSAKLSA9aGVhZDEgREggQUxHT1JJVEhN Ci0gCi0gVGhlIERIIGFsZ29yaXRobSBvbmx5IHN1cHBvcnRzIHRoZSBkZXJpdmF0aW9uIG9wZXJh dGlvbiBhbmQgbm8gYWRkaXRpb25hbAotLW9wdGlvbnMuCi0rQjwtcGtleW9wdD4gb3B0aW9ucy4K ICAKLSA9aGVhZDEgRUMgQUxHT1JJVEhNCisgI2lmbmRlZiBPUEVOU1NMX05PX0VSUgorLS8qIEEg bWVhc3VyZW1lbnQgb24gTGludXggMjAxOC0xMS0yMSBzaG93ZWQgYWJvdXQgMy41a2liICovCist IyBkZWZpbmUgU1BBQ0VfU1lTX1NUUl9SRUFTT05TIDQgKiAxMDI0CisrLyogMjAxOS0wNS0yMTog UnVzc2lhbiBhbmQgVWtyYWluaWFuIGxvY2FsZXMgb24gTGludXggcmVxdWlyZSBtb3JlIHRoYW4g Niw1IGtCICovCisrIyBkZWZpbmUgU1BBQ0VfU1lTX1NUUl9SRUFTT05TIDggKiAxMDI0CisgIyBk ZWZpbmUgTlVNX1NZU19TVFJfUkVBU09OUyAxMjcKICAKLSBUaGUgRUMgYWxnb3JpdGhtIHN1cHBv cnRzIHNpZ24sIHZlcmlmeSBhbmQgZGVyaXZlIG9wZXJhdGlvbnMuIFRoZSBzaWduIGFuZAotLXZl cmlmeSBvcGVyYXRpb25zIHVzZSBFQ0RTQSBhbmQgZGVyaXZlIHVzZXMgRUNESC4gQ3VycmVudGx5 IHRoZXJlIGFyZSBubwotLWFkZGl0aW9uYWwgb3B0aW9ucyBvdGhlciB0aGFuIEI8ZGlnZXN0Pi4g T25seSB0aGUgU0hBMSBkaWdlc3QgY2FuIGJlIHVzZWQgYW5kCi0tdGhpcyBkaWdlc3QgaXMgYXNz dW1lZCBieSBkZWZhdWx0LgotK3ZlcmlmeSBvcGVyYXRpb25zIHVzZSBFQ0RTQSBhbmQgZGVyaXZl IHVzZXMgRUNESC4gU0hBMSBpcyBhc3N1bWVkIGJ5IGRlZmF1bHQgZm9yCi0rdGhlIEI8LXBrZXlv cHQ+IEI8ZGlnZXN0PiBvcHRpb24uCisgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBTWVNfc3RyX3Jl YXNvbnNbTlVNX1NZU19TVFJfUkVBU09OUyArIDFdOworQEAgLTIxOSwyNiArMjE5LDMwIEBAIHN0 YXRpYyB2b2lkIGJ1aWxkX1NZU19zdHJfcmVhc29ucyh2b2lkKQorICAgICAgICAgRVJSX1NUUklO R19EQVRBICpzdHIgPSAmU1lTX3N0cl9yZWFzb25zW2kgLSAxXTsKICAKLSA9aGVhZDEgWDI1NTE5 IGFuZCBYNDQ4IEFMR09SSVRITVMKLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4x L3RzLnBvZC5zeW5jIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4xL3RzLnBvZAotLS0tIG9wZW5zc2wt MS4xLjFiL2RvYy9tYW4xL3RzLnBvZC5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAw ICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjEvdHMucG9kCTIwMTktMDUtMDMgMDg6 NTU6NTEuNTU0NDA2NjI1ICswMjAwCi1AQCAtMjYyLDcgKzI2Miw3IEBAIHNwZWNpZmllZCwgdGhl IGFyZ3VtZW50IGlzIGdpdmVuIHRvIHRoZQotID1pdGVtIEI8LUk8ZGlnZXN0Pj4KLSAKLSBTaWdu aW5nIGRpZ2VzdCB0byB1c2UuIE92ZXJyaWRlcyB0aGUgQjxzaWduZXJfZGlnZXN0PiBjb25maWcg ZmlsZQotLW9wdGlvbi4gKE9wdGlvbmFsKQotK29wdGlvbi4gKE1hbmRhdG9yeSB1bmxlc3Mgc3Bl Y2lmaWVkIGluIHRoZSBjb25maWcgZmlsZSkKLSAKLSA9aXRlbSBCPC1jaGFpbj4gY2VydHNfZmls ZS5wZW0KLSAKLUBAIC00NjAsNyArNDYwLDggQEAgY29tbWFuZCBsaW5lIG9wdGlvbi4gKE9wdGlv bmFsKQotID1pdGVtIEI8c2lnbmVyX2RpZ2VzdD4KLSAKLSBTaWduaW5nIGRpZ2VzdCB0byB1c2Uu IFRoZSBzYW1lIGFzIHRoZQotLUI8LUk8ZGlnZXN0Pj4gY29tbWFuZCBsaW5lIG9wdGlvbi4gKE9w dGlvbmFsKQotK0I8LUk8ZGlnZXN0Pj4gY29tbWFuZCBsaW5lIG9wdGlvbi4gKE1hbmRhdG9yeSB1 bmxlc3Mgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kCi0rbGluZSkKLSAKLSA9aXRlbSBCPGRlZmF1 bHRfcG9saWN5PgotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvQklPX3NfbWVt LnBvZC5zeW5jIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL0JJT19zX21lbS5wb2QKLS0tLSBvcGVu c3NsLTEuMS4xYi9kb2MvbWFuMy9CSU9fc19tZW0ucG9kLnN5bmMJMjAxOS0wMi0yNiAxNToxNToz MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9CSU9fc19tZW0u cG9kCTIwMTktMDUtMDMgMDg6NTU6NTEuNTU2NDA2NTkxICswMjAwCi1AQCAtODgsNiArODgsMjIg QEAgYSBidWZmZXJpbmcgQklPIHRvIHRoZSBjaGFpbiB3aWxsIHNwZWVkCi0gQ2FsbGluZyBCSU9f c2V0X21lbV9idWYoKSBvbiBhIEJJTyBjcmVhdGVkIHdpdGggQklPX25ld19zZWNtZW0oKSB3aWxs Ci0gZ2l2ZSB1bmRlZmluZWQgcmVzdWx0cywgaW5jbHVkaW5nIHBlcmhhcHMgYSBwcm9ncmFtIGNy YXNoLgotIAotK1N3aXRjaGluZyB0aGUgbWVtb3J5IEJJTyBmcm9tIHJlYWQgd3JpdGUgdG8gcmVh ZCBvbmx5IGlzIG5vdCBzdXBwb3J0ZWQgYW5kCi0rY2FuIGdpdmUgdW5kZWZpbmVkIHJlc3VsdHMg aW5jbHVkaW5nIGEgcHJvZ3JhbSBjcmFzaC4gVGhlcmUgYXJlIHR3byBub3RhYmxlCi0rZXhjZXB0 aW9ucyB0byB0aGUgcnVsZS4gVGhlIGZpcnN0IG9uZSBpcyB0byBhc3NpZ24gYSBzdGF0aWMgbWVt b3J5IGJ1ZmZlcgotK2ltbWVkaWF0ZWx5IGFmdGVyIEJJTyBjcmVhdGlvbiBhbmQgc2V0IHRoZSBC SU8gYXMgcmVhZCBvbmx5LgotKwotK1RoZSBvdGhlciBzdXBwb3J0ZWQgc2VxdWVuY2UgaXMgdG8g c3RhcnQgd2l0aCByZWFkIHdyaXRlIEJJTyB0aGVuIHRlbXBvcmFyaWx5Ci0rc3dpdGNoIGl0IHRv IHJlYWQgb25seSBhbmQgY2FsbCBCSU9fcmVzZXQoKSBvbiB0aGUgcmVhZCBvbmx5IEJJTyBpbW1l ZGlhdGVseQotK2JlZm9yZSBzd2l0Y2hpbmcgaXQgYmFjayB0byByZWFkIHdyaXRlLiBCZWZvcmUg dGhlIEJJTyBpcyBmcmVlZCBpdCBtdXN0IGJlCi0rc3dpdGNoZWQgYmFjayB0byB0aGUgcmVhZCB3 cml0ZSBtb2RlLgotKwotK0NhbGxpbmcgQklPX2dldF9tZW1fcHRyKCkgb24gcmVhZCBvbmx5IEJJ TyB3aWxsIHJldHVybiBhIEJVRl9NRU0gdGhhdAotK2NvbnRhaW5zIG9ubHkgdGhlIHJlbWFpbmlu ZyBkYXRhIHRvIGJlIHJlYWQuIElmIHRoZSBjbG9zZSBzdGF0dXMgb2YgdGhlCi0rQklPIGlzIHNl dCB0byBCSU9fTk9DTE9TRSwgYmVmb3JlIGZyZWVpbmcgdGhlIEJVRl9NRU0gdGhlIGRhdGEgcG9p bnRlcgotK2luIGl0IG11c3QgYmUgc2V0IHRvIE5VTEwgYXMgdGhlIGRhdGEgcG9pbnRlciBkb2Vz IG5vdCBwb2ludCB0byBhbgotK2FsbG9jYXRlZCBtZW1vcnkuCi0rCi0gPWhlYWQxIEJVR1MKLSAK LSBUaGVyZSBzaG91bGQgYmUgYW4gb3B0aW9uIHRvIHNldCB0aGUgbWF4aW11bSBzaXplIG9mIGEg bWVtb3J5IEJJTy4KLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL0JOX0NUWF9zdGFy dC5wb2Quc3luYyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9CTl9DVFhfc3RhcnQucG9kCi0tLS0g b3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvQk5fQ1RYX3N0YXJ0LnBvZC5zeW5jCTIwMTktMDItMjYg MTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvQk5f Q1RYX3N0YXJ0LnBvZAkyMDE5LTA1LTAzIDA4OjU1OjUxLjU1NDQwNjYyNSArMDIwMAotQEAgLTI3 LDYgKzI3LDcgQEAgY2FsbHMgbXVzdCBiZSBtYWRlIGJlZm9yZSBjYWxsaW5nIGFueSBvdAotIEI8 Y3R4PiBhcyBhbiBhcmd1bWVudC4KLSAKLSBGaW5hbGx5LCBCTl9DVFhfZW5kKCkgbXVzdCBiZSBj YWxsZWQgYmVmb3JlIHJldHVybmluZyBmcm9tIHRoZSBmdW5jdGlvbi4KLStJZiBCPGN0eD4gaXMg TlVMTCwgbm90aGluZyBpcyBkb25lLgotIFdoZW4gQk5fQ1RYX2VuZCgpIGlzIGNhbGxlZCwgdGhl IEI8QklHTlVNPiBwb2ludGVycyBvYnRhaW5lZCBmcm9tCi0gQk5fQ1RYX2dldCgpIGJlY29tZSBp bnZhbGlkLgotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvQk5fbmV3LnBvZC5z eW5jIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL0JOX25ldy5wb2QKLS0tLSBvcGVuc3NsLTEuMS4x Yi9kb2MvbWFuMy9CTl9uZXcucG9kLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9CTl9uZXcucG9kCTIwMTktMDUtMDMg MDg6NTU6NTEuNTU0NDA2NjI1ICswMjAwCi1AQCAtMjcsNiArMjcsNyBAQCBPUEVOU1NMX3NlY3Vy ZV9tYWxsb2MoMykgaXMgdXNlZCB0byBzdG9yCi0gQk5fY2xlYXIoKSBpcyB1c2VkIHRvIGRlc3Ry b3kgc2Vuc2l0aXZlIGRhdGEgc3VjaCBhcyBrZXlzIHdoZW4gdGhleQotIGFyZSBubyBsb25nZXIg bmVlZGVkLiBJdCBlcmFzZXMgdGhlIG1lbW9yeSB1c2VkIGJ5IEI8YT4gYW5kIHNldHMgaXQKLSB0 byB0aGUgdmFsdWUgMC4KLStJZiBCPGE+IGlzIE5VTEwsIG5vdGhpbmcgaXMgZG9uZS4KLSAKLSBC Tl9mcmVlKCkgZnJlZXMgdGhlIGNvbXBvbmVudHMgb2YgdGhlIEI8QklHTlVNPiwgYW5kIGlmIGl0 IHdhcyBjcmVhdGVkCi0gYnkgQk5fbmV3KCksIGFsc28gdGhlIHN0cnVjdHVyZSBpdHNlbGYuIEJO X2NsZWFyX2ZyZWUoKSBhZGRpdGlvbmFsbHkKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2RvYy9t YW4zL0VWUF9jaGFjaGEyMC5wb2Quc3luYyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9FVlBfY2hh Y2hhMjAucG9kCi0tLS0gb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvRVZQX2NoYWNoYTIwLnBvZC5z eW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjEu MWIvZG9jL21hbjMvRVZQX2NoYWNoYTIwLnBvZAkyMDE5LTA1LTAzIDA4OjU1OjUxLjUzNjQwNjkz NCArMDIwMAotQEAgLTIxLDcgKzIxLDE1IEBAIFRoZSBDaGFDaGEyMCBzdHJlYW0gY2lwaGVyIGZv ciBFVlAuCi0gCi0gPWl0ZW0gRVZQX2NoYWNoYTIwKCkKLSAKLS1UaGUgQ2hhQ2hhMjAgc3RyZWFt IGNpcGhlci4gVGhlIGtleSBsZW5ndGggaXMgMjU2IGJpdHMsIHRoZSBJViBpcyA5NiBiaXRzIGxv bmcuCi0rVGhlIENoYUNoYTIwIHN0cmVhbSBjaXBoZXIuIFRoZSBrZXkgbGVuZ3RoIGlzIDI1NiBi aXRzLCB0aGUgSVYgaXMgMTI4IGJpdHMgbG9uZy4KLStUaGUgZmlyc3QgMzIgYml0cyBjb25zaXN0 cyBvZiBhIGNvdW50ZXIgaW4gbGl0dGxlLWVuZGlhbiBvcmRlciBmb2xsb3dlZCBieSBhIDk2Ci0r Yml0IG5vbmNlLiBGb3IgZXhhbXBsZSBhIG5vbmNlIG9mOgotKwotKzAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMgotKwotK1dpdGggYW4gaW5pdGlhbCBjb3VudGVyIG9mIDQyICgyYSBpbiBoZXgpIHdv dWxkIGJlIGV4cHJlc3NlZCBhczoKLSsKLSsyYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MgotIAotID1pdGVtIEVWUF9jaGFjaGEyMF9wb2x5MTMwNSgpCi0gCi1kaWZmIC11cCBvcGVuc3Ns LTEuMS4xYi9kb2MvbWFuMy9FVlBfRW5jcnlwdEluaXQucG9kLnN5bmMgb3BlbnNzbC0xLjEuMWIv ZG9jL21hbjMvRVZQX0VuY3J5cHRJbml0LnBvZAotLS0tIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4z L0VWUF9FbmNyeXB0SW5pdC5wb2Quc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCAr MDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL0VWUF9FbmNyeXB0SW5pdC5wb2QJMjAx OS0wNS0wMyAwODo1NTo1MS41NTQ0MDY2MjUgKzAyMDAKLUBAIC00MzYsNyArNDM2LDkgQEAgVGhl IGZvbGxvd2luZyBJPGN0cmw+cyBhcmUgc3VwcG9ydGVkIGZvcgotIAotIFNldHMgdGhlIG5vbmNl IGxlbmd0aC4gVGhpcyBjYWxsIGNhbiBvbmx5IGJlIG1hZGUgYmVmb3JlIHNwZWNpZnlpbmcgdGhl IG5vbmNlLgotIElmIG5vdCBjYWxsZWQgYSBkZWZhdWx0IG5vbmNlIGxlbmd0aCBvZiAxMiAoaS5l LiA5NiBiaXRzKSBpcyB1c2VkLiBUaGUgbWF4aW11bQotLW5vbmNlIGxlbmd0aCBpcyAxNiAoQjxD SEFDSEFfQ1RSX1NJWkU+LCBpLmUuIDEyOC1iaXRzKS4KLStub25jZSBsZW5ndGggaXMgMTIgYnl0 ZXMgKGkuZS4gOTYtYml0cykuIElmIGEgbm9uY2Ugb2YgbGVzcyB0aGFuIDEyIGJ5dGVzIGlzIHNl dAotK3RoZW4gdGhlIG5vbmNlIGlzIGF1dG9tYXRpY2FsbHkgcGFkZGVkIHdpdGggbGVhZGluZyAw IGJ5dGVzIHRvIG1ha2UgaXQgMTIgYnl0ZXMKLStpbiBsZW5ndGguCi0gCi0gPWl0ZW0gRVZQX0NJ UEhFUl9DVFhfY3RybChjdHgsIEVWUF9DVFJMX0FFQURfR0VUX1RBRywgdGFnbGVuLCB0YWcpCi0g Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9ITUFDLnBvZC5zeW5jIG9wZW5zc2wt MS4xLjFiL2RvYy9tYW4zL0hNQUMucG9kCi0tLS0gb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvSE1B Qy5wb2Quc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4xLjFiL2RvYy9tYW4zL0hNQUMucG9kCTIwMTktMDUtMDMgMDg6NTU6NTEuNTM5NDA2ODgz ICswMjAwCi1AQCAtNjMsNyArNjMsOSBAQCBJZiBCPG1kPiBpcyBOVUxMLCB0aGUgZGlnZXN0IGlz IHBsYWNlZCBpCi0gdGhlIG91dHB1dCBpcyBwbGFjZWQgaW4gQjxtZF9sZW4+LCB1bmxlc3MgaXQg aXMgQjxOVUxMPi4gTm90ZTogcGFzc2luZyBhIE5VTEwKLSB2YWx1ZSBmb3IgQjxtZD4gIHRvIHVz ZSB0aGUgc3RhdGljIGFycmF5IGlzIG5vdCB0aHJlYWQgc2FmZS4KLSAKLS1CPGV2cF9tZD4gY2Fu IGJlIEVWUF9zaGExKCksIEVWUF9yaXBlbWQxNjAoKSBldGMuCi0rQjxldnBfbWQ+IGlzIGEgbWVz c2FnZSBkaWdlc3Qgc3VjaCBhcyBFVlBfc2hhMSgpLCBFVlBfcmlwZW1kMTYwKCkgZXRjLiBITUFD IGRvZXMKLStub3Qgc3VwcG9ydCB2YXJpYWJsZSBvdXRwdXQgbGVuZ3RoIGRpZ2VzdHMgc3VjaCBh cyBFVlBfc2hha2UxMjgoKSBhbmQKLStFVlBfc2hha2UyNTYoKS4KLSAKLSBITUFDX0NUWF9uZXco KSBjcmVhdGVzIGEgbmV3IEhNQUNfQ1RYIGluIGhlYXAgbWVtb3J5LgotIAotZGlmZiAtdXAgb3Bl bnNzbC0xLjEuMWIvZG9jL21hbjMvUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMS5wb2Quc3lu YyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9SU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8xLnBv ZAotLS0tIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL1JTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBl XzEucG9kLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVu c3NsLTEuMS4xYi9kb2MvbWFuMy9SU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8xLnBvZAkyMDE5 LTA1LTAzIDA4OjU1OjUxLjU1NTQwNjYwOCArMDIwMAotQEAgLTUsNiArNSw3IEBACi0gUlNBX3Bh ZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMSwgUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8xLAot IFJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzIsIFJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX3R5 cGVfMiwKLSBSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUCwgUlNBX3BhZGRpbmdfY2hlY2tfUEtD UzFfT0FFUCwKLStSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUF9tZ2YxLCBSU0FfcGFkZGluZ19j aGVja19QS0NTMV9PQUVQX21nZjEsCi0gUlNBX3BhZGRpbmdfYWRkX1NTTHYyMywgUlNBX3BhZGRp bmdfY2hlY2tfU1NMdjIzLAotIFJTQV9wYWRkaW5nX2FkZF9ub25lLCBSU0FfcGFkZGluZ19jaGVj a19ub25lIC0gYXN5bW1ldHJpYyBlbmNyeXB0aW9uCi0gcGFkZGluZwotQEAgLTE0LDM1ICsxNSw0 NiBAQCBwYWRkaW5nCi0gICNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgotIAotICBpbnQgUlNBX3Bh ZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMSh1bnNpZ25lZCBjaGFyICp0bywgaW50IHRsZW4sCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCk7 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KmYsIGludCBmbCk7Ci0gCi0gIGludCBSU0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzEodW5z aWduZWQgY2hhciAqdG8sIGludCB0bGVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCwgaW50IHJzYV9sZW4pOwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmYsIGludCBm bCwgaW50IHJzYV9sZW4pOwotIAotICBpbnQgUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMih1 bnNpZ25lZCBjaGFyICp0bywgaW50IHRsZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCk7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCk7Ci0gCi0gIGludCBS U0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzIodW5zaWduZWQgY2hhciAqdG8sIGludCB0bGVu LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmYs IGludCBmbCwgaW50IHJzYV9sZW4pOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCwgaW50IHJzYV9sZW4pOwotIAotICBp bnQgUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVAodW5zaWduZWQgY2hhciAqdG8sIGludCB0bGVu LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqZiwgaW50 IGZsLCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgcGwpOwotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZiwgaW50IGZsLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IHBsKTsKLSAKLSAg aW50IFJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVAodW5zaWduZWQgY2hhciAqdG8sIGludCB0 bGVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpm LCBpbnQgZmwsIGludCByc2FfbGVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBjaGFyICpwLCBpbnQgcGwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwsIGludCByc2FfbGVuLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBp bnQgcGwpOwotKwotKyBpbnQgUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVBfbWdmMSh1bnNpZ25l ZCBjaGFyICp0bywgaW50IHRsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IHBsLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFVlBfTUQgKm1kLCBjb25zdCBF VlBfTUQgKm1nZjFtZCk7Ci0rCi0rIGludCBSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQX21n ZjEodW5zaWduZWQgY2hhciAqdG8sIGludCB0bGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCwgaW50IHJzYV9s ZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqcCwgaW50IHBsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IEVWUF9NRCAqbWQsIGNvbnN0IEVWUF9NRCAqbWdmMW1kKTsKLSAKLSAgaW50IFJT QV9wYWRkaW5nX2FkZF9TU0x2MjModW5zaWduZWQgY2hhciAqdG8sIGludCB0bGVuLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwpOwotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwpOwot IAotICBpbnQgUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzKHVuc2lnbmVkIGNoYXIgKnRvLCBpbnQg dGxlbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpmLCBp bnQgZmwsIGludCByc2FfbGVuKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwsIGludCByc2FfbGVuKTsKLSAKLSAgaW50IFJTQV9w YWRkaW5nX2FkZF9ub25lKHVuc2lnbmVkIGNoYXIgKnRvLCBpbnQgdGxlbiwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCk7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwpOwotIAotICBpbnQg UlNBX3BhZGRpbmdfY2hlY2tfbm9uZSh1bnNpZ25lZCBjaGFyICp0bywgaW50IHRsZW4sCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCwgaW50IHJz YV9sZW4pOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICpmLCBpbnQgZmwsIGludCByc2FfbGVuKTsKLSAKLSA9aGVhZDEgREVTQ1JJUFRJT04KLSAKLUBA IC05OCw2ICsxMTAsMTAgQEAgYXQgQjx0bz4uCi0gRm9yIFJTQV9wYWRkaW5nX3h4eF9PQUVQKCks IEI8cD4gcG9pbnRzIHRvIHRoZSBlbmNvZGluZyBwYXJhbWV0ZXIKLSBvZiBsZW5ndGggQjxwbD4u IEI8cD4gbWF5IGJlIEI8TlVMTD4gaWYgQjxwbD4gaXMgMC4KLSAKLStGb3IgUlNBX3BhZGRpbmdf eHh4X09BRVBfbWdmMSgpLCBCPG1kPiBwb2ludHMgdG8gdGhlIG1kIGhhc2gsCi0raWYgQjxtZD4g aXMgQjxOVUxMPiB0aGF0IG1lYW5zIG1kPXNoYTEsIGFuZCBCPG1nZjFtZD4gcG9pbnRzIHRvCi0r dGhlIG1nZjEgaGFzaCwgaWYgQjxtZ2YxbWQ+IGlzIEI8TlVMTD4gdGhhdCBtZWFucyBtZ2YxbWQ9 bWQuCi0rCi0gPWhlYWQxIFJFVFVSTiBWQUxVRVMKLSAKLSBUaGUgUlNBX3BhZGRpbmdfYWRkX3h4 eCgpIGZ1bmN0aW9ucyByZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yLgotQEAgLTEwNywx NSArMTIzLDIxIEBAIEw8RVJSX2dldF9lcnJvcigzKT4uCi0gCi0gPWhlYWQxIFdBUk5JTkcKLSAK LS1UaGUgUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8yKCkgcGFkZGluZyBjaGVjayBsZWFr cyB0aW1pbmcKLStUaGUgcmVzdWx0IG9mIFJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX3R5cGVfMigp IGlzIGEgdmVyeSBzZW5zaXRpdmUKLSBpbmZvcm1hdGlvbiB3aGljaCBjYW4gcG90ZW50aWFsbHkg YmUgdXNlZCB0byBtb3VudCBhIEJsZWljaGVuYmFjaGVyCi0gcGFkZGluZyBvcmFjbGUgYXR0YWNr LiBUaGlzIGlzIGFuIGluaGVyZW50IHdlYWtuZXNzIGluIHRoZSBQS0NTICMxCi0tdjEuNSBwYWRk aW5nIGRlc2lnbi4gUHJlZmVyIFBLQ1MxX09BRVAgcGFkZGluZy4gT3RoZXJ3aXNlIGl0IGNhbgot LWJlIHJlY29tbWVuZGVkIHRvIHBhc3MgemVyby1wYWRkZWQgQjxmPiwgc28gdGhhdCBCPGZsPiBl cXVhbHMgdG8KLS1CPHJzYV9sZW4+LCBhbmQgaWYgZml4ZWQgYnkgcHJvdG9jb2wsIEI8dGxlbj4g YmVpbmcgc2V0IHRvIHRoZQotLWV4cGVjdGVkIGxlbmd0aC4gSW4gc3VjaCBjYXNlIGxlYWthZ2Ug d291bGQgYmUgbWluaW1hbCwgaXQgd291bGQKLS10YWtlIGF0dGFja2VyJ3MgYWJpbGl0eSB0byBv YnNlcnZlIG1lbW9yeSBhY2Nlc3MgcGF0dGVybiB3aXRoIGJ5dGUKLS1ncmFuaWxhcml0eSBhcyBp dCBvY2N1cnMsIHBvc3QtZmFjdHVtIHRpbWluZyBhbmFseXNpcyB3b24ndCBkby4KLSt2MS41IHBh ZGRpbmcgZGVzaWduLiBQcmVmZXIgUEtDUzFfT0FFUCBwYWRkaW5nLiBJZiB0aGF0IGlzIG5vdAot K3Bvc3NpYmxlLCB0aGUgcmVzdWx0IG9mIFJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX3R5cGVfMigp IHNob3VsZCBiZQotK2NoZWNrZWQgaW4gY29uc3RhbnQgdGltZSBpZiBpdCBtYXRjaGVzIHRoZSBl eHBlY3RlZCBsZW5ndGggb2YgdGhlCi0rcGxhaW50ZXh0IGFuZCBhZGRpdGlvbmFsbHkgc29tZSBh cHBsaWNhdGlvbiBzcGVjaWZpYyBjb25zaXN0ZW5jeQotK2NoZWNrcyBvbiB0aGUgcGxhaW50ZXh0 IG5lZWQgdG8gYmUgcGVyZm9ybWVkIGluIGNvbnN0YW50IHRpbWUuCi0rSWYgdGhlIHBsYWludGV4 dCBpcyByZWplY3RlZCBpdCBtdXN0IGJlIGtlcHQgc2VjcmV0IHdoaWNoIG9mIHRoZQotK2NoZWNr cyBjYXVzZWQgdGhlIGFwcGxpY2F0aW9uIHRvIHJlamVjdCB0aGUgbWVzc2FnZS4KLStEbyBub3Qg cmVtb3ZlIHRoZSB6ZXJvLXBhZGRpbmcgZnJvbSB0aGUgZGVjcnlwdGVkIHJhdyBSU0EgZGF0YQot K3doaWNoIHdhcyBjb21wdXRlZCBieSBSU0FfcHJpdmF0ZV9kZWNyeXB0KCkgd2l0aCBCPFJTQV9O T19QQURESU5HPiwKLSthcyB0aGlzIHdvdWxkIGNyZWF0ZSBhIHNtYWxsIHRpbWluZyBzaWRlIGNo YW5uZWwgd2hpY2ggY291bGQgYmUKLSt1c2VkIHRvIG1vdW50IGEgQmxlaWNoZW5iYWNoZXIgYXR0 YWNrIGFnYWluc3QgYW55IHBhZGRpbmcgbW9kZQotK2luY2x1ZGluZyBQS0NTMV9PQUVQLgotIAot ID1oZWFkMSBTRUUgQUxTTwotIAotQEAgLTEyNSw3ICsxNDcsNyBAQCBMPFJTQV9zaWduKDMpPiwg TDxSU0FfdmVyaWZ5KDMpPgotIAotID1oZWFkMSBDT1BZUklHSFQKLSAKLS1Db3B5cmlnaHQgMjAw MC0yMDE2IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K LStDb3B5cmlnaHQgMjAwMC0yMDE5IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJp Z2h0cyBSZXNlcnZlZC4KLSAKLSBMaWNlbnNlZCB1bmRlciB0aGUgT3BlblNTTCBsaWNlbnNlICh0 aGUgIkxpY2Vuc2UiKS4gIFlvdSBtYXkgbm90IHVzZQotIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IGNhbiBvYnRhaW4gYSBjb3B5Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9SU0FfcHVibGljX2VuY3J5cHQucG9kLnN5bmMgb3Bl bnNzbC0xLjEuMWIvZG9jL21hbjMvUlNBX3B1YmxpY19lbmNyeXB0LnBvZAotLS0tIG9wZW5zc2wt MS4xLjFiL2RvYy9tYW4zL1JTQV9wdWJsaWNfZW5jcnlwdC5wb2Quc3luYwkyMDE5LTAyLTI2IDE1 OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL1JTQV9w dWJsaWNfZW5jcnlwdC5wb2QJMjAxOS0wNS0wMyAwODo1NTo1MS41NTU0MDY2MDggKzAyMDAKLUBA IC04LDEwICs4LDEwIEBAIFJTQV9wdWJsaWNfZW5jcnlwdCwgUlNBX3ByaXZhdGVfZGVjcnlwdAot IAotICAjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KLSAKLS0gaW50IFJTQV9wdWJsaWNfZW5jcnlw dChpbnQgZmxlbiwgdW5zaWduZWQgY2hhciAqZnJvbSwKLSsgaW50IFJTQV9wdWJsaWNfZW5jcnlw dChpbnQgZmxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBjaGFyICp0bywgUlNBICpyc2EsIGludCBwYWRkaW5nKTsKLSAKLS0g aW50IFJTQV9wcml2YXRlX2RlY3J5cHQoaW50IGZsZW4sIHVuc2lnbmVkIGNoYXIgKmZyb20sCi0r IGludCBSU0FfcHJpdmF0ZV9kZWNyeXB0KGludCBmbGVuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpm cm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICp0bywgUlNBICpy c2EsIGludCBwYWRkaW5nKTsKLSAKLSA9aGVhZDEgREVTQ1JJUFRJT04KLUBAIC0yNyw2ICsyNyw4 IEBAIEI8cGFkZGluZz4gZGVub3RlcyBvbmUgb2YgdGhlIGZvbGxvd2luZwotID1pdGVtIFJTQV9Q S0NTMV9QQURESU5HCi0gCi0gUEtDUyAjMSB2MS41IHBhZGRpbmcuIFRoaXMgY3VycmVudGx5IGlz IHRoZSBtb3N0IHdpZGVseSB1c2VkIG1vZGUuCi0rSG93ZXZlciwgaXQgaXMgaGlnaGx5IHJlY29t bWVuZGVkIHRvIHVzZSBSU0FfUEtDUzFfT0FFUF9QQURESU5HIGluCi0rbmV3IGFwcGxpY2F0aW9u cy4gU0VFIFdBUk5JTkcgQkVMT1cuCi0gCi0gPWl0ZW0gUlNBX1BLQ1MxX09BRVBfUEFERElORwot IAotQEAgLTQ2LDIzICs0OCwzNSBAQCBFbmNyeXB0aW5nIHVzZXIgZGF0YSBkaXJlY3RseSB3aXRo IFJTQSBpCi0gCi0gPWJhY2sKLSAKLS1CPGZsZW4+IG11c3QgYmUgbGVzcyB0aGFuIFJTQV9zaXpl KEI8cnNhPikgLSAxMSBmb3IgdGhlIFBLQ1MgIzEgdjEuNQotLWJhc2VkIHBhZGRpbmcgbW9kZXMs IGxlc3MgdGhhbiBSU0Ffc2l6ZShCPHJzYT4pIC0gNDEgZm9yCi0rQjxmbGVuPiBtdXN0IG5vdCBi ZSBtb3JlIHRoYW4gUlNBX3NpemUoQjxyc2E+KSAtIDExIGZvciB0aGUgUEtDUyAjMSB2MS41Ci0r YmFzZWQgcGFkZGluZyBtb2Rlcywgbm90IG1vcmUgdGhhbiBSU0Ffc2l6ZShCPHJzYT4pIC0gNDIg Zm9yCi0gUlNBX1BLQ1MxX09BRVBfUEFERElORyBhbmQgZXhhY3RseSBSU0Ffc2l6ZShCPHJzYT4p IGZvciBSU0FfTk9fUEFERElORy4KLS1UaGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgbXVzdCBi ZSBzZWVkZWQgcHJpb3IgdG8gY2FsbGluZwotLVJTQV9wdWJsaWNfZW5jcnlwdCgpLgotK1doZW4g YSBwYWRkaW5nIG1vZGUgb3RoZXIgdGhhbiBSU0FfTk9fUEFERElORyBpcyBpbiB1c2UsIHRoZW4K LStSU0FfcHVibGljX2VuY3J5cHQoKSB3aWxsIGluY2x1ZGUgc29tZSByYW5kb20gYnl0ZXMgaW50 byB0aGUgY2lwaGVydGV4dAotK2FuZCB0aGVyZWZvcmUgdGhlIGNpcGhlcnRleHQgd2lsbCBiZSBk aWZmZXJlbnQgZWFjaCB0aW1lLCBldmVuIGlmIHRoZQotK3BsYWludGV4dCBhbmQgdGhlIHB1Ymxp YyBrZXkgYXJlIGV4YWN0bHkgaWRlbnRpY2FsLgotK1RoZSByZXR1cm5lZCBjaXBoZXJ0ZXh0IGlu IEI8dG8+IHdpbGwgYWx3YXlzIGJlIHplcm8gcGFkZGVkIHRvIGV4YWN0bHkKLStSU0Ffc2l6ZShC PHJzYT4pIGJ5dGVzLgotK0I8dG8+IGFuZCBCPGZyb20+IG1heSBvdmVybGFwLgotIAotIFJTQV9w cml2YXRlX2RlY3J5cHQoKSBkZWNyeXB0cyB0aGUgQjxmbGVuPiBieXRlcyBhdCBCPGZyb20+IHVz aW5nIHRoZQotLXByaXZhdGUga2V5IEI8cnNhPiBhbmQgc3RvcmVzIHRoZSBwbGFpbnRleHQgaW4g Qjx0bz4uIEI8dG8+IG11c3QgcG9pbnQKLS10byBhIG1lbW9yeSBzZWN0aW9uIGxhcmdlIGVub3Vn aCB0byBob2xkIHRoZSBkZWNyeXB0ZWQgZGF0YSAod2hpY2ggaXMKLS1zbWFsbGVyIHRoYW4gUlNB X3NpemUoQjxyc2E+KSkuIEI8cGFkZGluZz4gaXMgdGhlIHBhZGRpbmcgbW9kZSB0aGF0Ci0td2Fz IHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS4KLStwcml2YXRlIGtleSBCPHJzYT4gYW5kIHN0b3Jl cyB0aGUgcGxhaW50ZXh0IGluIEI8dG8+LiBCPGZsZW4+IHNob3VsZAotK2JlIGVxdWFsIHRvIFJT QV9zaXplKEI8cnNhPikgYnV0IG1heSBiZSBzbWFsbGVyLCB3aGVuIGxlYWRpbmcgemVybwotK2J5 dGVzIGFyZSBpbiB0aGUgY2lwaGVydGV4dC4gVGhvc2UgYXJlIG5vdCBpbXBvcnRhbnQgYW5kIG1h eSBiZSByZW1vdmVkLAotK2J1dCBSU0FfcHVibGljX2VuY3J5cHQoKSBkb2VzIG5vdCBkbyB0aGF0 LiBCPHRvPiBtdXN0IHBvaW50Ci0rdG8gYSBtZW1vcnkgc2VjdGlvbiBsYXJnZSBlbm91Z2ggdG8g aG9sZCB0aGUgbWF4aW1hbCBwb3NzaWJsZSBkZWNyeXB0ZWQKLStkYXRhICh3aGljaCBpcyBlcXVh bCB0byBSU0Ffc2l6ZShCPHJzYT4pIGZvciBSU0FfTk9fUEFERElORywKLStSU0Ffc2l6ZShCPHJz YT4pIC0gMTEgZm9yIHRoZSBQS0NTICMxIHYxLjUgYmFzZWQgcGFkZGluZyBtb2RlcyBhbmQKLStS U0Ffc2l6ZShCPHJzYT4pIC0gNDIgZm9yIFJTQV9QS0NTMV9PQUVQX1BBRERJTkcpLgotK0I8cGFk ZGluZz4gaXMgdGhlIHBhZGRpbmcgbW9kZSB0aGF0IHdhcyB1c2VkIHRvIGVuY3J5cHQgdGhlIGRh dGEuCi0rQjx0bz4gYW5kIEI8ZnJvbT4gbWF5IG92ZXJsYXAuCi0gCi0gPWhlYWQxIFJFVFVSTiBW QUxVRVMKLSAKLSBSU0FfcHVibGljX2VuY3J5cHQoKSByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBl bmNyeXB0ZWQgZGF0YSAoaS5lLiwKLSBSU0Ffc2l6ZShCPHJzYT4pKS4gUlNBX3ByaXZhdGVfZGVj cnlwdCgpIHJldHVybnMgdGhlIHNpemUgb2YgdGhlCi0tcmVjb3ZlcmVkIHBsYWludGV4dC4KLSty ZWNvdmVyZWQgcGxhaW50ZXh0LiBBIHJldHVybiB2YWx1ZSBvZiAwIGlzIG5vdCBhbiBlcnJvciBh bmQKLSttZWFucyBvbmx5IHRoYXQgdGhlIHBsYWludGV4dCB3YXMgZW1wdHkuCi0gCi0gT24gZXJy b3IsIC0xIGlzIHJldHVybmVkOyB0aGUgZXJyb3IgY29kZXMgY2FuIGJlCi0gb2J0YWluZWQgYnkg TDxFUlJfZ2V0X2Vycm9yKDMpPi4KLUBAIC04NSw3ICs5OSw3IEBAIEw8UlNBX3NpemUoMyk+Ci0g Ci0gPWhlYWQxIENPUFlSSUdIVAotIAotLUNvcHlyaWdodCAyMDAwLTIwMTYgVGhlIE9wZW5TU0wg UHJvamVjdCBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotK0NvcHlyaWdodCAyMDAwLTIw MTkgVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIAot IExpY2Vuc2VkIHVuZGVyIHRoZSBPcGVuU1NMIGxpY2Vuc2UgKHRoZSAiTGljZW5zZSIpLiAgWW91 IG1heSBub3QgdXNlCi0gdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp Y2Vuc2UuICBZb3UgY2FuIG9idGFpbiBhIGNvcHkKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2Rv Yy9tYW4zL1NTTF9DSVBIRVJfZ2V0X25hbWUucG9kLnN5bmMgb3BlbnNzbC0xLjEuMWIvZG9jL21h bjMvU1NMX0NJUEhFUl9nZXRfbmFtZS5wb2QKLS0tLSBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9T U0xfQ0lQSEVSX2dldF9uYW1lLnBvZC5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAw ICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvU1NMX0NJUEhFUl9nZXRfbmFtZS5w b2QJMjAxOS0wNS0wMyAwODo1NTo1MS41Mzc0MDY5MTcgKzAyMDAKLUBAIC0xMjQsNyArMTI0LDEw IEBAIFRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNpcGhlciBuYW0KLSAKLSA9aXRlbSA8 cHJvdG9jb2wgdmVyc2lvbj4KLSAKLS1Qcm90b2NvbCB2ZXJzaW9uLCBzdWNoIGFzIEI8VExTdjEu Mj4sIHdoZW4gdGhlIGNpcGhlciB3YXMgZmlyc3QgZGVmaW5lZC4KLStUaGUgbWluaW11bSBwcm90 b2NvbCB2ZXJzaW9uIHRoYXQgdGhlIGNpcGhlcnN1aXRlIHN1cHBvcnRzLCBzdWNoIGFzIEI8VExT djEuMj4uCi0rTm90ZSB0aGF0IHRoaXMgaXMgbm90IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgcHJv dG9jb2wgdmVyc2lvbiBpbiB3aGljaCB0aGUKLStjaXBoZXJzdWl0ZSB3YXMgZmlyc3QgZGVmaW5l ZCBiZWNhdXNlIHNvbWUgY2lwaGVyc3VpdGVzIGFyZSBiYWNrd2FyZHMgY29tcGF0aWJsZQotK3dp dGggZWFybGllciBwcm90b2NvbCB2ZXJzaW9ucy4KLSAKLSA9aXRlbSBLeD08a2V5IGV4Y2hhbmdl PgotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvU1NMX0NUWF9zZXRfY2xpZW50 X2hlbGxvX2NiLnBvZC5zeW5jIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL1NTTF9DVFhfc2V0X2Ns aWVudF9oZWxsb19jYi5wb2QKLS0tLSBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9TU0xfQ1RYX3Nl dF9jbGllbnRfaGVsbG9fY2IucG9kLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9TU0xfQ1RYX3NldF9jbGllbnRfaGVs bG9fY2IucG9kCTIwMTktMDUtMDMgMDg6NTU6NTEuNTM0NDA2OTY5ICswMjAwCi1AQCAtNjUsNiAr NjUsOCBAQCBib3RoIHJlcXVpcmVkLCBhbmQgb24gc3VjY2VzcyB0aGUgY2FsbGVyCi0gQjwqb3V0 PiB1c2luZyBPUEVOU1NMX2ZyZWUoKS4gIFRoZSBjb250ZW50cyBvZiBCPCpvdXQ+IGlzIGFuIGFy cmF5IG9mIGludGVnZXJzCi0gaG9sZGluZyB0aGUgbnVtZXJpY2FsIHZhbHVlIG9mIHRoZSBUTFMg ZXh0ZW5zaW9uIHR5cGVzIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcgotIGluIHRoZSBDbGllbnRI ZWxsby4gIEI8Km91dGxlbj4gY29udGFpbnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUg YXJyYXkuCi0rSW4gc2l0dWF0aW9ucyB3aGVuIHRoZSBDbGllbnRIZWxsbyBoYXMgbm8gZXh0ZW5z aW9ucywgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCi0rc3VjY2VzcyB3aXRoIEI8Km91dD4gc2V0 IHRvIE5VTEwgYW5kIEI8Km91dGxlbj4gc2V0IHRvIDAuCi0gCi0gPWhlYWQxIE5PVEVTCi0gCi1k aWZmIC11cCBvcGVuc3NsLTEuMS4xYi9pbmNsdWRlL29wZW5zc2wvZXJyLmguc3luYyBvcGVuc3Ns LTEuMS4xYi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLS0tLSBvcGVuc3NsLTEuMS4xYi9pbmNsdWRl L29wZW5zc2wvZXJyLmguc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAot KysrIG9wZW5zc2wtMS4xLjFiL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAkyMDE5LTA1LTAzIDA4OjU1 OjUxLjU0ODQwNjcyOCArMDIwMAotQEAgLTM3LDYgKzM3LDcgQEAgZXh0ZXJuICJDIiB7Ci0gIyBk ZWZpbmUgRVJSX1RYVF9TVFJJTkcgICAgICAgICAgMHgwMgotIAotICMgZGVmaW5lIEVSUl9GTEFH X01BUksgICAgICAgICAgIDB4MDEKLSsjIGRlZmluZSBFUlJfRkxBR19DTEVBUiAgICAgICAgICAw eDAyCi0gCi0gIyBkZWZpbmUgRVJSX05VTV9FUlJPUlMgIDE2Ci0gdHlwZWRlZiBzdHJ1Y3QgZXJy X3N0YXRlX3N0IHsKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL3NzbC9zc2xfbGliLmMuc3luYyBv cGVuc3NsLTEuMS4xYi9zc2wvc3NsX2xpYi5jCi0tLS0gb3BlbnNzbC0xLjEuMWIvc3NsL3NzbF9s aWIuYy5zeW5jCTIwMTktMDUtMDMgMDg6NTU6NDUuMTk2NTE1Nzc4ICswMjAwCi0rKysgb3BlbnNz bC0xLjEuMWIvc3NsL3NzbF9saWIuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUzNTQwNjk1MSArMDIw MAotQEAgLTUwODksNiArNTA4OSwxMSBAQCBpbnQgU1NMX2NsaWVudF9oZWxsb19nZXQxX2V4dGVu c2lvbnNfcHJlCi0gICAgICAgICBpZiAoZXh0LT5wcmVzZW50KQotICAgICAgICAgICAgIG51bSsr OwotICAgICB9Ci0rICAgIGlmIChudW0gPT0gMCkgewotKyAgICAgICAgKm91dCA9IE5VTEw7Ci0r ICAgICAgICAqb3V0bGVuID0gMDsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0gICAgIGlm ICgocHJlc2VudCA9IE9QRU5TU0xfbWFsbG9jKHNpemVvZigqcHJlc2VudCkgKiBudW0pKSA9PSBO VUxMKSB7Ci0gICAgICAgICBTU0xlcnIoU1NMX0ZfU1NMX0NMSUVOVF9IRUxMT19HRVQxX0VYVEVO U0lPTlNfUFJFU0VOVCwKLSAgICAgICAgICAgICAgICBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7Ci1k aWZmIC11cCBvcGVuc3NsLTEuMS4xYi9zc2wvc3NsX2xvY2wuaC5zeW5jIG9wZW5zc2wtMS4xLjFi L3NzbC9zc2xfbG9jbC5oCi0tLS0gb3BlbnNzbC0xLjEuMWIvc3NsL3NzbF9sb2NsLmguc3luYwky MDE5LTA1LTAzIDA4OjU1OjQ1LjAxMTUxODk1NCArMDIwMAotKysrIG9wZW5zc2wtMS4xLjFiL3Nz bC9zc2xfbG9jbC5oCTIwMTktMDUtMDMgMDg6NTU6NTEuNTQxNDA2ODQ4ICswMjAwCi1AQCAtNTc0 LDcgKzU3NCw2IEBAIHN0cnVjdCBzc2xfc2Vzc2lvbl9zdCB7Ci0gICAgICAgICAvKiBTZXNzaW9u IGxpZmV0aW1lIGhpbnQgaW4gc2Vjb25kcyAqLwotICAgICAgICAgdW5zaWduZWQgbG9uZyB0aWNr X2xpZmV0aW1lX2hpbnQ7Ci0gICAgICAgICB1aW50MzJfdCB0aWNrX2FnZV9hZGQ7Ci0tICAgICAg ICBpbnQgdGlja19pZGVudGl0eTsKLSAgICAgICAgIC8qIE1heCBudW1iZXIgb2YgYnl0ZXMgdGhh dCBjYW4gYmUgc2VudCBhcyBlYXJseSBkYXRhICovCi0gICAgICAgICB1aW50MzJfdCBtYXhfZWFy bHlfZGF0YTsKLSAgICAgICAgIC8qIFRoZSBBTFBOIHByb3RvY29sIHNlbGVjdGVkIGZvciB0aGlz IHNlc3Npb24gKi8KLUBAIC0xMzU2LDYgKzEzNTUsMTMgQEAgc3RydWN0IHNzbF9zdCB7Ci0gICAg ICAgICAgKiBhcyB0aGlzIGV4dGVuc2lvbiBpcyBvcHRpb25hbCBvbiBzZXJ2ZXIgc2lkZS4KLSAg ICAgICAgICAqLwotICAgICAgICAgdWludDhfdCBtYXhfZnJhZ21lbnRfbGVuX21vZGU7Ci0rCisg ICAgICAgICBzdHItPmVycm9yID0gRVJSX1BBQ0soRVJSX0xJQl9TWVMsIDAsIGkpOworLSAgICAg ICAgaWYgKHN0ci0+c3RyaW5nID09IE5VTEwpIHsKICsgICAgICAgIC8qCi0rICAgICAgICAgKiBP biB0aGUgY2xpZW50IHNpZGUgdGhlIG51bWJlciBvZiB0aWNrZXQgaWRlbnRpdGllcyB3ZSBzZW50 IGluIHRoZQotKyAgICAgICAgICogQ2xpZW50SGVsbG8uIE9uIHRoZSBzZXJ2ZXIgc2lkZSB0aGUg aWRlbnRpdHkgb2YgdGhlIHRpY2tldCB3ZQotKyAgICAgICAgICogc2VsZWN0ZWQuCisrICAgICAg ICAgKiBJZiB3ZSBoYXZlIHVzZWQgdXAgYWxsIHRoZSBzcGFjZSBpbiBzdHJlcnJvcl9wb29sLAor KyAgICAgICAgICogdGhlcmUncyBubyBwb2ludCBpbiBjYWxsaW5nIG9wZW5zc2xfc3RyZXJyb3Jf cigpCiArICAgICAgICAgKi8KLSsgICAgICAgIGludCB0aWNrX2lkZW50aXR5OwotICAgICB9IGV4 dDsKLSAKLSAgICAgLyoKLUBAIC0yMDUyLDkgKzIwNTgsNiBAQCB0eXBlZGVmIGVudW0gZG93bmdy YWRlX2VuIHsKLSAjZGVmaW5lIFRMU0VYVF9LRVhfTU9ERV9GTEFHX0tFICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMQotICNkZWZpbmUgVExTRVhUX0tFWF9NT0RFX0ZMQUdfS0VfREhF ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCi0gCi0tLyogQW4gaW52YWxpZCBpbmRleCBp bnRvIHRoZSBUTFN2MS4zIFBTSyBpZGVudGl0aWVzICovCi0tI2RlZmluZSBUTFNFWFRfUFNLX0JB RF9JREVOVElUWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xCi0tCi0gI2RlZmlu ZSBTU0xfVVNFX1BTUyhzKSAocy0+czMtPnRtcC5wZWVyX3NpZ2FsZyAhPSBOVUxMICYmIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5zMy0+dG1wLnBlZXJfc2lnYWxnLT5zaWcgPT0gRVZQ X1BLRVlfUlNBX1BTUykKLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL3NzbC9zdGF0ZW0vZXh0 ZW5zaW9uc19jbG50LmMuc3luYyBvcGVuc3NsLTEuMS4xYi9zc2wvc3RhdGVtL2V4dGVuc2lvbnNf Y2xudC5jCi0tLS0gb3BlbnNzbC0xLjEuMWIvc3NsL3N0YXRlbS9leHRlbnNpb25zX2NsbnQuYy5z eW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjEu MWIvc3NsL3N0YXRlbS9leHRlbnNpb25zX2NsbnQuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU0MjQw NjgzMSArMDIwMAotQEAgLTk5Myw3ICs5OTMsNyBAQCBFWFRfUkVUVVJOIHRsc19jb25zdHJ1Y3Rf Y3Rvc19wc2soU1NMICpzCi0gICAgIGNvbnN0IEVWUF9NRCAqaGFuZG1kID0gTlVMTCwgKm1kcmVz ID0gTlVMTCwgKm1kcHNrID0gTlVMTDsKLSAgICAgaW50IGRvcmVzID0gMDsKLSAKLS0gICAgcy0+ c2Vzc2lvbi0+ZXh0LnRpY2tfaWRlbnRpdHkgPSBUTFNFWFRfUFNLX0JBRF9JREVOVElUWTsKLSsg ICAgcy0+ZXh0LnRpY2tfaWRlbnRpdHkgPSAwOwotIAotICAgICAvKgotICAgICAgKiBOb3RlOiBB dCB0aGlzIHN0YWdlIG9mIHRoZSBjb2RlIHdlIG9ubHkgc3VwcG9ydCBhZGRpbmcgYSBzaW5nbGUK LUBAIC0xMDgzLDYgKzEwODMsNyBAQCBFWFRfUkVUVVJOIHRsc19jb25zdHJ1Y3RfY3Rvc19wc2so U1NMICpzCi0gICAgICAgICBhZ2VtcyArPSBzLT5zZXNzaW9uLT5leHQudGlja19hZ2VfYWRkOwot IAotICAgICAgICAgcmVzaGFzaHNpemUgPSBFVlBfTURfc2l6ZShtZHJlcyk7Ci0rICAgICAgICBz LT5leHQudGlja19pZGVudGl0eSsrOwotICAgICAgICAgZG9yZXMgPSAxOwotICAgICB9Ci0gCi1A QCAtMTE0Miw2ICsxMTQzLDcgQEAgRVhUX1JFVFVSTiB0bHNfY29uc3RydWN0X2N0b3NfcHNrKFNT TCAqcwotICAgICAgICAgICAgICAgICAgICAgIEVSUl9SX0lOVEVSTkFMX0VSUk9SKTsKLSAgICAg ICAgICAgICByZXR1cm4gRVhUX1JFVFVSTl9GQUlMOworKyAgICAgICAgaWYgKHN0ci0+c3RyaW5n ID09IE5VTEwgJiYgY250IDwgc2l6ZW9mKHN0cmVycm9yX3Bvb2wpKSB7CisgICAgICAgICAgICAg aWYgKG9wZW5zc2xfc3RyZXJyb3JfcihpLCBjdXIsIHNpemVvZihzdHJlcnJvcl9wb29sKSAtIGNu dCkpIHsKKy0gICAgICAgICAgICAgICAgc2l6ZV90IGwgPSBzdHJsZW4oY3VyKTsKKysgICAgICAg ICAgICAgICAgc2l6ZV90IGwgPSBzdHJsZW4oY3VyKSArIDE7CisgCisgICAgICAgICAgICAgICAg IHN0ci0+c3RyaW5nID0gY3VyOworICAgICAgICAgICAgICAgICBjbnQgKz0gbDsKKy0gICAgICAg ICAgICAgICAgaWYgKGNudCA+IHNpemVvZihzdHJlcnJvcl9wb29sKSkKKy0gICAgICAgICAgICAg ICAgICAgIGNudCA9IHNpemVvZihzdHJlcnJvcl9wb29sKTsKKyAgICAgICAgICAgICAgICAgY3Vy ICs9IGw7CisgCisgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAqIFZNUyBo YXMgYW4gdW51c3VhbCBxdWlyayBvZiBhZGRpbmcgc3BhY2VzIGF0IHRoZSBlbmQgb2YKKy0gICAg ICAgICAgICAgICAgICogc29tZSAobW9zdD8gYWxsPykgbWVzc2FnZXMuICBMZXRzIHRyaW0gdGhl bSBvZmYuCisrICAgICAgICAgICAgICAgICAqIHNvbWUgKG1vc3Q/IGFsbD8pIG1lc3NhZ2VzLiBM ZXRzIHRyaW0gdGhlbSBvZmYuCisgICAgICAgICAgICAgICAgICAqLworLSAgICAgICAgICAgICAg ICB3aGlsZSAob3NzbF9pc3NwYWNlKGN1clstMV0pKSB7CistICAgICAgICAgICAgICAgICAgICBj dXItLTsKKy0gICAgICAgICAgICAgICAgICAgIGNudC0tOworKyAgICAgICAgICAgICAgICBpZiAo Y3VyID4gc3RyZXJyb3JfcG9vbCAmJiBvc3NsX2lzc3BhY2UoY3VyWy0xXSkpIHsKKysgICAgICAg ICAgICAgICAgICAgIHdoaWxlIChjdXIgPiBzdHJlcnJvcl9wb29sICYmIG9zc2xfaXNzcGFjZShj dXJbLTFdKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGN1ci0tOworKyAgICAgICAgICAg ICAgICAgICAgICAgIGNudC0tOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgICAgICAgKmN1cisrID0gJ1wwJzsKKysgICAgICAgICAgICAgICAgICAgIGNudCsrOworICAg ICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICpjdXIrKyA9ICdcMCc7CistICAgICAg ICAgICAgICAgIGNudCsrOworICAgICAgICAgICAgIH0KICAgICAgICAgIH0KLSsgICAgICAgIHMt PmV4dC50aWNrX2lkZW50aXR5Kys7Ci0gICAgIH0KLSAKLSAgICAgaWYgKCFXUEFDS0VUX2Nsb3Nl KHBrdCkKLUBAIC0xMTgwLDExICsxMTgyLDYgQEAgRVhUX1JFVFVSTiB0bHNfY29uc3RydWN0X2N0 b3NfcHNrKFNTTCAqcwotICAgICAgICAgcmV0dXJuIEVYVF9SRVRVUk5fRkFJTDsKLSAgICAgfQot IAotLSAgICBpZiAoZG9yZXMpCi0tICAgICAgICBzLT5zZXNzaW9uLT5leHQudGlja19pZGVudGl0 eSA9IDA7Ci0tICAgIGlmIChzLT5wc2tzZXNzaW9uICE9IE5VTEwpCi0tICAgICAgICBzLT5wc2tz ZXNzaW9uLT5leHQudGlja19pZGVudGl0eSA9IChkb3JlcyA/IDEgOiAwKTsKLS0KLSAgICAgcmV0 dXJuIEVYVF9SRVRVUk5fU0VOVDsKLSAjZWxzZQotICAgICByZXR1cm4gRVhUX1JFVFVSTl9OT1Rf U0VOVDsKLUBAIC0xOTI3LDggKzE5MjQsNyBAQCBpbnQgdGxzX3BhcnNlX3N0b2NfZWFybHlfZGF0 YShTU0wgKnMsIFBBCi0gICAgIH0KLSAKLSAgICAgaWYgKCFzLT5leHQuZWFybHlfZGF0YV9vawot LSAgICAgICAgICAgIHx8ICFzLT5oaXQKLS0gICAgICAgICAgICB8fCBzLT5zZXNzaW9uLT5leHQu dGlja19pZGVudGl0eSAhPSAwKSB7Ci0rICAgICAgICAgICAgfHwgIXMtPmhpdCkgewotICAgICAg ICAgLyoKLSAgICAgICAgICAqIElmIHdlIGdldCBoZXJlIHRoZW4gd2UgZGlkbid0IHNlbmQgZWFy bHkgZGF0YSwgb3Igd2UgZGlkbid0IHJlc3VtZQotICAgICAgICAgICogdXNpbmcgdGhlIGZpcnN0 IGlkZW50aXR5LCBvciB0aGUgU05JL0FMUE4gaXMgbm90IGNvbnNpc3RlbnQgc28gdGhlCi1AQCAt MTk1NiwxNyArMTk1MiwyOCBAQCBpbnQgdGxzX3BhcnNlX3N0b2NfcHNrKFNTTCAqcywgUEFDS0VU ICpwCi0gICAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotLSAgICBpZiAocy0+c2Vzc2lvbi0+ ZXh0LnRpY2tfaWRlbnRpdHkgPT0gKGludClpZGVudGl0eSkgewotKyAgICBpZiAoaWRlbnRpdHkg Pj0gKHVuc2lnbmVkIGludClzLT5leHQudGlja19pZGVudGl0eSkgewotKyAgICAgICAgU1NMZmF0 YWwocywgU1NMX0FEX0lMTEVHQUxfUEFSQU1FVEVSLCBTU0xfRl9UTFNfUEFSU0VfU1RPQ19QU0ss Ci0rICAgICAgICAgICAgICAgICBTU0xfUl9CQURfUFNLX0lERU5USVRZKTsKLSsgICAgICAgIHJl dHVybiAwOwotKyAgICB9Ci0rCi0rICAgIC8qCi0rICAgICAqIFNlc3Npb24gcmVzdW1wdGlvbiB0 aWNrZXRzIGFyZSBhbHdheXMgc2VudCBiZWZvcmUgUFNLIHRpY2tldHMuIElmIHRoZQotKyAgICAg KiB0aWNrZXQgaW5kZXggaXMgMCB0aGVuIGl0IG11c3QgYmUgZm9yIGEgc2Vzc2lvbiByZXN1bXB0 aW9uIHRpY2tldCBpZiB3ZQotKyAgICAgKiBzZW50IHR3byB0aWNrZXRzLCBvciBpZiB3ZSBkaWRu J3Qgc2VuZCBhIFBTSyB0aWNrZXQuCi0rICAgICAqLwotKyAgICBpZiAoaWRlbnRpdHkgPT0gMCAm JiAocy0+cHNrc2Vzc2lvbiA9PSBOVUxMIHx8IHMtPmV4dC50aWNrX2lkZW50aXR5ID09IDIpKSB7 Ci0gICAgICAgICBzLT5oaXQgPSAxOwotICAgICAgICAgU1NMX1NFU1NJT05fZnJlZShzLT5wc2tz ZXNzaW9uKTsKLSAgICAgICAgIHMtPnBza3Nlc3Npb24gPSBOVUxMOwotICAgICAgICAgcmV0dXJu IDE7Ci0gICAgIH0KLSAKLS0gICAgaWYgKHMtPnBza3Nlc3Npb24gPT0gTlVMTAotLSAgICAgICAg ICAgIHx8IHMtPnBza3Nlc3Npb24tPmV4dC50aWNrX2lkZW50aXR5ICE9IChpbnQpaWRlbnRpdHkp IHsKLS0gICAgICAgIFNTTGZhdGFsKHMsIFNTTF9BRF9JTExFR0FMX1BBUkFNRVRFUiwgU1NMX0Zf VExTX1BBUlNFX1NUT0NfUFNLLAotLSAgICAgICAgICAgICAgICAgU1NMX1JfQkFEX1BTS19JREVO VElUWSk7Ci0rICAgIGlmIChzLT5wc2tzZXNzaW9uID09IE5VTEwpIHsKLSsgICAgICAgIC8qIFNo b3VsZCBuZXZlciBoYXBwZW4gKi8KLSsgICAgICAgIFNTTGZhdGFsKHMsIFNTTF9BRF9JTlRFUk5B TF9FUlJPUiwgU1NMX0ZfVExTX1BBUlNFX1NUT0NfUFNLLAotKyAgICAgICAgICAgICAgICAgRVJS X1JfSU5URVJOQUxfRVJST1IpOwotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLUBAIC0x OTg1LDYgKzE5OTIsOSBAQCBpbnQgdGxzX3BhcnNlX3N0b2NfcHNrKFNTTCAqcywgUEFDS0VUICpw Ci0gICAgIHMtPnNlc3Npb24gPSBzLT5wc2tzZXNzaW9uOwotICAgICBzLT5wc2tzZXNzaW9uID0g TlVMTDsKLSAgICAgcy0+aGl0ID0gMTsKLSsgICAgLyogRWFybHkgZGF0YSBpcyBvbmx5IGFsbG93 ZWQgaWYgd2UgdXNlZCB0aGUgZmlyc3QgdGlja2V0ICovCi0rICAgIGlmIChpZGVudGl0eSAhPSAw KQotKyAgICAgICAgcy0+ZXh0LmVhcmx5X2RhdGFfb2sgPSAwOwotICNlbmRpZgotIAotICAgICBy ZXR1cm4gMTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL3NzbC9zdGF0ZW0vZXh0ZW5zaW9ucy5j LnN5bmMgb3BlbnNzbC0xLjEuMWIvc3NsL3N0YXRlbS9leHRlbnNpb25zLmMKLS0tLSBvcGVuc3Ns LTEuMS4xYi9zc2wvc3RhdGVtL2V4dGVuc2lvbnMuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAu MDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvc3NsL3N0YXRlbS9leHRlbnNpb25z LmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NDE0MDY4NDggKzAyMDAKLUBAIC05ODksNyArOTg5LDYg QEAgc3RhdGljIGludCBmaW5hbF9zZXJ2ZXJfbmFtZShTU0wgKnMsIHVucwotICAgICAgICAgICAg ICAgICBzcy0+ZXh0LnRpY2tsZW4gPSAwOwotICAgICAgICAgICAgICAgICBzcy0+ZXh0LnRpY2tf bGlmZXRpbWVfaGludCA9IDA7Ci0gICAgICAgICAgICAgICAgIHNzLT5leHQudGlja19hZ2VfYWRk ID0gMDsKLS0gICAgICAgICAgICAgICAgc3MtPmV4dC50aWNrX2lkZW50aXR5ID0gMDsKLSAgICAg ICAgICAgICAgICAgaWYgKCFzc2xfZ2VuZXJhdGVfc2Vzc2lvbl9pZChzLCBzcykpIHsKLSAgICAg ICAgICAgICAgICAgICAgIFNTTGZhdGFsKHMsIFNTTF9BRF9JTlRFUk5BTF9FUlJPUiwgU1NMX0Zf RklOQUxfU0VSVkVSX05BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUlJfUl9J TlRFUk5BTF9FUlJPUik7Ci1AQCAtMTY0Niw3ICsxNjQ1LDYgQEAgc3RhdGljIGludCBmaW5hbF9l YXJseV9kYXRhKFNTTCAqcywgdW5zaQotIAotICAgICBpZiAocy0+bWF4X2Vhcmx5X2RhdGEgPT0g MAotICAgICAgICAgICAgIHx8ICFzLT5oaXQKLS0gICAgICAgICAgICB8fCBzLT5zZXNzaW9uLT5l eHQudGlja19pZGVudGl0eSAhPSAwCi0gICAgICAgICAgICAgfHwgcy0+ZWFybHlfZGF0YV9zdGF0 ZSAhPSBTU0xfRUFSTFlfREFUQV9BQ0NFUFRJTkcKLSAgICAgICAgICAgICB8fCAhcy0+ZXh0LmVh cmx5X2RhdGFfb2sKLSAgICAgICAgICAgICB8fCBzLT5oZWxsb19yZXRyeV9yZXF1ZXN0ICE9IFNT TF9IUlJfTk9ORQotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvc3NsL3N0YXRlbS9leHRlbnNpb25z X3NydnIuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL3NzbC9zdGF0ZW0vZXh0ZW5zaW9uc19zcnZyLmMK LS0tLSBvcGVuc3NsLTEuMS4xYi9zc2wvc3RhdGVtL2V4dGVuc2lvbnNfc3J2ci5jLnN5bmMJMjAx OS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi9zc2wv c3RhdGVtL2V4dGVuc2lvbnNfc3J2ci5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTQyNDA2ODMxICsw MjAwCi1AQCAtMTI3NCw3ICsxMjc0LDcgQEAgaW50IHRsc19wYXJzZV9jdG9zX3BzayhTU0wgKnMs IFBBQ0tFVCAqcAotICAgICAgICAgZ290byBlcnI7Ci0gICAgIH0KLSAKLS0gICAgc2Vzcy0+ZXh0 LnRpY2tfaWRlbnRpdHkgPSBpZDsKLSsgICAgcy0+ZXh0LnRpY2tfaWRlbnRpdHkgPSBpZDsKLSAK LSAgICAgU1NMX1NFU1NJT05fZnJlZShzLT5zZXNzaW9uKTsKLSAgICAgcy0+c2Vzc2lvbiA9IHNl c3M7Ci1AQCAtMTk0OCw3ICsxOTQ4LDcgQEAgRVhUX1JFVFVSTiB0bHNfY29uc3RydWN0X3N0b2Nf cHNrKFNTTCAqcwotIAotICAgICBpZiAoIVdQQUNLRVRfcHV0X2J5dGVzX3UxNihwa3QsIFRMU0VY VF9UWVBFX3BzaykKLSAgICAgICAgICAgICB8fCAhV1BBQ0tFVF9zdGFydF9zdWJfcGFja2V0X3Ux Nihwa3QpCi0tICAgICAgICAgICAgfHwgIVdQQUNLRVRfcHV0X2J5dGVzX3UxNihwa3QsIHMtPnNl c3Npb24tPmV4dC50aWNrX2lkZW50aXR5KQotKyAgICAgICAgICAgIHx8ICFXUEFDS0VUX3B1dF9i eXRlc191MTYocGt0LCBzLT5leHQudGlja19pZGVudGl0eSkKLSAgICAgICAgICAgICB8fCAhV1BB Q0tFVF9jbG9zZShwa3QpKSB7Ci0gICAgICAgICBTU0xmYXRhbChzLCBTU0xfQURfSU5URVJOQUxf RVJST1IsCi0gICAgICAgICAgICAgICAgICBTU0xfRl9UTFNfQ09OU1RSVUNUX1NUT0NfUFNLLCBF UlJfUl9JTlRFUk5BTF9FUlJPUik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9zc2wvc3RhdGVt L3N0YXRlbV9jbG50LmMuc3luYyBvcGVuc3NsLTEuMS4xYi9zc2wvc3RhdGVtL3N0YXRlbV9jbG50 LmMKLS0tLSBvcGVuc3NsLTEuMS4xYi9zc2wvc3RhdGVtL3N0YXRlbV9jbG50LmMuc3luYwkyMDE5 LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL3NzbC9z dGF0ZW0vc3RhdGVtX2NsbnQuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU0MzQwNjgxNCArMDIwMAot QEAgLTE2MTMsMTAgKzE2MTMsNyBAQCBNU0dfUFJPQ0VTU19SRVRVUk4gdGxzX3Byb2Nlc3Nfc2Vy dmVyX2hlCi0gICAgICAgICAgKiBzbyB0aGUgUEFDLWJhc2VkIHNlc3Npb24gc2VjcmV0IGlzIGFs d2F5cyBwcmVzZXJ2ZWQuIEl0J2xsIGJlCi0gICAgICAgICAgKiBvdmVyd3JpdHRlbiBpZiB0aGUg c2VydmVyIHJlZnVzZXMgcmVzdW1wdGlvbi4KLSAgICAgICAgICAqLwotLSAgICAgICAgaWYgKHMt PnNlc3Npb24tPnNlc3Npb25faWRfbGVuZ3RoID4gMAotLSAgICAgICAgICAgICAgICB8fCAoU1NM X0lTX1RMUzEzKHMpCi0tICAgICAgICAgICAgICAgICAgICAmJiBzLT5zZXNzaW9uLT5leHQudGlj a19pZGVudGl0eQotLSAgICAgICAgICAgICAgICAgICAgICAgIT0gVExTRVhUX1BTS19CQURfSURF TlRJVFkpKSB7Ci0rICAgICAgICBpZiAocy0+c2Vzc2lvbi0+c2Vzc2lvbl9pZF9sZW5ndGggPiAw KSB7Ci0gICAgICAgICAgICAgdHNhbl9jb3VudGVyKCZzLT5zZXNzaW9uX2N0eC0+c3RhdHMuc2Vz c19taXNzKTsKLSAgICAgICAgICAgICBpZiAoIXNzbF9nZXRfbmV3X3Nlc3Npb24ocywgMCkpIHsK LSAgICAgICAgICAgICAgICAgLyogU1NMZmF0YWwoKSBhbHJlYWR5IGNhbGxlZCAqLwotZGlmZiAt dXAgb3BlbnNzbC0xLjEuMWIvdGVzdC9iaW9fbWVtbGVha190ZXN0LmMuc3luYyBvcGVuc3NsLTEu MS4xYi90ZXN0L2Jpb19tZW1sZWFrX3Rlc3QuYwotLS0tIG9wZW5zc2wtMS4xLjFiL3Rlc3QvYmlv X21lbWxlYWtfdGVzdC5jLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBvcGVuc3NsLTEuMS4xYi90ZXN0L2Jpb19tZW1sZWFrX3Rlc3QuYwkyMDE5LTA1LTAzIDA4 OjU1OjUxLjU1NjQwNjU5MSArMDIwMAotQEAgLTE4LDI4ICsxOCwxNzAgQEAgc3RhdGljIGludCB0 ZXN0X2Jpb19tZW1sZWFrKHZvaWQpCi0gICAgIGludCBvayA9IDA7Ci0gICAgIEJJTyAqYmlvOwot ICAgICBCVUZfTUVNIGJ1Zm1lbTsKLS0gICAgY29uc3QgY2hhciAqc3RyID0gIkJJTyB0ZXN0XG4i OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciBzdHJbXSA9ICJCSU8gdGVzdFxuIjsKLSAgICAgY2hh ciBidWZbMTAwXTsKLSAKLSAgICAgYmlvID0gQklPX25ldyhCSU9fc19tZW0oKSk7Ci0tICAgIGlm IChiaW8gPT0gTlVMTCkKLSsgICAgaWYgKCFURVNUX3B0cihiaW8pKQotICAgICAgICAgZ290byBm aW5pc2g7Ci0tICAgIGJ1Zm1lbS5sZW5ndGggPSBzdHJsZW4oc3RyKSArIDE7Ci0rICAgIGJ1Zm1l bS5sZW5ndGggPSBzaXplb2Yoc3RyKTsKLSAgICAgYnVmbWVtLmRhdGEgPSAoY2hhciAqKSBzdHI7 Ci0gICAgIGJ1Zm1lbS5tYXggPSBidWZtZW0ubGVuZ3RoOwotICAgICBCSU9fc2V0X21lbV9idWYo YmlvLCAmYnVmbWVtLCBCSU9fTk9DTE9TRSk7Ci0gICAgIEJJT19zZXRfZmxhZ3MoYmlvLCBCSU9f RkxBR1NfTUVNX1JET05MWSk7Ci0rICAgIGlmICghVEVTVF9pbnRfZXEoQklPX3JlYWQoYmlvLCBi dWYsIHNpemVvZihidWYpKSwgc2l6ZW9mKHN0cikpKQotKyAgICAgICAgZ290byBmaW5pc2g7Ci0r ICAgIGlmICghVEVTVF9tZW1fZXEoYnVmLCBzaXplb2Yoc3RyKSwgc3RyLCBzaXplb2Yoc3RyKSkp Ci0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgb2sgPSAxOwotIAotLSAgICBpZiAoQklPX3Jl YWQoYmlvLCBidWYsIHNpemVvZihidWYpKSA8PSAwKQotLQlnb3RvIGZpbmlzaDsKLStmaW5pc2g6 Ci0rICAgIEJJT19mcmVlKGJpbyk7Ci0rICAgIHJldHVybiBvazsKLSt9Ci0gCi0tICAgIG9rID0g c3RyY21wKGJ1Ziwgc3RyKSA9PSAwOwotK3N0YXRpYyBpbnQgdGVzdF9iaW9fZ2V0X21lbSh2b2lk KQotK3sKLSsgICAgaW50IG9rID0gMDsKLSsgICAgQklPICpiaW8gPSBOVUxMOwotKyAgICBCVUZf TUVNICpidWZtZW0gPSBOVUxMOwotKwotKyAgICBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsK LSsgICAgaWYgKCFURVNUX3B0cihiaW8pKQotKyAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgIGlm ICghVEVTVF9pbnRfZXEoQklPX3B1dHMoYmlvLCAiSGVsbG8gV29ybGRcbiIpLCAxMikpCi0rICAg ICAgICBnb3RvIGZpbmlzaDsKLSsgICAgQklPX2dldF9tZW1fcHRyKGJpbywgJmJ1Zm1lbSk7Ci0r ICAgIGlmICghVEVTVF9wdHIoYnVmbWVtKSkKLSsgICAgICAgIGdvdG8gZmluaXNoOwotKyAgICBp ZiAoIVRFU1RfaW50X2d0KEJJT19zZXRfY2xvc2UoYmlvLCBCSU9fTk9DTE9TRSksIDApKQotKyAg ICAgICAgZ290byBmaW5pc2g7Ci0rICAgIEJJT19mcmVlKGJpbyk7Ci0rICAgIGJpbyA9IE5VTEw7 Ci0rICAgIGlmICghVEVTVF9tZW1fZXEoYnVmbWVtLT5kYXRhLCBidWZtZW0tPmxlbmd0aCwgIkhl bGxvIFdvcmxkXG4iLCAxMikpCi0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgb2sgPSAxOwot IAotIGZpbmlzaDoKLSAgICAgQklPX2ZyZWUoYmlvKTsKLSsgICAgQlVGX01FTV9mcmVlKGJ1Zm1l bSk7Ci0gICAgIHJldHVybiBvazsKLSB9Ci0gCi0rc3RhdGljIGludCB0ZXN0X2Jpb19uZXdfbWVt X2J1Zih2b2lkKQotK3sKLSsgICAgaW50IG9rID0gMDsKLSsgICAgQklPICpiaW87Ci0rICAgIEJV Rl9NRU0gKmJ1Zm1lbTsKLSsgICAgY2hhciBkYXRhWzE2XTsKLSsKLSsgICAgYmlvID0gQklPX25l d19tZW1fYnVmKCJIZWxsbyBXb3JsZFxuIiwgMTIpOwotKyAgICBpZiAoIVRFU1RfcHRyKGJpbykp Ci0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgaWYgKCFURVNUX2ludF9lcShCSU9fcmVhZChi aW8sIGRhdGEsIDUpLCA1KSkKLSsgICAgICAgIGdvdG8gZmluaXNoOwotKyAgICBpZiAoIVRFU1Rf bWVtX2VxKGRhdGEsIDUsICJIZWxsbyIsIDUpKQotKyAgICAgICAgZ290byBmaW5pc2g7Ci0rICAg IGlmICghVEVTVF9pbnRfZ3QoQklPX2dldF9tZW1fcHRyKGJpbywgJmJ1Zm1lbSksIDApKQotKyAg ICAgICAgZ290byBmaW5pc2g7Ci0rICAgIGlmICghVEVTVF9pbnRfbHQoQklPX3dyaXRlKGJpbywg InRlc3QiLCA0KSwgMCkpCi0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgaWYgKCFURVNUX2lu dF9lcShCSU9fcmVhZChiaW8sIGRhdGEsIDE2KSwgNykpCi0rICAgICAgICBnb3RvIGZpbmlzaDsK LSsgICAgaWYgKCFURVNUX21lbV9lcShkYXRhLCA3LCAiIFdvcmxkXG4iLCA3KSkKLSsgICAgICAg IGdvdG8gZmluaXNoOwotKyAgICBpZiAoIVRFU1RfaW50X2d0KEJJT19yZXNldChiaW8pLCAwKSkK LSsgICAgICAgIGdvdG8gZmluaXNoOwotKyAgICBpZiAoIVRFU1RfaW50X2VxKEJJT19yZWFkKGJp bywgZGF0YSwgMTYpLCAxMikpCi0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgaWYgKCFURVNU X21lbV9lcShkYXRhLCAxMiwgIkhlbGxvIFdvcmxkXG4iLCAxMikpCi0rICAgICAgICBnb3RvIGZp bmlzaDsKLSsgICAgb2sgPSAxOwotKwotK2ZpbmlzaDoKLSsgICAgQklPX2ZyZWUoYmlvKTsKLSsg ICAgcmV0dXJuIG9rOwotK30KLSsKLStzdGF0aWMgaW50IHRlc3RfYmlvX3Jkb25seV9tZW1fYnVm KHZvaWQpCi0rewotKyAgICBpbnQgb2sgPSAwOwotKyAgICBCSU8gKmJpbywgKmJpbzIgPSBOVUxM OwotKyAgICBCVUZfTUVNICpidWZtZW07Ci0rICAgIGNoYXIgZGF0YVsxNl07Ci0rCi0rICAgIGJp byA9IEJJT19uZXdfbWVtX2J1ZigiSGVsbG8gV29ybGRcbiIsIDEyKTsKLSsgICAgaWYgKCFURVNU X3B0cihiaW8pKQotKyAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgIGlmICghVEVTVF9pbnRfZXEo QklPX3JlYWQoYmlvLCBkYXRhLCA1KSwgNSkpCi0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAg aWYgKCFURVNUX21lbV9lcShkYXRhLCA1LCAiSGVsbG8iLCA1KSkKLSsgICAgICAgIGdvdG8gZmlu aXNoOwotKyAgICBpZiAoIVRFU1RfaW50X2d0KEJJT19nZXRfbWVtX3B0cihiaW8sICZidWZtZW0p LCAwKSkKLSsgICAgICAgIGdvdG8gZmluaXNoOwotKyAgICAodm9pZClCSU9fc2V0X2Nsb3NlKGJp bywgQklPX05PQ0xPU0UpOwotKwotKyAgICBiaW8yID0gQklPX25ldyhCSU9fc19tZW0oKSk7Ci0r ICAgIGlmICghVEVTVF9wdHIoYmlvMikpCi0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgQklP X3NldF9tZW1fYnVmKGJpbzIsIGJ1Zm1lbSwgQklPX0NMT1NFKTsKLSsgICAgQklPX3NldF9mbGFn cyhiaW8yLCBCSU9fRkxBR1NfTUVNX1JET05MWSk7Ci0rCi0rICAgIGlmICghVEVTVF9pbnRfZXEo QklPX3JlYWQoYmlvMiwgZGF0YSwgMTYpLCA3KSkKLSsgICAgICAgIGdvdG8gZmluaXNoOwotKyAg ICBpZiAoIVRFU1RfbWVtX2VxKGRhdGEsIDcsICIgV29ybGRcbiIsIDcpKQotKyAgICAgICAgZ290 byBmaW5pc2g7Ci0rICAgIGlmICghVEVTVF9pbnRfZ3QoQklPX3Jlc2V0KGJpbzIpLCAwKSkKLSsg ICAgICAgIGdvdG8gZmluaXNoOwotKyAgICBpZiAoIVRFU1RfaW50X2VxKEJJT19yZWFkKGJpbzIs IGRhdGEsIDE2KSwgNykpCi0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgaWYgKCFURVNUX21l bV9lcShkYXRhLCA3LCAiIFdvcmxkXG4iLCA3KSkKLSsgICAgICAgIGdvdG8gZmluaXNoOwotKyAg ICBvayA9IDE7Ci0rCi0rZmluaXNoOgotKyAgICBCSU9fZnJlZShiaW8pOwotKyAgICBCSU9fZnJl ZShiaW8yKTsKLSsgICAgcmV0dXJuIG9rOwotK30KLSsKLStzdGF0aWMgaW50IHRlc3RfYmlvX3Jk d3JfcmRvbmx5KHZvaWQpCi0rewotKyAgICBpbnQgb2sgPSAwOwotKyAgICBCSU8gKmJpbyA9IE5V TEw7Ci0rICAgIGNoYXIgZGF0YVsxNl07Ci0rCi0rICAgIGJpbyA9IEJJT19uZXcoQklPX3NfbWVt KCkpOwotKyAgICBpZiAoIVRFU1RfcHRyKGJpbykpCi0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsg ICAgaWYgKCFURVNUX2ludF9lcShCSU9fcHV0cyhiaW8sICJIZWxsbyBXb3JsZFxuIiksIDEyKSkK LSsgICAgICAgIGdvdG8gZmluaXNoOwotKwotKyAgICBCSU9fc2V0X2ZsYWdzKGJpbywgQklPX0ZM QUdTX01FTV9SRE9OTFkpOwotKyAgICBpZiAoIVRFU1RfaW50X2VxKEJJT19yZWFkKGJpbywgZGF0 YSwgMTYpLCAxMikpCi0rICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgaWYgKCFURVNUX21lbV9l cShkYXRhLCAxMiwgIkhlbGxvIFdvcmxkXG4iLCAxMikpCi0rICAgICAgICBnb3RvIGZpbmlzaDsK LSsgICAgaWYgKCFURVNUX2ludF9ndChCSU9fcmVzZXQoYmlvKSwgMCkpCi0rICAgICAgICBnb3Rv IGZpbmlzaDsKLSsKLSsgICAgQklPX2NsZWFyX2ZsYWdzKGJpbywgQklPX0ZMQUdTX01FTV9SRE9O TFkpOwotKyAgICBpZiAoIVRFU1RfaW50X2VxKEJJT19wdXRzKGJpbywgIkhpIVxuIiksIDQpKQot KyAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgIGlmICghVEVTVF9pbnRfZXEoQklPX3JlYWQoYmlv LCBkYXRhLCAxNiksIDE2KSkKLSsgICAgICAgIGdvdG8gZmluaXNoOwotKwotKyAgICBpZiAoIVRF U1RfbWVtX2VxKGRhdGEsIDE2LCAiSGVsbG8gV29ybGRcbkhpIVxuIiwgMTYpKQotKyAgICAgICAg Z290byBmaW5pc2g7Ci0rCi0rICAgIG9rID0gMTsKLSsKLStmaW5pc2g6Ci0rICAgIEJJT19mcmVl KGJpbyk7Ci0rICAgIHJldHVybiBvazsKLSt9Ci0rCi0rCi0gaW50IGdsb2JhbF9pbml0KHZvaWQp Ci0gewotICAgICBDUllQVE9fc2V0X21lbV9kZWJ1ZygxKTsKLUBAIC01MCw1ICsxOTIsOSBAQCBp bnQgZ2xvYmFsX2luaXQodm9pZCkKLSBpbnQgc2V0dXBfdGVzdHModm9pZCkKLSB7Ci0gICAgIEFE RF9URVNUKHRlc3RfYmlvX21lbWxlYWspOwotKyAgICBBRERfVEVTVCh0ZXN0X2Jpb19nZXRfbWVt KTsKLSsgICAgQUREX1RFU1QodGVzdF9iaW9fbmV3X21lbV9idWYpOwotKyAgICBBRERfVEVTVCh0 ZXN0X2Jpb19yZG9ubHlfbWVtX2J1Zik7Ci0rICAgIEFERF9URVNUKHRlc3RfYmlvX3Jkd3JfcmRv bmx5KTsKLSAgICAgcmV0dXJuIDE7Ci0gfQotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvdGVzdC9l Y3Rlc3QuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL3Rlc3QvZWN0ZXN0LmMKLS0tLSBvcGVuc3NsLTEu MS4xYi90ZXN0L2VjdGVzdC5jLnN5bmMJMjAxOS0wNS0wMyAwODo1NTo0NS4xMjc1MTY5NjIgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMS4xYi90ZXN0L2VjdGVzdC5jCTIwMTktMDUtMDMgMDg6NTU6NTEu NTI0NDA3MTQwICswMjAwCi1AQCAtNzI4LDYgKzcyOCw3NCBAQCBlcnI6Ci0gICAgIEJOX0NUWF9m cmVlKGN0eCk7Ci0gICAgIHJldHVybiByOwotIH0KLSsKLSsvKgotKyAqIFRlc3RzIGEgcG9pbnQg a25vd24gdG8gY2F1c2UgYW4gaW5jb3JyZWN0IHVuZGVyZmxvdyBpbiBhbiBvbGQgdmVyc2lvbiBv ZgotKyAqIGVjcF9uaXN0NTIxLmMKLSsgKi8KLStzdGF0aWMgaW50IHVuZGVyZmxvd190ZXN0KHZv aWQpCi0rewotKyAgICBCTl9DVFggKmN0eCA9IE5VTEw7Ci0rICAgIEVDX0dST1VQICpncnAgPSBO VUxMOwotKyAgICBFQ19QT0lOVCAqUCA9IE5VTEwsICpRID0gTlVMTCwgKlIgPSBOVUxMOwotKyAg ICBCSUdOVU0gKngxID0gTlVMTCwgKnkxID0gTlVMTCwgKnoxID0gTlVMTCwgKngyID0gTlVMTCwg KnkyID0gTlVMTDsKLSsgICAgQklHTlVNICprID0gTlVMTDsKLSsgICAgaW50IHRlc3RyZXN1bHQg PSAwOwotKyAgICBjb25zdCBjaGFyICp4MXN0ciA9Ci0rICAgICAgICAiMTUzNGYwMDc3ZmZmZmZl ODdlOWFkY2ZlMDAwMDAwMDAwMDAwMDAwMDAwMDAzZTA1YTIxZDI0MDAwMDJlMDMxYjFmNCIKLSsg ICAgICAgICJiODAwMDBjNmZhZmE0ZjNjMTI4ODc5OGQ2MjRhMjQ3YjVlMmZmZmZmZmZmZmZmZmZm ZWZlMDk5MjQxOTAwMDA0IjsKLSsgICAgY29uc3QgY2hhciAqcDUyMW0xID0KLSsgICAgICAgICIx ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmIgotKyAgICAgICAgImZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUiOwotKwotKyAgICBjdHggPSBCTl9DVFhfbmV3 KCk7Ci0rICAgIGlmICghVEVTVF9wdHIoY3R4KSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAg ICBCTl9DVFhfc3RhcnQoY3R4KTsKLSsgICAgeDEgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rICAgIHkx ID0gQk5fQ1RYX2dldChjdHgpOwotKyAgICB6MSA9IEJOX0NUWF9nZXQoY3R4KTsKLSsgICAgeDIg PSBCTl9DVFhfZ2V0KGN0eCk7Ci0rICAgIHkyID0gQk5fQ1RYX2dldChjdHgpOwotKyAgICBrID0g Qk5fQ1RYX2dldChjdHgpOwotKyAgICBpZiAoIVRFU1RfcHRyKGspKQotKyAgICAgICAgZ290byBl cnI7Ci0rCi0rICAgIGdycCA9IEVDX0dST1VQX25ld19ieV9jdXJ2ZV9uYW1lKE5JRF9zZWNwNTIx cjEpOwotKyAgICBQID0gRUNfUE9JTlRfbmV3KGdycCk7Ci0rICAgIFEgPSBFQ19QT0lOVF9uZXco Z3JwKTsKLSsgICAgUiA9IEVDX1BPSU5UX25ldyhncnApOwotKyAgICBpZiAoIVRFU1RfcHRyKGdy cCkgfHwgIVRFU1RfcHRyKFApIHx8ICFURVNUX3B0cihRKSB8fCAhVEVTVF9wdHIoUikpCi0rICAg ICAgICBnb3RvIGVycjsKLSsKLSsgICAgaWYgKCFURVNUX2ludF9ndChCTl9oZXgyYm4oJngxLCB4 MXN0ciksIDApCi0rICAgICAgICAgICAgfHwgIVRFU1RfaW50X2d0KEJOX2hleDJibigmeTEsIHA1 MjFtMSksIDApCi0rICAgICAgICAgICAgfHwgIVRFU1RfaW50X2d0KEJOX2hleDJibigmejEsIHA1 MjFtMSksIDApCi0rICAgICAgICAgICAgfHwgIVRFU1RfaW50X2d0KEJOX2hleDJibigmaywgIjAy IiksIDApCi0rICAgICAgICAgICAgfHwgIVRFU1RfdHJ1ZShFQ19QT0lOVF9zZXRfSnByb2plY3Rp dmVfY29vcmRpbmF0ZXNfR0ZwKGdycCwgUCwgeDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxLCB6MSwgY3R4KSkK LSsgICAgICAgICAgICB8fCAhVEVTVF90cnVlKEVDX1BPSU5UX211bChncnAsIFEsIE5VTEwsIFAs IGssIGN0eCkpCi0rICAgICAgICAgICAgfHwgIVRFU1RfdHJ1ZShFQ19QT0lOVF9nZXRfYWZmaW5l X2Nvb3JkaW5hdGVzKGdycCwgUSwgeDEsIHkxLCBjdHgpKQotKyAgICAgICAgICAgIHx8ICFURVNU X3RydWUoRUNfUE9JTlRfZGJsKGdycCwgUiwgUCwgY3R4KSkKLSsgICAgICAgICAgICB8fCAhVEVT VF90cnVlKEVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXMoZ3JwLCBSLCB4MiwgeTIsIGN0 eCkpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGlmICghVEVTVF9pbnRfZXEoQk5fY21w KHgxLCB4MiksIDApCi0rICAgICAgICAgICAgfHwgIVRFU1RfaW50X2VxKEJOX2NtcCh5MSwgeTIp LCAwKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICB0ZXN0cmVzdWx0ID0gMTsKLSsKLSsg ZXJyOgotKyAgICBCTl9DVFhfZW5kKGN0eCk7Ci0rICAgIEVDX1BPSU5UX2ZyZWUoUCk7Ci0rICAg IEVDX1BPSU5UX2ZyZWUoUSk7Ci0rICAgIEVDX0dST1VQX2ZyZWUoZ3JwKTsKLSsgICAgQk5fQ1RY X2ZyZWUoY3R4KTsKLSsKLSsgICAgcmV0dXJuIHRlc3RyZXN1bHQ7Ci0rfQotICMgZW5kaWYKLSAK LSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwNTIxX25hbWVkW10gPSB7Ci1AQCAtODM1LDYg KzkwMyw3IEBAIGludCBzZXR1cF90ZXN0cyh2b2lkKQotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVO U1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjgKLSAgICAgQUREX0FMTF9URVNUUyhuaXN0cF9zaW5n bGVfdGVzdCwgT1NTTF9ORUxFTShuaXN0cF90ZXN0c19wYXJhbXMpKTsKLSsgICAgQUREX1RFU1Qo dW5kZXJmbG93X3Rlc3QpOwotICMgZW5kaWYKLSAgICAgQUREX0FMTF9URVNUUyhpbnRlcm5hbF9j dXJ2ZV90ZXN0LCBjcnZfbGVuKTsKLSAgICAgQUREX0FMTF9URVNUUyhpbnRlcm5hbF9jdXJ2ZV90 ZXN0X21ldGhvZCwgY3J2X2xlbik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi90ZXN0L3JlY2lw ZXMvMzAtdGVzdF9ldnBfZGF0YS9ldnBjaXBoLnR4dC5zeW5jIG9wZW5zc2wtMS4xLjFiL3Rlc3Qv cmVjaXBlcy8zMC10ZXN0X2V2cF9kYXRhL2V2cGNpcGgudHh0Ci0tLS0gb3BlbnNzbC0xLjEuMWIv dGVzdC9yZWNpcGVzLzMwLXRlc3RfZXZwX2RhdGEvZXZwY2lwaC50eHQuc3luYwkyMDE5LTAyLTI2 IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL3Rlc3QvcmVjaXBl cy8zMC10ZXN0X2V2cF9kYXRhL2V2cGNpcGgudHh0CTIwMTktMDUtMDMgMDg6NTU6NTEuNTUyNDA2 NjU5ICswMjAwCi1AQCAtMjIzMiw3ICsyMjMyLDcgQEAgSVYgPSAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMAotIFBsYWludGV4dCA9IDExMTExMTExYWFhYWFhYWExMTExMTExMWJiYmJi YmJiMTExMTExMTFjY2NjY2NjYzExMTExMTExZGRkZGRkZGQyMjIyMjIyMmFhYWFhYWFhMjIyMjIy MjJiYmJiYmJiYjIyMjIyMjIyY2NjY2NjY2MyMjIyMjIyMmRkZGRkZGRkMzMzMzMzMzNhYWFhYWFh YTMzMzMzMzMzYmJiYmJiYmIzMzMzMzMzM2NjY2NjY2NjMzMzMzMzMzNkZGRkZGRkZDQ0NDQ0NDQ0 YWFhYWFhYWE0NDQ0NDQ0NGJiYmJiYmJiNDQ0NDQ0NDRjY2NjY2NjYzQ0NDQ0NDQ0ZGRkZGRkZGQ1 NTU1NTU1NWFhYWFhYWFhNTU1NTU1NTViYmJiYmJiYjU1NTU1NTU1Y2NjY2NjY2M1NTU1NTU1NWRk ZGRkZGRkCi0gQ2lwaGVydGV4dCA9IDMwMDI2YzMyOTY2NjE0MTcyMTE3OGI5OWMwYTFmMWIyZjA2 OTQwMjUzZjdiMzA4OWUyYTMwZWE4NmFhM2M4OGY1OTQwZjA1YWQ3ZWU0MWQ3MTM0N2JiNzI2MWUz NDhmMTgzNjA0NzNmZGY3ZDRlNzcyM2JmZmI0NDExY2MxM2Y2Y2RkODlmM2JjN2I5Yzc2ODE0NTAy MmM3YTc0ZjE0ZDdjMzA1Y2QwMTJhMTBmMTYwNTBjMjNmMWFlNWMyM2Y0NTk5OGQxM2ZiYWEwNDFl NTE2MTk1NzdlMDc3Mjc2NDg5NmE1ZDQ1MTZkOGZmY2ViM2JmN2UwNWY2MTNlZGQ5YTYwY2RjZWRh ZmY5Y2ZjYWY0ZTAwZDQ0NWE1NDMzNGY3M2FiMmNhZDk0NGU1MWQyNjY1NDhlNjFjNmViMGFhMWNk Ci0gCi0tVGl0bGUgPSBBUklBIEdDTSB0ZXN0IHZlY3RvcnMgZnJvbSBJRVRGIGRyYWZ0LWlldGYt YXZ0Y29yZS1hcmlhLXNydHAtMTAKLStUaXRsZSA9IEFSSUEgR0NNIHRlc3QgdmVjdG9ycyBmcm9t IFJGQzgyNjkKLSAKLSBDaXBoZXIgPSBBUklBLTEyOC1HQ00KLSBLZXkgPSBlOTFlNWU3NWRhNjU1 NTRhNDgxODFmMzg0NjM0OTU2MgotQEAgLTIyNTAsNiArMjI1MCwzNiBAQCBUYWcgPSBlMjEwZDZj ZWQyY2Y0MzBmZjg0MTQ3MjkxNWU3ZWY0OAotIFBsYWludGV4dCA9IGY1N2FmNWZkNGFlMTk1NjI5 NzZlYzU3YTVhN2FkNTVhNWFmNWM1ZTVjNWZkZjVjNTVhZDU3YTRhNzI3MmQ1NzI2MmU5NzI5NTY2 ZWQ2NmU5N2FjNTRhNGE1YTdhZDVlMTVhZTVmZGQ1ZmQ1YWM1ZDU2YWU1NmFkNWM1NzJkNTRhZTU0 YWM1NWE5NTZhZmQ2YWVkNWE0YWM1NjI5NTdhOTUxNjk5MTY5MWQ1NzJmZDE0ZTk3YWU5NjJlZDdh OWY0YTk1NWFmNTcyZTE2MmY1N2E5NTY2NjZlMTdhZTFmNTRhOTVmNTY2ZDU0YTY2ZTE2ZTRhZmQ2 YTlmN2FlMWM1YzU1YWU1ZDU2YWZkZTkxNmM1ZTk0YTZlYzU2Njk1ZTE0YWZkZTExNDg0MTZlOTRh ZDU3YWM1MTQ2ZWQ1OWQxY2M1Ci0gQ2lwaGVydGV4dCA9IDZmOWU0YmNiYzhjODVmYzAxMjhmYjFl NGEwYTIwY2I5OTMyZmY3NDU4MWY1NGZjMDEzZGQwNTRiMTlmOTkzNzE0MjViMzUyZDk3ZDNmMzM3 YjkwYjYzZDFiMDgyYWRlZWVhOWQyZDczOTE4OTdkNTkxYjk4NWU1NWZiNTBjYjUzNTBjZjdkMzhk YzI3ZGRhMTI3YzA3OGExNDljOGViOTgwODNkNjYzNjNhNDZlMzcyNmFmMjE3ZDNhMDAyNzVhZDVi Zjc3MmM3NjEwZWE0YzIzMDA2ODc4ZjBlZTY5YTgzOTc3MDMxNjlhNDE5MzAzZjQwYjcyZTQ1NzM3 MTRkMTllMjY5N2RmNjFlN2M3MjUyZTVhYmM2YmFkZTg3NmFjNDk2MWJmYWM0ZDVlODY3YWZjYTM1 MWE0OGFlZDUyODIyCi0gCi0rVGl0bGUgPSBBUklBIEdDTSBzZWxmLWdlbmVyYXRlZCB0ZXN0IHZl Y3RvcnMKLSsKLStDaXBoZXIgPSBBUklBLTEyOC1HQ00KLStLZXkgPSBlOTFlNWU3NWRhNjU1NTRh NDgxODFmMzg0NjM0OTU2MgotKyMgU2hvcnRlciB0aGFuIGRlZmF1bHQgSVYKLStJViA9IDAwMDEw MjAzMDQKLStBQUQgPSA4MDA4MzE1ZWJmMmU2ZmUwMjBlOGY1ZWIKLStUYWcgPSBlYmFhMjY0NWJi MTU0NTQyMTE3ZWU0NjAzMWFhMTc2ZQotK1BsYWludGV4dCA9IGY1N2FmNWZkNGFlMTk1NjI5NzZl YzU3YTVhN2FkNTVhNWFmNWM1ZTVjNWZkZjVjNTVhZDU3YTRhNzI3MmQ1NzI2MmU5NzI5NTY2ZWQ2 NmU5N2FjNTRhNGE1YTdhZDVlMTVhZTVmZGQ1ZmQ1YWM1ZDU2YWU1NmFkNWM1NzJkNTRhZTU0YWM1 NWE5NTZhZmQ2YWVkNWE0YWM1NjI5NTdhOTUxNjk5MTY5MWQ1NzJmZDE0ZTk3YWU5NjJlZDdhOWY0 YTk1NWFmNTcyZTE2MmY1N2E5NTY2NjZlMTdhZTFmNTRhOTVmNTY2ZDU0YTY2ZTE2ZTRhZmQ2YTlm N2FlMWM1YzU1YWU1ZDU2YWZkZTkxNmM1ZTk0YTZlYzU2Njk1ZTE0YWZkZTExNDg0MTZlOTRhZDU3 YWM1MTQ2ZWQ1OWQxY2M1Ci0rQ2lwaGVydGV4dCA9IDE3MjNjY2ZjMGVkNDRhMTI1MjA0NzNjZmVi NjNiYzkzM2NkNDUwYTk0M2Y1ZjFjYmE3OGUxOWQ3MmY4MGNjMTAyYWNjNTFmMjQ1OWEwNmNmNjQz NTE4MmI4ZGRkNDUxZjgzZTEzNDc5ZWZlNWVjN2RmYmYxNjIyOWY0MDE3OTIwZmI0MTQ1N2E5YjZm ZTFhNDAxYjMwYjJmMzMyZDgyN2FlMmY4NmU5NjIzMjY5MjdjMWVkOGJmZWRhYzFmN2EwMGRkZGU2 M2JkMzkyYThmMjhhNDg4YmE1OTc0Njg5ZjhkMTViOWIxNzM5ZmI1MGFhZTBmZjI0NDAyNmVjNzIw NjQwMDNjNjIxYjMzZmZjODA4NmIwYTk3ZWVmYjcwNjA0YTI4MjZmNjQ5OWY2ZWIxMmQ2N2EwZGEw M2ZjOGUxNDgyCi0rCi0rQ2lwaGVyID0gQVJJQS0xMjgtR0NNCi0rS2V5ID0gZTkxZTVlNzVkYTY1 NTU0YTQ4MTgxZjM4NDYzNDk1NjIKLSsjIExvbmdlciB0aGFuIGRlZmF1bHQgSVYKLStJViA9IDAw MDEwMjAzMDQwNTA2MDcwODA5MGEwYjBjMGQwZTBmCi0rQUFEID0gODAwODMxNWViZjJlNmZlMDIw ZThmNWViCi0rVGFnID0gNjFmN2Y0NGM3ZGEzYzYwMTk1YjI5YWUwYjQ2MDUxYTQKLStQbGFpbnRl eHQgPSBmNTdhZjVmZDRhZTE5NTYyOTc2ZWM1N2E1YTdhZDU1YTVhZjVjNWU1YzVmZGY1YzU1YWQ1 N2E0YTcyNzJkNTcyNjJlOTcyOTU2NmVkNjZlOTdhYzU0YTRhNWE3YWQ1ZTE1YWU1ZmRkNWZkNWFj NWQ1NmFlNTZhZDVjNTcyZDU0YWU1NGFjNTVhOTU2YWZkNmFlZDVhNGFjNTYyOTU3YTk1MTY5OTE2 OTFkNTcyZmQxNGU5N2FlOTYyZWQ3YTlmNGE5NTVhZjU3MmUxNjJmNTdhOTU2NjY2ZTE3YWUxZjU0 YTk1ZjU2NmQ1NGE2NmUxNmU0YWZkNmE5ZjdhZTFjNWM1NWFlNWQ1NmFmZGU5MTZjNWU5NGE2ZWM1 NjY5NWUxNGFmZGUxMTQ4NDE2ZTk0YWQ1N2FjNTE0NmVkNTlkMWNjNQotK0NpcGhlcnRleHQgPSAw ZDNlOThmY2FmN2EyYzRmZTkxOThkNjZhZGQ5MGQxMTNlNWUwZmY0NzU5OGM0MGE0YmY1MDE5NjBk OTM1YTQxNTZjOWE0ZDQ2YzkzNThhNjA4ZTEwYTE2NDc5YTQyNDdjOWFiOWJiNGEwMjgwOWUzZWFj MzU3MWI4MzI1OTBmZTJjYTNlMmQ1NDU3NDFlMzYyODJkOTZjMDQxZmM3ZDM5YTQ2ZWQ2MDIxNGMy YzBlYzcwZjI3NzY4ZGZlYTRmOTU2M2I1ZDVjMmFjMzNiMTM2OGE3OGYyOTA4ZjVkYWY5NDI0MzNm ZWM2YWI1ODhmMDllOTA4ZTk1Y2M4ZGZhODVkMWEwZGZkNTgzNWRjMTRlMTQ4MzIzMjMwYzYzZWVk Yzk5YTljZTk0MjIxNGNiMzc2OGI5N2I4MjFkNjEzNjI5ZgotKwotK0NpcGhlciA9IEFSSUEtMTI4 LUdDTQotK0tleSA9IGU5MWU1ZTc1ZGE2NTU1NGE0ODE4MWYzODQ2MzQ5NTYyCi0rIyBFeHRyYSBs b25nIElWCi0rSVYgPSAwMDAxMDIwMzA0MDUwNjA3MDgwOTBhMGIwYzBkMGUwZjEwMTEKLStBQUQg PSA4MDA4MzE1ZWJmMmU2ZmUwMjBlOGY1ZWIKLStUYWcgPSBjOGIzMWFiNmMyZGRjY2FiMDZiNzZh ZjRlNTZlNjY0ZQotK1BsYWludGV4dCA9IGY1N2FmNWZkNGFlMTk1NjI5NzZlYzU3YTVhN2FkNTVh NWFmNWM1ZTVjNWZkZjVjNTVhZDU3YTRhNzI3MmQ1NzI2MmU5NzI5NTY2ZWQ2NmU5N2FjNTRhNGE1 YTdhZDVlMTVhZTVmZGQ1ZmQ1YWM1ZDU2YWU1NmFkNWM1NzJkNTRhZTU0YWM1NWE5NTZhZmQ2YWVk NWE0YWM1NjI5NTdhOTUxNjk5MTY5MWQ1NzJmZDE0ZTk3YWU5NjJlZDdhOWY0YTk1NWFmNTcyZTE2 MmY1N2E5NTY2NjZlMTdhZTFmNTRhOTVmNTY2ZDU0YTY2ZTE2ZTRhZmQ2YTlmN2FlMWM1YzU1YWU1 ZDU2YWZkZTkxNmM1ZTk0YTZlYzU2Njk1ZTE0YWZkZTExNDg0MTZlOTRhZDU3YWM1MTQ2ZWQ1OWQx Y2M1Ci0rQ2lwaGVydGV4dCA9IDYxNmE3YmNlMjQyMDY1MDEwODJjZWY3MjY3YzA5YTRhZmZhNTRm OGY4MmViN2ZiMmNkZWJkY2FhYjRiNmFiMDVjMzdlODkxYzJkMGZjOTBkMTVjNWZiNjg0MjQ3NjI1 YzhiYzBiZWZhZDg2ODk2YWUxYzhmNWE4NTA2OTU0Y2FiYTRlMTNkZjBhMGViMjM4NTNkNDQ3NGU3 ZjNiMmM1N2JiMzk4NDU2YTI0ZDE5OGUxNDU2NmJjZThhNWY4ZDNiY2RiMTI5OTRkMmZkYzBmNWNm MTlhZWZmOTkwYzFmZTExOWUwMWY5ZmNjODY3NTdiMWQ0M2E5YWNjZjdiMmY5MTNjMjIwOGE0NmMx OTY3ZjQwMzg2N2Y4OWI0NmZmZTk2ODY0YzYzZjA0MjI2NTgwNmVhNTI3MGUwZGRkZDBlOGRkCi0r Ci0rCi0gVGl0bGUgPSBBUklBIENDTSB0ZXN0IHZlY3RvcnMgZnJvbSBJRVRGIGRyYWZ0LWlldGYt YXZ0Y29yZS1hcmlhLXNydHAtMDIKLSAKLSAjIDE2LWJ5dGUgVGFnCi1AQCAtMjM1NywxNCArMjM4 Nyw0MSBAQCBPcGVyYXRpb24gPSBFTkNSWVBUCi0gUGxhaW50ZXh0ID0gQjQxRTZCRTJFQkE4NEEx NDhFMkVFRDg0NTkzQzVFQzcKLSBDaXBoZXJ0ZXh0ID0gOUI5QjdCRkNEMTgxM0NCOTVEMEIzNjE4 RjQwRjUxMjIKLSAKLS1UaXRsZSA9IENoYWNoYTIwCi0rVGl0bGUgPSBDaGFjaGEyMCB0ZXN0IHZl Y3RvcnMgZnJvbSBSRkM3NTM5Ci0gCi0rIyBBLjEgVGVzdCBWZWN0b3IgMQotIENpcGhlciA9IGNo YWNoYTIwCi0gS2V5ID0gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotIElWID0gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAKLSBQbGFpbnRleHQgPSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotIENpcGhlcnRleHQgPSA3NmI4ZTBh ZGEwZjEzZDkwNDA1ZDZhZTU1Mzg2YmQyOGJkZDIxOWI4YTA4ZGVkMWFhODM2ZWZjYzhiNzcwZGM3 ZGE0MTU5N2M1MTU3NDg4ZDc3MjRlMDNmYjhkODRhMzc2YTQzYjhmNDE1MThhMTFjYzM4N2I2Njli MmVlNjU4NgotIAotKyMgQS4xIFRlc3QgVmVjdG9yIDIKLStDaXBoZXIgPSBjaGFjaGEyMAotK0tl eSA9IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAKLStJViA9IDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0rUGxh aW50ZXh0ID0gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLStDaXBoZXJ0ZXh0ID0gOWYwN2U3YmU1NTUxMzg3YTk4 YmE5NzdjNzMyZDA4MGRjYjBmMjlhMDQ4ZTM2NTY5MTJjNjUzM2UzMmVlN2FlZDI5YjcyMTc2OWNl NjRlNDNkNTcxMzNiMDc0ZDgzOWQ1MzFlZDFmMjg1MTBhZmI0NWFjZTEwYTFmNGI3OTRkNmYKLSsK LSsjIEEuMiBUZXN0IFZlY3RvciAxIGlzIHRoZSBzYW1lIGFzIEEuMSBUZXN0IFZlY3RvciAxCi0r IyBBLjIgVGVzdCBWZWN0b3IgMgotK0NpcGhlciA9IGNoYWNoYTIwCi0rS2V5ID0gMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQot KyNDb3VudGVyIChmaXJzdCA0IGJ5dGVzKSBleHByZXNzZWQgaW4gbGl0dGxlLWVuZGlhbiBvcmRl cgotK0lWID0gMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKLStQbGFpbnRleHQgPSA0 MTZlNzkyMDczNzU2MjZkNjk3MzczNjk2ZjZlMjA3NDZmMjA3NDY4NjUyMDQ5NDU1NDQ2MjA2OTZl NzQ2NTZlNjQ2NTY0MjA2Mjc5MjA3NDY4NjUyMDQzNmY2ZTc0NzI2OTYyNzU3NDZmNzIyMDY2NmY3 MjIwNzA3NTYyNmM2OTYzNjE3NDY5NmY2ZTIwNjE3MzIwNjE2YzZjMjA2ZjcyMjA3MDYxNzI3NDIw NmY2NjIwNjE2ZTIwNDk0NTU0NDYyMDQ5NmU3NDY1NzI2ZTY1NzQyZDQ0NzI2MTY2NzQyMDZmNzIy MDUyNDY0MzIwNjE2ZTY0MjA2MTZlNzkyMDczNzQ2MTc0NjU2ZDY1NmU3NDIwNmQ2MTY0NjUyMDc3 Njk3NDY4Njk2ZTIwNzQ2ODY1MjA2MzZmNmU3NDY1Nzg3NDIwNmY2NjIwNjE2ZTIwNDk0NTU0NDYy MDYxNjM3NDY5NzY2OTc0NzkyMDY5NzMyMDYzNmY2ZTczNjk2NDY1NzI2NTY0MjA2MTZlMjAyMjQ5 NDU1NDQ2MjA0MzZmNmU3NDcyNjk2Mjc1NzQ2OTZmNmUyMjJlMjA1Mzc1NjM2ODIwNzM3NDYxNzQ2 NTZkNjU2ZTc0NzMyMDY5NmU2MzZjNzU2NDY1MjA2ZjcyNjE2YzIwNzM3NDYxNzQ2NTZkNjU2ZTc0 NzMyMDY5NmUyMDQ5NDU1NDQ2MjA3MzY1NzM3MzY5NmY2ZTczMmMyMDYxNzMyMDc3NjU2YzZjMjA2 MTczMjA3NzcyNjk3NDc0NjU2ZTIwNjE2ZTY0MjA2NTZjNjU2Mzc0NzI2ZjZlNjk2MzIwNjM2ZjZk NmQ3NTZlNjk2MzYxNzQ2OTZmNmU3MzIwNmQ2MTY0NjUyMDYxNzQyMDYxNmU3OTIwNzQ2OTZkNjUy MDZmNzIyMDcwNmM2MTYzNjUyYzIwNzc2ODY5NjM2ODIwNjE3MjY1MjA2MTY0NjQ3MjY1NzM3MzY1 NjQyMDc0NmYKLStDaXBoZXJ0ZXh0ID0gYTNmYmYwN2RmM2ZhMmZkZTRmMzc2Y2EyM2U4MjczNzA0 MTYwNWQ5ZjRmNGY1N2JkOGNmZjJjMWQ0Yjc5NTVlYzJhOTc5NDhiZDM3MjI5MTVjOGYzZDMzN2Y3 ZDM3MDA1MGU5ZTk2ZDY0N2I3YzM5ZjU2ZTAzMWNhNWViNjI1MGQ0MDQyZTAyNzg1ZWNlY2ZhNGI0 YmI1ZThlYWQwNDQwZTIwYjZlOGRiMDlkODgxYTdjNjEzMmY0MjBlNTI3OTUwNDJiZGZhNzc3M2Q4 YTkwNTE0NDdiMzI5MWNlMTQxMWM2ODA0NjU1NTJhYTZjNDA1Yjc3NjRkNWU4N2JlYTg1YWQwMGY4 NDQ5ZWQ4ZjcyZDBkNjYyYWIwNTI2OTFjYTY2NDI0YmM4NmQyZGY4MGVhNDFmNDNhYmY5MzdkMzI1 OWRjNGIyZDBkZmI0OGE2YzkxMzlkZGQ3Zjc2OTY2ZTkyOGU2MzU1NTNiYTc2YzVjODc5ZDdiMzVk NDllYjJlNjJiMDg3MWNkYWM2Mzg5MzllMjVlOGExZTBlZjlkNTI4MGZhOGNhMzI4YjM1MWMzYzc2 NTk4OWNiY2YzZGFhOGI2Y2NjM2FhZjlmMzk3OWM5MmIzNzIwZmM4OGRjOTVlZDg0YTFiZTA1OWM2 NDk5YjlmZGEyMzZlN2U4MThiMDRiMGJjMzljMWU4NzZiMTkzYmZlNTU2OTc1M2Y4ODEyOGNjMDhh YWE5YjYzZDFhMTZmODBlZjI1NTRkNzE4OWM0MTFmNTg2OWNhNTJjNWI4M2ZhMzZmZjIxNmI5YzFk MzAwNjJiZWJjZmQyZGM1YmNlMDkxMTkzNGZkYTc5YTg2ZjZlNjk4Y2VkNzU5YzNmZjliNjQ3NzMz OGYzZGE0ZjljZDg1MTRlYTk5ODJjY2FmYjM0MWIyMzg0ZGQ5MDJmM2QxYWI3YWM2MWRkMjljNmYy MWJhNWI4NjJmMzczMGUzN2NmZGM0ZmQ4MDZjMjJmMjIxCi0rCi0rIyBBLjIgVGVzdCBWZWN0b3Ig MwotK0NpcGhlciA9IGNoYWNoYTIwCi0rS2V5ID0gMWM5MjQwYTVlYjU1ZDM4YWYzMzM4ODg2MDRm NmI1ZjA0NzM5MTdjMTQwMmI4MDA5OWRjYTVjYmMyMDcwNzVjMAotKyNDb3VudGVyIChmaXJzdCA0 IGJ5dGVzKSBleHByZXNzZWQgaW4gbGl0dGxlLWVuZGlhbiBvcmRlcgotK0lWID0gMmEwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKLStQbGFpbnRleHQgPSAyNzU0Nzc2MTczMjA2MjcyNjk2 YzZjNjk2NzJjMjA2MTZlNjQyMDc0Njg2NTIwNzM2YzY5NzQ2ODc5MjA3NDZmNzY2NTczMGE0NDY5 NjQyMDY3Nzk3MjY1MjA2MTZlNjQyMDY3Njk2ZDYyNmM2NTIwNjk2ZTIwNzQ2ODY1MjA3NzYxNjI2 NTNhMGE0MTZjNmMyMDZkNjk2ZDczNzkyMDc3NjU3MjY1MjA3NDY4NjUyMDYyNmY3MjZmNjc2Zjc2 NjU3MzJjMGE0MTZlNjQyMDc0Njg2NTIwNmQ2ZjZkNjUyMDcyNjE3NDY4NzMyMDZmNzU3NDY3NzI2 MTYyNjUyZQotK0NpcGhlcnRleHQgPSA2MmU2MzQ3Zjk1ZWQ4N2E0NWZmYWU3NDI2ZjI3YTFkZjVm YjY5MTEwMDQ0YzBkNzMxMThlZmZhOTViMDFlNWNmMTY2ZDNkZjJkNzIxY2FmOWIyMWU1ZmIxNGM2 MTY4NzFmZDg0YzU0ZjlkNjViMjgzMTk2YzdmZTRmNjA1NTNlYmYzOWM2NDAyYzQyMjM0ZTMyYTM1 NmIzZTc2NDMxMmE2MWE1NTMyMDU1NzE2ZWFkNjk2MjU2OGY4N2QzZjNmNzcwNGM2YThkMWJjZDFi ZjRkNTBkNjE1NGI2ZGE3MzFiMTg3YjU4ZGZkNzI4YWZhMzY3NTdhNzk3YWMxODhkMQotKwotK1Rp dGxlID0gQ2hhY2hhMjAKLSsKLSBDaXBoZXIgPSBjaGFjaGEyMAotIEtleSA9IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEKLSBJ ViA9IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi1AQCAtMjUwNiwzICsyNTYzLDEy IEBAIEFBRCA9IGYzMzM4ODg2MDAwMDAwMDAwMDAwNGU5MQotIFRhZyA9IGUwNzIzYmNlMjM1Mjhj ZTZjY2IxMGZmOTYyNzAzOGJmCi0gUGxhaW50ZXh0ID0gNDk2ZTc0NjU3MjZlNjU3NDJkNDQ3MjYx NjY3NDczMjA2MTcyNjUyMDY0NzI2MTY2NzQyMDY0NmY2Mzc1NmQ2NTZlNzQ3MzIwNzY2MTZjNjk2 NDIwNjY2ZjcyMjA2MTIwNmQ2MTc4Njk2ZDc1NmQyMDZmNjYyMDczNjk3ODIwNmQ2ZjZlNzQ2ODcz MjA2MTZlNjQyMDZkNjE3OTIwNjI2NTIwNzU3MDY0NjE3NDY1NjQyYzIwNzI2NTcwNmM2MTYzNjU2 NDJjMjA2ZjcyMjA2ZjYyNzM2ZjZjNjU3NDY1NjQyMDYyNzkyMDZmNzQ2ODY1NzIyMDY0NmY2Mzc1 NmQ2NTZlNzQ3MzIwNjE3NDIwNjE2ZTc5MjA3NDY5NmQ2NTJlMjA0OTc0MjA2OTczMjA2OTZlNjE3 MDcwNzI2ZjcwNzI2OTYxNzQ2NTIwNzQ2ZjIwNzU3MzY1MjA0OTZlNzQ2NTcyNmU2NTc0MmQ0NDcy NjE2Njc0NzMyMDYxNzMyMDcyNjU2NjY1NzI2NTZlNjM2NTIwNmQ2MTc0NjU3MjY5NjE2YzIwNmY3 MjIwNzQ2ZjIwNjM2OTc0NjUyMDc0Njg2NTZkMjA2Zjc0Njg2NTcyMjA3NDY4NjE2ZTIwNjE3MzIw MmZlMjgwOWM3NzZmNzI2YjIwNjk2ZTIwNzA3MjZmNjc0OTZlNzQ2NTcyNmU2NTc0MmQ0NDcyNjE2 Njc0NzMyMDYxNzI2NTIwNjQ3MjYxNjY3NDIwNjQ2ZjYzNzU2ZDY1NmU3NDczMjA3NjYxNmM2OTY0 MjA2NjZmNzIyMDYxMjA2ZDYxNzg2OTZkNzU2ZDIwNmY2NjIwNzM2OTc4MjA2ZDZmNmU3NDY4NzMy MDYxNmU2NDIwNmQ2MTc5MjA2MjY1MjA3NTcwNjQ2MTc0NjU2NDJjMjA3MjY1NzA2YzYxNjM2NTY0 MmMyMDZmNzIyMDZmNjI3MzZmNmM2NTc0NjU2NDIwNjI3OTIwNmY3NDY4NjU3MjIwNjQ2ZjYzNzU2 ZDY1NmU3NDczMjA2MTc0MjA2MTZlNzkyMDc0Njk2ZDY1MmUyMDQ5NzQyMDY5NzMyMDY5NmU2MTcw NzA3MjZmNzA3MjY5NjE3NDY1MjA3NDZmMjA3NTczNjUyMDQ5NmU3NDY1NzI2ZTY1NzQyZDQ0NzI2 MTY2NzQ3MzIwNjE3MzIwNzI2NTY2NjU3MjY1NmU2MzY1MjA2ZDYxNzQ2NTcyNjk2MTZjMjA2Zjcy MjA3NDZmMjA2MzY5NzQ2NTIwNzQ2ODY1NmQyMDZmNzQ2ODY1NzIyMDc0Njg2MTZlMjA2MTczMjAy ZmUyODA5Yzc3NmY3MjZiMjA2OTZlMjA3MDcyNmY2NzQ5NmU3NDY1NzI2ZTY1NzQyZDQ0NzI2MTY2 NzQ3MzIwNjE3MjY1MjA2NDcyNjE2Njc0MjA2NDZmNjM3NTZkNjU2ZTc0NzMyMDc2NjE2YzY5NjQy MDY2NmY3MjIwNjEyMDZkNjE3ODY5NmQ3NTZkMjA2ZjY2MjA3MzY5NzgyMDZkCi0gQ2lwaGVydGV4 dCA9IDY0YTA4NjE1NzU4NjFhZjQ2MGYwNjJjNzliZTY0M2JkNWU4MDVjZmQzNDVjZjM4OWYxMDg2 NzBhYzc2YzhjYjI0YzZjZmMxODc1NWQ0M2VlYTA5ZWU5NGUzODJkMjZiMGJkYjdiNzNjMzIxYjAx MDBkNGYwM2I3ZjM1NTg5NGNmMzMyZjgzMGU3MTBiOTdjZTk4YzhhODRhYmQwYjk0ODExNGFkMTc2 ZTAwOGQzM2JkNjBmOTgyYjFmZjM3Yzg1NTk3OTdhMDZlZjRmMGVmNjFjMTg2MzI0ZTJiMzUwNjM4 MzYwNjkwN2I2YTdjMDJiMGY5ZjYxNTdiNTNjODY3ZTRiOTE2NmM3NjdiODA0ZDQ2YTU5YjUyMTZj ZGU3YTRlOTkwNDBjNWE0MDQzMzIyNWVlMjgyYTFiMGEwNmM1MjNlYWY0NTM0ZDdmODNmYTExNTVi MDA0NzcxOGNiYzU0NmEwZDA3MmIwNGIzNTY0ZWVhMWI0MjIyNzNmNTQ4MjcxYTBiYjIzMTYwNTNm YTc2OTkxOTU1ZWJkNjMxNTk0MzRlY2ViYjRlNDY2ZGFlNWExMDczYTY3Mjc2MjcwOTdhMTA0OWU2 MTdkOTFkMzYxMDk0ZmE2OGYwZmY3Nzk4NzEzMDMwNWJlYWJhMmVkYTA0ZGY5OTdiNzE0ZDZjNmYy YzI5OWRhNjViYTI1ZTZhODU4NDJiZjA0NDBmZDk4YTlhMjI2NmIwNjFjNGIzYTEzMzI3YzA5MGY5 YTA3ODlmNThhYWQ4MDUyNzVlNDM3OGE1MjVmMTkyMzJiZmJmYjc0OWVkZTM4NDgwZjQwNWNmNDNl YzJmMWY4NjE5ZWJjYmM4MGE4OWU5MmE4NTljNzkxMWU2NzQ5NzdhYjE3ZDRhNzEyNmE2YjhhNDc3 MzU4ZmYxNGEzNDRkMjc2ZWY2ZTUwNGUxMDI2OGFjMzYxOWZjZjkwYzJkNmMwM2ZjMmUzZDFmMjkw ZDliZjI2YzFmYTE0OTVkZDhmOTdlZWM2MjI5YTU1YzIzNTRlNDUyNDE0MzU1MWE1Y2MzNzBhMWM2 MjJjOTM5MDUzMGNmZjIxYzNlMWVkNTBjNWUzZGFmOTc1MThjY2NlMzQxNTZiZGJkN2VhZmFiOGJk NDE3YWVmMjVjNmM5MjczMDE3MzFiZDMxOWQyNDdhMWQ1YzMxODZlZDEwYmZkOWE3YTI0YmFjMzBl M2U0NTAzZWQ5MjA0MTU0ZDMzOGI3OWVhMjc2ZTcwNThlN2YyMGY0ZDRmZDFhYzkzZDYzZjYxMWFm N2I2ZDAwNmMyYTcyYWRkMGVlZGM0OTdiMTljYjMwYTE5ODgxNjY2NGYwZGEwMDE1NWYyZTJkNmFj NjEwNDViMjk2ZDYxNDMwMWUwYWQ0OTgzMzA4MDI4ODUwZGQ0ZmVmZmUzYTgxNjM5NzAzMDZlNDA0 N2Y1YTE2NWNiNGJlZmJjMTI5NzI5Y2QyZTI4NmU4MzdlOWI2MDY0ODZkNDAyYWNjM2RlYzViZjhi OTIzODdmNmU0ODZmMjE0MAotKwotK0NpcGhlciA9IGNoYWNoYTIwLXBvbHkxMzA1Ci0rS2V5ID0g MWM5MjQwYTVlYjU1ZDM4YWYzMzM4ODg2MDRmNmI1ZjA0NzM5MTdjMTQwMmI4MDA5OWRjYTVjYmMy MDcwNzVjMAotK0lWID0gZmYwMDAwMDAwMDAxMDIwMzA0MDUwNjA3MDgKLStBQUQgPSBmMzMzODg4 NjAwMDAwMDAwMDAwMDRlOTEKLStUYWcgPSBlMDcyM2JjZTIzNTI4Y2U2Y2NiMTBmZjk2MjcwMzhi ZgotK1BsYWludGV4dCA9IDQ5NmU3NDY1NzI2ZTY1NzQyZDQ0NzI2MTY2NzQ3MzIwNjE3MjY1MjA2 NDcyNjE2Njc0MjA2NDZmNjM3NTZkNjU2ZTc0NzMyMDc2NjE2YzY5NjQyMDY2NmY3MjIwNjEyMDZk NjE3ODY5NmQ3NTZkMjA2ZjY2MjA3MzY5NzgyMDZkNmY2ZTc0Njg3MzIwNjE2ZTY0MjA2ZDYxNzky MDYyNjUyMDc1NzA2NDYxNzQ2NTY0MmMyMDcyNjU3MDZjNjE2MzY1NjQyYzIwNmY3MjIwNmY2Mjcz NmY2YzY1NzQ2NTY0MjA2Mjc5MjA2Zjc0Njg2NTcyMjA2NDZmNjM3NTZkNjU2ZTc0NzMyMDYxNzQy MDYxNmU3OTIwNzQ2OTZkNjUyZTIwNDk3NDIwNjk3MzIwNjk2ZTYxNzA3MDcyNmY3MDcyNjk2MTc0 NjUyMDc0NmYyMDc1NzM2NTIwNDk2ZTc0NjU3MjZlNjU3NDJkNDQ3MjYxNjY3NDczMjA2MTczMjA3 MjY1NjY2NTcyNjU2ZTYzNjUyMDZkNjE3NDY1NzI2OTYxNmMyMDZmNzIyMDc0NmYyMDYzNjk3NDY1 MjA3NDY4NjU2ZDIwNmY3NDY4NjU3MjIwNzQ2ODYxNmUyMDYxNzMyMDJmZTI4MDljNzc2ZjcyNmIy MDY5NmUyMDcwNzI2ZjY3NDk2ZTc0NjU3MjZlNjU3NDJkNDQ3MjYxNjY3NDczMjA2MTcyNjUyMDY0 NzI2MTY2NzQyMDY0NmY2Mzc1NmQ2NTZlNzQ3MzIwNzY2MTZjNjk2NDIwNjY2ZjcyMjA2MTIwNmQ2 MTc4Njk2ZDc1NmQyMDZmNjYyMDczNjk3ODIwNmQ2ZjZlNzQ2ODczMjA2MTZlNjQyMDZkNjE3OTIw NjI2NTIwNzU3MDY0NjE3NDY1NjQyYzIwNzI2NTcwNmM2MTYzNjU2NDJjMjA2ZjcyMjA2ZjYyNzM2 ZjZjNjU3NDY1NjQyMDYyNzkyMDZmNzQ2ODY1NzIyMDY0NmY2Mzc1NmQ2NTZlNzQ3MzIwNjE3NDIw NjE2ZTc5MjA3NDY5NmQ2NTJlMjA0OTc0MjA2OTczMjA2OTZlNjE3MDcwNzI2ZjcwNzI2OTYxNzQ2 NTIwNzQ2ZjIwNzU3MzY1MjA0OTZlNzQ2NTcyNmU2NTc0MmQ0NDcyNjE2Njc0NzMyMDYxNzMyMDcy NjU2NjY1NzI2NTZlNjM2NTIwNmQ2MTc0NjU3MjY5NjE2YzIwNmY3MjIwNzQ2ZjIwNjM2OTc0NjUy MDc0Njg2NTZkMjA2Zjc0Njg2NTcyMjA3NDY4NjE2ZTIwNjE3MzIwMmZlMjgwOWM3NzZmNzI2YjIw Njk2ZTIwNzA3MjZmNjc0OTZlNzQ2NTcyNmU2NTc0MmQ0NDcyNjE2Njc0NzMyMDYxNzI2NTIwNjQ3 MjYxNjY3NDIwNjQ2ZjYzNzU2ZDY1NmU3NDczMjA3NjYxNmM2OTY0MjA2NjZmNzIyMDYxMjA2ZDYx Nzg2OTZkNzU2ZDIwNmY2NjIwNzM2OTc4MjA2ZAotK0NpcGhlcnRleHQgPSA2NGEwODYxNTc1ODYx YWY0NjBmMDYyYzc5YmU2NDNiZDVlODA1Y2ZkMzQ1Y2YzODlmMTA4NjcwYWM3NmM4Y2IyNGM2Y2Zj MTg3NTVkNDNlZWEwOWVlOTRlMzgyZDI2YjBiZGI3YjczYzMyMWIwMTAwZDRmMDNiN2YzNTU4OTRj ZjMzMmY4MzBlNzEwYjk3Y2U5OGM4YTg0YWJkMGI5NDgxMTRhZDE3NmUwMDhkMzNiZDYwZjk4MmIx ZmYzN2M4NTU5Nzk3YTA2ZWY0ZjBlZjYxYzE4NjMyNGUyYjM1MDYzODM2MDY5MDdiNmE3YzAyYjBm OWY2MTU3YjUzYzg2N2U0YjkxNjZjNzY3YjgwNGQ0NmE1OWI1MjE2Y2RlN2E0ZTk5MDQwYzVhNDA0 MzMyMjVlZTI4MmExYjBhMDZjNTIzZWFmNDUzNGQ3ZjgzZmExMTU1YjAwNDc3MThjYmM1NDZhMGQw NzJiMDRiMzU2NGVlYTFiNDIyMjczZjU0ODI3MWEwYmIyMzE2MDUzZmE3Njk5MTk1NWViZDYzMTU5 NDM0ZWNlYmI0ZTQ2NmRhZTVhMTA3M2E2NzI3NjI3MDk3YTEwNDllNjE3ZDkxZDM2MTA5NGZhNjhm MGZmNzc5ODcxMzAzMDViZWFiYTJlZGEwNGRmOTk3YjcxNGQ2YzZmMmMyOTlkYTY1YmEyNWU2YTg1 ODQyYmYwNDQwZmQ5OGE5YTIyNjZiMDYxYzRiM2ExMzMyN2MwOTBmOWEwNzg5ZjU4YWFkODA1Mjc1 ZTQzNzhhNTI1ZjE5MjMyYmZiZmI3NDllZGUzODQ4MGY0MDVjZjQzZWMyZjFmODYxOWViY2JjODBh ODllOTJhODU5Yzc5MTFlNjc0OTc3YWIxN2Q0YTcxMjZhNmI4YTQ3NzM1OGZmMTRhMzQ0ZDI3NmVm NmU1MDRlMTAyNjhhYzM2MTlmY2Y5MGMyZDZjMDNmYzJlM2QxZjI5MGQ5YmYyNmMxZmExNDk1ZGQ4 Zjk3ZWVjNjIyOWE1NWMyMzU0ZTQ1MjQxNDM1NTFhNWNjMzcwYTFjNjIyYzkzOTA1MzBjZmYyMWMz ZTFlZDUwYzVlM2RhZjk3NTE4Y2NjZTM0MTU2YmRiZDdlYWZhYjhiZDQxN2FlZjI1YzZjOTI3MzAx NzMxYmQzMTlkMjQ3YTFkNWMzMTg2ZWQxMGJmZDlhN2EyNGJhYzMwZTNlNDUwM2VkOTIwNDE1NGQz MzhiNzllYTI3NmU3MDU4ZTdmMjBmNGQ0ZmQxYWM5M2Q2M2Y2MTFhZjdiNmQwMDZjMmE3MmFkZDBl ZWRjNDk3YjE5Y2IzMGExOTg4MTY2NjRmMGRhMDAxNTVmMmUyZDZhYzYxMDQ1YjI5NmQ2MTQzMDFl MGFkNDk4MzMwODAyODg1MGRkNGZlZmZlM2E4MTYzOTcwMzA2ZTQwNDdmNWExNjVjYjRiZWZiYzEy OTcyOWNkMmUyODZlODM3ZTliNjA2NDg2ZDQwMmFjYzNkZWM1YmY4YjkyMzg3ZjZlNDg2ZjIxNDAK LStSZXN1bHQgPSBJTlZBTElEX0lWX0xFTkdUSAotZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvdGVz dC9yZWNpcGVzLzMwLXRlc3RfZXZwX2RhdGEvZXZwbWFjLnR4dC5zeW5jIG9wZW5zc2wtMS4xLjFi L3Rlc3QvcmVjaXBlcy8zMC10ZXN0X2V2cF9kYXRhL2V2cG1hYy50eHQKLS0tLSBvcGVuc3NsLTEu MS4xYi90ZXN0L3JlY2lwZXMvMzAtdGVzdF9ldnBfZGF0YS9ldnBtYWMudHh0LnN5bmMJMjAxOS0w Mi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMS4xYi90ZXN0L3Jl Y2lwZXMvMzAtdGVzdF9ldnBfZGF0YS9ldnBtYWMudHh0CTIwMTktMDUtMDMgMDg6NTU6NTEuNTM5 NDA2ODgzICswMjAwCi1AQCAtMzUxLDYgKzM1MSwxNCBAQCBJbnB1dCA9ICJTYW1wbGUgbWVzc2Fn ZSBmb3Iga2V5bGVuPmJsb2NrCi0gS2V5ID0gMDAwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBl MGYxMDExMTIxMzE0MTUxNjE3MTgxOTFhMWIxYzFkMWUxZjIwMjEyMjIzMjQyNTI2MjcyODI5MmEy YjJjMmQyZTJmMzAzMTMyMzMzNDM1MzYzNzM4MzkzYTNiM2MzZDNlM2Y0MDQxNDI0MzQ0NDU0NjQ3 NDg0OTRhNGI0YzRkNGU0ZjUwNTE1MjUzNTQ1NTU2NTc1ODU5NWE1YjVjNWQ1ZTVmNjA2MTYyNjM2 NDY1NjY2NzY4Njk2YTZiNmM2ZDZlNmY3MDcxNzI3Mzc0NzU3Njc3Nzg3OTdhN2I3YzdkN2U3Zjgw ODE4MjgzODQ4NTg2ODcKLSBPdXRwdXQgPSA1ZjQ2NGY1ZTViNzg0OGUzODg1ZTQ5YjJjMzg1ZjA2 OTQ5ODVkMGUzODk2NjI0MmRjNGE1ZmUzZmVhNGIzN2Q0NmI2NWNlY2VkNWRjZjU5NDM4ZGQ4NDBi YWIyMjI2OWYwYmE3ZmViZGI5ZmNmNzQ2MDJhMzU2NjZiMmEzMjkxNQotIAotK1RpdGxlID0gSE1B QyBzZWxmIGdlbmVyYXRlZCB0ZXN0cwotKwotK01BQyA9IEhNQUMKLStBbGdvcml0aG0gPSBTSEFL RTEyOAotK0lucHV0ID0gIlRlc3QgdGhhdCBTSEFLRTEyOCBmYWlscyIKLStLZXkgPSAwMDAxMDIw MzA0MDUwNjA3MDgwOTBhMGIwYzBkMGUwZjEwMTExMjEzMTQxNTE2MTcxODE5MWExYjFjMWQxZTFm Ci0rUmVzdWx0ID0gRElHRVNUU0lHTklOSVRfRVJST1IKLSsKLSAKLSBUaXRsZSA9IENNQUMgdGVz dHMgKGZyb20gRklQUyBtb2R1bGUpCi0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMS4xYi90ZXN0L3Jl Y2lwZXMvODAtdGVzdF9jbXMudC5zeW5jIG9wZW5zc2wtMS4xLjFiL3Rlc3QvcmVjaXBlcy84MC10 ZXN0X2Ntcy50Ci0tLS0gb3BlbnNzbC0xLjEuMWIvdGVzdC9yZWNpcGVzLzgwLXRlc3RfY21zLnQu c3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4x LjFiL3Rlc3QvcmVjaXBlcy84MC10ZXN0X2Ntcy50CTIwMTktMDUtMDMgMDg6NTU6NTEuNTMzNDA2 OTg2ICswMjAwCi1AQCAtMzA4LDYgKzMwOCwxNCBAQCBteSBAc21pbWVfY21zX3BhcmFtX3Rlc3Rz ID0gKAotIAkiLUNBZmlsZSIsIGNhdGZpbGUoJHNtZGlyLCAic21yb290LnBlbSIpLCAiLW91dCIs ICJzbXRzdC50eHQiIF0KLSAgICAgXSwKLSAKLSsgICAgWyAic2lnbmVkIGNvbnRlbnQgdGVzdCBz dHJlYW1pbmcgUEVNIGZvcm1hdCwgUlNBIGtleXMsIFBTUyBzaWduYXR1cmUsIHNhbHRsZW49LTMi LAotKyAgICAgIFsgIi1zaWduIiwgIi1pbiIsICRzbWNvbnQsICItb3V0Zm9ybSIsICJQRU0iLCAi LW5vZGV0YWNoIiwKLSsJIi1zaWduZXIiLCBjYXRmaWxlKCRzbWRpciwgInNtcnNhMS5wZW0iKSwg Ii1rZXlvcHQiLCAicnNhX3BhZGRpbmdfbW9kZTpwc3MiLAotKwkiLWtleW9wdCIsICJyc2FfcHNz X3NhbHRsZW46LTMiLCAiLW91dCIsICJ0ZXN0LmNtcyIgXSwKLSsgICAgICBbICItdmVyaWZ5Iiwg Ii1pbiIsICJ0ZXN0LmNtcyIsICItaW5mb3JtIiwgIlBFTSIsCi0rCSItQ0FmaWxlIiwgY2F0Zmls ZSgkc21kaXIsICJzbXJvb3QucGVtIiksICItb3V0IiwgInNtdHN0LnR4dCIgXQotKyAgICBdLAot KwotICAgICBbICJzaWduZWQgY29udGVudCB0ZXN0IHN0cmVhbWluZyBQRU0gZm9ybWF0LCBSU0Eg a2V5cywgUFNTIHNpZ25hdHVyZSwgbm8gYXR0cmlidXRlcyIsCi0gICAgICAgWyAiLXNpZ24iLCAi LWluIiwgJHNtY29udCwgIi1vdXRmb3JtIiwgIlBFTSIsICItbm9kZXRhY2giLCAiLW5vYXR0ciIs Ci0gCSItc2lnbmVyIiwgY2F0ZmlsZSgkc21kaXIsICJzbXJzYTEucGVtIiksICIta2V5b3B0Iiwg InJzYV9wYWRkaW5nX21vZGU6cHNzIiwKLWRpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL3Rlc3QvcnNh X3Rlc3QuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL3Rlc3QvcnNhX3Rlc3QuYwotLS0tIG9wZW5zc2wt MS4xLjFiL3Rlc3QvcnNhX3Rlc3QuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAw ICswMTAwCi0rKysgb3BlbnNzbC0xLjEuMWIvdGVzdC9yc2FfdGVzdC5jCTIwMTktMDUtMDMgMDg6 NTU6NTEuNTIzNDA3MTU3ICswMjAwCi1AQCAtMSw1ICsxLDUgQEAKLSAvKgotLSAqIENvcHlyaWdo dCAxOTk5LTIwMTcgVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy dmVkLgotKyAqIENvcHlyaWdodCAxOTk5LTIwMTkgVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3Jz LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICAqCi0gICogTGljZW5zZWQgdW5kZXIgdGhlIE9wZW5T U0wgbGljZW5zZSAodGhlICJMaWNlbnNlIikuICBZb3UgbWF5IG5vdCB1c2UKLSAgKiB0aGlzIGZp bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBjYW4gb2J0YWlu IGEgY29weQotQEAgLTI2OCw2ICsyNjgsMzYgQEAgZXJyOgotICAgICByZXR1cm4gcmV0OwotIH0K LSAKLStzdGF0aWMgaW50IHRlc3RfcnNhX3NzbHYyMyhpbnQgaWR4KQotK3sKLSsgICAgaW50IHJl dCA9IDA7Ci0rICAgIFJTQSAqa2V5OwotKyAgICB1bnNpZ25lZCBjaGFyIHB0ZXh0WzI1Nl07Ci0r ICAgIHVuc2lnbmVkIGNoYXIgY3RleHRbMjU2XTsKLSsgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIg cHRleHRfZXhbXSA9ICJceDU0XHg4NVx4OWJceDM0XHgyY1x4NDlceGVhXHgyYSI7Ci0rICAgIHVu c2lnbmVkIGNoYXIgY3RleHRfZXhbMjU2XTsKLSsgICAgaW50IHBsZW47Ci0rICAgIGludCBjbGVu ID0gMDsKLSsgICAgaW50IG51bTsKLSsKLSsgICAgcGxlbiA9IHNpemVvZihwdGV4dF9leCkgLSAx OwotKyAgICBjbGVuID0gcnNhX3NldGtleSgma2V5LCBjdGV4dF9leCwgaWR4KTsKLSsKLSsgICAg bnVtID0gUlNBX3B1YmxpY19lbmNyeXB0KHBsZW4sIHB0ZXh0X2V4LCBjdGV4dCwga2V5LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUlNBX1NTTFYyM19QQURESU5HKTsKLSsgICAgaWYg KCFURVNUX2ludF9lcShudW0sIGNsZW4pKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIG51 bSA9IFJTQV9wcml2YXRlX2RlY3J5cHQobnVtLCBjdGV4dCwgcHRleHQsIGtleSwgUlNBX1NTTFYy M19QQURESU5HKTsKLSsgICAgaWYgKCFURVNUX21lbV9lcShwdGV4dCwgbnVtLCBwdGV4dF9leCwg cGxlbikpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgcmV0ID0gMTsKLStlcnI6Ci0rICAg IFJTQV9mcmVlKGtleSk7Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotIHN0YXRpYyBpbnQgdGVz dF9yc2Ffb2FlcChpbnQgaWR4KQotIHsKLSAgICAgaW50IHJldCA9IDA7Ci1AQCAtMzMyLDYgKzM2 Miw3IEBAIGVycjoKLSBpbnQgc2V0dXBfdGVzdHModm9pZCkKLSB7Ci0gICAgIEFERF9BTExfVEVT VFModGVzdF9yc2FfcGtjczEsIDMpOwotKyAgICBBRERfQUxMX1RFU1RTKHRlc3RfcnNhX3NzbHYy MywgMyk7Ci0gICAgIEFERF9BTExfVEVTVFModGVzdF9yc2Ffb2FlcCwgMyk7Ci0gICAgIHJldHVy biAxOwotIH0KKyAgICAgICAgIGlmIChzdHItPnN0cmluZyA9PSBOVUxMKQoKZGlmZiAtLWdpdCBh L29wZW5zc2wtMS4xLjEtdmVyc2lvbi1vdmVycmlkZS5wYXRjaCBiL29wZW5zc2wtMS4xLjEtdmVy c2lvbi1vdmVycmlkZS5wYXRjaAppbmRleCAyZDFkZjBhLi43OTcwYjg0IDEwMDY0NAotLS0gYS9v cGVuc3NsLTEuMS4xLXZlcnNpb24tb3ZlcnJpZGUucGF0Y2gKKysrIGIvb3BlbnNzbC0xLjEuMS12 ZXJzaW9uLW92ZXJyaWRlLnBhdGNoCkBAIC0xLDEyICsxLDEyIEBACi1kaWZmIC11cCBvcGVuc3Ns LTEuMS4xYi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaC52ZXJzaW9uLW92ZXJyaWRlIG9wZW5z c2wtMS4xLjFiL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0tLS0gb3BlbnNzbC0xLjEuMWIv aW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgudmVyc2lvbi1vdmVycmlkZQkyMDE5LTAyLTI4IDEx OjM0OjU2LjQyNzM2MTc5NiArMDEwMAotKysrIG9wZW5zc2wtMS4xLjFiL2luY2x1ZGUvb3BlbnNz bC9vcGVuc3Nsdi5oCTIwMTktMDItMjggMTE6MzU6NDAuNDg3NTQyNzQ3ICswMTAwCitkaWZmIC11 cCBvcGVuc3NsLTEuMS4xYy9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaC52ZXJzaW9uLW92ZXJy aWRlIG9wZW5zc2wtMS4xLjFjL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCistLS0gb3BlbnNz bC0xLjEuMWMvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgudmVyc2lvbi1vdmVycmlkZQkyMDE5 LTA1LTI5IDE1OjUyOjMwLjAxNDczNDg1OSArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFjL2luY2x1 ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCTIwMTktMDUtMjkgMTU6NTM6MjMuMDkzODAwODMxICswMjAw CiBAQCAtNDAsNyArNDAsNyBAQCBleHRlcm4gIkMiIHsKICAgKiAgbWFqb3IgbWlub3IgZml4IGZp bmFsIHBhdGNoL2JldGEpCiAgICovCi0gIyBkZWZpbmUgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiAg MHgxMDEwMTAyZkwKLS0jIGRlZmluZSBPUEVOU1NMX1ZFUlNJT05fVEVYVCAgICAiT3BlblNTTCAx LjEuMWIgIDI2IEZlYiAyMDE5IgotKyMgZGVmaW5lIE9QRU5TU0xfVkVSU0lPTl9URVhUICAgICJP cGVuU1NMIDEuMS4xYiBGSVBTICAyNiBGZWIgMjAxOSIKKyAjIGRlZmluZSBPUEVOU1NMX1ZFUlNJ T05fTlVNQkVSICAweDEwMTAxMDNmTAorLSMgZGVmaW5lIE9QRU5TU0xfVkVSU0lPTl9URVhUICAg ICJPcGVuU1NMIDEuMS4xYyAgMjggTWF5IDIwMTkiCisrIyBkZWZpbmUgT1BFTlNTTF9WRVJTSU9O X1RFWFQgICAgIk9wZW5TU0wgMS4xLjFjIEZJUFMgIDI4IE1heSAyMDE5IgogIAogIC8qLQogICAq IFRoZSBtYWNyb3MgYmVsb3cgYXJlIHRvIGJlIHVzZWQgZm9yIHNoYXJlZCBsaWJyYXJ5ICguc28s IC5kbGwsIC4uLikKCmRpZmYgLS1naXQgYS9vcGVuc3NsLnNwZWMgYi9vcGVuc3NsLnNwZWMKaW5k ZXggMDRiYjgzZi4uNGRlMDE0YSAxMDA2NDQKLS0tIGEvb3BlbnNzbC5zcGVjCisrKyBiL29wZW5z c2wuc3BlYwpAQCAtMjEsOCArMjEsOCBAQAogCiBTdW1tYXJ5OiBVdGlsaXRpZXMgZnJvbSB0aGUg Z2VuZXJhbCBwdXJwb3NlIGNyeXB0b2dyYXBoeSBsaWJyYXJ5IHdpdGggVExTIGltcGxlbWVudGF0 aW9uCiBOYW1lOiBvcGVuc3NsCi1WZXJzaW9uOiAxLjEuMWIKLVJlbGVhc2U6IDEwJXs/ZGlzdH0K K1ZlcnNpb246IDEuMS4xYworUmVsZWFzZTogMSV7P2Rpc3R9CiBFcG9jaDogMQogIyBXZSBoYXZl IHRvIHJlbW92ZSBjZXJ0YWluIHBhdGVudGVkIGFsZ29yaXRobXMgZnJvbSB0aGUgb3BlbnNzbCBz b3VyY2UKICMgdGFyYmFsbCB3aXRoIHRoZSBob2JibGUtb3BlbnNzbCBzY3JpcHQgd2hpY2ggaXMg aW5jbHVkZWQgYmVsb3cuCkBAIC00NTQsNiArNDU0LDkgQEAgZXhwb3J0IExEX0xJQlJBUllfUEFU SAogJWxkY29uZmlnX3NjcmlwdGxldHMgbGlicwogCiAlY2hhbmdlbG9nCisqIFdlZCBNYXkgMjkg MjAxOSBUb23DocWhIE1yw6F6IDx0bXJhekByZWRoYXQuY29tPiAxLjEuMWMtMQorLSB1cGRhdGUg dG8gdGhlIDEuMS4xYyByZWxlYXNlCisKICogRnJpIE1heSAxMCAyMDE5IFRvbcOhxaEgTXLDoXog PHRtcmF6QHJlZGhhdC5jb20+IDEuMS4xYi0xMAogLSBBbm90aGVyIGF0dGVtcHQgYXQgdGhlIEFF Uy1DQ00gcmVncmVzc2lvbiBmaXgKIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmlu ZGV4IDY0NTZmYWYuLjFjMDEzYTQgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpA QCAtMSArMSBAQAotU0hBNTEyIChvcGVuc3NsLTEuMS4xYi1ob2JibGVkLnRhci54eikgPSA4MDU1 YjE5YmZlZWM0MWZlMDYwN2MwNGQ0NjhkMmYxNmExZTVmZTAyNjQyYzhkZWI2N2IwMDg3OGJlN2Uy OGFiMjY2ZDEzZGE0MWI5NTc2ODAwY2JhMGI5NDQ4MjUzZjI2ZjcyYWI4ODg5ZDY2NmY1ZDIzMTAz NjQ4ZjgwYmVhMQorU0hBNTEyIChvcGVuc3NsLTEuMS4xYy1ob2JibGVkLnRhci54eikgPSBlNjQ3 NjIwOTM2NmQyODRiZDAyZGNhN2U1OWE3YmEyNTYyYWE3YzU4YzkxZjAwNjNiMWUyYjBmMWE3Zjk2 ZmNmZjAwMGUyNmQ5YzZmNTliOTQ0ZTA0N2IzMzA1ZDIzN2VkNDQyZjcwMmRkZDJlOGM2YzdhNGQ1 YjEyZTIzYzhkYgo=