Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v65NV-00GYxz-96 for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Oct 2025 10:57:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v65NQ-00Fwl1-M1 for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Oct 2025 10:57:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v65NP-00FwkK-HV for pgsql-hackers@lists.postgresql.org; Tue, 07 Oct 2025 10:57:05 +0000 Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v65NL-000Tja-2h for pgsql-hackers@lists.postgresql.org; Tue, 07 Oct 2025 10:57:03 +0000 Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-71d603b674aso65521617b3.1 for ; Tue, 07 Oct 2025 03:57:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759834620; x=1760439420; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1IStWNYZ94I8VHHOaMT6imjqth0BLeyckJ9kfWfz65s=; b=kZHwyN0iM33HFMlgob0OtMj/CwWd4rjGjKk5HE+jxk8MBNedQX9QBGchJ6Ef9OTs9U pqofbtDVGOPi+jUVHnujhL9XJyY0rkECpVDFWt8hkmvYB/Y14VY/kcgJDfxZj+fvxMFT +Yw55YTe+1+bEZIte0HtTBBy01JN/qbGYp8mp8H9rgK6ks+39z/pxA7jESZegDQ1QF+O TOEDrHEh1aBo4KBhDdxyQgEIirJ2FwzmRqHNxGSjCfLj6PqVlDLwHhTOkS6dc/N5QWcZ 8SPb0SvfeD9G9NmRf9SlEP8R//NbIFt8fXVyhGY5cz9IQrMQ+FyzpyUr4sWVlZ/yEh/y K7hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759834620; x=1760439420; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=1IStWNYZ94I8VHHOaMT6imjqth0BLeyckJ9kfWfz65s=; b=NW1XHJ929AemHUXFXd56fqYuGqYNFoOHDnEkCZvadKjTOZFi81RgwlBtPpYEYJ9n5J NWvNzYosMz+Iu/XF+ex0Yb7laYntKhkb7otwyEeatjW7EHTctMBrynlqKgiMmqpA62xb UOfVOZmKYewgC5rvEkJ0evui76TFGgqv0zd+u1Cto8VDJ0AWofY2HgHmnV/dGw9HPMp3 jnZRkGC1bVSr4C3osVD7KW9I38NQjj+gSyWp5Lkgnr4jE8HDksRqCnjzJfn6wfkL/wUQ Ro0vlAp7WiW+InUo/gB7uHK1ZjbmVgXUFiPtjdGvOiidma7Qx4D36q7e2wAOi1lQEr1Z 5T1A== X-Forwarded-Encrypted: i=1; AJvYcCW2sQIXyEiiS/RqR4fwr5qaDSoNG6nDs3U8eOaLuBDz6BDIDkSDIIioyN+JdNyVRm6irc4hKRT8c5JhbFTv@lists.postgresql.org X-Gm-Message-State: AOJu0YzD7sHt5qVowc0gljgAVKAVmEVGzridiINjJ5dnasocoE2KJnV6 3ztTAJXJmUlLCnoa7aS/wTQITaXHXnquG0cajsfprpsLUgymn45HJ8zsIGREBH0U0WoDtqC14Tx JsBMKImRh8uoHuExv+UdIw3QqgvV8xBE= X-Gm-Gg: ASbGncs6JSUBEsIznEi9/YSdNfxa7zPcmqtRu/md0omEyS3IVylRz8H1vdqui7b3yLr pYgb1LfaIBcLRgu1BvuZV+qTKn+X8CQrKJ3K+Kn0nSUxQs1xuTQXfNbiL3mDF8MD4eIU06moPFN T+xzoChrXlOAwVo73X7Oww4msnrqJqO/cNpdBZoJ3MV5L15JjQfeIRqhUJmSZhl4qFStEB1MG8+ jEWgPjeM4auNwb+DmqGd8TA55/OnF5J4Zlptx3f+c8= X-Google-Smtp-Source: AGHT+IGzYlXeqqXcs4M6gbuir0kaq/lQ2Gi9emDGH6Tv0mxA7r6myl1DJrR4ol911Tmcpyc6PTFguofqCNcZxVcI/jM= X-Received: by 2002:a05:690e:1b5a:b0:636:d2d5:87dd with SMTP id 956f58d0204a3-63b9a0ab85fmr12333049d50.12.1759834619717; Tue, 07 Oct 2025 03:56:59 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Tue, 7 Oct 2025 19:56:48 +0900 X-Gm-Features: AS18NWCGk09d4jUFjJPddgw8Nkmlji0U4z7yLJmQUM05yR3qbhtplma923Hs6dg Message-ID: Subject: Re: Eager aggregation, take 3 To: David Rowley Cc: Robert Haas , Tom Lane , Tender Wang , Paul George , Andy Fan , PostgreSQL-development , pgsql-hackers@lists.postgresql.org, Matheus Alcantara Content-Type: multipart/mixed; boundary="0000000000005f858d06408f6d36" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005f858d06408f6d36 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Oct 6, 2025 at 10:59=E2=80=AFPM David Rowley = wrote: > Not a complete review, but a customary look: Thanks for all the comments! They've been very helpful. > 1. setup_base_grouped_rels() by name and the header comment claim to > operate on base relations, but the code seems to be coded to handle > OTHER_MEMBER rels too. Indeed. I renamed it to setup_simple_grouped_rels() and updated the related comments in v24. > 2. All the calls to generate_grouped_paths() pass the grouped_rel > RelOptInfo and also grouped_rel->agg_info. Is there a reason to keep > it that way rather than access the agg_info from the given grouped_rel > from within the function? Thanks. Fixed by removing the agg_info parameter. > 3. " * The information needed are provided by the RelAggInfo > structure." This should use "is" rather than "are" Yes. > 4. standard_join_search(). I think it's worth getting rid of the > duplicate "if (!bms_equal(rel->relids, root->all_query_rels))" check. > How about setting that in a local variable rather than recalling > bms_equal(). I don't believe the compiler will optimise the extra one > away as it can't know set_cheapest() doesn't change the relids. Also, > wouldn't it be better to check rel->grouped_rel !=3D NULL first? Won't > that be NULL in most cases, where as !bms_equal(rel->relids, > root->all_query_rels) will be true in most cases? Likewise in > generate_partitionwise_join_paths(). Good point. Done that way in v24. > 5. Wouldn't it be better to do 0002 first and get that into core so > you don't have to do the hacky stuff in is_partial_agg_memory_risky()? Agreed. Done in v24. > 6. Shouldn't this be using lappend()? > > agg_clause_list =3D list_append_unique(agg_clause_list, ac_info); > > I don't understand why ac_info could already be in the list. You've > just done: ac_info =3D makeNode(AggClauseInfo); A query can specify the same Aggref expressions multiple times in the target list. Using lappend here can lead to duplicate partial Aggref nodes in the targetlist of a grouped path, which is what I want to avoid. > 7. The following comment talks about "base" relations. I don't think > it should be as the RelOptInfo can be an OTHER_MEMBER rel. > > * build_simple_grouped_rel > * Construct a new RelOptInfo representing a grouped version of the inp= ut > * base relation. > */ Fixed in v24. > 8. Normally we check the List is NIL instead of: > > if (list_length(group_clauses) =3D=3D 0) Right. Updated in v24. > 9. In get_expression_sortgroupref(), a comment claims "We ignore child > members here.". I think that's outdated since ec_members no longer has > child members. I think that comment is used to explain why we only scan ec_members here. Similar comments can be found in many other places, such as in equivclass.c: /* * Found our match. Scan the other EC members and attempt to generate * joinclauses. Ignore children here. */ foreach(lc2, cur_ec->ec_members) { > 10. I don't think this comment quite makes sense: > > * "apply_at" tracks the lowest join level at which partial aggregation i= s > * applied. > > maybe "minimum set of rels to join before partial aggregation can be appl= ied"? > > or at least swap "is" for "can be". > > My confusion comes from the fact you're stating "lowest join level", > which seems to indicate that it could be applied after further > relations have been joined, but then you're saying "is applied" to > indicate that it can only be applied at that level. > > 11. The way you've written the header comments for typedef struct > RelAggInfo seems weird. I've only ever seen extra details in the > header comment when the inline comments have been kept to a single > line. You're spanning multiple lines, so why have the out of line > comments in the header at all? > > 12. This just doesn't feel like the right name for this field: > > /* lowest level partial aggregation is applied at */ > Relids apply_at; > > I can't help think that it should be something like "agg_relids" or > "required_relids". I understand you're currently only applying the > partial grouping when you get exactly the minimum set of relids in the > join search, but if this can be made fast enough, I expect that could > be changed in the future. If you do change it, then "apply_at" is a > pretty confusing name. Perhaps I've misunderstood here and if you did > that, you'd need to create another RelAggInfo to represent that? Hmm, RelAggInfo is a per-relation structure; each grouped relation has a valid RelAggInfo. The apply_at field represents the set of relids where partial aggregation is applied within the paths of this grouped relation. If we ever change this approach and allow the planner to explore all join levels for placing partial aggregation, the apply_at field will become obsolete (cf. prior to v17 patches). I've updated the comment for apply_at to clarify that it refers to the relids at which partial aggregation is applied. I've also updated the comments within RelAggInfo to use one-line style. I retained the name of this field though. > 13. Parameter names mismatch between definition and declaration in: > > extern RelOptInfo *build_simple_grouped_rel(PlannerInfo *root, > RelOptInfo *rel_plain); > extern RelOptInfo *build_grouped_rel(PlannerInfo *root, > RelOptInfo *rel_plain); > > extern void generate_grouped_paths(PlannerInfo *root, > RelOptInfo *rel_grouped, > RelOptInfo *rel_plain, > RelAggInfo *agg_info); Nice catch! Fixed in v24. > 14. Do all the regression tests need VERBOSE in EXPLAIN? It's making > the output kinda huge. It might also be nice to wrap the long queries > onto multiple lines to make them easier to read. One of the challenges in this patch is generating the correct target list for each grouped relation. So I'm kind of inclined to retain VERBOSE in EXPLAIN. As I recall, the output target list in the test cases saved me several times during development when I introduced problematic code changes. I wrapped the long queries in v24. - Richard --0000000000005f858d06408f6d36 Content-Type: application/octet-stream; name="v24-0001-Allow-negative-aggtransspace-to-indicate-unbound.patch" Content-Disposition: attachment; filename="v24-0001-Allow-negative-aggtransspace-to-indicate-unbound.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mggg2f0p0 RnJvbSBkYzVkNGZiOWJhZTE0MTJjMzIzMDMyOWQyMjYxNmUxM2YzY2M5NjYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCA3IE9jdCAyMDI1IDEwOjE2OjM3ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjQg MS8yXSBBbGxvdyBuZWdhdGl2ZSBhZ2d0cmFuc3NwYWNlIHRvIGluZGljYXRlIHVuYm91bmRlZAog c3RhdGUgc2l6ZQoKVGhpcyBwYXRjaCByZXVzZXMgdGhlIGV4aXN0aW5nIGFnZ3RyYW5zc3BhY2Ug aW4gcGdfYWdncmVnYXRlIHRvCnNpZ25hbCB0aGF0IGFuIGFnZ3JlZ2F0ZSdzIHRyYW5zaXRpb24g c3RhdGUgY2FuIGdyb3cgdW5ib3VuZGVkbHkuICBJZgphZ2d0cmFuc3NwYWNlIGlzIHNldCB0byBh IG5lZ2F0aXZlIHZhbHVlLCBpdCBub3cgaW5kaWNhdGVzIHRoYXQgdGhlCnRyYW5zaXRpb24gc3Rh dGUgbWF5IGNvbnN1bWUgdW5wcmVkaWN0YWJsZSBvciBsYXJnZSBhbW91bnRzIG9mIG1lbW9yeSwK c3VjaCBhcyBpbiBhZ2dyZWdhdGVzIGxpa2UgYXJyYXlfYWdnIG9yIHN0cmluZ19hZ2cgdGhhdCBh Y2N1bXVsYXRlCmlucHV0IHJvd3MuCgpUaGlzIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VkIGJ5IHRo ZSBwbGFubmVyIHRvIGF2b2lkIGFwcGx5aW5nCm1lbW9yeS1zZW5zaXRpdmUgb3B0aW1pemF0aW9u cyAoZS5nLiwgZWFnZXIgYWdncmVnYXRpb24pIHdoZW4gdGhlcmUgaXMKYSByaXNrIG9mIGV4Y2Vz c2l2ZSBtZW1vcnkgdXNhZ2UgZHVyaW5nIHBhcnRpYWwgYWdncmVnYXRpb24uCgpCdW1wIGNhdGFs b2cgdmVyc2lvbi4KClBlciBpZGVhIGZyb20gUm9iZXJ0IEhhYXMsIHRob3VnaCBhcHBsaWVkIGRp ZmZlcmVudGx5IHRoYW4gb3JpZ2luYWxseQpzdWdnZXN0ZWQuCgpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tL0NBK1RnbW9ZYmt2WXdMYSsxdk9QN1JEWTdrTzI9QTdycHBvUHVzb1JYZTQ0 VkRPR0JQZ0BtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgfCAgNSArKysrLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfYWdncmVnYXRl LnNnbWwgICB8IDExICsrKysrKysrLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0 ZS5kYXQgICAgIHwgMTAgKysrKysrLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJf c2FuaXR5Lm91dCB8ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbCAg ICAgIHwgIDIgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBlOTA5NWJlZGYyMS4uM2FjYzIyMjJhODcgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCkBAIC01OTYsNyArNTk2LDEwIEBACiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFy YT4KICAgICAgICBBcHByb3hpbWF0ZSBhdmVyYWdlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgdHJh bnNpdGlvbiBzdGF0ZQotICAgICAgIGRhdGEsIG9yIHplcm8gdG8gdXNlIGEgZGVmYXVsdCBlc3Rp bWF0ZQorICAgICAgIGRhdGEuIEEgcG9zaXRpdmUgdmFsdWUgcHJvdmlkZXMgYW4gZXN0aW1hdGU7 IHplcm8gbWVhbnMgdG8KKyAgICAgICB1c2UgYSBkZWZhdWx0IGVzdGltYXRlLiBBIG5lZ2F0aXZl IHZhbHVlIGluZGljYXRlcyB0aGUgc3RhdGUKKyAgICAgICBkYXRhIGNhbiBncm93IHVuYm91bmRl ZGx5IGluIHNpemUsIHN1Y2ggYXMgd2hlbiB0aGUgYWdncmVnYXRlCisgICAgICAgYWNjdW11bGF0 ZXMgaW5wdXQgcm93cyAoZS5nLiwgYXJyYXlfYWdnLCBzdHJpbmdfYWdnKS4KICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfYWdncmVnYXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9hZ2dyZWdhdGUu c2dtbAppbmRleCAyMjJlMGFhNWM5ZC4uMDQ3MmFjMmU4NzQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX2FnZ3JlZ2F0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX2FnZ3JlZ2F0ZS5zZ21sCkBAIC0zODQsOSArMzg0LDEzIEBAIFNFTEVDVCBjb2wgRlJPTSB0 YWIgT1JERVIgQlkgY29sIFVTSU5HIHNvcnRvcCBMSU1JVCAxOwogICAgICA8cGFyYT4KICAgICAg IFRoZSBhcHByb3hpbWF0ZSBhdmVyYWdlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgYWdncmVnYXRl J3Mgc3RhdGUgdmFsdWUuCiAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyBvbWl0dGVkIG9yIGlz IHplcm8sIGEgZGVmYXVsdCBlc3RpbWF0ZSBpcyB1c2VkCi0gICAgICBiYXNlZCBvbiB0aGUgPHJl cGxhY2VhYmxlPnN0YXRlX2RhdGFfdHlwZTwvcmVwbGFjZWFibGU+LgorICAgICAgYmFzZWQgb24g dGhlIDxyZXBsYWNlYWJsZT5zdGF0ZV9kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPi4gSWYgc2V0IHRv IGEKKyAgICAgIG5lZ2F0aXZlIHZhbHVlLCBpdCBpbmRpY2F0ZXMgdGhlIHN0YXRlIGRhdGEgY2Fu IGdyb3cgdW5ib3VuZGVkbHkgaW4KKyAgICAgIHNpemUsIHN1Y2ggYXMgd2hlbiB0aGUgYWdncmVn YXRlIGFjY3VtdWxhdGVzIGlucHV0IHJvd3MgKGUuZy4sCisgICAgICBhcnJheV9hZ2csIHN0cmlu Z19hZ2cpLgogICAgICAgVGhlIHBsYW5uZXIgdXNlcyB0aGlzIHZhbHVlIHRvIGVzdGltYXRlIHRo ZSBtZW1vcnkgcmVxdWlyZWQgZm9yIGEKLSAgICAgIGdyb3VwZWQgYWdncmVnYXRlIHF1ZXJ5Lgor ICAgICAgZ3JvdXBlZCBhZ2dyZWdhdGUgcXVlcnkgYW5kIHRvIGF2b2lkIG9wdGltaXphdGlvbnMg dGhhdCBtYXkgY2F1c2UKKyAgICAgIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UuCiAgICAgIDwvcGFy YT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC01NjgsNyArNTcyLDgg QEAgU0VMRUNUIGNvbCBGUk9NIHRhYiBPUkRFUiBCWSBjb2wgVVNJTkcgc29ydG9wIExJTUlUIDE7 CiAgICAgIDxwYXJhPgogICAgICAgVGhlIGFwcHJveGltYXRlIGF2ZXJhZ2Ugc2l6ZSAoaW4gYnl0 ZXMpIG9mIHRoZSBhZ2dyZWdhdGUncyBzdGF0ZQogICAgICAgdmFsdWUsIHdoZW4gdXNpbmcgbW92 aW5nLWFnZ3JlZ2F0ZSBtb2RlLiAgVGhpcyB3b3JrcyB0aGUgc2FtZSBhcwotICAgICAgPHJlcGxh Y2VhYmxlPnN0YXRlX2RhdGFfc2l6ZTwvcmVwbGFjZWFibGU+LgorICAgICAgPHJlcGxhY2VhYmxl PnN0YXRlX2RhdGFfc2l6ZTwvcmVwbGFjZWFibGU+LCBleGNlcHQgdGhhdCBuZWdhdGl2ZQorICAg ICAgdmFsdWVzIGFyZSBub3QgdXNlZCB0byBpbmRpY2F0ZSB1bmJvdW5kZWQgc3RhdGUgc2l6ZS4K ICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmRhdCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfYWdncmVnYXRlLmRhdAppbmRleCBkNmFhMWY2ZWM0Ny4uODcwNzY5ZThmMTQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmRhdAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQKQEAgLTU1OCwyNiArNTU4LDI4IEBA CiAgIGFnZ2ZpbmFsZm4gPT4gJ2FycmF5X2FnZ19maW5hbGZuJywgYWdnY29tYmluZWZuID0+ICdh cnJheV9hZ2dfY29tYmluZScsCiAgIGFnZ3NlcmlhbGZuID0+ICdhcnJheV9hZ2dfc2VyaWFsaXpl JywKICAgYWdnZGVzZXJpYWxmbiA9PiAnYXJyYXlfYWdnX2Rlc2VyaWFsaXplJywgYWdnZmluYWxl eHRyYSA9PiAndCcsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnIH0sCisgIGFnZ3RyYW5z dHlwZSA9PiAnaW50ZXJuYWwnLCBhZ2d0cmFuc3NwYWNlID0+ICctMScgfSwKIHsgYWdnZm5vaWQg PT4gJ2FycmF5X2FnZyhhbnlhcnJheSknLCBhZ2d0cmFuc2ZuID0+ICdhcnJheV9hZ2dfYXJyYXlf dHJhbnNmbicsCiAgIGFnZ2ZpbmFsZm4gPT4gJ2FycmF5X2FnZ19hcnJheV9maW5hbGZuJywKICAg YWdnY29tYmluZWZuID0+ICdhcnJheV9hZ2dfYXJyYXlfY29tYmluZScsCiAgIGFnZ3NlcmlhbGZu ID0+ICdhcnJheV9hZ2dfYXJyYXlfc2VyaWFsaXplJywKICAgYWdnZGVzZXJpYWxmbiA9PiAnYXJy YXlfYWdnX2FycmF5X2Rlc2VyaWFsaXplJywgYWdnZmluYWxleHRyYSA9PiAndCcsCi0gIGFnZ3Ry YW5zdHlwZSA9PiAnaW50ZXJuYWwnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnLCBh Z2d0cmFuc3NwYWNlID0+ICctMScgfSwKIAogIyB0ZXh0CiB7IGFnZ2Zub2lkID0+ICdzdHJpbmdf YWdnKHRleHQsdGV4dCknLCBhZ2d0cmFuc2ZuID0+ICdzdHJpbmdfYWdnX3RyYW5zZm4nLAogICBh Z2dmaW5hbGZuID0+ICdzdHJpbmdfYWdnX2ZpbmFsZm4nLCBhZ2djb21iaW5lZm4gPT4gJ3N0cmlu Z19hZ2dfY29tYmluZScsCiAgIGFnZ3NlcmlhbGZuID0+ICdzdHJpbmdfYWdnX3NlcmlhbGl6ZScs Ci0gIGFnZ2Rlc2VyaWFsZm4gPT4gJ3N0cmluZ19hZ2dfZGVzZXJpYWxpemUnLCBhZ2d0cmFuc3R5 cGUgPT4gJ2ludGVybmFsJyB9LAorICBhZ2dkZXNlcmlhbGZuID0+ICdzdHJpbmdfYWdnX2Rlc2Vy aWFsaXplJywKKyAgYWdndHJhbnN0eXBlID0+ICdpbnRlcm5hbCcsIGFnZ3RyYW5zc3BhY2UgPT4g Jy0xJyB9LAogCiAjIGJ5dGVhCiB7IGFnZ2Zub2lkID0+ICdzdHJpbmdfYWdnKGJ5dGVhLGJ5dGVh KScsCiAgIGFnZ3RyYW5zZm4gPT4gJ2J5dGVhX3N0cmluZ19hZ2dfdHJhbnNmbicsCiAgIGFnZ2Zp bmFsZm4gPT4gJ2J5dGVhX3N0cmluZ19hZ2dfZmluYWxmbicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAn c3RyaW5nX2FnZ19jb21iaW5lJywgYWdnc2VyaWFsZm4gPT4gJ3N0cmluZ19hZ2dfc2VyaWFsaXpl JywKLSAgYWdnZGVzZXJpYWxmbiA9PiAnc3RyaW5nX2FnZ19kZXNlcmlhbGl6ZScsIGFnZ3RyYW5z dHlwZSA9PiAnaW50ZXJuYWwnIH0sCisgIGFnZ2Rlc2VyaWFsZm4gPT4gJ3N0cmluZ19hZ2dfZGVz ZXJpYWxpemUnLAorICBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJywgYWdndHJhbnNzcGFjZSA9 PiAnLTEnIH0sCiAKICMgcmFuZ2UKIHsgYWdnZm5vaWQgPT4gJ3JhbmdlX2ludGVyc2VjdF9hZ2co YW55cmFuZ2UpJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nh bml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4 IDIwYmY5ZWE5Y2RmLi5hMzU3ZTFkMGMwZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9vcHJfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29w cl9zYW5pdHkub3V0CkBAIC0xNDcwLDcgKzE0NzAsNyBAQCBXSEVSRSBhZ2dmbm9pZCA9IDAgT1Ig YWdndHJhbnNmbiA9IDAgT1IKICAgICAoYWdna2luZCA9ICduJyBBTkQgYWdnbnVtZGlyZWN0YXJn cyA+IDApIE9SCiAgICAgYWdnZmluYWxtb2RpZnkgTk9UIElOICgncicsICdzJywgJ3cnKSBPUgog ICAgIGFnZ21maW5hbG1vZGlmeSBOT1QgSU4gKCdyJywgJ3MnLCAndycpIE9SCi0gICAgYWdndHJh bnN0eXBlID0gMCBPUiBhZ2d0cmFuc3NwYWNlIDwgMCBPUiBhZ2dtdHJhbnNzcGFjZSA8IDA7Cisg ICAgYWdndHJhbnN0eXBlID0gMCBPUiBhZ2dtdHJhbnNzcGFjZSA8IDA7CiAgY3RpZCB8IGFnZ2Zu b2lkIAogLS0tLS0tKy0tLS0tLS0tLS0KICgwIHJvd3MpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wcl9zYW5p dHkuc3FsCmluZGV4IDJmYjNhODUyODc4Li5jZDY3NGQ3ZGJjYSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv b3ByX3Nhbml0eS5zcWwKQEAgLTg0Nyw3ICs4NDcsNyBAQCBXSEVSRSBhZ2dmbm9pZCA9IDAgT1Ig YWdndHJhbnNmbiA9IDAgT1IKICAgICAoYWdna2luZCA9ICduJyBBTkQgYWdnbnVtZGlyZWN0YXJn cyA+IDApIE9SCiAgICAgYWdnZmluYWxtb2RpZnkgTk9UIElOICgncicsICdzJywgJ3cnKSBPUgog ICAgIGFnZ21maW5hbG1vZGlmeSBOT1QgSU4gKCdyJywgJ3MnLCAndycpIE9SCi0gICAgYWdndHJh bnN0eXBlID0gMCBPUiBhZ2d0cmFuc3NwYWNlIDwgMCBPUiBhZ2dtdHJhbnNzcGFjZSA8IDA7Cisg ICAgYWdndHJhbnN0eXBlID0gMCBPUiBhZ2dtdHJhbnNzcGFjZSA8IDA7CiAKIC0tIE1ha2Ugc3Vy ZSB0aGUgbWF0Y2hpbmcgcGdfcHJvYyBlbnRyeSBpcyBzZW5zaWJsZSwgdG9vLgogCi0tIAoyLjM5 LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000005f858d06408f6d36 Content-Type: application/octet-stream; name="v24-0002-Implement-Eager-Aggregation.patch" Content-Disposition: attachment; filename="v24-0002-Implement-Eager-Aggregation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mggg306i1 RnJvbSBkMDNhMzliMWE4OGJlZTEyODBmYmRkNjE1MjllYWM0Mjg5MDJiMzllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNTo1OToxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjI0 IDIvMl0gSW1wbGVtZW50IEVhZ2VyIEFnZ3JlZ2F0aW9uCgpFYWdlciBhZ2dyZWdhdGlvbiBpcyBh IHF1ZXJ5IG9wdGltaXphdGlvbiB0ZWNobmlxdWUgdGhhdCBwYXJ0aWFsbHkKcHVzaGVzIGFnZ3Jl Z2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemVzIGl0IG9uY2UgYWxsIHRoZQpyZWxhdGlv bnMgYXJlIGpvaW5lZC4gIEVhZ2VyIGFnZ3JlZ2F0aW9uIG1heSByZWR1Y2UgdGhlIG51bWJlciBv ZgppbnB1dCByb3dzIHRvIHRoZSBqb2luIGFuZCB0aHVzIGNvdWxkIHJlc3VsdCBpbiBhIGJldHRl ciBvdmVyYWxsIHBsYW4uCgpJbiB0aGUgY3VycmVudCBwbGFubmVyIGFyY2hpdGVjdHVyZSwgdGhl IHNlcGFyYXRpb24gYmV0d2VlbiB0aGUKc2Nhbi9qb2luIHBsYW5uaW5nIHBoYXNlIGFuZCB0aGUg cG9zdC1zY2FuL2pvaW4gcGhhc2UgbWVhbnMgdGhhdAphZ2dyZWdhdGlvbiBzdGVwcyBhcmUgbm90 IHZpc2libGUgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGpvaW4gdHJlZSwKbGltaXRpbmcgdGhlIHBs YW5uZXIncyBhYmlsaXR5IHRvIGV4cGxvaXQgYWdncmVnYXRpb24tYXdhcmUKb3B0aW1pemF0aW9u cy4gIFRvIGltcGxlbWVudCBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgY29sbGVjdCBpbmZvcm1hdGlv bgphYm91dCBhZ2dyZWdhdGUgZnVuY3Rpb25zIGluIHRoZSB0YXJnZXRsaXN0IGFuZCBIQVZJTkcg Y2xhdXNlLCBhbG9uZwp3aXRoIGdyb3VwaW5nIGV4cHJlc3Npb25zIGZyb20gdGhlIEdST1VQIEJZ IGNsYXVzZSwgYW5kIHN0b3JlIGl0IGluCnRoZSBQbGFubmVySW5mbyBub2RlLiAgRHVyaW5nIHRo ZSBzY2FuL2pvaW4gcGxhbm5pbmcgcGhhc2UsIHRoaXMKaW5mb3JtYXRpb24gaXMgdXNlZCB0byBl dmFsdWF0ZSBlYWNoIGJhc2Ugb3Igam9pbiByZWxhdGlvbiB0bwpkZXRlcm1pbmUgd2hldGhlciBl YWdlciBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBwbGllZC4gIElmIGFwcGxpY2FibGUsIHdlCmNyZWF0 ZSBhIHNlcGFyYXRlIFJlbE9wdEluZm8sIHJlZmVycmVkIHRvIGFzIGEgZ3JvdXBlZCByZWxhdGlv biwgdG8KcmVwcmVzZW50IHRoZSBwYXJ0aWFsbHktYWdncmVnYXRlZCB2ZXJzaW9uIG9mIHRoZSBy ZWxhdGlvbiBhbmQKZ2VuZXJhdGUgZ3JvdXBlZCBwYXRocyBmb3IgaXQuCgpHcm91cGVkIHJlbGF0 aW9uIHBhdGhzIGNhbiBiZSBnZW5lcmF0ZWQgaW4gdHdvIHdheXMuICBUaGUgZmlyc3QgbWV0aG9k Cmludm9sdmVzIGFkZGluZyBzb3J0ZWQgYW5kIGhhc2hlZCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBh dGhzIG9uIHRvcCBvZgp0aGUgbm9uLWdyb3VwZWQgcGF0aHMuICBUbyBsaW1pdCBwbGFubmluZyB0 aW1lLCB3ZSBvbmx5IGNvbnNpZGVyIHRoZQpjaGVhcGVzdCBvciBzdWl0YWJseS1zb3J0ZWQgbm9u LWdyb3VwZWQgcGF0aHMgaW4gdGhpcyBzdGVwLgpBbHRlcm5hdGl2ZWx5LCBncm91cGVkIHBhdGhz IGNhbiBiZSBnZW5lcmF0ZWQgYnkgam9pbmluZyBhIGdyb3VwZWQKcmVsYXRpb24gd2l0aCBhIG5v bi1ncm91cGVkIHJlbGF0aW9uLiAgSm9pbmluZyB0d28gZ3JvdXBlZCByZWxhdGlvbnMKaXMgY3Vy cmVudGx5IG5vdCBzdXBwb3J0ZWQuCgpUbyBmdXJ0aGVyIGxpbWl0IHBsYW5uaW5nIHRpbWUsIHdl IGN1cnJlbnRseSBhZG9wdCBhIHN0cmF0ZWd5IHdoZXJlCnBhcnRpYWwgYWdncmVnYXRpb24gaXMg cHVzaGVkIG9ubHkgdG8gdGhlIGxvd2VzdCBmZWFzaWJsZSBsZXZlbCBpbiB0aGUKam9pbiB0cmVl IHdoZXJlIGl0IHByb3ZpZGVzIGEgc2lnbmlmaWNhbnQgcmVkdWN0aW9uIGluIHJvdyBjb3VudC4K VGhpcyBzdHJhdGVneSBhbHNvIGhlbHBzIGVuc3VyZSB0aGF0IGFsbCBncm91cGVkIHBhdGhzIGZv ciB0aGUgc2FtZQpncm91cGVkIHJlbGF0aW9uIHByb2R1Y2UgdGhlIHNhbWUgc2V0IG9mIHJvd3Ms IHdoaWNoIGlzIGltcG9ydGFudCB0bwpzdXBwb3J0IGEgZnVuZGFtZW50YWwgYXNzdW1wdGlvbiBv ZiB0aGUgcGxhbm5lci4KCkZvciB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiB0aGF0IGlzIHB1c2hl ZCBkb3duIHRvIGEgbm9uLWFnZ3JlZ2F0ZWQKcmVsYXRpb24sIHdlIG5lZWQgdG8gY29uc2lkZXIg YWxsIGV4cHJlc3Npb25zIGZyb20gdGhpcyByZWxhdGlvbiB0aGF0CmFyZSBpbnZvbHZlZCBpbiB1 cHBlciBqb2luIGNsYXVzZXMgYW5kIGluY2x1ZGUgdGhlbSBpbiB0aGUgZ3JvdXBpbmcKa2V5cywg dXNpbmcgY29tcGF0aWJsZSBvcGVyYXRvcnMuICBUaGlzIGlzIGVzc2VudGlhbCB0byBlbnN1cmUg dGhhdCBhbgphZ2dyZWdhdGVkIHJvdyBmcm9tIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIG1hdGNo ZXMgdGhlIG90aGVyIHNpZGUgb2YKdGhlIGpvaW4gaWYgYW5kIG9ubHkgaWYgZWFjaCByb3cgaW4g dGhlIHBhcnRpYWwgZ3JvdXAgZG9lcy4gIFRoaXMKZW5zdXJlcyB0aGF0IGFsbCByb3dzIHdpdGhp biB0aGUgc2FtZSBwYXJ0aWFsIGdyb3VwIHNoYXJlIHRoZSBzYW1lCiJkZXN0aW55Iiwgd2hpY2gg aXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgY29ycmVjdG5lc3MuCgpPbmUgcmVzdHJpY3Rpb24g aXMgdGhhdCB3ZSBjYW5ub3QgcHVzaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGRvd24gdG8gYQpyZWxh dGlvbiB0aGF0IGlzIGluIHRoZSBudWxsYWJsZSBzaWRlIG9mIGFuIG91dGVyIGpvaW4sIGJlY2F1 c2UgdGhlCk5VTEwtZXh0ZW5kZWQgcm93cyBwcm9kdWNlZCBieSB0aGUgb3V0ZXIgam9pbiB3b3Vs ZCBub3QgYmUgYXZhaWxhYmxlCndoZW4gd2UgcGVyZm9ybSB0aGUgcGFydGlhbCBhZ2dyZWdhdGlv biwgd2hpbGUgd2l0aCBhCm5vbi1lYWdlci1hZ2dyZWdhdGlvbiBwbGFuIHRoZXNlIHJvd3MgYXJl IGF2YWlsYWJsZSBmb3IgdGhlIHRvcC1sZXZlbAphZ2dyZWdhdGlvbi4gIFB1c2hpbmcgcGFydGlh bCBhZ2dyZWdhdGlvbiBpbiB0aGlzIGNhc2UgbWF5IHJlc3VsdCBpbgp0aGUgcm93cyBiZWluZyBn cm91cGVkIGRpZmZlcmVudGx5IHRoYW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5jb3JyZWN0CnZh bHVlcyBmcm9tIHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb25zLgoKSWYgd2UgaGF2ZSBnZW5lcmF0ZWQg YSBncm91cGVkIHJlbGF0aW9uIGZvciB0aGUgdG9wbW9zdCBqb2luIHJlbGF0aW9uLAp3ZSBmaW5h bGl6ZSBpdHMgcGF0aHMgYXQgdGhlIGVuZC4gIFRoZSBmaW5hbCBwYXRocyB3aWxsIGNvbXBldGUg aW4gdGhlCnVzdWFsIHdheSB3aXRoIHBhdGhzIGJ1aWx0IGZyb20gcmVndWxhciBwbGFubmluZy4K ClRoZSBwYXRjaCB3YXMgb3JpZ2luYWxseSBwcm9wb3NlZCBieSBBbnRvbmluIEhvdXNrYSBpbiAy MDE3LiAgVGhpcwpjb21taXQgcmV3b3JrcyB2YXJpb3VzIGltcG9ydGFudCBhc3BlY3RzIGFuZCBy ZXdyaXRlcyBtb3N0IG9mIHRoZQpjdXJyZW50IGNvZGUuICBIb3dldmVyLCB0aGUgb3JpZ2luYWwg cGF0Y2ggYW5kIHJldmlld3Mgd2VyZSB2ZXJ5CnVzZWZ1bC4KCkF1dGhvcjogUmljaGFyZCBHdW8g PGd1b2ZlbmdsaW51eEBnbWFpbC5jb20+CkF1dGhvcjogQW50b25pbiBIb3Vza2EgPGFoQGN5YmVy dGVjLmF0PiAoaW4gYW4gb2xkZXIgdmVyc2lvbikKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxy b2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNh bGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBUZW5kZXIgV2FuZyA8dG5kcndhbmdAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4KUmV2aWV3ZWQt Ynk6IERhdmlkIFJvd2xleSA8ZGdyb3dsZXltbEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBUb21h cyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4gKGluIGFuIG9sZGVyIHZlcnNpb24pClJldmlld2Vk LWJ5OiBBbmR5IEZhbiA8emhpaHVpZmFuMTIxM0AxNjMuY29tPiAoaW4gYW4gb2xkZXIgdmVyc2lv bikKUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBhdC5vc3NAZ21haWwu Y29tPiAoaW4gYW4gb2xkZXIgdmVyc2lvbikKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9DQU1iV3M0OGp6THJQdDFKXzAwWmNQWlhXVVFLYXdRT0ZFOFJPYy1BRGlZcXNxcnBCTndAbWFp bC5nbWFpbC5jb20KLS0tCiAuLi4vcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQgICAgfCAgIDQ5ICstCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAg ICAgICAgfCAgIDMxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUgICAgICAgICAgICAg ICAgICB8ICAxMTAgKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jICAg ICAgICB8ICAgMjEgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgICAg ICAgICB8ICA0NjcgKysrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMg ICAgICAgICB8ICAxOTMgKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5j ICAgICAgICB8ICAzNzAgKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4u YyAgICAgICAgIHwgICAgOSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMg ICAgICAgICAgfCAgMTI0ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZv LmMgICAgICAgfCAgIDUxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyAg ICAgICAgICB8ICA2NTAgKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1l dGVycy5kYXQgICAgIHwgICAxNiArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUgfCAgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAg ICAgICAgICAgICB8ICAxMTcgKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oICAg ICAgICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggICAgICAg ICAgICAgICAgIHwgICAgNCArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaCAgICAg ICAgICAgICAgfCAgICAxICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgu b3V0ICAgICB8ICAgMzIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVn YXRlLm91dCB8IDE3MTQgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvam9pbi5vdXQgICAgICAgICAgICB8ICAgMTIgKy0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9hZ2dyZWdhdGUub3V0ICB8ICAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZWFn ZXJfYWdncmVnYXRlLnNxbCAgICAgIHwgIDM4MCArKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fYWdncmVnYXRlLnNxbCAgfCAgICAyICsKIHNyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgIDMgKwogMjYgZmlsZXMgY2hhbmdlZCwgNDI5MyBp bnNlcnRpb25zKCspLCA3NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCgpkaWZmIC0tZ2l0IGEv Y29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggNmRjMDRlOTE2ZGMu LmY1YTU3YjljYmQ1IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9w b3N0Z3Jlc19mZHcub3V0CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3Rn cmVzX2Zkdy5vdXQKQEAgLTM3MDEsMzAgKzM3MDEsMzMgQEAgc2VsZWN0IGNvdW50KHQxLmMzKSBm cm9tIGZ0MiB0MSBsZWZ0IGpvaW4gZnQyIHQyIG9uICh0MS5jMSA9IHJhbmRvbSgpICogdDIuYzIp OwogLS0gU3VicXVlcnkgaW4gRlJPTSBjbGF1c2UgaGF2aW5nIGFnZ3JlZ2F0ZQogZXhwbGFpbiAo dmVyYm9zZSwgY29zdHMgb2ZmKQogc2VsZWN0IGNvdW50KCopLCB4LmIgZnJvbSBmdDEsIChzZWxl Y3QgYzIgYSwgc3VtKGMxKSBiIGZyb20gZnQxIGdyb3VwIGJ5IGMyKSB4IHdoZXJlIGZ0MS5jMiA9 IHguYSBncm91cCBieSB4LmIgb3JkZXIgYnkgMSwgMjsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgU29ydAotICAgT3V0cHV0OiAoY291bnQoKikpLCB4LmIKLSAgIFNvcnQgS2V5 OiAoY291bnQoKikpLCB4LmIKLSAgIC0+ICBIYXNoQWdncmVnYXRlCi0gICAgICAgICBPdXRwdXQ6 IGNvdW50KCopLCB4LmIKLSAgICAgICAgIEdyb3VwIEtleTogeC5iCi0gICAgICAgICAtPiAgSGFz aCBKb2luCi0gICAgICAgICAgICAgICBPdXRwdXQ6IHguYgotICAgICAgICAgICAgICAgSW5uZXIg VW5pcXVlOiB0cnVlCi0gICAgICAgICAgICAgICBIYXNoIENvbmQ6IChmdDEuYzIgPSB4LmEpCi0g ICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDEKLSAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogZnQxLmMyCi0gICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FM OiBTRUxFQ1QgYzIgRlJPTSAiUyAxIi4iVCAxIgotICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogeC5iLCB4LmEKLSAgICAgICAgICAgICAgICAgICAg IC0+ICBTdWJxdWVyeSBTY2FuIG9uIHgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogeC5iLCB4LmEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxXzEuYzIsIChzdW0o ZnQxXzEuYzEpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiBB Z2dyZWdhdGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAxIi4iVCAx IiBHUk9VUCBCWSAxCi0oMjEgcm93cykKKyAgIE91dHB1dDogKGNvdW50KCopKSwgKHN1bShmdDFf MS5jMSkpCisgICBTb3J0IEtleTogKGNvdW50KCopKSwgKHN1bShmdDFfMS5jMSkpCisgICAtPiAg RmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogY291bnQoKiksIChzdW0o ZnQxXzEuYzEpKQorICAgICAgICAgR3JvdXAgS2V5OiAoc3VtKGZ0MV8xLmMxKSkKKyAgICAgICAg IC0+ICBTb3J0CisgICAgICAgICAgICAgICBPdXRwdXQ6IChzdW0oZnQxXzEuYzEpKSwgKFBBUlRJ QUwgY291bnQoKikpCisgICAgICAgICAgICAgICBTb3J0IEtleTogKHN1bShmdDFfMS5jMSkpCisg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IChzdW0oZnQxXzEuYzEpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6IChmdDFfMS5jMiA9IGZ0MS5jMikKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxXzEu YzIsIChzdW0oZnQxXzEuYzEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25z OiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAxIi4iVCAxIiBH Uk9VUCBCWSAxCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiBmdDEuYzIsIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBmdDEuYzIsIFBBUlRJQUwgY291bnQoKikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogZnQxLmMyCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxLmMyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1Qg YzIgRlJPTSAiUyAxIi4iVCAxIgorKDI0IHJvd3MpCiAKIHNlbGVjdCBjb3VudCgqKSwgeC5iIGZy b20gZnQxLCAoc2VsZWN0IGMyIGEsIHN1bShjMSkgYiBmcm9tIGZ0MSBncm91cCBieSBjMikgeCB3 aGVyZSBmdDEuYzIgPSB4LmEgZ3JvdXAgYnkgeC5iIG9yZGVyIGJ5IDEsIDI7CiAgY291bnQgfCAg IGIgICAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dt bC9jb25maWcuc2dtbAppbmRleCBlOWI0MjBmM2RkYi4uMzllNjU4Yjc4MDggMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK QEAgLTU0NzUsNiArNTQ3NSwyMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9s aXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0i Z3VjLWVuYWJsZS1lYWdlci1hZ2dyZWdhdGUiIHhyZWZsYWJlbD0iZW5hYmxlX2VhZ2VyX2FnZ3Jl Z2F0ZSI+CisgICAgICA8dGVybT48dmFybmFtZT5lbmFibGVfZWFnZXJfYWdncmVnYXRlPC92YXJu YW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxw cmltYXJ5Pjx2YXJuYW1lPmVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU8L3Zhcm5hbWU+IGNvbmZpZ3Vy YXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rl cm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEVuYWJsZXMgb3Ig ZGlzYWJsZXMgdGhlIHF1ZXJ5IHBsYW5uZXIncyBhYmlsaXR5IHRvIHBhcnRpYWxseSBwdXNoCisg ICAgICAgIGFnZ3JlZ2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemUgaXQgb25jZSBhbGwg dGhlIHJlbGF0aW9ucyBhcmUKKyAgICAgICAgam9pbmVkLiBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJh bD5vbjwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAg PC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1nYXRo ZXJtZXJnZSIgeHJlZmxhYmVsPSJlbmFibGVfZ2F0aGVybWVyZ2UiPgogICAgICAgPHRlcm0+PHZh cm5hbWU+ZW5hYmxlX2dhdGhlcm1lcmdlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4p CiAgICAgICA8aW5kZXh0ZXJtPgpAQCAtNjA5NSw2ICs2MTEwLDIyIEBAIEFOWSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWluLWVhZ2VyLWFnZy1ncm91cC1zaXplIiB4cmVmbGFi ZWw9Im1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZSI+CisgICAgICA8dGVybT48dmFybmFtZT5taW5f ZWFnZXJfYWdnX2dyb3VwX3NpemU8L3Zhcm5hbWU+ICg8dHlwZT5mbG9hdGluZyBwb2ludDwvdHlw ZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1pbl9lYWdl cl9hZ2dfZ3JvdXBfc2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1h cnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgU2V0cyB0aGUgbWluaW11bSBhdmVyYWdlIGdyb3VwIHNp emUgcmVxdWlyZWQgdG8gY29uc2lkZXIgYXBwbHlpbmcKKyAgICAgICAgZWFnZXIgYWdncmVnYXRp b24uIFRoaXMgaGVscHMgYXZvaWQgdGhlIG92ZXJoZWFkIG9mIGVhZ2VyCisgICAgICAgIGFnZ3Jl Z2F0aW9uIHdoZW4gaXQgZG9lcyBub3Qgb2ZmZXIgc2lnbmlmaWNhbnQgcm93IGNvdW50IHJlZHVj dGlvbi4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ODwvbGl0ZXJhbD4uCisgICAg ICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAg ICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWppdC1hYm92ZS1jb3N0IiB4cmVmbGFiZWw9ImppdF9h Ym92ZV9jb3N0Ij4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPmppdF9hYm92ZV9jb3N0PC92YXJuYW1l PiAoPHR5cGU+ZmxvYXRpbmcgcG9pbnQ8L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvUkVBRE1FCmluZGV4IDg0MzM2ODA5NmZkLi42YzM1YmFjZWVkYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvUkVB RE1FCkBAIC0xNTAwLDMgKzE1MDAsMTEzIEBAIGJyZWFraW5nIGRvd24gYWdncmVnYXRpb24gb3Ig Z3JvdXBpbmcgb3ZlciBhIHBhcnRpdGlvbmVkIHJlbGF0aW9uIGludG8KIGFnZ3JlZ2F0aW9uIG9y IGdyb3VwaW5nIG92ZXIgaXRzIHBhcnRpdGlvbnMgaXMgY2FsbGVkIHBhcnRpdGlvbndpc2UKIGFn Z3JlZ2F0aW9uLiAgRXNwZWNpYWxseSB3aGVuIHRoZSBwYXJ0aXRpb24ga2V5cyBtYXRjaCB0aGUg R1JPVVAgQlkgY2xhdXNlLAogdGhpcyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiB0 aGUgcmVndWxhciBtZXRob2QuCisKK0VhZ2VyIGFnZ3JlZ2F0aW9uCistLS0tLS0tLS0tLS0tLS0t LQorCitFYWdlciBhZ2dyZWdhdGlvbiBpcyBhIHF1ZXJ5IG9wdGltaXphdGlvbiB0ZWNobmlxdWUg dGhhdCBwYXJ0aWFsbHkKK3B1c2hlcyBhZ2dyZWdhdGlvbiBwYXN0IGEgam9pbiwgYW5kIGZpbmFs aXplcyBpdCBvbmNlIGFsbCB0aGUKK3JlbGF0aW9ucyBhcmUgam9pbmVkLiAgRWFnZXIgYWdncmVn YXRpb24gbWF5IHJlZHVjZSB0aGUgbnVtYmVyIG9mCitpbnB1dCByb3dzIHRvIHRoZSBqb2luIGFu ZCB0aHVzIGNvdWxkIHJlc3VsdCBpbiBhIGJldHRlciBvdmVyYWxsIHBsYW4uCisKK1RvIHByb3Zl IHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGlzIGNvcnJlY3QsIGxldCdzIGZpcnN0IGNvbnNpZGVy IHRoZQorY2FzZSB3aGVyZSBvbmx5IGlubmVyIGpvaW5zIGFyZSBpbnZvbHZlZC4gIEluIHRoaXMg Y2FzZSwgd2UgcGFydGl0aW9uCit0aGUgdGFibGVzIGluIHRoZSBGUk9NIGNsYXVzZSBpbnRvIHR3 byBncm91cHM6IHRob3NlIHRoYXQgY29udGFpbiBhdAorbGVhc3Qgb25lIGFnZ3JlZ2F0aW9uIGNv bHVtbiwgYW5kIHRob3NlIHRoYXQgZG8gbm90IGNvbnRhaW4gYW55CithZ2dyZWdhdGlvbiBjb2x1 bW5zLiAgRWFjaCBncm91cCBjYW4gYmUgdHJlYXRlZCBhcyBhIHNpbmdsZSByZWxhdGlvbgorZm9y bWVkIGJ5IHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aGUgdGFibGVzIHdpdGhpbiB0aGF0IGdy b3VwLgorVGhlcmVmb3JlLCB3aXRob3V0IGxvc3Mgb2YgZ2VuZXJhbGl0eSwgd2UgY2FuIGFzc3Vt ZSB0aGF0IHRoZSBGUk9NCitjbGF1c2UgY29udGFpbnMgZXhhY3RseSB0d28gcmVsYXRpb25zLCBS MSBhbmQgUjIsIHdoZXJlIFIxIHJlcHJlc2VudHMKK3RoZSByZWxhdGlvbiBjb250YWluaW5nIGFs bCBhZ2dyZWdhdGlvbiBjb2x1bW5zLCBhbmQgUjIgcmVwcmVzZW50cyB0aGUKK3JlbGF0aW9uIHdp dGhvdXQgYW55IGFnZ3JlZ2F0aW9uIGNvbHVtbnMuCisKK0xldCB0aGUgcXVlcnkgYmUgb2YgdGhl IGZvcm06CisKK1NFTEVDVCBHLCBBR0coQSkKK0ZST00gUjEgSk9JTiBSMiBPTiBKCitHUk9VUCBC WSBHOworCit3aGVyZSBHIGlzIHRoZSBzZXQgb2YgZ3JvdXBpbmcga2V5cyB0aGF0IG1heSBpbmNs dWRlIGNvbHVtbnMgZnJvbSBSMQorYW5kL29yIFIyOyBBR0coQSkgaXMgYW4gYWdncmVnYXRlIGZ1 bmN0aW9uIG92ZXIgY29sdW1ucyBBIGZyb20gUjE7IEoKK2lzIHRoZSBqb2luIGNvbmRpdGlvbiBi ZXR3ZWVuIFIxIGFuZCBSMi4KKworVGhlIHRyYW5zZm9ybWF0aW9uIG9mIGVhZ2VyIGFnZ3JlZ2F0 aW9uIGlzOgorCisgICAgR1JPVVAgQlkgRywgQUdHKEEpIG9uIChSMSBKT0lOIFIyIE9OIEopCisg ICAgPQorICAgIEdST1VQIEJZIEcsIEFHRyhhZ2dfQSkgb24gKChHUk9VUCBCWSBHMSwgQUdHKEEp IEFTIGFnZ19BIG9uIFIxKSBKT0lOIFIyIE9OIEopCisKK1RoaXMgZXF1aXZhbGVuY2UgaG9sZHMg dW5kZXIgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisxKSBBR0cgaXMgZGVjb21wb3NhYmxl LCBtZWFuaW5nIHRoYXQgaXQgY2FuIGJlIGNvbXB1dGVkIGluIHR3byBzdGFnZXM6CithIHBhcnRp YWwgYWdncmVnYXRpb24gZm9sbG93ZWQgYnkgYSBmaW5hbCBhZ2dyZWdhdGlvbjsKKzIpIFRoZSBz ZXQgRzEgdXNlZCBpbiB0aGUgcHJlLWFnZ3JlZ2F0aW9uIG9mIFIxIGluY2x1ZGVzOgorICAgICog YWxsIGNvbHVtbnMgZnJvbSBSMSB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBncm91cGluZyBrZXlzIEcs IGFuZAorICAgICogYWxsIGNvbHVtbnMgZnJvbSBSMSB0aGF0IGFwcGVhciBpbiB0aGUgam9pbiBj b25kaXRpb24gSi4KKzMpIFRoZSBncm91cGluZyBvcGVyYXRvciBmb3IgYW55IGNvbHVtbiBpbiBH MSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aAordGhlIG9wZXJhdG9yIHVzZWQgZm9yIHRoYXQgY29s dW1uIGluIHRoZSBqb2luIGNvbmRpdGlvbiBKLgorCitTaW5jZSBHMSBpbmNsdWRlcyBhbGwgY29s dW1ucyBmcm9tIFIxIHRoYXQgYXBwZWFyIGluIGVpdGhlciB0aGUKK2dyb3VwaW5nIGtleXMgRyBv ciB0aGUgam9pbiBjb25kaXRpb24gSiwgYWxsIHJvd3Mgd2l0aGluIGVhY2ggcGFydGlhbAorZ3Jv dXAgaGF2ZSBpZGVudGljYWwgdmFsdWVzIGZvciBib3RoIHRoZSBncm91cGluZyBrZXlzIGFuZCB0 aGUKK2pvaW4tcmVsZXZhbnQgY29sdW1ucyBmcm9tIFIxLCBhc3N1bWluZyBjb21wYXRpYmxlIG9w ZXJhdG9ycyBhcmUgdXNlZC4KK0FzIGEgcmVzdWx0LCB0aGUgcm93cyB3aXRoaW4gYSBwYXJ0aWFs IGdyb3VwIGFyZSBpbmRpc3Rpbmd1aXNoYWJsZSBpbgordGVybXMgb2YgdGhlaXIgY29udHJpYnV0 aW9uIHRvIHRoZSBhZ2dyZWdhdGlvbiBhbmQgdGhlaXIgYmVoYXZpb3IgaW4KK3RoZSBqb2luLiAg VGhpcyBlbnN1cmVzIHRoYXQgYWxsIHJvd3MgaW4gdGhlIHNhbWUgcGFydGlhbCBncm91cCBzaGFy ZQordGhlIHNhbWUgImRlc3RpbnkiOiB0aGV5IGVpdGhlciBhbGwgbWF0Y2ggb3IgYWxsIGZhaWwg dG8gbWF0Y2ggYSBnaXZlbgorcm93IGluIFIyLiAgQmVjYXVzZSB0aGUgYWdncmVnYXRlIGZ1bmN0 aW9uIEFHRyBpcyBkZWNvbXBvc2FibGUsCithZ2dyZWdhdGluZyB0aGUgcGFydGlhbCByZXN1bHRz IGFmdGVyIHRoZSBqb2luIHlpZWxkcyB0aGUgc2FtZSBmaW5hbAorcmVzdWx0IGFzIGFnZ3JlZ2F0 aW5nIGFmdGVyIHRoZSBmdWxsIGpvaW4sIHRoZXJlYnkgcHJlc2VydmluZyBxdWVyeQorc2VtYW50 aWNzLiAgUS5FLkQuCisKK0luIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGFyZSBhbnkgb3V0ZXIgam9p bnMsIHRoZSBzaXR1YXRpb24gYmVjb21lcworbW9yZSBjb21wbGV4IGR1ZSB0byBqb2luIG9yZGVy IGNvbnN0cmFpbnRzIGFuZCB0aGUgc2VtYW50aWNzIG9mCitudWxsLWV4dGVuc2lvbiBpbiBvdXRl ciBqb2lucy4gIElmIHRoZSByZWxhdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0CitvbmUgYWdn cmVnYXRpb24gY29sdW1uIGNhbm5vdCBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlIHJlbGF0aW9uIGJl Y2F1c2UKK29mIHRoZSBqb2luIG9yZGVyIGNvbnN0cmFpbnRzLCBwYXJ0aWFsIGFnZ3JlZ2F0aW9u IHBhdGhzIHdpbGwgbm90IGJlCitnZW5lcmF0ZWQsIGFuZCB0aHVzIHRoZSB0cmFuc2Zvcm1hdGlv biBpcyBub3QgYXBwbGljYWJsZS4gIE90aGVyd2lzZSwKK2xldCBSMSBiZSB0aGUgcmVsYXRpb24g Y29udGFpbmluZyBhbGwgYWdncmVnYXRpb24gY29sdW1ucywgYW5kIFIyLCBSMywKKy4uLiBiZSB0 aGUgcmVtYWluaW5nIHJlbGF0aW9ucy4gIEZyb20gdGhlIGlubmVyIGpvaW4gY2FzZSwgdW5kZXIg dGhlCithZm9yZW1lbnRpb25lZCBjb25kaXRpb25zLCB3ZSBoYXZlIHRoZSBlcXVpdmFsZW5jZToK KworICAgIEdST1VQIEJZIEcsIEFHRyhBKSBvbiAoUjEgSk9JTiBSMiBKT0lOIFIzIC4uLikKKyAg ICA9CisgICAgR1JPVVAgQlkgRywgQUdHKGFnZ19BKSBvbiAoKEdST1VQIEJZIEcxLCBBR0coQSkg QVMgYWdnX0Egb24gUjEpIEpPSU4gUjIgSk9JTiBSMyAuLi4pCisKK1RvIHByZXNlcnZlIGNvcnJl Y3RuZXNzIHdoZW4gb3V0ZXIgam9pbnMgYXJlIGludm9sdmVkLCB3ZSByZXF1aXJlIGFuCithZGRp dGlvbmFsIGNvbmRpdGlvbjoKKworNCkgUjEgbXVzdCBub3QgYmUgb24gdGhlIG51bGxhYmxlIHNp ZGUgb2YgYW55IG91dGVyIGpvaW4uCisKK1RoaXMgY29uZGl0aW9uIGVuc3VyZXMgdGhhdCBwYXJ0 aWFsIGFnZ3JlZ2F0aW9uIG92ZXIgUjEgZG9lcyBub3QKK3N1cHByZXNzIGFueSBudWxsLWV4dGVu ZGVkIHJvd3MgdGhhdCB3b3VsZCBiZSBpbnRyb2R1Y2VkIGJ5IG91dGVyCitqb2lucy4gIElmIFIx IGlzIG9uIHRoZSBudWxsYWJsZSBzaWRlIG9mIGFuIG91dGVyIGpvaW4sIHRoZQorTlVMTC1leHRl bmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRlciBqb2luIHdvdWxkIG5vdCBiZSBhdmFpbGFi bGUKK3doZW4gd2UgcGVyZm9ybSB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiwgd2hpbGUgd2l0aCBh Citub24tZWFnZXItYWdncmVnYXRpb24gcGxhbiB0aGVzZSByb3dzIGFyZSBhdmFpbGFibGUgZm9y IHRoZSB0b3AtbGV2ZWwKK2FnZ3JlZ2F0aW9uLiAgUHVzaGluZyBwYXJ0aWFsIGFnZ3JlZ2F0aW9u IGluIHRoaXMgY2FzZSBtYXkgcmVzdWx0IGluCit0aGUgcm93cyBiZWluZyBncm91cGVkIGRpZmZl cmVudGx5IHRoYW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5jb3JyZWN0Cit2YWx1ZXMgZnJvbSB0 aGUgYWdncmVnYXRlIGZ1bmN0aW9ucy4KKworRHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhl IGpvaW4gdHJlZSwgd2UgZXZhbHVhdGUgZWFjaCBiYXNlIG9yCitqb2luIHJlbGF0aW9uIHRvIGRl dGVybWluZSBpZiBlYWdlciBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBwbGllZC4gIElmCitmZWFzaWJs ZSwgd2UgY3JlYXRlIGEgc2VwYXJhdGUgUmVsT3B0SW5mbyBjYWxsZWQgYSAiZ3JvdXBlZCByZWxh dGlvbiIKK2FuZCBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGJ5IGFkZGluZyBzb3J0ZWQgYW5kIGhh c2hlZCBwYXJ0aWFsCithZ2dyZWdhdGlvbiBwYXRocyBvbiB0b3Agb2YgdGhlIG5vbi1ncm91cGVk IHBhdGhzLiAgVG8gbGltaXQgcGxhbm5pbmcKK3RpbWUsIHdlIGNvbnNpZGVyIG9ubHkgdGhlIGNo ZWFwZXN0IG9yIHN1aXRhYmx5LXNvcnRlZCBub24tZ3JvdXBlZAorcGF0aHMgaW4gdGhpcyBzdGVw LgorCitBbm90aGVyIHdheSB0byBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGlzIHRvIGpvaW4gYSBn cm91cGVkIHJlbGF0aW9uCit3aXRoIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24uICBKb2luaW5nIHR3 byBncm91cGVkIHJlbGF0aW9ucyBpcworY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisKK1RvIGZ1 cnRoZXIgbGltaXQgcGxhbm5pbmcgdGltZSwgd2UgY3VycmVudGx5IGFkb3B0IGEgc3RyYXRlZ3kg d2hlcmUKK3BhcnRpYWwgYWdncmVnYXRpb24gaXMgcHVzaGVkIG9ubHkgdG8gdGhlIGxvd2VzdCBm ZWFzaWJsZSBsZXZlbCBpbiB0aGUKK2pvaW4gdHJlZSB3aGVyZSBpdCBwcm92aWRlcyBhIHNpZ25p ZmljYW50IHJlZHVjdGlvbiBpbiByb3cgY291bnQuCitUaGlzIHN0cmF0ZWd5IGFsc28gaGVscHMg ZW5zdXJlIHRoYXQgYWxsIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBzYW1lCitncm91cGVkIHJlbGF0 aW9uIHByb2R1Y2UgdGhlIHNhbWUgc2V0IG9mIHJvd3MsIHdoaWNoIGlzIGltcG9ydGFudCB0bwor c3VwcG9ydCBhIGZ1bmRhbWVudGFsIGFzc3VtcHRpb24gb2YgdGhlIHBsYW5uZXIuCisKK0lmIHdl IGhhdmUgZ2VuZXJhdGVkIGEgZ3JvdXBlZCByZWxhdGlvbiBmb3IgdGhlIHRvcG1vc3Qgam9pbiBy ZWxhdGlvbiwKK3dlIG5lZWQgdG8gZmluYWxpemUgaXRzIHBhdGhzIGF0IHRoZSBlbmQuICBUaGUg ZmluYWwgcGF0aHMgd2lsbAorY29tcGV0ZSBpbiB0aGUgdXN1YWwgd2F5IHdpdGggcGF0aHMgYnVp bHQgZnJvbSByZWd1bGFyIHBsYW5uaW5nLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL2dlcW8vZ2Vxb19ldmFsLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2 YWwuYwppbmRleCBmMDdkMWRjOGFjNi4uZTM5YzVkYTYzZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9nZXFvL2dlcW9fZXZhbC5jCkBAIC0yNjQsNiArMjY0LDkgQEAgbWVyZ2VfY2x1bXAoUGxhbm5l ckluZm8gKnJvb3QsIExpc3QgKmNsdW1wcywgQ2x1bXAgKm5ld19jbHVtcCwgaW50IG51bV9nZW5l LAogCQkJLyogS2VlcCBzZWFyY2hpbmcgaWYgam9pbiBvcmRlciBpcyBub3QgdmFsaWQgKi8KIAkJ CWlmIChqb2lucmVsKQogCQkJeworCQkJCWJvb2wJCWlzX3RvcF9yZWwgPSBibXNfZXF1YWwoam9p bnJlbC0+cmVsaWRzLAorCQkJCQkJCQkJCQkJICAgcm9vdC0+YWxsX3F1ZXJ5X3JlbHMpOworCiAJ CQkJLyogQ3JlYXRlIHBhdGhzIGZvciBwYXJ0aXRpb253aXNlIGpvaW5zLiAqLwogCQkJCWdlbmVy YXRlX3BhcnRpdGlvbndpc2Vfam9pbl9wYXRocyhyb290LCBqb2lucmVsKTsKIApAQCAtMjczLDEy ICsyNzYsMjggQEAgbWVyZ2VfY2x1bXAoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsdW1wcywg Q2x1bXAgKm5ld19jbHVtcCwgaW50IG51bV9nZW5lLAogCQkJCSAqIHJlbCBvbmNlIHdlIGtub3cg dGhlIGZpbmFsIHRhcmdldGxpc3QgKHNlZQogCQkJCSAqIGdyb3VwaW5nX3BsYW5uZXIpLgogCQkJ CSAqLwotCQkJCWlmICghYm1zX2VxdWFsKGpvaW5yZWwtPnJlbGlkcywgcm9vdC0+YWxsX3F1ZXJ5 X3JlbHMpKQorCQkJCWlmICghaXNfdG9wX3JlbCkKIAkJCQkJZ2VuZXJhdGVfdXNlZnVsX2dhdGhl cl9wYXRocyhyb290LCBqb2lucmVsLCBmYWxzZSk7CiAKIAkJCQkvKiBGaW5kIGFuZCBzYXZlIHRo ZSBjaGVhcGVzdCBwYXRocyBmb3IgdGhpcyBqb2lucmVsICovCiAJCQkJc2V0X2NoZWFwZXN0KGpv aW5yZWwpOwogCisJCQkJLyoKKwkJCQkgKiBFeGNlcHQgZm9yIHRoZSB0b3Btb3N0IHNjYW4vam9p biByZWwsIGNvbnNpZGVyIGdlbmVyYXRpbmcKKwkJCQkgKiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBh dGhzIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiBvbiB0b3AKKwkJCQkgKiBvZiB0aGUgcGF0aHMg b2YgdGhpcyByZWwuICBBZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nCisJCQkJICogcGF0 aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCQkJ ICovCisJCQkJaWYgKGpvaW5yZWwtPmdyb3VwZWRfcmVsICE9IE5VTEwgJiYgIWlzX3RvcF9yZWwp CisJCQkJeworCQkJCQlSZWxPcHRJbmZvICpncm91cGVkX3JlbCA9IGpvaW5yZWwtPmdyb3VwZWRf cmVsOworCisJCQkJCUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQkJ CWdlbmVyYXRlX2dyb3VwZWRfcGF0aHMocm9vdCwgZ3JvdXBlZF9yZWwsIGpvaW5yZWwpOworCQkJ CQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCQkJCX0KKwogCQkJCS8qIEFic29yYiBuZXcg Y2x1bXAgaW50byBvbGQgKi8KIAkJCQlvbGRfY2x1bXAtPmpvaW5yZWwgPSBqb2lucmVsOwogCQkJ CW9sZF9jbHVtcC0+c2l6ZSArPSBuZXdfY2x1bXAtPnNpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvYWxscGF0aHMuYwppbmRleCBkN2ZmMzZkODliZS4uY2M1NjI1MThiMDQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIm9w dGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCiAjaW5jbHVk ZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcHJlcC5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci90bGlzdC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2Uu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCkBAIC00Nyw2ICs0OCw3IEBACiAjaW5j bHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlw LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc2VsZnVu Y3MuaCIKIAogCiAvKiBCaXRtYXNrIGZsYWdzIGZvciBwdXNoZG93bl9zYWZldHlfaW5mby51bnNh ZmVGbGFncyAqLwpAQCAtNzcsNyArNzksOSBAQCB0eXBlZGVmIGVudW0gcHVzaGRvd25fc2FmZV90 eXBlCiAKIC8qIFRoZXNlIHBhcmFtZXRlcnMgYXJlIHNldCBieSBHVUMgKi8KIGJvb2wJCWVuYWJs ZV9nZXFvID0gZmFsc2U7CS8qIGp1c3QgaW4gY2FzZSBHVUMgZG9lc24ndCBzZXQgaXQgKi8KK2Jv b2wJCWVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgPSB0cnVlOwogaW50CQkJZ2Vxb190aHJlc2hvbGQ7 Citkb3VibGUJCW1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZTsKIGludAkJCW1pbl9wYXJhbGxlbF90 YWJsZV9zY2FuX3NpemU7CiBpbnQJCQltaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplOwogCkBA IC05MCw2ICs5NCw3IEBAIGpvaW5fc2VhcmNoX2hvb2tfdHlwZSBqb2luX3NlYXJjaF9ob29rID0g TlVMTDsKIAogc3RhdGljIHZvaWQgc2V0X2Jhc2VfcmVsX2NvbnNpZGVyX3N0YXJ0dXAoUGxhbm5l ckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0X2Jhc2VfcmVsX3NpemVzKFBsYW5uZXJJbmZv ICpyb290KTsKK3N0YXRpYyB2b2lkIHNldHVwX3NpbXBsZV9ncm91cGVkX3JlbHMoUGxhbm5lcklu Zm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0X2Jhc2VfcmVsX3BhdGhsaXN0cyhQbGFubmVySW5m byAqcm9vdCk7CiBzdGF0aWMgdm9pZCBzZXRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCwKIAkJCQkJCSBJbmRleCBydGksIFJhbmdlVGJsRW50cnkgKnJ0ZSk7CkBA IC0xMTQsNiArMTE5LDcgQEAgc3RhdGljIHZvaWQgc2V0X2FwcGVuZF9yZWxfc2l6ZShQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQlJbmRleCBydGksIFJhbmdlVGJs RW50cnkgKnJ0ZSk7CiBzdGF0aWMgdm9pZCBzZXRfYXBwZW5kX3JlbF9wYXRobGlzdChQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJSW5kZXggcnRpLCBSYW5nZVRi bEVudHJ5ICpydGUpOworc3RhdGljIHZvaWQgc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0KFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpOwogc3RhdGljIHZvaWQgZ2VuZXJhdGVfb3Jk ZXJlZGFwcGVuZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJ CQkJCQkJCSBMaXN0ICpsaXZlX2NoaWxkcmVscywKIAkJCQkJCQkJCQkgTGlzdCAqYWxsX2NoaWxk X3BhdGhrZXlzKTsKQEAgLTE4Miw2ICsxODgsMTIgQEAgbWFrZV9vbmVfcmVsKFBsYW5uZXJJbmZv ICpyb290LCBMaXN0ICpqb2lubGlzdCkKIAkgKi8KIAlzZXRfYmFzZV9yZWxfc2l6ZXMocm9vdCk7 CiAKKwkvKgorCSAqIEJ1aWxkIGdyb3VwZWQgcmVsYXRpb25zIGZvciBzaW1wbGUgcmVscyAoaS5l LiwgYmFzZSBvciAib3RoZXIiIG1lbWJlcgorCSAqIHJlbGF0aW9ucykgd2hlcmUgcG9zc2libGUu CisJICovCisJc2V0dXBfc2ltcGxlX2dyb3VwZWRfcmVscyhyb290KTsKKwogCS8qCiAJICogV2Ug c2hvdWxkIG5vdyBoYXZlIHNpemUgZXN0aW1hdGVzIGZvciBldmVyeSBhY3R1YWwgdGFibGUgaW52 b2x2ZWQgaW4KIAkgKiB0aGUgcXVlcnksIGFuZCB3ZSBhbHNvIGtub3cgd2hpY2ggaWYgYW55IGhh dmUgYmVlbiBkZWxldGVkIGZyb20gdGhlCkBAIC0zMjMsNiArMzM1LDM5IEBAIHNldF9iYXNlX3Jl bF9zaXplcyhQbGFubmVySW5mbyAqcm9vdCkKIAl9CiB9CiAKKy8qCisgKiBzZXR1cF9zaW1wbGVf Z3JvdXBlZF9yZWxzCisgKgkgIEZvciBlYWNoIHNpbXBsZSByZWxhdGlvbiwgYnVpbGQgYSBncm91 cGVkIHNpbXBsZSByZWxhdGlvbiBpZiBlYWdlcgorICoJICBhZ2dyZWdhdGlvbiBpcyBwb3NzaWJs ZSBhbmQgaWYgdGhpcyByZWxhdGlvbiBjYW4gcHJvZHVjZSBncm91cGVkIHBhdGhzLgorICovCitz dGF0aWMgdm9pZAorc2V0dXBfc2ltcGxlX2dyb3VwZWRfcmVscyhQbGFubmVySW5mbyAqcm9vdCkK K3sKKwlJbmRleAkJcnRpOworCisJLyoKKwkgKiBJZiB0aGVyZSBhcmUgbm8gYWdncmVnYXRlIGV4 cHJlc3Npb25zIG9yIGdyb3VwaW5nIGV4cHJlc3Npb25zLCBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9u IGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8KKwlpZiAocm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5J TCB8fAorCQlyb290LT5ncm91cF9leHByX2xpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwlmb3Ig KHJ0aSA9IDE7IHJ0aSA8IHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZTsgcnRpKyspCisJewor CQlSZWxPcHRJbmZvICpyZWwgPSByb290LT5zaW1wbGVfcmVsX2FycmF5W3J0aV07CisKKwkJLyog dGhlcmUgbWF5IGJlIGVtcHR5IHNsb3RzIGNvcnJlc3BvbmRpbmcgdG8gbm9uLWJhc2VyZWwgUlRF cyAqLworCQlpZiAocmVsID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQlBc3NlcnQocmVsLT5y ZWxpZCA9PSBydGkpOwkvKiBzYW5pdHkgY2hlY2sgb24gYXJyYXkgKi8KKwkJQXNzZXJ0KElTX1NJ TVBMRV9SRUwocmVsKSk7IC8qIHNhbml0eSBjaGVjayBvbiByZWwgKi8KKworCQkodm9pZCkgYnVp bGRfc2ltcGxlX2dyb3VwZWRfcmVsKHJvb3QsIHJlbCk7CisJfQorfQorCiAvKgogICogc2V0X2Jh c2VfcmVsX3BhdGhsaXN0cwogICoJICBGaW5kcyBhbGwgcGF0aHMgYXZhaWxhYmxlIGZvciBzY2Fu bmluZyBlYWNoIGJhc2UtcmVsYXRpb24gZW50cnkuCkBAIC01NTksNiArNjA0LDE1IEBAIHNldF9y ZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkvKiBOb3cg ZmluZCB0aGUgY2hlYXBlc3Qgb2YgdGhlIHBhdGhzIGZvciB0aGlzIHJlbCAqLwogCXNldF9jaGVh cGVzdChyZWwpOwogCisJLyoKKwkgKiBJZiBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRoaXMgcmVs IGV4aXN0cywgYnVpbGQgcGFydGlhbCBhZ2dyZWdhdGlvbgorCSAqIHBhdGhzIGZvciBpdC4KKwkg KgorCSAqIE5vdGUgdGhhdCB0aGlzIGNhbiBvbmx5IGhhcHBlbiBhZnRlciB3ZSd2ZSBjYWxsZWQg c2V0X2NoZWFwZXN0KCkgZm9yCisJICogdGhpcyBiYXNlIHJlbCwgYmVjYXVzZSB3ZSBuZWVkIGl0 cyBjaGVhcGVzdCBwYXRocy4KKwkgKi8KKwlzZXRfZ3JvdXBlZF9yZWxfcGF0aGxpc3Qocm9vdCwg cmVsKTsKKwogI2lmZGVmIE9QVElNSVpFUl9ERUJVRwogCXBwcmludChyZWwpOwogI2VuZGlmCkBA IC0xMzA1LDYgKzEzNTksMzUgQEAgc2V0X2FwcGVuZF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlhZGRfcGF0aHNfdG9fYXBwZW5kX3JlbChyb290LCBy ZWwsIGxpdmVfY2hpbGRyZWxzKTsKIH0KIAorLyoKKyAqIHNldF9ncm91cGVkX3JlbF9wYXRobGlz dAorICoJICBJZiBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRoZSBnaXZlbiAncmVsJyBleGlzdHMs IGJ1aWxkIHBhcnRpYWwKKyAqCSAgYWdncmVnYXRpb24gcGF0aHMgZm9yIGl0LgorICovCitzdGF0 aWMgdm9pZAorc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWw7CisKKwkvKgorCSAqIElm IHRoZXJlIGFyZSBubyBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgb3IgZ3JvdXBpbmcgZXhwcmVzc2lv bnMsIGVhZ2VyCisJICogYWdncmVnYXRpb24gaXMgbm90IHBvc3NpYmxlLgorCSAqLworCWlmIChy b290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMIHx8CisJCXJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9 PSBOSUwpCisJCXJldHVybjsKKworCS8qIEFkZCBwYXRocyB0byB0aGUgZ3JvdXBlZCBiYXNlIHJl bGF0aW9uIGlmIG9uZSBleGlzdHMuICovCisJZ3JvdXBlZF9yZWwgPSByZWwtPmdyb3VwZWRfcmVs OworCWlmIChncm91cGVkX3JlbCkKKwl7CisJCUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVk X3JlbCkpOworCisJCWdlbmVyYXRlX2dyb3VwZWRfcGF0aHMocm9vdCwgZ3JvdXBlZF9yZWwsIHJl bCk7CisJCXNldF9jaGVhcGVzdChncm91cGVkX3JlbCk7CisJfQorfQorCiAKIC8qCiAgKiBhZGRf cGF0aHNfdG9fYXBwZW5kX3JlbApAQCAtMzMzMiw2ICszNDE1LDM0NSBAQCBnZW5lcmF0ZV91c2Vm dWxfZ2F0aGVyX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsIGJvb2wg b3ZlcnJpZGVfcgogCX0KIH0KIAorLyoKKyAqIGdlbmVyYXRlX2dyb3VwZWRfcGF0aHMKKyAqCQlH ZW5lcmF0ZSBwYXRocyBmb3IgYSBncm91cGVkIHJlbGF0aW9uIGJ5IGFkZGluZyBzb3J0ZWQgYW5k IGhhc2hlZAorICoJCXBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMgb24gdG9wIG9mIHBhdGhzIG9m IHRoZSB1bmdyb3VwZWQgcmVsYXRpb24uCisgKgorICogVGhlIGluZm9ybWF0aW9uIG5lZWRlZCBp cyBwcm92aWRlZCBieSB0aGUgUmVsQWdnSW5mbyBzdHJ1Y3R1cmUgc3RvcmVkIGluCisgKiAiZ3Jv dXBlZF9yZWwiLgorICovCit2b2lkCitnZW5lcmF0ZV9ncm91cGVkX3BhdGhzKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKKwkJCQkJICAgUmVsT3B0SW5mbyAqcmVs KQoreworCVJlbEFnZ0luZm8gKmFnZ19pbmZvID0gZ3JvdXBlZF9yZWwtPmFnZ19pbmZvOworCUFn Z0NsYXVzZUNvc3RzIGFnZ19jb3N0czsKKwlib29sCQljYW5faGFzaDsKKwlib29sCQljYW5fc29y dDsKKwlQYXRoCSAgICpjaGVhcGVzdF90b3RhbF9wYXRoID0gTlVMTDsKKwlQYXRoCSAgICpjaGVh cGVzdF9wYXJ0aWFsX3BhdGggPSBOVUxMOworCWRvdWJsZQkJZE51bUdyb3VwcyA9IDA7CisJZG91 YmxlCQlkTnVtUGFydGlhbEdyb3VwcyA9IDA7CisJTGlzdAkgICAqZ3JvdXBfcGF0aGtleXMgPSBO SUw7CisKKwlpZiAoSVNfRFVNTVlfUkVMKHJlbCkpCisJeworCQltYXJrX2R1bW15X3JlbChncm91 cGVkX3JlbCk7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIFdlIHB1c2ggcGFydGlhbCBhZ2dy ZWdhdGlvbiBvbmx5IHRvIHRoZSBsb3dlc3QgcG9zc2libGUgbGV2ZWwgaW4gdGhlCisJICogam9p biB0cmVlIHRoYXQgaXMgZGVlbWVkIHVzZWZ1bC4KKwkgKi8KKwlpZiAoIWJtc19lcXVhbChhZ2df aW5mby0+YXBwbHlfYXQsIHJlbC0+cmVsaWRzKSB8fAorCQkhYWdnX2luZm8tPmFnZ191c2VmdWwp CisJCXJldHVybjsKKworCU1lbVNldCgmYWdnX2Nvc3RzLCAwLCBzaXplb2YoQWdnQ2xhdXNlQ29z dHMpKTsKKwlnZXRfYWdnX2NsYXVzZV9jb3N0cyhyb290LCBBR0dTUExJVF9JTklUSUFMX1NFUklB TCwgJmFnZ19jb3N0cyk7CisKKwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIGl0J3MgcG9zc2li bGUgdG8gcGVyZm9ybSBzb3J0LWJhc2VkIGltcGxlbWVudGF0aW9ucworCSAqIG9mIGdyb3VwaW5n LCBhbmQgZ2VuZXJhdGUgdGhlIHBhdGhrZXlzIHRoYXQgcmVwcmVzZW50IHRoZSBncm91cGluZwor CSAqIHJlcXVpcmVtZW50cyBpbiB0aGF0IGNhc2UuCisJICovCisJY2FuX3NvcnQgPSBncm91cGlu Z19pc19zb3J0YWJsZShhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcyk7CisJaWYgKGNhbl9zb3J0KQor CXsKKwkJUmVsT3B0SW5mbyAqdG9wX2dyb3VwZWRfcmVsOworCQlMaXN0CSAgICp0b3BfZ3JvdXBf dGxpc3Q7CisKKwkJdG9wX2dyb3VwZWRfcmVsID0gSVNfT1RIRVJfUkVMKHJlbCkgPworCQkJcmVs LT50b3BfcGFyZW50LT5ncm91cGVkX3JlbCA6IGdyb3VwZWRfcmVsOworCQl0b3BfZ3JvdXBfdGxp c3QgPQorCQkJbWFrZV90bGlzdF9mcm9tX3BhdGh0YXJnZXQodG9wX2dyb3VwZWRfcmVsLT5hZ2df aW5mby0+dGFyZ2V0KTsKKworCQlncm91cF9wYXRoa2V5cyA9CisJCQltYWtlX3BhdGhrZXlzX2Zv cl9zb3J0Y2xhdXNlcyhyb290LCBhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJCQkg IHRvcF9ncm91cF90bGlzdCk7CisJfQorCisJLyoKKwkgKiBEZXRlcm1pbmUgd2hldGhlciB3ZSBz aG91bGQgY29uc2lkZXIgaGFzaC1iYXNlZCBpbXBsZW1lbnRhdGlvbnMgb2YKKwkgKiBncm91cGlu Zy4KKwkgKi8KKwlBc3NlcnQocm9vdC0+bnVtT3JkZXJlZEFnZ3MgPT0gMCk7CisJY2FuX2hhc2gg PSAoYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMgIT0gTklMICYmCisJCQkJZ3JvdXBpbmdfaXNfaGFz aGFibGUoYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMpKTsKKworCS8qCisJICogQ29uc2lkZXIgd2hl dGhlciB3ZSBzaG91bGQgZ2VuZXJhdGUgcGFydGlhbGx5IGFnZ3JlZ2F0ZWQgbm9uLXBhcnRpYWwK KwkgKiBwYXRocy4gIFdlIGNhbiBvbmx5IGRvIHRoaXMgaWYgd2UgaGF2ZSBhIG5vbi1wYXJ0aWFs IHBhdGguCisJICovCisJaWYgKHJlbC0+cGF0aGxpc3QgIT0gTklMKQorCXsKKwkJY2hlYXBlc3Rf dG90YWxfcGF0aCA9IHJlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aDsKKwkJQXNzZXJ0KGNoZWFwZXN0 X3RvdGFsX3BhdGggIT0gTlVMTCk7CisJfQorCisJLyoKKwkgKiBJZiBwYXJhbGxlbGlzbSBpcyBw b3NzaWJsZSBmb3IgZ3JvdXBlZF9yZWwsIHRoZW4gd2Ugc2hvdWxkIGNvbnNpZGVyCisJICogZ2Vu ZXJhdGluZyBwYXJ0aWFsbHktZ3JvdXBlZCBwYXJ0aWFsIHBhdGhzLiAgSG93ZXZlciwgaWYgdGhl IHVuZ3JvdXBlZAorCSAqIHJlbCBoYXMgbm8gcGFydGlhbCBwYXRocywgdGhlbiB3ZSBjYW4ndC4K KwkgKi8KKwlpZiAoZ3JvdXBlZF9yZWwtPmNvbnNpZGVyX3BhcmFsbGVsICYmIHJlbC0+cGFydGlh bF9wYXRobGlzdCAhPSBOSUwpCisJeworCQljaGVhcGVzdF9wYXJ0aWFsX3BhdGggPSBsaW5pdGlh bChyZWwtPnBhcnRpYWxfcGF0aGxpc3QpOworCQlBc3NlcnQoY2hlYXBlc3RfcGFydGlhbF9wYXRo ICE9IE5VTEwpOworCX0KKworCS8qIEVzdGltYXRlIG51bWJlciBvZiBwYXJ0aWFsIGdyb3Vwcy4g Ki8KKwlpZiAoY2hlYXBlc3RfdG90YWxfcGF0aCAhPSBOVUxMKQorCQlkTnVtR3JvdXBzID0gZXN0 aW1hdGVfbnVtX2dyb3Vwcyhyb290LAorCQkJCQkJCQkJCSBhZ2dfaW5mby0+Z3JvdXBfZXhwcnMs CisJCQkJCQkJCQkJIGNoZWFwZXN0X3RvdGFsX3BhdGgtPnJvd3MsCisJCQkJCQkJCQkJIE5VTEws IE5VTEwpOworCWlmIChjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwkJZE51bVBhcnRp YWxHcm91cHMgPSBlc3RpbWF0ZV9udW1fZ3JvdXBzKHJvb3QsCisJCQkJCQkJCQkJCQlhZ2dfaW5m by0+Z3JvdXBfZXhwcnMsCisJCQkJCQkJCQkJCQljaGVhcGVzdF9wYXJ0aWFsX3BhdGgtPnJvd3Ms CisJCQkJCQkJCQkJCQlOVUxMLCBOVUxMKTsKKworCWlmIChjYW5fc29ydCAmJiBjaGVhcGVzdF90 b3RhbF9wYXRoICE9IE5VTEwpCisJeworCQlMaXN0Q2VsbCAgICpsYzsKKworCQkvKgorCQkgKiBV c2UgYW55IGF2YWlsYWJsZSBzdWl0YWJseS1zb3J0ZWQgcGF0aCBhcyBpbnB1dCwgYW5kIGFsc28g Y29uc2lkZXIKKwkJICogc29ydGluZyB0aGUgY2hlYXBlc3QtdG90YWwgcGF0aCBhbmQgaW5jcmVt ZW50YWwgc29ydCBvbiBhbnkgcGF0aHMKKwkJICogd2l0aCBwcmVzb3J0ZWQga2V5cy4KKwkJICoK KwkJICogVG8gc2F2ZSBwbGFubmluZyB0aW1lLCB3ZSBpZ25vcmUgcGFyYW1ldGVyaXplZCBpbnB1 dCBwYXRocyB1bmxlc3MKKwkJICogdGhleSBhcmUgdGhlIGNoZWFwZXN0LXRvdGFsIHBhdGguCisJ CSAqLworCQlmb3JlYWNoKGxjLCByZWwtPnBhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICppbnB1 dF9wYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGg7CisJCQlib29s CQlpc19zb3J0ZWQ7CisJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKKworCQkJLyoKKwkJCSAqIEln bm9yZSBwYXJhbWV0ZXJpemVkIHBhdGhzIHRoYXQgYXJlIG5vdCB0aGUgY2hlYXBlc3QtdG90YWwK KwkJCSAqIHBhdGguCisJCQkgKi8KKwkJCWlmIChpbnB1dF9wYXRoLT5wYXJhbV9pbmZvICYmCisJ CQkJaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF90b3RhbF9wYXRoKQorCQkJCWNvbnRpbnVlOworCisJ CQlpc19zb3J0ZWQgPSBwYXRoa2V5c19jb3VudF9jb250YWluZWRfaW4oZ3JvdXBfcGF0aGtleXMs CisJCQkJCQkJCQkJCQkJaW5wdXRfcGF0aC0+cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJJnByZXNv cnRlZF9rZXlzKTsKKworCQkJLyoKKwkJCSAqIElnbm9yZSBwYXRocyB0aGF0IGFyZSBub3Qgc3Vp dGFibHkgb3IgcGFydGlhbGx5IHNvcnRlZCwgdW5sZXNzCisJCQkgKiB0aGV5IGFyZSB0aGUgY2hl YXBlc3QgdG90YWwgcGF0aCAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMKKwkJCSAqIHdoaWNo IGhhdmUgcHJlc29ydGVkIGtleXMgd2hlbiBpbmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkKS4K KwkJCSAqLworCQkJaWYgKCFpc19zb3J0ZWQgJiYgaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF90b3Rh bF9wYXRoICYmCisJCQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRh bF9zb3J0KSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9y aWdpbmF0ZXMgZnJvbSBhIG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBh d2FyZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRl cworCQkJICogdGhlIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkg Ki8KKwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJ CQkJCQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJ CQkJCQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJ CQl7CisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0 IGFuZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRo ZXJlIGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0 IHdoZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0 ZWRfa2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQ YXRoICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWws CisJCQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGdyb3VwX3BhdGhrZXlzLAorCQkJ CQkJCQkJCQkJCSAtMS4wKTsKKwkJCQllbHNlCisJCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVf aW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVs LAorCQkJCQkJCQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJCQkJCQkJCQkJCSBncm91cF9wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkJCQkgcHJlc29ydGVkX2tleXMsCisJCQkJCQkJCQkJCQkJCQkJIC0x LjApOworCQkJfQorCisJCQkvKgorCQkJICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5H IGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsCisJCQkgKiB0aGUgZmluYWwgdmFsdWUg b2YgdGhlIGFnZ3JlZ2F0ZSBpcyBrbm93bi4KKwkJCSAqLworCQkJcGF0aCA9IChQYXRoICopIGNy ZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJCQlncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJ cGF0aCwKKwkJCQkJCQkJCQkJYWdnX2luZm8tPnRhcmdldCwKKwkJCQkJCQkJCQkJQUdHX1NPUlRF RCwKKwkJCQkJCQkJCQkJQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwsCisJCQkJCQkJCQkJCWFnZ19p bmZvLT5ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJCQlOSUwsCisJCQkJCQkJCQkJCSZhZ2dfY29z dHMsCisJCQkJCQkJCQkJCWROdW1Hcm91cHMpOworCisJCQlhZGRfcGF0aChncm91cGVkX3JlbCwg cGF0aCk7CisJCX0KKwl9CisKKwlpZiAoY2FuX3NvcnQgJiYgY2hlYXBlc3RfcGFydGlhbF9wYXRo ICE9IE5VTEwpCisJeworCQlMaXN0Q2VsbCAgICpsYzsKKworCQkvKiBTaW1pbGFyIHRvIGFib3Zl IGxvZ2ljLCBidXQgZm9yIHBhcnRpYWwgcGF0aHMuICovCisJCWZvcmVhY2gobGMsIHJlbC0+cGFy dGlhbF9wYXRobGlzdCkKKwkJeworCQkJUGF0aAkgICAqaW5wdXRfcGF0aCA9IChQYXRoICopIGxm aXJzdChsYyk7CisJCQlQYXRoCSAgICpwYXRoOworCQkJYm9vbAkJaXNfc29ydGVkOworCQkJaW50 CQkJcHJlc29ydGVkX2tleXM7CisKKwkJCWlzX3NvcnRlZCA9IHBhdGhrZXlzX2NvdW50X2NvbnRh aW5lZF9pbihncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQlpbnB1dF9wYXRoLT5wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkmcHJlc29ydGVkX2tleXMpOworCisJCQkvKgorCQkJICogSWdub3Jl IHBhdGhzIHRoYXQgYXJlIG5vdCBzdWl0YWJseSBvciBwYXJ0aWFsbHkgc29ydGVkLCB1bmxlc3MK KwkJCSAqIHRoZXkgYXJlIHRoZSBjaGVhcGVzdCBwYXJ0aWFsIHBhdGggKG5vIG5lZWQgdG8gZGVh bCB3aXRoIHBhdGhzCisJCQkgKiB3aGljaCBoYXZlIHByZXNvcnRlZCBrZXlzIHdoZW4gaW5jcmVt ZW50YWwgc29ydCBpcyBkaXNhYmxlZCkuCisJCQkgKi8KKwkJCWlmICghaXNfc29ydGVkICYmIGlu cHV0X3BhdGggIT0gY2hlYXBlc3RfcGFydGlhbF9wYXRoICYmCisJCQkJKHByZXNvcnRlZF9rZXlz ID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkKKwkJCQljb250aW51ZTsKKworCQkJ LyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJvbSBhIG5vbi1ncm91cGVkIHJl bGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBhd2FyZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2Ug bXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcworCQkJICogdGhlIGNvcnJlY3QgaW5wdXQgZm9y IHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8KKwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVf cHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJ CQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJCQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0 KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBu ZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFuZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAq IFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJlIGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQg YW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdoZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlz LgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRfa2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVt ZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwK KwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJ CQkJCQkJIGdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCSAtMS4wKTsKKwkJCQllbHNlCisJ CQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCisJ CQkJCQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJCQkJCSBwYXRoLAorCQkJ CQkJCQkJCQkJCQkJCSBncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkJCQkgcHJlc29ydGVk X2tleXMsCisJCQkJCQkJCQkJCQkJCQkJIC0xLjApOworCQkJfQorCisJCQkvKgorCQkJICogcXVh bCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5HIGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVu dGlsCisJCQkgKiB0aGUgZmluYWwgdmFsdWUgb2YgdGhlIGFnZ3JlZ2F0ZSBpcyBrbm93bi4KKwkJ CSAqLworCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJ CQlncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJcGF0aCwKKwkJCQkJCQkJCQkJYWdnX2luZm8tPnRh cmdldCwKKwkJCQkJCQkJCQkJQUdHX1NPUlRFRCwKKwkJCQkJCQkJCQkJQUdHU1BMSVRfSU5JVElB TF9TRVJJQUwsCisJCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJ CQlOSUwsCisJCQkJCQkJCQkJCSZhZ2dfY29zdHMsCisJCQkJCQkJCQkJCWROdW1QYXJ0aWFsR3Jv dXBzKTsKKworCQkJYWRkX3BhcnRpYWxfcGF0aChncm91cGVkX3JlbCwgcGF0aCk7CisJCX0KKwl9 CisKKwkvKgorCSAqIEFkZCBhIHBhcnRpYWxseS1ncm91cGVkIEhhc2hBZ2cgUGF0aCB3aGVyZSBw b3NzaWJsZQorCSAqLworCWlmIChjYW5faGFzaCAmJiBjaGVhcGVzdF90b3RhbF9wYXRoICE9IE5V TEwpCisJeworCQlQYXRoCSAgICpwYXRoOworCisJCS8qCisJCSAqIFNpbmNlIHRoZSBwYXRoIG9y aWdpbmF0ZXMgZnJvbSBhIG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMgbm90CisJCSAqIGF3 YXJlIG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0IHByb3ZpZGVz IHRoZQorCQkgKiBjb3JyZWN0IGlucHV0IGZvciBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLgorCQkgKi8K KwkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0aW9uX3BhdGgocm9vdCwKKwkJCQkJCQkJ CQkJICAgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCSAgIGNoZWFwZXN0X3RvdGFsX3BhdGgsCisJ CQkJCQkJCQkJCSAgIGFnZ19pbmZvLT5hZ2dfaW5wdXQpOworCisJCS8qCisJCSAqIHF1YWwgaXMg TklMIGJlY2F1c2UgdGhlIEhBVklORyBjbGF1c2UgY2Fubm90IGJlIGV2YWx1YXRlZCB1bnRpbCB0 aGUKKwkJICogZmluYWwgdmFsdWUgb2YgdGhlIGFnZ3JlZ2F0ZSBpcyBrbm93bi4KKwkJICovCisJ CXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKKwkJCQkJCQkJCQlncm91cGVk X3JlbCwKKwkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCWFnZ19pbmZvLT50YXJnZXQsCisJCQkJ CQkJCQkJQUdHX0hBU0hFRCwKKwkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKKwkJ CQkJCQkJCQlhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJCQlOSUwsCisJCQkJCQkJ CQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQlkTnVtR3JvdXBzKTsKKworCQlhZGRfcGF0aChncm91 cGVkX3JlbCwgcGF0aCk7CisJfQorCisJLyoKKwkgKiBOb3cgYWRkIGEgcGFydGlhbGx5LWdyb3Vw ZWQgSGFzaEFnZyBwYXJ0aWFsIFBhdGggd2hlcmUgcG9zc2libGUKKwkgKi8KKwlpZiAoY2FuX2hh c2ggJiYgY2hlYXBlc3RfcGFydGlhbF9wYXRoICE9IE5VTEwpCisJeworCQlQYXRoCSAgICpwYXRo OworCisJCS8qCisJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJvbSBhIG5vbi1ncm91 cGVkIHJlbGF0aW9uIHRoYXQgaXMgbm90CisJCSAqIGF3YXJlIG9mIGVhZ2VyIGFnZ3JlZ2F0aW9u LCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0IHByb3ZpZGVzIHRoZQorCQkgKiBjb3JyZWN0IGlucHV0 IGZvciBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLgorCQkgKi8KKwkJcGF0aCA9IChQYXRoICopIGNyZWF0 ZV9wcm9qZWN0aW9uX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJICAgZ3JvdXBlZF9yZWwsCisJCQkJ CQkJCQkJCSAgIGNoZWFwZXN0X3BhcnRpYWxfcGF0aCwKKwkJCQkJCQkJCQkJICAgYWdnX2luZm8t PmFnZ19pbnB1dCk7CisKKwkJLyoKKwkJICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5H IGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsIHRoZQorCQkgKiBmaW5hbCB2YWx1ZSBv ZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkgKi8KKwkJcGF0aCA9IChQYXRoICopIGNyZWF0 ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCXBhdGgs CisJCQkJCQkJCQkJYWdnX2luZm8tPnRhcmdldCwKKwkJCQkJCQkJCQlBR0dfSEFTSEVELAorCQkJ CQkJCQkJCUFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLAorCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91 cF9jbGF1c2VzLAorCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkmYWdnX2Nvc3RzLAorCQkJCQkJ CQkJCWROdW1QYXJ0aWFsR3JvdXBzKTsKKworCQlhZGRfcGFydGlhbF9wYXRoKGdyb3VwZWRfcmVs LCBwYXRoKTsKKwl9Cit9CisKIC8qCiAgKiBtYWtlX3JlbF9mcm9tX2pvaW5saXN0CiAgKgkgIEJ1 aWxkIGFjY2VzcyBwYXRocyB1c2luZyBhICJqb2lubGlzdCIgdG8gZ3VpZGUgdGhlIGpvaW4gcGF0 aCBzZWFyY2guCkBAIC0zNDkxLDExICszOTEzLDE5IEBAIHN0YW5kYXJkX2pvaW5fc2VhcmNoKFBs YW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWxzX25lZWRlZCwgTGlzdCAqaW5pdGlhbF9yZWxzKQog CQkgKgogCQkgKiBBZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzIGZvciB0aGUg am9pbnJlbCwgc28gcnVuCiAJCSAqIHNldF9jaGVhcGVzdCgpLgorCQkgKgorCQkgKiBJbiBhZGRp dGlvbiwgd2UgYWxzbyBydW4gZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocygpIGZvciB0aGUgZ3JvdXBl ZAorCQkgKiByZWxhdGlvbiBvZiBlYWNoIGp1c3QtcHJvY2Vzc2VkIGpvaW5yZWwsIGFuZCBydW4g c2V0X2NoZWFwZXN0KCkgZm9yCisJCSAqIHRoZSBncm91cGVkIHJlbGF0aW9uIGFmdGVyd2FyZHMu CiAJCSAqLwogCQlmb3JlYWNoKGxjLCByb290LT5qb2luX3JlbF9sZXZlbFtsZXZdKQogCQl7CisJ CQlib29sCQlpc190b3BfcmVsOworCiAJCQlyZWwgPSAoUmVsT3B0SW5mbyAqKSBsZmlyc3QobGMp OwogCisJCQlpc190b3BfcmVsID0gYm1zX2VxdWFsKHJlbC0+cmVsaWRzLCByb290LT5hbGxfcXVl cnlfcmVscyk7CisKIAkJCS8qIENyZWF0ZSBwYXRocyBmb3IgcGFydGl0aW9ud2lzZSBqb2lucy4g Ki8KIAkJCWdlbmVyYXRlX3BhcnRpdGlvbndpc2Vfam9pbl9wYXRocyhyb290LCByZWwpOwogCkBA IC0zNTA1LDEyICszOTM1LDI4IEBAIHN0YW5kYXJkX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpy b290LCBpbnQgbGV2ZWxzX25lZWRlZCwgTGlzdCAqaW5pdGlhbF9yZWxzKQogCQkJICogb25jZSB3 ZSBrbm93IHRoZSBmaW5hbCB0YXJnZXRsaXN0IChzZWUgZ3JvdXBpbmdfcGxhbm5lcidzIGFuZAog CQkJICogaXRzIGNhbGwgdG8gYXBwbHlfc2NhbmpvaW5fdGFyZ2V0X3RvX3BhdGhzKS4KIAkJCSAq LwotCQkJaWYgKCFibXNfZXF1YWwocmVsLT5yZWxpZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkK KwkJCWlmICghaXNfdG9wX3JlbCkKIAkJCQlnZW5lcmF0ZV91c2VmdWxfZ2F0aGVyX3BhdGhzKHJv b3QsIHJlbCwgZmFsc2UpOwogCiAJCQkvKiBGaW5kIGFuZCBzYXZlIHRoZSBjaGVhcGVzdCBwYXRo cyBmb3IgdGhpcyByZWwgKi8KIAkJCXNldF9jaGVhcGVzdChyZWwpOwogCisJCQkvKgorCQkJICog RXhjZXB0IGZvciB0aGUgdG9wbW9zdCBzY2FuL2pvaW4gcmVsLCBjb25zaWRlciBnZW5lcmF0aW5n CisJCQkgKiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlv biBvbiB0b3Agb2YKKwkJCSAqIHRoZSBwYXRocyBvZiB0aGlzIHJlbC4gIEFmdGVyIHRoYXQsIHdl J3JlIGRvbmUgY3JlYXRpbmcgcGF0aHMKKwkJCSAqIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiwg c28gcnVuIHNldF9jaGVhcGVzdCgpLgorCQkJICovCisJCQlpZiAocmVsLT5ncm91cGVkX3JlbCAh PSBOVUxMICYmICFpc190b3BfcmVsKQorCQkJeworCQkJCVJlbE9wdEluZm8gKmdyb3VwZWRfcmVs ID0gcmVsLT5ncm91cGVkX3JlbDsKKworCQkJCUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVk X3JlbCkpOworCisJCQkJZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhyb290LCBncm91cGVkX3JlbCwg cmVsKTsKKwkJCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCQkJfQorCiAjaWZkZWYgT1BU SU1JWkVSX0RFQlVHCiAJCQlwcHJpbnQocmVsKTsKICNlbmRpZgpAQCAtNDM4MCw2ICs0ODI2LDI1 IEBAIGdlbmVyYXRlX3BhcnRpdGlvbndpc2Vfam9pbl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsKQogCQlpZiAoSVNfRFVNTVlfUkVMKGNoaWxkX3JlbCkpCiAJCQljb250 aW51ZTsKIAorCQkvKgorCQkgKiBFeGNlcHQgZm9yIHRoZSB0b3Btb3N0IHNjYW4vam9pbiByZWws IGNvbnNpZGVyIGdlbmVyYXRpbmcgcGFydGlhbAorCQkgKiBhZ2dyZWdhdGlvbiBwYXRocyBmb3Ig dGhlIGdyb3VwZWQgcmVsYXRpb24gb24gdG9wIG9mIHRoZSBwYXRocyBvZgorCQkgKiB0aGlzIHBh cnRpdGlvbmVkIGNoaWxkLWpvaW4uICBBZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nIHBh dGhzCisJCSAqIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiwgc28gcnVuIHNldF9jaGVhcGVzdCgp LgorCQkgKi8KKwkJaWYgKGNoaWxkX3JlbC0+Z3JvdXBlZF9yZWwgIT0gTlVMTCAmJgorCQkJIWJt c19lcXVhbChJU19PVEhFUl9SRUwocmVsKSA/CisJCQkJCSAgIHJlbC0+dG9wX3BhcmVudF9yZWxp ZHMgOiByZWwtPnJlbGlkcywKKwkJCQkJICAgcm9vdC0+YWxsX3F1ZXJ5X3JlbHMpKQorCQl7CisJ CQlSZWxPcHRJbmZvICpncm91cGVkX3JlbCA9IGNoaWxkX3JlbC0+Z3JvdXBlZF9yZWw7CisKKwkJ CUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQlnZW5lcmF0ZV9ncm91 cGVkX3BhdGhzKHJvb3QsIGdyb3VwZWRfcmVsLCBjaGlsZF9yZWwpOworCQkJc2V0X2NoZWFwZXN0 KGdyb3VwZWRfcmVsKTsKKwkJfQorCiAjaWZkZWYgT1BUSU1JWkVSX0RFQlVHCiAJCXBwcmludChj aGlsZF9yZWwpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9qb2lucmVscy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYwppbmRl eCA1MzUyNDhhYTUyNS4uNDNiODRkMjM5ZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2pvaW5yZWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9p bnJlbHMuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL2FwcGVuZGluZm8uaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvY29zdC5o IgogI2luY2x1ZGUgIm9wdGltaXplci9qb2luaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9w YXRobm9kZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgpAQCAtMzYsNiArMzcsOSBA QCBzdGF0aWMgYm9vbCBoYXNfbGVnYWxfam9pbmNsYXVzZShQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsKTsKIHN0YXRpYyBib29sIHJlc3RyaWN0aW9uX2lzX2NvbnN0YW50X2ZhbHNl KExpc3QgKnJlc3RyaWN0bGlzdCwKIAkJCQkJCQkJCQkgIFJlbE9wdEluZm8gKmpvaW5yZWwsCiAJ CQkJCQkJCQkJICBib29sIG9ubHlfcHVzaGVkX2Rvd24pOworc3RhdGljIHZvaWQgbWFrZV9ncm91 cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLAorCQkJCQkJ CQkgIFJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdEluZm8gKmpvaW5yZWwsCisJCQkJCQkJCSAgU3Bl Y2lhbEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3RyaWN0bGlzdCk7CiBzdGF0aWMgdm9pZCBw b3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbDEsCiAJCQkJCQkJCQkJUmVsT3B0SW5mbyAqcmVsMiwgUmVsT3B0SW5mbyAqam9pbnJlbCwK IAkJCQkJCQkJCQlTcGVjaWFsSm9pbkluZm8gKnNqaW5mbywgTGlzdCAqcmVzdHJpY3RsaXN0KTsK QEAgLTc2Miw2ICs3NjYsMTAgQEAgbWFrZV9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsMSwgUmVsT3B0SW5mbyAqcmVsMikKIAkJcmV0dXJuIGpvaW5yZWw7CiAJfQog CisJLyogQnVpbGQgYSBncm91cGVkIGpvaW4gcmVsYXRpb24gZm9yICdqb2lucmVsJyBpZiBwb3Nz aWJsZS4gKi8KKwltYWtlX2dyb3VwZWRfam9pbl9yZWwocm9vdCwgcmVsMSwgcmVsMiwgam9pbnJl bCwgc2ppbmZvLAorCQkJCQkJICByZXN0cmljdGxpc3QpOworCiAJLyogQWRkIHBhdGhzIHRvIHRo ZSBqb2luIHJlbGF0aW9uLiAqLwogCXBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocyhyb290LCBy ZWwxLCByZWwyLCBqb2lucmVsLCBzamluZm8sCiAJCQkJCQkJCXJlc3RyaWN0bGlzdCk7CkBAIC04 NzMsNiArODgxLDE4NiBAQCBhZGRfb3V0ZXJfam9pbnNfdG9fcmVsaWRzKFBsYW5uZXJJbmZvICpy b290LCBSZWxpZHMgaW5wdXRfcmVsaWRzLAogCXJldHVybiBpbnB1dF9yZWxpZHM7CiB9CiAKKy8q CisgKiBtYWtlX2dyb3VwZWRfam9pbl9yZWwKKyAqCSAgQnVpbGQgYSBncm91cGVkIGpvaW4gcmVs YXRpb24gZm9yIHRoZSBnaXZlbiAiam9pbnJlbCIgaWYgZWFnZXIKKyAqCSAgYWdncmVnYXRpb24g aXMgYXBwbGljYWJsZSBhbmQgdGhlIHJlc3VsdGluZyBncm91cGVkIHBhdGhzIGFyZSBjb25zaWRl cmVkCisgKgkgIHVzZWZ1bC4KKyAqCisgKiBUaGVyZSBhcmUgdHdvIHN0cmF0ZWdpZXMgZm9yIGdl bmVyYXRpbmcgZ3JvdXBlZCBwYXRocyBmb3IgYSBqb2luIHJlbGF0aW9uOgorICoKKyAqIDEuIEpv aW4gYSBncm91cGVkIChwYXJ0aWFsbHkgYWdncmVnYXRlZCkgaW5wdXQgcmVsYXRpb24gd2l0aCBh IG5vbi1ncm91cGVkCisgKiBpbnB1dCAoZS5nLiwgQUdHKEIpIEpPSU4gQSkuCisgKgorICogMi4g QXBwbHkgcGFydGlhbCBhZ2dyZWdhdGlvbiAoc29ydGVkIG9yIGhhc2hlZCkgb24gdG9wIG9mIGV4 aXN0aW5nCisgKiBub24tZ3JvdXBlZCBqb2luIHBhdGhzIChlLmcuLCBBR0coQSBKT0lOIEIpKS4K KyAqCisgKiBUbyBsaW1pdCBwbGFubmluZyBlZmZvcnQgYW5kIGF2b2lkIGFuIGV4cGxvc2lvbiBv ZiBhbHRlcm5hdGl2ZXMsIHdlIGFkb3B0IGEKKyAqIHN0cmF0ZWd5IHdoZXJlIHBhcnRpYWwgYWdn cmVnYXRpb24gaXMgb25seSBwdXNoZWQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZQorICogbGV2ZWwg aW4gdGhlIGpvaW4gdHJlZSB0aGF0IGlzIGRlZW1lZCB1c2VmdWwuICBUaGF0IGlzLCBpZiBncm91 cGVkIHBhdGhzIGNhbgorICogYmUgYnVpbHQgdXNpbmcgdGhlIGZpcnN0IHN0cmF0ZWd5LCB3ZSBz a2lwIGNvbnNpZGVyYXRpb24gb2YgdGhlIHNlY29uZAorICogc3RyYXRlZ3kgZm9yIHRoZSBzYW1l IGpvaW4gbGV2ZWwuCisgKgorICogQWRkaXRpb25hbGx5LCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUg bG93ZXN0IHVzZWZ1bCBsZXZlbHMgd2hlcmUgcGFydGlhbAorICogYWdncmVnYXRpb24gY291bGQg YmUgYXBwbGllZCwgc3VjaCBhcyBpbiBhIGpvaW4gdHJlZSB3aXRoIHJlbGF0aW9ucyBBLCBCLAor ICogYW5kIEMgd2hlcmUgYm90aCAiQUdHKEEgSk9JTiBCKSBKT0lOIEMiIGFuZCAiQSBKT0lOIEFH RyhCIEpPSU4gQykiIGFyZSB2YWxpZAorICogcGxhY2VtZW50cywgd2UgY2hvb3NlIG9ubHkgdGhl IGZpcnN0IG9uZSBlbmNvdW50ZXJlZCBkdXJpbmcgam9pbiBzZWFyY2guCisgKiBUaGlzIGF2b2lk cyBnZW5lcmF0aW5nIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBzYW1lIGdyb3VwZWQgcmVsYXRp b24gYmFzZWQKKyAqIG9uIGRpZmZlcmVudCBhZ2dyZWdhdGlvbiBwbGFjZW1lbnRzLgorICoKKyAq IFRoZXNlIGhldXJpc3RpY3MgYWxzbyBlbnN1cmUgdGhhdCBhbGwgZ3JvdXBlZCBwYXRocyBmb3Ig dGhlIHNhbWUgZ3JvdXBlZAorICogcmVsYXRpb24gcHJvZHVjZSB0aGUgc2FtZSBzZXQgb2Ygcm93 cywgd2hpY2ggaXMgYSBiYXNpYyBhc3N1bXB0aW9uIGluIHRoZQorICogcGxhbm5lci4KKyAqLwor c3RhdGljIHZvaWQKK21ha2VfZ3JvdXBlZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsMSwKKwkJCQkJICBSZWxPcHRJbmZvICpyZWwyLCBSZWxPcHRJbmZvICpqb2lu cmVsLAorCQkJCQkgIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLCBMaXN0ICpyZXN0cmljdGxpc3Qp Cit7CisJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWw7CisJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwx OworCVJlbE9wdEluZm8gKmdyb3VwZWRfcmVsMjsKKwlib29sCQlyZWwxX2VtcHR5OworCWJvb2wJ CXJlbDJfZW1wdHk7CisJUmVsaWRzCQlhZ2dfYXBwbHlfYXQ7CisKKwkvKgorCSAqIElmIHRoZXJl IGFyZSBubyBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgb3IgZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGVh Z2VyCisJICogYWdncmVnYXRpb24gaXMgbm90IHBvc3NpYmxlLgorCSAqLworCWlmIChyb290LT5h Z2dfY2xhdXNlX2xpc3QgPT0gTklMIHx8CisJCXJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwp CisJCXJldHVybjsKKworCS8qIFJldHJpZXZlIHRoZSBncm91cGVkIHJlbGF0aW9ucyBmb3IgdGhl IHR3byBpbnB1dCByZWxzICovCisJZ3JvdXBlZF9yZWwxID0gcmVsMS0+Z3JvdXBlZF9yZWw7CisJ Z3JvdXBlZF9yZWwyID0gcmVsMi0+Z3JvdXBlZF9yZWw7CisKKwlyZWwxX2VtcHR5ID0gKGdyb3Vw ZWRfcmVsMSA9PSBOVUxMIHx8IElTX0RVTU1ZX1JFTChncm91cGVkX3JlbDEpKTsKKwlyZWwyX2Vt cHR5ID0gKGdyb3VwZWRfcmVsMiA9PSBOVUxMIHx8IElTX0RVTU1ZX1JFTChncm91cGVkX3JlbDIp KTsKKworCS8qIEZpbmQgb3IgY29uc3RydWN0IGEgZ3JvdXBlZCBqb2lucmVsIGZvciB0aGlzIGpv aW5yZWwgKi8KKwlncm91cGVkX3JlbCA9IGpvaW5yZWwtPmdyb3VwZWRfcmVsOworCWlmIChncm91 cGVkX3JlbCA9PSBOVUxMKQorCXsKKwkJUmVsQWdnSW5mbyAqYWdnX2luZm8gPSBOVUxMOworCisJ CS8qCisJCSAqIFByZXBhcmUgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBjcmVhdGUgZ3JvdXBl ZCBwYXRocyBmb3IgdGhpcworCQkgKiBqb2luIHJlbGF0aW9uLgorCQkgKi8KKwkJYWdnX2luZm8g PSBjcmVhdGVfcmVsX2FnZ19pbmZvKHJvb3QsIGpvaW5yZWwsIHJlbDFfZW1wdHkgPT0gcmVsMl9l bXB0eSk7CisJCWlmIChhZ2dfaW5mbyA9PSBOVUxMKQorCQkJcmV0dXJuOworCisJCS8qCisJCSAq IElmIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiBqb2luIHJlbGF0aW9uIGFyZSBub3QgY29u c2lkZXJlZAorCQkgKiB1c2VmdWwsIGFuZCBubyBncm91cGVkIHBhdGhzIGNhbiBiZSBidWlsdCBi eSBqb2luaW5nIGdyb3VwZWQgaW5wdXQKKwkJICogcmVsYXRpb25zLCBza2lwIGJ1aWxkaW5nIHRo ZSBncm91cGVkIGpvaW4gcmVsYXRpb24uCisJCSAqLworCQlpZiAoIWFnZ19pbmZvLT5hZ2dfdXNl ZnVsICYmCisJCQkocmVsMV9lbXB0eSA9PSByZWwyX2VtcHR5KSkKKwkJCXJldHVybjsKKworCQkv KiBidWlsZCB0aGUgZ3JvdXBlZCByZWxhdGlvbiAqLworCQlncm91cGVkX3JlbCA9IGJ1aWxkX2dy b3VwZWRfcmVsKHJvb3QsIGpvaW5yZWwpOworCQlncm91cGVkX3JlbC0+cmVsdGFyZ2V0ID0gYWdn X2luZm8tPnRhcmdldDsKKworCQlpZiAocmVsMV9lbXB0eSAhPSByZWwyX2VtcHR5KQorCQl7CisJ CQkvKgorCQkJICogSWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgZ3JvdXBlZCBpbnB1dCByZWxhdGlv biwgdGhlbiB3ZSBjYW4KKwkJCSAqIGJ1aWxkIGdyb3VwZWQgcGF0aHMgYnkgam9pbmluZyB0aGUg aW5wdXQgcmVsYXRpb25zLiAgU2V0IHNpemUKKwkJCSAqIGVzdGltYXRlcyBmb3IgdGhlIGdyb3Vw ZWQgam9pbiByZWxhdGlvbiBiYXNlZCBvbiB0aGUgaW5wdXQKKwkJCSAqIHJlbGF0aW9ucywgYW5k IHVwZGF0ZSB0aGUgc2V0IG9mIHJlbGlkcyB3aGVyZSBwYXJ0aWFsCisJCQkgKiBhZ2dyZWdhdGlv biBpcyBhcHBsaWVkIHRvIHRoYXQgb2YgdGhlIGdyb3VwZWQgaW5wdXQgcmVsYXRpb24uCisJCQkg Ki8KKwkJCXNldF9qb2lucmVsX3NpemVfZXN0aW1hdGVzKHJvb3QsIGdyb3VwZWRfcmVsLAorCQkJ CQkJCQkJICAgcmVsMV9lbXB0eSA/IHJlbDEgOiBncm91cGVkX3JlbDEsCisJCQkJCQkJCQkgICBy ZWwyX2VtcHR5ID8gcmVsMiA6IGdyb3VwZWRfcmVsMiwKKwkJCQkJCQkJCSAgIHNqaW5mbywgcmVz dHJpY3RsaXN0KTsKKwkJCWFnZ19pbmZvLT5hcHBseV9hdCA9IHJlbDFfZW1wdHkgPworCQkJCWdy b3VwZWRfcmVsMi0+YWdnX2luZm8tPmFwcGx5X2F0IDoKKwkJCQlncm91cGVkX3JlbDEtPmFnZ19p bmZvLT5hcHBseV9hdDsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBPdGhlcndpc2Us IGdyb3VwZWQgcGF0aHMgY2FuIGJlIGJ1aWx0IGJ5IGFwcGx5aW5nIHBhcnRpYWwKKwkJCSAqIGFn Z3JlZ2F0aW9uIG9uIHRvcCBvZiBleGlzdGluZyBub24tZ3JvdXBlZCBqb2luIHBhdGhzLiAgU2V0 CisJCQkgKiBzaXplIGVzdGltYXRlcyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbiBiYXNl ZCBvbiB0aGUKKwkJCSAqIGVzdGltYXRlZCBudW1iZXIgb2YgZ3JvdXBzLCBhbmQgdHJhY2sgdGhl IHNldCBvZiByZWxpZHMgd2hlcmUKKwkJCSAqIHBhcnRpYWwgYWdncmVnYXRpb24gaXMgYXBwbGll ZC4gIE5vdGUgdGhhdCB0aGVzZSB2YWx1ZXMgbWF5IGJlCisJCQkgKiB1cGRhdGVkIGxhdGVyIGlm IGl0IGlzIGRldGVybWluZWQgdGhhdCBncm91cGVkIHBhdGhzIGNhbiBiZQorCQkJICogY29uc3Ry dWN0ZWQgYnkgam9pbmluZyBvdGhlciBpbnB1dCByZWxhdGlvbnMuCisJCQkgKi8KKwkJCWdyb3Vw ZWRfcmVsLT5yb3dzID0gYWdnX2luZm8tPmdyb3VwZWRfcm93czsKKwkJCWFnZ19pbmZvLT5hcHBs eV9hdCA9IGJtc19jb3B5KGpvaW5yZWwtPnJlbGlkcyk7CisJCX0KKworCQlncm91cGVkX3JlbC0+ YWdnX2luZm8gPSBhZ2dfaW5mbzsKKwkJam9pbnJlbC0+Z3JvdXBlZF9yZWwgPSBncm91cGVkX3Jl bDsKKwl9CisKKwlBc3NlcnQoSVNfR1JPVVBFRF9SRUwoZ3JvdXBlZF9yZWwpKTsKKworCS8qIFdl IG1heSBoYXZlIGFscmVhZHkgcHJvdmVuIHRoaXMgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIHRvIGJl IGR1bW15LiAqLworCWlmIChJU19EVU1NWV9SRUwoZ3JvdXBlZF9yZWwpKQorCQlyZXR1cm47CisK KwkvKgorCSAqIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUncyBubyBncm91cGVkIGlucHV0IHJlbGF0 aW9uLiAgQWxzbywgam9pbmluZyB0d28KKwkgKiBncm91cGVkIHJlbGF0aW9ucyBpcyBub3QgY3Vy cmVudGx5IHN1cHBvcnRlZC4KKwkgKi8KKwlpZiAocmVsMV9lbXB0eSA9PSByZWwyX2VtcHR5KQor CQlyZXR1cm47CisKKwkvKgorCSAqIEdldCB0aGUgc2V0IG9mIHJlbGlkcyB3aGVyZSBwYXJ0aWFs IGFnZ3JlZ2F0aW9uIGlzIGFwcGxpZWQgYW1vbmcgdGhlCisJICogZ2l2ZW4gaW5wdXQgcmVsYXRp b25zLgorCSAqLworCWFnZ19hcHBseV9hdCA9IHJlbDFfZW1wdHkgPworCQlncm91cGVkX3JlbDIt PmFnZ19pbmZvLT5hcHBseV9hdCA6CisJCWdyb3VwZWRfcmVsMS0+YWdnX2luZm8tPmFwcGx5X2F0 OworCisJLyoKKwkgKiBJZiBpdCdzIG5vdCB0aGUgZGVzaWduYXRlZCBsZXZlbCwgc2tpcCBidWls ZGluZyBncm91cGVkIHBhdGhzLgorCSAqCisJICogT25lIGV4Y2VwdGlvbiBpcyB3aGVuIGl0IGlz IGEgc3Vic2V0IG9mIHRoZSBwcmV2aW91c2x5IHJlY29yZGVkIGxldmVsLgorCSAqIEluIHRoYXQg Y2FzZSwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGRlc2lnbmF0ZWQgbGV2ZWwgdG8gdGhpcyBvbmUs IGFuZAorCSAqIGFkanVzdCB0aGUgc2l6ZSBlc3RpbWF0ZXMgZm9yIHRoZSBncm91cGVkIGpvaW4g cmVsYXRpb24gYWNjb3JkaW5nbHkuCisJICogRm9yIGV4YW1wbGUsIHN1cHBvc2UgcGFydGlhbCBh Z2dyZWdhdGlvbiBjYW4gYmUgYXBwbGllZCBvbiB0b3Agb2YgKEIKKwkgKiBKT0lOIEMpLiAgSWYg d2UgZmlyc3QgY29uc3RydWN0IHRoZSBqb2luIGFzICgoQSBKT0lOIEIpIEpPSU4gQyksIHdlJ2QK KwkgKiByZWNvcmQgdGhlIGRlc2lnbmF0ZWQgbGV2ZWwgYXMgaW5jbHVkaW5nIGFsbCB0aHJlZSBy ZWxhdGlvbnMgKEEgQiBDKS4KKwkgKiBMYXRlciwgd2hlbiB3ZSBjb25zaWRlciAoQSBKT0lOIChC IEpPSU4gQykpLCB3ZSBlbmNvdW50ZXIgdGhlIHNtYWxsZXIKKwkgKiAoQiBDKSBqb2luIGxldmVs IGRpcmVjdGx5LiAgU2luY2UgdGhpcyBpcyBhIHN1YnNldCBvZiB0aGUgcHJldmlvdXMKKwkgKiBs ZXZlbCBhbmQgc3RpbGwgdmFsaWQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24sIHdlIHVwZGF0ZSB0 aGUgZGVzaWduYXRlZAorCSAqIGxldmVsIHRvIChCIEMpLCBhbmQgYWRqdXN0IHRoZSBzaXplIGVz dGltYXRlcyBhY2NvcmRpbmdseS4KKwkgKi8KKwlpZiAoIWJtc19lcXVhbChhZ2dfYXBwbHlfYXQs IGdyb3VwZWRfcmVsLT5hZ2dfaW5mby0+YXBwbHlfYXQpKQorCXsKKwkJaWYgKGJtc19pc19zdWJz ZXQoYWdnX2FwcGx5X2F0LCBncm91cGVkX3JlbC0+YWdnX2luZm8tPmFwcGx5X2F0KSkKKwkJewor CQkJLyogQWRqdXN0IHRoZSBzaXplIGVzdGltYXRlcyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxh dGlvbi4gKi8KKwkJCXNldF9qb2lucmVsX3NpemVfZXN0aW1hdGVzKHJvb3QsIGdyb3VwZWRfcmVs LAorCQkJCQkJCQkJICAgcmVsMV9lbXB0eSA/IHJlbDEgOiBncm91cGVkX3JlbDEsCisJCQkJCQkJ CQkgICByZWwyX2VtcHR5ID8gcmVsMiA6IGdyb3VwZWRfcmVsMiwKKwkJCQkJCQkJCSAgIHNqaW5m bywgcmVzdHJpY3RsaXN0KTsKKwkJCWdyb3VwZWRfcmVsLT5hZ2dfaW5mby0+YXBwbHlfYXQgPSBh Z2dfYXBwbHlfYXQ7CisJCX0KKwkJZWxzZQorCQkJcmV0dXJuOworCX0KKworCS8qIE1ha2UgcGF0 aHMgZm9yIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24uICovCisJcG9wdWxhdGVfam9pbnJlbF93 aXRoX3BhdGhzKHJvb3QsCisJCQkJCQkJCXJlbDFfZW1wdHkgPyByZWwxIDogZ3JvdXBlZF9yZWwx LAorCQkJCQkJCQlyZWwyX2VtcHR5ID8gcmVsMiA6IGdyb3VwZWRfcmVsMiwKKwkJCQkJCQkJZ3Jv dXBlZF9yZWwsCisJCQkJCQkJCXNqaW5mbywKKwkJCQkJCQkJcmVzdHJpY3RsaXN0KTsKK30KKwog LyoKICAqIHBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocwogICoJICBBZGQgcGF0aHMgdG8gdGhl IGdpdmVuIGpvaW5yZWwgZm9yIGdpdmVuIHBhaXIgb2Ygam9pbmluZyByZWxhdGlvbnMuIFRoZQpA QCAtMTYxNSw2ICsxODAzLDExIEBAIHRyeV9wYXJ0aXRpb253aXNlX2pvaW4oUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsIFJlbE9wdEluZm8gKnJlbDIsCiAJCQkJCQkgYWRqdXN0 X2NoaWxkX3JlbGlkcyhqb2lucmVsLT5yZWxpZHMsCiAJCQkJCQkJCQkJCSBuYXBwaW5mb3MsIGFw cGluZm9zKSkpOwogCisJCS8qIEJ1aWxkIGEgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGZvciAnY2hp bGRfam9pbnJlbCcgaWYgcG9zc2libGUgKi8KKwkJbWFrZV9ncm91cGVkX2pvaW5fcmVsKHJvb3Qs IGNoaWxkX3JlbDEsIGNoaWxkX3JlbDIsCisJCQkJCQkJICBjaGlsZF9qb2lucmVsLCBjaGlsZF9z amluZm8sCisJCQkJCQkJICBjaGlsZF9yZXN0cmljdGxpc3QpOworCiAJCS8qIEFuZCBtYWtlIHBh dGhzIGZvciB0aGUgY2hpbGQgam9pbiAqLwogCQlwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMo cm9vdCwgY2hpbGRfcmVsMSwgY2hpbGRfcmVsMiwKIAkJCQkJCQkJCWNoaWxkX2pvaW5yZWwsIGNo aWxkX3NqaW5mbywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRz cGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKaW5kZXggM2Uz ZmVjODkyNTIuLmI4ZDFjN2U4OGEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9pbml0c3BsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3Bs YW4uYwpAQCAtMTQsNiArMTQsNyBAQAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2lu Y2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKQEAgLTMxLDYgKzMyLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZv LmgiCiAjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3Jp dGVNYW5pcC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlw Y2FjaGUuaCIKQEAgLTgxLDYgKzgzLDEyIEBAIHR5cGVkZWYgc3RydWN0IEpvaW5UcmVlSXRlbQog fSBKb2luVHJlZUl0ZW07CiAKIAorc3RhdGljIGJvb2wgaXNfcGFydGlhbF9hZ2dfbWVtb3J5X3Jp c2t5KFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lkIGNyZWF0ZV9hZ2dfY2xhdXNlX2lu Zm9zKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lkIGNyZWF0ZV9ncm91cGluZ19leHBy X2luZm9zKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyBFcXVpdmFsZW5jZUNsYXNzICpnZXRf ZWNsYXNzX2Zvcl9zb3J0Z3JvdXBjbGF1c2UoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQkJ CQkJCVNvcnRHcm91cENsYXVzZSAqc2djLAorCQkJCQkJCQkJCQkJCQlFeHByICpleHByKTsKIHN0 YXRpYyB2b2lkIGV4dHJhY3RfbGF0ZXJhbF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpicmVsLAogCQkJCQkJCQkJICAgSW5kZXggcnRpbmRleCk7CiBzdGF0aWMgTGlz dCAqZGVjb25zdHJ1Y3RfcmVjdXJzZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRub2RlLApA QCAtNjI4LDYgKzYzNiwzNjggQEAgcmVtb3ZlX3VzZWxlc3NfZ3JvdXBieV9jb2x1bW5zKFBsYW5u ZXJJbmZvICpyb290KQogCX0KIH0KIAorLyoKKyAqIHNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uCisg KgkgIENoZWNrIGlmIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpY2FibGUsIGFuZCBpZiBzbyBj b2xsZWN0IHN1aXRhYmxlCisgKgkgIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgZ3JvdXBpbmcg ZXhwcmVzc2lvbnMgaW4gdGhlIHF1ZXJ5LgorICovCit2b2lkCitzZXR1cF9lYWdlcl9hZ2dyZWdh dGlvbihQbGFubmVySW5mbyAqcm9vdCkKK3sKKwkvKgorCSAqIERvbid0IGFwcGx5IGVhZ2VyIGFn Z3JlZ2F0aW9uIGlmIGRpc2FibGVkIGJ5IHVzZXIuCisJICovCisJaWYgKCFlbmFibGVfZWFnZXJf YWdncmVnYXRlKQorCQlyZXR1cm47CisKKwkvKgorCSAqIERvbid0IGFwcGx5IGVhZ2VyIGFnZ3Jl Z2F0aW9uIGlmIHRoZXJlIGFyZSBubyBhdmFpbGFibGUgR1JPVVAgQlkKKwkgKiBjbGF1c2VzLgor CSAqLworCWlmICghcm9vdC0+cHJvY2Vzc2VkX2dyb3VwQ2xhdXNlKQorCQlyZXR1cm47CisKKwkv KgorCSAqIEZvciBub3cgd2UgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgZ3JvdXBpbmcgc2V0cy4KKwkg Ki8KKwlpZiAocm9vdC0+cGFyc2UtPmdyb3VwaW5nU2V0cykKKwkJcmV0dXJuOworCisJLyoKKwkg KiBGb3Igbm93IHdlIGRvbid0IHRyeSB0byBzdXBwb3J0IERJU1RJTkNUIG9yIE9SREVSIEJZIGFn Z3JlZ2F0ZXMuCisJICovCisJaWYgKHJvb3QtPm51bU9yZGVyZWRBZ2dzID4gMCkKKwkJcmV0dXJu OworCisJLyoKKwkgKiBJZiB0aGVyZSBhcmUgYW55IGFnZ3JlZ2F0ZXMgdGhhdCBkbyBub3Qgc3Vw cG9ydCBwYXJ0aWFsIG1vZGUsIG9yIGFueQorCSAqIHBhcnRpYWwgYWdncmVnYXRlcyB0aGF0IGFy ZSBub24tc2VyaWFsaXphYmxlLCBkbyBub3QgYXBwbHkgZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbi4K KwkgKi8KKwlpZiAocm9vdC0+aGFzTm9uUGFydGlhbEFnZ3MgfHwgcm9vdC0+aGFzTm9uU2VyaWFs QWdncykKKwkJcmV0dXJuOworCisJLyoKKwkgKiBXZSBkb24ndCB0cnkgdG8gYXBwbHkgZWFnZXIg YWdncmVnYXRpb24gaWYgdGhlcmUgYXJlIHNldC1yZXR1cm5pbmcKKwkgKiBmdW5jdGlvbnMgaW4g dGFyZ2V0bGlzdC4KKwkgKi8KKwlpZiAocm9vdC0+cGFyc2UtPmhhc1RhcmdldFNSRnMpCisJCXJl dHVybjsKKworCS8qCisJICogRWFnZXIgYWdncmVnYXRpb24gb25seSBtYWtlcyBzZW5zZSBpZiB0 aGVyZSBhcmUgbXVsdGlwbGUgYmFzZSByZWxzIGluCisJICogdGhlIHF1ZXJ5LgorCSAqLworCWlm IChibXNfbWVtYmVyc2hpcChyb290LT5hbGxfYmFzZXJlbHMpICE9IEJNU19NVUxUSVBMRSkKKwkJ cmV0dXJuOworCisJLyoKKwkgKiBEb24ndCBhcHBseSBlYWdlciBhZ2dyZWdhdGlvbiBpZiBhbnkg YWdncmVnYXRlIHBvc2VzIGEgcmlzayBvZgorCSAqIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UgZHVy aW5nIHBhcnRpYWwgYWdncmVnYXRpb24uCisJICovCisJaWYgKGlzX3BhcnRpYWxfYWdnX21lbW9y eV9yaXNreShyb290KSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBDb2xsZWN0IGFnZ3JlZ2F0ZSBl eHByZXNzaW9ucyBhbmQgcGxhaW4gVmFycyB0aGF0IGFwcGVhciBpbiB0aGUKKwkgKiB0YXJnZXRs aXN0IGFuZCBoYXZpbmdRdWFsLgorCSAqLworCWNyZWF0ZV9hZ2dfY2xhdXNlX2luZm9zKHJvb3Qp OworCisJLyoKKwkgKiBJZiB0aGVyZSBhcmUgbm8gc3VpdGFibGUgYWdncmVnYXRlIGV4cHJlc3Np b25zLCB3ZSBjYW5ub3QgYXBwbHkgZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlpZiAo cm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBDb2xs ZWN0IGdyb3VwaW5nIGV4cHJlc3Npb25zIHRoYXQgYXBwZWFyIGluIGdyb3VwaW5nIGNsYXVzZXMu CisJICovCisJY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3Mocm9vdCk7Cit9CisKKy8qCisgKiBp c19wYXJ0aWFsX2FnZ19tZW1vcnlfcmlza3kKKyAqCSAgQ2hlY2sgaWYgYW55IGFnZ3JlZ2F0ZSBw b3NlcyBhIHJpc2sgb2YgZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSBkdXJpbmcKKyAqCSAgcGFydGlh bCBhZ2dyZWdhdGlvbi4KKyAqCisgKiBXZSBjaGVjayBpZiBhbnkgYWdncmVnYXRlIGhhcyBhIG5l Z2F0aXZlIGFnZ3RyYW5zc3BhY2UgdmFsdWUsIHdoaWNoCisgKiBpbmRpY2F0ZXMgdGhhdCBpdHMg dHJhbnNpdGlvbiBzdGF0ZSBkYXRhIGNhbiBncm93IHVuYm91bmRlZGx5IGluIHNpemUuCisgKiBB cHBseWluZyBlYWdlciBhZ2dyZWdhdGlvbiBpbiBzdWNoIGNhc2VzIHJpc2tzIGhpZ2ggbWVtb3J5 IHVzYWdlIHNpbmNlCisgKiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHJlc3VsdHMgbWlnaHQgYmUgc3Rv cmVkIGluIGpvaW4gaGFzaCB0YWJsZXMgb3IKKyAqIG1hdGVyaWFsaXplZCBub2Rlcy4KKyAqLwor c3RhdGljIGJvb2wKK2lzX3BhcnRpYWxfYWdnX21lbW9yeV9yaXNreShQbGFubmVySW5mbyAqcm9v dCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIHJvb3QtPmFnZ3RyYW5zaW5m b3MpCisJeworCQlBZ2dUcmFuc0luZm8gKnRyYW5zaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ1RyYW5z SW5mbywgbGMpOworCisJCWlmICh0cmFuc2luZm8tPmFnZ3RyYW5zc3BhY2UgPCAwKQorCQkJcmV0 dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogY3JlYXRlX2FnZ19j bGF1c2VfaW5mb3MKKyAqCSAgU2VhcmNoIHRoZSB0YXJnZXRsaXN0IGFuZCBoYXZpbmdRdWFsIGZv ciBBZ2dyZWZzIGFuZCBwbGFpbiBWYXJzLCBhbmQKKyAqCSAgY3JlYXRlIGFuIEFnZ0NsYXVzZUlu Zm8gZm9yIGVhY2ggQWdncmVmIG5vZGUuCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfYWdnX2Ns YXVzZV9pbmZvcyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlMaXN0CSAgICp0bGlzdF9leHByczsK KwlMaXN0CSAgICphZ2dfY2xhdXNlX2xpc3QgPSBOSUw7CisJTGlzdAkgICAqdGxpc3RfdmFycyA9 IE5JTDsKKwlSZWxpZHMJCWFnZ3JlZ2F0ZV9yZWxpZHMgPSBOVUxMOworCWJvb2wJCWVhZ2VyX2Fn Z19hcHBsaWNhYmxlID0gdHJ1ZTsKKwlMaXN0Q2VsbCAgICpsYzsKKworCUFzc2VydChyb290LT5h Z2dfY2xhdXNlX2xpc3QgPT0gTklMKTsKKwlBc3NlcnQocm9vdC0+dGxpc3RfdmFycyA9PSBOSUwp OworCisJdGxpc3RfZXhwcnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgcm9vdC0+cHJvY2Vz c2VkX3RsaXN0LAorCQkJCQkJCQkgIFBWQ19JTkNMVURFX0FHR1JFR0FURVMgfAorCQkJCQkJCQkg IFBWQ19SRUNVUlNFX1dJTkRPV0ZVTkNTIHwKKwkJCQkJCQkJICBQVkNfUkVDVVJTRV9QTEFDRUhP TERFUlMpOworCisJLyoKKwkgKiBBZ2dyZWdhdGVzIHdpdGhpbiB0aGUgSEFWSU5HIGNsYXVzZSBu ZWVkIHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgc2FtZQorCSAqIHdheSBhcyB0aG9zZSBpbiB0aGUg dGFyZ2V0bGlzdC4gIE5vdGUgdGhhdCBIQVZJTkcgY2FuIGNvbnRhaW4gQWdncmVmcworCSAqIGJ1 dCBub3QgV2luZG93RnVuY3MuCisJICovCisJaWYgKHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsICE9 IE5VTEwpCisJeworCQlMaXN0CSAgICpoYXZpbmdfZXhwcnM7CisKKwkJaGF2aW5nX2V4cHJzID0g cHVsbF92YXJfY2xhdXNlKChOb2RlICopIHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsLAorCQkJCQkJ CQkJICAgUFZDX0lOQ0xVREVfQUdHUkVHQVRFUyB8CisJCQkJCQkJCQkgICBQVkNfUkVDVVJTRV9Q TEFDRUhPTERFUlMpOworCQlpZiAoaGF2aW5nX2V4cHJzICE9IE5JTCkKKwkJeworCQkJdGxpc3Rf ZXhwcnMgPSBsaXN0X2NvbmNhdCh0bGlzdF9leHBycywgaGF2aW5nX2V4cHJzKTsKKwkJCWxpc3Rf ZnJlZShoYXZpbmdfZXhwcnMpOworCQl9CisJfQorCisJZm9yZWFjaChsYywgdGxpc3RfZXhwcnMp CisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKKwkJQWdncmVmCSAg ICphZ2dyZWY7CisJCVJlbGlkcwkJYWdnX2V2YWxfYXQ7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2lu Zm87CisKKwkJLyogRm9yIG5vdyB3ZSBkb24ndCB0cnkgdG8gc3VwcG9ydCBHUk9VUElORygpIGV4 cHJlc3Npb25zICovCisJCWlmIChJc0EoZXhwciwgR3JvdXBpbmdGdW5jKSkKKwkJeworCQkJZWFn ZXJfYWdnX2FwcGxpY2FibGUgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogQ29sbGVj dCBwbGFpbiBWYXJzIGZvciBmdXR1cmUgcmVmZXJlbmNlICovCisJCWlmIChJc0EoZXhwciwgVmFy KSkKKwkJeworCQkJdGxpc3RfdmFycyA9IGxpc3RfYXBwZW5kX3VuaXF1ZSh0bGlzdF92YXJzLCBl eHByKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJYWdncmVmID0gY2FzdE5vZGUoQWdncmVmLCBl eHByKTsKKworCQlBc3NlcnQoYWdncmVmLT5hZ2dvcmRlciA9PSBOSUwpOworCQlBc3NlcnQoYWdn cmVmLT5hZ2dkaXN0aW5jdCA9PSBOSUwpOworCisJCS8qCisJCSAqIElmIHRoZXJlIGFyZSBhbnkg c2VjdXJpdHlRdWFscywgZG8gbm90IHRyeSB0byBhcHBseSBlYWdlcgorCQkgKiBhZ2dyZWdhdGlv biBpZiBhbnkgbm9uLWxlYWtwcm9vZiBhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBwcmVzZW50Lgor CQkgKiBUaGlzIGlzIG92ZXJseSBzdHJpY3QsIGJ1dCBmb3Igbm93Li4uCisJCSAqLworCQlpZiAo cm9vdC0+cXVhbF9zZWN1cml0eV9sZXZlbCA+IDAgJiYKKwkJCSFnZXRfZnVuY19sZWFrcHJvb2Yo YWdncmVmLT5hZ2dmbm9pZCkpCisJCXsKKwkJCWVhZ2VyX2FnZ19hcHBsaWNhYmxlID0gZmFsc2U7 CisJCQlicmVhazsKKwkJfQorCisJCWFnZ19ldmFsX2F0ID0gcHVsbF92YXJub3Mocm9vdCwgKE5v ZGUgKikgYWdncmVmKTsKKworCQkvKgorCQkgKiBJZiBhbGwgYmFzZSByZWxhdGlvbnMgaW4gdGhl IHF1ZXJ5IGFyZSByZWZlcmVuY2VkIGJ5IGFnZ3JlZ2F0ZQorCQkgKiBmdW5jdGlvbnMsIHRoZW4g ZWFnZXIgYWdncmVnYXRpb24gaXMgbm90IGFwcGxpY2FibGUuCisJCSAqLworCQlhZ2dyZWdhdGVf cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGFnZ3JlZ2F0ZV9yZWxpZHMsIGFnZ19ldmFsX2F0KTsK KwkJaWYgKGJtc19pc19zdWJzZXQocm9vdC0+YWxsX2Jhc2VyZWxzLCBhZ2dyZWdhdGVfcmVsaWRz KSkKKwkJeworCQkJZWFnZXJfYWdnX2FwcGxpY2FibGUgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9 CisKKwkJLyogT0ssIGNyZWF0ZSB0aGUgQWdnQ2xhdXNlSW5mbyBub2RlICovCisJCWFjX2luZm8g PSBtYWtlTm9kZShBZ2dDbGF1c2VJbmZvKTsKKwkJYWNfaW5mby0+YWdncmVmID0gYWdncmVmOwor CQlhY19pbmZvLT5hZ2dfZXZhbF9hdCA9IGFnZ19ldmFsX2F0OworCisJCS8qIC4uLiBhbmQgYWRk IGl0IHRvIHRoZSBsaXN0ICovCisJCWFnZ19jbGF1c2VfbGlzdCA9IGxpc3RfYXBwZW5kX3VuaXF1 ZShhZ2dfY2xhdXNlX2xpc3QsIGFjX2luZm8pOworCX0KKworCWxpc3RfZnJlZSh0bGlzdF9leHBy cyk7CisKKwlpZiAoZWFnZXJfYWdnX2FwcGxpY2FibGUpCisJeworCQlyb290LT5hZ2dfY2xhdXNl X2xpc3QgPSBhZ2dfY2xhdXNlX2xpc3Q7CisJCXJvb3QtPnRsaXN0X3ZhcnMgPSB0bGlzdF92YXJz OworCX0KKwllbHNlCisJeworCQlsaXN0X2ZyZWVfZGVlcChhZ2dfY2xhdXNlX2xpc3QpOworCQls aXN0X2ZyZWUodGxpc3RfdmFycyk7CisJfQorfQorCisvKgorICogY3JlYXRlX2dyb3VwaW5nX2V4 cHJfaW5mb3MKKyAqCSAgQ3JlYXRlIGEgR3JvdXBpbmdFeHBySW5mbyBmb3IgZWFjaCBleHByZXNz aW9uIHVzYWJsZSBhcyBncm91cGluZyBrZXkuCisgKgorICogSWYgYW55IGdyb3VwaW5nIGV4cHJl c3Npb24gaXMgbm90IHN1aXRhYmxlLCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHdpdGgKKyAqIHJvb3Qt Pmdyb3VwX2V4cHJfbGlzdCBiZWluZyBOSUwuCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfZ3Jv dXBpbmdfZXhwcl9pbmZvcyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlMaXN0CSAgICpleHBycyA9 IE5JTDsKKwlMaXN0CSAgICpzb3J0Z3JvdXByZWZzID0gTklMOworCUxpc3QJICAgKmVjcyA9IE5J TDsKKwlMaXN0Q2VsbCAgICpsYywKKwkJCSAgICpsYzEsCisJCQkgICAqbGMyLAorCQkJICAgKmxj MzsKKworCUFzc2VydChyb290LT5ncm91cF9leHByX2xpc3QgPT0gTklMKTsKKworCWZvcmVhY2go bGMsIHJvb3QtPnByb2Nlc3NlZF9ncm91cENsYXVzZSkKKwl7CisJCVNvcnRHcm91cENsYXVzZSAq c2djID0gbGZpcnN0X25vZGUoU29ydEdyb3VwQ2xhdXNlLCBsYyk7CisJCVRhcmdldEVudHJ5ICp0 bGUgPSBnZXRfc29ydGdyb3VwY2xhdXNlX3RsZShzZ2MsIHJvb3QtPnByb2Nlc3NlZF90bGlzdCk7 CisJCVR5cGVDYWNoZUVudHJ5ICp0Y2U7CisJCU9pZAkJCWVxdWFsaW1hZ2Vwcm9jOworCisJCUFz c2VydCh0bGUtPnJlc3NvcnRncm91cHJlZiA+IDApOworCisJCS8qCisJCSAqIEZvciBub3cgd2Ug b25seSBzdXBwb3J0IHBsYWluIFZhcnMgYXMgZ3JvdXBpbmcgZXhwcmVzc2lvbnMuCisJCSAqLwor CQlpZiAoIUlzQSh0bGUtPmV4cHIsIFZhcikpCisJCQlyZXR1cm47CisKKwkJLyoKKwkJICogRWFn ZXIgYWdncmVnYXRpb24gaXMgb25seSBwb3NzaWJsZSBpZiBlcXVhbGl0eSBpbXBsaWVzIGltYWdl CisJCSAqIGVxdWFsaXR5IGZvciBlYWNoIGdyb3VwaW5nIGtleS4gIE90aGVyd2lzZSwgcGxhY2lu ZyBrZXlzIHdpdGgKKwkJICogZGlmZmVyZW50IGJ5dGUgaW1hZ2VzIGludG8gdGhlIHNhbWUgZ3Jv dXAgbWF5IHJlc3VsdCBpbiB0aGUgbG9zcyBvZgorCQkgKiBpbmZvcm1hdGlvbiB0aGF0IGNvdWxk IGJlIG5lY2Vzc2FyeSB0byBldmFsdWF0ZSB1cHBlciBxdWFsIGNsYXVzZXMuCisJCSAqCisJCSAq IEZvciBpbnN0YW5jZSwgdGhlIE5VTUVSSUMgZGF0YSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQsIGFz IHZhbHVlcworCQkgKiB0aGF0IGFyZSBjb25zaWRlcmVkIGVxdWFsIGJ5IHRoZSBlcXVhbGl0eSBv cGVyYXRvciAoZS5nLiwgMCBhbmQKKwkJICogMC4wKSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2NhbGVz LgorCQkgKi8KKwkJdGNlID0gbG9va3VwX3R5cGVfY2FjaGUoZXhwclR5cGUoKE5vZGUgKikgdGxl LT5leHByKSwKKwkJCQkJCQkJVFlQRUNBQ0hFX0JUUkVFX09QRkFNSUxZKTsKKwkJaWYgKCFPaWRJ c1ZhbGlkKHRjZS0+YnRyZWVfb3BmKSB8fAorCQkJIU9pZElzVmFsaWQodGNlLT5idHJlZV9vcGlu dHlwZSkpCisJCQlyZXR1cm47CisKKwkJZXF1YWxpbWFnZXByb2MgPSBnZXRfb3BmYW1pbHlfcHJv Yyh0Y2UtPmJ0cmVlX29wZiwKKwkJCQkJCQkJCQkgICB0Y2UtPmJ0cmVlX29waW50eXBlLAorCQkJ CQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQkJICAgQlRFUVVBTElNQUdF X1BST0MpOworCQlpZiAoIU9pZElzVmFsaWQoZXF1YWxpbWFnZXByb2MpIHx8CisJCQkhRGF0dW1H ZXRCb29sKE9pZEZ1bmN0aW9uQ2FsbDFDb2xsKGVxdWFsaW1hZ2Vwcm9jLAorCQkJCQkJCQkJCQkg ICB0Y2UtPnR5cGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bSh0Y2Ut PmJ0cmVlX29waW50eXBlKSkpKQorCQkJcmV0dXJuOworCisJCWV4cHJzID0gbGFwcGVuZChleHBy cywgdGxlLT5leHByKTsKKwkJc29ydGdyb3VwcmVmcyA9IGxhcHBlbmRfaW50KHNvcnRncm91cHJl ZnMsIHRsZS0+cmVzc29ydGdyb3VwcmVmKTsKKwkJZWNzID0gbGFwcGVuZChlY3MsIGdldF9lY2xh c3NfZm9yX3NvcnRncm91cGNsYXVzZShyb290LCBzZ2MsIHRsZS0+ZXhwcikpOworCX0KKworCS8q CisJICogQ29uc3RydWN0IGEgR3JvdXBpbmdFeHBySW5mbyBmb3IgZWFjaCBleHByZXNzaW9uLgor CSAqLworCWZvcnRocmVlKGxjMSwgZXhwcnMsIGxjMiwgc29ydGdyb3VwcmVmcywgbGMzLCBlY3Mp CisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjMSk7CisJCWludAkJCXNv cnRncm91cHJlZiA9IGxmaXJzdF9pbnQobGMyKTsKKwkJRXF1aXZhbGVuY2VDbGFzcyAqZWMgPSAo RXF1aXZhbGVuY2VDbGFzcyAqKSBsZmlyc3QobGMzKTsKKwkJR3JvdXBpbmdFeHBySW5mbyAqZ2Vf aW5mbzsKKworCQlnZV9pbmZvID0gbWFrZU5vZGUoR3JvdXBpbmdFeHBySW5mbyk7CisJCWdlX2lu Zm8tPmV4cHIgPSAoRXhwciAqKSBjb3B5T2JqZWN0KGV4cHIpOworCQlnZV9pbmZvLT5zb3J0Z3Jv dXByZWYgPSBzb3J0Z3JvdXByZWY7CisJCWdlX2luZm8tPmVjID0gZWM7CisKKwkJcm9vdC0+Z3Jv dXBfZXhwcl9saXN0ID0gbGFwcGVuZChyb290LT5ncm91cF9leHByX2xpc3QsIGdlX2luZm8pOwor CX0KK30KKworLyoKKyAqIGdldF9lY2xhc3NfZm9yX3NvcnRncm91cGNsYXVzZQorICoJICBHaXZl biBhIGdyb3VwIGNsYXVzZSBhbmQgYW4gZXhwcmVzc2lvbiwgZmluZCBhbiBleGlzdGluZyBlcXVp dmFsZW5jZQorICoJICBjbGFzcyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGEgbWVtYmVyIG9mOyBy ZXR1cm4gTlVMTCBpZiBub25lLgorICovCitzdGF0aWMgRXF1aXZhbGVuY2VDbGFzcyAqCitnZXRf ZWNsYXNzX2Zvcl9zb3J0Z3JvdXBjbGF1c2UoUGxhbm5lckluZm8gKnJvb3QsIFNvcnRHcm91cENs YXVzZSAqc2djLAorCQkJCQkJCSAgIEV4cHIgKmV4cHIpCit7CisJT2lkCQkJb3BmYW1pbHksCisJ CQkJb3BjaW50eXBlLAorCQkJCWNvbGxhdGlvbjsKKwlDb21wYXJlVHlwZSBjbXB0eXBlOworCU9p ZAkJCWVxdWFsaXR5X29wOworCUxpc3QJICAgKm9wZmFtaWxpZXM7CisKKwkvKiBQdW50IGlmIHRo ZSBncm91cCBjbGF1c2UgaXMgbm90IHNvcnRhYmxlICovCisJaWYgKCFPaWRJc1ZhbGlkKHNnYy0+ c29ydG9wKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBGaW5kIHRoZSBvcGVyYXRvciBpbiBwZ19h bW9wIC0tLSBmYWlsdXJlIHNob3VsZG4ndCBoYXBwZW4gKi8KKwlpZiAoIWdldF9vcmRlcmluZ19v cF9wcm9wZXJ0aWVzKHNnYy0+c29ydG9wLAorCQkJCQkJCQkJJm9wZmFtaWx5LCAmb3BjaW50eXBl LCAmY21wdHlwZSkpCisJCWVsb2coRVJST1IsICJvcGVyYXRvciAldSBpcyBub3QgYSB2YWxpZCBv cmRlcmluZyBvcGVyYXRvciIsCisJCQkgc2djLT5zb3J0b3ApOworCisJLyogQmVjYXVzZSBTb3J0 R3JvdXBDbGF1c2UgZG9lc24ndCBjYXJyeSBjb2xsYXRpb24sIGNvbnN1bHQgdGhlIGV4cHIgKi8K Kwljb2xsYXRpb24gPSBleHByQ29sbGF0aW9uKChOb2RlICopIGV4cHIpOworCisJLyoKKwkgKiBF cXVpdmFsZW5jZUNsYXNzZXMgbmVlZCB0byBjb250YWluIG9wZmFtaWx5IGxpc3RzIGJhc2VkIG9u IHRoZSBmYW1pbHkKKwkgKiBtZW1iZXJzaGlwIG9mIG1lcmdlam9pbmFibGUgZXF1YWxpdHkgb3Bl cmF0b3JzLCB3aGljaCBjb3VsZCBiZWxvbmcgdG8KKwkgKiBtb3JlIHRoYW4gb25lIG9wZmFtaWx5 LiAgU28gd2UgaGF2ZSB0byBsb29rIHVwIHRoZSBvcGZhbWlseSdzIGVxdWFsaXR5CisJICogb3Bl cmF0b3IgYW5kIGdldCBpdHMgbWVtYmVyc2hpcC4KKwkgKi8KKwllcXVhbGl0eV9vcCA9IGdldF9v cGZhbWlseV9tZW1iZXJfZm9yX2NtcHR5cGUob3BmYW1pbHksCisJCQkJCQkJCQkJCQkgIG9wY2lu dHlwZSwKKwkJCQkJCQkJCQkJCSAgb3BjaW50eXBlLAorCQkJCQkJCQkJCQkJICBDT01QQVJFX0VR KTsKKwlpZiAoIU9pZElzVmFsaWQoZXF1YWxpdHlfb3ApKQkvKiBzaG91bGRuJ3QgaGFwcGVuICov CisJCWVsb2coRVJST1IsICJtaXNzaW5nIG9wZXJhdG9yICVkKCV1LCV1KSBpbiBvcGZhbWlseSAl dSIsCisJCQkgQ09NUEFSRV9FUSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIG9wZmFtaWx5KTsKKwlv cGZhbWlsaWVzID0gZ2V0X21lcmdlam9pbl9vcGZhbWlsaWVzKGVxdWFsaXR5X29wKTsKKwlpZiAo IW9wZmFtaWxpZXMpCQkJLyogY2VydGFpbmx5IHNob3VsZCBmaW5kIHNvbWUgKi8KKwkJZWxvZyhF UlJPUiwgImNvdWxkIG5vdCBmaW5kIG9wZmFtaWxpZXMgZm9yIGVxdWFsaXR5IG9wZXJhdG9yICV1 IiwKKwkJCSBlcXVhbGl0eV9vcCk7CisKKwkvKiBOb3cgZmluZCBhIG1hdGNoaW5nIEVxdWl2YWxl bmNlQ2xhc3MgKi8KKwlyZXR1cm4gZ2V0X2VjbGFzc19mb3Jfc29ydF9leHByKHJvb3QsIGV4cHIs IG9wZmFtaWxpZXMsIG9wY2ludHlwZSwKKwkJCQkJCQkJCWNvbGxhdGlvbiwgc2djLT50bGVTb3J0 R3JvdXBSZWYsCisJCQkJCQkJCQlOVUxMLCBmYWxzZSk7Cit9CisKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgogICoKICAqCSAgTEFURVJBTCBSRUZFUkVOQ0VTCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cGxhbm1haW4uYwppbmRleCA1NDY3ZTA5NGNhNy4uZWVmYzQ4NmE1NjYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm1haW4uYwpAQCAtNzYsNiArNzYsOSBAQCBxdWVyeV9wbGFubmVyKFBs YW5uZXJJbmZvICpyb290LAogCXJvb3QtPnBsYWNlaG9sZGVyX2xpc3QgPSBOSUw7CiAJcm9vdC0+ cGxhY2Vob2xkZXJfYXJyYXkgPSBOVUxMOwogCXJvb3QtPnBsYWNlaG9sZGVyX2FycmF5X3NpemUg PSAwOworCXJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9IE5JTDsKKwlyb290LT5ncm91cF9leHByX2xp c3QgPSBOSUw7CisJcm9vdC0+dGxpc3RfdmFycyA9IE5JTDsKIAlyb290LT5ma2V5X2xpc3QgPSBO SUw7CiAJcm9vdC0+aW5pdGlhbF9yZWxzID0gTklMOwogCkBAIC0yNjUsNiArMjY4LDEyIEBAIHF1 ZXJ5X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJICovCiAJZXh0cmFjdF9yZXN0cmljdGlv bl9vcl9jbGF1c2VzKHJvb3QpOwogCisJLyoKKwkgKiBDaGVjayBpZiBlYWdlciBhZ2dyZWdhdGlv biBpcyBhcHBsaWNhYmxlLCBhbmQgaWYgc28sIHNldCB1cAorCSAqIHJvb3QtPmFnZ19jbGF1c2Vf bGlzdCBhbmQgcm9vdC0+Z3JvdXBfZXhwcl9saXN0LgorCSAqLworCXNldHVwX2VhZ2VyX2FnZ3Jl Z2F0aW9uKHJvb3QpOworCiAJLyoKIAkgKiBOb3cgZXhwYW5kIGFwcGVuZHJlbHMgYnkgYWRkaW5n ICJvdGhlcnJlbHMiIGZvciB0aGVpciBjaGlsZHJlbi4gIFdlCiAJICogZGVsYXkgdGhpcyB0byB0 aGUgZW5kIHNvIHRoYXQgd2UgaGF2ZSBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNDFiZDgzNTM0MzAuLjQ2MmM1MzM1 NTg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0yMzIsNyArMjMyLDYg QEAgc3RhdGljIHZvaWQgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJICBSZWxPcHRJbmZvICpwYXJ0aWFs bHlfZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkgIGNvbnN0IEFnZ0NsYXVzZUNvc3RzICphZ2dfY29z dHMsCiAJCQkJCQkJCQkgIGdyb3VwaW5nX3NldHNfZGF0YSAqZ2QsCi0JCQkJCQkJCQkgIGRvdWJs ZSBkTnVtR3JvdXBzLAogCQkJCQkJCQkJICBHcm91cFBhdGhFeHRyYURhdGEgKmV4dHJhKTsKIHN0 YXRpYyBSZWxPcHRJbmZvICpjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkJCSBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKQEAgLTQwMTAs OSArNDAwOSw3IEBAIGNyZWF0ZV9vcmRpbmFyeV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCSAgIEdyb3VwUGF0aEV4dHJhRGF0 YSAqZXh0cmEsCiAJCQkJCQkJICAgUmVsT3B0SW5mbyAqKnBhcnRpYWxseV9ncm91cGVkX3JlbF9w KQogewotCVBhdGgJICAgKmNoZWFwZXN0X3BhdGggPSBpbnB1dF9yZWwtPmNoZWFwZXN0X3RvdGFs X3BhdGg7CiAJUmVsT3B0SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRfcmVsID0gTlVMTDsKLQlkb3Vi bGUJCWROdW1Hcm91cHM7CiAJUGFydGl0aW9ud2lzZUFnZ3JlZ2F0ZVR5cGUgcGF0eXBlID0gUEFS VElUSU9OV0lTRV9BR0dSRUdBVEVfTk9ORTsKIAogCS8qCkBAIC00MDk0LDIzICs0MDkxLDE2IEBA IGNyZWF0ZV9vcmRpbmFyeV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqaW5wdXRfcmVsLAogCiAJLyogR2F0aGVyIGFueSBwYXJ0aWFsbHkgZ3JvdXBlZCBwYXJ0 aWFsIHBhdGhzLiAqLwogCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgJiYgcGFydGlhbGx5X2dy b3VwZWRfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQotCXsKIAkJZ2F0aGVyX2dyb3VwaW5nX3BhdGhz KHJvb3QsIHBhcnRpYWxseV9ncm91cGVkX3JlbCk7Ci0JCXNldF9jaGVhcGVzdChwYXJ0aWFsbHlf Z3JvdXBlZF9yZWwpOwotCX0KIAotCS8qCi0JICogRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3Vwcy4K LQkgKi8KLQlkTnVtR3JvdXBzID0gZ2V0X251bWJlcl9vZl9ncm91cHMocm9vdCwKLQkJCQkJCQkJ CSAgY2hlYXBlc3RfcGF0aC0+cm93cywKLQkJCQkJCQkJCSAgZ2QsCi0JCQkJCQkJCQkgIGV4dHJh LT50YXJnZXRMaXN0KTsKKwkvKiBOb3cgY2hvb3NlIHRoZSBiZXN0IHBhdGgocykgZm9yIHBhcnRp YWxseV9ncm91cGVkX3JlbC4gKi8KKwlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRp YWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCisJCXNldF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwpOwogCiAJLyogQnVpbGQgZmluYWwgZ3JvdXBpbmcgcGF0aHMgKi8KIAlhZGRfcGF0 aHNfdG9fZ3JvdXBpbmdfcmVsKHJvb3QsIGlucHV0X3JlbCwgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJ ICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIGFnZ19jb3N0cywgZ2QsCi0JCQkJCQkJICBkTnVtR3Jv dXBzLCBleHRyYSk7CisJCQkJCQkJICBleHRyYSk7CiAKIAkvKiBHaXZlIGEgaGVscGZ1bCBlcnJv ciBpZiB3ZSBmYWlsZWQgdG8gZmluZCBhbnkgaW1wbGVtZW50YXRpb24gKi8KIAlpZiAoZ3JvdXBl ZF9yZWwtPnBhdGhsaXN0ID09IE5JTCkKQEAgLTcwNTUsMTYgKzcwNDUsNDIgQEAgYWRkX3BhdGhz X3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVs LAogCQkJCQkJICBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKIAkJCQkJCSAgUmVsT3B0SW5mbyAq cGFydGlhbGx5X2dyb3VwZWRfcmVsLAogCQkJCQkJICBjb25zdCBBZ2dDbGF1c2VDb3N0cyAqYWdn X2Nvc3RzLAotCQkJCQkJICBncm91cGluZ19zZXRzX2RhdGEgKmdkLCBkb3VibGUgZE51bUdyb3Vw cywKKwkJCQkJCSAgZ3JvdXBpbmdfc2V0c19kYXRhICpnZCwKIAkJCQkJCSAgR3JvdXBQYXRoRXh0 cmFEYXRhICpleHRyYSkKIHsKIAlRdWVyeQkgICAqcGFyc2UgPSByb290LT5wYXJzZTsKIAlQYXRo CSAgICpjaGVhcGVzdF9wYXRoID0gaW5wdXRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOworCVBh dGgJICAgKmNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVkX3BhdGggPSBOVUxMOwogCUxpc3RDZWxs ICAgKmxjOwogCWJvb2wJCWNhbl9oYXNoID0gKGV4dHJhLT5mbGFncyAmIEdST1VQSU5HX0NBTl9V U0VfSEFTSCkgIT0gMDsKIAlib29sCQljYW5fc29ydCA9IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElO R19DQU5fVVNFX1NPUlQpICE9IDA7CiAJTGlzdAkgICAqaGF2aW5nUXVhbCA9IChMaXN0ICopIGV4 dHJhLT5oYXZpbmdRdWFsOwogCUFnZ0NsYXVzZUNvc3RzICphZ2dfZmluYWxfY29zdHMgPSAmZXh0 cmEtPmFnZ19maW5hbF9jb3N0czsKKwlkb3VibGUJCWROdW1Hcm91cHMgPSAwOworCWRvdWJsZQkJ ZE51bUZpbmFsR3JvdXBzID0gMDsKKworCS8qCisJICogRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3Vw cyBmb3Igbm9uLXNwbGl0IGFnZ3JlZ2F0aW9uLgorCSAqLworCWROdW1Hcm91cHMgPSBnZXRfbnVt YmVyX29mX2dyb3Vwcyhyb290LAorCQkJCQkJCQkJICBjaGVhcGVzdF9wYXRoLT5yb3dzLAorCQkJ CQkJCQkJICBnZCwKKwkJCQkJCQkJCSAgZXh0cmEtPnRhcmdldExpc3QpOworCisJaWYgKHBhcnRp YWxseV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBhdGhsaXN0KQorCXsK KwkJY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aCA9CisJCQlwYXJ0aWFsbHlfZ3JvdXBl ZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7CisKKwkJLyoKKwkJICogRXN0aW1hdGUgbnVtYmVy IG9mIGdyb3VwcyBmb3IgZmluYWwgcGhhc2Ugb2YgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkJICov CisJCWROdW1GaW5hbEdyb3VwcyA9CisJCQlnZXRfbnVtYmVyX29mX2dyb3Vwcyhyb290LAorCQkJ CQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aC0+cm93cywKKwkJCQkJCQkJIGdk LAorCQkJCQkJCQkgZXh0cmEtPnRhcmdldExpc3QpOworCX0KIAogCWlmIChjYW5fc29ydCkKIAl7 CkBAIC03MTc3LDcgKzcxOTMsNyBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCXBhdGggPSBtYWtlX29yZGVy ZWRfcGF0aChyb290LAogCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkJCSBwYXRo LAotCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRo LAorCQkJCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aCwKIAkJCQkJCQkJ CQkJIGluZm8tPnBhdGhrZXlzLAogCQkJCQkJCQkJCQkgLTEuMCk7CiAKQEAgLTcxOTUsNyArNzIx MSw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCQkJCSBpbmZvLT5jbGF1c2VzLAogCQkJCQkJCQkJ CQkJIGhhdmluZ1F1YWwsCiAJCQkJCQkJCQkJCQkgYWdnX2ZpbmFsX2Nvc3RzLAotCQkJCQkJCQkJ CQkJIGROdW1Hcm91cHMpKTsKKwkJCQkJCQkJCQkJCSBkTnVtRmluYWxHcm91cHMpKTsKIAkJCQkJ ZWxzZQogCQkJCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCQkJCSBjcmVh dGVfZ3JvdXBfcGF0aChyb290LApAQCAtNzIwMyw3ICs3MjE5LDcgQEAgYWRkX3BhdGhzX3RvX2dy b3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJ CQkJCQkJCQkJICAgcGF0aCwKIAkJCQkJCQkJCQkJCSAgIGluZm8tPmNsYXVzZXMsCiAJCQkJCQkJ CQkJCQkgICBoYXZpbmdRdWFsLAotCQkJCQkJCQkJCQkJICAgZE51bUdyb3VwcykpOworCQkJCQkJ CQkJCQkJICAgZE51bUZpbmFsR3JvdXBzKSk7CiAKIAkJCQl9CiAJCQl9CkBAIC03MjQ1LDE5ICs3 MjYxLDE3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKmlucHV0X3JlbCwKIAkJICovCiAJCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwg JiYgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXRobGlzdCkKIAkJewotCQkJUGF0aAkgICAqcGF0 aCA9IHBhcnRpYWxseV9ncm91cGVkX3JlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aDsKLQogCQkJYWRk X3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCSBjcmVhdGVfYWdnX3BhdGgocm9vdCwK IAkJCQkJCQkJCSBncm91cGVkX3JlbCwKLQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJCQkJIGNoZWFw ZXN0X3BhcnRpYWxseV9ncm91cGVkX3BhdGgsCiAJCQkJCQkJCQkgZ3JvdXBlZF9yZWwtPnJlbHRh cmdldCwKIAkJCQkJCQkJCSBBR0dfSEFTSEVELAogCQkJCQkJCQkJIEFHR1NQTElUX0ZJTkFMX0RF U0VSSUFMLAogCQkJCQkJCQkJIHJvb3QtPnByb2Nlc3NlZF9ncm91cENsYXVzZSwKIAkJCQkJCQkJ CSBoYXZpbmdRdWFsLAogCQkJCQkJCQkJIGFnZ19maW5hbF9jb3N0cywKLQkJCQkJCQkJCSBkTnVt R3JvdXBzKSk7CisJCQkJCQkJCQkgZE51bUZpbmFsR3JvdXBzKSk7CiAJCX0KIAl9CiAKQEAgLTcy OTcsNiArNzMxMSw3IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZv ICpyb290LAogewogCVF1ZXJ5CSAgICpwYXJzZSA9IHJvb3QtPnBhcnNlOwogCVJlbE9wdEluZm8g KnBhcnRpYWxseV9ncm91cGVkX3JlbDsKKwlSZWxPcHRJbmZvICplYWdlcl9hZ2dfcmVsID0gTlVM TDsKIAlBZ2dDbGF1c2VDb3N0cyAqYWdnX3BhcnRpYWxfY29zdHMgPSAmZXh0cmEtPmFnZ19wYXJ0 aWFsX2Nvc3RzOwogCUFnZ0NsYXVzZUNvc3RzICphZ2dfZmluYWxfY29zdHMgPSAmZXh0cmEtPmFn Z19maW5hbF9jb3N0czsKIAlQYXRoCSAgICpjaGVhcGVzdF9wYXJ0aWFsX3BhdGggPSBOVUxMOwpA QCAtNzMwNyw2ICs3MzIyLDE1IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5u ZXJJbmZvICpyb290LAogCWJvb2wJCWNhbl9oYXNoID0gKGV4dHJhLT5mbGFncyAmIEdST1VQSU5H X0NBTl9VU0VfSEFTSCkgIT0gMDsKIAlib29sCQljYW5fc29ydCA9IChleHRyYS0+ZmxhZ3MgJiBH Uk9VUElOR19DQU5fVVNFX1NPUlQpICE9IDA7CiAKKwkvKgorCSAqIENoZWNrIHdoZXRoZXIgYW55 IHBhcnRpYWxseSBhZ2dyZWdhdGVkIHBhdGhzIGhhdmUgYmVlbiBnZW5lcmF0ZWQKKwkgKiB0aHJv dWdoIGVhZ2VyIGFnZ3JlZ2F0aW9uLgorCSAqLworCWlmIChpbnB1dF9yZWwtPmdyb3VwZWRfcmVs ICYmCisJCSFJU19EVU1NWV9SRUwoaW5wdXRfcmVsLT5ncm91cGVkX3JlbCkgJiYKKwkJaW5wdXRf cmVsLT5ncm91cGVkX3JlbC0+cGF0aGxpc3QgIT0gTklMKQorCQllYWdlcl9hZ2dfcmVsID0gaW5w dXRfcmVsLT5ncm91cGVkX3JlbDsKKwogCS8qCiAJICogQ29uc2lkZXIgd2hldGhlciB3ZSBzaG91 bGQgZ2VuZXJhdGUgcGFydGlhbGx5IGFnZ3JlZ2F0ZWQgbm9uLXBhcnRpYWwKIAkgKiBwYXRocy4g IFdlIGNhbiBvbmx5IGRvIHRoaXMgaWYgd2UgaGF2ZSBhIG5vbi1wYXJ0aWFsIHBhdGgsIGFuZCBv bmx5IGlmCkBAIC03MzI4LDExICs3MzUyLDEzIEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3Bh dGhzKFBsYW5uZXJJbmZvICpyb290LAogCiAJLyoKIAkgKiBJZiB3ZSBjYW4ndCBwYXJ0aWFsbHkg YWdncmVnYXRlIHBhcnRpYWwgcGF0aHMsIGFuZCB3ZSBjYW4ndCBwYXJ0aWFsbHkKLQkgKiBhZ2dy ZWdhdGUgbm9uLXBhcnRpYWwgcGF0aHMsIHRoZW4gZG9uJ3QgYm90aGVyIGNyZWF0aW5nIHRoZSBu ZXcKKwkgKiBhZ2dyZWdhdGUgbm9uLXBhcnRpYWwgcGF0aHMsIGFuZCBubyBwYXJ0aWFsbHkgYWdn cmVnYXRlZCBwYXRocyB3ZXJlCisJICogZ2VuZXJhdGVkIGJ5IGVhZ2VyIGFnZ3JlZ2F0aW9uLCB0 aGVuIGRvbid0IGJvdGhlciBjcmVhdGluZyB0aGUgbmV3CiAJICogUmVsT3B0SW5mbyBhdCBhbGws IHVubGVzcyB0aGUgY2FsbGVyIHNwZWNpZmllZCBmb3JjZV9yZWxfY3JlYXRpb24uCiAJICovCiAJ aWYgKGNoZWFwZXN0X3RvdGFsX3BhdGggPT0gTlVMTCAmJgogCQljaGVhcGVzdF9wYXJ0aWFsX3Bh dGggPT0gTlVMTCAmJgorCQllYWdlcl9hZ2dfcmVsID09IE5VTEwgJiYKIAkJIWZvcmNlX3JlbF9j cmVhdGlvbikKIAkJcmV0dXJuIE5VTEw7CiAKQEAgLTc1NTcsNiArNzU4Myw1MSBAQCBjcmVhdGVf cGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkgZE51 bVBhcnRpYWxQYXJ0aWFsR3JvdXBzKSk7CiAJfQogCisJLyoKKwkgKiBBZGQgYW55IHBhcnRpYWxs eSBhZ2dyZWdhdGVkIHBhdGhzIGdlbmVyYXRlZCBieSBlYWdlciBhZ2dyZWdhdGlvbiB0bworCSAq IHRoZSBuZXcgdXBwZXIgcmVsYXRpb24gYWZ0ZXIgYXBwbHlpbmcgcHJvamVjdGlvbiBzdGVwcyBh cyBuZWVkZWQuCisJICovCisJaWYgKGVhZ2VyX2FnZ19yZWwpCisJeworCQkvKiBBZGQgdGhlIHBh dGhzICovCisJCWZvcmVhY2gobGMsIGVhZ2VyX2FnZ19yZWwtPnBhdGhsaXN0KQorCQl7CisJCQlQ YXRoCSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKKworCQkJLyogU2hvdWxkbid0IGhh dmUgYW55IHBhcmFtZXRlcml6ZWQgcGF0aHMgYW55bW9yZSAqLworCQkJQXNzZXJ0KHBhdGgtPnBh cmFtX2luZm8gPT0gTlVMTCk7CisKKwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlv bl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCisJCQkJ CQkJCQkJCQkgICBwYXRoLAorCQkJCQkJCQkJCQkJICAgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5y ZWx0YXJnZXQpOworCisJCQlhZGRfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIHBhdGgpOwor CQl9CisKKwkJLyoKKwkJICogTGlrZXdpc2UgYWRkIHRoZSBwYXJ0aWFsIHBhdGhzLCBidXQgb25s eSBpZiBwYXJhbGxlbGlzbSBpcyBwb3NzaWJsZQorCQkgKiBmb3IgcGFydGlhbGx5X2dyb3VwZWRf cmVsLgorCQkgKi8KKwkJaWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbC0+Y29uc2lkZXJfcGFyYWxs ZWwpCisJCXsKKwkJCWZvcmVhY2gobGMsIGVhZ2VyX2FnZ19yZWwtPnBhcnRpYWxfcGF0aGxpc3Qp CisJCQl7CisJCQkJUGF0aAkgICAqcGF0aCA9IChQYXRoICopIGxmaXJzdChsYyk7CisKKwkJCQkv KiBTaG91bGRuJ3QgaGF2ZSBhbnkgcGFyYW1ldGVyaXplZCBwYXRocyBhbnltb3JlICovCisJCQkJ QXNzZXJ0KHBhdGgtPnBhcmFtX2luZm8gPT0gTlVMTCk7CisKKwkJCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkJCSAgIHBhcnRpYWxseV9n cm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkgICBwYXRoLAorCQkJCQkJCQkJCQkJCSAgIHBhcnRp YWxseV9ncm91cGVkX3JlbC0+cmVsdGFyZ2V0KTsKKworCQkJCWFkZF9wYXJ0aWFsX3BhdGgocGFy dGlhbGx5X2dyb3VwZWRfcmVsLCBwYXRoKTsKKwkJCX0KKwkJfQorCX0KKwogCS8qCiAJICogSWYg dGhlcmUgaXMgYW4gRkRXIHRoYXQncyByZXNwb25zaWJsZSBmb3IgYWxsIGJhc2VyZWxzIG9mIHRo ZSBxdWVyeSwKIAkgKiBsZXQgaXQgY29uc2lkZXIgYWRkaW5nIHBhcnRpYWxseSBncm91cGVkIEZv cmVpZ25QYXRocy4KQEAgLTgxMjAsMTMgKzgxOTEsNiBAQCBjcmVhdGVfcGFydGl0aW9ud2lzZV9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAogCQlhZGRfcGF0aHNfdG9fYXBwZW5k X3JlbChyb290LCBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCXBhcnRpYWxseV9ncm91 cGVkX2xpdmVfY2hpbGRyZW4pOwotCi0JCS8qCi0JCSAqIFdlIG5lZWQgY2FsbCBzZXRfY2hlYXBl c3QsIHNpbmNlIHRoZSBmaW5hbGl6YXRpb24gc3RlcCB3aWxsIHVzZSB0aGUKLQkJICogY2hlYXBl c3QgcGF0aCBmcm9tIHRoZSByZWwuCi0JCSAqLwotCQlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVs LT5wYXRobGlzdCkKLQkJCXNldF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCX0K IAogCS8qIElmIHBvc3NpYmxlLCBjcmVhdGUgYXBwZW5kIHBhdGhzIGZvciBmdWxseSBncm91cGVk IGNoaWxkcmVuLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBw ZW5kaW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCmluZGV4 IDViM2RjMGQ4NjUzLi42OWI4YjBjMmFlMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvYXBwZW5kaW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2Fw cGVuZGluZm8uYwpAQCAtNTE2LDYgKzUxNiw1NyBAQCBhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211 dGF0b3IoTm9kZSAqbm9kZSwKIAkJcmV0dXJuIChOb2RlICopIG5ld2luZm87CiAJfQogCisJLyoK KwkgKiBXZSBoYXZlIHRvIHByb2Nlc3MgUmVsQWdnSW5mbyBub2RlcyBzcGVjaWFsbHkuCisJICov CisJaWYgKElzQShub2RlLCBSZWxBZ2dJbmZvKSkKKwl7CisJCVJlbEFnZ0luZm8gKm9sZGluZm8g PSAoUmVsQWdnSW5mbyAqKSBub2RlOworCQlSZWxBZ2dJbmZvICpuZXdpbmZvID0gbWFrZU5vZGUo UmVsQWdnSW5mbyk7CisKKwkJbmV3aW5mby0+dGFyZ2V0ID0gKFBhdGhUYXJnZXQgKikKKwkJCWFk anVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT50YXJnZXQsCisJ CQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+YWdnX2lucHV0ID0gKFBhdGhUYXJn ZXQgKikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZv LT5hZ2dfaW5wdXQsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+Z3JvdXBf Y2xhdXNlcyA9IG9sZGluZm8tPmdyb3VwX2NsYXVzZXM7CisKKwkJbmV3aW5mby0+Z3JvdXBfZXhw cnMgPSAoTGlzdCAqKQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChOb2RlICop IG9sZGluZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCXJldHVy biAoTm9kZSAqKSBuZXdpbmZvOworCX0KKworCS8qCisJICogV2UgaGF2ZSB0byBwcm9jZXNzIFBh dGhUYXJnZXQgbm9kZXMgc3BlY2lhbGx5LgorCSAqLworCWlmIChJc0Eobm9kZSwgUGF0aFRhcmdl dCkpCisJeworCQlQYXRoVGFyZ2V0ICpvbGR0YXJnZXQgPSAoUGF0aFRhcmdldCAqKSBub2RlOwor CQlQYXRoVGFyZ2V0ICpuZXd0YXJnZXQgPSBtYWtlTm9kZShQYXRoVGFyZ2V0KTsKKworCQkvKiBD b3B5IGFsbCBmbGF0LWNvcGlhYmxlIGZpZWxkcyAqLworCQltZW1jcHkobmV3dGFyZ2V0LCBvbGR0 YXJnZXQsIHNpemVvZihQYXRoVGFyZ2V0KSk7CisKKwkJbmV3dGFyZ2V0LT5leHBycyA9IChMaXN0 ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkdGFyZ2V0 LT5leHBycywKKwkJCQkJCQkJCQkgICBjb250ZXh0KTsKKworCQlpZiAob2xkdGFyZ2V0LT5zb3J0 Z3JvdXByZWZzKQorCQl7CisJCQlTaXplCQluYnl0ZXMgPSBsaXN0X2xlbmd0aChvbGR0YXJnZXQt PmV4cHJzKSAqIHNpemVvZihJbmRleCk7CisKKwkJCW5ld3RhcmdldC0+c29ydGdyb3VwcmVmcyA9 IChJbmRleCAqKSBwYWxsb2MobmJ5dGVzKTsKKwkJCW1lbWNweShuZXd0YXJnZXQtPnNvcnRncm91 cHJlZnMsIG9sZHRhcmdldC0+c29ydGdyb3VwcmVmcywgbmJ5dGVzKTsKKwkJfQorCisJCXJldHVy biAoTm9kZSAqKSBuZXd0YXJnZXQ7CisJfQorCiAJLyoKIAkgKiBOT1RFOiB3ZSBkbyBub3QgbmVl ZCB0byByZWN1cnNlIGludG8gc3VibGlua3MsIGJlY2F1c2UgdGhleSBzaG91bGQKIAkgKiBhbHJl YWR5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gc3VicGxhbnMgYmVmb3JlIHdlIHNlZSB0aGVtLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IDBlNTIzZDJlYjViLi5jZjFiYzY3 MjEzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtMTYsNiArMTYsOCBA QAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2FwcGVu ZGluZm8uaCIKQEAgLTI3LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5o IgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIm9wdGltaXpl ci9wbGFuY2F0LmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKICNpbmNsdWRlICJv cHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3RsaXN0LmgiCisj aW5jbHVkZSAicGFyc2VyL3BhcnNlX29wZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVs YXRpb24uaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInV0 aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1 dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKIAogdHlwZWRl ZiBzdHJ1Y3QgSm9pbkhhc2hFbnRyeQpAQCAtODMsNiArODksMTQgQEAgc3RhdGljIHZvaWQgYnVp bGRfY2hpbGRfam9pbl9yZWx0YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBS ZWxPcHRJbmZvICpjaGlsZHJlbCwKIAkJCQkJCQkJCSAgIGludCBuYXBwaW5mb3MsCiAJCQkJCQkJ CQkgICBBcHBlbmRSZWxJbmZvICoqYXBwaW5mb3MpOworc3RhdGljIGJvb2wgZWFnZXJfYWdncmVn YXRpb25fcG9zc2libGVfZm9yX3JlbGF0aW9uKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJ CQkJCVJlbE9wdEluZm8gKnJlbCk7CitzdGF0aWMgYm9vbCBpbml0X2dyb3VwaW5nX3RhcmdldHMo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJCQkJICBQYXRoVGFyZ2V0 ICp0YXJnZXQsIFBhdGhUYXJnZXQgKmFnZ19pbnB1dCwKKwkJCQkJCQkJICBMaXN0ICoqZ3JvdXBf Y2xhdXNlcywgTGlzdCAqKmdyb3VwX2V4cHJzKTsKK3N0YXRpYyBib29sIGlzX3Zhcl9pbl9hZ2dy ZWZfb25seShQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIpOworc3RhdGljIGJvb2wgaXNfdmFy X25lZWRlZF9ieV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhciwgUmVsT3B0SW5mbyAq cmVsKTsKK3N0YXRpYyBJbmRleCBnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYoUGxhbm5lcklu Zm8gKnJvb3QsIEV4cHIgKmV4cHIpOwogCiAKIC8qCkBAIC0yNzgsNiArMjkyLDggQEAgYnVpbGRf c2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLCBSZWxPcHRJbmZvICpwYXJl bnQpCiAJcmVsLT5qb2luaW5mbyA9IE5JTDsKIAlyZWwtPmhhc19lY2xhc3Nfam9pbnMgPSBmYWxz ZTsKIAlyZWwtPmNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZhbHNlOwkvKiBtaWdodCBn ZXQgY2hhbmdlZCBsYXRlciAqLworCXJlbC0+YWdnX2luZm8gPSBOVUxMOworCXJlbC0+Z3JvdXBl ZF9yZWwgPSBOVUxMOwogCXJlbC0+cGFydF9zY2hlbWUgPSBOVUxMOwogCXJlbC0+bnBhcnRzID0g LTE7CiAJcmVsLT5ib3VuZGluZm8gPSBOVUxMOwpAQCAtNDA4LDYgKzQyNCwxMDMgQEAgYnVpbGRf c2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLCBSZWxPcHRJbmZvICpwYXJl bnQpCiAJcmV0dXJuIHJlbDsKIH0KIAorLyoKKyAqIGJ1aWxkX3NpbXBsZV9ncm91cGVkX3JlbAor ICoJICBDb25zdHJ1Y3QgYSBuZXcgUmVsT3B0SW5mbyByZXByZXNlbnRpbmcgYSBncm91cGVkIHZl cnNpb24gb2YgdGhlIGlucHV0CisgKgkgIHNpbXBsZSByZWxhdGlvbi4KKyAqLworUmVsT3B0SW5m byAqCitidWlsZF9zaW1wbGVfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKnJlbCkKK3sKKwlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKwlSZWxBZ2dJbmZvICphZ2df aW5mbzsKKworCS8qCisJICogV2Ugc2hvdWxkIGhhdmUgYXZhaWxhYmxlIGFnZ3JlZ2F0ZSBleHBy ZXNzaW9ucyBhbmQgZ3JvdXBpbmcKKwkgKiBleHByZXNzaW9ucywgb3RoZXJ3aXNlIHdlIGNhbm5v dCByZWFjaCBoZXJlLgorCSAqLworCUFzc2VydChyb290LT5hZ2dfY2xhdXNlX2xpc3QgIT0gTklM KTsKKwlBc3NlcnQocm9vdC0+Z3JvdXBfZXhwcl9saXN0ICE9IE5JTCk7CisKKwkvKiBub3RoaW5n IHRvIGRvIGZvciBkdW1teSByZWwgKi8KKwlpZiAoSVNfRFVNTVlfUkVMKHJlbCkpCisJCXJldHVy biBOVUxMOworCisJLyoKKwkgKiBQcmVwYXJlIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3Jl YXRlIGdyb3VwZWQgcGF0aHMgZm9yIHRoaXMgc2ltcGxlCisJICogcmVsYXRpb24uCisJICovCisJ YWdnX2luZm8gPSBjcmVhdGVfcmVsX2FnZ19pbmZvKHJvb3QsIHJlbCwgdHJ1ZSk7CisJaWYgKGFn Z19pbmZvID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBJZiBncm91cGVkIHBh dGhzIGZvciB0aGUgZ2l2ZW4gc2ltcGxlIHJlbGF0aW9uIGFyZSBub3QgY29uc2lkZXJlZAorCSAq IHVzZWZ1bCwgc2tpcCBidWlsZGluZyB0aGUgZ3JvdXBlZCByZWxhdGlvbi4KKwkgKi8KKwlpZiAo IWFnZ19pbmZvLT5hZ2dfdXNlZnVsKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFRyYWNrIHRoZSBz ZXQgb2YgcmVsaWRzIGF0IHdoaWNoIHBhcnRpYWwgYWdncmVnYXRpb24gaXMgYXBwbGllZCAqLwor CWFnZ19pbmZvLT5hcHBseV9hdCA9IGJtc19jb3B5KHJlbC0+cmVsaWRzKTsKKworCS8qIGJ1aWxk IHRoZSBncm91cGVkIHJlbGF0aW9uICovCisJZ3JvdXBlZF9yZWwgPSBidWlsZF9ncm91cGVkX3Jl bChyb290LCByZWwpOworCWdyb3VwZWRfcmVsLT5yZWx0YXJnZXQgPSBhZ2dfaW5mby0+dGFyZ2V0 OworCWdyb3VwZWRfcmVsLT5yb3dzID0gYWdnX2luZm8tPmdyb3VwZWRfcm93czsKKwlncm91cGVk X3JlbC0+YWdnX2luZm8gPSBhZ2dfaW5mbzsKKworCXJlbC0+Z3JvdXBlZF9yZWwgPSBncm91cGVk X3JlbDsKKworCXJldHVybiBncm91cGVkX3JlbDsKK30KKworLyoKKyAqIGJ1aWxkX2dyb3VwZWRf cmVsCisgKgkgIEJ1aWxkIGEgZ3JvdXBlZCByZWxhdGlvbiBieSBmbGF0IGNvcHlpbmcgdGhlIGlu cHV0IHJlbGF0aW9uIGFuZCByZXNldHRpbmcKKyAqCSAgdGhlIG5lY2Vzc2FyeSBmaWVsZHMuCisg Ki8KK1JlbE9wdEluZm8gKgorYnVpbGRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCkKK3sKKwlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKworCWdyb3VwZWRf cmVsID0gbWFrZU5vZGUoUmVsT3B0SW5mbyk7CisJbWVtY3B5KGdyb3VwZWRfcmVsLCByZWwsIHNp emVvZihSZWxPcHRJbmZvKSk7CisKKwkvKgorCSAqIGNsZWFyIHBhdGggaW5mbworCSAqLworCWdy b3VwZWRfcmVsLT5wYXRobGlzdCA9IE5JTDsKKwlncm91cGVkX3JlbC0+cHBpbGlzdCA9IE5JTDsK Kwlncm91cGVkX3JlbC0+cGFydGlhbF9wYXRobGlzdCA9IE5JTDsKKwlncm91cGVkX3JlbC0+Y2hl YXBlc3Rfc3RhcnR1cF9wYXRoID0gTlVMTDsKKwlncm91cGVkX3JlbC0+Y2hlYXBlc3RfdG90YWxf cGF0aCA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3BhcmFtZXRlcml6ZWRfcGF0aHMg PSBOSUw7CisKKwkvKgorCSAqIGNsZWFyIHBhcnRpdGlvbiBpbmZvCisJICovCisJZ3JvdXBlZF9y ZWwtPnBhcnRfc2NoZW1lID0gTlVMTDsKKwlncm91cGVkX3JlbC0+bnBhcnRzID0gLTE7CisJZ3Jv dXBlZF9yZWwtPmJvdW5kaW5mbyA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPnBhcnRib3VuZHNfbWVy Z2VkID0gZmFsc2U7CisJZ3JvdXBlZF9yZWwtPnBhcnRpdGlvbl9xdWFsID0gTklMOworCWdyb3Vw ZWRfcmVsLT5wYXJ0X3JlbHMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5saXZlX3BhcnRzID0gTlVM TDsKKwlncm91cGVkX3JlbC0+YWxsX3BhcnRyZWxzID0gTlVMTDsKKwlncm91cGVkX3JlbC0+cGFy dGV4cHJzID0gTlVMTDsKKwlncm91cGVkX3JlbC0+bnVsbGFibGVfcGFydGV4cHJzID0gTlVMTDsK Kwlncm91cGVkX3JlbC0+Y29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luID0gZmFsc2U7CisKKwkv KgorCSAqIGNsZWFyIHNpemUgZXN0aW1hdGVzCisJICovCisJZ3JvdXBlZF9yZWwtPnJvd3MgPSAw OworCisJcmV0dXJuIGdyb3VwZWRfcmVsOworfQorCiAvKgogICogZmluZF9iYXNlX3JlbAogICoJ ICBGaW5kIGEgYmFzZSBvciBvdGhlcnJlbCByZWxhdGlvbiBlbnRyeSwgd2hpY2ggbXVzdCBhbHJl YWR5IGV4aXN0LgpAQCAtNzU5LDYgKzg3Miw4IEBAIGJ1aWxkX2pvaW5fcmVsKFBsYW5uZXJJbmZv ICpyb290LAogCWpvaW5yZWwtPmpvaW5pbmZvID0gTklMOwogCWpvaW5yZWwtPmhhc19lY2xhc3Nf am9pbnMgPSBmYWxzZTsKIAlqb2lucmVsLT5jb25zaWRlcl9wYXJ0aXRpb253aXNlX2pvaW4gPSBm YWxzZTsJLyogbWlnaHQgZ2V0IGNoYW5nZWQgbGF0ZXIgKi8KKwlqb2lucmVsLT5hZ2dfaW5mbyA9 IE5VTEw7CisJam9pbnJlbC0+Z3JvdXBlZF9yZWwgPSBOVUxMOwogCWpvaW5yZWwtPnBhcmVudCA9 IE5VTEw7CiAJam9pbnJlbC0+dG9wX3BhcmVudCA9IE5VTEw7CiAJam9pbnJlbC0+dG9wX3BhcmVu dF9yZWxpZHMgPSBOVUxMOwpAQCAtOTQ1LDYgKzEwNjAsOCBAQCBidWlsZF9jaGlsZF9qb2luX3Jl bChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqb3V0ZXJfcmVsLAogCWpvaW5yZWwtPmpv aW5pbmZvID0gTklMOwogCWpvaW5yZWwtPmhhc19lY2xhc3Nfam9pbnMgPSBmYWxzZTsKIAlqb2lu cmVsLT5jb25zaWRlcl9wYXJ0aXRpb253aXNlX2pvaW4gPSBmYWxzZTsJLyogbWlnaHQgZ2V0IGNo YW5nZWQgbGF0ZXIgKi8KKwlqb2lucmVsLT5hZ2dfaW5mbyA9IE5VTEw7CisJam9pbnJlbC0+Z3Jv dXBlZF9yZWwgPSBOVUxMOwogCWpvaW5yZWwtPnBhcmVudCA9IHBhcmVudF9qb2lucmVsOwogCWpv aW5yZWwtPnRvcF9wYXJlbnQgPSBwYXJlbnRfam9pbnJlbC0+dG9wX3BhcmVudCA/IHBhcmVudF9q b2lucmVsLT50b3BfcGFyZW50IDogcGFyZW50X2pvaW5yZWw7CiAJam9pbnJlbC0+dG9wX3BhcmVu dF9yZWxpZHMgPSBqb2lucmVsLT50b3BfcGFyZW50LT5yZWxpZHM7CkBAIC0yNTIzLDMgKzI2NDAs NTM2IEBAIGJ1aWxkX2NoaWxkX2pvaW5fcmVsdGFyZ2V0KFBsYW5uZXJJbmZvICpyb290LAogCWNo aWxkcmVsLT5yZWx0YXJnZXQtPmNvc3QucGVyX3R1cGxlID0gcGFyZW50cmVsLT5yZWx0YXJnZXQt PmNvc3QucGVyX3R1cGxlOwogCWNoaWxkcmVsLT5yZWx0YXJnZXQtPndpZHRoID0gcGFyZW50cmVs LT5yZWx0YXJnZXQtPndpZHRoOwogfQorCisvKgorICogY3JlYXRlX3JlbF9hZ2dfaW5mbworICoJ ICBDcmVhdGUgdGhlIFJlbEFnZ0luZm8gc3RydWN0dXJlIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24g aWYgaXQgY2FuIHByb2R1Y2UKKyAqCSAgZ3JvdXBlZCBwYXRocy4gIFRoZSBnaXZlbiByZWxhdGlv biBpcyB0aGUgbm9uLWdyb3VwZWQgb25lIHdoaWNoIGhhcyB0aGUKKyAqCSAgcmVsdGFyZ2V0IGFs cmVhZHkgY29uc3RydWN0ZWQuCisgKgorICogY2FsY3VsYXRlX2dyb3VwZWRfcm93czogaWYgdHJ1 ZSwgY2FsY3VsYXRlIHRoZSBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3VwZWQKKyAqIHJvd3MgZm9y IHRoZSByZWxhdGlvbi4gIElmIGZhbHNlLCBza2lwIHRoZSBlc3RpbWF0aW9uIHRvIGF2b2lkIHVu bmVjZXNzYXJ5CisgKiBwbGFubmluZyBvdmVyaGVhZC4KKyAqLworUmVsQWdnSW5mbyAqCitjcmVh dGVfcmVsX2FnZ19pbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJ CWJvb2wgY2FsY3VsYXRlX2dyb3VwZWRfcm93cykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlSZWxB Z2dJbmZvICpyZXN1bHQ7CisJUGF0aFRhcmdldCAqYWdnX2lucHV0OworCVBhdGhUYXJnZXQgKnRh cmdldDsKKwlMaXN0CSAgICpncm91cF9jbGF1c2VzID0gTklMOworCUxpc3QJICAgKmdyb3VwX2V4 cHJzID0gTklMOworCisJLyoKKwkgKiBUaGUgbGlzdHMgb2YgYWdncmVnYXRlIGV4cHJlc3Npb25z IGFuZCBncm91cGluZyBleHByZXNzaW9ucyBzaG91bGQgaGF2ZQorCSAqIGJlZW4gY29uc3RydWN0 ZWQuCisJICovCisJQXNzZXJ0KHJvb3QtPmFnZ19jbGF1c2VfbGlzdCAhPSBOSUwpOworCUFzc2Vy dChyb290LT5ncm91cF9leHByX2xpc3QgIT0gTklMKTsKKworCS8qCisJICogSWYgdGhpcyBpcyBh IGNoaWxkIHJlbCwgdGhlIGdyb3VwZWQgcmVsIGZvciBpdHMgcGFyZW50IHJlbCBtdXN0IGhhdmUK KwkgKiBiZWVuIGNyZWF0ZWQgaWYgaXQgY2FuLiAgU28gd2UgY2FuIGp1c3QgdXNlIHBhcmVudCdz IFJlbEFnZ0luZm8gaWYKKwkgKiB0aGVyZSBpcyBvbmUsIHdpdGggYXBwcm9wcmlhdGUgdmFyaWFi bGUgc3Vic3RpdHV0aW9ucy4KKwkgKi8KKwlpZiAoSVNfT1RIRVJfUkVMKHJlbCkpCisJeworCQlS ZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKwkJUmVsQWdnSW5mbyAqYWdnX2luZm87CisKKwkJZ3Jv dXBlZF9yZWwgPSByZWwtPnRvcF9wYXJlbnQtPmdyb3VwZWRfcmVsOworCQlpZiAoZ3JvdXBlZF9y ZWwgPT0gTlVMTCkKKwkJCXJldHVybiBOVUxMOworCisJCUFzc2VydChJU19HUk9VUEVEX1JFTChn cm91cGVkX3JlbCkpOworCisJCS8qIE11c3QgZG8gbXVsdGktbGV2ZWwgdHJhbnNmb3JtYXRpb24g Ki8KKwkJYWdnX2luZm8gPSAoUmVsQWdnSW5mbyAqKQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRy c19tdWx0aWxldmVsKHJvb3QsCisJCQkJCQkJCQkJCSAgKE5vZGUgKikgZ3JvdXBlZF9yZWwtPmFn Z19pbmZvLAorCQkJCQkJCQkJCQkgIHJlbCwKKwkJCQkJCQkJCQkJICByZWwtPnRvcF9wYXJlbnQp OworCisJCWFnZ19pbmZvLT5hcHBseV9hdCA9IE5VTEw7CS8qIGNhbGxlciB3aWxsIGNoYW5nZSB0 aGlzIGxhdGVyICovCisKKwkJaWYgKGNhbGN1bGF0ZV9ncm91cGVkX3Jvd3MpCisJCXsKKwkJCWFn Z19pbmZvLT5ncm91cGVkX3Jvd3MgPQorCQkJCWVzdGltYXRlX251bV9ncm91cHMocm9vdCwgYWdn X2luZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQkJcmVsLT5yb3dzLCBOVUxMLCBOVUxMKTsKKwor CQkJLyoKKwkJCSAqIFRoZSBncm91cGVkIHBhdGhzIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24gYXJl IGNvbnNpZGVyZWQgdXNlZnVsCisJCQkgKiBpZmYgdGhlIGF2ZXJhZ2UgZ3JvdXAgc2l6ZSBpcyBu byBsZXNzIHRoYW4KKwkJCSAqIG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZS4KKwkJCSAqLworCQkJ YWdnX2luZm8tPmFnZ191c2VmdWwgPQorCQkJCShyZWwtPnJvd3MgLyBhZ2dfaW5mby0+Z3JvdXBl ZF9yb3dzKSA+PSBtaW5fZWFnZXJfYWdnX2dyb3VwX3NpemU7CisJCX0KKworCQlyZXR1cm4gYWdn X2luZm87CisJfQorCisJLyogQ2hlY2sgaWYgaXQncyBwb3NzaWJsZSB0byBwcm9kdWNlIGdyb3Vw ZWQgcGF0aHMgZm9yIHRoaXMgcmVsYXRpb24uICovCisJaWYgKCFlYWdlcl9hZ2dyZWdhdGlvbl9w b3NzaWJsZV9mb3JfcmVsYXRpb24ocm9vdCwgcmVsKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgor CSAqIENyZWF0ZSB0YXJnZXRzIGZvciB0aGUgZ3JvdXBlZCBwYXRocyBhbmQgZm9yIHRoZSBpbnB1 dCBwYXRocyBvZiB0aGUKKwkgKiBncm91cGVkIHBhdGhzLgorCSAqLworCXRhcmdldCA9IGNyZWF0 ZV9lbXB0eV9wYXRodGFyZ2V0KCk7CisJYWdnX2lucHV0ID0gY3JlYXRlX2VtcHR5X3BhdGh0YXJn ZXQoKTsKKworCS8qIC4uLiBhbmQgaW5pdGlhbGl6ZSB0aGVzZSB0YXJnZXRzICovCisJaWYgKCFp bml0X2dyb3VwaW5nX3RhcmdldHMocm9vdCwgcmVsLCB0YXJnZXQsIGFnZ19pbnB1dCwKKwkJCQkJ CQkgICAmZ3JvdXBfY2xhdXNlcywgJmdyb3VwX2V4cHJzKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkv KgorCSAqIEVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIG5vdCBhcHBsaWNhYmxlIGlmIHRoZXJlIGFyZSBu byBhdmFpbGFibGUgZ3JvdXBpbmcKKwkgKiBleHByZXNzaW9ucy4KKwkgKi8KKwlpZiAoZ3JvdXBf Y2xhdXNlcyA9PSBOSUwpCisJCXJldHVybiBOVUxMOworCisJLyogQWRkIGFnZ3JlZ2F0ZXMgdG8g dGhlIGdyb3VwaW5nIHRhcmdldCAqLworCWZvcmVhY2gobGMsIHJvb3QtPmFnZ19jbGF1c2VfbGlz dCkKKwl7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm8gPSBsZmlyc3Rfbm9kZShBZ2dDbGF1c2VJ bmZvLCBsYyk7CisJCUFnZ3JlZgkgICAqYWdncmVmOworCisJCUFzc2VydChJc0EoYWNfaW5mby0+ YWdncmVmLCBBZ2dyZWYpKTsKKworCQlhZ2dyZWYgPSAoQWdncmVmICopIGNvcHlPYmplY3QoYWNf aW5mby0+YWdncmVmKTsKKwkJbWFya19wYXJ0aWFsX2FnZ3JlZihhZ2dyZWYsIEFHR1NQTElUX0lO SVRJQUxfU0VSSUFMKTsKKworCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCAoRXhw ciAqKSBhZ2dyZWYsIDApOworCX0KKworCS8qIFNldCB0aGUgZXN0aW1hdGVkIGV2YWwgY29zdCBh bmQgb3V0cHV0IHdpZHRoIGZvciBib3RoIHRhcmdldHMgKi8KKwlzZXRfcGF0aHRhcmdldF9jb3N0 X3dpZHRoKHJvb3QsIHRhcmdldCk7CisJc2V0X3BhdGh0YXJnZXRfY29zdF93aWR0aChyb290LCBh Z2dfaW5wdXQpOworCisJLyogYnVpbGQgdGhlIFJlbEFnZ0luZm8gcmVzdWx0ICovCisJcmVzdWx0 ID0gbWFrZU5vZGUoUmVsQWdnSW5mbyk7CisJcmVzdWx0LT50YXJnZXQgPSB0YXJnZXQ7CisJcmVz dWx0LT5hZ2dfaW5wdXQgPSBhZ2dfaW5wdXQ7CisJcmVzdWx0LT5ncm91cF9jbGF1c2VzID0gZ3Jv dXBfY2xhdXNlczsKKwlyZXN1bHQtPmdyb3VwX2V4cHJzID0gZ3JvdXBfZXhwcnM7CisJcmVzdWx0 LT5hcHBseV9hdCA9IE5VTEw7CS8qIGNhbGxlciB3aWxsIGNoYW5nZSB0aGlzIGxhdGVyICovCisK KwlpZiAoY2FsY3VsYXRlX2dyb3VwZWRfcm93cykKKwl7CisJCXJlc3VsdC0+Z3JvdXBlZF9yb3dz ID0gZXN0aW1hdGVfbnVtX2dyb3Vwcyhyb290LCByZXN1bHQtPmdyb3VwX2V4cHJzLAorCQkJCQkJ CQkJCQkJICAgcmVsLT5yb3dzLCBOVUxMLCBOVUxMKTsKKworCQkvKgorCQkgKiBUaGUgZ3JvdXBl ZCBwYXRocyBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uIGFyZSBjb25zaWRlcmVkIHVzZWZ1bCBpZmYK KwkJICogdGhlIGF2ZXJhZ2UgZ3JvdXAgc2l6ZSBpcyBubyBsZXNzIHRoYW4gbWluX2VhZ2VyX2Fn Z19ncm91cF9zaXplLgorCQkgKi8KKwkJcmVzdWx0LT5hZ2dfdXNlZnVsID0KKwkJCShyZWwtPnJv d3MgLyByZXN1bHQtPmdyb3VwZWRfcm93cykgPj0gbWluX2VhZ2VyX2FnZ19ncm91cF9zaXplOwor CX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBlYWdlcl9hZ2dyZWdhdGlvbl9wb3Nz aWJsZV9mb3JfcmVsYXRpb24KKyAqIAkgIENoZWNrIGlmIGl0J3MgcG9zc2libGUgdG8gcHJvZHVj ZSBncm91cGVkIHBhdGhzIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24uCisgKi8KK3N0YXRpYyBib29s CitlYWdlcl9hZ2dyZWdhdGlvbl9wb3NzaWJsZV9mb3JfcmVsYXRpb24oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQljdXJfcmVs aWQ7CisKKwkvKgorCSAqIENoZWNrIHRvIHNlZSBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gaXMgaW4g dGhlIG51bGxhYmxlIHNpZGUgb2YgYW4gb3V0ZXIKKwkgKiBqb2luLiAgSW4gdGhpcyBjYXNlLCB3 ZSBjYW5ub3QgcHVzaCBhIHBhcnRpYWwgYWdncmVnYXRpb24gZG93biB0byB0aGUKKwkgKiByZWxh dGlvbiwgYmVjYXVzZSB0aGUgTlVMTC1leHRlbmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRl ciBqb2luCisJICogd291bGQgbm90IGJlIGF2YWlsYWJsZSB3aGVuIHdlIHBlcmZvcm0gdGhlIHBh cnRpYWwgYWdncmVnYXRpb24sIHdoaWxlCisJICogd2l0aCBhIG5vbi1lYWdlci1hZ2dyZWdhdGlv biBwbGFuIHRoZXNlIHJvd3MgYXJlIGF2YWlsYWJsZSBmb3IgdGhlCisJICogdG9wLWxldmVsIGFn Z3JlZ2F0aW9uLiAgRG9pbmcgc28gbWF5IHJlc3VsdCBpbiB0aGUgcm93cyBiZWluZyBncm91cGVk CisJICogZGlmZmVyZW50bHkgdGhhbiBleHBlY3RlZCwgb3IgcHJvZHVjZSBpbmNvcnJlY3QgdmFs dWVzIGZyb20gdGhlCisJICogYWdncmVnYXRlIGZ1bmN0aW9ucy4KKwkgKi8KKwljdXJfcmVsaWQg PSAtMTsKKwl3aGlsZSAoKGN1cl9yZWxpZCA9IGJtc19uZXh0X21lbWJlcihyZWwtPnJlbGlkcywg Y3VyX3JlbGlkKSkgPj0gMCkKKwl7CisJCVJlbE9wdEluZm8gKmJhc2VyZWwgPSBmaW5kX2Jhc2Vf cmVsX2lnbm9yZV9qb2luKHJvb3QsIGN1cl9yZWxpZCk7CisKKwkJaWYgKGJhc2VyZWwgPT0gTlVM TCkKKwkJCWNvbnRpbnVlOwkJCS8qIGlnbm9yZSBvdXRlciBqb2lucyBpbiByZWwtPnJlbGlkcyAq LworCisJCWlmICghYm1zX2lzX3N1YnNldChiYXNlcmVsLT5udWxsaW5nX3JlbGlkcywgcmVsLT5y ZWxpZHMpKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qCisJICogRm9yIG5vdyB3ZSBkb24n dCB0cnkgdG8gc3VwcG9ydCBQbGFjZUhvbGRlclZhcnMuCisJICovCisJZm9yZWFjaChsYywgcmVs LT5yZWx0YXJnZXQtPmV4cHJzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IGxmaXJzdChsYyk7CisK KwkJaWYgKElzQShleHByLCBQbGFjZUhvbGRlclZhcikpCisJCQlyZXR1cm4gZmFsc2U7CisJfQor CisJLyogQ2FsbGVyIHNob3VsZCBvbmx5IHBhc3MgYmFzZSByZWxhdGlvbnMgb3Igam9pbnMuICov CisJQXNzZXJ0KHJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRfQkFTRVJFTCB8fAorCQkgICByZWwt PnJlbG9wdGtpbmQgPT0gUkVMT1BUX0pPSU5SRUwpOworCisJLyoKKwkgKiBDaGVjayBpZiBhbGwg YWdncmVnYXRlIGV4cHJlc3Npb25zIGNhbiBiZSBldmFsdWF0ZWQgb24gdGhpcyByZWxhdGlvbgor CSAqIGxldmVsLgorCSAqLworCWZvcmVhY2gobGMsIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCkKKwl7 CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm8gPSBsZmlyc3Rfbm9kZShBZ2dDbGF1c2VJbmZvLCBs Yyk7CisKKwkJQXNzZXJ0KElzQShhY19pbmZvLT5hZ2dyZWYsIEFnZ3JlZikpOworCisJCS8qCisJ CSAqIEdpdmUgdXAgaWYgYW55IGFnZ3JlZ2F0ZSByZXF1aXJlcyByZWxhdGlvbnMgb3RoZXIgdGhh biB0aGUgY3VycmVudAorCQkgKiBvbmUuICBJZiB0aGUgYWdncmVnYXRlIHJlcXVpcmVzIHRoZSBj dXJyZW50IHJlbGF0aW9uIHBsdXMKKwkJICogYWRkaXRpb25hbCByZWxhdGlvbnMsIGdyb3VwaW5n IHRoZSBjdXJyZW50IHJlbGF0aW9uIGNvdWxkIG1ha2Ugc29tZQorCQkgKiBpbnB1dCByb3dzIHVu YXZhaWxhYmxlIGZvciB0aGUgaGlnaGVyIGFnZ3JlZ2F0ZSBhbmQgbWF5IHJlZHVjZSB0aGUKKwkJ ICogbnVtYmVyIG9mIGlucHV0IHJvd3MgaXQgcmVjZWl2ZXMuICBJZiB0aGUgYWdncmVnYXRlIGRv ZXMgbm90CisJCSAqIHJlcXVpcmUgdGhlIGN1cnJlbnQgcmVsYXRpb24gYXQgYWxsLCBpdCBzaG91 bGQgbm90IGJlIGdyb3VwZWQsIGFzCisJCSAqIHdlIGRvIG5vdCBzdXBwb3J0IGpvaW5pbmcgdHdv IGdyb3VwZWQgcmVsYXRpb25zLgorCQkgKi8KKwkJaWYgKCFibXNfaXNfc3Vic2V0KGFjX2luZm8t PmFnZ19ldmFsX2F0LCByZWwtPnJlbGlkcykpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0 dXJuIHRydWU7Cit9CisKKy8qCisgKiBpbml0X2dyb3VwaW5nX3RhcmdldHMKKyAqCSAgSW5pdGlh bGl6ZSB0aGUgdGFyZ2V0IGZvciBncm91cGVkIHBhdGhzICh0YXJnZXQpIGFzIHdlbGwgYXMgdGhl IHRhcmdldAorICoJICBmb3IgcGF0aHMgdGhhdCBnZW5lcmF0ZSBpbnB1dCBmb3IgdGhlIGdyb3Vw ZWQgcGF0aHMgKGFnZ19pbnB1dCkuCisgKgorICogV2UgYWxzbyBjb25zdHJ1Y3QgdGhlIGxpc3Qg b2YgU29ydEdyb3VwQ2xhdXNlcyBhbmQgdGhlIGxpc3Qgb2YgZ3JvdXBpbmcKKyAqIGV4cHJlc3Np b25zIGZvciB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiwgYW5kIHJldHVybiB0aGVtIGluICpncm91 cF9jbGF1c2UKKyAqIGFuZCAqZ3JvdXBfZXhwcnMuCisgKgorICogUmV0dXJuIHRydWUgaWYgdGhl IHRhcmdldHMgY291bGQgYmUgaW5pdGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3Rh dGljIGJvb2wKK2luaXRfZ3JvdXBpbmdfdGFyZ2V0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqcmVsLAorCQkJCQkgIFBhdGhUYXJnZXQgKnRhcmdldCwgUGF0aFRhcmdldCAqYWdnX2lu cHV0LAorCQkJCQkgIExpc3QgKipncm91cF9jbGF1c2VzLCBMaXN0ICoqZ3JvdXBfZXhwcnMpCit7 CisJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqcG9zc2libHlfZGVwZW5kZW50ID0gTklMOwor CUluZGV4CQltYXhTb3J0R3JvdXBSZWY7CisKKwkvKiBJZGVudGlmeSB0aGUgbWF4IHNvcnRncm91 cHJlZiAqLworCW1heFNvcnRHcm91cFJlZiA9IDA7CisJZm9yZWFjaChsYywgcm9vdC0+cHJvY2Vz c2VkX3RsaXN0KQorCXsKKwkJSW5kZXgJCXJlZiA9ICgoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxj KSktPnJlc3NvcnRncm91cHJlZjsKKworCQlpZiAocmVmID4gbWF4U29ydEdyb3VwUmVmKQorCQkJ bWF4U29ydEdyb3VwUmVmID0gcmVmOworCX0KKworCS8qCisJICogQXQgdGhpcyBwb2ludCwgYWxs IFZhcnMgZnJvbSB0aGlzIHJlbGF0aW9uIHRoYXQgYXJlIG5lZWRlZCBieSB1cHBlcgorCSAqIGpv aW5zIG9yIGFyZSByZXF1aXJlZCBpbiB0aGUgZmluYWwgdGFyZ2V0bGlzdCBzaG91bGQgYWxyZWFk eSBiZSBwcmVzZW50CisJICogaW4gaXRzIHJlbHRhcmdldC4gIFRoZXJlZm9yZSwgd2UgY2FuIHNh ZmVseSBpdGVyYXRlIG92ZXIgdGhpcworCSAqIHJlbGF0aW9uJ3MgcmVsdGFyZ2V0LT5leHBycyB0 byBjb25zdHJ1Y3QgdGhlIFBhdGhUYXJnZXQgYW5kIGdyb3VwaW5nCisJICogY2xhdXNlcyBmb3Ig dGhlIGdyb3VwZWQgcGF0aHMuCisJICovCisJZm9yZWFjaChsYywgcmVsLT5yZWx0YXJnZXQtPmV4 cHJzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCUluZGV4 CQlzb3J0Z3JvdXByZWY7CisKKwkJLyoKKwkJICogR2l2ZW4gdGhhdCBQbGFjZUhvbGRlclZhciBj dXJyZW50bHkgcHJldmVudHMgdXMgZnJvbSBkb2luZyBlYWdlcgorCQkgKiBhZ2dyZWdhdGlvbiwg dGhlIHNvdXJjZSB0YXJnZXQgY2Fubm90IGNvbnRhaW4gYW55dGhpbmcgbW9yZSBjb21wbGV4CisJ CSAqIHRoYW4gYSBWYXIuCisJCSAqLworCQlBc3NlcnQoSXNBKGV4cHIsIFZhcikpOworCisJCS8q CisJCSAqIEdldCB0aGUgc29ydGdyb3VwcmVmIG9mIHRoZSBleHByIGlmIGl0IGlzIGZvdW5kIGFt b25nLCBvciBjYW4gYmUKKwkJICogZGVkdWNlZCBmcm9tLCB0aGUgb3JpZ2luYWwgZ3JvdXBpbmcg ZXhwcmVzc2lvbnMuCisJCSAqLworCQlzb3J0Z3JvdXByZWYgPSBnZXRfZXhwcmVzc2lvbl9zb3J0 Z3JvdXByZWYocm9vdCwgZXhwcik7CisJCWlmIChzb3J0Z3JvdXByZWYgPiAwKQorCQl7CisJCQlT b3J0R3JvdXBDbGF1c2UgKnNnYzsKKworCQkJLyogRmluZCB0aGUgbWF0Y2hpbmcgU29ydEdyb3Vw Q2xhdXNlICovCisJCQlzZ2MgPSBnZXRfc29ydGdyb3VwcmVmX2NsYXVzZShzb3J0Z3JvdXByZWYs IHJvb3QtPnByb2Nlc3NlZF9ncm91cENsYXVzZSk7CisJCQlBc3NlcnQoc2djLT50bGVTb3J0R3Jv dXBSZWYgPD0gbWF4U29ydEdyb3VwUmVmKTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSB0YXJnZXQg ZXhwcmVzc2lvbiBpcyB0byBiZSB1c2VkIGFzIGEgZ3JvdXBpbmcga2V5LCBpdAorCQkJICogc2hv dWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGdyb3VwZWQgcGF0aHMgdGhhdCBoYXZlIGJlZW4gcHVzaGVk CisJCQkgKiBkb3duIHRvIHRoaXMgcmVsYXRpb24gbGV2ZWwuCisJCQkgKi8KKwkJCWFkZF9jb2x1 bW5fdG9fcGF0aHRhcmdldCh0YXJnZXQsIGV4cHIsIHNvcnRncm91cHJlZik7CisKKwkJCS8qCisJ CQkgKiAuLi4gYW5kIGl0IGFsc28gc2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHBhdGhz LgorCQkJICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQoYWdnX2lucHV0LCBleHByLCBz b3J0Z3JvdXByZWYpOworCisJCQkvKgorCQkJICogUmVjb3JkIHRoaXMgU29ydEdyb3VwQ2xhdXNl IGFuZCBncm91cGluZyBleHByZXNzaW9uLiAgTm90ZSB0aGF0CisJCQkgKiB0aGlzIFNvcnRHcm91 cENsYXVzZSBtaWdodCBoYXZlIGFscmVhZHkgYmVlbiByZWNvcmRlZC4KKwkJCSAqLworCQkJaWYg KCFsaXN0X21lbWJlcigqZ3JvdXBfY2xhdXNlcywgc2djKSkKKwkJCXsKKwkJCQkqZ3JvdXBfY2xh dXNlcyA9IGxhcHBlbmQoKmdyb3VwX2NsYXVzZXMsIHNnYyk7CisJCQkJKmdyb3VwX2V4cHJzID0g bGFwcGVuZCgqZ3JvdXBfZXhwcnMsIGV4cHIpOworCQkJfQorCQl9CisJCWVsc2UgaWYgKGlzX3Zh cl9uZWVkZWRfYnlfam9pbihyb290LCAoVmFyICopIGV4cHIsIHJlbCkpCisJCXsKKwkJCS8qCisJ CQkgKiBUaGUgZXhwcmVzc2lvbiBpcyBuZWVkZWQgZm9yIGFuIHVwcGVyIGpvaW4gYnV0IGlzIG5l aXRoZXIgaW4KKwkJCSAqIHRoZSBHUk9VUCBCWSBjbGF1c2Ugbm9yIGRlcml2YWJsZSBmcm9tIGl0 IHVzaW5nIEVDIChvdGhlcndpc2UsCisJCQkgKiBpdCB3b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBp bmNsdWRlZCBpbiB0aGUgdGFyZ2V0cyBhYm92ZSkuICBXZQorCQkJICogbmVlZCB0byBjcmVhdGUg YSBzcGVjaWFsIFNvcnRHcm91cENsYXVzZSBmb3IgdGhpcyBleHByZXNzaW9uLgorCQkJICoKKwkJ CSAqIEl0IGlzIGltcG9ydGFudCB0byBpbmNsdWRlIHN1Y2ggZXhwcmVzc2lvbnMgaW4gdGhlIGdy b3VwaW5nCisJCQkgKiBrZXlzLiAgVGhpcyBpcyBlc3NlbnRpYWwgdG8gZW5zdXJlIHRoYXQgYW4g YWdncmVnYXRlZCByb3cgZnJvbQorCQkJICogdGhlIHBhcnRpYWwgYWdncmVnYXRpb24gbWF0Y2hl cyB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgam9pbiBpZgorCQkJICogYW5kIG9ubHkgaWYgZWFjaCBy b3cgaW4gdGhlIHBhcnRpYWwgZ3JvdXAgZG9lcy4gIFRoaXMgZW5zdXJlcworCQkJICogdGhhdCBh bGwgcm93cyB3aXRoaW4gdGhlIHNhbWUgcGFydGlhbCBncm91cCBzaGFyZSB0aGUgc2FtZQorCQkJ ICogJ2Rlc3RpbnknLCB3aGljaCBpcyBjcnVjaWFsIGZvciBtYWludGFpbmluZyBjb3JyZWN0bmVz cy4KKwkJCSAqLworCQkJU29ydEdyb3VwQ2xhdXNlICpzZ2M7CisJCQlUeXBlQ2FjaGVFbnRyeSAq dGNlOworCQkJT2lkCQkJZXF1YWxpbWFnZXByb2M7CisKKwkJCS8qCisJCQkgKiBCdXQgZmlyc3Qs IGNoZWNrIGlmIGVxdWFsaXR5IGltcGxpZXMgaW1hZ2UgZXF1YWxpdHkgZm9yIHRoaXMKKwkJCSAq IGV4cHJlc3Npb24uICBJZiBub3QsIHdlIGNhbm5vdCB1c2UgaXQgYXMgYSBncm91cGluZyBrZXku ICBTZWUKKwkJCSAqIGNvbW1lbnRzIGluIGNyZWF0ZV9ncm91cGluZ19leHByX2luZm9zKCkuCisJ CQkgKi8KKwkJCXRjZSA9IGxvb2t1cF90eXBlX2NhY2hlKGV4cHJUeXBlKChOb2RlICopIGV4cHIp LAorCQkJCQkJCQkJVFlQRUNBQ0hFX0JUUkVFX09QRkFNSUxZKTsKKwkJCWlmICghT2lkSXNWYWxp ZCh0Y2UtPmJ0cmVlX29wZikgfHwKKwkJCQkhT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29waW50eXBl KSkKKwkJCQlyZXR1cm4gZmFsc2U7CisKKwkJCWVxdWFsaW1hZ2Vwcm9jID0gZ2V0X29wZmFtaWx5 X3Byb2ModGNlLT5idHJlZV9vcGYsCisJCQkJCQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUs CisJCQkJCQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQkJCSAgIEJURVFV QUxJTUFHRV9QUk9DKTsKKwkJCWlmICghT2lkSXNWYWxpZChlcXVhbGltYWdlcHJvYykgfHwKKwkJ CQkhRGF0dW1HZXRCb29sKE9pZEZ1bmN0aW9uQ2FsbDFDb2xsKGVxdWFsaW1hZ2Vwcm9jLAorCQkJ CQkJCQkJCQkJICAgdGNlLT50eXBjb2xsYXRpb24sCisJCQkJCQkJCQkJCQkgICBPYmplY3RJZEdl dERhdHVtKHRjZS0+YnRyZWVfb3BpbnR5cGUpKSkpCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQkv KiBDcmVhdGUgdGhlIFNvcnRHcm91cENsYXVzZS4gKi8KKwkJCXNnYyA9IG1ha2VOb2RlKFNvcnRH cm91cENsYXVzZSk7CisKKwkJCS8qIEluaXRpYWxpemUgdGhlIFNvcnRHcm91cENsYXVzZS4gKi8K KwkJCXNnYy0+dGxlU29ydEdyb3VwUmVmID0gKyttYXhTb3J0R3JvdXBSZWY7CisJCQlnZXRfc29y dF9ncm91cF9vcGVyYXRvcnMoZXhwclR5cGUoKE5vZGUgKikgZXhwciksCisJCQkJCQkJCQkgZmFs c2UsIHRydWUsIGZhbHNlLAorCQkJCQkJCQkJICZzZ2MtPnNvcnRvcCwgJnNnYy0+ZXFvcCwgTlVM TCwKKwkJCQkJCQkJCSAmc2djLT5oYXNoYWJsZSk7CisKKwkJCS8qIFRoaXMgZXhwcmVzc2lvbiBz aG91bGQgYmUgZW1pdHRlZCBieSB0aGUgZ3JvdXBlZCBwYXRocyAqLworCQkJYWRkX2NvbHVtbl90 b19wYXRodGFyZ2V0KHRhcmdldCwgZXhwciwgc2djLT50bGVTb3J0R3JvdXBSZWYpOworCisJCQkv KiAuLi4gYW5kIGl0IGFsc28gc2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHBhdGhzLiAq LworCQkJYWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgZXhwciwgc2djLT50bGVT b3J0R3JvdXBSZWYpOworCisJCQkvKiBSZWNvcmQgdGhpcyBTb3J0R3JvdXBDbGF1c2UgYW5kIGdy b3VwaW5nIGV4cHJlc3Npb24gKi8KKwkJCSpncm91cF9jbGF1c2VzID0gbGFwcGVuZCgqZ3JvdXBf Y2xhdXNlcywgc2djKTsKKwkJCSpncm91cF9leHBycyA9IGxhcHBlbmQoKmdyb3VwX2V4cHJzLCBl eHByKTsKKwkJfQorCQllbHNlIGlmIChpc192YXJfaW5fYWdncmVmX29ubHkocm9vdCwgKFZhciAq KSBleHByKSkKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBleHByZXNzaW9uIGlzIHJlZmVyZW5jZWQg YnkgYW4gYWdncmVnYXRlIGZ1bmN0aW9uIHB1c2hlZAorCQkJICogZG93biB0byB0aGlzIHJlbGF0 aW9uIGFuZCBkb2VzIG5vdCBhcHBlYXIgZWxzZXdoZXJlIGluIHRoZQorCQkJICogdGFyZ2V0bGlz dCBvciBoYXZpbmdRdWFsLiAgQWRkIGl0IHRvICdhZ2dfaW5wdXQnIGJ1dCBub3QgdG8KKwkJCSAq ICd0YXJnZXQnLgorCQkJICovCisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19p bnB1dCwgZXhwcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Np b24gbWF5IGJlIGZ1bmN0aW9uYWxseSBkZXBlbmRlbnQgb24gb3RoZXIKKwkJCSAqIGV4cHJlc3Np b25zIGluIHRoZSB0YXJnZXQsIGJ1dCB3ZSBjYW5ub3QgdmVyaWZ5IHRoaXMgdW50aWwgYWxsCisJ CQkgKiB0YXJnZXQgZXhwcmVzc2lvbnMgaGF2ZSBiZWVuIGNvbnN0cnVjdGVkLgorCQkJICovCisJ CQlwb3NzaWJseV9kZXBlbmRlbnQgPSBsYXBwZW5kKHBvc3NpYmx5X2RlcGVuZGVudCwgZXhwcik7 CisJCX0KKwl9CisKKwkvKgorCSAqIE5vdyB3ZSBjYW4gdmVyaWZ5IHdoZXRoZXIgYW4gZXhwcmVz c2lvbiBpcyBmdW5jdGlvbmFsbHkgZGVwZW5kZW50IG9uCisJICogb3RoZXJzLgorCSAqLworCWZv cmVhY2gobGMsIHBvc3NpYmx5X2RlcGVuZGVudCkKKwl7CisJCVZhcgkJICAgKnR2YXI7CisJCUxp c3QJICAgKmRlcHMgPSBOSUw7CisJCVJhbmdlVGJsRW50cnkgKnJ0ZTsKKworCQl0dmFyID0gbGZp cnN0X25vZGUoVmFyLCBsYyk7CisJCXJ0ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbdHZhci0+ dmFybm9dOworCisJCWlmIChjaGVja19mdW5jdGlvbmFsX2dyb3VwaW5nKHJ0ZS0+cmVsaWQsIHR2 YXItPnZhcm5vLAorCQkJCQkJCQkJICB0dmFyLT52YXJsZXZlbHN1cCwKKwkJCQkJCQkJCSAgdGFy Z2V0LT5leHBycywgJmRlcHMpKQorCQl7CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Npb24gaXMg ZnVuY3Rpb25hbGx5IGRlcGVuZGVudCBvbiBvdGhlciB0YXJnZXQKKwkJCSAqIGV4cHJlc3Npb25z LCBzbyBpdCBjYW4gYmUgaW5jbHVkZWQgaW4gdGhlIHRhcmdldHMuICBTaW5jZSBpdAorCQkJICog d2lsbCBub3QgYmUgdXNlZCBhcyBhIGdyb3VwaW5nIGtleSwgYSBzb3J0Z3JvdXByZWYgaXMgbm90 CisJCQkgKiBuZWVkZWQgZm9yIGl0LgorCQkJICovCisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRo dGFyZ2V0KHRhcmdldCwgKEV4cHIgKikgdHZhcik7CisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRo dGFyZ2V0KGFnZ19pbnB1dCwgKEV4cHIgKikgdHZhcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkv KgorCQkJICogV2UgbWF5IGFycml2ZSBoZXJlIHdpdGggYSBncm91cGluZyBleHByZXNzaW9uIHRo YXQgaXMgcHJvdmVuCisJCQkgKiByZWR1bmRhbnQgYnkgRXF1aXZhbGVuY2VDbGFzcyBwcm9jZXNz aW5nLCBzdWNoIGFzICd0MS5hJyBpbiB0aGUKKwkJCSAqIHF1ZXJ5IGJlbG93LgorCQkJICoKKwkJ CSAqIHNlbGVjdCBtYXgodDEuYykgZnJvbSB0IHQxLCB0IHQyIHdoZXJlIHQxLmEgPSAxIGdyb3Vw IGJ5IHQxLmEsCisJCQkgKiB0MS5iOworCQkJICoKKwkJCSAqIEZvciBub3cgd2UganVzdCBnaXZl IHVwIGluIHRoaXMgY2FzZS4KKwkJCSAqLworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCisJ cmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBpc192YXJfaW5fYWdncmVmX29ubHkKKyAqCSAgQ2hl Y2sgd2hldGhlciB0aGUgZ2l2ZW4gVmFyIGFwcGVhcnMgaW4gYWdncmVnYXRlIGV4cHJlc3Npb25z IGFuZCBub3QKKyAqCSAgZWxzZXdoZXJlIGluIHRoZSB0YXJnZXRsaXN0IG9yIGhhdmluZ1F1YWwu CisgKi8KK3N0YXRpYyBib29sCitpc192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJv b3QsIFZhciAqdmFyKQoreworCUxpc3RDZWxsICAgKmxjOworCisJLyoKKwkgKiBTZWFyY2ggdGhl IGxpc3Qgb2YgYWdncmVnYXRlIGV4cHJlc3Npb25zIGZvciB0aGUgVmFyLgorCSAqLworCWZvcmVh Y2gobGMsIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCkKKwl7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2lu Zm8gPSBsZmlyc3Rfbm9kZShBZ2dDbGF1c2VJbmZvLCBsYyk7CisJCUxpc3QJICAgKnZhcnM7CisK KwkJQXNzZXJ0KElzQShhY19pbmZvLT5hZ2dyZWYsIEFnZ3JlZikpOworCisJCWlmICghYm1zX2lz X21lbWJlcih2YXItPnZhcm5vLCBhY19pbmZvLT5hZ2dfZXZhbF9hdCkpCisJCQljb250aW51ZTsK KworCQl2YXJzID0gcHVsbF92YXJfY2xhdXNlKChOb2RlICopIGFjX2luZm8tPmFnZ3JlZiwKKwkJ CQkJCQkgICBQVkNfUkVDVVJTRV9BR0dSRUdBVEVTIHwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9X SU5ET1dGVU5DUyB8CisJCQkJCQkJICAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTKTsKKworCQlp ZiAobGlzdF9tZW1iZXIodmFycywgdmFyKSkKKwkJeworCQkJbGlzdF9mcmVlKHZhcnMpOworCQkJ YnJlYWs7CisJCX0KKworCQlsaXN0X2ZyZWUodmFycyk7CisJfQorCisJcmV0dXJuIChsYyAhPSBO VUxMICYmICFsaXN0X21lbWJlcihyb290LT50bGlzdF92YXJzLCB2YXIpKTsKK30KKworLyoKKyAq IGlzX3Zhcl9uZWVkZWRfYnlfam9pbgorICoJICBDaGVjayBpZiB0aGUgZ2l2ZW4gVmFyIGlzIG5l ZWRlZCBieSBqb2lucyBhYm92ZSB0aGUgY3VycmVudCByZWwuCisgKi8KK3N0YXRpYyBib29sCitp c192YXJfbmVlZGVkX2J5X2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyLCBSZWxPcHRJ bmZvICpyZWwpCit7CisJUmVsaWRzCQlyZWxpZHM7CisJaW50CQkJYXR0bm87CisJUmVsT3B0SW5m byAqYmFzZXJlbDsKKworCS8qCisJICogTm90ZSB0aGF0IHdoZW4gY2hlY2tpbmcgaWYgdGhlIFZh ciBpcyBuZWVkZWQgYnkgam9pbnMgYWJvdmUsIHdlIHdhbnQgdG8KKwkgKiBleGNsdWRlIGNhc2Vz IHdoZXJlIHRoZSBWYXIgaXMgb25seSBuZWVkZWQgaW4gdGhlIGZpbmFsIHRhcmdldGxpc3QuICBT bworCSAqIGluY2x1ZGUgInJlbGF0aW9uIDAiIGluIHRoZSBjaGVjay4KKwkgKi8KKwlyZWxpZHMg PSBibXNfY29weShyZWwtPnJlbGlkcyk7CisJcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIocmVsaWRz LCAwKTsKKworCWJhc2VyZWwgPSBmaW5kX2Jhc2VfcmVsKHJvb3QsIHZhci0+dmFybm8pOworCWF0 dG5vID0gdmFyLT52YXJhdHRubyAtIGJhc2VyZWwtPm1pbl9hdHRyOworCisJcmV0dXJuIGJtc19u b25lbXB0eV9kaWZmZXJlbmNlKGJhc2VyZWwtPmF0dHJfbmVlZGVkW2F0dG5vXSwgcmVsaWRzKTsK K30KKworLyoKKyAqIGdldF9leHByZXNzaW9uX3NvcnRncm91cHJlZgorICoJICBSZXR1cm4gdGhl IHNvcnRncm91cHJlZiBvZiB0aGUgZ2l2ZW4gImV4cHIiIGlmIGl0IGlzIGZvdW5kIGFtb25nIHRo ZQorICoJICBvcmlnaW5hbCBncm91cGluZyBleHByZXNzaW9ucywgb3IgaXMga25vd24gZXF1YWwg dG8gYW55IG9mIHRoZSBvcmlnaW5hbAorICoJICBncm91cGluZyBleHByZXNzaW9ucyBkdWUgdG8g ZXF1aXZhbGVuY2UgcmVsYXRpb25zaGlwcy4gIFJldHVybiAwIGlmIG5vCisgKgkgIG1hdGNoIGlz IGZvdW5kLgorICovCitzdGF0aWMgSW5kZXgKK2dldF9leHByZXNzaW9uX3NvcnRncm91cHJlZihQ bGFubmVySW5mbyAqcm9vdCwgRXhwciAqZXhwcikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCUFz c2VydChJc0EoZXhwciwgVmFyKSk7CisKKwlmb3JlYWNoKGxjLCByb290LT5ncm91cF9leHByX2xp c3QpCisJeworCQlHcm91cGluZ0V4cHJJbmZvICpnZV9pbmZvID0gbGZpcnN0X25vZGUoR3JvdXBp bmdFeHBySW5mbywgbGMpOworCQlMaXN0Q2VsbCAgICpsYzE7CisKKwkJQXNzZXJ0KElzQShnZV9p bmZvLT5leHByLCBWYXIpKTsKKwkJQXNzZXJ0KGdlX2luZm8tPnNvcnRncm91cHJlZiA+IDApOwor CisJCWlmIChlcXVhbChleHByLCBnZV9pbmZvLT5leHByKSkKKwkJCXJldHVybiBnZV9pbmZvLT5z b3J0Z3JvdXByZWY7CisKKwkJaWYgKGdlX2luZm8tPmVjID09IE5VTEwgfHwKKwkJCSFibXNfaXNf bWVtYmVyKCgoVmFyICopIGV4cHIpLT52YXJubywgZ2VfaW5mby0+ZWMtPmVjX3JlbGlkcykpCisJ CQljb250aW51ZTsKKworCQkvKgorCQkgKiBTY2FuIHRoZSBFcXVpdmFsZW5jZUNsYXNzLCBsb29r aW5nIGZvciBhIG1hdGNoIHRvIHRoZSBnaXZlbgorCQkgKiBleHByZXNzaW9uLiAgV2UgaWdub3Jl IGNoaWxkIG1lbWJlcnMgaGVyZS4KKwkJICovCisJCWZvcmVhY2gobGMxLCBnZV9pbmZvLT5lYy0+ ZWNfbWVtYmVycykKKwkJeworCQkJRXF1aXZhbGVuY2VNZW1iZXIgKmVtID0gKEVxdWl2YWxlbmNl TWVtYmVyICopIGxmaXJzdChsYzEpOworCisJCQkvKiBDaGlsZCBtZW1iZXJzIHNob3VsZCBub3Qg ZXhpc3QgaW4gZWNfbWVtYmVycyAqLworCQkJQXNzZXJ0KCFlbS0+ZW1faXNfY2hpbGQpOworCisJ CQlpZiAoZXF1YWwoZXhwciwgZW0tPmVtX2V4cHIpKQorCQkJCXJldHVybiBnZV9pbmZvLT5zb3J0 Z3JvdXByZWY7CisJCX0KKwl9CisKKwkvKiBubyBtYXRjaCBpcyBmb3VuZCAqLworCXJldHVybiAw OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5k YXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRleCA2YmM2 YmUxM2QyYS4uYjE3NmQ1MTMwZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFt ZXRlcnMuZGF0CkBAIC0xNDUsNiArMTQ1LDEzIEBACiAgIGJvb3RfdmFsID0+ICdmYWxzZScsCiB9 LAogCit7IG5hbWUgPT4gJ2VuYWJsZV9lYWdlcl9hZ2dyZWdhdGUnLCB0eXBlID0+ICdib29sJywg Y29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9PiAnUVVFUllfVFVOSU5HX01FVEhPRCcs CisgIHNob3J0X2Rlc2MgPT4gJ0VuYWJsZXMgZWFnZXIgYWdncmVnYXRpb24uJywKKyAgZmxhZ3Mg PT4gJ0dVQ19FWFBMQUlOJywKKyAgdmFyaWFibGUgPT4gJ2VuYWJsZV9lYWdlcl9hZ2dyZWdhdGUn LAorICBib290X3ZhbCA9PiAndHJ1ZScsCit9LAorCiB7IG5hbWUgPT4gJ2VuYWJsZV9wYXJhbGxl bF9hcHBlbmQnLCB0eXBlID0+ICdib29sJywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91 cCA9PiAnUVVFUllfVFVOSU5HX01FVEhPRCcsCiAgIHNob3J0X2Rlc2MgPT4gJ0VuYWJsZXMgdGhl IHBsYW5uZXJcJ3MgdXNlIG9mIHBhcmFsbGVsIGFwcGVuZCBwbGFucy4nLAogICBmbGFncyA9PiAn R1VDX0VYUExBSU4nLApAQCAtMjQyNyw2ICsyNDM0LDE1IEBACiAgIG1heCA9PiAnREJMX01BWCcs CiB9LAogCit7IG5hbWUgPT4gJ21pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZScsIHR5cGUgPT4gJ3Jl YWwnLCBjb250ZXh0ID0+ICdQR0NfVVNFUlNFVCcsIGdyb3VwID0+ICdRVUVSWV9UVU5JTkdfQ09T VCcsCisgIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIG1pbmltdW0gYXZlcmFnZSBncm91cCBzaXpl IHJlcXVpcmVkIHRvIGNvbnNpZGVyIGFwcGx5aW5nIGVhZ2VyIGFnZ3JlZ2F0aW9uLicsCisgIGZs YWdzID0+ICdHVUNfRVhQTEFJTicsCisgIHZhcmlhYmxlID0+ICdtaW5fZWFnZXJfYWdnX2dyb3Vw X3NpemUnLAorICBib290X3ZhbCA9PiAnOC4wJywKKyAgbWluID0+ICcwLjAnLAorICBtYXggPT4g J0RCTF9NQVgnLAorfSwKKwogeyBuYW1lID0+ICdjdXJzb3JfdHVwbGVfZnJhY3Rpb24nLCB0eXBl ID0+ICdyZWFsJywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9PiAnUVVFUllfVFVO SU5HX09USEVSJywKICAgc2hvcnRfZGVzYyA9PiAnU2V0cyB0aGUgcGxhbm5lclwncyBlc3RpbWF0 ZSBvZiB0aGUgZnJhY3Rpb24gb2YgYSBjdXJzb3JcJ3Mgcm93cyB0aGF0IHdpbGwgYmUgcmV0cmll dmVkLicsCiAgIGZsYWdzID0+ICdHVUNfRVhQTEFJTicsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggYzM2ZmNiOWFiNjEuLmM1ZDYxMmFiNTUy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1w bGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBA IC00MjgsNiArNDI4LDcgQEAKICNlbmFibGVfZ3JvdXBfYnlfcmVvcmRlcmluZyA9IG9uCiAjZW5h YmxlX2Rpc3RpbmN0X3Jlb3JkZXJpbmcgPSBvbgogI2VuYWJsZV9zZWxmX2pvaW5fZWxpbWluYXRp b24gPSBvbgorI2VuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgPSBvbgogCiAjIC0gUGxhbm5lciBDb3N0 IENvbnN0YW50cyAtCiAKQEAgLTQ0MSw2ICs0NDIsNyBAQAogI21pbl9wYXJhbGxlbF90YWJsZV9z Y2FuX3NpemUgPSA4TUIKICNtaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplID0gNTEya0IKICNl ZmZlY3RpdmVfY2FjaGVfc2l6ZSA9IDRHQgorI21pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZSA9IDgu MAogCiAjaml0X2Fib3ZlX2Nvc3QgPSAxMDAwMDAJCSMgcGVyZm9ybSBKSVQgY29tcGlsYXRpb24g aWYgYXZhaWxhYmxlCiAJCQkJCSMgYW5kIHF1ZXJ5IG1vcmUgZXhwZW5zaXZlIHRoYW4gdGhpczsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggYjEyYTI1MDhkOGMuLjc5OGI0MzFjNWFhIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaApAQCAtMzkxLDYgKzM5MSwxNSBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAkv KiBsaXN0IG9mIFBsYWNlSG9sZGVySW5mb3MgKi8KIAlMaXN0CSAgICpwbGFjZWhvbGRlcl9saXN0 OwogCisJLyogbGlzdCBvZiBBZ2dDbGF1c2VJbmZvcyAqLworCUxpc3QJICAgKmFnZ19jbGF1c2Vf bGlzdDsKKworCS8qIGxpc3Qgb2YgR3JvdXBFeHBySW5mb3MgKi8KKwlMaXN0CSAgICpncm91cF9l eHByX2xpc3Q7CisKKwkvKiBsaXN0IG9mIHBsYWluIFZhcnMgY29udGFpbmVkIGluIHRhcmdldGxp c3QgYW5kIGhhdmluZ1F1YWwgKi8KKwlMaXN0CSAgICp0bGlzdF92YXJzOworCiAJLyogYXJyYXkg b2YgUGxhY2VIb2xkZXJJbmZvcyBpbmRleGVkIGJ5IHBoaWQgKi8KIAlzdHJ1Y3QgUGxhY2VIb2xk ZXJJbmZvICoqcGxhY2Vob2xkZXJfYXJyYXkgcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3Jl LCBhcnJheV9zaXplKHBsYWNlaG9sZGVyX2FycmF5X3NpemUpKTsKIAkvKiBhbGxvY2F0ZWQgc2l6 ZSBvZiBhcnJheSAqLwpAQCAtMTA0MCw2ICsxMDQ5LDE0IEBAIHR5cGVkZWYgc3RydWN0IFJlbE9w dEluZm8KIAkvKiBjb25zaWRlciBwYXJ0aXRpb253aXNlIGpvaW4gcGF0aHM/IChpZiBwYXJ0aXRp b25lZCByZWwpICovCiAJYm9vbAkJY29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luOwogCisJLyoK KwkgKiB1c2VkIGJ5IGVhZ2VyIGFnZ3JlZ2F0aW9uOgorCSAqLworCS8qIGluZm9ybWF0aW9uIG5l ZWRlZCB0byBjcmVhdGUgZ3JvdXBlZCBwYXRocyAqLworCXN0cnVjdCBSZWxBZ2dJbmZvICphZ2df aW5mbzsKKwkvKiB0aGUgcGFydGlhbGx5LWFnZ3JlZ2F0ZWQgdmVyc2lvbiBvZiB0aGUgcmVsYXRp b24gKi8KKwlzdHJ1Y3QgUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWw7CisKIAkvKgogCSAqIGluaGVy aXRhbmNlIGxpbmtzLCBpZiB0aGlzIGlzIGFuIG90aGVycmVsIChvdGhlcndpc2UgTlVMTCk6CiAJ ICovCkBAIC0xMTI0LDYgKzExNDEsNjMgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsT3B0SW5mbwogCSgo bm9taW5hbF9qb2ludHlwZSkgPT0gSk9JTl9JTk5FUiAmJiAoc2ppbmZvKS0+am9pbnR5cGUgPT0g Sk9JTl9TRU1JICYmIFwKIAkgYm1zX2VxdWFsKChzamluZm8pLT5zeW5fcmlnaHRoYW5kLCAocmVs KS0+cmVsaWRzKSkKIAorLyoKKyAqIElzIHRoZSBnaXZlbiByZWxhdGlvbiBhIGdyb3VwZWQgcmVs YXRpb24/CisgKi8KKyNkZWZpbmUgSVNfR1JPVVBFRF9SRUwocmVsKSBcCisJKChyZWwpLT5hZ2df aW5mbyAhPSBOVUxMKQorCisvKgorICogUmVsQWdnSW5mbworICoJCUluZm9ybWF0aW9uIG5lZWRl ZCB0byBjcmVhdGUgcGF0aHMgZm9yIGEgZ3JvdXBlZCByZWxhdGlvbi4KKyAqCisgKiAidGFyZ2V0 IiBpcyB0aGUgZGVmYXVsdCByZXN1bHQgdGFyZ2V0bGlzdCBmb3IgUGF0aHMgc2Nhbm5pbmcgdGhp cyBncm91cGVkCisgKiByZWxhdGlvbjsgbGlzdCBvZiBWYXJzL0V4cHJzLCBjb3N0LCB3aWR0aC4K KyAqCisgKiAiYWdnX2lucHV0IiBpcyB0aGUgb3V0cHV0IHRsaXN0IGZvciB0aGUgcGF0aHMgdGhh dCBwcm92aWRlIGlucHV0IHRvIHRoZQorICogZ3JvdXBlZCBwYXRocy4gIE9uZSBkaWZmZXJlbmNl IGZyb20gdGhlIHJlbHRhcmdldCBvZiB0aGUgbm9uLWdyb3VwZWQKKyAqIHJlbGF0aW9uIGlzIHRo YXQgYWdnX2lucHV0IGhhcyBpdHMgc29ydGdyb3VwcmVmc1tdIGluaXRpYWxpemVkLgorICoKKyAq ICJncm91cF9jbGF1c2VzIiBhbmQgImdyb3VwX2V4cHJzIiBhcmUgbGlzdHMgb2YgU29ydEdyb3Vw Q2xhdXNlcyBhbmQgdGhlCisgKiBjb3JyZXNwb25kaW5nIGdyb3VwaW5nIGV4cHJlc3Npb25zLgor ICoKKyAqICJhcHBseV9hdCIgdHJhY2tzIHRoZSBzZXQgb2YgcmVsaWRzIGF0IHdoaWNoIHBhcnRp YWwgYWdncmVnYXRpb24gaXMgYXBwbGllZAorICogaW4gdGhlIHBhdGhzIG9mIHRoaXMgZ3JvdXBl ZCByZWxhdGlvbi4KKyAqCisgKiAiZ3JvdXBlZF9yb3dzIiBpcyB0aGUgZXN0aW1hdGVkIG51bWJl ciBvZiByZXN1bHQgdHVwbGVzIG9mIHRoZSBncm91cGVkCisgKiByZWxhdGlvbi4KKyAqCisgKiAi YWdnX3VzZWZ1bCIgaXMgYSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGdyb3VwZWQgcGF0 aHMgYXJlIGNvbnNpZGVyZWQKKyAqIHVzZWZ1bC4gIEl0IGlzIHNldCB0cnVlIGlmIHRoZSBhdmVy YWdlIHBhcnRpYWwgZ3JvdXAgc2l6ZSBpcyBubyBsZXNzIHRoYW4KKyAqIG1pbl9lYWdlcl9hZ2df Z3JvdXBfc2l6ZSwgc3VnZ2VzdGluZyBhIHNpZ25pZmljYW50IHJvdyBjb3VudCByZWR1Y3Rpb24u CisgKi8KK3R5cGVkZWYgc3RydWN0IFJlbEFnZ0luZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fY29w eV9lcXVhbCwgbm9fcmVhZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9kZVRhZwkJdHlwZTsKKwor CS8qIHRoZSBvdXRwdXQgdGxpc3QgZm9yIHRoZSBncm91cGVkIHBhdGhzICovCisJc3RydWN0IFBh dGhUYXJnZXQgKnRhcmdldDsKKworCS8qIHRoZSBvdXRwdXQgdGxpc3QgZm9yIHRoZSBpbnB1dCBw YXRocyAqLworCXN0cnVjdCBQYXRoVGFyZ2V0ICphZ2dfaW5wdXQ7CisKKwkvKiBhIGxpc3Qgb2Yg U29ydEdyb3VwQ2xhdXNlcyAqLworCUxpc3QJICAgKmdyb3VwX2NsYXVzZXM7CisJLyogYSBsaXN0 IG9mIGdyb3VwaW5nIGV4cHJlc3Npb25zICovCisJTGlzdAkgICAqZ3JvdXBfZXhwcnM7CisKKwkv KiB0aGUgc2V0IG9mIHJlbGlkcyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpZWQgYXQgKi8K KwlSZWxpZHMJCWFwcGx5X2F0OworCisJLyogZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVw bGVzICovCisJQ2FyZGluYWxpdHkgZ3JvdXBlZF9yb3dzOworCisJLyogdGhlIGdyb3VwZWQgcGF0 aHMgYXJlIGNvbnNpZGVyZWQgdXNlZnVsPyAqLworCWJvb2wJCWFnZ191c2VmdWw7Cit9IFJlbEFn Z0luZm87CisKIC8qCiAgKiBJbmRleE9wdEluZm8KICAqCQlQZXItaW5kZXggaW5mb3JtYXRpb24g Zm9yIHBsYW5uaW5nL29wdGltaXphdGlvbgpAQCAtMzI2OCw2ICszMzQyLDQ5IEBAIHR5cGVkZWYg c3RydWN0IE1pbk1heEFnZ0luZm8KIAlQYXJhbQkgICAqcGFyYW07CiB9IE1pbk1heEFnZ0luZm87 CiAKKy8qCisgKiBGb3IgZWFjaCBkaXN0aW5jdCBBZ2dyZWYgbm9kZSB0aGF0IGFwcGVhcnMgaW4g dGhlIHRhcmdldGxpc3QgYW5kIEhBVklORworICogY2xhdXNlcywgd2Ugc3RvcmUgYW4gQWdnQ2xh dXNlSW5mbyBub2RlIGluIHRoZSBQbGFubmVySW5mbyBub2RlJ3MKKyAqIGFnZ19jbGF1c2VfbGlz dC4gIEVhY2ggQWdnQ2xhdXNlSW5mbyByZWNvcmRzIHRoZSBzZXQgb2YgcmVsYXRpb25zIHJlZmVy ZW5jZWQKKyAqIGJ5IHRoZSBhZ2dyZWdhdGUgZXhwcmVzc2lvbi4gIFRoaXMgaW5mb3JtYXRpb24g aXMgdXNlZCB0byBkZXRlcm1pbmUgaG93IGZhcgorICogdGhlIGFnZ3JlZ2F0ZSBjYW4gYmUgc2Fm ZWx5IHB1c2hlZCBkb3duIGluIHRoZSBqb2luIHRyZWUuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFn Z0NsYXVzZUluZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fcmVhZCwgbm9fcXVlcnlfanVtYmxlKQor CisJTm9kZVRhZwkJdHlwZTsKKworCS8qIHRoZSBBZ2dyZWYgZXhwciAqLworCUFnZ3JlZgkgICAq YWdncmVmOworCisJLyogbG93ZXN0IGxldmVsIHdlIGNhbiBldmFsdWF0ZSB0aGlzIGFnZ3JlZ2F0 ZSBhdCAqLworCVJlbGlkcwkJYWdnX2V2YWxfYXQ7Cit9IEFnZ0NsYXVzZUluZm87CisKKy8qCisg KiBGb3IgZWFjaCBncm91cGluZyBleHByZXNzaW9uIHRoYXQgYXBwZWFycyBpbiBncm91cGluZyBj bGF1c2VzLCB3ZSBzdG9yZSBhCisgKiBHcm91cGluZ0V4cHJJbmZvIG5vZGUgaW4gdGhlIFBsYW5u ZXJJbmZvIG5vZGUncyBncm91cF9leHByX2xpc3QuICBFYWNoCisgKiBHcm91cGluZ0V4cHJJbmZv IHJlY29yZHMgdGhlIGV4cHJlc3Npb24gYmVpbmcgZ3JvdXBlZCBvbiwgaXRzIHNvcnRncm91cHJl ZiwKKyAqIGFuZCB0aGUgRXF1aXZhbGVuY2VDbGFzcyBpdCBiZWxvbmdzIHRvLiAgVGhpcyBpbmZv cm1hdGlvbiBpcyBuZWNlc3NhcnkgdG8KKyAqIHJlcHJvZHVjZSBjb3JyZWN0IGdyb3VwaW5nIHNl bWFudGljcyBhdCBkaWZmZXJlbnQgbGV2ZWxzIG9mIHRoZSBqb2luIHRyZWUuCisgKi8KK3R5cGVk ZWYgc3RydWN0IEdyb3VwaW5nRXhwckluZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fcmVhZCwgbm9f cXVlcnlfanVtYmxlKQorCisJTm9kZVRhZwkJdHlwZTsKKworCS8qIHRoZSByZXByZXNlbnRlZCBl eHByZXNzaW9uICovCisJRXhwcgkgICAqZXhwcjsKKworCS8qIHRoZSB0bGVTb3J0R3JvdXBSZWYg b2YgdGhlIGNvcnJlc3BvbmRpbmcgU29ydEdyb3VwQ2xhdXNlICovCisJSW5kZXgJCXNvcnRncm91 cHJlZjsKKworCS8qIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyB0aGUgZXhwcmVzc2lvbiBiZWxvbmdz IHRvICovCisJRXF1aXZhbGVuY2VDbGFzcyAqZWMgcGdfbm9kZV9hdHRyKGNvcHlfYXNfc2NhbGFy LCBlcXVhbF9hc19zY2FsYXIpOworfSBHcm91cGluZ0V4cHJJbmZvOworCiAvKgogICogQXQgcnVu dGltZSwgUEFSQU1fRVhFQyBzbG90cyBhcmUgdXNlZCB0byBwYXNzIHZhbHVlcyBhcm91bmQgZnJv bSBvbmUgcGxhbgogICogbm9kZSB0byBhbm90aGVyLiAgVGhleSBjYW4gYmUgdXNlZCB0byBwYXNz IHZhbHVlcyBkb3duIGludG8gc3VicXVlcmllcyAoZm9yCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5o CmluZGV4IDc2M2NkMjViYjNjLi5kYTYwMzgzYzJhYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv b3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2Rl LmgKQEAgLTMxMiw2ICszMTIsOCBAQCBleHRlcm4gdm9pZCBzZXR1cF9zaW1wbGVfcmVsX2FycmF5 cyhQbGFubmVySW5mbyAqcm9vdCk7CiBleHRlcm4gdm9pZCBleHBhbmRfcGxhbm5lcl9hcnJheXMo UGxhbm5lckluZm8gKnJvb3QsIGludCBhZGRfc2l6ZSk7CiBleHRlcm4gUmVsT3B0SW5mbyAqYnVp bGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLAogCQkJCQkJCQkJUmVs T3B0SW5mbyAqcGFyZW50KTsKK2V4dGVybiBSZWxPcHRJbmZvICpidWlsZF9zaW1wbGVfZ3JvdXBl ZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCk7CitleHRlcm4gUmVsT3B0 SW5mbyAqYnVpbGRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJl bCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbChQbGFubmVySW5mbyAqcm9vdCwg aW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJbmZvICpmaW5kX2Jhc2VfcmVsX25vZXJyKFBsYW5u ZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9y ZWxfaWdub3JlX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCk7CkBAIC0zNTEsNCAr MzUzLDYgQEAgZXh0ZXJuIFJlbE9wdEluZm8gKmJ1aWxkX2NoaWxkX2pvaW5fcmVsKFBsYW5uZXJJ bmZvICpyb290LAogCQkJCQkJCQkJCVNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLAogCQkJCQkJCQkJ CWludCBuYXBwaW5mb3MsIEFwcGVuZFJlbEluZm8gKiphcHBpbmZvcyk7CiAKK2V4dGVybiBSZWxB Z2dJbmZvICpjcmVhdGVfcmVsX2FnZ19pbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwsCisJCQkJCQkJCQkgICBib29sIGNhbGN1bGF0ZV9ncm91cGVkX3Jvd3MpOwogI2VuZGlm CQkJCQkJCS8qIFBBVEhOT0RFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci9wYXRocy5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKaW5kZXggY2JhZGU3N2I3 MTcuLmY2YTYyZGYwYjQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMu aAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaApAQCAtMjEsNyArMjEsOSBAQAog ICogYWxscGF0aHMuYwogICovCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfZ2VxbzsK K2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU7CiBleHRlcm4g UEdETExJTVBPUlQgaW50IGdlcW9fdGhyZXNob2xkOworZXh0ZXJuIFBHRExMSU1QT1JUIGRvdWJs ZSBtaW5fZWFnZXJfYWdnX2dyb3VwX3NpemU7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1pbl9w YXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1pbl9wYXJh bGxlbF9pbmRleF9zY2FuX3NpemU7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfZ3Jv dXBfYnlfcmVvcmRlcmluZzsKQEAgLTU3LDYgKzU5LDggQEAgZXh0ZXJuIHZvaWQgZ2VuZXJhdGVf Z2F0aGVyX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJ CSAgYm9vbCBvdmVycmlkZV9yb3dzKTsKIGV4dGVybiB2b2lkIGdlbmVyYXRlX3VzZWZ1bF9nYXRo ZXJfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkg Ym9vbCBvdmVycmlkZV9yb3dzKTsKK2V4dGVybiB2b2lkIGdlbmVyYXRlX2dyb3VwZWRfcGF0aHMo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmdyb3VwZWRfcmVsLAorCQkJCQkJCQkgICBS ZWxPcHRJbmZvICpyZWwpOwogZXh0ZXJuIGludAljb21wdXRlX3BhcmFsbGVsX3dvcmtlcihSZWxP cHRJbmZvICpyZWwsIGRvdWJsZSBoZWFwX3BhZ2VzLAogCQkJCQkJCQkJZG91YmxlIGluZGV4X3Bh Z2VzLCBpbnQgbWF4X3dvcmtlcnMpOwogZXh0ZXJuIHZvaWQgY3JlYXRlX3BhcnRpYWxfYml0bWFw X3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9w bGFubWFpbi5oCmluZGV4IDlkM2RlYmNhYjI4Li4wOWI0OGIyNmY4ZiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BsYW5tYWluLmgKQEAgLTc2LDYgKzc2LDcgQEAgZXh0ZXJuIHZvaWQgYWRkX3ZhcnNfdG9fdGFy Z2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqdmFycywKIGV4dGVybiB2b2lkIGFkZF92 YXJzX3RvX2F0dHJfbmVlZGVkKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICp2YXJzLAogCQkJCQkJ CQkJUmVsaWRzIHdoZXJlX25lZWRlZCk7CiBleHRlcm4gdm9pZCByZW1vdmVfdXNlbGVzc19ncm91 cGJ5X2NvbHVtbnMoUGxhbm5lckluZm8gKnJvb3QpOworZXh0ZXJuIHZvaWQgc2V0dXBfZWFnZXJf YWdncmVnYXRpb24oUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJuIHZvaWQgZmluZF9sYXRlcmFs X3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJuIHZvaWQgcmVidWlsZF9sYXRl cmFsX2F0dHJfbmVlZGVkKFBsYW5uZXJJbmZvICpyb290KTsKIGV4dGVybiB2b2lkIGNyZWF0ZV9s YXRlcmFsX2pvaW5faW5mbyhQbGFubmVySW5mbyAqcm9vdCk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dAppbmRleCA2OTgwNWQ0YjllYy4uZWY3OWQ2 ZjFkZWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3Uu dXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4 Lm91dApAQCAtMjQzNywxMSArMjQzNywxMSBAQCBTRUxFQ1QgYyBjb2xsYXRlICJDIiwgY291bnQo YykgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYyBjb2xsYXRlICJDIiBPUkRFUiBCWSAxOwogU0VU IGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8gZmFsc2U7CiBFWFBMQUlOIChDT1NUUyBPRkYp CiBTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3Rh YjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMi OwotICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNvcnQKICAgIFNvcnQgS2V5 OiB0MS5jIENPTExBVEUgIkMiCi0gICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgLT4gIEZpbmFsaXpl IEhhc2hBZ2dyZWdhdGUKICAgICAgICAgIEdyb3VwIEtleTogdDEuYwogICAgICAgICAgLT4gIEhh c2ggSm9pbgogICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYyA9IHQyLmMpCkBAIC0yNDQ5 LDEwICsyNDQ5LDEyIEBAIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0 MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VCiAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQxXzEKICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEgdDFfMgogICAgICAgICAgICAgICAgLT4g IEhhc2gKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIgdDJfMQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMSB0Ml8yCi0oMTMgcm93 cykKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYworICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQyXzIKKygxNSByb3dzKQogCiBT RUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMg dDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOwog IGMgfCBjb3VudCAKQEAgLTI0NjQsMTEgKzI0NjYsMTEgQEAgU0VMRUNUIHQxLmMsIGNvdW50KHQy LmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdS T1UKIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CiBFWFBMQUlOIChDT1NU UyBPRkYpCiBTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBw YWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExB VEUgIkMiOwotICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNvcnQKICAgIFNv cnQgS2V5OiB0MS5jIENPTExBVEUgIkMiCi0gICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgLT4gIEZp bmFsaXplIEhhc2hBZ2dyZWdhdGUKICAgICAgICAgIEdyb3VwIEtleTogdDEuYwogICAgICAgICAg LT4gIEhhc2ggSm9pbgogICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYyA9IHQyLmMpCkBA IC0yNDc2LDEwICsyNDc4LDEyIEBAIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2df dGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VCiAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQxXzEKICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEgdDFfMgogICAgICAgICAgICAg ICAgLT4gIEhhc2gKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIgdDJfMQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMSB0Ml8yCi0o MTMgcm93cykKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYworICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQyXzIKKygxNSByb3dz KQogCiBTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdn X3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUg IkMiOwogIGMgfCBjb3VudCAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv ZWFnZXJfYWdncmVnYXRlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdn cmVnYXRlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmMwZjhj MTRlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2Vy X2FnZ3JlZ2F0ZS5vdXQKQEAgLTAsMCArMSwxNzE0IEBACistLQorLS0gRUFHRVIgQUdHUkVHQVRJ T04KKy0tIFRlc3Qgd2UgY2FuIHB1c2ggYWdncmVnYXRpb24gZG93biBiZWxvdyBqb2luCistLQor LS0gRW5hYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVk LgorU0VUIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgVE8gb247CitDUkVBVEUgVEFCTEUgZWFnZXJf YWdnX3QxIChhIGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUg ZWFnZXJfYWdnX3QyIChhIGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitDUkVBVEUg VEFCTEUgZWFnZXJfYWdnX3QzIChhIGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitJ TlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDEgU0VMRUNUIGksIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwMCkgaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MiBTRUxFQ1QgaSwgaSUxMCwg aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworSU5TRVJUIElOVE8gZWFnZXJfYWdn X3QzIFNFTEVDVCBpJTEwLCBpJTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7 CitBTkFMWVpFIGVhZ2VyX2FnZ190MTsKK0FOQUxZWkUgZWFnZXJfYWdnX3QyOworQU5BTFlaRSBl YWdlcl9hZ2dfdDM7CistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGJhc2UgcmVs CistLQorLS0gUGVyZm9ybSBzY2FuIG9mIGEgdGFibGUsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBq b2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0gYW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlv bi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykK KyAgRlJPTSBlYWdlcl9hZ2dfdDEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9 IHQyLmIKK0dST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisg ICBHcm91cCBLZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQ QVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5j KSkKKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisoMTggcm93 cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBK T0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYgorR1JPVVAgQlkgdDEuYSBPUkRFUiBC WSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5NworIDMgfCA0 OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8IDUwMworIDkg fCA1MDQKKyg5IHJvd3MpCisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcgYWdncmVn YXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpCisgIEZST00gZWFnZXJfYWdnX3QxIHQxCisg IEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iCitHUk9VUCBCWSB0MS5hIE9SREVS IEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdy b3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAgR3JvdXAgS2V5OiB0 MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIu YykpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZnKHQyLmMpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Mi5jLCB0Mi5iCisoMjEgcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKQorICBGUk9NIGVh Z2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYgorR1JP VVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2 CisgMiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwg NTAyCisgOCB8IDUwMworIDkgfCA1MDQKKyg5IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9oYXNoYWdn OworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0KKy0tIFBl cmZvcm0gam9pbiBvZiB0YWJsZXMsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBqb2luIGl0IHRvIHRo ZSBvdGhlciB0YWJsZQorLS0gYW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlvbi4KK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpCisgIEZS T00gZWFnZXJfYWdnX3QxIHQxCisgIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5i CisgIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hCitHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2ZygodDIuYyAr IHQzLmMpKQorICAgR3JvdXAgS2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0 OiB0MS5hLCAoUEFSVElBTCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICBTb3J0IEtleTog dDEuYQorICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5h LCAoUEFSVElBTCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0MS5iID0gdDIuYikKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3QxIHQxCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQx LmMKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyLmIsIChQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKSkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIuYiwgUEFSVElBTCBhdmcoKHQyLmMgKyB0My5jKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5j LCB0Mi5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0My5hID0gdDIuYSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QzIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzLmEsIHQzLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMs IHQyLmIsIHQyLmEKKygyNSByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKQor ICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYgorICBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYQorR1JPVVAgQlkgdDEu YSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk3CisgMiB8IDQ5 OQorIDMgfCA1MDEKKyA0IHwgNTAzCisgNSB8IDUwNQorIDYgfCA1MDcKKyA3IHwgNTA5CisgOCB8 IDUxMQorIDkgfCA1MTMKKyg5IHJvd3MpCisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRp bmcgYWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKQorICBGUk9NIGVh Z2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYgorICBK T0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYQorR1JPVVAgQlkgdDEuYSBPUkRFUiBC WSB0MS5hOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmco KHQyLmMgKyB0My5jKSkKKyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAg IE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgU29y dCBLZXk6IHQxLmEKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1 dDogdDEuYSwgKFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAgSGFz aCBDb25kOiAodDEuYiA9IHQyLmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0 MS5iLCB0MS5jCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Mi5jLCB0Mi5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtl eTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5i LCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0My5hID0gdDIuYSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QzIHQzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLmEsIHQzLmIsIHQzLmMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEKKygyOCByb3dz KQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0 MQorICBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYgorICBKT0lOIGVhZ2VyX2Fn Z190MyB0MyBPTiB0Mi5hID0gdDMuYQorR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEg fCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk3CisgMiB8IDQ5OQorIDMgfCA1MDEKKyA0IHwgNTAz CisgNSB8IDUwNQorIDYgfCA1MDcKKyA3IHwgNTA5CisgOCB8IDUxMQorIDkgfCA1MTMKKyg5IHJv d3MpCisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworLS0KKy0tIFRlc3QgdGhhdCBlYWdlciBhZ2dy ZWdhdGlvbiB3b3JrcyBmb3Igb3V0ZXIgam9pbgorLS0KKy0tIEVuc3VyZSBhZ2dyZWdhdGlvbiBj YW4gYmUgcHVzaGVkIGRvd24gdG8gdGhlIG5vbi1udWxsYWJsZSBzaWRlCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpCisgIEZST00gZWFnZXJfYWdn X3QxIHQxCisgIFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iCitHUk9V UCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXpl IEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAgR3JvdXAgS2V5 OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmco dDIuYykpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhhc2ggUmlnaHQg Sm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYSwgdDIuYiwgdDIuYworKDE4IHJvd3MpCisK K1NFTEVDVCB0MS5hLCBhdmcodDIuYykKKyAgRlJPTSBlYWdlcl9hZ2dfdDEgdDEKKyAgUklHSFQg Sk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIKK0dST1VQIEJZIHQxLmEgT1JERVIg QlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NgorIDIgfCA0OTcKKyAzIHwg NDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUwMgorIDggfCA1MDMKKyA5 IHwgNTA0CisgICB8IDUwNQorKDEwIHJvd3MpCisKKy0tIEVuc3VyZSBhZ2dyZWdhdGlvbiBjYW5u b3QgYmUgcHVzaGVkIGRvd24gdG8gdGhlIG51bGxhYmxlIHNpZGUKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0Mi5iLCBhdmcodDIuYykKKyAgRlJPTSBlYWdlcl9hZ2dfdDEg dDEKKyAgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYgorR1JPVVAgQlkg dDIuYiBPUkRFUiBCWSB0Mi5iOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQyLmIsIChh dmcodDIuYykpCisgICBTb3J0IEtleTogdDIuYgorICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgIE91dHB1dDogdDIuYiwgYXZnKHQyLmMpCisgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAg ICAgICAgIC0+ICBIYXNoIFJpZ2h0IEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwg dDIuYworICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIuYiA9IHQxLmIpCisgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5iCisgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MS5iCisoMTUgcm93cykKKworU0VMRUNUIHQyLmIsIGF2Zyh0 Mi5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBMRUZUIEpPSU4gZWFnZXJfYWdnX3QyIHQy IE9OIHQxLmIgPSB0Mi5iCitHUk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7CisgYiB8IGF2ZyAK Ky0tLSstLS0tLQorIDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwg NTAwCisgNiB8IDUwMQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorICAgfCAgICAKKygx MCByb3dzKQorCistLQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBw YXJhbGxlbCBwbGFucworLS0KK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0PTA7CitTRVQgcGFyYWxs ZWxfdHVwbGVfY29zdD0wOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU9MDsKK1NF VCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyPTQ7CitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpCisgIEZST00gZWFnZXJfYWdnX3QxIHQx CisgIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iCitHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0 Mi5jKQorICAgR3JvdXAgS2V5OiB0MS5hCisgICAtPiAgR2F0aGVyIE1lcmdlCisgICAgICAgICBP dXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5l ZDogMgorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBB UlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAg ICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBD b25kOiAodDEuYiA9IHQyLmIpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFS VElBTCBhdmcodDIuYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBI YXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LmIsIFBBUlRJQUwgYXZnKHQyLmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEsIHQyLmIsIHQyLmMKKygyMSByb3dz KQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpCisgIEZST00gZWFnZXJfYWdnX3QxIHQxCisgIEpP SU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iCitHUk9VUCBCWSB0MS5hIE9SREVSIEJZ IHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5 OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8 IDUwNAorKDkgcm93cykKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFs bGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVT RVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKKy0tCistLSBUZXN0IGVhZ2VyIGFn Z3JlZ2F0aW9uIHdpdGggR0VRTworLS0KK1NFVCBnZXFvID0gb247CitTRVQgZ2Vxb190aHJlc2hv bGQgPSAyOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0 Mi5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0 MS5iID0gdDIuYgorR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcodDIu YykKKyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEu YSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZn KHQyLmMpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQyLmIpCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBhdmcodDIu YykpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZnKHQyLmMpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEsIHQyLmIsIHQyLmMKKygx OCByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpCisgIEZST00gZWFnZXJfYWdnX3QxIHQx CisgIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iCitHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYKKyAyIHwgNDk3Cisg MyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1MDIKKyA4IHwgNTAz CisgOSB8IDUwNAorKDkgcm93cykKKworUkVTRVQgZ2VxbzsKK1JFU0VUIGdlcW9fdGhyZXNob2xk OworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDE7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MjsKK0RS T1AgVEFCTEUgZWFnZXJfYWdnX3QzOworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gZm9y IHBhcnRpdGlvbndpc2Ugam9pbgorLS0KKy0tIEVuYWJsZSBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0 ZSwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVfcGFydGl0aW9ud2lz ZV9hZ2dyZWdhdGUgVE8gdHJ1ZTsKKy0tIEVuYWJsZSBwYXJ0aXRpb253aXNlIGpvaW4sIHdoaWNo IGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBU TyB0cnVlOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxKHggaW50LCB5IGludCkgUEFSVElU SU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AxIFBBUlRJVElP TiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBU QUJMRSBlYWdlcl9hZ2dfdGFiMV9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZB TFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AzIFBB UlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOwor Q1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJB TkdFKHkpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AxIFBBUlRJVElPTiBPRiBlYWdl cl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBlYWdl cl9hZ2dfdGFiMl9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9N ICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AzIFBBUlRJVElPTiBP RiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOworSU5TRVJUIElO VE8gZWFnZXJfYWdnX3RhYjEgU0VMRUNUIGkgJSAxNSwgaSAlIDEwIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMDApIGk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiMiBTRUxFQ1QgaSAlIDEw LCBpICUgMTUgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKK0FOQUxZWkUgZWFnZXJf YWdnX3RhYjE7CitBTkFMWVpFIGVhZ2VyX2FnZ190YWIyOworLS0gV2hlbiBHUk9VUCBCWSBjbGF1 c2UgbWF0Y2hlczsgZnVsbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2gKKy0tIHBh cnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0o dDEueSksIGNvdW50KCopCisgIEZST00gZWFnZXJfYWdnX3RhYjEgdDEKKyAgSk9JTiBlYWdlcl9h Z2dfdGFiMiB0MiBPTiB0MS54ID0gdDIueQorR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54Owor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0odDEueSkpLCAoY291bnQoKikpCisg ICBTb3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEZpbmFsaXplIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgc3VtKHQxLnkpLCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1 bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBD b25kOiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0MS55KSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBQ QVJUSUFMIHN1bSh0MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHQxLnkKKyAgICAg ICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzEueCwgc3VtKHQxXzEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQx XzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnkgPSB0MV8xLngpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3Ay IHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55CisgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgUEFSVElBTCBzdW0odDFf MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHQxXzEueQorICAgICAgICAg LT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54 LCBzdW0odDFfMi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueSA9IHQxXzIueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDMgdDJf MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnkKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBQQVJUSUFMIHN1bSh0MV8yLnkp LCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgdDFfMi55CisoNDkgcm93cykKKwor U0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikKKyAgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0 MQorICBKT0lOIGVhZ2VyX2FnZ190YWIyIHQyIE9OIHQxLnggPSB0Mi55CitHUk9VUCBCWSB0MS54 IE9SREVSIEJZIHQxLng7CisgeCAgfCAgc3VtICB8IGNvdW50IAorLS0tLSstLS0tLS0tKy0tLS0t LS0KKyAgMCB8IDEwODkwIHwgIDQzNTYKKyAgMSB8IDE1NTQ0IHwgIDQ0ODkKKyAgMiB8IDIwMDMz IHwgIDQ0ODkKKyAgMyB8IDI0NTIyIHwgIDQ0ODkKKyAgNCB8IDI5MDExIHwgIDQ0ODkKKyAgNSB8 IDExMzkwIHwgIDQ0ODkKKyAgNiB8IDE1ODc5IHwgIDQ0ODkKKyAgNyB8IDIwMzY4IHwgIDQ0ODkK KyAgOCB8IDI0ODU3IHwgIDQ0ODkKKyAgOSB8IDI5MzQ2IHwgIDQ0ODkKKyAxMCB8IDExMDU1IHwg IDQ0ODkKKyAxMSB8IDE1MjQ2IHwgIDQzNTYKKyAxMiB8IDE5NjAyIHwgIDQzNTYKKyAxMyB8IDIz OTU4IHwgIDQzNTYKKyAxNCB8IDI4MzE0IHwgIDQzNTYKKygxNSByb3dzKQorCistLSBHUk9VUCBC WSBoYXZpbmcgb3RoZXIgbWF0Y2hpbmcga2V5CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CitTRUxFQ1QgdDIueSwgc3VtKHQxLnkpLCBjb3VudCgqKQorICBGUk9NIGVhZ2VyX2FnZ190YWIx IHQxCisgIEpPSU4gZWFnZXJfYWdnX3RhYjIgdDIgT04gdDEueCA9IHQyLnkKK0dST1VQIEJZIHQy LnkgT1JERVIgQlkgdDIueTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0Mi55LCAoc3VtKHQx LnkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQyLnkKKyAgIC0+ICBBcHBlbmQKKyAgICAg ICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LnksIHN1bSh0MS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueQor ICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi55LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBz dW0odDEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDEueCwgUEFSVElBTCBzdW0odDEueSksIFBBUlRJQUwgY291bnQoKikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiMV9wMSB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MS55LCB0MS54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHN1bSh0MV8xLnkpLCBjb3VudCgqKQorICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0Ml8xLnkKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCAoUEFSVElBTCBzdW0odDFfMS55KSks IChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJf MS55ID0gdDFfMS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiMl9wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzEueQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJU SUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFz aEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8x LngsIFBBUlRJQUwgc3VtKHQxXzEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQx XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS55 LCB0MV8xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzIueSwgc3VtKHQxXzIueSksIGNvdW50KCopCisgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQyXzIueQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBB UlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkg PSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWIyX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwg Y291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwg UEFSVElBTCBzdW0odDFfMi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLnksIHQx XzIueAorKDQ5IHJvd3MpCisKK1NFTEVDVCB0Mi55LCBzdW0odDEueSksIGNvdW50KCopCisgIEZS T00gZWFnZXJfYWdnX3RhYjEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiMiB0MiBPTiB0MS54ID0g dDIueQorR1JPVVAgQlkgdDIueSBPUkRFUiBCWSB0Mi55OworIHkgIHwgIHN1bSAgfCBjb3VudCAK Ky0tLS0rLS0tLS0tLSstLS0tLS0tCisgIDAgfCAxMDg5MCB8ICA0MzU2CisgIDEgfCAxNTU0NCB8 ICA0NDg5CisgIDIgfCAyMDAzMyB8ICA0NDg5CisgIDMgfCAyNDUyMiB8ICA0NDg5CisgIDQgfCAy OTAxMSB8ICA0NDg5CisgIDUgfCAxMTM5MCB8ICA0NDg5CisgIDYgfCAxNTg3OSB8ICA0NDg5Cisg IDcgfCAyMDM2OCB8ICA0NDg5CisgIDggfCAyNDg1NyB8ICA0NDg5CisgIDkgfCAyOTM0NiB8ICA0 NDg5CisgMTAgfCAxMTA1NSB8ICA0NDg5CisgMTEgfCAxNTI0NiB8ICA0MzU2CisgMTIgfCAxOTYw MiB8ICA0MzU2CisgMTMgfCAyMzk1OCB8ICA0MzU2CisgMTQgfCAyODMxNCB8ICA0MzU2CisoMTUg cm93cykKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwg YWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvcgorLS0gZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDIueCwgc3VtKHQxLngpLCBjb3VudCgqKQor ICBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxCisgIEpPSU4gZWFnZXJfYWdnX3RhYjIgdDIgT04gdDEu eCA9IHQyLnkKK0dST1VQIEJZIHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+IDUgT1JERVIgQlkgdDIu eDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29y dAorICAgT3V0cHV0OiB0Mi54LCAoc3VtKHQxLngpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6 IHQyLngKKyAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6IHQy LngsIHN1bSh0MS54KSwgY291bnQoKikKKyAgICAgICAgIEdyb3VwIEtleTogdDIueAorICAgICAg ICAgRmlsdGVyOiAoYXZnKHQxLngpID4gJzUnOjpudW1lcmljKQorICAgICAgICAgLT4gIEFwcGVu ZAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi54LCAoUEFSVElBTCBzdW0odDEueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJU SUFMIGF2Zyh0MS54KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnkgPSB0 MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0 Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueCkpLCAoUEFSVElBTCBjb3VudCgq KSksIChQQVJUSUFMIGF2Zyh0MS54KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQ YXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDEueCwgUEFSVElBTCBzdW0odDEueCksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwg YXZnKHQxLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQx LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIChQQVJUSUFMIHN1bSh0MV8xLngpKSwgKFBB UlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBhdmcodDFfMS54KSkKKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQyXzEueSA9IHQxXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDIgdDJfMQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQyXzEueQorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCAo UEFSVElBTCBzdW0odDFfMS54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQx XzEueCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgUEFS VElBTCBzdW0odDFfMS54KSwgUEFSVElBTCBjb3VudCgqKSwgUEFSVElBTCBhdmcodDFfMS54KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMi54LCAoUEFSVElBTCBzdW0odDFfMi54KSksIChQQVJUSUFM IGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQxXzIueCkpCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0Ml8yLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJ QUwgc3VtKHQxXzIueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8yLngp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIFBBUlRJQUwg c3VtKHQxXzIueCksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwgYXZnKHQxXzIueCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWIxX3AzIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMi54CisoNDQgcm93cykKKworU0VMRUNUIHQyLngsIHN1bSh0MS54KSwgY291bnQoKikK KyAgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MQorICBKT0lOIGVhZ2VyX2FnZ190YWIyIHQyIE9OIHQx LnggPSB0Mi55CitHUk9VUCBCWSB0Mi54IEhBVklORyBhdmcodDEueCkgPiA1IE9SREVSIEJZIHQy Lng7CisgeCB8ICBzdW0gIHwgY291bnQgCistLS0rLS0tLS0tLSstLS0tLS0tCisgMCB8IDMzODM1 IHwgIDY2NjcKKyAxIHwgMzk1MDIgfCAgNjY2NworIDIgfCA0NjE2OSB8ICA2NjY3CisgMyB8IDUy ODM2IHwgIDY2NjcKKyA0IHwgNTk1MDMgfCAgNjY2NworIDUgfCAzMzUwMCB8ICA2NjY3CisgNiB8 IDM5ODM3IHwgIDY2NjcKKyA3IHwgNDY1MDQgfCAgNjY2NworIDggfCA1MzE3MSB8ICA2NjY3Cisg OSB8IDU5ODM4IHwgIDY2NjcKKygxMCByb3dzKQorCistLSBDaGVjayB3aXRoIGVhZ2VyIGFnZ3Jl Z2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpCisgIEZST00gZWFn ZXJfYWdnX3RhYjEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueAor ICBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54CitHUk9VUCBCWSB0MS54IE9S REVSIEJZIHQxLng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3Vt KCh0Mi55ICsgdDMueSkpKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAg ICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQx LngsIHN1bSgodDIueSArIHQzLnkpKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54Cisg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My54LCAoUEFSVElBTCBzdW0oKHQy LnkgKyB0My55KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngs IHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueCA9IHQzLngpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWIxX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMu eSwgdDMueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgIE91dHB1dDogdDFfMS54LCBzdW0oKHQyXzEueSArIHQzXzEueSkpCisgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNf MS55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8xLnggPSB0Ml8xLngp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54Cisg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8xLngsIHQzXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngsIFBB UlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnggPSB0M18xLngpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWIxX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWIxX3AyIHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBI YXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKCh0Ml8yLnkg KyB0M18yLnkpKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLngKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCAo UEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFz aCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLngsIChQQVJUSUFM IHN1bSgodDJfMi55ICsgdDNfMi55KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzIueCwgdDNfMi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54LCB0M18yLnksIHQz XzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo dDJfMi54ID0gdDNfMi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0Ml8yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQz XzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0M18yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54 CisoNzAgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkKKyAgRlJPTSBlYWdl cl9hZ2dfdGFiMSB0MQorICBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54Cisg IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLngKK0dST1VQIEJZIHQxLnggT1JE RVIgQlkgdDEueDsKKyB4ICB8ICAgc3VtICAgCistLS0tKy0tLS0tLS0tLQorICAwIHwgMTQzNzQ4 MAorICAxIHwgMjA4Mjg5NgorICAyIHwgMjY4NDQyMgorICAzIHwgMzI4NTk0OAorICA0IHwgMzg4 NzQ3NAorICA1IHwgMTUyNjI2MAorICA2IHwgMjEyNzc4NgorICA3IHwgMjcyOTMxMgorICA4IHwg MzMzMDgzOAorICA5IHwgMzkzMjM2NAorIDEwIHwgMTQ4MTM3MAorIDExIHwgMjAxMjQ3MgorIDEy IHwgMjU4NzQ2NAorIDEzIHwgMzE2MjQ1NgorIDE0IHwgMzczNzQ0OAorKDE1IHJvd3MpCisKKy0t IHBhcnRpYWwgYWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CitTRVQgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciBUTyAwOworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSkKKyAgRlJPTSBlYWdlcl9hZ2df dGFiMSB0MQorICBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54CisgIEpPSU4g ZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLngKK0dST1VQIEJZIHQzLnkgT1JERVIgQlkg dDMueTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0 OiB0My55LCBzdW0oKHQyLnkgKyB0My55KSkKKyAgIEdyb3VwIEtleTogdDMueQorICAgLT4gIFNv cnQKKyAgICAgICAgIE91dHB1dDogdDMueSwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKQor ICAgICAgICAgU29ydCBLZXk6IHQzLnkKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgKFBB UlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDIueCA9IHQxLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My55LCB0 My54LCBQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0Mi54LCB0My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgSW5jcmVtZW50YWwgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi55LCB0Mi54LCB0My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTb3J0IEtleTogdDIueCwgdDMueQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHJlc29ydGVkIEtleTogdDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIE1lcmdlIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQyLnggPSB0My54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYjFfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQzLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYjFfcDEgdDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0 MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54CisgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEu eSwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQyXzEueCA9IHQxXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQ YXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueCwgdDNfMS55LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngsIHQzXzEueSwgdDNf MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSW5jcmVtZW50YWwgU29ydAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueCwgdDNf MS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0 Ml8xLngsIHQzXzEueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc29ydGVk IEtleTogdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgTWVyZ2Ug Sm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LnksIHQyXzEueCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1lcmdlIENvbmQ6ICh0Ml8xLnggPSB0M18xLngpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQzXzEueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0M18xCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCAoUEFSVElBTCBzdW0oKHQyXzIueSArIHQz XzIueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi54ID0gdDFfMi54 KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLnksIHQzXzIueCwgUEFS VElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54LCB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzIueCwgdDNfMi55CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQcmVzb3J0ZWQgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBNZXJnZSBKb2luCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54LCB0M18yLnksIHQzXzIueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQyXzIu eCA9IHQzXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTb3J0IEtleTogdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQyXzIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTb3J0IEtleTogdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3Az IHQzXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8y CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorKDg4IHJv d3MpCisKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpCisgIEZST00gZWFnZXJfYWdnX3Rh YjEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueAorICBKT0lOIGVh Z2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54CitHUk9VUCBCWSB0My55IE9SREVSIEJZIHQz Lnk7CisgeSB8ICAgc3VtICAgCistLS0rLS0tLS0tLS0tCisgMCB8IDExMTExMTAKKyAxIHwgMjAw MDEzMgorIDIgfCAyODg5MTU0CisgMyB8IDM3NzgxNzYKKyA0IHwgNDY2NzE5OAorIDUgfCAzMzM0 MDAwCisgNiB8IDQyMjMwMjIKKyA3IHwgNTExMjA0NAorIDggfCA2MDAxMDY2CisgOSB8IDY4OTAw ODgKKygxMCByb3dzKQorCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKK1JFU0VUIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXI7CistLSB0cnkgdGhhdCB3aXRoIEdFUU8gdG9vCitTRVQgZ2Vx byA9IG9uOworU0VUIGdlcW9fdGhyZXNob2xkID0gMjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCopCisgIEZST00gZWFnZXJfYWdn X3RhYjEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiMiB0MiBPTiB0MS54ID0gdDIueQorR1JPVVAg QlkgdDEueCBPUkRFUiBCWSB0MS54OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChz dW0odDEueSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAor ICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1 dDogdDEueCwgc3VtKHQxLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJU SUFMIHN1bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MS54LCBQQVJUSUFMIHN1bSh0MS55KSwgUEFSVElBTCBjb3VudCgq KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWIxX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxLngsIHQxLnkKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgc3VtKHQxXzEueSksIGNvdW50KCopCisgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8x LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0Ml8xLnkgPSB0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIyX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMS55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzEueCwgUEFSVElBTCBzdW0odDFfMS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFf cDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8xLngsIHQxXzEueQorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgIE91dHB1dDogdDFfMi54LCBzdW0odDFfMi55KSwgY291bnQoKikKKyAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQy XzIueSA9IHQxXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYjJfcDMgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf Mi54LCBQQVJUSUFMIHN1bSh0MV8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0 MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIu eCwgdDFfMi55CisoNDkgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikK KyAgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MQorICBKT0lOIGVhZ2VyX2FnZ190YWIyIHQyIE9OIHQx LnggPSB0Mi55CitHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgc3VtICB8IGNv dW50IAorLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgMCB8IDEwODkwIHwgIDQzNTYKKyAgMSB8IDE1 NTQ0IHwgIDQ0ODkKKyAgMiB8IDIwMDMzIHwgIDQ0ODkKKyAgMyB8IDI0NTIyIHwgIDQ0ODkKKyAg NCB8IDI5MDExIHwgIDQ0ODkKKyAgNSB8IDExMzkwIHwgIDQ0ODkKKyAgNiB8IDE1ODc5IHwgIDQ0 ODkKKyAgNyB8IDIwMzY4IHwgIDQ0ODkKKyAgOCB8IDI0ODU3IHwgIDQ0ODkKKyAgOSB8IDI5MzQ2 IHwgIDQ0ODkKKyAxMCB8IDExMDU1IHwgIDQ0ODkKKyAxMSB8IDE1MjQ2IHwgIDQzNTYKKyAxMiB8 IDE5NjAyIHwgIDQzNTYKKyAxMyB8IDIzOTU4IHwgIDQzNTYKKyAxNCB8IDI4MzE0IHwgIDQzNTYK KygxNSByb3dzKQorCitSRVNFVCBnZXFvOworUkVTRVQgZ2Vxb190aHJlc2hvbGQ7CitEUk9QIFRB QkxFIGVhZ2VyX2FnZ190YWIxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiMjsKKy0tCistLSBU ZXN0IHdpdGggbXVsdGktbGV2ZWwgcGFydGl0aW9uaW5nIHNjaGVtZQorLS0KK0NSRUFURSBUQUJM RSBlYWdlcl9hZ2dfdGFiX21sKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOwor Q1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190 YWJfbWwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190YWJfbWxfcDIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDIwKSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJf YWdnX3RhYl9tbF9wMl9zMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMiBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMTUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDJf czIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDIgRk9SIFZBTFVFUyBGUk9NICgxNSkg VE8gKDIwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AzIFBBUlRJVElPTiBPRiBl YWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCkgUEFSVElUSU9OIEJZ IFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDNfczEgUEFSVElUSU9O IE9GIGVhZ2VyX2FnZ190YWJfbWxfcDMgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDI1KTsKK0NS RUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AzX3MyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2df dGFiX21sX3AzIEZPUiBWQUxVRVMgRlJPTSAoMjUpIFRPICgzMCk7CitJTlNFUlQgSU5UTyBlYWdl cl9hZ2dfdGFiX21sIFNFTEVDVCBpICUgMzAsIGkgJSAzMCBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAxMDAwKSBpOworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiX21sOworLS0gV2hlbiBHUk9VUCBCWSBj bGF1c2UgbWF0Y2hlczsgZnVsbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2gKKy0t IHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBz dW0odDIueSksIGNvdW50KCopCisgIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MQorICBKT0lOIGVh Z2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLngKK0dST1VQIEJZIHQxLnggT1JERVIgQlkg dDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3VtKHQyLnkpKSwgKGNvdW50 KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSh0Mi55 KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFS VElBTCBzdW0odDIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQxCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIChQQVJUSUFMIHN1bSh0Mi55KSks IChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi54LCBQQVJUSUFMIHN1bSh0Mi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEg dDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwg dDIueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg IE91dHB1dDogdDFfMS54LCBzdW0odDJfMS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQy XzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS54LCAoUEFSVElBTCBzdW0odDJfMS55KSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngs IFBBUlRJQUwgc3VtKHQyXzEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEg dDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LnksIHQyXzEueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMi54LCBzdW0odDJfMi55KSwgY291bnQoKikKKyAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIu eCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCAoUEFSVElBTCBzdW0odDJfMi55KSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8yLngsIFBBUlRJQUwgc3VtKHQyXzIueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMy54LCBzdW0odDJfMy55KSwgY291bnQoKikKKyAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDFfMy54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgKFBBUlRJQUwgc3VtKHQyXzMu eSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQxXzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzMueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCAoUEFSVElBTCBzdW0odDJfMy55 KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8zLngsIFBBUlRJQUwgc3VtKHQyXzMueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMy54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDNfczEgdDJfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54LCBzdW0odDJfNC55KSwgY291bnQoKikK KyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfNC54CisgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgKFBBUlRJQUwgc3Vt KHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV80CisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCAoUEFSVElBTCBzdW0o dDJfNC55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml80LngsIFBBUlRJQUwgc3VtKHQyXzQueSksIFBBUlRJQUwgY291bnQoKikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfNC54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDNfczIgdDJfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueAorKDc5IHJvd3MpCisKK1NFTEVDVCB0MS54LCBz dW0odDIueSksIGNvdW50KCopCisgIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MQorICBKT0lOIGVh Z2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLngKK0dST1VQIEJZIHQxLnggT1JERVIgQlkg dDEueDsKKyB4ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwg ICAgIDAgfCAgMTA4OQorICAxIHwgIDExNTYgfCAgMTE1NgorICAyIHwgIDIzMTIgfCAgMTE1Ngor ICAzIHwgIDM0NjggfCAgMTE1NgorICA0IHwgIDQ2MjQgfCAgMTE1NgorICA1IHwgIDU3ODAgfCAg MTE1NgorICA2IHwgIDY5MzYgfCAgMTE1NgorICA3IHwgIDgwOTIgfCAgMTE1NgorICA4IHwgIDky NDggfCAgMTE1NgorICA5IHwgMTA0MDQgfCAgMTE1NgorIDEwIHwgMTE1NjAgfCAgMTE1NgorIDEx IHwgMTE5NzkgfCAgMTA4OQorIDEyIHwgMTMwNjggfCAgMTA4OQorIDEzIHwgMTQxNTcgfCAgMTA4 OQorIDE0IHwgMTUyNDYgfCAgMTA4OQorIDE1IHwgMTYzMzUgfCAgMTA4OQorIDE2IHwgMTc0MjQg fCAgMTA4OQorIDE3IHwgMTg1MTMgfCAgMTA4OQorIDE4IHwgMTk2MDIgfCAgMTA4OQorIDE5IHwg MjA2OTEgfCAgMTA4OQorIDIwIHwgMjE3ODAgfCAgMTA4OQorIDIxIHwgMjI4NjkgfCAgMTA4OQor IDIyIHwgMjM5NTggfCAgMTA4OQorIDIzIHwgMjUwNDcgfCAgMTA4OQorIDI0IHwgMjYxMzYgfCAg MTA4OQorIDI1IHwgMjcyMjUgfCAgMTA4OQorIDI2IHwgMjgzMTQgfCAgMTA4OQorIDI3IHwgMjk0 MDMgfCAgMTA4OQorIDI4IHwgMzA0OTIgfCAgMTA4OQorIDI5IHwgMzE1ODEgfCAgMTA4OQorKDMw IHJvd3MpCisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIGRvZXMgbm90IG1hdGNoOyBwYXJ0aWFs IGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IKKy0tIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikK KyAgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxCisgIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBP TiB0MS54ID0gdDIueAorR1JPVVAgQlkgdDEueSBPUkRFUiBCWSB0MS55OworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0 CisgICBPdXRwdXQ6IHQxLnksIChzdW0odDIueSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTog dDEueQorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogdDEu eSwgc3VtKHQyLnkpLCBjb3VudCgqKQorICAgICAgICAgR3JvdXAgS2V5OiB0MS55CisgICAgICAg ICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLnksIChQQVJUSUFMIHN1bSh0Mi55KSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9IHQyLngpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueSwgdDEueAorICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIueCwgKFBBUlRJQUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIFBBUlRJQUwgc3VtKHQyLnkp LCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54CisgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgKFBBUlRJQUwg c3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgdDFfMS54CisgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIChQ QVJUSUFMIHN1bSh0Ml8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgUEFSVElBTCBzdW0odDJfMS55KSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwgKFBBUlRJ QUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwgdDFfMi54CisgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngs IChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgUEFSVElBTCBzdW0odDJfMi55KSwgUEFS VElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5 OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueSwgKFBB UlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8zCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueSwgdDFfMy54CisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8z LngsIChQQVJUSUFMIHN1bSh0Ml8zLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgUEFSVElBTCBzdW0odDJfMy55KSwg UEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8zCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwgdDJfMy54CisgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueSwg KFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV80CisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueSwgdDFfNC54CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml80LngsIChQQVJUSUFMIHN1bSh0Ml80LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgUEFSVElBTCBzdW0odDJfNC55 KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0Ml80CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54CisoNjcgcm93 cykKKworU0VMRUNUIHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikKKyAgRlJPTSBlYWdlcl9hZ2df dGFiX21sIHQxCisgIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueAorR1JP VVAgQlkgdDEueSBPUkRFUiBCWSB0MS55OworIHkgIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0t LS0tLSstLS0tLS0tCisgIDAgfCAgICAgMCB8ICAxMDg5CisgIDEgfCAgMTE1NiB8ICAxMTU2Cisg IDIgfCAgMjMxMiB8ICAxMTU2CisgIDMgfCAgMzQ2OCB8ICAxMTU2CisgIDQgfCAgNDYyNCB8ICAx MTU2CisgIDUgfCAgNTc4MCB8ICAxMTU2CisgIDYgfCAgNjkzNiB8ICAxMTU2CisgIDcgfCAgODA5 MiB8ICAxMTU2CisgIDggfCAgOTI0OCB8ICAxMTU2CisgIDkgfCAxMDQwNCB8ICAxMTU2CisgMTAg fCAxMTU2MCB8ICAxMTU2CisgMTEgfCAxMTk3OSB8ICAxMDg5CisgMTIgfCAxMzA2OCB8ICAxMDg5 CisgMTMgfCAxNDE1NyB8ICAxMDg5CisgMTQgfCAxNTI0NiB8ICAxMDg5CisgMTUgfCAxNjMzNSB8 ICAxMDg5CisgMTYgfCAxNzQyNCB8ICAxMDg5CisgMTcgfCAxODUxMyB8ICAxMDg5CisgMTggfCAx OTYwMiB8ICAxMDg5CisgMTkgfCAyMDY5MSB8ICAxMDg5CisgMjAgfCAyMTc4MCB8ICAxMDg5Cisg MjEgfCAyMjg2OSB8ICAxMDg5CisgMjIgfCAyMzk1OCB8ICAxMDg5CisgMjMgfCAyNTA0NyB8ICAx MDg5CisgMjQgfCAyNjEzNiB8ICAxMDg5CisgMjUgfCAyNzIyNSB8ICAxMDg5CisgMjYgfCAyODMx NCB8ICAxMDg5CisgMjcgfCAyOTQwMyB8ICAxMDg5CisgMjggfCAzMDQ5MiB8ICAxMDg5CisgMjkg fCAzMTU4MSB8ICAxMDg5CisoMzAgcm93cykKKworLS0gQ2hlY2sgd2l0aCBlYWdlciBhZ2dyZWdh dGlvbiBvdmVyIGpvaW4gcmVsCistLSBmdWxsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJCT1NF LCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikKKyAg RlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxCisgIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0 MS54ID0gdDIueAorICBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgT04gdDIueCA9IHQzLngKK0dS T1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0oKHQyLnkgKyB0My55 KSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAorICAgICAg ICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEu eCwgc3VtKCh0Mi55ICsgdDMueSkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5 OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9IHQyLngpCisg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJf bWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDIueCwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLngs IFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueCA9IHQzLngpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AxIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgc3VtKCh0Ml8xLnkgKyB0M18xLnkp KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwg KFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3Mx IHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8xLngsIHQzXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJU SUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFz aEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LngsIHQzXzEueCwgUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpLCBQQVJUSUFMIGNvdW50 KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueCwgdDNf MS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQyXzEueCA9IHQzXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0Ml8x CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQzXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSwgY291 bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJ QUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQxXzIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54CisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8y LngsIHQzXzIueCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQz XzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpLCBQQVJUSUFMIGNvdW50KCopCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0 M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQyXzIueCA9IHQzXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwg dDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18y LnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQzXzIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf Mi55LCB0M18yLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzMueCwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgY291bnQoKikK KyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMy54CisgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgKFBBUlRJQUwgc3Vt KCh0Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQxXzMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIHQz XzMueCwgKFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCop KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIHQzXzMueCwg UEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueCwgdDNfMy55LCB0M18zLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzMu eCA9IHQzXzMueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8zCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwgdDJfMy54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18zLnksIHQz XzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQzXzMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCB0 M18zLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxXzQueCwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgY291bnQoKikKKyAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDFfNC54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgKFBBUlRJQUwgc3VtKCh0Ml80 LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAg SGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQxXzQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54CisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQzXzQueCwg KFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQzXzQueCwgUEFSVElB TCBzdW0oKHQyXzQueSArIHQzXzQueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueCwgdDNfNC55LCB0M180LngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzQueCA9IHQz XzQueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0Ml80CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIHQzXzQueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQzXzQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0M180LngK KygxMTQgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopCisg IEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MQorICBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04g dDEueCA9IHQyLngKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIE9OIHQyLnggPSB0My54CitH Uk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgIHN1bSAgIHwgY291bnQgCistLS0t Ky0tLS0tLS0tLSstLS0tLS0tCisgIDAgfCAgICAgICAwIHwgMzU5MzcKKyAgMSB8ICAgNzg2MDgg fCAzOTMwNAorICAyIHwgIDE1NzIxNiB8IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwgMzkzMDQKKyAg NCB8ICAzMTQ0MzIgfCAzOTMwNAorICA1IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYgfCAgNDcxNjQ4 IHwgMzkzMDQKKyAgNyB8ICA1NTAyNTYgfCAzOTMwNAorICA4IHwgIDYyODg2NCB8IDM5MzA0Cisg IDkgfCAgNzA3NDcyIHwgMzkzMDQKKyAxMCB8ICA3ODYwODAgfCAzOTMwNAorIDExIHwgIDc5MDYx NCB8IDM1OTM3CisgMTIgfCAgODYyNDg4IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIgfCAzNTkzNwor IDE0IHwgMTAwNjIzNiB8IDM1OTM3CisgMTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAxNiB8IDExNDk5 ODQgfCAzNTkzNworIDE3IHwgMTIyMTg1OCB8IDM1OTM3CisgMTggfCAxMjkzNzMyIHwgMzU5MzcK KyAxOSB8IDEzNjU2MDYgfCAzNTkzNworIDIwIHwgMTQzNzQ4MCB8IDM1OTM3CisgMjEgfCAxNTA5 MzU0IHwgMzU5MzcKKyAyMiB8IDE1ODEyMjggfCAzNTkzNworIDIzIHwgMTY1MzEwMiB8IDM1OTM3 CisgMjQgfCAxNzI0OTc2IHwgMzU5MzcKKyAyNSB8IDE3OTY4NTAgfCAzNTkzNworIDI2IHwgMTg2 ODcyNCB8IDM1OTM3CisgMjcgfCAxOTQwNTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0NzIgfCAzNTkz NworIDI5IHwgMjA4NDM0NiB8IDM1OTM3CisoMzAgcm93cykKKworLS0gcGFydGlhbCBhZ2dyZWdh dGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55 ICsgdDMueSksIGNvdW50KCopCisgIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MQorICBKT0lOIGVh Z2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLngKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiX21s IHQzIE9OIHQyLnggPSB0My54CitHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNv cnQKKyAgIE91dHB1dDogdDMueSwgKHN1bSgodDIueSArIHQzLnkpKSksIChjb3VudCgqKSkKKyAg IFNvcnQgS2V5OiB0My55CisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg T3V0cHV0OiB0My55LCBzdW0oKHQyLnkgKyB0My55KSksIGNvdW50KCopCisgICAgICAgICBHcm91 cCBLZXk6IHQzLnkKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgKFBBUlRJQUwgc3VtKCh0 Mi55ICsgdDMueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My55LCB0My54LCAoUEFSVElBTCBz dW0oKHQyLnkgKyB0My55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIueCwgdDMueSwgdDMueCwgUEFSVElBTCBzdW0oKHQyLnkg KyB0My55KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54LCB0My55LCB0My54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Mi54ID0gdDMueCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEg dDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDMueSwgdDMueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55 KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLnksIHQzXzEueCwgKFBB UlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueSwgdDNfMS54LCBQ QVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54LCB0M18xLnksIHQzXzEu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueCwg dDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHQyXzEueCA9IHQzXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0 Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQz XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCAoUEFSVElBTCBzdW0oKHQyXzIueSArIHQz XzIueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0MV8yLnggPSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDFfMgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi55LCB0M18yLngs IChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLnksIHQzXzIu eCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueCwgdDNfMi55LCB0 M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8y LngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0M18yLngpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJf czIgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9z MiB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgKFBBUlRJQUwgc3VtKCh0Ml8zLnkg KyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFz aCBDb25kOiAodDFfMy54ID0gdDJfMy54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQxXzMKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIHQzXzMueSwgdDNf My54LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgdDNfMy55LCB0 M18zLngsIFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgUEFSVElBTCBjb3VudCgqKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngsIHQzXzMu eSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwg dDJfMy54LCB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDJfMy54ID0gdDNfMy54KQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21s X3AzX3MxIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDNfczEgdDNfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIChQQVJUSUFMIHN1bSgodDJf NC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV80CisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCB0M180Lnks IHQzXzQueCwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQzXzQu eSwgdDNfNC54LCBQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSksIFBBUlRJQUwgY291bnQo KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfNC54LCB0 M180LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80 LnksIHQyXzQueCwgdDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzQueCA9IHQzXzQueCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wM19zMiB0Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0M180LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AzX3MyIHQzXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0M180LngKKygxMDIgcm93cykKKworU0VMRUNUIHQz LnksIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopCisgIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0 MQorICBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLngKKyAgSk9JTiBlYWdl cl9hZ2dfdGFiX21sIHQzIE9OIHQyLnggPSB0My54CitHUk9VUCBCWSB0My55IE9SREVSIEJZIHQz Lnk7CisgeSAgfCAgIHN1bSAgIHwgY291bnQgCistLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgIDAg fCAgICAgICAwIHwgMzU5MzcKKyAgMSB8ICAgNzg2MDggfCAzOTMwNAorICAyIHwgIDE1NzIxNiB8 IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwgMzkzMDQKKyAgNCB8ICAzMTQ0MzIgfCAzOTMwNAorICA1 IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYgfCAgNDcxNjQ4IHwgMzkzMDQKKyAgNyB8ICA1NTAyNTYg fCAzOTMwNAorICA4IHwgIDYyODg2NCB8IDM5MzA0CisgIDkgfCAgNzA3NDcyIHwgMzkzMDQKKyAx MCB8ICA3ODYwODAgfCAzOTMwNAorIDExIHwgIDc5MDYxNCB8IDM1OTM3CisgMTIgfCAgODYyNDg4 IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIgfCAzNTkzNworIDE0IHwgMTAwNjIzNiB8IDM1OTM3Cisg MTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAxNiB8IDExNDk5ODQgfCAzNTkzNworIDE3IHwgMTIyMTg1 OCB8IDM1OTM3CisgMTggfCAxMjkzNzMyIHwgMzU5MzcKKyAxOSB8IDEzNjU2MDYgfCAzNTkzNwor IDIwIHwgMTQzNzQ4MCB8IDM1OTM3CisgMjEgfCAxNTA5MzU0IHwgMzU5MzcKKyAyMiB8IDE1ODEy MjggfCAzNTkzNworIDIzIHwgMTY1MzEwMiB8IDM1OTM3CisgMjQgfCAxNzI0OTc2IHwgMzU5MzcK KyAyNSB8IDE3OTY4NTAgfCAzNTkzNworIDI2IHwgMTg2ODcyNCB8IDM1OTM3CisgMjcgfCAxOTQw NTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0NzIgfCAzNTkzNworIDI5IHwgMjA4NDM0NiB8IDM1OTM3 CisoMzAgcm93cykKKworLS0gdHJ5IHRoYXQgd2l0aCBHRVFPIHRvbworU0VUIGdlcW8gPSBvbjsK K1NFVCBnZXFvX3RocmVzaG9sZCA9IDI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKQorICBGUk9NIGVhZ2VyX2FnZ190YWJfbWwg dDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54CitHUk9VUCBCWSB0 MS54IE9SREVSIEJZIHQxLng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEueCwgKHN1bSh0 Mi55KSksIChjb3VudCgqKSkKKyAgIFNvcnQgS2V5OiB0MS54CisgICAtPiAgQXBwZW5kCisgICAg ICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0 MS54LCBzdW0odDIueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxLngK KyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDEueCwgKFBBUlRJQUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCAoUEFSVElB TCBzdW0odDIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDIueCwgUEFSVElBTCBzdW0odDIueSksIFBBUlRJQUwgY291bnQoKikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgc3VtKHQyXzEueSksIGNvdW50KCopCisgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0Ml8x LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0MV8xLnggPSB0Ml8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDFfMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgKFBBUlRJQUwgc3VtKHQyXzEu eSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQ YXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMS54LCBQQVJUSUFMIHN1bSh0Ml8xLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AyX3MxIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKHQyXzIueSksIGNvdW50KCop CisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1 bSh0Ml8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0MV8yLnggPSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDFfMgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNo CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgKFBBUlRJQUwgc3Vt KHQyXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfMi54LCBQQVJUSUFMIHN1bSh0Ml8yLnkpLCBQQVJUSUFMIGNvdW50KCop CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AyX3MyIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgc3VtKHQyXzMueSksIGNv dW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzMueAorICAgICAgICAgICAgICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIChQQVJU SUFMIHN1bSh0Ml8zLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6ICh0MV8zLnggPSB0Ml8zLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDFfMworICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgKFBBUlRJ QUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMy54LCBQQVJUSUFMIHN1bSh0Ml8zLnkpLCBQQVJUSUFMIGNv dW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgIC0+ICBGaW5hbGl6 ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgc3VtKHQyXzQu eSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzQueAorICAgICAgICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80Lngs IChQQVJUSUFMIHN1bSh0Ml80LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0MV80LnggPSB0Ml80LngpCisgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDFfNAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LngKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwg KFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCBQQVJUSUFMIHN1bSh0Ml80LnkpLCBQQVJU SUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQyXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQyXzQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngKKyg3OSByb3dzKQorCitT RUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKQorICBGUk9NIGVhZ2VyX2FnZ190YWJfbWwg dDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54CitHUk9VUCBCWSB0 MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgc3VtICB8IGNvdW50IAorLS0tLSstLS0tLS0tKy0t LS0tLS0KKyAgMCB8ICAgICAwIHwgIDEwODkKKyAgMSB8ICAxMTU2IHwgIDExNTYKKyAgMiB8ICAy MzEyIHwgIDExNTYKKyAgMyB8ICAzNDY4IHwgIDExNTYKKyAgNCB8ICA0NjI0IHwgIDExNTYKKyAg NSB8ICA1NzgwIHwgIDExNTYKKyAgNiB8ICA2OTM2IHwgIDExNTYKKyAgNyB8ICA4MDkyIHwgIDEx NTYKKyAgOCB8ICA5MjQ4IHwgIDExNTYKKyAgOSB8IDEwNDA0IHwgIDExNTYKKyAxMCB8IDExNTYw IHwgIDExNTYKKyAxMSB8IDExOTc5IHwgIDEwODkKKyAxMiB8IDEzMDY4IHwgIDEwODkKKyAxMyB8 IDE0MTU3IHwgIDEwODkKKyAxNCB8IDE1MjQ2IHwgIDEwODkKKyAxNSB8IDE2MzM1IHwgIDEwODkK KyAxNiB8IDE3NDI0IHwgIDEwODkKKyAxNyB8IDE4NTEzIHwgIDEwODkKKyAxOCB8IDE5NjAyIHwg IDEwODkKKyAxOSB8IDIwNjkxIHwgIDEwODkKKyAyMCB8IDIxNzgwIHwgIDEwODkKKyAyMSB8IDIy ODY5IHwgIDEwODkKKyAyMiB8IDIzOTU4IHwgIDEwODkKKyAyMyB8IDI1MDQ3IHwgIDEwODkKKyAy NCB8IDI2MTM2IHwgIDEwODkKKyAyNSB8IDI3MjI1IHwgIDEwODkKKyAyNiB8IDI4MzE0IHwgIDEw ODkKKyAyNyB8IDI5NDAzIHwgIDEwODkKKyAyOCB8IDMwNDkyIHwgIDEwODkKKyAyOSB8IDMxNTgx IHwgIDEwODkKKygzMCByb3dzKQorCitSRVNFVCBnZXFvOworUkVTRVQgZ2Vxb190aHJlc2hvbGQ7 CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91 dAppbmRleCBjZDM3ZjU0OWI1YS4uYmRiZjIxYTg3NGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dApAQCAtMjg0MCwyMCArMjg0MCwyMiBAQCBzZWxlY3QgeC50aG91c2FuZCwgeC50d290 aG91c2FuZCwgY291bnQoKikKIGZyb20gdGVuazEgeCBpbm5lciBqb2luIHRlbmsxIHkgb24geC50 aG91c2FuZCA9IHkudGhvdXNhbmQKIGdyb3VwIGJ5IHgudGhvdXNhbmQsIHgudHdvdGhvdXNhbmQK IG9yZGVyIGJ5IHgudGhvdXNhbmQgZGVzYywgeC50d290aG91c2FuZDsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBHcm91cEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCiAgICBHcm91cCBLZXk6IHgudGhvdXNh bmQsIHgudHdvdGhvdXNhbmQKICAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0CiAgICAgICAgICBTb3J0 IEtleTogeC50aG91c2FuZCBERVNDLCB4LnR3b3Rob3VzYW5kCiAgICAgICAgICBQcmVzb3J0ZWQg S2V5OiB4LnRob3VzYW5kCiAgICAgICAgICAtPiAgTWVyZ2UgSm9pbgogICAgICAgICAgICAgICAg TWVyZ2UgQ29uZDogKHkudGhvdXNhbmQgPSB4LnRob3VzYW5kKQotICAgICAgICAgICAgICAgLT4g IEluZGV4IE9ubHkgU2NhbiBCYWNrd2FyZCB1c2luZyB0ZW5rMV90aG91c190ZW50aG91cyBvbiB0 ZW5rMSB5CisgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB5LnRob3VzYW5kCisgICAgICAgICAgICAgICAgICAg ICAtPiAgSW5kZXggT25seSBTY2FuIEJhY2t3YXJkIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRob3Vz IG9uIHRlbmsxIHkKICAgICAgICAgICAgICAgIC0+ICBTb3J0CiAgICAgICAgICAgICAgICAgICAg ICBTb3J0IEtleTogeC50aG91c2FuZCBERVNDCiAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gdGVuazEgeAotKDExIHJvd3MpCisoMTMgcm93cykKIAogcmVzZXQgZW5hYmxlX2hh c2hhZ2c7CiByZXNldCBlbmFibGVfbmVzdGxvb3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dAppbmRleCBjYjEyYmY1MzcxOS4uZmM4NDky OWEwMDIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2Fn Z3JlZ2F0ZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdn cmVnYXRlLm91dApAQCAtMTMsNiArMTMsOCBAQCBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9p biBUTyB0cnVlOwogU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgVE8gMDsKIC0t IERpc2FibGUgaW5jcmVtZW50YWwgc29ydCwgd2hpY2ggY2FuIGluZmx1ZW5jZSBzZWxlY3RlZCBw bGFucyBkdWUgdG8gZnV6eiBmYWN0b3IuCiBTRVQgZW5hYmxlX2luY3JlbWVudGFsX3NvcnQgVE8g b2ZmOworLS0gRGlzYWJsZSBlYWdlciBhZ2dyZWdhdGlvbiwgd2hpY2ggY2FuIGludGVyZmVyZSB3 aXRoIHRoZSBnZW5lcmF0aW9uIG9mIHBhcnRpdGlvbndpc2UgYWdncmVnYXRpb24uCitTRVQgZW5h YmxlX2VhZ2VyX2FnZ3JlZ2F0ZSBUTyBvZmY7CiAtLQogLS0gVGVzdHMgZm9yIGxpc3QgcGFydGl0 aW9uZWQgdGFibGVzLgogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3lzdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKaW5k ZXggODMyMjhjZmNhMjkuLjNiMzdmYWZhNjViIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N5c3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5 c3ZpZXdzLm91dApAQCAtMTUxLDYgKzE1MSw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20g cGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfYXN5bmNfYXBw ZW5kICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9iaXRtYXBzY2FuICAgICAgICAgICAgICB8IG9u CiAgZW5hYmxlX2Rpc3RpbmN0X3Jlb3JkZXJpbmcgICAgIHwgb24KKyBlbmFibGVfZWFnZXJfYWdn cmVnYXRlICAgICAgICAgfCBvbgogIGVuYWJsZV9nYXRoZXJtZXJnZSAgICAgICAgICAgICB8IG9u CiAgZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmcgICAgIHwgb24KICBlbmFibGVfaGFzaGFnZyAg ICAgICAgICAgICAgICAgfCBvbgpAQCAtMTcyLDcgKzE3Myw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0 aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVf c2Vxc2NhbiAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAg ICAgICB8IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyNCByb3dz KQorKDI1IHJvd3MpCiAKIC0tIFRoZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlv bnMgZm9yIHZhcmlvdXMgdHlwZXMuICBJbmplY3Rpb25Qb2ludAogLS0gbWF5IGJlIHByZXNlbnQg b3IgYWJzZW50LCBkZXBlbmRpbmcgb24gaGlzdG9yeSBzaW5jZSBsYXN0IHBvc3RtYXN0ZXIgc3Rh cnQuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBmYmZmYzY3YWU2MC4uZjk0NTBj ZGM0NzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTIzLDcgKzEyMyw3IEBA IHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVu Y3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywg c28gbm90aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdy b3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUg cmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRp b25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBjb21wcmVzc2lvbl9sejQgbWVt b2l6ZSBzdGF0cyBwcmVkaWNhdGUgbnVtYQordGVzdDogcGFydGl0aW9uX2pvaW4gcGFydGl0aW9u X3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUg cGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Npb25f bHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEgZWFnZXJfYWdncmVnYXRlCiAKICMgZXZl bnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50 bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZWFn ZXJfYWdncmVnYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZTMyOGE4M2I0YzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdl cl9hZ2dyZWdhdGUuc3FsCkBAIC0wLDAgKzEsMzgwIEBACistLQorLS0gRUFHRVIgQUdHUkVHQVRJ T04KKy0tIFRlc3Qgd2UgY2FuIHB1c2ggYWdncmVnYXRpb24gZG93biBiZWxvdyBqb2luCistLQor CistLSBFbmFibGUgZWFnZXIgYWdncmVnYXRpb24sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJs ZWQuCitTRVQgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSBUTyBvbjsKKworQ1JFQVRFIFRBQkxFIGVh Z2VyX2FnZ190MSAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JFQVRFIFRB QkxFIGVhZ2VyX2FnZ190MiAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JF QVRFIFRBQkxFIGVhZ2VyX2FnZ190MyAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24p OworCitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDEgU0VMRUNUIGksIGksIGkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwMCkgaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MiBTRUxFQ1QgaSwg aSUxMCwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworSU5TRVJUIElOVE8gZWFn ZXJfYWdnX3QzIFNFTEVDVCBpJTEwLCBpJTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MDApIGk7CisKK0FOQUxZWkUgZWFnZXJfYWdnX3QxOworQU5BTFlaRSBlYWdlcl9hZ2dfdDI7CitB TkFMWVpFIGVhZ2VyX2FnZ190MzsKKworCistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBv dmVyIGJhc2UgcmVsCistLQorCistLSBQZXJmb3JtIHNjYW4gb2YgYSB0YWJsZSwgYWdncmVnYXRl IHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVyIHRhYmxlCistLSBhbmQgZmluYWxpemUg dGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQx LmEsIGF2Zyh0Mi5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2FnZ190 MiB0MiBPTiB0MS5iID0gdDIuYgorR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitTRUxF Q1QgdDEuYSwgYXZnKHQyLmMpCisgIEZST00gZWFnZXJfYWdnX3QxIHQxCisgIEpPSU4gZWFnZXJf YWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iCitHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisK Ky0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcgYWdncmVnYXRpb24KK1NFVCBlbmFibGVf aGFzaGFnZyBUTyBvZmY7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0 MS5hLCBhdmcodDIuYykKKyAgRlJPTSBlYWdlcl9hZ2dfdDEgdDEKKyAgSk9JTiBlYWdlcl9hZ2df dDIgdDIgT04gdDEuYiA9IHQyLmIKK0dST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworU0VM RUNUIHQxLmEsIGF2Zyh0Mi5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2Vy X2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYgorR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOwor CitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKworCistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlv biBvdmVyIGpvaW4gcmVsCistLQorCistLSBQZXJmb3JtIGpvaW4gb2YgdGFibGVzLCBhZ2dyZWdh dGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUgb3RoZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6 ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg dDEuYSwgYXZnKHQyLmMgKyB0My5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVh Z2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYgorICBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0 Mi5hID0gdDMuYQorR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitTRUxFQ1QgdDEuYSwg YXZnKHQyLmMgKyB0My5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2Fn Z190MiB0MiBPTiB0MS5iID0gdDIuYgorICBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0g dDMuYQorR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCistLSBQcm9kdWNlIHJlc3VsdHMg d2l0aCBzb3J0aW5nIGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5j KQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5i ID0gdDIuYgorICBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYQorR1JPVVAgQlkg dDEuYSBPUkRFUiBCWSB0MS5hOworCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKQorICBG Uk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIu YgorICBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYQorR1JPVVAgQlkgdDEuYSBP UkRFUiBCWSB0MS5hOworCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKworCistLQorLS0gVGVzdCB0 aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBvdXRlciBqb2luCistLQorCistLSBFbnN1 cmUgYWdncmVnYXRpb24gY2FuIGJlIHB1c2hlZCBkb3duIHRvIHRoZSBub24tbnVsbGFibGUgc2lk ZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKQor ICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBSSUdIVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0 MS5iID0gdDIuYgorR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitTRUxFQ1QgdDEuYSwg YXZnKHQyLmMpCisgIEZST00gZWFnZXJfYWdnX3QxIHQxCisgIFJJR0hUIEpPSU4gZWFnZXJfYWdn X3QyIHQyIE9OIHQxLmIgPSB0Mi5iCitHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisKKy0t IEVuc3VyZSBhZ2dyZWdhdGlvbiBjYW5ub3QgYmUgcHVzaGVkIGRvd24gdG8gdGhlIG51bGxhYmxl IHNpZGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi5iLCBhdmcodDIu YykKKyAgRlJPTSBlYWdlcl9hZ2dfdDEgdDEKKyAgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBP TiB0MS5iID0gdDIuYgorR1JPVVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5iOworCitTRUxFQ1QgdDIu YiwgYXZnKHQyLmMpCisgIEZST00gZWFnZXJfYWdnX3QxIHQxCisgIExFRlQgSk9JTiBlYWdlcl9h Z2dfdDIgdDIgT04gdDEuYiA9IHQyLmIKK0dST1VQIEJZIHQyLmIgT1JERVIgQlkgdDIuYjsKKwor CistLQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBwYXJhbGxlbCBw bGFucworLS0KKworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q9MDsKK1NFVCBwYXJhbGxlbF90dXBs ZV9jb3N0PTA7CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZT0wOworU0VUIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI9NDsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBK T0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYgorR1JPVVAgQlkgdDEuYSBPUkRFUiBC WSB0MS5hOworCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpCisgIEZST00gZWFnZXJfYWdnX3QxIHQx CisgIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iCitHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxl bF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VU IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CisKKy0tCistLSBUZXN0IGVhZ2VyIGFn Z3JlZ2F0aW9uIHdpdGggR0VRTworLS0KKworU0VUIGdlcW8gPSBvbjsKK1NFVCBnZXFvX3RocmVz aG9sZCA9IDI7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBh dmcodDIuYykKKyAgRlJPTSBlYWdlcl9hZ2dfdDEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdDIgdDIg T04gdDEuYiA9IHQyLmIKK0dST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworU0VMRUNUIHQx LmEsIGF2Zyh0Mi5jKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2FnZ190 MiB0MiBPTiB0MS5iID0gdDIuYgorR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitSRVNF VCBnZXFvOworUkVTRVQgZ2Vxb190aHJlc2hvbGQ7CisKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3Qx OworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDI7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MzsKKwor CistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBmb3IgcGFydGl0aW9ud2lzZSBqb2luCist LQorCistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGUsIHdoaWNoIGJ5IGRlZmF1bHQg aXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlIFRPIHRydWU7 CistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBqb2luLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2Fi bGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8gdHJ1ZTsKKworQ1JFQVRFIFRB QkxFIGVhZ2VyX2FnZ190YWIxKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOwor Q1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFi MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFi MV9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAo MTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9h Z2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOworQ1JFQVRFIFRBQkxFIGVhZ2Vy X2FnZ190YWIyKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHkpOworQ1JFQVRFIFRB QkxFIGVhZ2VyX2FnZ190YWIyX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFM VUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMiBQQVJU SVRJT04gT0YgZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JF QVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjEg U0VMRUNUIGkgJSAxNSwgaSAlIDEwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitJ TlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiMiBTRUxFQ1QgaSAlIDEwLCBpICUgMTUgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKKworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMTsKK0FOQUxZ WkUgZWFnZXJfYWdnX3RhYjI7CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1 bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoCistLSBwYXJ0aXRpb24uCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQxLnkpLCBjb3VudCgq KQorICBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxCisgIEpPSU4gZWFnZXJfYWdnX3RhYjIgdDIgT04g dDEueCA9IHQyLnkKK0dST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworU0VMRUNUIHQxLngs IHN1bSh0MS55KSwgY291bnQoKikKKyAgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MQorICBKT0lOIGVh Z2VyX2FnZ190YWIyIHQyIE9OIHQxLnggPSB0Mi55CitHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQx Lng7CisKKy0tIEdST1VQIEJZIGhhdmluZyBvdGhlciBtYXRjaGluZyBrZXkKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi55LCBzdW0odDEueSksIGNvdW50KCopCisgIEZS T00gZWFnZXJfYWdnX3RhYjEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiMiB0MiBPTiB0MS54ID0g dDIueQorR1JPVVAgQlkgdDIueSBPUkRFUiBCWSB0Mi55OworCitTRUxFQ1QgdDIueSwgc3VtKHQx LnkpLCBjb3VudCgqKQorICBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxCisgIEpPSU4gZWFnZXJfYWdn X3RhYjIgdDIgT04gdDEueCA9IHQyLnkKK0dST1VQIEJZIHQyLnkgT1JERVIgQlkgdDIueTsKKwor LS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRp b24gaXMgcGVyZm9ybWVkIGZvcgorLS0gZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NF LCBDT1NUUyBPRkYpCitTRUxFQ1QgdDIueCwgc3VtKHQxLngpLCBjb3VudCgqKQorICBGUk9NIGVh Z2VyX2FnZ190YWIxIHQxCisgIEpPSU4gZWFnZXJfYWdnX3RhYjIgdDIgT04gdDEueCA9IHQyLnkK K0dST1VQIEJZIHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+IDUgT1JERVIgQlkgdDIueDsKKworU0VM RUNUIHQyLngsIHN1bSh0MS54KSwgY291bnQoKikKKyAgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MQor ICBKT0lOIGVhZ2VyX2FnZ190YWIyIHQyIE9OIHQxLnggPSB0Mi55CitHUk9VUCBCWSB0Mi54IEhB VklORyBhdmcodDEueCkgPiA1IE9SREVSIEJZIHQyLng7CisKKy0tIENoZWNrIHdpdGggZWFnZXIg YWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkKKyAgRlJP TSBlYWdlcl9hZ2dfdGFiMSB0MQorICBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0 Mi54CisgIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLngKK0dST1VQIEJZIHQx LnggT1JERVIgQlkgdDEueDsKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkKKyAgRlJP TSBlYWdlcl9hZ2dfdGFiMSB0MQorICBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0 Mi54CisgIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLngKK0dST1VQIEJZIHQx LnggT1JERVIgQlkgdDEueDsKKworLS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9o YXNoYWdnIFRPIG9mZjsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyIFRPIDA7 CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0My55LCBzdW0odDIueSAr IHQzLnkpCisgIEZST00gZWFnZXJfYWdnX3RhYjEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0 MiBPTiB0MS54ID0gdDIueAorICBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54 CitHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisKK1NFTEVDVCB0My55LCBzdW0odDIueSAr IHQzLnkpCisgIEZST00gZWFnZXJfYWdnX3RhYjEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0 MiBPTiB0MS54ID0gdDIueAorICBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54 CitHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOwor UkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKKworLS0gdHJ5IHRoYXQgd2l0 aCBHRVFPIHRvbworU0VUIGdlcW8gPSBvbjsKK1NFVCBnZXFvX3RocmVzaG9sZCA9IDI7CisKK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50 KCopCisgIEZST00gZWFnZXJfYWdnX3RhYjEgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiMiB0MiBP TiB0MS54ID0gdDIueQorR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCitTRUxFQ1QgdDEu eCwgc3VtKHQxLnkpLCBjb3VudCgqKQorICBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxCisgIEpPSU4g ZWFnZXJfYWdnX3RhYjIgdDIgT04gdDEueCA9IHQyLnkKK0dST1VQIEJZIHQxLnggT1JERVIgQlkg dDEueDsKKworUkVTRVQgZ2VxbzsKK1JFU0VUIGdlcW9fdGhyZXNob2xkOworCitEUk9QIFRBQkxF IGVhZ2VyX2FnZ190YWIxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiMjsKKworCistLQorLS0g VGVzdCB3aXRoIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyBzY2hlbWUKKy0tCitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYl9tbCh4IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsK K0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2df dGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9h Z2dfdGFiX21sX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgyMCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2Vy X2FnZ190YWJfbWxfcDJfczEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDIgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDE1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3Ay X3MyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTUp IFRPICgyMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMyBQQVJUSVRJT04gT0Yg ZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApIFBBUlRJVElPTiBC WSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AzX3MxIFBBUlRJVElP TiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AzIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgyNSk7CitD UkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdn X3RhYl9tbF9wMyBGT1IgVkFMVUVTIEZST00gKDI1KSBUTyAoMzApOworSU5TRVJUIElOVE8gZWFn ZXJfYWdnX3RhYl9tbCBTRUxFQ1QgaSAlIDMwLCBpICUgMzAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwMCkgaTsKKworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiX21sOworCistLSBXaGVuIEdST1VQ IEJZIGNsYXVzZSBtYXRjaGVzOyBmdWxsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFj aAorLS0gcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQx LngsIHN1bSh0Mi55KSwgY291bnQoKikKKyAgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxCisgIEpP SU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueAorR1JPVVAgQlkgdDEueCBPUkRF UiBCWSB0MS54OworCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKQorICBGUk9NIGVh Z2VyX2FnZ190YWJfbWwgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0 Mi54CitHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xh dXNlIGRvZXMgbm90IG1hdGNoOyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IK Ky0tIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNU IHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikKKyAgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxCisg IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueAorR1JPVVAgQlkgdDEueSBP UkRFUiBCWSB0MS55OworCitTRUxFQ1QgdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKQorICBGUk9N IGVhZ2VyX2FnZ190YWJfbWwgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLngg PSB0Mi54CitHUk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7CisKKy0tIENoZWNrIHdpdGggZWFn ZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSksIGNv dW50KCopCisgIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MQorICBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDIgT04gdDEueCA9IHQyLngKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIE9OIHQyLngg PSB0My54CitHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisKK1NFTEVDVCB0MS54LCBzdW0o dDIueSArIHQzLnkpLCBjb3VudCgqKQorICBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEKKyAgSk9J TiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54CisgIEpPSU4gZWFnZXJfYWdnX3Rh Yl9tbCB0MyBPTiB0Mi54ID0gdDMueAorR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCist LSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxF Q1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikKKyAgRlJPTSBlYWdlcl9hZ2dfdGFi X21sIHQxCisgIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueAorICBKT0lO IGVhZ2VyX2FnZ190YWJfbWwgdDMgT04gdDIueCA9IHQzLngKK0dST1VQIEJZIHQzLnkgT1JERVIg QlkgdDMueTsKKworU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopCisgIEZS T00gZWFnZXJfYWdnX3RhYl9tbCB0MQorICBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEu eCA9IHQyLngKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIE9OIHQyLnggPSB0My54CitHUk9V UCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisKKy0tIHRyeSB0aGF0IHdpdGggR0VRTyB0b28KK1NF VCBnZXFvID0gb247CitTRVQgZ2Vxb190aHJlc2hvbGQgPSAyOworCitFWFBMQUlOIChWRVJCT1NF LCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKQorICBGUk9NIGVh Z2VyX2FnZ190YWJfbWwgdDEKKyAgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0 Mi54CitHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisKK1NFTEVDVCB0MS54LCBzdW0odDIu eSksIGNvdW50KCopCisgIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MQorICBKT0lOIGVhZ2VyX2Fn Z190YWJfbWwgdDIgT04gdDEueCA9IHQyLngKK0dST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsK KworUkVTRVQgZ2VxbzsKK1JFU0VUIGdlcW9fdGhyZXNob2xkOworCitEUk9QIFRBQkxFIGVhZ2Vy X2FnZ190YWJfbWw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f YWdncmVnYXRlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUu c3FsCmluZGV4IGFiMDcwZmVlMjQ0Li4xMjRjYzI2MDQ2MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5zcWwKQEAgLTE0LDYgKzE0LDggQEAgU0VUIGVuYWJs ZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8gdHJ1ZTsKIFNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19w ZXJfZ2F0aGVyIFRPIDA7CiAtLSBEaXNhYmxlIGluY3JlbWVudGFsIHNvcnQsIHdoaWNoIGNhbiBp bmZsdWVuY2Ugc2VsZWN0ZWQgcGxhbnMgZHVlIHRvIGZ1enogZmFjdG9yLgogU0VUIGVuYWJsZV9p bmNyZW1lbnRhbF9zb3J0IFRPIG9mZjsKKy0tIERpc2FibGUgZWFnZXIgYWdncmVnYXRpb24sIHdo aWNoIGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZ2VuZXJhdGlvbiBvZiBwYXJ0aXRpb253aXNlIGFn Z3JlZ2F0aW9uLgorU0VUIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgVE8gb2ZmOwogCiAtLQogLS0g VGVzdHMgZm9yIGxpc3QgcGFydGl0aW9uZWQgdGFibGVzLgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCAzN2YyNmY2YzZiNy4uMDJiNWIwNDFjNDUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC00Miw2ICs0Miw3IEBAIEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEKIEFmdGVyVHJpZ2dl cnNUcmFuc0RhdGEKIEFnZwogQWdnQ2xhdXNlQ29zdHMKK0FnZ0NsYXVzZUluZm8KIEFnZ0luZm8K IEFnZ1BhdGgKIEFnZ1NwbGl0CkBAIC0xMTEwLDYgKzExMTEsNyBAQCBHcm91cFBhdGhFeHRyYURh dGEKIEdyb3VwUmVzdWx0UGF0aAogR3JvdXBTdGF0ZQogR3JvdXBWYXJJbmZvCitHcm91cGluZ0V4 cHJJbmZvCiBHcm91cGluZ0Z1bmMKIEdyb3VwaW5nU2V0CiBHcm91cGluZ1NldERhdGEKQEAgLTI0 NzMsNiArMjQ3NSw3IEBAIFJlaW5kZXhPYmplY3RUeXBlCiBSZWluZGV4UGFyYW1zCiBSZWluZGV4 U3RtdAogUmVpbmRleFR5cGUKK1JlbEFnZ0luZm8KIFJlbEZpbGVMb2NhdG9yCiBSZWxGaWxlTG9j YXRvckJhY2tlbmQKIFJlbEZpbGVOdW1iZXIKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --0000000000005f858d06408f6d36--