From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 004363858C74; Mon, 15 Aug 2022 11:06:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 004363858C74 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.93,238,1654588800"; d="diff'?scan'208";a="84036307" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 15 Aug 2022 03:06:12 -0800 IronPort-SDR: HXAzkLiDeQdktvskTIh6eJDopau3JaFk5xJ1Z4aEoqOXNJ2RfUfDiv1qL1mWvTiSsDdJWGRDDX u9C3nyg66nOq8MSc6C8DPhzexHtNcIjSWx5HXwLuSeLmBXLFuSN4XVEard3Er3ROe1/SnMDMbH jeVDkUa4+I3OjDHihO49egfjIG9PsJrGSBMz19y70CPWeZPzi1LwKB5DDtI6JGP4XrpuerluMF DguAfQSHUihZ4PXHqbRdkzxYhg1wtlE2bcYlc3D2Od9THkpkuVaxHnkdYryypWQDkG7Xdo7s59 RFo= Content-Type: multipart/mixed; boundary="------------0VMhd3LKuF0h3iEfytxm43fE" Message-ID: <05ddbeaf-2276-960a-d1e4-4cd6a09d0ed8@codesourcery.com> Date: Mon, 15 Aug 2022 19:05:55 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Content-Language: en-US From: Chung-Lin Tang Subject: [PATCH, OpenMP, Fortran] requires unified_shared_memory 1/2: adjust libgfortran memory allocators To: gcc-patches , Fortran List , Tobias Burnus , Andrew Stubbs , Catherine Moore , Jakub Jelinek X-ClientProxiedBy: svr-orw-mbx-10.mgc.mentorg.com (147.34.90.210) To svr-orw-mbx-10.mgc.mentorg.com (147.34.90.210) X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_MANYTO, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Aug 2022 11:06:20 -0000 --------------0VMhd3LKuF0h3iEfytxm43fE Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Hi, this patch is to fix the case where 'requires unified_shared_memory' doesn't work due to memory allocator mismatch. Currently this is only for OG12 (devel/omp/gcc-12), but will apply to mainline as well once those requires patches get in. Basically, under 'requires unified_shared_memory' enables the usm_transform pass, which transforms some of the expanded Fortran intrinsic code that uses __builtin_free() into 'omp_free (..., ompx_unified_shared_mem_alloc)'. The intention is to make all dynamic memory allocation use the OpenMP unified_shared_memory allocator, but there is a big gap in this, namely libgfortran. What happens in some tests are that libgfortran allocates stuff using normal malloc(), and the usm_transform generates code that frees the stuff using omp_free(), and chaos ensues. So the proper fix we believe is: to make it possible to move the entire libgfortran on to unified_shared_memory. This first patch is a mostly mechanical patch to change all references of malloc/free/calloc/realloc in libgfortran into xmalloc/xfree/xcalloc/xrealloc in libgfortran/runtime/memory.c, as well as strdup uses into a new internal xstrdup. All of libgfortran is adjusted this way, except libgfortran/caf, which is an independent library outside of libgfortran.so. The second patch of this series will present a way to switch the references of allocators in libgfortran/runtime/memory.c from the normal glibc malloc/free/etc. to omp_alloc/omp_free/etc. when 'requires unified_shared_memory' is detected. Tested on devel/omp/gcc-12. Plans is to commit there soon, but also seeking approval for mainline once the requires stuff goes in. Thanks, Chung-Lin 2022-08-15 Chung-Lin Tang libgfortran/ChangeLog: * m4/matmul_internal.m4: Adjust malloc/free to xmalloc/xfree. * generated/matmul_c10.c: Regenerate. * generated/matmul_c16.c: Likewise. * generated/matmul_c17.c: Likewise. * generated/matmul_c4.c: Likewise. * generated/matmul_c8.c: Likewise. * generated/matmul_i1.c: Likewise. * generated/matmul_i16.c: Likewise. * generated/matmul_i2.c: Likewise. * generated/matmul_i4.c: Likewise. * generated/matmul_i8.c: Likewise. * generated/matmul_r10.c: Likewise. * generated/matmul_r16.c: Likewise. * generated/matmul_r17.c: Likewise. * generated/matmul_r4.c: Likewise. * generated/matmul_r8.c: Likewise. * generated/matmulavx128_c10.c: Likewise. * generated/matmulavx128_c16.c: Likewise. * generated/matmulavx128_c17.c: Likewise. * generated/matmulavx128_c4.c: Likewise. * generated/matmulavx128_c8.c: Likewise. * generated/matmulavx128_i1.c: Likewise. * generated/matmulavx128_i16.c: Likewise. * generated/matmulavx128_i2.c: Likewise. * generated/matmulavx128_i4.c: Likewise. * generated/matmulavx128_i8.c: Likewise. * generated/matmulavx128_r10.c: Likewise. * generated/matmulavx128_r16.c: Likewise. * generated/matmulavx128_r17.c: Likewise. * generated/matmulavx128_r4.c: Likewise. * generated/matmulavx128_r8.c: Likewise. * intrinsics/access.c (access_func): Adjust free to xfree. * intrinsics/chdir.c (chdir_i4_sub): Likewise. (chdir_i8_sub): Likewise. * intrinsics/chmod.c (chmod_func): Likewise. * intrinsics/date_and_time.c (secnds): Likewise. * intrinsics/env.c (PREFIX(getenv)): Likewise. (get_environment_variable_i4): Likewise. * intrinsics/execute_command_line.c (execute_command_line): Likewise. * intrinsics/getcwd.c (getcwd_i4_sub): Likewise. * intrinsics/getlog.c (PREFIX(getlog)): Likewise. * intrinsics/link.c (link_internal): Likewise. * intrinsics/move_alloc.c (move_alloc): Likewise. * intrinsics/perror.c (perror_sub): Likewise. * intrinsics/random.c (constructor_random): Likewise. * intrinsics/rename.c (rename_internal): Likewise. * intrinsics/stat.c (stat_i4_sub_0): Likewise. (stat_i8_sub_0): Likewise. * intrinsics/symlnk.c (symlnk_internal): Likewise. * intrinsics/system.c (system_sub): Likewise. * intrinsics/unlink.c (unlink_i4_sub): Likewise. * io/async.c (update_pdt): Likewise. (async_io): Likewise. (free_async_unit): Likewise. (init_async_unit): Adjust calloc to xcalloc. (enqueue_done_id): Likewise. (enqueue_done): Likewise. (enqueue_close): Likewise. * io/async.h (MUTEX_DEBUG_ADD): Adjust malloc/free to xmalloc/xfree. * io/close.c (st_close): Adjust strdup/free to xstrdup/xfree. * io/fbuf.c (fbuf_destroy): Adjust free to xfree. * io/format.c (free_format_hash_table): Likewise. (save_parsed_format): Likewise. (free_format): Likewise. (free_format_data): Likewise. * io/intrinsics.c (ttynam): Likewise. * io/list_read.c (free_saved): Likewise. (free_line): Likewise. (nml_touch_nodes): Likewise. (nml_read_obj): Likewise. * io/lock.c (free_ionml): Likewise. * io/open.c (new_unit): Likewise. (already_open): Likewise. * io/read.c (read_f): Likewise. * io/transfer.c (formatted_transfer_scalar_read): Likewise. (formatted_transfer_scalar_write): Likewise. (finalize_transfer): Likewise. (st_read_done_worker): Likewise. (st_write_done_worker): Likewise. * io/unit.c (destroy_unit_mutex): Likewise. (init_units): Adjust strdup to xstrdup. (close_unit_1): Adjust free to xfree. (close_units): Likewise. (filename_from_unit): Adjust strdup to xstrdup. * io/unix.c (raw_close): Adjust free to xfree. (buf_close): Likewise. (mem_close): Likewise. (tempfile): Adjust strdup to xstrdup. (regular_file): Adjust free to xfree. (compare_file_filename): Likewise. (flush_all_units): Likewise. (file_exists): Likewise. (file_size): Likewise. (inquire_sequential): Likewise. (inquire_direct): Likewise. (inquire_formatted): Likewise. (inquire_access): Likewise. * io/write.c (write_float_0): Likewise. (write_real): Likewise. (write_real_w0): Likewise. (write_complex): Likewise. (nml_write_obj): Likewise. * runtime/ISO_Fortran_binding.c (gfc_desc_to_cfi_desc): Adjust calloc to xcalloc. (CFI_allocate): Adjust free to xfree. (CFI_deallocate): Likewise. * runtime/error.c (show_locus): Likewise. (constructor_recursion_check): Likewise. * runtime/minimal.c (show_locus): Likewise. * runtime/string.c (fc_strdup): Rename from strndup, remove HAVE_STRNDUP. (xstrdup): New function. (fc_strdup): Adjust from strndup to fc_strndup. (fc_strdup_notrim): Likewise. * libgfortran.h (xfree): Add new internal prototype. (xstrdup): Likewise. * runtime/memory.c (xfree): New function. --------------0VMhd3LKuF0h3iEfytxm43fE Content-Type: text/plain; charset="UTF-8"; name="a.diff" Content-Disposition: attachment; filename="a.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfYzEwLmMgYi9saWJn Zm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX2MxMC5jCmluZGV4IDIzNjUyMWUuLmNjOWUyNzAg MTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfYzEwLmMKKysrIGIv bGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9jMTAuYwpAQCAtMzM5LDcgKzMzOSw3IEBA IG1hdG11bF9jMTBfYXZ4IChnZmNfYXJyYXlfYzEwICogY29uc3QgcmVzdHJpY3QgcmV0YXJy YXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAg ICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhfMTApKTsKKyAg ICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzEwKSk7CiAK ICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpA QCAtNTUwLDcgKzU1MCw3IEBAIG1hdG11bF9jMTBfYXZ4IChnZmNfYXJyYXlfYzEwICogY29u c3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEp OworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYg KHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAt OTA4LDcgKzkwOCw3IEBAIG1hdG11bF9jMTBfYXZ4MiAoZ2ZjX2FycmF5X2MxMCAqIGNvbnN0 IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2Rp bSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19D T01QTEVYXzEwKSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNf Q09NUExFWF8xMCkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8K ICAgICAgIGkxID0gbjsKQEAgLTExMTksNyArMTExOSw3IEBAIG1hdG11bF9jMTBfYXZ4MiAo Z2ZjX2FycmF5X2MxMCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0K IAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47 CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYg YnhzdHJpZGUgPT0gMSkKQEAgLTE0NzcsNyArMTQ3Nyw3IEBAIG1hdG11bF9jMTBfYXZ4NTEy ZiAoZ2ZjX2FycmF5X2MxMCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYg KHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxv YyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzEwKSk7CisgICAgICB0MSA9IHhtYWxs b2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF8xMCkpOwogCiAgICAgICAvKiBTdGFy dCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTE2ODgsNyArMTY4 OCw3IEBAIG1hdG11bF9jMTBfYXZ4NTEyZiAoZ2ZjX2FycmF5X2MxMCAqIGNvbnN0IHJlc3Ry aWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAg IHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlk ZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTIwNjAsNyAr MjA2MCw3IEBAIG1hdG11bF9jMTBfdmFuaWxsYSAoZ2ZjX2FycmF5X2MxMCAqIGNvbnN0IHJl c3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9 IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01Q TEVYXzEwKSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09N UExFWF8xMCkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAg ICAgIGkxID0gbjsKQEAgLTIyNzEsNyArMjI3MSw3IEBAIG1hdG11bF9jMTBfdmFuaWxsYSAo Z2ZjX2FycmF5X2MxMCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0K IAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47 CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYg YnhzdHJpZGUgPT0gMSkKQEAgLTI3MDIsNyArMjcwMiw3IEBAIG1hdG11bF9jMTAgKGdmY19h cnJheV9jMTAgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0g PiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2Rp bSAqIHNpemVvZihHRkNfQ09NUExFWF8xMCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9k aW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhfMTApKTsKIAogICAgICAgLyogU3RhcnQgdHVybmlu ZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0yOTEzLDcgKzI5MTMsNyBAQCBt YXRtdWxfYzEwIChnZmNfYXJyYXlfYzEwICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJ CX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAg ICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJp ZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2Vu ZXJhdGVkL21hdG11bF9jMTYuYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfYzE2 LmMKaW5kZXggNWVmNDQzYy4uMDEwZTFiYyAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2Vu ZXJhdGVkL21hdG11bF9jMTYuYworKysgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVs X2MxNi5jCkBAIC0zMzksNyArMzM5LDcgQEAgbWF0bXVsX2MxNl9hdnggKGdmY19hcnJheV9j MTYgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUz NikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNp emVvZihHRkNfQ09NUExFWF8xNikpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBz aXplb2YoR0ZDX0NPTVBMRVhfMTYpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUg Y3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC01NTAsNyArNTUwLDcgQEAgbWF0bXVsX2Mx Nl9hdnggKGdmY19hcnJheV9jMTYgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQog CSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAg cmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9 PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC05MDgsNyArOTA4LDcgQEAgbWF0bXVsX2MxNl9h dngyIChnZmNfYXJyYXlfYzE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBp ZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFs bG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhfMTYpKTsKKyAgICAgIHQxID0geG1h bGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzE2KSk7CiAKICAgICAgIC8qIFN0 YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMTExOSw3ICsx MTE5LDcgQEAgbWF0bXVsX2MxNl9hdngyIChnZmNfYXJyYXlfYzE2ICogY29uc3QgcmVzdHJp Y3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAg eGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRl ID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMTQ3Nyw3ICsx NDc3LDcgQEAgbWF0bXVsX2MxNl9hdng1MTJmIChnZmNfYXJyYXlfYzE2ICogY29uc3QgcmVz dHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0g NjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBM RVhfMTYpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01Q TEVYXzE2KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAg ICAgaTEgPSBuOwpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgbWF0bXVsX2MxNl9hdng1MTJmIChn ZmNfYXJyYXlfYzE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQog CX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsK ICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBi eHN0cmlkZSA9PSAxKQpAQCAtMjA2MCw3ICsyMDYwLDcgQEAgbWF0bXVsX2MxNl92YW5pbGxh IChnZmNfYXJyYXlfYzE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAo dDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9j ICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhfMTYpKTsKKyAgICAgIHQxID0geG1hbGxv YyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzE2KSk7CiAKICAgICAgIC8qIFN0YXJ0 IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMjI3MSw3ICsyMjcx LDcgQEAgbWF0bXVsX2MxNl92YW5pbGxhIChnZmNfYXJyYXlfYzE2ICogY29uc3QgcmVzdHJp Y3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAg eGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRl ID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMjcwMiw3ICsy NzAyLDcgQEAgbWF0bXVsX2MxNiAoZ2ZjX2FycmF5X2MxNiAqIGNvbnN0IHJlc3RyaWN0IHJl dGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2Owog Ci0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzE2KSk7 CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF8xNikp OwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0g bjsKQEAgLTI5MTMsNyArMjkxMyw3IEBAIG1hdG11bF9jMTYgKGdmY19hcnJheV9jMTYgKiBj b25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0 MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBp ZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCmRp ZmYgLS1naXQgYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX2MxNy5jIGIvbGliZ2Zv cnRyYW4vZ2VuZXJhdGVkL21hdG11bF9jMTcuYwppbmRleCBhMWE3ZDQyLi45NzlmMGEyIDEw MDY0NAotLS0gYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX2MxNy5jCisrKyBiL2xp Ymdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfYzE3LmMKQEAgLTMzOSw3ICszMzksNyBAQCBt YXRtdWxfYzE3X2F2eCAoZ2ZjX2FycmF5X2MxNyAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5 LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAg ICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzE3KSk7CisgICAg ICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF8xNykpOwogCiAg ICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAg LTU1MCw3ICs1NTAsNyBAQCBtYXRtdWxfYzE3X2F2eCAoZ2ZjX2FycmF5X2MxNyAqIGNvbnN0 IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsK KyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChy eHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTkw OCw3ICs5MDgsNyBAQCBtYXRtdWxfYzE3X2F2eDIgKGdmY19hcnJheV9jMTcgKiBjb25zdCBy ZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0g PSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09N UExFWF8xNykpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NP TVBMRVhfMTcpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAg ICAgICBpMSA9IG47CkBAIC0xMTE5LDcgKzExMTksNyBAQCBtYXRtdWxfYzE3X2F2eDIgKGdm Y19hcnJheV9jMTcgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJ fQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwog ICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4 c3RyaWRlID09IDEpCkBAIC0xNDc3LDcgKzE0NzcsNyBAQCBtYXRtdWxfYzE3X2F2eDUxMmYg KGdmY19hcnJheV9jMTcgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0 MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2Mg KHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF8xNykpOworICAgICAgdDEgPSB4bWFsbG9j ICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhfMTcpKTsKIAogICAgICAgLyogU3RhcnQg dHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xNjg4LDcgKzE2ODgs NyBAQCBtYXRtdWxfYzE3X2F2eDUxMmYgKGdmY19hcnJheV9jMTcgKiBjb25zdCByZXN0cmlj dCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4 ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUg PT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC0yMDYwLDcgKzIw NjAsNyBAQCBtYXRtdWxfYzE3X3ZhbmlsbGEgKGdmY19hcnJheV9jMTcgKiBjb25zdCByZXN0 cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2 NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExF WF8xNykpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBM RVhfMTcpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAg ICBpMSA9IG47CkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBtYXRtdWxfYzE3X3ZhbmlsbGEgKGdm Y19hcnJheV9jMTcgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJ fQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwog ICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4 c3RyaWRlID09IDEpCkBAIC0yNzAyLDcgKzI3MDIsNyBAQCBtYXRtdWxfYzE3IChnZmNfYXJy YXlfYzE3ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4g NjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0g KiBzaXplb2YoR0ZDX0NPTVBMRVhfMTcpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGlt ICogc2l6ZW9mKEdGQ19DT01QTEVYXzE3KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcg dGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMjkxMyw3ICsyOTEzLDcgQEAgbWF0 bXVsX2MxNyAoZ2ZjX2FycmF5X2MxNyAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9 CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAg ICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRl ID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2dlbmVy YXRlZC9tYXRtdWxfYzQuYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfYzQuYwpp bmRleCA1Zjg2YTU1Li40Nzk1NmUwIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9nZW5lcmF0 ZWQvbWF0bXVsX2M0LmMKKysrIGIvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9jNC5j CkBAIC0zMzksNyArMzM5LDcgQEAgbWF0bXVsX2M0X2F2eCAoZ2ZjX2FycmF5X2M0ICogY29u c3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFf ZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZD X0NPTVBMRVhfNCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZD X0NPTVBMRVhfNCkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8K ICAgICAgIGkxID0gbjsKQEAgLTU1MCw3ICs1NTAsNyBAQCBtYXRtdWxfYzRfYXZ4IChnZmNf YXJyYXlfYzQgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQot ICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAg IH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3Ry aWRlID09IDEpCkBAIC05MDgsNyArOTA4LDcgQEAgbWF0bXVsX2M0X2F2eDIgKGdmY19hcnJh eV9jNCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1 NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICog c2l6ZW9mKEdGQ19DT01QTEVYXzQpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICog c2l6ZW9mKEdGQ19DT01QTEVYXzQpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUg Y3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xMTE5LDcgKzExMTksNyBAQCBtYXRtdWxf YzRfYXZ4MiAoZ2ZjX2FycmF5X2M0ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0K IAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAg IHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUg PT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMTQ3Nyw3ICsxNDc3LDcgQEAgbWF0bXVsX2M0 X2F2eDUxMmYgKGdmY19hcnJheV9jNCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAg ICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9 IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzQpKTsKKyAgICAgIHQxID0g eG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzQpKTsKIAogICAgICAgLyog U3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xNjg4LDcg KzE2ODgsNyBAQCBtYXRtdWxfYzRfYXZ4NTEyZiAoZ2ZjX2FycmF5X2M0ICogY29uc3QgcmVz dHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAg ICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3Ry aWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMjA2MCw3 ICsyMDYwLDcgQEAgbWF0bXVsX2M0X3ZhbmlsbGEgKGdmY19hcnJheV9jNCAqIGNvbnN0IHJl c3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9 IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01Q TEVYXzQpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01Q TEVYXzQpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAg ICBpMSA9IG47CkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBtYXRtdWxfYzRfdmFuaWxsYSAoZ2Zj X2FycmF5X2M0ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0K LSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAg ICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0 cmlkZSA9PSAxKQpAQCAtMjcwMiw3ICsyNzAyLDcgQEAgbWF0bXVsX2M0IChnZmNfYXJyYXlf YzQgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUz NikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNp emVvZihHRkNfQ09NUExFWF80KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNp emVvZihHRkNfQ09NUExFWF80KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNy YW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMjkxMyw3ICsyOTEzLDcgQEAgbWF0bXVsX2M0 IChnZmNfYXJyYXlfYzQgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9 CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJu OwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYm IGJ4c3RyaWRlID09IDEpCmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0 bXVsX2M4LmMgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX2M4LmMKaW5kZXggMWUy Nzk4MS4uMzUzYTJiZiAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11 bF9jOC5jCisrKyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfYzguYwpAQCAtMzM5 LDcgKzMzOSw3IEBAIG1hdG11bF9jOF9hdnggKGdmY19hcnJheV9jOCAqIGNvbnN0IHJlc3Ry aWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1 NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVY XzgpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVY XzgpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBp MSA9IG47CkBAIC01NTAsNyArNTUwLDcgQEAgbWF0bXVsX2M4X2F2eCAoZ2ZjX2FycmF5X2M4 ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZy ZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVs c2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAx KQpAQCAtOTA4LDcgKzkwOCw3IEBAIG1hdG11bF9jOF9hdngyIChnZmNfYXJyYXlfYzggKiBj b25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0 MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihH RkNfQ09NUExFWF84KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihH RkNfQ09NUExFWF84KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAq LwogICAgICAgaTEgPSBuOwpAQCAtMTExOSw3ICsxMTE5LDcgQEAgbWF0bXVsX2M4X2F2eDIg KGdmY19hcnJheV9jOCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0K IAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47 CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYg YnhzdHJpZGUgPT0gMSkKQEAgLTE0NzcsNyArMTQ3Nyw3IEBAIG1hdG11bF9jOF9hdng1MTJm IChnZmNfYXJyYXlfYzggKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0 MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2Mg KHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF84KSk7CisgICAgICB0MSA9IHhtYWxsb2Mg KHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF84KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1 cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMTY4OCw3ICsxNjg4LDcg QEAgbWF0bXVsX2M4X2F2eDUxMmYgKGdmY19hcnJheV9jOCAqIGNvbnN0IHJlc3RyaWN0IHJl dGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVl ICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAx ICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTIwNjAsNyArMjA2MCw3 IEBAIG1hdG11bF9jOF92YW5pbGxhIChnZmNfYXJyYXlfYzggKiBjb25zdCByZXN0cmljdCBy ZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsK IAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF84KSk7 CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF84KSk7 CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBu OwpAQCAtMjI3MSw3ICsyMjcxLDcgQEAgbWF0bXVsX2M4X3ZhbmlsbGEgKGdmY19hcnJheV9j OCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBm cmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBl bHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0g MSkKQEAgLTI3MDIsNyArMjcwMiw3IEBAIG1hdG11bF9jOCAoZ2ZjX2FycmF5X2M4ICogY29u c3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFf ZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZD X0NPTVBMRVhfOCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZD X0NPTVBMRVhfOCkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8K ICAgICAgIGkxID0gbjsKQEAgLTI5MTMsNyArMjkxMyw3IEBAIG1hdG11bF9jOCAoZ2ZjX2Fy cmF5X2M4ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAg ICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9 CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlk ZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9pMS5j IGIvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9pMS5jCmluZGV4IDBiMzI0Y2QuLmMz YjBiNWYgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfaTEuYwor KysgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX2kxLmMKQEAgLTMzOSw3ICszMzks NyBAQCBtYXRtdWxfaTFfYXZ4IChnZmNfYXJyYXlfaTEgKiBjb25zdCByZXN0cmljdCByZXRh cnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAot ICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl8xKSk7Cisg ICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl8xKSk7CiAK ICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpA QCAtNTUwLDcgKzU1MCw3IEBAIG1hdG11bF9pMV9hdnggKGdmY19hcnJheV9pMSAqIGNvbnN0 IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsK KyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChy eHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTkw OCw3ICs5MDgsNyBAQCBtYXRtdWxfaTFfYXZ4MiAoZ2ZjX2FycmF5X2kxICogY29uc3QgcmVz dHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0g NjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVH RVJfMSkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVH RVJfMSkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAg IGkxID0gbjsKQEAgLTExMTksNyArMTExOSw3IEBAIG1hdG11bF9pMV9hdngyIChnZmNfYXJy YXlfaTEgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAg ICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0K ICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRl ID09IDEpCkBAIC0xNDc3LDcgKzE0NzcsNyBAQCBtYXRtdWxfaTFfYXZ4NTEyZiAoZ2ZjX2Fy cmF5X2kxICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4g NjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0g KiBzaXplb2YoR0ZDX0lOVEVHRVJfMSkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0g KiBzaXplb2YoR0ZDX0lOVEVHRVJfMSkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRo ZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTE2ODgsNyArMTY4OCw3IEBAIG1hdG11 bF9pMV9hdng1MTJmIChnZmNfYXJyYXlfaTEgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwK IAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwog ICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0 cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC0yMDYwLDcgKzIwNjAsNyBAQCBtYXRt dWxfaTFfdmFuaWxsYSAoZ2ZjX2FycmF5X2kxICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXks CiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAg IHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJfMSkpOworICAgICAg dDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJfMSkpOwogCiAgICAg ICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTIy NzEsNyArMjI3MSw3IEBAIG1hdG11bF9pMV92YW5pbGxhIChnZmNfYXJyYXlfaTEgKiBjb25z dCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7 CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAo cnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC0y NzAyLDcgKzI3MDIsNyBAQCBtYXRtdWxfaTEgKGdmY19hcnJheV9pMSAqIGNvbnN0IHJlc3Ry aWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1 NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VS XzEpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VS XzEpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBp MSA9IG47CkBAIC0yOTEzLDcgKzI5MTMsNyBAQCBtYXRtdWxfaTEgKGdmY19hcnJheV9pMSAq IGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVl KHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNl IGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkK ZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfaTE2LmMgYi9saWJn Zm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX2kxNi5jCmluZGV4IDJhNmJlZTcuLjNlZDg0MzQg MTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfaTE2LmMKKysrIGIv bGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9pMTYuYwpAQCAtMzM5LDcgKzMzOSw3IEBA IG1hdG11bF9pMTZfYXZ4IChnZmNfYXJyYXlfaTE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJy YXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAg ICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJfMTYpKTsKKyAg ICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzE2KSk7CiAK ICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpA QCAtNTUwLDcgKzU1MCw3IEBAIG1hdG11bF9pMTZfYXZ4IChnZmNfYXJyYXlfaTE2ICogY29u c3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEp OworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYg KHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAt OTA4LDcgKzkwOCw3IEBAIG1hdG11bF9pMTZfYXZ4MiAoZ2ZjX2FycmF5X2kxNiAqIGNvbnN0 IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2Rp bSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19J TlRFR0VSXzE2KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNf SU5URUdFUl8xNikpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8K ICAgICAgIGkxID0gbjsKQEAgLTExMTksNyArMTExOSw3IEBAIG1hdG11bF9pMTZfYXZ4MiAo Z2ZjX2FycmF5X2kxNiAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0K IAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47 CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYg YnhzdHJpZGUgPT0gMSkKQEAgLTE0NzcsNyArMTQ3Nyw3IEBAIG1hdG11bF9pMTZfYXZ4NTEy ZiAoZ2ZjX2FycmF5X2kxNiAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYg KHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxv YyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzE2KSk7CisgICAgICB0MSA9IHhtYWxs b2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl8xNikpOwogCiAgICAgICAvKiBTdGFy dCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTE2ODgsNyArMTY4 OCw3IEBAIG1hdG11bF9pMTZfYXZ4NTEyZiAoZ2ZjX2FycmF5X2kxNiAqIGNvbnN0IHJlc3Ry aWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAg IHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlk ZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTIwNjAsNyAr MjA2MCw3IEBAIG1hdG11bF9pMTZfdmFuaWxsYSAoZ2ZjX2FycmF5X2kxNiAqIGNvbnN0IHJl c3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9 IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRF R0VSXzE2KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5U RUdFUl8xNikpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAg ICAgIGkxID0gbjsKQEAgLTIyNzEsNyArMjI3MSw3IEBAIG1hdG11bF9pMTZfdmFuaWxsYSAo Z2ZjX2FycmF5X2kxNiAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0K IAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47 CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYg YnhzdHJpZGUgPT0gMSkKQEAgLTI3MDIsNyArMjcwMiw3IEBAIG1hdG11bF9pMTYgKGdmY19h cnJheV9pMTYgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0g PiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2Rp bSAqIHNpemVvZihHRkNfSU5URUdFUl8xNikpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9k aW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJfMTYpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmlu ZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0yOTEzLDcgKzI5MTMsNyBAQCBt YXRtdWxfaTE2IChnZmNfYXJyYXlfaTE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJ CX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAg ICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJp ZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2Vu ZXJhdGVkL21hdG11bF9pMi5jIGIvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9pMi5j CmluZGV4IDgzOTk1ZTcuLmI1MTk5ZmIgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2dlbmVy YXRlZC9tYXRtdWxfaTIuYworKysgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX2ky LmMKQEAgLTMzOSw3ICszMzksNyBAQCBtYXRtdWxfaTJfYXZ4IChnZmNfYXJyYXlfaTIgKiBj b25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0 MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihH RkNfSU5URUdFUl8yKSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihH RkNfSU5URUdFUl8yKSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAq LwogICAgICAgaTEgPSBuOwpAQCAtNTUwLDcgKzU1MCw3IEBAIG1hdG11bF9pMl9hdnggKGdm Y19hcnJheV9pMiAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9 Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAg ICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhz dHJpZGUgPT0gMSkKQEAgLTkwOCw3ICs5MDgsNyBAQCBtYXRtdWxfaTJfYXZ4MiAoZ2ZjX2Fy cmF5X2kyICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4g NjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0g KiBzaXplb2YoR0ZDX0lOVEVHRVJfMikpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0g KiBzaXplb2YoR0ZDX0lOVEVHRVJfMikpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRo ZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTExMTksNyArMTExOSw3IEBAIG1hdG11 bF9pMl9hdngyIChnZmNfYXJyYXlfaTIgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJ fQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAg ICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlk ZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC0xNDc3LDcgKzE0NzcsNyBAQCBtYXRtdWxf aTJfYXZ4NTEyZiAoZ2ZjX2FycmF5X2kyICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAg ICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQx ID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJfMikpOworICAgICAgdDEg PSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJfMikpOwogCiAgICAgICAv KiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTE2ODgs NyArMTY4OCw3IEBAIG1hdG11bF9pMl9hdng1MTJmIChnZmNfYXJyYXlfaTIgKiBjb25zdCBy ZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7Cisg ICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhz dHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC0yMDYw LDcgKzIwNjAsNyBAQCBtYXRtdWxfaTJfdmFuaWxsYSAoZ2ZjX2FycmF5X2kyICogY29uc3Qg cmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGlt ID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lO VEVHRVJfMikpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lO VEVHRVJfMikpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAg ICAgIGkxID0gbjsKQEAgLTIyNzEsNyArMjI3MSw3IEBAIG1hdG11bF9pMl92YW5pbGxhIChn ZmNfYXJyYXlfaTIgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJ fQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwog ICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4 c3RyaWRlID09IDEpCkBAIC0yNzAyLDcgKzI3MDIsNyBAQCBtYXRtdWxfaTIgKGdmY19hcnJh eV9pMiAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1 NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICog c2l6ZW9mKEdGQ19JTlRFR0VSXzIpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICog c2l6ZW9mKEdGQ19JTlRFR0VSXzIpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUg Y3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0yOTEzLDcgKzI5MTMsNyBAQCBtYXRtdWxf aTIgKGdmY19hcnJheV9pMiAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAg IH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1 cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEg JiYgYnhzdHJpZGUgPT0gMSkKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9t YXRtdWxfaTQuYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfaTQuYwppbmRleCA0 ZmJhMDZmLi45MDZlNmI4IDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0 bXVsX2k0LmMKKysrIGIvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9pNC5jCkBAIC0z MzksNyArMzM5LDcgQEAgbWF0bXVsX2k0X2F2eCAoZ2ZjX2FycmF5X2k0ICogY29uc3QgcmVz dHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0g NjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVH RVJfNCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVH RVJfNCkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAg IGkxID0gbjsKQEAgLTU1MCw3ICs1NTAsNyBAQCBtYXRtdWxfaTRfYXZ4IChnZmNfYXJyYXlf aTQgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAg ZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAg ZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09 IDEpCkBAIC05MDgsNyArOTA4LDcgQEAgbWF0bXVsX2k0X2F2eDIgKGdmY19hcnJheV9pNCAq IGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQog CXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9m KEdGQ19JTlRFR0VSXzQpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9m KEdGQ19JTlRFR0VSXzQpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3Jhbmsu ICovCiAgICAgICBpMSA9IG47CkBAIC0xMTE5LDcgKzExMTksNyBAQCBtYXRtdWxfaTRfYXZ4 MiAoZ2ZjX2FycmF5X2k0ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAg fQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVy bjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAm JiBieHN0cmlkZSA9PSAxKQpAQCAtMTQ3Nyw3ICsxNDc3LDcgQEAgbWF0bXVsX2k0X2F2eDUx MmYgKGdmY19hcnJheV9pNCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYg KHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxv YyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzQpKTsKKyAgICAgIHQxID0geG1hbGxv YyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzQpKTsKIAogICAgICAgLyogU3RhcnQg dHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xNjg4LDcgKzE2ODgs NyBAQCBtYXRtdWxfaTRfYXZ4NTEyZiAoZ2ZjX2FycmF5X2k0ICogY29uc3QgcmVzdHJpY3Qg cmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZy ZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09 IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMjA2MCw3ICsyMDYw LDcgQEAgbWF0bXVsX2k0X3ZhbmlsbGEgKGdmY19hcnJheV9pNCAqIGNvbnN0IHJlc3RyaWN0 IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2 OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzQp KTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzQp KTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9 IG47CkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBtYXRtdWxfaTRfdmFuaWxsYSAoZ2ZjX2FycmF5 X2k0ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAg IGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAg IGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9 PSAxKQpAQCAtMjcwMiw3ICsyNzAyLDcgQEAgbWF0bXVsX2k0IChnZmNfYXJyYXlfaTQgKiBj b25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0 MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihH RkNfSU5URUdFUl80KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihH RkNfSU5URUdFUl80KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAq LwogICAgICAgaTEgPSBuOwpAQCAtMjkxMyw3ICsyOTEzLDcgQEAgbWF0bXVsX2k0IChnZmNf YXJyYXlfaTQgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQot ICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAg IH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3Ry aWRlID09IDEpCmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX2k4 LmMgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX2k4LmMKaW5kZXggYWY5OTU2Ny4u ZWE5NWM3ZSAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9pOC5j CisrKyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfaTguYwpAQCAtMzM5LDcgKzMz OSw3IEBAIG1hdG11bF9pOF9hdnggKGdmY19hcnJheV9pOCAqIGNvbnN0IHJlc3RyaWN0IHJl dGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2Owog Ci0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzgpKTsK KyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzgpKTsK IAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47 CkBAIC01NTAsNyArNTUwLDcgQEAgbWF0bXVsX2k4X2F2eCAoZ2ZjX2FycmF5X2k4ICogY29u c3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEp OworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYg KHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAt OTA4LDcgKzkwOCw3IEBAIG1hdG11bF9pOF9hdngyIChnZmNfYXJyYXlfaTggKiBjb25zdCBy ZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0g PSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5U RUdFUl84KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5U RUdFUl84KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAg ICAgaTEgPSBuOwpAQCAtMTExOSw3ICsxMTE5LDcgQEAgbWF0bXVsX2k4X2F2eDIgKGdmY19h cnJheV9pOCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0g ICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAg fQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJp ZGUgPT0gMSkKQEAgLTE0NzcsNyArMTQ3Nyw3IEBAIG1hdG11bF9pOF9hdng1MTJmIChnZmNf YXJyYXlfaTggKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0g PiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2Rp bSAqIHNpemVvZihHRkNfSU5URUdFUl84KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2Rp bSAqIHNpemVvZihHRkNfSU5URUdFUl84KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcg dGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgbWF0 bXVsX2k4X2F2eDUxMmYgKGdmY19hcnJheV9pOCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5 LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7 CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5 c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTIwNjAsNyArMjA2MCw3IEBAIG1h dG11bF9pOF92YW5pbGxhIChnZmNfYXJyYXlfaTggKiBjb25zdCByZXN0cmljdCByZXRhcnJh eSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAg ICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl84KSk7CisgICAg ICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl84KSk7CiAKICAg ICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAt MjI3MSw3ICsyMjcxLDcgQEAgbWF0bXVsX2k4X3ZhbmlsbGEgKGdmY19hcnJheV9pOCAqIGNv bnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQx KTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlm IChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAg LTI3MDIsNyArMjcwMiw3IEBAIG1hdG11bF9pOCAoZ2ZjX2FycmF5X2k4ICogY29uc3QgcmVz dHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0g NjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVH RVJfOCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVH RVJfOCkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAg IGkxID0gbjsKQEAgLTI5MTMsNyArMjkxMyw3IEBAIG1hdG11bF9pOCAoZ2ZjX2FycmF5X2k4 ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZy ZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVs c2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAx KQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9yMTAuYyBiL2xp Ymdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfcjEwLmMKaW5kZXggYjM1MDFjZS4uOWQyNDFk NiAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9yMTAuYworKysg Yi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX3IxMC5jCkBAIC0zMzksNyArMzM5LDcg QEAgbWF0bXVsX3IxMF9hdnggKGdmY19hcnJheV9yMTAgKiBjb25zdCByZXN0cmljdCByZXRh cnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAot ICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xMCkpOworICAg ICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfMTApKTsKIAogICAg ICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC01 NTAsNyArNTUwLDcgQEAgbWF0bXVsX3IxMF9hdnggKGdmY19hcnJheV9yMTAgKiBjb25zdCBy ZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7Cisg ICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhz dHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC05MDgs NyArOTA4LDcgQEAgbWF0bXVsX3IxMF9hdngyIChnZmNfYXJyYXlfcjEwICogY29uc3QgcmVz dHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0g NjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxf MTApKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzEw KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEg PSBuOwpAQCAtMTExOSw3ICsxMTE5LDcgQEAgbWF0bXVsX3IxMF9hdngyIChnZmNfYXJyYXlf cjEwICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAg IGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAg IGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9 PSAxKQpAQCAtMTQ3Nyw3ICsxNDc3LDcgQEAgbWF0bXVsX3IxMF9hdng1MTJmIChnZmNfYXJy YXlfcjEwICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4g NjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0g KiBzaXplb2YoR0ZDX1JFQUxfMTApKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICog c2l6ZW9mKEdGQ19SRUFMXzEwKSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNy YW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgbWF0bXVsX3Ix MF9hdng1MTJmIChnZmNfYXJyYXlfcjEwICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJ CX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAg ICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJp ZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMjA2MCw3ICsyMDYwLDcgQEAgbWF0bXVs X3IxMF92YW5pbGxhIChnZmNfYXJyYXlfcjEwICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXks CiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAg IHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfMTApKTsKKyAgICAgIHQx ID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzEwKSk7CiAKICAgICAgIC8q IFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMjI3MSw3 ICsyMjcxLDcgQEAgbWF0bXVsX3IxMF92YW5pbGxhIChnZmNfYXJyYXlfcjEwICogY29uc3Qg cmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOwor ICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4 c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMjcw Miw3ICsyNzAyLDcgQEAgbWF0bXVsX3IxMCAoZ2ZjX2FycmF5X3IxMCAqIGNvbnN0IHJlc3Ry aWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1 NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzEw KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xMCkp OwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0g bjsKQEAgLTI5MTMsNyArMjkxMyw3IEBAIG1hdG11bF9yMTAgKGdmY19hcnJheV9yMTAgKiBj b25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0 MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBp ZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCmRp ZmYgLS1naXQgYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX3IxNi5jIGIvbGliZ2Zv cnRyYW4vZ2VuZXJhdGVkL21hdG11bF9yMTYuYwppbmRleCBmNWI2NzI1Li44ODFiNzRhYyAx MDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9yMTYuYworKysgYi9s aWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX3IxNi5jCkBAIC0zMzksNyArMzM5LDcgQEAg bWF0bXVsX3IxNl9hdnggKGdmY19hcnJheV9yMTYgKiBjb25zdCByZXN0cmljdCByZXRhcnJh eSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAg ICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xNikpOworICAgICAg dDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfMTYpKTsKIAogICAgICAg LyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC01NTAs NyArNTUwLDcgQEAgbWF0bXVsX3IxNl9hdnggKGdmY19hcnJheV9yMTYgKiBjb25zdCByZXN0 cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAg ICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJp ZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC05MDgsNyAr OTA4LDcgQEAgbWF0bXVsX3IxNl9hdngyIChnZmNfYXJyYXlfcjE2ICogY29uc3QgcmVzdHJp Y3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1 MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfMTYp KTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzE2KSk7 CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBu OwpAQCAtMTExOSw3ICsxMTE5LDcgQEAgbWF0bXVsX3IxNl9hdngyIChnZmNfYXJyYXlfcjE2 ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZy ZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVs c2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAx KQpAQCAtMTQ3Nyw3ICsxNDc3LDcgQEAgbWF0bXVsX3IxNl9hdng1MTJmIChnZmNfYXJyYXlf cjE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1 MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBz aXplb2YoR0ZDX1JFQUxfMTYpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6 ZW9mKEdGQ19SRUFMXzE2KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5r LiAqLwogICAgICAgaTEgPSBuOwpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgbWF0bXVsX3IxNl9h dng1MTJmIChnZmNfYXJyYXlfcjE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0K IAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAg IHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUg PT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMjA2MCw3ICsyMDYwLDcgQEAgbWF0bXVsX3Ix Nl92YW5pbGxhIChnZmNfYXJyYXlfcjE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAg ICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQx ID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfMTYpKTsKKyAgICAgIHQxID0g eG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzE2KSk7CiAKICAgICAgIC8qIFN0 YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMjI3MSw3ICsy MjcxLDcgQEAgbWF0bXVsX3IxNl92YW5pbGxhIChnZmNfYXJyYXlfcjE2ICogY29uc3QgcmVz dHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAg ICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3Ry aWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMjcwMiw3 ICsyNzAyLDcgQEAgbWF0bXVsX3IxNiAoZ2ZjX2FycmF5X3IxNiAqIGNvbnN0IHJlc3RyaWN0 IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2 OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzE2KSk7 CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xNikpOwog CiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsK QEAgLTI5MTMsNyArMjkxMyw3IEBAIG1hdG11bF9yMTYgKGdmY19hcnJheV9yMTYgKiBjb25z dCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7 CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAo cnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCmRpZmYg LS1naXQgYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX3IxNy5jIGIvbGliZ2ZvcnRy YW4vZ2VuZXJhdGVkL21hdG11bF9yMTcuYwppbmRleCBkYjdmMDViLi5lZmRlMzAxIDEwMDY0 NAotLS0gYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX3IxNy5jCisrKyBiL2xpYmdm b3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfcjE3LmMKQEAgLTMzOSw3ICszMzksNyBAQCBtYXRt dWxfcjE3X2F2eCAoZ2ZjX2FycmF5X3IxNyAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAog ICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0 MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzE3KSk7CisgICAgICB0MSA9 IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xNykpOwogCiAgICAgICAvKiBT dGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTU1MCw3ICs1 NTAsNyBAQCBtYXRtdWxfcjE3X2F2eCAoZ2ZjX2FycmF5X3IxNyAqIGNvbnN0IHJlc3RyaWN0 IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhm cmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9 PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTkwOCw3ICs5MDgs NyBAQCBtYXRtdWxfcjE3X2F2eDIgKGdmY19hcnJheV9yMTcgKiBjb25zdCByZXN0cmljdCBy ZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsK IAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xNykpOwor ICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfMTcpKTsKIAog ICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBA IC0xMTE5LDcgKzExMTksNyBAQCBtYXRtdWxfcjE3X2F2eDIgKGdmY19hcnJheV9yMTcgKiBj b25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0 MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBp ZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBA IC0xNDc3LDcgKzE0NzcsNyBAQCBtYXRtdWxfcjE3X2F2eDUxMmYgKGdmY19hcnJheV9yMTcg KiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikK IAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVv ZihHRkNfUkVBTF8xNykpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2Yo R0ZDX1JFQUxfMTcpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICov CiAgICAgICBpMSA9IG47CkBAIC0xNjg4LDcgKzE2ODgsNyBAQCBtYXRtdWxfcjE3X2F2eDUx MmYgKGdmY19hcnJheV9yMTcgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAg ICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0 dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAx ICYmIGJ4c3RyaWRlID09IDEpCkBAIC0yMDYwLDcgKzIwNjAsNyBAQCBtYXRtdWxfcjE3X3Zh bmlsbGEgKGdmY19hcnJheV9yMTcgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAg IGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBt YWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xNykpOworICAgICAgdDEgPSB4bWFs bG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfMTcpKTsKIAogICAgICAgLyogU3RhcnQg dHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0yMjcxLDcgKzIyNzEs NyBAQCBtYXRtdWxfcjE3X3ZhbmlsbGEgKGdmY19hcnJheV9yMTcgKiBjb25zdCByZXN0cmlj dCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4 ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUg PT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC0yNzAyLDcgKzI3 MDIsNyBAQCBtYXRtdWxfcjE3IChnZmNfYXJyYXlfcjE3ICogY29uc3QgcmVzdHJpY3QgcmV0 YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAK LSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfMTcpKTsKKyAg ICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzE3KSk7CiAKICAg ICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAt MjkxMyw3ICsyOTEzLDcgQEAgbWF0bXVsX3IxNyAoZ2ZjX2FycmF5X3IxNyAqIGNvbnN0IHJl c3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAg ICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0 cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKZGlmZiAtLWdp dCBhL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfcjQuYyBiL2xpYmdmb3J0cmFuL2dl bmVyYXRlZC9tYXRtdWxfcjQuYwppbmRleCAxODNiYmUzLi41ODhkMDVjIDEwMDY0NAotLS0g YS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX3I0LmMKKysrIGIvbGliZ2ZvcnRyYW4v Z2VuZXJhdGVkL21hdG11bF9yNC5jCkBAIC0zMzksNyArMzM5LDcgQEAgbWF0bXVsX3I0X2F2 eCAoZ2ZjX2FycmF5X3I0ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAo dDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9j ICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfNCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0 MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfNCkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5n IHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTU1MCw3ICs1NTAsNyBAQCBtYXRt dWxfcjRfYXZ4IChnZmNfYXJyYXlfcjQgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJ fQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAg ICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlk ZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC05MDgsNyArOTA4LDcgQEAgbWF0bXVsX3I0 X2F2eDIgKGdmY19hcnJheV9yNCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAg aWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1h bGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzQpKTsKKyAgICAgIHQxID0geG1hbGxv YyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzQpKTsKIAogICAgICAgLyogU3RhcnQgdHVy bmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xMTE5LDcgKzExMTksNyBA QCBtYXRtdWxfcjRfYXZ4MiAoZ2ZjX2FycmF5X3I0ICogY29uc3QgcmVzdHJpY3QgcmV0YXJy YXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQx KTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYg YXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMTQ3Nyw3ICsxNDc3LDcgQEAg bWF0bXVsX3I0X2F2eDUxMmYgKGdmY19hcnJheV9yNCAqIGNvbnN0IHJlc3RyaWN0IHJldGFy cmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0g ICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzQpKTsKKyAgICAg IHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzQpKTsKIAogICAgICAg LyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xNjg4 LDcgKzE2ODgsNyBAQCBtYXRtdWxfcjRfYXZ4NTEyZiAoZ2ZjX2FycmF5X3I0ICogY29uc3Qg cmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOwor ICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4 c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtMjA2 MCw3ICsyMDYwLDcgQEAgbWF0bXVsX3I0X3ZhbmlsbGEgKGdmY19hcnJheV9yNCAqIGNvbnN0 IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2Rp bSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19S RUFMXzQpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFM XzQpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBp MSA9IG47CkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBtYXRtdWxfcjRfdmFuaWxsYSAoZ2ZjX2Fy cmF5X3I0ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAg ICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9 CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlk ZSA9PSAxKQpAQCAtMjcwMiw3ICsyNzAyLDcgQEAgbWF0bXVsX3I0IChnZmNfYXJyYXlfcjQg KiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikK IAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVv ZihHRkNfUkVBTF80KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihH RkNfUkVBTF80KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwog ICAgICAgaTEgPSBuOwpAQCAtMjkxMyw3ICsyOTEzLDcgQEAgbWF0bXVsX3I0IChnZmNfYXJy YXlfcjQgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAg ICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0K ICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRl ID09IDEpCmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX3I4LmMg Yi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsX3I4LmMKaW5kZXggZjZhYjVlYS4uOTJi ODBlMSAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bF9yOC5jCisr KyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxfcjguYwpAQCAtMzM5LDcgKzMzOSw3 IEBAIG1hdG11bF9yOF9hdnggKGdmY19hcnJheV9yOCAqIGNvbnN0IHJlc3RyaWN0IHJldGFy cmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0g ICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzgpKTsKKyAgICAg IHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzgpKTsKIAogICAgICAg LyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC01NTAs NyArNTUwLDcgQEAgbWF0bXVsX3I4X2F2eCAoZ2ZjX2FycmF5X3I4ICogY29uc3QgcmVzdHJp Y3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAg eGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRl ID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtOTA4LDcgKzkw OCw3IEBAIG1hdG11bF9yOF9hdngyIChnZmNfYXJyYXlfcjggKiBjb25zdCByZXN0cmljdCBy ZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsK IAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF84KSk7Cisg ICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF84KSk7CiAKICAg ICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAt MTExOSw3ICsxMTE5LDcgQEAgbWF0bXVsX3I4X2F2eDIgKGdmY19hcnJheV9yOCAqIGNvbnN0 IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsK KyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChy eHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTE0 NzcsNyArMTQ3Nyw3IEBAIG1hdG11bF9yOF9hdng1MTJmIChnZmNfYXJyYXlfcjggKiBjb25z dCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9k aW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNf UkVBTF84KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVB TF84KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAg aTEgPSBuOwpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgbWF0bXVsX3I4X2F2eDUxMmYgKGdmY19h cnJheV9yOCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0g ICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAg fQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJp ZGUgPT0gMSkKQEAgLTIwNjAsNyArMjA2MCw3IEBAIG1hdG11bF9yOF92YW5pbGxhIChnZmNf YXJyYXlfcjggKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0g PiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2Rp bSAqIHNpemVvZihHRkNfUkVBTF84KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAq IHNpemVvZihHRkNfUkVBTF84KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNy YW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtMjI3MSw3ICsyMjcxLDcgQEAgbWF0bXVsX3I4 X3ZhbmlsbGEgKGdmY19hcnJheV9yOCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9 CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAg ICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRl ID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTI3MDIsNyArMjcwMiw3IEBAIG1hdG11bF9y OCAoZ2ZjX2FycmF5X3I4ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAo dDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9j ICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfOCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0 MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfOCkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5n IHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTI5MTMsNyArMjkxMyw3IEBAIG1h dG11bF9yOCAoZ2ZjX2FycmF5X3I4ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0K IAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAg IHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUg PT0gMSAmJiBieHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2VuZXJh dGVkL21hdG11bGF2eDEyOF9jMTAuYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxh dngxMjhfYzEwLmMKaW5kZXggZWMzM2NhMi4uNGQ0MGQ1NCAxMDA2NDQKLS0tIGEvbGliZ2Zv cnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9jMTAuYworKysgYi9saWJnZm9ydHJhbi9n ZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X2MxMC5jCkBAIC0zMDQsNyArMzA0LDcgQEAgbWF0bXVs X2MxMF9hdngxMjhfZm1hMyAoZ2ZjX2FycmF5X2MxMCAqIGNvbnN0IHJlc3RyaWN0IHJldGFy cmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0g ICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzEwKSk7Cisg ICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF8xMCkpOwog CiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsK QEAgLTUxNSw3ICs1MTUsNyBAQCBtYXRtdWxfYzEwX2F2eDEyOF9mbWEzIChnZmNfYXJyYXlf YzEwICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAg IGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAg IGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9 PSAxKQpAQCAtODc0LDcgKzg3NCw3IEBAIG1hdG11bF9jMTBfYXZ4MTI4X2ZtYTQgKGdmY19h cnJheV9jMTAgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0g PiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2Rp bSAqIHNpemVvZihHRkNfQ09NUExFWF8xMCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9k aW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhfMTApKTsKIAogICAgICAgLyogU3RhcnQgdHVybmlu ZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBt YXRtdWxfYzEwX2F2eDEyOF9mbWE0IChnZmNfYXJyYXlfYzEwICogY29uc3QgcmVzdHJpY3Qg cmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZy ZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09 IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGli Z2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9jMTYuYyBiL2xpYmdmb3J0cmFuL2dl bmVyYXRlZC9tYXRtdWxhdngxMjhfYzE2LmMKaW5kZXggZGFlZDVmYi4uZjQ3MmE5MiAxMDA2 NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9jMTYuYworKysg Yi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X2MxNi5jCkBAIC0zMDQsNyAr MzA0LDcgQEAgbWF0bXVsX2MxNl9hdngxMjhfZm1hMyAoZ2ZjX2FycmF5X2MxNiAqIGNvbnN0 IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2Rp bSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19D T01QTEVYXzE2KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNf Q09NUExFWF8xNikpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8K ICAgICAgIGkxID0gbjsKQEAgLTUxNSw3ICs1MTUsNyBAQCBtYXRtdWxfYzE2X2F2eDEyOF9m bWEzIChnZmNfYXJyYXlfYzE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkg ICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJl dHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0g MSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtODc0LDcgKzg3NCw3IEBAIG1hdG11bF9jMTZfYXZ4 MTI4X2ZtYTQgKGdmY19hcnJheV9jMTYgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAg ICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEg PSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF8xNikpOworICAgICAgdDEg PSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhfMTYpKTsKIAogICAgICAg LyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xMDg1 LDcgKzEwODUsNyBAQCBtYXRtdWxfYzE2X2F2eDEyOF9mbWE0IChnZmNfYXJyYXlfYzE2ICog Y29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUo dDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2Ug aWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpk aWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9jMTcuYyBi L2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxhdngxMjhfYzE3LmMKaW5kZXggNzljZmU1 Yi4uMWYxNGYxZCAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2 eDEyOF9jMTcuYworKysgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X2Mx Ny5jCkBAIC0zMDQsNyArMzA0LDcgQEAgbWF0bXVsX2MxN19hdngxMjhfZm1hMyAoZ2ZjX2Fy cmF5X2MxNyAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+ IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGlt ICogc2l6ZW9mKEdGQ19DT01QTEVYXzE3KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2Rp bSAqIHNpemVvZihHRkNfQ09NUExFWF8xNykpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5n IHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTUxNSw3ICs1MTUsNyBAQCBtYXRt dWxfYzE3X2F2eDEyOF9mbWEzIChnZmNfYXJyYXlfYzE3ICogY29uc3QgcmVzdHJpY3QgcmV0 YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUg KHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEg JiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtODc0LDcgKzg3NCw3IEBA IG1hdG11bF9jMTdfYXZ4MTI4X2ZtYTQgKGdmY19hcnJheV9jMTcgKiBjb25zdCByZXN0cmlj dCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUz NjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExFWF8x NykpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhf MTcpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBp MSA9IG47CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBtYXRtdWxfYzE3X2F2eDEyOF9mbWE0IChn ZmNfYXJyYXlfYzE3ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQog CX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsK ICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBi eHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11 bGF2eDEyOF9jNC5jIGIvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9jNC5j CmluZGV4IDkzMzAzZDYuLjQ1ZDBlNjcgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2dlbmVy YXRlZC9tYXRtdWxhdngxMjhfYzQuYworKysgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0 bXVsYXZ4MTI4X2M0LmMKQEAgLTMwNCw3ICszMDQsNyBAQCBtYXRtdWxfYzRfYXZ4MTI4X2Zt YTMgKGdmY19hcnJheV9jNCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYg KHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxv YyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzQpKTsKKyAgICAgIHQxID0geG1hbGxv YyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVYXzQpKTsKIAogICAgICAgLyogU3RhcnQg dHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC01MTUsNyArNTE1LDcg QEAgbWF0bXVsX2M0X2F2eDEyOF9mbWEzIChnZmNfYXJyYXlfYzQgKiBjb25zdCByZXN0cmlj dCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4 ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUg PT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBAIC04NzQsNyArODc0 LDcgQEAgbWF0bXVsX2M0X2F2eDEyOF9mbWE0IChnZmNfYXJyYXlfYzQgKiBjb25zdCByZXN0 cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2 NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExF WF80KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfQ09NUExF WF80KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAg aTEgPSBuOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgbWF0bXVsX2M0X2F2eDEyOF9mbWE0IChn ZmNfYXJyYXlfYzQgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJ fQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwog ICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4 c3RyaWRlID09IDEpCmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVs YXZ4MTI4X2M4LmMgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X2M4LmMK aW5kZXggNzA3ZTM4Yi4uMmQ0NTI1YiAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2VuZXJh dGVkL21hdG11bGF2eDEyOF9jOC5jCisrKyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRt dWxhdngxMjhfYzguYwpAQCAtMzA0LDcgKzMwNCw3IEBAIG1hdG11bF9jOF9hdngxMjhfZm1h MyAoZ2ZjX2FycmF5X2M4ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAo dDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9j ICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhfOCkpOworICAgICAgdDEgPSB4bWFsbG9j ICh0MV9kaW0gKiBzaXplb2YoR0ZDX0NPTVBMRVhfOCkpOwogCiAgICAgICAvKiBTdGFydCB0 dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTUxNSw3ICs1MTUsNyBA QCBtYXRtdWxfYzhfYXZ4MTI4X2ZtYTMgKGdmY19hcnJheV9jOCAqIGNvbnN0IHJlc3RyaWN0 IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhm cmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9 PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTg3NCw3ICs4NzQs NyBAQCBtYXRtdWxfYzhfYXZ4MTI4X2ZtYTQgKGdmY19hcnJheV9jOCAqIGNvbnN0IHJlc3Ry aWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1 NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVY XzgpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19DT01QTEVY XzgpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBp MSA9IG47CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBtYXRtdWxfYzhfYXZ4MTI4X2ZtYTQgKGdm Y19hcnJheV9jOCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9 Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAg ICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhz dHJpZGUgPT0gMSkKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxh dngxMjhfaTEuYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxhdngxMjhfaTEuYwpp bmRleCBiMzQxNmM1Li42NjY3N2ViIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9nZW5lcmF0 ZWQvbWF0bXVsYXZ4MTI4X2kxLmMKKysrIGIvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11 bGF2eDEyOF9pMS5jCkBAIC0zMDQsNyArMzA0LDcgQEAgbWF0bXVsX2kxX2F2eDEyOF9mbWEz IChnZmNfYXJyYXlfaTEgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0 MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2Mg KHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl8xKSk7CisgICAgICB0MSA9IHhtYWxsb2Mg KHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl8xKSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1 cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtNTE1LDcgKzUxNSw3IEBA IG1hdG11bF9pMV9hdngxMjhfZm1hMyAoZ2ZjX2FycmF5X2kxICogY29uc3QgcmVzdHJpY3Qg cmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZy ZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09 IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtODc0LDcgKzg3NCw3 IEBAIG1hdG11bF9pMV9hdngxMjhfZm1hNCAoZ2ZjX2FycmF5X2kxICogY29uc3QgcmVzdHJp Y3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1 MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJf MSkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJf MSkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkx ID0gbjsKQEAgLTEwODUsNyArMTA4NSw3IEBAIG1hdG11bF9pMV9hdngxMjhfZm1hNCAoZ2Zj X2FycmF5X2kxICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0K LSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAg ICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0 cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2 eDEyOF9pMTYuYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxhdngxMjhfaTE2LmMK aW5kZXggOGFjNTkyYi4uZWM5MzM2YyAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vZ2VuZXJh dGVkL21hdG11bGF2eDEyOF9pMTYuYworKysgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0 bXVsYXZ4MTI4X2kxNi5jCkBAIC0zMDQsNyArMzA0LDcgQEAgbWF0bXVsX2kxNl9hdngxMjhf Zm1hMyAoZ2ZjX2FycmF5X2kxNiAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAg aWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1h bGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzE2KSk7CisgICAgICB0MSA9IHht YWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl8xNikpOwogCiAgICAgICAvKiBT dGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTUxNSw3ICs1 MTUsNyBAQCBtYXRtdWxfaTE2X2F2eDEyOF9mbWEzIChnZmNfYXJyYXlfaTE2ICogY29uc3Qg cmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOwor ICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4 c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAtODc0 LDcgKzg3NCw3IEBAIG1hdG11bF9pMTZfYXZ4MTI4X2ZtYTQgKGdmY19hcnJheV9pMTYgKiBj b25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0 MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihH RkNfSU5URUdFUl8xNikpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2Yo R0ZDX0lOVEVHRVJfMTYpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3Jhbmsu ICovCiAgICAgICBpMSA9IG47CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBtYXRtdWxfaTE2X2F2 eDEyOF9mbWE0IChnZmNfYXJyYXlfaTE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJ CX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAg ICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJp ZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2Vu ZXJhdGVkL21hdG11bGF2eDEyOF9pMi5jIGIvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11 bGF2eDEyOF9pMi5jCmluZGV4IDA1Mjg5NjAuLjkzMTY5MmMgMTAwNjQ0Ci0tLSBhL2xpYmdm b3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxhdngxMjhfaTIuYworKysgYi9saWJnZm9ydHJhbi9n ZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X2kyLmMKQEAgLTMwNCw3ICszMDQsNyBAQCBtYXRtdWxf aTJfYXZ4MTI4X2ZtYTMgKGdmY19hcnJheV9pMiAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5 LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAg ICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzIpKTsKKyAgICAg IHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19JTlRFR0VSXzIpKTsKIAogICAg ICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC01 MTUsNyArNTE1LDcgQEAgbWF0bXVsX2kyX2F2eDEyOF9mbWEzIChnZmNfYXJyYXlfaTIgKiBj b25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0 MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBp ZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBA IC04NzQsNyArODc0LDcgQEAgbWF0bXVsX2kyX2F2eDEyOF9mbWE0IChnZmNfYXJyYXlfaTIg KiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikK IAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVv ZihHRkNfSU5URUdFUl8yKSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVv ZihHRkNfSU5URUdFUl8yKSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5r LiAqLwogICAgICAgaTEgPSBuOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgbWF0bXVsX2kyX2F2 eDEyOF9mbWE0IChnZmNfYXJyYXlfaTIgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJ fQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAg ICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlk ZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9nZW5l cmF0ZWQvbWF0bXVsYXZ4MTI4X2k0LmMgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVs YXZ4MTI4X2k0LmMKaW5kZXggZjRlM2VkOS4uMjcyYWRiNSAxMDA2NDQKLS0tIGEvbGliZ2Zv cnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9pNC5jCisrKyBiL2xpYmdmb3J0cmFuL2dl bmVyYXRlZC9tYXRtdWxhdngxMjhfaTQuYwpAQCAtMzA0LDcgKzMwNCw3IEBAIG1hdG11bF9p NF9hdngxMjhfZm1hMyAoZ2ZjX2FycmF5X2k0ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXks CiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAg IHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJfNCkpOworICAgICAg dDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX0lOVEVHRVJfNCkpOwogCiAgICAg ICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTUx NSw3ICs1MTUsNyBAQCBtYXRtdWxfaTRfYXZ4MTI4X2ZtYTMgKGdmY19hcnJheV9pNCAqIGNv bnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQx KTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlm IChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAg LTg3NCw3ICs4NzQsNyBAQCBtYXRtdWxfaTRfYXZ4MTI4X2ZtYTQgKGdmY19hcnJheV9pNCAq IGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQog CXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9m KEdGQ19JTlRFR0VSXzQpKTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9m KEdGQ19JTlRFR0VSXzQpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3Jhbmsu ICovCiAgICAgICBpMSA9IG47CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBtYXRtdWxfaTRfYXZ4 MTI4X2ZtYTQgKGdmY19hcnJheV9pNCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9 CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAg ICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRl ID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2dlbmVy YXRlZC9tYXRtdWxhdngxMjhfaTguYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxh dngxMjhfaTguYwppbmRleCAwYzA1YTQ1Li43MTMyYWQwIDEwMDY0NAotLS0gYS9saWJnZm9y dHJhbi9nZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X2k4LmMKKysrIGIvbGliZ2ZvcnRyYW4vZ2Vu ZXJhdGVkL21hdG11bGF2eDEyOF9pOC5jCkBAIC0zMDQsNyArMzA0LDcgQEAgbWF0bXVsX2k4 X2F2eDEyOF9mbWEzIChnZmNfYXJyYXlfaTggKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwK ICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAg dDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl84KSk7CisgICAgICB0 MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfSU5URUdFUl84KSk7CiAKICAgICAg IC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwogICAgICAgaTEgPSBuOwpAQCAtNTE1 LDcgKzUxNSw3IEBAIG1hdG11bF9pOF9hdngxMjhfZm1hMyAoZ2ZjX2FycmF5X2k4ICogY29u c3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEp OworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYg KHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpAQCAt ODc0LDcgKzg3NCw3IEBAIG1hdG11bF9pOF9hdngxMjhfZm1hNCAoZ2ZjX2FycmF5X2k4ICog Y29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAgICBpZiAodDFfZGltID4gNjU1MzYpCiAJ dDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0gbWFsbG9jICh0MV9kaW0gKiBzaXplb2Yo R0ZDX0lOVEVHRVJfOCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXplb2Yo R0ZDX0lOVEVHRVJfOCkpOwogCiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4g Ki8KICAgICAgIGkxID0gbjsKQEAgLTEwODUsNyArMTA4NSw3IEBAIG1hdG11bF9pOF9hdngx MjhfZm1hNCAoZ2ZjX2FycmF5X2k4ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0K IAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAg IHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUg PT0gMSAmJiBieHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2VuZXJh dGVkL21hdG11bGF2eDEyOF9yMTAuYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxh dngxMjhfcjEwLmMKaW5kZXggNjQ3ODkzZS4uNjgwMmYzYiAxMDA2NDQKLS0tIGEvbGliZ2Zv cnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9yMTAuYworKysgYi9saWJnZm9ydHJhbi9n ZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X3IxMC5jCkBAIC0zMDQsNyArMzA0LDcgQEAgbWF0bXVs X3IxMF9hdngxMjhfZm1hMyAoZ2ZjX2FycmF5X3IxMCAqIGNvbnN0IHJlc3RyaWN0IHJldGFy cmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2OwogCi0g ICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzEwKSk7CisgICAg ICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xMCkpOwogCiAgICAg ICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTUx NSw3ICs1MTUsNyBAQCBtYXRtdWxfcjEwX2F2eDEyOF9mbWEzIChnZmNfYXJyYXlfcjEwICog Y29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUo dDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2Ug aWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpA QCAtODc0LDcgKzg3NCw3IEBAIG1hdG11bF9yMTBfYXZ4MTI4X2ZtYTQgKGdmY19hcnJheV9y MTAgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUz NikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNp emVvZihHRkNfUkVBTF8xMCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXpl b2YoR0ZDX1JFQUxfMTApKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3Jhbmsu ICovCiAgICAgICBpMSA9IG47CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBtYXRtdWxfcjEwX2F2 eDEyOF9mbWE0IChnZmNfYXJyYXlfcjEwICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJ CX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAg ICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJp ZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vZ2Vu ZXJhdGVkL21hdG11bGF2eDEyOF9yMTYuYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRt dWxhdngxMjhfcjE2LmMKaW5kZXggNTBhMWFhOC4uYWRhNmFmMSAxMDA2NDQKLS0tIGEvbGli Z2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9yMTYuYworKysgYi9saWJnZm9ydHJh bi9nZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X3IxNi5jCkBAIC0zMDQsNyArMzA0LDcgQEAgbWF0 bXVsX3IxNl9hdngxMjhfZm1hMyAoZ2ZjX2FycmF5X3IxNiAqIGNvbnN0IHJlc3RyaWN0IHJl dGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2Owog Ci0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzE2KSk7Cisg ICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xNikpOwogCiAg ICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAg LTUxNSw3ICs1MTUsNyBAQCBtYXRtdWxfcjE2X2F2eDEyOF9mbWEzIChnZmNfYXJyYXlfcjE2 ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZy ZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVs c2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAx KQpAQCAtODc0LDcgKzg3NCw3IEBAIG1hdG11bF9yMTZfYXZ4MTI4X2ZtYTQgKGdmY19hcnJh eV9yMTYgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2 NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAq IHNpemVvZihHRkNfUkVBTF8xNikpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBz aXplb2YoR0ZDX1JFQUxfMTYpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3Jh bmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBtYXRtdWxfcjE2 X2F2eDEyOF9mbWE0IChnZmNfYXJyYXlfcjE2ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXks CiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsK ICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlz dHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4v Z2VuZXJhdGVkL21hdG11bGF2eDEyOF9yMTcuYyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9t YXRtdWxhdngxMjhfcjE3LmMKaW5kZXggYTNhMDQ4MC4uODI0MzZmMSAxMDA2NDQKLS0tIGEv bGliZ2ZvcnRyYW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9yMTcuYworKysgYi9saWJnZm9y dHJhbi9nZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X3IxNy5jCkBAIC0zMDQsNyArMzA0LDcgQEAg bWF0bXVsX3IxN19hdngxMjhfZm1hMyAoZ2ZjX2FycmF5X3IxNyAqIGNvbnN0IHJlc3RyaWN0 IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2 OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzE3KSk7 CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihHRkNfUkVBTF8xNykpOwog CiAgICAgICAvKiBTdGFydCB0dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsK QEAgLTUxNSw3ICs1MTUsNyBAQCBtYXRtdWxfcjE3X2F2eDEyOF9mbWEzIChnZmNfYXJyYXlf cjE3ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAg IGZyZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAg IGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9 PSAxKQpAQCAtODc0LDcgKzg3NCw3IEBAIG1hdG11bF9yMTdfYXZ4MTI4X2ZtYTQgKGdmY19h cnJheV9yMTcgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0g PiA2NTUzNikKIAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2Rp bSAqIHNpemVvZihHRkNfUkVBTF8xNykpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0g KiBzaXplb2YoR0ZDX1JFQUxfMTcpKTsKIAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUg Y3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBtYXRtdWxf cjE3X2F2eDEyOF9mbWE0IChnZmNfYXJyYXlfcjE3ICogY29uc3QgcmVzdHJpY3QgcmV0YXJy YXksCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZyZWUodDEpOworICAgICAgeGZyZWUgKHQx KTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVsc2UgaWYgKHJ4c3RyaWRlID09IDEgJiYg YXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAxKQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRy YW4vZ2VuZXJhdGVkL21hdG11bGF2eDEyOF9yNC5jIGIvbGliZ2ZvcnRyYW4vZ2VuZXJhdGVk L21hdG11bGF2eDEyOF9yNC5jCmluZGV4IDAzYmEzZGIuLmQ4NzMxYjQgMTAwNjQ0Ci0tLSBh L2xpYmdmb3J0cmFuL2dlbmVyYXRlZC9tYXRtdWxhdngxMjhfcjQuYworKysgYi9saWJnZm9y dHJhbi9nZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4X3I0LmMKQEAgLTMwNCw3ICszMDQsNyBAQCBt YXRtdWxfcjRfYXZ4MTI4X2ZtYTMgKGdmY19hcnJheV9yNCAqIGNvbnN0IHJlc3RyaWN0IHJl dGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1NTM2Owog Ci0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzQpKTsKKyAg ICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzQpKTsKIAogICAg ICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47CkBAIC01 MTUsNyArNTE1LDcgQEAgbWF0bXVsX3I0X2F2eDEyOF9mbWEzIChnZmNfYXJyYXlfcjQgKiBj b25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAgICB9CiAJfQotICAgICAgZnJlZSh0 MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBp ZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAxICYmIGJ4c3RyaWRlID09IDEpCkBA IC04NzQsNyArODc0LDcgQEAgbWF0bXVsX3I0X2F2eDEyOF9mbWE0IChnZmNfYXJyYXlfcjQg KiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKICAgICAgIGlmICh0MV9kaW0gPiA2NTUzNikK IAl0MV9kaW0gPSA2NTUzNjsKIAotICAgICAgdDEgPSBtYWxsb2MgKHQxX2RpbSAqIHNpemVv ZihHRkNfUkVBTF80KSk7CisgICAgICB0MSA9IHhtYWxsb2MgKHQxX2RpbSAqIHNpemVvZihH RkNfUkVBTF80KSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5rLiAqLwog ICAgICAgaTEgPSBuOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgbWF0bXVsX3I0X2F2eDEyOF9m bWE0IChnZmNfYXJyYXlfcjQgKiBjb25zdCByZXN0cmljdCByZXRhcnJheSwKIAkJfQogCSAg ICB9CiAJfQotICAgICAgZnJlZSh0MSk7CisgICAgICB4ZnJlZSAodDEpOwogICAgICAgcmV0 dXJuOwogICAgIH0KICAgZWxzZSBpZiAocnhzdHJpZGUgPT0gMSAmJiBheXN0cmlkZSA9PSAx ICYmIGJ4c3RyaWRlID09IDEpCmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9nZW5lcmF0ZWQv bWF0bXVsYXZ4MTI4X3I4LmMgYi9saWJnZm9ydHJhbi9nZW5lcmF0ZWQvbWF0bXVsYXZ4MTI4 X3I4LmMKaW5kZXggMmYyZmJmOS4uZGI0YTM4MyAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4v Z2VuZXJhdGVkL21hdG11bGF2eDEyOF9yOC5jCisrKyBiL2xpYmdmb3J0cmFuL2dlbmVyYXRl ZC9tYXRtdWxhdngxMjhfcjguYwpAQCAtMzA0LDcgKzMwNCw3IEBAIG1hdG11bF9yOF9hdngx MjhfZm1hMyAoZ2ZjX2FycmF5X3I4ICogY29uc3QgcmVzdHJpY3QgcmV0YXJyYXksCiAgICAg ICBpZiAodDFfZGltID4gNjU1MzYpCiAJdDFfZGltID0gNjU1MzY7CiAKLSAgICAgIHQxID0g bWFsbG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfOCkpOworICAgICAgdDEgPSB4bWFs bG9jICh0MV9kaW0gKiBzaXplb2YoR0ZDX1JFQUxfOCkpOwogCiAgICAgICAvKiBTdGFydCB0 dXJuaW5nIHRoZSBjcmFuay4gKi8KICAgICAgIGkxID0gbjsKQEAgLTUxNSw3ICs1MTUsNyBA QCBtYXRtdWxfcjhfYXZ4MTI4X2ZtYTMgKGdmY19hcnJheV9yOCAqIGNvbnN0IHJlc3RyaWN0 IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAgICBmcmVlKHQxKTsKKyAgICAgIHhm cmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICBlbHNlIGlmIChyeHN0cmlkZSA9 PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUgPT0gMSkKQEAgLTg3NCw3ICs4NzQs NyBAQCBtYXRtdWxfcjhfYXZ4MTI4X2ZtYTQgKGdmY19hcnJheV9yOCAqIGNvbnN0IHJlc3Ry aWN0IHJldGFycmF5LAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2KQogCXQxX2RpbSA9IDY1 NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzgp KTsKKyAgICAgIHQxID0geG1hbGxvYyAodDFfZGltICogc2l6ZW9mKEdGQ19SRUFMXzgpKTsK IAogICAgICAgLyogU3RhcnQgdHVybmluZyB0aGUgY3JhbmsuICovCiAgICAgICBpMSA9IG47 CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBtYXRtdWxfcjhfYXZ4MTI4X2ZtYTQgKGdmY19hcnJh eV9yOCAqIGNvbnN0IHJlc3RyaWN0IHJldGFycmF5LAogCQl9CiAJICAgIH0KIAl9Ci0gICAg ICBmcmVlKHQxKTsKKyAgICAgIHhmcmVlICh0MSk7CiAgICAgICByZXR1cm47CiAgICAgfQog ICBlbHNlIGlmIChyeHN0cmlkZSA9PSAxICYmIGF5c3RyaWRlID09IDEgJiYgYnhzdHJpZGUg PT0gMSkKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvYWNjZXNzLmMgYi9s aWJnZm9ydHJhbi9pbnRyaW5zaWNzL2FjY2Vzcy5jCmluZGV4IDI0NWJlOGMuLmNhZGEyYjUg MTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvYWNjZXNzLmMKKysrIGIvbGli Z2ZvcnRyYW4vaW50cmluc2ljcy9hY2Nlc3MuYwpAQCAtNzgsNyArNzgsNyBAQCBhY2Nlc3Nf ZnVuYyAoY2hhciAqbmFtZSwgY2hhciAqbW9kZSwgZ2ZjX2NoYXJsZW5fdHlwZSBuYW1lX2xl biwKICAgLyogQW5kIG1ha2UgdGhlIGNhbGwgdG8gYWNjZXNzKCkuICAqLwogICBpbnQgcmVz ID0gKGFjY2VzcyAocGF0aCwgbSkgPT0gMCA/IDAgOiBlcnJubyk7CiAKLSAgZnJlZSAocGF0 aCk7CisgIHhmcmVlIChwYXRoKTsKICAgcmV0dXJuIHJlczsKIH0KICNlbmRpZgpkaWZmIC0t Z2l0IGEvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9jaGRpci5jIGIvbGliZ2ZvcnRyYW4vaW50 cmluc2ljcy9jaGRpci5jCmluZGV4IDYzMjE2MzMuLjI3ZTMwNGMgMTAwNjQ0Ci0tLSBhL2xp Ymdmb3J0cmFuL2ludHJpbnNpY3MvY2hkaXIuYworKysgYi9saWJnZm9ydHJhbi9pbnRyaW5z aWNzL2NoZGlyLmMKQEAgLTQ2LDcgKzQ2LDcgQEAgY2hkaXJfaTRfc3ViIChjaGFyICpkaXIs IEdGQ19JTlRFR0VSXzQgKnN0YXR1cywgZ2ZjX2NoYXJsZW5fdHlwZSBkaXJfbGVuKQogICBj aGFyICpzdHIgPSBmY19zdHJkdXAgKGRpciwgZGlyX2xlbik7CiAKICAgdmFsID0gY2hkaXIg KHN0cik7Ci0gIGZyZWUgKHN0cik7CisgIHhmcmVlIChzdHIpOwogCiAgIGlmIChzdGF0dXMg IT0gTlVMTCkKICAgICAqc3RhdHVzID0gKHZhbCA9PSAwKSA/IDAgOiBlcnJubzsKQEAgLTYz LDcgKzYzLDcgQEAgY2hkaXJfaThfc3ViIChjaGFyICpkaXIsIEdGQ19JTlRFR0VSXzggKnN0 YXR1cywgZ2ZjX2NoYXJsZW5fdHlwZSBkaXJfbGVuKQogICBjaGFyICpzdHIgPSBmY19zdHJk dXAgKGRpciwgZGlyX2xlbik7CiAKICAgdmFsID0gY2hkaXIgKHN0cik7Ci0gIGZyZWUgKHN0 cik7CisgIHhmcmVlIChzdHIpOwogCiAgIGlmIChzdGF0dXMgIT0gTlVMTCkKICAgICAqc3Rh dHVzID0gKHZhbCA9PSAwKSA/IDAgOiBlcnJubzsKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFu L2ludHJpbnNpY3MvY2htb2QuYyBiL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvY2htb2QuYwpp bmRleCA3NmY4MmI4Li5hOGIxNWQ0IDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9pbnRyaW5z aWNzL2NobW9kLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9jaG1vZC5jCkBAIC00 ODcsNyArNDg3LDcgQEAgY2htb2RfZnVuYyAoY2hhciAqbmFtZSwgY2hhciAqbW9kZSwgZ2Zj X2NoYXJsZW5fdHlwZSBuYW1lX2xlbiwKIHsKICAgY2hhciAqY25hbWUgPSBmY19zdHJkdXAg KG5hbWUsIG5hbWVfbGVuKTsKICAgaW50IHJldCA9IGNobW9kX2ludGVybmFsIChjbmFtZSwg bW9kZSwgbW9kZV9sZW4pOwotICBmcmVlIChjbmFtZSk7CisgIHhmcmVlIChjbmFtZSk7CiAg IHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2ludHJpbnNpY3Mv ZGF0ZV9hbmRfdGltZS5jIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9kYXRlX2FuZF90aW1l LmMKaW5kZXggYzg0N2Q4YS4uYjA3ZGQxMyAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW50 cmluc2ljcy9kYXRlX2FuZF90aW1lLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9k YXRlX2FuZF90aW1lLmMKQEAgLTI4OSw3ICsyODksNyBAQCBzZWNuZHMgKEdGQ19SRUFMXzQg KngpCiAKICAgZGF0ZV9hbmRfdGltZSAoTlVMTCwgTlVMTCwgTlVMTCwgYXZhbHVlcywgMCwg MCwgMCk7CiAKLSAgZnJlZSAoYXZhbHVlcyk7CisgIHhmcmVlIChhdmFsdWVzKTsKIAogICB0 ZW1wMSA9IDM2MDAuMCAqIChHRkNfUkVBTF80KXZhbHVlc1s0XSArCiAJICAgIDYwLjAgKiAo R0ZDX1JFQUxfNCl2YWx1ZXNbNV0gKwpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vaW50cmlu c2ljcy9lbnYuYyBiL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvZW52LmMKaW5kZXggZTA5Yzcz Yy4uYWM4MmYyMyAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9lbnYuYwor KysgYi9saWJnZm9ydHJhbi9pbnRyaW5zaWNzL2Vudi5jCkBAIC01NSw3ICs1NSw3IEBAIFBS RUZJWChnZXRlbnYpIChjaGFyICogbmFtZSwgY2hhciAqIHZhbHVlLCBnZmNfY2hhcmxlbl90 eXBlIG5hbWVfbGVuLAogCiAgIHJlcyA9IGdldGVudihuYW1lX250KTsKIAotICBmcmVlIChu YW1lX250KTsKKyAgeGZyZWUgKG5hbWVfbnQpOwogCiAgIC8qIElmIHJlcyBpcyBOVUxMLCBp dCBtZWFucyB0aGF0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBkaWRuJ3QgCiAgICAgIGV4 aXN0LCBzbyBqdXN0IHJldHVybi4gICovCkBAIC0xMjEsNyArMTIxLDcgQEAgZ2V0X2Vudmly b25tZW50X3ZhcmlhYmxlX2k0IChjaGFyICpuYW1lLCBjaGFyICp2YWx1ZSwgR0ZDX0lOVEVH RVJfNCAqbGVuZ3RoLAogICAKICAgcmVzID0gZ2V0ZW52KG5hbWVfbnQpOwogCi0gIGZyZWUg KG5hbWVfbnQpOworICB4ZnJlZSAobmFtZV9udCk7CiAKICAgaWYgKHJlcyA9PSBOVUxMKQog ICAgIHN0YXQgPSBHRkNfTkFNRV9ET0VTX05PVF9FWElTVDsKZGlmZiAtLWdpdCBhL2xpYmdm b3J0cmFuL2ludHJpbnNpY3MvZXhlY3V0ZV9jb21tYW5kX2xpbmUuYyBiL2xpYmdmb3J0cmFu L2ludHJpbnNpY3MvZXhlY3V0ZV9jb21tYW5kX2xpbmUuYwppbmRleCAxZmFjMTBhLi4yMWEy MTVjIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9pbnRyaW5zaWNzL2V4ZWN1dGVfY29tbWFu ZF9saW5lLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9leGVjdXRlX2NvbW1hbmRf bGluZS5jCkBAIC0xNjIsNyArMTYyLDcgQEAgZXhlY3V0ZV9jb21tYW5kX2xpbmUgKGNvbnN0 IGNoYXIgKmNvbW1hbmQsIGJvb2wgd2FpdCwgaW50ICpleGl0c3RhdCwKIAl9CiAgICAgfQog Ci0gIGZyZWUgKGNtZCk7CisgIHhmcmVlIChjbWQpOwogCiAgIC8qIE5vdyBjb3B5IGJhY2sg dG8gdGhlIEZvcnRyYW4gc3RyaW5nIGlmIG5lZWRlZC4gICovCiAgIGlmIChjbWRzdGF0ICYm ICpjbWRzdGF0ID4gRVhFQ19OT0VSUk9SICYmIGNtZG1zZykKZGlmZiAtLWdpdCBhL2xpYmdm b3J0cmFuL2ludHJpbnNpY3MvZ2V0Y3dkLmMgYi9saWJnZm9ydHJhbi9pbnRyaW5zaWNzL2dl dGN3ZC5jCmluZGV4IDkwN2U4YWEuLjBjZWE3YTIgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFu L2ludHJpbnNpY3MvZ2V0Y3dkLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9nZXRj d2QuYwpAQCAtNjEsNyArNjEsNyBAQCBnZXRjd2RfaTRfc3ViIChjaGFyICpjd2QsIEdGQ19J TlRFR0VSXzQgKnN0YXR1cywgZ2ZjX2NoYXJsZW5fdHlwZSBjd2RfbGVuKQogCX0KICAgICAg IGVsc2UKIAllcnIgPSBlcnJubzsKLSAgICAgIGZyZWUgKGJ1Zik7CisgICAgICB4ZnJlZSAo YnVmKTsKICAgICB9CiAgIGVsc2UKICAgICBlcnIgPSBlcnJubzsKZGlmZiAtLWdpdCBhL2xp Ymdmb3J0cmFuL2ludHJpbnNpY3MvZ2V0bG9nLmMgYi9saWJnZm9ydHJhbi9pbnRyaW5zaWNz L2dldGxvZy5jCmluZGV4IDcyNTVlMGYuLjZkZjZjMGMgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0 cmFuL2ludHJpbnNpY3MvZ2V0bG9nLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9n ZXRsb2cuYwpAQCAtMTEzLDcgKzExMyw3IEBAIFBSRUZJWChnZXRsb2cpIChjaGFyICogbG9n aW4sIGdmY19jaGFybGVuX3R5cGUgbG9naW5fbGVuKQogCiAgY2xlYW51cDoKICNpZiBkZWZp bmVkIChIQVZFX1BPU0lYX0dFVFBXVUlEX1IpICYmIGRlZmluZWQoSEFWRV9HRVRFVUlEKQot ICBmcmVlIChidWYpOworICB4ZnJlZSAoYnVmKTsKICNlbHNlCiAgIDsKICNlbmRpZgpkaWZm IC0tZ2l0IGEvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9saW5rLmMgYi9saWJnZm9ydHJhbi9p bnRyaW5zaWNzL2xpbmsuYwppbmRleCBjOGMyNGJhLi43YzgwNTViIDEwMDY0NAotLS0gYS9s aWJnZm9ydHJhbi9pbnRyaW5zaWNzL2xpbmsuYworKysgYi9saWJnZm9ydHJhbi9pbnRyaW5z aWNzL2xpbmsuYwpAQCAtNTAsOCArNTAsOCBAQCBsaW5rX2ludGVybmFsIChjaGFyICpwYXRo MSwgY2hhciAqcGF0aDIsIGdmY19jaGFybGVuX3R5cGUgcGF0aDFfbGVuLAogCiAgIHZhbCA9 IGxpbmsgKHN0cjEsIHN0cjIpOwogCi0gIGZyZWUgKHN0cjEpOwotICBmcmVlIChzdHIyKTsK KyAgeGZyZWUgKHN0cjEpOworICB4ZnJlZSAoc3RyMik7CiAKICAgcmV0dXJuICgodmFsID09 IDApID8gMCA6IGVycm5vKTsKIH0KZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2ludHJpbnNp Y3MvbW92ZV9hbGxvYy5jIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9tb3ZlX2FsbG9jLmMK aW5kZXggNzc3MjM5OC4uOTk1ZmVlMiAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW50cmlu c2ljcy9tb3ZlX2FsbG9jLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9tb3ZlX2Fs bG9jLmMKQEAgLTM0LDcgKzM0LDcgQEAgbW92ZV9hbGxvYyAoZ2ZjX2FycmF5X2NoYXIgKiBm cm9tLCBnZmNfYXJyYXlfY2hhciAqIHRvKQogewogICBpbnQgaTsKIAotICBmcmVlICh0by0+ YmFzZV9hZGRyKTsKKyAgeGZyZWUgKHRvLT5iYXNlX2FkZHIpOwogCiAgIGZvciAoaSA9IDA7 IGkgPCBHRkNfREVTQ1JJUFRPUl9SQU5LIChmcm9tKTsgaSsrKQogICAgIHsKZGlmZiAtLWdp dCBhL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvcGVycm9yLmMgYi9saWJnZm9ydHJhbi9pbnRy aW5zaWNzL3BlcnJvci5jCmluZGV4IDU2MTM0OWQuLmQ3ZjI3M2YgMTAwNjQ0Ci0tLSBhL2xp Ymdmb3J0cmFuL2ludHJpbnNpY3MvcGVycm9yLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW50cmlu c2ljcy9wZXJyb3IuYwpAQCAtMzgsNiArMzgsNiBAQCBwZXJyb3Jfc3ViIChjaGFyICpzdHJp bmcsIGdmY19jaGFybGVuX3R5cGUgc3RyaW5nX2xlbikKIHsKICAgY2hhciAqc3RyID0gZmNf c3RyZHVwIChzdHJpbmcsIHN0cmluZ19sZW4pOwogICBwZXJyb3IgKHN0cik7Ci0gIGZyZWUg KHN0cik7CisgIHhmcmVlIChzdHIpOwogfQogaWV4cG9ydChwZXJyb3Jfc3ViKTsKZGlmZiAt LWdpdCBhL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvcmFuZG9tLmMgYi9saWJnZm9ydHJhbi9p bnRyaW5zaWNzL3JhbmRvbS5jCmluZGV4IGI1NzMyZTYuLmIxZmFlYWYgMTAwNjQ0Ci0tLSBh L2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvcmFuZG9tLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW50 cmluc2ljcy9yYW5kb20uYwpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgY29uc3RydWN0b3JfcmFu ZG9tICh2b2lkKQogICBfX0dUSFJFQURfTVVURVhfSU5JVF9GVU5DVElPTiAoJnJhbmRvbV9s b2NrKTsKICNlbmRpZgogICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQotICAgIF9fZ3Ro cmVhZF9rZXlfY3JlYXRlICgmcmFuZF9zdGF0ZV9rZXksICZmcmVlKTsKKyAgICBfX2d0aHJl YWRfa2V5X2NyZWF0ZSAoJnJhbmRfc3RhdGVfa2V5LCAmeGZyZWUpOwogfQogI2VuZGlmCiAK ZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvcmVuYW1lLmMgYi9saWJnZm9y dHJhbi9pbnRyaW5zaWNzL3JlbmFtZS5jCmluZGV4IGIzM2YwNDUuLjBmNTUxMzYgMTAwNjQ0 Ci0tLSBhL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvcmVuYW1lLmMKKysrIGIvbGliZ2ZvcnRy YW4vaW50cmluc2ljcy9yZW5hbWUuYwpAQCAtMzUsOCArMzUsOCBAQCByZW5hbWVfaW50ZXJu YWwgKGNoYXIgKnBhdGgxLCBjaGFyICpwYXRoMiwgZ2ZjX2NoYXJsZW5fdHlwZSBwYXRoMV9s ZW4sCiAgIGNoYXIgKnN0cjEgPSBmY19zdHJkdXAgKHBhdGgxLCBwYXRoMV9sZW4pOwogICBj aGFyICpzdHIyID0gZmNfc3RyZHVwIChwYXRoMiwgcGF0aDJfbGVuKTsKICAgaW50IHZhbCA9 IHJlbmFtZSAoc3RyMSwgc3RyMik7Ci0gIGZyZWUgKHN0cjEpOwotICBmcmVlIChzdHIyKTsK KyAgeGZyZWUgKHN0cjEpOworICB4ZnJlZSAoc3RyMik7CiAgIHJldHVybiAoKHZhbCA9PSAw KSA/IDAgOiBlcnJubyk7CiB9CiAKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2ludHJpbnNp Y3Mvc3RhdC5jIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9zdGF0LmMKaW5kZXggYjc3MWVl Ny4uOGMyM2JmNSAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9zdGF0LmMK KysrIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9zdGF0LmMKQEAgLTc2LDcgKzc2LDcgQEAg c3RhdF9pNF9zdWJfMCAoY2hhciAqbmFtZSwgZ2ZjX2FycmF5X2k0ICpzYXJyYXksIEdGQ19J TlRFR0VSXzQgKnN0YXR1cywKICNlbmRpZgogICAgIHZhbCA9IHN0YXQoc3RyLCAmc2IpOwog Ci0gIGZyZWUgKHN0cik7CisgIHhmcmVlIChzdHIpOwogCiAgIGlmICh2YWwgPT0gMCkKICAg ICB7CkBAIC0xOTMsNyArMTkzLDcgQEAgc3RhdF9pOF9zdWJfMCAoY2hhciAqbmFtZSwgZ2Zj X2FycmF5X2k4ICpzYXJyYXksIEdGQ19JTlRFR0VSXzggKnN0YXR1cywKICNlbmRpZgogICAg IHZhbCA9IHN0YXQoc3RyLCAmc2IpOwogCi0gIGZyZWUgKHN0cik7CisgIHhmcmVlIChzdHIp OwogCiAgIGlmICh2YWwgPT0gMCkKICAgICB7CmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9p bnRyaW5zaWNzL3N5bWxuay5jIGIvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9zeW1sbmsuYwpp bmRleCBkYjM2YWFkLi41Zjc1ZjliIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9pbnRyaW5z aWNzL3N5bWxuay5jCisrKyBiL2xpYmdmb3J0cmFuL2ludHJpbnNpY3Mvc3ltbG5rLmMKQEAg LTQzLDggKzQzLDggQEAgc3ltbG5rX2ludGVybmFsIChjaGFyICpwYXRoMSwgY2hhciAqcGF0 aDIsIGdmY19jaGFybGVuX3R5cGUgcGF0aDFfbGVuLAogICBjaGFyICpzdHIxID0gZmNfc3Ry ZHVwIChwYXRoMSwgcGF0aDFfbGVuKTsKICAgY2hhciAqc3RyMiA9IGZjX3N0cmR1cCAocGF0 aDIsIHBhdGgyX2xlbik7CiAgIGludCB2YWwgPSBzeW1saW5rIChzdHIxLCBzdHIyKTsKLSAg ZnJlZSAoc3RyMSk7Ci0gIGZyZWUgKHN0cjIpOworICB4ZnJlZSAoc3RyMSk7CisgIHhmcmVl IChzdHIyKTsKICAgcmV0dXJuICgodmFsID09IDApID8gMCA6IGVycm5vKTsKIH0KIApkaWZm IC0tZ2l0IGEvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9zeXN0ZW0uYyBiL2xpYmdmb3J0cmFu L2ludHJpbnNpY3Mvc3lzdGVtLmMKaW5kZXggMzRmZWY4MS4uYTczZjQ2YiAxMDA2NDQKLS0t IGEvbGliZ2ZvcnRyYW4vaW50cmluc2ljcy9zeXN0ZW0uYworKysgYi9saWJnZm9ydHJhbi9p bnRyaW5zaWNzL3N5c3RlbS5jCkBAIC0zOSw3ICszOSw3IEBAIHN5c3RlbV9zdWIgKGNvbnN0 IGNoYXIgKmZjbWQsIEdGQ19JTlRFR0VSXzQgKnN0YXR1cywgZ2ZjX2NoYXJsZW5fdHlwZSBj bWRfbGVuKQogICBmbHVzaF9hbGxfdW5pdHMoKTsKIAogICBzdGF0ID0gc3lzdGVtIChjbWQp OwotICBmcmVlIChjbWQpOworICB4ZnJlZSAoY21kKTsKICAgaWYgKHN0YXR1cykKICAgICAq c3RhdHVzID0gc3RhdDsKIH0KZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2ludHJpbnNpY3Mv dW5saW5rLmMgYi9saWJnZm9ydHJhbi9pbnRyaW5zaWNzL3VubGluay5jCmluZGV4IGQyMzZm MzcwLi40OWJlMmM5IDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9pbnRyaW5zaWNzL3VubGlu ay5jCisrKyBiL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvdW5saW5rLmMKQEAgLTUwLDcgKzUw LDcgQEAgdW5saW5rX2k0X3N1YiAoY2hhciAqbmFtZSwgR0ZDX0lOVEVHRVJfNCAqc3RhdHVz LCBnZmNfY2hhcmxlbl90eXBlIG5hbWVfbGVuKQogCiAgIHN0YXQgPSB1bmxpbmsgKHN0cik7 CiAKLSAgZnJlZSAoc3RyKTsKKyAgeGZyZWUgKHN0cik7CiAKICAgaWYgKHN0YXR1cyAhPSBO VUxMKQogICAgICpzdGF0dXMgPSAoc3RhdCA9PSAwKSA/IHN0YXQgOiBlcnJubzsKZGlmZiAt LWdpdCBhL2xpYmdmb3J0cmFuL2lvL2FzeW5jLmMgYi9saWJnZm9ydHJhbi9pby9hc3luYy5j CmluZGV4IDkxMmIzOWUuLjljZWRmNjEgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2lvL2Fz eW5jLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW8vYXN5bmMuYwpAQCAtNzIsNyArNzIsNyBAQCB1 cGRhdGVfcGR0IChzdF9wYXJhbWV0ZXJfZHQgKipvbGQsIHN0X3BhcmFtZXRlcl9kdCAqbmV3 KSB7CiAgIHRlbXAgPSAqb2xkOwogICAqb2xkID0gbmV3OwogICBpZiAodGVtcCkKLSAgICBm cmVlICh0ZW1wKTsKKyAgICB4ZnJlZSAodGVtcCk7CiB9CiAKIC8qIERlc3Ryb3kgYW4gYWR2 X2NvbmQgc3RydWN0dXJlLiAgKi8KQEAgLTEwNyw3ICsxMDcsNyBAQCBhc3luY19pbyAodm9p ZCAqYXJnKQogICAgICAgd2hpbGUgKGN0cSkKIAl7CiAJICBpZiAocHJldikKLQkgICAgZnJl ZSAocHJldik7CisJICAgIHhmcmVlIChwcmV2KTsKIAkgIHByZXYgPSBjdHE7CiAJICBpZiAo IWF1LT5lcnJvci5oYXNfZXJyb3IpCiAJICAgIHsKQEAgLTE1MCw3ICsxNTAsNyBAQCBhc3lu Y19pbyAodm9pZCAqYXJnKQogCQkgIHRyYW5zZmVyX2FycmF5X2lubmVyIChhdS0+cGR0LCBj dHEtPmFyZy5hcnJheS5kZXNjLAogCQkJCQljdHEtPmFyZy5hcnJheS5raW5kLAogCQkJCQlj dHEtPmFyZy5hcnJheS5jaGFybGVuKTsKLQkJICBmcmVlIChjdHEtPmFyZy5hcnJheS5kZXNj KTsKKwkJICB4ZnJlZSAoY3RxLT5hcmcuYXJyYXkuZGVzYyk7CiAJCSAgYnJlYWs7CiAKIAkJ Y2FzZSBBSU9fQ0xPU0U6CkBAIC0xOTUsNyArMTk1LDcgQEAgYXN5bmNfaW8gKHZvaWQgKmFy ZykKICAgYXUtPmhlYWQgPSBOVUxMOwogICBhdS0+ZW1wdHkgPSAxOwogICBTSUdOQUwgKCZh dS0+ZW1wdHlzaWduYWwpOwotICBmcmVlIChjdHEpOworICB4ZnJlZSAoY3RxKTsKICAgVU5M T0NLICgmYXUtPmxvY2spOwogICByZXR1cm4gTlVMTDsKIH0KQEAgLTIxMiw3ICsyMTIsNyBA QCBmcmVlX2FzeW5jX3VuaXQgKGFzeW5jX3VuaXQgKmF1KQogICBkZXN0cm95X2Fkdl9jb25k ICgmYXUtPmVtcHR5c2lnbmFsKTsKICAgZGVzdHJveV9hZHZfY29uZCAoJmF1LT5pZC5kb25l KTsKICAgVF9FUlJPUiAoX19ndGhyZWFkX211dGV4X2Rlc3Ryb3ksICZhdS0+bG9jayk7Ci0g IGZyZWUgKGF1KTsKKyAgeGZyZWUgKGF1KTsKIH0KIAogLyogSW5pdGlhbGl6ZSBhbiBhZHZf Y29uZCBzdHJ1Y3R1cmUuICAqLwpAQCAtMjY0LDcgKzI2NCw3IEBAIGluaXRfYXN5bmNfdW5p dCAoZ2ZjX3VuaXQgKnUpCiB2b2lkCiBlbnF1ZXVlX3RyYW5zZmVyIChhc3luY191bml0ICph dSwgdHJhbnNmZXJfYXJncyAqYXJnLCBlbnVtIGFpb19kbyB0eXBlKQogewotICB0cmFuc2Zl cl9xdWV1ZSAqdHEgPSBjYWxsb2MgKHNpemVvZiAodHJhbnNmZXJfcXVldWUpLCAxKTsKKyAg dHJhbnNmZXJfcXVldWUgKnRxID0geGNhbGxvYyAoc2l6ZW9mICh0cmFuc2Zlcl9xdWV1ZSks IDEpOwogICB0cS0+YXJnID0gKmFyZzsKICAgdHEtPnR5cGUgPSB0eXBlOwogICB0cS0+aGFz X2lkID0gMDsKQEAgLTI4Niw3ICsyODYsNyBAQCBpbnQKIGVucXVldWVfZG9uZV9pZCAoYXN5 bmNfdW5pdCAqYXUsIGVudW0gYWlvX2RvIHR5cGUpCiB7CiAgIGludCByZXQ7Ci0gIHRyYW5z ZmVyX3F1ZXVlICp0cSA9IGNhbGxvYyAoc2l6ZW9mICh0cmFuc2Zlcl9xdWV1ZSksIDEpOwor ICB0cmFuc2Zlcl9xdWV1ZSAqdHEgPSB4Y2FsbG9jIChzaXplb2YgKHRyYW5zZmVyX3F1ZXVl KSwgMSk7CiAKICAgdHEtPnR5cGUgPSB0eXBlOwogICB0cS0+aGFzX2lkID0gMTsKQEAgLTMx MCw3ICszMTAsNyBAQCBlbnF1ZXVlX2RvbmVfaWQgKGFzeW5jX3VuaXQgKmF1LCBlbnVtIGFp b19kbyB0eXBlKQogdm9pZAogZW5xdWV1ZV9kb25lIChhc3luY191bml0ICphdSwgZW51bSBh aW9fZG8gdHlwZSkKIHsKLSAgdHJhbnNmZXJfcXVldWUgKnRxID0gY2FsbG9jIChzaXplb2Yg KHRyYW5zZmVyX3F1ZXVlKSwgMSk7CisgIHRyYW5zZmVyX3F1ZXVlICp0cSA9IHhjYWxsb2Mg KHNpemVvZiAodHJhbnNmZXJfcXVldWUpLCAxKTsKICAgdHEtPnR5cGUgPSB0eXBlOwogICB0 cS0+aGFzX2lkID0gMDsKICAgTE9DSyAoJmF1LT5sb2NrKTsKQEAgLTMzMCw3ICszMzAsNyBA QCBlbnF1ZXVlX2RvbmUgKGFzeW5jX3VuaXQgKmF1LCBlbnVtIGFpb19kbyB0eXBlKQogdm9p ZAogZW5xdWV1ZV9jbG9zZSAoYXN5bmNfdW5pdCAqYXUpCiB7Ci0gIHRyYW5zZmVyX3F1ZXVl ICp0cSA9IGNhbGxvYyAoc2l6ZW9mICh0cmFuc2Zlcl9xdWV1ZSksIDEpOworICB0cmFuc2Zl cl9xdWV1ZSAqdHEgPSB4Y2FsbG9jIChzaXplb2YgKHRyYW5zZmVyX3F1ZXVlKSwgMSk7CiAK ICAgdHEtPnR5cGUgPSBBSU9fQ0xPU0U7CiAgIExPQ0sgKCZhdS0+bG9jayk7CmRpZmYgLS1n aXQgYS9saWJnZm9ydHJhbi9pby9hc3luYy5oIGIvbGliZ2ZvcnRyYW4vaW8vYXN5bmMuaApp bmRleCBlZmQ1NDJhLi45YWQ5MTlkIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9pby9hc3lu Yy5oCisrKyBiL2xpYmdmb3J0cmFuL2lvL2FzeW5jLmgKQEAgLTEzOCw3ICsxMzgsNyBAQAog CiAjZGVmaW5lIE1VVEVYX0RFQlVHX0FERChtdXRleCkgZG8gewkJXAogICAgIGFpb19sb2Nr X2RlYnVnICpuOwkJCQlcCi0gICAgbiA9IG1hbGxvYyAoc2l6ZW9mKGFpb19sb2NrX2RlYnVn KSk7CVwKKyAgICBuID0geG1hbGxvYyAoc2l6ZW9mKGFpb19sb2NrX2RlYnVnKSk7CVwKICAg ICBuLT5wcmV2ID0gVEFJTF9ERUJVR19RVUVVRTsJCQlcCiAgICAgaWYgKG4tPnByZXYpCQkJ CVwKICAgICAgIG4tPnByZXYtPm5leHQgPSBuOwkJCVwKQEAgLTE2OSw3ICsxNjksNyBAQAog CSAgaWYgKGN1cnIgPT0gYWlvX2RlYnVnX2hlYWQpCQkJCQlcCiAJICAgIGFpb19kZWJ1Z19o ZWFkID0gTlVMTDsJCQkJCVwKIAl9CQkJCQkJCQlcCi0JZnJlZSAoY3Vycik7CQkJCQkJCVwK Kwl4ZnJlZSAoY3Vycik7CQkJCQkJCVwKICAgICAgIH0JCQkJCQkJCQlcCiAgICAgSU5URVJO X1VOTE9DSyAoJmRlYnVnX3F1ZXVlX2xvY2spOwkJCQkJXAogICAgIElOVEVSTl9VTkxPQ0sg KG11dGV4KTsJCQkJCQlcCmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9pby9jbG9zZS5jIGIv bGliZ2ZvcnRyYW4vaW8vY2xvc2UuYwppbmRleCA0Njk3ZWQ5Li42MDBmODg2IDEwMDY0NAot LS0gYS9saWJnZm9ydHJhbi9pby9jbG9zZS5jCisrKyBiL2xpYmdmb3J0cmFuL2lvL2Nsb3Nl LmMKQEAgLTkyLDcgKzkyLDcgQEAgc3RfY2xvc2UgKHN0X3BhcmFtZXRlcl9jbG9zZSAqY2xw KQogCSAgICBnZW5lcmF0ZV9lcnJvciAoJmNscC0+Y29tbW9uLCBMSUJFUlJPUl9CQURfT1BU SU9OLAogCQkJICAgICJDYW4ndCBLRUVQIGEgc2NyYXRjaCBmaWxlIG9uIENMT1NFIik7CiAj aWYgIUhBVkVfVU5MSU5LX09QRU5fRklMRQotCSAgcGF0aCA9IHN0cmR1cCAodS0+ZmlsZW5h bWUpOworCSAgcGF0aCA9IHhzdHJkdXAgKHUtPmZpbGVuYW1lKTsKICNlbmRpZgogCX0KICAg ICAgIGVsc2UKQEAgLTExMCw3ICsxMTAsNyBAQCBzdF9jbG9zZSAoc3RfcGFyYW1ldGVyX2Ns b3NlICpjbHApCiAJCSAgICBnZW5lcmF0ZV9lcnJvciAoJmNscC0+Y29tbW9uLCBMSUJFUlJP Ul9PUywKIAkJCQkgICAgIkZpbGUgY2Fubm90IGJlIGRlbGV0ZWQiKTsKICNlbHNlCi0JCSAg cGF0aCA9IHN0cmR1cCAodS0+ZmlsZW5hbWUpOworCQkgIHBhdGggPSB4c3RyZHVwICh1LT5m aWxlbmFtZSk7CiAjZW5kaWYKIAkJfQogCSAgICB9CkBAIC0xMjQsNyArMTI0LDcgQEAgc3Rf Y2xvc2UgKHN0X3BhcmFtZXRlcl9jbG9zZSAqY2xwKQogCSAgaWYgKHJlbW92ZSAocGF0aCkp CiAJICAgIGdlbmVyYXRlX2Vycm9yICgmY2xwLT5jb21tb24sIExJQkVSUk9SX09TLAogCQkJ ICAgICJGaWxlIGNhbm5vdCBiZSBkZWxldGVkIik7Ci0JICBmcmVlIChwYXRoKTsKKwkgIHhm cmVlIChwYXRoKTsKIAl9CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9saWJnZm9ydHJh bi9pby9mYnVmLmMgYi9saWJnZm9ydHJhbi9pby9mYnVmLmMKaW5kZXggNzYxYzBmMS4uMzRj MzFhOCAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW8vZmJ1Zi5jCisrKyBiL2xpYmdmb3J0 cmFuL2lvL2ZidWYuYwpAQCAtNTAsOCArNTAsOCBAQCBmYnVmX2Rlc3Ryb3kgKGdmY191bml0 ICp1KQogewogICBpZiAodS0+ZmJ1ZiA9PSBOVUxMKQogICAgIHJldHVybjsKLSAgZnJlZSAo dS0+ZmJ1Zi0+YnVmKTsKLSAgZnJlZSAodS0+ZmJ1Zik7CisgIHhmcmVlICh1LT5mYnVmLT5i dWYpOworICB4ZnJlZSAodS0+ZmJ1Zik7CiAgIHUtPmZidWYgPSBOVUxMOwogfQogCmRpZmYg LS1naXQgYS9saWJnZm9ydHJhbi9pby9mb3JtYXQuYyBiL2xpYmdmb3J0cmFuL2lvL2Zvcm1h dC5jCmluZGV4IDk2ZDUxNDEuLjU2MTg2MDEgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2lv L2Zvcm1hdC5jCisrKyBiL2xpYmdmb3J0cmFuL2lvL2Zvcm1hdC5jCkBAIC02NSw3ICs2NSw3 IEBAIGZyZWVfZm9ybWF0X2hhc2hfdGFibGUgKGdmY191bml0ICp1KQogICAgICAgaWYgKHUt PmZvcm1hdF9oYXNoX3RhYmxlW2ldLmhhc2hlZF9mbXQgIT0gTlVMTCkKIAl7CiAJICBmcmVl X2Zvcm1hdF9kYXRhICh1LT5mb3JtYXRfaGFzaF90YWJsZVtpXS5oYXNoZWRfZm10KTsKLQkg IGZyZWUgKHUtPmZvcm1hdF9oYXNoX3RhYmxlW2ldLmtleSk7CisJICB4ZnJlZSAodS0+Zm9y bWF0X2hhc2hfdGFibGVbaV0ua2V5KTsKIAl9CiAgICAgICB1LT5mb3JtYXRfaGFzaF90YWJs ZVtpXS5rZXkgPSBOVUxMOwogICAgICAgdS0+Zm9ybWF0X2hhc2hfdGFibGVbaV0ua2V5X2xl biA9IDA7CkBAIC0xNDUsNyArMTQ1LDcgQEAgc2F2ZV9wYXJzZWRfZm9ybWF0IChzdF9wYXJh bWV0ZXJfZHQgKmR0cCkKICAgICBmcmVlX2Zvcm1hdF9kYXRhICh1LT5mb3JtYXRfaGFzaF90 YWJsZVtoYXNoXS5oYXNoZWRfZm10KTsKICAgdS0+Zm9ybWF0X2hhc2hfdGFibGVbaGFzaF0u aGFzaGVkX2ZtdCA9IE5VTEw7CiAKLSAgZnJlZSAodS0+Zm9ybWF0X2hhc2hfdGFibGVbaGFz aF0ua2V5KTsKKyAgeGZyZWUgKHUtPmZvcm1hdF9oYXNoX3RhYmxlW2hhc2hdLmtleSk7CiAg IHUtPmZvcm1hdF9oYXNoX3RhYmxlW2hhc2hdLmtleSA9IGR0cC0+Zm9ybWF0OwogCiAgIHUt PmZvcm1hdF9oYXNoX3RhYmxlW2hhc2hdLmtleV9sZW4gPSBkdHAtPmZvcm1hdF9sZW47CkBA IC0yNDcsNyArMjQ3LDcgQEAgZnJlZV9mb3JtYXQgKHN0X3BhcmFtZXRlcl9kdCAqZHRwKQog ewogICBpZiAoKGR0cC0+Y29tbW9uLmZsYWdzICYgSU9QQVJNX0RUX0hBU19GT1JNQVQpICYm IGR0cC0+Zm9ybWF0KQogICAgIHsKLSAgICAgIGZyZWUgKGR0cC0+Zm9ybWF0KTsKKyAgICAg IHhmcmVlIChkdHAtPmZvcm1hdCk7CiAgICAgICBkdHAtPmZvcm1hdCA9IE5VTEw7CiAgICAg fQogfQpAQCAtMjcwLDE3ICsyNzAsMTcgQEAgZnJlZV9mb3JtYXRfZGF0YSAoZm9ybWF0X2Rh dGEgKmZtdCkKICAgICBpZiAoZm5wLT5mb3JtYXQgPT0gRk1UX0RUKQogCXsKIAkgIGlmIChH RkNfREVTQ1JJUFRPUl9EQVRBKGZucC0+dS51ZGYudmxpc3QpKQotCSAgICBmcmVlIChHRkNf REVTQ1JJUFRPUl9EQVRBKGZucC0+dS51ZGYudmxpc3QpKTsKLQkgIGZyZWUgKGZucC0+dS51 ZGYudmxpc3QpOworCSAgICB4ZnJlZSAoR0ZDX0RFU0NSSVBUT1JfREFUQShmbnAtPnUudWRm LnZsaXN0KSk7CisJICB4ZnJlZSAoZm5wLT51LnVkZi52bGlzdCk7CiAJfQogCiAgIGZvciAo ZmEgPSBmbXQtPmFycmF5Lm5leHQ7IGZhOyBmYSA9IGZhX25leHQpCiAgICAgewogICAgICAg ZmFfbmV4dCA9IGZhLT5uZXh0OwotICAgICAgZnJlZSAoZmEpOworICAgICAgeGZyZWUgKGZh KTsKICAgICB9CiAKLSAgZnJlZSAoZm10KTsKKyAgeGZyZWUgKGZtdCk7CiAgIGZtdCA9IE5V TEw7CiB9CiAKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2lvL2ludHJpbnNpY3MuYyBiL2xp Ymdmb3J0cmFuL2lvL2ludHJpbnNpY3MuYwppbmRleCAxNmM5ZTBhLi44NmE3OWFmIDEwMDY0 NAotLS0gYS9saWJnZm9ydHJhbi9pby9pbnRyaW5zaWNzLmMKKysrIGIvbGliZ2ZvcnRyYW4v aW8vaW50cmluc2ljcy5jCkBAIC0zODgsNyArMzg4LDcgQEAgdHR5bmFtIChjaGFyICoqbmFt ZSwgZ2ZjX2NoYXJsZW5fdHlwZSAqbmFtZV9sZW4sIGludCB1bml0KQogCSAgdW5sb2NrX3Vu aXQgKHUpOwogCSAgcmV0dXJuOwogCX0KLSAgICAgIGZyZWUgKCpuYW1lKTsKKyAgICAgIHhm cmVlICgqbmFtZSk7CiAgICAgICB1bmxvY2tfdW5pdCAodSk7CiAgICAgfQogCmRpZmYgLS1n aXQgYS9saWJnZm9ydHJhbi9pby9saXN0X3JlYWQuYyBiL2xpYmdmb3J0cmFuL2lvL2xpc3Rf cmVhZC5jCmluZGV4IDVhNTYzNGMuLmNkYzUzMGMgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFu L2lvL2xpc3RfcmVhZC5jCisrKyBiL2xpYmdmb3J0cmFuL2lvL2xpc3RfcmVhZC5jCkBAIC0x MzYsNyArMTM2LDcgQEAgZnJlZV9zYXZlZCAoc3RfcGFyYW1ldGVyX2R0ICpkdHApCiAgIGlm IChkdHAtPnUucC5zYXZlZF9zdHJpbmcgPT0gTlVMTCkKICAgICByZXR1cm47CiAKLSAgZnJl ZSAoZHRwLT51LnAuc2F2ZWRfc3RyaW5nKTsKKyAgeGZyZWUgKGR0cC0+dS5wLnNhdmVkX3N0 cmluZyk7CiAKICAgZHRwLT51LnAuc2F2ZWRfc3RyaW5nID0gTlVMTDsKICAgZHRwLT51LnAu c2F2ZWRfdXNlZCA9IDA7CkBAIC0xNTQsNyArMTU0LDcgQEAgZnJlZV9saW5lIChzdF9wYXJh bWV0ZXJfZHQgKmR0cCkKICAgaWYgKGR0cC0+dS5wLmxpbmVfYnVmZmVyID09IE5VTEwpCiAg ICAgcmV0dXJuOwogCi0gIGZyZWUgKGR0cC0+dS5wLmxpbmVfYnVmZmVyKTsKKyAgeGZyZWUg KGR0cC0+dS5wLmxpbmVfYnVmZmVyKTsKICAgZHRwLT51LnAubGluZV9idWZmZXIgPSBOVUxM OwogfQogCkBAIC0yNzI3LDcgKzI3MjcsNyBAQCBubWxfdG91Y2hfbm9kZXMgKG5hbWVsaXN0 X2luZm8gKm5sKQogICAgICAgZWxzZQogCWJyZWFrOwogICAgIH0KLSAgZnJlZSAoZXh0X25h bWUpOworICB4ZnJlZSAoZXh0X25hbWUpOwogICByZXR1cm47CiB9CiAKQEAgLTMwNTcsMTgg KzMwNTcsMTggQEAgbm1sX3JlYWRfb2JqIChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgbmFtZWxp c3RfaW5mbyAqbmwsIGluZGV4X3R5cGUgb2Zmc2V0LAogCQkJCSAgcHByZXZfbmwsIG5tbF9l cnJfbXNnLCBubWxfZXJyX21zZ19zaXplLAogCQkJCSAgY2xvdywgY2hpZ2gpKQogCQkgIHsK LQkJICAgIGZyZWUgKG9ial9uYW1lKTsKKwkJICAgIHhmcmVlIChvYmpfbmFtZSk7CiAJCSAg ICByZXR1cm4gZmFsc2U7CiAJCSAgfQogCiAJCWlmIChkdHAtPnUucC5pbnB1dF9jb21wbGV0 ZSkKIAkJICB7Ci0JCSAgICBmcmVlIChvYmpfbmFtZSk7CisJCSAgICB4ZnJlZSAob2JqX25h bWUpOwogCQkgICAgcmV0dXJuIHRydWU7CiAJCSAgfQogCSAgICAgIH0KIAotCSAgICBmcmVl IChvYmpfbmFtZSk7CisJICAgIHhmcmVlIChvYmpfbmFtZSk7CiAJICAgIGdvdG8gaW5jcl9p ZHg7CiAKICAgICAgICAgICBkZWZhdWx0OgpAQCAtMzMyNCw3ICszMzI0LDcgQEAgZ2V0X25h bWU6CiAgICAgICBubCA9IGZpbmRfbm1sX25vZGUgKGR0cCwgZXh0X25hbWUpOwogCiAgICAg ICBpZiAoZXh0X3NpemUgPiBFWFRfU1RBQ0tfU1opCi0JZnJlZSAoZXh0X25hbWUpOworCXhm cmVlIChleHRfbmFtZSk7CiAgICAgfQogICBlbHNlCiAgICAgbmwgPSBmaW5kX25tbF9ub2Rl IChkdHAsIGR0cC0+dS5wLnNhdmVkX3N0cmluZyk7CmRpZmYgLS1naXQgYS9saWJnZm9ydHJh bi9pby9sb2NrLmMgYi9saWJnZm9ydHJhbi9pby9sb2NrLmMKaW5kZXggZGMyMjEzNC4uMzk3 MmRiYyAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW8vbG9jay5jCisrKyBiL2xpYmdmb3J0 cmFuL2lvL2xvY2suYwpAQCAtNTIsMTMgKzUyLDEzIEBAIGZyZWVfaW9ubWwgKHN0X3BhcmFt ZXRlcl9kdCAqZHRwKQogCXsKIAkgIHQyID0gdDE7CiAJICB0MSA9IHQxLT5uZXh0OwotCSAg ZnJlZSAodDItPnZhcl9uYW1lKTsKKwkgIHhmcmVlICh0Mi0+dmFyX25hbWUpOwogCSAgaWYg KHQyLT52YXJfcmFuaykKIAkgICAgewotCSAgICAgZnJlZSAodDItPmRpbSk7Ci0JICAgICBm cmVlICh0Mi0+bHMpOworCSAgICAgeGZyZWUgKHQyLT5kaW0pOworCSAgICAgeGZyZWUgKHQy LT5scyk7CiAJICAgIH0KLQkgIGZyZWUgKHQyKTsKKwkgIHhmcmVlICh0Mik7CiAJfQogICAg IH0KICAgZHRwLT51LnAuaW9ubWwgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4v aW8vb3Blbi5jIGIvbGliZ2ZvcnRyYW4vaW8vb3Blbi5jCmluZGV4IGM5Mjc2YzcuLjdlYjEx MWIgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2lvL29wZW4uYworKysgYi9saWJnZm9ydHJh bi9pby9vcGVuLmMKQEAgLTU3Myw4ICs1NzMsOCBAQCBuZXdfdW5pdCAoc3RfcGFyYW1ldGVy X29wZW4gKm9wcCwgZ2ZjX3VuaXQgKnUsIHVuaXRfZmxhZ3MgKmZsYWdzKQogICAgICAgc25w cmludGYgKG1zZywgbXNnbGVuLCAiQ2Fubm90IG9wZW4gZmlsZSAnJXMnOiAlcyIsIHBhdGgs CiAJCWdmX3N0cmVycm9yIChlcnJubywgZXJyYnVmLCBzaXplb2YgKGVycmJ1ZikpKTsKICAg ICAgIGdlbmVyYXRlX2Vycm9yICgmb3BwLT5jb21tb24sIExJQkVSUk9SX09TLCBtc2cpOwot ICAgICAgZnJlZSAobXNnKTsKLSAgICAgIGZyZWUgKHBhdGgpOworICAgICAgeGZyZWUgKG1z Zyk7CisgICAgICB4ZnJlZSAocGF0aCk7CiAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgfQog CkBAIC02NzEsNyArNjcxLDcgQEAgbmV3X3VuaXQgKHN0X3BhcmFtZXRlcl9vcGVuICpvcHAs IGdmY191bml0ICp1LCB1bml0X2ZsYWdzICpmbGFncykKICAgdGVzdF9lbmRmaWxlICh1KTsK IAogICBpZiAoZmxhZ3MtPnN0YXR1cyA9PSBTVEFUVVNfU0NSQVRDSCAmJiBvcHAtPmZpbGUg IT0gTlVMTCkKLSAgICBmcmVlIChvcHAtPmZpbGUpOworICAgIHhmcmVlIChvcHAtPmZpbGUp OwogICAgIAogICBpZiAoZmxhZ3MtPmZvcm0gPT0gRk9STV9GT1JNQVRURUQpCiAgICAgewpA QCAtNjk2LDcgKzY5Niw3IEBAIG5ld191bml0IChzdF9wYXJhbWV0ZXJfb3BlbiAqb3BwLCBn ZmNfdW5pdCAqdSwgdW5pdF9mbGFncyAqZmxhZ3MpCiAgIC8qIEZyZWUgbWVtb3J5IGFzc29j aWF0ZWQgd2l0aCBhIHRlbXBvcmFyeSBmaWxlbmFtZS4gICovCiAKICAgaWYgKGZsYWdzLT5z dGF0dXMgPT0gU1RBVFVTX1NDUkFUQ0ggJiYgb3BwLT5maWxlICE9IE5VTEwpCi0gICAgZnJl ZSAob3BwLT5maWxlKTsKKyAgICB4ZnJlZSAob3BwLT5maWxlKTsKIAogIGZhaWw6CiAKQEAg LTczNiw3ICs3MzYsNyBAQCBhbHJlYWR5X29wZW4gKHN0X3BhcmFtZXRlcl9vcGVuICpvcHAs IGdmY191bml0ICp1LCB1bml0X2ZsYWdzICpmbGFncykKICAgICAgIGlmICh1LT5maWxlbmFt ZSAmJiB1LT5mbGFncy5zdGF0dXMgPT0gU1RBVFVTX1NDUkFUQ0gpCiAJcmVtb3ZlICh1LT5m aWxlbmFtZSk7CiAjZW5kaWYKLSAgICAgIGZyZWUgKHUtPmZpbGVuYW1lKTsKKyAgICAgIHhm cmVlICh1LT5maWxlbmFtZSk7CiAgICAgICB1LT5maWxlbmFtZSA9IE5VTEw7CiAgICAgICAK ICAgICAgIHUgPSBuZXdfdW5pdCAob3BwLCB1LCBmbGFncyk7CmRpZmYgLS1naXQgYS9saWJn Zm9ydHJhbi9pby9yZWFkLmMgYi9saWJnZm9ydHJhbi9pby9yZWFkLmMKaW5kZXggMjFlNzg1 MS4uNTgyZTQwZCAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW8vcmVhZC5jCisrKyBiL2xp Ymdmb3J0cmFuL2lvL3JlYWQuYwpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgcmVhZF9mIChzdF9w YXJhbWV0ZXJfZHQgKmR0cCwgY29uc3QgZm5vZGUgKmYsIGNoYXIgKmRlc3QsIGludCBsZW5n dGgpCiAKICAgICAgIGNvbnZlcnRfaW5mbmFuIChkdHAsIGRlc3QsIGJ1ZmZlciwgbGVuZ3Ro KTsKICAgICAgIGlmIChidWZfc2l6ZSA+IFJFQURGX1RNUCkKLQlmcmVlIChidWZmZXIpOwor CXhmcmVlIChidWZmZXIpOwogICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIzMSw3ICsx MjMxLDcgQEAgZG9uZToKICAgLyogRG8gdGhlIGFjdHVhbCBjb252ZXJzaW9uLiAgKi8KICAg Y29udmVydF9yZWFsIChkdHAsIGRlc3QsIGJ1ZmZlciwgbGVuZ3RoKTsKICAgaWYgKGJ1Zl9z aXplID4gUkVBREZfVE1QKQotICAgIGZyZWUgKGJ1ZmZlcik7CisgICAgeGZyZWUgKGJ1ZmZl cik7CiAgIHJldHVybjsKIAogICAvKiBUaGUgdmFsdWUgcmVhZCBpcyB6ZXJvLiAgKi8KQEAg LTEyNzEsNyArMTI3MSw3IEBAIHplcm86CiAKIGJhZF9mbG9hdDoKICAgaWYgKGJ1Zl9zaXpl ID4gUkVBREZfVE1QKQotICAgIGZyZWUgKGJ1ZmZlcik7CisgICAgeGZyZWUgKGJ1ZmZlcik7 CiAgIGdlbmVyYXRlX2Vycm9yICgmZHRwLT5jb21tb24sIExJQkVSUk9SX1JFQURfVkFMVUUs CiAJCSAgIkJhZCB2YWx1ZSBkdXJpbmcgZmxvYXRpbmcgcG9pbnQgcmVhZCIpOwogICBuZXh0 X3JlY29yZCAoZHRwLCAxKTsKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2lvL3RyYW5zZmVy LmMgYi9saWJnZm9ydHJhbi9pby90cmFuc2Zlci5jCmluZGV4IGY1NDNkZmQuLjExYzc5Yzgg MTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2lvL3RyYW5zZmVyLmMKKysrIGIvbGliZ2ZvcnRy YW4vaW8vdHJhbnNmZXIuYwpAQCAtMTcyMSw3ICsxNzIxLDcgQEAgZm9ybWF0dGVkX3RyYW5z ZmVyX3NjYWxhcl9yZWFkIChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgYnQgdHlwZSwgdm9pZCAq cCwgaW50IGtpbmQKIAkgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+Y2hpbGRfZHRpby0tOwog CiAJICBpZiAoZi0+dS51ZGYuc3RyaW5nX2xlbiAhPSAwKQotCSAgICBmcmVlIChpb3R5cGUp OworCSAgICB4ZnJlZSAoaW90eXBlKTsKIAkgIC8qIE5vdGU6IHZsaXN0IGlzIGZyZWVkIGlu IGZyZWVfZm9ybWF0X2RhdGEuICAqLwogCSAgYnJlYWs7CiAKQEAgLTIxOTMsNyArMjE5Myw3 IEBAIGZvcm1hdHRlZF90cmFuc2Zlcl9zY2FsYXJfd3JpdGUgKHN0X3BhcmFtZXRlcl9kdCAq ZHRwLCBidCB0eXBlLCB2b2lkICpwLCBpbnQga2luCiAJICBkdHAtPnUucC5jdXJyZW50X3Vu aXQtPmNoaWxkX2R0aW8tLTsKIAogCSAgaWYgKGYtPnUudWRmLnN0cmluZ19sZW4gIT0gMCkK LQkgICAgZnJlZSAoaW90eXBlKTsKKwkgICAgeGZyZWUgKGlvdHlwZSk7CiAJICAvKiBOb3Rl OiB2bGlzdCBpcyBmcmVlZCBpbiBmcmVlX2Zvcm1hdF9kYXRhLiAgKi8KIAkgIGJyZWFrOwog CkBAIC00Mjk2LDggKzQyOTYsOCBAQCBmaW5hbGl6ZV90cmFuc2ZlciAoc3RfcGFyYW1ldGVy X2R0ICpkdHApCiAgICAgewogICAgICAgaWYgKGNmICYgSU9QQVJNX0RUX0hBU19GT1JNQVQp CiAgICAgICAgIHsKLQkgIGZyZWUgKGR0cC0+dS5wLmZtdCk7Ci0JICBmcmVlIChkdHAtPmZv cm1hdCk7CisJICB4ZnJlZSAoZHRwLT51LnAuZm10KTsKKwkgIHhmcmVlIChkdHAtPmZvcm1h dCk7CiAJfQogICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ0OTYsMTAgKzQ0OTYsMTAgQEAg c3RfcmVhZF9kb25lX3dvcmtlciAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGJvb2wgdW5sb2Nr KQogCXsKIAkgIGlmICgoZHRwLT5jb21tb24uZmxhZ3MgJiBJT1BBUk1fRFRfSEFTX1VEVElP KSA9PSAwKQogCSAgICB7Ci0JICAgICAgZnJlZSAoZHRwLT51LnAuY3VycmVudF91bml0LT5m aWxlbmFtZSk7CisJICAgICAgeGZyZWUgKGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+ZmlsZW5h bWUpOwogCSAgICAgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+ZmlsZW5hbWUgPSBOVUxMOwog CSAgICAgIGlmIChkdHAtPnUucC5jdXJyZW50X3VuaXQtPmxzKQotCQlmcmVlIChkdHAtPnUu cC5jdXJyZW50X3VuaXQtPmxzKTsKKwkJeGZyZWUgKGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+ bHMpOwogCSAgICAgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+bHMgPSBOVUxMOwogCSAgICB9 CiAJICBmcmVlX25ld3VuaXQgPSB0cnVlOwpAQCAtNDU5MywxMCArNDU5MywxMCBAQCBzdF93 cml0ZV9kb25lX3dvcmtlciAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGJvb2wgdW5sb2NrKQog CXsKIAkgIGlmICgoZHRwLT5jb21tb24uZmxhZ3MgJiBJT1BBUk1fRFRfSEFTX1VEVElPKSA9 PSAwKQogCSAgICB7Ci0JICAgICAgZnJlZSAoZHRwLT51LnAuY3VycmVudF91bml0LT5maWxl bmFtZSk7CisJICAgICAgeGZyZWUgKGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+ZmlsZW5hbWUp OwogCSAgICAgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+ZmlsZW5hbWUgPSBOVUxMOwogCSAg ICAgIGlmIChkdHAtPnUucC5jdXJyZW50X3VuaXQtPmxzKQotCQlmcmVlIChkdHAtPnUucC5j dXJyZW50X3VuaXQtPmxzKTsKKwkJeGZyZWUgKGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+bHMp OwogCSAgICAgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+bHMgPSBOVUxMOwogCSAgICB9CiAJ ICBmcmVlX25ld3VuaXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vaW8vdW5p dC5jIGIvbGliZ2ZvcnRyYW4vaW8vdW5pdC5jCmluZGV4IDRkMzJlMzYuLjRkNmMzMGIgMTAw NjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2lvL3VuaXQuYworKysgYi9saWJnZm9ydHJhbi9pby91 bml0LmMKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZAogZGVzdHJveV91bml0X211 dGV4IChnZmNfdW5pdCAqdSkKIHsKICAgX19ndGhyZWFkX211dGV4X2Rlc3Ryb3kgKCZ1LT5s b2NrKTsKLSAgZnJlZSAodSk7CisgIHhmcmVlICh1KTsKIH0KIAogCkBAIC02MzgsNyArNjM4 LDcgQEAgaW5pdF91bml0cyAodm9pZCkKICAgICAgIHUtPnJlY2wgPSBkZWZhdWx0X3JlY2w7 CiAgICAgICB1LT5lbmRmaWxlID0gTk9fRU5ERklMRTsKIAotICAgICAgdS0+ZmlsZW5hbWUg PSBzdHJkdXAgKHN0ZGluX25hbWUpOworICAgICAgdS0+ZmlsZW5hbWUgPSB4c3RyZHVwIChz dGRpbl9uYW1lKTsKIAogICAgICAgZmJ1Zl9pbml0ICh1LCAwKTsKIApAQCAtNjY5LDcgKzY2 OSw3IEBAIGluaXRfdW5pdHMgKHZvaWQpCiAgICAgICB1LT5yZWNsID0gZGVmYXVsdF9yZWNs OwogICAgICAgdS0+ZW5kZmlsZSA9IEFUX0VOREZJTEU7CiAKLSAgICAgIHUtPmZpbGVuYW1l ID0gc3RyZHVwIChzdGRvdXRfbmFtZSk7CisgICAgICB1LT5maWxlbmFtZSA9IHhzdHJkdXAg KHN0ZG91dF9uYW1lKTsKIAogICAgICAgZmJ1Zl9pbml0ICh1LCAwKTsKIApAQCAtNjk5LDcg KzY5OSw3IEBAIGluaXRfdW5pdHMgKHZvaWQpCiAgICAgICB1LT5yZWNsID0gZGVmYXVsdF9y ZWNsOwogICAgICAgdS0+ZW5kZmlsZSA9IEFUX0VOREZJTEU7CiAKLSAgICAgIHUtPmZpbGVu YW1lID0gc3RyZHVwIChzdGRlcnJfbmFtZSk7CisgICAgICB1LT5maWxlbmFtZSA9IHhzdHJk dXAgKHN0ZGVycl9uYW1lKTsKIAogICAgICAgZmJ1Zl9pbml0ICh1LCAyNTYpOyAgLyogMjU2 IGJ5dGVzIHNob3VsZCBiZSBlbm91Z2gsIHByb2JhYmx5IG5vdCBkb2luZwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYW55IGtpbmQgb2YgZXhvdGljIGZvcm1hdHRpbmcgdG8g c3RkZXJyLiAgKi8KQEAgLTczOSw3ICs3MzksNyBAQCBjbG9zZV91bml0XzEgKGdmY191bml0 ICp1LCBpbnQgbG9ja2VkKQogCiAgIGRlbGV0ZV91bml0ICh1KTsKIAotICBmcmVlICh1LT5m aWxlbmFtZSk7CisgIHhmcmVlICh1LT5maWxlbmFtZSk7CiAgIHUtPmZpbGVuYW1lID0gTlVM TDsKIAogICBmcmVlX2Zvcm1hdF9oYXNoX3RhYmxlICh1KTsKQEAgLTgwMCw3ICs4MDAsNyBA QCBjbG9zZV91bml0cyAodm9pZCkKICAgICBjbG9zZV91bml0XzEgKHVuaXRfcm9vdCwgMSk7 CiAgIFVOTE9DSyAoJnVuaXRfbG9jayk7CiAKLSAgZnJlZSAobmV3dW5pdHMpOworICB4ZnJl ZSAobmV3dW5pdHMpOwogCiAjaWZkZWYgSEFWRV9QT1NJWF8yMDA4X0xPQ0FMRQogICBmcmVl bG9jYWxlIChjX2xvY2FsZSk7CkBAIC04NjcsNyArODY3LDcgQEAgZmlsZW5hbWVfZnJvbV91 bml0IChpbnQgbikKIAogICAvKiBHZXQgdGhlIGZpbGVuYW1lLiAgKi8KICAgaWYgKHUgIT0g TlVMTCAmJiB1LT5maWxlbmFtZSAhPSBOVUxMKQotICAgIHJldHVybiBzdHJkdXAgKHUtPmZp bGVuYW1lKTsKKyAgICByZXR1cm4geHN0cmR1cCAodS0+ZmlsZW5hbWUpOwogICBlbHNlCiAg ICAgcmV0dXJuIChjaGFyICopIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9p by91bml4LmMgYi9saWJnZm9ydHJhbi9pby91bml4LmMKaW5kZXggNjE2YzFhYS4uZDY5ZTll ZSAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW8vdW5peC5jCisrKyBiL2xpYmdmb3J0cmFu L2lvL3VuaXguYwpAQCAtNDg1LDcgKzQ4NSw3IEBAIHJhd19jbG9zZSAodW5peF9zdHJlYW0g KnMpCiAgICAgfQogICBlbHNlCiAgICAgcmV0dmFsID0gMDsKLSAgZnJlZSAocyk7CisgIHhm cmVlIChzKTsKICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtNzUwLDcgKzc1MCw3IEBAIGJ1 Zl9jbG9zZSAodW5peF9zdHJlYW0gKnMpCiB7CiAgIGlmIChidWZfZmx1c2ggKHMpICE9IDAp CiAgICAgcmV0dXJuIC0xOwotICBmcmVlIChzLT5idWZmZXIpOworICB4ZnJlZSAocy0+YnVm ZmVyKTsKICAgcmV0dXJuIHJhd19jbG9zZSAocyk7CiB9CiAKQEAgLTEwMjksNyArMTAyOSw3 IEBAIHN0YXRpYyBpbnQKIG1lbV9jbG9zZSAodW5peF9zdHJlYW0gKnMpCiB7CiAgIGlmIChz KQotICAgIGZyZWUgKHMpOworICAgIHhmcmVlIChzKTsKICAgcmV0dXJuIDA7CiB9CiAKQEAg LTEzMTYsNyArMTMxNiw3IEBAIHRlbXBmaWxlIChzdF9wYXJhbWV0ZXJfb3BlbiAqb3BwKQog ICAgICAgICBidWZmZXJbMF0gPSAwOwogICAgICAgZWxzZQogICAgICAgICBidWZmZXJbcmV0 XSA9IDA7Ci0gICAgICB0ZW1wZGlyID0gc3RyZHVwIChidWZmZXIpOworICAgICAgdGVtcGRp ciA9IHhzdHJkdXAgKGJ1ZmZlcik7CiAgICAgICBmZCA9IHRlbXBmaWxlX29wZW4gKHRlbXBk aXIsICZmbmFtZSk7CiAgICAgfQogI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQpAQCAtMTU1 MCw3ICsxNTUwLDcgQEAgcmVndWxhcl9maWxlIChzdF9wYXJhbWV0ZXJfb3BlbiAqb3BwLCB1 bml0X2ZsYWdzICpmbGFncykKIHsKICAgY2hhciAqcGF0aCA9IGZjX3N0cmR1cCAob3BwLT5m aWxlLCBvcHAtPmZpbGVfbGVuKTsKICAgaW50IGZkID0gcmVndWxhcl9maWxlMiAocGF0aCwg b3BwLCBmbGFncyk7Ci0gIGZyZWUgKHBhdGgpOworICB4ZnJlZSAocGF0aCk7CiAgIHJldHVy biBmZDsKIH0KIApAQCAtMTY5Miw3ICsxNjkyLDcgQEAgY29tcGFyZV9maWxlX2ZpbGVuYW1l IChnZmNfdW5pdCAqdSwgY29uc3QgY2hhciAqbmFtZSwgZ2ZjX2NoYXJsZW5fdHlwZSBsZW4p CiAgICAgcmV0ID0gMDsKICNlbmRpZgogIGRvbmU6Ci0gIGZyZWUgKHBhdGgpOworICB4ZnJl ZSAocGF0aCk7CiAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE3OTgsMTQgKzE3OTgsMTQgQEAg cmV0cnk6CiAJICBMT0NLICgmdW5pdF9sb2NrKTsKIAkgIFVOTE9DSyAoJnUtPmxvY2spOwog CSAgaWYgKHByZWRlY193YWl0aW5nX2xvY2tlZCAodSkgPT0gMCkKLQkgICAgZnJlZSAodSk7 CisJICAgIHhmcmVlICh1KTsKIAkgIGdvdG8gcmV0cnk7CiAJfQogCiAgICAgICBkZWNfd2Fp dGluZ191bmxvY2tlZCAodSk7CiAgICAgfQogIGRvbmU6Ci0gIGZyZWUgKHBhdGgpOworICB4 ZnJlZSAocGF0aCk7CiAgIHJldHVybiB1OwogfQogCkBAIC0xODY1LDcgKzE4NjUsNyBAQCBm bHVzaF9hbGxfdW5pdHMgKHZvaWQpCiAJICBMT0NLICgmdW5pdF9sb2NrKTsKIAkgIFVOTE9D SyAoJnUtPmxvY2spOwogCSAgaWYgKHByZWRlY193YWl0aW5nX2xvY2tlZCAodSkgPT0gMCkK LQkgICAgZnJlZSAodSk7CisJICAgIHhmcmVlICh1KTsKIAl9CiAgICAgfQogICB3aGlsZSAo MSk7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCBmaWxlX2V4aXN0cyAoY29uc3QgY2hhciAqZmls ZSwgZ2ZjX2NoYXJsZW5fdHlwZSBmaWxlX2xlbikKIHsKICAgY2hhciAqcGF0aCA9IGZjX3N0 cmR1cCAoZmlsZSwgZmlsZV9sZW4pOwogICBpbnQgcmVzID0gIShhY2Nlc3MgKHBhdGgsIEZf T0spKTsKLSAgZnJlZSAocGF0aCk7CisgIHhmcmVlIChwYXRoKTsKICAgcmV0dXJuIHJlczsK IH0KIApAQCAtMTkyOCw3ICsxOTI4LDcgQEAgZmlsZV9zaXplIChjb25zdCBjaGFyICpmaWxl LCBnZmNfY2hhcmxlbl90eXBlIGZpbGVfbGVuKQogICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwog ICBpbnQgZXJyOwogICBURU1QX0ZBSUxVUkVfUkVUUlkgKGVyciA9IHN0YXQgKHBhdGgsICZz dGF0YnVmKSk7Ci0gIGZyZWUgKHBhdGgpOworICB4ZnJlZSAocGF0aCk7CiAgIGlmIChlcnIg PT0gLTEpCiAgICAgcmV0dXJuIC0xOwogICByZXR1cm4gKEdGQ19JT19JTlQpIHN0YXRidWYu c3Rfc2l6ZTsKQEAgLTE5NTEsNyArMTk1MSw3IEBAIGlucXVpcmVfc2VxdWVudGlhbCAoY29u c3QgY2hhciAqc3RyaW5nLCBnZmNfY2hhcmxlbl90eXBlIGxlbikKICAgY2hhciAqcGF0aCA9 IGZjX3N0cmR1cCAoc3RyaW5nLCBsZW4pOwogICBpbnQgZXJyOwogICBURU1QX0ZBSUxVUkVf UkVUUlkgKGVyciA9IHN0YXQgKHBhdGgsICZzdGF0YnVmKSk7Ci0gIGZyZWUgKHBhdGgpOwor ICB4ZnJlZSAocGF0aCk7CiAgIGlmIChlcnIgPT0gLTEpCiAgICAgcmV0dXJuIHVua25vd247 CiAKQEAgLTE5ODAsNyArMTk4MCw3IEBAIGlucXVpcmVfZGlyZWN0IChjb25zdCBjaGFyICpz dHJpbmcsIGdmY19jaGFybGVuX3R5cGUgbGVuKQogICBjaGFyICpwYXRoID0gZmNfc3RyZHVw IChzdHJpbmcsIGxlbik7CiAgIGludCBlcnI7CiAgIFRFTVBfRkFJTFVSRV9SRVRSWSAoZXJy ID0gc3RhdCAocGF0aCwgJnN0YXRidWYpKTsKLSAgZnJlZSAocGF0aCk7CisgIHhmcmVlIChw YXRoKTsKICAgaWYgKGVyciA9PSAtMSkKICAgICByZXR1cm4gdW5rbm93bjsKIApAQCAtMjAw OSw3ICsyMDA5LDcgQEAgaW5xdWlyZV9mb3JtYXR0ZWQgKGNvbnN0IGNoYXIgKnN0cmluZywg Z2ZjX2NoYXJsZW5fdHlwZSBsZW4pCiAgIGNoYXIgKnBhdGggPSBmY19zdHJkdXAgKHN0cmlu ZywgbGVuKTsKICAgaW50IGVycjsKICAgVEVNUF9GQUlMVVJFX1JFVFJZIChlcnIgPSBzdGF0 IChwYXRoLCAmc3RhdGJ1ZikpOwotICBmcmVlIChwYXRoKTsKKyAgeGZyZWUgKHBhdGgpOwog ICBpZiAoZXJyID09IC0xKQogICAgIHJldHVybiB1bmtub3duOwogCkBAIC0yMDQ1LDcgKzIw NDUsNyBAQCBpbnF1aXJlX2FjY2VzcyAoY29uc3QgY2hhciAqc3RyaW5nLCBnZmNfY2hhcmxl bl90eXBlIGxlbiwgaW50IG1vZGUpCiAgICAgcmV0dXJuIG5vOwogICBjaGFyICpwYXRoID0g ZmNfc3RyZHVwIChzdHJpbmcsIGxlbik7CiAgIGludCByZXMgPSBhY2Nlc3MgKHBhdGgsIG1v ZGUpOwotICBmcmVlIChwYXRoKTsKKyAgeGZyZWUgKHBhdGgpOwogICBpZiAocmVzID09IC0x KQogICAgIHJldHVybiBubzsKIApkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vaW8vd3JpdGUu YyBiL2xpYmdmb3J0cmFuL2lvL3dyaXRlLmMKaW5kZXggNWUwMjVhMS4uZDBhMjljNiAxMDA2 NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW8vd3JpdGUuYworKysgYi9saWJnZm9ydHJhbi9pby93 cml0ZS5jCkBAIC0xNjM2LDkgKzE2MzYsOSBAQCB3cml0ZV9mbG9hdF8wIChzdF9wYXJhbWV0 ZXJfZHQgKmR0cCwgY29uc3QgZm5vZGUgKmYsIGNvbnN0IGNoYXIgKnNvdXJjZSwgaW50IGtp bgogICB3cml0ZV9mbG9hdF9zdHJpbmcgKGR0cCwgcmVzdWx0LCBmbHRfc3RyX2xlbik7CiAK ICAgaWYgKGJ1Zl9zaXplID4gQlVGX1NUQUNLX1NaKQotICAgIGZyZWUgKGJ1ZmZlcik7Cisg ICAgeGZyZWUgKGJ1ZmZlcik7CiAgIGlmIChyZXNfbGVuID4gQlVGX1NUQUNLX1NaKQotICAg IGZyZWUgKHJlc3VsdCk7CisgICAgeGZyZWUgKHJlc3VsdCk7CiB9CiAKIHZvaWQKQEAgLTE3 NjMsOSArMTc2Myw5IEBAIHdyaXRlX3JlYWwgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBjb25z dCBjaGFyICpzb3VyY2UsIGludCBraW5kKQogCiAgIGR0cC0+dS5wLnNjYWxlX2ZhY3RvciA9 IG9yaWdfc2NhbGU7CiAgIGlmIChidWZfc2l6ZSA+IEJVRl9TVEFDS19TWikKLSAgICBmcmVl IChidWZmZXIpOworICAgIHhmcmVlIChidWZmZXIpOwogICBpZiAocmVzX2xlbiA+IEJVRl9T VEFDS19TWikKLSAgICBmcmVlIChyZXN1bHQpOworICAgIHhmcmVlIChyZXN1bHQpOwogfQog CiAvKiBTaW1pbGFyIHRvIGxpc3QgZm9ybWF0dGVkIFJFQUwgb3V0cHV0LCBmb3Iga1BHMCB3 aGVyZSBrID4gMCB3ZQpAQCAtMTgxOCw5ICsxODE4LDkgQEAgd3JpdGVfcmVhbF93MCAoc3Rf cGFyYW1ldGVyX2R0ICpkdHAsIGNvbnN0IGNoYXIgKnNvdXJjZSwgaW50IGtpbmQsCiAKICAg ZHRwLT51LnAuZzBfbm9fYmxhbmtzID0gMDsKICAgaWYgKGJ1Zl9zaXplID4gQlVGX1NUQUNL X1NaKQotICAgIGZyZWUgKGJ1ZmZlcik7CisgICAgeGZyZWUgKGJ1ZmZlcik7CiAgIGlmIChy ZXNfbGVuID4gQlVGX1NUQUNLX1NaKQotICAgIGZyZWUgKHJlc3VsdCk7CisgICAgeGZyZWUg KHJlc3VsdCk7CiB9CiAKIApAQCAtMTg3OSwxMSArMTg3OSwxMSBAQCB3cml0ZV9jb21wbGV4 IChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgY29uc3QgY2hhciAqc291cmNlLCBpbnQga2luZCwg c2l6ZV90IHNpemUpCiAgIGR0cC0+dS5wLnNjYWxlX2ZhY3RvciA9IG9yaWdfc2NhbGU7CiAg IGR0cC0+dS5wLmcwX25vX2JsYW5rcyA9IDA7CiAgIGlmIChidWZfc2l6ZSA+IEJVRl9TVEFD S19TWikKLSAgICBmcmVlIChidWZmZXIpOworICAgIHhmcmVlIChidWZmZXIpOwogICBpZiAo cmVzX2xlbjEgPiBCVUZfU1RBQ0tfU1opCi0gICAgZnJlZSAocmVzdWx0MSk7CisgICAgeGZy ZWUgKHJlc3VsdDEpOwogICBpZiAocmVzX2xlbjIgPiBCVUZfU1RBQ0tfU1opCi0gICAgZnJl ZSAocmVzdWx0Mik7CisgICAgeGZyZWUgKHJlc3VsdDIpOwogfQogCiAKQEAgLTIzODQsOCAr MjM4NCw4IEBAIG5tbF93cml0ZV9vYmogKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBuYW1lbGlz dF9pbmZvICpvYmosIGluZGV4X3R5cGUgb2Zmc2V0LAogCQkJCQkgIG9iaiwgZXh0X25hbWUp OwogCQl9CiAKLQkgICAgICBmcmVlIChvYmpfbmFtZSk7Ci0JICAgICAgZnJlZSAoZXh0X25h bWUpOworCSAgICAgIHhmcmVlIChvYmpfbmFtZSk7CisJICAgICAgeGZyZWUgKGV4dF9uYW1l KTsKIAkgICAgICBnb3RvIG9ial9sb29wOwogCiAgICAgICAgICAgICBkZWZhdWx0OgpkaWZm IC0tZ2l0IGEvbGliZ2ZvcnRyYW4vbGliZ2ZvcnRyYW4uaCBiL2xpYmdmb3J0cmFuL2xpYmdm b3J0cmFuLmgKaW5kZXggNDMyOWQ0Yy4uMGI4OTNhNSAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRy YW4vbGliZ2ZvcnRyYW4uaAorKysgYi9saWJnZm9ydHJhbi9saWJnZm9ydHJhbi5oCkBAIC04 NzEsNiArODcxLDkgQEAgaW50ZXJuYWxfcHJvdG8oeGNhbGxvYyk7CiBleHRlcm4gdm9pZCAq eHJlYWxsb2MgKHZvaWQgKiwgc2l6ZV90KTsKIGludGVybmFsX3Byb3RvKHhyZWFsbG9jKTsK IAorZXh0ZXJuIHZvaWQgeGZyZWUgKHZvaWQgKik7CitpbnRlcm5hbF9wcm90byh4ZnJlZSk7 CisKIC8qIGVudmlyb24uYyAqLwogCiBleHRlcm4gdm9pZCBpbml0X3ZhcmlhYmxlcyAodm9p ZCk7CkBAIC05MTksNiArOTIyLDkgQEAgaW50ZXJuYWxfcHJvdG8oZmNfc3RyZHVwKTsKIGV4 dGVybiBjaGFyICpmY19zdHJkdXBfbm90cmltKGNvbnN0IGNoYXIgKiwgZ2ZjX2NoYXJsZW5f dHlwZSk7CiBpbnRlcm5hbF9wcm90byhmY19zdHJkdXBfbm90cmltKTsKIAorZXh0ZXJuIGNo YXIgKnhzdHJkdXAoY29uc3QgY2hhciAqKTsKK2ludGVybmFsX3Byb3RvKHhzdHJkdXApOwor CiBleHRlcm4gY29uc3QgY2hhciAqZ2ZjX2l0b2EoR0ZDX1VJTlRFR0VSX0xBUkdFU1QsIGNo YXIgKiwgc2l6ZV90KTsKIGludGVybmFsX3Byb3RvKGdmY19pdG9hKTsKIApkaWZmIC0tZ2l0 IGEvbGliZ2ZvcnRyYW4vbTQvbWF0bXVsX2ludGVybmFsLm00IGIvbGliZ2ZvcnRyYW4vbTQv bWF0bXVsX2ludGVybmFsLm00CmluZGV4IDBlOTYyMDcuLmVhZGVlYTMgMTAwNjQ0Ci0tLSBh L2xpYmdmb3J0cmFuL200L21hdG11bF9pbnRlcm5hbC5tNAorKysgYi9saWJnZm9ydHJhbi9t NC9tYXRtdWxfaW50ZXJuYWwubTQKQEAgLTI1NSw3ICsyNTUsNyBAQCBzaW5jbHVkZShgbWF0 bXVsX2FzbV8ncnR5cGVfY29kZWAubTQnKWRubAogICAgICAgaWYgKHQxX2RpbSA+IDY1NTM2 KQogCXQxX2RpbSA9IDY1NTM2OwogCi0gICAgICB0MSA9IG1hbGxvYyAodDFfZGltICogc2l6 ZW9mKCdydHlwZV9uYW1lYCkpOworICAgICAgdDEgPSB4bWFsbG9jICh0MV9kaW0gKiBzaXpl b2YoJ3J0eXBlX25hbWVgKSk7CiAKICAgICAgIC8qIFN0YXJ0IHR1cm5pbmcgdGhlIGNyYW5r LiAqLwogICAgICAgaTEgPSBuOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHNpbmNsdWRlKGBtYXRt dWxfYXNtXydydHlwZV9jb2RlYC5tNCcpZG5sCiAJCX0KIAkgICAgfQogCX0KLSAgICAgIGZy ZWUodDEpOworICAgICAgeGZyZWUgKHQxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIGVs c2UgaWYgKHJ4c3RyaWRlID09IDEgJiYgYXlzdHJpZGUgPT0gMSAmJiBieHN0cmlkZSA9PSAx KQpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vcnVudGltZS9JU09fRm9ydHJhbl9iaW5kaW5n LmMgYi9saWJnZm9ydHJhbi9ydW50aW1lL0lTT19Gb3J0cmFuX2JpbmRpbmcuYwppbmRleCAz NDJkZjQyLi5hYjFhOWZhIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9ydW50aW1lL0lTT19G b3J0cmFuX2JpbmRpbmcuYworKysgYi9saWJnZm9ydHJhbi9ydW50aW1lL0lTT19Gb3J0cmFu X2JpbmRpbmcuYwpAQCAtMTM3LDcgKzEzNyw3IEBAIGdmY19kZXNjX3RvX2NmaV9kZXNjIChD RklfY2Rlc2NfdCAqKmRfcHRyLCBjb25zdCBnZmNfYXJyYXlfdm9pZCAqcykKICAgICAgYnkg c2V0dGluZyB0aGUgbGVuZ3RoIHRvIENGSV9NQVhfUkFOSy4gVGhpcyBzaG91bGQgbm90IGJl IG5lY2Vzc2FyeQogICAgICBidXQgdmFsZ3JpbmQgY29tcGxhaW5zIGFjY2Vzc2VzIGFmdGVy IHRoZSBhbGxvY2F0ZWQgYmxvY2suICAqLwogICBpZiAoKmRfcHRyID09IE5VTEwpCi0gICAg ZCA9IGNhbGxvYyAoMSwgKHNpemVvZiAoQ0ZJX2NkZXNjX3QpCisgICAgZCA9IHhjYWxsb2Mg KDEsIChzaXplb2YgKENGSV9jZGVzY190KQogCQkgICAgKyAoQ0ZJX3R5cGVfdCkoQ0ZJX01B WF9SQU5LICogc2l6ZW9mIChDRklfZGltX3QpKSkpOwogICBlbHNlCiAgICAgZCA9ICpkX3B0 cjsKQEAgLTM3OCw3ICszNzgsNyBAQCBDRklfYWxsb2NhdGUgKENGSV9jZGVzY190ICpkdiwg Y29uc3QgQ0ZJX2luZGV4X3QgbG93ZXJfYm91bmRzW10sCiAgICAgICAgIH0KICAgICB9CiAK LSAgZHYtPmJhc2VfYWRkciA9IGNhbGxvYyAoYXJyX2xlbiwgZHYtPmVsZW1fbGVuKTsKKyAg ZHYtPmJhc2VfYWRkciA9IHhjYWxsb2MgKGFycl9sZW4sIGR2LT5lbGVtX2xlbik7CiAgIGlm IChkdi0+YmFzZV9hZGRyID09IE5VTEwpCiAgICAgewogICAgICAgZnByaW50ZiAoc3RkZXJy LCAiQ0ZJX2FsbG9jYXRlOiBGYWlsdXJlIGluIG1lbW9yeSBhbGxvY2F0aW9uLlxuIik7CkBA IC00MTgsNyArNDE4LDcgQEAgQ0ZJX2RlYWxsb2NhdGUgKENGSV9jZGVzY190ICpkdikKICAg ICB9CiAKICAgLyogRnJlZSBhbmQgbnVsbGlmeSBtZW1vcnkuICovCi0gIGZyZWUgKGR2LT5i YXNlX2FkZHIpOworICB4ZnJlZSAoZHYtPmJhc2VfYWRkcik7CiAgIGR2LT5iYXNlX2FkZHIg PSBOVUxMOwogCiAgIHJldHVybiBDRklfU1VDQ0VTUzsKZGlmZiAtLWdpdCBhL2xpYmdmb3J0 cmFuL3J1bnRpbWUvZXJyb3IuYyBiL2xpYmdmb3J0cmFuL3J1bnRpbWUvZXJyb3IuYwppbmRl eCA4MzY2Y2I5Li44MGU1ZWJlIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9ydW50aW1lL2Vy cm9yLmMKKysrIGIvbGliZ2ZvcnRyYW4vcnVudGltZS9lcnJvci5jCkBAIC0yODUsNyArMjg1 LDcgQEAgc2hvd19sb2N1cyAoc3RfcGFyYW1ldGVyX2NvbW1vbiAqY21wKQogCXsKIAkgIHN0 X3ByaW50ZiAoIkF0IGxpbmUgJWQgb2YgZmlsZSAlcyAodW5pdCA9ICVkLCBmaWxlID0gJyVz JylcbiIsCiAJCSAgIChpbnQpIGNtcC0+bGluZSwgY21wLT5maWxlbmFtZSwgKGludCkgY21w LT51bml0LCBmaWxlbmFtZSk7Ci0JICBmcmVlIChmaWxlbmFtZSk7CisJICB4ZnJlZSAoZmls ZW5hbWUpOwogCX0KICAgICAgIGVsc2UKIAl7CkBAIC0zMzQsNyArMzM0LDcgQEAgc3RhdGlj IHZvaWQgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKQogY29uc3RydWN0b3JfcmVjdXJz aW9uX2NoZWNrICh2b2lkKQogewogICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQotICAg IF9fZ3RocmVhZF9rZXlfY3JlYXRlICgmcmVjdXJzaW9uX2tleSwgJmZyZWUpOworICAgIF9f Z3RocmVhZF9rZXlfY3JlYXRlICgmcmVjdXJzaW9uX2tleSwgJnhmcmVlKTsKIH0KIAogc3Rh dGljIHZvaWQgX19hdHRyaWJ1dGVfXygoZGVzdHJ1Y3RvcikpCmRpZmYgLS1naXQgYS9saWJn Zm9ydHJhbi9ydW50aW1lL21lbW9yeS5jIGIvbGliZ2ZvcnRyYW4vcnVudGltZS9tZW1vcnku YwppbmRleCBmZDE3N2EyLi5jYmNlYzdjIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9ydW50 aW1lL21lbW9yeS5jCisrKyBiL2xpYmdmb3J0cmFuL3J1bnRpbWUvbWVtb3J5LmMKQEAgLTQz LDcgKzQzLDYgQEAgeG1hbGxvYyAoc2l6ZV90IG4pCiAgIHJldHVybiBwOwogfQogCi0KIHZv aWQgKgogeG1hbGxvY2FycmF5IChzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKQogewpAQCAt NjYsNyArNjUsNiBAQCB4bWFsbG9jYXJyYXkgKHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUp CiAgIHJldHVybiBwOwogfQogCi0KIC8qIGNhbGxvYyB3cmFwcGVyIHRoYXQgYWJvcnRzIG9u IGVycm9yLiAgKi8KIAogdm9pZCAqCkBAIC04Miw3ICs4MCw2IEBAIHhjYWxsb2MgKHNpemVf dCBubWVtYiwgc2l6ZV90IHNpemUpCiAgIHJldHVybiBwOwogfQogCi0KIHZvaWQgKgogeHJl YWxsb2MgKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpCiB7CkBAIC05NSwzICs5Miw5IEBAIHhy ZWFsbG9jICh2b2lkICpwdHIsIHNpemVfdCBzaXplKQogCiAgIHJldHVybiBuZXdwOwogfQor Cit2b2lkCit4ZnJlZSAodm9pZCAqcHRyKQoreworICBmcmVlIChwdHIpOworfQpkaWZmIC0t Z2l0IGEvbGliZ2ZvcnRyYW4vcnVudGltZS9taW5pbWFsLmMgYi9saWJnZm9ydHJhbi9ydW50 aW1lL21pbmltYWwuYwppbmRleCAzMjZmZjgyLi4yZGM0ODE0IDEwMDY0NAotLS0gYS9saWJn Zm9ydHJhbi9ydW50aW1lL21pbmltYWwuYworKysgYi9saWJnZm9ydHJhbi9ydW50aW1lL21p bmltYWwuYwpAQCAtMTY5LDcgKzE2OSw3IEBAIHNob3dfbG9jdXMgKHN0X3BhcmFtZXRlcl9j b21tb24gKmNtcCkKIAl7CiAJICBzdF9wcmludGYgKCJBdCBsaW5lICVkIG9mIGZpbGUgJXMg KHVuaXQgPSAlZCwgZmlsZSA9ICclcycpXG4iLAogCQkgICAoaW50KSBjbXAtPmxpbmUsIGNt cC0+ZmlsZW5hbWUsIChpbnQpIGNtcC0+dW5pdCwgZmlsZW5hbWUpOwotCSAgZnJlZSAoZmls ZW5hbWUpOworCSAgeGZyZWUgKGZpbGVuYW1lKTsKIAl9CiAgICAgICBlbHNlCiAJewpkaWZm IC0tZ2l0IGEvbGliZ2ZvcnRyYW4vcnVudGltZS9zdHJpbmcuYyBiL2xpYmdmb3J0cmFuL3J1 bnRpbWUvc3RyaW5nLmMKaW5kZXggODhiZGE3Ni4uNzNiMmExNCAxMDA2NDQKLS0tIGEvbGli Z2ZvcnRyYW4vcnVudGltZS9zdHJpbmcuYworKysgYi9saWJnZm9ydHJhbi9ydW50aW1lL3N0 cmluZy5jCkBAIC0xMDYsMjAgKzEwNiwyOSBAQCBzdHJubGVuIChjb25zdCBjaGFyICpzLCBz aXplX3QgbWF4bGVuKQogI2VuZGlmCiAKIAotI2lmbmRlZiBIQVZFX1NUUk5EVVAKIHN0YXRp YyBjaGFyICoKLXN0cm5kdXAgKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBuKQorZmNfc3RybmR1 cCAoY29uc3QgY2hhciAqcywgc2l6ZV90IG4pCiB7CiAgIHNpemVfdCBsZW4gPSBzdHJubGVu IChzLCBuKTsKLSAgY2hhciAqcCA9IG1hbGxvYyAobGVuICsgMSk7CisgIGNoYXIgKnAgPSB4 bWFsbG9jIChsZW4gKyAxKTsKICAgaWYgKCFwKQogICAgIHJldHVybiBOVUxMOwogICBtZW1j cHkgKHAsIHMsIGxlbik7CiAgIHBbbGVuXSA9ICdcMCc7CiAgIHJldHVybiBwOwogfQotI2Vu ZGlmCiAKK2NoYXIgKgoreHN0cmR1cCAoY29uc3QgY2hhciAqc3JjKQoreworICBzaXplX3Qg bGVuID0gc3RybGVuIChzcmMpICsgMTsKKyAgdm9pZCAqbmV3ID0geG1hbGxvYyAobGVuKTsK KworICBpZiAobmV3ID09IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcmV0dXJuIChj aGFyICopIG1lbWNweSAobmV3LCBzcmMsIGxlbik7Cit9CiAKIC8qIER1cGxpY2F0ZSBhIG5v bi1udWxsLXRlcm1pbmF0ZWQgRm9ydHJhbiBzdHJpbmcgdG8gYSBtYWxsb2NlZAogICAgbnVs bC10ZXJtaW5hdGVkIEMgc3RyaW5nLiAgKi8KQEAgLTEyOCw3ICsxMzcsNyBAQCBjaGFyICoK IGZjX3N0cmR1cCAoY29uc3QgY2hhciAqc3JjLCBnZmNfY2hhcmxlbl90eXBlIHNyY19sZW4p CiB7CiAgIGdmY19jaGFybGVuX3R5cGUgbiA9IGZzdHJsZW4gKHNyYywgc3JjX2xlbik7Ci0g IGNoYXIgKnAgPSBzdHJuZHVwIChzcmMsIG4pOworICBjaGFyICpwID0gZmNfc3RybmR1cCAo c3JjLCBuKTsKICAgaWYgKCFwKQogICAgIG9zX2Vycm9yICgiTWVtb3J5IGFsbG9jYXRpb24g ZmFpbGVkIGluIGZjX3N0cmR1cCIpOwogICByZXR1cm4gcDsKQEAgLTE0Miw3ICsxNTEsNyBA QCBmY19zdHJkdXAgKGNvbnN0IGNoYXIgKnNyYywgZ2ZjX2NoYXJsZW5fdHlwZSBzcmNfbGVu KQogY2hhciAqCiBmY19zdHJkdXBfbm90cmltIChjb25zdCBjaGFyICpzcmMsIGdmY19jaGFy bGVuX3R5cGUgc3JjX2xlbikKIHsKLSAgY2hhciAqcCA9IHN0cm5kdXAgKHNyYywgc3JjX2xl bik7CisgIGNoYXIgKnAgPSBmY19zdHJuZHVwIChzcmMsIHNyY19sZW4pOwogICBpZiAoIXAp CiAgICAgb3NfZXJyb3IgKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgaW4gZmNfc3RyZHVw Iik7CiAgIHJldHVybiBwOwo= --------------0VMhd3LKuF0h3iEfytxm43fE--