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.96) (envelope-from ) id 1vlmOz-003pr5-0u for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jan 2026 11:11:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vlmOx-004QVM-14 for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jan 2026 11:11:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vlmOw-004QVE-2V for pgsql-hackers@lists.postgresql.org; Fri, 30 Jan 2026 11:10:59 +0000 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vlmOt-00000000BUK-2Prd for pgsql-hackers@lists.postgresql.org; Fri, 30 Jan 2026 11:10:59 +0000 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-4806ce0f97bso16583415e9.0 for ; Fri, 30 Jan 2026 03:10:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769771454; cv=none; d=google.com; s=arc-20240605; b=gX/Pz/vlIOil1mT9eOCiGWTIU6LsiOo+ZWZqhyAnlwDGOvpi2r1Cw4yM1XTBiBmlJw OBJqoFL1DWAoqrq7dqwpjdaB5mrgMjhNRVB/feMYtdmiOY7eioM9NmEr7eTTZgAELjkF iBQ29k5LUKB0N7SsNU7fonX2oOJFyHnKE8ZK5UFYVzMBe6AQKF2FTdIWE+HnhUIxeaVa +AhoSEryRk26XpRUJ9ehI7dV4aXAzvvH7olXRVfcvGftE8uMIseB89vWv9nBxINOvE5l 4WDOADeEKSnjbkHKq/fGXSuPoWaW8mKtSW9HUE26UIDtm+VY/p4RHliTYoK1H8SHOqBs vxmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=2LMUJBgZwZk12y3yhepBt293u7jLsBlNSmyskZ1oIiM=; fh=vni2pihDwli8O1Pj56h400zaK8YYevGBv2iyoYbq1MA=; b=UfY8HNw417p8gOhxqxArx4/+zAxSBPbmFlzGZaJdaSfK8PsaxRYfeTbEUhp1XBLNQp Zgo9qD6y3DS5FmmybZJXboQLaFQAdb1bMixTiFWOmzFIoWrji/d/k/gEEfv2qeE2dGiL LwfX8vD4U0qqLdKj3VOeWKtSyAHUwSpuBrU90zfcb+MUY7X2ehwPvE5UApGHV9USjiz1 CFGOAFNlXhgA52ssFJsmDCauq3ymp02RzLxeFpUq/wAvyLF4SMIna8WJO6f3WjxE5sX4 +LgVGGE8YkF2rJPACdTrbqmXBi37OJuyHyWxviao7SITWRibI2AOh3OJ6k+AWydflqJ5 x4vw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769771454; x=1770376254; 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=2LMUJBgZwZk12y3yhepBt293u7jLsBlNSmyskZ1oIiM=; b=kCERw1P2Ov4QHFmXwVKVFOC2HmUHYtOnqCK34QcztxlAj8uOLtsy20bcVYlyKUBkPb Y0LhkZOkZLfsU/uxmQtldWbMt91wl0wbjbWLrXY4amOwjDku9Yy/0NGNYr0KKBHB0BIv rUhbXX9EPXCQYlvzNvzWa3Cy4crOYi7RBIEm23iGae8HdFcBMXgHD2g75qlJjCDbYoqI 7VSZPlS6vs8MP++7ZzIuZtX1gHXJGSNYwc3eT1TndXhaxE7RHtFpx0Dp2imgY+cxgr/J JpQAOul0hzUGQltY+9EeyXwH/1jGbFJPdYR0q8tYWVgrE+uXn1TfjS3d3vC5sWrtpRn5 dHEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769771454; x=1770376254; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2LMUJBgZwZk12y3yhepBt293u7jLsBlNSmyskZ1oIiM=; b=pPmGSmusZg/v0FRo6S7tT1NBnmXBqEGDeSumq/PfB7sR/Rdjg+1cl1F811wFf8qFud jqqqocJMCnKVaJDER8tzd7phWPhUVGYomc7ans9+WeIREZ0lDzfUbsX3nITBlvVLkbaK WjRCmIxlJH/f3+O5xNR9PNL/H51h7s8oogiB2EudR2sAZ5MfTTJYwFsrXz+guA7aWIjk f2a8+Zdgo/jvWjZ4oGL5r5pc94dK8E/oZ6SV3AbRBi2MgaN5+eYv3rkK4o9+LEE9nOgQ SDMJhR+F3J5O8imDcJukyqt13bnumzEuvH1P8els/MD/0+WYYfis04uSkUJISLjwlZId y3tg== X-Forwarded-Encrypted: i=1; AJvYcCV7VZu2Yw3NFTYy5LKbisTN8gnv8alraGihY6kvwN/rRoc3eGZywI+LJrHPHAP7zYmBdlvzljcCBs6pE6mK@lists.postgresql.org X-Gm-Message-State: AOJu0YxkJu0UyUSLx3yQPl5l7/vH5qe963INE6ZdT/gO3fVdzXrGWt9/ A8cQ42gWTFXfmFPhtMpIiCRwzN0ob13167e4BXZ9+HWLnbA4b4dgfmP7S8XQK8ZqoM5FtL9hAIL 0FquM8ojNKdLL8+aqf2YxMarFyycaKi4= X-Gm-Gg: AZuq6aL+5rOEUPisyj80Ci2zwleWZOcrDO2ZI6eeKnCwPqC53TKv19QnPcjtly90Oar FmY6lIDVhcpXEAO6xcuoeUgNw8poEPurMH3mG4xMhfIkreFsECRE92mfnXmJbFY1PsVH/dR8TsR nJ7bca0MyQbHjvi+GjdiHCDiNxPvbyhstFV1T/Vtomdv2AR2DJkj1/CUHaoJLn9LbfkiE/V9s8Z 6ETf0zexWK9FGNb9TXL2EBh3KAOH2TsyFFp1lgZ8hF/y/ePoALq2FtSj/iGxtPY8OGbIvACxNFH w47e1s11XcYGTVwxt8voOfqJdc8TkDtaXpmovOTr1u4c1CP7GB0s6TMix7nU X-Received: by 2002:a05:600c:1d8c:b0:47b:deb9:15fb with SMTP id 5b1f17b1804b1-482db4970e2mr30807685e9.33.1769771453847; Fri, 30 Jan 2026 03:10:53 -0800 (PST) MIME-Version: 1.0 References: <9A17C43D-7A28-4885-8974-555A40C9523E@gmail.com> In-Reply-To: From: David Rowley Date: Sat, 31 Jan 2026 00:10:42 +1300 X-Gm-Features: AZwV_QjO9910PNricoLmH0rw3JjASTnDaVMkXPyODvhyhaJMJ2M0gm_rQZP_aHU Message-ID: Subject: Re: More speedups for tuple deformation To: Andres Freund Cc: Chao Li , PostgreSQL Developers Content-Type: multipart/mixed; boundary="000000000000d7a7fa0649990688" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d7a7fa0649990688 Content-Type: text/plain; charset="UTF-8" Thank you for looking at this again. On Thu, 29 Jan 2026 at 05:26, Andres Freund wrote: > On 2026-01-28 02:34:26 +1300, David Rowley wrote: > > + firstNonCacheOffsetAttr = Min(tupleDesc->firstNonCachedOffAttr, natts); > > FWIW, in a few experiments on my cascade lake systems, this branch (well, it > ends up as a cmov) ends up causing a surprisingly large performance > bottleneck. I don't really see a way around that, but I thought I'd mention it. Yeah, I believe this is the primary reason that I'm fighting the small regression on the 0 extra column test. I thought it might be because the mov has a dependency and wait on natts being calculated, which needs to access fields in the tuple header. I wonder if there's some reason the compiler to CPU can't defer calculating firstNonCacheOffsetAttr until later. Maybe I should try moving it later in the code to see if that helps. > On the topic of tupleDesc->firstNonCachedOffAttr - shouldn't that be an > AttrNumber? Not that it'll make a difference perf or space wise, just for > clarity. > > Hm, I guess natts isn't an AttrNumber either. Not sure why? I noticed that too, but took the path of least resistance and made firstNonCachedOffAttr an int too. I did wonder why natts wasn't an AttrNumber. If they both were AttrNumbers, I wouldn't need to make the TupleDesc struct bigger. Right now, I've enlarged it by 8 bytes by adding firstNonCachedOffAttr. One problem is that a bunch of functions that accept int; CreateTemplateTupleDesc(int natts), CreateTupleDesc(int natts, Form_pg_attribute *attrs). Then BuildDescFromLists() sets natts based on list_length(). Maybe CreateTemplateTupleDesc() could Assert or throw an error if natts does not fit in 16-bits. > > > + if (hasnulls) > > + { > > + bp = tup->t_bits; > > + firstNullAttr = first_null_attr(bp, natts); > > + firstNonCacheOffsetAttr = Min(firstNonCacheOffsetAttr, firstNullAttr); > > + } > > + else > > + { > > + bp = NULL; > > + firstNullAttr = natts; > > + } > > + > > + values = slot->tts_values; > > + isnull = slot->tts_isnull; > > + tp = (char *) tup + tup->t_hoff; > > Another stall I see is due to the t_hoff computation - which makes sense, it's > in the tuple header and none of the deforming can happen without knowing the > address. I think in the !hasnulls case, the only influence on it is > MAXALIGN(offsetof(HeapTupleHeaderData, t_bits)), so we could just hardcode > that? hmm. I wonder why it even needs to exist. If the null bitmap is there, you can calculate how many bytes from natts. I tried doing "tp = (char *) tup + MAXALIGN(offsetof(HeapTupleHeaderData, t_bits));" for the !hasnulls case and it's hard to tell if it helps. See the 0004 patch. I'm somewhat hesitant to go against the grain here on how to calculate where the tuple data starts. > Separately, sometimes - I haven't figured out when - gcc seems to think it's > smart to actually compute the `tp + cattr->attcacheoff` below using tup and > tup->t_hoff stored in registers (i.e. doing multiple adds). When the code is > generated that way, I see substantially worse performance. Have you seen > that? I've not noticed that. > > + else if (attnum == 0) > > { > > /* Start from the first attribute */ > > off = 0; > > - slow = false; > > } > > else > > { > > /* Restore state from previous execution */ > > off = *offp; > > - slow = TTS_SLOW(slot); > > } > > Do we actually need both of these branches? Shouldn't *offp be set to 0 in the > attnum == 0 case? I see tts_heap_clear() zeros it, so I think it should be ok. Doesn't feel quite as robust, however. > A few thoughts / suggestions: > > 1) We should not update values[]/isnull[] between fetchatt() and > att_addlength_pointer(). The compiler can't figure out that no fields in > cattr or *(tp + off) are being affected by those stores. > > Changing this on master improves performance quite noticeably. I see a 13% > improvement in a test with deforming 5 not-null byval columns. That's easy enough. I've moved it up in the v7 patch before the cattr assignment. > 2) I sometime see performance benefits due to moving the isnull[attnum] = > false; to the beginning of the loop. Which makes some sense, starting the > store earlier allows it to complete earlier, and it doesn't depend on > fetching cattr, aligning the pointer, fetching the attribute and adjusting > the offset. > 3) I briefly experimented with this code, and I think we may be able to > optimize the combination of att_pointer_alignby(), fetch_att() and > att_addlength_pointer(). They all do quite related work, and for byvalue > types, we know at compile time what the alignment requirement for each of > the supported attlen is. Is this true? Isn't there some nearby discussion about AIX having 4-byte double alignment? I've taken a go at implementing a function called align_fetch_then_add(), which rolls all the macros into one (See 0004). I just can't see any improvements with it. Maybe I've missed something that could be more optimal. I did even ditch one of the cases from the switch(attlen). It might be ok to do that now as we can check for invalid attlens for byval types when we populate the CompactAttribute. > Have you experimented setting isnull[] in a dedicated loop if there are nulls > and then in this loop just checking isnull[attnum]? Seems like that could > perhaps be combined with the work in first_null_attr() and be more efficient > than doing an att_isnull() separately for each column. Yes. I experiment with that quite a bit. I wasn't able to make it any faster than setting the isnull element in the same loop as the tts_values element. What I did try was having a dedicated tight loop like; for (int i = attnum; i < firstNullAttr; i++) isnull[i] = false;, but the compiler would always try to optimise that into an inlined memset which would result in poorly performing code in cases with a small number of columns due to the size and alignment prechecks. I had given up on it as I was already fighting some performance regressions for the 0 extra column test and this made those worse. However... In the attached 0004 patch I've experimented with this again. This time, I wrote a function that converts the null bitmap into the isnull array using a lookup table. I spent a bit of time trying to figure out a way to do this without the lookup table and only came up with a method that requires AVX512 instructions. I coded that up, but it requires building with -march=x86-64-v4, which will likely cause many other reasons for the performance to vary. The machine that likes 0004 the most (using the lookup table method of setting the isnull array) is the Apple M2. All the tests apart from the 0 extra column test became 30-90% faster. Previously the tests that had to do att_isnull didn't improve very much. The 0 extra column test regressed quite a bit. 50% slower on all but test 1 and 5 (the ones without NULLs). See the attached graph. The Zen2 machine also perhaps quite likes it, but not for the 0 extra column test. I'm struggling to get stable performance results from that machine right now. My Zen 4 laptop isn't a fan of it, but also not getting very stable performance results from that either. I'm curious to see what your Intel machines think of 0004 vs not having it. Right now, I'm really only getting stable performance out of my Apple M2 machine, so I'm not too sure what parts of 0004 I should include in 0002 and which ones I should throw away. David --000000000000d7a7fa0649990688 Content-Type: text/plain; charset="US-ASCII"; name="v7-0001-Add-empty-TupleDescFinalize-function.patch" Content-Disposition: attachment; filename="v7-0001-Add-empty-TupleDescFinalize-function.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml0qu3t41 RnJvbSBmN2VmY2EzZjE1ZjUxN2JiMGM4MDdjM2UwOWFkNDBhYWI0YzA4ZjZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMSBKYW4gMjAyNiAxNTo0MTozNyArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMS80 XSBBZGQgZW1wdHkgVHVwbGVEZXNjRmluYWxpemUoKSBmdW5jdGlvbgoKQ3VycmVudGx5IGRvZXMg bm90aGluZywgYnV0IHdpbGwgaW4gYSBmdXR1cmUgY29tbWl0LgotLS0KIGNvbnRyaWIvZGJsaW5r L2RibGluay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKysKIGNvbnRyaWIv cGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYyAgICAgICB8ICAyICsrCiBjb250 cmliL3BnX3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jICAgICAgICAgICAgICAgfCAgMiArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jICAgICAgICAgICAgICAgIHwgIDEg Kwogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMgICAgICAgICAgICAgICAgIHwg MTMgKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMgICAgICAg ICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHNjYW4uYyAg ICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGls cy5jICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdv cGhhc2UuYyAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ2Z1bmNzLmMgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2Vi YWNrdXBfY29weS5jICAgICAgICAgICAgICAgIHwgIDMgKysrCiBzcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv Y2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCiBzcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBz cmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNtZHMuYyAgICAgICAgICAgICAgICAgfCAgMSAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jICAgICAgICAgICAgICAgICAgICAgfCAg MSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgICAgICAg fCAgNCArKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjU1JGLmMgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jICAgICAg ICAgICAgICAgICAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9u c2Nhbi5jICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxh dGlvbi5jICAgICAgICAgICAgICAgICB8ICA0ICsrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYyAgICAgICAgICAgICAgICAgICB8ICAyICsrCiAuLi4vcmVwbGljYXRpb24vbGli cHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgfCAgMSArCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgICAgICAgfCAgNSArKysrKwogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2FjbC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2dlbmZpbGUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jICAgICAgICAgICAgICAgICAgIHwgIDEgKwog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yZGVyZWRzZXRhZ2dzLmMgICAgICAgICAgICAgIHwgIDEg Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgICAgICAgIHwg IDUgKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9vcC5jICAgICAgICAgICAg ICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAg ICAgICAgICB8ICA4ICsrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9mbWdyL2Z1bmNhcGkuYyAg ICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X2Z1bmNzLmMgICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv dHVwZGVzYy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvcGwvcGxwZ3NxbC9z cmMvcGxfY29tcC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKwogLi4uL3Rlc3RfY3Vz dG9tX3N0YXRzL3Rlc3RfY3VzdG9tX2ZpeGVkX3N0YXRzLmMgICAgIHwgIDEgKwogc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3ByZWR0ZXN0L3Rlc3RfcHJlZHRlc3QuYyAgICAgIHwgIDEgKwogMzkgZmls ZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9jb250cmliL2RibGluay9kYmxpbmsuYyBiL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCmluZGV4 IDhjYjMxNjY0OTVjLi4xY2U0NTAyZmVjMiAxMDA2NDQKLS0tIGEvY29udHJpYi9kYmxpbmsvZGJs aW5rLmMKKysrIGIvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMKQEAgLTg4MSw2ICs4ODEsNyBAQCBt YXRlcmlhbGl6ZVJlc3VsdChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgUEdjb25uICpjb25uLCBQ R3Jlc3VsdCAqcmVzKQogCQl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoMSk7CiAJ CVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgInN0YXR1cyIsCiAJ CQkJCQkgICBURVhUT0lELCAtMSwgMCk7CisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwog CQludHVwbGVzID0gMTsKIAkJbmZpZWxkcyA9IDE7CiAJfQpAQCAtMTA0NCw2ICsxMDQ1LDcgQEAg bWF0ZXJpYWxpemVRdWVyeVJlc3VsdChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCXR1cGRl c2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYygxKTsKIAkJCVR1cGxlRGVzY0luaXRFbnRyeSh0 dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgInN0YXR1cyIsCiAJCQkJCQkJICAgVEVYVE9JRCwgLTEs IDApOworCQkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJCQlhdHRpbm1ldGEgPSBUdXBs ZURlc2NHZXRBdHRJbk1ldGFkYXRhKHR1cGRlc2MpOwogCiAJCQlvbGRjb250ZXh0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKHJzaW5mby0+ZWNvbnRleHQtPmVjeHRfcGVyX3F1ZXJ5X21lbW9yeSk7 CkBAIC0xNTI5LDYgKzE1MzEsOCBAQCBkYmxpbmtfZ2V0X3BrZXkoUEdfRlVOQ1RJT05fQVJHUykK IAkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAyLCAiY29sbmFtZSIs CiAJCQkJCQkgICBURVhUT0lELCAtMSwgMCk7CiAKKwkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVz Yyk7CisKIAkJLyoKIAkJICogR2VuZXJhdGUgYXR0cmlidXRlIG1ldGFkYXRhIG5lZWRlZCBsYXRl ciB0byBwcm9kdWNlIHR1cGxlcyBmcm9tIHJhdwogCQkgKiBDIHN0cmluZ3MKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYyBiL2NvbnRyaWIv cGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYwppbmRleCA4OWI4Njg1NTI0My4u YTZiNGZiNTI1MmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVy Y2FjaGVfcGFnZXMuYworKysgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hl X3BhZ2VzLmMKQEAgLTE3NCw2ICsxNzQsNyBAQCBwZ19idWZmZXJjYWNoZV9wYWdlcyhQR19GVU5D VElPTl9BUkdTKQogCQkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIp IDksICJwaW5uaW5nX2JhY2tlbmRzIiwKIAkJCQkJCQkgICBJTlQ0T0lELCAtMSwgMCk7CiAKKwkJ VHVwbGVEZXNjRmluYWxpemUodHVwbGVkZXNjKTsKIAkJZmN0eC0+dHVwZGVzYyA9IEJsZXNzVHVw bGVEZXNjKHR1cGxlZGVzYyk7CiAKIAkJLyogQWxsb2NhdGUgTkJ1ZmZlcnMgd29ydGggb2YgQnVm ZmVyQ2FjaGVQYWdlc1JlYyByZWNvcmRzLiAqLwpAQCAtNDQyLDYgKzQ0Myw3IEBAIHBnX2J1ZmZl cmNhY2hlX29zX3BhZ2VzX2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGlu Y2x1ZGVfbnVtYSkKIAkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIp IDMsICJudW1hX25vZGUiLAogCQkJCQkJICAgSU5UNE9JRCwgLTEsIDApOwogCisJCVR1cGxlRGVz Y0ZpbmFsaXplKHR1cGxlZGVzYyk7CiAJCWZjdHgtPnR1cGRlc2MgPSBCbGVzc1R1cGxlRGVzYyh0 dXBsZWRlc2MpOwogCQlmY3R4LT5pbmNsdWRlX251bWEgPSBpbmNsdWRlX251bWE7CiAKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMgYi9jb250cmliL3Bn X3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jCmluZGV4IDliYzNhNzg0YmY3Li5kZmFiMGI2NGNm NSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ192aXNpYmlsaXR5L3BnX3Zpc2liaWxpdHkuYworKysg Yi9jb250cmliL3BnX3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jCkBAIC00NjksNiArNDY5LDgg QEAgcGdfdmlzaWJpbGl0eV90dXBkZXNjKGJvb2wgaW5jbHVkZV9ibGtubywgYm9vbCBpbmNsdWRl X3BkKQogCQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKythLCAicGRfYWxsX3Zpc2libGUi LCBCT09MT0lELCAtMSwgMCk7CiAJQXNzZXJ0KGEgPT0gbWF4YXR0cik7CiAKKwlUdXBsZURlc2NG aW5hbGl6ZSh0dXBkZXNjKTsKKwogCXJldHVybiBCbGVzc1R1cGxlRGVzYyh0dXBkZXNjKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jCmluZGV4IDcwNjM4N2UzNmQ2Li43ZjE1 MGRmOWVlNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYwpAQCAtODQsNiArODQs NyBAQCBicnR1cGxlX2Rpc2tfdHVwZGVzYyhCcmluRGVzYyAqYnJkZXNjKQogCiAJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwog CQlicmRlc2MtPmJkX2Rpc2t0ZGVzYyA9IHR1cGRlc2M7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vdHVwZGVzYy5jCmluZGV4IDk0YjRmMWY5OTc1Li5lOThkZTgwNmE3NyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi90dXBkZXNjLmMKQEAgLTIzOCw2ICsyMzgsOSBAQCBDcmVhdGVUdXBsZURlc2Mo aW50IG5hdHRzLCBGb3JtX3BnX2F0dHJpYnV0ZSAqYXR0cnMpCiAJCW1lbWNweShUdXBsZURlc2NB dHRyKGRlc2MsIGkpLCBhdHRyc1tpXSwgQVRUUklCVVRFX0ZJWEVEX1BBUlRfU0laRSk7CiAJCXBv cHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKGRlc2MsIGkpOwogCX0KKworCVR1cGxlRGVzY0ZpbmFs aXplKGRlc2MpOworCiAJcmV0dXJuIGRlc2M7CiB9CiAKQEAgLTI4Miw2ICsyODUsOCBAQCBDcmVh dGVUdXBsZURlc2NDb3B5KFR1cGxlRGVzYyB0dXBkZXNjKQogCWRlc2MtPnRkdHlwZWlkID0gdHVw ZGVzYy0+dGR0eXBlaWQ7CiAJZGVzYy0+dGR0eXBtb2QgPSB0dXBkZXNjLT50ZHR5cG1vZDsKIAor CVR1cGxlRGVzY0ZpbmFsaXplKGRlc2MpOworCiAJcmV0dXJuIGRlc2M7CiB9CiAKQEAgLTMyOCw2 ICszMzMsOCBAQCBDcmVhdGVUdXBsZURlc2NUcnVuY2F0ZWRDb3B5KFR1cGxlRGVzYyB0dXBkZXNj LCBpbnQgbmF0dHMpCiAJZGVzYy0+dGR0eXBlaWQgPSB0dXBkZXNjLT50ZHR5cGVpZDsKIAlkZXNj LT50ZHR5cG1vZCA9IHR1cGRlc2MtPnRkdHlwbW9kOwogCisJVHVwbGVEZXNjRmluYWxpemUoZGVz Yyk7CisKIAlyZXR1cm4gZGVzYzsKIH0KIApAQCAtNDEzLDYgKzQyMCw4IEBAIENyZWF0ZVR1cGxl RGVzY0NvcHlDb25zdHIoVHVwbGVEZXNjIHR1cGRlc2MpCiAJZGVzYy0+dGR0eXBlaWQgPSB0dXBk ZXNjLT50ZHR5cGVpZDsKIAlkZXNjLT50ZHR5cG1vZCA9IHR1cGRlc2MtPnRkdHlwbW9kOwogCisJ VHVwbGVEZXNjRmluYWxpemUoZGVzYyk7CisKIAlyZXR1cm4gZGVzYzsKIH0KIApAQCAtNDU1LDYg KzQ2NCw4IEBAIFR1cGxlRGVzY0NvcHkoVHVwbGVEZXNjIGRzdCwgVHVwbGVEZXNjIHNyYykKIAkg KiBzb3VyY2UncyByZWZjb3VudCB3b3VsZCBiZSB3cm9uZyBpbiBhbnkgY2FzZS4pCiAJICovCiAJ ZHN0LT50ZHJlZmNvdW50ID0gLTE7CisKKwlUdXBsZURlc2NGaW5hbGl6ZShkc3QpOwogfQogCiAv KgpAQCAtMTA4Miw2ICsxMDkzLDggQEAgQnVpbGREZXNjRnJvbUxpc3RzKGNvbnN0IExpc3QgKm5h bWVzLCBjb25zdCBMaXN0ICp0eXBlcywgY29uc3QgTGlzdCAqdHlwbW9kcywgY28KIAkJVHVwbGVE ZXNjSW5pdEVudHJ5Q29sbGF0aW9uKGRlc2MsIGF0dG51bSwgYXR0Y29sbGF0aW9uKTsKIAl9CiAK KwlUdXBsZURlc2NGaW5hbGl6ZShkZXNjKTsKKwogCXJldHVybiBkZXNjOwogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2ludXRpbC5jCmluZGV4IGQyMDUwOTNlMjFkLi5hNTMzZDc5ZTI2ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW51dGlsLmMKQEAgLTEyOSw2ICsxMjksNyBAQCBpbml0R2luU3RhdGUoR2luU3Rh dGUgKnN0YXRlLCBSZWxhdGlvbiBpbmRleCkKIAkJCQkJCQkgICBhdHRyLT5hdHRuZGltcyk7CiAJ CQlUdXBsZURlc2NJbml0RW50cnlDb2xsYXRpb24oc3RhdGUtPnR1cGRlc2NbaV0sIChBdHRyTnVt YmVyKSAyLAogCQkJCQkJCQkJCWF0dHItPmF0dGNvbGxhdGlvbik7CisJCQlUdXBsZURlc2NGaW5h bGl6ZShzdGF0ZS0+dHVwZGVzY1tpXSk7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHNjYW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3RzY2FuLmMKaW5kZXggZjIzYmM0YTY3NTcuLmM2NWY5M2FiZGFlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3RzY2FuLmMKQEAgLTIwMSw2ICsyMDEsNyBAQCBnaXN0cmVzY2FuKEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbktleSBrZXksIGludCBua2V5cywKIAkJCQkJCQkJCQkJIGF0dG5vIC0gMSkt PmF0dHR5cGlkLAogCQkJCQkJCSAgIC0xLCAwKTsKIAkJfQorCQlUdXBsZURlc2NGaW5hbGl6ZShz by0+Z2lzdHN0YXRlLT5mZXRjaFR1cGRlc2MpOwogCQlzY2FuLT54c19oaXR1cGRlc2MgPSBzby0+ Z2lzdHN0YXRlLT5mZXRjaFR1cGRlc2M7CiAKIAkJLyogQWxzbyBjcmVhdGUgYSBtZW1vcnkgY29u dGV4dCB0aGF0IHdpbGwgaG9sZCB0aGUgcmV0dXJuZWQgdHVwbGVzICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3V0aWxzLmMKaW5kZXggOWY1Mzc5Yjg3YWMuLmIyNDZlODEyN2RiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jCkBAIC0zNDAsNiArMzQwLDcgQEAgZ2V0U3BHaXN0 VHVwbGVEZXNjKFJlbGF0aW9uIGluZGV4LCBTcEdpc3RUeXBlRGVzYyAqa2V5VHlwZSkKIAkJCVR1 cGxlRGVzY0NvbXBhY3RBdHRyKG91dFR1cERlc2MsIGkpLT5hdHRjYWNoZW9mZiA9IC0xOwogCiAJ CXBvcHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKG91dFR1cERlc2MsIHNwZ0tleUNvbHVtbik7CisJ CVR1cGxlRGVzY0ZpbmFsaXplKG91dFR1cERlc2MpOwogCX0KIAlyZXR1cm4gb3V0VHVwRGVzYzsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCmluZGV4IDYwMWNlM2ZhYTY0Li42 ZDU3OTJjNzkyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhh c2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC03NDQs NiArNzQ0LDcgQEAgcGdfcHJlcGFyZWRfeGFjdChQR19GVU5DVElPTl9BUkdTKQogCQlUdXBsZURl c2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDUsICJkYmlkIiwKIAkJCQkJCSAgIE9J RE9JRCwgLTEsIDApOwogCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwogCQlmdW5jY3R4 LT50dXBsZV9kZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAkJLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggMmVmZTQxMDVlZmIuLmI2YmM2MTZjNzRj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwpAQCAtNDAwLDYgKzQwMCw3 IEBAIHBnX3dhbGZpbGVfbmFtZV9vZmZzZXQoUEdfRlVOQ1RJT05fQVJHUykKIAlUdXBsZURlc2NJ bml0RW50cnkocmVzdWx0VHVwbGVEZXNjLCAoQXR0ck51bWJlcikgMiwgImZpbGVfb2Zmc2V0IiwK IAkJCQkJICAgSU5UNE9JRCwgLTEsIDApOwogCisJVHVwbGVEZXNjRmluYWxpemUocmVzdWx0VHVw bGVEZXNjKTsKIAlyZXN1bHRUdXBsZURlc2MgPSBCbGVzc1R1cGxlRGVzYyhyZXN1bHRUdXBsZURl c2MpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2Nv cHkuYyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2NvcHkuYwppbmRleCBmZWNmYWQ5 YWI3Yi4uMjlkYmQwY2IzMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFj a3VwX2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9jb3B5LmMKQEAg LTM1Nyw2ICszNTcsOCBAQCBTZW5kWGxvZ1JlY1B0clJlc3VsdChYTG9nUmVjUHRyIHB0ciwgVGlt ZUxpbmVJRCB0bGkpCiAJICovCiAJVHVwbGVEZXNjSW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAo QXR0ck51bWJlcikgMiwgInRsaSIsIElOVDhPSUQsIC0xLCAwKTsKIAorCVR1cGxlRGVzY0ZpbmFs aXplKHR1cGRlc2MpOworCiAJLyogc2VuZCBSb3dEZXNjcmlwdGlvbiAqLwogCXRzdGF0ZSA9IGJl Z2luX3R1cF9vdXRwdXRfdHVwZGVzYyhkZXN0LCB0dXBkZXNjLCAmVFRTT3BzVmlydHVhbCk7CiAK QEAgLTM4OCw2ICszOTAsNyBAQCBTZW5kVGFibGVzcGFjZUxpc3QoTGlzdCAqdGFibGVzcGFjZXMp CiAJVHVwbGVEZXNjSW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgInNw Y29pZCIsIE9JRE9JRCwgLTEsIDApOwogCVR1cGxlRGVzY0luaXRCdWlsdGluRW50cnkodHVwZGVz YywgKEF0dHJOdW1iZXIpIDIsICJzcGNsb2NhdGlvbiIsIFRFWFRPSUQsIC0xLCAwKTsKIAlUdXBs ZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAzLCAic2l6ZSIsIElO VDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAogCS8qIHNlbmQg Um93RGVzY3JpcHRpb24gKi8KIAl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRlc2MoZGVz dCwgdHVwZGVzYywgJlRUU09wc1ZpcnR1YWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDQzZGU0MmNl MzllLi43NWU5N2ZiMzk0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNDgxLDYgKzQ4MSw4IEBAIENv bnN0cnVjdFR1cGxlRGVzY3JpcHRvcihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCXBvcHVsYXRl X2NvbXBhY3RfYXR0cmlidXRlKGluZGV4VHVwRGVzYywgaSk7CiAJfQogCisJVHVwbGVEZXNjRmlu YWxpemUoaW5kZXhUdXBEZXNjKTsKKwogCXJldHVybiBpbmRleFR1cERlc2M7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCA5YTQ3OTFjNTczZS4uZmEzNTNhMGRkMzcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTEyMzAsNiArMTIzMCw3IEBA IHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJVHVwbGVEZXNj SW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA0LCAicXVhbCIsCiAJCQkJCQkgICBQR19O T0RFX1RSRUVPSUQsIC0xLCAwKTsKIAorCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAkJ ZnVuY2N0eC0+dHVwbGVfZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCQlmdW5jY3R4 LT51c2VyX2ZjdHggPSB0YWJsZV9pbmZvczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCmluZGV4IGM3 OGRjZWE5OGMxLi4wNzhhMWNmNTEyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90 b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMjI5LDYg KzIyOSwxMiBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQs IE9pZCB0b2FzdEluZGV4T2lkLAogCVR1cGxlRGVzY0F0dHIodHVwZGVzYywgMSktPmF0dGNvbXBy ZXNzaW9uID0gSW52YWxpZENvbXByZXNzaW9uTWV0aG9kOwogCVR1cGxlRGVzY0F0dHIodHVwZGVz YywgMiktPmF0dGNvbXByZXNzaW9uID0gSW52YWxpZENvbXByZXNzaW9uTWV0aG9kOwogCisJcG9w dWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUodHVwZGVzYywgMCk7CisJcG9wdWxhdGVfY29tcGFjdF9h dHRyaWJ1dGUodHVwZGVzYywgMSk7CisJcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUodHVwZGVz YywgMik7CisKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKKwogCS8qCiAJICogVG9hc3Qg dGFibGVzIGZvciByZWd1bGFyIHJlbGF0aW9ucyBnbyBpbiBwZ190b2FzdDsgdGhvc2UgZm9yIHRl bXAKIAkgKiByZWxhdGlvbnMgZ28gaW50byB0aGUgcGVyLWJhY2tlbmQgdGVtcC10b2FzdC10YWJs ZSBuYW1lc3BhY2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggYjdiYjExMTY4OGMuLjdhYmQ5 ZWQyNzJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0yODEsNiArMjgxLDcgQEAgRXhwbGFp blJlc3VsdERlc2MoRXhwbGFpblN0bXQgKnN0bXQpCiAJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRl VHVwbGVEZXNjKDEpOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikg MSwgIlFVRVJZIFBMQU4iLAogCQkJCQkgICByZXN1bHRfdHlwZSwgLTEsIDApOworCVR1cGxlRGVz Y0ZpbmFsaXplKHR1cGRlc2MpOwogCXJldHVybiB0dXBkZXNjOwogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2Z1bmN0aW9uY21kcy5jCmluZGV4IGE1MTZiMDM3ZGVhLi42YThmMTYyYjY0MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKQEAgLTI0MjMsNiArMjQyMyw3IEBAIENhbGxTdG10UmVz dWx0RGVzYyhDYWxsU3RtdCAqc3RtdCkKIAkJCQkJCQkgICAtMSwKIAkJCQkJCQkgICAwKTsKIAkJ fQorCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAl9CiAKIAlyZXR1cm4gdHVwZGVzYzsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXF1ZW5jZS5jCmluZGV4IGUxYjgwOGJiYjYwLi41NTE2Njc2NTBiYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXF1ZW5jZS5jCkBAIC0xODA4LDYgKzE4MDgsNyBAQCBwZ19nZXRfc2VxdWVu Y2VfZGF0YShQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBCT09MT0lELCAtMSwgMCk7CiAJVHVw bGVEZXNjSW5pdEVudHJ5KHJlc3VsdFR1cGxlRGVzYywgKEF0dHJOdW1iZXIpIDMsICJwYWdlX2xz biIsCiAJCQkJCSAgIExTTk9JRCwgLTEsIDApOworCVR1cGxlRGVzY0ZpbmFsaXplKHJlc3VsdFR1 cGxlRGVzYyk7CiAJcmVzdWx0VHVwbGVEZXNjID0gQmxlc3NUdXBsZURlc2MocmVzdWx0VHVwbGVE ZXNjKTsKIAogCXNlcXJlbCA9IHRyeV9yZWxhdGlvbl9vcGVuKHJlbGlkLCBBY2Nlc3NTaGFyZUxv Y2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmOTc2YzBlNWM3ZS4uYWU3YzlkYjlm YTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xMDI5LDYgKzEwMjksOCBAQCBEZWZp bmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAog CQl9CiAJfQogCisJVHVwbGVEZXNjRmluYWxpemUoZGVzY3JpcHRvcik7CisKIAkvKgogCSAqIEZv ciByZWxhdGlvbnMgd2l0aCB0YWJsZSBBTSBhbmQgcGFydGl0aW9uZWQgdGFibGVzLCBzZWxlY3Qg YWNjZXNzCiAJICogbWV0aG9kIHRvIHVzZTogYW4gZXhwbGljaXRseSBpbmRpY2F0ZWQgb25lLCBv ciAoaW4gdGhlIGNhc2Ugb2YgYQpAQCAtMTQ0OCw2ICsxNDUwLDggQEAgQnVpbGREZXNjRm9yUmVs YXRpb24oY29uc3QgTGlzdCAqY29sdW1ucykKIAkJcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUo ZGVzYywgYXR0bnVtIC0gMSk7CiAJfQogCisJVHVwbGVEZXNjRmluYWxpemUoZGVzYyk7CisKIAly ZXR1cm4gZGVzYzsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCmluZGV4IDEyOTBkZjEwYzZmLi44ZTkyMGE3 MjM3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpAQCAtMzM4LDUgKzMzOCw2IEBAIFdhaXRTdG10UmVzdWx0 RGVzYyhXYWl0U3RtdCAqc3RtdCkKIAl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2Mo MSk7CiAJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAic3RhdHVz IiwKIAkJCQkJICAgVEVYVE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2Mp OwogCXJldHVybiB0dXBkZXNjOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1NSRi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1NSRi5jCmluZGV4IGEwYjExMWRj MGU0Li5iNDgxZTUwYWNmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1NS Ri5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNTUkYuYwpAQCAtMjcyLDYgKzI3Miw3 IEBAIEV4ZWNNYWtlVGFibGVGdW5jdGlvblJlc3VsdChTZXRFeHByU3RhdGUgKnNldGV4cHIsCiAJ CQkJCQkJCQkgICBmdW5jcmV0dHlwZSwKIAkJCQkJCQkJCSAgIC0xLAogCQkJCQkJCQkJICAgMCk7 CisJCQkJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwogCQkJCQlyc2luZm8uc2V0RGVzYyA9 IHR1cGRlc2M7CiAJCQkJfQogCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK QEAgLTc3Niw2ICs3NzcsNyBAQCBpbml0X3NleHByKE9pZCBmb2lkLCBPaWQgaW5wdXRfY29sbGF0 aW9uLCBFeHByICpub2RlLAogCQkJCQkJCSAgIGZ1bmNyZXR0eXBlLAogCQkJCQkJCSAgIC0xLAog CQkJCQkJCSAgIDApOworCQkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJCQlzZXhwci0+ ZnVuY1Jlc3VsdERlc2MgPSB0dXBkZXNjOwogCQkJc2V4cHItPmZ1bmNSZXR1cm5zVHVwbGUgPSBm YWxzZTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCmluZGV4IGI3NjhlYWU5ZTUzLi5l NmFiNTFlNjQwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYwpAQCAtMjE3Myw2ICsyMTcz LDggQEAgRXhlY1R5cGVGcm9tVExJbnRlcm5hbChMaXN0ICp0YXJnZXRMaXN0LCBib29sIHNraXBq dW5rKQogCQljdXJfcmVzbm8rKzsKIAl9CiAKKwlUdXBsZURlc2NGaW5hbGl6ZSh0eXBlSW5mbyk7 CisKIAlyZXR1cm4gdHlwZUluZm87CiB9CiAKQEAgLTIyMDcsNiArMjIwOSw4IEBAIEV4ZWNUeXBl RnJvbUV4cHJMaXN0KExpc3QgKmV4cHJMaXN0KQogCQljdXJfcmVzbm8rKzsKIAl9CiAKKwlUdXBs ZURlc2NGaW5hbGl6ZSh0eXBlSW5mbyk7CisKIAlyZXR1cm4gdHlwZUluZm87CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYwppbmRleCA2M2U2MDVlMWY4MS4uZmViODJk NjQ5NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMKQEAgLTQxNCw2 ICs0MTQsNyBAQCBFeGVjSW5pdEZ1bmN0aW9uU2NhbihGdW5jdGlvblNjYW4gKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCVR1cGxlRGVzY0luaXRFbnRyeUNvbGxhdGlvbih0 dXBkZXNjLAogCQkJCQkJCQkJCQkoQXR0ck51bWJlcikgMSwKIAkJCQkJCQkJCQkJZXhwckNvbGxh dGlvbihmdW5jZXhwcikpOworCQkJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwogCQkJfQog CQkJZWxzZQogCQkJewpAQCAtNDg1LDYgKzQ4Niw3IEBAIEV4ZWNJbml0RnVuY3Rpb25TY2FuKEZ1 bmN0aW9uU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJICAg MCk7CiAJCX0KIAorCQlUdXBsZURlc2NGaW5hbGl6ZShzY2FuX3R1cGRlc2MpOwogCQlBc3NlcnQo YXR0bm8gPT0gbmF0dHMpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRl eCAzZWM4ZDhkZTAxMS4uMGFkNzY3ZDgyN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlv bi5jCkBAIC0xODkxLDYgKzE4OTEsNyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JGdW5jdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQlUdXBsZURlc2NJbml0RW50cnlDb2xsYXRpb24odHVwZGVz YywKIAkJCQkJCQkJCQkoQXR0ck51bWJlcikgMSwKIAkJCQkJCQkJCQlleHByQ29sbGF0aW9uKGZ1 bmNleHByKSk7CisJCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAkJfQogCQllbHNlIGlm IChmdW5jdHlwY2xhc3MgPT0gVFlQRUZVTkNfUkVDT1JEKQogCQl7CkBAIC0xOTQ4LDYgKzE5NDks NyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAK IAkJCQlpKys7CiAJCQl9CisJCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAogCQkJLyoK IAkJCSAqIEVuc3VyZSB0aGF0IHRoZSBjb2xkZWZsaXN0IGRlZmluZXMgYSBsZWdhbCBzZXQgb2Yg bmFtZXMgKG5vCkBAIC0yMDE2LDcgKzIwMTgsNyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JGdW5j dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJICAgMCk7CiAJCQkvKiBubyBuZWVkIHRv IHNldCBjb2xsYXRpb24gKi8KIAkJfQotCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwog CQlBc3NlcnQobmF0dHMgPT0gdG90YWxhdHRzKTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jCmluZGV4IGI1YTJmOTE1YjY3Li41ZmQxN2YzZDhkMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV90YXJnZXQuYwpAQCAtMTU3MCw2ICsxNTcwLDggQEAgZXhwYW5kUmVjb3JkVmFyaWFibGUo UGFyc2VTdGF0ZSAqcHN0YXRlLCBWYXIgKnZhciwgaW50IGxldmVsc3VwKQogCQl9CiAJCUFzc2Vy dChsbmFtZSA9PSBOVUxMICYmIGx2YXIgPT0gTlVMTCk7CS8qIGxpc3RzIHNhbWUgbGVuZ3RoPyAq LwogCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGxlRGVzYyk7CisKIAkJcmV0dXJuIHR1cGxlRGVz YzsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVj ZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3 YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXggN2M4NjM5YjMyZTkuLjlmMDRjOWVk MjVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVy L2xpYnBxd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdh bHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAtMTA3Myw2ICsxMDczLDcgQEAgbGlicHFy Y3ZfcHJvY2Vzc1R1cGxlcyhQR3Jlc3VsdCAqcGdyZXMsIFdhbFJjdkV4ZWNSZXN1bHQgKndhbHJl cywKIAlmb3IgKGNvbG4gPSAwOyBjb2xuIDwgblJldFR5cGVzOyBjb2xuKyspCiAJCVR1cGxlRGVz Y0luaXRFbnRyeSh3YWxyZXMtPnR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIGNvbG4gKyAxLAogCQkJ CQkJICAgUFFmbmFtZShwZ3JlcywgY29sbiksIHJldFR5cGVzW2NvbG5dLCAtMSwgMCk7CisJVHVw bGVEZXNjRmluYWxpemUod2FscmVzLT50dXBsZWRlc2MpOwogCWF0dGlubWV0YSA9IFR1cGxlRGVz Y0dldEF0dEluTWV0YWRhdGEod2FscmVzLT50dXBsZWRlc2MpOwogCiAJLyogTm8gcG9pbnQgaW4g ZG9pbmcgbW9yZSBoZXJlIGlmIHRoZXJlIHdlcmUgbm8gdHVwbGVzIHJldHVybmVkLiAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCBhMGU2YTNkMjAwYy4uOWUyZjRhNjY0YjQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC00NTEsNiArNDUxLDcgQEAgSWRl bnRpZnlTeXN0ZW0odm9pZCkKIAkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKIAlUdXBsZURlc2NJ bml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA0LCAiZGJuYW1lIiwKIAkJCQkJ CQkgIFRFWFRPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAogCS8q IHByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVzICovCiAJdHN0YXRlID0gYmVnaW5fdHVw X291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MsICZUVFNPcHNWaXJ0dWFsKTsKQEAgLTQ5Niw2 ICs0OTcsNyBAQCBSZWFkUmVwbGljYXRpb25TbG90KFJlYWRSZXBsaWNhdGlvblNsb3RDbWQgKmNt ZCkKIAkvKiBUaW1lTGluZUlEIGlzIHVuc2lnbmVkLCBzbyBpbnQ0IGlzIG5vdCB3aWRlIGVub3Vn aC4gKi8KIAlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAz LCAicmVzdGFydF90bGkiLAogCQkJCQkJCSAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0Zp bmFsaXplKHR1cGRlc2MpOwogCiAJbWVtc2V0KG51bGxzLCB0cnVlLCBSRUFEX1JFUExJQ0FUSU9O X1NMT1RfQ09MUyAqIHNpemVvZihib29sKSk7CiAKQEAgLTU5OCw2ICs2MDAsNyBAQCBTZW5kVGlt ZUxpbmVIaXN0b3J5KFRpbWVMaW5lSGlzdG9yeUNtZCAqY21kKQogCXR1cGRlc2MgPSBDcmVhdGVU ZW1wbGF0ZVR1cGxlRGVzYygyKTsKIAlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2Ms IChBdHRyTnVtYmVyKSAxLCAiZmlsZW5hbWUiLCBURVhUT0lELCAtMSwgMCk7CiAJVHVwbGVEZXNj SW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgImNvbnRlbnQiLCBURVhU T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAKIAlUTEhpc3RvcnlG aWxlTmFtZShoaXN0Zm5hbWUsIGNtZC0+dGltZWxpbmUpOwogCVRMSGlzdG9yeUZpbGVQYXRoKHBh dGgsIGNtZC0+dGltZWxpbmUpOwpAQCAtMTAxNSw2ICsxMDE4LDcgQEAgU3RhcnRSZXBsaWNhdGlv bihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAJCQkJCQkJCSAgSU5UOE9JRCwgLTEsIDApOwog CQlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAyLCAibmV4 dF90bGlfc3RhcnRwb3MiLAogCQkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNj RmluYWxpemUodHVwZGVzYyk7CiAKIAkJLyogcHJlcGFyZSBmb3IgcHJvamVjdGlvbiBvZiB0dXBs ZSAqLwogCQl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRlc2MoZGVzdCwgdHVwZGVzYywg JlRUU09wc1ZpcnR1YWwpOwpAQCAtMTM2OSw2ICsxMzczLDcgQEAgQ3JlYXRlUmVwbGljYXRpb25T bG90KENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZCAqY21kKQogCQkJCQkJCSAgVEVYVE9JRCwgLTEs IDApOwogCVR1cGxlRGVzY0luaXRCdWlsdGluRW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDQs ICJvdXRwdXRfcGx1Z2luIiwKIAkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NG aW5hbGl6ZSh0dXBkZXNjKTsKIAogCS8qIHByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVz ICovCiAJdHN0YXRlID0gYmVnaW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MsICZU VFNPcHNWaXJ0dWFsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCAzYTY5MDVmOTU0Ni4uOWQzNzA1M2M4 MWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvYWNsLmMKQEAgLTE4MTgsNiArMTgxOCw3IEBAIGFjbGV4cGxvZGUoUEdf RlVOQ1RJT05fQVJHUykKIAkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVy KSA0LCAiaXNfZ3JhbnRhYmxlIiwKIAkJCQkJCSAgIEJPT0xPSUQsIC0xLCAwKTsKIAorCQlUdXBs ZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAkJZnVuY2N0eC0+dHVwbGVfZGVzYyA9IEJsZXNzVHVw bGVEZXNjKHR1cGRlc2MpOwogCiAJCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdXNlciBjb250ZXh0 ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2VuZmlsZS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2dlbmZpbGUuYwppbmRleCBjMDgzNjA4YjFkNS4uYmZiOTQ5NDAxZDAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW5maWxlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2dlbmZpbGUuYwpAQCAtNDU0LDYgKzQ1NCw3IEBAIHBnX3N0YXRfZmls ZShQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICAiY3JlYXRpb24iLCBUSU1FU1RBTVBUWk9JRCwg LTEsIDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgNiwKIAkJ CQkJICAgImlzZGlyIiwgQk9PTE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRl c2MpOwogCUJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCiAJbWVtc2V0KGlzbnVsbCwgZmFsc2Us IHNpemVvZihpc251bGwpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2Nr ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwppbmRleCA5ZGFkZDZk YTY3Mi4uNDQ4MWMzNTRmZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2Nr ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKQEAgLTE0Niw2 ICsxNDYsNyBAQCBwZ19sb2NrX3N0YXR1cyhQR19GVU5DVElPTl9BUkdTKQogCQlUdXBsZURlc2NJ bml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDE2LCAid2FpdHN0YXJ0IiwKIAkJCQkJCSAg IFRJTUVTVEFNUFRaT0lELCAtMSwgMCk7CiAKKwkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7 CiAJCWZ1bmNjdHgtPnR1cGxlX2Rlc2MgPSBCbGVzc1R1cGxlRGVzYyh0dXBkZXNjKTsKIAogCQkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yZGVyZWRzZXRhZ2dzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYwppbmRleCAzYjZkYThlMzZhYy4u ZmQ4Yjg2NzY0NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0 YWdncy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0YWdncy5jCkBAIC0y MzMsNiArMjMzLDcgQEAgb3JkZXJlZF9zZXRfc3RhcnR1cChGdW5jdGlvbkNhbGxJbmZvIGZjaW5m bywgYm9vbCB1c2VfdHVwbGVzKQogCQkJCQkJCQkgICAtMSwKIAkJCQkJCQkJICAgMCk7CiAKKwkJ CQlUdXBsZURlc2NGaW5hbGl6ZShuZXdkZXNjKTsKIAkJCQlGcmVlVHVwbGVEZXNjKHFzdGF0ZS0+ dHVwZGVzYyk7CiAJCQkJcXN0YXRlLT50dXBkZXNjID0gbmV3ZGVzYzsKIAkJCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggNzNjYTBiYjBiN2YuLjA4YWQyN2U1N2MyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAtNzY5LDYgKzc2OSw3IEBAIHBnX3N0YXRf Z2V0X2JhY2tlbmRfc3VieGFjdChQR19GVU5DVElPTl9BUkdTKQogCVR1cGxlRGVzY0luaXRFbnRy eSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgInN1YnhhY3Rfb3ZlcmZsb3ciLAogCQkJCQkgICBC T09MT0lELCAtMSwgMCk7CiAKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAlCbGVzc1R1 cGxlRGVzYyh0dXBkZXNjKTsKIAogCWlmICgobG9jYWxfYmVlbnRyeSA9IHBnc3RhdF9nZXRfbG9j YWxfYmVlbnRyeV9ieV9wcm9jX251bWJlcihwcm9jTnVtYmVyKSkgIT0gTlVMTCkKQEAgLTE2NTgs NiArMTY1OSw3IEBAIHBnX3N0YXRfd2FsX2J1aWxkX3R1cGxlKFBnU3RhdF9XYWxDb3VudGVycyB3 YWxfY291bnRlcnMsCiAJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA2 LCAic3RhdHNfcmVzZXQiLAogCQkJCQkgICBUSU1FU1RBTVBUWk9JRCwgLTEsIDApOwogCisJVHVw bGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAkv KiBGaWxsIHZhbHVlcyBhbmQgTlVMTHMgKi8KQEAgLTIwODUsNiArMjA4Nyw3IEBAIHBnX3N0YXRf Z2V0X2FyY2hpdmVyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRl c2MsIChBdHRyTnVtYmVyKSA3LCAic3RhdHNfcmVzZXQiLAogCQkJCQkgICBUSU1FU1RBTVBUWk9J RCwgLTEsIDApOwogCisJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJQmxlc3NUdXBsZURl c2ModHVwZGVzYyk7CiAKIAkvKiBHZXQgc3RhdGlzdGljcyBhYm91dCB0aGUgYXJjaGl2ZXIgcHJv Y2VzcyAqLwpAQCAtMjE2Niw2ICsyMTY5LDcgQEAgcGdfc3RhdF9nZXRfcmVwbGljYXRpb25fc2xv dChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBUSU1FU1RBTVBUWk9JRCwgLTEsIDApOwogCVR1 cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMTMsICJzdGF0c19yZXNldCIs CiAJCQkJCSAgIFRJTUVTVEFNUFRaT0lELCAtMSwgMCk7CisJVHVwbGVEZXNjRmluYWxpemUodHVw ZGVzYyk7CiAJQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAluYW1lc3RyY3B5KCZzbG90bmFt ZSwgdGV4dF90b19jc3RyaW5nKHNsb3RuYW1lX3RleHQpKTsKQEAgLTIyNTMsNiArMjI1Nyw3IEBA IHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkg ICBJTlQ4T0lELCAtMSwgMCk7CiAJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVt YmVyKSAxMywgInN0YXRzX3Jlc2V0IiwKIAkJCQkJICAgVElNRVNUQU1QVFpPSUQsIC0xLCAwKTsK KwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAlCbGVzc1R1cGxlRGVzYyh0dXBkZXNjKTsK IAogCWlmICghc3ViZW50cnkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2 ZWN0b3Jfb3AuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9vcC5jCmluZGV4IDk0 ZTBmZWQ4MzA5Li43Y2ExOWE5Nzg4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RzdmVjdG9yX29wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX29wLmMK QEAgLTY1MSw2ICs2NTEsNyBAQCB0c3ZlY3Rvcl91bm5lc3QoUEdfRlVOQ1RJT05fQVJHUykKIAkJ CQkJCSAgIFRFWFRBUlJBWU9JRCwgLTEsIDApOwogCQlpZiAoZ2V0X2NhbGxfcmVzdWx0X3R5cGUo ZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9TSVRFKQogCQkJZWxvZyhF UlJPUiwgInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOworCQlUdXBsZURlc2NGaW5h bGl6ZSh0dXBkZXNjKTsKIAkJZnVuY2N0eC0+dHVwbGVfZGVzYyA9IHR1cGRlc2M7CiAKIAkJZnVu Y2N0eC0+dXNlcl9mY3R4ID0gUEdfR0VUQVJHX1RTVkVDVE9SX0NPUFkoMCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYwppbmRleCA2YjYzNGM5ZmZmMS4uNzcwZWRiMzRlMDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNzI5LDYgKzcyOSw4IEBAIFJlbGF0aW9uQnVpbGRU dXBsZURlc2MoUmVsYXRpb24gcmVsYXRpb24pCiAJCXBmcmVlKGNvbnN0cik7CiAJCXJlbGF0aW9u LT5yZF9hdHQtPmNvbnN0ciA9IE5VTEw7CiAJfQorCisJVHVwbGVEZXNjRmluYWxpemUocmVsYXRp b24tPnJkX2F0dCk7CiB9CiAKIC8qCkBAIC0xOTg1LDYgKzE5ODcsNyBAQCBmb3JtcmRlc2MoY29u c3QgY2hhciAqcmVsYXRpb25OYW1lLCBPaWQgcmVsYXRpb25SZWx0eXBlLAogCiAJLyogaW5pdGlh bGl6ZSBmaXJzdCBhdHRyaWJ1dGUncyBhdHRjYWNoZW9mZiwgY2YgUmVsYXRpb25CdWlsZFR1cGxl RGVzYyAqLwogCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHJlbGF0aW9uLT5yZF9hdHQsIDApLT5hdHRj YWNoZW9mZiA9IDA7CisJVHVwbGVEZXNjRmluYWxpemUocmVsYXRpb24tPnJkX2F0dCk7CiAKIAkv KiBtYXJrIG5vdC1udWxsIHN0YXR1cyAqLwogCWlmIChoYXNfbm90X251bGwpCkBAIC0zNjg4LDYg KzM2OTEsOCBAQCBSZWxhdGlvbkJ1aWxkTG9jYWxSZWxhdGlvbihjb25zdCBjaGFyICpyZWxuYW1l LAogCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQogCQlUdXBsZURlc2NBdHRyKHJlbC0+cmRf YXR0LCBpKS0+YXR0cmVsaWQgPSByZWxpZDsKIAorCVR1cGxlRGVzY0ZpbmFsaXplKHJlbC0+cmRf YXR0KTsKKwogCXJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlID0gcmVsdGFibGVzcGFjZTsKIAog CWlmIChtYXBwZWRfcmVsYXRpb24pCkBAIC00NDQzLDYgKzQ0NDgsNyBAQCBCdWlsZEhhcmRjb2Rl ZERlc2NyaXB0b3IoaW50IG5hdHRzLCBjb25zdCBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgKmF0dHJz KQogCiAJLyogaW5pdGlhbGl6ZSBmaXJzdCBhdHRyaWJ1dGUncyBhdHRjYWNoZW9mZiwgY2YgUmVs YXRpb25CdWlsZFR1cGxlRGVzYyAqLwogCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHJlc3VsdCwgMCkt PmF0dGNhY2hlb2ZmID0gMDsKKwlUdXBsZURlc2NGaW5hbGl6ZShyZXN1bHQpOwogCiAJLyogTm90 ZTogd2UgZG9uJ3QgYm90aGVyIHRvIHNldCB1cCBhIFR1cGxlQ29uc3RyIGVudHJ5ICovCiAKQEAg LTYyNjgsNiArNjI3NCw4IEBAIGxvYWRfcmVsY2FjaGVfaW5pdF9maWxlKGJvb2wgc2hhcmVkKQog CQkJcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUocmVsLT5yZF9hdHQsIGkpOwogCQl9CiAKKwkJ VHVwbGVEZXNjRmluYWxpemUocmVsLT5yZF9hdHQpOworCiAJCS8qIG5leHQgcmVhZCB0aGUgYWNj ZXNzIG1ldGhvZCBzcGVjaWZpYyBmaWVsZCAqLwogCQlpZiAoZnJlYWQoJmxlbiwgMSwgc2l6ZW9m KGxlbiksIGZwKSAhPSBzaXplb2YobGVuKSkKIAkJCWdvdG8gcmVhZF9mYWlsZWQ7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2Z1bmNhcGkuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2ZtZ3IvZnVuY2FwaS5jCmluZGV4IDhhOTM0ZWE4ZGNhLi41MTZkMDJjZmI4MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mdW5jYXBpLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvZm1nci9mdW5jYXBpLmMKQEAgLTM0MCw2ICszNDAsOCBAQCBnZXRfZXhwcl9yZXN1bHRfdHlw ZShOb2RlICpleHByLAogCQkJCQkJCQkJCWV4cHJDb2xsYXRpb24oY29sKSk7CiAJCQlpKys7CiAJ CX0KKwkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CisKIAkJaWYgKHJlc3VsdFR5cGVJZCkK IAkJCSpyZXN1bHRUeXBlSWQgPSByZXhwci0+cm93X3R5cGVpZDsKIAkJaWYgKHJlc3VsdFR1cGxl RGVzYykKQEAgLTEwNDQsNiArMTA0Niw3IEBAIHJlc29sdmVfcG9seW1vcnBoaWNfdHVwZGVzYyhU dXBsZURlc2MgdHVwZGVzYywgb2lkdmVjdG9yICpkZWNsYXJlZF9hcmdzLAogCQl9CiAJfQogCisJ VHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE4NTMs NiArMTg1Niw4IEBAIGJ1aWxkX2Z1bmN0aW9uX3Jlc3VsdF90dXBkZXNjX2QoY2hhciBwcm9raW5k LAogCQkJCQkJICAgMCk7CiAJfQogCisJVHVwbGVEZXNjRmluYWxpemUoZGVzYyk7CisKIAlyZXR1 cm4gZGVzYzsKIH0KIApAQCAtMTk3MCw2ICsxOTc1LDcgQEAgVHlwZUdldFR1cGxlRGVzYyhPaWQg dHlwZW9pZCwgTGlzdCAqY29sYWxpYXNlcykKIAkJCQkJCSAgIHR5cGVvaWQsCiAJCQkJCQkgICAt MSwKIAkJCQkJCSAgIDApOworCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAl9CiAJZWxz ZSBpZiAoZnVuY3R5cGNsYXNzID09IFRZUEVGVU5DX1JFQ09SRCkKIAl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfZnVuY3MuYwppbmRleCA0ZjNlNDBiZjQ3MC4uYjgyZjgwN2UwNWUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfZnVuY3MuYwpAQCAtNDQ0LDYgKzQ0NCw3IEBAIEdldFBHVmFyaWFibGVSZXN1 bHREZXNjKGNvbnN0IGNoYXIgKm5hbWUpCiAJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAo QXR0ck51bWJlcikgMSwgdmFybmFtZSwKIAkJCQkJCSAgIFRFWFRPSUQsIC0xLCAwKTsKIAl9CisJ VHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJcmV0dXJuIHR1cGRlc2M7CiB9CiAKQEAgLTQ2 NSw2ICs0NjYsNyBAQCBTaG93R1VDQ29uZmlnT3B0aW9uKGNvbnN0IGNoYXIgKm5hbWUsIERlc3RS ZWNlaXZlciAqZGVzdCkKIAl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoMSk7CiAJ VHVwbGVEZXNjSW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgdmFybmFt ZSwKIAkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNj KTsKIAogCS8qIHByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVzICovCiAJdHN0YXRlID0g YmVnaW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MsICZUVFNPcHNWaXJ0dWFsKTsK QEAgLTQ5OSw2ICs1MDEsNyBAQCBTaG93QWxsR1VDQ29uZmlnKERlc3RSZWNlaXZlciAqZGVzdCkK IAkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKIAlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1 cGRlc2MsIChBdHRyTnVtYmVyKSAzLCAiZGVzY3JpcHRpb24iLAogCQkJCQkJCSAgVEVYVE9JRCwg LTEsIDApOworCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwogCiAJLyogcHJlcGFyZSBmb3Ig cHJvamVjdGlvbiBvZiB0dXBsZXMgKi8KIAl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRl c2MoZGVzdCwgdHVwZGVzYywgJlRUU09wc1ZpcnR1YWwpOwpAQCAtOTM0LDYgKzkzNyw4IEBAIHNo b3dfYWxsX3NldHRpbmdzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVR1cGxlRGVzY0luaXRFbnRyeSh0 dXBkZXNjLCAoQXR0ck51bWJlcikgMTcsICJwZW5kaW5nX3Jlc3RhcnQiLAogCQkJCQkJICAgQk9P TE9JRCwgLTEsIDApOwogCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOworCiAJCS8qCiAJ CSAqIEdlbmVyYXRlIGF0dHJpYnV0ZSBtZXRhZGF0YSBuZWVkZWQgbGF0ZXIgdG8gcHJvZHVjZSB0 dXBsZXMgZnJvbSByYXcKIAkJICogQyBzdHJpbmdzCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHVwZGVzYy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAppbmRleCBkNDZj ZGJmN2EzYy4uNTk1NDEzZGJiYzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBk ZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaApAQCAtMTk1LDYgKzE5NSw3 IEBAIGV4dGVybiBUdXBsZURlc2MgQ3JlYXRlVHVwbGVEZXNjVHJ1bmNhdGVkQ29weShUdXBsZURl c2MgdHVwZGVzYywgaW50IG5hdHRzKTsKIAogZXh0ZXJuIFR1cGxlRGVzYyBDcmVhdGVUdXBsZURl c2NDb3B5Q29uc3RyKFR1cGxlRGVzYyB0dXBkZXNjKTsKIAorI2RlZmluZSBUdXBsZURlc2NGaW5h bGl6ZShkKSAoKHZvaWQpIDApCiAjZGVmaW5lIFR1cGxlRGVzY1NpemUoc3JjKSBcCiAJKG9mZnNl dG9mKHN0cnVjdCBUdXBsZURlc2NEYXRhLCBjb21wYWN0X2F0dHJzKSArIFwKIAkgKHNyYyktPm5h dHRzICogc2l6ZW9mKENvbXBhY3RBdHRyaWJ1dGUpICsgXApkaWZmIC0tZ2l0IGEvc3JjL3BsL3Bs cGdzcWwvc3JjL3BsX2NvbXAuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9jb21wLmMKaW5kZXgg N2Q2NDhjOTQxYzAuLmIyMTEyYzI5ZmNmIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMv cGxfY29tcC5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9jb21wLmMKQEAgLTE5MTIsNiAr MTkxMiw4IEBAIGJ1aWxkX3Jvd19mcm9tX3ZhcnMoUExwZ1NRTF92YXJpYWJsZSAqKnZhcnMsIGlu dCBudW12YXJzKQogCQlUdXBsZURlc2NJbml0RW50cnlDb2xsYXRpb24ocm93LT5yb3d0dXBkZXNj LCBpICsgMSwgdHlwY29sbCk7CiAJfQogCisJVHVwbGVEZXNjRmluYWxpemUocm93LT5yb3d0dXBk ZXNjKTsKKwogCXJldHVybiByb3c7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9jdXN0b21fc3RhdHMvdGVzdF9jdXN0b21fZml4ZWRfc3RhdHMuYyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9jdXN0b21fc3RhdHMvdGVzdF9jdXN0b21fZml4ZWRfc3RhdHMuYwppbmRleCA5 MDhiZDE4YTdjNy4uZmExNzE5YmYzYjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9jdXN0b21fc3RhdHMvdGVzdF9jdXN0b21fZml4ZWRfc3RhdHMuYworKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfY3VzdG9tX3N0YXRzL3Rlc3RfY3VzdG9tX2ZpeGVkX3N0YXRzLmMKQEAgLTIw NSw2ICsyMDUsNyBAQCB0ZXN0X2N1c3RvbV9zdGF0c19maXhlZF9yZXBvcnQoUEdfRlVOQ1RJT05f QVJHUykKIAkJCQkJICAgSU5UOE9JRCwgLTEsIDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBk ZXNjLCAoQXR0ck51bWJlcikgMiwgInN0YXRzX3Jlc2V0IiwKIAkJCQkJICAgVElNRVNUQU1QVFpP SUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAlCbGVzc1R1cGxlRGVz Yyh0dXBkZXNjKTsKIAogCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0oc3RhdHMtPm51bWNhbGxz KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9wcmVkdGVzdC90ZXN0X3ByZWR0 ZXN0LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcHJlZHRlc3QvdGVzdF9wcmVkdGVzdC5jCmlu ZGV4IDY3OWE1ZGU0NTZkLi40OGNhMmE0ZWE3MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3ByZWR0ZXN0L3Rlc3RfcHJlZHRlc3QuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcHJlZHRlc3QvdGVzdF9wcmVkdGVzdC5jCkBAIC0yMzAsNiArMjMwLDcgQEAgdGVzdF9wcmVk dGVzdChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICAic19yX2hvbGRzIiwgQk9PTE9JRCwgLTEs IDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgOCwKIAkJCQkJ ICAgIndfcl9ob2xkcyIsIEJPT0xPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBk ZXNjKTsKIAl0dXBkZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAl2YWx1ZXNbMF0g PSBCb29sR2V0RGF0dW0oc3Ryb25nX2ltcGxpZWRfYnkpOwotLSAKMi41MS4wCgo= --000000000000d7a7fa0649990688 Content-Type: image/gif; name="m2_on_v7_with_0004.gif" Content-Disposition: attachment; filename="m2_on_v7_with_0004.gif" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml0qab700 R0lGODlhWAVKA3AAACH5BAEAAP8ALAAAAABYBUoDh/////9rAPd7c3ut9zGtUv+9AO9CMUKE90K9 xff39+bv797e3ube5s7W1nNzc0pKUr29vZSUlJycnPelY3vFlPetpXNze6XO//fWY/eMhM7OxSEh ITExMYzO3oy1/4R7hLXm7/fFnGtjY7Wttfe9tRAQEM7e973FxbXO96WlnFpSUveUjDo6OoyMhOb3 96Wlrffm5vfOzq3evUqtY/fepTo6QgAAAEpKSlpaY/f/787eUnPWzs4Z3vfW1hnm3oxK3s5KnIzm Gdbv7/dzECEpIa3WlM6tUvf33lLOxYTmlAgACM7mGRlSlBkZlEpSlM5K3kpS3s4hGYzmWkoZ3pwh GeZSUt5zWlKtjN7WlMXmzs6tGffetf/39xnWQkoZlPeEMffm1q173mMQUnsZnN57jBm1nBm1a621 7617lFKl5tZSGff//6VaWpxaIdaEGaWEWmMQGaUQUhm1znsZ3s4ZjHu1GffFGUp7jJS9/5x7GVKM 99573iGEWmuEIRCEISFaWmtaIRBaIRAQUntKnPe1hGMxUvfOQkrmnEqEzhnmnJwZnErmaxnma0rm EBmElBmEzhlSznu1WhkZztYQUvd7e0KEIUJaIWMxGaUxUhm175wZ3s4ZrZy1GXt7tRAxUnt75pxK nHO9hEqtENallErmQhmlId615hnvEBnFEHPe5lLe74Sl1vecUhlS75y1WhkZ79YxUvfee4S11kqt QpTe5vchnPecKXNzUvdrzubv9zoZUvcZKfch3muc9/dKKfecxUpzWozFnPdKY/f3/zoQGRmE9xAx CISlhPela96txXulpVK1vXNSSoSl9+bv5nu1/3PFpXt7lK2txVp7a+8ZGff/a7WllDo6EObmzt7v 1ggQIXuEa97OxdbW5vecpb2lxXOMhPeMa/d7Y/eEcxClUnut/0pKY6XO5iEIIffeAPd7AObe93uc 95R7lEKlvffmY0KM9+9CEL29zkJz93tza+bW1t7exf97czGcUnNzY0KE//drAPe9AEKE70K9vQAA AAjCAAEIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuX MGPKnAmyhYObEmjq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0aVAFN6M6nUq1qtWrWLNq3cq1q9evYMNS tXmzhdizaNOqXcu2rdu3cOPKnatRgYQWLxbQ3cu3r9+/gAMLHky4MFEFhhMrXsy4sePHkCNLnky5 suXLmDNr3sy5s+fPoEOLHk26tGmmCyQ4kKBf97Tr17Bjy55NuzbDD1Ej2N7Nu7fv38CDr4Ua1YHw 48iTK1/OvPlHsg7MOp9Ovbr169hLp17dOrv37+DDix/fFjH58+jTq1/Pvr379/Djy59Pv779+/jz 6y+4IIKDCOZM7SfggAQWaGBgL+R24IIMNujgg1QpIEJxEFZo4YUYZogSdNJp6OGHIIYookAakMXA iCimqOKK+uXC4oswxijjjDTWaOONOOao44489jPo449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWU VFZp5ZVYZqnlllx26eWXYIYp5phklmn/5pnr5UJWdyIpYBMEGSV4kwYJcaHaf1wQpMALZH3wQoAW NXATm0QJWtyhg3KkgQMfAApBNwMtgBuhEe1JVgR0HmTpTZgitJ0D0Uhw4kKLNrrSoxElmNNeCkiT J5qwVrnoTSOUpAButWJ0pwMvJLRAbi4KBAFuh36QqUWlUirUrIhG1cKoGgnagnlc+Hfsr9Eo65Ck iPbKH7HFeUsQBMXlE92xmto0bUq5qIZuQ6qJK9eiEeQQ671SqhodoCC5KQKcGMnJKL8DkVtWpGW1 tkAL+WR7kaHaAsWFAhRPrAAXuWiAm7wZlWqemw4cy8A2+US8kJrR6dXqTQALhHILKkvD/zJBv/KK GAMRTBMNtAbJaSpKXOD2LkMprLYXuS28iu/SSzJwkzxCk3SrAy1bpBpZ3Bz0Mp4CXR2sQAzYtGpF s/LMFMgSEIyR0gBM3UCk0TjgDEXk/gxADiNE93XdAeKtt0BciK2nTRwPJI+5+6Y09dALqTa2XHlH 8DXTlBu56LSq6TYSyIVPlHm8Bzkdgddt2ySPQTLbPRHEVOXtgMl1RS1QzbAnRHhBiw90u56yLxB3 1gQdrrpAaN/Etq02Ma6QqkdHV/nzRVbLKwCLOlyQahBw4fMLcw8kfQN2lfUnQVzMTFA3/uEEKUOZ y/N3QeS+kDnYuJlNfT7rKsRFiTf5Gf9g9Wzigjw4NL6BLEoCueBG+lrgKoPkYgTEEtWvWjC5cSUO fhcsSDfMhxBp8axmVQNA/KiXOIGBSje/+sACGHAn/zGEdgWRnrdgSD7/eAsC+KsgA3ADPO+pZgRI UxvN9tUNsrRAAxUEgAAJGKCi3SRuElCaApx4LqWpJgUiJNYRF6IqgnWRROmLRgtCeJBF9Yp/55rd nVqQK/IN0FkF9B4E+rTF2SFqfQB4oBE5lgtrNQA3LTgd9Ab5oZrRKWz5KFyC+ISoY/WRV9DpX3dA 1rIcmDAqKThez/6TDZv0cCCqWUCCkrYQHEZDk4OL26EyxTri2aRhxVHhQKSVAlXeRAT/+QNbJFk2 MIQwIG5Dc9xBuFC0XGpKdiTCCdtUkzVBnRIAVHQA/hQwMgdEU5oqNBk3GEWpUeZpm7IsiDcBMD/c MUwaBXHftPI2PIM47QOuK04UB9escF4yf8N6YlQQ2LX/7JJXqBTINl9nTgfUyk7NepZCBCWBS1JN A7ZU5kDCVs9Jpu9Q/ORWcTK1sGaxyYZR+RchR5qhUQbrasfb1Qvs1dEPQAs62dufuj6Gq4HIaQSI 0d5NpGGvhEhABAhUDTqHmLTMJZGejzOI9KjmopaeqGyAU1cD8qQA142NWaxpm+vaCLI6GiyDBcnB 7hDmADwSZFbKIwjoQFmWADmNgiT8h9nUeliz/7TGYClIajrBKpAR5BAA6iSYX+HqH70CYKwA6Khe +LaQum7xgTcRlwL804K3aRUnAslB7gzIqQXkgAsymx45owKBm6XPfgOhpAYbtlhQAYwLBhsqQtwX 2ZvZJG4wa5tqrBe+yhLPqjZllGVXFrLgznN2gIQUFzqqUCWSRVQAEEJASf9K3QKhTFyGepcT5UXR VS1VHkrznUFdOd7E1vSs+ENtcM0S2ODlA51XK+WcFDIrQepyehskaGJB9a4E/cxQx+1nh2hrWeQa LyEeCx5flUg6+cJViRfF4wEF0oB8yDV5E8Vt32TWgnYWzMIESzAO2+kx6RlWmGy94YEVUs3mCitR +y0uQV4AYvI68mp9y9u65FQ1RMr2IBxm2yj7iUULRmC6Aw3woqaZWoYBzJDivElO31SQookriGzN bWpt6LI7HWu61Q2zfgY6ScGpla/kAseJUKZXCeTjyG3DDcCK2dMmU00hmeOCM2CsW4LmGcGYrZPj 6iyQF/iJhHJ7MZzPepP/Uc2qwIVOXOBES5BiChEAv8yHWblskJrZVyHYGtWvRnfnflr2ctS6SYFB WJCBOkC9AJDGm8voAHDkSdYB5mw0FCDWUl/PaMICak91fOnZxS2EIMvVsHKN6FG5jaxmjXNuGzwQ /xQZIdu0XulKjWLvMWRWZhVvG51banIxO1nbHrcSMai5GA8Ny5NetJjnfaBRAipB2gZAgq49UWmu 74cGmZVegjaNWoXvxMBGCEqhSWmorCtzQoTof4p93YP0lMwLwTgJd1aQLPSSokNLcEJSIIJrd/ST 6y2291oggkwd0H2rUpNLKbxikF0LN9F+q34PguWCiHjBFW6U9NTdz1V1/xSPjAU1n9na7jwapJVB k7EIGdU9gnxWIEVrc8KHeQyR2vFncjqiygnSSuLNdyCPfFwSNX4nCWggoD2n4RDLKpDC0vvuBWIA OMo7kIGOG+C4i9qkh4Ytlck5zoiLpbPw/B8Xua9eL87VkGm94MBLnfKopeYJJLD3cKLa54mrmf0m WOyeIy2JU+ucwkWbIAi8FTEbvGov4+yAVd+k6nYEVcTGuVdT6ViTgTXxQa4oECqnvLEL1jHqGaAB CRCre8QpsI4bt/WiL0QaQH1V1ns6aTiO/fPeQ2bxq0885ktAld2j6BPHyC9VvUrWoCpORLPGZrzb fz+0ZZT+459B7Bkk2f95ZC2dFg35QCdukg8GBx3RsA2IAiAJMXnOMCkMpl8QZxAG42IJ4TSX93R8 lgtz1D+H0hqCMjwjiBgC506zhxA210+dM1AoR1/OEz56YRN6kTctk1+vslmJRYPfAg4lg2ANQzA4 REonIGUWODAIZViC03Mv5mF6koIFc0E58EbgEhWtsYKRRko+RX7d5imJgjIh9EbFoWUdtGI2VkNb BwH+UYV81iqvtE8Bcnov1iwbVXfkd394CB858FN0aIVsRUabZROQlnsnUj53ZohwcnUxxHiL5h+1 MkFMF1ZywmwqiBuDCHq8xSF4YQ+05WiMcjzqlCf5RTCkR329kkLKYlL/D0EcC+BwiIE9k/Y/F2SI tvdq/CFJgPYBuJeFLnI59lNM1ldQEPBIxRIVh+eFxpSF91UWeLEAddMahohHqnJUKWYQa6UQVNYN NfZ/8rArychoxvRsaLc7IMOML8CJ3GR1XMAAH3gTmdRXCUdsJ4NYeViP7sEtOEUx+qgA9hBoo1U4 Gjhw/vFpyWQqqnVwFKGKJJQ0ZrReSmNJkUWN/2cTRKcxACIoP6hvjHI6X6NxhsIvA4UY2SB+yeQA YAYAG9Qol4NK9Mg+IbNNq6IBQOU7HRJXH4NhuUco2aB/EUMcwWRNAuEMwGSNwMaEYDOULdSHRIcw 7ZQgmuNfcPI1J7ht6McyYvxSLWOkkXrFPPJVL1xpcW1jMMrDBSXIOxtodxp5Z8HCBR63cw7kRHcV Ha8ylQqBlvZ4l+xBY4mmVGvYPfGFQeuCMvxWaPmQNrQHMDT2YBHRbU4DDv2xc0YFODdFaAxhl8Gl GwBUOomEOimTTMm4khjTkva2ECBTRL42d2mFELL2Aq1nR2M0DVUzgjloiQhDhna0DflWUOoGZeQW QtzCUUt3PwaZWTO2L5R5ixt4kC1pMNCHTPllDwWhgXTShcGodDBjE3jEQm55mLnINrRIPoIzNUTn OnOzMBiIkmfnlMHCavpjZnj/+Z7nET7yBnpeJyefhjZs5ZbsyTkCkV8cw58j13/WJEZKQ2cluZQL QVvoAoAb9IMAamf6hYMFUZZTp59x44TFeRfbmZMRgS3Y6TLpM3Oc9TNR1zKsGJ2gkpEIkXQv5mIG wzNpNirCt2WrMV0s6kucwjYGozIM859rAjjHeDc2MZ9ymHVEaVhE6V+4JzZsI50J8ZH0hC7CN2k+ migg82MAoHFIY0XRYTZII5B3CJ9iih0DRUapFTfHkCdrVFooOVNR1T8asAYytRqpVmo5sF051VHR AJ1b2HRfJS9/pnfR4QwVs48XUye39XY7mDizMjc5sIYaYC+wBS6e+Jmz11Vv/7M/Plh5yBmm8ggR ByigzsNoFwZQHDpEuLGLBdUCWbMnHLRtueWqpzkrhokzRpgQg6VydRUBKuM6r0VZmaIA+aR75CUv tGWYwvo0LJikDXE4kYVBppqlQ3pplzM54ugytzNpR0RVUIOL+iYC2zCMJAJFnLVzNVNHVRVoj6R6 Y9qu0/ECCwhrDFd7DNcCfRIVePRILaBKquRiAOgyToQbtpQ9jKeF5rV0f5Z/uEEsH9Cw4aSC/xRO GqdR/Ec1OClys9Qw4QUuqlQ0GLpyr1qcBvsQd9J0s8IxhqI0CdIw06JY/PGjCmEPBHih/jgQMmuM 7hhDXwUuBHmEH3uwuxJB4f+leHLGMMciMFpoMAsbWT31lQNhpAxRji94SaoUbRMKhVH3LmhZV/1T tDIWPtExhgEiXmcncQ0YIO7prmo7HbdSmMg3PY7DQh+APy/ABXU2aRDwmNEhDYAyNVWzP3eCP3zr kvN5DKPKdC5yTVGRD4gDO8J6W3ghixynRlrEpruDsQXZt4aGEwtQKicJj04YmRFhMOOGiqCXSwgl lzXDL+cKOxMjMJ0SOrCrqAWRC5/CK6q6Sd+InJ37XC94u+x3WJSWurl0uxHwST9VONSJEAglOUql ARcVvHXiuU9IryA7NizUryPwWZwWlhwCXj5HFi3jDIwUHZiiNGm3turrHPbUIpHkwwVqCmxrIKfH 6Yh3o0THCTjHabf6+xAVBL+aNDl5kieKOMAPQcCa9FmEZi8M7D1rQD7DxL8MtkX8myfk4oAOQXEV EVD5mwualCceDDgJMXbEeb8OAWb828AN8bku6yJcML+kiXaoBL8J8cAGkb8REcIHYcP9uxBUFcEF Iac3rMLE40APiRAuQo0Yo1Sfu75OfB3XqIL+YaaT4ThsU3HKsbpPvMVcHCdh6j3dexknax4MICfy 2hsB2cVqvMYQ4WZIOo6naRm54FDRYbXCMUG1w8ZGetzFy0uUCEoZqbFHDIDDwHGie3zIiLxuUesZ E9PEwQG/7pvIkjzJlFzJlnzJmJzJmrzJnNzJnvzJoBzKojzKpFzKpnzKqCycyqq8yqzcyq78yrAc y7I8y7Rcy7Z8y7icy7q8y7zcy778y8AczMI8zMRczCfGfMzInMzKvMzM3MzO/MzQHM3SPM3UXM3W fM3YnM3avM3c3M3e/M2o4BzO4jzO5FzO5nzO6JzO6rzO7NzO7vzO8BzP8jzP9FzKF3AG93wO+LzP +nzPJtDNL3ADgNICJVACG3AsCnADBS3QCPECBV0CLePQJSACqXUDVFzP5IwC/dAP+sDRHc3RHr3R evDPDaEBDzB2C3ADGyACEaACPMwQGwqqKpBUCjDTjXPRD/ErJAxqFk1OLu0rPS0RMb2KNq0nRe1T OP0QQ53TPQ0BN5DH/4bBDRvAAVZ00EK5ASdS0yrAAClN0RYI0XtSAgbIAaxxA9IBASqw0xg9FzlA CEMwBF8QApnVA6zw1l9ACAn8BW9t1z0AACHw1qzgyFGCByC90YX90SCNAg2R0BxwxgDgAE+tjw+h AQd9ESpQk8RTbAuwAeyq1Cog2Cq4AXAiAQytgkTwxwhW2RZx2f+n2ZyNEZSdmost2iK0AWo9GARt A6W92dEQlGQtQjaQKRCg2hWtAoCjAhQNAcENACqAA22jAkm91nvBBcgwBISwBV/wBX19BHAdAj1g C0Mg1wXRA0PACoRw3oSQA2AQ10cQ1wBwBHi9Jc1g2B0ND4Zt34it2P+ltAElwAFjJwLGLRHSQNwT kdBvnNrRzRAi8AAvPREMwAFw0gIB7ksQLuAELhEGLhGUneDXd+ES8eBwAgH+XcU28AIqQNWzA9G6 wwKHNeJ5xAGY7QyvXWjaIKzLjQPAIEITLt2D0d4TYC/rzQp+PQRbIBDtLeQFwd0hwMD2gt158gUT AADIgORZkgMecNj0neX6oN8JMdz2ygG5OxBrIAIbUOYQYOITcwMSMNUaICFTTdsSwAHasAFtxgFl PjZxfucDwdrkA1QidAMv8OYhzgEGbRxqhQMtYOcccC2KntZjXuaLrieITuYckNbPPTYO8NkKUOGk fWmbDjDDrejBSun/cC7ndN5pjW4eC5DqAsHn3uPnTh3odj7ohQ4/gG7ntD07rB7nc/44CjDpU23p NY3pml7hIu7YhUFNzF0DNhzoVfcBto0DE54DNeDVBiTWAzECJcANC6DiLPABzH0CPE4YXEAC6iDe AMAKX/BZR+A9X0DlA0ECRD7eRJ4Dd90DX1Dk8p3lhd3v/cDlGQgAEeDiCSEEInADQnBYLv3gHNCK XIADIkAxL8AB9rAnB80vDtDwCsANNZATDnDxw50TCvAANK3mIjTRrXjwFzPcK1UQLbABDqAAKe3c td2yyE0xB08oXKDS0uAMLH83JD8QAL4GIK7wCiHjgy4POC/QEhLx/3tC8Rbf5vDD2Tgf8V4u8zc/ 8iWfExCA8hIi0LDF2ZSp7SKQ8gx99QuA3JqVAhdPPjzv86+dA0EvEENf9MN924QBDCxgHl3/UiXw 6zk+EDWw41mqDccyAsst0Z+N1uNeGFsQ3gMxAUPQ7gTB3VFeECGgDnpd3pRPCHrNCkfACsjQJVf+ 0aaP5VvuEGvu2AevpjcwMTBOPLF/N46mDSi36ZIl85z9KomOGK6+52Yx3ACjASreALmuVhtwVwe9 BsgdLBsOAADOL8wvAj0V/Vzg6pA9MUQw2qWtKRXuANQvLLa/6dKRA7X/guCfWr4vAs5P27/f6sGf 68QPJ8ZPRsJPIv8q3vwkQtsngA4AwQ3AwIFrVIjIMVCECgVcVLQg6IChAg4QAEDg4IzgRo4dPX4E GVLkSJIlTY5UUSMhgBEbNA5sgU6BChUEFbDAwVGDNoEDR9hoMHCBAqIiFgjZUIKDApAMFjyFGlXq VKpVrV7FmlXrVq5dvX4FG1bsWLJlzZ5F65Vpjy9DhkzIwSUXALZuWfXIoSBqQwAh2iIbyAWZW0Ib iaZFnJgs0yNDAA9kNeQIF4JcIh8BoMAp0xBDWIWY4Hlgjslc/K7kolfxatatXb9Oy/TkbJIe+t3u Bw+37n76cKMo2YIDZZELYarIpWCDRYUbRHBsaY8jhA3SN1K3DkD/wwZ5XG5E4KjghoSLG2Rvt6gB 3YmOLZAPhFBiAQMO4AeKdwDAwYOO4o8RNE6BB8hTiD9nKgIgAv6aQpAo/TjYYIMFABDBOeiq4+hA iAzjgMDMbshvvPBEpO685bRbr6MSB0KPIvs+zI+6oAy74T+FahLQQxEMPBEj2WgDMkghhyRyIxGG 86kEBghqoQRnRMgpsBtq2sgebTQgCAIbsNwogmgoZOiDG37MEDYzz0QzTTXXZLNNs5gC44svtiDk LQDisuULEmiQkzLVHBzsM8wA2OKLHgolgYsjCuPCTUfVoiwyQo4IbQguLh2oM0ZVI26ygUIjYaMj vghho9QeRTVV/1UTs2fJIoXMwTbffOvtNlptBY4kCTiYUCSJmIqAIS4QHCiXFjbggIP8ADgBnRmz 5MBVguTZQNoFSoAghwdeJGjbi5YSCh2LFthghI4keIA46jSgiLmBVMhvITIH8nagXwF4KKKJEJRg TJDa1Y4DFpZ7YQMsjdUm2WWbffY+Ym3iwFyCDgLggQ038tbHcMctV0VwAVhAXOXcxfe5dTuqVz+G 8L3YgRtSQxAjaV+luWabg1TBX+2M6YZJlT5gAeKLB2IAW4JGMGbmmxhwZgOICp63sswA4GKN1Ki2 mqmqr95a66yx5vrrrsH2Omyzy0abbLXHZltst89e++2024ab7v+55Y67brztzvtuvf/2O/C+B+e7 8L0PB5xwxAU3/OqVQgPjzsEm66zUvtSxHNO+hihsI7/uJDUHVh67j2qtTzc9da5RX1111l93PfbW Z4eddtlZn4s4AI6IzDNWvtC9swmk/qjyjSZghfchSK1sccUTb5xx56N/Xnrop8f+eu2tt36Nm2lr Brdax6/Vt1xHiuDjkHYcSMEc6COZCwaE+GCDFC7ieTr5ppOQIA046IZ4PHQfEm2AOOjRzok44h7v XQQdQ9mAhwQEkf305zsA4k+OMAgA+AHAPSGBn0NE4CDq9OxOmjnW/SCQv43QZ4Ac7JBNtjWTFwqw PAc8EQKn87EXFsXwPgMqT8M+9CL2abBAAGiaRaiju+//NdGJTzwScRSAjg15J0ZK4JI9uNORGjzn iF36QF428IKLKOmJZ0RjGtW4Rja20Y1v/N7vVtKDIZRqcoFxTEd+x0RCSaYxNPDLoOA4SJpdSlFc +AIrCLIFz/DxI1vA3CINhYwvHMEvjiRkJjW5SU6qUVbjo9WsflOSXc3sI9NYWb9So0CO5EAEMUIH l/zHSqEYbSClZFlH8iWzgXTDGBbxJcluqTN5GANLFBPKieSFshfdC5kGeYAYLdKvqEEMAhQho71K 0JON4ACWshzNA7xIkBwgE2Qds5guIcJLAASznb/0mKuCKUKCkMtczQInvZq5smfmDGZKjNZKOjnQ V6Vk/yMO2N+xJkQRFaxBQFTiiARswJ74gHNpA7nBc1rAAoES1KMfBWlIRTrS2fyOIGBQB2Am8IWV NIZ0A2kMK3rXOS5UChmItBxJRZqQEESSLonkQkcrI1OC1ClUA/lCYVgxPLZETqdPhWpUm2ib3VTV Vr05n0iEU02OGMeDDQXYhwjUjTGWp1fd9JcCXkkhXgGgARyAiBFtQiIeigtFwvzq0R4IgIKRcSYr Q6VQvaOjBYmgBkyRgDH408EPMggC3kFIeZYjnvsBgBs9whBHCsYlavY1MyK4QV5UwC2xfus8dlUP XkdQV4t49q8JWaEJKyOiLxoWsRtYbMzUJ1WoHolMCP9Fhy1BdoMSIKtXFJEGQVJQ3BJIYC4ACmMy I6QBTPLWutfFbnajCrmB0BEwkdFdIjnCBbv0IDQ09RQyWCFU7b4xByQIzfCoFhka9OAI9r0UKzpH iABMwJJyWgkYWBEpRdJAMu1FcIKfGqurls/Bt8lqSHB5y5VxZD+IHRMXWKmBGyTLaQTcwLJsIpxk jTAzJB6jbPLFkYy5ZCANUGCFTEwQdMnmBAaDT7I4MOPtPOxO6RwIKpkiHoW1IF0AqzEAJFDh0Wh4 XDq+wQiaa9ka6BgcfnpAiD2WrBpwCSMllk3KugUe6rwExsyRMZm28xJyMefLOxYCAZW1EW1dTMgf KvL/ywDGTgV71EGGcUY2TOkUBpCJAQLNhVPOahMmOqPQfYZ0pCU96SEx8i58UodSgZcQ8irSc3bK geiAt5FCbYHSa4wMqYizhQCowy2vtq9oBlInuwgyLgkZ1fJyempe9/p74Qul+HAzqwj/i0x/Do9s /jzoQh/aJsi2CdMefZ9mGyZqfJlaPZ89L2TnYNFDccaP5GfKzOgO2ZoJt/zu4ydlRzdDxGm2M1Kj bAbU29zQrie6ySntH+EbiVLcyFmJwm1xL6CB71NAuA0zbUY/O9rZGPidnP0+X1fc4hfHeMav2xl1 fCE0pQJvYMRLas4VVR092MjoepBqlGucSIcU6KVK1VMaTusuLof8iCGPwF6X91zjVCWfKG9VbJ+P dAEiLnrSlb50pjfd6WmMC+WGELmVDqox8iUIHXNaJ0EGcqlHUC/Pn04SzY3m5WNHe5/PQSvd+IY3 V9WHCdLuUQlkc+53x3ve9b53BXMhTzz1KQl8upEv2IIgIaeaqpMKAD5Vl++PhzzGc3EBD5zDA5X3 AB48QHnKWz7yg+Tq50U/etKX3vQdyUEPCNGWlpPXUIUa9RZYYerN+XcwneuLInPwBcCsXuynB37w SbqGNeSC+MTPQfGVb3zhN+Tf+c+HfvRLD3tWOLW7eRqCLY5qvDt1ZnnI6Chx2CKnXUvf/Od/YwPR v372t9/970ewoiYj2CN4iiD2p5r8QUIa/MPf//8HwAAUwAEkwAJkI8ejmpFAQANkwAZ0wAeEwAiU wAmkwAq0wAvEwAzUwA3kwA70wA8EwRAUwREkwRL8nrrwDLzIlFcjjI6wjPIKjMFYPBOkwRq0wRvE wRz0NUWRE0Bqi0G5PUIQwvLLgY/zi0oiFEPhk0RZlAXUwSeEwiiUwimkQiEJgQCwHO6ruoRgLxKo I56qo774AqoZAhoAgNGpwjT/VMM1ZMM2vMGeOirBsxyTAonOoL3dUyRGOoI4CYFAcsM/BMRAFMRB DMCY2oIeyBPiaItFLL/NESQAs4y2mACcIsRKtMRLxMRM1DtGWp46oozdS6oQsIUhOKpFwsLRCDn5 y4Gw08RWdMVXhMVYRDC2qL44QcLdKQ1LGy9dW7kAGMONYAvaez4GOAIY6AH5KcZjJEZjlMVmdMZn hMbHqxNTy4E4eQwmkiOOiJPlWSlPO7wJWLnlabnTS70qMMdzREd0FIcYiMZ2dMd3hMeKy0Yy9EbC GzWOqL/7KjmC8DrbW6/gywBfMACB9AWCHEiBNICELMWPUCsdw6uOWIAOEwEJ/5gxkmiBfJoNtXoh kEG6k7jIIjk6kLyBaapIiBxJIPlIIdHI8JhIkZCAh5yNkCSSiCTJ0IvHm8TJjevDEBBG6AsNq7OT QrEcUPy9OhlHnNq9wmg8gEzIpnTKpzSACiiOG3iKgoFJgtiGB+CGwzAJasHIk8iFFdsIcGCyrsQx IiFLmyQJgAmW0BsZ2vDKIQnLoSEam2yzIklLImHLsszJvvTLp/K+tnAL/3JC0WMkQxGwITA11zvE CYiklRNGS5IUgQoB3eM9APC94BsHp6wCqEzIziQB9euI/2GPOxGBkuyICqKNllg02hisjmCf1ewf IonNIWEsiPKIsDoJ1hyS1wqcDfUozSGpTSG5/82/NM7jBKm4cAt1CIAAGALnxDrn4wLY07Ws+53l 6ZyeypzIsIUQEKyBsEXmCT4yMIAqiIKmhAU1MABYKM/zjEqRWDT34KpcqBBkgYAXEIHUUIFd4YCt PJJksYgUgJAIOhcd8xD+9KGKocv65AAsIbIdY4oFmLMPmcgBfSGKRFBZQlACYVCLEoEI+E8TEw/m UKv8eEtqAgknyzEd45KGBFAAENAI2cgNpTED7Ra6pBDygIAbeAGHBAB54ABjmFAaq9BkkSUJBTMK iZAGNYwPDdEhO8nPMtETQVHktNIrJaQrbM4tbc4hML89rD86y0f8sz9FgQEE5D9BAr7NLE/OfP/K zkwGkwjLjgwPFXiABciBCLiBNaCPLhMC+hQBIVgAAR2KFNCGa7KwG9CABdCAGrgfB6iIBaAOv9pP UxECmliojHoKeeGCXZkQSC3UyVqgEHuKjPIeSIUASS2rBQCt1pyJMcqGliCjDqIaEMkMBFGQFJVQ gEpVVn2AhjhNQSVUBTBURD0oRWVUR32QVJ3UzKhUGtHREjCKBciZhhgBdHiBeTkWByhVEfAe6mgB BmiAg1gDVqXKOoVVWYUh5rCiW7WIXMXSeJVXNdLS5mTOLZU+BCy7wDCVkihMyCPPgUzPpoyCKlDP hIyChRSJ7bC7j7gXVaKIDVGAGqiiXqEObrr/jxrwkKGQUA/ZKI0AsoNamYLplY69EeogEHw6lw2Y EWkwGJOFCRZgimXiCBWIEjCBGYkxiOdAMp3JTQRxgHFy2a2Eq8Cw2A3A2MzQ2HyDWQ9iAZDF0V1S IATSIonZCAlg2YEomAA6TdmgDoug2Y2wWQBRgZwtCIrpWbWc17Vl29moVy5tzrb9KDb9zKdkz89U WJDohh0TTY+ITSMDmYdRgR3jHyG62OlAhyyYluXwTSOpCXqamGWhDsKFDxbqkgVhCQmJj7OKS6+i ERuhEB5pUVt9y8b6iA5ykA/wsKCoEAdgIhnhn6SFgMRd3MeirbnSUfNgkRM5s46A1/Ig2hfB/w/9 wNy5Al32aZrRnVKLMF25dd65q8xO9IxGhL+3hdvn7aQ1WIH1PNim7MynzFuPWAAWUIE4E4k7g9iI GbENqLKFiSX+MV9okRYtggCDwFGXUQCDQJYqqwELaQ53mV2MrNJ1wYizuhaLuDBmigg944Dkepfn GJZp8tn+QBANYAEWIIIR2KwT21/3zSfqiN8cm9/lsF9dIrOPWYBDBRnhojGdWRfkEtt44cuKaSYG duCSoRp+mWDs5WGla4znbLVXC6oAvMJ7bTV87WFNYtPvLdinVAPzDF+dgFCS8CoGotX7eIpjIaPY 4p/WpI6z2o4Aul2ydSibzYanEDQbS4px+v/i9oCo2JpdMGZSz50rImoo+pCYmXiOJEqQ4u2IEDqI BdCINs6Mp4iGsuLi65jNLFnkMLYhaL2h3U0PWjqOLJEP5aisD6EgPx4iMsbj+6AYPv7dJCblnrPe LcW9SMsBPOgFPegFPHguLvCANHBlFKguExgAPRgAgjiHVs6853qVU0biUoajgPVeA1CDgV1PhYTP LlJbe/lVJRsT3dyIXMCBfHCgfDpgjuAG4erRQxOzG5lZ3BQBv7oBHLgxAoGAKzkXF44ld7olcElg FqthLjgQArkJntVht6wIbIoIdqYzEcDmAOaIbd6IbnaXHp0QsQyMXWqrFR4XFh4mr0VabcHm5mQC 2xlOGZexZx/KZ3eV5mcm5pHuM1awV7iNTkjDAz1oBhPwAD04h4FoBj04AxMohzSQu444Bz1gh3N4 rnXoBRRggF4IagDIhXP41zqEWy4l6TfazGT2zO9l5qa4AWAgN5Co4pqgVfHIprsk5MqwU60RAXAA ABxoK7KCiMbdILfiALJWsrbyVADYhrbCDjdmZIEw6wkhlw2hYykhLIfKqIRwAC0DmOb944qArN2d rAfIpstKrq9u6GjmgrEu67P+MLn6IR3loRyi5LyCD22YEM/KARzwl2mIpvG63R0B7MgabBNFEMP/ burYlrQJWOrmrMc+ywGi9h4FIGqj7oVm8J5c0INy4Ig1AOpmyAXdMQE9cAEAIGo8AAA8IG4ieVsj DgDZXqM1GIfO9AVlXmbwDYkU2AB0uIELZgF/ocioyYdoTl934bALVhY/6bCOVICN4oAuWpL61rEU CDMc1QAiYNJuYIEqU9SAWRbxmOYO+5KrjebycFAS44Bs3V0fm8sFpgx7EJj6wAF9lmCm+AA6fcss YIFk4dEp44YLrjJwSAgio2/7xu8T228Vw9ELWhGQUWG2Kskkc3CqwYgLFgFXuSwWIJmZaJmXAQAM H/EI2HCQrlLsdnIFo20uvdeUVrBc6O2BIOpc/zABfTgfdugFYB6IWQZzo9YD40uDXjgDK8/pISni 2n7yNMoAp7xbp4RqA4hiLJYKV9GM3NTzJfE2JooK3dmM/oCKfoMK3RmKjijXBZiL94GKYkl0oukV p3iJaLMJgTt0glj0vmU4BciGenqKiOMgP3EVe3BrjnC2RoEKb5ONQCeIQQ+PQr/0p0D0qIl0aWmU lRBUbsN1gVO0glsAPur0TxeKUF82Un/zZG+vKF9qKlewc+iHCzhqPYBuE+iHNRdzjiDqcvDluViD C9CD4S6HXCgHD0hqpa7t61b2JlqDCnBP9HTThJRKDpQHHF33e1dDkz5iLnX2BCP3cB9u77mAa/8n iJcG81xIg3koBxNYaeg26lyA+FxAgS8PZrg1Ynz/HgYQh3O0girwhY5PxyroWwz8gK/E+JOHQmY/ 6QC47T47Az2Q9p2GbhSIO4JY6YMfbuYz+GpeA3a4AJoR5rhF+Zo5RvuyLwbgAqO/ryO46gvEtqGH +idUeX6fNOF2eC5ohi9HAT1Y82ZIg4PXB4cHABQgeJvHgwHIBa8vaivc9+uN+reH+7iHvKnf0n5v r3WIdoK4gLjb8vOZaSay8mYgiC1fc6DuBYYvh3W4AHYY85Ow3ouX+8iX/MlfOpO27ua0++wqvrC3 +TIXbg8oCJbuiAH4+oG4+YIod+hmB9AX7sYHN4mgV3fKl//92ad9SqN75mx5BZtpFJB4XZbpNOD9 lQaONfCAMxiI5UburS+HBiL35ACAARiANVhu1y8JLTVij3up2tf+7ed+qGJ268587cqFWXZl5C6I mdaDNDB+Mgf9gbiAVk4D8y8WYLZyV/55tufSuwi17uf//gcIAAIHEixo8CDChAoXMmzo8CHEiBIn Uqxo8SLGjA8nBOjoseMEjSJH5lqXK9cagmtOohx4kmDJlwlZ5rIYwqO6ISEAmDiDxwPQZh5QNIzp EoUJLiDwmBzp9CnUqFKnUq1q9SrWrFq3cu3q9SvYsGLHki1r9ixahKw+fgyZVmTKtwBuehyyBUAu E3oZmDj/16wm3hjjMhAuHGMN4hjexpHgafLvmhyLC69QAIAE4Qpx5XLu7Pkz6NCiR5Mubfo06tSq V0vlqA5nR1asTd98HUBnQcQ/Bdbk0qMHgxgMKghgIJDEOG8xuOBdYwJP7+QkppPgwmWFcG+NFVSf PTEEqy9DxLPa6f08+vTq17Nv7/49/PicObIFKR8tXY+stlgfaKKZCbwRlAMA13lDoGAkKEAgFzXl 8hcAMDC2hgL9xbACFzms0BgJFdxX0BFDDBHAazkNwdyHKaq4IostuvgijDGqSF99bsmoVX4diSji QBd4kNIaZzjIXA4MjBODQBVgOBBiAl0QYA/j1FMQF+P0VABABtVlcOWKOX5EyI1hijkmmWWaeSaa LK7VkW32pRlVbR/lFIBA6wxAFF7leHBBXjV5swKDyVVAWGMuCVSPAN5kZh0XmGVQARfeeKhmfW6+ eSmmmf9quimnnXo6EI1syfapTbB59IWTHgD2Hx7M1SRhoVyQIUAFwwmAZEExJNphcgJxwQAX3GWA 4or0tRkbqckquyyzzTr7rFehkmgptAt56REyeHlwjn/P4CnQL8ig2IM41VmnKGADWbcgFxWQwaWv 2LkorW02VmvQEbFgsC+//fIbC7H3CjwwwQUbvJ6xbNl7sEDX5nQXCgC61My3OTyKIgMCFHqZAAEb hA1jBJHgjQKDypuitB4tPDAXsdhRAMwxF/CyzAWAwVALHHBwgwYMKaACByJIIIJlDrXQc0VrCJ3b 0gpJAMFFSksAgAI3QI2Q1BM9fdELRBfUddEINdBCRlv/c0101VczvDbbbYO2Zo1uzzXtR+ICgAce Ku05kK7GCRQlkikh57G6APRwD66Gr9DDyM6MHLZ8cCu8NgYw81PA5ZdbjjnmNCwkAQcaLODADQ0s RHoDCiiwwEMQbMB6RVVPTRAXC0BukAYcqE2R7AAwoHtCvUeU++4TtaDCZgI5AztCCoggAkbEY3S8 78DLfT322XdFL7JueyniTiYMECBBKJQTIBcZeCMglt4wt8agHkuKoq7wVtDYCpBWeQTKpr42qsG4 gIHMcS5zBHyZ54J3A3AIhAE3mF1CSEc4hshjA0iriArIFpEFaKN4E8kg1ayHEBBusIMXkcANbseQ NagA/3oX4aAHJYJC1YlQeza8IQ41kjJqre1arGAOHpqRPIGgoCaCwVURL8MYGJBAY7loF66aWJ0Y EGYgPYAUACpwICr25z47DMDKBlY5zBHQgAVMIEK40I2iKYADEDSI8zawAat1DQDOUAHobmA7Eews dAAAXQlq8AKD5JEDgxRIIQ8pvIE4b5AQUMEL+tgzCHBgAxzQ4ECGVkjYDS0uEOBZLh5oxw3EUCDC c14fMemAPjqykpc0yAKAdoMUCiSWO6MlAI7nsaFRTWh8vAHabiBHHEAuli+QpQMGYstZWoaSlsSk QB4ZyRv48Y8i8CTPcqmC6pUyh978JjgLQqNjhdFg+f+xDSv4JxOD+GlY7LsMYcaRDOZUaX14cVRy /FYg/nHhCH/K0gTd88VyVkuAB7TF5RBKRpihkSGRvOBBhCACnikAhcHaGQT2KIIFLAB0tkvBBl5w uxZYbQGfnFrOpGGPEbhRIA+ApkBUEAEAQKAEIhCdClKYgxFsQALMQ+QGHLAADQDTMjOMpjZ6BsI2 dpMLS3XARhvgOpSqQHQslcdOe/pTADTgBi1owAK2oQIGLACYYJ2oUR9wOwmowDIqIMIL7CGNDaQA AAt4gAoWQCBG6kwaCwAp1MoqgrPqlKc+LUhNbxrLGxjnqDQtgeks2sYRhLOylg2n5Noit2t9wTwL 4YK5Mw5CoX4Syzp7DRYMTEslgRwhtQF1z1qOxUOCjZGAM9tc5hqakE9uAKYHEQHytLmG32mwjTOl 2gKY4zp7FOR3hwSAPVZHV4GsgXQVEiVBeue6q1VQHgDQACkN0oLXCeQF5KVeNF+ngAdMTQHhbR57 7Wq9qiXzAS7MQXK/+16CoBB2uWAd6WCXu0GilyAteADVVICDgbTwiTdIZkGccUkC0RcAARbIgAHA jf0OZLvpPYE2O0zeCDygSDX/vCyKU+w218gpAABkW5xwMp6LdNFXB3ltgXI8I7agc22EKOBC+cEP W3CuALpFSC640QAVfGAh01DrH29w0efyUQQBgwA6IKpfLWsgqQMBL9RemhsQUtJvWQjvAkrgQQlA maYWjHLRaqpUsnHhxAV5wExXZ9dZbgB6EdhAWwmSZg+2cMwuFAhwueDYTAZazAKZRltZeGi+HlLS ACj0QID7XzUbxHVCEEgDwsvmOHtZshygrIpTrWqDDXSzlerI9VrNsMoJGcj8eBkBj6yQSG61IMAV CIlNrLbRzbEGGnSd6QgiDSLcjqVh0wA6TvCzN1JNlBBgtkC4gQ6ogVm820wv/+tILOJucEGUv+um 8CbKgao+mGoSsCQwMcxhqjmakSRE9APWcLwhHjjBEPz1z6ZhkHObUgUOWMMDjkGQX3cbsRwoWrcL 7DrW9VvC3Vw1xjPuKVm3LUfHivWrCVqtAcJMoba9HAIh0mUtF8QBUDb17nIB1m2E1M1adh03ELuB nNeSCD2r90DwTNOHC6QbxgisCQsyaqT2jK1xznIOxOzei4MQvC/oxqftOxCwvjuZMDSIwQ3yAAgL BKpwVjot6+1yt07alCLU+tgJYvavO9xvX3esnP/Y1slqvO9+9xTcyOlq2b7memuSrcihRWtbB7lz CuFGNoGqwoV/+3i5mPpBFP+Ag2RCQBtbBa93CbLyTD683NTWLtG/u239elDi5039u20XX6YqcGoW zXZQC6KAD2yz4QTBwbcXjmC3z1TcBaHetDO9zQo3d76F/jXxWd/pDaCo2xHgAIpin0sEE/zv3v8+ mlL2P1e/GuQ8djHDBIjbAph8oUZWCAtpuQAONFkh+Xh5W+t8tZ8dcv6OfHNB5JRlcIEDMBAfdYN8 OQBzAF1MkU2Z1RKacZrStVnnTdLqzZ8xzFmBzNudzRRPQU11AZoCOEBxeZVdSaDo9ZRAyEPpgBcD 5RIHRBYuZRIt3Zt1XVrbhRCqAcADCNwJbEA0CETOmM6gdRoHhNYJQk1NBRb/C5SalPEd+EWhFMoI x60ICuAN3pxDuljFtXiE+cXNrNkartmarhEEA+AAC1BTChRNJxkE9PVb933XDaQh/VEYNcGUEHxA H4mAcTDANtQANYmUv+metVEfhiUd0CiggQXfclHNNuzMA0TSGsUXwXHDA2xV74xgKuHAw3XDLFGT 17AQBygiIxHVHLLACOQAF8hDGt6ACiRbgQ0E8mEXAEDfu10iQVicr8QbTaVhDbwig40i5LgOxIXX 7t1SCnAAxamAiYHYFD4jNPYP3ahMi+BBGuiBHiACNvbCt1SFl7TJF05j4jmLQTUeyhGZ5pRhdjUA N6wRI+VXQQgB7OgZfoUNshfYQzewY9gsQAPo0zuKTtgkWQNoALEsgD/WkmXoma/YA4rI4wIkj0IW SAOgyOpwwwIkGXMwQNHYDgDoG8tppK+w4xplA+wMlegwDwPYw0MWxH+JDkTxo+i8o8coJEcKhDzy hkreTnQp0z4q2U85pO791ESaEjvazkUil0DsZDQuJVOyR2ZR44oogB7MQz/0gz5U5TwMAFbEGFsY XshRDubYwhiWEeeo46fkggMcJADsVVP/tqVbviVDiB/6WWFVXqVV9sM8pAFWbMGr0YncJMxHvFjB bIHMmBFZ3syzjA5cLiZjNqZBjJNmWaFd3mU/cCMA0AAG2AEGDMQR7IshaOZd4IshfCZpHkHLfCbA qMsEjMg0+uWKnR8Ysc0W0ABt0mYI1CZuHgFbNkvtOKZv/mZbVuGHoEBdVmVlEgUN2IEhxEJoCpAd 2EEsuIwh8A/tHIFy9ssRgMFybsFyAkC+9NNTumbbCKfB5IB5mudAqCKB7CZwtqd7vqeZhGdsSmZx 6gMerMEWaCYYsGVyRqd10EABxIJB5CfAMMpl2kGGGMJmxoIhFEio2AZ7KMAZ9EIvkI/v/1BoL+DB 5CkAHvRCGrADnuTCGaRBL5zBSBze5MCniq4oi7ZoWLAYm3SPihCnXeZlgLhMaA4EjtIAkRjCkeVL D6znWoKBHdBADhQpF9DAzfQAKwzBBBBCCCDDF4jneTxIGgwFYOQChV6hHuSNQZxBl/5HGgSICXCj CehBgOTCOeBYQ3DPXLoonMapnM6pRZCnfBBncfZCLuTAZ2LAaGIAgeAoYuYAGFDngGRIQeSAnyrp ebIWMvCHdRxBD4zjaeABmm6hNZoAhVjqp8GEHqgKAKyDHjQDAKBAL3SkHhBFM3hpnX4lnb4qrMYq rNppfNBoXf4FFzynj2bmZgIoDQioQMpkAwWEAgV0ZBFcQSQgq7JmA2sVag7IQLKGgj2opwwgazB4 p3rkwpUaBDv0AoqcaTfyhB5cwECUw6me6UmgqaluIUXQqqy+K7zG60SQQHi4hZR+Ab7ma46KTL36 Sgjga7YMDIpG5oza5VV6AAAQqSHsZ2faQaFqpiEQiAzMQCjIQBYIRBZkgcVa7CLMwO1MLAXIQCjM gBDkgDNEgsVegQxQzcqeBwqMqrmej0BQqEv0A6sSEZoORDPowUp4QC90aS6UA7liRGyBobwe/y3S Ji1C/CsrEEJoHsEW3GYIgMcQGOpAMK3TslZnbUFnqSIhsGmnyKVg3sc6nIOPwEM/IKzC6miRAsAW RKfJzgAFZMPkUc0MXCtb5oDcmmc23C0AZMEVuAAAhEIwPGsooAcK6IMenMEF/GxNeIAeAMY66IOJ lk8/WCgewIODnMQa4EE5sGu71sf4KS3plm689sAXsMJ+qguxhMjKoK7qsiUJfAH/fEG2IAOlcoq7 vsdK4AUe9AO3WOdmCoSvCsReBcMMMGtCTOzFIubfEkDLrkEoXEEO9G0WHMEMyID1OoQJoID3IgW7 xgB1VEAM1O1V/C6emIDNlqoefK6p9sPQ9v/I5Q6EB6RBuqzBOlSoDpnKbJmu//7viuYAIQwBvBxE CBBwog6w8woEGHzBXXwBIRyBLWyMszwoVKYIA2SAOKwAT4AqAHwmdcZCAVjt4C4CBSRr4RqvkQKA 3HqnoWbBDFysQCSBxwJAEkSC3ArrtTYECniAUPywB1goZgjAOAhABgxG4myFpaZLL2glAFzANWYo /BaECegD5kYuQTzDX5jr+NhECBDClOqHZwEwGZcxcObAF9gCK9iC7RoEF6SuQaCxGgOs8U4AvqaT OOQup8inHp8HCVSBONQKXqAEDBwoBoCBdOreDMitDNDwDrstADBvwhpqNhDAI48ss+aCEGT/gwtU Kwk3TzMMgCiP8gBwC9UIABmIQyqnMq14xRn0A2CsQS+UA2/ExAXowToUxMt+ywDoQfnoaTn8RTOQ qkVkCAnYwniEAKKaMTM3M1yi8RCwAgkgg5MWBA3gRqKSxxdXc4GAQQ8cwb9+MrMApn6kSA9YwZag iBHZk8s85yEbr3kqAMUKAWIgr/IKxPSaJwlTQPZmA/LOwG66AMoOEULYCSmPMi0bjjgIgDiockOn sldU8dBqKzG7xAD0whBpK8LiRS+wA5P0wgXIMrmu60TkAC3Iwg6ULCFMgGmedEqLVgfswDLsAAgQ yBqcw0yfg/k6M0/3dPb0QDTzTw6sZhdx/0F4HARQp1OBhMfN7NURdJbAuGkfz0YFVEEB18QRG292 HoFuRlgLC4QMEIAMA0DfygB7YuzIXsGwzkBKUKcMLIICUACyjvVBmI8os8NdD4BHA0AMODQrp7I4 EPRVrMEApEER7ayF5oL55CxPQAgA7GwRoa9/fC4AZOgTn6pEKIBM0wIIWEYImOZmg0CnZhctLANn y/SngQBNq/anCYEp+zRsx3bbhAgAHfDGADWY4Es0X6067CshpJMdl8ez7K56cEFDa7AVuI9AVAGh FHActzCBwPBY0/A9G4QLZAN2L8LhSurfzkADBEMoZEMShMJoG4T4HPQoHwcrL/RDC8BXPP+IHvzs t5Rp+2qqQFRxiEIuhd6sTJQphYLARJS2aFsRAHTAMgz4QeQCEnSAgyxDBwAALexAR5p2DnQALWRK EciADGT4hms4h2c4Xcu2iI94gXDzXNgFqNDujZn4Aeco124BMuzHb4vzpwzsBceHAlSBAWSJN1QB Bx+BAfj4FS1OQozs8SZvsKp1Q0jyNwNAyOYAsQKAEAB0QogPXus1ljtxX6OyQzO0FYDFSZjEZuDv Og1yupyECZS5SvQJ6DKEEJg27eSAgl94QggBArz2DiCBUiyDJiMBCLD2WZdJFhDAIhe6oR96dZ+O A+y0XeWUCHSNYCNEC/QaRDQSLLUAo0shOqVX+qPTVKA1T6fLEMtFhAQsutKZekJowHGd0KhzuiN9 /zqJx2l4oIgCa+3YDsSsC8QAwwsrZAsryAbqOneyuOmttwcXVIEAwIAqrkAV+AZz09M4iEPAWMeV wPDcwnAoxIUkp2fIpqfGUuyCXEk2hLeTH261JjpBnPeVk7JAxABgv7sAuHdYCHakYwUILPgO5LsJ EAgIOPgOoDSAF8S9BzyE83kulPYOdIAQJHy9j0kwEAA+EADES3zET7zEQ69D5I6ULQRJnYBRBvpB gFerP8S9ySKsP4TIY4RMDd2mN6BEzJ80nNDGZ1fL44XZvRAHxPxFrDwl1Xysu+cBpxPTDsQA7ysX TIB5BD04w/HfKPWvX+YQgPzGuap89ICPDwQJ+P9CD8SAAWxMjy9zgVSAhzzrDFyB3AruWlLssm/H Vzv5Ipv1XIQAgXRqFoSCdj/yQZx3XmP5cSz0uz/0mNACAph2v7/0OSAAEtDCOaB2QZyDP4z2DqSB 4LqACbjAwe9Am5sJBVA853d+xONDiCOEA5VAcCmECAxfRHSezy/EIinfRKj+RaCe+bZ+xnNgRPRb RDCfRfge71hb6v08nP7rHQ8qvk77bjdMvqpuelInk+Lr11Yw1ccHF1gBB7d7FcTAEVTBpOTAHxdw DFiBFbwPdmeBC7AldhsO4zDH+QuEC2RBNphn83+28Up5A7y/Qlj5KK/7oTC0KjM0QJARIA5AQYP/ BxEmVLiQYUOHDyFGpLUMRC4AJpZ1AEALAYg1a4Qso4XwnD8QBmn5c3EwF8WIL2HGlDkzZjB8BAjc zLmTJz4ZEFvgEPFAQUMHRDbc0PDCgQIFIiTcULpGhNQbEAC8uFGihoSEUaV6LQj2hlgAKlocXONg Q9JuABSokCqiaAMVDgrGdRCVq9mCL6Ba1QB3r8EWdM+mhcCBQUO0BRdYvWrYqlcNWzmkRRh5blEA nG8gBhDVs0HAXOJKk1sj7dO2Khob1KBCq1SseeXeULEAwOUSmRECJjs4q+jLgx8vjk2TeXPnz6FH lz6denXr17Fn164wR48tPY4cBBP+YHfyALp//z9fkItBMD3A5Ng+n75MVgHUBdC/f0J9/xDFEac9 ACqoogcurLjHoHGsGLCgHqqoooKHuJiQCxIaOuKL/IZgBZkJCAEjIhN6GcDEE9kZoKAYxCEjwBYD JEO+/2ikqQMELAJgDSR2AKCDZYQoaMcdHAQgCyROKogWJFYSMpUOhOhghx1MqNFK6CjASSedesLp J4cWg0AEFRrKZQG5NFCgBTIZ4OAqDXJxQAQNNIighgWcaWGDEUorqIU3IbjhBQBa4OCFpQyF6wG/ PkPTKRVwoFMEHBTgQgIOeNMzzQj27JPQDRzQQJ7QAOCiLIPGhOtUCIjw9CAFTl2AAwnodOAG3v+i UQECRNN8YQMJeDtoMVo1EAGvxULV4AG8CCUToTXXaJOFETSQYIPBLsMhWIOkMUYEeWYjCgBubohU AxyAYUABX4F9FlRRSW2W2w26gdUrVl29Ut99+e3X338BDri+GQUumKYJ9tsvP1YM3i6GKgS4sIpx CirQGxhIMMCbglbAEIBxxqmCBC5iIMFjAI7YGABvKGaxSIRCSFidIYZQ54sRTUxxAJ1VBCAGAQYS SAArBmqY3yWDLCiNHjlKGoAd0kAIBATOMWiHZQg+Z4cot5YyX6P1DWanGW6aISez8UH7S4aowsvW rw1y4AGLokKNA2YVAA6AXDRoD4JrEcpbghz/01zg17hvKOoxhORu7wUOiGuAgxR0VOHbwwH4m7iD LiXO1wbWWBwAuRVXjANnGnoggtESL0iDEiDIwXIhuSlqAdgTWtOzBRagSgXP/saKNISiyiFvB+SD Fa9cZkcIAnRuCx4AcG4tqJtEb7+Nc8j/2qABACL4vSAISkDOdNTBTl/99dlv3/334fcXYf3y4y/+ 5yq0ogorMiCvwv0lxIUccKEKGWBPDzKgPyt44zxc6MGDAiShhvSAEISYAIeQUcGI5OICZ/DAOVCA gnPggR0rgpE4BOCiFN5vO1noSEFcgASNCIFqBQnJSFiCBBzmYkprENIOaKGAHWgEBDvIEQvr/5Ol Lm1JSwRY20IkoIIgpcohVFxTLvKmPRzczXno2Nb46OU8wLluAxAw1eoQMhS4iEAEB7nL+IjAAhHk iHxf9NMDfJi5DSzAXqgikwIWlTkOwK2PCniLVmpQAnkAYBsbEA0ZtWdDFmjGIIKr5A0+IK9nqQCL HLiNqZh1g2kkZAStgiQAHtDGgsiujRooY+7wCEbeROABBvkbHwO5GLghkZe99OUvgRlMYUJkfgnT T3+GGZEeLBMGXMhFLga4zBi0pz3gOYgDl/nAhfSAAQdqSA7AeQRCIONA4HxJLtbwTPbkomoAqEeM YDQQgiTzOTxEwjmEMJEs6GgHSIoSEvYphP+tFeRqIMinO5IEgCLubYgKXUYe6TkdsTGxiT15YkIi M6jRta4h0xBf3fI2AoMwIBpJuYFm5GGMzY2PMc5rKWRwp7qEeFRxJr3BAzigSgDgwBja09xXOEq+ wci0IG87y+r+thyFPIYzs/IVVnKRAm1IxQHtWYA2IgkXDoj0VYkyyOyGx7kbcIELr6xcG5mnU1sO EjLQ44LoNqqA7AHVMydAx2COIT4A2FUDskPqBpQaUcEOlrCFNexhZ3IfYx4TsQxZRzmaYYIjfjM6 XNPIEbjANVnsIKGvutqUlraSIqZhJDmq0ECCBqPGwsSeBc2jQJcBNY8o9IUM/SwtjojFghSPMbad XW1MlJi2s5WNuE5siARKYJXX2DGNzloTANoUSWfUagPSyJwXxWgPMW7LlXw8VXNVBYxu0EkDDQiW K9HBrOsy97my7GNBUtVHXTKkjx9QSpq4YVYFcKNaG0iLK7PaJka1iXJ5ucExwFfLTebCGZ40cCjV u1bPABiQEWbjuMx6kPYCYAR7TPCMOozLe7H/9bclNvGJUZxi+eFHYfphmIlzgYdy6KEf+tBDL87Q Tu2AILZQKpUCYksL3vp2DTlYmpRogVuB0kKgJ8kFCFDjjRYBjWjzVLFCnilZH44MAC7IhRBckEeQ 5NYFkp2sWp6pzis/hAIUrShPLho48tpFKbskHeuc4uCEKAAH+dDjSseFVYS8TnuP4w1ciyq+oTjI AYMCpAh8pdGfEk9ce70rKtUrl9IJMrAIecwb/4I7ljRuruW5QYQLcuqR7gnPCAlfpTI8u9CplaWx 6UZPAUBFVaXlqlkdTaV/GgESv0ClieH0mpGdbGUvm9kGKaYxkVliFOhhHjW2Njz0sB0hyBCd/wY5 BxJMkAOQiCQhQjBJOsXt0I+QmxY9Oq04iAY0MjQbIeL8wgR6QLDnQJTeBwluEymKj1nEmSFyewgV aQldPcdFo7IaFASM8ZZXjakoXHBAWnBQPVllEpCMyrWCNTDJv2AqK9xzAAt4A3GJa9hZHN6AdkVQ g6L46o+rIrFC+lgV23GgBC/IwcUN/N8Ms8danvtdCqqLHp1r8iAJj25eHjBKQI4SISMgsQagp0fN 6KkxAM5dy1XO4RJw4zMc8GLHBbnLfq+d7W13u9GenbBo/xYF/bC23fVR4+1MxGlCEgJEY1vueyKk yTzELUW4kLIpp3btR2DFF1jBihBMPgRbeP+7dLIk8LGNbUsEXwjF//JIPxYFpFuVjWSqCl2cUhIy tpoLb4TgADd1JRsFQfRekzIYedTgAbbpDRcB4AzdKIABqyceRzWgje+BxgEOEJ9M/4a6F+TDVUyV zKXa2A0V9L5cscEBC5oSHMlgJQePm4vEw2qQ0muveR1+wBddiT7DYWUNgep9pHxIlbv1KazPI44D akA3OsfYlOPyDPAAETAB6UOx6sd+TAwF8g7v7M7utGMNoKbdROLM9kaGEuIcEGBKhsgickFKYsvw CoIEUgiFXASF+G3ZuGACWGELwCnxtiAEFJA5/m0nAs64IoJ3DMIZmOszgoUBtCsHuEHfyCv/TQxi ATSg0xSAvJZjv+jkiBrAVaQwR/irvPKidgxivCCjCRGCAbZlv/IoC4VArgrCHhqDC8juM1ANLhYg aZhwCn3wM6BwCTWAuaRQC9njDgtCDDGKN3JACa0nWKSwSParkgixN+hk5ezQjgAxLzbnCcuLDAGg CuGiDW9wEzmxEz1RIeKOxV5M2iTQ2vJOO3jIHzhrInDIINagaRJianZAawJPR8yMx5IGBirghATC CpCIC2LBEAyBBspDBhVABq4gFPapkmRAGR0kB2KBBgakASigCHLgPQCgCEIhEk6ArD7xJSiAbN5s FpqIbDzvGzcj9dBxHdmxHd1x2UKRsR4w/wLvTu+yIySMaA0UgO+6oz3OQSRaED1MIJ14KA36zgU4 yyDIqgJSC2hY6AgMwQ4wgAbI4wgm8ghyIBRmgAJkYEaEIBg0kgCWsSBoAAMwshnNJhjQIwey4Aqy QAZmYJ+c4RzZUQa2BG10sIlG8h0PIgU0iieBMiiFcih96dkacO5Wq+7qMQK1wwVqkbaCBCO1JhU0 MBZ1SEd0RGvyabNOggFWQIVahIUwwA4okmBowBBEJBhmoCMJJhtmIBjEZidpIBbQIxQ4kgBUsiCQ EZyu4CfgkiizoAgoIBgooDAHEy4H0zBfBiidgigd8zEhMzL/RbEWCykbCwJLEe9QkQML4ljbkkSg BuohQMAfqsaHtg0EpGQrB2gXU9DK3gcMJDIhciA8jmAGiqAFc0AIckAGRPIgYoEujSQH3DIvAUAG IiEb3FIGWrL2iDI3Z9N4ZtMFMDIHnMF4JPM6/7EzO7VzOw+GfoxpFOnu7vKOKV8CDIJRGIWRIh2i n3KE7wAAtvoOIYDI25Bkb56mA7hgSt4TCXSzAlbQRQJyfWhAItGTGA8iCwiAAkIhGXeyOGOSYIBR RGAIL0tFR0JhQZMgG0KBJoky/7jzQ0E0REU0MuOufiwTsTBzAiUQJiKyAFzURcnSIXiMyUCARxgq DTxCCL4MLmihnX6ERqfEMwTKInZAFtaAx9agQlSQBdcHBfDgDC4gSGKhAOzgN4XR8gyCN6+gCGBS GQ+CN3fyOQ1iONGjPbIhC7LhGGdA30a0Td30TeE0TpktHgPgRA9LKU1xAiNigF60APjhRe3AIf+O NLZK8CKWQRU/i7PWoBZfkUd6CyvTqSBMAARxiwu84T9ds2FygR30IA36oReqZCxjITwGFAMOQmxk YCWy4C2/FB8a1CDCIwcoFD0Owi1fVU5xNVd1dVd5NX4YENpODDPpkTwhggZc9E+R1Q4C1SGyzMuE xAWEwASi9cs+AswMQkdzYSC5YA1QQLKE5CJMYCABgATGYUnFIUAD5hzGsx/0YB0AAAMKALPQww4M 4VRngDlzIBm/tDdlkwZyk1XlQ14BgAKSQAgoIBK8tFcVdmEZtmEdFjtK1MWCdVhXNCKMFVn99EVj wppmIhdQwAM84AxQ4AJQ4IhyIAakTIWIRn3/PGACbQwFAGBKtYkLhHFfmZMLFiEUWjUL2BQA5hIu KDQ+rAkZs6Ews4Aw0fVhlXZpmbZpe5VO7dSw6m5dXfYljDVjMbYAHORoZSAYZEAGSuMIkOHxvuAL bAHybgYiTAAPmqEcBqAcPKAZPAAPCuIIViAD4kne1KcZ7k4PqmRAgfMIYtMgEPRLFIBVszQmFQID LO8IKFQGB4gLNjQH1tJIrqBnnTZzNXdzH5YGSMBzsRQ7oTZYVbQUrdZPkTV1DUItZ8BsWldxASAE hsA7EwZnTuR2y2FFgCa1VpBlVVQf8ECAIpIGwABeDdQgNBJN1fKJioBfAaBoa89AXYBV40M+f7Ig FI5gDUJBJWESczn3e8E3fEU0BL5gCMq2bCdAgK7zPhrQAaVtXSPwFC32WAvAFjJWa9HDbHBifxO0 IEKgfWtXbd32dnemZ1gELIdmhdKHb9e1FywCDCJSWf0VITR0Bq6gcgnGJkcSQfdpRrKBAJIAZUoF nJIGGSNhEW5VfFX/eIVZWCgHqHzbdwiQQXQXa2FIl2IpcH4xVnWNBOB4wn9rWD9st4B5RnfhSWjE wXv/JQc8gB7tzgMs4gi24AjiIyHWwAWQMxvYdA2ywEEUIE0p2DNyIAS4zIOzgI9aOI3VeI3XMWYW KwCGgIZpVx7fNzPl9wS9oQK8oWMqwBt99lhT10/bwyb5V7jwAYjfOABGpBx4JmcMmBfhyXfzVA/w oCqtGDrEyXxZgRAkT4nZ+JNBOZTpzY1pNz/kuDJv+HdzeGWswBeqwJWrwACswGMuNmPt908LAkFv gqIQmcUC+CFMgICL2GdSa8pQSJLrkZLpg3xnVx1mhmZmWJSleZqp//nKSHmxsJMygfUBJXBY2cMA wDmcw9mA/hhr7QB1B/kmm8h/AXg/RiRFGjlFViTeWhNA02cASjECPYA+kGFmWkwdotkxj+BABjrx CPqgqzmhFZonr9mYsDMEPmQCytdDJsAGudmJyTNjwjmWwTmWSRJrQVovzyYnCaCXW0yR1VaYT8SI VzCBM7VgmBiH+2Gf52N0bUhKPqsDfMsTe+B8ffqny5YVtGmhibqobzBm2hmlJTNyB3oLEs+P6zhP 7VGj1QAW1MAAONoAfMhYz3mH8ZeQeWInTNqh1bZECtiRTUiF1PpcF9iOZ9qTpcOmFxUJ3AEB7Dq2 1A4BL4jF8qOv+f8aPyyaIRagKqziJxdisE+NKfLaMILwJRSg0QIHshviUJ5jAVrAkl9isE8gK8Lv sEVgs2WiBRo7Ih7bsAnDtBOCsp1DseMC0Iz6tQGmoRswMotos6aknYqoSKekFa/1RxK1KHD6HBYb bJQSh3UkY7JanA3go//UFgJZpG9SJ3oZgIeYgHuBpWMEtVgWo+2uGejDpqfGrhFgGezaJNaRTt84 sA+bCF7gBOhktP3kBuSBG4RAEx9CA7inOW7PHuDb4Z5jTRYzJhTgleqGvoYuIvDbtWNiv/vbq5oj AsYqb6wLtik8thNZqR3zRmihAzh8GX+kA9qtA16Vx55kw6umybR08j117H1SdClPMJxhIZyjIJa3 mn67WpCL880IYBYOOXYvfJHh+awfmQziDUbmLX1aVqpnegF9+SiVRLyhHAE0Ah21+cL1Q70VYr4i YijgWiGkwXua471gwuucYyiSlrQdDFroS89g4su/hznE/CXIvDme6+n/KvzO+cWN2zkyO4A/oSnM CqLP/y7NYpEiFAAkPoLHxG3w5jN+plY8c5gEokC5sRqcSbKrvVovb4LHcxKI27d+qpuAjXh3q+yl BYaJS1efvzuRX+xGEAAJ0mC87XrKvxFhknqxsPwrVCDAFUL2NuABlgIvniIqVGAwXE8psmIrBCW1 C9s0mt32WK+oBmU2AkUqFsk3Tio49kIqin0Jc6MpciAaOODXtesg9sL1wq+0DaMpykp4OArnzOoy uH1zjn0wtCK5UPtMqGp3vt0zbg+yqd0qrl3Zoz3gfY+zJ6x6So+r8Lzha0S23bnESADeKH5CDmLi KyAgj2BoIigDimIX/63gF7r8ahRiSnjdhkCATb/tmbbGBQzqflpcPF+co6tanGscazF2kLtES8b6 lx2CRByZiE8wBdf6yMGGgZfSA7ocOuJRHZApJcobCcSbtz3RKEvZO3N94jhg+2ijIdZgNq4iF6Io z67iBB57TuThT3iHU1IgsP5kV7RiUArlUC7F0b6rknJJG0RgV1Tgd9alBNpFw94lUBzAIjSgBkIF At4I7E9gsmDFUJaC1XKAqHKNTdK85RTi6Q7/UE4AUpxCTkRF7ReA7QMrUFpAUo7l1DRA8YX97qHu XvSe7/3+BQDfjroFB2S/KMJnRr58MFrgAYyHzR1++Jf5x0vMG6pgBf+UPwNiQCGPgAwMgJyvCUIE QPnz2J3EwWTE4YEuJMAtcGmmJEl4qAMwGz0+4lt1pN0MyoeWvmHw1In74cU3WrmZ25YzNpeZSBxL 2sfnWIgBAoDAgQQHmhiAMGFCgTHIiHtIRoA4iTkKWryIMaPGjQQ99Pv4Ud9HDxxLlpwQIGUAdSon COyAIKZMBP46mLyJM6fOnTwzolQJNGjKEBoVsKgBQcMLFi82OnhQUcINLlw4OBCooEYLrBoUAICw QUNBBTe2CtTgbAEHCRVzfLjhVYVZgnK/bhghEKw8APY2QLAoIazAwAsAiFDBIK9gB1MtqlDhFYAK YFwkz2XMRQGHv1L/I1/U/LcFZIEvNiyoalZBV7tiC4JTkUvgggZcpj1IzJpL3YJ1weK1u7fv34IQ 0P0GKzbCg8gQSjQAIOEBF2ccfve8jj279u3cu3v/Dj68+PHky5sMIVSl+fU7V1SBwYUB1coCvVWp 4u1iDAMxFEyvTII4VFVBAgAZVICRAjsg0UEHy+wAAgBrLBOhCXhceCEKAplgQmwCrbEGVrmESJCH uaBwoQnsXYeCSCL142I/ApFgQBRVGICjGrDgGCINBfDzY5D88FOZDATgM8ORBCgpEHrpBWCSCeWw MwCVVCI040QOieOQQyv2NACMYoLkQUXl/SSUSwDQ4g8Cy8yEgE1f/85JJwCsPJkeURppUBgACjgw WkaHhdjCAwCoNZxkHIBDX14l9DkQcsQJplhXD0gw1qV2RaaBXwA0oE2iAykXaViaRTAQWdEYZuhY ZQ0kgnQKaCpQrIduBgCpGTGA6wKFRaBCDYIFexVBzUGKFQtzJTuXqrNiStCzm57lKaii5kUEp54C W2phoq3B67V1jktuueaei2666pLnJEsrqbcue2uMI85AjQLQQxUVWLHCRSRU0QMAjcZQBRcwWBFD DFYwQKJFQggBoglxCjQiABd4cMY5KJyj4jp4qMjACt6sIHKBADBQgcgV+BdbLh+bIAQAMaRs8hok lHxvnSiANCaMEv9WcCOOOAZtgEA02AHkkEEWIJAM+Cz5tJIENOmuSu5GqVBCVDLkkERdTxTvRR7x LGYz6/1UdUqsvATnmw+GDXdOaL6bUtXu6mnSCBtwo9FTXkmVmacCMeDABg/sJilB8myAW6mNL1DC X7vRtRUEHDgjUAOeQi5udMyV0I1mTWGlgggATBMoXdACAGhcl00FGnRwZcSFpxocvlZgzy1Q+OFm JZ4qB9KMxcHoAt1g+uQD9XZ55ptHbpHlkS0QquyRnYCOWIBrZl3c3n8Pfvjij3+uk+mR7x0XVlQh kQAx2DtOOD1Y4Y2ZBFVgAL0C1C8wveJQwgVxIKgka9jBMgpygWb/rCEXueBCbC4mkAqMowIkqEAF sIGvDHiDBCTQoAMBgCKBAaCDG4xMyGJAAm8k5ggxyBl7WtSzF80oRzsSGo8A4CMh/QhIRYLakmbx NHw0CU9R6gVCrrSQEWoJIlwSR8Pi5pEYvYgk5rlTUFiiJja5CU60QN/40IYnleCtJBAwRjc0chiB fCtc0ZKHBhwgvK+g4zkE0Ruy7AIpDXBAA7mgVapugCnpnQUdJwAANwRHENGUyh6aSQFBXpVGV60u jdKqlaGc4SlFZgRRhlGBBgp5LK680VMQ0MYdeeVIgqDyjy1YAyAl+RUOcIqQhkRkqejTqdCoYCB6 e04EbnAyDhTS/4vELKYxj4lM8IUgbUBJZk8CiJ8KCANhM6pCC/l1EaBpUBz4ERgMYtADGFRAAC68 SGUW9EQ8ULFEHqpABuTjHwCNAzckEEDAAGACD1SGAQdyRqNuBoAcrKBAFUjGuHYWkjHpY0Y6sqEB YKGGouFQh3awBZCa9rQZBHFJUwOA+eiWkoKAQAgjjZlBsmalAXANIgIQgBUkEj4QeGCmadBHGjxw AQ2ZZ25AURNMYoKENGxRTs5cF0/DOEaLLMCTA5FK4y5im7/BDlcWUYAK8sGagmTBlgDI5UBewIHC KE8gD0CV5XDTDWP8hXOAmd1XtKEBLtygWIciwvAY45mBPOB1cf8pFheAMVXOuPUzmxHdQFpAqVSp 4CrAE0gOkFcQudJVLU3Zq0XKGku0qvVQ0CNOWGUDPQnIUiApEAywFEAdCNivqKxtrWtfC9uMmI+Z sTVJPXownX/162D54YIw+mURBsTgCPERhxWoIhCDiaOFGQHBDlQEgFw8KBdC6CIA8NCMc+DhDNAl yMgsglszMcCeFENBbNyZsx5kgAtHyAA4V3CEg8YIJCIRSDJs2NChGa0AdtDhj5omtag9bYjMDKlA hGDABC+DFiSSEhIVwpAlTkQADnki3BjIQBOYt2Jns1pPBaJFmSAhJtat7bisCBR3qXgoRVHBcrpa vI1EslC3Go54AkQwOsp+xYyRfYxXuOAACeRCBTcojFo+4Cc/YuWVgjQkOv7i1YJoEo9cCMxf/nQD zEUyWq+s1S4lM7vSqCA+uJryRcJFFgeEqFNwvXGOYxxKglR5j6QRgQJE+xsRwEWuq1tyIEfrZChz NZba+ktpxKIW0+QKmJgU/5eJHw3pSEuaXB+tm4EnrZGHCFQYMYDBEfhVzvsZ4J4CWcE7MyCOcZB6 INLdwcNogYAIVTcXOcDuBS7mgXWwOgfemKDI3mcvLvSAZI2KDRc0mLINJrcCI/MGFygYavPAkL4g maHQiFaj/epQaQLJwiykptElDfGKBs6BUNtm3YNo7YgqHeGWmti1uHEhBg+pt8liIBFxrGDVVR3H OCqTg19YQRwmM8lR1ca2N82kJphe0cGflFSl4uAxWonMCxyQV4G0TnaBSxQEbvCYuXolK68iCO8O 9wARGJkxRJZAn8ZqGbtg7lOCUwELPpBXzwkEe2JRAFgfIwK+xfIG18Ksxv9fvIAbHM4BrYudzi+e 8djp0cUqkAA6Ank4ImPcTzcoOaulEvIrp4AFLhaBBipiWd5UbgMz19xwtJ5XsEyvekCuwWMCo73A NnzvfO+733NS6Wb+nSACeE8VfPGQG1VBHAxYbUFoRGp616PXMei1hQHg3Act2EMQA4AQGsjAclyg ICsYBwfHse+B3MzUGLwXFwQwwZmNA9gM6AFubxZtaYvpRS6yNrYNcKP9Jk2HRRJwgMd9Psz7Y8Rw QsKGUsrudtObwg/xmhPj5g0DkMEbGiwQwTJQwSr8OyPZPy6+CB6geuCr4D4RChZB3KYtyoSog/8O GMMYgIgr9QQnWI1AnCH/dAWxAK3BAFlwFp6RAxrgRhDgGdwgD3fkJxoAAScAKQxwAvJwAp6hAU8l MKuhAAGoGtNzAgEoGyCoAQ3zSRSYKgqYVznADY/TGl2lgAugGgd4MkLHOxaRgD+mgP2nGtlwFhgo DzPXVQ9oEVxwgRoQV8nVf0Zog3LmgSY4PRBwRx+4gtOjgHzUGgP4hPXnhV8IhrHVLkLhdz2wXBTz EPiSMAljBabnehM0EPZxT6/nbAK0BvTmQmvgAhzCQABAXB5SEOoEiOwlH/EBh8llex4EiPhCBhXA BTngDCNzL0ewAsB2UDzzIh9hbUIDUUIjfPxlUUmDUUeSJFKDfLSFeSIm/1QKtyEK8WAM4VJeE4v1 EjcrYAW4JR8CQS89cF4EghH5wk0AIiBc4IveMEAAkAXJmAV5hSZp41NwEhNvE4bcQQjulxJD4GH6 xx25N40bwTvc2I3hKI7jSI6URkR9BwPsg1srYADsJzDCkB8ZdE8ZQCBc8C/jMBAxMA6xIQ75sS/c mAMhwArI4HgCgV20QzIWgW+WKBBmWHASlFcW9GwrUAEcuB4wlIm9N0I4YiMR9VA4om1AUgA7VAA9 5ENIciRUY40CAQILx3wIsCFTglLS11LU11IVFjctFVyk1gPtaE6phmqVQTDChjAKEzBZQAEzoJRX EAnBYCYoFhRZ1CZuI/8TJVaOOrEFXzAEW8mVXamVW1mQV0knKWA8YmmWZ4mWackTlVY1f4dvi0c/ ORNAwEUwtIdqA6dq9gIDAqMwE0EC0dYDE/AFX0kUHqNrAeUBeGAxh5lc9bFekQWHjXJsBVdPjaJe KFMBPSCRczJtCaWJI2Qj12ZDRoM0OzR8oxg1puhR5ygE8gcnreiKSUQCXTIRTSQAcbMG3NQ+7sgQ BoBBFvEv2GAflaEAqCYOGdAD9zBAwcBRzWmAAIASBbY2APBTM/Em9KeWGwEGPQAG29md3LmdW8Cd /Jad68EAGVee6ame6xmO6FFgUOJ3OWB7CeNCOTBcyfWXA9EDa7iX5rT/n/WQexMwBCpGCNGVmB2S QBGCAirSA94QMGvABeNQPxaUj+4DmceIXsmlbOAnMysAjt+xM/MlQxvpUDbUIyM5fEljkgQARBwl RKvpYfDSktEoE2/yfFUSmxE2ES/VNWQQNwrATSNjXPwWQOQEXvQDALZIH/vZQuNEH1kQCs25JMEg EHPjLkOgJyBACx1ACzsQJ7QwUuwppmNKpmVqpmfaE4EHL2hqLyLUfkBhCwFjIRfiAeYVXesAoRJ6 e2RQICQwQfHhTnupAJk5I+OQDPN2IPrpbFygbLjHmZhIX5vIiR75iUBSURcFADIQbsbXUe6ZfDNa ozIBm9E3AL0Ai1zS41JNRItws5/EVQ8GkAHRBV3Zx5ADgWrxNZwFwQAENxBrAKVK8jQUUKVCwQoh QB85sEBrYAIgMCJrgJ5sCq3RKq3TSq1+91FpU60bwQppMwSEUBG5sA4Y1qshgg0kU3okUBH2mAGm tgLYIJR5KTApkwEHgoDx1aEjU6sXOV9jMkM3EprAd0M5NHxBMorAmiQvqqYGBgL+oHCviU8yuW7S Z5tbgpPfQxUS4UCxYR+8OUL6Ah8ZcIuOJRAeRC/zlKkHO6XDChRYCgAegyF4ECHRdQEXcg6LyE7r oFPRhQILarPZ6rM//wu0QSu035Gw8Dm0KruyyGCvtCNsPZCLyQUDtgcfiHgvtve0bSowR+C0YVke ncl7MgIA9zU0JWo0SZOiTJOpUFOKUYN8McqSCBBUQHVuo4qjSYRvqhoRaQg+IVJ49KFb5ZQBBiAM xnUjAiRCCsNP7sV9AJANURpuwgqdKcayF3MGKHAB3CWzzaBhZ9CzBLFArNYhfXi0o0u6pWu6Qeup ZEi6VhoAW1mgfxeiCvWZJBAF+FVDBnCi/WW2P1J8Jwk1KglSCtsm8TcTNzqTEUaxA1ex8YJvcwg2 MlMFhBBqwrWG92BNAZMDAeSIVoAgAcIFQhAKqUmlkUs3XxAw56BAff8YGybQDBqSrJVXcCgzMuzX ITLTbCQzMo2XQpXItafrv/8LwAH8d4F3Nav7JGridwjlmT4zQr7wUA3lC50YkgVgUQR7ssb3bZ16 jjOKBArHivi0bkg0I13TPu0TNwcjDk5rHwgyPyksbMjFT+TpDebXkOQUQPmRDALSuD4EuTz1BVtw Xes0EBcDiArgDYbrh/PbQQVXvz1AAthAAglTesK2QTGQegrAXAKsxVvMxV2cTEVbundSYAjcdxhJ bWBLIyWKI7BQqfwVJCaJD9+2UW0bFG8LjTERkw+GozpKm9R3eelCb4nnbACQfYv3EC/Vsfm6AsMI BgJzT4HMqw1Qikf/Mr5QGQCsEF/qdAYze5gJBCIzkgF8Wqju+mwZEBmiGy2JasV+4l4AQEFeDMux LMuzXD4pJnij+3BkzHdem1D9qsa+QJokeZqZyqlMAqO2DJ8g0LA0CpMgHLFYIjOoOmEvtarxQhVM msXYvIbAlp8FsZ85cASxQAMiywX1kDC0ZiRS08N0ow5fcAS11gwXcA4zFRuCODjgd4jcB3Djla9u qo8Bgw3/dmzvRZ60bNAHjdAJrROpW8eQhgLscA4DwQDlUKrN0Lm50Aw4Cl1ccAFUEtHc0YwfBrs9 w68kOrb5NcEp2kPGx7YetWKCN6Nu85J5HJsSC29L9MfqQh8M1DDz/3ETR2MIGBALGEAD9qMA6Sxg 66wSQzABVIFh4FoOinkhy+ahHErIwIUvpmcRuWACEEqRGkoyjqhsCk3WQJsLEggBVPisZc3WC32O JpYLvdAPZhNd5aAHm5wG7GCzueABd30BA6AHKmICvbCzvaAiJ/KhGsFT7jKdCZxQX2tfQ1O7AAuS E3W2mOo0BBBump2Sx6y6rXnHzaxupGqq0bwl1neb4JNPvcDavcAO5dALZ2ASsWAI/cVfdoDbsdA0 obDZKKnUKsEK/LYG6gQAZ4AHIaKPMbAGiboGEkQfXEAJxzjEusYAs2cvPeCujtrW242mCjACRMYB HLAB4Q1yDMjd5499HuR2abWFB70AD4oJQv2AAgvUIt21If0wevikB4qJAqaaC3qgIfGcHZbcEoPX mT3DUNc22QHrxkBiC7YNYAFmzGCciq6ZBiNmvHocYdRHwj4KPnhwxjAixBqBAW48kieOAQLBnGrL Ub+dEt5qEeqUAxrTPwVybBWA3BMUtUdcqyYweozqoRBKEMP2m+ht5P/pyQUvcAMcUAIlgDzgoGdN vgE38AJrfeTnTeG1tQ5p0N7wXd/3nd+gSyK5kAYqZQJ6wECEPdiM2RPRmSYG/tiRupG3S9kSRQO7 O8xGklEbpcHqbcdwK1TxR7fsxg7IW28RMXDhE0Vn/AwmUeInDukpDgDMydIE4OIBUKDrcAGHqQAX wtXnhZyZcSCVYTPzaowCwH4uo2sKoNWoPEIVIE4UaZFXTuvduFRT3gJJ4SsKwAADCAEtIN4qV+tX ztC3DFu5MCVkTkX/XQ5QjeYYwUB4ENjR1Qyw7QHIfgE5jRO5bOCZuHtorMYGoCMpLSTFJ8dLEm7A i4qgCrfF+7BX8or/0WybEyYA2p4uzRDnI+HoJy6SI4kBlUEBUqPOArGtluatGP0xa5BAGmJs47A/ 60phDiowtefE71QiOtVBlWHfMZAB4pSZFtS/r6UA50ALMrClJX/yJs+l5xDyw07WVkXl3GDlucAN L0BkVu7yCX2txv5aKJAGKMAFdz0QPq8HvaAHYV4QJsAORo8HO82HF9ALnasTi50Surx3CLWv4L7G Hhk0ZSskee5DYU/HMO2a7j7aOWra1ofoiu7tZbPvX+/vKg41GRzHlx7c+KRO6vTRyVV72OC0E9QD jpcyOWNsGnSn9rJBjFog6pXYzgQCHewmkL8Mkt/BSGBSe0J1ZZkg/4fhAFB3ExIQgzzR+VXVAjif EaCfHQpQ+thxY2Lh+ZvvaByB+tcx+gVR+xnxArGPE6OvAXYWaT6XBYmtFI2f87Gspiyh5b1gNmug B8vODuygYUbUucqKAh5g2AUR1zmLHSEwAazwBRNACMjACkzd7ZBaXyZd55UtsBRc7sTsu51N4ezu mjcK7whR2oHcNS+lk+AzNvsKEB4ADCRYsCCGAgX4KWSIYSAFAvgiTiQQbOCEABkzqiOUA0CuXOtA fjQ4kEsGEgW5xPA2rt7AHiRgECQhgMHANWtgVuByMiUJb1xKDiVa1OhRpEmP7kDQ1OlTqEKOnrjR AoIEFiOOtrgBQf+DEG5KAWjgsEDsUAU3JJRsoeIsQbJm37J1O9fgAg4QAESoSxSv3rdx7RJMu7ag Ag03i+LVMJiwWgDSODhzXNnyYKFvPV7m3NnzZ9ChRY8mXdr0wBAaVWc83ZqoBz0mQPbykAvABT0o BprQc8ZoLj3lDDarfca2ZS5Hemw50vMICUKupc9F0a+fvuvWrQNYQ8IALDUGxFeJIn4gDTsL1TMc KGMGxVkSCaBeHUAdawAgljXdj6D/7gECFFDAgWIQhwxxDhRAgAOnGywHD7TTDjuBkOICoYXssGWh AhwCIBj5KCKAgotWG2IIZI7AabcdQDiOoBwyqICgHlqqIAYaBcD/caAVvNmsoBx6GAibHr1JyUEk C+rAKSTSYNJJ/xDwBwSjuHBABAUGmgZLo0S44UWxINCmscpUaKEkER7I8i0xyawszTUdU2ADvSS4 Ic6SFMhrrjYtM3MuezaQ5rI/IeBAsSQTVXRRRht19FFIXUvtvvoi/SyXNPQpp5de9EmDnVzK0YOg NfR45ihOdRoIhV5y8UC3LEKRQdUsrgglFFtl+PHDW3u9NRsAZLhVBgBUJEgIWs5RVgg8LfUMBewm zG4g78SDRTwDqhBPJxoSUm89oWSQT6JxUaOUUo0GAoE/qBDYrRx2BohX3gALFEcAKxbMlwwrnB2q meyitW4ApRBi/4ghfjAQCqKI3iPXIgBYQXejIUIYCNkdkFhmmVTOAUEqmDIDIMgeuPiRi5JNYkDI KntweVd/QVuyPwSQeMpmp6gsqgEO3GTAzTxb2IADFTQYIZocFBDhBRVUWEABB5ouGoAXbihBhRdK YlqFB7IeaOuuByrssBY42EAEs5TmehvbFlAhArFFcKDqq6XZ9YW5pZaL6qbDVqDss/cGAGq8m3Yg bjKhXktPvdoyioE9x3pAb7GjbroxurHWum+v+eba67FVckAvDUSAYPKpT3ighBvgLgjvrZ3++vCB IHB6bEObjbkzBey8wQGgAbBSBd13N/545JNHPjXV0FV+Li5MkP/eBBT0YEc22I7DtBmDUCjnuDU4 JSjUC9bAY40criAgFIKCmYEC+CkgtqBsZLDf/itmECKLSPAHdv+PdGAZGUMCEnYApuedpTrYiVa0 uFMtA/iCPNgywHkQdsH2EGAiDtMgfeqDHyG06z8AMMGABsQOapFhQSpcEIOSFyFpUSgpXIjFBTnk oWBQBB/vGVGJNqIaVgyEFiLcAS0SmMAhtgsq+5mSUeTBgQZYrnNEaYAKuqKACNyAC3q6wQsg8DfT yYMrTxOaBAS3ly6eYASaw4oETpACFnjtTwXRgBW/qDYIyEMEWMpF2cxSti+W8YwS2EA+TiCN32Wp jW/MCgCqWIP/LxpEBRxwowQ4kDUFEGFQA1GBCAa3JzsVT2x0GotaIHCCpikAjHkc4982YEaDZPEF amQjC9wIRzmeqSBrKFQJTKc64vVuAy0IHiENiUgHZIkva4LABhpTqEMd0TEMUMEGbGADJVzyMGYT pTS9+U1whjMpzPugOJUSvgqZQB+1yUUzYgOAddQGnpoCCR76oZt32cYEH5rBDCAGAArMIBs5OELS DJKTHCQ0GzNIQrCukNAZECsYFnEBU5yyH52ZsyjQkpZ19EEtA6gBPOOJgra45S1b2AFh4drhRCQy A3x4sJz54Q/OnLKbecVrXgQDgIEOlCAELeiF2ZFQPzwAM6JgwUgh64nFwjQ4Lg2SCAAY+eAEBrKk KC0DZx3QqL864I8oZVWEGR2KBHwpjavcQCtdesBA2pIDyNFOT7pUQCSbeUYF2NIjOThBNvBC16ip EjIGcYAWqdazgZBFKwpQAfBeWbsNhMUgZSMTIRfw18oRDwAi6AthUjmyTgIAcoBJy+FGCwDHFYVx AIiGClT1gg08jQN0tWtsDZJXCey1r5gdXGBDR5gHrKWZXmtmY7pRguChFrEAICRl2qIqMT0tuAAw FGX/unoUs2INAi0owTAJwgWrIeq64yVveSNFzokFwLwl4UIaKgSA6nGqF+WD7z25wyr5XsA2QlrD OnCyUPf881ZiycIMsgCAAjvDGRGt1f+g9BSurndVHu0ota5FQQqeR6UcWk8GRSQfmWqEUuqCSpOa AiAT0iuFDFKhgvqFvAFQmIH94F5SJrAeWzRkICAiQHye2sOpfjAAVgUALWjmFH9EWMKJykESlegP J/WHrCUh5As8soZ83KlLmpXAA7bIgbVutga0I0if6OhMg2hgTHBB8xwLAqfNdraxkL2BZqmrjQZQ WcvUdaaa3aQBNBdWdw/QZZxVCWaChJYLpAylavfE/40DS8CKkQWAFclcuzWfOXh+ZvMzC53oM8lj A8ACgD20oRd7oAMwBWk0nxvT6uJW+kyGEq+E87qBPA+umegAHTeX/GtgB9sz5KxUsGVDqumZQFVr OPZupmebGGQgBlxQVS4ocIWFNnQg/aTArQ6s2gEPrtuRoMARQlEE7tDCH2ClmRGXzFEKTwsAJPBF tsZDwZMuVT05bs+4ZvFjc/1QNSRWortICK8A7ZSnPmXQT4WKPBjG26gF89Z6CkBkhvm7IgNhhX3q Q2Sstsvdwp7OV6OUBpxptWY5M4rQ4gTbMxqEs251LeROABcHbKBphmmmPQzSzGYBHS6nBq9h3uwW xv8STQU4mCTtclHNVfecLW2F7AKEnthTxzlPg91sW50RudJ+Ui8RoDpRTlvHSb5AaHlegAiUzvMN +LwgVy/zBuKkZggU/baQyd1AGoCOmzeAlJMtOwRKYBayl/nwjBUuB7o53jl1FgAnMBtgwktyzGde 80OZVPPws/mzcKECVjCAFVAiJPfo6goQy0Eo/JmEGVzh20PJAgGI5ZFsZCELQpDBIlzAnSykoj9M VPJu1mGCdeiOC9hwWQweD6nqEFVgA0kGhn0x0goCoFscLoBKC9Dvf7u0gwAg9mpIbOIjo9iE8SoQ gtwPVAGoyngwFJgMk4KB9awHh1CdiFSpKuKMCKL/ImsK9JOS4gO90XCylSs4BJiyn4smyEqugnAA NWEuLdKTMBOtEzgBB0A0CECHXKu7bvi5DRjBgVgANCO0kggsXnqAEzglCIAAucCLEnCAzPjAECQI SWOmMWkmEwQAxgAACtQdNyusL1u10JqTOtkztCClqJGHLzoBPBuIbMgjByACrcBBEvxByPpBFGwM FZSkWYPAQCEdQaGyCnQ1C7zBFBzDWlsvBigBYCiJETCGGngaFrA7BNxDPjSv8hu4PkQKb9AWbOEJ IYiEhsoBhsIJ3XOBHHAPqRqKa0solqHCK3CTNRACi3KKkTsHPMADDwhFPECBF6kAb8iADFgBVSSB /54wHnirv36glvIQj5Kqt2uxoA1DGH7IIHLRoIkIMfPLD7ACK3YxOBPQqYQjkHm7l586ECsQh+SJ sQbSDp5CCgzIRX7IEA9hGAKAKV+EmP9bDZAjRmJsigMMxM4wuSVaRxNAKoLghuViLj0siplDLa+L nLuYs1ijI+RKM3Rwkxc4FMZynTejOmDoizXYhkFhLKw5Q+oyBi50q8KLLQ3ox4GwpJuox8PgOs5a A8gxDD05nNVqC5Epia/7Im1yK0orCLc5nH2EC4uEi38kiIBkgIHcu8ZbkwbIOkBbNYJILeoCQeVa EwlAh6dRAeEigue7LquJSC5IASW4AXtggRJ4Q/90vEqsNB70CsasLIlxoCBxwBH3aQAFcAF/0p3W mwF3XCiLOAJWCAFjCQYKyIZum8s1QAGmIL6BaKcUKwf/AoAeCKoWWpAd2Z0FkhAHmjd7W0xssaCl eszvQ7AQ2SEQI7/6GDESeor0IyEBUbiFY7F7YZCHOx76i7f3OgqD6b4NSYhtFL/+86H0IjIFjBJ/ GLmutIwkGr51lBIHJCzN0oDfKckVrMAdPEmTmIa1ygZtOoESyEFOsrMPiABeugGzWIAbyIeBeACC JIhp+E0OcJ0XqAHM4YATyAEHYAGz+MDk2sHa6Ucrqs7fGQhBK4m3IYjAyoEbwAGPiICzETvmSsP/ oVi0vLsBTxoLDiiBE8gFEdgkIdCminTOSoNO6XxPILzO7NxOToKbq+MGUkLBDLzIPWumA4s162xD 6poMYZOAqEwBwVGAD7CBGuiupbxNGq3R1vjDdLHRgcgAazGAFcgFRVyfRQiFbgyF2SMI1yMK91ER QhgCVlCRAsuGJKCALIAfAKgoCFuVckixATgHarmX90OQIzHMaWwgkMIwfNM+G1oqXvyw+bDM9MKP LLiolDPGLe1MFespAUCQnwoq+dudiJO+o7q/C9IxgPJFHYKYjquqq2I3qDhHHRULdQwrlNPMBjwK BuALK2oBucCboUgTiRStyOGCrcGBB0gmAHCG/xvgOr+znE7KM3sorE29iZs0iBEgmgbgAgioM2B4 ANLhgA84QRbAElVlVXusO7OIojojNMWQjKl5DKMD1RNtmrYQSVJKrRYwOpP4ixM9SBwQmqwZgTpr mnzIEus01iiSGhGAVVmtClqtz43MSb8DvMHZVDwBSsMbQaWpMxFoASI4SuHaAOG0NQewAZ3Dk79R AiWoykhtWIctjRCYGOeJ1AposSgIijXQvSw4gQIzUgSjUpNYhCv4U+5QRBLhAlZAEZORlfQhFhkY 2VzYxNpcFXqp2XK4gC/l02acEVeUOO04U2sJj5GyoAzJMQ7xsJYqF8sEwBxdl4LDqWQckAJ5Rv+H A6poDBgJOc2eIoEYYMWCmIA17ZCHoMxulA//S6/7EMDZ7A9IfVijWBITI8AnYbmjqKsYjBOw0J0G IJOfqR3rGogXjMG90QCvKAmri8EQPNxISqyYs9ubyAEojEGPqKvBBQzCDZ6+FZvFVdw4yYG7TbO9 2dvN0AAovKw84wINyJLM1YBLK7M1idzUlcGR0YDArdzkUtzEjcHFHYuY04C0kYfM8FzryoLCLYjM 1bXMOFx5QIws8d3BSd2BhcMRcIDWFa2qmUe3zV7tHQwc/TwbVQDliIEVGFMY8aeBMEsjzQEQ0ZVs CAZS46cD24Ih+IItQLBQcETzlYFIWIOYfbBuCLuAFIsXLwWACgBNPiUDniXTGLoOkBIpbKkCoSXa NWWpH2uYN+1e9aKpsEKASn2XE0q4AlkhMP2poULMgSGIFRCHKrACK6gCcciAzDCYb1GI1nRNIPu/ iRnHDfYP29zeojA5f7CpgtsnH3YUMSr/4vJSgJgTHuKN3kQ511XtCoLwEgIVpV1d1ahb1WCdYp9E Yi/+DOaJ04alAQyIhWLJgS3YAhqgATAYmSuIRGG5gkhYPY+ovflZA1zxCJStmJEhNWHBlVkxASQg R3c7g2Scl3LwDQKu2p9K4JiJvmncDgCoPkK0Pg2zoYVoD2/Eh/CTiIBbjftQlyN7CvXzzBW7l2ds uKvFWuuoEBKo5Hs7Evx7zBsaW0Tl5BsWMtmcW3P8YqJwWgakTZDx5SSxCmI+ZqV4gRKQgBd4gRHI ErWRhhSoiqEwlBaQhnwoi8H5naohLjtDZnCeiz/ETBs9AkMQWy6gAUN4BzWOhTp+3xzI/z3d2wwF yALKeOczDoEvYIUe2KuR0dgcWAMjy9Lb4NIBwFkCNuAEEYAKIFlLeUVpAalZJMQLc8z8UwgK/rHK xGCCq1RSPrid2il72dMRRhCHdpZADZhBrQA0FQ9vGAgZTilDhQgf60Vw1OWruhlOdMcvzgEQAAGP +WmgHuqgFoKTDmfSeBqkDifbiWKn/uZGsSSYkQdj8BrYishKM6yw0wAbaAwCHYilWWqxHichy2Ab jQU7sAMPMQQ7KKgciAUaKImEghEwaOORMYgjiGu3VIcvmABCmIAQ+BEXAAGLYiJ3O4eo1SmELuB8 AaoDcWR/OUyJA9qWluCizeRgqWClDf9jgctgp7WpESqhAOYpEjhg0BQA5IEQGdOOClkBCrowAxgH mD6Yg8GhCvZF/wPlABSiHTbAsc4JBeDf4EYfhDrqsT7uQCSka1ru5S4Bk3kUuaEygR2Ir9NWIHys i3S8EehqADjIyVMBnkbusd5KQKzRLVBrtR4IMKjfgdgCQ4hrIDEIQ3CILcCAIwADDFBj+563L6CY E7GY/NiBUUaACDuDOzWhAS5gkhZNcWhoV4zkxKwWbXFgbDkpbPSWfnMYHvLkpZ0pYC5GY0TGml24 EWZGk0YegBGY7OCpr4Rt8VCDFZjtbMw/hTnUl7JpjvM4cWxUS0WAHhZvnMgJIB/yPkz/i2UeASRP 8hHIu0fRkw2IYjLxkoLggAIliAVA0DJTAm64cr2Iz7AmciCPWCGz0RwwBEM4gvQuCfSAb6JAc4cw ZzM/8/lOqAlAlyFIW9621Jkt6EMegEQeiIpVaAQ+nuiLN+x4IDSFYPNQU1pmj8yGqo0ua1EG8RPj zKhVxtJuOBVq7BKWuAohg5aGBUoQnljgvlr+EM2OKh/6uDzf4CQDc1iP9T10BtYJ70fRgKiEALxB LKYjjGFNM22QO6qxgTyLBg64gQf4GdeS9eMeZ/zIhQswDrFBgU88AyI2CJDIBelZB53Q9k/sBuNW HrSmATcvCTQ/86LIgWtk77xmjlhA/3fyW1TV0OEd/t9mGPEAWWzHRmWGJvQZizeJhuULO6n8U49w uW0fow90mdgP52Cc8WA8Zb+ecuwWOvHjkUbp6weeQoaQmnBCzACdUCqjVYimsnEN+jeJyG2mHbKc 9g8hpgVbZ3aZn3lx4gKiQZ66Spw6AwAcmEOCYAHJ44ZMoy7udgYkb4zRYaw6s0qTUCWnf3qoj3qp n3qqr3qrv3qsz3qt33qu73qv/3qwD/un54LuHYLdaIbvWRUPOAcTuAB8Ehtsz/aPwAMQkB6HxpM1 2KItEnu+j3oAAIM554L05gKu9YhrhG8F0HsF2Az0wACYQXM2zwESkPcA3KIhohniS/98Q/7gRN4i b6jaFvOGvh/9sVclADgHE/ao4B6FbCmpWcQWIN2+CVaAE5iImtagxMfgxF+X/hhkp8gFLgCBnDIh VTKQFns/ASB95Yd61e4oGsuBXAD1C4PtcQhusM2QbEyICUh8CoD096CAxA9HIEr8kLsoBNgBxVeA ZLPJ5W9/q6d5+I/1D7CtBMo5Llg6X/f5oZOsYT8jgHjhAECLG9JETOMCYCHDhQq4dYMoMSLFiRYr YryoMSPHjR47gvwoMiTJkSZLojypMiVLkwskjgoQQJ3MmhMA5PKgMxdOPGfW5ArKpUIFhQC4kPDm rUIPoADWeVCI1NuKCiQYxqB6lSH/Fwb2WoK1uKDiWIkLGADIgcEOjSNg7GA4wqUHlxyx7MTKAcCZ vQbcGqAFQAPuEQAK6qbFgGELBkMYwOQIMYSmTFYRdyDIrBnBsh3cFsgqN4DdgNKl8fQdJUCcADKs W4/6vHJ22IgaKMrS1093v929F2gYZWC4gSrEhzdogKUAP+a27DDn16BbMAKz8BEggF37WGQ1v9ME 3sHf5szLEEQ8Y7o06dKfVbN2LS4+7fq1ZXfTMKA3b98DvopzHHFqkDGdIc01x1wBcP0VSnbbYYdP KF99Qdl3AbACHGbnlSfLX9ycgQceq+DhgU9f2ZfifWRxo0BDL8IYo4wz0lijjTfiEJijjjvy2KOP PwIZpJBDEln/pJFGCiECCx8cI0ELERwTgQQuHklkBCUo4MANRgFQAz0vKlACBAxBUMICDSmgggYK cDDQCxsEFqMCc3JBp52H3Vknnnvq2Weef/IJqJ+BEjqooYIiWmiihyraKKOPLhqpo5JCOimhc4Zw 4UxfbAHABXicMwBPuTSDAkNrxCDAOD0sFMM4JJBQQQYwrAGACWfkMlQGsHqz61ErkIDNCjHkwEUM R1laqbJzOsrFEdAZEu2ChnQKwF1xOVRnLgrotUW01da50GBbvGMIDYrlcMQX37EyZwecZYZEGpl1 MKd667V3xpzerCaffN7omSylAzuKgm8H63ZYMsUJCMtwmCJY/4CCzdV5gnYPEjADdnOSAN53h4Fw nsia+VMnCqa1N1o5CuQSgzj+vryawDMvaymz+/HW3wBzkjEcLGoQB4sAc2LAD4IRY3AYBRdrnB0B oXCRywQXUtYuF+/GO+959SpgQjPrmdYNszGMksEoK5BRQQwE19w2oFRWGbfcc9Ndt91345233nsD wA0HNpSAzgbabCA4B3Dz/aI8Kpy5kAg3APCCmQtxs8GYaLbJkJYvpjAQAyW8AMAIGyBeo14Nnc5Q 6gutntaLrcP+uuyoz6567azf7jrtu9vOO+6+69678L8PHzzxxxuffOzAL1988zFmeuEQITzVjAko NMOTCeWYwP9VBmhLNU4FLvaQQQULrdF9+SS46Iz5XWXABRdLARArjM8rnzuPXGzRPw2DUUsvg8EA l2B0BEPYAQz3M0Re8GItQxxBXUOwyUKwphkkZIYWC7nAaMA2gHMspAKtic980hYj/KEwd/hriMH4 48J+LIQEAlJDFYBmAHFNLGL8UIgMMHYx7SwkUxb6zkKyUB54IWAhDOiFB0vTKtZYYTX9EscJVWhF 5unvRc3oDcL64YGFjIM4xiFOBhaCAYnpsAAEBICDmnYxfARjIVOTyRBvAgALxiuDCwEBe/o4AFMd JQMZWM3LwpGB1aUQi4osXuIa6chHQjKSkpwkJWnkABvcwAH/mmyBJh3wgQI+0hkbEMFC3hQ6BYzS RY8rHQAioA0NAEADGwgdQ9J0goWoYCASIF0le+nLX1YyejOpzBFyISIAoMADPEEB9xgiKxIIoDAM 8NVCVgCwWtUKADHgkqxyUD5W7YoLwwKm6uCyEG+ZK4IRBMAWYtEpLqwlFuo8wuloAEEAOMZadnAW K9i1EFqYZzP+6MBCQtVH0rDjAiEsYQlXcz5yIrOLXIxhw4ZjHBymsTkLkQGEZvDDIGqqJgtBwQXn pZmFmABfHWTHE8kwRflAlCEekGg/mrEQ4RzHYQYYx1HO2Bw72EJBGFhIdSDkNArIMaQBsCNAOUQy giIzZetR/6g2X8oacRwrplrdKle76tWvSlKUNViTApzBAGeUlVuT5AIEOHCDG3AgAkaBAAveOlaH qMkhH+DAAzjQAsS1gJQLgQARVMCCy4E1sYr1qjBlwikuJHOZykSmB7oHgHpkIAaukl+q4iQrVnrP GyGkSgUYQBSt5sCcADijHaIVLQzkYDA0EAy0XEst1ilQMK6lQQ5IsK5h2nE8mnGqBgFwBtF4kKoV kI8Aoviyh5Kzhf3RjT5COBw16PQ4taIBGp8zMR7+0KggVeoeMZjHk9qqHFI1zRMFMMLXkGGrM+Wi Cz2gl3tc92fEie9qJzaxNS7tYtfRDlIB0M+QBne4mynucf9X2sEzLFSKL3vuYits4QtjOMO/RKUK uKqBEYAYcR8egTwaAoE4OQPEL4jTQjTQuMG+AAKg1DCNa0y3EFhIHYSIWjMukIs1MLN72+PJ/MaX KoXE4B7H4gk0Z4wVas6lB1L2BqsiaQI8dHAAeLDsOXN7hC3QwH9hBsAR2kLm/vkPzKk7XQ7QXBhC 1PGfAX3qBv1ImnJAGAAVaGjMxAFdYBpsuhNdgwwZJqAbCuanaFTQRjO2nY8CQJiUocwej8ghlNq5 NL1oKUNhGtMczJe6XPwiAHo2xuOUkQux0GGChgqApRnVowWe4xAxJOfNnGegBW3iAJTrml9f9c82 Hjaxi23/bGJz4QY1ODazm+3suTWWU8gsh4lEpGUUXJnJq6qqi0iw7RCOA3HrAGQPqpJNNntjK5DM RS/0MI/ezCMNveAJ8Ix0BEL8loJ3xLVminuB9ZZGue/1l7B9iYKcubC69Zthdre7aKMpiIcdxY7G glhrkQIABHPeDEqR68H2MnfC8uUiwkkdRov6zAArMKN/ERQLhVQnvNmZNdVkElzyOFWPnmqPVEGo 56vCrODPHjrRi250ukFgAw548dGb7vRnR5tVQTHBOhhwgVIFxVRceB9SVjWXb9ePEgVEAU+OQBW0 ZDOG3jhCUpjiyBbSdx76AKQI3fuacdxD6D3awhfyXRNW/8hZXsPVNTJVOhrl8pmQeqdkoF/YGwAQ ujhRQDlxxGWHjBag0T/E2HhDusecIxHTPF8pp2Pm3JEjvDek7tmhdyrH7ipIjQuhAMWNSnME31rB hD8Z2NjR44X6S4qLf7qtTGD84yP/+EIgPvObj2EFiKAEJXgr9d+KA/k5P/va12pjpwejyC6EJyLM AFVWIIB090AAVQZAr7gUlDXMbxwMKBa9yZyBHiQlBklBDN+2KGre4AEYtZ4BlNGQzBEd6Ztw+YN5 6dy9rJfPLVenURhEwR3CKVwFUF5+GYDD+VdQ7RAAcNQsvJHTdJ6mVBq85FzH+RF7aRNDudcIpR05 bRF9+X6HAGLXdRkHf/lUdCiIHQWYUc1CHAHAAV7IzZ1HGjAgg4nG6PVaCE3RhJnQ9tmKTlBhFVZh M+BB/cWIBqhAF+JAF4oA08EI9KlAC7zAX+WIBIjhjijAB9BSLblhjbwALAFJG56SCNChnMQhj8xh kJxh6fwhjSyABAiJBojAnOz/oRT6iAKwwAZI3yM+4gasoSJSYiXqjRDR0ReEAAlQT8dp4VxgQw+Y 1qvQxauwjjW9CPxVANg1BFHkAP30wDg42d3MF33phk0BQAYMYAEKydRcHFOVR65BFQepFJ4Bnwv6 WUw1nuNBXqFFQRVMnqHhUA4xGgj60IDhQ+dNmkwshBCUh+Alka1kGcoMQAy5lAQKwMj5Rn+Y3Bjd 4HDw1Gpdnn/J3qt11MXc3jbaGgAA1HkhAOERowfl2XL1CyEloxTyHq+ZxtdwmZxIAwScwAhIAxE8 AGgtBBccg0G4WInhiAZwQB72SA6oQATAiIvRiDOwgDQEiUiSJJuopIywJI+g/+RL/ogE3EDpLABi xcgaOIBgAUlbcctIWuL+QEBRGuVRguRQKuVSxk1jOVbfMcT7NUQBkUAGUEmvbBM0kQD8kUBWJcM4 bJP8YN9ReAMM6FkFeNMKjOXe+N/BqN5C6OINviN/CcmBacrNHRECFNc5MGHARVhrRFFrDJ8kHZzj 6QZFndqpbaBgTExQQQc/bJRRPVoJXsgJboZ5qeAKlmMLvtcUxSAw7UdvwMPBkJouGkB2DYcOPpxj ulqA+RABCKFdFmEFWZpeFhRCjSPiTRgUDmbT8WWW4eY4DkBD1kgEfGSNfGHr3AgEaMMk5ogC3AAh 7ogGlEBS8gh0EqIoWWctRf8nj1DndupIC3QYG96AT/6INBxOskknU7Jne7onJDklAubIkSlRBViT +TgEfm6dAKxAf1pTVs2FEllTus2i3dTiOnrRQphaBsZjL4aUOgAeP2aGP2jNPw5jEyXUMTLUQUbX C+VMM+LgcEQjonGXokXMRnkUPngU50XaMJlgxikYx4kjcLJH6bnU6WnVTIkaF20m6x1aARaNgsxj PcLagOFjUuGehB4RQGIoBJ7jhK2GaElhQCpkBxHnjDiDX9EIFxjnBuDAh7VADmTJC3zhAihAC3yh muSANKhACajAGzLECKTpG8ppF75hGb5ILrTACMSSCEBAmsISF05fC7zIGZL/aRc2zgh8AJVw4Zng KZvw6YzgKU6I5xcS6kJIgAoAw5vGUpvewKWiyTR84SE6hKiqAKkCgE2WzggQ6pme4Rc6QJ04AAdw AKo6hJ86gArgwKUaIpUswJeKDgegxQOA6nsa67Eia5VEz8XliLE0RA9gQwwwAJdI2VFEK7T2gGbN mDdJWWE0ko7SYIICwMnN0MoZIAJ+B14uAwPapnEt4ThCoBTZnWAqZyUVpofC0MIdh3GMEQdmlMRh jIoCUYvWxBBVGuhlRscB3Ga6zAi9oGt85i8dqKiZ3L4aAHYhA8u1HJE6TXjRXI7ZXAXhHBK1a4Mx oW7CTBRunwPS6HpdqYwU/4Rzhp8GPMANvIAC2GRXcMCbQsCZ4kBRtsADMMACtIAxqOGLHMMDxNgL qACfSgALSAAE2CSfYueLJBtJJp0IPOQD4MCc7FILNMCLtIDSQcAI1MA28ETSkskGNIACPAAhohJ4 GkZ35sAH+KnUcsCYZKo0jIBNrsnXhm1DLIAKfMAIQEBPKsDgqkBRnqqLiCeMBG2dwFXUSkDecsEI sIAK3FJDMIBbRW0LcEDYJh2jWg4AtBVadWeyqu7qsq6OOKWFEB+oJVwNllrQ2BAs8KKNZEEwUEAo 9G4RZAFDEKGLRmg/lgfhGRQ5GuPPAZt89CYkSRczRt5ptp7l8eCJWmOE+P8QZRIRjGZN6M2oSm1a VVkBOm4VzriluOKUfjEMJbBcGtVjMGgvPoggbCKpphRvMFrornnQ8hJkzCieIlIpryHUy8LIAmSO jYjAA+hFzrKJA+gFm1yqAvQsAMgDOiQldIbpYC1ANviVi3DBNNwkAExqQzzAMViwMbyAXiQdLDUA OugkpnLA5lbumUTACJsuBpMwoXIBB8ApjODpArAALUGnA6zBqTpEBS+ANsRw5NSAPSxEThLEDdCh R4aOqr5IprpIF7qISOJADhyxeTpErboIm3yA6R5OFIsJGqNFCbfuG8PxG8cnxj3dDDpexYoRGUXs CV3BijrNFZwOK1zcUon/LL+16781kcAFZmCqLKAJmm8sxMIMiE5h1zQeTcRZY8bInMXVXABYJgKw K0r1pRNVVWdO2B730oEezGaS62naEJBer1DNXnas6Hbc3l2KLML6WzMEJ2mgbKc9r9GxrIMJpwEX 6nEq8HgG7V5wQKSS8KdqYdKJoTxsADcozgbkYQurJ5jcANYKa4uVbuU0cUFQSdJ1Qys9wNo2wDZ3 bhPX0tsaBgTkwAKIgAooHQDMqgOIWOmiiQiIMQn7ZBijM+Smc5qA6gIbRi7BSJZeTpoMBFCC85gA 5TbHcUVb9LFi4os+nQfsqG+Q2gq4soA0aI30kNM8mgzc72xK6MhMKFQl/yRu+m9Bvlcwv51hPp6+ Uu/FOowvYNTGNpr2Gin3Ypw3Imw4phQ5dlBLFSSOQpTs7qhulOYu9pTEABXSzPIIYkc+oiswlhS9 LMS9gE0zOKkUOReHal9ALmwfGXND1DOO5KqLOHDeMoQGOMAGnKp0MmdSJh2Lma4kMkQ3bACfEiuM PADW8hIALPGYNAA/N4QEMPBgVWeqbslgVXMuPKpcz0g3L0RgPYAKSEMNkBLR2vWuKsQCrPGLDDZq F+tbY3Fjq4CLFLbmvDYAPMA/oxJiIfFeq7FEf3NqX/RvA7clxielEV8t9oe4ntwYPaMB0GWN/KAP CSERWkiCgXJmIGHJvs/rVIWQa0yRYCpj6kEyTmfgYnKXgngXxYCgZD7IeDGr9yrYeShsEz0RlLoX xOaoLY6aAGaXTqlmglj1q22eoxWYbKYrbSKRefnbQZnGL49QI2ffbyJ1X671QmRDDRQrjSA0QahA LoiSTuYkBIiAXCcdFJuYX5f4i8mSBlg2SaJJd0J0LJWuLI1zOlP2mQTt6ZRJ2Hbnbc9I1cpS1GZB sg1EPEPA2BKijHPzkL+zkgOACOBAK6lA6yxz1TpOQavANMBIOzvEAzx0GsM4b6OVCqz/Z3CTeZkz n6RV5tM59ez2qICM0UjTSDDUb+0RwC1fSP5eEHkwqQdl6M9193zQdCMt447GEPseWk+n0U/XL6QN Nze6N+hhWqaxVAumLGucr01vJk4dWjwGKcS12uzRuS3L0SDj+fFCVfL2kf/2GXeLg5RuHzEC3HoB Eo0wAGPXyFunakX2sDsP7kOjQ+DOta1/OUO8AAecSWy/CJ62VWAsQOkuNk0yRM4uxAno8NNSyS5p wBG3KmbHCBfg6QvUgK/WKpjkKhcsAAzDSFu/iLrjxKfmeulgcQlPw2wjMZhwe26bOHVK9AY4A21f eOtygQZIQAoogDwUqJkjPLPNsaPX/3G4vuW4auB+4QisveaA1xpN4OUR0YJeQHhwOulu/lqgJ869 4ncM+YKhUZ7DPaZ/AWyEpCgBCLWjaxwSXbdRq5cHja/L7KZn3rfjIXeIWpRqNiZztKYPifoQFmzB UjfoKaFwNqGeSRF3u4bIPxtYE7OCTzgaW2S60/jjarlhOMDlIHDoQIAxnDOa6CqVtIAEWLYKZANi Z1JCszh3EuKL63vfCLuG01vZn7PkWPMC3ADb5gI8f72cwPObWDM+bwAwcMHaO8QNRMOwH/PlGCID jAAHSKcEEEHYPq7YdhiVN/nn13tDdDheDYQsnRIOrPFEpy4cN4AK1MAGCKsK3ICMJf/87QvJGtxL qYBSgQoFV6BUqWx9j+AYeRX37EL1TaXcccD5jPzgnNf5/caZkuYck66XqhPSk1L93kQvoevrM04e NA6HuGSURoGgH29vi+qjo3tjnqPXUSM1w656c60GaoErgq5eyrEvT6laxACEHX4FCmAAACDYLHwE CCycRYDCwQkBKFakOOEgrWUIOCLY6K/DwQsDSJYcwO7cwQpkBFgRJ47MywoHada0eRNnTp07efb0 +XMkO5MkhQ410fMFBwY2X7RQcHOaiqcSbnBRwAECzRcPROBQIcIZAAY1HkSwucDBVxU4NABokFaE ihYLDsq9WRYABKUHF2zIukbFDaf/NSU8yHEQAjpuABQ44CqixYa2dq9mXSCCrk3KjuN+eMBCgby1 XVXYAwBY8FOaObbiEPFAggLWN1yrGHGQqmqaVLkAwHsw7VQOmGtywUqTK4BcLVjEleA37wYFuez+ tH4de3bt229yu1FCxYYNl21waMsdfXr169m3d/8efnyeufCk8XCuWS8UNrlUECAuAxJoysWEXLgY ZwUuclGulwsWJEEAAcYREAAuSBhHgJmsC6EidSjyMAD5RJTPg35M1MdEE585aBwDXHRRjSoMIOMn Chq6EZ+HgpHIIoswAqADfzraiKOQAEChpKJIukAlAWKKCSZxNBwxPRRQTPFKfQ4i/+FFA2R0UcY1 AKCBIH4GOrOA3mRYCJ8ZFrrxIA57rOggEDq6k6ODTChKSaEOiuElKCOMSUwq1SvxxBT7GYDFLsGM YoWDMCizADQNAsDGhmbAcUcAJpozgB9pERKBNJDoiJaDzhGK1ZKYBKACcSJ0MtApDb3VvXPKIWqo k5I8iid7sjpLHpy4OW+BYrmAICyaIJBmhBMyA0CDERY769kRsqBpAWilaTavaQ9adikFIDiMsRFU 00Ca87gt9iBzVet2BAhC6w2CzCAo1wFxldMgswVGgDYbDSDojd0RtKWJXXdrgmDgEdBdA+J2370p WQBykGdaDU6I91l0QdZNg/PMhf/AXnsZGxZgXF1+WSdwlJhLhRIUaKAFGxyAmeeeff4Z6Ftz0cOD BddJg9HVvLFihWRaojCXdXKpwAArlANgzwUBnTAmARXIkARxBLSwt53kBDXotA8aINFEPWDxSxdh cXGcGt9k6MaIPAU1AFYyQgCJNDj6KFUAzvCVV3ZeXUnWQGW1Ve2bUEj0ShMPSsZLR188iMxKPbdl oIPWZOjNN+PkO0QA7PRoyDyxHkrJP6OMMiYBIueJ7cr7QfFtAMaJu8sMJPIczYIOCubG5CHi0SIQ /QaSIyRIRQCkg5A0SahyzlCJdschvz3tw5X0tU+SgAUfffX6TZ/99t3P6aobnsL/QTrGbthgwff1 35//9wnMHwC96AVNuNCDKiQoBz2wAiUOkos1KLAK4lAQ1lYEAAFUQQEFtMI9AACopVjBG7CKFE/O Nqf+UQlRu1NhP3rXIgPEqEujqBEB3KS8Tn0KRCD6UZCohycjjaRXA0gJrGT1pFrpz0qKQhGKtmSA KLxIDXNzkZjINBBb2IF4oiMd6TaFj9OBKABgrNOdiOQ6E5RjfL6SHa3+0xIBFOp9KVyiiXqXgRcC zwDCAwAGsIimgWCgN5kqHUM6xYowzklU02MdAgp3hl31anFtLKJM4HjCW6HgkWns1fkseUK0dBKU oRSRAjaggoOIoARLAQAqwSVK/1e+EpbayUUuLqAHPNQkBzHowbj+Q8AM3CMDVZjgGlDABRgwjSbe EKYBe8AFKSlAbD3hEBjFGMv05ABRulvUQcggN0dx0CcUKF0Xl7c3UIkKT4RTVZJ8pb0mueQ/Ufoe +ianQt01MXNe8gUs1GAAzgmEeJ4THZsekrzT8W2MgWsdAvTEzqIMkAuAgtKTIrQ/bLYtRUnrZpf4 mUdJEc8WnrtUMAZZQ719CpEH6QCeOFI9AASFfCTZHqyMONEQWhM+tDzDOS6w053i4RxnAKpQK4lT 8CnAYUZVqlIZUMq61A8AN+CAbpZaVav2LxfNKIcemjEgAHKhP1WYEgmqEAMSzJ6kbAuCQQZiQBMS +AKs3pAVJRhg1rKZDXVXxU4zVjjHFnYpii6iUTi3mLxC8m2HQipjkUTSDMS5qkm0ElQFikpP3c0R n5ozACw4RykzeU5Nm8IR6Q6KNtUJSZFm1CRJZDe7/xBqf3K0519lFAUZyWiwk/JcHwsQi0Ay5CF3 O2nzKpJI1pWxcLoK4uJe4kZ56lU9a5ilA6c7S+lSF7rZ1f/uduODyqywEgAvAM9duVte8xrKBCjA Q4MO4gFgceE/VRBA2RggJQDAgLzj2iVNYFCBHuTAQrqsUH5zcgRWDGEIrJgAIVjxhdSd9yayTdHb 1hDMfubTAHU7yBZiYQgMeDgWW6CJjYK7xeEe8kN9+1v0BLcMfxTuAuPL3kxjVTuYtGSe4KvnHFN0 Gi69qKMu8kVn/ShQAMhgtDUkwBdTfEg94UmhDH0dO9XYwRvTrpf7GwCPJ3yaFTgRjxrGwJmKN9LR 5o15KYVeR5DwESOJj1cnYS5LrmxfCN8Zz3nWs3ogUAIOOIADJZCACAKd1D0fGtE7yUUv2EFMPeyn QiSIwQr/ogmADHgDrLHAwKZpQBMwYIAGIgNrTnIAhsNwgQYfDjUBe0CIEBzhCAWkwfP2nLt+wGOF SWuRFF9UBQ3nwBBYJEgB7GAIdNlonA05sZp5GL2OGEm5kGxSlNqYocrq+LIqbGJgvTnFMRE7oKE7 8t0GWVoTAiALg2OpntAYxNYKShxWeGNssZTrRmk2t549048ESTod8QiMxc1IajkC414JZYj+obY8 r51ohz8c4lZlzQZKUAIbbODisYn4xh3ejDRktRcFqskxJQioXfIRAx22Q6ePsGkwHEEGFAhFKGSA y2wEo+Y06DQYPKxzAGQjC1kIS6yzIHMZcOEIiE6holjI/01HdVSPnRv2sDuNkMK+adk9QudiqVc4 FLSKT4ujc01zfLsdr9ByAMAcHjf3bTSBTtxIbtMglwyAEvZojGTsSEMdepIKSdRxLLGd/i6qzaav 4XdAvrAex1wA0HnOeAih+0KynuLnrbRUd3IpTBHnTiJO9LVl5/joSV969uXiBBJwwOolMCzTv16v 6yjH+baKNRNUdgXCzIDwwGAHDMR6C8UGQIeTHowZ4JwCM9jWkSlwheMDYAsYyAEN7JD0HDgjG9mQ zUFyEIwiZKHmiS7RHJf4VxjBwhebFfOwAUqQSyGbnAw5cQ4volKWMvalBxci91wbE9GrLYnqjYkA gEueCP9G4oaKPEvY+EFN8KYhSixOqMki8m6xNkJPWsUkBqiDXqtxaKXhwEe2yu/eYChz8i3cIk+Q 4u+wzmngegi5VMWxpA1W2mii7Az2bhAHc/BlckABGICqdBAIXWloekFqUMA+Rm4c9svShEnAjoAG wIAmDMHYjkDEjmAGKOAI1iAbZiAUcmANZq4IrhAAjsDYgs/6poMWaKEDOgAEfu4pFEAIaOEcPjAO jcSBsqADduAcftCV2Abt6OggRgFMAIvxThAF8aZ0ZqHyKuJ5aKF11MlwEKcoPK/GGgdK/i9tzu6e CLDXNmuf+umfiuezDiILFCJ5TMfu8kp17qTN9m7KqCz/aQCve8SBf2wN7TSq215EzAYCix7P9w5C nK6unCZAAutvzcrIxd4scYhC7GYHSm4qCKNRGqcRfhTAGq3RKjLoGq+RGrvxfTCpF8qhF5oBgO5L vpqJrKCxJo4ADGLBDmIBl7LABWjiCkJBTILOBQhgR6IvB3IAA0xNNjQiDXdgGdpQdTQCCYzkJkAg D5dhBypklnaADXegDRUABEQmlJZujnStS+KmEHlrIA7xTUxRHw+CFQJO4IBEsU7l2UQiiAYgkmaR DDAxaAKQcvohsxwlTL6NeNBETdhki9zE3DokdeyE68xoVzRpjeANtvRHwnjnIJDBUWzLo/bIs0Tq eByw/03kL820rgU5wlQKTiQeaSgSrgNrZya9US3X8ga5QARuAC7jUi7jUgVUiS3vEmhyAQX2shz/ JJ6sIAOSziZaLtgMQTAPQkzWIAeyQQZmIPwOYguDIQeOAB7H8DBywAWWgRaEgAuEYAceMhc+UyMU 0ibyUCMeUkxMYBkcSCJVZwfKpgdiswfskvDG7w/ryEsMMLAYr8j+6Hhy5BSHEbFWDE9ebJ1iSs64 JybuwQrojCaBpp76Ku1+rAourEs66wT5YaC4yKBSkf7oBACEAMoER8r2BHb8zspqsHYIDH0Kj+ma DgDIIG488qOKTCRJkvK60vKIE3BaEgDOIc5mTDmpzdYlnhMvDxRBoYsBAoMFboAFasBBa6BBG/QG VAAjExRDfyaiYiAZSAAGcGL6Um3lbkIIZI4Ls6Em8jEJAMDUcEk5LpImHLI3hIBGEzInaDQXkEAW TsM1TSAzN5MiI+3SVoBISYA904ev6g0QfWcQu8QEPysk32+L7uaGiPKQEqsjwhIBjOTrgijhaLC5 0vIbuUzbOLHbuI3IHA8kGzA4G2IoJ3AVS4UlXfGMkJO1rGzhPJDebnKbmPSFgmxG6jOgDhERSWfZ Ag5Lua6RyNIkYhJMrS1DI1VS//WqZErmWDTgWDK1Uo90Ujs1aHKg2ETG1HIA/JLgCh7z557vQrfv NNZACEAgDQqngRwyJ8QkB9IANA/iMz9TCPJQazDEjSKEQpwSo1AEFzmKbuqzyMzsRshpESmiEdWt IzbvPCmxzi4RiQTwRE6jAqrAAJvUn8YEoIpsO5UMFe8OTlfn/viuVyBKFlkCnmoRo5Y0A7htENeP zLBS8oJTEfUzJR2Rpah1GSmxpo7IUw8WYRNWYQ+Uj6BQY45AZJwhEq5AZITg+W5CAWTgMDyTIHeg knI0JIAOJ1wACUBTTHIBBEzABEBgB4TgIOrBG9goJjLgA2/H1nDtSv7KXl2kEP8/R9ikdPIKCSWN EfP0blEfa0lUogYHxUB9xibbBp/YzgASsCdB68iUBwJTEcVQrE6mZyOIhN34BHGWUlYGRRxqNnJC cHdwE1wD1Sor5Yr0NQWp1CS3NiV5iEiIBMZWi7mci1aadmEDV3B5Rh7SQgUeIBoMbXAXtz2ir+oA INis70IBIAlmQGSsUG9sIgdCYflWlhb08CCEQLoYKTyDgQ9vFTRvjybWQA/vigEqIBzGjhb39Dad ju2EhwtioTcJle6eNVT+Jm/9E0CxZwCsldpawgbbRxMTBZ8+UW5A0e1OUItG61xVEQS+dt1esVdk Rz1lhX+yiemSxo5cxLYMcBf/IS9Ks/Ju0MyciKsRj9KlkERsk/PzImR21JFx81d/heYDOMAGlMDi /EwC9peA0eMIim0LKPMXqfDnKGD5ACAULLdQsqEk+xGXZABFaYJjF2RbxDMkNncebWINSlY5LkDk AOBz67ADhCCBMsBx5o1YtZUjoUhG1GAFxGRS7BOQrG4rgbMk25f+dmhI5nRvkRYmmwQty5ayxlSJ esxMFU9usPOz4pYBxy3+2CQCESpOpdUCsabdxJYd3q25oqQv2ccP7WlJWwR4cOujTpDfplS0qpQF UZhUNiINhIQWDuNwzvNLu8dJANe8MsgqwIqQBdkqChiR+Ue8OEACXgACXuA5/zbgNhKZknti+qQQ 5aCQw/qRC7MgY4/PVjHz+SA2B2Qg/PhwpeZxW3LBOHOAAvhQAXYgDSoEDzxgHQAgM0Hgc7Pgc3Mh B1aCA+WVTHtno7oNFhjIU6rWNzFl8oQTVKI1YH/oPBXnndQTkGFmebd1DbgEUDNnyMQVSillepOt 7u6umoySxej0JWPRGanNojyAy4zV6cCsS+omd0/wF/cVP53ZboWYFalHmqmMEp1rdq5Zu8BqBbwh oRdaoRs6oSuANitZooGGC+7nXFZDGkpABNB2ohE5B7ZA52hAMGFNdGYuFK6AAjJYYyJTYxhDDEOX DWmCIG01PDXz5x64JnIUNP/xwEGAhBZY9zVNAAkWJFYs8XubGCoBQCo3y1Fodo9A0nN8C1OEsZxO co7xtnUaKc5K4ktpUN6Sl32eFrPMVGqxs1L86CeBq9y0dmjzjs3otN1iSgMBhVbO8qiVFD5dqArS 70VkyCrzdZn7LXn0xqrVbFQ8Yk5J9z8xELJmkI0YbuPCRpJqsAMFQAl14gW6QgQU1yYUQAQgoynK WCckwF+wQwFaQBpWVeOyg7TT47RTWwMcgA9p4rUnFyk42zpCmylaQLS5ZYDTI7atsQUmWQdJ6QZw IjxKu6OXeyfAz5RVGjGDriak+yAys2VfdRlI07oVU2POYYhidKdvLzRdVhb/HlI1XZZxoERe/xA+ ycA6g6eNrSh9Ja/ETMpfjRFgizOg2Wmgryz0shWNe2ybn+46v00gQgpNRKeG6O5NwdNOWhFP+E4p 0zPwXuKus2RJBdEAnFdGwGkCduvxIg95hPFZ1eHy7k9gA1TsOLB2DFq70rudWVwAhjUnNOAGjmEE wOEBcBs3buAFpMX1ekIDaoDHe4ILqoMwVIBTdWLIi9zI7UIvIro4kNw6FuAGglw7eANbeMIBRIDP 9oLKcZCUTOkmwmO2mRvN22MNWPYzY3Uet2CXhMBGqxsJ8nhAZPk08OAockF0XVM0K0SuOJCj00Zt +9SOariGYQFfw+2NC5WQndIsiO3PjolYVRg7aWkqTBtnid1HrMu0AIEnsKi2Utb0atvUi+wOJUHE rReK3WCRnYNV3pzEttHnjCtHH2YYins2JOVWU7gz68DIuBbqaHvFLGcHsiOuqJ1rab+6rXSiMR6g NxhAMHjiNbQDArTBNLhDAW7gt2viLQfdJq4927UdNvJiqpyd27NDA7QBy7OjBaTCtFVgZ9JDGqZq 27v/XQcdoASSqi+8PM3/XT5eFQTkEQB6YAImgAtclZNAwGVrAgTmkT7cKzH1BAWE4FdfK8veB5vI FD7taJ/+lGclBbDdT32D03ehObHjt1pp7MbgCSZcHFeyeXe4VUacN5+ILCQTfNyCsnq1WDwXyoyQ llW2RPCK3sJrE+1y9iAOXXP0KBZ6cr6D0eTv+3fXbJEA2iXBrnhpjM6ujAzw1+HSe1a8HuObXSe+ gia6PCfA6hg4YAM2GwJawCpaILMxYzk0WwNyQBrCQwWk4SYgwDVE4AWcJfAHvy5awCZawO2JozFc YzAu47cbA7X53u8fhu4Dny6Ww/ABQAIGA8r34uwR/x8ALuOz2WI3Ct8twiPdz0KzB2P0W181tNzy edABIMABXGOAG2MD/oyqYhsCSv88NEAE5mWzAWAEwFz0gRACbqAGJEADFIAbqGIDftxgNKC3AR77 tyMHQuDAbOG/rsMEHAsPzmAvT/hP5KoGwR1okhSN9cH8NOdJEZzYpJQhlKyqh7bqm01a3ywphwIg LgAAUEGcgINkxJGxUmGgw4cQI0qcSLEiRBT6+mnUmLHfQBJRDIisIrLkGgA0ChTgt5IlSy4AZBDA N2MmAZsDQwTYqW6nz4EgECBYJhRBGiQIBpooN2AAu6ZQB8YwaEWAQYXiLGrdytWiB44bNXoYOE5k FP+SJckMxLCyrUsMAyncxEdgFl0CFAZO4Olz54SBtPwNFZpGMK2B55pBXSyQoMGEVAU07Eq5suXL lgtGhoz1qoAYFblEqKEAgAYOEijmkvfgxgsFLVTkUsBBhQRpzlqIeDFiGw4GCxxsONYNooQbKV6k UAEBwPEWI47daK7gQWqHCuSpcK1AgQjmL0Q46N6CwwLnGyDYEx7h/MMWGxxAeMFiGwAuN64D+A5A QX4AEGxQ2kTVpbaACi1IE54K50mgAm/SdcPAMei0oAFEGiCooAgtmKaCAy+8gOBALTwQUYlc0Gbb C+VxA8ALNzAHEQTa5BOiCjiUBgEHA2qQHoA84qf/H2ZEFmnkkdiJsIENG3DQ2pIlcCAlCzcMiOSV WGap5ZZcdunll2AiyQUyrHzR0xBfsMIKV7ngAdUzHsSJx0AKVLDCOFV1FiaSX3UU1gAArDEOLCUZ gNY4a7VlR1sFwAUABXTdhc8seOnVV19/AUBLUZz6cxgAFyzmlFONFZQQGVZZNdmemKEAVkcZfWSo WVWEJNJAKbnkVgEDyWTTXDfldGlfQHGKABKCJQWACaMu9tRHqFp1qkGsGvnVRhllBCgAZMxaEkmI AsAWS7Yw6mgwdgF7U14A7DVsAJl2YCxS/nQwUKjODlDOGQNVANmpqlYrMJL+KnSQOAZjdSoJJ1Ek /4SD30Vg5UT53ADTcSly4EAO/XHQYX+vAXACOi4+5N/HOUizwAIel8aFCFUCMCJEMHO8Y3NAjtCf CtGc9nGAFxr3I3oLrDEzAA7E/EAEQDpDERcPHPNiDe6d8KMKItA5AgMAdGMMzu89kM1AGkCQS9Lu vbDBhRGoMLFzD2QsQmkL1ADOQA9kPeMGLww0wtpAcg3AAto056PTD3w88OJcKvDBNA6IF7kDlFfu wAcwMa755px37vnnX4YwxKU9BcCVCU+J2pRUBiGEsABqgV7RABvBk20/YwGQgUhqEJpWorq+FRew kRIQjKV8BdBTvIIRRZRQ9gJwzlOpQ3VOv1YhnP/QQavKfhGsYHkEAAmFfivSSSm1VIAti/IDkwyT 2kQpXTmVnrzpAAT1vLFKMTVq9ayDnWeq4j2K0O52G8ldWUrSu5CsAHjqY0ksYCKXX9EEH+xiBen8 Ahih7E8otODYGZhSvaaU6jGvg133Cti5gkirM5B5IWgqIoHdvMBBYJvId04Sm1w4YwM6G8h2mPYQ CBijOEUEXBKDBqC15eI/EHGAbPajgod8aCAv4ECMBkQj94SNY01sQIEcwh//pGZHbzPZA9AwuBMA 6DvGkAfSOLCNXDyEG+jIYX9uoDg61UBxJwNABB4ARof0UAFDA8ANspaDB0wjIgFyGgCygA43opH/ bD9CoxlZyMmJMOCTzmCAEBYwygUwIBumXEAhO8nKVrrylbB0iE7sR6ytMKspqUudVKT1woTA8lp+ EstAuuWtkmTgPrHYFUsaNRB00aUmN6lUu94VgDVpyliDiR6+oPKUffULYApbIQtdBT6OyKpQaLkV SuzAD121pVcW/JWwqDkQIXDqg0ppFje3NZV/GUwAvwzL7baFDFiooZgGOKa4gteWc9lkBneRprto Wc2ByKsoz6vXvURFvesRBFXaE4AVxCHOWIapYCBNmMIQNkNPemwgaxDBA9L4EAfM1DkW4wIHwKYB JYlABCkYCATQwcSByGMDgnNIgJLagDzKrI8D/4EZF4zGARFM46cceOTO+KZUJT7kOHYUGVGf6pCk lWZES62ICpjGgKvewAESKNzg4PPTFnCsAYmkE1dNxoG+OSRvcHsbxnQKNqwJUW9JHBA3MskBwS2g BM3ZEdeOZlJOKiBFlc2sZjfL2TDphJ627IXqnMI6f16lYa28Vj8QuK0FMpBQCmWLMpn5KOLZ5HgA 0CBF4WXRwRylKJ8aoT5N2K/IvI6kqOUkRsKyWo2c03e8IxT6VBLBlbxPXcWbp/IuVSyjIGUwyloK LkUVQAGiMLmd7BNz9ZG73aFTJLGTbTvZp5JMVVBS60LesDIVGO96EAGfmt5wB4CC4mLlICrsLP+Y NHPgBsuwIj5qgEPU5kWJ8AcAPXTGTh+ygA1tOEAVBsAIiBBiEDvkNBrIhXUiskP/qEBBI4hx0OzB gRIoDgIlCDGGqyjUIwqJjFUc444yJ5FNRoAFvFGAj3AmhBDBp29LhggD+goR2gSVTiOKwA1OREiW 4UwBV6yOAyDJo4E0QK6XNE0mBfRjBXdOAQ66QYxUcGU32/nOeLbzZ31iv9ONl3qrA0AMsrc9g8GS ds0NS+66VauRiCRc4yqAHWyxTIdG9C7sctd+OyiU7yJAo6DiqL749dFeKqSk3nNVc8E3kGQwsAq9 Kwmu2sfQgWThoc8MFgD2PKzuYjO8A37W+FD/NdIXZuWViF61MLk1Els9GpnqUwlLzoXf+GV6WMvr 7bGMFT0UiNqbpV4pSfOsJZRq79zTEkdLJbKARGqAxBWxaWkkEDdE6nEgBxqzBrRRVDXr0UdyxKJ5 yBpFt1GxkC1oTi5kKgEqN7HfgRXqWB8w5vsA46ZoHThFRiQeh4wAslX+Tg66sQFpROStEMFPxQdH ZXoL9gG54EIiASszxCq1sQOxx5rdowGQ7whxUCV3mJyhJCbdYEkbaEFYhc70pjudc5/d7en8p7rS vu5fq0xvom+XO2Q4ulDx3VVDhzeTdEH02snLNgA6kCyMAhgxuWRMcQUoLYa4crnY2sg5DQAL2V+U b7oroa9L3odfm+CjfhvEHwja/jyi9O/PURF066YFu4AmeiOtNd/vxCVt9dnBUfeNJl1wy4rd8lZT bedUcEkoqhMqpNgJqQB6n14ZzdA9hnmCHQkqUp25De6KFblwbNYw5S/LZyDZqEFQcRxiMPsewxLI hQpUMDYGoHyTNDMRgJTvNxZcaAQ79U7MmH8iHodRZjcFv4l+nOYi/2f6HFvADUrwghy0wK9gjoZp StBvLpTHPRAwHuURcGizY+UHAMWHZY/kfJC0AZnTACDXc32jADjgc0ECRbT/5yUSoASuAQFl8wIP QH8ZOIIkWIJHwmvcZUvj1SzsMBA9kCf/YhWHJlCYN0zoZCvHxAUYwFDTNjyXll/T9C7WtCkfBD0D 4W0l5BQe5S+EdhWoJjuqhkCr9REHVT6yhhKMsivwFE/0s2vUhD/2BF6ckk9JOAC9sEsqBRmvlAMe 4CdcZ4OFYlAJBUHuBHoRBVFAqGnbtRPWdFFuB2rbxIJLCFIIZhBPaIISsQamcm4Kw0vqZhEaMDlY I2EA0gJpNA03hTG0ATYiIh5YIwSDEyNDYhqR81M4cCE9hQPfEQ32gDdE9BDSUFUXAiNW9SAA0ACL hG8sMDfyZxvGcVMPZxqL/0Q5MKMAjcQ0klWJaRQ1InMDqsgh8QEgWBM5KtCKRpM4E6MAbfNTdNYf WvZTIoAzxyFYVbKJDmFYzqExFfZzA0Fy1NECiyQCErBmCiB9QYeIRaIALMABJdNVKpB1+BiQAikw JnAOF4ACB7l0noVtO3E6ZShsg0Z3MBhQCJQRChRdvoAWYVdd/DBBABAMtpWH1MQ8//U8n7JNgDYA rrc9AnSIn4N3ryI+JABdsxJruKIS7BQ8hFcTNBFNBDBPUpc/nPJbQvF4LBho/cSIsAOQLARMzHWR NEkSsRV4uwJ6dVE8M4F2pMNfzWMsAZaET7GSK+UNszeQEFEwIpUqnvEvu/9nEQsQIi/gRQ1wb6YR cAvQHFwwAlaSA/MRIl40HxDXALwxAkz0ljE2NkKlYwoQY6DIl4OJb3GpVDgDmBAxlw7xlmHVl9yw AAEHAefBAEEUiUQ2EFwAAUh0AoMpBB5oVHDJRBrwAhCnADBmclrDG26Eb/fWDc2RAyMgSQASNE2m lw/BABCQOYspSQoQInoJAaWhAMUJIDpmlpWBSNoHESqAVNKZndqpJRfADnrwnWnQC81gAhARA+YZ Az2QJbP0Ln4GeYFGAjGYMGuoWk85ELtDk8/GBbGgK5SmElYZUemilXt4epuCTaB2BgMGbkxoMMXm kp4ThZcnk99iK2hxkzz/yCsxwYUzoV3342ueVpTLMmDvGZ9qiGw0qC0DsQLRVYVzyHmS1k5j95HY JZIDykFrd09DAYjuqaANpj0OOpCmcjDTEp/rtp2ssgAfoJBGuqSYgUjmZ0UbUJZMOqVUih16sBF6 MA/LJmh4MlIj5Q1cwJSWwWu0dDqipTotKHnmhXWv1AzK1hGZVyix9kAuyhLtUwD2RQB4KCmkZ3rx 8l9GYRgbtYJhaWAxlGCtBJPKtncIZQCA5xL8UC780CuFly4cmoKLZyzPY5QpmaZTATvFJkCWF0y4 Qxbl4ztht0y68p9zQSnGo1+XwpViCEIDIVyqUyqmFntVioDj0Ktk0KsZ/yAAvtqr40AGo7mrXKIc yLqsWtECIvgQPuIAx8qs1GqWJqBsiUaa4mCFBvCjW4GCtaQVt3SU/ERoqSKDr0SffjIWa7ACLOot 4TIBs0VbkBJPEsWQQzgvyBI95zBa5TCITairiRqTejc+fFeFZ2ErswapnQdPdJEudyEspqcUJTmG IVqG5XqueuJKbLh1zbVoaJFOBoAoOsiwlUZ2eGgTAmo/fVgUSJAGRaFN+UIq33Ru2eOtAtkDDNAD PFsPMYANO8uz2MCz1bolI+ebRVuteXkDWfUC8+EANWBjEjC10Ze0VluCMOmGjCoShFIFVwKuP2FL VEdekhdD0zKDGQEPYP/xDPbpOzQZX3e6qmQ3Ezx5r+9Cksvwoav3P7hUYI5xYKkie4kaTLdzTiI7 K4+qTO9Tt6L3k16YeECReuDFqStodWsqDlLqPW7KEWqrEa31rrxDp/K1Pu2DATABkj/4qrk1koDR dp72lQO2hK2zUoJ7tbZ7u7h7JGC2JEqwAftYAjbQuxswvCyAtLl7vAoGoeGzdzTpC19bOtDbkCoI aIAGLTabJ6MaPhcpEr4ghy0aaTDagx8ZP79itzXKX7+mo6qjoCAFMHY3sFI4hWtAPuWTTrjCn7ri sHORstpFUR4Ks0VBhqNlvTBELekaoRZJFm5bhbBACdDGUPSKX3h4bbu09acG2m3fRmpBmicK4Q3I +8EgHMJ0kgItIAERIAElXMIRsMIrLAHTKsIw3El4J4Wtxq3ngyRgK73ieqZVp6bb88OWFz6lqjsG oAaw5mgbGamMEgtkJyk1IaCYYlGSa4SgEnej4npqKbCspGoEe05nYYXTdad3SqkzeniPy55C+Tzf 5XjL4j/Uy08otKYz6LFD7F5fZwArcBLjwlBWaXjRtLI+Iav7QxR7m4S4emCQUbsxvMiM/7yrMHFZ MPHIJ1EaMdfIllxA5LReEhqHVegQYEADGBDKGBALNHAEXJHD+COuMyts8MmIIDXHbtgPgLIGBcW1 hQJpiiK34zujUFw6+eo8g7EMO3CECSq7Q2qId4etBetqCCWHFjpb8JSyEYV4aByGvybAPZyUVmEF r8yxbZh3nhsodlw+8TqvfUy+dAHFgaxtgKq+hFoq7ctLOHvJ9FzP9nzP+MzFNGywX/x1DYMBi0Jd BWAINPAQWSADCI3QVhJ1fKbDFiFeZVheKKQQYuo96nV5uUMJNpzEnccP58y4GeSn7OyViOHGzaLB xtaSmfuSsZwtVPha33KTs+U+MeHEdP9rxnsWvYqnqQHcxoSKlFe3lhUtO04JFlBZxG6LDHoct29x uvF0drDKF4JM0tKDsX5re4yoyPi81VyNZ8lJtVSrGzTV1WStJctFqvrQL1XQvaA7EDkg0AJtCA4h A6EwA3Y9A5FAAVlwqeH60NUTd1a3PdhropeXwMwWh8+2UG5xsrVVqepsowX6sv8VPQhahvAcUuLA zfPMOPrMXB8BXSIbBfe72O+UofbquKjsa0WIzc5ivYVWoq6UbNo7EKOgeSIxlW3Rn/Q6o+ZLSy2L o+prxRp8zKdW1sZ93LGkAQ/AAcPb3BsQJWON3NJtGZ1duOMTBX43K198ElsgbeEraXT/Ak3RZAb4 gFupHVqjBcdpeXtBfHlsCwALhJ+jkCjV1ShOPaO4NVGxKsUuC1yDepQnBKqFuNmLc9YxubXmc5Nx K6lknC6Gx9dhu3j7Q5SUC0Bq6mCx40rqFUzv7VrRZQCpuhJ36pGoy7gYNBCld7et61/+DQC2qk8B jsjjNt00XuOc8wE2wEdNohslwDcvbONAThGZHKGGawD9bADP7E4YmgXFUzwzAJQdOhAucA600AFW TgsgEFa3FHesHC09Op/h0xG5U9vodFD38MC5Lb71+rCYFtU8ka+/xq/pPdwpZDAEPjBZGxay0mgH e4W5oiil7SuFh9oD2mdC6bJtx9rj/2V14tbeb3jYtZJOkOZOjB168vPYp3dRa/xpMjtgGnxgHOzB QT7qpL4ltLEB3PBEPLIALcBvpf7qEqGo1k2/3BrGpF0A12VB0ETNvQYYyOIPwI4AOwACRpnNEy1A Gd5KblpOQ7xARhwSUknfSixptAWSeopfpNcX9oO3blfIMD536SYZK/2gQuzS111M9ouFM014wLKn EC69+nPNPj1gAWS2BjHun3NAzIU7HOPhhSK63u0WeXoX86O6erjtK45NAUZ11XPILBl7+A7rEj/x 2LEBPOas50EbIvDjFF/jEKq1Bvt1vpPkWpihz4Rf744/azDFwp5P+zQqUuFPhTbUoPVT1M21LcR0 uAo1AcFT6bxNwZt2TW5HxYHITYN4FeF0d+DjJwheKCSfvxkqzdGU8vU09Ju6LCWUSzEfUiLlSwf8 ps1+xFx7ULFFLnUYF9VGo6Tz23/YbSmJS7gKgz7a8XRf98O5AcAwEBsYNCpQZnYf5LJesLRePmog 0z2PofDD25dq6NYMqMvQP1n/nsdeFQBF2EK8veUTBaI+uqtKQU994kEY9Gw3q29XxT8d4IWmKhG/ OcqbrSGP1B/+qAzF7lcJLNSs075GGN/1eBE9Po8Rqvf+9fv+3vf5XhytyxRQ8MCS3/cD2V2pev+t T0uIYD88439//f+wzgUswAJ2pAE24FciUAJJhf3TnclLHyjk02hHTBIWaqeSivhSjxNn3OtBAag9 Pa7DFfNZLC0U6bEA4QEAgFEGDMJSY6CKgXEDMRTgB1FiAQwDKRAggA+jRgIUBk4IEFJkSFYDaSFA iXIZAn8dBqIYwG7AzJnlzgysQEacOJ09KwwEGlToUKJFjR4VikJfP6ZLmw4kYVCh1IUGBtKImNWW xIEyNm6chXFgiJFlB4JIudJfyoEmaMacKXNgDDICxAnAy1McUr59/SId0LTf0qUC12QwqAaWVIYO I9opYOtxRQDBOOKbwdEjAJBlQ04Y2CGlSpQuAZyBG3eATZw9d+r/FPfz72zatW3fxp1b927evX3/ Bh5c+HDivnN8UCKCGwNtKoRw28BhTXHq1a1fx55de18UTAV7h2qwKuPpNApIzAqRCwCvBGZpzCwW AFl1ngOcXZuWLQATMmWqHgCqu1wTQKftbPPAu+8CBGAcxsYjwyHI0ouIsmAyCoujjj4Kqb4APAQN ANFWGg0BWgY6pxwAZ7oAp7ussEsAGGU70K/unBoMPACiYkwxqcorYMIgJVpPhsu+wmcs+0I6CwES S2yrnP/eYpCEAfXSSYDpavwrQQWdEqhBxhiLEICHJpKIsosywmijYAZixcMOPzNprSedPBGAC6ik qUUAKrhrQBgF/6hgSy4PRTRRRRdltFFHtVvghhJwUCAfJW64wQYH1nu0U08/BXU4pXIUTB+oongQ VasAMI9CrtjT6MiMlCzLwyZXIpHEtviMa6B69HrNrr1CBSCwHHEMEzGExmzITInskOw8Nb/CcEPO lgzxJASQSGPbZVoaCLUp/TvHxbrsqiu2ULv7jjAA1ohqMQPkleoq9O7tKqMZ2ORISTnlbBIlJHBF aVcA/fNVxhhfGzZUYwnzjkEyxBMvoQwcQo+fiCga6EIC4tOMQ/tKEjElblHyJ89zaPJvtZv+7Glh Mmgktmabb8Y5Z52306CFFnJZQIQSNhBhgZ2PRjrp7NglVceoqv9QdSoDgMyKwiLZxFojWj80CwC0 StzPBClT+2+uuwrcCcYyQ/XSOzAHclDqKBYq88yNNaZovQuP1OhNAFjBNrT8kBgtzz15RQEndPUq kOZOR8XR6THHBPLerK7Gel+t51vyPq/BDntsPufCC23YtCQ2wcgLg7vHxapo9qH00rQIa32t7Yxr kbLNb9uUTLugmSn7dJHhAq1wXGnll2e+eee1y4WBgbIZQRqjn8c+e+1vLHWw8Chm7Kr0oo0o39vx CYuArT0bSAjStu0WAYN5NRu2c+2qOTCIc5R4zKpir9pEpsWmfWFkM535VwBIpi2wmWZlqpEJa2AW KGAlz1FMO5b/9+BlgLkl5CAJuYodIiKZ9HQlPvySD1mW1Bb46Ud+/KFSy+rHOJ4IgFg5aFvTwrQC D9LLABfjAgYotDE1yUojBwxcye7EkjyhhmVx8ROg0pUldWnPilfEYhaRpoDr/WUBCtBiGMXIqFE1 bSnfM8jcfsSqIbmqSJjJ2qzmI6eufQ10UfpPHhkUgxctzkCp+5J3whQ3NUqlbudxVSz0Fse+icwz IepA70jTRBUNbwBRvNLiCgUqyAUyPFXwhQ8XUrm7XQ5W1GKTv+bEtYFkoURpINwL+7OimZgtUK4R h6E+pTpSLYVBGfChITE2QiFhYJHVCtm1ahUA3o2GRMCj5QDK//WnxV3JgmPEZja1uU3dKEAEH+ji URbQAhWAkZvnRGdvuPedfkBlWQsJJQjZiEh8scd2GlrfKgN2sifNb0VQmWJe8BcqHLaLKWEqiELi aZCLmWmI0hpIKD4mKyTaJ1tOeh8CoPnEmETRfoy7Jhnd1jQ0GsBH9WJjAKNlPjhiZnMqtE/ABDYa fz4RoDS0Ql1q9oxAHvRdcaOKQRrChVhYDqIAuIiscLfK3YXGhUxEUQxdZq5g3SWk6cRqVrVqRS5I gAMqaIEGOCUUBWjAAQ/ggAS2ula2EoVpTnHXjnwxLw/Oa1Wt0sqEMBcrzamPc0xl0udQFsuVtKVl NgUAH/Pimn21gaoZTWsKg4Aa1IaeyRZC4keIPHY+a8UJsJAEnYkGcgFLzmSagDreLa+qqE6WqqSg NOli7HWvIb0RlXKEKfsEe0f+jO2we7zl2XaiS089dnX9+GVi5DW3ytIzPYqsTJvgc0Q4JZEWknzm aIXHpyjGiAxW0Is3iNtW8pbXvP+fygEERLCBGuBABC2QgARe0IJpqKAGRBuBOc+7X26uM3KvDR+r MEvPfKFPuinsnEzB5s/hzfCjDQNV2/aXLLoyCwBBdFWQpqXUio6kPgsUWLfUYhqYkG2qExSuTlab qDKy0511LeRdRWjUrhgYhX6FKR09Z8cl1lQ19UNXkGsmYVKFaWJSk0qzJhBAIlokVtQ6IB09RDLR tBBlTXxiBF8mxRjFaMX8BXOYxQycBbxABBywgTY2sOYSKIEDDnhBNsasPS6EABk9GAgXJjABVvCZ z8gYSg8I0ecJkCDPIehzCLRYRrh6b0eTW6N5jMoP2z45lXNcodf8cSdd9VaqwBX/1unIkANi6a8f 8FDQIMGnxkMadYCXeY/fclcWSObHH7EU7WneMiVMmm4nhBpvo9i1vzM+2q6TIyVESmjPWGUItzq2 1eeeRDDDRtOWD27sp0yN6qaoWipqqMohtSKREF2krxiStXV7h+uNcrc1DPPJnOU9b3rrRggQkEAE PvBe+EJAv/VWWg64QIgJfGEINABKCAixcEIgYwisGCsAcsCKLyCDEF+wxRZy0ANWLNwWPRB4CCLu vHWSFADJOGmF7zrpApiwTRNF8DI9ZwJn0pQ/LRuXgxkG4V0G0pcDOXJQG0NUo3IMqWx6T5s6TGuT gA5ceqKlBCugsGAhb12QBc8G//2H0lYFiXwtB0AWNGS7fI6kfU8tGAz5JJcdpQsvOR0o2xREql9W oYdSaWhRJ9LkoyM9mbMeCWjBlrLRHqyjxaOiXb4McMY3Xt454OK/Ha+0LXyBz0PYAlByQGpSh2AI ig6K50Owec8DOgRfEPjnAWBxK751pCUFH5AmZLVTWvqlItExfjCKEljKUkX0S2wf0VagIbPTp2KK LZmGOULaHf2EHPGbZ3VHJxHZST8q+31qLqm44Z9tk59idAZLKi8fzXZjQrqa7TNTdpEoGAG99z3O aWK24Yea1HLP4PEdFEw1rGCYyoYIO9gwasGHdPusOtm97AKAc2gGXjkttMGS2P8ItsmjwAq0wAv0 lDo7ghBQB0MjioI7AqEAA5EDii8oCRoYAi44gi8IgR74gszbnv0hFTRaFq6jJ2h5lfawsX75q5ja LYHJj/nRo14AslDbiRsaAByBGCMDH7xzjIw5KgowoqUamaZzoacjLe2LidOaIixZPC7xLwUJjxoc E3txlfKxJwLCp7/yEICRNiAMG15huxiQEXiLO1Axte9gwsmBBUp4wq8zOnOjKEfyMCpDO2iSP6mj IvvxBgx0xEeExEjcDrKAQaFwQUJAiiMYAkA7AlbwRFboRExsvZGCKwDjoCowQ6OyLX7RnLHQsfZ7 wwXrrdICNVwqkPuLMOPrh2f/GAhk8CEfaS5Xq52s2Zel051a272UUJkGXBFMAhaF+cIacb1jORVf qIqUoxoAxJs3OrdYYb/AsiNZnCUt3CO8OJ0BKT520gfJSoyFUAxfCEZ+EJJAjCOMiL7payoAuK6a y7UzyL63cEZRqyJJJMiCNMiD/AsO9MCgyAFCGIIQPIqL88AeCIEWPD2IjEGsa6cdIUOpSUVXyReQ +Qr2q4+zQ7uakqHgO0fYSMfuobAHEaoLEyKvEyAngzk2McZ8ZKAWejoneiKpo6FzicYDKTkcgb3x kLEzBDsdRCVXzDQeex8fgwuAWixgyR8zOr6EkpeqaK67ab414Yj4MEYQcSorrGOJdlMNRfSjnRhK hHTLt4RLeqPEodDEEDEKEjBBumRBLHI9iPmeYJqalNJG9TgljDghHAMscMyoThtHS7o2xvkjh9FI XkS+lDOAVkuk9QBLKBMZHUNGsDEc0QFIxYnAxlmXRqPGR1uIuUGVqkg2vImIVWwp3MK92rwV3hIb +aul4AvKu5jARiEyQSK1yVI+Z4HNr3SPG8tJ6ttHliAslfktFkG8X5uR34zL68T/zuzcL89byITD vKPYAlawBTAYCmQARYK7s+xpLTE0NqpQlRAanxy8MW/sQaaSqZOJw9JiB6oEFpYEpAxiHQA4MlhY qB/6v9kpogMLi5z8sKYjGJRxIMOTOqqroKtDTaZ4Fx5BMhtMD2hBQ69IumpBzExznxDbPamcw/6U kchELy9Rwn54SfFQFQCSiGgxOsu4JyrUMUMEHbTMIy4MNXNsS+0k0iLtDQ0IJyNtFEJQh0rMs7w0 Chf8AjwTisrrAT5DNELAxebpyxxBo3ecitcUkhrrqzXMrToaDcLyPQiav+BTmOHLNk/JoSJrna0T txqtEIvIkDK9R4sqSxcyHFrs/67uUzHrZDF1dDQNpYryY6MBI0wjIUDafMo0tbnGpBL6gxHhQh38 y7/kSjm6wRj0mBBj6juXwohZMMDaZCYEzBWUoCSpCshfUzElpdVaFQ4FUIFoGDlbPRTuFAoSUL2i 6MQXHIqJQ4Yc+AJMPL1dVZ71dIoMPYjJ+ch6YspTvb1X3LFkrFQ5BK5zEYecOsJSyz+mCJA1GAek TLInfAy+2xtUirID1MeneroSOxggraFMHdKlwUoM3aCOtEHLQcMsiNSYa0NYRIslSju3WLsq8dYu vEqsY0J0bQzjRJMbtR2cJMTA+9MnwUI2PbGcWMuB5NWRJdnZUIANUIGSTRQOdP/Sv/kCjAQAQSNP PWPBI1BBLrg/jjsCZFVW1MOeafTSPxmTkyIlNypM2yu7aAvHZMQjcqS/7rvF/3TJgUCMkwLGUHWV V+NMZXokwXEmwnnVcdm+PzEetPk+Twm/GdyRKLDGaI00lpPNMnVKH1xaaptFuJgS+suSQcklqd0f ypysk7pTjcEbrb2MPu1afZSk3oNOXolV1VLZyJVcouACFeCAJJ3c61DIoACDTRQKFFS0HhgCdfhE T6TSI/BARPNELf3ZXprBfvWg8YDPyKCQVnK2c9ua3POaVt1WqdrPtutNnvMUY4GsPWxCICqqDLOQ IxHLjOUaEDPLjuUTtayqmbH/UHWEvTJklfGBTTJVqm/M1oxKWG69qRoynfyRQf2DmiaMnfPw0PMI xCc7ISQq2A8xRBJBgrWY112LC3uNwEbM3ABWWQWQAJR1gPhKgfiSL2YV4N2gyC3dQJgFgAie4Iq0 4IqU4Auz4C3l0sgRjO+R2MrBrNg82qwB34BZhljqvWpzWjdlHLQpvhdFrtaRWHHLWs081axZzlWt vpn6HRTRzbEFFGDRi3zFjml8VtU8RZNyzUbdu0c9MH1JkvqcvtvkvVhiYcd003O8w54jRRil2iY0 iFH4P0SKCFG8CGdjk1RlungFnbClksQhWxqSESNu4DuORAXAAWOwgaFZsz9m/wHMxeO35B5ig9Yx WZZpJR+WiuK51a0SHY0gVDvDm6EIFN5HKahxNd4Pmtglq9Hmw9EjmYUOo6OLGjzDkUN7xSU7to4w fIr2HI/1Nb/BrDG/a5MTBgBI9p04XFj+xBIZuSEXbZr+YQw1ugeZzBh2rUcqTNwqS0bp/ckt60Kh HORqJlIuaIF28JkIaAFu5ma1subrxKD/ejQ1mpu5goVZfoxH5Yiki4/c1acfZNq7HZ0t/jW9MFRF eSyf84DhVC6qiB3IGEzo2kwNQdw2jqSnMg1/NLEBkOMhPh3T5KTjKjZF9Z9p5Yet4AfzYaS51d2v Qdim/S29LduW1MM69RG7MxpQivVKrXUP6vobbG0m3m1cS3LGGFEbVg7nnf8GuPXIBQDIBS4I6p9W AAbm6Uh01kRViBgzAF/AaPm0vZijWxPt3SxjWCPMkhguXqDbUIbCWgTtmMzB2GuRMgWywlYlvAXk Feq9V5F9nHHF0JNb6rleTfEBwDGFlee7ZSrWHfc70UmuZxKwnyDN50R5GB0aiIRCV+SNzzxFqunC mrGkPmeOZLRMDWn+ZcU76s1+Sy6QPM5GyC6Na4smD8E8TkrL6/nEZTu6NdKottJ6TCMsbEQh3mGu 029bjDvV6ArB4RsjADbW2B5uIO3CW+KZ4ywR0qv74o0kgajZUHsZsA8lxks7U7OLxTvJYggaiB64 EmCxApMmFcq8Bz78oen/sJt15geXXmNHKmUEhL/SCJdKopKbHpRCBe37fsQckAYRUAEHYAD4+mz8 fsT1fAqtY4xEFjClZOSbVCX75I/QkqVP+10+muYultP8C9AV4OT/+b95TFC9JuXgZiB+0qjR0k9V rlBOgmtTkauuNgh1Xrb2CFEerG5Y1OWoBOxLbTthCTIbKjWIQRauVjmv5oyiG8Cb3GHo1Y+0Ppx6 fbcudGsBl3KAU4AW2AAbsIENWIA1c4AAn/IK7NKKphhwsyt1Rg/ZPDBcdqX3YUzRaTDePEcYme1D mdO3Qb4NzQDzhsKIgC6PaedG+pskGhEfzrUUaejHNds5J8oXTWJFtcxs/zRaSGXeKebAxERhcfQt 7XtMUQNvOwcqpBxc9JiWpLuM5VSHzywRB7Ikmei1TLLeL4d1ehuB5pAASSmzG1CCFIh1RyRwfuUR y1y5Z9HopVRDrFltk4mf8e3lHbdDH5fMcS3XFfDXlZ7JrLVJ5fwIaDNrNy6ReS2tCV1Ru8gpnaaO YfMkA49leZK0xxh2jp7NEZ3qNI0fFL1qqvNPUMlkGUQoRE6IgI4MALRYDdGIUe7MNtYWgvkWEvNY oCQQ8ALgXYd4/sLVDdAAAFCBDQAjCNiABzDqiJ+3MGfug5ir0jaP6C6AvQKLZ1slpY1k175bLVas vTXHTh8Mb1suUHUWAP/cCnqM4gJ03smWJIxC5eKWTrIVqLwg9+IIP6N8NMWoqzI37XvhRiPKJzc8 2PfDNVnSo7cgaTjl4E6pc3IdiPGOrblaiDzPeXkUoN62tN+uLg8D+jeOb8clTe+yKkX3+LwfIy5A 2YEQGumxeC3Xe8dz5bhOhgOvK/MDybAzMIGHd90CaXFc2Akf7Le75EcxtcjZZKkZquS19spAH8hm 5ukz5Qd9unPQT0yq8KQnjpJzG3c68ADDCoAl9oGllVe8TyjJ8ZSkcAq6dzzsnuMb0DGpLKW0ELGG 6QnAVhDDXwVscrLhwntFF9Yf/OpXni0HhoG4eHPafusHuBYTv/YUOkjw18ZKa0q+NtiaW+Gbs7Yd 6e77wfsDySEcYRBkwO2Rx8ytGNVhjKPNAAhWAQKoG2hwAgAAHfwhaOgQAa2EZ8oNGMCu4sVzCSsI sCKAjLiQZCokLGnyJMqUKleyPIlCX79+MGf2S0jClwEDsHDmzLkGAI0CdgrwI2qUCwAZ+AgsJTCL KYGEIQxSHZgQxMOGyxomNFHuYsWwAxLGECkOpLiPLdeybdvSQ0yZMWF6SDiuZ041sAxk+ImhgNGi RWMhpUAAalMCwRJOqHowYYesDiMCOHcRbFgUG0N+TAuSpNvQokeTLm36NOrUqlezbu36NezY/7Jb 19igAICIEs4AKODA4vbs4MKHEy9u/PhaFHJhyq0JgAQsNXh7JqRhR3DgAgllHIY6Yyk+qQMLjrcK AMTWrQiQMETQVSzYi2TJCDB7Vhzy0Tng0pRbF4AAVeQkYE/jJIRBUdcZVQAGCQUDFYQEUMCYYwOx khAtDSGRBgJb+dNBQhdYJNYA5ZyxEX31nVUfaPm1pVxczMUEwBokTJdTdAZUF5hgRW0HIXiHSUWe QeQlJESHkrkHgAlhXVZRL2TdJ0B9aLko2gDNyfjfKHjtlZOBACBolC1FMZgQBUt9d9hSEwLQWHmP AZChhhwi8GGIJF5k4mZo0RdSi1cKOiihhf8aeiiiiR7XghIiNKDCBgtAoIINEih6KaaZajobjHPF aBNOX+6l145kDsUPP0gpxdQMEYpXYQBXKckVk1+RWJFNnnEGkgA/bdpMXJ72MxYAGRgQRRVR4GjA CgcChl1RGBTGJgFrzrLYm44VhJBC7SHxEGXnUDRiWBds1pmfgV76UnPL2XQsgWoQWEWpRdlyagGq VtsUv69WKKtWSdLqFWZiSYmurpsmBFewchF7lwHy8mQAGc5mVxS3D0I4y1LYwukYtws99C1EEo1b sLkAcHSfrhX4qjDMMcs8M801H6eACkrcsIENKtxgww0L2Dw00UUbx66MzL17owG+1Juddkn/JcZv VABMBeuRDqnn0HvwjTifWbxaATPD/fXzHxk5+UIgmABw8Re0gDUIQDBUQ+VmY0TKSafWd4IIAArk jshOyhVMmZYV4qiraKfC1lSjAWx/eeyOcfsoNbVrVn11nOZhNbJ6XWM0OlkdpWWfwvt5umVCxuo0 XQbOxn0mAGlS2xTe2gZw4ZwBO4QnACIWbFHhf7I8ktHJK788881fqUELN5Qw/Q0OCO089tlr32nS ztkYsYB65VQ5j0Tpi4/m6G9Ont6xnpfV1l09SeLBaFEJEsxZxgSPp/9BjJe8Kiami0ULTdSCkMeo QqSQtScrlJnIrQagEZVVaUoCcJmmkKYl/+8xLXI6AsrFjpIUqHCMWq9qn/s+tzWu1apgYCkdwu7z skwxbIMPA+CXBAi3i8XCgEx5ClSwJZAKMfAh6gnXycg1QcOBhFdksMLitCfFKVKxikbLhQZeoEV5 AMeKXvwippTDnP7Q6HtfYlt1ThW3H3UHSP5SYArr5DvRkUs+z0HLfXiVOg/QREZjWYOxqiCdARnA QFyIBbTMNLc0tQofT2kThSrEuwylJ0nAE9Ho9nQiCnokbFFEFIy655wKJCtyg6QOUCx3uVUBSUhW g1UKV/gQOmKGHVLilVkEkL8NxqQua0DG5NgWph3aoUxy8yFiDpM79u2tbw0BXuCGxycKnv+OSoAC Izazqc1tzkYBLZBGSl7gAKRws5zmfA272iWTpTHtJ0EhU2BU5cggQeWNVQHYerLSFVs5CVcAKEtn TgeSGWKqhsLy37LwErsBEsUWgZFW7dqYGCHCKmSzCtfwKlK4+1VTcQRNVDrbpQ+bICuh4tvRqRwq mO00kk2NHFJVjPS+JKWBZEsi2K2i9M+wIa5XCqvhGM/WurzsZEDDfBZghkI7CpSwOx2LJMggIzCB PTCJIypeHtNywXNytateLacCNiCClOTmel89K1pVIsZgKe05OcLRIKuDHQWt8oBNFQ+RiHQVWYaO SV4LS+k62cSQ7HI5cUHbdEq50AmEcKn/ybwbY5hJkABwi04bCtjfMDk64qGogk385KFCuToOJhaV 70wQdn5kt6XYkyr4tOnANouZW9anSlSC2TMcFxNipc2DOpFO7A5ZvgLSjV+ay50kMSTHZ2Y2ggPY aCfzCNq0Ure61k2UAlIgAhHgQAkbyIcIprFd8W6AA128LnrNKdqgLi2YPgEhUeImz9uxqbUGwadk 5Kcnf8aASgHtzEcVZdDl3BB8PamCDi/m0LlpzKVMQW5Uu6UhcJlMcBVZon06stUMinJGz+ng+EBo uXxhLn2u5Nxk7ztTIw5sXF6TUlZl+NMYNQehTEvw7BZ5QMgCYIh5pSxkvBUwjA4OI0vkCaj9MJje JTO5yf/DecH0SmADG0R5ekoowQZa4ORz5qAHhJgAmCdAiC2cc600Ji3TyLdGAGTBwRCyr+eStJXL 3rSfpLvj4ay0KdWZTagAGIeAJhexYfZIKMes3TwPCOGqTFJJl9zvNJkoUBZtSrSrW5og4RrioIxY tZlj7Suxdp5K6pNJ8REc2I5Xnz3y0s9pKyUhCR1CBlNNfYumSmVn1dxbRfpwVLKCN7Ys7GETmzRc eEEKWlACDiA7BSlo9gvOW+wvcuELQyDSEFjBhRyUM539GemHI/alkrrT0IJR6XbstiaYplimn3tI e/ZZS8DulKdqURiwRjusofZEfHw5kFKhxWD6KhOqVSn/YsC2Eq5mWPi5G/GsZ6ZbKG83jJ3uNUC5 1VgAdI8wQk1hNxzxu5Wa3tTF/czVRzxSH48EOFH5tmFCkHHgY+UExxvHjo5ZRa1by0lkzqxqHTX6 8KzSR+LTPjrSnZwLCUAg6ecMAQoDQAL16tbDyfC3vEybHXx5+rFwjqXv+tqkzdK7LCkShxX0vCk+ qlOogDwl2xb6l5svSMdNaeQskCvZXE+1IZl1YYk2yUQVocXogzJzH23y1hupOTvpfmRTwxPqFKsY K3S+U2yDzt8/WTNFZGs1YvFCoODuEDu0qxvB9R6nRvvOb3mKYOFYpmHFOb32tncyFxRATgBkEQLS vn32/z52cPV2r63f821Pyh3f7MizpSacvGPwW2qc9tOWO9WwNT/C7U3prx/8m8l/MiDoAfmUmA91 EMEVk5AhRtjnHSIZEhu+0Tx7lMMNi0t7iZp8+Ba6rol5M/Td03kwhD/AVskNjx2RgK7wyr1xX1zw j3/YhQfpBU8k2HDlXBtxTAIRUZAJTBowBC1wm2VkkkUcmQV9RssBnwqu4DZ5UwvkAgBAwM5wgAP8 Hgsqj/CxD+9wE/fQGDtp2gfRQCIZBRupjyOdGOXp1ajJkdj91QDolNlBHH7sGX84zh+Ngy/kCKzJ XWMt0mpJiMFRRaP5g50wV0KgwLxxlsr4yZQYnqD0IP9N/GDkZKF0kE8xpRYXtFkyrVsAKiGSwE/m 2RmxxIDxrEjifF5Q9VJC9NaNGFIsLJ8xOdYP4QPuhGEzjQx7/E00kUikzd6fIM8NhqIoghGU3UDu PYANiIAKlEAKjCLzCB+uER8vgdvx9cSXKB8/qJQIsVKQgBqKKdBV2BRsyVsEHUxn1JYArd2Z0QW/ 6cTa1JzsLF+0IIXGGOFhJNCPAVm3fAtsUQYmDQ+Gpdw93IeShZHZGF+/FdXrNB6+zNeOSd5URB0+ yZJ+CU4C6kptUUkKGorqCAtMFBjWVQEXGgW+EAbdREgQrV/UFZEseaMgOhwFBVTh7aMrVqRF1gyk vAD/FyzAsi1AN3DADdjgRcoMnLQPt/Dg/aHj60xHGiWI43Xc/zHF10nfLPmVbPkTCQxWBU2hAyai q3XQUeUYmnwhzw0E32UF8IxgP0Wa/fwaKGZK4yQNSRESSwIFXb0kd4CH883k+6xQE2YUsdTD8Rji Lvlk6ElOIUWj6Xlh6hmcDiqXZADPGWge4XSWqrnhSOalXhpKWKlAQkiADThAQkDK7u2lzLDf8HVb H31KuOUF2+DixcjTIyXTCUXfTKlHJRHjrRxMVmnfjDXMP0pgOkLjAJ2bURikYWwMU1AUB0pYwpUM AECQhcXeMVoTXrqIBrXLu7DNdEBmoTXfAfkiHFWeMTOxkFeQoEXA2H/hz2eylZ/9z3TYHLRwi2Gs SUsVpTZGBmY6xK7dSuxNyRPRnmGOJ3n/HkpfJoQI2EDT4UYJmFV5bgoskscObpOlNYfiDZKgPY29 1BWEaE5ruZssGed+2VF/sQzLfJ5hKeKfZRpvcqFQHqRT0BPeSFZBsJ4sdefoMCXhrcht5kcPustz JAusvVXjpRZMsgkQ4dVwZs3I2Akd0c9OsaEezdhi7hsArMBbTY7c7WfdDWVbZktrZsjl3Um43OQA CN7haFWHvieTNilqhNUNrMECbEB78gYHcICTwmdFyaLj0OKARAFP7EW59d9QuCM9wWPUxRFN2ZRm Fswt6YpnFBbMFctK4oUF9h91etw1WqJRdmBDkBwC/B3ZQaThGOhZLOlxhJRuNqZvEQgu//afmd4O V6pQfpma5g2iVj3RODagpnQfW9kY28jLUc2aDyWGBkaSSXZgAWJWiDCcdw6dTj5lls4qra6GA5TA dtkADuTAC+TGONWqonyM3pwkfSaoSlLlpuGL6RVhqwAgiukNi+ZTTY7dftkEG66IOGyfplRhu4Se LUqHIxJkJNJacIIhkEYYJT3TM1FG4NwKOyzRJ2Iroh5NgsqFHFaldfCoMXnamnxcALrWivXdizrJ mwoUYVGhYTGHL7mOY+aEg24dWzoFhNyafMIlUnrjqV0GdBEepQGrx35saGgAKtoAC2hALlCKCrgn yA4KYsZit4Em/j2HsgBQsuhnPElNS/8Z4aQqyVbo16nxl2eoHNrpksJ0X1DZmLgNyMOaCT/YQc5Z o7m2bM8VZ6BKhJF+Jy6hoP116Q9iHSw8jVIRxY801fNBXZEALKXOUQsVGdAeo59oKw3d325JIIFM Do7Zi1LpWL8mZI8tpJ9O1d+ISwQdWQyRQbCtLOIm7kloQAQcw3pKQAs0gOISSt7A0XxqkwZJZbih ZRCKq4lyh55uDuWlmPTFj01W6z+pSOfd1mfKyNwCACPyZpgw1oMaBtW0yoTGSYVarBHtwOsJjobm EhRV2jJ6GHRIR7zshdOIGI/4n0v56y8C7B+uRxnWWQRBoQWl3aoV7WgxI+zmxMwWiNv/lF6PRpTd mCssXuJ2Vi3gzI8m9Yk43IP2iufk1u/kiqT9Fkf69unL+qPxjqbWLQh2RGrZwpKskJpx2srwvGlt JuO20pjCxlzkhC9plh7OGZDzQdK5JqbIVJLCJYRSbhaGgWdazGtx5OYYtVeo4IXN7uIXwqMBByzJ 9OzaBh2MMWCcNqfrPgPd4tDSnl9EtZL6bfAC/S2FBY8Tzh8uHWr+NnGt5l7u6Z4CSAr+OjFs7K82 8mCfwUQZIavWdRpMQh4Sdo55TK8zvShYQOFO0schcq9ZJgQlGNhKyt1QGJMi+ajdYOdRwpYmDmpd rqFtiYQJE0fjCMu9srBVDlfUyEAGzXeHv0gWTQqocxXsYGUrFZ6jn3WJl7TNAOniHdMNEKmJBmNx o6nHZSXl/FREr2Vtx1qxK4+nAkQAd80yDqhiSL7ycLDfsFKdvnEQBe9fUGicYABnL4quqKUtoGom jMaAyjWlTymj/xILwwJQszBU05ZvakboYVwLn2ZnAx2xbAqOZqiMSCROZwzycGRusByyo/KffGGO zqEPmh4zQ2yN2D3J/BxMJyEjgjrOfwhAwxqV7CirY4lyd7gJK7TPtkjVyDSEN7qq4Cjx8aAzLlf/ NLG9ADrYAAdQGQcogQ0YwwdUsUWnRvrurmKK1DqpjIDMS9Y1ni4WoUStT0zFWUMHIj5jqox2RFn6 8yLWKY48bHYwWAn1IoQxE+vR2VZgaFgE705SdHCYmWF18W9N9aZt3b6eqKv8q4qZAItJsrtaq39V spwGlTQnVE/saPmcHlFC1S73Tt/JZQT9cQX8ifz+yeGONF7fYA6s4jGMwJVCgATcADrYQ17HBhYT K+Y6Z8ySQPj6G8bxX3ydSqTqrFbHWYDeFFgOIjJawaYSLTSfGQ//Wb8Jk190ITI51RBLLf+6n00R 2c9ircGW47pUnZci6y2CEL4gVbo1MgyTcQp9/zMCkNw+XWr9cIbKIeKZIW3SUozFxA1EpSbVcPMG u6z7HbHwBB2G4TATFzZ33x6UIoUD2AbvbUAEdLdrlGRiouS3pTQJ1C2+0hXTLrKbQe9w0nTfWe/P Wl8UGqwDY0o/ms1/rAAhvdXSXvBBamUlvonfujVSKrWRdVYgy+psB5XxLR6+IhWqoIp8k1Bi/Gec kaGGxJulFmOMigRHUWShGBTrrAGODpIwHchcOZRalyt2sp6cuV5lRFAnhk0rm7ePFxsD4OpfVikX 3EANwGCTckEunEPKsAQK4IEJHAkeTLlIm4ZqZzF9uq6MHPJ7nVZk4uxjwbA8dmXf0PBxom5ZkP/w wf4KSj9naTF3aTZU3k6LnhY1ddez7wBdKsM2yzg1p/gkFzOqY6tB490sL0qq1aTpVTCEAZZckV3G DWcYihNKlqz3DfGmvAxk3KDmNkfIBu4dQ0uGnkc0ihio1v44qgtbb9xAQkCAeqKnbjSpCeBBOeiB 9a1ELvTCPEwQHjTDOTQDHnRFlYdGSe8O1WGyVHtJHTLvmoHu3dH3TLvPHw4pZiMnseSkiZv4pA8K UHnKHwHTKYmvmJieUZDrY22g5WJIgD4aryEpA2qvn8sGVG85o7KNgMgVmZhoFkymzhnzvyxh61kv iedkIN9HP3drQgg4sszsXgSlc6OfVvLYYSv/15xxyDKwu54UTtoZLP2musczGaQ0nQYogZblws4M e0V6QC/ggR4Qi0rkAh6kgT5oBhf0gmacQS+swTqUA5KvhrC6LEqeGXsbWNbpRL3ci6HXWn1VtppK awLHdf2YM1psu6BUenIP1bgRyJ1q+GDQufpI/JYqRN+QHJEFHW2qXG3JNuPoW6DbSEkR1bIHcwgR MHhU5tnSpNjxk5vWGxtyaqZYPY0VGLLeaVB7/QGxJro2UGuHyM9e2EZsqhPV38dPPnpBwLJFAwPs jAPcqinKugkIQS/o1MvrwRnoQcr0grlcQM57QDP0vGpM/Muut/dMzuQsr3UIMBGyGb8769mi/61k NKGRgrVWdQR99LPrLqzonTWM090n2y6KFtx0X2KI43i7blY5wOvqdkS8xwZU2yfkcG5V95/YYg7U +vvosigCC3w/qTHx7ySCAnhPI1/bHJKG6+KMt1LuJiHvREZc9jFADBA4gN2AcmcAAKggjow4hg7J eEs4kWJFixcxZtS4kWNHjx9BhhQ5kmRJkydRplS5kmVLlyUVSGDBIseLEiVsbHjxkmdPnyZz9eqV MVe5ASb0oEh4ppyHXudM9MrVklUAq1etTvi5FSUKff3A9vsqNiEJA2fRol0DgEaBAvzewoXLBYAM fAQI4JuF927CEOqwYk0Iwh8Cw4cNJzRRrsTgwIEJY4gT0FBAZYdruZocIBbs168DEo5Le1YNrHEJ MbjlZyduAa0AgvGVjS9YwqqAA+AO8LpD4WWIEXRYarQxwQEIFUqmbKVyBcyZRXrtHPZrWbRRqvg6 C8tAwrZvwduCm1AG3ryz/eoOPBg4gjRIEChuXFwgZMkCICrPAb2kh7DT+/EgIWS4Q6s0AzJATTW5 4MIgIQpkm+EuAihIaILArnqNlsIQ+42WpQSib4ALEqoAv4aUE6cC/lhs0cUXYYxRxhlp/2xRgxe4 qKmFD1Kgq8Yfa+QiDXYyukAPE3LRg0QAckHhAhSKwuM5lS7UDTdWgHQRBeoABGANs9KCRY2zvJML PLnIO++8Cf3CEDf2EPgNASTSSAwAExwzrqCyUGzITwGyxMg/zv4TEAAyDBBzu7MSBCA1uFRzy0EA KNBLNrwqBOBCDAPAEgBa2kPAnw8BuCDPgZZcqM/KyFgxUIq2HMszsLw0C7vRyGTLDjNZG6+uuya0 lIA2OQ2APX/qnJNDxU41zr4/HxLnVYs2m5Uz0ADIYLQqGAWAi0fPlPTBYGXLdFMMeTPsNzn9Ea7U PAtiJ9U+o3V12nvxzVffffnt16Op/P8NOKWghrqIAT0QykUfpSpiCmCWzg3sNYFXkm4s6sq6tTTt uPMuUn5s6ZUuu9QkQMJhAQihWGMBACFOxJa9M95T7bMMvxP3HXS6z0I7i9u0MlgLXH7MnBRCNSc0 183dEurgMDkNc/ec+Rw7p8QTJXvI3mm3BJAz60YrsDu2PjYzTXxmQBpllbHSbTB/kIAPOMUY0/Mx ACK7mSHmANVXZ0ID7NmAA9EiQ0G5bAEPA7piI2Cvu/aqDYCqrtJNQw6Bo2W/qY1zjOGFbNZ6SopJ L93001EP2JluGtBAg25cb8DH1GmfSA8iLVrDKSSTvOBhJntBwQQ88ICSymInrj2krnf/phUAs3wR Gy3vegUPvDTxOpnNlCtfDwAhnlbXTjwHohoyPx9Ccd9qAQ8cgBXOin7MbrmIhUHw7Jg0NmBNvktp q9SjoZeJb1QJMRV92HGQEtELRVt7Vay4RJYvoaUK85se2cJFtAKQh1xqapN6rgKnUDGrWbiLDLQs sz4AjcVQiDLAz9Bymvrhr2gPWlO5LFQsTzltgHJyl6kcUxAFJgd9lHGg8pCYRCUukYkZYUALVHCD GzxAilMUgQKaWDqCXcQE/dCDBzxQjn6wQ0oJ0Z0HFkO8AfzOJJQDYfKyiBGL/ac6z8OVWjBoJrmM jH9IS0+xRKguudENgfV5XtYYuJ98//1tVoYSDQVJswIFvSVxkDKaeU6GqRxyKl2h+mEzQuSYVCnH CvdpVb6kA7g6gmlRg+PWWtqCuDONTDazCBaxAgOYt4VPTvIJpXEKljfmpE8co3uVzi6mD2w9kjQF GsXh3HKmWDDOPEiTXJXaxrRPYe49hiEVUzqHqqvtzSGTOWIc0ZlOda6TRhK4CQc4wAJ4wvMGWGTn voSErYo06QIXOMcF+tEM3ylGKijQgwK40IsloSRiAOzUPSvCPM6MpVa4KpDHWFPJ69Ulk5bqC/dy aRX20Kk9JPylIWNAhspYQaUOkZa+NtO+fmALUYpCCywo4S1wVa8A+rthXmbxPwx5Cv9Uc6rTbwoI gDMEMUTz0lsDUbnCsFTUpi+8YCwLUD1f2SVtHcRlbgRzJ/HN7U7NQilDsHYzfeXAP8kEi6FWYFMY 3sNCDNJgT8d1nkwKVWJNQ4zc2mVAeAkEORVoaWUEUEqJQJSxjXXsY0WigA3oBAKVtWxlITutLZoR BQyjiMJAQBGBAgAFUllD8I7HycfOkY7WUQO3Xjs/WJ5Jq3y81PbYxqldwo2sJhBRY8pyH0RWxpiB QiahDIUMn50FO74ImqMy2CAbqo0AkmMFbrCrzd4YRm5RE2w4BfK5clqmIc7BVyoJtcrl4mq2GXzL 2SL00dxiaJdj/Q0hOwdcvJkyRYb/81sEwbJMq6ZFDZKErvUsSc2f4oOvlkvIhgZ4GKmBUkSjTB9i zZtZDW+Yw+uUrAo6vK/bTYQLBLFIkjx7p6nkYgAeAOU6UuvQrKyWjoQqC3cId1Gy6XGj5blLR9fW vbC6DDi9LKvdQpQQbGCtpQ1Z66Au9taEuBCSCNKpe/FKKWDt5Tx8xYoA25NUzpWPsCUiphGjqkpa TZCCUXihm6nXGrP96rZ4IRYIWUZkkiLGpDR7nkpLuVKHqFBWnGlhm7eTU0dlFC7iyXKlTHYpL2fI r2Em1QWKM59RUiZ95wzxp0Ed6n5xgQMgFnWg1tDZiaQ6xQlpEoy52E8TrIRy6FqtmLVsbMc7GqC9 95tLXW7b1a96jzDhOwzdzAqZybi0T/tqRnqvJTgDYMfNBvDv0Mz0msb99JrIaxrm1hUcA4LyVKnC mmSYk2GuFXo6CUkGrqpwK4+dCWTvrcvjusqXPwo5z5jrbnxkFsr51GzZlCGDIvF13LA4Mi0wNHBq wvWWS66Jy9bFszYhLCcffldEVlNIWl2q7lOPnOQl/5eRBIiwE5OHelMg9FRjJZpMsA34qr7usUcv 9cFs5jncvaWanuwDkXPnrMZSPtR6rSpD+4UHLvmzIf9ONmmrEHWshhEzmYVY2Gip1JxRLTRFdV3V q4aregnJAnXlu7KEgA9qe+5znviEVqG/NF/s4xK2tBXv0ZwGujx+9KW6vEkrPRQAPIxwYElbyCEa Nj9+8vTKIR95yZ9EASrggAMwn3kHtMCek79nQ3EDx3uy9mIzb+ZZZlu9kL2FlhPyI0h12zLEdHN8 RiEzSpeNblYh/F7sg8d0GH7HRkHcTOKiVPZK9r/sapebcnMXOCs8TnqpKM1qnrn0UL9j99pWr7jl lP8uZQ+cmC2GavrNW4qUQ/TmuY+ZsOXOtaNbgGnC5jy25Eu3Vfsp4KShMKQ6B3HyZJQmY5jwQ+Q8 7wARMAEtAgJuwAYc8AEdsAQYQAHVqaEozbFirt0A4N30jubmrfh8JQvIJZNwCYTWruqMDE9mpnyC 7k/wg+4STqpmKiHgR1FgqFEmQM4U5+nURuow7jCQgEOSCoh+iR08zrBO5AVP6bzUbM1YyRcqaMDK RAe3Cu2CjN/yzNiO7chEBFtOaOscgvdeha28RsrWgEAs6Gf4DgNs7u+oywcFCFm4S1R+SPEK67DS Z7EocA/5EPIqrwREoAUEcRBbQAI6rw+XyI36CgP/cQ3sSKDaYCj7sEqD9gjY0EZthm3IQqX2BssL o6XgYLD3AEwfgu9nDuTaWCPiJq6WaMM2Lo43/AFqJMyAunBEzGxvWIX6zovdPMM6qG07ZCuPNIpo OKh/co57Lg5ONO5lkK0IPVEJTUn9JgosniEhtAX7DOCZDgxkqmdxji9Y0oZCbAMLYVFU/k1zlMr2 6MPCOK0AEfEd4fHTuGADWOAQ4zGOQG/qaCyC1CsSFSXOKPHm6mxtQOhNwg8JlhHgVPCkCoYEOK0d ic6tZvDo7mgN8UejjAZY8k0cNWVpqK5D6DAhUMAZFw8PoYoJ2c0Jac4AoidXaGBXsqr44Kv7rjD2 /0BAFvmMC/MkmC4sWgjNawxFW25qfujqW5ouUtwQyMylIAmvqMTvh8CLII7wIZjMAO/xKrESnZxh A0QgK9HJAmeMEZvQtZgrOzomjzKIltTkcWqSvsJvhO7E9vwsbxiomP6rDBmOcH5GG4mvNR6NLV0P /8DqAnkIJ7+JqQSCHRFJRYrrR1Lp62YuEiUxmuitANTS9bxv57LwZWhPITPNMWomPx5CGgtNwBru LODPvbxxfwBPMBexN5bRQxLiHMhtBc2NmBzi8bxyN3nzdESAAxagN5cILLUJ5opOvZDOJXlFo84G MO0M9gZTpMTqr5LFl+xmT/BmVRILP1SIM37vK/8EZA1qEAqrzQDoqu94zKdcL/A6Mv+ckoCgMirv kLwgQjdpRKIAp6JOc+yocIN+pavsLy/2zS3BBwhzknwG61m2jjthCtqMzoXEbvj0yJLyiibh8MHm RBYRjwgdoyQto9OEM0RFlHQggANE4AU0oHUaoHW6QQxHlF9uw9bEUiJNbzR6LS3pTG3w4c7csthw UiHlEu4OaQD5qzGBhJHCohoBgJkMxDQmicfm72g0UpMm5xW/7Tc60//ksjgUs15QqRGdx1ai8PQ8 hkFWjx9ar5oyMzqlk8iKDEhX0Px0j0gFwEh/5G+Qa0CqDDss0r2idCCFKoAqzdi+CQBDSTH1xioE X3RRGf91RhQgGjYgJ6aIih7gAURgAhuVXywQMF6OsTLwazawlWyqTN2LPDbyEtuS2LgrWVJQ4ELp fG4mrbqT3Q5tPyWU6YwvGH6MXLzsSjB0Dq2uDsHLCBdo7lTKPmfkUyWoArilJdeLeoqvx2bDGDMx hN4SJ98ONPeL657qyaYx2rIF+7glQYwSV/8SqHCoPYfqV/csJN/l9srhCJssDzO1Xu3VRZxBBIBB BfhVBXCgXx3AHu81UM5FUGc0gmp0wFJv+3L0EoFlQGVMhDCHE5sluEAx/f4rysQCW5TL/bQDQYQm UrqRLqRU0jZJRg0vfPyP3MJJAMkg0BgCWWWE9Kbqecr/c9o68APjohLtwjkFFDojVvagBmqscwV5 cjspg0EXqejY7/QK50mzCjy0TW0iZxwHj/msrrv877cGQLw+Md0GNmzF9iVygAG6YQHQNm3Tdmyn hThFj50+FTnHtObOhDmBjbpSdchkESHHJ06dJTuzBq1KyVvXr1YTBWi8JRaw7JIwcy+UbxFB5Uef b7BKspy8lAmlSh+s42c41yXdqwpLBreWz1oLFAir88gqdlvpsyHstEZiyq1oKjkNQOkWd7p68GQh N1Q21FUNQuse0h3ZNniFd3ibqNYWEebAtB9Mr0BKQ2ePEk3/U0e/Sj2UsaTiMtn2a9litU715dk0 tmnD/8baoEmPfAqogsU1v+zbxEdOLq1uAtDMtHfZFNUxca1mWemOeu1MWa9hO6pa21QLa6/8zmo7 b4Y5SLNQpG1wCmT4Ppdxbwt9CXNi2Xc4muU20afriDeDNXiDBQabZKxTIUpZNddmO/Bwx2YSwwV7 OihvSRcktxBB41RBL8wKpHEa4coGLUiG2LAAHI1Cv9E8kgZ3sesjn3I2nfE4FuipcvNLuaQXw86C roqn5qw8MsmDgFYTf1QhTyrJVPfC+qbuoA08aVCu0IKBeZhXyndXqbTluoeIoWZ3b09ermaYLpeD 7fiO8ZhG3PbWHFR5de2FoBijqJD77O9kINahAmms8P/Lz0jgZn73J6PMNFspG6HWTAhhuvqoFSfH 2wpvrLrp0mpRMftEZmOka6IMOQdMbHotIKGXZNYy7QbTbd6S9u7rere4ZtqROVqXRhSOGgWnqgos ZP2OcU/Vujh5u+SkmyasC48wF7FmfvM4mqV5mmPseD2VH8nij5GOVHnMVDP5OXPLBN+yXbU4jr2Q 61jKJ++yxuDqVkbjPHeY0YyPAqo4HJUGz8CMuwoD8UYyjpt5O/ODlGHkMfMzVHFlfnQ2hS3RGNe0 R/W5t4Z1AHiSgSrDWyUyPIXSWRMlp76ldunvDS3ESvUPCPf50khyPolJAASamlm6pV2aIhQxfQ/2 P/yB2CwkczLDo3ou87b8t9/kRG5qmfxSlwTQ7R6yZjIgmVAkmTS4JTXTE5O1hyP3uPB8I3Mo+DNT hW9yT6V3uZS9xolJgHAO5GcWlmhWzzLvtoN2NGUubjO1sBlFpGb4hm/8a2m/eqmBRpgpSXFIFmkq 7mQNdrva4/mCVJyS42u5+qUV/3uxXyImMM8QMWIBMk8DJkKyHUACJiImKFvyNpXwjLOJs1lMq+0f 2cLmtmoEG1pVN5GEBBhWySuxQnFadOb3Fo4GE2V+CsQihzmvOihQHYqIYSY+82TxkhBEURLATE8y ufljzI7Lfuw8MtEg2Q4uF5Kp+IRVEGtwG/Sip4zmFjhxPfpobldd2xhDe05U/A/retfMtHMJGfu9 4ZskuKAFHqAFHIADVK4iNEAFRAAc/DU4K08FwOEGICAhuOEGgpOzORl52weVYeiVyEarwIOWAvSW 2BoL2UMWU7Cw74aoQRGxulpG2moaSVHaItGp72cVJ8SWIDgsC9M9OAQdOWcFbf/x46aPMXfxq2v6 jg5ktnjs1+yCXNZUnN003IJaHcNJrp2Ze+26fYKPcAZnBfQ6IOdvf8JxQlpcu95U3N6lC28z98or vsW8DxUAAl7gzNH8BUZAYLOkATYAswGgBYDTIu4bixaAAyIAADSgBOQBAPgbAHIgGvJci9bBBAq9 0PkjYhwMA2uMotjsjpx3itUanNXue1x4fPLrVQGAAQCamLqTpidyFHaNgXf7G517jTn5PQFLuMns NqkyZqvvWyMTEl2yV3wNe0KXhf93tcuKa697pbDmJ6cRW1bAnW9K0Sag6TTq0Sb9Qke6XfkZMeWY iBKrpXRxzLH9ABcgH25gnrz/vZ7yxZ3siQHwuyIYYANaYCLkHABewAbswc9xQM9VQAi0yAMEohds 7wzYqCeMV6YZ/JR33BRVWft8LU1Pxv6ie9ehppvgWkgbORcRSf1mRYyX1Ko0BhaQ4Un1d+Iy2eLy D5lV9qrz5A4XM8xzXGNHuAIUGAptFC31yLYc9nEO2VpdJpm7qxnBC5f5i8ljEC9D42OZ2rmgtnpe o2T3yhVlzMWFUGtFvmrG6agbwhtCPNupvsMiwAZMFPPyQes5L18c4AZmhwW6kiKygc8nAgKUAG1L oMAfwAHiPN1LB6BAvR8W6ifYGCtAePQa3XnercqUszXswNFMNddrksiBIwgx//0zsfOEmExp7yUH BiAl3UdbbsVZkR0E5zmTjl5dswu4DwOOb2/TABp47wWCmoeqGq7aplDZBZK6Et6t5+RAt3jx6zKx LJqdvaQGx+QGUUPCpQs2hMX1fNDzg/W7yKxy0QfWq375S04BOGADIEABFClHuGDfA8VfM1vsK0Ie SiDB2d0GNCAXREAFHOABUvQB2LxfvJfE8cBFXyIfi9NT63eVblaBT/hjookfinHBZv5/AWIZgoEE EQAAYKLcgIUMFx6MIU6AODLiKlJcczCjxo0cO3r8CJKjh34k++krOeDgOAMsW7LMcBCDnQL8aNrE wAUABQIE8PXkSYDCwQkBiv8aLTrhYAcEApkSpHXwHLuFU6meO1ghogABFClWwBgyrNixHVGQPHmy 5EESLl1WMYCRRgGbNevmlEFghs+fPQ+GMKruaICDIJwWFHgwYdUBi9dGpKiVItnJlMWOPGuSZEoA Kw28bRllRUy6dDEc3MkX3yx8wYYKDhwgKYAO/gw3hQpAKtWGF7BG/A25QuXhxIsbP448ufLlzJs7 fw49uvTpHRVsuEE9Og4VGmtw17ighIaMEJSMXxCtxQsuLSSwd9BCwUcFGrppaMCtQf37+ffj12/f f/71FyCB/AF44ID6LbBKGojo4SCEiKzSzQLJYJFMMiRAQEIy3CSjnz3cYDH/Yokk6qeBDCecoCKL J9TXwARfDDFjjUNMsMAC8mSxY488NqBfA90A2YAJ8gwZJDcfKrmkkgo+WSCCAkYJZYJUXnmfPWdI mAaX/TSwwChWVFEFG2SeCSYWhmhhiC1a2LKmLWCOMEOddtq5QAMV2GjjEDnKs8wySKQRaKELcIPC KgMoyuii3WRBAhmSWiEpGZTaF6B/mmbK6X2betqplJ8iuF839jSDSJcOptFPGqvkOQqZY8paBRlA EmLHm3GuOUE33VBw552h5CgjjcbOiKM9HRS6zA6FymLqGc2sMm21q5xR4SiVWlrpKENqsICn4S4o brnknguuuemiO25+7oa7/4CWqqYKYatAxnpmmfmmuauub84Z7J05jsKnsX7qyGzCfy7KcKP4cTNp pZSSEe63Al7cH8ZJbpygxh1nDHIWDNK7aquvNoBvvlVQ2gADRtjhZpu6GpEjsAHPMOwCxRac7LIJ BwqtltZaewY33Wi7bbcwfsyxx06D3DTUCcqXXdVWX4111lpvzXXXIVn3ndfEqSBCRgqwULZGGpTQ TUYv2LDARhA4kEsKNXzwQAsfaSCCA3074Dfggv89uOCAE3644YEbjvjijN/hxB04RD75HX5Pw4YV mq88phVs5OOAEWyOvqYhRvR9xTZ1RnLFDJHMcMUtDjDDTBu002677CIo8/9zoMoA3om11FL7uwNo kIGMpEiT8YbijifOuOKNTy999dEnLjnlkTuBw+G3f0876Le0Mf4tt+Rx/i2gA8N+++73Pf7t8d/C DOjTTGP5/Rbcgf/flt+xPwcA8A59E4H5bkEP+iWQGY4rIPQcuDgI/k2CiZtgBR9YuL7hAHIb1F73 RAC+78luGukrH/rMlw8RiAAYKmDh+/qGO/nlDnA4wJ8AN3g/B0yjbwMUoAAt8EEDMsN89BgiM+jR uAYWDnpKZCLhnrhE6/WNexzMHgH9FsLviSAfJuyi+hzAvha28H0OoF/taDe/vtnwfwLsH+AGuL8A XtGACKQfAofIROfpcY9HfOyjHwdXxe1t8INZvB3gzIc+8pXQbysMo/uAAcMh2k5+DHRADdmYvx2+ 0Ydw7J7f7GjHIdLjeX8spSn9OB6xqXKVrGylK1//CUuytGADqYwlSByAnYywYBobCQ8EyFOCuGVk DSqAABdqkA8AvGADDPDIAiQAzWhKc5rUrKY1r4lNCaAhBRGQADe92U1oWgEWLFFDFaLAEitAUwsz mUs7C2AECURgBkD5CT7wMYNwQjMFErDGC6AZTkGlAQkCJegyoKmohZRDIQMoxyrE2ZWKiCMc4yBD Ni+K0YxiU5/V5GYKPspPa/7zmmjQpklLOs2PhjOkGUVDBLrpUphKc5vbTAEaXsBSjep0pxnl6Eiv ydGcRuCj0eSoSaPJUpUClKfypCZIX7BNqBJ1qUytKlCzaVSn5nSaERjpVK2JUm+GVKne1Gg3YfrS /6FCU6o1leo3rQpXjK60qHEt6z6lyVGXJhWpKbDGVuVK1X3W1KZPzWpdDxuBBthysYxtrGMfC9mO cOEFHFCBel7wghFg1piMlcAGhLmADYxgI9bR20FawIGNjAAHAAjPCwAwAmNQLbIh6YwBYOELz4Rm NHPpbU1MA4Bg2BMorBnLUvyBhIEkFwG4uUBDGnIGx0gkomQQDm09kpPrane7xskud78LXu169zlc GG94z4ve9Kp3vdJRgAg4YAMlcGC+9L2BMG3ZgA1sIyctYEEzN/KBz7aWAxHQCBeAMVoA1EBvKeDA f9Obgba0BCZciMVc6nKTgwRjL8NtjVhoURCC+P+jA1HZDWMa2hsAVIAMArCCRCQiDuuyd8Y0rrGN b4zjHOt4xzzusY+r0wLFgQ508WmsBGoAOA68FgAKaEHbWqsCFTggyrMFgATCJgEO4K3A642wZ9pC htHwgx+2KE1OUMNhnng4LOcIMUGuAoALNOO5jIFzVrZCXRn/eM987rOf/wzoQAt60ITWmnxywYUc IBoAiK7yYiXQgmikICPs4UZGFgCOD4Djvgd5QS25cIwPFHm9ZGBJFGChhi+PIyY1KcBMWg3cDfME nz7Bh1DEsoYdDEQgvHbBQc6wm6o0I8VZYfFEfqPnQit72cxutrOfDe1oS1trnJ62LVfymdumGiat AMAAaeoSizPPmrhBGcsahECLDuygA6mgBQgy4lw6D4DYEnHxY2Js7Xzre9/87re//w3wVULgAx9w QMEL7rcHB9xrpZawASiMAQyPeS7ApYBP9MKXW5s7FxwXwkbiXZWpsIPYLJ5uiwWQ7IWrfOUsb7nL Xw7zHEMAvjaoeQlsroIcxBxrts22AcLc7QvXpMwFiHU96akajR/nHHOms52P/WKupHznVK+61a+O 9az/az0sIrCBCGa5gSBzoAQQyMXWobMCbbeFwrGQeIZ1Mty9KN04wA52Q6OrYuBMRCJTP7vf/w74 wAt+8Dq2zg3k895Ob2DJhD9Ozw0QhbcA3dsFKDOGKz7uca/5OBcox2IYQvJjH7u6jS+96U+P+tSr PjtgO0gESqDYHNzgBjpfPVka3pLPrDrobi/6aWo9i4wr5xwNCTmxfyN6fNt++cxvvvOf/3cGbOA7 b0ulCjbgaOhrxMtqQPWExUyTy+dEuJn3yeaNc4HPn9jOXIG6V8Ci/fjLf/70r/+gH8CBuGnABly+ vsLpX2qfQU4vwWquVnmwdhp5sRdypxwoYHcohhUnuhcR9tZ39meBF4iBGaiBnWUDwPACoXUD/6QN LFB79mdbLqEGK4ARlFcXr4Z5C4h0c1ccZ8BQDDEVeFcBeBYZMQZ/G+iDPwiEQSiEy6EADlACLKAA EWADG7ABSmBaFoh7LgELlAAAXOBtGNZbmJcaPCGDxOFcIQd6EWhvxkZ6Q2iGZ4iGaTiECmBTAOAM H9BCH5B987cS3ccSn5EBKxh+4fdb4qYaqdGFw3EONcgbEdh+oleBaqiIi8iIjf+oegvwf/W3BhH2 FlWQagRYYXTRar4XXOUXfIFYGen3gDhIhjBWho6IiqmoiqvIivzmZS2BarCwe1dYeXsYbnC3gEAB ipRBg/J2fKIXHD3YisNIjMVojIDGBRoQZMtocKI2h9q3BiuAThLGbRNgE69GcRo2bkhXbsnxhSY2 clgBGaWYiMdojueIjumoXfJwA/FVAkpQAjdXAth3gZQIedmWh0H3bQUgGzuBT4A4fIS4fr5xiMGo jgeJkAmpkKzUdTjQAi0QAQ8Zke5hgZN4j2sHfliohbk4C7s4GWeAB3gAknU3b74BGaZYjgupkivJ ki1JFtbBAc+IgSdoAHY4eXubSGaupoVbeH7FYQImkAtrkAsmIGd4gAIROHrHlpIuyZRN6ZQJ2XpC GIC5xxK713bXiIC4qIC6uBHndg7n4G7P6JUex2i5kAXuJgRrYALrYHYqVnL2JhHe8JRzSZd1mY5c MHtDaFvdl1sPx1tuV3GrwZMbkQU7sAO04CwgIIwKAAKIuQzvRhg7cA7rdhBC0JZZ4X4TsZR2yZmd 6Zn/QJgCGyABMmmBowCLLsFttKiRGpZmDJgRuZAKyyAEluksZPmazZKYGWGYawACSJAL6AaZybB3 W0GBn2mcx4mcFthk8BEN+TCPBpdpkfaQbWl/AiBh3TcOeuh2/LCRBCCYtqYRa3AOkAkAhUGelQkC uQBitimZuQACy+ACILADZImZ7dd+X5Gc+amf+5l6CsAB8GgD8SiPAPqOzHSBAXiJXwZxdWF52diJ uZgXMgAStCCbHmGeGTGZiEkLQiCZGZGDwBgRm8mfI0qiJbpyCgBpEqmiD8miEjCTLDGALXGTNIGN 3JmAPYF0MxAMR/ARHLoDwpgRtOAPtsmbHQACPqoR/yRQkI8hoibqpE8KpdbGBdSpEbmwACVYf1Ho fQawapnYexUHoaGQDWtApgogjBR6nhvRZpBJpUKQBrYJAPUwDns3gcoXpXeKp3kKbbmgHh3xAiJA ms9Hk59xk9t5i+S3gMFApulGC7RANWtAobjhEeeABJDJlgehAIcpBOOZBWvABR9KEVuBckCqp6Vq qqeaY4eiIyVgXzkCJjnCAgZamjCKkQBgjV/6e8EndzmQA2ApA7QAFu9JC1TKEe8JmReAAmYnn1nA bur2bjFgbKPXpKhKrdVqrYw1WVGmAkuordr6AKwaqM5nnS1hhz/3lw3Kj9pIbjPQqcW6br42oUN6 EBsoYAIIsQMgYAJI4HGU2QMrAHUuNq3XKrADS7D/WnMCKvAAN6AExvAADduwNxBljGd/GWCJd9gS VrmdnOiPfEEAoSChGiEEzaKYQWl2QgACVXYO/gCZyQoAiHluj8kFhwkAPZABY7gVAVuwOauzO7sc YAIBG4ADpgImWfAokUh/KxGjLTEKf0kTZWYHO4lxarYRILZujdoBV0GhcAoC8goALGsCHgebHUAL svCs46CDmsmzaau2a/scOSABCRaEWnqJ91CANWEHWSlctTZuc3eWvtqoWQAAJgun6EaWKIACPbip 7oYRJACMfMe2jwu5kUuMg8oSMwqYNwqD4OmNeHABPwmUB1F7NPti44izkmu6p4u68ddwFft9vEca fxq7F1HbjcjhgAPQDHhQDsjKcWthcnVauqkLvMErvIRnWwOInUx7eQkomMKXHL1og+VglBE4jlqB n8NrvdeLvY03iax7WwTYbXZrCxPHibK2hR5JFt/4XL9Ihmibve3rvu9rdUhLjUxbGpjrnT7RkcoR byc2kG4pUSdZvfArwAP/bJcvIA3mtYGrm6B+6bqrGVwQ6hPmOxbEp37lgINJSZxyScAbzMEueTYi gKU+eIJvcbwNjGG3iGaZ15PE4byfd3yju3e/28EzTMOLGJVxK2FvAXHX2KCYl6M/IcFisb/BdnwR hWw1jMRJXIw58F4QEK5HW5NJa64NbBNF54fkNrucN2fqd5Qq9mJJGcBKLMZjrIjsYQM3AB8tIGqi NmqSaI+6VZVVeJWXqxO5iHFBzGaLURUWbJISyL5kDMiBLIQMMHYAqgQBGl/0aIGvaLFTzIKkcajl x4X6a2InFno66LiCrMmbjIFrAGngwKKhTJFQeIfT6L20iK5ger9724DqLbcQ6jtdmkmqnEzLtWzL zDHCkcfAV1gXddGPmaereBwSLcy/OLikFSHDt6zMy/9cdVwgDxLwAgpwAkY7f2uADFvqEl2qmlVs dOPmmsiBvoXov1A3ERrMzOeMzoCnAbhUAvknZb+EgZTwZSiogg1sC+30glvZE8IMEoMIjgPwdCA6 qulM0AVtdQvwrdcXTA5gAzVQS/aHe6j2FlMox9d4YRoryfnrja7Mx25pisSZzAYt0iOtbLnwASXQ AgxwffRhhA7wog6Xj9uMt1sotcnBdCe2GC98kl5B0j3t0/yWA/OFeCXwXzUQkxUZYdjsvROQsVoY tRGsHM5bfKGHwSH901eN1TjGAOiQNit9EF69yBZLTiWsmsmrlTjaEys8HCBnYk93iEo5y1kt13Pt YzlTQAS5hAMlQDUPIKsQjYJ4GBN3W4tZmcLMC84cTYr/O11WTdeN7di0lQsiQHYAAAzooAA58AIl kDYWSJMyirzgJm7LC8QBidNhmHeHeHKM/dirzdr/sQQBxrBgYxeRYwfPFnjNlxijs7iP47uAy8vP H4ECrhyO49wVmdzax43c4MUFEUBziMwBLhrP81xOsCAa+jhxlocTZ83KzctQYNjFd3aSUpfc403e 1zUCh6NCI/DEztdw06h7detqM+3Nn0jJFZzYFtFidlre+83frMQFkHgQZgcWDHACCCx/2AbHp3zR Zu2P3JjWpM2/r0yQoYpnqt3fF47hlRHZ0L0RLfAA2XCgOeyXXvq63Qyhv+0RomiDdSaOFkGnFp7h MS7jGkEfIwABmX0DEKDjOz5zimyCbjGNhZqTdZHdGwuQNq0Q6vfCMOZipzjjTw7lxZFl8xWg9GXl SGds4NCYdt7nC+/9vQvuoGj2wyheFnqsUIld3Mgc5WvO5mTBNyKwrRugQnM+5yfw0j7nyPvID5EM oVlMdwI5Fb94cvcZ121u6P9sngs5IARonANrYKZmSqx+DYuXyHYLTtiZN9reWHwKZWdpHqowfuih ztqT9dA/SLl5PnTY+Mt/uIBkzhG6YeYXvIN/LOq1HuoPBgHQXG31Z5pqd7EZyc3q2tt+XhxDLM7F lt/HZs62zuxR3mQtYHYjMHYb4ADrzXzjOs+Rl5p6ns9Hjhy9KHKm/aGiapDNbu4z/gJKoAKJpgJK wEJKwGX2twbjgOdv0aVz7MApHLWu/nHPNRUdvWJJSevnTvD9fQMbAAFroAFKcHiETHv1eJEuYbno GgsJ+I8cxu8aoRt09sKZCeoFD/LobHgHIQE24NIA4H8hPulxbKtY+XaF/YcwGQ9vD8gOTze9ah7y OZ/cCqDZX20D8AzWP+4WlUu/RD5+WwjV3O3vJenFokfoOg/1/6POATXABUKwAcHEZEJ9gb2u1Kkp cZfOsZOs6ZUM8KEKjMse9Wkv1zlghB/QdWXzpzbwhNVJlfeo23tIdJinqxinucix8Sam0/fGg2pP +HLdACoQjw59NiWgArs+f1Fosdw2xwb4W9rY5zI/rysu7jfPYh9f+J+fxMrYAqn0kI5Ph91brnm+ j0U+XPer1pUB7sH23Y9hbwMP+reP+/zW6xKm27j6wDzB98TuhfI2APfdu56f+8kPv/QhDzx+49F8 gdj+GebU+0Ne+XAX9sI/HLF/7PcWy8iv/OF/vQvwATdg5fPFhNSsfRR7ieXq9WCO0bmY9OC89DVv knonDt5Q6H7iz/9KDBAtbHBQUWKDiBoljH0A0NDhQ4gRJU6kWNHiRYwZNW7k2LHhOAOwDIT0NZJM QwwF+KlkyS8WFwDBCBCYhY/ADJsUPEo8x27AAJ8/B1xoWEGcACsCyBwlU2HnU6hRpU6lWtXqVaxZ tW7l2tXrV7BhxY4lW9bsWbRp1a7/ZbuRyw1tIxTcqCFEA44NGtru5cuRzEjAgMehLFDA1sqVBTA0 pGDTJoHHOqdeACr0Z7kzRckI4CxuqTinfUWPJl3a9GnUqVWvZt3a9WvYsdEu2KCioYMNDAAw2MBQ 9u+rIAOHNJCB8Eo7iAtMYDwT8sycVM+U++kzKFEARpV6Tiqgwhrg4cWPJ1/e/Hn06dWvZw9cQe2G KWzoBaCCg4L27VfAUmOgSv+RjAMgJeUSWwyAxnCCbhYCJJOKMsuqw86opQQ4yrPQ8tNwQw479PBD EEMUccT83ruhIQhsgKAhFTbAj0TghBPJv/5OGrAllVaKpTnoZnjOwah6qs6yc4qy9LDCz76DcUkm m3TySSijlHLK1hwoQYIFFihBBAUWuCE3KlX7aziRBhtQucMKO5AC6NpskCoUIvQJM83E8czOzTIM c08++/TzT0ADFRQ4DTYowQEFCnJABBtEGLQv4YYrDjwCVbKDpTVpcgw6IKGarjLLJmSqO3Gs0PNR VFNVdVVWW3V1TwhwEIGLE24ooYQbVny1rDXGqWIk/gAzjotYlGNJsYZkegwyBjt9CkKhrJvwsyM5 O3VXbLPVdltuu/VWKwVeoA+/LhvSoAVw6Pu2qwwMUONX4gywMaUcW8r0uTaDkW5Iy1AoiqkLl7p2 XYILNvhghBP/flIBggDgIoIRFP5qTEnNrNTYA4N5DB8F35xMzgHozO7OI49SUmKUU1Z5ZZZb3os3 FdbQ0jaXrQJpRnd/nVclWy5FDAOY2MT3R6qEBPUnUe/8jAxvanb6aaijllpqDjZooYUSOJBg6wgi kMDrF16cuiKKgR3J4sQwTvY5BiOjClp+M8tuM3HusYLugcfWe2+++/Y7TAkMVcIGwgkffHAbXPwb IuHeDWznAgt7CcE2bcLJ2Z0+DUooUbezUKm8Fxd9dNJLN/01CBywcgNwHPjAgdZbcKAFmEgfxezA BKQ38oyHdvvjaKsrcuQK7wTtdOSTV3555slKtIXmGxIgMDVmZdQ9R1taYo5yyDrGB3OPzuCXcyOV Zir06NNXf332l19At+jLhrc4h4stTDk7Ml2WJo8fBFlkCtnJeE1rXwENeEAEJrBm3hhJ9UpSvRUc B0fIiknliDYVo0VoQiUr2ckU+EEQhlCE/yMEFDZ+NT//wG932TNQcyyHL/B1BFrWCZncKrA046GP hDvkYQ99+MPwGMUKpeIMCRxysXrda1OQiSFHNKfBf20HYB4EYhWteEUsZtEsXIBBD7xYj9o5DIkt jAk+GLSg/kUFbkFhxwZLRbe76VCLc6RjHe14R4dwIYwPuVjPVKI/3+kLg5sjUp0+1xk54lGRi2Rk Ix3CAA1oIBcL2GP6iGUsMsrkOR1r4kbiBKo52fAoJcuTI015SlTWcQESmEYNVMCAqy2gfbsrENAo tzFOSYc645sWyfCUyFQGU5jDVJ8CrMQBdJRgAQ+wgQpkub4J4CiTbvqd/45Ww/IpzUIEJC9mN735 zeVJQAkqgMCXwqUCG0iAfRjwGY4mxyaOMWsmndRIBkG1QWolpSng5Gc//f+5t7lsIBsAEEEJnAGA BXDgPuurlB1YSEGhLSs6wDtaG/+lTTsB858b5WhHt6UAdDiqPoobqdiitzscbQ+e1KRnRj4VoQEM 74Z2IqVGPXpTnOYUUAogwgMaUtCDjhR+6RujmhjTtpvYZBYtxcgMKwNAPHnGQsfTaVWtelU/vWUD smwRfgrlU4a2RDm9oyYBBCkV8V1zKEb6jNJsilW4xlWu60mBEoAhDVtB4AXoVKf6uFDU/LnQTWmE CtyeasPitZWbc2VsYx2LHgUU9FY2sNWhTHrSwvhxmkp9zveKxsZQRRFJGHpsaU17WthwoQUquAEL bqACRLHvr5FbiRKHxtQti1CGkEARFQ4zilrgBle4o4lkAy6rPpSOVbA9IuxTXkrDmJaPWgIDz3Ct e13s/3IlF1zIQS4AsF3uAkABlWReLAwxAUMUwA6sMIQhQsCYeMa3uTsx7GUQO9WlvTW7++Vvfxui gBS0IAICJvCAB/yCoDYPDGA4Ag0MgQEaLPgIOYjJDHyEL88OcnxrHZk+R6Vf/4ZYxKhNVAlsoAQO 1IADhzPUoYbqMi6QgAQVIMGLYzDjGlMkxiTYQg7AoMcQkKAHDcmGDIJxBaTO1yOfDJ5Fs8OZav12 xFOmcna58IIUt0Bc0thGQq72gBK8wGkKIMEoxZGBIQMgBjQ9sx4j0gNv2ImAXBjHPcYhjjRPWAMX rgluLfLEQs7NeKMEcZUNfWicYk1XDilUNBC6gRscN+5lPagCmhVQgSqERgBV6EEuMH0tLmTAVGkG QA/wDIDjxSCCa1DWPN/2P1F+TmmLRXStbX3V99AMIvbBT1dr1gM0N4QLVYggAzLtkCFGhAQGiMEe Y2AFGHBBHN7ggncA4AKhMXFfasUnyZJS6FuHW9ynzLVECoKfgr7YaSQ4dg98YcSGZKAKlaSEOGRM ghhQmAv38IZRbiwOmMjAR9VUI6yjmBSpWnvcC2c4OBVQgw00ACIa4MANcvAWDlDYaVyogDesMA6Y sJvU3ph3GKVdhc6IIwYNicE4MpAMU688BzKIRI/8XBGjEbKXniNtw33+//NUykcFL4CABvSKzggA 4AUlwAF5EZaD8YaRAeOwUAaOAIBlk3oFnH7IsDOtgBgIA+APyYE3MlC7HGThChe+OUV0K6fekpKq QKd73e8Y2Q0M5AYcSByiGMaBRaOsBxUg/Mofwu6midwhW9d4QygdwYawW+Yst0IPbpxjgWt7Ks8F lUxpinCTVdfuoye9FXOwVxWw4AEqkMCLHCDmlfVgHFSH90NKVep3L37eZCe2Q2LAbABcfd8ViEFn vJGDHITC1RS1DACXQrfNmKr006f+D+0i6acdgQRhtBMXKF17O0FE2gJwiOIpXAEB0DkDa6gHtLmg ybZPJOehHdnnKuQd0f9XX//7P2DUxcsFBeCGxnOa36sAPYqB3pM2PMsBBCSgGEgzTNu+I7Ab7tIj leuVDMiBHhAG7tIYJesIJhsSJwugxAI3/jtBFJwaBYAAAyuwRcG+lQk1cViBOBMA+CmzDDAKcdAN LrCCOZMzUfsF5Cs1eEsGe/OGcYA6oYk/iQA0oZApWXu+uUtBKqxC0YGAvEOHE8s7GygBFYDBlbm0 cWAaUlsDEsgANDQ8LliBDIGBURCADCAB5IswiKiADBiHIcsGtns1ywilf5HCqaI1KxxEQoQaLigI EQgcrRGBqukG0lmD/LOIHDAvQ6CBLZiwh1iDbGCTy9ElbjMShJNCKioDRFIs/8WUyQWFojARUBwI KIEUYJ8c2AIaiIVLKQxD2BEAEIIsyAIZoABOKhqDe7KE+yVTLEZjTBgGMAYcaIgIKAEhcJgbOJH1 Ma/CqEajigkKuALnyKXJAC3yETSkkCITPEZyLMc+4QL4AIAU0ZUWeSaissZahKhthKFX260RTDj8 Gkdz3Ed+dBIFeAAOkDgNSKeGMKewskYyiih5yjC0arKfgELzEZh+nEiKFJQXGKcXYACFeoHAqQEw PB1aOhb9OSOCKyyYwiZwRLhtqkiWbEkqwbv7kIASGJwrWSexwhQeWaJZOKsg8UakiSLOEMVIdEmi LEoReQHoyYVtUAEV+ICPNDmdv5KmawyGmtjGiZKKEKyMe4y+fDRKr/zKDmGA48oBIeAGm+QZe8lJ 72HCiHDCh5QugAGNoQRLuqz/y/BQgA94xYiQgFfyq1hgiXaiIA/EpQ/kCMPyw7mJslKyS8ZsTNcI wBPQgBHAlUiKJHnQAHmomqcsnaLih3vZpKuMirTaraTBr4yaS8dMTdXcCwmogb3rwhqIzb1rLcra TNKJpsgRzIV0DraEiMNEyZmSQs8QxNUsTuM8Cw2IxhtIHNZqztcip7NEjOyRRwzTPKmYv2/UDpKR yOPsTu8kCwD0Ei4BQAUYr/KcpXppp97BpWapR7j7Q84APX38Tvqsz4vgAgk4ARBip/tJS+6xnJJ0 rl2CLojsju0YRftMUAWVii55HwdlAAYYwOYhEMRISMIMTZOEKefrjPxaUA/9KVCPUIARaAERcIB8 cIBpKNEWsE3RiUqptCVNIszefAjs/Mn6Gy25BFEd/d1RimjFrFExFgjSilO35YlK5EgTeQRQ/plR h8hKaakT49kM4uRRKv3QgpiGoqvMSHLEsEqMlpicGK0cJm0ItxwAf7lRNtunKl1TEH2PGnC69iGE CuWHhKzO5bOm4BkAxIqqJGFTP11QZ0hHBUKpY1GpmajKC2rIT6y/z9Gn+fxTSG1JRmTR5amUNKmt ZFmieBpTAPhN59MmC3nUSB3VfnwBq9EACHXQ94lOd+KR6uTUGuUwHYzSHCVVW03NK2MmDlgU1elV Sv0bI50g2/rFj7FHz6MbqZrCW11WusyGvUsxhYpWgvjVv6FQtAysWxo4bkSrAb0nuCwZb0BNZh3/ V5bkgm7QUg1ogOLSAAlFi3B5gRTgyGdaQXiFAOxbgHjFEofAV6JziBV0Rw25JMCsUwxrT+YTCqjy LTUlV4alS+8ajRR5rdeiDwhgAdbiAHV5iAVwgGjcVXL5gIpTAYlDqBvIWA1JLpxEEETdGFj1SVnl oD5tWJklym6A17CBAHmA07Mw1cuiDegBAAfwyIhoga0CAHvYADHTkhW5AQdgxqb1ENwU1rWxU051 Ut7SjEYlxpnd2olcweXsQo3kgBfQ2bLIB11zCJl8JtoIPPHaAEe7jRN5ARuwh/qwDS8h0vxA2doK GrZ5jBng1DL1PH0KSunjWsM1R27YgNowlI01/xS2TYsbEIEXmFzXk0bxilyIUIASWLRWXICBlIf6 cBQJeFoPwYAjVa4K8p3C3AhPtSEou5BQPVzZPUYc2FyCUpylO9u0WADmtI/YUgGRchgOCF4UKQG6 bQi55YZcgK0XuAFp8JKB+hC9VQy+vVDA3TBZlcL7E9XZ7d6FYxhpTDcWISm1WAAcOIaG0BLowYGz dSWIsAdtUBcIUAK90AAVeAD0lQDa0Su5qAjzBEAA/l8BDmACHmADLmAEPmAFRmAuAC/TfVG+Bc15 Qj7uGi+oq2AMvmANjrocaF0uWIM4S6zhFK//W2ATTmAUPmEVTmEWXmEXbmEYfmEZjmEanmEbrt1h HL5hHc5hHt5hH+5hIP5hIQ5iIh5iIy5iJD5iBSZh79UKmBnfF/E10WDENVCBZfyv4Z04dBhZpbMB LjYXEcgFLEw92JMIBWCALFFVNUbjLGHjNU5jN45jOJ7jNqbjN65jPEZjOWaAaGonxJgAIViAUFBS ZgkFNj7kPM5jRM4S8fFJPEDjODMfOxmFRb5jS5ZjPL5kO8ZkTc5kTv7kTQ5lTxblTi5lUB5lVDZl Uj5lVU5lVn7lVY5lV5blVq5lWJ5lXLZlWr5lXc5lXv7lXQ5mXxbmXi5mYB5mZFZlsv9tYqhgmBoA D6C6XPIdi3el3IhoRgaYBrBqiBogXgDoBmPgXBsAWKBVJ8yVgIUy4zReZ3ZuZ3d+Z3iOZ3me53Vu ANOVTksxhPdRvgsNBXqeZ3vAg5NsBlnIklHwJanyhn9eaIZuaId+aIiOaImeaIquaIu+aIzOaI3e aI7uaI/+aJAOaZGeaGpl5ozIByWQACFoETQWCNIlC3tgytd6n7F1CAfgAABogXROKL18pA3oKwBA Z5OShy/UXHWazJKOjc60JYXEF54sLOgKijNFP0leWJO+av1LqENZsWNgFA4wS7bQgJokWYYQ675C Z3IGABxgAXJhAd9wiGkQM4ZRJ1P5TbD2eGDeyVTmwtCnOIc8tdGZwq/YxWrCrr4R+JJbUQJIe9y0 uOnJZa1ncgAWgFcOSLrvgoBnorgPeAHJjt6GGAEVqJ0WuIEXKFEOCcmf4ZEkMytPbDLP244OLWzZ Lr3TE4ESlQC8VYulnOmH4FjY8lccUJfkvF+T1TJ/FYHITWqlRpM61dTV1QgIIaRy6C0BitnZvm66 iySHKLqHPcjIAdOyeu6MWCPh+dY74V7sTu/gOr0HuAHvygGISwHl3ptgVRsEYU++3gkhIaRm6CXz UTj1DvBbm8wNcAAKMyYOKAHQ7VLDUA5D7R56nAoU2KWjmeq4PG9xFXAN//evgihjc/HCZS4dgUWO lPXAV6WKXGiGa2qGdcBaPDkS9N5wGccq2tBdKPZu/LEtCOdUAEABPPjxZvhxE3AIHcwnAJ9xJOev couIdoQmqaRO7xFvjciFdRCCXHjGh7ghUhrsJO9y7JoLDiBn2rDc9PlLqcTFlXITHreIIoddq/Zy OA8uCWiUolPX1CmBn1UfMLgUhwLMLUgWktQU1v4KBuC5zRiH3I5zRW+sEiuB2EwIJcCB+eYbSrSD 9poAGnCILLBTApCBsCCBFcgAMgh1b6i9RT/10jImulAopp30vjmCLdgCMLhEiAgGC7v1GQiFsfC+ I+iBCEV1YH8ssWwIew/QgLQeIV6UAWXPBlcPdmdbHzHjfnZpn/bzqHFqv3Zs/w0uqLhmz3Zv/3aw wA0JyFJ1La4QB3d0T3etyAWihU26ePe+VHd5n3euSBTldE18f61up3d+73eHKU/zDPh993eCp3cG 4AZKSvSCX/94hp8IBoCAFlg9WEoBhW94iy94BRAIQ9mq5Yyti/94i79I0gYzfK0BgmSkNTCBdVB5 lYeJXKBylZe0l2f57WoImH95kM/5BAooWQIGdKAw2mCBRmKAcngGDzh6PIBEE2gGD8ADD7iA7hY2 E3B6qveuXLiApscDq496ne/65kFHmhFfglImRjIBMzUBITCBIc+F6X55EGiGM3WIFNf6XFh6PPiu ZsiFHMADf8kFFOB6rw/807H2kmqIB5jmOzKBcuB6EziDh80FvocIyO/uH095D/CuyL+AuBd8zjed HNg7WcIBY5ClhGKBc4+aWJRF1T/3iwuvhjgCmIB9jZhwtV9mh6gXPdu3CAa4e8j/exN4+XU4/c4f fqlxaQ14AHQwOr4qnS2wA+e3dEMYQAXYRerPAoeAdQDYxVicMBqAuurfRc9+iAtgeg94Bq13CEj0 Pi9a/4hggCF7WBP4+1Jbfy9qCPevf+LP/38VrF1DoSyAKFFChQIABg8iTKhwIcOGDh9CjChxIsWK FgHQsBOLBkcaORBmmyFSZKiCAD5mEXkSwJYtAGSEmhEzZrA1AHJxyWXQxAUUuVA082DzJhcF4zJk WDHOGxeEMY42TcgF6YqkGbhwIbFihbcjAIpGvSh2LNmyZs+iTat2Ldu2bt/CjSt3Lt26du/izat3 L9++fv+yVeDgBofCNxwIAax4sVgaBVwqREkgWJbKWQ7mUBCKwJWPLCFnzuFCSLBsN02gMKEz4YVm qw32EECCQY/aCLkoXeH5toAKtGvn6JHhCG4SAHpUYKx8OfPmzp9Djy59OvXq1q9jz75Ygf+GExpM ag/vNpYdGi3B3AaQ0nRkGTJneD7icaXBI6ESr8NzAQ8KhSbKmYCQcD0wREIG3lylEAPjxJCQcE15 UwEXFSQnnoUXYpihhhty2KGHH4IYYnYKKMAAeCKiuBAGBdhhSDoYeHUSesHMIENl7BmUkgwUzLBS DjQccUQOQr4EHwBDHbTOayjgodNqJIxTWw8xwpYBCQa+dtBTMdRG3FcrkBDDCjHEwFSKZ6KZpppr stmmm2/CGd4CKXzwQQsjnBhneDlglcNHNBhiXiyxxOhnkTNcIdNlJ1EQigtFwEckZkDmIBOSCny0 hgdNrrFGLp/eZBAJAiS1FIFfVeBNLhX/JJhQDKQilQGBXGDjjTckKDDmbnry2quvvwIbrLDDEqvX AirYIJASJbQQVrHQgbFRLGDsmt5HMNkoAwEUGOTeZRR0lgNkBm1Bg3oELKoQCh6cYUKABoUVQwUx MABlBR8ZiA0AFazQ1Go6ITdbDEg5u6+EzyKcsMILM9ywww8314INHDgggQgbKCEPxIwBaoghsSyU jQwjp3tQMARkI8QMFBSUxAyYUpkDoWuEEspHu2bzEQoXXKATDGRyqVAFAvQw1cGs+tvQqw0e1MMK UsZQ8MZTU1211VdjnTWKCtyghAYHSeyA1oBtQaV6NYcig0LaZkFjESPHJAOOAGykXo0ALIBBpQLB 5IAkbN5wZZyrAtQrG5nejEMCDA4tfdCEJCAHOAlSj1255Zdjnrnm/5tDpMAGHICXxUCc25VDi0JK ilAWOBaBchKhXFHzDASkjVAsH9FoGg3odVuSjQYlplDRB0HZAwmAA06GALdKdSoA2AjANABaTZhc D+PkSbr223Pfvfffo8hACTcgJP4N2YOPFnkYDDofZrGbJgTsedLoWcoAeBVSEicRalAOV6gtFNzK RjAicyDicAFBBSMBMlYDA6wAQIFYGVpUEtigFSTnCFehXPo66MEPgjCEIkyL51gAHs9xgIMjrEgs MOCx2yEkB+6hwI7ulpAkdGYNOQhFAbs1gwbgb1yPulYo2mYzhQzMG/KyktAShJvk5GBBt0pGBg7G J8FphQGpUuEKu6/oxS+CMYyVM19YzIc+MZZlRzWTQbUAUAQKfEQIFCiCybjlkBwEo2YlQwgJUjUm vxlEXvCqgOCOkypCTM5xfMSg89DoyEdCMpKSdBMXSmDCg6CQi5NsCyDR0slNgjKUohwlKVO0gBJw AAIjgAAEXoDKVaqSlWcsJS1ractb4jKXwPKcDXrpy1/6sgQM0CUxi2nMYyIzmdNRgApuwIIbEAaa z4zmDVTQRmViM5va3CY3RLvpzW+CM5ziHCc5y2nOc6IznepcJzvb6c53wjOe8pwnPetpz3viM5/6 3Cc/++nPfwI0oAIdKEELatCDIjShCl0oQxvqOtCHQjSiEp0oRStq0YtiNKMa3ShHO+rRj4I0pCId KUlLatKTojSlKl0pS1vq0pfCNKYynSlNa2rTm+IyNKc63SlPe+rTnwI1qEIdKlGLatSjIjWpSl0q U5vq1KdCNapSnSpVq2rVq2I1q1rdKlcsu+rVr4I1rGIdK1nLatazojWtal0rW9vq1rfCNa5ynStd 62rXu+I1r3rdK18p++rXvwI2sIIdLGELa9jDIjaxil0sYxvr2MdCNrKSnSxlK2vZy2I2s5ol3Sxn O+vZz4I2tKIdLWlLa9rToja1ql0ta1vr2tfCNraynS1tayRr29viNre63S1ve+vb3wI3uMIdLnGL a9zjIje5yl0uc5vr3OchQje60p0udatr3etiN7va3S53u+vd74I3vOIdL3nLa97zIaI3vepdL3vb 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 WUAAADs= --000000000000d7a7fa0649990688 Content-Type: text/plain; charset="US-ASCII"; name="v7-0002-Precalculate-CompactAttribute-s-attcacheoff.patch" Content-Disposition: attachment; filename="v7-0002-Precalculate-CompactAttribute-s-attcacheoff.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml0qu72s2 RnJvbSA4ZDZlOWIzNjNjMzdkNzRhMmU2ZTQ5NzJiZmY3MTBjZjFiZTJhODhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAwOToxOToyNCArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMi80 XSBQcmVjYWxjdWxhdGUgQ29tcGFjdEF0dHJpYnV0ZSdzIGF0dGNhY2hlb2ZmCgpUaGlzIGFsbG93 cyBjb2RlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHVwbGUgZGVmb3JtIHJvdXRpbmVzIHdoaWNo CnNocmlua3MgZG93biB0aGUgY29kZSBhIGxpdHRsZSwgd2hpY2ggY2FuIG1ha2UgaXQgcnVuIG1v cmUgcXVpY2tseS4KVGhpcyBhbHNvIG1ha2VzIGEgZGVkaWNhdGVkIGRlZm9ybWVyIGxvb3AgdG8g ZGVmb3JtIHRoZSBwb3J0aW9uIG9mIHRoZQp0dXBsZSB3aGljaCBoYXMgYSBrbm93biBvZmZzZXQs IHdoaWNoIG1ha2VzIGRlZm9ybWluZyBtdWNoIGZhc3RlciB3aGVuCmEgbGVhZGluZyBzZXQgb2Yg dGhlIHRhYmxlJ3MgY29sdW1ucyBhcmUgbm9uLU5VTEwgdmFsdWVzIGFuZCBmaXhlZC13aWR0aAp0 eXBlcy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jICB8IDMzNCAr KysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2luZGV4dHVw bGUuYyB8IDM2NyArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Y29tbW9uL3R1cGRlc2MuYyAgICB8ICAzNyArKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndXRpbHMuYyAgIHwgICAzIC0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyAg ICAgIHwgMjgyICsrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1q aXRfZGVmb3JtLmMgIHwgICA2IC0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMg ICAgIHwgIDEyIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9odHVwX2RldGFpbHMuaCAgICAgIHwgIDE5 ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaXR1cC5oICAgICAgICAgICAgICB8ICAyMCArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaCAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRl L2FjY2Vzcy90dXBtYWNzLmggICAgICAgICAgIHwgIDgyICsrKysrKwogc3JjL2luY2x1ZGUvZXhl Y3V0b3IvdHVwdGFibGUuaCAgICAgICAgfCAgIDkgKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDUzOSBp bnNlcnRpb25zKCspLCA2NDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVh cHR1cGxlLmMKaW5kZXggMTFiZWMyMGU4MmUuLjQyY2NlM2RjZGZlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9jb21tb24vaGVhcHR1cGxlLmMKQEAgLTQ5NywyMCArNDk3LDggQEAgaGVhcF9hdHRpc251bGwo SGVhcFR1cGxlIHR1cCwgaW50IGF0dG51bSwgVHVwbGVEZXNjIHR1cGxlRGVzYykKIC8qIC0tLS0t LS0tLS0tLS0tLS0KICAqCQlub2NhY2hlZ2V0YXR0cgogICoKLSAqCQlUaGlzIG9ubHkgZ2V0cyBj YWxsZWQgZnJvbSBmYXN0Z2V0YXR0cigpLCBpbiBjYXNlcyB3aGVyZSB3ZQotICoJCWNhbid0IHVz ZSBhIGNhY2hlb2Zmc2V0IGFuZCB0aGUgdmFsdWUgaXMgbm90IG51bGwuCi0gKgotICoJCVRoaXMg Y2FjaGVzIGF0dHJpYnV0ZSBvZmZzZXRzIGluIHRoZSBhdHRyaWJ1dGUgZGVzY3JpcHRvci4KLSAq Ci0gKgkJQW4gYWx0ZXJuYXRpdmUgd2F5IHRvIHNwZWVkIHRoaW5ncyB1cCB3b3VsZCBiZSB0byBj YWNoZSBvZmZzZXRzCi0gKgkJd2l0aCB0aGUgdHVwbGUsIGJ1dCB0aGF0IHNlZW1zIG1vcmUgZGlm ZmljdWx0IHVubGVzcyB5b3UgdGFrZQotICoJCXRoZSBzdG9yYWdlIGhpdCBvZiBhY3R1YWxseSBw dXR0aW5nIHRob3NlIG9mZnNldHMgaW50byB0aGUKLSAqCQl0dXBsZSB5b3Ugc2VuZCB0byBkaXNr LiAgWXVjay4KLSAqCi0gKgkJVGhpcyBzY2hlbWUgd2lsbCBiZSBzbGlnaHRseSBzbG93ZXIgdGhh biB0aGF0LCBidXQgc2hvdWxkCi0gKgkJcGVyZm9ybSB3ZWxsIGZvciBxdWVyaWVzIHdoaWNoIGhp dCBsYXJnZSAjJ3Mgb2YgdHVwbGVzLiAgQWZ0ZXIKLSAqCQl5b3UgY2FjaGUgdGhlIG9mZnNldHMg b25jZSwgZXhhbWluaW5nIGFsbCB0aGUgb3RoZXIgdHVwbGVzIHVzaW5nCi0gKgkJdGhlIHNhbWUg YXR0cmlidXRlIGRlc2NyaXB0b3Igd2lsbCBnbyBtdWNoIHF1aWNrZXIuIC1jaW0gNS80LzkxCisg KgkJVGhpcyBvbmx5IGdldHMgY2FsbGVkIGZyb20gZmFzdGdldGF0dHIoKSwgaW4gY2FzZXMgd2hl cmUgdGhlCisgKgkJYXR0Y2FjaGVvZmYgaXMgbm90IHNldC4KICAqCiAgKgkJTk9URTogaWYgeW91 IG5lZWQgdG8gY2hhbmdlIHRoaXMgY29kZSwgc2VlIGFsc28gaGVhcF9kZWZvcm1fdHVwbGUuCiAg KgkJQWxzbyBzZWUgbm9jYWNoZV9pbmRleF9nZXRhdHRyLCB3aGljaCBpcyB0aGUgc2FtZSBjb2Rl IGZvciBpbmRleApAQCAtNTIyLDE5NCArNTEwLDEwNCBAQCBub2NhY2hlZ2V0YXR0cihIZWFwVHVw bGUgdHVwLAogCQkJICAgaW50IGF0dG51bSwKIAkJCSAgIFR1cGxlRGVzYyB0dXBsZURlc2MpCiB7 CisJQ29tcGFjdEF0dHJpYnV0ZSAqY2F0dHI7CiAJSGVhcFR1cGxlSGVhZGVyIHRkID0gdHVwLT50 X2RhdGE7CiAJY2hhcgkgICAqdHA7CQkJCS8qIHB0ciB0byBkYXRhIHBhcnQgb2YgdHVwbGUgKi8K IAliaXRzOAkgICAqYnAgPSB0ZC0+dF9iaXRzOwkvKiBwdHIgdG8gbnVsbCBiaXRtYXAgaW4gdHVw bGUgKi8KLQlib29sCQlzbG93ID0gZmFsc2U7CS8qIGRvIHdlIGhhdmUgdG8gd2FsayBhdHRycz8g Ki8KIAlpbnQJCQlvZmY7CQkJLyogY3VycmVudCBvZmZzZXQgd2l0aGluIGRhdGEgKi8KKwlpbnQJ CQlzdGFydEF0dHI7CisJaW50CQkJZmlyc3RudWxsYXR0cjsKKwlib29sCQloYXNudWxscyA9IEhl YXBUdXBsZUhhc051bGxzKHR1cCk7CiAKLQkvKiAtLS0tLS0tLS0tLS0tLS0tCi0JICoJIFRocmVl IGNhc2VzOgotCSAqCi0JICoJIDE6IE5vIG51bGxzIGFuZCBubyB2YXJpYWJsZS13aWR0aCBhdHRy aWJ1dGVzLgotCSAqCSAyOiBIYXMgYSBudWxsIG9yIGEgdmFyLXdpZHRoIEFGVEVSIGF0dC4KLQkg KgkgMzogSGFzIG51bGxzIG9yIHZhci13aWR0aHMgQkVGT1JFIGF0dC4KLQkgKiAtLS0tLS0tLS0t LS0tLS0tCi0JICovCisJLyogRGlkIHNvbWVvbmUgZm9yZ2V0IHRvIGNhbGwgVHVwbGVEZXNjRmlu YWxpemUoKT8gKi8KKwlBc3NlcnQodHVwbGVEZXNjLT5maXJzdE5vbkNhY2hlZE9mZkF0dHIgPj0g MCk7CiAKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBOVUxMcyBiZWZvcmUgdGhlIHJlcXVpcmVk IGF0dG51bSwgdGhlbiB3ZSBjYW4gc3RhcnQgYXQKKwkgKiB0aGUgaGlnaGVzdCBhdHRyaWJ1dGUg d2l0aCBhIGtub3duIG9mZnNldCwgb3IgdGhlIGZpcnN0IGF0dHJpYnV0ZSBpZgorCSAqIG5vbmUg aGF2ZSBhIGNhY2hlZCBvZmZzZXQuICBJZiB0aGUgdHVwbGUgaGFzIG5vIHZhcmlhYmxlIHdpZHRo IHR5cGVzLAorCSAqIHRoZW4gd2UgY2FuIHVzZSBhIHNsaWdodGx5IGNoZWFwZXIgbWV0aG9kIG9m IG9mZnNldCBjYWxjdWxhdGlvbiwgYXMgd2UKKwkgKiBqdXN0IG5lZWQgdG8gYWRkIHRoZSBhdHRs ZW4gdG8gdGhlIGFsaWduZWQgb2Zmc2V0IHdoZW4gc2tpcHBpbmcgb3ZlcgorCSAqIGNvbHVtbnMu ICBXaGVuIHRoZSB0dXBsZSBjb250YWlucyB2YXJpYWJsZS13aWR0aCB0eXBlcywgd2UgbXVzdCB1 c2UKKwkgKiBhdHRfYWRkbGVuZ3RoX3BvaW50ZXIoKSwgd2hpY2ggZG9lcyBhIGJpdCBtb3JlIGJy YW5jaGluZyBhbmQgaXMKKwkgKiBzbGlnaHRseSBsZXNzIGVmZmljaWVudC4KKwkgKi8KIAlhdHRu dW0tLTsKIAotCWlmICghSGVhcFR1cGxlTm9OdWxscyh0dXApKQotCXsKLQkJLyoKLQkJICogdGhl cmUncyBhIG51bGwgc29tZXdoZXJlIGluIHRoZSB0dXBsZQotCQkgKgotCQkgKiBjaGVjayB0byBz ZWUgaWYgYW55IHByZWNlZGluZyBiaXRzIGFyZSBudWxsLi4uCi0JCSAqLwotCQlpbnQJCQlieXRl ID0gYXR0bnVtID4+IDM7Ci0JCWludAkJCWZpbmFsYml0ID0gYXR0bnVtICYgMHgwNzsKLQotCQkv KiBjaGVjayBmb3IgbnVsbHMgImJlZm9yZSIgZmluYWwgYml0IG9mIGxhc3QgYnl0ZSAqLwotCQlp ZiAoKH5icFtieXRlXSkgJiAoKDEgPDwgZmluYWxiaXQpIC0gMSkpCi0JCQlzbG93ID0gdHJ1ZTsK LQkJZWxzZQotCQl7Ci0JCQkvKiBjaGVjayBmb3IgbnVsbHMgaW4gYW55ICJlYXJsaWVyIiBieXRl cyAqLwotCQkJaW50CQkJaTsKKwlpZiAoaGFzbnVsbHMpCisJCWZpcnN0bnVsbGF0dHIgPSBmaXJz dF9udWxsX2F0dHIoYnAsIGF0dG51bSk7CisJZWxzZQorCQlmaXJzdG51bGxhdHRyID0gYXR0bnVt OwogCi0JCQlmb3IgKGkgPSAwOyBpIDwgYnl0ZTsgaSsrKQotCQkJewotCQkJCWlmIChicFtpXSAh PSAweEZGKQotCQkJCXsKLQkJCQkJc2xvdyA9IHRydWU7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQkJ CX0KLQkJfQorCWlmICh0dXBsZURlc2MtPmZpcnN0Tm9uQ2FjaGVkT2ZmQXR0ciA+IDApCisJewor CQlzdGFydEF0dHIgPSBNaW4odHVwbGVEZXNjLT5maXJzdE5vbkNhY2hlZE9mZkF0dHIgLSAxLCBm aXJzdG51bGxhdHRyKTsKKwkJb2ZmID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBz dGFydEF0dHIpLT5hdHRjYWNoZW9mZjsKKwl9CisJZWxzZQorCXsKKwkJc3RhcnRBdHRyID0gMDsK KwkJb2ZmID0gMDsKIAl9CiAKIAl0cCA9IChjaGFyICopIHRkICsgdGQtPnRfaG9mZjsKIAotCWlm ICghc2xvdykKKwlpZiAoaGFzbnVsbHMpCiAJewotCQlDb21wYWN0QXR0cmlidXRlICphdHQ7CisJ CWZvciAoaW50IGkgPSBzdGFydEF0dHI7IGkgPCBhdHRudW07IGkrKykKKwkJeworCQkJQ29tcGFj dEF0dHJpYnV0ZSAqYXR0OwogCi0JCS8qCi0JCSAqIElmIHdlIGdldCBoZXJlLCB0aGVyZSBhcmUg bm8gbnVsbHMgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgdGFyZ2V0Ci0JCSAqIGF0dHJpYnV0ZS4g IElmIHdlIGhhdmUgYSBjYWNoZWQgb2Zmc2V0LCB3ZSBjYW4gdXNlIGl0LgotCQkgKi8KLQkJYXR0 ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBhdHRudW0pOwotCQlpZiAoYXR0LT5h dHRjYWNoZW9mZiA+PSAwKQotCQkJcmV0dXJuIGZldGNoYXR0KGF0dCwgdHAgKyBhdHQtPmF0dGNh Y2hlb2ZmKTsKKwkJCWlmIChhdHRfaXNudWxsKGksIGJwKSkKKwkJCQljb250aW51ZTsKIAotCQkv KgotCQkgKiBPdGhlcndpc2UsIGNoZWNrIGZvciBub24tZml4ZWQtbGVuZ3RoIGF0dHJzIHVwIHRv IGFuZCBpbmNsdWRpbmcKLQkJICogdGFyZ2V0LiAgSWYgdGhlcmUgYXJlbid0IGFueSwgaXQncyBz YWZlIHRvIGNoZWFwbHkgaW5pdGlhbGl6ZSB0aGUKLQkJICogY2FjaGVkIG9mZnNldHMgZm9yIHRo ZXNlIGF0dHJzLgotCQkgKi8KLQkJaWYgKEhlYXBUdXBsZUhhc1ZhcldpZHRoKHR1cCkpCi0JCXsK LQkJCWludAkJCWo7CisJCQlhdHQgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGkp OwogCi0JCQlmb3IgKGogPSAwOyBqIDw9IGF0dG51bTsgaisrKQotCQkJewotCQkJCWlmIChUdXBs ZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGopLT5hdHRsZW4gPD0gMCkKLQkJCQl7Ci0JCQkJ CXNsb3cgPSB0cnVlOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9CisJCQlvZmYgPSBhdHRfcG9p bnRlcl9hbGlnbmJ5KG9mZiwKKwkJCQkJCQkJCSAgYXR0LT5hdHRhbGlnbmJ5LAorCQkJCQkJCQkJ ICBhdHQtPmF0dGxlbiwKKwkJCQkJCQkJCSAgdHAgKyBvZmYpOworCQkJb2ZmID0gYXR0X2FkZGxl bmd0aF9wb2ludGVyKG9mZiwgYXR0LT5hdHRsZW4sIHRwICsgb2ZmKTsKIAkJfQorCQljYXR0ciA9 IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgYXR0bnVtKTsKKwkJb2ZmID0gYXR0X3Bv aW50ZXJfYWxpZ25ieShvZmYsCisJCQkJCQkJCSAgY2F0dHItPmF0dGFsaWduYnksCisJCQkJCQkJ CSAgY2F0dHItPmF0dGxlbiwKKwkJCQkJCQkJICB0cCArIG9mZik7CiAJfQotCi0JaWYgKCFzbG93 KQorCWVsc2UgaWYgKCFIZWFwVHVwbGVIYXNWYXJXaWR0aCh0dXApKQogCXsKLQkJaW50CQkJbmF0 dHMgPSB0dXBsZURlc2MtPm5hdHRzOwotCQlpbnQJCQlqID0gMTsKLQotCQkvKgotCQkgKiBJZiB3 ZSBnZXQgaGVyZSwgd2UgaGF2ZSBhIHR1cGxlIHdpdGggbm8gbnVsbHMgb3IgdmFyLXdpZHRocyB1 cCB0bwotCQkgKiBhbmQgaW5jbHVkaW5nIHRoZSB0YXJnZXQgYXR0cmlidXRlLCBzbyB3ZSBjYW4g dXNlIHRoZSBjYWNoZWQgb2Zmc2V0Ci0JCSAqIC4uLiBvbmx5IHdlIGRvbid0IGhhdmUgaXQgeWV0 LCBvciB3ZSdkIG5vdCBoYXZlIGdvdCBoZXJlLiAgU2luY2UKLQkJICogaXQncyBjaGVhcCB0byBj b21wdXRlIG9mZnNldHMgZm9yIGZpeGVkLXdpZHRoIGNvbHVtbnMsIHdlIHRha2UgdGhlCi0JCSAq IG9wcG9ydHVuaXR5IHRvIGluaXRpYWxpemUgdGhlIGNhY2hlZCBvZmZzZXRzIGZvciAqYWxsKiB0 aGUgbGVhZGluZwotCQkgKiBmaXhlZC13aWR0aCBjb2x1bW5zLCBpbiBob3BlIG9mIGF2b2lkaW5n IGZ1dHVyZSB2aXNpdHMgdG8gdGhpcwotCQkgKiByb3V0aW5lLgotCQkgKi8KLQkJVHVwbGVEZXNj Q29tcGFjdEF0dHIodHVwbGVEZXNjLCAwKS0+YXR0Y2FjaGVvZmYgPSAwOwotCi0JCS8qIHdlIG1p Z2h0IGhhdmUgc2V0IHNvbWUgb2Zmc2V0cyBpbiB0aGUgc2xvdyBwYXRoIHByZXZpb3VzbHkgKi8K LQkJd2hpbGUgKGogPCBuYXR0cyAmJiBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGop LT5hdHRjYWNoZW9mZiA+IDApCi0JCQlqKys7Ci0KLQkJb2ZmID0gVHVwbGVEZXNjQ29tcGFjdEF0 dHIodHVwbGVEZXNjLCBqIC0gMSktPmF0dGNhY2hlb2ZmICsKLQkJCVR1cGxlRGVzY0NvbXBhY3RB dHRyKHR1cGxlRGVzYywgaiAtIDEpLT5hdHRsZW47Ci0KLQkJZm9yICg7IGogPCBuYXR0czsgaisr KQorCQlmb3IgKGludCBpID0gc3RhcnRBdHRyOyBpIDwgYXR0bnVtOyBpKyspCiAJCXsKLQkJCUNv bXBhY3RBdHRyaWJ1dGUgKmF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaik7 Ci0KLQkJCWlmIChhdHQtPmF0dGxlbiA8PSAwKQotCQkJCWJyZWFrOworCQkJQ29tcGFjdEF0dHJp YnV0ZSAqYXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBpKTsKIAogCQkJb2Zm ID0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIGF0dC0+YXR0YWxpZ25ieSk7Ci0KLQkJCWF0dC0+ YXR0Y2FjaGVvZmYgPSBvZmY7Ci0KIAkJCW9mZiArPSBhdHQtPmF0dGxlbjsKIAkJfQotCi0JCUFz c2VydChqID4gYXR0bnVtKTsKLQotCQlvZmYgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURl c2MsIGF0dG51bSktPmF0dGNhY2hlb2ZmOworCQljYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRy KHR1cGxlRGVzYywgYXR0bnVtKTsKKwkJb2ZmID0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIGNh dHRyLT5hdHRhbGlnbmJ5KTsKIAl9CiAJZWxzZQogCXsKLQkJYm9vbAkJdXNlY2FjaGUgPSB0cnVl OwotCQlpbnQJCQlpOwotCi0JCS8qCi0JCSAqIE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSB0byB3 YWxrIHRoZSB0dXBsZSBDQVJFRlVMTFkuICBCdXQgd2Ugc3RpbGwKLQkJICogbWlnaHQgYmUgYWJs ZSB0byBjYWNoZSBzb21lIG9mZnNldHMgZm9yIG5leHQgdGltZS4KLQkJICoKLQkJICogTm90ZSAt IFRoaXMgbG9vcCBpcyBhIGxpdHRsZSB0cmlja3kuICBGb3IgZWFjaCBub24tbnVsbCBhdHRyaWJ1 dGUsCi0JCSAqIHdlIGhhdmUgdG8gZmlyc3QgYWNjb3VudCBmb3IgYWxpZ25tZW50IHBhZGRpbmcg YmVmb3JlIHRoZSBhdHRyLAotCQkgKiB0aGVuIGFkdmFuY2Ugb3ZlciB0aGUgYXR0ciBiYXNlZCBv biBpdHMgbGVuZ3RoLiAgTnVsbHMgaGF2ZSBubwotCQkgKiBzdG9yYWdlIGFuZCBubyBhbGlnbm1l bnQgcGFkZGluZyBlaXRoZXIuICBXZSBjYW4gdXNlL3NldAotCQkgKiBhdHRjYWNoZW9mZiB1bnRp bCB3ZSByZWFjaCBlaXRoZXIgYSBudWxsIG9yIGEgdmFyLXdpZHRoIGF0dHJpYnV0ZS4KLQkJICov Ci0JCW9mZiA9IDA7Ci0JCWZvciAoaSA9IDA7OyBpKyspCQkvKiBsb29wIGV4aXQgaXMgYXQgImJy ZWFrIiAqLworCQlmb3IgKGludCBpID0gc3RhcnRBdHRyOyBpIDwgYXR0bnVtOyBpKyspCiAJCXsK IAkJCUNvbXBhY3RBdHRyaWJ1dGUgKmF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVz YywgaSk7CiAKLQkJCWlmIChIZWFwVHVwbGVIYXNOdWxscyh0dXApICYmIGF0dF9pc251bGwoaSwg YnApKQotCQkJewotCQkJCXVzZWNhY2hlID0gZmFsc2U7Ci0JCQkJY29udGludWU7CQkvKiB0aGlz IGNhbm5vdCBiZSB0aGUgdGFyZ2V0IGF0dCAqLwotCQkJfQotCi0JCQkvKiBJZiB3ZSBrbm93IHRo ZSBuZXh0IG9mZnNldCwgd2UgY2FuIHNraXAgdGhlIHJlc3QgKi8KLQkJCWlmICh1c2VjYWNoZSAm JiBhdHQtPmF0dGNhY2hlb2ZmID49IDApCi0JCQkJb2ZmID0gYXR0LT5hdHRjYWNoZW9mZjsKLQkJ CWVsc2UgaWYgKGF0dC0+YXR0bGVuID09IC0xKQotCQkJewotCQkJCS8qCi0JCQkJICogV2UgY2Fu IG9ubHkgY2FjaGUgdGhlIG9mZnNldCBmb3IgYSB2YXJsZW5hIGF0dHJpYnV0ZSBpZiB0aGUKLQkJ CQkgKiBvZmZzZXQgaXMgYWxyZWFkeSBzdWl0YWJseSBhbGlnbmVkLCBzbyB0aGF0IHRoZXJlIHdv dWxkIGJlCi0JCQkJICogbm8gcGFkIGJ5dGVzIGluIGFueSBjYXNlOiB0aGVuIHRoZSBvZmZzZXQg d2lsbCBiZSB2YWxpZCBmb3IKLQkJCQkgKiBlaXRoZXIgYW4gYWxpZ25lZCBvciB1bmFsaWduZWQg dmFsdWUuCi0JCQkJICovCi0JCQkJaWYgKHVzZWNhY2hlICYmCi0JCQkJCW9mZiA9PSBhdHRfbm9t aW5hbF9hbGlnbmJ5KG9mZiwgYXR0LT5hdHRhbGlnbmJ5KSkKLQkJCQkJYXR0LT5hdHRjYWNoZW9m ZiA9IG9mZjsKLQkJCQllbHNlCi0JCQkJewotCQkJCQlvZmYgPSBhdHRfcG9pbnRlcl9hbGlnbmJ5 KG9mZiwgYXR0LT5hdHRhbGlnbmJ5LCAtMSwKLQkJCQkJCQkJCQkJICB0cCArIG9mZik7Ci0JCQkJ CXVzZWNhY2hlID0gZmFsc2U7Ci0JCQkJfQotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCS8qIG5v dCB2YXJsZW5hLCBzbyBzYWZlIHRvIHVzZSBhdHRfbm9taW5hbF9hbGlnbmJ5ICovCi0JCQkJb2Zm ID0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIGF0dC0+YXR0YWxpZ25ieSk7Ci0KLQkJCQlpZiAo dXNlY2FjaGUpCi0JCQkJCWF0dC0+YXR0Y2FjaGVvZmYgPSBvZmY7Ci0JCQl9Ci0KLQkJCWlmIChp ID09IGF0dG51bSkKLQkJCQlicmVhazsKLQorCQkJb2ZmID0gYXR0X3BvaW50ZXJfYWxpZ25ieShv ZmYsCisJCQkJCQkJCQkgIGF0dC0+YXR0YWxpZ25ieSwKKwkJCQkJCQkJCSAgYXR0LT5hdHRsZW4s CisJCQkJCQkJCQkgIHRwICsgb2ZmKTsKIAkJCW9mZiA9IGF0dF9hZGRsZW5ndGhfcG9pbnRlcihv ZmYsIGF0dC0+YXR0bGVuLCB0cCArIG9mZik7CiAKLQkJCWlmICh1c2VjYWNoZSAmJiBhdHQtPmF0 dGxlbiA8PSAwKQotCQkJCXVzZWNhY2hlID0gZmFsc2U7CiAJCX0KKwkJY2F0dHIgPSBUdXBsZURl c2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSk7CisJCW9mZiA9IGF0dF9wb2ludGVyX2Fs aWduYnkob2ZmLAorCQkJCQkJCQkgIGNhdHRyLT5hdHRhbGlnbmJ5LAorCQkJCQkJCQkgIGNhdHRy LT5hdHRsZW4sCisJCQkJCQkJCSAgdHAgKyBvZmYpOwogCX0KIAotCXJldHVybiBmZXRjaGF0dChU dXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSksIHRwICsgb2ZmKTsKKwlyZXR1 cm4gZmV0Y2hhdHQoY2F0dHIsIHRwICsgb2ZmKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLQpA QCAtMTM0Nyw2ICsxMjQ1LDcgQEAgaGVhcF9kZWZvcm1fdHVwbGUoSGVhcFR1cGxlIHR1cGxlLCBU dXBsZURlc2MgdHVwbGVEZXNjLAogCQkJCSAgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsKQog ewogCUhlYXBUdXBsZUhlYWRlciB0dXAgPSB0dXBsZS0+dF9kYXRhOworCUNvbXBhY3RBdHRyaWJ1 dGUgKmNhdHRyOwogCWJvb2wJCWhhc251bGxzID0gSGVhcFR1cGxlSGFzTnVsbHModHVwbGUpOwog CWludAkJCXRkZXNjX25hdHRzID0gdHVwbGVEZXNjLT5uYXR0czsKIAlpbnQJCQluYXR0czsJCQkv KiBudW1iZXIgb2YgYXR0cyB0byBleHRyYWN0ICovCkBAIC0xMzU0LDcwICsxMjUzLDkxIEBAIGhl YXBfZGVmb3JtX3R1cGxlKEhlYXBUdXBsZSB0dXBsZSwgVHVwbGVEZXNjIHR1cGxlRGVzYywKIAlj aGFyCSAgICp0cDsJCQkJLyogcHRyIHRvIHR1cGxlIGRhdGEgKi8KIAl1aW50MzIJCW9mZjsJCQkv KiBvZmZzZXQgaW4gdHVwbGUgZGF0YSAqLwogCWJpdHM4CSAgICpicCA9IHR1cC0+dF9iaXRzOwkv KiBwdHIgdG8gbnVsbCBiaXRtYXAgaW4gdHVwbGUgKi8KLQlib29sCQlzbG93ID0gZmFsc2U7CS8q IGNhbiB3ZSB1c2Uvc2V0IGF0dGNhY2hlb2ZmPyAqLworCWludAkJCWNhY2hlb2ZmYXR0cnM7CisJ aW50CQkJZmlyc3RudWxsYXR0cjsKIAogCW5hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMo dHVwKTsKIAorCS8qIERpZCBzb21lb25lIGZvcmdldCB0byBjYWxsIFR1cGxlRGVzY0ZpbmFsaXpl KCk/ICovCisJQXNzZXJ0KHR1cGxlRGVzYy0+Zmlyc3ROb25DYWNoZWRPZmZBdHRyID49IDApOwor CiAJLyoKIAkgKiBJbiBpbmhlcml0YW5jZSBzaXR1YXRpb25zLCBpdCBpcyBwb3NzaWJsZSB0aGF0 IHRoZSBnaXZlbiB0dXBsZSBhY3R1YWxseQogCSAqIGhhcyBtb3JlIGZpZWxkcyB0aGFuIHRoZSBj YWxsZXIgaXMgZXhwZWN0aW5nLiAgRG9uJ3QgcnVuIG9mZiB0aGUgZW5kIG9mCiAJICogdGhlIGNh bGxlcidzIGFycmF5cy4KIAkgKi8KIAluYXR0cyA9IE1pbihuYXR0cywgdGRlc2NfbmF0dHMpOwor CWNhY2hlb2ZmYXR0cnMgPSBNaW4odHVwbGVEZXNjLT5maXJzdE5vbkNhY2hlZE9mZkF0dHIsIG5h dHRzKTsKKworCWlmIChoYXNudWxscykKKwl7CisJCWZpcnN0bnVsbGF0dHIgPSBmaXJzdF9udWxs X2F0dHIoYnAsIG5hdHRzKTsKKwkJY2FjaGVvZmZhdHRycyA9IE1pbihjYWNoZW9mZmF0dHJzLCBm aXJzdG51bGxhdHRyKTsKKwl9CisJZWxzZQorCQlmaXJzdG51bGxhdHRyID0gbmF0dHM7CiAKIAl0 cCA9IChjaGFyICopIHR1cCArIHR1cC0+dF9ob2ZmOworCWF0dG51bSA9IDA7CiAKLQlvZmYgPSAw OworCWlmIChjYWNoZW9mZmF0dHJzID4gMCkKKwl7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lO RworCQkvKiBJbiBBc3NlcnQgZW5hYmxlZCBidWlsZHMsIHZlcmlmeSBhdHRjYWNoZW9mZiBpcyBj b3JyZWN0ICovCisJCW9mZiA9IDA7CisjZW5kaWYKKwkJZG8KKwkJeworCQkJY2F0dHIgPSBUdXBs ZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSk7CisKKyNpZmRlZiBVU0VfQVNTRVJU X0NIRUNLSU5HCisJCQlvZmYgPSBhdHRfbm9taW5hbF9hbGlnbmJ5KG9mZiwgY2F0dHItPmF0dGFs aWduYnkpOworCQkJQXNzZXJ0KG9mZiA9PSBjYXR0ci0+YXR0Y2FjaGVvZmYpOworCQkJb2ZmICs9 IGNhdHRyLT5hdHRsZW47CisjZW5kaWYKIAotCWZvciAoYXR0bnVtID0gMDsgYXR0bnVtIDwgbmF0 dHM7IGF0dG51bSsrKQorCQkJdmFsdWVzW2F0dG51bV0gPSBmZXRjaF9hdHQodHAgKyBjYXR0ci0+ YXR0Y2FjaGVvZmYsCisJCQkJCQkJCQkgICBjYXR0ci0+YXR0Ynl2YWwsCisJCQkJCQkJCQkgICBj YXR0ci0+YXR0bGVuKTsKKwkJCWlzbnVsbFthdHRudW1dID0gZmFsc2U7CisJCX0gd2hpbGUgKCsr YXR0bnVtIDwgY2FjaGVvZmZhdHRycyk7CisJCW9mZiA9IGNhdHRyLT5hdHRjYWNoZW9mZiArIGNh dHRyLT5hdHRsZW47CisJfQorCWVsc2UKKwkJb2ZmID0gMDsKKworCWZvciAoOyBhdHRudW0gPCBm aXJzdG51bGxhdHRyOyBhdHRudW0rKykKIAl7Ci0JCUNvbXBhY3RBdHRyaWJ1dGUgKnRoaXNhdHQg PSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSk7CisJCWNhdHRyID0gVHVw bGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBhdHRudW0pOwogCi0JCWlmIChoYXNudWxscyAm JiBhdHRfaXNudWxsKGF0dG51bSwgYnApKQotCQl7Ci0JCQl2YWx1ZXNbYXR0bnVtXSA9IChEYXR1 bSkgMDsKLQkJCWlzbnVsbFthdHRudW1dID0gdHJ1ZTsKLQkJCXNsb3cgPSB0cnVlOwkJLyogY2Fu J3QgdXNlIGF0dGNhY2hlb2ZmIGFueW1vcmUgKi8KLQkJCWNvbnRpbnVlOwotCQl9CisJCW9mZiA9 IGF0dF9wb2ludGVyX2FsaWduYnkob2ZmLCBjYXR0ci0+YXR0YWxpZ25ieSwgY2F0dHItPmF0dGxl biwKKwkJCQkJCQkJICB0cCArIG9mZik7CiAKIAkJaXNudWxsW2F0dG51bV0gPSBmYWxzZTsKKwkJ dmFsdWVzW2F0dG51bV0gPSBmZXRjaGF0dChjYXR0ciwgdHAgKyBvZmYpOwogCi0JCWlmICghc2xv dyAmJiB0aGlzYXR0LT5hdHRjYWNoZW9mZiA+PSAwKQotCQkJb2ZmID0gdGhpc2F0dC0+YXR0Y2Fj aGVvZmY7Ci0JCWVsc2UgaWYgKHRoaXNhdHQtPmF0dGxlbiA9PSAtMSkKLQkJewotCQkJLyoKLQkJ CSAqIFdlIGNhbiBvbmx5IGNhY2hlIHRoZSBvZmZzZXQgZm9yIGEgdmFybGVuYSBhdHRyaWJ1dGUg aWYgdGhlCi0JCQkgKiBvZmZzZXQgaXMgYWxyZWFkeSBzdWl0YWJseSBhbGlnbmVkLCBzbyB0aGF0 IHRoZXJlIHdvdWxkIGJlIG5vCi0JCQkgKiBwYWQgYnl0ZXMgaW4gYW55IGNhc2U6IHRoZW4gdGhl IG9mZnNldCB3aWxsIGJlIHZhbGlkIGZvciBlaXRoZXIKLQkJCSAqIGFuIGFsaWduZWQgb3IgdW5h bGlnbmVkIHZhbHVlLgotCQkJICovCi0JCQlpZiAoIXNsb3cgJiYKLQkJCQlvZmYgPT0gYXR0X25v bWluYWxfYWxpZ25ieShvZmYsIHRoaXNhdHQtPmF0dGFsaWduYnkpKQotCQkJCXRoaXNhdHQtPmF0 dGNhY2hlb2ZmID0gb2ZmOwotCQkJZWxzZQotCQkJewotCQkJCW9mZiA9IGF0dF9wb2ludGVyX2Fs aWduYnkob2ZmLCB0aGlzYXR0LT5hdHRhbGlnbmJ5LCAtMSwKLQkJCQkJCQkJCQkgIHRwICsgb2Zm KTsKLQkJCQlzbG93ID0gdHJ1ZTsKLQkJCX0KLQkJfQotCQllbHNlCi0JCXsKLQkJCS8qIG5vdCB2 YXJsZW5hLCBzbyBzYWZlIHRvIHVzZSBhdHRfbm9taW5hbF9hbGlnbmJ5ICovCi0JCQlvZmYgPSBh dHRfbm9taW5hbF9hbGlnbmJ5KG9mZiwgdGhpc2F0dC0+YXR0YWxpZ25ieSk7CisJCW9mZiA9IGF0 dF9hZGRsZW5ndGhfcG9pbnRlcihvZmYsIGNhdHRyLT5hdHRsZW4sIHRwICsgb2ZmKTsKKwl9CisK Kwlmb3IgKDsgYXR0bnVtIDwgbmF0dHM7IGF0dG51bSsrKQorCXsKKwkJQXNzZXJ0KGhhc251bGxz KTsKIAotCQkJaWYgKCFzbG93KQotCQkJCXRoaXNhdHQtPmF0dGNhY2hlb2ZmID0gb2ZmOworCQlp ZiAoYXR0X2lzbnVsbChhdHRudW0sIGJwKSkKKwkJeworCQkJdmFsdWVzW2F0dG51bV0gPSAoRGF0 dW0pIDA7CisJCQlpc251bGxbYXR0bnVtXSA9IHRydWU7CisJCQljb250aW51ZTsKIAkJfQogCi0J CXZhbHVlc1thdHRudW1dID0gZmV0Y2hhdHQodGhpc2F0dCwgdHAgKyBvZmYpOworCQljYXR0ciA9 IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgYXR0bnVtKTsKKwkJb2ZmID0gYXR0X3Bv aW50ZXJfYWxpZ25ieShvZmYsIGNhdHRyLT5hdHRhbGlnbmJ5LCBjYXR0ci0+YXR0bGVuLAorCQkJ CQkJCQkgIHRwICsgb2ZmKTsKIAotCQlvZmYgPSBhdHRfYWRkbGVuZ3RoX3BvaW50ZXIob2ZmLCB0 aGlzYXR0LT5hdHRsZW4sIHRwICsgb2ZmKTsKKwkJaXNudWxsW2F0dG51bV0gPSBmYWxzZTsKKwkJ dmFsdWVzW2F0dG51bV0gPSBmZXRjaGF0dChjYXR0ciwgdHAgKyBvZmYpOwogCi0JCWlmICh0aGlz YXR0LT5hdHRsZW4gPD0gMCkKLQkJCXNsb3cgPSB0cnVlOwkJLyogY2FuJ3QgdXNlIGF0dGNhY2hl b2ZmIGFueW1vcmUgKi8KKwkJb2ZmID0gYXR0X2FkZGxlbmd0aF9wb2ludGVyKG9mZiwgY2F0dHIt PmF0dGxlbiwgdHAgKyBvZmYpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvY29tbW9uL2luZGV4dHVwbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaW5k ZXh0dXBsZS5jCmluZGV4IGQ3YzhjNTNmZDhkLi4wODRlMDkzN2E2MCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9pbmRleHR1cGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9pbmRleHR1cGxlLmMKQEAgLTIyMywxOCArMjIzLDYgQEAgaW5kZXhfZm9ybV90 dXBsZV9jb250ZXh0KFR1cGxlRGVzYyB0dXBsZURlc2NyaXB0b3IsCiAgKgogICoJCVRoaXMgZ2V0 cyBjYWxsZWQgZnJvbSBpbmRleF9nZXRhdHRyKCkgbWFjcm8sIGFuZCBvbmx5IGluIGNhc2VzCiAg KgkJd2hlcmUgd2UgY2FuJ3QgdXNlIGNhY2hlb2Zmc2V0IGFuZCB0aGUgdmFsdWUgaXMgbm90IG51 bGwuCi0gKgotICoJCVRoaXMgY2FjaGVzIGF0dHJpYnV0ZSBvZmZzZXRzIGluIHRoZSBhdHRyaWJ1 dGUgZGVzY3JpcHRvci4KLSAqCi0gKgkJQW4gYWx0ZXJuYXRpdmUgd2F5IHRvIHNwZWVkIHRoaW5n cyB1cCB3b3VsZCBiZSB0byBjYWNoZSBvZmZzZXRzCi0gKgkJd2l0aCB0aGUgdHVwbGUsIGJ1dCB0 aGF0IHNlZW1zIG1vcmUgZGlmZmljdWx0IHVubGVzcyB5b3UgdGFrZQotICoJCXRoZSBzdG9yYWdl IGhpdCBvZiBhY3R1YWxseSBwdXR0aW5nIHRob3NlIG9mZnNldHMgaW50byB0aGUKLSAqCQl0dXBs ZSB5b3Ugc2VuZCB0byBkaXNrLiAgWXVjay4KLSAqCi0gKgkJVGhpcyBzY2hlbWUgd2lsbCBiZSBz bGlnaHRseSBzbG93ZXIgdGhhbiB0aGF0LCBidXQgc2hvdWxkCi0gKgkJcGVyZm9ybSB3ZWxsIGZv ciBxdWVyaWVzIHdoaWNoIGhpdCBsYXJnZSAjJ3Mgb2YgdHVwbGVzLiAgQWZ0ZXIKLSAqCQl5b3Ug Y2FjaGUgdGhlIG9mZnNldHMgb25jZSwgZXhhbWluaW5nIGFsbCB0aGUgb3RoZXIgdHVwbGVzIHVz aW5nCi0gKgkJdGhlIHNhbWUgYXR0cmlidXRlIGRlc2NyaXB0b3Igd2lsbCBnbyBtdWNoIHF1aWNr ZXIuIC1jaW0gNS80LzkxCiAgKiAtLS0tLS0tLS0tLS0tLS0tCiAgKi8KIERhdHVtCkBAIC0yNDIs MjA1ICsyMzAsMTI5IEBAIG5vY2FjaGVfaW5kZXhfZ2V0YXR0cihJbmRleFR1cGxlIHR1cCwKIAkJ CQkJICBpbnQgYXR0bnVtLAogCQkJCQkgIFR1cGxlRGVzYyB0dXBsZURlc2MpCiB7CisJQ29tcGFj dEF0dHJpYnV0ZSAqY2F0dHI7CiAJY2hhcgkgICAqdHA7CQkJCS8qIHB0ciB0byBkYXRhIHBhcnQg b2YgdHVwbGUgKi8KIAliaXRzOAkgICAqYnAgPSBOVUxMOwkJLyogcHRyIHRvIG51bGwgYml0bWFw IGluIHR1cGxlICovCi0JYm9vbAkJc2xvdyA9IGZhbHNlOwkvKiBkbyB3ZSBoYXZlIHRvIHdhbGsg YXR0cnM/ICovCiAJaW50CQkJZGF0YV9vZmY7CQkvKiB0dXBsZSBkYXRhIG9mZnNldCAqLwogCWlu dAkJCW9mZjsJCQkvKiBjdXJyZW50IG9mZnNldCB3aXRoaW4gZGF0YSAqLworCWludAkJCXN0YXJ0 QXR0cjsKKwlpbnQJCQlmaXJzdG51bGxhdHRyOworCWJvb2wJCWhhc251bGxzID0gSW5kZXhUdXBs ZUhhc051bGxzKHR1cCk7CisJaW50CQkJaTsKIAotCS8qIC0tLS0tLS0tLS0tLS0tLS0KLQkgKgkg VGhyZWUgY2FzZXM6Ci0JICoKLQkgKgkgMTogTm8gbnVsbHMgYW5kIG5vIHZhcmlhYmxlLXdpZHRo IGF0dHJpYnV0ZXMuCi0JICoJIDI6IEhhcyBhIG51bGwgb3IgYSB2YXItd2lkdGggQUZURVIgYXR0 LgotCSAqCSAzOiBIYXMgbnVsbHMgb3IgdmFyLXdpZHRocyBCRUZPUkUgYXR0LgotCSAqIC0tLS0t LS0tLS0tLS0tLS0KLQkgKi8KLQotCWRhdGFfb2ZmID0gSW5kZXhJbmZvRmluZERhdGFPZmZzZXQo dHVwLT50X2luZm8pOworCS8qIERpZCBzb21lb25lIGZvcmdldCB0byBjYWxsIFR1cGxlRGVzY0Zp bmFsaXplKCk/ICovCisJQXNzZXJ0KHR1cGxlRGVzYy0+Zmlyc3ROb25DYWNoZWRPZmZBdHRyID49 IDApOwogCiAJYXR0bnVtLS07CiAKLQlpZiAoSW5kZXhUdXBsZUhhc051bGxzKHR1cCkpCi0Jewot CQkvKgotCQkgKiB0aGVyZSdzIGEgbnVsbCBzb21ld2hlcmUgaW4gdGhlIHR1cGxlCi0JCSAqCi0J CSAqIGNoZWNrIHRvIHNlZSBpZiBkZXNpcmVkIGF0dCBpcyBudWxsCi0JCSAqLworCS8qCisJICog SWYgdGhlcmUgYXJlIG5vIE5VTExzIGJlZm9yZSB0aGUgcmVxdWlyZWQgYXR0bnVtLCB0aGVuIHdl IGNhbiBzdGFydCBhdAorCSAqIHRoZSBoaWdoZXN0IGF0dHJpYnV0ZSB3aXRoIGEga25vd24gb2Zm c2V0LCBvciB0aGUgZmlyc3QgYXR0cmlidXRlIGlmCisJICogbm9uZSBoYXZlIGEgY2FjaGVkIG9m ZnNldC4gIElmIHRoZSB0dXBsZSBoYXMgbm8gdmFyaWFibGUgd2lkdGggdHlwZXMsCisJICogd2hp Y2ggaXMgY29tbW9uIHdpdGggaW5kZXhlcywgdGhlbiB3ZSBjYW4gdXNlIGEgc2xpZ2h0bHkgY2hl YXBlciBtZXRob2QKKwkgKiBvZiBvZmZzZXQgY2FsY3VsYXRpb24sIGFzIHdlIGp1c3QgbmVlZCB0 byBhZGQgdGhlIGF0dGxlbiB0byB0aGUgYWxpZ25lZAorCSAqIG9mZnNldCB3aGVuIHNraXBwaW5n IG92ZXIgY29sdW1ucy4gIFdoZW4gdGhlIHR1cGxlIGNvbnRhaW5zCisJICogdmFyaWFibGUtd2lk dGggdHlwZXMsIHdlIG11c3QgdXNlIGF0dF9hZGRsZW5ndGhfcG9pbnRlcigpLCB3aGljaCBkb2Vz IGEKKwkgKiBiaXQgbW9yZSBicmFuY2hpbmcgYW5kIGlzIHNsaWdodGx5IGxlc3MgZWZmaWNpZW50 LgorCSAqLworCWRhdGFfb2ZmID0gSW5kZXhJbmZvRmluZERhdGFPZmZzZXQodHVwLT50X2luZm8p OworCXRwID0gKGNoYXIgKikgdHVwICsgZGF0YV9vZmY7CiAKLQkJLyogWFhYICJrbm93cyIgdF9i aXRzIGFyZSBqdXN0IGFmdGVyIGZpeGVkIHR1cGxlIGhlYWRlciEgKi8KKwkvKgorCSAqIEZpbmQg dGhlIGZpcnN0IE5VTEwgY29sdW1uLCBvciBpZiB0aGVyZSdzIG5vbmUgc2V0IHRoZSBmaXJzdCBO VUxMIHRvCisJICogYXR0bnVtIHNvIHRoYXQgd2UgY2FuIGZvcmVnbyBOVUxMIGNoZWNraW5nIGFs bCB0aGUgd2F5IHRvIGF0dG51bS4KKwkgKi8KKwlpZiAoaGFzbnVsbHMpCisJewogCQlicCA9IChi aXRzOCAqKSAoKGNoYXIgKikgdHVwICsgc2l6ZW9mKEluZGV4VHVwbGVEYXRhKSk7Ci0KLQkJLyoK LQkJICogTm93IGNoZWNrIHRvIHNlZSBpZiBhbnkgcHJlY2VkaW5nIGJpdHMgYXJlIG51bGwuLi4K LQkJICovCi0JCXsKLQkJCWludAkJCWJ5dGUgPSBhdHRudW0gPj4gMzsKLQkJCWludAkJCWZpbmFs Yml0ID0gYXR0bnVtICYgMHgwNzsKLQotCQkJLyogY2hlY2sgZm9yIG51bGxzICJiZWZvcmUiIGZp bmFsIGJpdCBvZiBsYXN0IGJ5dGUgKi8KLQkJCWlmICgofmJwW2J5dGVdKSAmICgoMSA8PCBmaW5h bGJpdCkgLSAxKSkKLQkJCQlzbG93ID0gdHJ1ZTsKLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBjaGVj ayBmb3IgbnVsbHMgaW4gYW55ICJlYXJsaWVyIiBieXRlcyAqLwotCQkJCWludAkJCWk7Ci0KLQkJ CQlmb3IgKGkgPSAwOyBpIDwgYnl0ZTsgaSsrKQotCQkJCXsKLQkJCQkJaWYgKGJwW2ldICE9IDB4 RkYpCi0JCQkJCXsKLQkJCQkJCXNsb3cgPSB0cnVlOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJ CQl9Ci0JCQl9Ci0JCX0KKwkJZmlyc3RudWxsYXR0ciA9IGZpcnN0X251bGxfYXR0cihicCwgYXR0 bnVtKTsKIAl9CisJZWxzZQorCQlmaXJzdG51bGxhdHRyID0gYXR0bnVtOwogCi0JdHAgPSAoY2hh ciAqKSB0dXAgKyBkYXRhX29mZjsKLQotCWlmICghc2xvdykKKwlpZiAodHVwbGVEZXNjLT5maXJz dE5vbkNhY2hlZE9mZkF0dHIgPiAwKQogCXsKLQkJQ29tcGFjdEF0dHJpYnV0ZSAqYXR0OwotCi0J CS8qCi0JCSAqIElmIHdlIGdldCBoZXJlLCB0aGVyZSBhcmUgbm8gbnVsbHMgdXAgdG8gYW5kIGlu Y2x1ZGluZyB0aGUgdGFyZ2V0Ci0JCSAqIGF0dHJpYnV0ZS4gIElmIHdlIGhhdmUgYSBjYWNoZWQg b2Zmc2V0LCB3ZSBjYW4gdXNlIGl0LgotCQkgKi8KLQkJYXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0 dHIodHVwbGVEZXNjLCBhdHRudW0pOwotCQlpZiAoYXR0LT5hdHRjYWNoZW9mZiA+PSAwKQotCQkJ cmV0dXJuIGZldGNoYXR0KGF0dCwgdHAgKyBhdHQtPmF0dGNhY2hlb2ZmKTsKLQotCQkvKgotCQkg KiBPdGhlcndpc2UsIGNoZWNrIGZvciBub24tZml4ZWQtbGVuZ3RoIGF0dHJzIHVwIHRvIGFuZCBp bmNsdWRpbmcKLQkJICogdGFyZ2V0LiAgSWYgdGhlcmUgYXJlbid0IGFueSwgaXQncyBzYWZlIHRv IGNoZWFwbHkgaW5pdGlhbGl6ZSB0aGUKLQkJICogY2FjaGVkIG9mZnNldHMgZm9yIHRoZXNlIGF0 dHJzLgotCQkgKi8KLQkJaWYgKEluZGV4VHVwbGVIYXNWYXJ3aWR0aHModHVwKSkKLQkJewotCQkJ aW50CQkJajsKLQotCQkJZm9yIChqID0gMDsgaiA8PSBhdHRudW07IGorKykKLQkJCXsKLQkJCQlp ZiAoVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBqKS0+YXR0bGVuIDw9IDApCi0JCQkJ ewotCQkJCQlzbG93ID0gdHJ1ZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJfQotCQl9CisJCXN0 YXJ0QXR0ciA9IE1pbih0dXBsZURlc2MtPmZpcnN0Tm9uQ2FjaGVkT2ZmQXR0ciAtIDEsIGZpcnN0 bnVsbGF0dHIpOworCQlvZmYgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIHN0YXJ0 QXR0ciktPmF0dGNhY2hlb2ZmOwogCX0KLQotCWlmICghc2xvdykKKwllbHNlCiAJewotCQlpbnQJ CQluYXR0cyA9IHR1cGxlRGVzYy0+bmF0dHM7Ci0JCWludAkJCWogPSAxOwotCi0JCS8qCi0JCSAq IElmIHdlIGdldCBoZXJlLCB3ZSBoYXZlIGEgdHVwbGUgd2l0aCBubyBudWxscyBvciB2YXItd2lk dGhzIHVwIHRvCi0JCSAqIGFuZCBpbmNsdWRpbmcgdGhlIHRhcmdldCBhdHRyaWJ1dGUsIHNvIHdl IGNhbiB1c2UgdGhlIGNhY2hlZCBvZmZzZXQKLQkJICogLi4uIG9ubHkgd2UgZG9uJ3QgaGF2ZSBp dCB5ZXQsIG9yIHdlJ2Qgbm90IGhhdmUgZ290IGhlcmUuICBTaW5jZQotCQkgKiBpdCdzIGNoZWFw IHRvIGNvbXB1dGUgb2Zmc2V0cyBmb3IgZml4ZWQtd2lkdGggY29sdW1ucywgd2UgdGFrZSB0aGUK LQkJICogb3Bwb3J0dW5pdHkgdG8gaW5pdGlhbGl6ZSB0aGUgY2FjaGVkIG9mZnNldHMgZm9yICph bGwqIHRoZSBsZWFkaW5nCi0JCSAqIGZpeGVkLXdpZHRoIGNvbHVtbnMsIGluIGhvcGUgb2YgYXZv aWRpbmcgZnV0dXJlIHZpc2l0cyB0byB0aGlzCi0JCSAqIHJvdXRpbmUuCi0JCSAqLwotCQlUdXBs ZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIDApLT5hdHRjYWNoZW9mZiA9IDA7CisJCXN0YXJ0 QXR0ciA9IDA7CisJCW9mZiA9IDA7CisJfQogCi0JCS8qIHdlIG1pZ2h0IGhhdmUgc2V0IHNvbWUg b2Zmc2V0cyBpbiB0aGUgc2xvdyBwYXRoIHByZXZpb3VzbHkgKi8KLQkJd2hpbGUgKGogPCBuYXR0 cyAmJiBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGopLT5hdHRjYWNoZW9mZiA+IDAp Ci0JCQlqKys7CisJLyogSGFuZGxlIHR1cGxlcyB3aXRoIHZhci13aWR0aCBhdHRyaWJ1dGVzICov CisJaWYgKEluZGV4VHVwbGVIYXNWYXJ3aWR0aHModHVwKSkKKwl7CisJCS8qIENhbGN1bGF0ZSB0 aGUgb2Zmc2V0IHVwIHVudGlsIHRoZSBmaXJzdCBOVUxMICovCisJCWZvciAoaSA9IHN0YXJ0QXR0 cjsgaSA8IGZpcnN0bnVsbGF0dHI7IGkrKykKKwkJeworCQkJY2F0dHIgPSBUdXBsZURlc2NDb21w YWN0QXR0cih0dXBsZURlc2MsIGkpOwogCi0JCW9mZiA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1 cGxlRGVzYywgaiAtIDEpLT5hdHRjYWNoZW9mZiArCi0JCQlUdXBsZURlc2NDb21wYWN0QXR0cih0 dXBsZURlc2MsIGogLSAxKS0+YXR0bGVuOworCQkJb2ZmID0gYXR0X3BvaW50ZXJfYWxpZ25ieShv ZmYsCisJCQkJCQkJCQkgIGNhdHRyLT5hdHRhbGlnbmJ5LAorCQkJCQkJCQkJICBjYXR0ci0+YXR0 bGVuLAorCQkJCQkJCQkJICB0cCArIG9mZik7CisJCQlvZmYgPSBhdHRfYWRkbGVuZ3RoX3BvaW50 ZXIob2ZmLCBjYXR0ci0+YXR0bGVuLCB0cCArIG9mZik7CisJCX0KIAotCQlmb3IgKDsgaiA8IG5h dHRzOyBqKyspCisJCS8qIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IGZvciBhbnkgcmVtYWluaW5nIGNv bHVtbnMuICovCisJCWZvciAoOyBpIDwgYXR0bnVtOyBpKyspCiAJCXsKLQkJCUNvbXBhY3RBdHRy aWJ1dGUgKmF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaik7CisJCQlBc3Nl cnQoaGFzbnVsbHMpOwogCi0JCQlpZiAoYXR0LT5hdHRsZW4gPD0gMCkKLQkJCQlicmVhazsKKwkJ CWlmIChhdHRfaXNudWxsKGksIGJwKSkKKwkJCQljb250aW51ZTsKIAotCQkJb2ZmID0gYXR0X25v bWluYWxfYWxpZ25ieShvZmYsIGF0dC0+YXR0YWxpZ25ieSk7CisJCQljYXR0ciA9IFR1cGxlRGVz Y0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaSk7CiAKLQkJCWF0dC0+YXR0Y2FjaGVvZmYgPSBvZmY7 Ci0KLQkJCW9mZiArPSBhdHQtPmF0dGxlbjsKKwkJCW9mZiA9IGF0dF9wb2ludGVyX2FsaWduYnko b2ZmLAorCQkJCQkJCQkJICBjYXR0ci0+YXR0YWxpZ25ieSwKKwkJCQkJCQkJCSAgY2F0dHItPmF0 dGxlbiwKKwkJCQkJCQkJCSAgdHAgKyBvZmYpOworCQkJb2ZmID0gYXR0X2FkZGxlbmd0aF9wb2lu dGVyKG9mZiwgY2F0dHItPmF0dGxlbiwgdHAgKyBvZmYpOwogCQl9Ci0KLQkJQXNzZXJ0KGogPiBh dHRudW0pOwotCi0JCW9mZiA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgYXR0bnVt KS0+YXR0Y2FjaGVvZmY7CiAJfQogCWVsc2UKIAl7Ci0JCWJvb2wJCXVzZWNhY2hlID0gdHJ1ZTsK LQkJaW50CQkJaTsKKwkJLyogSGFuZGxlIHR1cGxlcyB3aXRoIG9ubHkgZml4ZWQtd2lkdGggYXR0 cmlidXRlcyAqLwogCi0JCS8qCi0JCSAqIE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSB0byB3YWxr IHRoZSB0dXBsZSBDQVJFRlVMTFkuICBCdXQgd2Ugc3RpbGwKLQkJICogbWlnaHQgYmUgYWJsZSB0 byBjYWNoZSBzb21lIG9mZnNldHMgZm9yIG5leHQgdGltZS4KLQkJICoKLQkJICogTm90ZSAtIFRo aXMgbG9vcCBpcyBhIGxpdHRsZSB0cmlja3kuICBGb3IgZWFjaCBub24tbnVsbCBhdHRyaWJ1dGUs Ci0JCSAqIHdlIGhhdmUgdG8gZmlyc3QgYWNjb3VudCBmb3IgYWxpZ25tZW50IHBhZGRpbmcgYmVm b3JlIHRoZSBhdHRyLAotCQkgKiB0aGVuIGFkdmFuY2Ugb3ZlciB0aGUgYXR0ciBiYXNlZCBvbiBp dHMgbGVuZ3RoLiAgTnVsbHMgaGF2ZSBubwotCQkgKiBzdG9yYWdlIGFuZCBubyBhbGlnbm1lbnQg cGFkZGluZyBlaXRoZXIuICBXZSBjYW4gdXNlL3NldAotCQkgKiBhdHRjYWNoZW9mZiB1bnRpbCB3 ZSByZWFjaCBlaXRoZXIgYSBudWxsIG9yIGEgdmFyLXdpZHRoIGF0dHJpYnV0ZS4KLQkJICovCi0J CW9mZiA9IDA7Ci0JCWZvciAoaSA9IDA7OyBpKyspCQkvKiBsb29wIGV4aXQgaXMgYXQgImJyZWFr IiAqLworCQkvKiBDYWxjdWxhdGUgdGhlIG9mZnNldCB1cCB1bnRpbCB0aGUgZmlyc3QgTlVMTCAq LworCQlmb3IgKGkgPSBzdGFydEF0dHI7IGkgPCBmaXJzdG51bGxhdHRyOyBpKyspCiAJCXsKLQkJ CUNvbXBhY3RBdHRyaWJ1dGUgKmF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywg aSk7Ci0KLQkJCWlmIChJbmRleFR1cGxlSGFzTnVsbHModHVwKSAmJiBhdHRfaXNudWxsKGksIGJw KSkKLQkJCXsKLQkJCQl1c2VjYWNoZSA9IGZhbHNlOwotCQkJCWNvbnRpbnVlOwkJLyogdGhpcyBj YW5ub3QgYmUgdGhlIHRhcmdldCBhdHQgKi8KLQkJCX0KLQotCQkJLyogSWYgd2Uga25vdyB0aGUg bmV4dCBvZmZzZXQsIHdlIGNhbiBza2lwIHRoZSByZXN0ICovCi0JCQlpZiAodXNlY2FjaGUgJiYg YXR0LT5hdHRjYWNoZW9mZiA+PSAwKQotCQkJCW9mZiA9IGF0dC0+YXR0Y2FjaGVvZmY7Ci0JCQll bHNlIGlmIChhdHQtPmF0dGxlbiA9PSAtMSkKLQkJCXsKLQkJCQkvKgotCQkJCSAqIFdlIGNhbiBv bmx5IGNhY2hlIHRoZSBvZmZzZXQgZm9yIGEgdmFybGVuYSBhdHRyaWJ1dGUgaWYgdGhlCi0JCQkJ ICogb2Zmc2V0IGlzIGFscmVhZHkgc3VpdGFibHkgYWxpZ25lZCwgc28gdGhhdCB0aGVyZSB3b3Vs ZCBiZQotCQkJCSAqIG5vIHBhZCBieXRlcyBpbiBhbnkgY2FzZTogdGhlbiB0aGUgb2Zmc2V0IHdp bGwgYmUgdmFsaWQgZm9yCi0JCQkJICogZWl0aGVyIGFuIGFsaWduZWQgb3IgdW5hbGlnbmVkIHZh bHVlLgotCQkJCSAqLwotCQkJCWlmICh1c2VjYWNoZSAmJgotCQkJCQlvZmYgPT0gYXR0X25vbWlu YWxfYWxpZ25ieShvZmYsIGF0dC0+YXR0YWxpZ25ieSkpCi0JCQkJCWF0dC0+YXR0Y2FjaGVvZmYg PSBvZmY7Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJb2ZmID0gYXR0X3BvaW50ZXJfYWxpZ25ieShv ZmYsIGF0dC0+YXR0YWxpZ25ieSwgLTEsCi0JCQkJCQkJCQkJCSAgdHAgKyBvZmYpOwotCQkJCQl1 c2VjYWNoZSA9IGZhbHNlOwotCQkJCX0KLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBub3Qg dmFybGVuYSwgc28gc2FmZSB0byB1c2UgYXR0X25vbWluYWxfYWxpZ25ieSAqLwotCQkJCW9mZiA9 IGF0dF9ub21pbmFsX2FsaWduYnkob2ZmLCBhdHQtPmF0dGFsaWduYnkpOworCQkJY2F0dHIgPSBU dXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGkpOworCisJCQlBc3NlcnQoY2F0dHItPmF0 dGxlbiA+IDApOworCQkJb2ZmID0gYXR0X3BvaW50ZXJfYWxpZ25ieShvZmYsCisJCQkJCQkJCQkg IGNhdHRyLT5hdHRhbGlnbmJ5LAorCQkJCQkJCQkJICBjYXR0ci0+YXR0bGVuLAorCQkJCQkJCQkJ ICB0cCArIG9mZik7CisJCQlvZmYgKz0gY2F0dHItPmF0dGxlbjsKKwkJfQogCi0JCQkJaWYgKHVz ZWNhY2hlKQotCQkJCQlhdHQtPmF0dGNhY2hlb2ZmID0gb2ZmOwotCQkJfQorCQkvKiBDYWxjdWxh dGUgdGhlIG9mZnNldCBmb3IgYW55IHJlbWFpbmluZyBjb2x1bW5zLiAqLworCQlmb3IgKDsgaSA8 IGF0dG51bTsgaSsrKQorCQl7CisJCQlBc3NlcnQoaGFzbnVsbHMpOwogCi0JCQlpZiAoaSA9PSBh dHRudW0pCi0JCQkJYnJlYWs7CisJCQlpZiAoYXR0X2lzbnVsbChpLCBicCkpCisJCQkJY29udGlu dWU7CiAKLQkJCW9mZiA9IGF0dF9hZGRsZW5ndGhfcG9pbnRlcihvZmYsIGF0dC0+YXR0bGVuLCB0 cCArIG9mZik7CisJCQljYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaSk7 CiAKLQkJCWlmICh1c2VjYWNoZSAmJiBhdHQtPmF0dGxlbiA8PSAwKQotCQkJCXVzZWNhY2hlID0g ZmFsc2U7CisJCQlBc3NlcnQoY2F0dHItPmF0dGxlbiA+IDApOworCQkJb2ZmID0gYXR0X3BvaW50 ZXJfYWxpZ25ieShvZmYsCisJCQkJCQkJCQkgIGNhdHRyLT5hdHRhbGlnbmJ5LAorCQkJCQkJCQkJ ICBjYXR0ci0+YXR0bGVuLAorCQkJCQkJCQkJICB0cCArIG9mZik7CisJCQlvZmYgKz0gY2F0dHIt PmF0dGxlbjsKIAkJfQogCX0KIAotCXJldHVybiBmZXRjaGF0dChUdXBsZURlc2NDb21wYWN0QXR0 cih0dXBsZURlc2MsIGF0dG51bSksIHRwICsgb2ZmKTsKKwljYXR0ciA9IFR1cGxlRGVzY0NvbXBh Y3RBdHRyKHR1cGxlRGVzYywgYXR0bnVtKTsKKwlvZmYgPSBhdHRfcG9pbnRlcl9hbGlnbmJ5KG9m ZiwgY2F0dHItPmF0dGFsaWduYnksCisJCQkJCQkJICBjYXR0ci0+YXR0bGVuLCB0cCArIG9mZik7 CisJcmV0dXJuIGZldGNoYXR0KGNhdHRyLCB0cCArIG9mZik7CiB9CiAKIC8qCkBAIC00ODAsNjMg KzM5Miw4NiBAQCBpbmRleF9kZWZvcm1fdHVwbGVfaW50ZXJuYWwoVHVwbGVEZXNjIHR1cGxlRGVz Y3JpcHRvciwKIAkJCQkJCQlEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsCiAJCQkJCQkJY2hh ciAqdHAsIGJpdHM4ICpicCwgaW50IGhhc251bGxzKQogeworCUNvbXBhY3RBdHRyaWJ1dGUgKmNh dHRyOwogCWludAkJCW5hdHRzID0gdHVwbGVEZXNjcmlwdG9yLT5uYXR0czsgLyogbnVtYmVyIG9m IGF0dHMgdG8gZXh0cmFjdCAqLwotCWludAkJCWF0dG51bTsKKwlpbnQJCQlhdHRudW0gPSAwOwog CWludAkJCW9mZiA9IDA7CQkvKiBvZmZzZXQgaW4gdHVwbGUgZGF0YSAqLwotCWJvb2wJCXNsb3cg PSBmYWxzZTsJLyogY2FuIHdlIHVzZS9zZXQgYXR0Y2FjaGVvZmY/ICovCisJaW50CQkJY2FjaGVv ZmZhdHRyczsKKwlpbnQJCQlmaXJzdG51bGxhdHRyOwogCiAJLyogQXNzZXJ0IHRvIHByb3RlY3Qg Y2FsbGVycyB3aG8gYWxsb2NhdGUgZml4ZWQtc2l6ZSBhcnJheXMgKi8KIAlBc3NlcnQobmF0dHMg PD0gSU5ERVhfTUFYX0tFWVMpOwogCi0JZm9yIChhdHRudW0gPSAwOyBhdHRudW0gPCBuYXR0czsg YXR0bnVtKyspCisJLyogRGlkIHNvbWVvbmUgZm9yZ2V0IHRvIGNhbGwgVHVwbGVEZXNjRmluYWxp emUoKT8gKi8KKwlBc3NlcnQodHVwbGVEZXNjcmlwdG9yLT5maXJzdE5vbkNhY2hlZE9mZkF0dHIg Pj0gMCk7CisKKwljYWNoZW9mZmF0dHJzID0gTWluKHR1cGxlRGVzY3JpcHRvci0+Zmlyc3ROb25D YWNoZWRPZmZBdHRyLCBuYXR0cyk7CisKKwlpZiAoaGFzbnVsbHMpCisJeworCQlmaXJzdG51bGxh dHRyID0gZmlyc3RfbnVsbF9hdHRyKGJwLCBuYXR0cyk7CisJCWNhY2hlb2ZmYXR0cnMgPSBNaW4o Y2FjaGVvZmZhdHRycywgZmlyc3RudWxsYXR0cik7CisJfQorCWVsc2UKKwkJZmlyc3RudWxsYXR0 ciA9IG5hdHRzOworCisJaWYgKGNhY2hlb2ZmYXR0cnMgPiAwKQogCXsKLQkJQ29tcGFjdEF0dHJp YnV0ZSAqdGhpc2F0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzY3JpcHRvciwgYXR0 bnVtKTsKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJCS8qIEluIEFzc2VydCBlbmFibGVk IGJ1aWxkcywgdmVyaWZ5IGF0dGNhY2hlb2ZmIGlzIGNvcnJlY3QgKi8KKwkJb2ZmID0gMDsKKyNl bmRpZgogCi0JCWlmIChoYXNudWxscyAmJiBhdHRfaXNudWxsKGF0dG51bSwgYnApKQorCQlkbwog CQl7Ci0JCQl2YWx1ZXNbYXR0bnVtXSA9IChEYXR1bSkgMDsKLQkJCWlzbnVsbFthdHRudW1dID0g dHJ1ZTsKLQkJCXNsb3cgPSB0cnVlOwkJLyogY2FuJ3QgdXNlIGF0dGNhY2hlb2ZmIGFueW1vcmUg Ki8KLQkJCWNvbnRpbnVlOwotCQl9CisJCQljYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1 cGxlRGVzY3JpcHRvciwgYXR0bnVtKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJ CW9mZiA9IGF0dF9ub21pbmFsX2FsaWduYnkob2ZmLCBjYXR0ci0+YXR0YWxpZ25ieSk7CisJCQlB c3NlcnQob2ZmID09IGNhdHRyLT5hdHRjYWNoZW9mZik7CisJCQlvZmYgKz0gY2F0dHItPmF0dGxl bjsKKyNlbmRpZgorCisJCQl2YWx1ZXNbYXR0bnVtXSA9IGZldGNoX2F0dCh0cCArIGNhdHRyLT5h dHRjYWNoZW9mZiwgY2F0dHItPmF0dGJ5dmFsLAorCQkJCQkJCQkJICAgY2F0dHItPmF0dGxlbik7 CisJCQlpc251bGxbYXR0bnVtXSA9IGZhbHNlOworCQl9IHdoaWxlICgrK2F0dG51bSA8IGNhY2hl b2ZmYXR0cnMpOworCisJCW9mZiA9IGNhdHRyLT5hdHRjYWNoZW9mZiArIGNhdHRyLT5hdHRsZW47 CisJfQorCisJZm9yICg7IGF0dG51bSA8IGZpcnN0bnVsbGF0dHI7IGF0dG51bSsrKQorCXsKKwkJ Y2F0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2NyaXB0b3IsIGF0dG51bSk7CisK KwkJb2ZmID0gYXR0X3BvaW50ZXJfYWxpZ25ieShvZmYsIGNhdHRyLT5hdHRhbGlnbmJ5LCBjYXR0 ci0+YXR0bGVuLAorCQkJCQkJCQkgIHRwICsgb2ZmKTsKIAogCQlpc251bGxbYXR0bnVtXSA9IGZh bHNlOworCQl2YWx1ZXNbYXR0bnVtXSA9IGZldGNoYXR0KGNhdHRyLCB0cCArIG9mZik7CiAKLQkJ aWYgKCFzbG93ICYmIHRoaXNhdHQtPmF0dGNhY2hlb2ZmID49IDApCi0JCQlvZmYgPSB0aGlzYXR0 LT5hdHRjYWNoZW9mZjsKLQkJZWxzZSBpZiAodGhpc2F0dC0+YXR0bGVuID09IC0xKQotCQl7Ci0J CQkvKgotCQkJICogV2UgY2FuIG9ubHkgY2FjaGUgdGhlIG9mZnNldCBmb3IgYSB2YXJsZW5hIGF0 dHJpYnV0ZSBpZiB0aGUKLQkJCSAqIG9mZnNldCBpcyBhbHJlYWR5IHN1aXRhYmx5IGFsaWduZWQs IHNvIHRoYXQgdGhlcmUgd291bGQgYmUgbm8KLQkJCSAqIHBhZCBieXRlcyBpbiBhbnkgY2FzZTog dGhlbiB0aGUgb2Zmc2V0IHdpbGwgYmUgdmFsaWQgZm9yIGVpdGhlcgotCQkJICogYW4gYWxpZ25l ZCBvciB1bmFsaWduZWQgdmFsdWUuCi0JCQkgKi8KLQkJCWlmICghc2xvdyAmJgotCQkJCW9mZiA9 PSBhdHRfbm9taW5hbF9hbGlnbmJ5KG9mZiwgdGhpc2F0dC0+YXR0YWxpZ25ieSkpCi0JCQkJdGhp c2F0dC0+YXR0Y2FjaGVvZmYgPSBvZmY7Ci0JCQllbHNlCi0JCQl7Ci0JCQkJb2ZmID0gYXR0X3Bv aW50ZXJfYWxpZ25ieShvZmYsIHRoaXNhdHQtPmF0dGFsaWduYnksIC0xLAotCQkJCQkJCQkJCSAg dHAgKyBvZmYpOwotCQkJCXNsb3cgPSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UKLQkJewotCQkJ Lyogbm90IHZhcmxlbmEsIHNvIHNhZmUgdG8gdXNlIGF0dF9ub21pbmFsX2FsaWduYnkgKi8KLQkJ CW9mZiA9IGF0dF9ub21pbmFsX2FsaWduYnkob2ZmLCB0aGlzYXR0LT5hdHRhbGlnbmJ5KTsKKwkJ b2ZmID0gYXR0X2FkZGxlbmd0aF9wb2ludGVyKG9mZiwgY2F0dHItPmF0dGxlbiwgdHAgKyBvZmYp OworCX0KKworCWZvciAoOyBhdHRudW0gPCBuYXR0czsgYXR0bnVtKyspCisJeworCQlBc3NlcnQo aGFzbnVsbHMpOwogCi0JCQlpZiAoIXNsb3cpCi0JCQkJdGhpc2F0dC0+YXR0Y2FjaGVvZmYgPSBv ZmY7CisJCWlmIChhdHRfaXNudWxsKGF0dG51bSwgYnApKQorCQl7CisJCQl2YWx1ZXNbYXR0bnVt XSA9IChEYXR1bSkgMDsKKwkJCWlzbnVsbFthdHRudW1dID0gdHJ1ZTsKKwkJCWNvbnRpbnVlOwog CQl9CiAKLQkJdmFsdWVzW2F0dG51bV0gPSBmZXRjaGF0dCh0aGlzYXR0LCB0cCArIG9mZik7CisJ CWNhdHRyID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjcmlwdG9yLCBhdHRudW0pOwor CQlvZmYgPSBhdHRfcG9pbnRlcl9hbGlnbmJ5KG9mZiwgY2F0dHItPmF0dGFsaWduYnksIGNhdHRy LT5hdHRsZW4sCisJCQkJCQkJCSAgdHAgKyBvZmYpOwogCi0JCW9mZiA9IGF0dF9hZGRsZW5ndGhf cG9pbnRlcihvZmYsIHRoaXNhdHQtPmF0dGxlbiwgdHAgKyBvZmYpOworCQlpc251bGxbYXR0bnVt XSA9IGZhbHNlOworCQl2YWx1ZXNbYXR0bnVtXSA9IGZldGNoYXR0KGNhdHRyLCB0cCArIG9mZik7 CiAKLQkJaWYgKHRoaXNhdHQtPmF0dGxlbiA8PSAwKQotCQkJc2xvdyA9IHRydWU7CQkvKiBjYW4n dCB1c2UgYXR0Y2FjaGVvZmYgYW55bW9yZSAqLworCQlvZmYgPSBhdHRfYWRkbGVuZ3RoX3BvaW50 ZXIob2ZmLCBjYXR0ci0+YXR0bGVuLCB0cCArIG9mZik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vdHVwZGVzYy5jCmluZGV4IGU5OGRlODA2YTc3Li4yNTM2NGRiNjMwYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi90dXBkZXNjLmMKQEAgLTIxNCw2ICsyMTQsOSBAQCBDcmVhdGVUZW1wbGF0 ZVR1cGxlRGVzYyhpbnQgbmF0dHMpCiAJZGVzYy0+dGR0eXBtb2QgPSAtMTsKIAlkZXNjLT50ZHJl ZmNvdW50ID0gLTE7CQkvKiBhc3N1bWUgbm90IHJlZmVyZW5jZS1jb3VudGVkICovCiAKKwkvKiBU aGlzIHdpbGwgYmUgc2V0IHRvIHRoZSBjb3JyZWN0IHZhbHVlIGJ5IFR1cGxlRGVzY0ZpbmFsaXpl KCkgKi8KKwlkZXNjLT5maXJzdE5vbkNhY2hlZE9mZkF0dHIgPSAtMTsKKwogCXJldHVybiBkZXNj OwogfQogCkBAIC00NzQsNiArNDc3LDkgQEAgVHVwbGVEZXNjQ29weShUdXBsZURlc2MgZHN0LCBU dXBsZURlc2Mgc3JjKQogICoJCWRlc2NyaXB0b3IgdG8gYW5vdGhlci4KICAqCiAgKiAhISEgQ29u c3RyYWludHMgYW5kIGRlZmF1bHRzIGFyZSBub3QgY29waWVkICEhIQorICoKKyAqIFRoZSBjYWxs ZXIgbXVzdCB0YWtlIGNhcmUgb2YgY2FsbGluZyBUdXBsZURlc2NGaW5hbGl6ZSgpIG9uIG9uY2Ug YWxsCisgKiBUdXBsZURlc2MgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZS4KICAqLwogdm9pZAogVHVw bGVEZXNjQ29weUVudHJ5KFR1cGxlRGVzYyBkc3QsIEF0dHJOdW1iZXIgZHN0QXR0bm8sCkBAIC01 MDYsNiArNTEyLDM3IEBAIFR1cGxlRGVzY0NvcHlFbnRyeShUdXBsZURlc2MgZHN0LCBBdHRyTnVt YmVyIGRzdEF0dG5vLAogCXBvcHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKGRzdCwgZHN0QXR0bm8g LSAxKTsKIH0KIAorLyoKKyAqIFR1cGxlRGVzY0ZpbmFsaXplCisgKgkJRmluYWxpemUgdGhlIGdp dmVuIFR1cGxlRGVzYy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlCisgKgkJYXR0cmli dXRlcyBhcnJheXMgaGF2ZSBiZWVuIHBvcHVsYXRlZCBvciBhZGp1c3RlZCBieSBhbnkgY29kZS4K KyAqCisgKiBNdXN0IGJlIGNhbGxlZCBhZnRlciBwb3B1bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZSgp IGFuZCBiZWZvcmUKKyAqIEJsZXNzVHVwbGVEZXNjKCkuCisgKi8KK3ZvaWQKK1R1cGxlRGVzY0Zp bmFsaXplKFR1cGxlRGVzYyB0dXBkZXNjKQoreworCWludAkJCWZpcnN0Tm9uQ2FjaGVkT2ZmQXR0 ciA9IDA7CisJaW50CQkJb2ZmcCA9IDA7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IHR1cGRlc2Mt Pm5hdHRzOyBpKyspCisJeworCQlDb21wYWN0QXR0cmlidXRlICpjYXR0ciA9IFR1cGxlRGVzY0Nv bXBhY3RBdHRyKHR1cGRlc2MsIGkpOworCisJCWlmIChjYXR0ci0+YXR0bGVuIDw9IDApCisJCQli cmVhazsKKworCQlvZmZwID0gYXR0X25vbWluYWxfYWxpZ25ieShvZmZwLCBjYXR0ci0+YXR0YWxp Z25ieSk7CisJCWNhdHRyLT5hdHRjYWNoZW9mZiA9IG9mZnA7CisKKwkJb2ZmcCArPSBjYXR0ci0+ YXR0bGVuOworCQlmaXJzdE5vbkNhY2hlZE9mZkF0dHIgPSBpICsgMTsKKwl9CisKKwl0dXBkZXNj LT5maXJzdE5vbkNhY2hlZE9mZkF0dHIgPSBmaXJzdE5vbkNhY2hlZE9mZkF0dHI7Cit9CisKIC8q CiAgKiBGcmVlIGEgVHVwbGVEZXNjIGluY2x1ZGluZyBhbGwgc3Vic3RydWN0dXJlCiAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRpbHMuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRpbHMuYwppbmRleCBiMjQ2ZTgxMjdkYi4uYTQ2OTRiZDgw NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRpbHMuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMKQEAgLTMzNSw5ICszMzUsNiBA QCBnZXRTcEdpc3RUdXBsZURlc2MoUmVsYXRpb24gaW5kZXgsIFNwR2lzdFR5cGVEZXNjICprZXlU eXBlKQogCQkvKiBXZSBzaG91bGRuJ3QgbmVlZCB0byBib3RoZXIgd2l0aCBtYWtpbmcgdGhlc2Ug dmFsaWQ6ICovCiAJCWF0dC0+YXR0Y29tcHJlc3Npb24gPSBJbnZhbGlkQ29tcHJlc3Npb25NZXRo b2Q7CiAJCWF0dC0+YXR0Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKLQkJLyogSW4gY2FzZSB3ZSBj aGFuZ2VkIHR5cGxlbiwgd2UnZCBiZXR0ZXIgcmVzZXQgZm9sbG93aW5nIG9mZnNldHMgKi8KLQkJ Zm9yIChpbnQgaSA9IHNwZ0ZpcnN0SW5jbHVkZUNvbHVtbjsgaSA8IG91dFR1cERlc2MtPm5hdHRz OyBpKyspCi0JCQlUdXBsZURlc2NDb21wYWN0QXR0cihvdXRUdXBEZXNjLCBpKS0+YXR0Y2FjaGVv ZmYgPSAtMTsKIAogCQlwb3B1bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZShvdXRUdXBEZXNjLCBzcGdL ZXlDb2x1bW4pOwogCQlUdXBsZURlc2NGaW5hbGl6ZShvdXRUdXBEZXNjKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNUdXBsZXMuYwppbmRleCBlNmFiNTFlNjQwNC4uMzZkMGFhZWQyZmIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjVHVwbGVzLmMKQEAgLTk5MiwxMTggKzk5Miw2IEBAIHR0c19idWZmZXJfaGVhcF9z dG9yZV90dXBsZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgSGVhcFR1cGxlIHR1cGxlLAogCX0KIH0K IAotLyoKLSAqIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGVfaW50ZXJuYWwKLSAqCQlBbiBhbHdheXMg aW5saW5lIGhlbHBlciBmdW5jdGlvbiBmb3IgdXNlIGluIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUg dG8KLSAqCQlhbGxvdyB0aGUgY29tcGlsZXIgdG8gZW1pdCBzcGVjaWFsaXplZCB2ZXJzaW9ucyBv ZiB0aGlzIGZ1bmN0aW9uIGZvcgotICoJCXZhcmlvdXMgY29tYmluYXRpb25zIG9mICJzbG93IiBh bmQgImhhc251bGxzIi4gIEZvciBleGFtcGxlLCBpZiBhCi0gKgkJZ2l2ZW4gdHVwbGUgaGFzIG5v IG51bGxzLCB0aGVuIHdlIG5lZWRuJ3QgY2hlY2sgImhhc251bGxzIiBmb3IgZXZlcnkKLSAqCQlh dHRyaWJ1dGUgdGhhdCB3ZSdyZSBkZWZvcm1pbmcuICBUaGUgY2FsbGVyIGNhbiBqdXN0IGNhbGwg dGhpcwotICoJCWZ1bmN0aW9uIHdpdGggaGFzbnVsbHMgc2V0IHRvIGNvbnN0YW50LWZhbHNlIGFu ZCBoYXZlIHRoZSBjb21waWxlcgotICoJCXJlbW92ZSB0aGUgY29uc3RhbnQtZmFsc2UgYnJhbmNo ZXMgYW5kIGVtaXQgbW9yZSBvcHRpbWFsIGNvZGUuCi0gKgotICogUmV0dXJucyB0aGUgbmV4dCBh dHRudW0gdG8gZGVmb3JtLCB3aGljaCBjYW4gYmUgZXF1YWwgdG8gbmF0dHMgd2hlbiB0aGUKLSAq IGZ1bmN0aW9uIG1hbmFnZXMgdG8gZGVmb3JtIGFsbCByZXF1ZXN0ZWQgYXR0cmlidXRlcy4gICpv ZmZwIGlzIGFuIGlucHV0IGFuZAotICogb3V0cHV0IHBhcmFtZXRlciB3aGljaCBpcyB0aGUgYnl0 ZSBvZmZzZXQgd2l0aGluIHRoZSB0dXBsZSB0byBzdGFydCBkZWZvcm1pbmcKLSAqIGZyb20gd2hp Y2gsIG9uIHJldHVybiwgZ2V0cyBzZXQgdG8gdGhlIG9mZnNldCB3aGVyZSB0aGUgbmV4dCBhdHRy aWJ1dGUKLSAqIHNob3VsZCBiZSBkZWZvcm1lZCBmcm9tLiAgKnNsb3dwIGlzIHNldCB0byB0cnVl IHdoZW4gc3Vic2VxdWVudCBkZWZvcm1pbmcKLSAqIG9mIHRoaXMgdHVwbGUgbXVzdCB1c2UgYSB2 ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gd2l0aCAic2xvdyIgcGFzc2VkIGFzCi0gKiB0cnVlLgot ICoKLSAqIENhbGxlcnMgY2Fubm90IGFzc3VtZSB3aGVuIHdlIHJldHVybiAiYXR0bnVtIiAoaS5l LiBhbGwgcmVxdWVzdGVkCi0gKiBhdHRyaWJ1dGVzIGhhdmUgYmVlbiBkZWZvcm1lZCkgdGhhdCBz bG93IG1vZGUgaXNuJ3QgcmVxdWlyZWQgZm9yIGFueQotICogYWRkaXRpb25hbCBkZWZvcm1pbmcg YXMgdGhlIGZpbmFsIGF0dHJpYnV0ZSBtYXkgaGF2ZSBjYXVzZWQgYSBzd2l0Y2ggdG8KLSAqIHNs b3cgbW9kZS4KLSAqLwotc3RhdGljIHBnX2F0dHJpYnV0ZV9hbHdheXNfaW5saW5lIGludAotc2xv dF9kZWZvcm1faGVhcF90dXBsZV9pbnRlcm5hbChUdXBsZVRhYmxlU2xvdCAqc2xvdCwgSGVhcFR1 cGxlIHR1cGxlLAotCQkJCQkJCQlpbnQgYXR0bnVtLCBpbnQgbmF0dHMsIGJvb2wgc2xvdywKLQkJ CQkJCQkJYm9vbCBoYXNudWxscywgdWludDMyICpvZmZwLCBib29sICpzbG93cCkKLXsKLQlUdXBs ZURlc2MJdHVwbGVEZXNjID0gc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvcjsKLQlEYXR1bQkgICAq dmFsdWVzID0gc2xvdC0+dHRzX3ZhbHVlczsKLQlib29sCSAgICppc251bGwgPSBzbG90LT50dHNf aXNudWxsOwotCUhlYXBUdXBsZUhlYWRlciB0dXAgPSB0dXBsZS0+dF9kYXRhOwotCWNoYXIJICAg KnRwOwkJCQkvKiBwdHIgdG8gdHVwbGUgZGF0YSAqLwotCWJpdHM4CSAgICpicCA9IHR1cC0+dF9i aXRzOwkvKiBwdHIgdG8gbnVsbCBiaXRtYXAgaW4gdHVwbGUgKi8KLQlib29sCQlzbG93bmV4dCA9 IGZhbHNlOwotCi0JdHAgPSAoY2hhciAqKSB0dXAgKyB0dXAtPnRfaG9mZjsKLQotCWZvciAoOyBh dHRudW0gPCBuYXR0czsgYXR0bnVtKyspCi0JewotCQlDb21wYWN0QXR0cmlidXRlICp0aGlzYXR0 ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBhdHRudW0pOwotCi0JCWlmIChoYXNu dWxscyAmJiBhdHRfaXNudWxsKGF0dG51bSwgYnApKQotCQl7Ci0JCQl2YWx1ZXNbYXR0bnVtXSA9 IChEYXR1bSkgMDsKLQkJCWlzbnVsbFthdHRudW1dID0gdHJ1ZTsKLQkJCWlmICghc2xvdykKLQkJ CXsKLQkJCQkqc2xvd3AgPSB0cnVlOwotCQkJCXJldHVybiBhdHRudW0gKyAxOwotCQkJfQotCQkJ ZWxzZQotCQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJaXNudWxsW2F0dG51bV0gPSBmYWxzZTsKLQot CQkvKiBjYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGlzIGF0dHJpYnV0ZSAqLwotCQlpZiAoIXNs b3cgJiYgdGhpc2F0dC0+YXR0Y2FjaGVvZmYgPj0gMCkKLQkJCSpvZmZwID0gdGhpc2F0dC0+YXR0 Y2FjaGVvZmY7Ci0JCWVsc2UgaWYgKHRoaXNhdHQtPmF0dGxlbiA9PSAtMSkKLQkJewotCQkJLyoK LQkJCSAqIFdlIGNhbiBvbmx5IGNhY2hlIHRoZSBvZmZzZXQgZm9yIGEgdmFybGVuYSBhdHRyaWJ1 dGUgaWYgdGhlCi0JCQkgKiBvZmZzZXQgaXMgYWxyZWFkeSBzdWl0YWJseSBhbGlnbmVkLCBzbyB0 aGF0IHRoZXJlIHdvdWxkIGJlIG5vCi0JCQkgKiBwYWQgYnl0ZXMgaW4gYW55IGNhc2U6IHRoZW4g dGhlIG9mZnNldCB3aWxsIGJlIHZhbGlkIGZvciBlaXRoZXIKLQkJCSAqIGFuIGFsaWduZWQgb3Ig dW5hbGlnbmVkIHZhbHVlLgotCQkJICovCi0JCQlpZiAoIXNsb3cgJiYgKm9mZnAgPT0gYXR0X25v bWluYWxfYWxpZ25ieSgqb2ZmcCwgdGhpc2F0dC0+YXR0YWxpZ25ieSkpCi0JCQkJdGhpc2F0dC0+ YXR0Y2FjaGVvZmYgPSAqb2ZmcDsKLQkJCWVsc2UKLQkJCXsKLQkJCQkqb2ZmcCA9IGF0dF9wb2lu dGVyX2FsaWduYnkoKm9mZnAsCi0JCQkJCQkJCQkJCXRoaXNhdHQtPmF0dGFsaWduYnksCi0JCQkJ CQkJCQkJCS0xLAotCQkJCQkJCQkJCQl0cCArICpvZmZwKTsKLQotCQkJCWlmICghc2xvdykKLQkJ CQkJc2xvd25leHQgPSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UKLQkJewotCQkJLyogbm90IHZh cmxlbmEsIHNvIHNhZmUgdG8gdXNlIGF0dF9ub21pbmFsX2FsaWduYnkgKi8KLQkJCSpvZmZwID0g YXR0X25vbWluYWxfYWxpZ25ieSgqb2ZmcCwgdGhpc2F0dC0+YXR0YWxpZ25ieSk7Ci0KLQkJCWlm ICghc2xvdykKLQkJCQl0aGlzYXR0LT5hdHRjYWNoZW9mZiA9ICpvZmZwOwotCQl9Ci0KLQkJdmFs dWVzW2F0dG51bV0gPSBmZXRjaGF0dCh0aGlzYXR0LCB0cCArICpvZmZwKTsKLQotCQkqb2ZmcCA9 IGF0dF9hZGRsZW5ndGhfcG9pbnRlcigqb2ZmcCwgdGhpc2F0dC0+YXR0bGVuLCB0cCArICpvZmZw KTsKLQotCQkvKiBjaGVjayBpZiB3ZSBuZWVkIHRvIHN3aXRjaCB0byBzbG93IG1vZGUgKi8KLQkJ aWYgKCFzbG93KQotCQl7Ci0JCQkvKgotCQkJICogV2UncmUgdW5hYmxlIHRvIGRlZm9ybSBhbnkg ZnVydGhlciBpZiB0aGUgYWJvdmUgY29kZSBzZXQKLQkJCSAqICdzbG93bmV4dCcsIG9yIGlmIHRo aXMgaXNuJ3QgYSBmaXhlZC13aWR0aCBhdHRyaWJ1dGUuCi0JCQkgKi8KLQkJCWlmIChzbG93bmV4 dCB8fCB0aGlzYXR0LT5hdHRsZW4gPD0gMCkKLQkJCXsKLQkJCQkqc2xvd3AgPSB0cnVlOwotCQkJ CXJldHVybiBhdHRudW0gKyAxOwotCQkJfQotCQl9Ci0JfQotCi0JcmV0dXJuIG5hdHRzOwotfQot CiAvKgogICogc2xvdF9kZWZvcm1faGVhcF90dXBsZQogICoJCUdpdmVuIGEgVHVwbGVUYWJsZVNs b3QsIGV4dHJhY3QgZGF0YSBmcm9tIHRoZSBzbG90J3MgcGh5c2ljYWwgdHVwbGUKQEAgLTExMjIs NzggKzEwMTAsMTM4IEBAIHN0YXRpYyBwZ19hdHRyaWJ1dGVfYWx3YXlzX2lubGluZSB2b2lkCiBz bG90X2RlZm9ybV9oZWFwX3R1cGxlKFR1cGxlVGFibGVTbG90ICpzbG90LCBIZWFwVHVwbGUgdHVw bGUsIHVpbnQzMiAqb2ZmcCwKIAkJCQkJICAgaW50IG5hdHRzKQogeworCUNvbXBhY3RBdHRyaWJ1 dGUgKmNhdHRyOworCVR1cGxlRGVzYwl0dXBsZURlc2MgPSBzbG90LT50dHNfdHVwbGVEZXNjcmlw dG9yOwogCWJvb2wJCWhhc251bGxzID0gSGVhcFR1cGxlSGFzTnVsbHModHVwbGUpOworCUhlYXBU dXBsZUhlYWRlciB0dXAgPSB0dXBsZS0+dF9kYXRhOworCWJpdHM4CSAgICpicDsJCQkJLyogcHRy IHRvIG51bGwgYml0bWFwIGluIHR1cGxlICovCiAJaW50CQkJYXR0bnVtOworCWludAkJCWZpcnN0 Tm9uQ2FjaGVPZmZzZXRBdHRyOworCWludAkJCWZpcnN0TnVsbEF0dHI7CisJRGF0dW0JICAgKnZh bHVlczsKKwlib29sCSAgICppc251bGw7CisJY2hhcgkgICAqdHA7CQkJCS8qIHB0ciB0byB0dXBs ZSBkYXRhICovCiAJdWludDMyCQlvZmY7CQkJLyogb2Zmc2V0IGluIHR1cGxlIGRhdGEgKi8KLQli b29sCQlzbG93OwkJCS8qIGNhbiB3ZSB1c2Uvc2V0IGF0dGNhY2hlb2ZmPyAqLworCisJLyogRGlk IHNvbWVvbmUgZm9yZ2V0IHRvIGNhbGwgVHVwbGVEZXNjRmluYWxpemUoKT8gKi8KKwlBc3NlcnQo dHVwbGVEZXNjLT5maXJzdE5vbkNhY2hlZE9mZkF0dHIgPj0gMCk7CiAKIAkvKiBXZSBjYW4gb25s eSBmZXRjaCBhcyBtYW55IGF0dHJpYnV0ZXMgYXMgdGhlIHR1cGxlIGhhcy4gKi8KLQluYXR0cyA9 IE1pbihIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyh0dXBsZS0+dF9kYXRhKSwgbmF0dHMpOworCW5h dHRzID0gTWluKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKHR1cCksIG5hdHRzKTsKKwlhdHRudW0g PSBzbG90LT50dHNfbnZhbGlkOworCWZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRyID0gTWluKHR1cGxl RGVzYy0+Zmlyc3ROb25DYWNoZWRPZmZBdHRyLCBuYXR0cyk7CisKKwlpZiAoaGFzbnVsbHMpCisJ eworCQlicCA9IHR1cC0+dF9iaXRzOworCQlmaXJzdE51bGxBdHRyID0gZmlyc3RfbnVsbF9hdHRy KGJwLCBuYXR0cyk7CisJCWZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRyID0gTWluKGZpcnN0Tm9uQ2Fj aGVPZmZzZXRBdHRyLCBmaXJzdE51bGxBdHRyKTsKKwl9CisJZWxzZQorCXsKKwkJYnAgPSBOVUxM OworCQlmaXJzdE51bGxBdHRyID0gbmF0dHM7CisJfQorCisJdmFsdWVzID0gc2xvdC0+dHRzX3Zh bHVlczsKKwlpc251bGwgPSBzbG90LT50dHNfaXNudWxsOworCXRwID0gKGNoYXIgKikgdHVwICsg dHVwLT50X2hvZmY7CiAKIAkvKgotCSAqIENoZWNrIHdoZXRoZXIgdGhlIGZpcnN0IGNhbGwgZm9y IHRoaXMgdHVwbGUsIGFuZCBpbml0aWFsaXplIG9yIHJlc3RvcmUKLQkgKiBsb29wIHN0YXRlLgor CSAqIEhhbmRsZSB0aGUgcG9ydGlvbiBvZiB0aGUgdHVwbGUgdGhhdCB3ZSBoYXZlIGNhY2hlZCB0 aGUgb2Zmc2V0IGZvciB1cAorCSAqIHRvIHRoZSBmaXJzdCBOVUxMIGF0dHJpYnV0ZS4gIFRoZSBv ZmZzZXQgaXMgZWZmZWN0aXZlbHkgZml4ZWQgZm9yIHRoZXNlCisJICogc28gd2UgY2FuIHVzZSB0 aGUgQ29tcGFjdEF0dHJpYnV0ZSdzIGF0dGNhY2hlb2ZmLgogCSAqLwotCWF0dG51bSA9IHNsb3Qt PnR0c19udmFsaWQ7Ci0JaWYgKGF0dG51bSA9PSAwKQorCWlmIChhdHRudW0gPCBmaXJzdE5vbkNh Y2hlT2Zmc2V0QXR0cikKIAl7Ci0JCS8qIFN0YXJ0IGZyb20gdGhlIGZpcnN0IGF0dHJpYnV0ZSAq LwotCQlvZmYgPSAwOwotCQlzbG93ID0gZmFsc2U7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lO RworCQlpbnQJCQlvZmZjaGVjazsKKworCQkvKiBJbiBBc3NlcnQgZW5hYmxlZCBidWlsZHMsIHZl cmlmeSBhdHRjYWNoZW9mZiBpcyBjb3JyZWN0ICovCisJCWlmIChhdHRudW0gPT0gMCkKKwkJCW9m ZmNoZWNrID0gMDsKKwkJZWxzZQorCQkJb2ZmY2hlY2sgPSAqb2ZmcDsKKyNlbmRpZgorCQlkbwor CQl7CisJCQlpc251bGxbYXR0bnVtXSA9IGZhbHNlOworCQkJY2F0dHIgPSBUdXBsZURlc2NDb21w YWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSk7CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5H CisJCQlvZmZjaGVjayA9IGF0dF9ub21pbmFsX2FsaWduYnkob2ZmY2hlY2ssIGNhdHRyLT5hdHRh bGlnbmJ5KTsKKwkJCUFzc2VydChvZmZjaGVjayA9PSBjYXR0ci0+YXR0Y2FjaGVvZmYpOworCQkJ b2ZmY2hlY2sgKz0gY2F0dHItPmF0dGxlbjsKKyNlbmRpZgorCisJCQl2YWx1ZXNbYXR0bnVtXSA9 IGZldGNoYXR0KGNhdHRyLCB0cCArIGNhdHRyLT5hdHRjYWNoZW9mZik7CisJCX0gd2hpbGUgKCsr YXR0bnVtIDwgZmlyc3ROb25DYWNoZU9mZnNldEF0dHIpOworCisJCS8qCisJCSAqIFBvaW50IHRo ZSBvZmZzZXQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbGFzdCBhdHRyaWJ1dGUgd2l0aCBhIGNhY2hl ZAorCQkgKiBvZmZzZXQuICBXZSBleHBlY3QgdGhlIGZpbmFsIGNhY2hlZCBvZmZzZXQgYXR0cmli dXRlIHRvIGhhdmUgYQorCQkgKiBmaXhlZCB3aWR0aCwgc28ganVzdCBhZGQgdGhlIGF0dGxlbiB0 byB0aGUgYXR0Y2FjaGVvZmYKKwkJICovCisJCUFzc2VydChjYXR0ci0+YXR0bGVuID4gMCk7CisJ CW9mZiA9IGNhdHRyLT5hdHRjYWNoZW9mZiArIGNhdHRyLT5hdHRsZW47CiAJfQogCWVsc2UKIAl7 CiAJCS8qIFJlc3RvcmUgc3RhdGUgZnJvbSBwcmV2aW91cyBleGVjdXRpb24gKi8KIAkJb2ZmID0g Km9mZnA7Ci0JCXNsb3cgPSBUVFNfU0xPVyhzbG90KTsKKworCQkvKiBXZSBleHBlY3QgKm9mZnAg dG8gYmUgc2V0IHRvIDAgd2hlbiBhdHRudW0gPT0gMCAqLworCQlBc3NlcnQob2ZmID09IDAgfHwg YXR0bnVtID4gMCk7CiAJfQogCiAJLyoKLQkgKiBJZiAnc2xvdycgaXNuJ3Qgc2V0LCB0cnkgZGVm b3JtaW5nIHVzaW5nIGRlZm9ybWluZyBjb2RlIHRoYXQgZG9lcyBub3QKLQkgKiBjb250YWluIGFu eSBvZiB0aGUgZXh0cmEgY2hlY2tzIHJlcXVpcmVkIGZvciBub24tZml4ZWQgb2Zmc2V0Ci0JICog ZGVmb3JtaW5nLiAgRHVyaW5nIGRlZm9ybWluZywgaWYgb3Igd2hlbiB3ZSBmaW5kIGEgTlVMTCBv ciBhIHZhcmlhYmxlCi0JICogbGVuZ3RoIGF0dHJpYnV0ZSwgd2UnbGwgc3dpdGNoIHRvIGEgZGVm b3JtaW5nIG1ldGhvZCB3aGljaCBpbmNsdWRlcyB0aGUKLQkgKiBleHRyYSBjb2RlIHJlcXVpcmVk IGZvciBub24tZml4ZWQgb2Zmc2V0IGRlZm9ybWluZywgYS5rLmEgc2xvdyBtb2RlLgotCSAqIEJl Y2F1c2UgdGhpcyBpcyBwZXJmb3JtYW5jZSBjcml0aWNhbCwgd2UgaW5saW5lCi0JICogc2xvdF9k ZWZvcm1faGVhcF90dXBsZV9pbnRlcm5hbCBwYXNzaW5nIHRoZSAnc2xvdycgYW5kICdoYXNudWxs JwotCSAqIHBhcmFtZXRlcnMgYXMgY29uc3RhbnRzIHRvIGFsbG93IHRoZSBjb21waWxlciB0byBl bWl0IHNwZWNpYWxpemVkIGNvZGUKLQkgKiB3aXRoIHRoZSBrbm93bi1jb25zdCBmYWxzZSBjb21w YXJpc29ucyBhbmQgc3Vic2VxdWVudCBicmFuY2hlcyByZW1vdmVkLgorCSAqIEhhbmRsZSBhbnkg cG9ydGlvbiBvZiB0aGUgdHVwbGUgdGhhdCBkb2Vzbid0IGhhdmUgYSBmaXhlZCBvZmZzZXQgdXAK KwkgKiB1bnRpbCB0aGUgZmlyc3QgTlVMTCBhdHRyaWJ1dGUuICBUaGlzIGxvb3BzIG9ubHkgZGlm ZmVycyBmcm9tIHRoZSBvbmUKKwkgKiBhZnRlciBpdCBieSB0aGUgTlVMTCBjaGVja3MuCiAJICov Ci0JaWYgKCFzbG93KQorCWZvciAoOyBhdHRudW0gPCBmaXJzdE51bGxBdHRyOyBhdHRudW0rKykK IAl7Ci0JCS8qIFR1cGxlIHdpdGhvdXQgYW55IE5VTExzPyBXZSBjYW4gc2tpcCBkb2luZyBhbnkg TlVMTCBjaGVja2luZyAqLwotCQlpZiAoIWhhc251bGxzKQotCQkJYXR0bnVtID0gc2xvdF9kZWZv cm1faGVhcF90dXBsZV9pbnRlcm5hbChzbG90LAotCQkJCQkJCQkJCQkJCSB0dXBsZSwKLQkJCQkJ CQkJCQkJCQkgYXR0bnVtLAotCQkJCQkJCQkJCQkJCSBuYXR0cywKLQkJCQkJCQkJCQkJCQkgZmFs c2UsIC8qIHNsb3cgKi8KLQkJCQkJCQkJCQkJCQkgZmFsc2UsIC8qIGhhc251bGxzICovCi0JCQkJ CQkJCQkJCQkJICZvZmYsCi0JCQkJCQkJCQkJCQkJICZzbG93KTsKLQkJZWxzZQotCQkJYXR0bnVt ID0gc2xvdF9kZWZvcm1faGVhcF90dXBsZV9pbnRlcm5hbChzbG90LAotCQkJCQkJCQkJCQkJCSB0 dXBsZSwKLQkJCQkJCQkJCQkJCQkgYXR0bnVtLAotCQkJCQkJCQkJCQkJCSBuYXR0cywKLQkJCQkJ CQkJCQkJCQkgZmFsc2UsIC8qIHNsb3cgKi8KLQkJCQkJCQkJCQkJCQkgdHJ1ZSwJLyogaGFzbnVs bHMgKi8KLQkJCQkJCQkJCQkJCQkgJm9mZiwKLQkJCQkJCQkJCQkJCQkgJnNsb3cpOworCQlpc251 bGxbYXR0bnVtXSA9IGZhbHNlOworCQljYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxl RGVzYywgYXR0bnVtKTsKKworCQkvKiBhbGlnbiB0aGUgb2Zmc2V0IGZvciB0aGlzIGF0dHJpYnV0 ZSAqLworCQlvZmYgPSBhdHRfcG9pbnRlcl9hbGlnbmJ5KG9mZiwKKwkJCQkJCQkJICBjYXR0ci0+ YXR0YWxpZ25ieSwKKwkJCQkJCQkJICBjYXR0ci0+YXR0bGVuLAorCQkJCQkJCQkgIHRwICsgb2Zm KTsKKworCQl2YWx1ZXNbYXR0bnVtXSA9IGZldGNoYXR0KGNhdHRyLCB0cCArIG9mZik7CisKKwkJ LyogbW92ZSB0aGUgb2Zmc2V0IGJleW9uZCB0aGlzIGF0dHJpYnV0ZSAqLworCQlvZmYgPSBhdHRf YWRkbGVuZ3RoX3BvaW50ZXIob2ZmLCBjYXR0ci0+YXR0bGVuLCB0cCArIG9mZik7CiAJfQogCi0J LyogSWYgdGhlcmUncyBzdGlsbCB3b3JrIHRvIGRvIHRoZW4gd2UgbXVzdCBiZSBpbiBzbG93IG1v ZGUgKi8KLQlpZiAoYXR0bnVtIDwgbmF0dHMpCisJLyoKKwkgKiBOb3cgaGFuZGxlIGFueSByZW1h aW5pbmcgdHVwbGVzLCB0aGlzIHRpbWUgaW5jbHVkZSBOVUxMIGNoZWNrcyBhcyB3ZSdyZQorCSAq IG5vdyBhdCB0aGUgZmlyc3QgTlVMTCBhdHRyaWJ1dGUuCisJICovCisJZm9yICg7IGF0dG51bSA8 IG5hdHRzOyBhdHRudW0rKykKIAl7Ci0JCS8qIFhYWCBpcyBpdCB3b3J0aCBhZGRpbmcgYSBzZXBh cmF0ZSBjYWxsIHdoZW4gaGFzbnVsbHMgaXMgZmFsc2U/ICovCi0JCWF0dG51bSA9IHNsb3RfZGVm b3JtX2hlYXBfdHVwbGVfaW50ZXJuYWwoc2xvdCwKLQkJCQkJCQkJCQkJCSB0dXBsZSwKLQkJCQkJ CQkJCQkJCSBhdHRudW0sCi0JCQkJCQkJCQkJCQkgbmF0dHMsCi0JCQkJCQkJCQkJCQkgdHJ1ZSwJ Lyogc2xvdyAqLwotCQkJCQkJCQkJCQkJIGhhc251bGxzLAotCQkJCQkJCQkJCQkJICZvZmYsCi0J CQkJCQkJCQkJCQkgJnNsb3cpOworCQlpZiAoYXR0X2lzbnVsbChhdHRudW0sIGJwKSkKKwkJewor CQkJdmFsdWVzW2F0dG51bV0gPSAoRGF0dW0pIDA7CisJCQlpc251bGxbYXR0bnVtXSA9IHRydWU7 CisJCQljb250aW51ZTsKKwkJfQorCisJCWlzbnVsbFthdHRudW1dID0gZmFsc2U7CisJCWNhdHRy ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBhdHRudW0pOworCisJCS8qIGFsaWdu IHRoZSBvZmZzZXQgZm9yIHRoaXMgYXR0cmlidXRlICovCisJCW9mZiA9IGF0dF9wb2ludGVyX2Fs aWduYnkob2ZmLAorCQkJCQkJCQkgIGNhdHRyLT5hdHRhbGlnbmJ5LAorCQkJCQkJCQkgIGNhdHRy LT5hdHRsZW4sCisJCQkJCQkJCSAgdHAgKyBvZmYpOworCisJCXZhbHVlc1thdHRudW1dID0gZmV0 Y2hhdHQoY2F0dHIsIHRwICsgb2ZmKTsKKworCQkvKiBtb3ZlIHRoZSBvZmZzZXQgYmV5b25kIHRo aXMgYXR0cmlidXRlICovCisJCW9mZiA9IGF0dF9hZGRsZW5ndGhfcG9pbnRlcihvZmYsIGNhdHRy LT5hdHRsZW4sIHRwICsgb2ZmKTsKIAl9CiAKIAkvKgpAQCAtMTIwMSwxMCArMTE0OSw2IEBAIHNs b3RfZGVmb3JtX2hlYXBfdHVwbGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEhlYXBUdXBsZSB0dXBs ZSwgdWludDMyICpvZmZwLAogCSAqLwogCXNsb3QtPnR0c19udmFsaWQgPSBhdHRudW07CiAJKm9m ZnAgPSBvZmY7Ci0JaWYgKHNsb3cpCi0JCXNsb3QtPnR0c19mbGFncyB8PSBUVFNfRkxBR19TTE9X OwotCWVsc2UKLQkJc2xvdC0+dHRzX2ZsYWdzICY9IH5UVFNfRkxBR19TTE9XOwogfQogCiBjb25z dCBUdXBsZVRhYmxlU2xvdE9wcyBUVFNPcHNWaXJ0dWFsID0gewpAQCAtMjI1OSwxMCArMjIwMywx NiBAQCBFeGVjVHlwZVNldENvbE5hbWVzKFR1cGxlRGVzYyB0eXBlSW5mbywgTGlzdCAqbmFtZXNM aXN0KQogICogVGhpcyBoYXBwZW5zICJmb3IgZnJlZSIgaWYgdGhlIHR1cGRlc2MgY2FtZSBmcm9t IGEgcmVsY2FjaGUgZW50cnksIGJ1dAogICogbm90IGlmIHdlIGhhdmUgbWFudWZhY3R1cmVkIGEg dHVwZGVzYyBmb3IgYSB0cmFuc2llbnQgUkVDT1JEIGRhdGF0eXBlLgogICogSW4gdGhhdCBjYXNl IHdlIGhhdmUgdG8gbm90aWZ5IHR5cGNhY2hlLmMgb2YgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgdHlw ZS4KKyAqCisgKiBUdXBsZURlc2NGaW5hbGl6ZSgpIG11c3QgYmUgY2FsbGVkIG9uIHRoZSBUdXBs ZURlc2MgYmVmb3JlIGNhbGxpbmcgdGhpcworICogZnVuY3Rpb24uCiAgKi8KIFR1cGxlRGVzYwog Qmxlc3NUdXBsZURlc2MoVHVwbGVEZXNjIHR1cGRlc2MpCiB7CisJLyogRGlkIHNvbWVvbmUgZm9y Z2V0IHRvIGNhbGwgVHVwbGVEZXNjRmluYWxpemUoKT8gKi8KKwlBc3NlcnQodHVwZGVzYy0+Zmly c3ROb25DYWNoZWRPZmZBdHRyID49IDApOworCiAJaWYgKHR1cGRlc2MtPnRkdHlwZWlkID09IFJF Q09SRE9JRCAmJgogCQl0dXBkZXNjLT50ZHR5cG1vZCA8IDApCiAJCWFzc2lnbl9yZWNvcmRfdHlw ZV90eXBtb2QodHVwZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0X2RlZm9ybS5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9kZWZvcm0uYwppbmRl eCAzZWIwODdlYjU2Yi4uMTI1MjFlM2U0NmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9s bHZtL2xsdm1qaXRfZGVmb3JtLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9k ZWZvcm0uYwpAQCAtNjIsNyArNjIsNiBAQCBzbG90X2NvbXBpbGVfZGVmb3JtKExMVk1KaXRDb250 ZXh0ICpjb250ZXh0LCBUdXBsZURlc2MgZGVzYywKIAlMTFZNVmFsdWVSZWYgdl90dHNfdmFsdWVz OwogCUxMVk1WYWx1ZVJlZiB2X3R0c19udWxsczsKIAlMTFZNVmFsdWVSZWYgdl9zbG90b2ZmcDsK LQlMTFZNVmFsdWVSZWYgdl9mbGFnc3A7CiAJTExWTVZhbHVlUmVmIHZfbnZhbGlkcDsKIAlMTFZN VmFsdWVSZWYgdl9udmFsaWQ7CiAJTExWTVZhbHVlUmVmIHZfbWF4YXR0OwpAQCAtMTc4LDcgKzE3 Nyw2IEBAIHNsb3RfY29tcGlsZV9kZWZvcm0oTExWTUppdENvbnRleHQgKmNvbnRleHQsIFR1cGxl RGVzYyBkZXNjLAogCXZfdHRzX251bGxzID0KIAkJbF9sb2FkX3N0cnVjdF9nZXAoYiwgU3RydWN0 VHVwbGVUYWJsZVNsb3QsIHZfc2xvdCwgRklFTEROT19UVVBMRVRBQkxFU0xPVF9JU05VTEwsCiAJ CQkJCQkgICJ0dHNfSVNOVUxMIik7Ci0Jdl9mbGFnc3AgPSBsX3N0cnVjdF9nZXAoYiwgU3RydWN0 VHVwbGVUYWJsZVNsb3QsIHZfc2xvdCwgRklFTEROT19UVVBMRVRBQkxFU0xPVF9GTEFHUywgIiIp OwogCXZfbnZhbGlkcCA9IGxfc3RydWN0X2dlcChiLCBTdHJ1Y3RUdXBsZVRhYmxlU2xvdCwgdl9z bG90LCBGSUVMRE5PX1RVUExFVEFCTEVTTE9UX05WQUxJRCwgIiIpOwogCiAJaWYgKG9wcyA9PSAm VFRTT3BzSGVhcFR1cGxlIHx8IG9wcyA9PSAmVFRTT3BzQnVmZmVySGVhcFR1cGxlKQpAQCAtNzQ3 LDE0ICs3NDUsMTAgQEAgc2xvdF9jb21waWxlX2RlZm9ybShMTFZNSml0Q29udGV4dCAqY29udGV4 dCwgVHVwbGVEZXNjIGRlc2MsCiAKIAl7CiAJCUxMVk1WYWx1ZVJlZiB2X29mZiA9IGxfbG9hZChi LCBUeXBlU2l6ZVQsIHZfb2ZmcCwgIiIpOwotCQlMTFZNVmFsdWVSZWYgdl9mbGFnczsKIAogCQlM TFZNQnVpbGRTdG9yZShiLCBsX2ludDE2X2NvbnN0KGxjLCBuYXR0cyksIHZfbnZhbGlkcCk7CiAJ CXZfb2ZmID0gTExWTUJ1aWxkVHJ1bmMoYiwgdl9vZmYsIExMVk1JbnQzMlR5cGVJbkNvbnRleHQo bGMpLCAiIik7CiAJCUxMVk1CdWlsZFN0b3JlKGIsIHZfb2ZmLCB2X3Nsb3RvZmZwKTsKLQkJdl9m bGFncyA9IGxfbG9hZChiLCBMTFZNSW50MTZUeXBlSW5Db250ZXh0KGxjKSwgdl9mbGFnc3AsICJ0 dHNfZmxhZ3MiKTsKLQkJdl9mbGFncyA9IExMVk1CdWlsZE9yKGIsIHZfZmxhZ3MsIGxfaW50MTZf Y29uc3QobGMsIFRUU19GTEFHX1NMT1cpLCAiIik7Ci0JCUxMVk1CdWlsZFN0b3JlKGIsIHZfZmxh Z3MsIHZfZmxhZ3NwKTsKIAkJTExWTUJ1aWxkUmV0Vm9pZChiKTsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jCmluZGV4IDc3MGVkYjM0ZTA4Li45OThiZTI0YWM0MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC02NjYsMTQgKzY2Niw2IEBAIFJlbGF0aW9uQnVpbGRU dXBsZURlc2MoUmVsYXRpb24gcmVsYXRpb24pCiAJCWVsb2coRVJST1IsICJwZ19hdHRyaWJ1dGUg Y2F0YWxvZyBpcyBtaXNzaW5nICVkIGF0dHJpYnV0ZShzKSBmb3IgcmVsYXRpb24gT0lEICV1IiwK IAkJCSBuZWVkLCBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSk7CiAKLQkvKgotCSAqIFdlIGNh biBlYXNpbHkgc2V0IHRoZSBhdHRjYWNoZW9mZiB2YWx1ZSBmb3IgdGhlIGZpcnN0IGF0dHJpYnV0 ZTogaXQKLQkgKiBtdXN0IGJlIHplcm8uICBUaGlzIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIHNw ZWNpYWwgY2FzZXMgZm9yIGF0dG51bT0xCi0JICogdGhhdCB1c2VkIHRvIGV4aXN0IGluIGZhc3Rn ZXRhdHRyKCkgYW5kIGluZGV4X2dldGF0dHIoKS4KLQkgKi8KLQlpZiAoUmVsYXRpb25HZXROdW1i ZXJPZkF0dHJpYnV0ZXMocmVsYXRpb24pID4gMCkKLQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIocmVs YXRpb24tPnJkX2F0dCwgMCktPmF0dGNhY2hlb2ZmID0gMDsKLQogCS8qCiAJICogU2V0IHVwIGNv bnN0cmFpbnQvZGVmYXVsdCBpbmZvCiAJICovCkBAIC0xOTg1LDggKzE5NzcsNiBAQCBmb3JtcmRl c2MoY29uc3QgY2hhciAqcmVsYXRpb25OYW1lLCBPaWQgcmVsYXRpb25SZWx0eXBlLAogCQlwb3B1 bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZShyZWxhdGlvbi0+cmRfYXR0LCBpKTsKIAl9CiAKLQkvKiBp bml0aWFsaXplIGZpcnN0IGF0dHJpYnV0ZSdzIGF0dGNhY2hlb2ZmLCBjZiBSZWxhdGlvbkJ1aWxk VHVwbGVEZXNjICovCi0JVHVwbGVEZXNjQ29tcGFjdEF0dHIocmVsYXRpb24tPnJkX2F0dCwgMCkt PmF0dGNhY2hlb2ZmID0gMDsKIAlUdXBsZURlc2NGaW5hbGl6ZShyZWxhdGlvbi0+cmRfYXR0KTsK IAogCS8qIG1hcmsgbm90LW51bGwgc3RhdHVzICovCkBAIC00NDQ2LDggKzQ0MzYsNiBAQCBCdWls ZEhhcmRjb2RlZERlc2NyaXB0b3IoaW50IG5hdHRzLCBjb25zdCBGb3JtRGF0YV9wZ19hdHRyaWJ1 dGUgKmF0dHJzKQogCQlwb3B1bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZShyZXN1bHQsIGkpOwogCX0K IAotCS8qIGluaXRpYWxpemUgZmlyc3QgYXR0cmlidXRlJ3MgYXR0Y2FjaGVvZmYsIGNmIFJlbGF0 aW9uQnVpbGRUdXBsZURlc2MgKi8KLQlUdXBsZURlc2NDb21wYWN0QXR0cihyZXN1bHQsIDApLT5h dHRjYWNoZW9mZiA9IDA7CiAJVHVwbGVEZXNjRmluYWxpemUocmVzdWx0KTsKIAogCS8qIE5vdGU6 IHdlIGRvbid0IGJvdGhlciB0byBzZXQgdXAgYSBUdXBsZUNvbnN0ciBlbnRyeSAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2h0dXBfZGV0YWlscy5oCmluZGV4IGQ0MDY4MjVmZjIyLi45NGI0Mjc5YjdmMSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9odHVwX2RldGFpbHMuaApAQCAtODY1LDIwICs4NjUsMTcgQEAgZXh0ZXJuIE1pbmlt YWxUdXBsZSBtaW5pbWFsX2V4cGFuZF90dXBsZShIZWFwVHVwbGUgc291cmNlVHVwbGUsIFR1cGxl RGVzYyB0dXBsZUQKIHN0YXRpYyBpbmxpbmUgRGF0dW0KIGZhc3RnZXRhdHRyKEhlYXBUdXBsZSB0 dXAsIGludCBhdHRudW0sIFR1cGxlRGVzYyB0dXBsZURlc2MsIGJvb2wgKmlzbnVsbCkKIHsKLQlB c3NlcnQoYXR0bnVtID4gMCk7CisJQ29tcGFjdEF0dHJpYnV0ZSAqYXR0ID0gVHVwbGVEZXNjQ29t cGFjdEF0dHIodHVwbGVEZXNjLCBhdHRudW0gLSAxKTsKIAorCUFzc2VydChhdHRudW0gPiAwKTsK IAkqaXNudWxsID0gZmFsc2U7Ci0JaWYgKEhlYXBUdXBsZU5vTnVsbHModHVwKSkKLQl7Ci0JCUNv bXBhY3RBdHRyaWJ1dGUgKmF0dDsKIAotCQlhdHQgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBs ZURlc2MsIGF0dG51bSAtIDEpOwotCQlpZiAoYXR0LT5hdHRjYWNoZW9mZiA+PSAwKQotCQkJcmV0 dXJuIGZldGNoYXR0KGF0dCwgKGNoYXIgKikgdHVwLT50X2RhdGEgKyB0dXAtPnRfZGF0YS0+dF9o b2ZmICsKLQkJCQkJCQlhdHQtPmF0dGNhY2hlb2ZmKTsKLQkJZWxzZQotCQkJcmV0dXJuIG5vY2Fj aGVnZXRhdHRyKHR1cCwgYXR0bnVtLCB0dXBsZURlc2MpOwotCX0KKwlpZiAoYXR0LT5hdHRjYWNo ZW9mZiA+PSAwICYmICFIZWFwVHVwbGVIYXNOdWxscyh0dXApKQorCQlyZXR1cm4gZmV0Y2hhdHQo YXR0LCAoY2hhciAqKSB0dXAtPnRfZGF0YSArIHR1cC0+dF9kYXRhLT50X2hvZmYgKworCQkJCQkJ YXR0LT5hdHRjYWNoZW9mZik7CisKKwlpZiAoSGVhcFR1cGxlTm9OdWxscyh0dXApKQorCQlyZXR1 cm4gbm9jYWNoZWdldGF0dHIodHVwLCBhdHRudW0sIHR1cGxlRGVzYyk7CiAJZWxzZQogCXsKIAkJ aWYgKGF0dF9pc251bGwoYXR0bnVtIC0gMSwgdHVwLT50X2RhdGEtPnRfYml0cykpCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaXR1cC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2l0dXAu aAppbmRleCA1N2U0ZGFhZmIwZC4uZTRiYjI3YjdlNTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9pdHVwLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2l0dXAuaApAQCAtMTMxLDI0 ICsxMzEsMjAgQEAgSW5kZXhJbmZvRmluZERhdGFPZmZzZXQodW5zaWduZWQgc2hvcnQgdF9pbmZv KQogc3RhdGljIGlubGluZSBEYXR1bQogaW5kZXhfZ2V0YXR0cihJbmRleFR1cGxlIHR1cCwgaW50 IGF0dG51bSwgVHVwbGVEZXNjIHR1cGxlRGVzYywgYm9vbCAqaXNudWxsKQogeworCUNvbXBhY3RB dHRyaWJ1dGUgKmF0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSAt IDEpOworCiAJQXNzZXJ0KGlzbnVsbCk7CiAJQXNzZXJ0KGF0dG51bSA+IDApOwogCiAJKmlzbnVs bCA9IGZhbHNlOwogCi0JaWYgKCFJbmRleFR1cGxlSGFzTnVsbHModHVwKSkKLQl7Ci0JCUNvbXBh Y3RBdHRyaWJ1dGUgKmF0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51 bSAtIDEpOworCWlmIChhdHRyLT5hdHRjYWNoZW9mZiA+PSAwICYmICFJbmRleFR1cGxlSGFzTnVs bHModHVwKSkKKwkJcmV0dXJuIGZldGNoYXR0KGF0dHIsCisJCQkJCQkoY2hhciAqKSB0dXAgKyBJ bmRleEluZm9GaW5kRGF0YU9mZnNldCh0dXAtPnRfaW5mbykgKworCQkJCQkJYXR0ci0+YXR0Y2Fj aGVvZmYpOwogCi0JCWlmIChhdHRyLT5hdHRjYWNoZW9mZiA+PSAwKQotCQl7Ci0JCQlyZXR1cm4g ZmV0Y2hhdHQoYXR0ciwKLQkJCQkJCQkoY2hhciAqKSB0dXAgKyBJbmRleEluZm9GaW5kRGF0YU9m ZnNldCh0dXAtPnRfaW5mbykgKwotCQkJCQkJCWF0dHItPmF0dGNhY2hlb2ZmKTsKLQkJfQotCQll bHNlCi0JCQlyZXR1cm4gbm9jYWNoZV9pbmRleF9nZXRhdHRyKHR1cCwgYXR0bnVtLCB0dXBsZURl c2MpOwotCX0KKwlpZiAoIUluZGV4VHVwbGVIYXNOdWxscyh0dXApKQorCQlyZXR1cm4gbm9jYWNo ZV9pbmRleF9nZXRhdHRyKHR1cCwgYXR0bnVtLCB0dXBsZURlc2MpOwogCWVsc2UKIAl7CiAJCWlm IChhdHRfaXNudWxsKGF0dG51bSAtIDEsIChiaXRzOCAqKSB0dXAgKyBzaXplb2YoSW5kZXhUdXBs ZURhdGEpKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBkZXNjLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvdHVwZGVzYy5oCmluZGV4IDU5NTQxM2RiYmM1Li45OWQ5MDE3ZDFhNiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdHVwZGVzYy5oCkBAIC0xMzEsNiArMTMxLDEyIEBAIHR5cGVkZWYgc3RydWN0IENv bXBhY3RBdHRyaWJ1dGUKICAqIEFueSBjb2RlIG1ha2luZyBjaGFuZ2VzIG1hbnVhbGx5IHRvIGFu ZCBmaWVsZHMgaW4gdGhlIEZvcm1EYXRhX3BnX2F0dHJpYnV0ZQogICogYXJyYXkgbXVzdCBzdWJz ZXF1ZW50bHkgY2FsbCBwb3B1bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZSgpIHRvIGZsdXNoIHRoZQog ICogY2hhbmdlcyBvdXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgJ2NvbXBhY3RfYXR0cnMnIGVsZW1l bnQuCisgKgorICogZmlyc3ROb25DYWNoZWRPZmZBdHRyIHN0b3JlcyB0aGUgaW5kZXggaW50byB0 aGUgY29tcGFjdF9hdHRycyBhcnJheSBmb3IgdGhlCisgKiBmaXJzdCBhdHRyaWJ1dGUgdGhhdCB3 ZSBkb24ndCBoYXZlIGEga25vd24gYXR0Y2FjaGVvZmYgZm9yLgorICoKKyAqIE9uY2UgYSBUdXBs ZURlc2MgaGFzIGJlZW4gcG9wdWxhdGVkLCBiZWZvcmUgaXQgaXMgdXNlZCBmb3IgYW55IHB1cnBv c2UKKyAqIFR1cGxlRGVzY0ZpbmFsaXplKCkgbXVzdCBiZSBjYWxsZWQgb24gaXQuCiAgKi8KIHR5 cGVkZWYgc3RydWN0IFR1cGxlRGVzY0RhdGEKIHsKQEAgLTEzOCw2ICsxNDQsOCBAQCB0eXBlZGVm IHN0cnVjdCBUdXBsZURlc2NEYXRhCiAJT2lkCQkJdGR0eXBlaWQ7CQkvKiBjb21wb3NpdGUgdHlw ZSBJRCBmb3IgdHVwbGUgdHlwZSAqLwogCWludDMyCQl0ZHR5cG1vZDsJCS8qIHR5cG1vZCBmb3Ig dHVwbGUgdHlwZSAqLwogCWludAkJCXRkcmVmY291bnQ7CQkvKiByZWZlcmVuY2UgY291bnQsIG9y IC0xIGlmIG5vdCBjb3VudGluZyAqLworCWludAkJCWZpcnN0Tm9uQ2FjaGVkT2ZmQXR0cjsJLyog aW5kZXggb2YgdGhlIGZpcnN0IGF0dCB3aXRob3V0IGFuCisJCQkJCQkJCQkJICogYXR0Y2FjaGVv ZmYgKi8KIAlUdXBsZUNvbnN0ciAqY29uc3RyOwkJLyogY29uc3RyYWludHMsIG9yIE5VTEwgaWYg bm9uZSAqLwogCS8qIGNvbXBhY3RfYXR0cnNbTl0gaXMgdGhlIGNvbXBhY3QgbWV0YWRhdGEgb2Yg QXR0cmlidXRlIE51bWJlciBOKzEgKi8KIAlDb21wYWN0QXR0cmlidXRlIGNvbXBhY3RfYXR0cnNb RkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKQEAgLTE5NSw3ICsyMDMsNiBAQCBleHRlcm4gVHVwbGVE ZXNjIENyZWF0ZVR1cGxlRGVzY1RydW5jYXRlZENvcHkoVHVwbGVEZXNjIHR1cGRlc2MsIGludCBu YXR0cyk7CiAKIGV4dGVybiBUdXBsZURlc2MgQ3JlYXRlVHVwbGVEZXNjQ29weUNvbnN0cihUdXBs ZURlc2MgdHVwZGVzYyk7CiAKLSNkZWZpbmUgVHVwbGVEZXNjRmluYWxpemUoZCkgKCh2b2lkKSAw KQogI2RlZmluZSBUdXBsZURlc2NTaXplKHNyYykgXAogCShvZmZzZXRvZihzdHJ1Y3QgVHVwbGVE ZXNjRGF0YSwgY29tcGFjdF9hdHRycykgKyBcCiAJIChzcmMpLT5uYXR0cyAqIHNpemVvZihDb21w YWN0QXR0cmlidXRlKSArIFwKQEAgLTIwNiw2ICsyMTMsNyBAQCBleHRlcm4gdm9pZCBUdXBsZURl c2NDb3B5KFR1cGxlRGVzYyBkc3QsIFR1cGxlRGVzYyBzcmMpOwogZXh0ZXJuIHZvaWQgVHVwbGVE ZXNjQ29weUVudHJ5KFR1cGxlRGVzYyBkc3QsIEF0dHJOdW1iZXIgZHN0QXR0bm8sCiAJCQkJCQkJ ICAgVHVwbGVEZXNjIHNyYywgQXR0ck51bWJlciBzcmNBdHRubyk7CiAKK2V4dGVybiB2b2lkIFR1 cGxlRGVzY0ZpbmFsaXplKFR1cGxlRGVzYyB0dXBkZXNjKTsKIGV4dGVybiB2b2lkIEZyZWVUdXBs ZURlc2MoVHVwbGVEZXNjIHR1cGRlc2MpOwogCiBleHRlcm4gdm9pZCBJbmNyVHVwbGVEZXNjUmVm Q291bnQoVHVwbGVEZXNjIHR1cGRlc2MpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L3R1cG1hY3MuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBtYWNzLmgKaW5kZXggM2U1NTMwNjU4 YzkuLjE1MGE3YTI0Nzg1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVwbWFjcy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBtYWNzLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNk ZWZpbmUgVFVQTUFDU19ICiAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGVfZC5oIgkvKiBmb3Ig VFlQQUxJR04gbWFjcm9zICovCisjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogCiAKIC8q CkBAIC02OSw2ICs3MCw4NyBAQCBmZXRjaF9hdHQoY29uc3Qgdm9pZCAqVCwgYm9vbCBhdHRieXZh bCwgaW50IGF0dGxlbikKIAllbHNlCiAJCXJldHVybiBQb2ludGVyR2V0RGF0dW0oVCk7CiB9CisK KyNpZm5kZWYgSEFWRV9fQlVJTFRJTl9DVFoKKy8qCisgKiBGb3IgcmV0dXJuaW5nIHRoZSAwLWJh c2VkIHBvc2l0aW9uIG9mIHRoZSByaWdodC1tb3N0IDAgYml0IG9mIGEgdWludDgsIG9yIDgKKyAq IGlmIGFsbCBiaXRzIGFyZSAxIGJpdHMuCisgKi8KK3N0YXRpYyBjb25zdCB1aW50OCBwZ19yaWdo dG1vc3RfemVyb19wb3NbMjU2XSA9IHsKKwkwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAw LCAyLCAwLCAxLCAwLCA0LAorCTAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAs IDEsIDAsIDUsCisJMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwg NCwKKwkwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLCA2LAorCTAs IDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDQsCisJMCwgMSwgMCwg MiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNSwKKwkwLCAxLCAwLCAyLCAwLCAx LCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLCA0LAorCTAsIDEsIDAsIDIsIDAsIDEsIDAsIDMs IDAsIDEsIDAsIDIsIDAsIDEsIDAsIDcsCisJMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwg MCwgMiwgMCwgMSwgMCwgNCwKKwkwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAw LCAxLCAwLCA1LAorCTAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAs IDQsCisJMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNiwKKwkw LCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLCA0LAorCTAsIDEsIDAs IDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDUsCisJMCwgMSwgMCwgMiwgMCwg MSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNCwKKwkwLCAxLCAwLCAyLCAwLCAxLCAwLCAz LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCA4Cit9OworI2VuZGlmCisKKy8qCisgKiBmaXJzdF9udWxs X2F0dHIKKyAqCQlJbnNwZWN0IGEgTlVMTCBiaXRtYXNrIGZyb20gYSB0dXBsZSBhbmQgcmV0dXJu IHRoZSAwLWJhc2VkIGF0dG51bSBvZiB0aGUKKyAqCQlmaXJzdCBOVUxMIGF0dHJpYnV0ZS4gIFJl dHVybnMgbmF0dHMgaWYgbm8gTlVMTHMgd2VyZSBmb3VuZC4KKyAqCisgKiBXZSBleHBlY3QgdGhh dCAnYml0cycgY29udGFpbnMgYXQgbGVhc3Qgb25lIDAgYml0IHNvbWV3aGVyZSBpbiB0aGUgbWFz aywKKyAqIG5vdCBuZWNlc3NhcmlseSA8IG5hdHRzLgorICovCitzdGF0aWMgaW5saW5lIGludAor Zmlyc3RfbnVsbF9hdHRyKGNvbnN0IGJpdHM4ICpiaXRzLCBpbnQgbmF0dHMpCit7CisJaW50CQkJ bGFzdEJ5dGUgPSBuYXR0cyA+PiAzOworCWludAkJCWJ5dGVudW07CisJaW50CQkJcmVzOworCisj aWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCWludAkJCWZpcnN0bnVsbF9jaGVjayA9IG5hdHRz OworCisJLyogRG8gaXQgdGhlIHNsb3cgd2F5IGFuZCBjaGVjayB3ZSBnZXQgdGhlIHNhbWUgYW5z d2VyLiAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwl7CisJCWlmIChhdHRf aXNudWxsKGksIGJpdHMpKQorCQl7CisJCQlmaXJzdG51bGxfY2hlY2sgPSBpOworCQkJYnJlYWs7 CisJCX0KKwl9CisjZW5kaWYKKworCS8qIFByb2Nlc3MgYWxsIGJ5dGVzIHVwIHRvIGp1c3QgYmVm b3JlIHRoZSBieXRlIGZvciB0aGUgbmF0dHMgaW5kZXggKi8KKwlmb3IgKGJ5dGVudW0gPSAwOyBi eXRlbnVtIDwgbGFzdEJ5dGU7IGJ5dGVudW0rKykKKwl7CisJCS8qIGJyZWFrIGlmIHRoZXJlJ3Mg YW55IE5VTEwgYXR0cnMgKGEgMCBiaXQpICovCisJCWlmIChiaXRzW2J5dGVudW1dICE9IDB4RkYp CisJCQlicmVhazsKKwl9CisKKwlyZXMgPSBieXRlbnVtIDw8IDM7CisKKyNpZmRlZiBIQVZFX19C VUlMVElOX0NUWgorCXJlcyArPSBfX2J1aWx0aW5fY3R6KH5iaXRzW2J5dGVudW1dKTsKKyNlbHNl CisJcmVzICs9IHBnX3JpZ2h0bW9zdF96ZXJvX3Bvc1tiaXRzW2J5dGVudW1dXTsKKyNlbmRpZgor CisJLyoKKwkgKiBTaW5jZSB3ZSBkaWQgbm8gbWFza2luZyB0byBtYXNrIG91dCBiaXRzIGJleW9u ZCBuYXR0cywgd2UgbWF5IGhhdmUKKwkgKiBmb3VuZCBhIGJpdCBoaWdoZXIgdGhhbiBuYXR0cywg c28gd2UgbXVzdCBjYXAgdG8gbmF0dHMKKwkgKi8KKwlyZXMgPSBNaW4ocmVzLCBuYXR0cyk7CisK KwlBc3NlcnQocmVzID09IGZpcnN0bnVsbF9jaGVjayk7CisKKwlyZXR1cm4gcmVzOworfQogI2Vu ZGlmCQkJCQkJCS8qIEZST05URU5EICovCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci90dXB0YWJsZS5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvdHVwdGFibGUuaAppbmRl eCBhMmRmZDcwN2U3OC4uMzYzYzVmMzM2OTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL3R1cHRhYmxlLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvdHVwdGFibGUuaApAQCAt ODQsOSArODQsNiBAQAogICogdHRzX3ZhbHVlcy90dHNfaXNudWxsIGFyZSBhbGxvY2F0ZWQgZWl0 aGVyIHdoZW4gdGhlIHNsb3QgaXMgY3JlYXRlZCAod2hlbgogICogdGhlIGRlc2NyaXB0b3IgaXMg cHJvdmlkZWQpLCBvciB3aGVuIGEgZGVzY3JpcHRvciBpcyBhc3NpZ25lZCB0byB0aGUgc2xvdDsK ICAqIHRoZXkgYXJlIG9mIGxlbmd0aCBlcXVhbCB0byB0aGUgZGVzY3JpcHRvcidzIG5hdHRzLgot ICoKLSAqIFRoZSBUVFNfRkxBR19TTE9XIGZsYWcgaXMgc2F2ZWQgc3RhdGUgZm9yCi0gKiBzbG90 X2RlZm9ybV9oZWFwX3R1cGxlLCBhbmQgc2hvdWxkIG5vdCBiZSB0b3VjaGVkIGJ5IGFueSBvdGhl ciBjb2RlLgogICotLS0tLS0tLS0tCiAgKi8KIApAQCAtOTgsMTIgKzk1LDggQEAKICNkZWZpbmUJ CQlUVFNfRkxBR19TSE9VTERGUkVFCQkoMSA8PCAyKQogI2RlZmluZSBUVFNfU0hPVUxERlJFRShz bG90KSAoKChzbG90KS0+dHRzX2ZsYWdzICYgVFRTX0ZMQUdfU0hPVUxERlJFRSkgIT0gMCkKIAot Lyogc2F2ZWQgc3RhdGUgZm9yIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUgKi8KLSNkZWZpbmUJCQlU VFNfRkxBR19TTE9XCQkoMSA8PCAzKQotI2RlZmluZSBUVFNfU0xPVyhzbG90KSAoKChzbG90KS0+ dHRzX2ZsYWdzICYgVFRTX0ZMQUdfU0xPVykgIT0gMCkKLQogLyogZml4ZWQgdHVwbGUgZGVzY3Jp cHRvciAqLwotI2RlZmluZQkJCVRUU19GTEFHX0ZJWEVECQkoMSA8PCA0KQorI2RlZmluZQkJCVRU U19GTEFHX0ZJWEVECQkoMSA8PCA0KQkvKiBYWFggY2hhbmdlIHRvICMzPyAqLwogI2RlZmluZSBU VFNfRklYRUQoc2xvdCkgKCgoc2xvdCktPnR0c19mbGFncyAmIFRUU19GTEFHX0ZJWEVEKSAhPSAw KQogCiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3RPcHM7Ci0tIAoyLjUxLjAKCg== --000000000000d7a7fa0649990688 Content-Type: text/plain; charset="US-ASCII"; name="v7-0003-Introduce-deform_bench-test-module.patch" Content-Disposition: attachment; filename="v7-0003-Introduce-deform_bench-test-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml0qu9a03 RnJvbSAxMzkzYjhiZjg4ODVjZTA5N2JhYTlhNzU3ZmM4OTIzYjYxNzA2ZTIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAyNyBKYW4gMjAyNiAxNTowODowOSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMy80 XSBJbnRyb2R1Y2UgZGVmb3JtX2JlbmNoIHRlc3QgbW9kdWxlCgpGb3IgYmVuY2htYXJpbmcgdHVw bGUgZGVmb3JtYXRpb24uCi0tLQogc3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvLmdpdGln bm9yZSAgICAgIHwgICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL01ha2VmaWxl ICAgICAgICB8ICAyMSArKysrCiAuLi4vZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC0tMS4wLnNx bCAgICAgICAgfCAgIDggKysKIHNyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9i ZW5jaC5jICB8IDEwNiArKysrKysrKysrKysrKysrKysKIC4uLi9tb2R1bGVzL2RlZm9ybV9iZW5j aC9kZWZvcm1fYmVuY2guY29udHJvbCB8ICAgNCArCiBzcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9i ZW5jaC9tZXNvbi5idWlsZCAgICAgfCAgMjIgKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5i dWlsZCAgICAgICAgICAgICAgICAgIHwgICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgMTY2IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5j aC8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1f YmVuY2gvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlZm9y bV9iZW5jaC9kZWZvcm1fYmVuY2gtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL2RlZm9ybV9iZW5jaC9kZWZvcm1fYmVuY2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC5jb250cm9sCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvbWVzb24uYnVpbGQK CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC8uZ2l0aWdub3JlIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWRjYjNmZjk3MjMKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsNCBAQAor IyBHZW5lcmF0ZWQgc3ViZGlyZWN0b3JpZXMKKy9sb2cvCisvcmVzdWx0cy8KKy90bXBfY2hlY2sv CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC9NYWtlZmlsZSBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5iNWZjMGY3YTU4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL01ha2VmaWxlCkBAIC0wLDAgKzEsMjEgQEAKKyMgc3Jj L3Rlc3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvTWFrZWZpbGUKKworTU9EVUxFX2JpZyA9IGRlZm9y bV9iZW5jaAorT0JKUyA9IGRlZm9ybV9iZW5jaC5vCisKK0VYVEVOU0lPTiA9IGRlZm9ybV9iZW5j aAorREFUQSA9IGRlZm9ybV9iZW5jaC0tMS4wLnNxbAorUEdGSUxFREVTQyA9ICJkZWZvcm1fYmVu Y2ggLSB0dXBsZSBkZWZvcm0gYmVuY2htYXJraW5nIgorCitSRUdSRVNTID0gZGVmb3JtX2JlbmNo CisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVs bCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBz cmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaAordG9wX2J1aWxkZGlyID0gLi4vLi4KK2luY2x1 ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3Jj ZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvZGVmb3JtX2JlbmNoLS0xLjAuc3FsIGIvc3JjL3Rlc3Qv bW9kdWxlcy9kZWZvcm1fYmVuY2gvZGVmb3JtX2JlbmNoLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OTJiNzFkYmEzYgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC0tMS4wLnNxbApAQCAt MCwwICsxLDggQEAKKy8qIGRlZm9ybV9iZW5jaC0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBp ZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVO U0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIGRlZm9ybV9iZW5jaCIgdG8gbG9hZCB0 aGlzIGZpbGUuIFxxdWl0CisKK0NSRUFURSBGVU5DVElPTiBkZWZvcm1fYmVuY2godGFibGVvaWQg T2lkLCBhdHRudW0gaW50W10pIFJFVFVSTlMgRkxPQVQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAn ZGVmb3JtX2JlbmNoJworTEFOR1VBR0UgQyBWT0xBVElMRSBTVFJJQ1Q7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC9kZWZvcm1fYmVuY2guYyBiL3NyYy90ZXN0L21v ZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi41MjUxNjJlYjU5YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC5jCkBAIC0wLDAgKzEsMTA2IEBACisv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZWZvcm1fYmVuY2guYworICoKKyAqIGZvciBiZW5j aG1hcmtpbmcgdHVwbGUgZGVmb3JtYXRpb24gcm91dGluZXMKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRl IDxzeXMvdGltZS5oPgorCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFj Y2Vzcy9yZWxzY2FuLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbV9kLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlX2QuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlz Y2FkbWluLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJh eWFjY2Vzcy5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisKK1BHX01PRFVMRV9NQUdJ QzsKKworUEdfRlVOQ1RJT05fSU5GT19WMShkZWZvcm1fYmVuY2gpOworCitEYXR1bQorZGVmb3Jt X2JlbmNoKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJdGFibGVvaWQgPSBQR19HRVRBUkdf T0lEKDApOworCUFycmF5VHlwZSAgKmFycmF5ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDEpOwor CVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlSZWxhdGlvbglyZWw7CisJVHVwbGVEZXNjCXR1cGRlc2M7 CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJRGF0dW0JICAgKmVsZW1fZGF0dW1zID0gTlVMTDsK Kwlib29sCSAgICplbGVtX251bGxzID0gTlVMTDsKKwlpbnQJCQllbGVtX2NvdW50OworCWludAkJ ICAgKmF0dG51bXM7CisJY2xvY2tfdAkJc3RhcnQsCisJCQkJZW5kOworCisJcmVsID0gcmVsYXRp b25fb3Blbih0YWJsZW9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCWlmIChyZWwtPnJkX3JlbC0+ cmVsYW0gIT0gSEVBUF9UQUJMRV9BTV9PSUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIm9ubHkgaGVh cCBBTSBpcyBzdXBwb3J0ZWQiKSkpOworCisJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVs KTsKKwlzbG90ID0gTWFrZVR1cGxlVGFibGVTbG90KHR1cGRlc2MsICZUVFNPcHNCdWZmZXJIZWFw VHVwbGUpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBHZXRBY3RpdmVTbmFw c2hvdCgpLCAwLCBOVUxMLCB0cnVlLCBmYWxzZSk7CisKKwkvKgorCSAqIFRoZSBhcnJheSBpcyB1 c2VkIHRvIGFsbG93IGNhbGxlcnMgdG8gZGVmaW5lIGhvdyBtYW55IGF0dHMgdG8gZGVmb3JtLgor CSAqIGUuZzogJ3sxLDEwfSc6OmludFtdIHdvdWxkIGRlZm9ybSBhdHRudW09MSwgdGhlbiBpbiBh IDJuZCBwYXNzIGRlZm9ybQorCSAqIHRoZSByZW1haW5kZXIgdXAgdG8gYXR0bnVtPTEwLiAgUGFz c2luZyBhbiBlbGVtZW50IGFzIE5VTEwgbWVhbnMgYWxsCisJICogYXR0bnVtcy4gIFRoaXMgYWxs b3dzIHNpbXVsYXRpb24gb2YgaW5jcmVtZW50YWwgZGVmb3JtYXRpb24uICBHZW5lcmFsbHkKKwkg KiBpZiB5b3UncmUgcGFzc2luZyBhbiBhcnJheSB3aXRoIG1vcmUgdGhhbiAxIGVsZW1lbnQsIHRo ZW4gdGhlIGFycmF5CisJICogc2hvdWxkIGJlIGluIGFzY2VuZGluZyBvcmRlci4gIERvaW5nIHNv bWV0aGluZyBsaWtlICd7MTAsMX0nIHdvdWxkIG1lYW4KKwkgKiB3ZSd2ZSBhbHJlYWR5IGRlZm9y bWVkIDEwIGF0dHJpYnV0ZXMgYW5kIG9uIHRoZSAybmQgcGFzcyB0aGVyZSdzCisJICogbm90aGlu ZyB0byBkbyBzaW5jZSBhdHRudW09MSB3YXMgYWxyZWFkeSBkZWZvcm1lZCBpbiB0aGUgZmlyc3Qg cGFzcy4KKwkgKgorCSAqIFlvdSdsbCBnZXQgYW4gRVJST1IgaWYgeW91IHBhc3MgYSBudW1iZXIg aGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZgorCSAqIGF0dHJpYnV0ZXMgaW4gdGhlIHRhYmxlLgor CSAqLworCWRlY29uc3RydWN0X2FycmF5KGFycmF5LAorCQkJCQkgIElOVDRPSUQsCisJCQkJCSAg c2l6ZW9mKGludDMyKSwKKwkJCQkJICB0cnVlLAorCQkJCQkgICdpJywKKwkJCQkJICAmZWxlbV9k YXR1bXMsCisJCQkJCSAgJmVsZW1fbnVsbHMsCisJCQkJCSAgJmVsZW1fY291bnQpOworCisJYXR0 bnVtcyA9IHBhbGxvY19hcnJheShpbnQsIGVsZW1fY291bnQpOworCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBlbGVtX2NvdW50OyBpKyspCisJeworCQkvKiBNYWtlIGEgTlVMTCBlbGVtZW50IG1lYW4g YWxsIGF0dHJpYnV0ZXMgKi8KKwkJaWYgKGVsZW1fbnVsbHNbaV0pCisJCQlhdHRudW1zW2ldID0g dHVwZGVzYy0+bmF0dHM7CisJCWVsc2UKKwkJCWF0dG51bXNbaV0gPSBEYXR1bUdldEludDMyKGVs ZW1fZGF0dW1zW2ldKTsKKwl9CisKKwlzdGFydCA9IGNsb2NrKCk7CisKKwl3aGlsZSAoaGVhcF9n ZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCisJeworCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIERlZm9ybSBpbiBzdGFnZXMgYWNjb3JkaW5nIHRv IHRoZSBhdHRudW1zIGFycmF5ICovCisJCWZvciAoaW50IGkgPSAwOyBpIDwgZWxlbV9jb3VudDsg aSsrKQorCQkJc2xvdF9nZXRzb21lYXR0cnNfaW50KHNsb3QsIGF0dG51bXNbaV0pOworCX0KKwor CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJdGFibGVfZW5kc2NhbihzY2Fu KTsKKwlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwllbmQgPSBjbG9j aygpOworCisJLyogUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBydW4gdGhl IHRlc3QgKi8KKwlQR19SRVRVUk5fRkxPQVQ4KChkb3VibGUpIChlbmQgLSBzdGFydCkgLyAoQ0xP Q0tTX1BFUl9TRUMgLyAxMDAwKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2Rl Zm9ybV9iZW5jaC9kZWZvcm1fYmVuY2guY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvZGVmb3Jt X2JlbmNoL2RlZm9ybV9iZW5jaC5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5hMjAyM2Y5ZDczOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAorIyBk ZWZvcm1fYmVuY2ggZXh0ZW5zaW9uCitjb21tZW50ID0gJ2Z1bmN0aW9ucyBmb3IgYmVuY2htYXJr aW5nIHR1cGxlIGRlZm9ybWF0aW9uJworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVsZV9w YXRobmFtZSA9ICckbGliZGlyL2RlZm9ybV9iZW5jaCcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvZGVmb3JtX2JlbmNoL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1f YmVuY2gvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjgyMDQ5NTg1MjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1f YmVuY2gvbWVzb24uYnVpbGQKQEAgLTAsMCArMSwyMiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2RlZm9ybV9iZW5jaF9zb3Vy Y2VzID0gZmlsZXMoCisgICdkZWZvcm1fYmVuY2guYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09 ICd3aW5kb3dzJworICBkZWZvcm1fYmVuY2hfc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mo d2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ2RlZm9ybV9iZW5jaCcs CisgICAgJy0tRklMRURFU0MnLCAnZGVmb3JtX2JlbmNoIC0gYmVuY2htYXJraW5nIHR1cGxlIGRl Zm9ybWF0aW9uJyxdKQorZW5kaWYKKworZGVmb3JtX2JlbmNoID0gc2hhcmVkX21vZHVsZSgnZGVm b3JtX2JlbmNoJywKKyAgZGVmb3JtX2JlbmNoX3NvdXJjZXMsCisgIGt3YXJnczogcGdfdGVzdF9t b2RfYXJncywKKykKK3Rlc3RfaW5zdGFsbF9saWJzICs9IGRlZm9ybV9iZW5jaAorCit0ZXN0X2lu c3RhbGxfZGF0YSArPSBmaWxlcygKKyAgJ2RlZm9ybV9iZW5jaC0tMS4wLnNxbCcsCisgICdkZWZv cm1fYmVuY2guY29udHJvbCcsCispCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL21lc29u LmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRleCAyNjM0YTUxOTkzNS4u ZWYyYjBhZjQ1ODEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAtMiw2ICsyLDcgQEAKIAogc3ViZGly KCdicmluJykKIHN1YmRpcignY29tbWl0X3RzJykKK3N1YmRpcignZGVmb3JtX2JlbmNoJykKIHN1 YmRpcignZGVsYXlfZXhlY3V0aW9uJykKIHN1YmRpcignZHVtbXlfaW5kZXhfYW0nKQogc3ViZGly KCdkdW1teV9zZWNsYWJlbCcpCi0tIAoyLjUxLjAKCg== --000000000000d7a7fa0649990688 Content-Type: text/plain; charset="US-ASCII"; name="v7-0004-Various-experimental-changes.patch" Content-Disposition: attachment; filename="v7-0004-Various-experimental-changes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml0qubfs4 RnJvbSBiY2QzNTk1OWQ5NmQyMzcyMDg2NDNmYWEzZTlkNmVkMTk2YTM0MzkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAzMCBKYW4gMjAyNiAyMzoxODo0NSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjcgNC80 XSBWYXJpb3VzIGV4cGVyaW1lbnRhbCBjaGFuZ2VzCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vdHVwZGVzYy5jIHwgICA2ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVz LmMgICB8ICA0OCArKysrLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90dXBtYWNzLmggICAgICAg IHwgMTU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTgw IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBk ZXNjLmMKaW5kZXggMjUzNjRkYjYzMGEuLmNhMzkzYWY2N2M5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3R1cGRlc2MuYwpAQCAtMTA1LDYgKzEwNSwxMiBAQCBwb3B1bGF0ZV9jb21wYWN0X2F0dHJp YnV0ZV9pbnRlcm5hbChGb3JtX3BnX2F0dHJpYnV0ZSBzcmMsCiAJCQllbG9nKEVSUk9SLCAiaW52 YWxpZCBhdHRhbGlnbiB2YWx1ZTogJWMiLCBzcmMtPmF0dGFsaWduKTsKIAkJCWJyZWFrOwogCX0K KworCS8qIENoZWNrIGZvciB1bnN1cHBvcnRlZCBieXZhbCBhdHRsZW5zICovCisJaWYgKHNyYy0+ YXR0Ynl2YWwgJiYgc3JjLT5hdHRsZW4gIT0gc2l6ZW9mKGNoYXIpICYmCisJCXNyYy0+YXR0bGVu ICE9IHNpemVvZihpbnQxNikgJiYgc3JjLT5hdHRsZW4gIT0gc2l6ZW9mKGludDMyKSAmJgorCQlz cmMtPmF0dGxlbiAhPSBzaXplb2YoaW50NjQpKQorCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQg Ynl2YWwgbGVuZ3RoOiAlZCIsIHNyYy0+YXR0bGVuKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNUdXBsZXMuYwppbmRleCAzNmQwYWFlZDJmYi4uYzNiYzAxMGQ4MjQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVHVwbGVzLmMKQEAgLTEwMjksMjQgKzEwMjksMjYgQEAgc2xvdF9kZWZvcm1faGVhcF90 dXBsZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgSGVhcFR1cGxlIHR1cGxlLCB1aW50MzIgKm9mZnAs CiAJLyogV2UgY2FuIG9ubHkgZmV0Y2ggYXMgbWFueSBhdHRyaWJ1dGVzIGFzIHRoZSB0dXBsZSBo YXMuICovCiAJbmF0dHMgPSBNaW4oSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKSwgbmF0dHMp OwogCWF0dG51bSA9IHNsb3QtPnR0c19udmFsaWQ7CisJdmFsdWVzID0gc2xvdC0+dHRzX3ZhbHVl czsKKwlpc251bGwgPSBzbG90LT50dHNfaXNudWxsOwogCWZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRy ID0gTWluKHR1cGxlRGVzYy0+Zmlyc3ROb25DYWNoZWRPZmZBdHRyLCBuYXR0cyk7CiAKIAlpZiAo aGFzbnVsbHMpCiAJeworCQl0cCA9IChjaGFyICopIHR1cCArIHR1cC0+dF9ob2ZmOwogCQlicCA9 IHR1cC0+dF9iaXRzOwogCQlmaXJzdE51bGxBdHRyID0gZmlyc3RfbnVsbF9hdHRyKGJwLCBuYXR0 cyk7CiAJCWZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRyID0gTWluKGZpcnN0Tm9uQ2FjaGVPZmZzZXRB dHRyLCBmaXJzdE51bGxBdHRyKTsKKwkJcG9wdWxhdGVfaXNudWxsX2FycmF5KGJwLCBuYXR0cywg aXNudWxsKTsKIAl9CiAJZWxzZQogCXsKKwkJdHAgPSAoY2hhciAqKSB0dXAgKyBNQVhBTElHTihv ZmZzZXRvZihIZWFwVHVwbGVIZWFkZXJEYXRhLCB0X2JpdHMpKTsKIAkJYnAgPSBOVUxMOwogCQlm aXJzdE51bGxBdHRyID0gbmF0dHM7CisJCW1lbXNldChpc251bGwsIDAsIHNpemVvZihib29sKSAq IG5hdHRzKTsKIAl9CiAKLQl2YWx1ZXMgPSBzbG90LT50dHNfdmFsdWVzOwotCWlzbnVsbCA9IHNs b3QtPnR0c19pc251bGw7Ci0JdHAgPSAoY2hhciAqKSB0dXAgKyB0dXAtPnRfaG9mZjsKLQogCS8q CiAJICogSGFuZGxlIHRoZSBwb3J0aW9uIG9mIHRoZSB0dXBsZSB0aGF0IHdlIGhhdmUgY2FjaGVk IHRoZSBvZmZzZXQgZm9yIHVwCiAJICogdG8gdGhlIGZpcnN0IE5VTEwgYXR0cmlidXRlLiAgVGhl IG9mZnNldCBpcyBlZmZlY3RpdmVseSBmaXhlZCBmb3IgdGhlc2UKQEAgLTEwNjUsNyArMTA2Nyw2 IEBAIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEhlYXBUdXBs ZSB0dXBsZSwgdWludDMyICpvZmZwLAogI2VuZGlmCiAJCWRvCiAJCXsKLQkJCWlzbnVsbFthdHRu dW1dID0gZmFsc2U7CiAJCQljYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywg YXR0bnVtKTsKIAogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKQEAgLTExMDEsMTkgKzExMDIs MTQgQEAgc2xvdF9kZWZvcm1faGVhcF90dXBsZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgSGVhcFR1 cGxlIHR1cGxlLCB1aW50MzIgKm9mZnAsCiAJICovCiAJZm9yICg7IGF0dG51bSA8IGZpcnN0TnVs bEF0dHI7IGF0dG51bSsrKQogCXsKLQkJaXNudWxsW2F0dG51bV0gPSBmYWxzZTsKIAkJY2F0dHIg PSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSk7CiAKLQkJLyogYWxpZ24g dGhlIG9mZnNldCBmb3IgdGhpcyBhdHRyaWJ1dGUgKi8KLQkJb2ZmID0gYXR0X3BvaW50ZXJfYWxp Z25ieShvZmYsCi0JCQkJCQkJCSAgY2F0dHItPmF0dGFsaWduYnksCi0JCQkJCQkJCSAgY2F0dHIt PmF0dGxlbiwKLQkJCQkJCQkJICB0cCArIG9mZik7Ci0KLQkJdmFsdWVzW2F0dG51bV0gPSBmZXRj aGF0dChjYXR0ciwgdHAgKyBvZmYpOwotCi0JCS8qIG1vdmUgdGhlIG9mZnNldCBiZXlvbmQgdGhp cyBhdHRyaWJ1dGUgKi8KLQkJb2ZmID0gYXR0X2FkZGxlbmd0aF9wb2ludGVyKG9mZiwgY2F0dHIt PmF0dGxlbiwgdHAgKyBvZmYpOworCQkvKiBhbGlnbiAnb2ZmJywgZmV0Y2ggdGhlIGRhdHVtLCBh bmQgaW5jcmVtZW50IG9mZiBiZXlvbmQgdGhlIGRhdHVtICovCisJCXZhbHVlc1thdHRudW1dID0g YWxpZ25fZmV0Y2hfdGhlbl9hZGQodHAsCisJCQkJCQkJCQkJCSAgJm9mZiwKKwkJCQkJCQkJCQkJ ICBjYXR0ci0+YXR0Ynl2YWwsCisJCQkJCQkJCQkJCSAgY2F0dHItPmF0dGxlbiwKKwkJCQkJCQkJ CQkJICBjYXR0ci0+YXR0YWxpZ25ieSk7CiAJfQogCiAJLyoKQEAgLTExMjIsMjYgKzExMTgsMjAg QEAgc2xvdF9kZWZvcm1faGVhcF90dXBsZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgSGVhcFR1cGxl IHR1cGxlLCB1aW50MzIgKm9mZnAsCiAJICovCiAJZm9yICg7IGF0dG51bSA8IG5hdHRzOyBhdHRu dW0rKykKIAl7Ci0JCWlmIChhdHRfaXNudWxsKGF0dG51bSwgYnApKQorCQlpZiAoaXNudWxsW2F0 dG51bV0pCiAJCXsKIAkJCXZhbHVlc1thdHRudW1dID0gKERhdHVtKSAwOwotCQkJaXNudWxsW2F0 dG51bV0gPSB0cnVlOwogCQkJY29udGludWU7CiAJCX0KIAotCQlpc251bGxbYXR0bnVtXSA9IGZh bHNlOwogCQljYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgYXR0bnVtKTsK IAotCQkvKiBhbGlnbiB0aGUgb2Zmc2V0IGZvciB0aGlzIGF0dHJpYnV0ZSAqLwotCQlvZmYgPSBh dHRfcG9pbnRlcl9hbGlnbmJ5KG9mZiwKLQkJCQkJCQkJICBjYXR0ci0+YXR0YWxpZ25ieSwKLQkJ CQkJCQkJICBjYXR0ci0+YXR0bGVuLAotCQkJCQkJCQkgIHRwICsgb2ZmKTsKLQotCQl2YWx1ZXNb YXR0bnVtXSA9IGZldGNoYXR0KGNhdHRyLCB0cCArIG9mZik7Ci0KLQkJLyogbW92ZSB0aGUgb2Zm c2V0IGJleW9uZCB0aGlzIGF0dHJpYnV0ZSAqLwotCQlvZmYgPSBhdHRfYWRkbGVuZ3RoX3BvaW50 ZXIob2ZmLCBjYXR0ci0+YXR0bGVuLCB0cCArIG9mZik7CisJCS8qIGFsaWduICdvZmYnLCBmZXRj aCB0aGUgZGF0dW0sIGFuZCBpbmNyZW1lbnQgb2ZmIGJleW9uZCB0aGUgZGF0dW0gKi8KKwkJdmFs dWVzW2F0dG51bV0gPSBhbGlnbl9mZXRjaF90aGVuX2FkZCh0cCwKKwkJCQkJCQkJCQkJICAmb2Zm LAorCQkJCQkJCQkJCQkgIGNhdHRyLT5hdHRieXZhbCwKKwkJCQkJCQkJCQkJICBjYXR0ci0+YXR0 bGVuLAorCQkJCQkJCQkJCQkgIGNhdHRyLT5hdHRhbGlnbmJ5KTsKIAl9CiAKIAkvKgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cG1hY3MuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90 dXBtYWNzLmgKaW5kZXggMTUwYTdhMjQ3ODUuLjIxZWUzY2MzNTk0IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdHVwbWFjcy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBtYWNz LmgKQEAgLTE2LDcgKzE2LDExIEBACiAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGVfZC5oIgkv KiBmb3IgVFlQQUxJR04gbWFjcm9zICovCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgor I2luY2x1ZGUgInZhcmF0dC5oIgogCisjaWZkZWYgRE9fQVZYNTEyX1ZFUlNJT04KKyNpbmNsdWRl IDxpbW1pbnRyaW4uaD4KKyNlbmRpZgogCiAvKgogICogQ2hlY2sgYSB0dXBsZSdzIG51bGwgYml0 bWFwIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBhdHRyaWJ1dGUgaXMgbnVsbC4KQEAgLTI5LDYg KzMzLDkwIEBAIGF0dF9pc251bGwoaW50IEFUVCwgY29uc3QgYml0czggKkJJVFMpCiAJcmV0dXJu ICEoQklUU1tBVFQgPj4gM10gJiAoMSA8PCAoQVRUICYgMHgwNykpKTsKIH0KIAorLyoKKyAqIHBv cHVsYXRlX2lzbnVsbF9hcnJheQorICoJCVRyYW5zZm9ybSBhIHR1cGxlJ3MgbnVsbCBhcnJheSBp bnRvIGEgYm9vbGVhbiBhcnJheS4KKyAqCisgKiBYWFggdGhlcmUgZG9lcyBub3Qgc2VlbSB0byBi ZSBhbiBlZmZpY2llbnQgd2F5IHRvIGRvIHRoaXMgd2l0aG91dCBBVlg1MTIuCisgKiBIZXJlIHdl IHVzZSBhIDI1NiBlbGVtZW50IGFycmF5IHdpdGggYWxsIHBvc3NpYmxlIHBhdHRlcm5zIGZvciA4 IGlzbnVsbAorICogYXJyYXkgZWxlbWVudHMgZm9yIGVhY2ggcG9zc2libGUgYnl0ZSB2YWx1ZSBm b3IgYSBiaXRtYXNrIGVsZW1lbnQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcG9wdWxhdGVf aXNudWxsX2FycmF5KGNvbnN0IGJpdHM4ICpiaXRzLCBpbnQgbmF0dHMsIGJvb2wgKmlzbnVsbCkK K3sKKwlpbnQJCQluX2Z1bGxfYnl0ZXMgPSBuYXR0cyA+PiAzOworCWludAkJCWF0dG51bSA9IG5f ZnVsbF9ieXRlcyA8PCAzOworCWJvb2wJICAgKmlzbnVsbF9wdHIgPSBpc251bGw7CisKKyNpZm5k ZWYgRE9fQVZYNTEyX1ZFUlNJT04KKwkvKiBUaGlzIGlzIDIga2lsb2J5dGVzISAqLworCXN0YXRp YyBjb25zdCB1aW50NjQgaXNudWxsX3RvX2FycmF5WzI1Nl0gPSB7CisJCTB4MDEwMTAxMDEwMTAx MDEwMSwgMHgwMTAxMDEwMTAxMDEwMTAwLCAweDAxMDEwMTAxMDEwMTAwMDEsIDB4MDEwMTAxMDEw MTAxMDAwMCwgMHgwMTAxMDEwMTAxMDAwMTAxLCAweDAxMDEwMTAxMDEwMDAxMDAsIDB4MDEwMTAx MDEwMTAwMDAwMSwgMHgwMTAxMDEwMTAxMDAwMDAwLAorCQkweDAxMDEwMTAxMDAwMTAxMDEsIDB4 MDEwMTAxMDEwMDAxMDEwMCwgMHgwMTAxMDEwMTAwMDEwMDAxLCAweDAxMDEwMTAxMDAwMTAwMDAs IDB4MDEwMTAxMDEwMDAwMDEwMSwgMHgwMTAxMDEwMTAwMDAwMTAwLCAweDAxMDEwMTAxMDAwMDAw MDEsIDB4MDEwMTAxMDEwMDAwMDAwMCwKKwkJMHgwMTAxMDEwMDAxMDEwMTAxLCAweDAxMDEwMTAw MDEwMTAxMDAsIDB4MDEwMTAxMDAwMTAxMDAwMSwgMHgwMTAxMDEwMDAxMDEwMDAwLCAweDAxMDEw MTAwMDEwMDAxMDEsIDB4MDEwMTAxMDAwMTAwMDEwMCwgMHgwMTAxMDEwMDAxMDAwMDAxLCAweDAx MDEwMTAwMDEwMDAwMDAsCisJCTB4MDEwMTAxMDAwMDAxMDEwMSwgMHgwMTAxMDEwMDAwMDEwMTAw LCAweDAxMDEwMTAwMDAwMTAwMDEsIDB4MDEwMTAxMDAwMDAxMDAwMCwgMHgwMTAxMDEwMDAwMDAw MTAxLCAweDAxMDEwMTAwMDAwMDAxMDAsIDB4MDEwMTAxMDAwMDAwMDAwMSwgMHgwMTAxMDEwMDAw MDAwMDAwLAorCQkweDAxMDEwMDAxMDEwMTAxMDEsIDB4MDEwMTAwMDEwMTAxMDEwMCwgMHgwMTAx MDAwMTAxMDEwMDAxLCAweDAxMDEwMDAxMDEwMTAwMDAsIDB4MDEwMTAwMDEwMTAwMDEwMSwgMHgw MTAxMDAwMTAxMDAwMTAwLCAweDAxMDEwMDAxMDEwMDAwMDEsIDB4MDEwMTAwMDEwMTAwMDAwMCwK KwkJMHgwMTAxMDAwMTAwMDEwMTAxLCAweDAxMDEwMDAxMDAwMTAxMDAsIDB4MDEwMTAwMDEwMDAx MDAwMSwgMHgwMTAxMDAwMTAwMDEwMDAwLCAweDAxMDEwMDAxMDAwMDAxMDEsIDB4MDEwMTAwMDEw MDAwMDEwMCwgMHgwMTAxMDAwMTAwMDAwMDAxLCAweDAxMDEwMDAxMDAwMDAwMDAsCisJCTB4MDEw MTAwMDAwMTAxMDEwMSwgMHgwMTAxMDAwMDAxMDEwMTAwLCAweDAxMDEwMDAwMDEwMTAwMDEsIDB4 MDEwMTAwMDAwMTAxMDAwMCwgMHgwMTAxMDAwMDAxMDAwMTAxLCAweDAxMDEwMDAwMDEwMDAxMDAs IDB4MDEwMTAwMDAwMTAwMDAwMSwgMHgwMTAxMDAwMDAxMDAwMDAwLAorCQkweDAxMDEwMDAwMDAw MTAxMDEsIDB4MDEwMTAwMDAwMDAxMDEwMCwgMHgwMTAxMDAwMDAwMDEwMDAxLCAweDAxMDEwMDAw MDAwMTAwMDAsIDB4MDEwMTAwMDAwMDAwMDEwMSwgMHgwMTAxMDAwMDAwMDAwMTAwLCAweDAxMDEw MDAwMDAwMDAwMDEsIDB4MDEwMTAwMDAwMDAwMDAwMCwKKwkJMHgwMTAwMDEwMTAxMDEwMTAxLCAw eDAxMDAwMTAxMDEwMTAxMDAsIDB4MDEwMDAxMDEwMTAxMDAwMSwgMHgwMTAwMDEwMTAxMDEwMDAw LCAweDAxMDAwMTAxMDEwMDAxMDEsIDB4MDEwMDAxMDEwMTAwMDEwMCwgMHgwMTAwMDEwMTAxMDAw MDAxLCAweDAxMDAwMTAxMDEwMDAwMDAsCisJCTB4MDEwMDAxMDEwMDAxMDEwMSwgMHgwMTAwMDEw MTAwMDEwMTAwLCAweDAxMDAwMTAxMDAwMTAwMDEsIDB4MDEwMDAxMDEwMDAxMDAwMCwgMHgwMTAw MDEwMTAwMDAwMTAxLCAweDAxMDAwMTAxMDAwMDAxMDAsIDB4MDEwMDAxMDEwMDAwMDAwMSwgMHgw MTAwMDEwMTAwMDAwMDAwLAorCQkweDAxMDAwMTAwMDEwMTAxMDEsIDB4MDEwMDAxMDAwMTAxMDEw MCwgMHgwMTAwMDEwMDAxMDEwMDAxLCAweDAxMDAwMTAwMDEwMTAwMDAsIDB4MDEwMDAxMDAwMTAw MDEwMSwgMHgwMTAwMDEwMDAxMDAwMTAwLCAweDAxMDAwMTAwMDEwMDAwMDEsIDB4MDEwMDAxMDAw MTAwMDAwMCwKKwkJMHgwMTAwMDEwMDAwMDEwMTAxLCAweDAxMDAwMTAwMDAwMTAxMDAsIDB4MDEw MDAxMDAwMDAxMDAwMSwgMHgwMTAwMDEwMDAwMDEwMDAwLCAweDAxMDAwMTAwMDAwMDAxMDEsIDB4 MDEwMDAxMDAwMDAwMDEwMCwgMHgwMTAwMDEwMDAwMDAwMDAxLCAweDAxMDAwMTAwMDAwMDAwMDAs CisJCTB4MDEwMDAwMDEwMTAxMDEwMSwgMHgwMTAwMDAwMTAxMDEwMTAwLCAweDAxMDAwMDAxMDEw MTAwMDEsIDB4MDEwMDAwMDEwMTAxMDAwMCwgMHgwMTAwMDAwMTAxMDAwMTAxLCAweDAxMDAwMDAx MDEwMDAxMDAsIDB4MDEwMDAwMDEwMTAwMDAwMSwgMHgwMTAwMDAwMTAxMDAwMDAwLAorCQkweDAx MDAwMDAxMDAwMTAxMDEsIDB4MDEwMDAwMDEwMDAxMDEwMCwgMHgwMTAwMDAwMTAwMDEwMDAxLCAw eDAxMDAwMDAxMDAwMTAwMDAsIDB4MDEwMDAwMDEwMDAwMDEwMSwgMHgwMTAwMDAwMTAwMDAwMTAw LCAweDAxMDAwMDAxMDAwMDAwMDEsIDB4MDEwMDAwMDEwMDAwMDAwMCwKKwkJMHgwMTAwMDAwMDAx MDEwMTAxLCAweDAxMDAwMDAwMDEwMTAxMDAsIDB4MDEwMDAwMDAwMTAxMDAwMSwgMHgwMTAwMDAw MDAxMDEwMDAwLCAweDAxMDAwMDAwMDEwMDAxMDEsIDB4MDEwMDAwMDAwMTAwMDEwMCwgMHgwMTAw MDAwMDAxMDAwMDAxLCAweDAxMDAwMDAwMDEwMDAwMDAsCisJCTB4MDEwMDAwMDAwMDAxMDEwMSwg MHgwMTAwMDAwMDAwMDEwMTAwLCAweDAxMDAwMDAwMDAwMTAwMDEsIDB4MDEwMDAwMDAwMDAxMDAw MCwgMHgwMTAwMDAwMDAwMDAwMTAxLCAweDAxMDAwMDAwMDAwMDAxMDAsIDB4MDEwMDAwMDAwMDAw MDAwMSwgMHgwMTAwMDAwMDAwMDAwMDAwLAorCQkweDAwMDEwMTAxMDEwMTAxMDEsIDB4MDAwMTAx MDEwMTAxMDEwMCwgMHgwMDAxMDEwMTAxMDEwMDAxLCAweDAwMDEwMTAxMDEwMTAwMDAsIDB4MDAw MTAxMDEwMTAwMDEwMSwgMHgwMDAxMDEwMTAxMDAwMTAwLCAweDAwMDEwMTAxMDEwMDAwMDEsIDB4 MDAwMTAxMDEwMTAwMDAwMCwKKwkJMHgwMDAxMDEwMTAwMDEwMTAxLCAweDAwMDEwMTAxMDAwMTAx MDAsIDB4MDAwMTAxMDEwMDAxMDAwMSwgMHgwMDAxMDEwMTAwMDEwMDAwLCAweDAwMDEwMTAxMDAw MDAxMDEsIDB4MDAwMTAxMDEwMDAwMDEwMCwgMHgwMDAxMDEwMTAwMDAwMDAxLCAweDAwMDEwMTAx MDAwMDAwMDAsCisJCTB4MDAwMTAxMDAwMTAxMDEwMSwgMHgwMDAxMDEwMDAxMDEwMTAwLCAweDAw MDEwMTAwMDEwMTAwMDEsIDB4MDAwMTAxMDAwMTAxMDAwMCwgMHgwMDAxMDEwMDAxMDAwMTAxLCAw eDAwMDEwMTAwMDEwMDAxMDAsIDB4MDAwMTAxMDAwMTAwMDAwMSwgMHgwMDAxMDEwMDAxMDAwMDAw LAorCQkweDAwMDEwMTAwMDAwMTAxMDEsIDB4MDAwMTAxMDAwMDAxMDEwMCwgMHgwMDAxMDEwMDAw MDEwMDAxLCAweDAwMDEwMTAwMDAwMTAwMDAsIDB4MDAwMTAxMDAwMDAwMDEwMSwgMHgwMDAxMDEw MDAwMDAwMTAwLCAweDAwMDEwMTAwMDAwMDAwMDEsIDB4MDAwMTAxMDAwMDAwMDAwMCwKKwkJMHgw MDAxMDAwMTAxMDEwMTAxLCAweDAwMDEwMDAxMDEwMTAxMDAsIDB4MDAwMTAwMDEwMTAxMDAwMSwg MHgwMDAxMDAwMTAxMDEwMDAwLCAweDAwMDEwMDAxMDEwMDAxMDEsIDB4MDAwMTAwMDEwMTAwMDEw MCwgMHgwMDAxMDAwMTAxMDAwMDAxLCAweDAwMDEwMDAxMDEwMDAwMDAsCisJCTB4MDAwMTAwMDEw MDAxMDEwMSwgMHgwMDAxMDAwMTAwMDEwMTAwLCAweDAwMDEwMDAxMDAwMTAwMDEsIDB4MDAwMTAw MDEwMDAxMDAwMCwgMHgwMDAxMDAwMTAwMDAwMTAxLCAweDAwMDEwMDAxMDAwMDAxMDAsIDB4MDAw MTAwMDEwMDAwMDAwMSwgMHgwMDAxMDAwMTAwMDAwMDAwLAorCQkweDAwMDEwMDAwMDEwMTAxMDEs IDB4MDAwMTAwMDAwMTAxMDEwMCwgMHgwMDAxMDAwMDAxMDEwMDAxLCAweDAwMDEwMDAwMDEwMTAw MDAsIDB4MDAwMTAwMDAwMTAwMDEwMSwgMHgwMDAxMDAwMDAxMDAwMTAwLCAweDAwMDEwMDAwMDEw MDAwMDEsIDB4MDAwMTAwMDAwMTAwMDAwMCwKKwkJMHgwMDAxMDAwMDAwMDEwMTAxLCAweDAwMDEw MDAwMDAwMTAxMDAsIDB4MDAwMTAwMDAwMDAxMDAwMSwgMHgwMDAxMDAwMDAwMDEwMDAwLCAweDAw MDEwMDAwMDAwMDAxMDEsIDB4MDAwMTAwMDAwMDAwMDEwMCwgMHgwMDAxMDAwMDAwMDAwMDAxLCAw eDAwMDEwMDAwMDAwMDAwMDAsCisJCTB4MDAwMDAxMDEwMTAxMDEwMSwgMHgwMDAwMDEwMTAxMDEw MTAwLCAweDAwMDAwMTAxMDEwMTAwMDEsIDB4MDAwMDAxMDEwMTAxMDAwMCwgMHgwMDAwMDEwMTAx MDAwMTAxLCAweDAwMDAwMTAxMDEwMDAxMDAsIDB4MDAwMDAxMDEwMTAwMDAwMSwgMHgwMDAwMDEw MTAxMDAwMDAwLAorCQkweDAwMDAwMTAxMDAwMTAxMDEsIDB4MDAwMDAxMDEwMDAxMDEwMCwgMHgw MDAwMDEwMTAwMDEwMDAxLCAweDAwMDAwMTAxMDAwMTAwMDAsIDB4MDAwMDAxMDEwMDAwMDEwMSwg MHgwMDAwMDEwMTAwMDAwMTAwLCAweDAwMDAwMTAxMDAwMDAwMDEsIDB4MDAwMDAxMDEwMDAwMDAw MCwKKwkJMHgwMDAwMDEwMDAxMDEwMTAxLCAweDAwMDAwMTAwMDEwMTAxMDAsIDB4MDAwMDAxMDAw MTAxMDAwMSwgMHgwMDAwMDEwMDAxMDEwMDAwLCAweDAwMDAwMTAwMDEwMDAxMDEsIDB4MDAwMDAx MDAwMTAwMDEwMCwgMHgwMDAwMDEwMDAxMDAwMDAxLCAweDAwMDAwMTAwMDEwMDAwMDAsCisJCTB4 MDAwMDAxMDAwMDAxMDEwMSwgMHgwMDAwMDEwMDAwMDEwMTAwLCAweDAwMDAwMTAwMDAwMTAwMDEs IDB4MDAwMDAxMDAwMDAxMDAwMCwgMHgwMDAwMDEwMDAwMDAwMTAxLCAweDAwMDAwMTAwMDAwMDAx MDAsIDB4MDAwMDAxMDAwMDAwMDAwMSwgMHgwMDAwMDEwMDAwMDAwMDAwLAorCQkweDAwMDAwMDAx MDEwMTAxMDEsIDB4MDAwMDAwMDEwMTAxMDEwMCwgMHgwMDAwMDAwMTAxMDEwMDAxLCAweDAwMDAw MDAxMDEwMTAwMDAsIDB4MDAwMDAwMDEwMTAwMDEwMSwgMHgwMDAwMDAwMTAxMDAwMTAwLCAweDAw MDAwMDAxMDEwMDAwMDEsIDB4MDAwMDAwMDEwMTAwMDAwMCwKKwkJMHgwMDAwMDAwMTAwMDEwMTAx LCAweDAwMDAwMDAxMDAwMTAxMDAsIDB4MDAwMDAwMDEwMDAxMDAwMSwgMHgwMDAwMDAwMTAwMDEw MDAwLCAweDAwMDAwMDAxMDAwMDAxMDEsIDB4MDAwMDAwMDEwMDAwMDEwMCwgMHgwMDAwMDAwMTAw MDAwMDAxLCAweDAwMDAwMDAxMDAwMDAwMDAsCisJCTB4MDAwMDAwMDAwMTAxMDEwMSwgMHgwMDAw MDAwMDAxMDEwMTAwLCAweDAwMDAwMDAwMDEwMTAwMDEsIDB4MDAwMDAwMDAwMTAxMDAwMCwgMHgw MDAwMDAwMDAxMDAwMTAxLCAweDAwMDAwMDAwMDEwMDAxMDAsIDB4MDAwMDAwMDAwMTAwMDAwMSwg MHgwMDAwMDAwMDAxMDAwMDAwLAorCQkweDAwMDAwMDAwMDAwMTAxMDEsIDB4MDAwMDAwMDAwMDAx MDEwMCwgMHgwMDAwMDAwMDAwMDEwMDAxLCAweDAwMDAwMDAwMDAwMTAwMDAsIDB4MDAwMDAwMDAw MDAwMDEwMSwgMHgwMDAwMDAwMDAwMDAwMTAwLCAweDAwMDAwMDAwMDAwMDAwMDEsIDB4MDAwMDAw MDAwMDAwMDAwMAorCX07CisjZW5kaWYKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbl9mdWxsX2J5 dGVzOyBpKyspCisJeworI2lmZGVmIERPX0FWWDUxMl9WRVJTSU9OCisJCS8qIFRoZSBhcnJheSBp c24ndCByZXF1aXJlZCB3aGVuIEFWWDUxMiBpcyBhdmFpbGFibGUuICBUZXN0aW5nIG9ubHkgKi8K KwkJLyoKKwkJICogWFhYIHJlcXVpcmVzIENGTEFHUz0iLUQgRE9fQVZYNTEyX1ZFUlNJT04gLW1h cmNoPXg4Ni02NC12NCIgYW5kIGFuCisJCSAqIGF2eDUxMiBtYWNoaW5lCisJCSAqLworCisJCS8q CisJCSAqIFRoZSBiaXRzIGFycmF5IGhhcyAxcyBmb3IgdmFsdWVzIGFuZCAwcyBmb3IgTlVMTHMu IEJpdC1mbGlwIHRoYXQgdG8KKwkJICogZ2V0IDFzIGZvciBOVUxMcyBhbmQgdXNlIHRoYXQgbWFz ayB0byBwb3B1bGF0ZSB0aGUgcmVnaXN0ZXIgd2l0aAorCQkgKiB0cnVlIHZhbHVlcyBhbmQgemVy b3MgKGZhbHNlcykgd2hlbiB0aGUgbWFzayBiaXQgaXNuJ3Qgc2V0LgorCQkgKi8KKwkJX19tMTI4 aQkJcmVzID0gX21tX21hc2t6X3NldDFfZXBpOCh+Yml0c1tpXSwgdHJ1ZSk7CisKKwkJLyogR3Jh YiBsb3dlciA2NC1iaXRzIG9mIHRoZSAxMjgtYml0IHJlZ2lzdGVyICovCisJCXVpbnQ2NAkJc3Jj ID0gX21tX2N2dHNpMTI4X3NpNjQocmVzKTsKKworCQltZW1jcHkoaXNudWxsX3B0ciwgJnNyYywg c2l6ZW9mKHVpbnQ2NCkpOworI2Vsc2UKKwkJbWVtY3B5KGlzbnVsbF9wdHIsICZpc251bGxfdG9f YXJyYXlbYml0c1tpXV0sIHNpemVvZih1aW50NjQpKTsKKyNlbmRpZgorCQlpc251bGxfcHRyICs9 IDg7CisJfQorCisJLyogaGFuZGxlIHJlbWFpbmluZyBhdHRyaWJ1dGVzICovCisJZm9yICg7IGF0 dG51bSA8IG5hdHRzOyBhdHRudW0rKykKKwkJaXNudWxsW2F0dG51bV0gPSBhdHRfaXNudWxsKGF0 dG51bSwgYml0cyk7Cit9CisKICNpZm5kZWYgRlJPTlRFTkQKIC8qCiAgKiBHaXZlbiBhbiBhdHRi eXZhbCBhbmQgYW4gYXR0bGVuIGZyb20gZWl0aGVyIGEgRm9ybV9wZ19hdHRyaWJ1dGUgb3IKQEAg LTcxLDYgKzE1OSw3MyBAQCBmZXRjaF9hdHQoY29uc3Qgdm9pZCAqVCwgYm9vbCBhdHRieXZhbCwg aW50IGF0dGxlbikKIAkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShUKTsKIH0KIAorLyoKKyAqIGFs aWduX2ZldGNoX3RoZW5fYWRkCisgKgkJQXBwbGllcyBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkgb2Yg YXR0X3BvaW50ZXJfYWxpZ25ieSgpLCBmZXRjaF9hdHQoKQorICoJCWFuZCBhdHRfYWRkbGVuZ3Ro X3BvaW50ZXIoKSByZXN1bHRpbmcgaW4gKm9mZiBwb2ludGVyIHRvIHRoZSBwZXJoYXBzCisgKgkJ dW5hbGlnbmVkIG51bWJlciBvZiBieXRlcyBpbnRvICd0dXBwdHInLCByZWFkeSB0byBkZWZvcm0g dGhlIG5leHQKKyAqCQlhdHRyaWJ1dGUuCisgKgorICogdHVwcHRyOiBwb2ludGVyIHRvIHRoZSBi ZWdpbm5pbmcgb2YgdGhlIHR1cGxlLCBhZnRlciB0aGUgaGVhZGVyIGFuZCBhbnkKKyAqIE5VTEwg Yml0bWFzay4KKyAqIG9mZjogb2Zmc2V0IGluIGJ5dGVzIGZvciByZWFkaW5nIHR1cGxlIGRhdGEs IHBvc3NpYmx5IHVuYWxpZ25lZC4KKyAqIGF0dGJ5dmFsLCBhdHRsZW4sIGF0dGFsaWduYnkgYXJl IHZhbHVlcyBmcm9tIENvbXBhY3RBdHRyaWJ1dGUuCisgKi8KK3N0YXRpYyBpbmxpbmUgRGF0dW0K K2FsaWduX2ZldGNoX3RoZW5fYWRkKGNvbnN0IGNoYXIgKnR1cHB0ciwgdWludDMyICpvZmYsIGJv b2wgYXR0Ynl2YWwsIGludCBhdHRsZW4sCisJCQkJCSB1aW50OCBhdHRhbGlnbmJ5KQoreworCURh dHVtCQlyZXM7CisKKwlpZiAoYXR0bGVuID4gMCkKKwl7CisJCWNvbnN0IGNoYXIgKm9mZnNldF9w dHI7CisKKwkJKm9mZiA9IFRZUEVBTElHTihhdHRhbGlnbmJ5LCAqb2ZmKTsKKwkJb2Zmc2V0X3B0 ciA9IHR1cHB0ciArICpvZmY7CisJCSpvZmYgKz0gYXR0bGVuOworCQlpZiAoYXR0Ynl2YWwpCisJ CXsKKwkJCXN3aXRjaCAoYXR0bGVuKQorCQkJeworCQkJCWNhc2Ugc2l6ZW9mKGNoYXIpOgorCQkJ CQlyZXR1cm4gQ2hhckdldERhdHVtKCooKGNvbnN0IGNoYXIgKikgb2Zmc2V0X3B0cikpOworCQkJ CWNhc2Ugc2l6ZW9mKGludDE2KToKKwkJCQkJcmV0dXJuIEludDE2R2V0RGF0dW0oKigoY29uc3Qg aW50MTYgKikgb2Zmc2V0X3B0cikpOworCQkJCWNhc2Ugc2l6ZW9mKGludDMyKToKKwkJCQkJcmV0 dXJuIEludDMyR2V0RGF0dW0oKigoY29uc3QgaW50MzIgKikgb2Zmc2V0X3B0cikpOworCQkJCWRl ZmF1bHQ6CisKKwkJCQkJLyoKKwkJCQkJICogcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGVfaW50 ZXJuYWwoKSBzaG91bGQgaGF2ZQorCQkJCQkgKiBjaGVja2VkCisJCQkJCSAqLworCQkJCQlBc3Nl cnQoYXR0bGVuID09IHNpemVvZihpbnQ2NCkpOworCQkJCQlyZXR1cm4gSW50NjRHZXREYXR1bSgq KChjb25zdCBpbnQ2NCAqKSBvZmZzZXRfcHRyKSk7CisJCQl9CisJCX0KKwkJcmV0dXJuIFBvaW50 ZXJHZXREYXR1bShvZmZzZXRfcHRyKTsKKwl9CisJZWxzZSBpZiAoYXR0bGVuID09IC0xKQorCXsK KworCQlpZiAoIVZBUkFUVF9JU19TSE9SVCh0dXBwdHIgKyAqb2ZmKSkKKwkJCSpvZmYgPSBUWVBF QUxJR04oYXR0YWxpZ25ieSwgKm9mZik7CisKKwkJcmVzID0gUG9pbnRlckdldERhdHVtKHR1cHB0 ciArICpvZmYpOworCQkqb2ZmICs9IFZBUlNJWkVfQU5ZKERhdHVtR2V0UG9pbnRlcihyZXMpKTsK KwkJcmV0dXJuIHJlczsKKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0KGF0dGxlbiA9PSAtMik7CisJ CSpvZmYgPSBUWVBFQUxJR04oYXR0YWxpZ25ieSwgKm9mZik7CisJCXJlcyA9IFBvaW50ZXJHZXRE YXR1bSh0dXBwdHIgKyAqb2ZmKTsKKwkJKm9mZiArPSBzdHJsZW4odHVwcHRyICsgKm9mZikgKyAx OworCQlyZXR1cm4gcmVzOworCX0KK30KKwogI2lmbmRlZiBIQVZFX19CVUlMVElOX0NUWgogLyoK ICAqIEZvciByZXR1cm5pbmcgdGhlIDAtYmFzZWQgcG9zaXRpb24gb2YgdGhlIHJpZ2h0LW1vc3Qg MCBiaXQgb2YgYSB1aW50OCwgb3IgOAotLSAKMi41MS4wCgo= --000000000000d7a7fa0649990688--