From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 44293 invoked by alias); 16 Apr 2019 13:08:27 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 44274 invoked by uid 89); 16 Apr 2019 13:08:27 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-io1-f48.google.com Received: from mail-io1-f48.google.com (HELO mail-io1-f48.google.com) (209.85.166.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 16 Apr 2019 13:08:25 +0000 Received: by mail-io1-f48.google.com with SMTP id f6so17560543iop.3; Tue, 16 Apr 2019 06:08:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=SBJodbHd74ZfjiBnu2eX7S9QL0RMEC8+JNJYgXWgTD4=; b=vhvs+5ZNOpjuMG0Zsp9PUp5tAxfT6J2s9Tb8Rp6I/sw9ByHOdeSyluAahZG5JcFjLN VddIGNcyFfGc14/S1jzXqT9JoLrEJqHOTnP8Lx1iKJCniVs8Lg3gKngC+4Wft3jDGnNm mbjFpUH6dQAWQ6i5qk/FWHZ+zwTc2TcR4V4jjm/8dNcM5FBI0eKMQ+/oF39SUiYhZnaB SMiZpVlHrjXRJpk9wCsVEhm/s5KnjVrjXEdpNY1FHoDMRDtRWO8VZCHk/XwT1KFVB7xB rS2wTudN04LtEO0VsnfZxWf328sBTLSzNyxSmBT61Oa1MEqhvCqMNlw3A37SayuNFYig eMKA== MIME-Version: 1.0 From: Nina Dinka Ranns Date: Tue, 16 Apr 2019 13:28:00 -0000 Message-ID: Subject: Adding noexcept-specification on tuple constructors (LWG 2899) To: gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org Content-Type: multipart/mixed; boundary="000000000000c485750586a57659" X-SW-Source: 2019-04/txt/msg00642.txt.bz2 --000000000000c485750586a57659 Content-Type: text/plain; charset="UTF-8" Content-length: 1226 Tested on Linux-PPC64 Adding noexcept-specification on tuple constructors (LWG 2899) 2019-04-13 Nina Dinka Ranns Adding noexcept-specification on tuple constructors (LWG 2899) * libstdc++-v3/include/std/tuple: (tuple()): Add noexcept-specification. (tuple(const _Elements&...)): Likewise (tuple(_UElements&&...)): Likewise (tuple(const tuple<_UElements...>&)): Likewise (tuple(tuple<_UElements...>&&)): Likewise (tuple(const _T1&, const _T2&)): Likewise (tuple(_U1&&, _U2&&)): Likewise (tuple(const tuple<_U1, _U2>&): Likewise (tuple(tuple<_U1, _U2>&&): Likewise (tuple(const pair<_U1, _U2>&): Likewise (tuple(pair<_U1, _U2>&&): Likewise * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc: New * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs2.cc: New * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs3.cc: New * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs4.cc: New * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs5.cc: New * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs6.cc: New --000000000000c485750586a57659 Content-Type: application/octet-stream; name="noexcept_tuple.diff" Content-Disposition: attachment; filename="noexcept_tuple.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jujsy5w80 Content-length: 85547 SW5kZXg6IGxpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC90dXBsZQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBsaWJzdGRjKystdjMvaW5jbHVkZS9zdGQv dHVwbGUJKHJldmlzaW9uIDI2ODk1NSkKKysrIGxpYnN0ZGMrKy12My9pbmNs dWRlL3N0ZC90dXBsZQkod29ya2luZyBjb3B5KQpAQCAtNTUyLDYgKzU1Miwx MiBAQAogCSAgcmV0dXJuCiAJICAgIF9fYW5kXzxpc19ub3Rocm93X2Fzc2ln bmFibGU8X0VsZW1lbnRzJiwgX1VFbGVtZW50cz4uLi4+Ojp2YWx1ZTsKIAl9 CisgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVUVsZW1lbnRzPgorCXN0 YXRpYyBjb25zdGV4cHIgYm9vbCBfX25vdGhyb3dfY29uc3RydWN0aWJsZSgp CisJeworCSAgcmV0dXJuCisJICAgIF9fYW5kXzxpc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8X0VsZW1lbnRzLCBfVUVsZW1lbnRzPi4uLj46OnZhbHVlOwor CX0KIAogICAgIHB1YmxpYzoKICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9E dW1teSA9IHZvaWQsCkBAIC01NTksNiArNTY1LDcgQEAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9JbXBsaWNpdGx5RGVmYXVsdENv bnN0cnVjdGlibGVUdXBsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2w+Ojp0eXBlID0gdHJ1ZT4KICAgICAgIGNvbnN0ZXhw ciB0dXBsZSgpCisgICAgICBub2V4Y2VwdChfX2FuZF88aXNfbm90aHJvd19k ZWZhdWx0X2NvbnN0cnVjdGlibGU8X0VsZW1lbnRzPi4uLj46OnZhbHVlKQog ICAgICAgOiBfSW5oZXJpdGVkKCkgeyB9CiAKICAgICAgIHRlbXBsYXRlPHR5 cGVuYW1lIF9EdW1teSA9IHZvaWQsCkBAIC01NjksNiArNTc2LDcgQEAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbXBsaWNpdGx5 RGVmYXVsdENvbnN0cnVjdGlibGVUdXBsZSgpLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2w+Ojp0eXBlID0gZmFsc2U+CiAgICAg ICBleHBsaWNpdCBjb25zdGV4cHIgdHVwbGUoKQorICAgICAgbm9leGNlcHQo X19hbmRfPGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9FbGVt ZW50cz4uLi4+Ojp2YWx1ZSkKICAgICAgIDogX0luaGVyaXRlZCgpIHsgfQog CiAgICAgICAvLyBTaG9ydGN1dCBmb3IgdGhlIGNhc2VzIHdoZXJlIGNvbnN0 cnVjdG9ycyB0YWtpbmcgX0VsZW1lbnRzLi4uCkBAIC01ODYsNiArNTk0LDcg QEAKICAgICAgICAgICAgICAgICAgJiYgKHNpemVvZi4uLihfRWxlbWVudHMp ID49IDEpLAogICAgICAgICAgICAgICAgYm9vbD46OnR5cGU9dHJ1ZT4KICAg ICAgICAgY29uc3RleHByIHR1cGxlKGNvbnN0IF9FbGVtZW50cyYuLi4gX19l bGVtZW50cykKKyAgICAgICAgbm9leGNlcHQoX19ub3Rocm93X2NvbnN0cnVj dGlibGU8Y29uc3QgX0VsZW1lbnRzJi4uLj4oKSkKICAgICAgIDogX0luaGVy aXRlZChfX2VsZW1lbnRzLi4uKSB7IH0KIAogICAgICAgdGVtcGxhdGU8dHlw ZW5hbWUgX0R1bW15ID0gdm9pZCwKQEAgLTU5Nyw2ICs2MDYsNyBAQAogICAg ICAgICAgICAgICAgICAmJiAoc2l6ZW9mLi4uKF9FbGVtZW50cykgPj0gMSks CiAgICAgICAgICAgICAgICBib29sPjo6dHlwZT1mYWxzZT4KICAgICAgIGV4 cGxpY2l0IGNvbnN0ZXhwciB0dXBsZShjb25zdCBfRWxlbWVudHMmLi4uIF9f ZWxlbWVudHMpCisgICAgICBub2V4Y2VwdChfX25vdGhyb3dfY29uc3RydWN0 aWJsZTxjb25zdCBfRWxlbWVudHMmLi4uPigpKQogICAgICAgOiBfSW5oZXJp dGVkKF9fZWxlbWVudHMuLi4pIHsgfQogCiAgICAgICAvLyBTaG9ydGN1dCBm b3IgdGhlIGNhc2VzIHdoZXJlIGNvbnN0cnVjdG9ycyB0YWtpbmcgX1VFbGVt ZW50cy4uLgpAQCAtNjI0LDYgKzYzNCw3IEBACiAgICAgICAgICAgICAgICAg ICAmJiAoc2l6ZW9mLi4uKF9FbGVtZW50cykgPj0gMSksCiAgICAgICAgIGJv b2w+Ojp0eXBlPXRydWU+CiAgICAgICAgIGNvbnN0ZXhwciB0dXBsZShfVUVs ZW1lbnRzJiYuLi4gX19lbGVtZW50cykKKyAgICAgICAgbm9leGNlcHQoX19h bmRfPGlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxfRWxlbWVudHMsX1VFbGVt ZW50cyYmPi4uLj46OnZhbHVlKQogICAgICAgICA6IF9Jbmhlcml0ZWQoc3Rk Ojpmb3J3YXJkPF9VRWxlbWVudHM+KF9fZWxlbWVudHMpLi4uKSB7IH0KIAog ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX1VFbGVtZW50cywgdHlwZW5h bWUKQEAgLTYzNSw2ICs2NDYsNyBAQAogICAgICAgICAgICAgICAgICAgJiYg KHNpemVvZi4uLihfRWxlbWVudHMpID49IDEpLAogICAgICAgICBib29sPjo6 dHlwZT1mYWxzZT4KICAgICAgICAgZXhwbGljaXQgY29uc3RleHByIHR1cGxl KF9VRWxlbWVudHMmJi4uLiBfX2VsZW1lbnRzKQorICAgICAgICBub2V4Y2Vw dChfX25vdGhyb3dfY29uc3RydWN0aWJsZTxfVUVsZW1lbnRzJiYuLi4+KCkp CiAJOiBfSW5oZXJpdGVkKHN0ZDo6Zm9yd2FyZDxfVUVsZW1lbnRzPihfX2Vs ZW1lbnRzKS4uLikgewl9CiAKICAgICAgIGNvbnN0ZXhwciB0dXBsZShjb25z dCB0dXBsZSYpID0gZGVmYXVsdDsKQEAgLTY1Niw2ICs2NjgsNyBAQAogICAg ICAgICAgICAgICAgICAgICBfTm9uTmVzdGVkVHVwbGU8Y29uc3QgdHVwbGU8 X1VFbGVtZW50cy4uLj4mPigpLAogICAgICAgICBib29sPjo6dHlwZT10cnVl PgogICAgICAgICBjb25zdGV4cHIgdHVwbGUoY29uc3QgdHVwbGU8X1VFbGVt ZW50cy4uLj4mIF9faW4pCisgICAgICAgIG5vZXhjZXB0KF9fbm90aHJvd19j b25zdHJ1Y3RpYmxlPGNvbnN0IF9VRWxlbWVudHMmLi4uPigpKQogICAgICAg ICA6IF9Jbmhlcml0ZWQoc3RhdGljX2Nhc3Q8Y29uc3QgX1R1cGxlX2ltcGw8 MCwgX1VFbGVtZW50cy4uLj4mPihfX2luKSkKICAgICAgICAgeyB9CiAKQEAg LTY2OCw2ICs2ODEsNyBAQAogICAgICAgICAgICAgICAgICAgICBfTm9uTmVz dGVkVHVwbGU8Y29uc3QgdHVwbGU8X1VFbGVtZW50cy4uLj4mPigpLAogICAg ICAgICBib29sPjo6dHlwZT1mYWxzZT4KICAgICAgICAgZXhwbGljaXQgY29u c3RleHByIHR1cGxlKGNvbnN0IHR1cGxlPF9VRWxlbWVudHMuLi4+JiBfX2lu KQorICAgICAgICBub2V4Y2VwdChfX25vdGhyb3dfY29uc3RydWN0aWJsZTxj b25zdCBfVUVsZW1lbnRzJi4uLj4oKSkKICAgICAgICAgOiBfSW5oZXJpdGVk KHN0YXRpY19jYXN0PGNvbnN0IF9UdXBsZV9pbXBsPDAsIF9VRWxlbWVudHMu Li4+Jj4oX19pbikpCiAgICAgICAgIHsgfQogCkBAIC02ODAsNiArNjk0LDcg QEAKICAgICAgICAgICAgICAgICAgICAgX05vbk5lc3RlZFR1cGxlPHR1cGxl PF9VRWxlbWVudHMuLi4+JiY+KCksCiAgICAgICAgIGJvb2w+Ojp0eXBlPXRy dWU+CiAgICAgICAgIGNvbnN0ZXhwciB0dXBsZSh0dXBsZTxfVUVsZW1lbnRz Li4uPiYmIF9faW4pCisgICAgICAgIG5vZXhjZXB0KF9fbm90aHJvd19jb25z dHJ1Y3RpYmxlPF9VRWxlbWVudHMmJi4uLj4oKSkKICAgICAgICAgOiBfSW5o ZXJpdGVkKHN0YXRpY19jYXN0PF9UdXBsZV9pbXBsPDAsIF9VRWxlbWVudHMu Li4+JiY+KF9faW4pKSB7IH0KIAogICAgICAgdGVtcGxhdGU8dHlwZW5hbWUu Li4gX1VFbGVtZW50cywgdHlwZW5hbWUgX0R1bW15ID0gdm9pZCwgdHlwZW5h bWUKQEAgLTY5MSw2ICs3MDYsNyBAQAogICAgICAgICAgICAgICAgICAgICBf Tm9uTmVzdGVkVHVwbGU8dHVwbGU8X1VFbGVtZW50cy4uLj4mJj4oKSwKICAg ICAgICAgYm9vbD46OnR5cGU9ZmFsc2U+CiAgICAgICAgIGV4cGxpY2l0IGNv bnN0ZXhwciB0dXBsZSh0dXBsZTxfVUVsZW1lbnRzLi4uPiYmIF9faW4pCisg ICAgICAgIG5vZXhjZXB0KF9fbm90aHJvd19jb25zdHJ1Y3RpYmxlPF9VRWxl bWVudHMmJi4uLj4oKSkKICAgICAgICAgOiBfSW5oZXJpdGVkKHN0YXRpY19j YXN0PF9UdXBsZV9pbXBsPDAsIF9VRWxlbWVudHMuLi4+JiY+KF9faW4pKSB7 IH0KIAogICAgICAgLy8gQWxsb2NhdG9yLWV4dGVuZGVkIGNvbnN0cnVjdG9y cy4KQEAgLTkwOCw2ICs5MjQsMTMgQEAKIAkJCWlzX25vdGhyb3dfYXNzaWdu YWJsZTxfVDImLCBfVTI+Pjo6dmFsdWU7CiAJfQogCisgICAgICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfVTEsIHR5cGVuYW1lIF9VMj4KKyAgICBzdGF0aWMgY29u c3RleHByIGJvb2wgX19ub3Rocm93X2NvbnN0cnVjdGlibGUoKQorICAgIHsK KyAgICAgIHJldHVybiBfX2FuZF88aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl PF9UMSwgX1UxPiwKKyAgICAJCWlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxf VDIsIF9VMj4+Ojp2YWx1ZTsKKyAgICB9CisKICAgICBwdWJsaWM6CiAgICAg ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1UxID0gX1QxLAogICAgICAgICAgICAg ICAgIHR5cGVuYW1lIF9VMiA9IF9UMiwKQEAgLTkxNiw2ICs5MzksOCBAQAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXNfaW1w bGljaXRseV9kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1UyPj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp2YWx1ZSwgYm9vbD46OnR5 cGUgPSB0cnVlPgogCWNvbnN0ZXhwciB0dXBsZSgpCisJbm9leGNlcHQoX19h bmRfPGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9UMT4sCisg ICAJCQlpc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0aWJsZTxfVDI+Pjo6 dmFsdWUpCiAJOiBfSW5oZXJpdGVkKCkgeyB9CiAKICAgICAgIHRlbXBsYXRl IDx0eXBlbmFtZSBfVTEgPSBfVDEsCkBAIC05MjksNiArOTU0LDggQEAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pc19pbXBsaWNpdGx5X2Rl ZmF1bHRfY29uc3RydWN0aWJsZTxfVTI+Pj4+CiAgICAgICAgICAgICAgICAg ICA6OnZhbHVlLCBib29sPjo6dHlwZSA9IGZhbHNlPgogCWV4cGxpY2l0IGNv bnN0ZXhwciB0dXBsZSgpCisJbm9leGNlcHQoX19hbmRfPGlzX25vdGhyb3df ZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9UMT4sCisgCQkJaXNfbm90aHJvd19k ZWZhdWx0X2NvbnN0cnVjdGlibGU8X1QyPj46OnZhbHVlKQogCTogX0luaGVy aXRlZCgpIHsgfQogCiAgICAgICAvLyBTaG9ydGN1dCBmb3IgdGhlIGNhc2Vz IHdoZXJlIGNvbnN0cnVjdG9ycyB0YWtpbmcgX1QxLCBfVDIKQEAgLTk0Myw2 ICs5NzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ltcGxp Y2l0bHlDb252ZXJ0aWJsZVR1cGxlPF9UMSwgX1QyPigpLAogCWJvb2w+Ojp0 eXBlID0gdHJ1ZT4KICAgICAgICAgY29uc3RleHByIHR1cGxlKGNvbnN0IF9U MSYgX19hMSwgY29uc3QgX1QyJiBfX2EyKQorICAgICAgICBub2V4Y2VwdChf X25vdGhyb3dfY29uc3RydWN0aWJsZTxjb25zdCBfVDEmLCBjb25zdCBfVDIm PigpKQogICAgICAgICA6IF9Jbmhlcml0ZWQoX19hMSwgX19hMikgeyB9CiAK ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9EdW1teSA9IHZvaWQsIHR5cGVu YW1lCkBAIC05NTIsNiArOTgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9JbXBsaWNpdGx5Q29udmVydGlibGVUdXBsZTxfVDEsIF9UMj4o KSwKIAlib29sPjo6dHlwZSA9IGZhbHNlPgogICAgICAgICBleHBsaWNpdCBj b25zdGV4cHIgdHVwbGUoY29uc3QgX1QxJiBfX2ExLCBjb25zdCBfVDImIF9f YTIpCisgICAgICAgIG5vZXhjZXB0KF9fbm90aHJvd19jb25zdHJ1Y3RpYmxl PGNvbnN0IF9UMSYsIGNvbnN0IF9UMiY+KCkpCiAgICAgICAgIDogX0luaGVy aXRlZChfX2ExLCBfX2EyKSB7IH0KIAogICAgICAgLy8gU2hvcnRjdXQgZm9y IHRoZSBjYXNlcyB3aGVyZSBjb25zdHJ1Y3RvcnMgdGFraW5nIF9VMSwgX1Uy CkBAIC05NjYsNiArOTk1LDcgQEAKIAkgICAgICAgICAgJiYgIWlzX3NhbWU8 X19yZW1vdmVfY3ZyZWZfdDxfVTE+LCBhbGxvY2F0b3JfYXJnX3Q+Ojp2YWx1 ZSwKIAlib29sPjo6dHlwZSA9IHRydWU+CiAgICAgICAgIGNvbnN0ZXhwciB0 dXBsZShfVTEmJiBfX2ExLCBfVTImJiBfX2EyKQorICAgICAgICBub2V4Y2Vw dChfX25vdGhyb3dfY29uc3RydWN0aWJsZTxfVTEmJixfVTImJj4oKSkKIAk6 IF9Jbmhlcml0ZWQoc3RkOjpmb3J3YXJkPF9VMT4oX19hMSksIHN0ZDo6Zm9y d2FyZDxfVTI+KF9fYTIpKSB7IH0KIAogICAgICAgdGVtcGxhdGU8dHlwZW5h bWUgX1UxLCB0eXBlbmFtZSBfVTIsIHR5cGVuYW1lCkBAIC05NzYsNiArMTAw Niw3IEBACiAJICAgICAgICAgICYmICFpc19zYW1lPF9fcmVtb3ZlX2N2cmVm X3Q8X1UxPiwgYWxsb2NhdG9yX2FyZ190Pjo6dmFsdWUsCiAJYm9vbD46OnR5 cGUgPSBmYWxzZT4KICAgICAgICAgZXhwbGljaXQgY29uc3RleHByIHR1cGxl KF9VMSYmIF9fYTEsIF9VMiYmIF9fYTIpCisgICAgICAgIG5vZXhjZXB0KF9f bm90aHJvd19jb25zdHJ1Y3RpYmxlPF9VMSYmLF9VMiYmPigpKQogCTogX0lu aGVyaXRlZChzdGQ6OmZvcndhcmQ8X1UxPihfX2ExKSwgc3RkOjpmb3J3YXJk PF9VMj4oX19hMikpIHsgfQogCiAgICAgICBjb25zdGV4cHIgdHVwbGUoY29u c3QgdHVwbGUmKSA9IGRlZmF1bHQ7CkBAIC05ODksNiArMTAyMCw3IEBACiAg ICAgICAgICAgICAgICAgICAgIF9JbXBsaWNpdGx5Q29udmVydGlibGVUdXBs ZTxfVTEsIF9VMj4oKSwKIAlib29sPjo6dHlwZSA9IHRydWU+CiAgICAgICAg IGNvbnN0ZXhwciB0dXBsZShjb25zdCB0dXBsZTxfVTEsIF9VMj4mIF9faW4p CisgICAgICAgIG5vZXhjZXB0KF9fbm90aHJvd19jb25zdHJ1Y3RpYmxlPGNv bnN0IF9VMSYsY29uc3QgX1UyJj4oKSkKIAk6IF9Jbmhlcml0ZWQoc3RhdGlj X2Nhc3Q8Y29uc3QgX1R1cGxlX2ltcGw8MCwgX1UxLCBfVTI+Jj4oX19pbikp IHsgfQogCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVTEsIHR5cGVuYW1l IF9VMiwgdHlwZW5hbWUKQEAgLTk5OCw2ICsxMDMwLDcgQEAKICAgICAgICAg ICAgICAgICAgICAgX0ltcGxpY2l0bHlDb252ZXJ0aWJsZVR1cGxlPF9VMSwg X1UyPigpLAogCWJvb2w+Ojp0eXBlID0gZmFsc2U+CiAgICAgICAgIGV4cGxp Y2l0IGNvbnN0ZXhwciB0dXBsZShjb25zdCB0dXBsZTxfVTEsIF9VMj4mIF9f aW4pCisgICAgICAgIG5vZXhjZXB0KF9fbm90aHJvd19jb25zdHJ1Y3RpYmxl PGNvbnN0IF9VMSYsY29uc3QgX1UyJj4oKSkKIAk6IF9Jbmhlcml0ZWQoc3Rh dGljX2Nhc3Q8Y29uc3QgX1R1cGxlX2ltcGw8MCwgX1UxLCBfVTI+Jj4oX19p bikpIHsgfQogCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVTEsIHR5cGVu YW1lIF9VMiwgdHlwZW5hbWUKQEAgLTEwMDcsNiArMTA0MCw3IEBACiAgICAg ICAgICAgICAgICAgICAgIF9JbXBsaWNpdGx5TW92ZUNvbnZlcnRpYmxlVHVw bGU8X1UxLCBfVTI+KCksCiAJYm9vbD46OnR5cGUgPSB0cnVlPgogICAgICAg ICBjb25zdGV4cHIgdHVwbGUodHVwbGU8X1UxLCBfVTI+JiYgX19pbikKKyAg ICAgICAgbm9leGNlcHQoX19ub3Rocm93X2NvbnN0cnVjdGlibGU8X1UxJiYs X1UyJiY+KCkpCiAJOiBfSW5oZXJpdGVkKHN0YXRpY19jYXN0PF9UdXBsZV9p bXBsPDAsIF9VMSwgX1UyPiYmPihfX2luKSkgeyB9CiAKICAgICAgIHRlbXBs YXRlPHR5cGVuYW1lIF9VMSwgdHlwZW5hbWUgX1UyLCB0eXBlbmFtZQpAQCAt MTAxNiw2ICsxMDUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgX0ltcGxp Y2l0bHlNb3ZlQ29udmVydGlibGVUdXBsZTxfVTEsIF9VMj4oKSwKIAlib29s Pjo6dHlwZSA9IGZhbHNlPgogICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIg dHVwbGUodHVwbGU8X1UxLCBfVTI+JiYgX19pbikKKyAgICAgICAgbm9leGNl cHQoX19ub3Rocm93X2NvbnN0cnVjdGlibGU8X1UxJiYsX1UyJiY+KCkpCiAJ OiBfSW5oZXJpdGVkKHN0YXRpY19jYXN0PF9UdXBsZV9pbXBsPDAsIF9VMSwg X1UyPiYmPihfX2luKSkgeyB9CiAKICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l IF9VMSwgdHlwZW5hbWUgX1UyLCB0eXBlbmFtZQpAQCAtMTAyNSw2ICsxMDYw LDcgQEAKICAgICAgICAgICAgICAgICAgICAgX0ltcGxpY2l0bHlDb252ZXJ0 aWJsZVR1cGxlPF9VMSwgX1UyPigpLAogCWJvb2w+Ojp0eXBlID0gdHJ1ZT4K ICAgICAgICAgY29uc3RleHByIHR1cGxlKGNvbnN0IHBhaXI8X1UxLCBfVTI+ JiBfX2luKQorICAgICAgICBub2V4Y2VwdChfX25vdGhyb3dfY29uc3RydWN0 aWJsZTxjb25zdCBfVTEmLGNvbnN0IF9VMiY+KCkpCiAJOiBfSW5oZXJpdGVk KF9faW4uZmlyc3QsIF9faW4uc2Vjb25kKSB7IH0KIAogICAgICAgdGVtcGxh dGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTIsIHR5cGVuYW1lCkBAIC0x MDM0LDYgKzEwNzAsNyBAQAogICAgICAgICAgICAgICAgICAgICBfSW1wbGlj aXRseUNvbnZlcnRpYmxlVHVwbGU8X1UxLCBfVTI+KCksCiAJYm9vbD46OnR5 cGUgPSBmYWxzZT4KICAgICAgICAgZXhwbGljaXQgY29uc3RleHByIHR1cGxl KGNvbnN0IHBhaXI8X1UxLCBfVTI+JiBfX2luKQorICAgICAgICBub2V4Y2Vw dChfX25vdGhyb3dfY29uc3RydWN0aWJsZTxjb25zdCBfVTEmLGNvbnN0IF9V MiY+KCkpCiAJOiBfSW5oZXJpdGVkKF9faW4uZmlyc3QsIF9faW4uc2Vjb25k KSB7IH0KIAogICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFt ZSBfVTIsIHR5cGVuYW1lCkBAIC0xMDQzLDYgKzEwODAsNyBAQAogICAgICAg ICAgICAgICAgICAgICBfSW1wbGljaXRseU1vdmVDb252ZXJ0aWJsZVR1cGxl PF9VMSwgX1UyPigpLAogCWJvb2w+Ojp0eXBlID0gdHJ1ZT4KICAgICAgICAg Y29uc3RleHByIHR1cGxlKHBhaXI8X1UxLCBfVTI+JiYgX19pbikKKyAgICAg ICAgbm9leGNlcHQoX19ub3Rocm93X2NvbnN0cnVjdGlibGU8X1UxJiYsX1Uy JiY+KCkpCiAJOiBfSW5oZXJpdGVkKHN0ZDo6Zm9yd2FyZDxfVTE+KF9faW4u Zmlyc3QpLAogCQkgICAgIHN0ZDo6Zm9yd2FyZDxfVTI+KF9faW4uc2Vjb25k KSkgeyB9CiAKQEAgLTEwNTMsNiArMTA5MSw3IEBACiAgICAgICAgICAgICAg ICAgICAgIF9JbXBsaWNpdGx5TW92ZUNvbnZlcnRpYmxlVHVwbGU8X1UxLCBf VTI+KCksCiAJYm9vbD46OnR5cGUgPSBmYWxzZT4KICAgICAgICAgZXhwbGlj aXQgY29uc3RleHByIHR1cGxlKHBhaXI8X1UxLCBfVTI+JiYgX19pbikKKyAg ICAgICAgbm9leGNlcHQoX19ub3Rocm93X2NvbnN0cnVjdGlibGU8X1UxJiYs X1UyJiY+KCkpCiAJOiBfSW5oZXJpdGVkKHN0ZDo6Zm9yd2FyZDxfVTE+KF9f aW4uZmlyc3QpLAogCQkgICAgIHN0ZDo6Zm9yd2FyZDxfVTI+KF9faW4uc2Vj b25kKSkgeyB9CiAKSW5kZXg6IGxpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBf dXRpbC90dXBsZS9jb25zL25vZXhjZXB0X3NwZWNzLmNjCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRp bC90dXBsZS9jb25zL25vZXhjZXB0X3NwZWNzLmNjCShub25leGlzdGVudCkK KysrIGxpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC90dXBsZS9jb25z L25vZXhjZXB0X3NwZWNzLmNjCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs MTkxIEBACisvLyB7IGRnLW9wdGlvbnMgeyAtc3RkPWdudSsrMmEgfSB9Cisv LyB7IGRnLWRvIHJ1biB7IHRhcmdldCBjKysyYSB9IH0KKworLy8gMjAxOS0w NC0xMCAgTmluYSBEaW5rYSBSYW5ucyAgPGRpbmthLnJhbm5zQGdtYWlsLmNv bT4KKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJl ZQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLy8g RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBv ciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8v CisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLy8KKy8vIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFsb25nCisvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo ZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorLy8gPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorCisjaW5jbHVkZSA8dHVwbGU+CisjaW5j bHVkZSA8dGVzdHN1aXRlX3RyMS5oPgorI2luY2x1ZGUgPHV0aWxpdHk+CisK Ky8qIERlZmF1bHRDb25zdHJ1Y3Rpb25UZXN0cyAqLworCit1c2luZyBuYW1l c3BhY2UgX19nbnVfdGVzdDsKKworYm9vbCB0aHJvd2luZ19jdG9yX2NhbGxl ZCA9IGZhbHNlOworCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sICBj aGVja0RlZmF1bHRUaHJvd0NvbnN0cnVjdCgpCit7CisgIHRocm93aW5nX2N0 b3JfY2FsbGVkID0gZmFsc2U7CisgIGJvb2wgZGVkdWNlZF9ub3Rocm93ID0g c3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlOworICBU IHR7fTsKKyAgcmV0dXJuIHRocm93aW5nX2N0b3JfY2FsbGVkICE9IGRlZHVj ZWRfbm90aHJvdzsKK30KKworCit0eXBlZGVmIHN0ZDo6dHVwbGU8aW50PiBJ VDsKK3R5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBpbnQ+IENJVDsKK3R5cGVk ZWYgc3RkOjp0dXBsZTxpbnQmJj4gUlZJVDsKK3R5cGVkZWYgc3RkOjp0dXBs ZTxpbnQsIGludD4gSUlUOwordHlwZWRlZiBzdGQ6OnBhaXI8aW50LCBpbnQ+ IElJUDsKK3R5cGVkZWYgc3RkOjp0dXBsZTxpbnQsIGludCwgaW50PiBJSUlU OworCituYW1lc3BhY2UgRGVmYXVsdENvbnN0cnVjdGlvblRlc3RzCit7Cisg IHN0cnVjdCBOb2V4Y2VwdERDCisgIHsKKyAgICBOb2V4Y2VwdERDKCkgbm9l eGNlcHQodHJ1ZSl7fQorICB9OworCisgIHN0cnVjdCBFeGNlcHREQworICB7 CisgICAgRXhjZXB0REMoKSBub2V4Y2VwdChmYWxzZSkKKyAgICAgIHsgIHRo cm93aW5nX2N0b3JfY2FsbGVkID0gdHJ1ZTsgfQorICB9OworCisgIHN0cnVj dCBFeHBsaWNpdE5vZXhjZXB0REMKKyAgeworICAgIGV4cGxpY2l0IEV4cGxp Y2l0Tm9leGNlcHREQygpIG5vZXhjZXB0KHRydWUpCisgICAgICAgIHt9Cisg IH07CisKKyAgc3RydWN0IEV4cGxpY2l0RXhjZXB0REMKKyAgeworICAgIGV4 cGxpY2l0IEV4cGxpY2l0RXhjZXB0REMoKSBub2V4Y2VwdChmYWxzZSkKKyAg ICAgICAgeyAgdGhyb3dpbmdfY3Rvcl9jYWxsZWQgPSB0cnVlOyB9CisgIH07 CisKKyAgdHlwZWRlZiBzdGQ6OnR1cGxlPE5vZXhjZXB0REM+IE5EVDsKKyAg dHlwZWRlZiBzdGQ6OnR1cGxlPEV4Y2VwdERDPiBFRFQ7CisgIHR5cGVkZWYg c3RkOjp0dXBsZTxFeHBsaWNpdE5vZXhjZXB0REM+IFhfTkRUOworICB0eXBl ZGVmIHN0ZDo6dHVwbGU8RXhwbGljaXRFeGNlcHREQz4gWF9FRFQ7CisKKyAg dHlwZWRlZiBzdGQ6OnR1cGxlPE5vZXhjZXB0REMsTm9leGNlcHREQz4gTk5E VDsKKyAgdHlwZWRlZiBzdGQ6OnR1cGxlPEV4Y2VwdERDLEV4Y2VwdERDPiBF RURUOworICB0eXBlZGVmIHN0ZDo6dHVwbGU8RXhjZXB0REMsTm9leGNlcHRE Qz4gRU5EVDsKKyAgdHlwZWRlZiBzdGQ6OnR1cGxlPEV4cGxpY2l0Tm9leGNl cHREQyxOb2V4Y2VwdERDPiBYX05ORFQ7CisgIHR5cGVkZWYgc3RkOjp0dXBs ZTxFeHBsaWNpdEV4Y2VwdERDLEV4Y2VwdERDPiBYX0VFRFQ7CisgIHR5cGVk ZWYgc3RkOjp0dXBsZTxFeGNlcHREQyxFeHBsaWNpdE5vZXhjZXB0REM+IFhf RU5EVDsKKworICB0eXBlZGVmIHN0ZDo6dHVwbGU8bG9uZywgTm9leGNlcHRE QywgTm9leGNlcHREQz4gTE5ETkRUOworICB0eXBlZGVmIHN0ZDo6dHVwbGU8 bG9uZywgTm9leGNlcHREQywgRXhjZXB0REM+IExOREVEVDsKKyAgdHlwZWRl ZiBzdGQ6OnR1cGxlPGxvbmcsIEV4cGxpY2l0Tm9leGNlcHREQywgTm9leGNl cHREQz4gWF9MTkVETkRUOworICB0eXBlZGVmIHN0ZDo6dHVwbGU8bG9uZywg RXhwbGljaXROb2V4Y2VwdERDLCBFeGNlcHREQz4gWF9MTkVERURUOworICB0 eXBlZGVmIHN0ZDo6dHVwbGU8bG9uZywgRXhwbGljaXRFeGNlcHREQywgRXhj ZXB0REM+IFhfTEVFREVEVDsKKworCisgIC8qIGlmIGl0IGhhcyBFIGluIHRo ZSBuYW1lLCBpdCBjb250YWlucyBhIHR5cGUgdGhhdCB0aHJvd3Mgd2hlbiBk ZWZhdWx0IGNvbnN0cnVjdGVkICovCisgIHN0YXRpY19hc3NlcnQoc3RkOjpp c19ub3Rocm93X2NvbnN0cnVjdGlibGU8SVQ+Ojp2YWx1ZSwgIiIpOworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPE5E VD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPEVEVD46OnZhbHVlLCAiIik7CisgIHN0YXRp Y19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8WF9ORFQ+ Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhy b3dfY29uc3RydWN0aWJsZTxYX0VEVD46OnZhbHVlLCAiIik7CisKKyAgc3Rh dGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxJSVQ+ Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJv d19jb25zdHJ1Y3RpYmxlPE5ORFQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNf YXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxFRURUPjo6 dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8RU5EVD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19h c3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8WF9OTkRUPjo6 dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8WF9FRURUPjo6dmFsdWUsICIiKTsKKyAgc3RhdGlj X2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8WF9FTkRU Pjo6dmFsdWUsICIiKTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPElJSVQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0 aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPExORE5E VD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPExOREVEVD46OnZhbHVlLCAiIik7CisgIHN0 YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8WF9M TkVETkRUPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjpp c19ub3Rocm93X2NvbnN0cnVjdGlibGU8WF9MTkVERURUPjo6dmFsdWUsICIi KTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVj dGlibGU8WF9MRUVERURUPjo6dmFsdWUsICIiKTsKKworICB2b2lkIFJ1bigp CisgIHsKKyAgICBWRVJJRlkoIGNoZWNrRGVmYXVsdFRocm93Q29uc3RydWN0 PElUPigpICk7CisgICAgVkVSSUZZKCBjaGVja0RlZmF1bHRUaHJvd0NvbnN0 cnVjdDxORFQ+KCkgKTsKKyAgICBWRVJJRlkoIGNoZWNrRGVmYXVsdFRocm93 Q29uc3RydWN0PEVEVD4oKSApOworICAgIFZFUklGWSggY2hlY2tEZWZhdWx0 VGhyb3dDb25zdHJ1Y3Q8WF9ORFQ+KCkgKTsKKyAgICBWRVJJRlkoIGNoZWNr RGVmYXVsdFRocm93Q29uc3RydWN0PFhfRURUPigpICk7CisKKyAgICBWRVJJ RlkoIGNoZWNrRGVmYXVsdFRocm93Q29uc3RydWN0PElJVD4oKSApOworICAg IFZFUklGWSggY2hlY2tEZWZhdWx0VGhyb3dDb25zdHJ1Y3Q8Tk5EVD4oKSAp OworICAgIFZFUklGWSggY2hlY2tEZWZhdWx0VGhyb3dDb25zdHJ1Y3Q8RUVE VD4oKSApOworICAgIFZFUklGWSggY2hlY2tEZWZhdWx0VGhyb3dDb25zdHJ1 Y3Q8RU5EVD4oKSApOworICAgIFZFUklGWSggY2hlY2tEZWZhdWx0VGhyb3dD b25zdHJ1Y3Q8WF9OTkRUPigpICk7CisgICAgVkVSSUZZKCBjaGVja0RlZmF1 bHRUaHJvd0NvbnN0cnVjdDxYX0VFRFQ+KCkgKTsKKyAgICBWRVJJRlkoIGNo ZWNrRGVmYXVsdFRocm93Q29uc3RydWN0PFhfRU5EVD4oKSApOworCisgICAg VkVSSUZZKCBjaGVja0RlZmF1bHRUaHJvd0NvbnN0cnVjdDxJSUlUPigpICk7 CisgICAgVkVSSUZZKCBjaGVja0RlZmF1bHRUaHJvd0NvbnN0cnVjdDxMTkRO RFQ+KCkgKTsKKyAgICBWRVJJRlkoIGNoZWNrRGVmYXVsdFRocm93Q29uc3Ry dWN0PExOREVEVD4oKSApOworICAgIFZFUklGWSggY2hlY2tEZWZhdWx0VGhy b3dDb25zdHJ1Y3Q8WF9MTkVETkRUPigpICk7CisgICAgVkVSSUZZKCBjaGVj a0RlZmF1bHRUaHJvd0NvbnN0cnVjdDxYX0xORURFRFQ+KCkgKTsKKyAgfQor fQorCisKK2ludCBtYWluKCkKK3sKKworICBEZWZhdWx0Q29uc3RydWN0aW9u VGVzdHM6OlJ1bigpOworCit9CisKKworCisKKworCisKKworCisKKworCisK KworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwor CisKKworCisKKworCisKKwpJbmRleDogbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS8yMF91dGlsL3R1cGxlL2NvbnMvbm9leGNlcHRfc3BlY3MyLmNjCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGxpYnN0ZGMrKy12My90ZXN0c3VpdGUv MjBfdXRpbC90dXBsZS9jb25zL25vZXhjZXB0X3NwZWNzMi5jYwkobm9uZXhp c3RlbnQpCisrKyBsaWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvdHVw bGUvY29ucy9ub2V4Y2VwdF9zcGVjczIuY2MJKHdvcmtpbmcgY29weSkKQEAg LTAsMCArMSwxMjkgQEAKKy8vIHsgZGctb3B0aW9ucyB7IC1zdGQ9Z251Kysy YSB9IH0KKy8vIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzJhIH0gfQorCisv LyAyMDE5LTA0LTEwICBOaW5hIERpbmthIFJhbm5zICA8ZGlua2EucmFubnNA Z21haWwuY29tPgorLy8KKy8vIENvcHlyaWdodCAoQykgMjAxNyBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFy eSBpcyBmcmVlCisvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKKy8vIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKy8vIGFueSBsYXRlciB2ZXJz aW9uLgorLy8KKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5 OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisvLyA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyNpbmNsdWRlIDx0dXBs ZT4KKyNpbmNsdWRlIDx0ZXN0c3VpdGVfdHIxLmg+CisjaW5jbHVkZSA8dXRp bGl0eT4KKwordXNpbmcgbmFtZXNwYWNlIF9fZ251X3Rlc3Q7CisKKy8qIEFs bE5vVGhyb3dUZXN0cyAqLworCit0eXBlZGVmIHN0ZDo6dHVwbGU8aW50PiBJ VDsKK3R5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBpbnQ+IENJVDsKK3R5cGVk ZWYgc3RkOjp0dXBsZTxpbnQmJj4gUlZJVDsKK3R5cGVkZWYgc3RkOjp0dXBs ZTxpbnQsIGludD4gSUlUOwordHlwZWRlZiBzdGQ6OnBhaXI8aW50LCBpbnQ+ IElJUDsKK3R5cGVkZWYgc3RkOjp0dXBsZTxpbnQsIGludCwgaW50PiBJSUlU OworCituYW1lc3BhY2UgQWxsTm9UaHJvdworeworICBzdGF0aWNfYXNzZXJ0 KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPElULCBpbnQmPjo6dmFs dWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29u c3RydWN0aWJsZTxJVCwgY29uc3QgaW50Jj46OnZhbHVlLCAiIik7CisgIHN0 YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8SVQs IGludCYmPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz X25vdGhyb3dfY29uc3RydWN0aWJsZTxJVCwgY29uc3QgaW50JiY+Ojp2YWx1 ZSwgIiIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Nv bnN0cnVjdGlibGU8SVQsIElUPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fz c2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxJVCwgY29uc3Qg SVQgJj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19u b3Rocm93X2NvbnN0cnVjdGlibGU8SVQsIENJVD46OnZhbHVlLCAiIik7CisK KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8 aW50JiwgSVQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6 aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBpbnQmLCBJVD46OnZhbHVl LCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnZl cnRpYmxlPGludCYmLCBJVD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl cnQoc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IGludCYmLCBJ VD46OnZhbHVlLCAiIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25v dGhyb3dfY29uc3RydWN0aWJsZTxJSVQsIGludCYsIGludCY+Ojp2YWx1ZSwg IiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1 Y3RpYmxlPElJVCwgY29uc3QgaW50JiwgY29uc3QgaW50Jj46OnZhbHVlLCAi Iik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVj dGlibGU8SUlULCBpbnQmJiwgaW50JiY+Ojp2YWx1ZSwgIiIpOworICBzdGF0 aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPElJVCwg Y29uc3QgaW50JiYsIGNvbnN0IGludCYmPjo6dmFsdWUsICIiKTsKKworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPElJ VCwgSUlUPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz X25vdGhyb3dfY29uc3RydWN0aWJsZTxJSVQsIGNvbnN0IElJVCAmPjo6dmFs dWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29u c3RydWN0aWJsZTxJSVQsIElJUD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19h c3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8SUlULCBjb25z dCBJSVA+Ojp2YWx1ZSwgIiIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjpp c19ub3Rocm93X2NvbnZlcnRpYmxlPElJVCwgSUlUPjo6dmFsdWUsICIiKTsK KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8 Y29uc3QgSUlUICYsIElJVD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl cnQoc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPElJUCwgSUlUPjo6dmFs dWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29u dmVydGlibGU8Y29uc3QgSUlQLCBJSVQ+Ojp2YWx1ZSwgIiIpOworCisgIHN0 YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8SUlJ VCwgSUlJVCY+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6 aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPElJSVQsIGNvbnN0IElJSVQgJj46 OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8SUlJVCwgSUlJVCYmPjo6dmFsdWUsICIiKTsKKyAg c3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxJ SUlULCBjb25zdCBJSUlUJiY+Ojp2YWx1ZSwgIiIpOworCisgIHN0YXRpY19h c3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPElJSVQmLCBJSUlU Pjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhy b3dfY29udmVydGlibGU8Y29uc3QgSUlJVCAmLCBJSUlUPjo6dmFsdWUsICIi KTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGli bGU8SUlJVCYmLCBJSUlUPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2Vy dChzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8Y29uc3QgSUlJVCYmLCBJ SUlUPjo6dmFsdWUsICIiKTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf bm90aHJvd19jb25zdHJ1Y3RpYmxlPElJSVQsIGludCYsIGludCYsIGludCY+ Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJv d19jb25zdHJ1Y3RpYmxlPElJSVQsIGNvbnN0IGludCYsIGNvbnN0IGludCYs IGludCY+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf bm90aHJvd19jb25zdHJ1Y3RpYmxlPElJSVQsIGludCYmLCBpbnQmJiwgaW50 Jj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Ro cm93X2NvbnN0cnVjdGlibGU8SUlJVCwgY29uc3QgaW50JiYsIGNvbnN0IGlu dCYmLCBpbnQmPjo6dmFsdWUsICIiKTsKK30KKworaW50IG1haW4oKQorewor fQorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwor CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpJbmRl eDogbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3R1cGxlL2NvbnMv bm9leGNlcHRfc3BlY3MzLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGxpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC90dXBsZS9jb25zL25v ZXhjZXB0X3NwZWNzMy5jYwkobm9uZXhpc3RlbnQpCisrKyBsaWJzdGRjKyst djMvdGVzdHN1aXRlLzIwX3V0aWwvdHVwbGUvY29ucy9ub2V4Y2VwdF9zcGVj czMuY2MJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMDcgQEAKKy8vIHsg ZGctb3B0aW9ucyB7IC1zdGQ9Z251KysyYSB9IH0KKy8vIHsgZGctZG8gcnVu IHsgdGFyZ2V0IGMrKzJhIH0gfQorCisvLyAyMDE5LTA0LTEwICBOaW5hIERp bmthIFJhbm5zICA8ZGlua2EucmFubnNAZ21haWwuY29tPgorLy8KKy8vIENv cHlyaWdodCAoQykgMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sSW5j LgorLy8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMr KyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKy8vIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVu ZGVyIHRoZQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyxvciAoYXQgeW91ciBvcHRp b24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBUaGlzIGxpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorLy8KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25n CisvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcz LiAgSWYgbm90IHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorCisvKiB0aHJvdyBjb3B5LG5vIHRocm93IGNvbnZlcnNpb24gKi8K KworI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1ZGUgPHRlc3RzdWl0ZV90cjEu aD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCit1c2luZyBuYW1lc3BhY2UgX19n bnVfdGVzdDsKKworYm9vbCB0aHJvd2luZ19jdG9yX2NhbGxlZCA9IGZhbHNl OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIFU+Citib29sICBj aGVja0NvcHlUaHJvd0NvbnN0cnVjdCgpCit7CisgIHRocm93aW5nX2N0b3Jf Y2FsbGVkID0gZmFsc2U7CisgIGJvb2wgZGVkdWNlZF9ub3Rocm93ID0gc3Rk Ojppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8VCxVJj46OnZhbHVlOworICBV IHU7CisgIFQgdHt1fTsKKworICByZXR1cm4gdGhyb3dpbmdfY3Rvcl9jYWxs ZWQgIT0gZGVkdWNlZF9ub3Rocm93OworfQordGVtcGxhdGU8dHlwZW5hbWUg VCx0eXBlbmFtZSBVPgorYm9vbCAgY2hlY2tNb3ZlVGhyb3dDb25zdHJ1Y3Qo KQoreworICB0aHJvd2luZ19jdG9yX2NhbGxlZCA9IGZhbHNlOworICBib29s IGRlZHVjZWRfbm90aHJvdyA9IHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3Rp YmxlPFQsVSYmPjo6dmFsdWU7CisgIFUgdTsKKyAgVCB0e3N0ZDo6bW92ZSh1 KX07CisgIHJldHVybiB0aHJvd2luZ19jdG9yX2NhbGxlZCAhPSBkZWR1Y2Vk X25vdGhyb3c7Cit9CisKKwordHlwZWRlZiBzdGQ6OnR1cGxlPGludD4gSVQ7 Cit0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgaW50PiBDSVQ7Cit0eXBlZGVm IHN0ZDo6dHVwbGU8aW50JiY+IFJWSVQ7Cit0eXBlZGVmIHN0ZDo6dHVwbGU8 aW50LGludD4gSUlUOwordHlwZWRlZiBzdGQ6OnBhaXI8aW50LGludD4gSUlQ OwordHlwZWRlZiBzdGQ6OnR1cGxlPGludCxpbnQsaW50PiBJSUlUOworCitu YW1lc3BhY2UgVGhyb3dDb3B5Tm90aHJvd0NvbnZlcnNpb24KK3sKKyAgc3Ry dWN0IEEKKyAgeworICAgIEEoKSBub2V4Y2VwdCh0cnVlKQorICAgICAgICB7 fQorCisgICAgQShjb25zdCBpbnQmKSBub2V4Y2VwdCh0cnVlKQorICAgICAg e30KKworICAgIEEoY29uc3QgQSYpIG5vZXhjZXB0KGZhbHNlKQorICAgICAg eyAgdGhyb3dpbmdfY3Rvcl9jYWxsZWQgPSB0cnVlOyB9CisKKyAgfTsKKwor ICB0eXBlZGVmIHN0ZDo6dHVwbGU8QT4gQVQ7CisgIHR5cGVkZWYgc3RkOjp0 dXBsZTxBLEE+IEFBVDsKKyAgdHlwZWRlZiBzdGQ6OnBhaXI8QSxBPiBBQVA7 CisgIHR5cGVkZWYgc3RkOjp0dXBsZTxpbnQsQT4gSUFUOworICB0eXBlZGVm IHN0ZDo6cGFpcjxpbnQsQT4gSUFQOworICB0eXBlZGVmIHN0ZDo6dHVwbGU8 QSxBLEE+IEFBQVQ7CisgIHR5cGVkZWYgc3RkOjp0dXBsZTxpbnQsaW50LEE+ IElJQVQ7CisKKy8qIG9uZSBlbGVtZW50IHRlc3RzICovCisgIHN0YXRpY19h c3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QVQsaW50Pjo6 dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19j b25zdHJ1Y3RpYmxlPEFULGNvbnN0IGludD46OnZhbHVlLCIiKTsKKyAgc3Rh dGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxBVCxp bnQmPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPEFULGNvbnN0IGludCAmPjo6dmFsdWUsIiIp OworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVj dGlibGU8QVQsSVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3Rk Ojppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QVQsY29uc3QgSVQ+Ojp2YWx1 ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8QVQsSVQmPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0 KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEFULGNvbnN0IElUICY+ Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8QVQsc3RkOjp0dXBsZTxpbnQmPj46OnZhbHVlLCIi KTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0 aWJsZTxBVCxjb25zdCBzdGQ6OnR1cGxlPGludCYmPj46OnZhbHVlLCIiKTsK KworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJs ZTxpbnQsQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjpp c19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IGludCxBVD46OnZhbHVlLCIi KTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGli bGU8aW50JixBVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6 OmlzX25vdGhyb3dfY29udmVydGlibGU8Y29uc3QgaW50ICYsQVQ+Ojp2YWx1 ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29u dmVydGlibGU8SVQsQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQo c3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IElULEFUPjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252 ZXJ0aWJsZTxJVCYsQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQo c3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IElUICYsQVQ+Ojp2 YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Nv bnZlcnRpYmxlPHN0ZDo6dHVwbGU8aW50Jj4sQVQ+Ojp2YWx1ZSwiIik7Cisg IHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNv bnN0IHN0ZDo6dHVwbGU8aW50JiY+LEFUPjo6dmFsdWUsIiIpOworCisgIHN0 YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEFU LEE+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPEFULGNvbnN0IEE+Ojp2YWx1ZSwiIik7Cisg IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl PEFULEEmPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz X25vdGhyb3dfY29uc3RydWN0aWJsZTxBVCxjb25zdCBBICY+Ojp2YWx1ZSwi Iik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8QVQsQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQo IXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEFULGNvbnN0IEFUPjo6 dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3df Y29uc3RydWN0aWJsZTxBVCxBVCY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19h c3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEFULGNvbnN0 IEFUICY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf bm90aHJvd19jb25zdHJ1Y3RpYmxlPEFULHN0ZDo6dHVwbGU8QSY+Pjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29u c3RydWN0aWJsZTxBVCxjb25zdCBzdGQ6OnR1cGxlPEEmJj4+Ojp2YWx1ZSwi Iik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnZl cnRpYmxlPEEsQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0 ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBBLEFUPjo6dmFsdWUs IiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVy dGlibGU8QSYsQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0 ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBBICYsQVQ+Ojp2YWx1 ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2Nv bnZlcnRpYmxlPEFULEFUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0 KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8Y29uc3QgQVQsQVQ+Ojp2 YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19j b252ZXJ0aWJsZTxBVCYsQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3Nl cnQoIXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBBVCAmLEFU Pjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhy b3dfY29udmVydGlibGU8c3RkOjp0dXBsZTxBJj4sQVQ+Ojp2YWx1ZSwiIik7 CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJs ZTxjb25zdCBzdGQ6OnR1cGxlPEEmJj4sQVQ+Ojp2YWx1ZSwiIik7CisKKy8q IHR3byBlbGVtZW50IHRlc3RzICovCisKKyAgc3RhdGljX2Fzc2VydChzdGQ6 OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxBQVQsSUlUPjo6dmFsdWUsIiIp OworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3Rp YmxlPEFBVCxjb25zdCBJSVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3Nl cnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QUFULElJVCY+Ojp2 YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Nv bnN0cnVjdGlibGU8QUFULGNvbnN0IElJVCAmPjo6dmFsdWUsIiIpOworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEFB VCxJSVA+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19u b3Rocm93X2NvbnN0cnVjdGlibGU8QUFULGNvbnN0IElJUD46OnZhbHVlLCIi KTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0 aWJsZTxBQVQsSUlQJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChz dGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxBQVQsY29uc3QgSUlQICY+ Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8QUFULHN0ZDo6dHVwbGU8aW50JixpbnQmPj46OnZh bHVlLCIiKTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19j b252ZXJ0aWJsZTxJSVQsQUFUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBJSVQsQUFU Pjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJv d19jb252ZXJ0aWJsZTxJSVQmLEFBVD46OnZhbHVlLCIiKTsKKyAgc3RhdGlj X2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8Y29uc3QgSUlU ICYsQUFUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf bm90aHJvd19jb252ZXJ0aWJsZTxJSVAsQUFUPjo6dmFsdWUsIiIpOworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25z dCBJSVAsQUFUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6 aXNfbm90aHJvd19jb252ZXJ0aWJsZTxJSVAmLEFBVD46OnZhbHVlLCIiKTsK KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8 Y29uc3QgSUlQICYsQUFUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0 KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxzdGQ6OnR1cGxlPGludCYs aW50Jj4sQUFUPjo6dmFsdWUsIiIpOworCisKKyAgc3RhdGljX2Fzc2VydCgh c3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QUFULEFBVD46OnZhbHVl LCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8QUFULGNvbnN0IEFBVD46OnZhbHVlLCIiKTsKKyAgc3RhdGlj X2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QUFULEFB VCY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPEFBVCxjb25zdCBBQVQgJj46OnZhbHVlLCIi KTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVj dGlibGU8QUFULEFBUD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCgh c3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QUFULGNvbnN0IEFBUD46 OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8QUFULEFBUCY+Ojp2YWx1ZSwiIik7CisgIHN0YXRp Y19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEFBVCxj b25zdCBBQVAgJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3Rk Ojppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QUFULHN0ZDo6dHVwbGU8QSYs QSY+Pjo6dmFsdWUsIiIpOworCisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf bm90aHJvd19jb25zdHJ1Y3RpYmxlPEFBVCxJQVQ+Ojp2YWx1ZSwiIik7Cisg IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl PEFBVCxjb25zdCBJQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQo IXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEFBVCxJQVQmPjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29u c3RydWN0aWJsZTxBQVQsY29uc3QgSUFUICY+Ojp2YWx1ZSwiIik7CisgIHN0 YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEFB VCxJQVA+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf bm90aHJvd19jb25zdHJ1Y3RpYmxlPEFBVCxjb25zdCBJQVA+Ojp2YWx1ZSwi Iik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1 Y3RpYmxlPEFBVCxJQVAmPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0 KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxBQVQsY29uc3QgSUFQ ICY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPEFBVCxzdGQ6OnR1cGxlPEEmLGludCY+Pjo6 dmFsdWUsIiIpOworCisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJv d19jb252ZXJ0aWJsZTxBQVQsQUFUPjo6dmFsdWUsIiIpOworICBzdGF0aWNf YXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8Y29uc3QgQUFU LEFBVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19u b3Rocm93X2NvbnZlcnRpYmxlPEFBVCYsQUFUPjo6dmFsdWUsIiIpOworICBz dGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8Y29u c3QgQUFUICYsQUFUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFz dGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8QUFQLEFBVD46OnZhbHVlLCIi KTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnZlcnRp YmxlPGNvbnN0IEFBUCxBQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3Nl cnQoIXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxBQVAmLEFBVD46OnZh bHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2Nv bnZlcnRpYmxlPGNvbnN0IEFBUCAmLEFBVD46OnZhbHVlLCIiKTsKKyAgc3Rh dGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPHN0ZDo6 dHVwbGU8QSYsQSY+LEFBVD46OnZhbHVlLCIiKTsKKworICBzdGF0aWNfYXNz ZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8SUFULEFBVD46OnZh bHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2Nv bnZlcnRpYmxlPGNvbnN0IElBVCxBQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRp Y19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxJQVQmLEFB VD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Ro cm93X2NvbnZlcnRpYmxlPGNvbnN0IElBVCAmLEFBVD46OnZhbHVlLCIiKTsK KyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxl PElBUCxBQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6 aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBJQVAsQUFUPjo6dmFsdWUs IiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVy dGlibGU8SUFQJixBQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQo IXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBJQVAgJixBQVQ+ Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJv d19jb252ZXJ0aWJsZTxzdGQ6OnR1cGxlPEEmLGludCY+LEFBVD46OnZhbHVl LCIiKTsKKworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Nv bnN0cnVjdGlibGU8QUFULGludCYsY29uc3QgaW50Jj46OnZhbHVlLCIiKTsK KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJs ZTxBQVQsaW50JiYsY29uc3QgaW50JiY+Ojp2YWx1ZSwiIik7CisKKyAgc3Rh dGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QUFU LEEmLGNvbnN0IEEmPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFz dGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxBQVQsQSYmLGNvbnN0IEEm Jj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Ro cm93X2NvbnN0cnVjdGlibGU8QUFULGNvbnN0IEEgJiYsY29uc3QgaW50JiY+ Ojp2YWx1ZSwiIik7CisKKy8qIHRocmVlIGVsZW1lbnQgdGVzdHMgKi8KKyAg c3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxB QUFULElJSVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjpp c19ub3Rocm93X2NvbnN0cnVjdGlibGU8QUFBVCxjb25zdCBJSUlUPjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPEFBQVQsSUlJVCY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19h c3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QUFBVCxjb25z dCBJSUlUICY+Ojp2YWx1ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6 OmlzX25vdGhyb3dfY29udmVydGlibGU8SUlJVCxBQUFUPjo6dmFsdWUsIiIp OworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJs ZTxjb25zdCBJSUlULEFBQVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3Nl cnQoc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPElJSVQmLEFBQVQ+Ojp2 YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Nv bnZlcnRpYmxlPGNvbnN0IElJSVQgJixBQUFUPjo6dmFsdWUsIiIpOworCisg IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl PEFBQVQsSUlBVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3Rk Ojppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QUFBVCxjb25zdCBJSUFUPjo6 dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3df Y29uc3RydWN0aWJsZTxBQUFULElJQVQmPjo6dmFsdWUsIiIpOworICBzdGF0 aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxBQUFU LGNvbnN0IElJQVQgJj46OnZhbHVlLCIiKTsKKworICBzdGF0aWNfYXNzZXJ0 KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8SUlBVCxBQUFUPjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29u dmVydGlibGU8Y29uc3QgSUlBVCxBQUFUPjo6dmFsdWUsIiIpOworICBzdGF0 aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8SUlBVCYs QUFBVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19u b3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IElJQVQgJixBQUFUPjo6dmFsdWUs IiIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8QUFBVCxpbnQmLGNvbnN0IGludCYsaW50JiY+Ojp2YWx1ZSwi Iik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1 Y3RpYmxlPEFBQVQsaW50ICYsY29uc3QgQSAmJixjb25zdCBpbnQmJj46OnZh bHVlLCIiKTsKKworICB2b2lkIFJ1bigpCisgIHsKKyAgICBWRVJJRlkoIChj aGVja0NvcHlUaHJvd0NvbnN0cnVjdDxBVCxpbnQ+KCkpICk7CisgICAgVkVS SUZZKCAoY2hlY2tNb3ZlVGhyb3dDb25zdHJ1Y3Q8QVQsaW50PigpKSApOwor ICAgIFZFUklGWSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0PEFULEE+KCkp ICk7CisgICAgVkVSSUZZKCAoY2hlY2tNb3ZlVGhyb3dDb25zdHJ1Y3Q8QVQs QT4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVja0NvcHlUaHJvd0NvbnN0cnVj dDxBVCxBVD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVja01vdmVUaHJvd0Nv bnN0cnVjdDxBVCxBVD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVja0NvcHlU aHJvd0NvbnN0cnVjdDxBVCxJVD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVj a01vdmVUaHJvd0NvbnN0cnVjdDxBVCxJVD4oKSkgKTsKKyAgICBWRVJJRlko IChjaGVja01vdmVUaHJvd0NvbnN0cnVjdDxBVCxDSVQ+KCkpICk7CisgICAg VkVSSUZZKCAoY2hlY2tDb3B5VGhyb3dDb25zdHJ1Y3Q8QUFULEFBVD4oKSkg KTsKKyAgICBWRVJJRlkoIChjaGVja01vdmVUaHJvd0NvbnN0cnVjdDxBQVQs QUFUPigpKSApOworICAgIFZFUklGWSggKGNoZWNrQ29weVRocm93Q29uc3Ry dWN0PEFBVCxJSVQ+KCkpICk7CisgICAgVkVSSUZZKCAoY2hlY2tNb3ZlVGhy b3dDb25zdHJ1Y3Q8QUFULElJVD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVj a0NvcHlUaHJvd0NvbnN0cnVjdDxBQVQsSUlQPigpKSApOworICAgIFZFUklG WSggKGNoZWNrTW92ZVRocm93Q29uc3RydWN0PEFBVCxJSVA+KCkpICk7CisK KyAgICBWRVJJRlkoIChjaGVja0NvcHlUaHJvd0NvbnN0cnVjdDxBQVQsc3Rk Ojp0dXBsZTxpbnQsQT4+KCkpICk7CisgICAgVkVSSUZZKCAoY2hlY2tNb3Zl VGhyb3dDb25zdHJ1Y3Q8QUFULHN0ZDo6dHVwbGU8aW50LEE+PigpKSApOwor ICAgIFZFUklGWSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0PEFBVCxzdGQ6 OnBhaXI8aW50LEE+PigpKSApOworICAgIFZFUklGWSggKGNoZWNrTW92ZVRo cm93Q29uc3RydWN0PEFBVCxzdGQ6OnBhaXI8aW50LEE+PigpKSApOworCisg ICAgVkVSSUZZKCAoY2hlY2tDb3B5VGhyb3dDb25zdHJ1Y3Q8QUFBVCxBQUFU PigpKSApOworICAgIFZFUklGWSggKGNoZWNrTW92ZVRocm93Q29uc3RydWN0 PEFBQVQsQUFBVD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVja0NvcHlUaHJv d0NvbnN0cnVjdDxBQUFULElJQVQ+KCkpICk7CisgICAgVkVSSUZZKCAoY2hl Y2tNb3ZlVGhyb3dDb25zdHJ1Y3Q8QUFBVCxJSUFUPigpKSApOworICB9Cit9 CisKK2ludCBtYWluKCkKK3sKKworICBUaHJvd0NvcHlOb3Rocm93Q29udmVy c2lvbjo6UnVuKCk7CisKK30KKworCisKKworCisKKworCisKKworCisKKwor CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisK KworCisKKworCisKKworCkluZGV4OiBsaWJzdGRjKystdjMvdGVzdHN1aXRl LzIwX3V0aWwvdHVwbGUvY29ucy9ub2V4Y2VwdF9zcGVjczQuY2MKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8y MF91dGlsL3R1cGxlL2NvbnMvbm9leGNlcHRfc3BlY3M0LmNjCShub25leGlz dGVudCkKKysrIGxpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC90dXBs ZS9jb25zL25vZXhjZXB0X3NwZWNzNC5jYwkod29ya2luZyBjb3B5KQpAQCAt MCwwICsxLDQ4MSBAQAorLy8geyBkZy1vcHRpb25zIHsgLXN0ZD1nbnUrKzJh IH0gfQorLy8geyBkZy1kbyBydW4geyB0YXJnZXQgYysrMTcgfSB9CisKKy8v IDIwMTktMDQtMTAgIE5pbmEgRGlua2EgUmFubnMgIDxkaW5rYS5yYW5uc0Bn bWFpbC5jb20+CisvLworLy8gQ29weXJpZ2h0IChDKSAyMDE3IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5 IGlzIGZyZWUKKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorLy8gdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUKKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNp b24uCisvLworLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy8vCisvLyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhbG9uZworLy8gd2l0aCB0aGlzIGxpYnJhcnk7 IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKy8vIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworI2luY2x1ZGUgPHR1cGxl PgorI2luY2x1ZGUgPHRlc3RzdWl0ZV90cjEuaD4KKyNpbmNsdWRlIDx1dGls aXR5PgorCit1c2luZyBuYW1lc3BhY2UgX19nbnVfdGVzdDsKKworLy8gTm90 aHJvdyBDb3B5CisvLyBUaHJvdyBNb3ZlCisvLyBUaHJvdyBDb3B5Q29udmVy c2lvbgorLy8gTm90aHJvdyBNb3ZlQ29udmVyc2lvbgorCitib29sIHRocm93 aW5nX2N0b3JfY2FsbGVkID0gZmFsc2U7CisKK3RlbXBsYXRlPHR5cGVuYW1l IFQsIHR5cGVuYW1lIFU+Citib29sICBjaGVja0NvcHlUaHJvd0NvbnN0cnVj dCgpCit7CisgIHRocm93aW5nX2N0b3JfY2FsbGVkID0gZmFsc2U7CisgIGJv b2wgZGVkdWNlZF9ub3Rocm93ID0gc3RkOjppc19ub3Rocm93X2NvbnN0cnVj dGlibGU8VCwgVSY+Ojp2YWx1ZTsKKyAgVSB1OworICBUIHR7dX07CisgIHJl dHVybiB0aHJvd2luZ19jdG9yX2NhbGxlZCAhPSBkZWR1Y2VkX25vdGhyb3c7 Cit9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCAg Y2hlY2tNb3ZlVGhyb3dDb25zdHJ1Y3QoKQoreworICB0aHJvd2luZ19jdG9y X2NhbGxlZCA9IGZhbHNlOworICBib29sIGRlZHVjZWRfbm90aHJvdyA9IHN0 ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPFQsIFUmJj46OnZhbHVlOwor ICBVIHU7CisgIFQgdHtzdGQ6Om1vdmUodSl9OworICByZXR1cm4gdGhyb3dp bmdfY3Rvcl9jYWxsZWQgIT0gZGVkdWNlZF9ub3Rocm93OworfQorCisKK3R5 cGVkZWYgc3RkOjp0dXBsZTxpbnQ+IElUOwordHlwZWRlZiBzdGQ6OnR1cGxl PGNvbnN0IGludD4gQ0lUOwordHlwZWRlZiBzdGQ6OnR1cGxlPGludCYmPiBS VklUOwordHlwZWRlZiBzdGQ6OnR1cGxlPGludCwgaW50PiBJSVQ7Cit0eXBl ZGVmIHN0ZDo6cGFpcjxpbnQsIGludD4gSUlQOwordHlwZWRlZiBzdGQ6OnR1 cGxlPGludCwgaW50LCBpbnQ+IElJSVQ7CisKK25hbWVzcGFjZSBOb3Rocm93 Q29weVRocm93TW92ZVRocm93Q29weUNvbnZlcnNpb25Ob3Rocm93TW92ZUNv bnZlcnNpb24KK3sKKyAgc3RydWN0IEIKKyAgeworICAgIEIoKSBub2V4Y2Vw dCh0cnVlKQorICAgICAgICB7fQorCisgICAgQihjb25zdCBpbnQmKSBub2V4 Y2VwdChmYWxzZSkKKyAgICAgIHsgIHRocm93aW5nX2N0b3JfY2FsbGVkID0g dHJ1ZTsgfQorCisgICAgQihpbnQmJikgbm9leGNlcHQodHJ1ZSkKKyAgICAg IHt9CisKKyAgICBCKGNvbnN0IEImKSBub2V4Y2VwdCh0cnVlKQorICAgICAg e30KKworICAgIEIoQiYmKSBub2V4Y2VwdChmYWxzZSkKKyAgICAgIHsgIHRo cm93aW5nX2N0b3JfY2FsbGVkID0gdHJ1ZTsgfQorICB9OworCisKKyAgc3Ry dWN0IEQKKyAgeworICAgIEQoKSBub2V4Y2VwdCh0cnVlKQorICAgICAgICB7 fQorCisgICAgZXhwbGljaXQKKyAgICBEKGNvbnN0IGludCYpIG5vZXhjZXB0 KGZhbHNlKQorICAgIHsgIHRocm93aW5nX2N0b3JfY2FsbGVkID0gdHJ1ZTsg fQorCisgICAgZXhwbGljaXQKKyAgICBEKGludCYmKSBub2V4Y2VwdCh0cnVl KQorICAgICAgICB7fQorCisgICAgZXhwbGljaXQKKyAgICBEKGNvbnN0IEQm KSBub2V4Y2VwdCh0cnVlKQorICAgICAge30KKworICAgIGV4cGxpY2l0Cisg ICAgRChEJiYpIG5vZXhjZXB0KGZhbHNlKQorICAgIHsgIHRocm93aW5nX2N0 b3JfY2FsbGVkID0gdHJ1ZTsgfQorCisgIH07CisKKyAgdHlwZWRlZiBzdGQ6 OnR1cGxlPEI+IEJUOworICB0eXBlZGVmIHN0ZDo6dHVwbGU8QixCPiBCQlQ7 CisgIHR5cGVkZWYgc3RkOjpwYWlyPEIsQj4gQkJQOworICB0eXBlZGVmIHN0 ZDo6dHVwbGU8RD4gRFQ7CisgIHR5cGVkZWYgc3RkOjp0dXBsZTxELEQ+IERE VDsKKyAgdHlwZWRlZiBzdGQ6OnBhaXI8RCxEPiBERFA7CisgIHR5cGVkZWYg c3RkOjp0dXBsZTxpbnQsRD4gSURUOworICB0eXBlZGVmIHN0ZDo6cGFpcjxp bnQsRD4gSURQOworICB0eXBlZGVmIHN0ZDo6dHVwbGU8aW50LEI+IElCVDsK KyAgdHlwZWRlZiBzdGQ6OnBhaXI8aW50LEI+IElCUDsKKyAgdHlwZWRlZiBz dGQ6OnR1cGxlPEQsQj4gREJUOworICB0eXBlZGVmIHN0ZDo6cGFpcjxELEI+ IERCUDsKKyAgdHlwZWRlZiBzdGQ6OnR1cGxlPEIsQixCPiBCQkJUOworICB0 eXBlZGVmIHN0ZDo6dHVwbGU8RCxELEQ+IERERFQ7CisgIHR5cGVkZWYgc3Rk Ojp0dXBsZTxpbnQsRCxpbnQ+IElESVQ7CisgIHR5cGVkZWYgc3RkOjp0dXBs ZTxpbnQsQixpbnQ+IElCSVQ7CisgIHR5cGVkZWYgc3RkOjp0dXBsZTxpbnQs RCxCPiBJREJUOworCisvKiBvbmUgZWxlbWVudCB0ZXN0cyAqLworICBzdGF0 aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJULCBp bnQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25v dGhyb3dfY29uc3RydWN0aWJsZTxCVCwgY29uc3QgaW50Pjo6dmFsdWUsICIi KTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVj dGlibGU8QlQsIGludCY+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0 KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxCVCwgY29uc3QgaW50 ICY+Ojp2YWx1ZSwgIiIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19u b3Rocm93X2NvbnN0cnVjdGlibGU8QlQsIElUPjo6dmFsdWUsICIiKTsKKyAg c3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8 QlQsY29uc3QgSVQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KCFz dGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxCVCwgSVQmPjo6dmFsdWUs ICIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8QlQsIGNvbnN0IElUICY+Ojp2YWx1ZSwgIiIpOworICBzdGF0 aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxCVCwg c3RkOjp0dXBsZTxpbnQmPj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl cnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJULCBjb25zdCBz dGQ6OnR1cGxlPGludCYmPj46OnZhbHVlLCAiIik7CisKKyAgc3RhdGljX2Fz c2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8aW50LEJUPjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29u dmVydGlibGU8Y29uc3QgaW50LEJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNf YXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8aW50JixCVD46 OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnZlcnRpYmxlPGNvbnN0IGludCAmLEJUPjo6dmFsdWUsIiIpOworCisg IHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPElU LEJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25v dGhyb3dfY29udmVydGlibGU8Y29uc3QgSVQsQlQ+Ojp2YWx1ZSwiIik7Cisg IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxJ VCYsQlQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf bm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBJVCAmLEJUPjo6dmFsdWUsIiIp OworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGli bGU8c3RkOjp0dXBsZTxpbnQmPixCVD46OnZhbHVlLCIiKTsKKyAgc3RhdGlj X2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IHN0 ZDo6dHVwbGU8aW50JiY+LEJUPjo6dmFsdWUsIiIpOworCisKKyAgc3RhdGlj X2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QlQsIEI+ Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJv d19jb25zdHJ1Y3RpYmxlPEJULGNvbnN0IEI+Ojp2YWx1ZSwgIiIpOworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJU LCBCJj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19u b3Rocm93X2NvbnN0cnVjdGlibGU8QlQsIGNvbnN0IEIgJj46OnZhbHVlLCAi Iik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8QlQsIEJUPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2Vy dChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxCVCxjb25zdCBCVD46 OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8QlQsIEJUJj46OnZhbHVlLCAiIik7CisgIHN0YXRp Y19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QlQsIGNv bnN0IEJUICY+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6 aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJULCBzdGQ6OnR1cGxlPEImPj46 OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8QlQsIGNvbnN0IHN0ZDo6dHVwbGU8QiYmPj46OnZh bHVlLCAiIik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnZlcnRpYmxlPEIsQlQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3Nl cnQoc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IEIsQlQ+Ojp2 YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Nv bnZlcnRpYmxlPEImLEJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0 KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBCICYsQlQ+Ojp2 YWx1ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnZlcnRpYmxlPEJULEJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBCVCxCVD46 OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3df Y29udmVydGlibGU8QlQmLEJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBCVCAmLEJU Pjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJv d19jb252ZXJ0aWJsZTxzdGQ6OnR1cGxlPEImPixCVD46OnZhbHVlLCIiKTsK KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8 Y29uc3Qgc3RkOjp0dXBsZTxCJiY+LEJUPjo6dmFsdWUsIiIpOworCisvKiBl eHBsaWNpdCAqLworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19j b25zdHJ1Y3RpYmxlPERULCBpbnQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNf YXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxEVCwgY29u c3QgaW50Pjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjpp c19ub3Rocm93X2NvbnN0cnVjdGlibGU8RFQsIGludCY+Ojp2YWx1ZSwgIiIp OworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0 aWJsZTxEVCwgY29uc3QgaW50ICY+Ojp2YWx1ZSwgIiIpOworCisgIHN0YXRp Y19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RFQsIElU Pjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Ro cm93X2NvbnN0cnVjdGlibGU8RFQsY29uc3QgSVQ+Ojp2YWx1ZSwgIiIpOwor ICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJs ZTxEVCwgSVQmPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3Rk Ojppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RFQsIGNvbnN0IElUICY+Ojp2 YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3df Y29uc3RydWN0aWJsZTxEVCwgc3RkOjp0dXBsZTxpbnQmPj46OnZhbHVlLCAi Iik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1 Y3RpYmxlPERULCBjb25zdCBzdGQ6OnR1cGxlPGludCYmPj46OnZhbHVlLCAi Iik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8RFQsIEQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0 KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPERULGNvbnN0IEQ+Ojp2 YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19j b25zdHJ1Y3RpYmxlPERULCBEJj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19h c3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RFQsIGNvbnN0 IEQgJj46OnZhbHVlLCAiIik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjpp c19ub3Rocm93X2NvbnN0cnVjdGlibGU8RFQsIERUPjo6dmFsdWUsICIiKTsK KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJs ZTxEVCxjb25zdCBEVD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQo c3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RFQsIERUJj46OnZhbHVl LCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8RFQsIGNvbnN0IERUICY+Ojp2YWx1ZSwgIiIpOworICBzdGF0 aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPERULCBz dGQ6OnR1cGxlPEQmPj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQo c3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RFQsIGNvbnN0IHN0ZDo6 dHVwbGU8RCYmPj46OnZhbHVlLCAiIik7CisKKyAgc3RhdGljX2Fzc2VydCgh c3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPERULERUPjo6dmFsdWUsIiIp OworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJs ZTxjb25zdCBEVCxEVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChz dGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8RFQmLERUPjo6dmFsdWUsIiIp OworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJs ZTxjb25zdCBEVCAmLERUPjo6dmFsdWUsIiIpOworCisvKiB0d28gZWxlbWVu dHMgdGVzdHMgKi8KKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3df Y29uc3RydWN0aWJsZTxCQlQsSUlUPjo6dmFsdWUsIiIpOworICBzdGF0aWNf YXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxCQlQsY29u c3QgSUlUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz X25vdGhyb3dfY29uc3RydWN0aWJsZTxCQlQsSUlUJj46OnZhbHVlLCIiKTsK KyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGli bGU8QkJULGNvbnN0IElJVCAmPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJCVCxJSVA+Ojp2 YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19j b25zdHJ1Y3RpYmxlPEJCVCxjb25zdCBJSVA+Ojp2YWx1ZSwiIik7CisgIHN0 YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJC VCxJSVAmPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz X25vdGhyb3dfY29uc3RydWN0aWJsZTxCQlQsY29uc3QgSUlQICY+Ojp2YWx1 ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPEJCVCxzdGQ6OnR1cGxlPGludCYsaW50Jj4+Ojp2YWx1ZSwi Iik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVy dGlibGU8SUlULEJCVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCgh c3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IElJVCxCQlQ+Ojp2 YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19j b252ZXJ0aWJsZTxJSVQmLEJCVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fz c2VydCghc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IElJVCAm LEJCVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25v dGhyb3dfY29udmVydGlibGU8SUlQLEJCVD46OnZhbHVlLCIiKTsKKyAgc3Rh dGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0 IElJUCxCQlQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6 aXNfbm90aHJvd19jb252ZXJ0aWJsZTxJSVAmLEJCVD46OnZhbHVlLCIiKTsK KyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxl PGNvbnN0IElJUCAmLEJCVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2Vy dCghc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPHN0ZDo6dHVwbGU8aW50 JixpbnQmPixCQlQ+Ojp2YWx1ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydCgh c3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QkJULEJCVD46OnZhbHVl LCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3Ry dWN0aWJsZTxCQlQsY29uc3QgQkJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNf YXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJCVCxCQlQm Pjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJv d19jb25zdHJ1Y3RpYmxlPEJCVCxjb25zdCBCQlQgJj46OnZhbHVlLCIiKTsK KyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGli bGU8QkJULEJCUD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6 OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxCQlQsY29uc3QgQkJQPjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPEJCVCxCQlAmPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJCVCxjb25zdCBC QlAgJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25v dGhyb3dfY29uc3RydWN0aWJsZTxCQlQsc3RkOjp0dXBsZTxCJixCJj4+Ojp2 YWx1ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8QkJULElCVD46OnZhbHVlLCIiKTsKKyAgc3RhdGlj X2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QkJULGNv bnN0IElCVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjpp c19ub3Rocm93X2NvbnN0cnVjdGlibGU8QkJULElCVCY+Ojp2YWx1ZSwiIik7 CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3Rp YmxlPEJCVCxjb25zdCBJQlQgJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fz c2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QkJULElCUD46 OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8QkJULGNvbnN0IElCUD46OnZhbHVlLCIiKTsKKyAg c3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8 QkJULElCUCY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6 aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJCVCxjb25zdCBJQlAgJj46OnZh bHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29u c3RydWN0aWJsZTxCQlQsc3RkOjp0dXBsZTxjb25zdCBCJixpbnQmJj4+Ojp2 YWx1ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnZlcnRpYmxlPEJCVCxCQlQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19h c3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IEJCVCxC QlQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Ro cm93X2NvbnZlcnRpYmxlPEJCVCYsQkJUPjo6dmFsdWUsIiIpOworICBzdGF0 aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25zdCBC QlQgJixCQlQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6 aXNfbm90aHJvd19jb252ZXJ0aWJsZTxCQlAsQkJUPjo6dmFsdWUsIiIpOwor ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxj b25zdCBCQlAsQkJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0 ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxCQlAmLEJCVD46OnZhbHVlLCIi KTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGli bGU8Y29uc3QgQkJQICYsQkJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxzdGQ6OnR1cGxlPEIm LGludCYmPixCQlQ+Ojp2YWx1ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydCgh c3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPElCVCxCQlQ+Ojp2YWx1ZSwi Iik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0 aWJsZTxjb25zdCBJQlQsQkJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNz ZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8SUJUJixCQlQ+Ojp2 YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19j b252ZXJ0aWJsZTxjb25zdCBJQlQgJixCQlQ+Ojp2YWx1ZSwiIik7CisgIHN0 YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxJQlAs QkJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25v dGhyb3dfY29udmVydGlibGU8Y29uc3QgSUJQLEJCVD46OnZhbHVlLCIiKTsK KyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxl PElCUCYsQkJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6 OmlzX25vdGhyb3dfY29udmVydGlibGU8Y29uc3QgSUJQICYsQkJUPjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29u dmVydGlibGU8c3RkOjp0dXBsZTxCJixpbnQmPixCQlQ+Ojp2YWx1ZSwiIik7 CisKKworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3Ry dWN0aWJsZTxCQlQsaW50Jixjb25zdCBpbnQmPjo6dmFsdWUsIiIpOworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJC VCxpbnQmJixjb25zdCBCJj46OnZhbHVlLCIiKTsKKworICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJCVCxCJixjb25z dCBCJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19u b3Rocm93X2NvbnN0cnVjdGlibGU8QkJULEImJixjb25zdCBCJiY+Ojp2YWx1 ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPEJCVCxjb25zdCBCICYmLGNvbnN0IGludCYmPjo6dmFsdWUs IiIpOworCisvKiBleHBsaWNpdCAqLworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6 aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEREVCxJSVQ+Ojp2YWx1ZSwiIik7 CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3Rp YmxlPEREVCxjb25zdCBJSVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3Nl cnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEREVCxJSVQmPjo6 dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3df Y29uc3RydWN0aWJsZTxERFQsY29uc3QgSUlUICY+Ojp2YWx1ZSwiIik7Cisg IHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8 RERULElJUD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjpp c19ub3Rocm93X2NvbnN0cnVjdGlibGU8RERULGNvbnN0IElJUD46OnZhbHVl LCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8RERULElJUCY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3Nl cnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEREVCxjb25zdCBJ SVAgJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19u b3Rocm93X2NvbnN0cnVjdGlibGU8RERULHN0ZDo6dHVwbGU8aW50JixpbnQm Pj46OnZhbHVlLCIiKTsKKworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25v dGhyb3dfY29uc3RydWN0aWJsZTxERFQsRERUPjo6dmFsdWUsIiIpOworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPERE VCxjb25zdCBERFQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3Rk Ojppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RERULEREVCY+Ojp2YWx1ZSwi Iik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVj dGlibGU8RERULGNvbnN0IEREVCAmPjo6dmFsdWUsIiIpOworICBzdGF0aWNf YXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxERFQsRERQ Pjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJv d19jb25zdHJ1Y3RpYmxlPEREVCxjb25zdCBERFA+Ojp2YWx1ZSwiIik7Cisg IHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8 RERULEREUCY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjpp c19ub3Rocm93X2NvbnN0cnVjdGlibGU8RERULGNvbnN0IEREUCAmPjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPEREVCxzdGQ6OnR1cGxlPEQmLEQmPj46OnZhbHVlLCIiKTsK KworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0 aWJsZTxERFQsSURUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFz dGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxERFQsY29uc3QgSURUPjo6 dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3df Y29uc3RydWN0aWJsZTxERFQsSURUJj46OnZhbHVlLCIiKTsKKyAgc3RhdGlj X2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RERULGNv bnN0IElEVCAmPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6 OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxERFQsSURQPjo6dmFsdWUsIiIp OworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0 aWJsZTxERFQsY29uc3QgSURQPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNz ZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxERFQsSURQJj46 OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8RERULGNvbnN0IElEUCAmPjo6dmFsdWUsIiIpOwor ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl PEREVCxzdGQ6OnR1cGxlPGNvbnN0IEQmLGludCYmPj46OnZhbHVlLCIiKTsK KworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29udmVydGli bGU8RERULEREVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6 OmlzX25vdGhyb3dfY29udmVydGlibGU8Y29uc3QgRERULEREVD46OnZhbHVl LCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVy dGlibGU8RERUJixERFQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQo c3RkOjppc19ub3Rocm93X2NvbnZlcnRpYmxlPGNvbnN0IEREVCAmLEREVD46 OnZhbHVlLCIiKTsKKworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhy b3dfY29uc3RydWN0aWJsZTxERFQsaW50Jixjb25zdCBpbnQmPjo6dmFsdWUs IiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1 Y3RpYmxlPEREVCxpbnQmJixjb25zdCBEJj46OnZhbHVlLCIiKTsKKworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPERE VCxEJixjb25zdCBEJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCgh c3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RERULEQmJixjb25zdCBE JiY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPEREVCxjb25zdCBEICYmLGNvbnN0IGludCYm Pjo6dmFsdWUsIiIpOworCisvKiB0aHJlZSBlbGVtZW50cyB0ZXN0cyAqLwor ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl PEJCQlQsSUlJVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3Rk Ojppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8QkJCVCxjb25zdCBJSUlUPjo6 dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3df Y29uc3RydWN0aWJsZTxCQkJULElJSVQmPjo6dmFsdWUsIiIpOworICBzdGF0 aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxCQkJU LGNvbnN0IElJSVQgJj46OnZhbHVlLCIiKTsKKworICBzdGF0aWNfYXNzZXJ0 KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxJSUlULEJCQlQ+Ojp2YWx1 ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb252 ZXJ0aWJsZTxjb25zdCBJSUlULEJCQlQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRp Y19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxJSUlUJixC QkJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25v dGhyb3dfY29udmVydGlibGU8Y29uc3QgSUlJVCAmLEJCQlQ+Ojp2YWx1ZSwi Iik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8QkJCVCxCQkJUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJCQlQsY29uc3Qg QkJCVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25v dGhyb3dfY29uc3RydWN0aWJsZTxCQkJULEJCQlQmPjo6dmFsdWUsIiIpOwor ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl PEJCQlQsY29uc3QgQkJCVCAmPjo6dmFsdWUsIiIpOworCisgIHN0YXRpY19h c3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxCQkJULEJCQlQ+ Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93 X2NvbnZlcnRpYmxlPGNvbnN0IEJCQlQsQkJCVD46OnZhbHVlLCIiKTsKKyAg c3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29udmVydGlibGU8QkJC VCYsQkJCVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz X25vdGhyb3dfY29udmVydGlibGU8Y29uc3QgQkJCVCAmLEJCQlQ+Ojp2YWx1 ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2Nv bnN0cnVjdGlibGU8QkJCVCxpbnQmLGNvbnN0IGludCYsaW50JiY+Ojp2YWx1 ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPEJCQlQsaW50JiwgQiYmLGNvbnN0IGludCYmPjo6dmFsdWUs IiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1 Y3RpYmxlPEJCQlQsaW50JiYsIEImLGNvbnN0IEImJj46OnZhbHVlLCIiKTsK KworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0 aWJsZTxCQkJULHN0ZDo6dHVwbGU8aW50Jixjb25zdCBpbnQmLGludCYmPj46 OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8QkJCVCxzdGQ6OnR1cGxlPGludCAmLCBCJiYsY29u c3QgaW50JiY+Pjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6 aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEJCQlQsc3RkOjp0dXBsZTxpbnQg JiYsIEImLGNvbnN0IEImJj4+Ojp2YWx1ZSwiIik7CisKKy8qIGV4cGxpY2l0 ICovCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVj dGlibGU8REREVCxJSUlUPjo6dmFsdWUsIiIpOworICBzdGF0aWNfYXNzZXJ0 KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxERERULGNvbnN0IElJ SVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPERERFQsSUlJVCY+Ojp2YWx1ZSwiIik7Cisg IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl PERERFQsY29uc3QgSUlJVCAmPjo6dmFsdWUsIiIpOworCisgIHN0YXRpY19h c3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPERERFQsRERE VD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhy b3dfY29uc3RydWN0aWJsZTxERERULGNvbnN0IERERFQ+Ojp2YWx1ZSwiIik7 CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGli bGU8REREVCxERERUJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChz dGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxERERULGNvbnN0IERERFQg Jj46OnZhbHVlLCIiKTsKKworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25v dGhyb3dfY29udmVydGlibGU8REREVCxERERUPjo6dmFsdWUsIiIpOworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxjb25z dCBERERULERERFQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3Rk Ojppc19ub3Rocm93X2NvbnZlcnRpYmxlPERERFQmLERERFQ+Ojp2YWx1ZSwi Iik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnZlcnRp YmxlPGNvbnN0IERERFQgJixERERUPjo6dmFsdWUsIiIpOworCisgIHN0YXRp Y19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPERERFQs aW50Jixjb25zdCBpbnQmLGludCYmPjo6dmFsdWUsIiIpOworICBzdGF0aWNf YXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxERERULGlu dCAmLCBEJiYsY29uc3QgaW50JiY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19h c3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8REREVCxpbnQg JiYsIEQmLGNvbnN0IEQmJj46OnZhbHVlLCIiKTsKKworICBzdGF0aWNfYXNz ZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxERERULHN0ZDo6 dHVwbGU8aW50Jixjb25zdCBpbnQmLGludCYmPj46OnZhbHVlLCIiKTsKKyAg c3RhdGljX2Fzc2VydCghc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8 REREVCxzdGQ6OnR1cGxlPGludCAmLCBEJiYsY29uc3QgaW50JiY+Pjo6dmFs dWUsIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPERERFQsc3RkOjp0dXBsZTxpbnQgJiYsIEQmLGNvbnN0IEQm Jj4+Ojp2YWx1ZSwiIik7CisKKworICB2b2lkIFJ1bigpCisgIHsKKyAgICBW RVJJRlkoIChjaGVja0NvcHlUaHJvd0NvbnN0cnVjdDxCVCwgaW50PigpKSAp OworICAgIFZFUklGWSggKGNoZWNrTW92ZVRocm93Q29uc3RydWN0PEJULCBp bnQ+KCkpICk7CisgICAgVkVSSUZZKCAoY2hlY2tDb3B5VGhyb3dDb25zdHJ1 Y3Q8QlQsIEI+KCkpICk7CisgICAgVkVSSUZZKCAoY2hlY2tNb3ZlVGhyb3dD b25zdHJ1Y3Q8QlQsIEI+KCkpICk7CisgICAgVkVSSUZZKCAoY2hlY2tDb3B5 VGhyb3dDb25zdHJ1Y3Q8QlQsIElUPigpKSApOworICAgIFZFUklGWSggKGNo ZWNrTW92ZVRocm93Q29uc3RydWN0PEJULCBJVD4oKSkgKTsKKyAgICBWRVJJ RlkoIChjaGVja01vdmVUaHJvd0NvbnN0cnVjdDxCVCwgQ0lUPigpKSApOwor ICAgIFZFUklGWSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0PEJCVCwgSUlU PigpKSApOworICAgIFZFUklGWSggKGNoZWNrTW92ZVRocm93Q29uc3RydWN0 PEJCVCwgSUlUPigpKSApOworICAgIFZFUklGWSggKGNoZWNrQ29weVRocm93 Q29uc3RydWN0PEJCVCwgSUlQPigpKSApOworICAgIFZFUklGWSggKGNoZWNr TW92ZVRocm93Q29uc3RydWN0PEJCVCwgSUlQPigpKSApOworICAgIFZFUklG WSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0PEJCVCwgQkJQPigpKSApOwor ICAgIFZFUklGWSggKGNoZWNrTW92ZVRocm93Q29uc3RydWN0PEJCVCwgQkJQ PigpKSApOworICAgIFZFUklGWSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0 PEJCVCwgc3RkOjp0dXBsZTxCLCBpbnQ+PigpKSApOworICAgIFZFUklGWSgg KGNoZWNrTW92ZVRocm93Q29uc3RydWN0PEJCVCwgc3RkOjp0dXBsZTxCLCBp bnQ+PigpKSApOworCisgICAgVkVSSUZZKCAoY2hlY2tDb3B5VGhyb3dDb25z dHJ1Y3Q8RFQsIGludD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVja01vdmVU aHJvd0NvbnN0cnVjdDxEVCwgaW50PigpKSApOworICAgIFZFUklGWSggKGNo ZWNrQ29weVRocm93Q29uc3RydWN0PERULCBEPigpKSApOworICAgIFZFUklG WSggKGNoZWNrTW92ZVRocm93Q29uc3RydWN0PERULCBEPigpKSApOworICAg IFZFUklGWSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0PERULCBJVD4oKSkg KTsKKyAgICBWRVJJRlkoIChjaGVja01vdmVUaHJvd0NvbnN0cnVjdDxEVCwg SVQ+KCkpICk7CisgICAgVkVSSUZZKCAoY2hlY2tNb3ZlVGhyb3dDb25zdHJ1 Y3Q8RFQsIENJVD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVja0NvcHlUaHJv d0NvbnN0cnVjdDxERFQsIElJVD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVj a01vdmVUaHJvd0NvbnN0cnVjdDxERFQsIElJVD4oKSkgKTsKKyAgICBWRVJJ RlkoIChjaGVja0NvcHlUaHJvd0NvbnN0cnVjdDxERFQsIElJUD4oKSkgKTsK KyAgICBWRVJJRlkoIChjaGVja01vdmVUaHJvd0NvbnN0cnVjdDxERFQsIElJ UD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVja0NvcHlUaHJvd0NvbnN0cnVj dDxERFQsIEREUD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVja01vdmVUaHJv d0NvbnN0cnVjdDxERFQsIEREUD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVj a0NvcHlUaHJvd0NvbnN0cnVjdDxERFQsIHN0ZDo6dHVwbGU8RCwgaW50Pj4o KSkgKTsKKyAgICBWRVJJRlkoIChjaGVja01vdmVUaHJvd0NvbnN0cnVjdDxE RFQsIHN0ZDo6dHVwbGU8RCwgaW50Pj4oKSkgKTsKKworICAgIFZFUklGWSgg KGNoZWNrQ29weVRocm93Q29uc3RydWN0PERCVCwgSUlUPigpKSApOworICAg IFZFUklGWSggKGNoZWNrTW92ZVRocm93Q29uc3RydWN0PERCVCwgSUlUPigp KSApOworICAgIFZFUklGWSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0PERC VCwgREJUPigpKSApOworICAgIFZFUklGWSggKGNoZWNrTW92ZVRocm93Q29u c3RydWN0PERCVCwgREJUPigpKSApOworICAgIFZFUklGWSggKGNoZWNrQ29w eVRocm93Q29uc3RydWN0PERCVCwgREJQPigpKSApOworICAgIFZFUklGWSgg KGNoZWNrTW92ZVRocm93Q29uc3RydWN0PERCVCwgREJQPigpKSApOworICAg IFZFUklGWSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0PERCVCwgSUlQPigp KSApOworICAgIFZFUklGWSggKGNoZWNrTW92ZVRocm93Q29uc3RydWN0PERC VCwgSUlQPigpKSApOworCisKKyAgICBWRVJJRlkoIChjaGVja0NvcHlUaHJv d0NvbnN0cnVjdDxJRElULCBJSUlUPigpKSApOworICAgIFZFUklGWSggKGNo ZWNrTW92ZVRocm93Q29uc3RydWN0PElESVQsIElJSVQ+KCkpICk7CisgICAg VkVSSUZZKCAoY2hlY2tDb3B5VGhyb3dDb25zdHJ1Y3Q8SURJVCwgSURJVD4o KSkgKTsKKyAgICBWRVJJRlkoIChjaGVja01vdmVUaHJvd0NvbnN0cnVjdDxJ RElULCBJRElUPigpKSApOworICAgIFZFUklGWSggKGNoZWNrQ29weVRocm93 Q29uc3RydWN0PElCSVQsIElJSVQ+KCkpICk7CisgICAgVkVSSUZZKCAoY2hl Y2tNb3ZlVGhyb3dDb25zdHJ1Y3Q8SUJJVCwgSUlJVD4oKSkgKTsKKyAgICBW RVJJRlkoIChjaGVja0NvcHlUaHJvd0NvbnN0cnVjdDxJQklULCBJQklUPigp KSApOworICAgIFZFUklGWSggKGNoZWNrTW92ZVRocm93Q29uc3RydWN0PElC SVQsIElCSVQ+KCkpICk7CisgICAgVkVSSUZZKCAoY2hlY2tDb3B5VGhyb3dD b25zdHJ1Y3Q8SURCVCwgSUlJVD4oKSkgKTsKKyAgICBWRVJJRlkoIChjaGVj a01vdmVUaHJvd0NvbnN0cnVjdDxJREJULCBJSUlUPigpKSApOworICAgIFZF UklGWSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0PElEQlQsIElEQlQ+KCkp ICk7CisgICAgVkVSSUZZKCAoY2hlY2tNb3ZlVGhyb3dDb25zdHJ1Y3Q8SURC VCwgSURCVD4oKSkgKTsKKworICB9CisKK30KKworCitpbnQgbWFpbigpCit7 CisgIE5vdGhyb3dDb3B5VGhyb3dNb3ZlVGhyb3dDb3B5Q29udmVyc2lvbk5v dGhyb3dNb3ZlQ29udmVyc2lvbjo6UnVuKCk7CisKK30KKworCisKKworCisK KworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwor CisKKworCisKKworCisKKworCisKKworCisKKworCkluZGV4OiBsaWJzdGRj KystdjMvdGVzdHN1aXRlLzIwX3V0aWwvdHVwbGUvY29ucy9ub2V4Y2VwdF9z cGVjczUuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3R1cGxlL2NvbnMvbm9leGNlcHRfc3Bl Y3M1LmNjCShub25leGlzdGVudCkKKysrIGxpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMjBfdXRpbC90dXBsZS9jb25zL25vZXhjZXB0X3NwZWNzNS5jYwkod29y a2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MSBAQAorLy8geyBkZy1vcHRpb25z IHsgLXN0ZD1nbnUrKzJhIH0gfQorLy8geyBkZy1kbyBjb21waWxlIHsgdGFy Z2V0IGMrKzE3IH0gfQorCisvLyAyMDE5LTA0LTEwICBOaW5hIERpbmthIFJh bm5zICA8ZGlua2EucmFubnNAZ21haWwuY29tPgorLy8KKy8vIENvcHlyaWdo dCAoQykgMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8v CisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGli cmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisvLyBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0 aGUKKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikK Ky8vIGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgbGlicmFyeSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisvLworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKy8v IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJ ZiBub3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisKKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0ZXN0c3VpdGVfdHIx Lmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KKwordXNpbmcgbmFtZXNwYWNlIF9f Z251X3Rlc3Q7CisKKy8qIG5vIHRocm93IGNvcHkgKi8KKworCit0eXBlZGVm IHN0ZDo6dHVwbGU8aW50PiBJVDsKK3R5cGVkZWYgc3RkOjp0dXBsZTxjb25z dCBpbnQ+IENJVDsKK3R5cGVkZWYgc3RkOjp0dXBsZTxpbnQmJj4gUlZJVDsK K3R5cGVkZWYgc3RkOjp0dXBsZTxpbnQsIGludD4gSUlUOwordHlwZWRlZiBz dGQ6OnBhaXI8aW50LCBpbnQ+IElJUDsKK3R5cGVkZWYgc3RkOjp0dXBsZTxp bnQsIGludCwgaW50PiBJSUlUOworCisKK25hbWVzcGFjZSBUaHJvd0NvcHkK K3sKKyAgc3RydWN0IEMKKyAgeworICAgIEMoKSBub2V4Y2VwdCh0cnVlKQor ICAgICAgIHt9CisKKyAgICBleHBsaWNpdAorICAgIEMoY29uc3QgQyYpIG5v ZXhjZXB0KHRydWUpIHt9CisKKyAgfTsKKworICB0eXBlZGVmIHN0ZDo6dHVw bGU8Qz4gQ1Q7CisgIHR5cGVkZWYgc3RkOjp0dXBsZTxDLEM+IENDVDsKKyAg dHlwZWRlZiBzdGQ6OnBhaXI8QyxDPiBDQ1A7CisgIHR5cGVkZWYgc3RkOjp0 dXBsZTxpbnQsaW50LEM+IElJQ1Q7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6 OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxDVCwgQyY+Ojp2YWx1ZSwgIiIp OworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3Rp YmxlPENULCBjb25zdCBDJj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl cnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8Q1QsIEMmJj46OnZh bHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Nv bnN0cnVjdGlibGU8Q1QsIGNvbnN0IEMgJiY+Ojp2YWx1ZSwgIiIpOworCisK KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJs ZTxDQ1QsIEMmLCBDJj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQo c3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8Q0NULCBjb25zdCBDJiwg Y29uc3QgQyY+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6 aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPENDVCwgQyYmLCBDJiY+Ojp2YWx1 ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPENDVCwgY29uc3QgQyAmJiwgY29uc3QgQyAmJj46OnZhbHVl LCAiIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29u c3RydWN0aWJsZTxJSUNULCBpbnQsIGludCwgQyY+Ojp2YWx1ZSwgIiIpOwor ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl PElJQ1QsIGludCwgaW50LCBjb25zdCBDJj46OnZhbHVlLCAiIik7CisgIHN0 YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8SUlD VCwgaW50LCBpbnQsIEMmJj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl cnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8SUlDVCwgaW50LCBp bnQsIGNvbnN0IEMgJiY+Ojp2YWx1ZSwgIiIpOworCisgIHN0YXRpY19hc3Nl cnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8Q1QsIENUJj46OnZh bHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Nv bnN0cnVjdGlibGU8Q1QsIGNvbnN0IENUJj46OnZhbHVlLCAiIik7CisgIHN0 YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8Q1Qs IENUJiY+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf bm90aHJvd19jb25zdHJ1Y3RpYmxlPENULCBjb25zdCBDVCAmJj46OnZhbHVl LCAiIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29u c3RydWN0aWJsZTxDQ1QsIENDVCY+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNf YXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPENDVCwgY29u c3QgQ0NUJj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjpp c19ub3Rocm93X2NvbnN0cnVjdGlibGU8Q0NULCBDQ1QmJj46OnZhbHVlLCAi Iik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVj dGlibGU8Q0NULCBjb25zdCBDQ1QgJiY+Ojp2YWx1ZSwgIiIpOworCisgIHN0 YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8Q0NU LCBDQ1AmPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz X25vdGhyb3dfY29uc3RydWN0aWJsZTxDQ1QsIGNvbnN0IENDUCY+Ojp2YWx1 ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPENDVCwgQ0NQJiY+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNf YXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPENDVCwgY29u c3QgQ0NQICYmPjo6dmFsdWUsICIiKTsKKworICBzdGF0aWNfYXNzZXJ0KHN0 ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPElJQ1QsIElJQ1QmPjo6dmFs dWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29u c3RydWN0aWJsZTxJSUNULCBjb25zdCBJSUNUJj46OnZhbHVlLCAiIik7Cisg IHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8 SUlDVCwgSUlDVCYmPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChz dGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxJSUNULCBjb25zdCBJSUNU ICYmPjo6dmFsdWUsICIiKTsKKworfQoraW50IG1haW4oKQoreworCit9CisK KworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwor CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpJbmRl eDogbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3R1cGxlL2NvbnMv bm9leGNlcHRfc3BlY3M2LmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGxpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC90dXBsZS9jb25zL25v ZXhjZXB0X3NwZWNzNi5jYwkobm9uZXhpc3RlbnQpCisrKyBsaWJzdGRjKyst djMvdGVzdHN1aXRlLzIwX3V0aWwvdHVwbGUvY29ucy9ub2V4Y2VwdF9zcGVj czYuY2MJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODcgQEAKKy8vIHsg ZGctb3B0aW9ucyB7IC1zdGQ9Z251KysyYSB9IH0KKy8vIHsgZGctZG8gcnVu IHsgdGFyZ2V0IGMrKzE3IH0gfQorCisvLyAyMDE5LTA0LTEwICBOaW5hIERp bmthIFJhbm5zICA8ZGlua2EucmFubnNAZ21haWwuY29tPgorLy8KKy8vIENv cHlyaWdodCAoQykgMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBD KysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisvLyBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1 bmRlciB0aGUKKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisvLyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9w dGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisvLworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv bmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisKKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0ZXN0c3Vp dGVfdHIxLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KKwordXNpbmcgbmFtZXNw YWNlIF9fZ251X3Rlc3Q7CisKKy8qIHRocm93IG1vdmUsIG5vIHRocm93IGNv bnZlcnNpb24gKi8KKworYm9vbCB0aHJvd2luZ19jdG9yX2NhbGxlZCA9IGZh bHNlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9v bCAgY2hlY2tDb3B5VGhyb3dDb25zdHJ1Y3QoKQoreworICB0aHJvd2luZ19j dG9yX2NhbGxlZCA9IGZhbHNlOworICBib29sIGRlZHVjZWRfbm90aHJvdyA9 IHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPFQsIFUmPjo6dmFsdWU7 CisgIFUgdTsKKyAgVCB0e3V9OworICByZXR1cm4gdGhyb3dpbmdfY3Rvcl9j YWxsZWQgIT0gZGVkdWNlZF9ub3Rocm93OworfQordGVtcGxhdGU8dHlwZW5h bWUgVCwgdHlwZW5hbWUgVT4KK2Jvb2wgIGNoZWNrTW92ZVRocm93Q29uc3Ry dWN0KCkKK3sKKyAgdGhyb3dpbmdfY3Rvcl9jYWxsZWQgPSBmYWxzZTsKKyAg Ym9vbCBkZWR1Y2VkX25vdGhyb3cgPSBzdGQ6OmlzX25vdGhyb3dfY29uc3Ry dWN0aWJsZTxULCBVJiY+Ojp2YWx1ZTsKKyAgVSB1OworICBUIHR7c3RkOjpt b3ZlKHUpfTsKKyAgcmV0dXJuIHRocm93aW5nX2N0b3JfY2FsbGVkICE9IGRl ZHVjZWRfbm90aHJvdzsKK30KKwordHlwZWRlZiBzdGQ6OnR1cGxlPGludD4g SVQ7Cit0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgaW50PiBDSVQ7Cit0eXBl ZGVmIHN0ZDo6dHVwbGU8aW50JiY+IFJWSVQ7Cit0eXBlZGVmIHN0ZDo6dHVw bGU8aW50LCBpbnQ+IElJVDsKK3R5cGVkZWYgc3RkOjpwYWlyPGludCwgaW50 PiBJSVA7Cit0eXBlZGVmIHN0ZDo6dHVwbGU8aW50LCBpbnQsIGludD4gSUlJ VDsKKworbmFtZXNwYWNlIFRocm93TW92ZU5vdGhyb3dDb252ZXJzaW9uCit7 CisgIHN0cnVjdCBECisgIHsKKyAgRCgpIG5vZXhjZXB0KHRydWUpCisgIHt9 CisKKyAgZXhwbGljaXQKKyAgRChjb25zdCBpbnQmKSBub2V4Y2VwdCh0cnVl KQorICB7fQorCisgIGV4cGxpY2l0CisgIEQoaW50JiYpIG5vZXhjZXB0KGZh bHNlKQorICB7ICB0aHJvd2luZ19jdG9yX2NhbGxlZCA9IHRydWU7IH0KKwor ICB9OworCisgIHR5cGVkZWYgc3RkOjp0dXBsZTxEPiBEVDsKKyAgdHlwZWRl ZiBzdGQ6OnR1cGxlPEQsRD4gRERUOworICB0eXBlZGVmIHN0ZDo6cGFpcjxE LEQ+IEREUDsKKyAgdHlwZWRlZiBzdGQ6OnR1cGxlPGludCxELGludD4gSURJ VDsKKworCisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25z dHJ1Y3RpYmxlPERULCBpbnQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPERULCBjb25zdCBp bnQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPERULCBpbnQmPjo6dmFsdWUsICIiKTsKKyAg c3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxE VCwgY29uc3QgaW50ICY+Ojp2YWx1ZSwgIiIpOworCisgIHN0YXRpY19hc3Nl cnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPERULCBJVD46OnZh bHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Nv bnN0cnVjdGlibGU8RFQsY29uc3QgSVQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0 aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPERULCBJ VCY+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPERULCBjb25zdCBJVCAmPjo6dmFsdWUsICIi KTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0 aWJsZTxEVCwgc3RkOjp0dXBsZTxpbnQmPj46OnZhbHVlLCAiIik7CisgIHN0 YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RFQs IGNvbnN0IHN0ZDo6dHVwbGU8aW50JiY+Pjo6dmFsdWUsICIiKTsKKworICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxEVCxE VD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhy b3dfY29udmVydGlibGU8RCxEVD46OnZhbHVlLCIiKTsKKworLyogdHdvIGVs ZW1lbnRzIHRlc3RzICovCisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbm90 aHJvd19jb25zdHJ1Y3RpYmxlPEREVCxJSVQ+Ojp2YWx1ZSwiIik7CisgIHN0 YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RERU LGNvbnN0IElJVD46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6 OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxERFQsSUlUJj46OnZhbHVlLCIi KTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0 aWJsZTxERFQsY29uc3QgSUlUICY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19h c3NlcnQoIXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPEREVCxJSVA+ Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93 X2NvbnN0cnVjdGlibGU8RERULGNvbnN0IElJUD46OnZhbHVlLCIiKTsKKyAg c3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxE RFQsSUlQJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz X25vdGhyb3dfY29uc3RydWN0aWJsZTxERFQsY29uc3QgSUlQICY+Ojp2YWx1 ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvbnN0 cnVjdGlibGU8RERULHN0ZDo6dHVwbGU8aW50JixpbnQmPj46OnZhbHVlLCIi KTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1 Y3RpYmxlPEREVCxERFQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQo c3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8RERULEREUD46OnZhbHVl LCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29uc3Ry dWN0aWJsZTxERFQsc3RkOjp0dXBsZTxpbnQmLEQ+Pjo6dmFsdWUsIiIpOwor ICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJs ZTxERFQsc3RkOjpwYWlyPEQsaW50JiY+Pjo6dmFsdWUsIiIpOworCisgIHN0 YXRpY19hc3NlcnQoc3RkOjppc19jb252ZXJ0aWJsZTxERFQsRERUPjo6dmFs dWUsIiIpOworCisvKiB0aHJlZSBlbGVtZW50cyB0ZXN0cyAqLworICBzdGF0 aWNfYXNzZXJ0KCFzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxJRElU LElJSVQ+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19u b3Rocm93X2NvbnN0cnVjdGlibGU8SURJVCxjb25zdCBJSUlUPjo6dmFsdWUs IiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1 Y3RpYmxlPElESVQsSUlJVCY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3Nl cnQoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8SURJVCxjb25zdCBJ SUlUICY+Ojp2YWx1ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz X25vdGhyb3dfY29udmVydGlibGU8SURJVCxJRElUPjo6dmFsdWUsIiIpOwor ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb252ZXJ0aWJsZTxJ RElULElESVQ+Ojp2YWx1ZSwiIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6 OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxJRElULGludCYsY29uc3QgaW50 JixpbnQmJj46OnZhbHVlLCIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz X25vdGhyb3dfY29uc3RydWN0aWJsZTxJRElULGludCAmLCBEJiYsY29uc3Qg aW50JiY+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19u b3Rocm93X2NvbnN0cnVjdGlibGU8SURJVCxzdGQ6OnR1cGxlPGludCYsY29u c3QgaW50JixpbnQmJj4+Ojp2YWx1ZSwiIik7CisgIHN0YXRpY19hc3NlcnQo IXN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPElESVQsc3RkOjp0dXBs ZTxpbnQgJiwgaW50JiYsY29uc3QgaW50JiY+Pjo6dmFsdWUsIiIpOworCisg IHZvaWQgUnVuKCkKKyAgeworICAgIFZFUklGWSggKGNoZWNrQ29weVRocm93 Q29uc3RydWN0PEREVCwgSUlUPigpKSApOworICAgIFZFUklGWSggKGNoZWNr TW92ZVRocm93Q29uc3RydWN0PEREVCwgSUlUPigpKSApOworICAgIFZFUklG WSggKGNoZWNrQ29weVRocm93Q29uc3RydWN0PEREVCwgc3RkOjp0dXBsZTxE LCBpbnQ+PigpKSApOworICAgIFZFUklGWSggKGNoZWNrTW92ZVRocm93Q29u c3RydWN0PEREVCwgc3RkOjp0dXBsZTxELCBpbnQ+PigpKSApOworICB9Cit9 CisKK2ludCBtYWluKCkKK3sKKworICBUaHJvd01vdmVOb3Rocm93Q29udmVy c2lvbjo6UnVuKCk7CisKK30KKworCisKKworCisKKworCisKKworCisKKwor CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisK KworCisKKworCisKKworCg== --000000000000c485750586a57659--