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 1vxCqj-0034NZ-1f for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 23:38:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxCqh-003b3z-2h for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 23:38:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxCqg-003b3r-2g for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 23:38:51 +0000 Received: from mail-yw1-x112f.google.com ([2607:f8b0:4864:20::112f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vxCqV-000000005ff-1zPz for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 23:38:50 +0000 Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-79800183233so68642797b3.1 for ; Mon, 02 Mar 2026 15:38:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772494718; cv=none; d=google.com; s=arc-20240605; b=jrBt8eM+Q9ZD17h1mNJVJQtLo9CrCINQstVBpkY2lMH+vp6tOx7RAQhp0OnGMCBsb6 3BjoO2s7naQrDIlU9g/f0ksklI1kgh1s9SPzyhj6zIscVgcoQO91LWdXidaTBLbQyhtM aL2EOTPDXAWzQo9/KDIRSVMwlcCqZsLybTF+lMWs37WsljPGQwVyHMfH8YzvaMcBpR3x AJY9/9bfrzDg2lWD7CoEyp0JQlaxeSDh+7Rw5Mv0R1+wZIWTZVJlik/qeOz6xkwesu5+ y/AVBb4k4MK/1EFI1oAYs7ABXDmu6iSHtUirKwmX0I9D28tmQWTTWIjN7vYH63jDvp96 cacw== 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=5bnVBjp/VwMi81IsnYxAhBZ2nzzkXfUhQYRJMMs8sj8=; fh=5kmLFI9U1UZ5kQMIa3iVCL/22wTnT4pouJzAtKGFZMA=; b=Zw0nUGfsd707rM+iTbipxPaYmpqCb0FRU7Cq4/ZvsdbVcyJ85OnBsvSedXGKESfncB 8HQmaBep1OFkI9Wd/CGtIhfQA/SBnVoQpQCKLSc75QLIZjCVJtBo0ovwDfDRRD8GAEfH a7IvjiTX6PYeM8YX9gvQ7nAGYXQxd/FNNWXgD0l4YS1ZbMHjFzaryIglPtUt1/5pHYSD 1NOi+iCInc/C8A5gwrnEfAkun++J72qLHErzrIw7jfIjFOu1l19fjl6IiBwGkGqrF35l BkjOENKBQDRwpnMLljYPpd3qFiVtV2st/vkHQjrH0hHsozydayAAnFeU+A4++XY6n/3Y metg==; 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=1772494718; x=1773099518; 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=5bnVBjp/VwMi81IsnYxAhBZ2nzzkXfUhQYRJMMs8sj8=; b=TsQIijfX34vstV6XTJo8RsyVb4T5TvfSeBsqqsIlhzyPjT8FyGF3Ravv4EA+/VvodQ qgV/wNKU1FyYdFBo5ucmu0Q8O5G97RmjmmAO0bBJvy8YnSR3pFZUMo7cRckoON88SGLy kzxH0y+jVmW+K9/8IMQSeFyFWz893yshhvTaLZC4JhoPp48eECb6pk+VxItB3P0URvkI Z3za+zIAQo0VUifbop57Uc0bWRqC+DoSUUdGvkzkXovDlYI5wZJmVl6RYGvPM23hmyEg ZGPDTEcLpp4owcYJri3RS4tCo1UwcJTUvmv+RtjgQeryq87GsOsovKUaYhyXP1bCyWb6 D37g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772494718; x=1773099518; 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=5bnVBjp/VwMi81IsnYxAhBZ2nzzkXfUhQYRJMMs8sj8=; b=YTawCn8qVGdsf23Qp+kH1EdkPUIdrkXaZjzQBqJpMpb6PnbjfRvNSqljgRTXi7/s0t IbpRCoyFj1RORmImI37JbDfXwOE0LBWrE/ufsunA1/ByBpUkLWPEBhOcz8dK1cKUt4kz th4Bnb237rGpWiGB9fZlocPmDGxSBbGJ38iajwmF3ozN6zQFuRciZcJe3SsSMl3YiRTD TjsLDq2raQwXGk7KfJjtG3Lnj4rr6yikw/kczQozhSibnFuqEwfbryPMedUtpCcIwQ0A n0kKq4KUsrIj0LbK3lPyDvQOlePQkUqfSbDynNc6BrshFDZxtjpy3mHEW5OfDbHA3opP VawA== X-Forwarded-Encrypted: i=1; AJvYcCURqsebWi9W+LPMYBfIFgoyA2XD2D1ps+Nvry+a9yP/qglHON/8Rx4UEpnZLf1aMj1UAy31SYIa1LOMZkwn@lists.postgresql.org X-Gm-Message-State: AOJu0YwJh3ABWiiYdWCykIZVQ1qD2sDwTNPhYKfwnF2mmq3B26NAmbCa 8S1lTQZ5xzZ4S37WgBPymyP7AjH/2F1Yj1vjNJEmPqCDs/0pS6mYPPxet65+WcT7/mVOQYoxQsi oYU6fhdmGj98ihcaC3SNOzOGxw3onfNY= X-Gm-Gg: ATEYQzxDkABNAdXEcaVdkkhhotZG9tLJk2tNexvQpsONUlFtenxtpFibBeQAIN5s9/O 7m7kZjtZsICjPlHDG2982brFI193I70K2edV39S0EdN4wVFii1N2qWGHndVyHMCUoC3Mz/8QZly 8Me4pfLcFEc41riJzcz+fF5tcFlC6c6Fx0uv4wnVJgXZedbaPjw8tsabFYgtFBkv7fsb/XwkrtJ QV8julD1Tj18q7TvqSIffwtwziAaGI7RrrWIue5JLQ8kM22xzQ5gxsM0tGEKLqwiKJ7nZ4lo44x n3XV+frh/tNcNMzSgj2zqWeH7FxyzbWwysIyL6X6STjG8AmV8Zf/XoQv/gGJKQCQXAYSGFJbkbH D1l8WUwXg X-Received: by 2002:a05:690c:4b0a:b0:796:3f8a:9607 with SMTP id 00721157ae682-798bb470ca9mr1354417b3.30.1772494718399; Mon, 02 Mar 2026 15:38:38 -0800 (PST) MIME-Version: 1.0 References: <6BC5DBAB-6084-4BB8-8450-52E9648AB021@gmail.com> <7F5BCD7A-764D-4D8D-8E27-6F2CAAEA1CEE@gmail.com> <4379FDA3-9446-4E2C-9C15-32EFE8D4F31B@yandex-team.ru> <7ib3sa55sapwjlaz4sijbiq7iezna27kjvvvar4dpgkmadml6t@gfpkkwmdnepx> In-Reply-To: From: Melanie Plageman Date: Mon, 2 Mar 2026 18:38:07 -0500 X-Gm-Features: AaiRm50oGVH1L5O2ss9QryhMVenAoUAX3fDLI88k5XMwkj3OXeeFb6e72cMNHZw Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Andres Freund Cc: Andrey Borodin , Kirill Reshke , Chao Li , Xuneng Zhou , Robert Haas , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="0000000000000f1b2e064c131624" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000f1b2e064c131624 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Feb 20, 2026 at 12:59=E2=80=AFPM Andres Freund = wrote: > > On 2026-01-28 18:16:10 -0500, Melanie Plageman wrote: > > > I could see an argument for moving identify_and_fix_vm_corruption() > > out of the helper and into heap_page_prune_and_freeze() but then we'd > > have to move visibilitymap_get_status() out too. And that takes away a > > lot of the benefit of encapsulating all that logic. > > I was wondering about that option. Relatedly, I also was wondering if we = ought > to do identify_and_fix_vm_corruption() regardless of ->attempt_update_vm. Attached v35 does this. I always pin the vmbuffer if we are going to prune in heap_page_prune_opt(). In many cases, because it's saved in the scan descriptor, it won't actually need to take a new pin. During pruning, I check for VM corruption even if I am not considering setting the VM. > > Well, after this patch set, clearing the VM does happen before we emit > > WAL for pruning. > > That I think is a substantial improvement, the current (i.e. before your > series) placement really is pretty insane due to the guaranteed divergenc= e it > causes. > > I wonder if we actually should just force an FPI whenever we detect such > corruption, that way it would reliably fixed on the standby as well. Only problem is we would have to do an FPI of the VM page as well if we wanted the corruption to be reliably fixed on the standby. > > It wouldn't be hard to move the corruption fixups to the beginning of > > heap_page_prune_and_freeze() in the new code structure. > > As identify_and_fix_vm_corruption() needs lpdead_items, I'm not sure that= 's > true? > > I wonder if at least the warning for the "(PageIsAllVisible(heap_page) && > nlpdead_items > 0)" test should be moved to > heap_prune_record_dead_or_unused(). That way the WARNING could include th= e > offset number and it'd also work in the mark_unused_now case. > > Perhaps it also should trigger for RECENTLY_DEAD, INSERT_IN_PROGRESS, > DELETE_IN_PROGRESS? > > At that point the !page_all_visible && vm_all_visible part could indeed b= e > moved to the start of heap_page_prune_and_freeze() I've done all this. There is heap page/VM corruption check at the beginning of heap_page_prune_and_freeze() and then checking for corruption during pruning in the previously covered case (lpdead items) as well as the mark_unused_now case, and RECENTLY_DEAD/INSERT_IN_PROGRESS/DELETE_IN_PROGRESS. > > Would it be worth it? What benefit would we get? Do you just feel that = it > > should logically come first? > > One insanity is that right now we will process all frozen pages over and = over > due to he skip pages threshold, wasting a *lot* of CPU and memory bandwid= th. > It'd be quite defensible to just skip processing the page once we determi= ned > it's already all frozen. But for that we'd probably want to do the > "page_all_visible && vm_all_visible" check before returning... I've added a fast path to bypass pruning/freezing when the page is already all-visible. And I check for pg_all_visible && vm_all_visible beforehand. The one downside this has is if there is a page marked all-frozen but has dead tuples on it, we'll never get to fix that corruption nor clean up the dead tuples. But the fast path kind of seems worth it to me. > > > Do we actually forsee a case where only one of HEAP_PAGE_PRUNE_FREEZE= | > > > HEAP_PAGE_PRUNE_UPDATE_VM would be set? > > > > Yes, when setting the VM on-access, it is too expensive to call > > heap_prepare_freeze_tuple() on each tuple. I could work on trying to > > optimize it, but it isn't currently viable. > > Is it too expensive to do so even when we already decided to do some prun= ing? > I am not surprised it's too expensive when there's not even a dead tuple = on > the page. But I am mildly surprised if it's too expensive to do when we'= d WAL > log anyway? It's not really possible in the current code structure to only call heap_prepare_freeze_tuple() when there are at least some prunable tuples. We go through the line pointers and record them as prunable at the same time we call heap_prepare_freeze_tuple(), so we won't know until we've examined all line pointers that there are no prunable tuples, at which point we will have called heap_prepare_freeze_tuple() for every tuple. > > I think using all_frozen_except_dead while maintaining > > visibility_cutoff_xid (in heap_prune_record_unchanged_lp_normal()) has > > the potential to be confusing, though. We'd need to keep updating > > visibility_cutoff_xid when all_visible is false but > > all_frozen_except_dead is true as well as when all_visible is true. > > And because we don't care about all_visible_except_dead, it gets even > > more confusing to make sure we are maintaining the right variables in > > the right situations. > > I suspect we should just track all of the horizons/cutoffs all the time. = This > whole stuff about optimizing out a few conditional assignments complicate= s the > code substantially and feels extremely error prone to me. I've done this in v35. I posted the freeze horizon tracking patch separately in [1] but it is in v35 as 0004. Tracking the newest live xid is in 0009. This also always tracks all_visible for all callers since I unconditionally pass the vmbuffer now. I still don't set the VM if the query is modifying the relation, though. > I probably complained about this before, and it's not this patch's fault,= but > PruneState->{all_visible,all_frozen} are imo confusingly named, due to > sounding like they describe the current state, rather than the possible s= tate > after pruning. It's not helped by this comment: > > * NOTE: all_visible and all_frozen initially don't include LP_DE= AD items. > * That's convenient for heap_page_prune_and_freeze() to use them= to > * decide whether to opportunistically freeze the page or not. T= he > * all_visible and all_frozen values ultimately used to set the V= M are > * adjusted to include LP_DEAD items after we determine whether o= r not to > * opportunistically freeze. > > "all-visible ... are adjusted to include LP_DEAD" ... - just reading that= it's > hard to know what it means. 0003 does the rename. > The first thing to improve pruning performance that I would do is to intr= oduce > a fastpath for pages that a) area already frozen b) do not have dead item= s (if > we're not freezing). Iterating through HOT chains is far from cheap, and = if > all rows are live, there's not really a point in doing so. This is > particulary important for VACUUMs where we end up freezing a ton of pages= that > are already frozen, due to the silly skip_pages_threshold thing. 0007 adds a fast path. > > +static TransactionId > > +get_conflict_xid(bool do_prune, bool do_freeze, bool do_set_vm, > > + uint8 old_vmbits, uint8 new_vmbits, > > + TransactionId latest_xid_removed, Transa= ctionId frz_conflict_horizon, > > + TransactionId visibility_cutoff_xid) > > +{ > > + TransactionId conflict_xid; > > + > > + /* > > + * We can omit the snapshot conflict horizon if we are not prunin= g or > > + * freezing any tuples and are setting an already all-visible pag= e > > + * all-frozen in the VM. > > Maybe mention when this can happen, because it's not immediately obvious. I've added this to my TODO. I honestly can't think of a scenario where it can happen. But I remember spending quite a bit of time thinking about it on another occasion. The current code (in master) does specifically account for this scenario, which is why I kept the logic, but I'm not sure how it can happen. I made all the other changes to specific comments you mentioned in your mail but I won't bore you with itemization. > > if (do_set_vm) > > conflict_xid =3D visibility_cutoff_xid; > > else if (do_freeze) > > conflict_xid =3D frz_conflict_horizon; > > else > > conflict_xid =3D InvalidTransactionId; > > Could it be worth checking that if (do_set_vm && do_freeze) the > frz_conflict_horizon won't "violated" by using visibility_cutoff_xid inst= ead? Yes, as you mentioned off-list, this wasn't right. New code is like this TransactionId conflict_xid =3D InvalidTransactionId; ... if (do_set_vm) conflict_xid =3D newest_live_xid; if (do_freeze && TransactionIdFollows(newest_frozen_xid, conflict_xid)) conflict_xid =3D newest_frozen_xid; > > From 8d350868206456f631883a40a955dff480e408d3 Mon Sep 17 00:00:00 2001 > > From: Melanie Plageman > > Date: Wed, 17 Dec 2025 16:51:05 -0500 > > Subject: [PATCH v34 09/14] Use GlobalVisState in vacuum to determine pa= ge > > level visibility > > > > [...] > > > > Because comparing a transaction ID against GlobalVisState is more > > expensive than comparing against a single XID, we defer this check unti= l > > after scanning all tuples on the page. > > Curious, is this a precaution or was this a measurable bottleneck? I did see GlobalVisTestXidMaybeRunning() in a profile I did when it was still called for every HEAPTUPLE_LIVE tuple in heap_prune_record_unchanged_lp_normal(), but I don't have the profile or test case around anymore. However, since I now unconditionally maintain the newest_live_xid, moving GlobalVisTestXidMaybeRunning() back into heap_prune_record_unchanged_lp_normal() wouldn't help us avoid any work. It would just make the values of prstate.set_all_visible and prstate.set_all_frozen more accurate sooner. But I don't think it's worth the extra function call since set_all_frozen and set_all_visible won't be totally "done" until after we decide whether or not to opportunistically freeze anyway. > > @@ -1077,6 +1078,24 @@ heap_page_prune_and_freeze(PruneFreezeParams *pa= rams, > > prune_freeze_plan(RelationGetRelid(params->relation), > > buffer, &prstate, off_loc); > > > > + /* > > + * After processing all the live tuples on the page, if the newes= t xmin > > + * amongst them may be considered running by any snapshot, the pa= ge cannot > > + * be all-visible. > > + */ > > + if (prstate.all_visible && > > + TransactionIdIsNormal(prstate.visibility_cutoff_xid) && > > Any reason to test IsNormal rather than just IsValid()? There should nev= er be > a reason it's a valid but not "normal" xid, right? Well the reason I did this was that the existing code in master tracking visibility_cutoff_xid only advances it if TransactionIdIsNormal(). I'm a bit confused about it too because it seems like we would still want to do it for bootstrap mode xids. But I see PageSetPrunable() only allows normal xids. > > @@ -1794,28 +1812,15 @@ heap_prune_record_unchanged_lp_normal(Page page= , PruneState *prstate, OffsetNumb > > } > > > > /* > > - * The inserter definitely committed. Bu= t is it old enough > > - * that everyone sees it as committed? A= FrozenTransactionId > > - * is seen as committed to everyone. Oth= erwise, we check if > > - * there is a snapshot that considers thi= s xid to still be > > - * running, and if so, we don't consider = the page all-visible. > > + * The inserter definitely committed. But= we don't know if it > > + * is old enough that everyone sees it as= committed. Later, > > + * after processing all the tuples on the= page, we'll check if > > + * there is any snapshot that still consi= ders the newest xid > > + * on the page to be running. If so, we d= on't consider the > > + * page all-visible. > > */ > > xmin =3D HeapTupleHeaderGetXmin(htup); > > > > - /* > > - * For now always use prstate->cutoffs fo= r this test, because > > - * we only update 'all_visible' and 'all_= frozen' when freezing > > - * is requested. We could use GlobalVisTe= stIsRemovableXid > > - * instead, if a non-freezing caller want= ed to set the VM bit. > > - */ > > - Assert(prstate->cutoffs); > > - if (!TransactionIdPrecedes(xmin, prstate-= >cutoffs->OldestXmin)) > > - { > > - prstate->all_visible =3D false; > > - prstate->all_frozen =3D false; > > - break; > > - } > > - > > /* Track newest xmin on page. */ > > if (TransactionIdFollows(xmin, prstate->v= isibility_cutoff_xid) && > > TransactionIdIsNormal(xmin)) > > Kinda wonder if this cod eshould be in something like > heap_prune_record_freezable() or such, rather than be inside > heap_prune_record_unchanged_lp_normal(). I played around with it, but it all felt a bit awkward. I wrote it down for a future enhancement idea. > > Subject: [PATCH v34 10/14] Unset all_visible sooner if not freezing > > > > In the prune/freeze path, we currently delay clearing all_visible and > > all_frozen in the presence of dead items to allow opportunistic > > freezing. > > > > However, if no freezing will be attempted, there=E2=80=99s no need to d= elay. > > Clearing the flags earlier avoids extra bookkeeping in > > heap_prune_record_unchanged_lp_normal(). This currently has no runtime > > effect because all callers that consider setting the VM also prepare > > freeze plans, but upcoming changes will allow on-access pruning to set > > the VM without freezing. The extra bookkeeping was noticeable in a > > profile of on-access VM setting. > > What workload was that? It was a select * offset all query with a few fat tuples on each page and none of them prunable. I'm planning on digging up the case/creating a new one to see if it is reproducible. This was with an older version of the code that had more conditionals as well. This commit is actually dropped in v35 because I now always keep newest_live_xid up-to-date (0009) which means unsetting set_all_visible sooner has no benefit. > Theoretically, even if we don't freeze, the page still may be all-visible= or > all frozen after the removal of dead items, no? Practically that won't ha= ppen, > because we don't remove dead items in any of the relevant paths, but from= the > commit message and comments that's not entirely clear. Yea, it's clearer with the commit dropped. > > @@ -678,6 +678,12 @@ typedef struct EState > > = * ExecDoInitialPruning() */ > > const char *es_sourceText; /* Source text from QueryDesc */ > > > > + /* > > + * RT indexes of relations modified by the query through a > > + * UPDATE/DELETE/INSERT/MERGE or targeted by a SELECT FOR UPDATE. > > + */ > > + Bitmapset *es_modified_relids; > > + > > Other EState fields are initialized in CreateExecutorState, this isn't af= aict? Oops, yes. I based it on es_unpruned_relids which wasn't initialized there either. I've added a commit (0013) to initialize a few EState fields that weren't initialized in CreateExecutorState() as well. > Wonder if it's worth adding a crosscheck somewhere, verifying that if a > relation is modified, it's in es_modified_relids. Otherwise this could ve= ry > well silently get out of date. Done in v35 (0014). > Also, there's some overlap between the informtion collected this way, and > AcquireExecutorLocks(), ScanQueryForLocks(), which determine the needed l= ock > modes via rte->rellockmode. Those are in parser/planner, so it doesn't seem like a good fit. I populate es_modified_relids in the executor. I don't know exactly what the overlap would be between RTEs with an exclusive rellockmode and es_modified_relids. It seems like you could have RTEs which don't end up getting modified that have a lock level that would have made you think that they would be modified. But were you imagining a substitution or a cross-check? > > From 8205b2d7da0c3ad3cbc5cead336ced677996b37d Mon Sep 17 00:00:00 2001 > > From: Melanie Plageman > > Date: Wed, 3 Dec 2025 15:12:18 -0500 > > Subject: [PATCH v34 12/14] Pass down information on table modification = to scan > > node > > Perhaps worth splitting up, so the addition of the 0 flag is separate fro= m the > the read only hint aspect. Done. [1] https://www.postgresql.org/message-id/CAAKRu_bbaUV8OUjAfVa_iALgKnTSfB4g= O3jnkfpcFgrxEpSGJQ%40mail.gmail.com --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0001-Move-commonly-used-context-into-PruneState-and-s.patch" Content-Disposition: attachment; filename="v35-0001-Move-commonly-used-context-into-PruneState-and-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9thwcc0 RnJvbSA3NTI2ZTJhMGU3ZDFhMDEzY2I5ZjRkOTVkZmY4YTRmZWFiZDcwMzViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDI2IEZlYiAyMDI2IDEwOjA5OjU1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMDEvMThdIE1vdmUgY29tbW9ubHkgdXNlZCBjb250ZXh0IGludG8gUHJ1bmVTdGF0 ZSBhbmQKIHNpbXBsaWZ5IGhlbHBlcnMKCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgYW5k IG1hbnkgb2YgaXRzIGhlbHBlcnMgdXNlIHRoZSBoZWFwCmJ1ZmZlciwgYmxvY2sgbnVtYmVyLCBh bmQgcGFnZS4gT3RoZXIgaGVscGVycyB0b29rIHRoZSBoZWFwIHBhZ2UgYW5kCmRpZG4ndCB1c2Ug aXQuIEluaXRpYWxpemluZyB0aGVzZSB2YWx1ZXMgb25jZSBkdXJpbmcKcHJ1bmVfZnJlZXplX3Nl dHVwKCkgc2ltcGxpZmllcyB0aGUgaGVscGVycycgaW50ZXJmYWNlcyBhbmQgYXZvaWRzIGFueQpy ZXBlYXRlZCBjYWxscyB0byBCdWZmZXJHZXRCbG9ja051bWJlcigpIGFuZCBCdWZmZXJHZXRQYWdl KCkuCgpXaGlsZSB1cGRhdGluZyBQcnVuZVN0YXRlLCBhbHNvIHJlb3JnYW5pemUgaXRzIGZpZWxk cyB0byBtYWtlIGxheW91dCBhbmQKZG9jdW1lbnRhdGlvbiBtb3JlIGNvbnNpc3RlbnQKLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyB8IDEzNiArKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA2MzJjMjQyNzk1Mi4u M2M1ZDMzODM0ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC00NSw2ICs0 NSwxNiBAQCB0eXBlZGVmIHN0cnVjdAogCS8qIHdoZXRoZXIgdG8gYXR0ZW1wdCBmcmVlemluZyB0 dXBsZXMgKi8KIAlib29sCQlhdHRlbXB0X2ZyZWV6ZTsKIAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAq Y3V0b2ZmczsKKwlSZWxhdGlvbglyZWxhdGlvbjsKKworCS8qCisJICogS2VlcCB0aGUgYnVmZmVy LCBibG9jaywgYW5kIHBhZ2UgaGFuZHkgc28gdGhhdCBoZWxwZXJzIG5lZWRpbmcgdG8KKwkgKiBh Y2Nlc3MgdGhlbSBkb24ndCBuZWVkIHRvIG1ha2UgcmVwZWF0ZWQgY2FsbHMgdG8gQnVmZmVyR2V0 QmxvY2tOdW1iZXIoKQorCSAqIGFuZCBCdWZmZXJHZXRQYWdlKCkuCisJICovCisJQmxvY2tOdW1i ZXIgYmxvY2s7CisJQnVmZmVyCQlidWZmZXI7CisJUGFnZQkJcGFnZTsKIAogCS8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSAqIEZpZWxk cyBkZXNjcmliaW5nIHdoYXQgdG8gZG8gdG8gdGhlIHBhZ2UKQEAgLTk4LDExICsxMDgsMTkgQEAg dHlwZWRlZiBzdHJ1Y3QKIAkgKi8KIAlpbnQ4CQlodHN2W01heEhlYXBUdXBsZXNQZXJQYWdlICsg MV07CiAKLQkvKgotCSAqIEZyZWV6aW5nLXJlbGF0ZWQgc3RhdGUuCisJLyotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICogV29ya2luZyBz dGF0ZSBmb3IgZnJlZXppbmcKKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAkgKi8KIAlIZWFwUGFnZUZyZWV6ZSBwYWdlZnJ6OwogCisJ LyoKKwkgKiBUaGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB1c2VkIHdoZW4gZnJlZXppbmcg dHVwbGVzLiBUaGUgZmluYWwKKwkgKiBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGZvciB0aGUg cmVjb3JkIG1heSBiZSBuZXdlciBpZiBwcnVuaW5nCisJICogcmVtb3ZlcyBuZXdlciB0cmFuc2Fj dGlvbiBJRHMuCisJICovCisJVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbjsKKwog CS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogCSAqIEluZm9ybWF0aW9uIGFib3V0IHdoYXQgd2FzIGRvbmUKIAkgKgpAQCAtMTI5LDEzICsx NDcsNiBAQCB0eXBlZGVmIHN0cnVjdAogCWludAkJCWxwZGVhZF9pdGVtczsJLyogbnVtYmVyIG9m IGl0ZW1zIGluIHRoZSBhcnJheSAqLwogCU9mZnNldE51bWJlciAqZGVhZG9mZnNldHM7CS8qIHBv aW50cyBkaXJlY3RseSB0byBwcmVzdWx0LT5kZWFkb2Zmc2V0cyAqLwogCi0JLyoKLQkgKiBUaGUg c25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB1c2VkIHdoZW4gZnJlZXppbmcgdHVwbGVzLiBUaGUg ZmluYWwKLQkgKiBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgcmVjb3JkIG1heSBi ZSBuZXdlciBpZiBwcnVuaW5nCi0JICogcmVtb3ZlcyBuZXdlciB0cmFuc2FjdGlvbiBJRHMuCi0J ICovCi0JVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbjsKLQogCS8qCiAJICogYWxs X3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBh bGwtZnJvemVuCiAJICogYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3Ig dGhpcyBwYWdlIGFmdGVyIHBydW5pbmcuCkBAIC0xNjIsMTQgKzE3MywxMiBAQCBzdGF0aWMgdm9p ZCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkg ICBNdWx0aVhhY3RJZCAqbmV3X3JlbG1pbl9teGlkLAogCQkJCQkJCSAgIFBydW5lRnJlZXplUmVz dWx0ICpwcmVzdWx0LAogCQkJCQkJCSAgIFBydW5lU3RhdGUgKnByc3RhdGUpOwotc3RhdGljIHZv aWQgcHJ1bmVfZnJlZXplX3BsYW4oT2lkIHJlbG9pZCwgQnVmZmVyIGJ1ZmZlciwKLQkJCQkJCQkg IFBydW5lU3RhdGUgKnByc3RhdGUsCitzdGF0aWMgdm9pZCBwcnVuZV9mcmVlemVfcGxhbihQcnVu ZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jKTsKIHN0YXRp YyBIVFNWX1Jlc3VsdCBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0oUHJ1bmVTdGF0ZSAqcHJz dGF0ZSwKLQkJCQkJCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwKLQkJCQkJCQkJCQkJICAgQnVmZmVy IGJ1ZmZlcik7CisJCQkJCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXApOwogc3RhdGljIGlubGluZSBI VFNWX1Jlc3VsdCBodHN2X2dldF92YWxpZF9zdGF0dXMoaW50IHN0YXR1cyk7Ci1zdGF0aWMgdm9p ZCBoZWFwX3BydW5lX2NoYWluKFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgYmxvY2tubywgT2Zmc2V0 TnVtYmVyIG1heG9mZiwKK3N0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfY2hhaW4oT2Zmc2V0TnVtYmVy IG1heG9mZiwKIAkJCQkJCQkgT2Zmc2V0TnVtYmVyIHJvb3RvZmZudW0sIFBydW5lU3RhdGUgKnBy c3RhdGUpOwogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfcHJ1bmFibGUoUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9y ZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKQEAgLTE4MSwxNSArMTkwLDE0IEBA IHN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2VkKFBydW5lU3RhdGUg KnByc3RhdGUsIE9mZnNldE51bWJlciBvCiAJCQkJCQkJCQkJCSBib29sIHdhc19ub3JtYWwpOwog c3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bWJlciBvZmZudW0sIGJvb2wgd2FzX25vcm1hbCk7CiAKLXN0YXRpYyB2b2lkIGhl YXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF91bnVzZWQoUGFnZSBwYWdlLCBQcnVuZVN0YXRl ICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKLXN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVf cmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRl LCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKLXN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9kZWFkKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVt YmVyIG9mZm51bSk7CitzdGF0aWMgdm9pZCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBf dW51c2VkKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pOworc3RhdGlj IHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQcnVuZVN0YXRlICpw cnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKK3N0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9kZWFkKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBv ZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGly ZWN0KFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pOwogCiBzdGF0aWMg dm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIAotc3RhdGljIGJvb2wgaGVh cF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAotCQkJ CQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29sIGRvX2hp bnRfcHJ1bmUsCitzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoYm9vbCBkaWRfdHVw bGVfaGludF9mcGksIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9faGludF9wcnVuZSwKIAkJCQkJCQkJ ICBQcnVuZVN0YXRlICpwcnN0YXRlKTsKIAogCkBAIC0zNDIsNiArMzUwLDEwIEBAIHBydW5lX2Zy ZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCUFzc2VydCghKHBhcmFtcy0+ b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpIHx8IHBhcmFtcy0+Y3V0b2Zmcyk7CiAJ cHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUgPSAocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BS VU5FX0ZSRUVaRSkgIT0gMDsKIAlwcnN0YXRlLT5jdXRvZmZzID0gcGFyYW1zLT5jdXRvZmZzOwor CXByc3RhdGUtPnJlbGF0aW9uID0gcGFyYW1zLT5yZWxhdGlvbjsKKwlwcnN0YXRlLT5ibG9jayA9 IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHBhcmFtcy0+YnVmZmVyKTsKKwlwcnN0YXRlLT5idWZmZXIg PSBwYXJhbXMtPmJ1ZmZlcjsKKwlwcnN0YXRlLT5wYWdlID0gQnVmZmVyR2V0UGFnZShwYXJhbXMt PmJ1ZmZlcik7CiAKIAkvKgogCSAqIE91ciBzdHJhdGVneSBpcyB0byBzY2FuIHRoZSBwYWdlIGFu ZCBtYWtlIGxpc3RzIG9mIGl0ZW1zIHRvIGNoYW5nZSwKQEAgLTQ1NSwxNiArNDY3LDE1IEBAIHBy dW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogICogKm9mZl9sb2Mg aXMgdXNlZCBmb3IgZXJyb3IgY2FsbGJhY2sgYW5kIGNsZWFyZWQgYmVmb3JlIHJldHVybmluZy4K ICAqLwogc3RhdGljIHZvaWQKLXBydW5lX2ZyZWV6ZV9wbGFuKE9pZCByZWxvaWQsIEJ1ZmZlciBi dWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUsCi0JCQkJICBPZmZzZXROdW1iZXIgKm9mZl9sb2Mp CitwcnVuZV9mcmVlemVfcGxhbihQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgKm9m Zl9sb2MpCiB7Ci0JUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQlCbG9ja051 bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKLQlPZmZzZXROdW1i ZXIgbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKTsKKwlQYWdlCQlwYWdlID0g cHJzdGF0ZS0+cGFnZTsKKwlCbG9ja051bWJlciBibG9ja25vID0gcHJzdGF0ZS0+YmxvY2s7CisJ T2Zmc2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocHJzdGF0ZS0+cGFn ZSk7CiAJT2Zmc2V0TnVtYmVyIG9mZm51bTsKIAlIZWFwVHVwbGVEYXRhIHR1cDsKIAotCXR1cC50 X3RhYmxlT2lkID0gcmVsb2lkOworCXR1cC50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChw cnN0YXRlLT5yZWxhdGlvbik7CiAKIAkvKgogCSAqIERldGVybWluZSBIVFNWIGZvciBhbGwgdHVw bGVzLCBhbmQgcXVldWUgdGhlbSB1cCBmb3IgcHJvY2Vzc2luZyBhcyBIT1QKQEAgLTUwNSw3ICs1 MTYsNyBAQCBwcnVuZV9mcmVlemVfcGxhbihPaWQgcmVsb2lkLCBCdWZmZXIgYnVmZmVyLCBQcnVu ZVN0YXRlICpwcnN0YXRlLAogCQkvKiBOb3RoaW5nIHRvIGRvIGlmIHNsb3QgZG9lc24ndCBjb250 YWluIGEgdHVwbGUgKi8KIAkJaWYgKCFJdGVtSWRJc1VzZWQoaXRlbWlkKSkKIAkJewotCQkJaGVh cF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3VudXNlZChwYWdlLCBwcnN0YXRlLCBvZmZudW0p OworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3VudXNlZChwcnN0YXRlLCBvZmZu dW0pOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNTE4LDcgKzUyOSw3IEBAIHBydW5lX2ZyZWV6 ZV9wbGFuKE9pZCByZWxvaWQsIEJ1ZmZlciBidWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJ CQlpZiAodW5saWtlbHkocHJzdGF0ZS0+bWFya191bnVzZWRfbm93KSkKIAkJCQloZWFwX3BydW5l X3JlY29yZF91bnVzZWQocHJzdGF0ZSwgb2ZmbnVtLCBmYWxzZSk7CiAJCQllbHNlCi0JCQkJaGVh cF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2RlYWQocGFnZSwgcHJzdGF0ZSwgb2ZmbnVtKTsK KwkJCQloZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChwcnN0YXRlLCBvZmZudW0p OwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNTM5LDggKzU1MCw3IEBAIHBydW5lX2ZyZWV6ZV9w bGFuKE9pZCByZWxvaWQsIEJ1ZmZlciBidWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCXR1 cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVtaWQpOwogCQlJdGVtUG9pbnRlclNldCgmdHVw LnRfc2VsZiwgYmxvY2tubywgb2ZmbnVtKTsKIAotCQlwcnN0YXRlLT5odHN2W29mZm51bV0gPSBo ZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0ocHJzdGF0ZSwgJnR1cCwKLQkJCQkJCQkJCQkJCQkJ CWJ1ZmZlcik7CisJCXByc3RhdGUtPmh0c3Zbb2ZmbnVtXSA9IGhlYXBfcHJ1bmVfc2F0aXNmaWVz X3ZhY3V1bShwcnN0YXRlLCAmdHVwKTsKIAogCQlpZiAoIUhlYXBUdXBsZUhlYWRlcklzSGVhcE9u bHkoaHR1cCkpCiAJCQlwcnN0YXRlLT5yb290X2l0ZW1zW3Byc3RhdGUtPm5yb290X2l0ZW1zKytd ID0gb2ZmbnVtOwpAQCAtNTcxLDcgKzU4MSw3IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKE9pZCByZWxv aWQsIEJ1ZmZlciBidWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCSpvZmZfbG9jID0gb2Zm bnVtOwogCiAJCS8qIFByb2Nlc3MgdGhpcyBpdGVtIG9yIGNoYWluIG9mIGl0ZW1zICovCi0JCWhl YXBfcHJ1bmVfY2hhaW4ocGFnZSwgYmxvY2tubywgbWF4b2ZmLCBvZmZudW0sIHByc3RhdGUpOwor CQloZWFwX3BydW5lX2NoYWluKG1heG9mZiwgb2ZmbnVtLCBwcnN0YXRlKTsKIAl9CiAKIAkvKgpA QCAtNjI3LDcgKzYzNyw3IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKE9pZCByZWxvaWQsIEJ1ZmZlciBi dWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQl9CiAJCX0KIAkJZWxzZQotCQkJaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChwYWdlLCBwcnN0YXRlLCBvZmZudW0pOwor CQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChwcnN0YXRlLCBvZmZudW0p OwogCX0KIAogCS8qIFdlIHNob3VsZCBub3cgaGF2ZSBwcm9jZXNzZWQgZXZlcnkgdHVwbGUgZXhh Y3RseSBvbmNlICAqLwpAQCAtNjQ4LDcgKzY1OCw3IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKE9pZCBy ZWxvaWQsIEJ1ZmZlciBidWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUsCiAKIC8qCiAgKiBEZWNp ZGUgd2hldGhlciB0byBwcm9jZWVkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBmcmVl emUgcGxhbnMKLSAqIHByZXBhcmVkIGZvciB0aGUgZ2l2ZW4gaGVhcCBidWZmZXIuIElmIGZyZWV6 aW5nIGlzIGNob3NlbiwgdGhpcyBmdW5jdGlvbgorICogcHJlcGFyZWQgZm9yIHRoZSBjdXJyZW50 IGhlYXAgYnVmZmVyLiBJZiBmcmVlemluZyBpcyBjaG9zZW4sIHRoaXMgZnVuY3Rpb24KICAqIHBl cmZvcm1zIHNldmVyYWwgcHJlLWZyZWV6ZSBjaGVja3MuCiAgKgogICogVGhlIHZhbHVlcyBvZiBk b19wcnVuZSwgZG9faGludF9wcnVuZSwgYW5kIGRpZF90dXBsZV9oaW50X2ZwaSBtdXN0IGJlCkBA IC02NjAsOCArNjcwLDcgQEAgcHJ1bmVfZnJlZXplX3BsYW4oT2lkIHJlbG9pZCwgQnVmZmVyIGJ1 ZmZlciwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKICAqIHBhZ2UsIGFuZCBmYWxzZSBvdGhlcndpc2Uu CiAgKi8KIHN0YXRpYyBib29sCi1oZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCi0JCQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksCitoZWFw X3BhZ2Vfd2lsbF9mcmVlemUoYm9vbCBkaWRfdHVwbGVfaGludF9mcGksCiAJCQkJCSAgYm9vbCBk b19wcnVuZSwKIAkJCQkJICBib29sIGRvX2hpbnRfcHJ1bmUsCiAJCQkJCSAgUHJ1bmVTdGF0ZSAq cHJzdGF0ZSkKQEAgLTcwOSwxOCArNzE4LDE5IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCSAqIEZyZWV6aW5nIHdvdWxkIG1ha2Ug dGhlIHBhZ2UgYWxsLWZyb3plbi4gIEhhdmUgYWxyZWFkeSBlbWl0dGVkCiAJCQkgKiBhbiBGUEkg b3Igd2lsbCBkbyBzbyBhbnl3YXk/CiAJCQkgKi8KLQkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJl bGF0aW9uKSkKKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHByc3RhdGUtPnJlbGF0aW9uKSkKIAkJ CXsKIAkJCQlpZiAoZGlkX3R1cGxlX2hpbnRfZnBpKQogCQkJCQlkb19mcmVlemUgPSB0cnVlOwog CQkJCWVsc2UgaWYgKGRvX3BydW5lKQogCQkJCXsKLQkJCQkJaWYgKFhMb2dDaGVja0J1ZmZlck5l ZWRzQmFja3VwKGJ1ZmZlcikpCisJCQkJCWlmIChYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChw cnN0YXRlLT5idWZmZXIpKQogCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKIAkJCQl9CiAJCQkJZWxz ZSBpZiAoZG9faGludF9wcnVuZSkKIAkJCQl7Ci0JCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVk KCkgJiYgWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKKwkJCQkJaWYgKFhMb2dI aW50Qml0SXNOZWVkZWQoKSAmJgorCQkJCQkJWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAocHJz dGF0ZS0+YnVmZmVyKSkKIAkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7CiAJCQkJfQogCQkJfQpAQCAt NzMzLDcgKzc0Myw3IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAkJICogVmFsaWRhdGUgdGhlIHR1cGxlcyB3ZSB3aWxsIGJlIGZyZWV6 aW5nIGJlZm9yZSBlbnRlcmluZyB0aGUKIAkJICogY3JpdGljYWwgc2VjdGlvbi4KIAkJICovCi0J CWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3MoYnVmZmVyLCBwcnN0YXRlLT5mcm96ZW4sIHByc3RhdGUt Pm5mcm96ZW4pOworCQloZWFwX3ByZV9mcmVlemVfY2hlY2tzKHByc3RhdGUtPmJ1ZmZlciwgcHJz dGF0ZS0+ZnJvemVuLCBwcnN0YXRlLT5uZnJvemVuKTsKIAogCQkvKgogCQkgKiBDYWxjdWxhdGUg d2hhdCB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzaG91bGQgYmUgZm9yIGEgcmVjb3Jk CkBAIC04MjIsOCArODMyLDYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5f eGlkLAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCkKIHsKLQlCdWZmZXIJ CWJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVyOwotCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CiAJUHJ1bmVTdGF0ZQlwcnN0YXRlOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlk b19wcnVuZTsKQEAgLTg0Miw4ICs4NTAsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAqIFByZXBhcmUgcXVldWUgb2Ygc3RhdGUgY2hh bmdlcyB0byBsYXRlciBiZSBleGVjdXRlZCBpbiBhIGNyaXRpY2FsCiAJICogc2VjdGlvbi4KIAkg Ki8KLQlwcnVuZV9mcmVlemVfcGxhbihSZWxhdGlvbkdldFJlbGlkKHBhcmFtcy0+cmVsYXRpb24p LAotCQkJCQkgIGJ1ZmZlciwgJnByc3RhdGUsIG9mZl9sb2MpOworCXBydW5lX2ZyZWV6ZV9wbGFu KCZwcnN0YXRlLCBvZmZfbG9jKTsKIAogCS8qCiAJICogSWYgY2hlY2tzdW1zIGFyZSBlbmFibGVk LCBjYWxsaW5nIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSgpIHdoaWxlCkBAIC04NjEsMTUg Kzg2OCwxNCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1 bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50CiAJICogYml0LgogCSAqLwotCWRvX2hpbnRfcHJ1 bmUgPSAoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0gcHJzdGF0ZS5uZXdfcHJ1 bmVfeGlkIHx8Ci0JCVBhZ2VJc0Z1bGwocGFnZSk7CisJZG9faGludF9wcnVuZSA9ICgoUGFnZUhl YWRlcikgcHJzdGF0ZS5wYWdlKS0+cGRfcHJ1bmVfeGlkICE9IHByc3RhdGUubmV3X3BydW5lX3hp ZCB8fAorCQlQYWdlSXNGdWxsKHByc3RhdGUucGFnZSk7CiAKIAkvKgogCSAqIERlY2lkZSBpZiB3 ZSB3YW50IHRvIGdvIGFoZWFkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBmcmVlemUK IAkgKiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90LgogCSAqLwotCWRvX2ZyZWV6ZSA9IGhlYXBf cGFnZV93aWxsX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkgIGRp ZF90dXBsZV9oaW50X2ZwaSwKKwlkb19mcmVlemUgPSBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoZGlk X3R1cGxlX2hpbnRfZnBpLAogCQkJCQkJCQkJICBkb19wcnVuZSwKIAkJCQkJCQkJCSAgZG9faGlu dF9wcnVuZSwKIAkJCQkJCQkJCSAgJnByc3RhdGUpOwpAQCAtOTAxLDE0ICs5MDcsMTQgQEAgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJICog VXBkYXRlIHRoZSBwYWdlJ3MgcGRfcHJ1bmVfeGlkIGZpZWxkIHRvIGVpdGhlciB6ZXJvLCBvciB0 aGUgbG93ZXN0CiAJCSAqIFhJRCBvZiBhbnkgc29vbi1wcnVuYWJsZSB0dXBsZS4KIAkJICovCi0J CSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3BydW5lX3hpZCA9IHByc3RhdGUubmV3X3BydW5lX3hp ZDsKKwkJKChQYWdlSGVhZGVyKSBwcnN0YXRlLnBhZ2UpLT5wZF9wcnVuZV94aWQgPSBwcnN0YXRl Lm5ld19wcnVuZV94aWQ7CiAKIAkJLyoKIAkJICogQWxzbyBjbGVhciB0aGUgInBhZ2UgaXMgZnVs bCIgZmxhZywgc2luY2UgdGhlcmUncyBubyBwb2ludCBpbgogCQkgKiByZXBlYXRpbmcgdGhlIHBy dW5lL2RlZnJhZyBwcm9jZXNzIHVudGlsIHNvbWV0aGluZyBlbHNlIGhhcHBlbnMgdG8KIAkJICog dGhlIHBhZ2UuCiAJCSAqLwotCQlQYWdlQ2xlYXJGdWxsKHBhZ2UpOworCQlQYWdlQ2xlYXJGdWxs KHByc3RhdGUucGFnZSk7CiAKIAkJLyoKIAkJICogSWYgdGhhdCdzIGFsbCB3ZSBoYWQgdG8gZG8g dG8gdGhlIHBhZ2UsIHRoaXMgaXMgYSBub24tV0FMLWxvZ2dlZApAQCAtOTE2LDcgKzkyMiw3IEBA IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ CSAqIHRoZSBidWZmZXIgZGlydHkgYmVsb3cuCiAJCSAqLwogCQlpZiAoIWRvX2ZyZWV6ZSAmJiAh ZG9fcHJ1bmUpCi0JCQlNYXJrQnVmZmVyRGlydHlIaW50KGJ1ZmZlciwgdHJ1ZSk7CisJCQlNYXJr QnVmZmVyRGlydHlIaW50KHByc3RhdGUuYnVmZmVyLCB0cnVlKTsKIAl9CiAKIAlpZiAoZG9fcHJ1 bmUgfHwgZG9fZnJlZXplKQpAQCAtOTI0LDIxICs5MzAsMjEgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJLyogQXBwbHkgdGhlIHBsYW5u ZWQgaXRlbSBjaGFuZ2VzIGFuZCByZXBhaXIgcGFnZSBmcmFnbWVudGF0aW9uLiAqLwogCQlpZiAo ZG9fcHJ1bmUpCiAJCXsKLQkJCWhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKGJ1ZmZlciwgZmFsc2Us CisJCQloZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShwcnN0YXRlLmJ1ZmZlciwgZmFsc2UsCiAJCQkJ CQkJCQlwcnN0YXRlLnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQlw cnN0YXRlLm5vd2RlYWQsIHByc3RhdGUubmRlYWQsCiAJCQkJCQkJCQlwcnN0YXRlLm5vd3VudXNl ZCwgcHJzdGF0ZS5udW51c2VkKTsKIAkJfQogCiAJCWlmIChkb19mcmVlemUpCi0JCQloZWFwX2Zy ZWV6ZV9wcmVwYXJlZF90dXBsZXMoYnVmZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJv emVuKTsKKwkJCWhlYXBfZnJlZXplX3ByZXBhcmVkX3R1cGxlcyhwcnN0YXRlLmJ1ZmZlciwgcHJz dGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbik7CiAKLQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZl cik7CisJCU1hcmtCdWZmZXJEaXJ0eShwcnN0YXRlLmJ1ZmZlcik7CiAKIAkJLyoKIAkJICogRW1p dCBhIFdBTCBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZAogCQkg Ki8KLQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlvbikpCisJCWlmIChSZWxh dGlvbk5lZWRzV0FMKHByc3RhdGUucmVsYXRpb24pKQogCQl7CiAJCQkvKgogCQkJICogVGhlIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUK QEAgLTk1OCw3ICs5NjQsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6 ZVBhcmFtcyAqcGFyYW1zLAogCQkJZWxzZQogCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUubGF0 ZXN0X3hpZF9yZW1vdmVkOwogCi0JCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHBhcmFtcy0+ cmVsYXRpb24sIGJ1ZmZlciwKKwkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocHJzdGF0ZS5y ZWxhdGlvbiwgcHJzdGF0ZS5idWZmZXIsCiAJCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsCS8qIHZt YnVmZmVyICovCiAJCQkJCQkJCQkgIDAsCS8qIHZtZmxhZ3MgKi8KIAkJCQkJCQkJCSAgY29uZmxp Y3RfeGlkLApAQCAtMTAxOCwxMiArMTAyNCwxMiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogICogUGVyZm9ybSB2aXNpYmlsaXR5IGNoZWNr cyBmb3IgaGVhcCBwcnVuaW5nLgogICovCiBzdGF0aWMgSFRTVl9SZXN1bHQKLWhlYXBfcHJ1bmVf c2F0aXNmaWVzX3ZhY3V1bShQcnVuZVN0YXRlICpwcnN0YXRlLCBIZWFwVHVwbGUgdHVwLCBCdWZm ZXIgYnVmZmVyKQoraGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKFBydW5lU3RhdGUgKnByc3Rh dGUsIEhlYXBUdXBsZSB0dXApCiB7CiAJSFRTVl9SZXN1bHQgcmVzOwogCVRyYW5zYWN0aW9uSWQg ZGVhZF9hZnRlcjsKIAotCXJlcyA9IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24odHVw LCBidWZmZXIsICZkZWFkX2FmdGVyKTsKKwlyZXMgPSBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1I b3Jpem9uKHR1cCwgcHJzdGF0ZS0+YnVmZmVyLCAmZGVhZF9hZnRlcik7CiAKIAlpZiAocmVzICE9 IEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEKQogCQlyZXR1cm4gcmVzOwpAQCAtMTEwMCwxMyArMTEw NiwxNCBAQCBodHN2X2dldF92YWxpZF9zdGF0dXMoaW50IHN0YXR1cykKICAqIGJhc2VkIG9uIHRo YXQgb3V0Y29tZS4KICAqLwogc3RhdGljIHZvaWQKLWhlYXBfcHJ1bmVfY2hhaW4oUGFnZSBwYWdl LCBCbG9ja051bWJlciBibG9ja25vLCBPZmZzZXROdW1iZXIgbWF4b2ZmLAotCQkJCSBPZmZzZXRO dW1iZXIgcm9vdG9mZm51bSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSkKK2hlYXBfcHJ1bmVfY2hhaW4o T2Zmc2V0TnVtYmVyIG1heG9mZiwgT2Zmc2V0TnVtYmVyIHJvb3RvZmZudW0sCisJCQkJIFBydW5l U3RhdGUgKnByc3RhdGUpCiB7CiAJVHJhbnNhY3Rpb25JZCBwcmlvclhtYXggPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKIAlJdGVtSWQJCXJvb3RscDsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtOwogCU9m ZnNldE51bWJlciBjaGFpbml0ZW1zW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKKwlQYWdlCQlwYWdl ID0gcHJzdGF0ZS0+cGFnZTsKIAogCS8qCiAJICogQWZ0ZXIgdHJhdmVyc2luZyB0aGUgSE9UIGNo YWluLCBuZGVhZGNoYWluIGlzIHRoZSBpbmRleCBpbiBjaGFpbml0ZW1zCkBAIC0xMjM1LDcgKzEy NDIsNyBAQCBoZWFwX3BydW5lX2NoYWluKFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgYmxvY2tubywg T2Zmc2V0TnVtYmVyIG1heG9mZiwKIAkJLyoKIAkJICogQWR2YW5jZSB0byBuZXh0IGNoYWluIG1l bWJlci4KIAkJICovCi0JCUFzc2VydChJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZodHVwLT50 X2N0aWQpID09IGJsb2Nrbm8pOworCQlBc3NlcnQoSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigm aHR1cC0+dF9jdGlkKSA9PSBwcnN0YXRlLT5ibG9jayk7CiAJCW9mZm51bSA9IEl0ZW1Qb2ludGVy R2V0T2Zmc2V0TnVtYmVyKCZodHVwLT50X2N0aWQpOwogCQlwcmlvclhtYXggPSBIZWFwVHVwbGVI ZWFkZXJHZXRVcGRhdGVYaWQoaHR1cCk7CiAJfQpAQCAtMTI3MCw3ICsxMjc3LDcgQEAgcHJvY2Vz c19jaGFpbjoKIAkJCWkrKzsKIAkJfQogCQlmb3IgKDsgaSA8IG5jaGFpbjsgaSsrKQotCQkJaGVh cF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChwYWdlLCBwcnN0YXRlLCBjaGFpbml0 ZW1zW2ldKTsKKwkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwocHJzdGF0 ZSwgY2hhaW5pdGVtc1tpXSk7CiAJfQogCWVsc2UgaWYgKG5kZWFkY2hhaW4gPT0gbmNoYWluKQog CXsKQEAgLTEyOTYsNyArMTMwMyw3IEBAIHByb2Nlc3NfY2hhaW46CiAKIAkJLyogdGhlIHJlc3Qg b2YgdHVwbGVzIGluIHRoZSBjaGFpbiBhcmUgbm9ybWFsLCB1bmNoYW5nZWQgdHVwbGVzICovCiAJ CWZvciAoaW50IGkgPSBuZGVhZGNoYWluOyBpIDwgbmNoYWluOyBpKyspCi0JCQloZWFwX3BydW5l X3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKHBhZ2UsIHByc3RhdGUsIGNoYWluaXRlbXNbaV0p OworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChwcnN0YXRlLCBjaGFp bml0ZW1zW2ldKTsKIAl9CiB9CiAKQEAgLTE0MjEsNyArMTQyOCw3IEBAIGhlYXBfcHJ1bmVfcmVj b3JkX3VudXNlZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLCBib29s IHdhc19ub3JtCiAgKiBSZWNvcmQgYW4gdW51c2VkIGxpbmUgcG9pbnRlciB0aGF0IGlzIGxlZnQg dW5jaGFuZ2VkLgogICovCiBzdGF0aWMgdm9pZAotaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2Vk X2xwX3VudXNlZChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBv ZmZudW0pCitoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKFBydW5lU3RhdGUg KnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCiB7CiAJQXNzZXJ0KCFwcnN0YXRlLT5wcm9j ZXNzZWRbb2ZmbnVtXSk7CiAJcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0gPSB0cnVlOwpAQCAt MTQzMiw5ICsxNDM5LDEwIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF91bnVzZWQo UGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAgKiB1cGRhdGUgYm9v a2tlZXBpbmcgb2YgdHVwbGUgY291bnRzIGFuZCBwYWdlIHZpc2liaWxpdHkuCiAgKi8KIHN0YXRp YyB2b2lkCi1oZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwg UHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSkKK2hlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVy IG9mZm51bSkKIHsKIAlIZWFwVHVwbGVIZWFkZXIgaHR1cDsKKwlQYWdlCQlwYWdlID0gcHJzdGF0 ZS0+cGFnZTsKIAogCUFzc2VydCghcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOwogCXByc3Rh dGUtPnByb2Nlc3NlZFtvZmZudW1dID0gdHJ1ZTsKQEAgLTE2MTUsNyArMTYyMyw3IEBAIGhlYXBf cHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpw cnN0YXRlLCBPZmZzZXROdW1iCiAgKiBSZWNvcmQgbGluZSBwb2ludGVyIHRoYXQgd2FzIGFscmVh ZHkgTFBfREVBRCBhbmQgaXMgbGVmdCB1bmNoYW5nZWQuCiAgKi8KIHN0YXRpYyB2b2lkCi1oZWFw X3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCitoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRf bHBfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQogewogCUFz c2VydCghcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOwogCXByc3RhdGUtPnByb2Nlc3NlZFtv ZmZudW1dID0gdHJ1ZTsKLS0gCjIuNDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0002-Add-PageGetPruneXid-helper.patch" Content-Disposition: attachment; filename="v35-0002-Add-PageGetPruneXid-helper.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9ti3ch1 RnJvbSBhYWQ0OTQ5NjMyMTI0M2VhYWI5NGQyODhkYTAyMWM1MzdiOTZmNjUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI1IEZlYiAyMDI2IDE0OjA5OjExIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMDIvMThdIEFkZCBQYWdlR2V0UHJ1bmVYaWQgaGVscGVyCgpUaGlzIGlzIGlubGlu ZSB3aXRoIG90aGVyIHBhZ2UgaGVhZGVyIGFjY2Vzc29ycy4gSXQgaW1wcm92ZXMgcmVhZGFiaWxp dHkKYW5kIGF2b2lkcyBsb25nIGxpbmVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jIHwgNCArKy0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2J1ZnBhZ2UuaCAgICAgICB8 IDYgKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDNjNWQzMzgzNGZjLi4xZDYx YjMzNjE5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTIzNCw3ICsyMzQs NyBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy KQogCSAqIGRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBob3Jpem9uIGlzIGEgd2FzdGUgaWYg dGhlcmUncyBubyBwcnVuZV94aWQKIAkgKiAoaS5lLiBubyB1cGRhdGVzL2RlbGV0ZXMgbGVmdCBw b3RlbnRpYWxseSBkZWFkIHR1cGxlcyBhcm91bmQpLgogCSAqLwotCXBydW5lX3hpZCA9ICgoUGFn ZUhlYWRlcikgcGFnZSktPnBkX3BydW5lX3hpZDsKKwlwcnVuZV94aWQgPSBQYWdlR2V0UHJ1bmVY aWQocGFnZSk7CiAJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcnVuZV94aWQpKQogCQlyZXR1 cm47CiAKQEAgLTg2OCw3ICs4NjgsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVu ZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBvciB0aGUgcGFn ZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50CiAJICogYml0LgogCSAq LwotCWRvX2hpbnRfcHJ1bmUgPSAoKFBhZ2VIZWFkZXIpIHByc3RhdGUucGFnZSktPnBkX3BydW5l X3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94aWQgfHwKKwlkb19oaW50X3BydW5lID0gUGFnZUdl dFBydW5lWGlkKHByc3RhdGUucGFnZSkgIT0gcHJzdGF0ZS5uZXdfcHJ1bmVfeGlkIHx8CiAJCVBh Z2VJc0Z1bGwocHJzdGF0ZS5wYWdlKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dG9yYWdlL2J1ZnBhZ2UuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmcGFnZS5oCmluZGV4IGFl MzcyNWIzYjgxLi45MmE2YmI5YjBjMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9i dWZwYWdlLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZwYWdlLmgKQEAgLTQ0MSw2ICs0 NDEsMTIgQEAgUGFnZUNsZWFyQWxsVmlzaWJsZShQYWdlIHBhZ2UpCiAJKChQYWdlSGVhZGVyKSBw YWdlKS0+cGRfZmxhZ3MgJj0gflBEX0FMTF9WSVNJQkxFOwogfQogCitzdGF0aWMgaW5saW5lIFRy YW5zYWN0aW9uSWQKK1BhZ2VHZXRQcnVuZVhpZChjb25zdCBQYWdlRGF0YSAqcGFnZSkKK3sKKwly ZXR1cm4gKChjb25zdCBQYWdlSGVhZGVyRGF0YSAqKSBwYWdlKS0+cGRfcHJ1bmVfeGlkOworfQor CiAvKgogICogVGhlc2UgdHdvIHJlcXVpcmUgImFjY2Vzcy90cmFuc2FtLmgiLCBzbyBsZWZ0IGFz IG1hY3Jvcy4KICAqLwotLSAKMi40My4wCgo= --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0003-Rename-PruneState-all_visible-all_frozen.patch" Content-Disposition: attachment; filename="v35-0003-Rename-PruneState-all_visible-all_frozen.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9ti7gz2 RnJvbSA3MDM4YWU4ZDU3ZmYyZDVmNjNjMmEzMDZlMzQ3MDNhNGI1NGMwNDdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTdW4sIDEgTWFyIDIwMjYgMTU6NTk6MDQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNSAwMy8xOF0gUmVuYW1lIFBydW5lU3RhdGUtPmFsbF92aXNpYmxlL2FsbF9mcm96ZW4K CnRvIHNldF9hbGxfdmlzaWJsZSBhbmQgc2V0X2FsbF9mcm96ZW4gdG8gY2xhcmlmeSB0aGF0IHRo aXMgaXMgdGhlCnByb3Bvc2VkIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3pl biBiaXRzIGZvciBhIGhlYXAgcGFnZSBpbgp0aGUgdmlzaWJpbGl0eSBtYXAsIG5vdCB0aGUgY3Vy cmVudCBzdGF0ZS4KCkF1dGhvcjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdt YWlsLmNvbT4KU3VnZ2VzdGVkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vYnFjNGtoNW1pZGZuNDRnbmppcWV6M2Jq cXY0em9neWRndXZkbjQ0NnJpdzQ1amNmM3klNDA0ZXo2NmlsN2VidmsKLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyB8IDE0NCArKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAxZDYxYjMzNjE5My4uZmE1YWEyYTYz ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xNDgsMjIgKzE0OCwyNCBA QCB0eXBlZGVmIHN0cnVjdAogCU9mZnNldE51bWJlciAqZGVhZG9mZnNldHM7CS8qIHBvaW50cyBk aXJlY3RseSB0byBwcmVzdWx0LT5kZWFkb2Zmc2V0cyAqLwogCiAJLyoKLQkgKiBhbGxfdmlzaWJs ZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96 ZW4KLQkgKiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBh Z2UgYWZ0ZXIgcHJ1bmluZy4KKwkgKiBzZXRfYWxsX3Zpc2libGUgYW5kIHNldF9hbGxfZnJvemVu IGluZGljYXRlIGlmIHRoZSBhbGwtdmlzaWJsZSBhbmQKKwkgKiBhbGwtZnJvemVuIGJpdHMgaW4g dGhlIHZpc2liaWxpdHkgbWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSBhZnRlcgorCSAqIHBy dW5pbmcuCiAJICoKIAkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2VzdCB4bWlu IG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqIFRoZSBjYWxsZXIgY2FuIHVzZSBpdCBh cyB0aGUgY29uZmxpY3QgaG9yaXpvbiwgd2hlbiBzZXR0aW5nIHRoZSBWTQotCSAqIGJpdHMuICBJ dCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBp cworCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBh bmQgc2V0X2FsbF9mcm96ZW4gaXMKIAkgKiB0cnVlLgogCSAqCi0JICogTk9URTogYWxsX3Zpc2li bGUgYW5kIGFsbF9mcm96ZW4gaW5pdGlhbGx5IGRvbid0IGluY2x1ZGUgTFBfREVBRCBpdGVtcy4K LQkgKiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0 byB1c2UgdGhlbSB0bwotCSAqIGRlY2lkZSB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBu b3QuICBUaGUgYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YWx1ZXMgcmV0dXJuZWQg dG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZQotCSAqIExQX0RFQUQgaXRlbXMg YWZ0ZXIgd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLgor CSAqIE5PVEU6IHNldF9hbGxfdmlzaWJsZSBhbmQgc2V0X2FsbF9mcm96ZW4gaW5pdGlhbGx5IGRv bid0IGluY2x1ZGUKKwkgKiBMUF9ERUFEIGl0ZW1zLiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0bworCSAqIHVzZSB0aGVtIHRvIGRlY2lkZSB3aGV0 aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUKKwkgKiBzZXRfYWxsX3Zpc2libGUg YW5kIHNldF9hbGxfZnJvemVuIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZQorCSAq IGFkanVzdGVkIHRvIGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hl dGhlciB0bworCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZS4KIAkgKi8KLQlib29sCQlhbGxf dmlzaWJsZTsKLQlib29sCQlhbGxfZnJvemVuOworCWJvb2wJCXNldF9hbGxfdmlzaWJsZTsKKwli b29sCQlzZXRfYWxsX2Zyb3plbjsKIAlUcmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hp ZDsKIH0gUHJ1bmVTdGF0ZTsKIApAQCAtNDE5LDIyICs0MjEsMjIgQEAgcHJ1bmVfZnJlZXplX3Nl dHVwKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICogc2V0dGluZyB0aGUgVk0gYml0cy4K IAkgKgogCSAqIEluIGFkZGl0aW9uIHRvIHRlbGxpbmcgdGhlIGNhbGxlciB3aGV0aGVyIGl0IGNh biBzZXQgdGhlIFZNIGJpdCwgd2UKLQkgKiBhbHNvIHVzZSAnYWxsX3Zpc2libGUnIGFuZCAnYWxs X2Zyb3plbicgZm9yIG91ciBvd24gZGVjaXNpb24tbWFraW5nLiBJZgotCSAqIHRoZSB3aG9sZSBw YWdlIHdvdWxkIGJlY29tZSBmcm96ZW4sIHdlIGNvbnNpZGVyIG9wcG9ydHVuaXN0aWNhbGx5Ci0J ICogZnJlZXppbmcgdHVwbGVzLiAgV2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmcmVlemUgdGhlIHdo b2xlIHBhZ2UgaWYgdGhlcmUKLQkgKiBhcmUgdHVwbGVzIHByZXNlbnQgdGhhdCBhcmUgbm90IHZp c2libGUgdG8gZXZlcnlvbmUgb3IgaWYgdGhlcmUgYXJlCi0JICogZGVhZCB0dXBsZXMgd2hpY2gg YXJlIG5vdCB5ZXQgcmVtb3ZhYmxlLiAgSG93ZXZlciwgZGVhZCB0dXBsZXMgd2hpY2gKLQkgKiB3 aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1pbmcgc2hvdWxkIG5vdCBwcmVjbHVk ZSB1cyBmcm9tCi0JICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXppbmcuICBCZWNhdXNlIG9mIHRo YXQsIHdlIGRvIG5vdCBpbW1lZGlhdGVseQotCSAqIGNsZWFyIGFsbF92aXNpYmxlIGFuZCBhbGxf ZnJvemVuIHdoZW4gd2Ugc2VlIExQX0RFQUQgaXRlbXMuICBXZSBmaXgKLQkgKiB0aGF0IGFmdGVy IHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJzLiBXZSBtdXN0IGNvcnJlY3QgYWxsX3Zpc2libGUg YW5kCi0JICogYWxsX2Zyb3plbiBiZWZvcmUgd2UgcmV0dXJuIHRoZW0gdG8gdGhlIGNhbGxlciwg c28gdGhhdCB0aGUgY2FsbGVyCi0JICogZG9lc24ndCBzZXQgdGhlIFZNIGJpdHMgaW5jb3JyZWN0 bHkuCisJICogYWxzbyB1c2UgJ3NldF9hbGxfdmlzaWJsZScgYW5kICdzZXRfYWxsX2Zyb3plbicg Zm9yIG91ciBvd24KKwkgKiBkZWNpc2lvbi1tYWtpbmcuIElmIHRoZSB3aG9sZSBwYWdlIHdvdWxk IGJlY29tZSBmcm96ZW4sIHdlIGNvbnNpZGVyCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXpp bmcgdHVwbGVzLiAgV2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmcmVlemUgdGhlCisJICogd2hvbGUg cGFnZSBpZiB0aGVyZSBhcmUgdHVwbGVzIHByZXNlbnQgdGhhdCBhcmUgbm90IHZpc2libGUgdG8g ZXZlcnlvbmUKKwkgKiBvciBpZiB0aGVyZSBhcmUgZGVhZCB0dXBsZXMgd2hpY2ggYXJlIG5vdCB5 ZXQgcmVtb3ZhYmxlLiAgSG93ZXZlciwgZGVhZAorCSAqIHR1cGxlcyB3aGljaCB3aWxsIGJlIHJl bW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1pbmcgc2hvdWxkIG5vdAorCSAqIHByZWNsdWRlIHVz IGZyb20gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXppbmcuICBCZWNhdXNlIG9mIHRoYXQsIHdlIGRv CisJICogbm90IGltbWVkaWF0ZWx5IGNsZWFyIHNldF9hbGxfdmlzaWJsZSBhbmQgc2V0X2FsbF9m cm96ZW4gd2hlbiB3ZSBzZWUKKwkgKiBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4IHRoYXQgYWZ0ZXIg c2Nhbm5pbmcgdGhlIGxpbmUgcG9pbnRlcnMuIFdlIG11c3QKKwkgKiBjb3JyZWN0IHNldF9hbGxf dmlzaWJsZSBhbmQgc2V0X2FsbF9mcm96ZW4gYmVmb3JlIHdlIHJldHVybiB0aGVtIHRvIHRoZQor CSAqIGNhbGxlciwgc28gdGhhdCB0aGUgY2FsbGVyIGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXRzIGlu Y29ycmVjdGx5LgogCSAqLwogCWlmIChwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKIAl7Ci0JCXBy c3RhdGUtPmFsbF92aXNpYmxlID0gdHJ1ZTsKLQkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IHRydWU7 CisJCXByc3RhdGUtPnNldF9hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUtPnNldF9hbGxf ZnJvemVuID0gdHJ1ZTsKIAl9CiAJZWxzZQogCXsKQEAgLTQ0Miw4ICs0NDQsOCBAQCBwcnVuZV9m cmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJICogSW5pdGlhbGl6aW5n IHRvIGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUgd29yayB0byB1cGRhdGUgdGhlbSBpbgogCQkg KiBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAJCSAqLwotCQlwcnN0 YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7 CisJCXByc3RhdGUtPnNldF9hbGxfdmlzaWJsZSA9IGZhbHNlOworCQlwcnN0YXRlLT5zZXRfYWxs X2Zyb3plbiA9IGZhbHNlOwogCX0KIAogCS8qCkBAIC02ODMsOCArNjg1LDggQEAgaGVhcF9wYWdl X3dpbGxfZnJlZXplKGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLAogCSAqLwogCWlmICghcHJzdGF0 ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewotCQlBc3NlcnQoIXByc3RhdGUtPmFsbF9mcm96ZW4gJiYg cHJzdGF0ZS0+bmZyb3plbiA9PSAwKTsKLQkJQXNzZXJ0KHByc3RhdGUtPmxwZGVhZF9pdGVtcyA9 PSAwIHx8ICFwcnN0YXRlLT5hbGxfdmlzaWJsZSk7CisJCUFzc2VydCghcHJzdGF0ZS0+c2V0X2Fs bF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA9PSAwKTsKKwkJQXNzZXJ0KHByc3RhdGUtPmxw ZGVhZF9pdGVtcyA9PSAwIHx8ICFwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUpOwogCQlyZXR1cm4g ZmFsc2U7CiAJfQogCkBAIC03MTAsOSArNzEyLDkgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKGJv b2wgZGlkX3R1cGxlX2hpbnRfZnBpLAogCQkgKiBhbnltb3JlLiAgVGhlIG9wcG9ydHVuaXN0aWMg ZnJlZXplIGhldXJpc3RpYyBtdXN0IGJlIGltcHJvdmVkOwogCQkgKiBob3dldmVyLCBmb3Igbm93 LCB0cnkgdG8gYXBwcm94aW1hdGUgdGhlIG9sZCBsb2dpYy4KIAkJICovCi0JCWlmIChwcnN0YXRl LT5hbGxfZnJvemVuICYmIHByc3RhdGUtPm5mcm96ZW4gPiAwKQorCQlpZiAocHJzdGF0ZS0+c2V0 X2FsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA+IDApCiAJCXsKLQkJCUFzc2VydChwcnN0 YXRlLT5hbGxfdmlzaWJsZSk7CisJCQlBc3NlcnQocHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlKTsK IAogCQkJLyoKIAkJCSAqIEZyZWV6aW5nIHdvdWxkIG1ha2UgdGhlIHBhZ2UgYWxsLWZyb3plbi4g IEhhdmUgYWxyZWFkeSBlbWl0dGVkCkBAIC03NTIsNyArNzU0LDcgQEAgaGVhcF9wYWdlX3dpbGxf ZnJlZXplKGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLAogCQkgKiBpbiB0aGUgVk0gb25jZSB3ZSdy ZSBkb25lIHdpdGggaXQuIE90aGVyd2lzZSwgd2UgZ2VuZXJhdGUgYQogCQkgKiBjb25zZXJ2YXRp dmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJhY2sgZnJvbSBPbGRlc3RYbWluLgogCQkgKi8KLQkJaWYg KHByc3RhdGUtPmFsbF9mcm96ZW4pCisJCWlmIChwcnN0YXRlLT5zZXRfYWxsX2Zyb3plbikKIAkJ CXByc3RhdGUtPmZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRv ZmZfeGlkOwogCQllbHNlCiAJCXsKQEAgLTc2OSw3ICs3NzEsNyBAQCBoZWFwX3BhZ2Vfd2lsbF9m cmVlemUoYm9vbCBkaWRfdHVwbGVfaGludF9mcGksCiAJCSAqLwogCQlBc3NlcnQoIXByc3RhdGUt PnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKTsKIAotCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFs c2U7CisJCXByc3RhdGUtPnNldF9hbGxfZnJvemVuID0gZmFsc2U7CiAJCXByc3RhdGUtPm5mcm96 ZW4gPSAwOwkvKiBhdm9pZCBtaXNjb3VudHMgaW4gaW5zdHJ1bWVudGF0aW9uICovCiAJfQogCWVs c2UKQEAgLTgwNCwxMSArODA2LDEyIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShib29sIGRpZF90 dXBsZV9oaW50X2ZwaSwKICAqIGlmIGl0J3MgY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92 ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvCiAgKiBub3cuICBUaGUgJ3BhcmFtcy5j dXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZAogICogJ25ld19yZWxt aW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLiAgV2hlbgotICog SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgcGFzc2VkLCB3ZSBhbHNvIHNldCBwcmVz dWx0LT5hbGxfdmlzaWJsZQotICogYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gYWZ0ZXIgZGV0ZXJt aW5pbmcgd2hldGhlciBvciBub3QgdG8KLSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSwgdG8g aW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJlIHNldC4gIFRoZXkgYXJlCi0gKiBhbHdheXMg c2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5v dCBwYXNzZWQsCi0gKiBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxsZXJzIHRoYXQgYWxz byBmcmVlemUgbmVlZCB0aGF0IGluZm9ybWF0aW9uLgorICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVa RSBvcHRpb24gaXMgcGFzc2VkLCB3ZSBhbHNvIHNldAorICogcHJlc3VsdC0+c2V0X2FsbF92aXNp YmxlIGFuZCBwcmVzdWx0LT5zZXRfYWxsX2Zyb3plbiBhZnRlciBkZXRlcm1pbmluZworICogd2hl dGhlciBvciBub3QgdG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLCB0byBpbmRpY2F0ZSBpZiB0 aGUgVk0gYml0cyBjYW4KKyAqIGJlIHNldC4gIFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ug d2hlbiB0aGUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRQorICogb3B0aW9uIGlzIG5vdCBwYXNzZWQs IGJlY2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMgdGhhdCBhbHNvIGZyZWV6ZQorICog bmVlZCB0aGF0IGluZm9ybWF0aW9uLgogICoKICAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBh cmFtZXRlcnMgbmVlZGVkIGJ5IGNhbGxlcnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgogICogdHVw bGVzIHJlbW92ZWQgYW5kIHRoZSBvZmZzZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0 ZXIgcHJ1bmluZy4KQEAgLTg4MiwyMSArODg1LDIxIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAkvKgogCSAqIFdoaWxlIHNjYW5uaW5n IHRoZSBsaW5lIHBvaW50ZXJzLCB3ZSBkaWQgbm90IGNsZWFyCi0JICogYWxsX3Zpc2libGUvYWxs X2Zyb3plbiB3aGVuIGVuY291bnRlcmluZyBMUF9ERUFEIGl0ZW1zIGJlY2F1c2Ugd2UKLQkgKiB3 YW50ZWQgdGhlIGRlY2lzaW9uIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB0byBi ZSB1bmFmZmVjdGVkCi0JICogYnkgdGhlIHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBp dGVtcy4gIFRoZXNlIExQX0RFQUQgaXRlbXMgYXJlCi0JICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0 byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKLQkgKiBtYXR0 ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVu ZHMgdXAKLQkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9u Z29pbmcgVkFDVVVNIGRvZXMgaXQuCisJICogc2V0X2FsbF92aXNpYmxlL3NldF9hbGxfZnJvemVu IHdoZW4gZW5jb3VudGVyaW5nIExQX0RFQUQgaXRlbXMgYmVjYXVzZQorCSAqIHdlIHdhbnRlZCB0 aGUgZGVjaXNpb24gd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHRvIGJlCisJICog dW5hZmZlY3RlZCBieSB0aGUgc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAg VGhlc2UgTFBfREVBRAorCSAqIGl0ZW1zIGFyZSBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQ X1VOVVNFRCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQKKwkgKiBkb2Vzbid0IG1hdHRlciB3aGlj aCB2YWN1dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcworCSAq IHVwIHNldHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBW QUNVVU0gZG9lcyBpdC4KIAkgKgogCSAqIE5vdyB0aGF0IHdlIGZpbmlzaGVkIGRldGVybWluaW5n IHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSwKLQkgKiB1cGRhdGUgYWxsX3Zpc2li bGUgYW5kIGFsbF9mcm96ZW4gc28gdGhhdCB0aGV5IHJlZmxlY3QgdGhlIHRydWUgc3RhdGUKLQkg KiBvZiB0aGUgcGFnZSBmb3Igc2V0dGluZyBQRF9BTExfVklTSUJMRSBhbmQgVk0gYml0cy4KKwkg KiB1cGRhdGUgc2V0X2FsbF92aXNpYmxlIGFuZCBzZXRfYWxsX2Zyb3plbiBzbyB0aGF0IHRoZXkg cmVmbGVjdCB0aGUgdHJ1ZQorCSAqIHN0YXRlIG9mIHRoZSBwYWdlIGZvciBzZXR0aW5nIFBEX0FM TF9WSVNJQkxFIGFuZCBWTSBiaXRzLgogCSAqLwogCWlmIChwcnN0YXRlLmxwZGVhZF9pdGVtcyA+ IDApCi0JCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsK KwkJcHJzdGF0ZS5zZXRfYWxsX3Zpc2libGUgPSBwcnN0YXRlLnNldF9hbGxfZnJvemVuID0gZmFs c2U7CiAKLQlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxl KTsKKwlBc3NlcnQoIXByc3RhdGUuc2V0X2FsbF9mcm96ZW4gfHwgcHJzdGF0ZS5zZXRfYWxsX3Zp c2libGUpOwogCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNy aXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CkBAIC05ODQsOCArOTg3LDggQEAgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcmVz dWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJvemVuOwogCXByZXN1bHQtPmxpdmVfdHVwbGVzID0g cHJzdGF0ZS5saXZlX3R1cGxlczsKIAlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHBy c3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7Ci0JcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0 YXRlLmFsbF92aXNpYmxlOwotCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBwcnN0YXRlLmFsbF9mcm96 ZW47CisJcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLnNldF9hbGxfdmlzaWJsZTsKKwlw cmVzdWx0LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5zZXRfYWxsX2Zyb3plbjsKIAlwcmVzdWx0LT5o YXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKIAogCS8qCkBAIC0xMzY1LDkgKzEzNjgsOSBAQCBoZWFw X3BydW5lX3JlY29yZF9kZWFkKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZu dW0sCiAJcHJzdGF0ZS0+bmRlYWQrKzsKIAogCS8qCi0JICogRGVsaWJlcmF0ZWx5IGRlbGF5IHVu c2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1bnRpbCBsYXRlcgotCSAqIGR1cmlu ZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hvdWxkbid0IHByZWNsdWRlIGZyZWV6 aW5nIHRoZQotCSAqIHBhZ2UuCisJICogRGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBzZXRf YWxsX3Zpc2libGUgYW5kIHNldF9hbGxfZnJvemVuIHVudGlsCisJICogbGF0ZXIgZHVyaW5nIHBy dW5pbmcuIFJlbW92YWJsZSBkZWFkIHR1cGxlcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcK KwkgKiB0aGUgcGFnZS4KIAkgKi8KIAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZh Y3V1bSAqLwpAQCAtMTQ4OSwxNCArMTQ5MiwxNCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5n ZWRfbHBfbm9ybWFsKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCiAJ CQkgKiBTZWUgU2V0SGludEJpdHMgZm9yIG1vcmUgaW5mby4gIENoZWNrIHRoYXQgdGhlIHR1cGxl IGlzIGhpbnRlZAogCQkJICogeG1pbi1jb21taXR0ZWQgYmVjYXVzZSBvZiB0aGF0LgogCQkJICov Ci0JCQlpZiAocHJzdGF0ZS0+YWxsX3Zpc2libGUpCisJCQlpZiAocHJzdGF0ZS0+c2V0X2FsbF92 aXNpYmxlKQogCQkJewogCQkJCVRyYW5zYWN0aW9uSWQgeG1pbjsKIAogCQkJCWlmICghSGVhcFR1 cGxlSGVhZGVyWG1pbkNvbW1pdHRlZChodHVwKSkKIAkJCQl7Ci0JCQkJCXByc3RhdGUtPmFsbF92 aXNpYmxlID0gZmFsc2U7Ci0JCQkJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwkJCQkJ cHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJCQkJCXByc3RhdGUtPnNldF9hbGxf ZnJvemVuID0gZmFsc2U7CiAJCQkJCWJyZWFrOwogCQkJCX0KIApAQCAtMTUxMSwxNSArMTUxNCwx NiBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCiAKIAkJCQkvKgogCQkJCSAqIEZvciBub3cgYWx3 YXlzIHVzZSBwcnN0YXRlLT5jdXRvZmZzIGZvciB0aGlzIHRlc3QsIGJlY2F1c2UKLQkJCQkgKiB3 ZSBvbmx5IHVwZGF0ZSAnYWxsX3Zpc2libGUnIGFuZCAnYWxsX2Zyb3plbicgd2hlbiBmcmVlemlu ZwotCQkJCSAqIGlzIHJlcXVlc3RlZC4gV2UgY291bGQgdXNlIEdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZVhpZAotCQkJCSAqIGluc3RlYWQsIGlmIGEgbm9uLWZyZWV6aW5nIGNhbGxlciB3YW50ZWQg dG8gc2V0IHRoZSBWTSBiaXQuCisJCQkJICogd2Ugb25seSB1cGRhdGUgJ3NldF9hbGxfdmlzaWJs ZScgYW5kICdzZXRfYWxsX2Zyb3plbicgd2hlbgorCQkJCSAqIGZyZWV6aW5nIGlzIHJlcXVlc3Rl ZC4gV2UgY291bGQgdXNlCisJCQkJICogR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkIGluc3Rl YWQsIGlmIGEgbm9uLWZyZWV6aW5nCisJCQkJICogY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhlIFZN IGJpdC4KIAkJCQkgKi8KIAkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7CiAJCQkJaWYgKCFU cmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikp CiAJCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJCQlwcnN0YXRl LT5hbGxfZnJvemVuID0gZmFsc2U7CisJCQkJCXByc3RhdGUtPnNldF9hbGxfdmlzaWJsZSA9IGZh bHNlOworCQkJCQlwcnN0YXRlLT5zZXRfYWxsX2Zyb3plbiA9IGZhbHNlOwogCQkJCQlicmVhazsK IAkJCQl9CiAKQEAgLTE1MzIsOCArMTUzNiw4IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdl ZF9scF9ub3JtYWwoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSkKIAog CQljYXNlIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEOgogCQkJcHJzdGF0ZS0+cmVjZW50bHlfZGVh ZF90dXBsZXMrKzsKLQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCQlwcnN0YXRl LT5hbGxfZnJvemVuID0gZmFsc2U7CisJCQlwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxz ZTsKKwkJCXByc3RhdGUtPnNldF9hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBU aGlzIHR1cGxlIHdpbGwgc29vbiBiZWNvbWUgREVBRC4gIFVwZGF0ZSB0aGUgaGludCBmaWVsZCBz bwpAQCAtMTU1Miw4ICsxNTU2LDggQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25v cm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQogCQkJICogYXNz dW1wdGlvbiBpcyBhIGJpdCBzaGFreSwgYnV0IGl0IGlzIHdoYXQgYWNxdWlyZV9zYW1wbGVfcm93 cygpCiAJCQkgKiBkb2VzLCBzbyBiZSBjb25zaXN0ZW50LgogCQkJICovCi0JCQlwcnN0YXRlLT5h bGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCQkJ cHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRlLT5zZXRfYWxsX2Zy b3plbiA9IGZhbHNlOwogCiAJCQkvKgogCQkJICogSWYgd2Ugd2FudGVkIHRvIG9wdGltaXplIGZv ciBhYm9ydHMsIHdlIG1pZ2h0IGNvbnNpZGVyIG1hcmtpbmcKQEAgLTE1NzEsOCArMTU3NSw4IEBA IGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSkKIAkJCSAqIHdpbGwgY29tbWl0IGFuZCB1cGRhdGUgdGhl IGNvdW50ZXJzIGFmdGVyIHdlIHJlcG9ydC4KIAkJCSAqLwogCQkJcHJzdGF0ZS0+bGl2ZV90dXBs ZXMrKzsKLQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCQlwcnN0YXRlLT5hbGxf ZnJvemVuID0gZmFsc2U7CisJCQlwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJ CXByc3RhdGUtPnNldF9hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBUaGlzIHR1 cGxlIG1heSBzb29uIGJlY29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZpZWxkIHNvIHRoYXQK QEAgLTE2MTQsNyArMTYxOCw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3Jt YWwoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSkKIAkJICogZGVmaW5p dGVseSBjYW5ub3QgYmUgc2V0IGFsbC1mcm96ZW4gaW4gdGhlIHZpc2liaWxpdHkgbWFwIGxhdGVy IG9uLgogCQkgKi8KIAkJaWYgKCF0b3RhbGx5X2Zyb3plbikKLQkJCXByc3RhdGUtPmFsbF9mcm96 ZW4gPSBmYWxzZTsKKwkJCXByc3RhdGUtPnNldF9hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogfQog CkBAIC0xNjM3LDEwICsxNjQxLDEwIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9k ZWFkKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCiAJICogaGFzdHVw L25vbmVtcHR5X3BhZ2VzIGFzIHByb3Zpc2lvbmFsIG5vIG1hdHRlciBob3cgTFBfREVBRCBpdGVt cyBhcmUKIAkgKiBoYW5kbGVkIChoYW5kbGVkIGhlcmUsIG9yIGhhbmRsZWQgbGF0ZXIgb24pLgog CSAqCi0JICogU2ltaWxhcmx5LCBkb24ndCB1bnNldCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3pl biB1bnRpbCBsYXRlciwgYXQgdGhlCi0JICogZW5kIG9mIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKCkuICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gYXR0ZW1wdCB0bwotCSAqIGZyZWV6ZSB0aGUg cGFnZSBhZnRlciBwcnVuaW5nLiAgQXMgbG9uZyBhcyB3ZSB1bnNldCBpdCBiZWZvcmUgdXBkYXRp bmcKLQkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2lsbCBiZSBjb3JyZWN0LgorCSAqIFNp bWlsYXJseSwgZG9uJ3QgdW5zZXQgc2V0X2FsbF92aXNpYmxlIGFuZCBzZXRfYWxsX2Zyb3plbiB1 bnRpbCBsYXRlciwKKwkgKiBhdCB0aGUgZW5kIG9mIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KCkuICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8KKwkgKiBhdHRlbXB0IHRvIGZyZWV6ZSB0aGUgcGFn ZSBhZnRlciBwcnVuaW5nLiAgQXMgbG9uZyBhcyB3ZSB1bnNldCBpdAorCSAqIGJlZm9yZSB1cGRh dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2lsbCBiZSBjb3JyZWN0LgogCSAqLwogCiAJ LyogUmVjb3JkIHRoZSBkZWFkIG9mZnNldCBmb3IgdmFjdXVtICovCi0tIAoyLjQzLjAKCg== --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0004-Use-the-newest-to-be-frozen-xid-as-the-conflict-.patch" Content-Disposition: attachment; filename="v35-0004-Use-the-newest-to-be-frozen-xid-as-the-conflict-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9ticrc3 RnJvbSBhM2I5MWFiNDMwZTdhZjhiNDU5YzE2OTE4MWMxZGMzZjBmMDRjOGJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI1IEZlYiAyMDI2IDEzOjU1OjQ1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMDQvMThdIFVzZSB0aGUgbmV3ZXN0IHRvLWJlLWZyb3plbiB4aWQgYXMgdGhlIGNv bmZsaWN0CiBob3Jpem9uIGZvciBmcmVlemluZwoKUHJldmlvdXNseSBXQUwgcmVjb3JkcyB0aGF0 IGZyb3plIHR1cGxlcyB1c2VkIE9sZGVzdFhtaW4gYXMgdGhlIHNuYXBzaG90CmNvbmZsaWN0IGhv cml6b24uIEhvd2V2ZXIsIE9sZGVzdFhtaW4gaXMgbmV3ZXIgdGhhbiB0aGUgbmV3ZXN0IGZyb3pl bgp0dXBsZSdzIHhpZC4gQnkgdHJhY2tpbmcgdGhlIG5ld2VzdCB0by1iZS1mcm96ZW4geGlkIGFu ZCB1c2luZyBpdCBhcyB0aGUKc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBpbnN0ZWFkLCB3ZSBl bmQgdXAgd2l0aCBhbiBvbGRlciBob3Jpem9uIHRoYXQKd2lsbCByZXN1bHQgaW4gZmV3ZXIgcXVl cnkgY2FuY2VsbGF0aW9ucyBvbiB0aGUgc3RhbmRieS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYyAgICB8IDE2ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYyB8IDQ0ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICB8ICA4ICsrKysrKwogMyBmaWxlcyBjaGFuZ2Vk LCAzNiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCmluZGV4IGEyMzE1NjNmMGRmLi43NmY5NGZkZmE1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKQEAgLTY3ODEsNiArNjc4MSwxMCBAQCBoZWFwX2lucGxhY2VfdW5sb2NrKFJlbGF0aW9u IHJlbGF0aW9uLAogICogTkI6IENhbGxlciBzaG91bGQgYXZvaWQgbmVlZGxlc3NseSBjYWxsaW5n IGhlYXBfdHVwbGVfc2hvdWxkX2ZyZWV6ZSB3aGVuIHdlCiAgKiBoYXZlIGFscmVhZHkgZm9yY2Vk IHBhZ2UtbGV2ZWwgZnJlZXppbmcsIHNpbmNlIHRoYXQgbWlnaHQgaW5jdXIgdGhlIHNhbWUKICAq IFNMUlUgYnVmZmVyIG1pc3NlcyB0aGF0IHdlIHNwZWNpZmljYWxseSBpbnRlbmRlZCB0byBhdm9p ZCBieSBmcmVlemluZy4KKyAqCisgKiBXZSB3b24ndCB1cGRhdGUgdGhlIEZyZWV6ZVBhZ2VDb25m bGljdFhpZCBiZWNhdXNlIGFueSBsb2NrZXJzIGRvbid0IGFmZmVjdAorICogdmlzaWJpbGl0eSBv biB0aGUgc3RhbmRieSwgYW5kIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIHVwZGF0 ZSBYSUQKKyAqIGJlY2F1c2UgdGhlIG9ubHkgd2F5IGl0IGNhbiBiZSBvbGRlciB0aGFuIE9sZGVz dFhtaW4gaXMgaWYgaXQgYWJvcnRlZC4KICAqLwogc3RhdGljIFRyYW5zYWN0aW9uSWQKIEZyZWV6 ZU11bHRpWGFjdElkKE11bHRpWGFjdElkIG11bHRpLCB1aW50MTYgdF9pbmZvbWFzaywKQEAgLTcx NzMsNyArNzE3NywxMSBAQCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKEhlYXBUdXBsZUhlYWRl ciB0dXBsZSwKIAogCQkvKiBWZXJpZnkgdGhhdCB4bWluIGNvbW1pdHRlZCBpZiBhbmQgd2hlbiBm cmVlemUgcGxhbiBpcyBleGVjdXRlZCAqLwogCQlpZiAoZnJlZXplX3htaW4pCisJCXsKIAkJCWZy ei0+Y2hlY2tmbGFncyB8PSBIRUFQX0ZSRUVaRV9DSEVDS19YTUlOX0NPTU1JVFRFRDsKKwkJCWlm IChUcmFuc2FjdGlvbklkRm9sbG93cyh4aWQsIHBhZ2VmcnotPkZyZWV6ZVBhZ2VDb25mbGljdFhp ZCkpCisJCQkJcGFnZWZyei0+RnJlZXplUGFnZUNvbmZsaWN0WGlkID0geGlkOworCQl9CiAJfQog CiAJLyoKQEAgLTcxOTIsNiArNzIwMCw5IEBAIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoSGVh cFR1cGxlSGVhZGVyIHR1cGxlLAogCQkgKi8KIAkJcmVwbGFjZV94dmFjID0gcGFnZWZyei0+ZnJl ZXplX3JlcXVpcmVkID0gdHJ1ZTsKIAorCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoeGlkLCBw YWdlZnJ6LT5GcmVlemVQYWdlQ29uZmxpY3RYaWQpKQorCQkJcGFnZWZyei0+RnJlZXplUGFnZUNv bmZsaWN0WGlkID0geGlkOworCiAJCS8qIFdpbGwgc2V0IHJlcGxhY2VfeHZhYyBmbGFncyBpbiBm cmVlemUgcGxhbiBiZWxvdyAqLwogCX0KIApAQCAtNzMxNiw3ICs3MzI3LDExIEBAIGhlYXBfcHJl cGFyZV9mcmVlemVfdHVwbGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkgKiBpbmRlcGVuZGVu dCBvZiB0aGlzLCBzaW5jZSB0aGUgbG9jayBpcyByZWxlYXNlZCBhdCB4YWN0IGVuZC4pCiAJCSAq LwogCQlpZiAoZnJlZXplX3htYXggJiYgIUhFQVBfWE1BWF9JU19MT0NLRURfT05MWSh0dXBsZS0+ dF9pbmZvbWFzaykpCisJCXsKIAkJCWZyei0+Y2hlY2tmbGFncyB8PSBIRUFQX0ZSRUVaRV9DSEVD S19YTUFYX0FCT1JURUQ7CisJCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoeGlkLCBwYWdlZnJ6 LT5GcmVlemVQYWdlQ29uZmxpY3RYaWQpKQorCQkJCXBhZ2VmcnotPkZyZWV6ZVBhZ2VDb25mbGlj dFhpZCA9IHhpZDsKKwkJfQogCX0KIAllbHNlIGlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlk KSkKIAl7CkBAIC03NDk5LDYgKzc1MTQsNyBAQCBoZWFwX2ZyZWV6ZV90dXBsZShIZWFwVHVwbGVI ZWFkZXIgdHVwbGUsCiAJY3V0b2Zmcy5NdWx0aVhhY3RDdXRvZmYgPSBNdWx0aVhhY3RDdXRvZmY7 CiAKIAlwYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCA9IHRydWU7CisJcGFnZWZyei5GcmVlemVQYWdl Q29uZmxpY3RYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlwYWdlZnJ6LkZyZWV6ZVBhZ2VS ZWxmcm96ZW5YaWQgPSBGcmVlemVMaW1pdDsKIAlwYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlk ID0gTXVsdGlYYWN0Q3V0b2ZmOwogCXBhZ2VmcnouTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkID0g RnJlZXplTGltaXQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGZhNWFhMmE2 M2YyLi4wNzg2OGRiY2MxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTEx NCwxMyArMTE0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKi8KIAlIZWFwUGFnZUZyZWV6ZSBwYWdl ZnJ6OwogCi0JLyoKLQkgKiBUaGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB1c2VkIHdoZW4g ZnJlZXppbmcgdHVwbGVzLiBUaGUgZmluYWwKLQkgKiBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9u IGZvciB0aGUgcmVjb3JkIG1heSBiZSBuZXdlciBpZiBwcnVuaW5nCi0JICogcmVtb3ZlcyBuZXdl ciB0cmFuc2FjdGlvbiBJRHMuCi0JICovCi0JVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9y aXpvbjsKLQogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogCSAqIEluZm9ybWF0aW9uIGFib3V0IHdoYXQgd2FzIGRvbmUKIAkgKgpAQCAt Mzc3LDYgKzM3MCw3IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFy YW1zLAogCiAJLyogaW5pdGlhbGl6ZSBwYWdlIGZyZWV6aW5nIHdvcmtpbmcgc3RhdGUgKi8KIAlw cnN0YXRlLT5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCA9IGZhbHNlOworCXByc3RhdGUtPnBhZ2Vm cnouRnJlZXplUGFnZUNvbmZsaWN0WGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJaWYgKHBy c3RhdGUtPmF0dGVtcHRfZnJlZXplKQogCXsKIAkJQXNzZXJ0KG5ld19yZWxmcm96ZW5feGlkICYm IG5ld19yZWxtaW5fbXhpZCk7CkBAIC00MDcsNyArNDAxLDYgQEAgcHJ1bmVfZnJlZXplX3NldHVw KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICogUHJ1bmVTdGF0ZS4KIAkgKi8KIAlwcnN0 YXRlLT5kZWFkb2Zmc2V0cyA9IHByZXN1bHQtPmRlYWRvZmZzZXRzOwotCXByc3RhdGUtPmZyel9j b25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgogCSAqIFZhY3V1 bSBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdyZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sg b2YKQEAgLTc0NiwyMiArNzM5LDggQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKGJvb2wgZGlkX3R1 cGxlX2hpbnRfZnBpLAogCQkgKiBjcml0aWNhbCBzZWN0aW9uLgogCQkgKi8KIAkJaGVhcF9wcmVf ZnJlZXplX2NoZWNrcyhwcnN0YXRlLT5idWZmZXIsIHByc3RhdGUtPmZyb3plbiwgcHJzdGF0ZS0+ bmZyb3plbik7Ci0KLQkJLyoKLQkJICogQ2FsY3VsYXRlIHdoYXQgdGhlIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24gc2hvdWxkIGJlIGZvciBhIHJlY29yZAotCQkgKiBmcmVlemluZyB0dXBsZXMu IFdlIGNhbiB1c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmCi0JCSAq IGZvciBjb25mbGljdHMgd2hlbiB0aGUgd2hvbGUgcGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUg YWxsLWZyb3plbgotCQkgKiBpbiB0aGUgVk0gb25jZSB3ZSdyZSBkb25lIHdpdGggaXQuIE90aGVy d2lzZSwgd2UgZ2VuZXJhdGUgYQotCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5n IGJhY2sgZnJvbSBPbGRlc3RYbWluLgotCQkgKi8KLQkJaWYgKHByc3RhdGUtPnNldF9hbGxfZnJv emVuKQotCQkJcHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLT52aXNpYmls aXR5X2N1dG9mZl94aWQ7Ci0JCWVsc2UKLQkJewotCQkJLyogQXZvaWRzIGZhbHNlIGNvbmZsaWN0 cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGluIHVzZSAqLwotCQkJcHJzdGF0ZS0+ZnJ6X2Nv bmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluOwotCQkJVHJhbnNh Y3Rpb25JZFJldHJlYXQocHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0X2hvcml6b24pOwotCQl9CisJCUFz c2VydChUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhwcnN0YXRlLT5wYWdlZnJ6LkZyZWV6 ZVBhZ2VDb25mbGljdFhpZCwKKwkJCQkJCQkJCQkJIHByc3RhdGUtPmN1dG9mZnMtPk9sZGVzdFht aW4pKTsKIAl9CiAJZWxzZSBpZiAocHJzdGF0ZS0+bmZyb3plbiA+IDApCiAJewpAQCAtODg2LDEx ICs4NjUsMTIgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMg KnBhcmFtcywKIAkvKgogCSAqIFdoaWxlIHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJzLCB3ZSBk aWQgbm90IGNsZWFyCiAJICogc2V0X2FsbF92aXNpYmxlL3NldF9hbGxfZnJvemVuIHdoZW4gZW5j b3VudGVyaW5nIExQX0RFQUQgaXRlbXMgYmVjYXVzZQotCSAqIHdlIHdhbnRlZCB0aGUgZGVjaXNp b24gd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHRvIGJlCi0JICogdW5hZmZlY3Rl ZCBieSB0aGUgc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBf REVBRAotCSAqIGl0ZW1zIGFyZSBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQX1VOVVNFRCBp dGVtcyBpbiB0aGUgbWFraW5nLiAgSXQKLQkgKiBkb2Vzbid0IG1hdHRlciB3aGljaCB2YWN1dW0g aGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcwotCSAqIHVwIHNldHRp bmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBWQUNVVU0gZG9l cyBpdC4KKwkgKiB3ZSB3YW50ZWQgdGhlIGRlY2lzaW9uIHdoZXRoZXIgb3Igbm90IHRvIG9wcG9y dHVuaXN0aWNhbGx5IGZyZWV6ZSB0aGUKKwkgKiBwYWdlIHRvIGJlIHVuYWZmZWN0ZWQgYnkgdGhl IHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4KKwkgKiBUaGVzZSBMUF9ERUFE IGl0ZW1zIGFyZSBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQX1VOVVNFRCBpdGVtcyBpbgor CSAqIHRoZSBtYWtpbmcuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoIHZhY3V1bSBoZWFwIHBhc3Mg KGluaXRpYWwgcGFzcyBvcgorCSAqIGZpbmFsIHBhc3MpIGVuZHMgdXAgc2V0dGluZyB0aGUgcGFn ZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nCisJICogVkFDVVVNIGRvZXMgaXQu CiAJICoKIAkgKiBOb3cgdGhhdCB3ZSBmaW5pc2hlZCBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5v dCB0byBmcmVlemUgdGhlIHBhZ2UsCiAJICogdXBkYXRlIHNldF9hbGxfdmlzaWJsZSBhbmQgc2V0 X2FsbF9mcm96ZW4gc28gdGhhdCB0aGV5IHJlZmxlY3QgdGhlIHRydWUKQEAgLTk1Myw3ICs5MzMs NyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQkJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3Jk IHNob3VsZCBiZSB0aGUKIAkJCSAqIG1vc3QgY29uc2VydmF0aXZlIG9mIGFsbCB0aGUgaG9yaXpv bnMgY2FsY3VsYXRlZCBmb3IgYW55IG9mIHRoZQogCQkJICogcG9zc2libGUgbW9kaWZpY2F0aW9u cy4gIElmIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgdHVwbGVzLCBhbnkKLQkJCSAqIHRyYW5zYWN0 aW9ucyBvbiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZQor CQkJICogdHJhbnNhY3Rpb25zIG9uIHRoZSBzdGFuZGJ5IG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0 IHhpZCBvZiB0aGUKIAkJCSAqIG1vc3QgcmVjZW50bHkgcmVtb3ZlZCB0dXBsZSB0aGlzIHJlY29y ZCB3aWxsIHBydW5lIHdpbGwKIAkJCSAqIGNvbmZsaWN0LiAgSWYgdGhpcyByZWNvcmQgd2lsbCBm cmVlemUgdHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25zCiAJCQkgKiBvbiB0aGUgc3RhbmRieSB3aXRo IHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwpAQCAtOTYxLDkgKzk0MSw5 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMs CiAJCQkgKi8KIAkJCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOwogCi0JCQlpZiAoVHJhbnNh Y3Rpb25JZEZvbGxvd3MocHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbiwKKwkJCWlmIChUcmFu c2FjdGlvbklkRm9sbG93cyhwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZUNvbmZsaWN0WGlkLAog CQkJCQkJCQkJIHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkKSkKLQkJCQljb25mbGljdF94aWQg PSBwcnN0YXRlLmZyel9jb25mbGljdF9ob3Jpem9uOworCQkJCWNvbmZsaWN0X3hpZCA9IHByc3Rh dGUucGFnZWZyei5GcmVlemVQYWdlQ29uZmxpY3RYaWQ7CiAJCQllbHNlCiAJCQkJY29uZmxpY3Rf eGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAz YzA5NjFhYjM2Yi4uZmFlNzliMzdmMGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIwOCw2ICsyMDgs MTQgQEAgdHlwZWRlZiBzdHJ1Y3QgSGVhcFBhZ2VGcmVlemUKIAlUcmFuc2FjdGlvbklkIEZyZWV6 ZVBhZ2VSZWxmcm96ZW5YaWQ7CiAJTXVsdGlYYWN0SWQgRnJlZXplUGFnZVJlbG1pbk14aWQ7CiAK KwkvKgorCSAqIFRoZSB5b3VuZ2VzdCBYSUQgdGhhdCB3aWxsIGJlIGZyb3plbiBvciByZW1vdmVk IGR1cmluZyBmcmVlemluZy4gSXQgaXMKKwkgKiB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgc25hcHNo b3QgY29uZmxpY3QgaG9yaXpvbiBmb3IgYSBXQUwgcmVjb3JkCisJICogZnJlZXppbmcgdHVwbGVz LiBCZWNhdXNlIGl0IGlzIG9ubHkgdXNlZCBpZiB3ZSBkbyBlbmQgdXAgZnJlZXppbmcKKwkgKiB0 dXBsZXMsIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGEgIm5vIGZyZWV6ZSIgdmVyc2lvbi4KKwkgKi8K KwlUcmFuc2FjdGlvbklkIEZyZWV6ZVBhZ2VDb25mbGljdFhpZDsKKwogCS8qCiAJICogIk5vIGZy ZWV6ZSIgTmV3UmVsZnJvemVuWGlkL05ld1JlbG1pbk14aWQgdHJhY2tlcnMuCiAJICoKLS0gCjIu NDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0005-Save-vmbuffer-in-heap-specific-scan-descriptors-.patch" Content-Disposition: attachment; filename="v35-0005-Save-vmbuffer-in-heap-specific-scan-descriptors-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tikbe4 RnJvbSAwOWI5Y2M0NzdkOGQ5YjY4OTg4ODU2NmI5ZDRkY2VkNWVlZmVhMjA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDI3IEZlYiAyMDI2IDE2OjIzOjU3IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMDUvMThdIFNhdmUgdm1idWZmZXIgaW4gaGVhcC1zcGVjaWZpYyBzY2FuIGRlc2Ny aXB0b3JzIGZvcgogb24tYWNjZXNzIHBydW5pbmcKCkZ1dHVyZSBjb21taXRzIHdpbGwgdXNlIHRo ZSB2aXNpYmlsaXR5IG1hcCBpbiBvbi1hY2Nlc3MgcHJ1bmluZyB0byBhdm9pZApwcnVuaW5nIHdo ZW4gYSBwYWdlIGlzIGFsbC12aXNpYmxlLCBmaXggVk0gY29ycnVwdGlvbiwgYW5kIHNldCB0aGUg Vk0gaWYKdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuCgpTYXZpbmcgdGhlIHZtYnVmZmVyIGluIHRo ZSBzY2FuIGRlc2NyaXB0b3IgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVzCml0IHdvdWxkIG5l ZWQgdG8gYmUgcGlubmVkIGFuZCB1bnBpbm5lZCwgbWFraW5nIHRoZSBvdmVyaGVhZCBvZiBkb2lu ZyBzbwpuZWdsaWdpYmxlLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAg ICAgICAgfCAxMiArKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgfCAxMiArKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAg ICAgICB8IDE5ICsrKysrKysrKysrKysrKystLS0KIDQgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0 aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDc2 Zjk0ZmRmYTViLi5lMTkyMDlmMTgwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTYz Myw3ICs2MzMsNyBAQCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikK IAkvKgogCSAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBmb3IgdGhlIHdob2xlIHBh Z2UsIGlmIHBvc3NpYmxlLgogCSAqLwotCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFz ZS5yc19yZCwgYnVmZmVyKTsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNf cmQsIGJ1ZmZlciwgJnNjYW4tPnJzX3ZtYnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xk IHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpA QCAtMTMxMCw2ICsxMzEwLDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNu YXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0 KSk7CiAJfQogCisJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJu IChUYWJsZVNjYW5EZXNjKSBzY2FuOwogfQpAQCAtMTM0OCw2ICsxMzQ5LDEyIEBAIGhlYXBfcmVz Y2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJ CXNjYW4tPnJzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlk KHNjYW4tPnJzX3ZtYnVmZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZm ZXIpOworCQlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkg KiBTT19UWVBFX0JJVE1BUFNDQU4gd291bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9l cyBub3QgaG9sZCBhbnkKIAkgKiBhZGRpdGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4K QEAgLTEzODAsNiArMTM4Nyw5IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQog CWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4t PnJzX2NidWYpOwogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlS ZWxlYXNlQnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRo ZSByZWFkIHN0cmVhbSBiZWZvcmUgZnJlZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJ ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAzZmYzNmY1 OWJmOC4uNDc2MjQxOTRmOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwpAQCAtODUsNiArODUsNyBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24g cmVsKQogCiAJaHNjYW4tPnhzX2Jhc2UucmVsID0gcmVsOwogCWhzY2FuLT54c19jYnVmID0gSW52 YWxpZEJ1ZmZlcjsKKwloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0 dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KQEAgLTk5LDYgKzEwMCwxMiBAQCBoZWFwYW1faW5kZXhf ZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbikKIAkJUmVsZWFzZUJ1ZmZlciho c2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9CisK KwlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+eHNfdm1idWZmZXIpKQorCXsKKwkJUmVsZWFzZUJ1 ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOworCQloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlk QnVmZmVyOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOCw3ICsxNDUsOCBAQCBoZWFwYW1f aW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJCSAq IFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlmIHdlIHdlcmVuJ3QgYWxyZWFkeSBvbiB0aGlzIHBhZ2UK IAkJICovCiAJCWlmIChwcmV2X2J1ZiAhPSBoc2Nhbi0+eHNfY2J1ZikKLQkJCWhlYXBfcGFnZV9w cnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVsLCBoc2Nhbi0+eHNfY2J1Zik7CisJCQloZWFwX3Bh Z2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4tPnhzX2NidWYsCisJCQkJCQkJ CSZoc2Nhbi0+eHNfdm1idWZmZXIpOwogCX0KIAogCS8qIE9idGFpbiBzaGFyZS1sb2NrIG9uIHRo ZSBidWZmZXIgc28gd2UgY2FuIGV4YW1pbmUgdmlzaWJpbGl0eSAqLwpAQCAtMjUzMyw3ICsyNTQx LDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJ ICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYg cG9zc2libGUuCiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVy KTsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsICZoc2Nhbi0+cnNf dm1idWZmZXIpOwogCiAJLyoKIAkgKiBXZSBtdXN0IGhvbGQgc2hhcmUgbG9jayBvbiB0aGUgYnVm ZmVyIGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCmluZGV4IDA3ODY4ZGJjYzE3Li41Y2UzZTU0YTAzNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vf d2lsbF9mcmVlemUoYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1bmUsIGJvb2wg ZAogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gb24gdGhlIGJ1ZmZlciwgYW5kIG11c3QgKm5vdCog aGF2ZSBhIGxvY2sgb24gaXQuCiAgKi8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLCBCdWZmZXIgKnZtYnVmZmVyKQogewogCVBhZ2UJCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJVHJhbnNhY3Rpb25JZCBwcnVuZV94aWQ7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmgKaW5kZXggZmFlNzliMzdmMGQuLjRlMmU3MWJlNTU4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bS5oCkBAIC05NCw2ICs5NCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBIZWFwU2NhbkRlc2NEYXRhCiAJ ICovCiAJUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlckRhdGEgKnJzX3BhcmFsbGVsd29ya2Vy ZGF0YTsKIAorCS8qCisJICogRm9yIHNlcXVlbnRpYWwgc2NhbnMgYW5kIGJpdG1hcCBoZWFwIHNj YW5zLiBUaGUgY3VycmVudCBoZWFwIGJsb2NrJ3MKKwkgKiBjb3JyZXNwb25kaW5nIHBhZ2UgaW4g dGhlIHZpc2liaWxpdHkgbWFwLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisKIAkvKiB0 aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1vZGUgYW5kIGZvciBiaXRt YXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJlbnQgdHVwbGUncyBpbmRl eCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkvKiBudW1iZXIgb2Ygdmlz aWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAtMTE2LDggKzEyMiwxNCBAQCB0eXBlZGVmIHN0cnVj dCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVEYXRhIHhzX2Jhc2U7CS8q IEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZlcgkJeHNf Y2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55ICovCi0JLyogTkI6 IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBi dWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55LiBO QjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9u IHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKworCS8qIEN1cnJlbnQgaGVh cCBibG9jaydzIGNvcnJlc3BvbmRpbmcgcGFnZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgKi8KKwlC dWZmZXIJCXhzX3ZtYnVmZmVyOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJlc3VsdCBj b2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCkBAIC00MTcsNyArNDI5LDggQEAg ZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJl bCwKIAkJCQkJCQkJCQkJICBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSk7CiAKIC8qIGluIGhl YXAvcHJ1bmVoZWFwLmMgKi8KLWV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpOworZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5l X29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJQnVmZmVyICp2 bWJ1ZmZlcik7CiBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZy ZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1 bHQsCiAJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCi0tIAoyLjQzLjAKCg== --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0006-Fix-visibility-map-corruption-in-more-cases.patch" Content-Disposition: attachment; filename="v35-0006-Fix-visibility-map-corruption-in-more-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tiokq5 RnJvbSBjNmExZmE1YzgzMTk3NzliODAwZjkwM2UyNGQzZjIzOWUxNmMxY2MxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI1IEZlYiAyMDI2IDE2OjIzOjA5IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMDYvMThdIEZpeCB2aXNpYmlsaXR5IG1hcCBjb3JydXB0aW9uIGluIG1vcmUgY2Fz ZXMKCk1vdmUgVk0gY29ycnVwdGlvbiBkZXRlY3Rpb24gYW5kIHJlcGFpciBpbnRvIHBydW5pbmcu IFRoaXMgYWxsb3dzIFZNCnJlcGFpciBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcsIG5vdCBvbmx5 IGR1cmluZyB2YWN1dW0uCgpBbHNvLCBleHBhbmQgY29ycnVwdGlvbiBkZXRlY3Rpb24gdG8gY292 ZXIgcGFnZXMgbWFya2VkIGFsbC12aXNpYmxlIHRoYXQKY29udGFpbiBkZWFkIHR1cGxlcyBhbmQg dHVwbGVzIGluc2VydGVkIG9yIHVwZGF0ZWQgYnkgaW4tcHJvZ3Jlc3MKdHJhbnNhY3Rpb25zLCBy YXRoZXIgdGhhbiBvbmx5IGFsbC12aXNpYmxlIHBhZ2VzIHdpdGggTFBfREVBRCBpdGVtcy4KClBp bm5pbmcgdGhlIGNvcnJlY3QgVk0gcGFnZSBiZWZvcmUgb24tYWNjZXNzIHBydW5pbmcgaXMgY2hl YXAgd2hlbgpjb21wYXJlZCB0byB0aGUgY29zdCBvZiBhY3R1YWxseSBwcnVuaW5nLiBUaGUgdm1i dWZmZXIgaXMgc2F2ZWQgaW4gdGhlCnNjYW4gZGVzY3JpcHRvciwgc28gYSBxdWVyeSBzaG91bGQg b25seSBuZWVkIHRvIHBpbiBlYWNoIFZNIHBhZ2Ugb25jZQphbmQgYSBzaW5nbGUgVk0gcGFnZSBj b3ZlcnMgYSBsYXJnZSBudW1iZXIgb2YgaGVhcCBwYWdlcy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAxNzQgKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAgODkgKy0tLS0tLS0tLS0tLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8ICAxMiArKwogMyBmaWxlcyBj aGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNWNlM2U1NGEwMzYuLmZhNDcwZjY2M2I3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5j bHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKLSNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcGRl ZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vz cy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjb21t YW5kcy92YWN1dW0uaCIKQEAgLTExNCw2ICsxMTQsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKi8K IAlIZWFwUGFnZUZyZWV6ZSBwYWdlZnJ6OwogCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICogV29ya2luZyBzdGF0ZSBmb3Igdmlz aWJpbGl0eSBtYXAgcHJvY2Vzc2luZworCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAqLworCisJLyoKKwkgKiBDYWxsZXIgbXVzdCBw cm92aWRlIGEgcGlubmVkIHZtYnVmZmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhlYXAgYmxvY2sK KwkgKiBwYXNzZWQgdG8gaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4gV2Ugd2lsbCBmaXgg YW55IGNvcnJ1cHRpb24KKwkgKiBmb3VuZCBpbiB0aGUgVk0uCisJICovCisJQnVmZmVyCQl2bWJ1 ZmZlcjsKKworCS8qIEJpdHMgaW4gdGhlIHZtYnVmZmVyIGZvciB0aGlzIGhlYXAgcGFnZSAqLwor CXVpbnQ4CQl2bWJpdHM7CisKIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAkgKiBJbmZvcm1hdGlvbiBhYm91dCB3aGF0IHdhcyBkb25l CiAJICoKQEAgLTE2OCw2ICsxODMsNyBAQCBzdGF0aWMgdm9pZCBwcnVuZV9mcmVlemVfc2V0dXAo UHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkgICBNdWx0aVhhY3RJZCAqbmV3X3Jl bG1pbl9teGlkLAogCQkJCQkJCSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAogCQkJCQkJ CSAgIFBydW5lU3RhdGUgKnByc3RhdGUpOworc3RhdGljIHZvaWQgaGVhcF9maXhfdm1fY29ycnVw dGlvbihQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIHN0YXRpYyB2 b2lkIHBydW5lX2ZyZWV6ZV9wbGFuKFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJICBPZmZz ZXROdW1iZXIgKm9mZl9sb2MpOwogc3RhdGljIEhUU1ZfUmVzdWx0IGhlYXBfcHJ1bmVfc2F0aXNm aWVzX3ZhY3V1bShQcnVuZVN0YXRlICpwcnN0YXRlLApAQCAtMTc1LDcgKzE5MSw4IEBAIHN0YXRp YyBIVFNWX1Jlc3VsdCBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0oUHJ1bmVTdGF0ZSAqcHJz dGF0ZSwKIHN0YXRpYyBpbmxpbmUgSFRTVl9SZXN1bHQgaHRzdl9nZXRfdmFsaWRfc3RhdHVzKGlu dCBzdGF0dXMpOwogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9jaGFpbihPZmZzZXROdW1iZXIgbWF4 b2ZmLAogCQkJCQkJCSBPZmZzZXROdW1iZXIgcm9vdG9mZm51bSwgUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSk7Ci1zdGF0aWMgdm9pZCBoZWFwX3BydW5lX3JlY29yZF9wcnVuYWJsZShQcnVuZVN0YXRlICpw cnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCk7CitzdGF0aWMgdm9pZCBoZWFwX3BydW5lX3JlY29y ZF9wcnVuYWJsZShQcnVuZVN0YXRlICpwcnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJ CQkJCSAgIE9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNv cmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJl ciBvZmZudW0sIE9mZnNldE51bWJlciByZG9mZm51bSwKIAkJCQkJCQkJCSAgIGJvb2wgd2FzX25v cm1hbCk7CkBAIC0yMDcsNiArMjI0LDkgQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJl ZXplKGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29sIGQKICAqIGlm IHRoZXJlJ3Mgbm90IGFueSB1c2UgaW4gcHJ1bmluZy4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZl IHBpbiBvbiB0aGUgYnVmZmVyLCBhbmQgbXVzdCAqbm90KiBoYXZlIGEgbG9jayBvbiBpdC4KKyAq CisgKiBJZiB2bWJ1ZmZlciBpcyBub3QgeWV0IHBpbm5lZCBhbmQgcHJ1bmluZyBpcyBwZXJmb3Jt ZWQsIHZtYnVmZmVyIHdpbGwgYmUKKyAqIHBpbm5lZC4gSWYgd2UgZmluZCBWTSBjb3JydXB0aW9u IGR1cmluZyBwcnVuaW5nLCB3ZSB3aWxsIGZpeCBpdC4KICAqLwogdm9pZAogaGVhcF9wYWdlX3By dW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2bWJ1ZmZl cikKQEAgLTI3Myw2ICsyOTMsMTYgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2bWJ1ZmZlcikKIAkJewogCQkJT2Zmc2V0TnVt YmVyIGR1bW15X29mZl9sb2M7CiAJCQlQcnVuZUZyZWV6ZVJlc3VsdCBwcmVzdWx0OworCQkJUHJ1 bmVGcmVlemVQYXJhbXMgcGFyYW1zOworCisJCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxhdGlvbiwg QnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwgdm1idWZmZXIpOworCisJCQlwYXJhbXMucmVs YXRpb24gPSByZWxhdGlvbjsKKwkJCXBhcmFtcy5idWZmZXIgPSBidWZmZXI7CisJCQlwYXJhbXMu dm1idWZmZXIgPSAqdm1idWZmZXI7CisJCQlwYXJhbXMucmVhc29uID0gUFJVTkVfT05fQUNDRVNT OworCQkJcGFyYW1zLnZpc3Rlc3QgPSB2aXN0ZXN0OworCQkJcGFyYW1zLmN1dG9mZnMgPSBOVUxM OwogCiAJCQkvKgogCQkJICogV2UgZG9uJ3QgcGFzcyB0aGUgSEVBUF9QQUdFX1BSVU5FX01BUktf VU5VU0VEX05PVyBvcHRpb24KQEAgLTI4MCwxNCArMzEwLDcgQEAgaGVhcF9wYWdlX3BydW5lX29w dChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2bWJ1ZmZlcikKIAkJ CSAqIGNhbm5vdCBzYWZlbHkgZGV0ZXJtaW5lIHRoYXQgZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5n IHdpdGggdGhlCiAJCQkgKiBjdXJyZW50IGltcGxlbWVudGF0aW9uLgogCQkJICovCi0JCQlQcnVu ZUZyZWV6ZVBhcmFtcyBwYXJhbXMgPSB7Ci0JCQkJLnJlbGF0aW9uID0gcmVsYXRpb24sCi0JCQkJ LmJ1ZmZlciA9IGJ1ZmZlciwKLQkJCQkucmVhc29uID0gUFJVTkVfT05fQUNDRVNTLAotCQkJCS5v cHRpb25zID0gMCwKLQkJCQkudmlzdGVzdCA9IHZpc3Rlc3QsCi0JCQkJLmN1dG9mZnMgPSBOVUxM LAotCQkJfTsKKwkJCXBhcmFtcy5vcHRpb25zID0gMDsKIAogCQkJaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoJnBhcmFtcywgJnByZXN1bHQsICZkdW1teV9vZmZfbG9jLAogCQkJCQkJCQkJICAg TlVMTCwgTlVMTCk7CkBAIC0zNTAsNiArMzczLDEyIEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVu ZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCXByc3RhdGUtPmJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVy OwogCXByc3RhdGUtPnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHBhcmFtcy0+YnVmZmVyKTsKIAorCUFz c2VydChCdWZmZXJJc1ZhbGlkKHBhcmFtcy0+dm1idWZmZXIpKTsKKwlwcnN0YXRlLT52bWJ1ZmZl ciA9IHBhcmFtcy0+dm1idWZmZXI7CisJcHJzdGF0ZS0+dm1iaXRzID0gdmlzaWJpbGl0eW1hcF9n ZXRfc3RhdHVzKHByc3RhdGUtPnJlbGF0aW9uLAorCQkJCQkJCQkJCQkgICBwcnN0YXRlLT5ibG9j aywKKwkJCQkJCQkJCQkJICAgJnByc3RhdGUtPnZtYnVmZmVyKTsKKwogCS8qCiAJICogT3VyIHN0 cmF0ZWd5IGlzIHRvIHNjYW4gdGhlIHBhZ2UgYW5kIG1ha2UgbGlzdHMgb2YgaXRlbXMgdG8gY2hh bmdlLAogCSAqIHRoZW4gYXBwbHkgdGhlIGNoYW5nZXMgd2l0aGluIGEgY3JpdGljYWwgc2VjdGlv bi4gIFRoaXMga2VlcHMgYXMgbXVjaApAQCAtNzY2LDYgKzc5NSw5MCBAQCBoZWFwX3BhZ2Vfd2ls bF9mcmVlemUoYm9vbCBkaWRfdHVwbGVfaGludF9mcGksCiAJcmV0dXJuIGRvX2ZyZWV6ZTsKIH0K IAorLyoKKyAqIEhlbHBlciB0byBmaXggdmlzaWJpbGl0eS1yZWxhdGVkIGNvcnJ1cHRpb24gb24g YSBoZWFwIHBhZ2UgYW5kIGl0cworICogY29ycmVzcG9uZGluZyBWTSBwYWdlLiBBbiBhbGwtdmlz aWJsZSBwYWdlIGNhbm5vdCBoYXZlIGRlYWQgaXRlbXMgbm9yIGNhbgorICogaXQgaGF2ZSB0dXBs ZXMgdGhhdCBhcmUgbm90IHZpc2libGUgdG8gYWxsIHJ1bm5pbmcgdHJhbnNhY3Rpb25zLiBJdCBj bGVhcnMKKyAqIHRoZSBWTSBjb3JydXB0aW9uIGFzIHdlbGwgYXMgcmVzZXR0aW5nIHRoZSB2bWJp dHMgdXNlZCBkdXJpbmcgcHJ1bmluZy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2Fs bGVkIHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sgb24gdGhlIGhlYXAKKyAqIGJ1ZmZl ciwgYW5kIGFueSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVuIGRpc2NvdmVyZWQgdW5kZXIgdGhh dCBzYW1lIGxvY2suCisgKiBBbHRob3VnaCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24gdGhlIFZN IGJ1ZmZlciwgaXQgaXMgcGlubmVkLCBhbmQgdGhlIGhlYXAKKyAqIGJ1ZmZlciBpcyBleGNsdXNp dmVseSBsb2NrZWQsIGVuc3VyaW5nIHRoYXQgbm8gb3RoZXIgYmFja2VuZCBjYW4gdXBkYXRlIHRo ZQorICogVk0gYml0cyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICoKKyAqIGhl YXBfZml4X3ZtX2NvcnJ1cHRpb24oKSBtYWtlcyBjaGFuZ2VzIHRvIHRoZSBWTSBhbmQsIHBvdGVu dGlhbGx5LCB0aGUgaGVhcAorICogcGFnZSwgYnV0IGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgZG9u ZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24gYmVjYXVzZQorICogY2xlYXJpbmcgdGhlIFZNIGlzIG5v dCBXQUwtbG9nZ2VkLgorICovCitzdGF0aWMgdm9pZAoraGVhcF9maXhfdm1fY29ycnVwdGlvbihQ cnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQoreworCUFzc2VydChCdWZm ZXJJc0xvY2tlZEJ5TWVJbk1vZGUocHJzdGF0ZS0+YnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJ VkUpKTsKKworCWlmIChQYWdlSXNBbGxWaXNpYmxlKHByc3RhdGUtPnBhZ2UpKQorCXsKKwkJLyoK KwkJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisJCSAqIEdldE9s ZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQn cyBub3QKKwkJICogd3JvbmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90 IGJlIHZpc2libGUgdG8KKwkJICogZXZlcnlvbmUgeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBp cyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZQorCQkgKiB4bWluIHZhbHVlIG5ldmVyIG1vdmVz IGJhY2t3YXJkcywgYnV0CisJCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQo KSBpcyBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcworCQkgKiByZXR1cm5zIGEgdmFsdWUgdGhh dCdzIHVubmVjZXNzYXJpbHkgc21hbGwsIHNvIGlmIHdlIHNlZSB0aGF0CisJCSAqIGNvbnRyYWRp Y3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZSB0aGluayBhcmUgbm90 CisJCSAqIHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZSBQRF9B TExfVklTSUJMRSBmbGFnCisJCSAqIGlzIGNvcnJlY3QuCisJCSAqCisJCSAqIEhvd2V2ZXIsIHRo ZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zLCBkZWFkIHR1cGxlIHZlcnNpb25zLAor CQkgKiBvciB0dXBsZXMgaW5zZXJ0ZWQgYnkgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24gb24g YSBwYWdlIHdpdGgKKwkJICogUERfQUxMX1ZJU0lCTEUgc2V0LgorCQkgKi8KKwkJaWYgKHByc3Rh dGUtPmxwZGVhZF9pdGVtcyA+IDApCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJCSBlcnJtc2coIkxQX0RFQUQgaXRl bSBmb3VuZCBvbiBwYWdlIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSIpLAorCQkJCQkgZXJyZGV0YWls KCJyZWxhdGlvbiBcIiVzXCIsIHBhZ2UgJXUsIHR1cGxlICV1IiwKKwkJCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShwcnN0YXRlLT5yZWxhdGlvbiksCisJCQkJCQkJICAgcHJzdGF0ZS0+ YmxvY2ssIG9mZm51bSkpKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJCSBlcnJtc2coInR1 cGxlIG5vdCB2aXNpYmxlIHRvIGFsbCBmb3VuZCBvbiBwYWdlIG1hcmtlZCBhcyBhbGwtdmlzaWJs ZSIpLAorCQkJCQkgZXJyZGV0YWlsKCJyZWxhdGlvbiBcIiVzXCIsIHBhZ2UgJXUsIHR1cGxlICV1 IiwKKwkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwcnN0YXRlLT5yZWxhdGlvbiks CisJCQkJCQkJICAgcHJzdGF0ZS0+YmxvY2ssIG9mZm51bSkpKTsKKwkJfQorCisJCS8qCisJCSAq IE1hcmsgdGhlIGJ1ZmZlciBkaXJ0eSBub3cgaW4gY2FzZSB3ZSBtYWtlIG5vIGZ1cnRoZXIgY2hh bmdlcyBhbmQKKwkJICogdGhlcmVmb3JlIHdvdWxkIG5vdCBtYXJrIGl0IGRpcnR5IGxhdGVyLgor CQkgKi8KKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShwcnN0YXRlLT5wYWdlKTsKKwkJTWFya0J1ZmZl ckRpcnR5SGludChwcnN0YXRlLT5idWZmZXIsIHRydWUpOworCX0KKwllbHNlIGlmIChwcnN0YXRl LT52bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCisJeworCQkvKgorCQkgKiBBcyBv ZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUg c2V0IGlmCisJCSAqIHRoZSBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3Mg cG9zc2libGUgdGhhdCB0aGUgYml0CisJCSAqIGdvdCBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3Nj YW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QKKwkJICogcmVjaGVjayB3aXRo IGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCisJ CSAqLworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJV UFRFRCksCisJCQkJIGVycm1zZygicGFnZSAldSBpbiBcIiVzXCIgaXMgbm90IG1hcmtlZCBhbGwt dmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCIsCisJCQkJCQlwcnN0YXRlLT5i bG9jaywKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHByc3RhdGUtPnJlbGF0aW9uKSkp KTsKKwl9CisKKwl2aXNpYmlsaXR5bWFwX2NsZWFyKHByc3RhdGUtPnJlbGF0aW9uLCBwcnN0YXRl LT5ibG9jaywgcHJzdGF0ZS0+dm1idWZmZXIsCisJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMpOworCXByc3RhdGUtPnZtYml0cyA9IDA7Cit9CiAKIC8qCiAgKiBQcnVuZSBhbmQgcmVwYWly IGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCkBAIC04 MjYsNiArOTM5LDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAJCQkJCSAgIG5ld19yZWxmcm96ZW5feGlkLCBuZXdfcmVsbWluX214aWQs CiAJCQkJCSAgIHByZXN1bHQsICZwcnN0YXRlKTsKIAorCWlmICgocHJzdGF0ZS52bWJpdHMgJiBW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICYmCisJCSFQYWdlSXNBbGxWaXNpYmxlKHByc3RhdGUu cGFnZSkpCisJCWhlYXBfZml4X3ZtX2NvcnJ1cHRpb24oJnByc3RhdGUsIEludmFsaWRPZmZzZXRO dW1iZXIpOworCiAJLyoKIAkgKiBFeGFtaW5lIGFsbCBsaW5lIHBvaW50ZXJzIGFuZCB0dXBsZSB2 aXNpYmlsaXR5IGluZm9ybWF0aW9uIHRvIGRldGVybWluZQogCSAqIHdoaWNoIGxpbmUgcG9pbnRl cnMgc2hvdWxkIGNoYW5nZSBzdGF0ZSBhbmQgd2hpY2ggdHVwbGVzIG1heSBiZSBmcm96ZW4uCkBA IC05NzAsNiArMTA4Nyw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLnNldF9hbGxf dmlzaWJsZTsKIAlwcmVzdWx0LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5zZXRfYWxsX2Zyb3plbjsK IAlwcmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKKwlwcmVzdWx0LT52bWJpdHMgPSBw cnN0YXRlLnZtYml0czsKIAogCS8qCiAJICogRm9yIGNhbGxlcnMgcGxhbm5pbmcgdG8gdXBkYXRl IHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24KQEAgLTEyOTIsNyArMTQx MCw4IEBAIHByb2Nlc3NfY2hhaW46CiAKIC8qIFJlY29yZCBsb3dlc3Qgc29vbi1wcnVuYWJsZSBY SUQgKi8KIHN0YXRpYyB2b2lkCi1oZWFwX3BydW5lX3JlY29yZF9wcnVuYWJsZShQcnVuZVN0YXRl ICpwcnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKK2hlYXBfcHJ1bmVfcmVjb3JkX3BydW5hYmxl KFBydW5lU3RhdGUgKnByc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJICAgT2Zmc2V0 TnVtYmVyIG9mZm51bSkKIHsKIAkvKgogCSAqIFRoaXMgc2hvdWxkIGV4YWN0bHkgbWF0Y2ggdGhl IFBhZ2VTZXRQcnVuYWJsZSBtYWNyby4gIFdlIGNhbid0IHN0b3JlCkBAIC0xMzAyLDYgKzE0MjEs MTMgQEAgaGVhcF9wcnVuZV9yZWNvcmRfcHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJh bnNhY3Rpb25JZCB4aWQpCiAJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcnN0YXRlLT5uZXdf cHJ1bmVfeGlkKSB8fAogCQlUcmFuc2FjdGlvbklkUHJlY2VkZXMoeGlkLCBwcnN0YXRlLT5uZXdf cHJ1bmVfeGlkKSkKIAkJcHJzdGF0ZS0+bmV3X3BydW5lX3hpZCA9IHhpZDsKKworCS8qCisJICog SXQncyBpbmNvcnJlY3QgZm9yIGEgcGFnZSB0byBiZSBtYXJrZWQgYWxsLXZpc2libGUgaWYgaXQg Y29udGFpbnMKKwkgKiBwcnVuYWJsZSBpdGVtcy4KKwkgKi8KKwlpZiAoUGFnZUlzQWxsVmlzaWJs ZShwcnN0YXRlLT5wYWdlKSkKKwkJaGVhcF9maXhfdm1fY29ycnVwdGlvbihwcnN0YXRlLCBvZmZu dW0pOwogfQogCiAvKiBSZWNvcmQgbGluZSBwb2ludGVyIHRvIGJlIHJlZGlyZWN0ZWQgKi8KQEAg LTEzODUsNiArMTUxMSwxNSBAQCBoZWFwX3BydW5lX3JlY29yZF9kZWFkX29yX3VudXNlZChQcnVu ZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCQloZWFwX3BydW5lX3JlY29y ZF91bnVzZWQocHJzdGF0ZSwgb2ZmbnVtLCB3YXNfbm9ybWFsKTsKIAllbHNlCiAJCWhlYXBfcHJ1 bmVfcmVjb3JkX2RlYWQocHJzdGF0ZSwgb2ZmbnVtLCB3YXNfbm9ybWFsKTsKKworCS8qCisJICog SXQncyBpbmNvcnJlY3QgZm9yIHRoZSBwYWdlIHRvIGJlIHNldCBhbGwtdmlzaWJsZSBpZiBpdCBj b250YWlucyBkZWFkCisJICogaXRlbXMuIEZpeCB0aGF0IG9uIHRoZSBoZWFwIHBhZ2UgYW5kIGNo ZWNrIHRoZSBWTSBmb3IgY29ycnVwdGlvbiBhcworCSAqIHdlbGwuIERvIHRoYXQgaGVyZSByYXRo ZXIgdGhhbiBpbiBoZWFwX3BydW5lX3JlY29yZF9kZWFkKCkgc28gd2UgYWxzbworCSAqIGNvdmVy IHR1cGxlcyB0aGF0IGFyZSBkaXJlY3RseSBtYXJrZWQgTFBfVU5VU0VEIHZpYSBtYXJrX3VudXNl ZF9ub3cuCisJICovCisJaWYgKFBhZ2VJc0FsbFZpc2libGUocHJzdGF0ZS0+cGFnZSkpCisJCWhl YXBfZml4X3ZtX2NvcnJ1cHRpb24ocHJzdGF0ZSwgb2ZmbnVtKTsKIH0KIAogLyogUmVjb3JkIGxp bmUgcG9pbnRlciB0byBiZSBtYXJrZWQgdW51c2VkICovCkBAIC0xNTI0LDcgKzE2NTksOCBAQCBo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bWJlciBvZmZudW0pCiAJCQkgKiB0aGF0IHRoZSBwYWdlIGlzIHJlY29uc2lkZXJl ZCBmb3IgcHJ1bmluZyBpbiBmdXR1cmUuCiAJCQkgKi8KIAkJCWhlYXBfcHJ1bmVfcmVjb3JkX3By dW5hYmxlKHByc3RhdGUsCi0JCQkJCQkJCQkgICBIZWFwVHVwbGVIZWFkZXJHZXRVcGRhdGVYaWQo aHR1cCkpOworCQkJCQkJCQkJICAgSGVhcFR1cGxlSGVhZGVyR2V0VXBkYXRlWGlkKGh0dXApLAor CQkJCQkJCQkJICAgb2ZmbnVtKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgSEVBUFRVUExFX0lOU0VS VF9JTl9QUk9HUkVTUzoKQEAgLTE1MzksNiArMTY3NSwxMCBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZu dW0pCiAJCQlwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJCXByc3RhdGUtPnNl dF9hbGxfZnJvemVuID0gZmFsc2U7CiAKKwkJCS8qIFRoZSBwYWdlIHNob3VsZCBub3QgYmUgbWFy a2VkIGFsbC12aXNpYmxlICovCisJCQlpZiAoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKKwkJCQlo ZWFwX2ZpeF92bV9jb3JydXB0aW9uKHByc3RhdGUsIG9mZm51bSk7CisKIAkJCS8qCiAJCQkgKiBJ ZiB3ZSB3YW50ZWQgdG8gb3B0aW1pemUgZm9yIGFib3J0cywgd2UgbWlnaHQgY29uc2lkZXIgbWFy a2luZwogCQkJICogdGhlIHBhZ2UgcHJ1bmFibGUgd2hlbiB3ZSBzZWUgSU5TRVJUX0lOX1BST0dS RVNTLiAgQnV0IHdlCkBAIC0xNTYzLDcgKzE3MDMsOCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNo YW5nZWRfbHBfbm9ybWFsKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0p CiAJCQkgKiB0aGUgcGFnZSBpcyByZWNvbnNpZGVyZWQgZm9yIHBydW5pbmcgaW4gZnV0dXJlLgog CQkJICovCiAJCQloZWFwX3BydW5lX3JlY29yZF9wcnVuYWJsZShwcnN0YXRlLAotCQkJCQkJCQkJ ICAgSGVhcFR1cGxlSGVhZGVyR2V0VXBkYXRlWGlkKGh0dXApKTsKKwkJCQkJCQkJCSAgIEhlYXBU dXBsZUhlYWRlckdldFVwZGF0ZVhpZChodHVwKSwKKwkJCQkJCQkJCSAgIG9mZm51bSk7CiAJCQli cmVhazsKIAogCQlkZWZhdWx0OgpAQCAtMTYyOSw2ICsxNzcwLDEzIEBAIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9kZWFkKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBv ZmZudW0pCiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0IGZvciB2YWN1dW0gKi8KIAlwcnN0 YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRlLT5scGRlYWRfaXRlbXMrK10gPSBvZmZudW07CisKKwkv KgorCSAqIEl0J3MgaW5jb3JyZWN0IGZvciBhIHBhZ2UgdG8gYmUgbWFya2VkIGFsbC12aXNpYmxl IGlmIGl0IGNvbnRhaW5zIGRlYWQKKwkgKiBpdGVtcy4KKwkgKi8KKwlpZiAoUGFnZUlzQWxsVmlz aWJsZShwcnN0YXRlLT5wYWdlKSkKKwkJaGVhcF9maXhfdm1fY29ycnVwdGlvbihwcnN0YXRlLCBv ZmZudW0pOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDVi NmYyNDQxZjZiLi4wYTBhYThlNWE5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwpAQCAtNDI0LDExICs0MjQsNiBAQCBzdGF0aWMgdm9pZCBmaW5kX25leHRfdW5za2lwcGFibGVf YmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZpcyk7CiBzdGF0aWMgYm9v bCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwK IAkJCQkJCQkJICAgQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQkJICAgYm9v bCBzaGFyZWxvY2ssIEJ1ZmZlciB2bWJ1ZmZlcik7Ci1zdGF0aWMgdm9pZCBpZGVudGlmeV9hbmRf Zml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJ CQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCQkJ CSAgIGludCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKLQkJ CQkJCQkJCQkgICB1aW50OCAqdm1iaXRzKTsKIHN0YXRpYyBpbnQJbGF6eV9zY2FuX3BydW5lKExW UmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQlCbG9ja051bWJlciBibGtubywg UGFnZSBwYWdlLAogCQkJCQkJCUJ1ZmZlciB2bWJ1ZmZlciwKQEAgLTE5NjMsODEgKzE5NTgsNiBA QCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJcmV0dXJu IHBnX2NtcF91MTYoKihjb25zdCBPZmZzZXROdW1iZXIgKikgYSwgKihjb25zdCBPZmZzZXROdW1i ZXIgKikgYik7CiB9CiAKLS8qCi0gKiBIZWxwZXIgdG8gY29ycmVjdCBhbnkgY29ycnVwdGlvbiBk ZXRlY3RlZCBvbiBhIGhlYXAgcGFnZSBhbmQgaXRzCi0gKiBjb3JyZXNwb25kaW5nIHZpc2liaWxp dHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVmb3JlIHNldHRpbmcgdGhlCi0gKiB2aXNp YmlsaXR5IG1hcC4gSXQgZXhhbWluZXMgdGhlIGhlYXAgcGFnZSwgdGhlIGFzc29jaWF0ZWQgVk0g cGFnZSwgYW5kIHRoZQotICogbnVtYmVyIG9mIGRlYWQgaXRlbXMgcHJldmlvdXNseSBpZGVudGlm aWVkLgotICoKLSAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBh biBleGNsdXNpdmUgbG9jayBvbiB0aGUgaGVhcAotICogYnVmZmVyLCBhbmQgdGhlIGRlYWQgaXRl bXMgbXVzdCBoYXZlIGJlZW4gZGlzY292ZXJlZCB1bmRlciB0aGF0IHNhbWUgbG9jay4KLQotICog VGhlIHByb3ZpZGVkIHZtYml0cyBtdXN0IHJlZmxlY3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhl IFZNIGJsb2NrCi0gKiByZWZlcmVuY2VkIGJ5IHZtYnVmZmVyLiBBbHRob3VnaCB3ZSBkbyBub3Qg aG9sZCBhIGxvY2sgb24gdGhlIFZNIGJ1ZmZlciwgaXQKLSAqIGlzIHBpbm5lZCwgYW5kIHRoZSBo ZWFwIGJ1ZmZlciBpcyBleGNsdXNpdmVseSBsb2NrZWQsIGVuc3VyaW5nIHRoYXQgbm8KLSAqIG90 aGVyIGJhY2tlbmQgY2FuIHVwZGF0ZSB0aGUgVk0gYml0cyBjb3JyZXNwb25kaW5nIHRvIHRoaXMg aGVhcCBwYWdlLgotICoKLSAqIElmIGl0IGNsZWFycyBjb3JydXB0aW9uLCBpdCB3aWxsIHplcm8g b3V0IHZtYml0cy4KLSAqLwotc3RhdGljIHZvaWQKLWlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVw dGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJCQkJCQkgICBCbG9ja051 bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCi0JCQkJCQkJICAgaW50IG5scGRlYWRfaXRl bXMsCi0JCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAotCQkJCQkJCSAgIHVpbnQ4ICp2bWJpdHMp Ci17Ci0JQXNzZXJ0KHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1i dWZmZXIpID09ICp2bWJpdHMpOwotCi0JQXNzZXJ0KEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9kZSho ZWFwX2J1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKSk7Ci0KLQkvKgotCSAqIEFzIG9mIFBv c3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQg aWYgdGhlCi0JICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3Np YmxlIHRoYXQgdGhlIGJpdCBnb3QKLQkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4 dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawotCSAqIHdpdGggYnVmZmVy IGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KLQkgKi8KLQlp ZiAoIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgotCQkoKCp2bWJpdHMgJiBWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpICE9IDApKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShl cnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90 IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxh dGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp LCBoZWFwX2JsaykpKTsKLQotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZt YnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JCSp2bWJpdHMgPSAw OwotCX0KLQotCS8qCi0JICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5 Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dh cmRzLCBzbyBpdCdzIG5vdAotCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBw ZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQRF9BTExf VklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0JICogbmV2 ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25J ZCgpIGlzCi0JICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRo YXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRp Y3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRoaW5rIGFy ZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCi0JICog UERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hvdWxkIG5l dmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAot CSAqIGhvd2V2ZXIuCi0JICovCi0JZWxzZSBpZiAoUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2Up ICYmIG5scGRlYWRfaXRlbXMgPiAwKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJj b2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmlu ZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVz XCIgcGFnZSAldSIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2Js aykpKTsKLQotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFnZSk7Ci0JCU1hcmtCdWZmZXJE aXJ0eShoZWFwX2J1ZmZlcik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIocmVsLCBoZWFwX2Jsaywg dm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQkJKnZtYml0cyA9 IDA7Ci0JfQotfQotCiAvKgogICoJbGF6eV9zY2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hlYXAo KSBwcnVuaW5nIGFuZCBmcmVlemluZy4KICAqCkBAIC0yMDY5LDYgKzE5ODksNyBAQCBsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCVBydW5lRnJlZXplUGFyYW1zIHBhcmFtcyA9 IHsKIAkJLnJlbGF0aW9uID0gcmVsLAogCQkuYnVmZmVyID0gYnVmLAorCQkudm1idWZmZXIgPSB2 bWJ1ZmZlciwKIAkJLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9TQ0FOLAogCQkub3B0aW9ucyA9IEhF QVBfUEFHRV9QUlVORV9GUkVFWkUsCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52aXN0ZXN0LApAQCAt MjE3OCwxOCArMjA5OSwxMiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAog CUFzc2VydCghcHJlc3VsdC5hbGxfdmlzaWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7CiAJ QXNzZXJ0KCFwcmVzdWx0LmFsbF9mcm96ZW4gfHwgcHJlc3VsdC5hbGxfdmlzaWJsZSk7CiAKLQlv bGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+cmVsLCBibGtubywg JnZtYnVmZmVyKTsKLQotCWlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJl bCwgYnVmLCBibGtubywgcGFnZSwKLQkJCQkJCQkJICAgcHJlc3VsdC5scGRlYWRfaXRlbXMsIHZt YnVmZmVyLAotCQkJCQkJCQkgICAmb2xkX3ZtYml0cyk7Ci0KIAlpZiAoIXByZXN1bHQuYWxsX3Zp c2libGUpCiAJCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwogCiAJLyogU2V0IHRoZSB2aXNpYmls aXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQgKi8KKwlvbGRfdm1iaXRzID0gcHJlc3Vs dC52bWJpdHM7CiAJbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KIAlp ZiAocHJlc3VsdC5hbGxfZnJvemVuKQogCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTjsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDRlMmU3MWJlNTU4Li45ZGI5MmM3ZGI4YSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaApAQCAtMjU4LDYgKzI1OCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQcnVu ZUZyZWV6ZVBhcmFtcwogCVJlbGF0aW9uCXJlbGF0aW9uOwkJLyogcmVsYXRpb24gY29udGFpbmlu ZyBidWZmZXIgdG8gYmUgcHJ1bmVkICovCiAJQnVmZmVyCQlidWZmZXI7CQkJLyogYnVmZmVyIHRv IGJlIHBydW5lZCAqLwogCisJLyoKKwkgKiBDYWxsZXJzIHNob3VsZCBwcm92aWRlIGEgcGlubmVk IHZtYnVmZmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhlYXAKKwkgKiBibG9jayBpbiBidWZmZXIu IFdlIHdpbGwgY2hlY2sgZm9yIGFuZCByZXBhaXIgYW55IGNvcnJ1cHRpb24gaW4gdGhlIFZNLgor CSAqLworCUJ1ZmZlcgkJdm1idWZmZXI7CisKIAkvKgogCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3 YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0byBzZXQgdGhlIFdBTCByZWNvcmQKIAkgKiBvcGNv ZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KQEAg LTMxOSw2ICszMjUsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlib29s CQlhbGxfZnJvemVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbjsKIAorCS8q CisJICogdm1iaXRzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgdm1idWZmZXIncyB2bWJpdHMgYXQgdGhl IGJlZ2lubmluZyBvZgorCSAqIHBydW5pbmcuIEl0IGlzIGNsZWFyZWQgaWYgVk0gY29ycnVwdGlv biBpcyBmb3VuZCBhbmQgY29ycmVjdGVkLgorCSAqLworCXVpbnQ4CQl2bWJpdHM7CisKIAkvKgog CSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVuc2FmZS4g IFRoaXMgaXMgc2V0IHRvCiAJICogJ3RydWUnLCBldmVuIGlmIHRoZSBwYWdlIGNvbnRhaW5zIExQ X0RFQUQgaXRlbXMuICBWQUNVVU0gd2lsbCByZW1vdmUKLS0gCjIuNDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0007-Add-pruning-fast-path-for-all-visible-and-all-fr.patch" Content-Disposition: attachment; filename="v35-0007-Add-pruning-fast-path-for-all-visible-and-all-fr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tis3i6 RnJvbSA3ZThlYTY4NGE0YzZlZTVkNGI3MTY5ZWMzMTk1YmU3NWU3NjE3MmU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI1IEZlYiAyMDI2IDE2OjQ4OjE5IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMDcvMThdIEFkZCBwcnVuaW5nIGZhc3QgcGF0aCBmb3IgYWxsLXZpc2libGUgYW5k CiBhbGwtZnJvemVuIHBhZ2VzCgpCZWNhdXNlIG9mIHRoZSBTS0lQX1BBR0VTX1RIUkVTSE9MRCBv cHRpbWl6YXRpb24gb3IgYSBzdGFsZSBwcnVuZSBYSUQsCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKCkgY2FuIGJlIGludm9rZWQgZm9yIHBhZ2VzIHdpdGggbm8gcHJ1bmluZyBvcgpmcmVlemlu ZyB3b3JrLiBUbyBhdm9pZCB0aGlzLCBpZiBhIHBhZ2UgaXMgYWxyZWFkeSBhbGwtZnJvemVuIG9y IGl0IGlzCmFsbC12aXNpYmxlIGFuZCBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgd2Ug Y2FuIGV4aXQgZWFybHkuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg fCA3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDczIGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGZhNDcwZjY2 M2I3Li43M2RiNDVmOGRmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE4 NCw2ICsxODQsNyBAQCBzdGF0aWMgdm9pZCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJ CQkJCQkgICBQcnVuZVN0YXRlICpwcnN0YXRlKTsKIHN0YXRpYyB2b2lkIGhlYXBfZml4X3ZtX2Nv cnJ1cHRpb24oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSk7CitzdGF0 aWMgdm9pZCBoZWFwX3BhZ2VfYnlwYXNzX3BydW5lX2ZyZWV6ZShQcnVuZVN0YXRlICpwcnN0YXRl LCBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCk7CiBzdGF0aWMgdm9pZCBwcnVuZV9mcmVlemVf cGxhbihQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICpvZmZfbG9j KTsKIHN0YXRpYyBIVFNWX1Jlc3VsdCBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0oUHJ1bmVT dGF0ZSAqcHJzdGF0ZSwKQEAgLTg4MCw2ICs4ODEsNjYgQEAgaGVhcF9maXhfdm1fY29ycnVwdGlv bihQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQogCXByc3RhdGUtPnZt Yml0cyA9IDA7CiB9CiAKKy8qCisgKiBJZiB0aGUgcGFnZSBpcyBhbHJlYWR5IGFsbC1mcm96ZW4s IG9yIGFscmVhZHkgYWxsLXZpc2libGUgYW5kIGZyZWV6aW5nCisgKiBpcyBub3QgYmVpbmcgYXR0 ZW1wdGVkLCB0aGVyZSBpcyBubyByZW1haW5pbmcgd29yayBhbmQgd2UgY2FuIGJ5cGFzcyB0aGUK KyAqIGV4cGVuc2l2ZSBvdmVyaGVhZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLgor ICoKKyAqIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBwYWdlIGhhcyBhIHN0YWxlIHBydW5lIGhp bnQsIG9yIGlmIFZBQ1VVTSBpcworICogc2Nhbm5pbmcgYW4gYWxyZWFkeSBhbGwtZnJvemVuIHBh Z2UgZHVlIHRvIFNLSVBfUEFHRVNfVEhSRVNIT0xELgorICoKKyAqIFRoZSBjYWxsZXIgbXVzdCBh bHJlYWR5IGhhdmUgZXhhbWluZWQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBzYXZlZCB0aGUKKyAq IHN0YXR1cyBmb3IgdGhlIHBhZ2UncyBWTSBiaXRzIGluIHByc3RhdGUtPnZtYml0cy4gQ2FsbGVy IG11c3QgaG9sZCBhCisgKiBjb250ZW50IGxvY2sgb24gdGhlIGhlYXAgcGFnZSBzaW5jZSBpdCB3 aWxsIGV4YW1pbmUgbGluZSBwb2ludGVycy4KKyAqCisgKiBCZWZvcmUgY2FsbGluZyBoZWFwX3Bh Z2VfYnlwYXNzX3BydW5lX2ZyZWV6ZSgpLCB0aGUgY2FsbGVyIHNob3VsZCBmaXJzdAorICogY2hl Y2sgZm9yIGFuZCBmaXggYW55IGRpc2NyZXBhbmN5IGJldHdlZW4gdGhlIHBhZ2UtbGV2ZWwgdmlz aWJpbGl0eSBoaW50CisgKiBhbmQgdGhlIHZpc2liaWxpdHkgbWFwLiBPdGhlcndpc2UsIHRoZSBm YXN0IHBhdGggd2lsbCBhbHdheXMgcHJldmVudCB1cworICogZnJvbSBnZXR0aW5nIHRoZW0gaW4g c3luYy4gTm90ZSB0aGF0IGlmIHRoZXJlIGFyZSB0dXBsZXMgb24gdGhlIHBhZ2UgdGhhdAorICog YXJlIG5vdCB2aXNpYmxlIHRvIGFsbCBidXQgdGhlIFZNIGlzIGluY29ycmVjdGx5IG1hcmtlZAor ICogYWxsLXZpc2libGUvYWxsLWZyb3plbiwgd2Ugd2lsbCBub3QgZ2V0IHRoZSBjaGFuY2UgdG8g Zml4IHRoYXQgY29ycnVwdGlvbgorICogd2hlbiB1c2luZyB0aGUgZmFzdCBwYXRoLgorICovCitz dGF0aWMgdm9pZAoraGVhcF9wYWdlX2J5cGFzc19wcnVuZV9mcmVlemUoUHJ1bmVTdGF0ZSAqcHJz dGF0ZSwgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQpCit7CisJT2Zmc2V0TnVtYmVyIG1heG9m ZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocHJzdGF0ZS0+cGFnZSk7CisJUGFnZQkJcGFnZSA9 IHByc3RhdGUtPnBhZ2U7CisKKwlBc3NlcnQocHJzdGF0ZS0+dm1iaXRzICYgVklTSUJJTElUWU1B UF9BTExfRlJPWkVOIHx8CisJCSAgIChwcnN0YXRlLT52bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFICYmCisJCQkhcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpKTsKKworCS8qIFdlJ2xs IGZpbGwgaW4gcHJlc3VsdCBmb3IgdGhlIGNhbGxlciAqLworCW1lbXNldChwcmVzdWx0LCAwLCBz aXplb2YoUHJ1bmVGcmVlemVSZXN1bHQpKTsKKworCS8qCisJICogU2luY2UgdGhlIHBhZ2UgaXMg YWxsLXZpc2libGUsIGEgY291bnQgb2YgdGhlIG5vcm1hbCBJdGVtSWRzIG9uIHRoZQorCSAqIHBh Z2Ugc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIHZhY3V1bSdzIGxpdmUgdHVwbGUgY291bnQuCisJ ICovCisJZm9yIChPZmZzZXROdW1iZXIgb2ZmID0gRmlyc3RPZmZzZXROdW1iZXI7CisJCSBvZmYg PD0gbWF4b2ZmOworCQkgb2ZmID0gT2Zmc2V0TnVtYmVyTmV4dChvZmYpKQorCXsKKwkJaWYgKEl0 ZW1JZElzTm9ybWFsKFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmKSkpCisJCQlwcnN0YXRlLT5saXZl X3R1cGxlcysrOworCX0KKworCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS0+bGl2ZV90 dXBsZXM7CisKKwkvKiBDbGVhciBhbnkgc3RhbGUgcHJ1bmUgaGludCAqLworCWlmIChUcmFuc2Fj dGlvbklkSXNWYWxpZChQYWdlR2V0UHJ1bmVYaWQocGFnZSkpKQorCXsKKwkJUGFnZUNsZWFyUHJ1 bmFibGUocGFnZSk7CisJCU1hcmtCdWZmZXJEaXJ0eUhpbnQocHJzdGF0ZS0+YnVmZmVyLCB0cnVl KTsKKwl9CisKKwlwcmVzdWx0LT52bWJpdHMgPSBwcnN0YXRlLT52bWJpdHM7CisKKwlpZiAoIVBh Z2VJc0VtcHR5KHBhZ2UpKQorCQlwcmVzdWx0LT5oYXN0dXAgPSB0cnVlOworfQorCiAvKgogICog UHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVw bGVzIG9uIHRoZQogICogc3BlY2lmaWVkIHBhZ2UuCkBAIC05NDMsNiArMTAwNCwxOCBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkhUGFn ZUlzQWxsVmlzaWJsZShwcnN0YXRlLnBhZ2UpKQogCQloZWFwX2ZpeF92bV9jb3JydXB0aW9uKCZw cnN0YXRlLCBJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAorCS8qCisJICogSWYgdGhlIHBhZ2UgaXMg YWxyZWFkeSBhbGwtZnJvemVuLCBvciBhbHJlYWR5IGFsbC12aXNpYmxlIHdoZW4gZnJlZXppbmcK KwkgKiBpcyBub3QgYmVpbmcgYXR0ZW1wdGVkLCB3ZSBjYW4gZXhpdCBlYXJseS4gRG8gdGhpcyBh ZnRlciBmaXhpbmcgYW55CisJICogZGlzY3JlcGFuY3kgYmV0d2VlbiB0aGUgcGFnZS1sZXZlbCB2 aXNpYmlsaXR5IGhpbnQgYW5kIHRoZSBWTS4KKwkgKi8KKwlpZiAocHJzdGF0ZS52bWJpdHMgJiBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4gfHwKKwkJKHByc3RhdGUudm1iaXRzICYgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSAmJiAhcHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkpCisJeworCQloZWFw X3BhZ2VfYnlwYXNzX3BydW5lX2ZyZWV6ZSgmcHJzdGF0ZSwgcHJlc3VsdCk7CisJCXJldHVybjsK Kwl9CisKIAkvKgogCSAqIEV4YW1pbmUgYWxsIGxpbmUgcG9pbnRlcnMgYW5kIHR1cGxlIHZpc2li aWxpdHkgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lCiAJICogd2hpY2ggbGluZSBwb2ludGVycyBz aG91bGQgY2hhbmdlIHN0YXRlIGFuZCB3aGljaCB0dXBsZXMgbWF5IGJlIGZyb3plbi4KLS0gCjIu NDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="UTF-8"; name="v35-0008-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v35-0008-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tiwx77 RnJvbSBmMjcxMjA5ZTNmZWI3NWY3OWU5NGI4M2MzZDU2NGU1ZDE0ZDFiOWJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDE2OjUxOjA1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMDgvMThdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKCkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQg cGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxlcycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2Ug Y2FuIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2 aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBhcmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUg WElEIGNob3NlbiBhdAp0aGUgc3RhcnQgb2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVz ZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2ggYWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0 aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhh dmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxz byBiZW5lZml0cyB2YWN1dW06IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heSBhZHZh bmNlCmR1cmluZyBhIHZhY3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lk ZXJlZCBhbGwtdmlzaWJsZS4KQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRk IGEgaGV1cmlzdGljIHRvIHVwZGF0ZQpHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVy aW5nIHZhY3V1bXMgb2YgbGFyZ2UgdGFibGVzLgoKT2xkZXN0WG1pbiBpcyBzdGlsbCB1c2VkIGZv ciBmcmVlemluZyBhbmQgYXMgYSBiYWNrc3RvcCB0byBlbnN1cmUgd2UKZG9uJ3QgZnJlZXplIGEg ZGVhZCB0dXBsZSB0aGF0IHdhc24ndCB5ZXQgcHJ1bmFibGUgYWNjb3JkaW5nIHRvCkdsb2JhbFZp c1N0YXRlIGluIHRoZSByYXJlIG9jY3VycmVuY2VzIHdoZXJlIEdsb2JhbFZpc1N0YXRlIG1vdmVz CmJhY2t3YXJkcy4KCkJlY2F1c2UgY29tcGFyaW5nIGEgdHJhbnNhY3Rpb24gSUQgYWdhaW5zdCBH bG9iYWxWaXNTdGF0ZSBpcyBtb3JlCmV4cGVuc2l2ZSB0aGFuIGNvbXBhcmluZyBhZ2FpbnN0IGEg c2luZ2xlIFhJRCwgd2UgZGVmZXIgdGhpcyBjaGVjayB1bnRpbAphZnRlciBzY2FubmluZyBhbGwg dHVwbGVzIG9uIHRoZSBwYWdlLiBUaGVyZWZvcmUsIHdlIHBlcmZvcm0gdGhlCkdsb2JhbFZpc1N0 YXRlIGNoZWNrIG9ubHkgb25jZSBwZXIgcGFnZS4gVGhpcyBpcyBzYWZlIGJlY2F1c2UKdmlzaWJp bGl0eV9jdXRvZmZfeGlkIHJlY29yZHMgdGhlIG5ld2VzdCBsaXZlIHhtaW4gb24gdGhlIHBhZ2U7 CmlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGlyZSBwYWdlIGlzIGFsbC12 aXNpYmxlLgoKVXNpbmcgR2xvYmFsVmlzU3RhdGUgbWVhbnMgb24tYWNjZXNzIHBydW5pbmcgY2Fu IGFsc28gbWFpbnRhaW4KdmlzaWJpbGl0eV9jdXRvZmZfeGlkLiBUaGlzIGFwcHJvYWNoIHdpbGwg cmVzdWx0IGluIGV4YW1pbmluZyBtb3JlIHR1cGxlCnhtaW5zIHRoYW4gYmVmb3JlOyBob3dldmVy LCB0aGUgYWRkaXRpb25hbCBjb3N0IHNob3VsZCBub3QgYmUKc2lnbmlmaWNhbnQuIEFuZCBkb2lu ZyBzbyB3aWxsIGVuYWJsZSB1cyB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIG9uCmFjY2VzcyBp biB0aGUgZnV0dXJlLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5A Z21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRl PgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L2JxYzRraDVtaWRmbjQ0Z25qaXFlejNianF2NHpv Z3lkZ3V2ZG40NDZyaXc0NWpjZjN5JTQwNGV6NjZpbDdlYnZrI2M3NTVlZjE1MTUwN2FiYTU4NDcx ZmZhY2E2MDdlNDkzCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxp dHkuYyB8IDIyICsrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICB8IDM3ICsrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jICAgICAgICB8IDUxICsrKysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICB8ICAyICsKIDQgZmlsZXMgY2hhbmdlZCwg NzIgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKaW5kZXggNzVhZTI2OGQ3NTMuLmFlZTg4OTQ3MzkzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKQEAgLTEwNjAs NiArMTA2MCwyOCBAQCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogV3JhcHBl ciBhcm91bmQgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgZm9yIHVzZSB3aGVuIGV4YW1p bmluZyBsaXZlCisgKiB0dXBsZXMuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gWElEIG1heSBi ZSBjb25zaWRlcmVkIHJ1bm5pbmcgYnkgYXQgbGVhc3QKKyAqIG9uZSBzbmFwc2hvdC4KKyAqCisg KiBUaGlzIGZ1bmN0aW9uIGFsb25lIGlzIGluc3VmZmljaWVudCB0byBkZXRlcm1pbmUgdHVwbGUg dmlzaWJpbGl0eTsgY2FsbGVycworICogbXVzdCBhbHNvIGNvbnNpZGVyIHRoZSBYSUQncyBjb21t aXQgc3RhdHVzLiBJdHMgcHVycG9zZSBpcyBwdXJlbHkgc2VtYW50aWM6CisgKiB3aGVuIGFwcGxp ZWQgdG8gbGl2ZSB0dXBsZXMsIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIGlzIGNoZWNr aW5nCisgKiB3aGV0aGVyIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gaXMgc3RpbGwgY29uc2lk ZXJlZCBydW5uaW5nLCBub3Qgd2hldGhlcgorICogdGhlIHR1cGxlIGlzIHJlbW92YWJsZS4gTGl2 ZSB0dXBsZXMgYXJlLCBieSBkZWZpbml0aW9uLCBub3QgcmVtb3ZhYmxlLCBidXQKKyAqIHRoZSBz bmFwc2hvdCBjcml0ZXJpYSBmb3Ig4oCcdHJhbnNhY3Rpb24gc3RpbGwgcnVubmluZ+KAnSBhcmUg aWRlbnRpY2FsIHRvCisgKiB0aG9zZSB1c2VkIGZvciByZW1vdmFsIFhJRHMuCisgKgorICogU2Vl IHRoZSBjb21tZW50IGFib3ZlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVtGdWxsXVhpZCgpIGZv ciBkZXRhaWxzIG9uIHRoZQorICogcmVxdWlyZWQgcHJlY29uZGl0aW9ucyBmb3IgY2FsbGluZyB0 aGlzIGZ1bmN0aW9uLgorICovCitib29sCitHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKEds b2JhbFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJcmV0dXJuICFHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc3RhdGUsIHhpZCk7Cit9CisKIC8qCiAgKiBXb3JrIGhv cnNlIGZvciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0gYW5kIHNpbWlsYXIgcm91dGluZXMuCiAg KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA3M2RiNDVmOGRmZC4uN2I3Mjgw NGEzZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xMDI0LDYgKzEwMjQs MTcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAkgKi8KIAlwcnVuZV9mcmVlemVfcGxhbigmcHJzdGF0ZSwgb2ZmX2xvYyk7CiAKKwkvKgor CSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYg dGhlIG5ld2VzdCB4bWluCisJICogYW1vbmdzdCB0aGVtIG1heSBiZSBjb25zaWRlcmVkIHJ1bm5p bmcgYnkgYW55IHNuYXBzaG90LCB0aGUgcGFnZSBjYW5ub3QKKwkgKiBiZSBhbGwtdmlzaWJsZS4K KwkgKi8KKwlpZiAocHJzdGF0ZS5zZXRfYWxsX3Zpc2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElz Tm9ybWFsKHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgorCQlHbG9iYWxWaXNUZXN0 WGlkTWF5YmVSdW5uaW5nKHByc3RhdGUudmlzdGVzdCwKKwkJCQkJCQkJCSBwcnN0YXRlLnZpc2li aWxpdHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuc2V0X2FsbF92aXNpYmxlID0gcHJzdGF0ZS5z ZXRfYWxsX2Zyb3plbiA9IGZhbHNlOworCiAJLyoKIAkgKiBJZiBjaGVja3N1bXMgYXJlIGVuYWJs ZWQsIGNhbGxpbmcgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgd2hpbGUKIAkgKiBjaGVj a2luZyB0dXBsZSB2aXNpYmlsaXR5IGluZm9ybWF0aW9uIGluIHBydW5lX2ZyZWV6ZV9wbGFuKCkg bWF5IGhhdmUKQEAgLTE2OTIsMjkgKzE3MDMsMTUgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQog CQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVk LiAgQnV0IGlzIGl0IG9sZCBlbm91Z2gKLQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMgaXQgYXMg Y29tbWl0dGVkPyAgQSBGcm96ZW5UcmFuc2FjdGlvbklkCi0JCQkJICogaXMgc2VlbiBhcyBjb21t aXR0ZWQgdG8gZXZlcnlvbmUuICBPdGhlcndpc2UsIHdlIGNoZWNrIGlmCi0JCQkJICogdGhlcmUg aXMgYSBzbmFwc2hvdCB0aGF0IGNvbnNpZGVycyB0aGlzIHhpZCB0byBzdGlsbCBiZQotCQkJCSAq IHJ1bm5pbmcsIGFuZCBpZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlIHBhZ2UgYWxsLXZpc2li bGUuCisJCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQgd2UgZG9u J3Qga25vdyBpZiBpdAorCQkJCSAqIGlzIG9sZCBlbm91Z2ggdGhhdCBldmVyeW9uZSBzZWVzIGl0 IGFzIGNvbW1pdHRlZC4gTGF0ZXIsCisJCQkJICogYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIHR1 cGxlcyBvbiB0aGUgcGFnZSwgd2UnbGwgY2hlY2sgaWYKKwkJCQkgKiB0aGVyZSBpcyBhbnkgc25h cHNob3QgdGhhdCBzdGlsbCBjb25zaWRlcnMgdGhlIG5ld2VzdCB4aWQKKwkJCQkgKiBvbiB0aGUg cGFnZSB0byBiZSBydW5uaW5nLiBJZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlCisJCQkJICog cGFnZSBhbGwtdmlzaWJsZS4KIAkJCQkgKi8KIAkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0 WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHByc3RhdGUt PmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdlIG9ubHkgdXBkYXRlICdz ZXRfYWxsX3Zpc2libGUnIGFuZCAnc2V0X2FsbF9mcm96ZW4nIHdoZW4KLQkJCQkgKiBmcmVlemlu ZyBpcyByZXF1ZXN0ZWQuIFdlIGNvdWxkIHVzZQotCQkJCSAqIEdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZVhpZCBpbnN0ZWFkLCBpZiBhIG5vbi1mcmVlemluZwotCQkJCSAqIGNhbGxlciB3YW50ZWQg dG8gc2V0IHRoZSBWTSBiaXQuCi0JCQkJICovCi0JCQkJQXNzZXJ0KHByc3RhdGUtPmN1dG9mZnMp OwotCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIHByc3RhdGUtPmN1dG9mZnMt Pk9sZGVzdFhtaW4pKQotCQkJCXsKLQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFs c2U7Ci0JCQkJCXByc3RhdGUtPnNldF9hbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCWJyZWFrOwot CQkJCX0KLQogCQkJCS8qIFRyYWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJCQkJaWYgKFRy YW5zYWN0aW9uSWRGb2xsb3dzKHhtaW4sIHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkg JiYKIAkJCQkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhtaW4pKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCmluZGV4IDBhMGFhOGU1YTllLi42Yzc4MDdkNWJkMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDYwLDEzICs0NjAsMTMgQEAgc3RhdGljIHZvaWQg ZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAKICNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCiBzdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwK KwkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCSBib29sICphbGxf ZnJvemVuLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwK IAkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKICNlbmRpZgogc3RhdGlj IGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKLQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJ ICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpk ZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAg IGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0yMDUzLDEzICsyMDUzLDEwIEBAIGxhenlfc2Nhbl9wcnVu ZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCUFzc2VydChwcmVzdWx0LmxwZGVhZF9pdGVtcyA9PSAw KTsKIAogCQlBc3NlcnQoaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYs Ci0JCQkJCQkJCQkJdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVu LAorCQkJCQkJCQkJCXZhY3JlbC0+dmlzdGVzdCwgJmRlYnVnX2FsbF9mcm96ZW4sCiAJCQkJCQkJ CQkJJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSk7CiAKIAkJQXNzZXJ0KHByZXN1bHQu YWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlBc3NlcnQoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9PSBwcmVzdWx0 LnZtX2NvbmZsaWN0X2hvcml6b24pOwogCX0KICNlbmRpZgogCkBAIC0yODE1LDcgKzI4MTIsNyBA QCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBi bGtubywgQnVmZmVyIGJ1ZmZlciwKIAkgKiBkb25lIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rp b24uCiAJICovCiAJaWYgKGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSh2YWNyZWwtPnJl bCwgYnVmZmVyLAotCQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJ CQkJCQkgICB2YWNyZWwtPnZpc3Rlc3QsCiAJCQkJCQkJCQkgICBkZWFkb2Zmc2V0cywgbnVtX29m ZnNldHMsCiAJCQkJCQkJCQkgICAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwK IAkJCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSkpCkBAIC0zNTc2LDE0ICszNTczLDE0IEBAIGRl YWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiAgKi8KIHN0YXRpYyBib29sCiBo ZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJ IFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVz dCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLAogCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2li aWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQog ewogCiAJcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJ CQkJCQkJCQkgIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICB2aXN0ZXN0LAogCQkJCQkJCQkJCSAg TlVMTCwgMCwKIAkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5 X2N1dG9mZl94aWQsCkBAIC0zNjA0LDcgKzM2MDEsNyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYWdl IGlzIGFsbC12aXNpYmxlIG90aGVyIHRoYW4gdGhlIHByb3ZpZGVkCiAgKiBkZWFkb2Zmc2V0cyBh bmQgZmFsc2Ugb3RoZXJ3aXNlLgogICoKLSAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1p bmUgdmlzaWJpbGl0eS4KKyAqIHZpc3Rlc3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0 eS4KICAqCiAgKiBPdXRwdXQgcGFyYW1ldGVyczoKICAqCkBAIC0zNjIzLDcgKzM2MjAsNyBAQCBo ZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogICovCiBz dGF0aWMgYm9vbAogaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJ ICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFk b2Zmc2V0cywKIAkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGJvb2wgKmFs bF9mcm96ZW4sCkBAIC0zNzA0LDcgKzM3MDEsNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zp c2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25J ZCB4bWluOwogCi0JCQkJCS8qIENoZWNrIGNvbW1lbnRzIGluIGxhenlfc2Nhbl9wcnVuZS4gKi8K KwkJCQkJLyogQ2hlY2sgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCBjb21t ZW50cyAqLwogCQkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0ZWQodHVwbGUudF9k YXRhKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zpc2libGUgPSBmYWxzZTsKQEAgLTM3MTMsMTYgKzM3 MTAsMTcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKIAkJCQkJfQogCiAJCQkJCS8qCi0JCQkJCSAqIFRoZSBpbnNlcnRlciBkZWZpbml0 ZWx5IGNvbW1pdHRlZC4gQnV0IGlzIGl0IG9sZCBlbm91Z2gKLQkJCQkJICogdGhhdCBldmVyeW9u ZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KKwkJCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkg Y29tbWl0dGVkLiBCdXQgd2UgZG9uJ3Qga25vdyBpZgorCQkJCQkgKiBpdCBpcyBvbGQgZW5vdWdo IHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBjb21taXR0ZWQuCisJCQkJCSAqIERvbid0IGNoZWNr IHRoYXQgbm93LgorCQkJCQkgKgorCQkJCQkgKiBJZiB3ZSBzY2FuIGFsbCB0dXBsZXMgd2l0aG91 dCBmaW5kaW5nIG9uZSB0aGF0IHByZXZlbnRzCisJCQkJCSAqIHRoZSBwYWdlIGZyb20gYmVpbmcg YWxsLXZpc2libGUsIHdlIHRoZW4gY2hlY2sgd2hldGhlcgorCQkJCQkgKiBhbnkgc25hcHNob3Qg c3RpbGwgY29uc2lkZXJzIHRoZSBuZXdlc3QgWElEIG9uIHRoZSBwYWdlCisJCQkJCSAqIHRvIGJl IHJ1bm5pbmcuIEluIHRoYXQgY2FzZSwgdGhlIHBhZ2UgaXMgbm90IGNvbnNpZGVyZWQKKwkJCQkJ ICogYWxsLXZpc2libGUuCiAJCQkJCSAqLwogCQkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0 WG1pbih0dXBsZS50X2RhdGEpOwotCQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWlu LCBPbGRlc3RYbWluKSkKLQkJCQkJewotCQkJCQkJYWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJCQkJ CSphbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCQlicmVhazsKLQkJCQkJfQogCiAJCQkJCS8qIFRy YWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJCQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93 cyh4bWluLCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgpAQCAtMzc1MSw2ICszNzQ5LDE5IEBA IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYs CiAJCX0KIAl9CQkJCQkJCS8qIHNjYW4gYWxvbmcgcGFnZSAqLwogCisJLyoKKwkgKiBBZnRlciBw cm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UsIGlmIHRoZSBuZXdlc3Qg eG1pbgorCSAqIGFtb25nIHRoZW0gbWF5IHN0aWxsIGJlIGNvbnNpZGVyZWQgcnVubmluZyBieSBh bnkgc25hcHNob3QsIHRoZSBwYWdlCisJICogY2Fubm90IGJlIGFsbC12aXNpYmxlLgorCSAqLwor CWlmIChhbGxfdmlzaWJsZSAmJgorCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwoKnZpc2liaWxpdHlf Y3V0b2ZmX3hpZCkgJiYKKwkJR2xvYmFsVmlzVGVzdFhpZE1heWJlUnVubmluZyh2aXN0ZXN0LCAq dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKKwl7CisJCWFsbF92aXNpYmxlID0gZmFsc2U7CisJCSph bGxfZnJvemVuID0gZmFsc2U7CisJfQorCiAJLyogQ2xlYXIgdGhlIG9mZnNldCBpbmZvcm1hdGlv biBvbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIHRoZSBnaXZlbiBwYWdlLiAqLwogCSpsb2dnaW5nX29m Zm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA5ZGI5MmM3 ZGI4YS4uZTQwMWRkNTJlMjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQ3NCw2ICs0NzQsOCBAQCBl eHRlcm4gVE1fUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1VwZGF0ZShIZWFwVHVwbGUgaHR1cCwg Q29tbWFuZElkIGN1cmNpZCwKIAkJCQkJCQkJCQkgIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIEhU U1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNh Y3Rpb25JZCBPbGRlc3RYbWluLAogCQkJCQkJCQkJCQlCdWZmZXIgYnVmZmVyKTsKKworZXh0ZXJu IGJvb2wgR2xvYmFsVmlzVGVzdFhpZE1heWJlUnVubmluZyhHbG9iYWxWaXNTdGF0ZSAqc3RhdGUs IFRyYW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW1Ib3Jpem9uKEhlYXBUdXBsZSBodHVwLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCAqZGVhZF9hZnRlcik7CiBleHRlcm4gdm9pZCBIZWFwVHVwbGVT ZXRIaW50Qml0cyhIZWFwVHVwbGVIZWFkZXIgdHVwbGUsIEJ1ZmZlciBidWZmZXIsCi0tIAoyLjQz LjAKCg== --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0009-Keep-newest-live-XID-up-to-date-even-if-page-not.patch" Content-Disposition: attachment; filename="v35-0009-Keep-newest-live-XID-up-to-date-even-if-page-not.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tj1c68 RnJvbSBmNzBkNTIxMDNlOGY2NjVkZTkyYmQ1MzFmZjNhMjYxYjAxNDJkMjBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI4IEZlYiAyMDI2IDE2OjA2OjUxIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMDkvMThdIEtlZXAgbmV3ZXN0IGxpdmUgWElEIHVwLXRvLWRhdGUgZXZlbiBpZiBw YWdlIG5vdAogYWxsLXZpc2libGUKCkR1cmluZyBwcnVuaW5nLCB3ZSBrZWVwIHRyYWNrIG9mIHRo ZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUKcGFnZSB2aXNpYmxlIHRvIGFsbCBy dW5uaW5nIGFuZCBmdXR1cmUgdHJhbnNhY3Rpb25zIHNvIHRoYXQgd2UgY2FuIHVzZQppdCBsYXRl ciBhcyB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGlm IHRoZQpwYWdlIHR1cm5zIG91dCB0byBiZSBhbGwtdmlzaWJsZS4KClByZXZpb3VzbHksIHdlIHN0 b3BwZWQgdXBkYXRpbmcgdGhpcyB2YWx1ZSBvbmNlIHdlIGRldGVybWluZWQgdGhlIHBhZ2UKd2Fz IG5vdCBhbGwtdmlzaWJsZS4gSG93ZXZlciwgbWFpbnRhaW5pbmcgaXQgZXZlbiB3aGVuIHRoZSBw YWdlIGlzIG5vdAphbGwtdmlzaWJsZSBpcyBpbmV4cGVuc2l2ZSBhbmQgbWFrZXMgdGhlIHNuYXBz aG90IGNvbmZsaWN0IGhvcml6b24KY2FsY3VsYXRpb24gY2xlYXJlci4gVGhpcyBndWFyYW50ZWVz IGl0IHdvbid0IGNvbnRhaW4gYSBzdGFsZSB2YWx1ZS4KClNpbmNlIHdlJ2xsIGtlZXAgaXQgdXAg dG8gZGF0ZSBhbGwgdGhlIHRpbWUgbm93IGFueXdheSwgdGhlcmUncyBubwpyZWFzb24gbm90IHRv IG1haW50YWluIGFsbF92aXNpYmxlIGZvciBvbi1hY2Nlc3MgcHJ1bmluZy4gVGhpcyB3aWxsCmFs bG93IHVzIHRvIHNldCB0aGUgVk0gb24tYWNjZXNzIGluIHRoZSBmdXR1cmUuCgpBdXRob3I6IE1l bGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkVhcmxpZXIgdmVyc2lvbiByZXZpZXdl ZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9icWM0a2g1bWlkZm40NGduamlxZXozYmpxdjR6b2d5ZGd1dmRuNDQ2cml3 NDVqY2YzeSU0MDRlejY2aWw3ZWJ2awotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jICB8IDEyNyArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8ICAzMCArKystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDY1 IGluc2VydGlvbnMoKyksIDkyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMKaW5kZXggN2I3MjgwNGEzZTUuLmRkNzMxZjY0YmM2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYwpAQCAtMTI5LDYgKzEyOSw5IEBAIHR5cGVkZWYgc3RydWN0CiAJLyogQml0 cyBpbiB0aGUgdm1idWZmZXIgZm9yIHRoaXMgaGVhcCBwYWdlICovCiAJdWludDgJCXZtYml0czsK IAorCS8qIFRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSAqLworCVRy YW5zYWN0aW9uSWQgbmV3ZXN0X2xpdmVfeGlkOworCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAJICogSW5mb3JtYXRpb24gYWJvdXQg d2hhdCB3YXMgZG9uZQogCSAqCkBAIC0xNjAsMTEgKzE2Myw2IEBAIHR5cGVkZWYgc3RydWN0CiAJ ICogYWxsLWZyb3plbiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0 aGlzIHBhZ2UgYWZ0ZXIKIAkgKiBwcnVuaW5nLgogCSAqCi0JICogdmlzaWJpbGl0eV9jdXRvZmZf eGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4KLQkgKiBU aGUgY2FsbGVyIGNhbiB1c2UgaXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24sIHdoZW4gc2V0dGlu ZyB0aGUgVk0KLQkgKiBiaXRzLiAgSXQgaXMgb25seSB2YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1 cGxlcywgYW5kIHNldF9hbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KLQkgKgogCSAqIE5PVEU6IHNl dF9hbGxfdmlzaWJsZSBhbmQgc2V0X2FsbF9mcm96ZW4gaW5pdGlhbGx5IGRvbid0IGluY2x1ZGUK IAkgKiBMUF9ERUFEIGl0ZW1zLiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoKSB0bwogCSAqIHVzZSB0aGVtIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGZyZWV6 ZSB0aGUgcGFnZSBvciBub3QuICBUaGUKQEAgLTE3NCw3ICsxNzIsNiBAQCB0eXBlZGVmIHN0cnVj dAogCSAqLwogCWJvb2wJCXNldF9hbGxfdmlzaWJsZTsKIAlib29sCQlzZXRfYWxsX2Zyb3plbjsK LQlUcmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKIH0gUHJ1bmVTdGF0ZTsKIAog LyogTG9jYWwgZnVuY3Rpb25zICovCkBAIC00MzMsNTMgKzQzMCwzNSBAQCBwcnVuZV9mcmVlemVf c2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcnN0YXRlLT5kZWFkb2Zmc2V0cyA9 IHByZXN1bHQtPmRlYWRvZmZzZXRzOwogCiAJLyoKLQkgKiBWYWN1dW0gbWF5IHVwZGF0ZSB0aGUg Vk0gYWZ0ZXIgd2UncmUgZG9uZS4gIFdlIGNhbiBrZWVwIHRyYWNrIG9mCi0JICogd2hldGhlciB0 aGUgcGFnZSB3aWxsIGJlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGFmdGVyIHBydW5pbmcg YW5kCi0JICogZnJlZXppbmcgdG8gaGVscCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCi0JICoKLQkg KiBDdXJyZW50bHksIG9ubHkgVkFDVVVNIHNldHMgdGhlIFZNIGJpdHMuICBUbyBzYXZlIHRoZSBl ZmZvcnQsIG9ubHkgZG8KLQkgKiB0aGUgYm9va2tlZXBpbmcgaWYgdGhlIGNhbGxlciBuZWVkcyBp dC4gIEN1cnJlbnRseSwgdGhhdCdzIHRpZWQgdG8KLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpF LCBidXQgaXQgY291bGQgYmUgYSBzZXBhcmF0ZSBmbGFnIGlmIHlvdSB3YW50ZWQKLQkgKiB0byB1 cGRhdGUgdGhlIFZNIGJpdHMgd2l0aG91dCBhbHNvIGZyZWV6aW5nIG9yIGZyZWV6ZSB3aXRob3V0 IGFsc28KLQkgKiBzZXR0aW5nIHRoZSBWTSBiaXRzLgorCSAqIFdlIHRyYWNrIHdoZXRoZXIgdGhl IHBhZ2Ugd2lsbCBiZSBhbGwtdmlzaWJsZS9hbGwtZnJvemVuIGF0IHRoZSBlbmQgb2YKKwkgKiBw cnVuaW5nIGFuZCBmcmVlemluZy4gV2hpbGUgZXhhbWluaW5nIHR1cGxlIHZpc2liaWxpdHksIHdl J2xsIHNldAorCSAqIHNldF9hbGxfdmlzaWJsZSB0byBmYWxzZSBpZiB0aGVyZSBhcmUgdHVwbGVz IG9uIHRoZSBwYWdlIG5vdCB2aXNpYmxlIHRvCisJICogYWxsIHJ1bm5pbmcgYW5kIGZ1dHVyZSB0 cmFuc2FjdGlvbnMuIHNldF9hbGxfdmlzaWJsZSBpcyBhbHdheXMKKwkgKiBtYWludGFpbmVkIGJ1 dCBvbmx5IFZBQ1VVTSB3aWxsIHNldCB0aGUgVk0gaWYgdGhlIHBhZ2UgZW5kcyB1cCBiZWluZwor CSAqIGFsbC12aXNpYmxlLgogCSAqCi0JICogSW4gYWRkaXRpb24gdG8gdGVsbGluZyB0aGUgY2Fs bGVyIHdoZXRoZXIgaXQgY2FuIHNldCB0aGUgVk0gYml0LCB3ZQotCSAqIGFsc28gdXNlICdzZXRf YWxsX3Zpc2libGUnIGFuZCAnc2V0X2FsbF9mcm96ZW4nIGZvciBvdXIgb3duCi0JICogZGVjaXNp b24tbWFraW5nLiBJZiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNvbWUgZnJvemVuLCB3ZSBjb25z aWRlcgotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nIHR1cGxlcy4gIFdlIHdpbGwgbm90 IGJlIGFibGUgdG8gZnJlZXplIHRoZQotCSAqIHdob2xlIHBhZ2UgaWYgdGhlcmUgYXJlIHR1cGxl cyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lCi0JICogb3IgaWYgdGhl cmUgYXJlIGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIs IGRlYWQKLQkgKiB0dXBsZXMgd2hpY2ggd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFj dXVtaW5nIHNob3VsZCBub3QKLQkgKiBwcmVjbHVkZSB1cyBmcm9tIG9wcG9ydHVuaXN0aWNhbGx5 IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbwotCSAqIG5vdCBpbW1lZGlhdGVseSBj bGVhciBzZXRfYWxsX3Zpc2libGUgYW5kIHNldF9hbGxfZnJvemVuIHdoZW4gd2Ugc2VlCi0JICog TFBfREVBRCBpdGVtcy4gIFdlIGZpeCB0aGF0IGFmdGVyIHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50 ZXJzLiBXZSBtdXN0Ci0JICogY29ycmVjdCBzZXRfYWxsX3Zpc2libGUgYW5kIHNldF9hbGxfZnJv emVuIGJlZm9yZSB3ZSByZXR1cm4gdGhlbSB0byB0aGUKLQkgKiBjYWxsZXIsIHNvIHRoYXQgdGhl IGNhbGxlciBkb2Vzbid0IHNldCB0aGUgVk0gYml0cyBpbmNvcnJlY3RseS4KKwkgKiBXZSBhbHNv IGtlZXAgdHJhY2sgb2YgdGhlIG5ld2VzdCBsaXZlIFhJRCwgd2hpY2ggaXMgdXNlZCB0byBjYWxj dWxhdGUKKwkgKiB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBmb3IgYSBXQUwgcmVjb3Jk IHNldHRpbmcgdGhlIFZNLgogCSAqLwotCWlmIChwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKLQl7 Ci0JCXByc3RhdGUtPnNldF9hbGxfdmlzaWJsZSA9IHRydWU7Ci0JCXByc3RhdGUtPnNldF9hbGxf ZnJvemVuID0gdHJ1ZTsKLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICogSW5pdGlhbGl6aW5nIHRv IGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUgd29yayB0byB1cGRhdGUgdGhlbSBpbgotCQkgKiBo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCi0JCSAqLwotCQlwcnN0YXRl LT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBm YWxzZTsKLQl9CisJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gdHJ1ZTsKKwlwcnN0YXRlLT5u ZXdlc3RfbGl2ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogCS8qCi0JICogVGhlIHZp c2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24g dGhlCi0JICogcGFnZS4gIEluIHRoZSBjb21tb24gY2FzZSwgdGhpcyB3aWxsIGJlIHNldCBhcyB0 aGUgY29uZmxpY3QgaG9yaXpvbiB0aGUKLQkgKiBjYWxsZXIgY2FuIHVzZSBmb3IgdXBkYXRpbmcg dGhlIFZNLiAgSWYsIGF0IHRoZSBlbmQgb2YgZnJlZXppbmcgYW5kCi0JICogcHJ1bmluZywgdGhl IHBhZ2UgaXMgYWxsLWZyb3plbiwgdGhlcmUgaXMgbm8gcG9zc2liaWxpdHkgdGhhdCBhbnkKLQkg KiBydW5uaW5nIHRyYW5zYWN0aW9uIG9uIHRoZSBzdGFuZGJ5IGRvZXMgbm90IHNlZSB0dXBsZXMg b24gdGhlIHBhZ2UgYXMKLQkgKiBhbGwtdmlzaWJsZSwgc28gdGhlIGNvbmZsaWN0IGhvcml6b24g cmVtYWlucyBJbnZhbGlkVHJhbnNhY3Rpb25JZC4KKwkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVN IHBlcmZvcm1zIGZyZWV6aW5nLCBidXQgb3RoZXIgY2FsbGVycyBtYXkgaW4gdGhlCisJICogZnV0 dXJlLiBPdGhlciBjYWxsZXJzIG11c3QgaW5pdGlhbGl6ZSBwcnN0YXRlLmFsbF9mcm96ZW4gdG8g ZmFsc2UsCisJICogc2luY2Ugd2Ugd2lsbCBub3QgY2FsbCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1 cGxlKCkgZm9yIGVhY2ggdHVwbGUuCisJICoKKwkgKiBXZSBvbmx5IGNvbnNpZGVyIG9wcG9ydHVu aXN0aWMgZnJlZXppbmcgaWYgdGhlIHBhZ2Ugd291bGQgYmVjb21lCisJICogYWxsLWZyb3plbiwg b3IgaWYgaXQgd291bGQgYmUgYWxsLWZyb3plbiBleGNlcHQgZm9yIGRlYWQgdHVwbGVzIHRoYXQK KwkgKiBWQUNVVU0gd2lsbCByZW1vdmUuCisJICoKKwkgKiBEZWFkIHR1cGxlcyB0aGF0IHdpbGwg YmUgcmVtb3ZlZCBieSB0aGUgZW5kIG9mIHZhY3V1bSBzaG91bGQgbm90CisJICogcHJldmVudCBv cHBvcnR1bmlzdGljIGZyZWV6aW5nLiBUaGVyZWZvcmUsIHdlIGRvIG5vdCBjbGVhcgorCSAqIHNl dF9hbGxfdmlzaWJsZSBhbmQgc2V0X2FsbF9mcm96ZW4gd2hlbiB3ZSBlbmNvdW50ZXIgTFBfREVB RCBpdGVtcy4KKwkgKiBJbnN0ZWFkLCB3ZSBjb3JyZWN0IHRoZW0gYWZ0ZXIgZGVjaWRpbmcgd2hl dGhlciB0byBmcmVlemUsIGJ1dCBiZWZvcmUKKwkgKiB1cGRhdGluZyB0aGUgVk0sIHRvIGF2b2lk IHNldHRpbmcgdGhlIFZNIGJpdHMgaW5jb3JyZWN0bHkuCiAJICovCi0JcHJzdGF0ZS0+dmlzaWJp bGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJcHJzdGF0ZS0+c2V0X2Fs bF9mcm96ZW4gPSBwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA/IHRydWUgOiBmYWxzZTsKIH0KIAog LyoKQEAgLTcwOSw3ICs2ODgsNiBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoYm9vbCBkaWRfdHVw bGVfaGludF9mcGksCiAJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCUFzc2Vy dCghcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA9PSAwKTsKLQkJ QXNzZXJ0KHByc3RhdGUtPmxwZGVhZF9pdGVtcyA9PSAwIHx8ICFwcnN0YXRlLT5zZXRfYWxsX3Zp c2libGUpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC05NjIsOSArOTQwLDggQEAgaGVhcF9w YWdlX2J5cGFzc19wcnVuZV9mcmVlemUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgUHJ1bmVGcmVlemVS ZXN1bHQgKnByZXN1bHQpCiAgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBwYXNz ZWQsIHdlIGFsc28gc2V0CiAgKiBwcmVzdWx0LT5zZXRfYWxsX3Zpc2libGUgYW5kIHByZXN1bHQt PnNldF9hbGxfZnJvemVuIGFmdGVyIGRldGVybWluaW5nCiAgKiB3aGV0aGVyIG9yIG5vdCB0byBv cHBvcnR1bmlzdGljYWxseSBmcmVlemUsIHRvIGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbgot ICogYmUgc2V0LiAgVGhleSBhcmUgYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BB R0VfUFJVTkVfRlJFRVpFCi0gKiBvcHRpb24gaXMgbm90IHBhc3NlZCwgYmVjYXVzZSBhdCB0aGUg bW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28gZnJlZXplCi0gKiBuZWVkIHRoYXQgaW5mb3Jt YXRpb24uCisgKiBiZSBzZXQuICdhbGwtZnJvemVuJyBpcyBhbHdheXMgc2V0IHRvIGZhbHNlIHdo ZW4gdGhlIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUKKyAqIG9wdGlvbiBpcyBub3QgcGFzc2VkLgog ICoKICAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVkIGJ5IGNhbGxl cnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgogICogdHVwbGVzIHJlbW92ZWQgYW5kIHRoZSBvZmZz ZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KQEAgLTEwMzAsOSAr MTAwNyw5IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpw YXJhbXMsCiAJICogYmUgYWxsLXZpc2libGUuCiAJICovCiAJaWYgKHByc3RhdGUuc2V0X2FsbF92 aXNpYmxlICYmCi0JCVRyYW5zYWN0aW9uSWRJc05vcm1hbChwcnN0YXRlLnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCkgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHByc3RhdGUubmV3ZXN0X2xpdmVf eGlkKSAmJgogCQlHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKHByc3RhdGUudmlzdGVzdCwK LQkJCQkJCQkJCSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCQkJCQkJCQkgcHJz dGF0ZS5uZXdlc3RfbGl2ZV94aWQpKQogCQlwcnN0YXRlLnNldF9hbGxfdmlzaWJsZSA9IHByc3Rh dGUuc2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKIAogCS8qCkBAIC0xMTg0LDcgKzExNjEsNyBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCWlm IChwcmVzdWx0LT5hbGxfZnJvemVuKQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJZWxzZQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jp em9uID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJCXByZXN1bHQtPnZtX2NvbmZs aWN0X2hvcml6b24gPSBwcnN0YXRlLm5ld2VzdF9saXZlX3hpZDsKIAogCXByZXN1bHQtPmxwZGVh ZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zm c2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KQEAgLTE2NDQsNiArMTYyMSw3IEBA IHN0YXRpYyB2b2lkCiBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBydW5l U3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCiB7CiAJSGVhcFR1cGxlSGVhZGVy IGh0dXA7CisJVHJhbnNhY3Rpb25JZCB4bWluOwogCVBhZ2UJCXBhZ2UgPSBwcnN0YXRlLT5wYWdl OwogCiAJQXNzZXJ0KCFwcnN0YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSk7CkBAIC0xNjkxLDMyICsx NjY5LDI3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSkKIAkJCSAqIFNlZSBTZXRIaW50Qml0cyBm b3IgbW9yZSBpbmZvLiAgQ2hlY2sgdGhhdCB0aGUgdHVwbGUgaXMgaGludGVkCiAJCQkgKiB4bWlu LWNvbW1pdHRlZCBiZWNhdXNlIG9mIHRoYXQuCiAJCQkgKi8KLQkJCWlmIChwcnN0YXRlLT5zZXRf YWxsX3Zpc2libGUpCisJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0ZWQoaHR1cCkp CiAJCQl7Ci0JCQkJVHJhbnNhY3Rpb25JZCB4bWluOworCQkJCXByc3RhdGUtPnNldF9hbGxfdmlz aWJsZSA9IGZhbHNlOworCQkJCXByc3RhdGUtPnNldF9hbGxfZnJvemVuID0gZmFsc2U7CisJCQkJ YnJlYWs7CisJCQl9CiAKLQkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0ZWQoaHR1 cCkpCi0JCQkJewotCQkJCQlwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJCQkJ cHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQorCQkJ LyoKKwkJCSAqIFRoZSBpbnNlcnRlciBkZWZpbml0ZWx5IGNvbW1pdHRlZC4gQnV0IHdlIGRvbid0 IGtub3cgaWYgaXQgaXMKKwkJCSAqIG9sZCBlbm91Z2ggdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFz IGNvbW1pdHRlZC4gTGF0ZXIsIGFmdGVyCisJCQkgKiBwcm9jZXNzaW5nIGFsbCB0aGUgdHVwbGVz IG9uIHRoZSBwYWdlLCB3ZSdsbCBjaGVjayBpZiB0aGVyZSBpcworCQkJICogYW55IHNuYXBzaG90 IHRoYXQgc3RpbGwgY29uc2lkZXJzIHRoZSBuZXdlc3QgeGlkIG9uIHRoZSBwYWdlIHRvCisJCQkg KiBiZSBydW5uaW5nLiBJZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlIHBhZ2UgYWxsLXZpc2li bGUuCisJCQkgKi8KKwkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKGh0dXApOwogCi0J CQkJLyoKLQkJCQkgKiBUaGUgaW5zZXJ0ZXIgZGVmaW5pdGVseSBjb21taXR0ZWQuIEJ1dCB3ZSBk b24ndCBrbm93IGlmIGl0Ci0JCQkJICogaXMgb2xkIGVub3VnaCB0aGF0IGV2ZXJ5b25lIHNlZXMg aXQgYXMgY29tbWl0dGVkLiBMYXRlciwKLQkJCQkgKiBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUg dHVwbGVzIG9uIHRoZSBwYWdlLCB3ZSdsbCBjaGVjayBpZgotCQkJCSAqIHRoZXJlIGlzIGFueSBz bmFwc2hvdCB0aGF0IHN0aWxsIGNvbnNpZGVycyB0aGUgbmV3ZXN0IHhpZAotCQkJCSAqIG9uIHRo ZSBwYWdlIHRvIGJlIHJ1bm5pbmcuIElmIHNvLCB3ZSBkb24ndCBjb25zaWRlciB0aGUKLQkJCQkg KiBwYWdlIGFsbC12aXNpYmxlLgotCQkJCSAqLwotCQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJH ZXRYbWluKGh0dXApOworCQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KKwkJCWlm IChUcmFuc2FjdGlvbklkRm9sbG93cyh4bWluLCBwcnN0YXRlLT5uZXdlc3RfbGl2ZV94aWQpICYm CisJCQkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhtaW4pKQorCQkJCXByc3RhdGUtPm5ld2VzdF9s aXZlX3hpZCA9IHhtaW47CiAKLQkJCQkvKiBUcmFjayBuZXdlc3QgeG1pbiBvbiBwYWdlLiAqLwot CQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyh4bWluLCBwcnN0YXRlLT52aXNpYmlsaXR5X2N1 dG9mZl94aWQpICYmCi0JCQkJCVRyYW5zYWN0aW9uSWRJc05vcm1hbCh4bWluKSkKLQkJCQkJcHJz dGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0geG1pbjsKLQkJCX0KIAkJCWJyZWFrOwogCiAJ CWNhc2UgSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKaW5kZXggNmM3ODA3ZDViZDMuLmI1MzcwZWMyNmRhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCkBAIC00NjIsNyArNDYyLDcgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVt c19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNf YWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQkJIEdsb2JhbFZp c1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkg VHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJIFRyYW5zYWN0 aW9uSWQgKm5ld2VzdF9saXZlX3hpZCwKIAkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdf b2ZmbnVtKTsKICNlbmRpZgogc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNp YmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKQEAgLTQ3MCw3ICs0NzAsNyBAQCBzdGF0aWMg Ym9vbCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIg YnVmLAogCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJCQkJ ICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAotCQkJ CQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJ CQkgICBUcmFuc2FjdGlvbklkICpuZXdlc3RfbGl2ZV94aWQsCiAJCQkJCQkJCQkJICAgT2Zmc2V0 TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsc3RhdHNfYWxs X2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIHZhY3V1bV9lcnJvcl9j YWxsYmFjayh2b2lkICphcmcpOwpAQCAtMjc4OCw3ICsyNzg4LDcgQEAgbGF6eV92YWN1dW1faGVh cF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZm ZXIsCiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlPZmZzZXROdW1iZXIg dW51c2VkW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIAlpbnQJCQludW51c2VkID0gMDsKLQlUcmFu c2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwlUcmFuc2FjdGlvbklkIG5ld2VzdF9s aXZlX3hpZDsKIAlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCWJvb2wJCWFsbF9mcm96ZW47CiAJTFZTYXZlZEVyckluZm8gc2F2ZWRfZXJyX2luZm87 CkBAIC0yODE0LDE0ICsyODE0LDE0IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCWlmIChoZWFwX3Bh Z2Vfd291bGRfYmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKIAkJCQkJCQkJCSAg IHZhY3JlbC0+dmlzdGVzdCwKIAkJCQkJCQkJCSAgIGRlYWRvZmZzZXRzLCBudW1fb2Zmc2V0cywK LQkJCQkJCQkJCSAgICZhbGxfZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJ CQkJICAgJmFsbF9mcm96ZW4sICZuZXdlc3RfbGl2ZV94aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVs LT5vZmZudW0pKQogCXsKIAkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwog CQlpZiAoYWxsX2Zyb3plbikKIAkJewogCQkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU47Ci0JCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZpc2liaWxpdHlfY3V0b2Zm X3hpZCkpOworCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChuZXdlc3RfbGl2ZV94aWQp KTsKIAkJfQogCiAJCS8qCkBAIC0yODYyLDcgKzI4NjIsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3Bh Z2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwK IAkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAogCQkJCQkJCQkgdm1idWZmZXIsIHZt ZmxhZ3MsCiAJCQkJCQkJCSB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7Ci0JCWNvbmZsaWN0X3hp ZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwkJY29uZmxpY3RfeGlkID0gbmV3ZXN0X2xpdmVf eGlkOwogCX0KIAogCS8qCkBAIC0zNTc1LDcgKzM1NzUsNyBAQCBzdGF0aWMgYm9vbAogaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCSBHbG9i YWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCSBUcmFuc2FjdGlvbklk ICpuZXdlc3RfbGl2ZV94aWQsCiAJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkK IHsKIApAQCAtMzU4Myw3ICszNTgzLDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJCQkgIHZpc3Rlc3QsCiAJCQkJCQkJCQkJICBO VUxMLCAwLAogCQkJCQkJCQkJCSAgYWxsX2Zyb3plbiwKLQkJCQkJCQkJCQkgIHZpc2liaWxpdHlf Y3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgIG5ld2VzdF9saXZlX3hpZCwKIAkJCQkJCQkJCQkgIGxv Z2dpbmdfb2ZmbnVtKTsKIH0KICNlbmRpZgpAQCAtMzYwNiw3ICszNjA2LDcgQEAgaGVhcF9wYWdl X2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAqIE91dHB1dCBwYXJh bWV0ZXJzOgogICoKICAqICAtICphbGxfZnJvemVuOiB0cnVlIGlmIGV2ZXJ5IHR1cGxlIG9uIHRo ZSBwYWdlIGlzIGZyb3plbgotICogIC0gKnZpc2liaWxpdHlfY3V0b2ZmX3hpZDogbmV3ZXN0IHht aW47IHZhbGlkIG9ubHkgaWYgcGFnZSBpcyBhbGwtdmlzaWJsZQorICogIC0gKm5ld2VzdF9saXZl X3hpZDogbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UKICAqICAtICpsb2dn aW5nX29mZm51bTogT2Zmc2V0TnVtYmVyIG9mIGN1cnJlbnQgdHVwbGUgYmVpbmcgcHJvY2Vzc2Vk OwogICogICAgIHVzZWQgYnkgdmFjdXVtJ3MgZXJyb3IgY2FsbGJhY2sgc3lzdGVtLgogICoKQEAg LTM2MjQsNyArMzYyNCw3IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywK IAkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4s Ci0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJ CSAgIFRyYW5zYWN0aW9uSWQgKm5ld2VzdF9saXZlX3hpZCwKIAkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7 CkBAIC0zNjM0LDcgKzM2MzQsNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVs YXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCWJvb2wJCWFsbF92aXNpYmxlID0gdHJ1ZTsKIAlpbnQJ CQltYXRjaGVkX2RlYWRfY291bnQgPSAwOwogCi0JKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCSpuZXdlc3RfbGl2ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKIAkqYWxsX2Zyb3plbiA9IHRydWU7CiAKIAlBc3NlcnQobmRlYWRvZmZzZXRzID09IDAg fHwgZGVhZG9mZnNldHMpOwpAQCAtMzcyMyw5ICszNzIzLDkgQEAgaGVhcF9wYWdlX3dvdWxkX2Jl X2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJeG1pbiA9IEhlYXBU dXBsZUhlYWRlckdldFhtaW4odHVwbGUudF9kYXRhKTsKIAogCQkJCQkvKiBUcmFjayBuZXdlc3Qg eG1pbiBvbiBwYWdlLiAqLwotCQkJCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoeG1pbiwgKnZp c2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKKwkJCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKHht aW4sICpuZXdlc3RfbGl2ZV94aWQpICYmCiAJCQkJCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwoeG1p bikpCi0JCQkJCQkqdmlzaWJpbGl0eV9jdXRvZmZfeGlkID0geG1pbjsKKwkJCQkJCSpuZXdlc3Rf bGl2ZV94aWQgPSB4bWluOwogCiAJCQkJCS8qIENoZWNrIHdoZXRoZXIgdGhpcyB0dXBsZSBpcyBh bHJlYWR5IGZyb3plbiBvciBub3QgKi8KIAkJCQkJaWYgKGFsbF92aXNpYmxlICYmICphbGxfZnJv emVuICYmCkBAIC0zNzU1LDggKzM3NTUsOCBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCSAqIGNhbm5vdCBiZSBhbGwtdmlzaWJsZS4K IAkgKi8KIAlpZiAoYWxsX3Zpc2libGUgJiYKLQkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKCp2aXNp YmlsaXR5X2N1dG9mZl94aWQpICYmCi0JCUdsb2JhbFZpc1Rlc3RYaWRNYXliZVJ1bm5pbmcodmlz dGVzdCwgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCVRyYW5zYWN0aW9uSWRJc05vcm1hbCgq bmV3ZXN0X2xpdmVfeGlkKSAmJgorCQlHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKHZpc3Rl c3QsICpuZXdlc3RfbGl2ZV94aWQpKQogCXsKIAkJYWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJKmFs bF9mcm96ZW4gPSBmYWxzZTsKLS0gCjIuNDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0010-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v35-0010-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tj4ip9 RnJvbSA0NzlhYjdjMTFjMWU0OGM5Mzg5MzQ3MDZhY2YyMWNmZjQ2MDI5N2MwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNSAxMC8xOF0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog S2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8g TGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhk SzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgIHwgMzIxICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgMTA3ICstLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oICAgICAgICAgIHwgIDM3ICsrLQogMyBmaWxlcyBjaGFuZ2VkLCAyNjYgaW5zZXJ0 aW9ucygrKSwgMTk5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK aW5kZXggZGQ3MzFmNjRiYzYuLmQ0MWUxYzZmY2U0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwpAQCAtNzIsNiArNzIsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlPZmZzZXROdW1iZXIg bm93dW51c2VkW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIAlIZWFwVHVwbGVGcmVlemUgZnJvemVu W01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIAorCS8qCisJICogc2V0X2FsbF92aXNpYmxlIGFuZCBz ZXRfYWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kCisJICogYWxsLWZy b3plbiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2Ug YWZ0ZXIKKwkgKiBwcnVuaW5nLgorCSAqCisJICogTk9URTogc2V0X2FsbF92aXNpYmxlIGFuZCBz ZXRfYWxsX2Zyb3plbiBpbml0aWFsbHkgZG9uJ3QgaW5jbHVkZQorCSAqIExQX0RFQUQgaXRlbXMu IFRoYXQncyBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvCisJ ICogdXNlIHRoZW0gdG8gZGVjaWRlIHdoZXRoZXIgdG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXpl IHRoZSBwYWdlIG9yIG5vdC4KKwkgKiBUaGUgc2V0X2FsbF92aXNpYmxlIGFuZCBzZXRfYWxsX2Zy b3plbiB2YWx1ZXMgdWx0aW1hdGVseSB1c2VkIHRvIHNldAorCSAqIHRoZSBWTSBhcmUgYWRqdXN0 ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyCisJ ICogb3Igbm90IHRvIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZS4KKwkgKi8KKwlib29sCQlzZXRf YWxsX3Zpc2libGU7CisJYm9vbAkJc2V0X2FsbF9mcm96ZW47CisKIAkvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAkgKiBXb3JraW5nIHN0 YXRlIGZvciBIT1QgY2hhaW4gcHJvY2Vzc2luZwogCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTIyLDEyICsxMzcsMTYgQEAgdHlw ZWRlZiBzdHJ1Y3QKIAkvKgogCSAqIENhbGxlciBtdXN0IHByb3ZpZGUgYSBwaW5uZWQgdm1idWZm ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgaGVhcCBibG9jawogCSAqIHBhc3NlZCB0byBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiBXZSB3aWxsIGZpeCBhbnkgY29ycnVwdGlvbgotCSAqIGZv dW5kIGluIHRoZSBWTS4KKwkgKiBmb3VuZCBpbiB0aGUgVk0gYW5kIHNldCB0aGUgVk0gaWYgdGhl IHBhZ2UgaXMgYWxsLXZpc2libGUvYWxsLWZyb3plbi4KIAkgKi8KIAlCdWZmZXIJCXZtYnVmZmVy OwogCi0JLyogQml0cyBpbiB0aGUgdm1idWZmZXIgZm9yIHRoaXMgaGVhcCBwYWdlICovCi0JdWlu dDgJCXZtYml0czsKKwkvKgorCSAqIFRoZSBzdGF0ZSBvZiB0aGUgVk0gYml0cyBhdCB0aGUgYmVn aW5uaW5nIG9mIHBydW5pbmcgYW5kIHRoZSBzdGF0ZSB0aGV5CisJICogd2lsbCBiZSBpbiBhdCB0 aGUgZW5kLgorCSAqLworCXVpbnQ4CQlvbGRfdm1iaXRzOworCXVpbnQ4CQluZXdfdm1iaXRzOwog CiAJLyogVGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlICovCiAJVHJh bnNhY3Rpb25JZCBuZXdlc3RfbGl2ZV94aWQ7CkBAIC0xNTcsMjEgKzE3Niw2IEBAIHR5cGVkZWYg c3RydWN0CiAJICovCiAJaW50CQkJbHBkZWFkX2l0ZW1zOwkvKiBudW1iZXIgb2YgaXRlbXMgaW4g dGhlIGFycmF5ICovCiAJT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0czsJLyogcG9pbnRzIGRpcmVj dGx5IHRvIHByZXN1bHQtPmRlYWRvZmZzZXRzICovCi0KLQkvKgotCSAqIHNldF9hbGxfdmlzaWJs ZSBhbmQgc2V0X2FsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZAotCSAq IGFsbC1mcm96ZW4gYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhp cyBwYWdlIGFmdGVyCi0JICogcHJ1bmluZy4KLQkgKgotCSAqIE5PVEU6IHNldF9hbGxfdmlzaWJs ZSBhbmQgc2V0X2FsbF9mcm96ZW4gaW5pdGlhbGx5IGRvbid0IGluY2x1ZGUKLQkgKiBMUF9ERUFE IGl0ZW1zLiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo KSB0bwotCSAqIHVzZSB0aGVtIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBv ciBub3QuICBUaGUKLQkgKiBzZXRfYWxsX3Zpc2libGUgYW5kIHNldF9hbGxfZnJvemVuIHZhbHVl cyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZQotCSAqIGFkanVzdGVkIHRvIGluY2x1ZGUgTFBf REVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciB0bwotCSAqIG9wcG9ydHVuaXN0 aWNhbGx5IGZyZWV6ZS4KLQkgKi8KLQlib29sCQlzZXRfYWxsX3Zpc2libGU7Ci0JYm9vbAkJc2V0 X2FsbF9mcm96ZW47CiB9IFBydW5lU3RhdGU7CiAKIC8qIExvY2FsIGZ1bmN0aW9ucyAqLwpAQCAt MjA5LDYgKzIxMywxMiBAQCBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBw YWdlKTsKIAogc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKGJvb2wgZGlkX3R1cGxl X2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29sIGRvX2hpbnRfcHJ1bmUsCiAJCQkJCQkJCSAg UHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CitzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0o UHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgUHJ1bmVSZWFzb24gcmVhc29uKTsKK3N0YXRpYyBUcmFuc2Fj dGlvbklkIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJv b2wgZG9fc2V0X3ZtLAorCQkJCQkJCQkJICB1aW50OCBvbGRfdm1iaXRzLCB1aW50OCBuZXdfdm1i aXRzLAorCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGxhdGVzdF94aWRfcmVtb3ZlZCwKKwkJCQkJ CQkJCSAgVHJhbnNhY3Rpb25JZCBuZXdlc3RfZnJvemVuX3hpZCwKKwkJCQkJCQkJCSAgVHJhbnNh Y3Rpb25JZCBuZXdlc3RfbGl2ZV94aWQpOwogCiAKIC8qCkBAIC0zNzMsOSArMzgzLDEwIEBAIHBy dW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJQXNzZXJ0KEJ1 ZmZlcklzVmFsaWQocGFyYW1zLT52bWJ1ZmZlcikpOwogCXByc3RhdGUtPnZtYnVmZmVyID0gcGFy YW1zLT52bWJ1ZmZlcjsKLQlwcnN0YXRlLT52bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0 dXMocHJzdGF0ZS0+cmVsYXRpb24sCi0JCQkJCQkJCQkJCSAgIHByc3RhdGUtPmJsb2NrLAotCQkJ CQkJCQkJCQkgICAmcHJzdGF0ZS0+dm1idWZmZXIpOworCXByc3RhdGUtPm5ld192bWJpdHMgPSAw OworCXByc3RhdGUtPm9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocHJzdGF0 ZS0+cmVsYXRpb24sCisJCQkJCQkJCQkJCQkgICBwcnN0YXRlLT5ibG9jaywKKwkJCQkJCQkJCQkJ CSAgICZwcnN0YXRlLT52bWJ1ZmZlcik7CiAKIAkvKgogCSAqIE91ciBzdHJhdGVneSBpcyB0byBz Y2FuIHRoZSBwYWdlIGFuZCBtYWtlIGxpc3RzIG9mIGl0ZW1zIHRvIGNoYW5nZSwKQEAgLTQ0NSw3 ICs0NTYsNyBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywK IAogCS8qCiAJICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBwZXJmb3JtcyBmcmVlemluZywgYnV0 IG90aGVyIGNhbGxlcnMgbWF5IGluIHRoZQotCSAqIGZ1dHVyZS4gT3RoZXIgY2FsbGVycyBtdXN0 IGluaXRpYWxpemUgcHJzdGF0ZS5hbGxfZnJvemVuIHRvIGZhbHNlLAorCSAqIGZ1dHVyZS4gT3Ro ZXIgY2FsbGVycyBtdXN0IGluaXRpYWxpemUgcHJzdGF0ZS5zZXRfYWxsX2Zyb3plbiB0byBmYWxz ZSwKIAkgKiBzaW5jZSB3ZSB3aWxsIG5vdCBjYWxsIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUo KSBmb3IgZWFjaCB0dXBsZS4KIAkgKgogCSAqIFdlIG9ubHkgY29uc2lkZXIgb3Bwb3J0dW5pc3Rp YyBmcmVlemluZyBpZiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUKQEAgLTc3NCw2ICs3ODUsNjYgQEAg aGVhcF9wYWdlX3dpbGxfZnJlZXplKGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLAogCXJldHVybiBk b19mcmVlemU7CiB9CiAKKy8qCisgKiBDYWxjdWxhdGUgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9y IHRoZSB3aG9sZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCisgKiBvciBYTE9HX0hFQVAy X1BSVU5FX09OX0FDQ0VTUyByZWNvcmQuCisgKi8KK3N0YXRpYyBUcmFuc2FjdGlvbklkCitnZXRf Y29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92 bSwKKwkJCQkgdWludDggb2xkX3ZtYml0cywgdWludDggbmV3X3ZtYml0cywKKwkJCQkgVHJhbnNh Y3Rpb25JZCBsYXRlc3RfeGlkX3JlbW92ZWQsCisJCQkJIFRyYW5zYWN0aW9uSWQgbmV3ZXN0X2Zy b3plbl94aWQsCisJCQkJIFRyYW5zYWN0aW9uSWQgbmV3ZXN0X2xpdmVfeGlkKQoreworCVRyYW5z YWN0aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKKwkvKgorCSAq IFdlIGNhbiBvbWl0IHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGlmIHdlIGFyZSBub3Qg cHJ1bmluZyBvcgorCSAqIGZyZWV6aW5nIGFueSB0dXBsZXMgYW5kIGFyZSBzZXR0aW5nIGFuIGFs cmVhZHkgYWxsLXZpc2libGUgcGFnZQorCSAqIGFsbC1mcm96ZW4gaW4gdGhlIFZNLiBJbiB0aGlz IGNhc2UsIGFsbCBvZiB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlIG11c3QKKwkgKiBhbHJlYWR5IGJl IHNlZW4gYXMgZnJvemVuIGJ5IGFsbCBNVkNDIHNuYXBzaG90cyBvbiB0aGUgc3RhbmRieSAoYW55 CisJICogY29uZmxpY3Qgd291bGQgYWh2ZSBiZWVuIGhhbmRsZWQgaW4gcmVhY3Rpb24gdG8gdGhl IFdBTCByZWNvcmQgZnJlZXppbmcKKwkgKiB0aG9zZSB0dXBsZXMpLgorCSAqLworCWlmICghZG9f cHJ1bmUgJiYKKwkJIWRvX2ZyZWV6ZSAmJgorCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUpICYmCisJCShuZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVO KSkKKwkJcmV0dXJuIEludmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBUaGUgc25hcHNo b3QgY29uZmxpY3QgaG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhlIG1v c3QKKwkgKiBjb25zZXJ2YXRpdmUgKG5ld2VzdCkgb2YgYWxsIHRoZSBob3Jpem9ucyBjYWxjdWxh dGVkIGZvciBhbnkgb2YgdGhlCisJICogcG9zc2libGUgbW9kaWZpY2F0aW9ucy4gSWYgdGhpcyBy ZWNvcmQgd2lsbCBwcnVuZSB0dXBsZXMsIGFueSBxdWVyaWVzCisJICogb24gdGhlIHN0YW5kYnkg d2l0aCB4bWluIG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IFhJRCBvZiB0aGUgbW9zdAorCSAqIHJl Y2VudGx5IHJlbW92ZWQgdHVwbGUgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB3aWxsIGNvbmZsaWN0 LiAgSWYgdGhpcworCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB0dXBsZXMsIGFueSBxdWVyaWVzIG9u IHRoZSBzdGFuZGJ5IHdpdGggeG1pbiBvbGRlcgorCSAqIHRoYW4gdGhlIHlvdW5nZXN0IHR1cGxl IHRoaXMgcmVjb3JkIHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCisJICoKKwkgKiBJZiB3ZSBh cmUgc2V0dGluZyB0aGUgVk0sIHRoZSBjb25mbGljdCBob3Jpem9uIGlzIGFsbW9zdCBhbHdheXMg dGhlCisJICogbmV3ZXN0IGxpdmUgWElELCBleGNlcHQgaW4gdGhlIHNpdHVhdGlvbiBkZXNjcmli ZWQgYWJvdmUuCisJICoKKwkgKiBCeSBwaWNraW5nIHRoZSBuZXdlc3Qgb2YgYWxsIG9mIHRob3Nl LCB3ZSBjYW4gZW5zdXJlIHRoYXQgYWxsIGNoYW5nZXMKKwkgKiBpbiB0aGUgcmVjb3JkIGhhdmUg YmVlbiB0YWtlbiBpbnRvIGFjY291bnQuCisJICovCisJaWYgKGRvX3NldF92bSkKKwkJY29uZmxp Y3RfeGlkID0gbmV3ZXN0X2xpdmVfeGlkOworCWlmIChkb19mcmVlemUgJiYgVHJhbnNhY3Rpb25J ZEZvbGxvd3MobmV3ZXN0X2Zyb3plbl94aWQsIGNvbmZsaWN0X3hpZCkpCisJCWNvbmZsaWN0X3hp ZCA9IG5ld2VzdF9mcm96ZW5feGlkOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgcmVtb3ZpbmcgdHVw bGVzIHdpdGggYSB5b3VuZ2VyIFhJRCB0aGFuIG91ciBzbyBmYXIgY2FsY3VsYXRlZAorCSAqIGNv bmZsaWN0X3hpZCwgd2UgbXVzdCB1c2UgdGhpcyBhcyBvdXIgaG9yaXpvbi4KKwkgKi8KKwlpZiAo VHJhbnNhY3Rpb25JZEZvbGxvd3MobGF0ZXN0X3hpZF9yZW1vdmVkLCBjb25mbGljdF94aWQpKQor CXsKKwkJQXNzZXJ0KGRvX3BydW5lKTsKKwkJY29uZmxpY3RfeGlkID0gbGF0ZXN0X3hpZF9yZW1v dmVkOworCX0KKworCXJldHVybiBjb25mbGljdF94aWQ7Cit9CisKIC8qCiAgKiBIZWxwZXIgdG8g Zml4IHZpc2liaWxpdHktcmVsYXRlZCBjb3JydXB0aW9uIG9uIGEgaGVhcCBwYWdlIGFuZCBpdHMK ICAqIGNvcnJlc3BvbmRpbmcgVk0gcGFnZS4gQW4gYWxsLXZpc2libGUgcGFnZSBjYW5ub3QgaGF2 ZSBkZWFkIGl0ZW1zIG5vciBjYW4KQEAgLTgzOSw3ICs5MTAsNyBAQCBoZWFwX2ZpeF92bV9jb3Jy dXB0aW9uKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCiAJCVBhZ2VD bGVhckFsbFZpc2libGUocHJzdGF0ZS0+cGFnZSk7CiAJCU1hcmtCdWZmZXJEaXJ0eUhpbnQocHJz dGF0ZS0+YnVmZmVyLCB0cnVlKTsKIAl9Ci0JZWxzZSBpZiAocHJzdGF0ZS0+dm1iaXRzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCWVsc2UgaWYgKHByc3RhdGUtPm9sZF92bWJpdHMgJiBW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCiAJewogCQkvKgogCQkgKiBBcyBvZiBQb3N0Z3JlU1FM IDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmCkBAIC04 NTYsNyArOTI3LDQzIEBAIGhlYXBfZml4X3ZtX2NvcnJ1cHRpb24oUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSkKIAogCXZpc2liaWxpdHltYXBfY2xlYXIocHJzdGF0ZS0+ cmVsYXRpb24sIHByc3RhdGUtPmJsb2NrLCBwcnN0YXRlLT52bWJ1ZmZlciwKIAkJCQkJCVZJU0lC SUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JcHJzdGF0ZS0+dm1iaXRzID0gMDsKKwlwcnN0YXRlLT5v bGRfdm1iaXRzID0gMDsKK30KKworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlz aWJpbGl0eSBtYXAgYml0cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCisgKiBmb3IgaGVh cF9ibGsgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgUHJ1bmVTdGF0ZSBhbmQgVk0uCisgKgor ICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxseSBzZXQgdGhlIFZNIGJpdHMgb3IgcGFn ZS1sZXZlbCB2aXNpYmlsaXR5CisgKiBoaW50LCBQRF9BTExfVklTSUJMRS4KKyAqCisgKiBSZXR1 cm5zIHRydWUgaWYgb25lIG9yIGJvdGggVk0gYml0cyBzaG91bGQgYmUgc2V0IGFuZCBmYWxzZSBv dGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1bmVT dGF0ZSAqcHJzdGF0ZSwgUHJ1bmVSZWFzb24gcmVhc29uKQoreworCS8qCisJICogVGhvdWdoIG9u LWFjY2VzcyBwcnVuaW5nIG1haW50YWlucyBwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUsIHdlIGRv bid0CisJICogY29uc2lkZXIgc2V0dGluZyB0aGUgVk0uCisJICovCisJaWYgKHJlYXNvbiA9PSBQ UlVORV9PTl9BQ0NFU1MpCisJCXJldHVybiBmYWxzZTsKKworCWlmICghcHJzdGF0ZS0+c2V0X2Fs bF92aXNpYmxlKQorCQlyZXR1cm4gZmFsc2U7CisKKwlwcnN0YXRlLT5uZXdfdm1iaXRzID0gVklT SUJJTElUWU1BUF9BTExfVklTSUJMRTsKKworCWlmIChwcnN0YXRlLT5zZXRfYWxsX2Zyb3plbikK KwkJcHJzdGF0ZS0+bmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CisKKwlp ZiAocHJzdGF0ZS0+bmV3X3ZtYml0cyA9PSBwcnN0YXRlLT5vbGRfdm1iaXRzKQorCXsKKwkJcHJz dGF0ZS0+bmV3X3ZtYml0cyA9IDA7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1 ZTsKIH0KIAogLyoKQEAgLTg4NSw4ICs5OTIsOCBAQCBoZWFwX3BhZ2VfYnlwYXNzX3BydW5lX2Zy ZWV6ZShQcnVuZVN0YXRlICpwcnN0YXRlLCBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCkKIAlP ZmZzZXROdW1iZXIgbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwcnN0YXRlLT5wYWdl KTsKIAlQYWdlCQlwYWdlID0gcHJzdGF0ZS0+cGFnZTsKIAotCUFzc2VydChwcnN0YXRlLT52bWJp dHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4gfHwKLQkJICAgKHByc3RhdGUtPnZtYml0cyAm IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgJiYKKwlBc3NlcnQocHJzdGF0ZS0+b2xkX3ZtYml0 cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiB8fAorCQkgICAocHJzdGF0ZS0+b2xkX3ZtYml0 cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgJiYKIAkJCSFwcnN0YXRlLT5hdHRlbXB0X2Zy ZWV6ZSkpOwogCiAJLyogV2UnbGwgZmlsbCBpbiBwcmVzdWx0IGZvciB0aGUgY2FsbGVyICovCkBA IC05MTMsMTUgKzEwMjAsMTQgQEAgaGVhcF9wYWdlX2J5cGFzc19wcnVuZV9mcmVlemUoUHJ1bmVT dGF0ZSAqcHJzdGF0ZSwgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQpCiAJCU1hcmtCdWZmZXJE aXJ0eUhpbnQocHJzdGF0ZS0+YnVmZmVyLCB0cnVlKTsKIAl9CiAKLQlwcmVzdWx0LT52bWJpdHMg PSBwcnN0YXRlLT52bWJpdHM7Ci0KIAlpZiAoIVBhZ2VJc0VtcHR5KHBhZ2UpKQogCQlwcmVzdWx0 LT5oYXN0dXAgPSB0cnVlOwogfQogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0 aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQotICogc3BlY2lmaWVkIHBh Z2UuCisgKiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0YXR1cyBo YXMgY2hhbmdlZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0uCiAgKgogICogQ2FsbGVyIG11c3Qg aGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBOb3RlIHRoYXQg d2UKICAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdlIG9uIGNhbGxl cidzIGJlaGFsZi4gIENhbGxlciBtaWdodApAQCAtOTM2LDEyICsxMDQyLDEwIEBAIGhlYXBfcGFn ZV9ieXBhc3NfcHJ1bmVfZnJlZXplKFBydW5lU3RhdGUgKnByc3RhdGUsIFBydW5lRnJlZXplUmVz dWx0ICpwcmVzdWx0KQogICogdHVwbGVzIGlmIGl0J3MgcmVxdWlyZWQgaW4gb3JkZXIgdG8gYWR2 YW5jZSByZWxmcm96ZW54aWQgLyByZWxtaW5teGlkLCBvcgogICogaWYgaXQncyBjb25zaWRlcmVk IGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8gc28KICAq IG5vdy4gIFRoZSAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJvemVuX3hp ZCcgYW5kCi0gKiAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4g ZnJlZXppbmcuICBXaGVuCi0gKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBwYXNz ZWQsIHdlIGFsc28gc2V0Ci0gKiBwcmVzdWx0LT5zZXRfYWxsX3Zpc2libGUgYW5kIHByZXN1bHQt PnNldF9hbGxfZnJvemVuIGFmdGVyIGRldGVybWluaW5nCi0gKiB3aGV0aGVyIG9yIG5vdCB0byBv cHBvcnR1bmlzdGljYWxseSBmcmVlemUsIHRvIGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbgot ICogYmUgc2V0LiAnYWxsLWZyb3plbicgaXMgYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZSBI RUFQX1BBR0VfUFJVTkVfRlJFRVpFCi0gKiBvcHRpb24gaXMgbm90IHBhc3NlZC4KKyAqICduZXdf cmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4KKyAqCisg KiBBIHZtYnVmZmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhlYXAgcGFnZSBpcyBhbHNvIGlzIHBh c3NlZCBhbmQgaWYgdGhlIHBhZ2UKKyAqIGlzIGZvdW5kIHRvIGJlIGFsbC12aXNpYmxlL2FsbC1m cm96ZW4sIHdlIHdpbGwgc2V0IGl0IGluIHRoZSBWTS4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5z IG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIg b2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRo ZSBwYWdlIGFmdGVyIHBydW5pbmcuCkBAIC05NjksMTUgKzEwNzMsMTcgQEAgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlib29sCQlkb19mcmVl emU7CiAJYm9vbAkJZG9fcHJ1bmU7CiAJYm9vbAkJZG9faGludF9wcnVuZTsKKwlib29sCQlkb19z ZXRfdm07CiAJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0g cGdXYWxVc2FnZS53YWxfZnBpOworCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOwogCiAJLyog SW5pdGlhbGl6ZSBwcnN0YXRlICovCiAJcHJ1bmVfZnJlZXplX3NldHVwKHBhcmFtcywKIAkJCQkJ ICAgbmV3X3JlbGZyb3plbl94aWQsIG5ld19yZWxtaW5fbXhpZCwKIAkJCQkJICAgcHJlc3VsdCwg JnByc3RhdGUpOwogCi0JaWYgKChwcnN0YXRlLnZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURf QklUUykgJiYKKwlpZiAoKHByc3RhdGUub2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURf QklUUykgJiYKIAkJIVBhZ2VJc0FsbFZpc2libGUocHJzdGF0ZS5wYWdlKSkKIAkJaGVhcF9maXhf dm1fY29ycnVwdGlvbigmcHJzdGF0ZSwgSW52YWxpZE9mZnNldE51bWJlcik7CiAKQEAgLTk4Niw4 ICsxMDkyLDggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMg KnBhcmFtcywKIAkgKiBpcyBub3QgYmVpbmcgYXR0ZW1wdGVkLCB3ZSBjYW4gZXhpdCBlYXJseS4g RG8gdGhpcyBhZnRlciBmaXhpbmcgYW55CiAJICogZGlzY3JlcGFuY3kgYmV0d2VlbiB0aGUgcGFn ZS1sZXZlbCB2aXNpYmlsaXR5IGhpbnQgYW5kIHRoZSBWTS4KIAkgKi8KLQlpZiAocHJzdGF0ZS52 bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4gfHwKLQkJKHByc3RhdGUudm1iaXRzICYg VklTSUJJTElUWU1BUF9BTExfVklTSUJMRSAmJiAhcHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkpCisJ aWYgKHByc3RhdGUub2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiB8fAorCQko cHJzdGF0ZS5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSAmJiAhcHJzdGF0 ZS5hdHRlbXB0X2ZyZWV6ZSkpCiAJewogCQloZWFwX3BhZ2VfYnlwYXNzX3BydW5lX2ZyZWV6ZSgm cHJzdGF0ZSwgcHJlc3VsdCk7CiAJCXJldHVybjsKQEAgLTEwNTgsNiArMTE2NCwyNSBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlwcnN0 YXRlLnNldF9hbGxfdmlzaWJsZSA9IHByc3RhdGUuc2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKIAog CUFzc2VydCghcHJzdGF0ZS5zZXRfYWxsX2Zyb3plbiB8fCBwcnN0YXRlLnNldF9hbGxfdmlzaWJs ZSk7CisJQXNzZXJ0KCFwcnN0YXRlLnNldF9hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRf aXRlbXMgPT0gMCkpOworCisJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKCZwcnN0 YXRlLCBwYXJhbXMtPnJlYXNvbik7CisKKwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAg cmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxl IGlmIHdlIGRvIG5vdCBpbnRlbmQgdG8gc2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0 X3ZtIHx8IHByc3RhdGUubmV3X3ZtYml0cyA9PSAwKTsKKworCWNvbmZsaWN0X3hpZCA9IGdldF9j b25mbGljdF94aWQoZG9fcHJ1bmUsIGRvX2ZyZWV6ZSwgZG9fc2V0X3ZtLAorCQkJCQkJCQkJcHJz dGF0ZS5vbGRfdm1iaXRzLCBwcnN0YXRlLm5ld192bWJpdHMsCisJCQkJCQkJCQlwcnN0YXRlLmxh dGVzdF94aWRfcmVtb3ZlZCwKKwkJCQkJCQkJCXByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlQ29u ZmxpY3RYaWQsCisJCQkJCQkJCQlwcnN0YXRlLm5ld2VzdF9saXZlX3hpZCk7CisKKwkvKiBMb2Nr IHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBhIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwlpZiAoZG9f c2V0X3ZtKQorCQlMb2NrQnVmZmVyKHByc3RhdGUudm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xV U0lWRSk7CiAKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3Jp dGljYWwgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKQEAgLTEwNzksMTQgKzEyMDQsMTcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAog CQkvKgogCQkgKiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBkbyB0byB0aGUgcGFnZSwgdGhpcyBp cyBhIG5vbi1XQUwtbG9nZ2VkCi0JCSAqIGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJlZXpl IG9yIHBydW5lIHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJICogdGhlIGJ1ZmZlciBkaXJ0eSBi ZWxvdy4KKwkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBmcmVlemUgb3IgcHJ1bmUgdGhl IHBhZ2Ugb3Igc2V0CisJCSAqIFBEX0FMTF9WSVNJQkxFLCB3ZSB3aWxsIG1hcmsgdGhlIGJ1ZmZl ciBkaXJ0eSBiZWxvdy4KKwkJICoKKwkJICogU2V0dGluZyBQRF9BTExfVklTSUJMRSBpcyBmdWxs eSBXQUwtbG9nZ2VkIGJlY2F1c2UgaXQgaXMgZm9yYmlkZGVuCisJCSAqIGZvciB0aGUgVk0gdG8g YmUgc2V0IGFuZCBQRF9BTExfVklTSUJMRSB0byBiZSBjbGVhci4KIAkJICovCi0JCWlmICghZG9f ZnJlZXplICYmICFkb19wcnVuZSkKKwkJaWYgKCFkb19mcmVlemUgJiYgIWRvX3BydW5lICYmICFk b19zZXRfdm0pCiAJCQlNYXJrQnVmZmVyRGlydHlIaW50KHByc3RhdGUuYnVmZmVyLCB0cnVlKTsK IAl9CiAKLQlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplKQorCWlmIChkb19wcnVuZSB8fCBkb19m cmVlemUgfHwgZG9fc2V0X3ZtKQogCXsKIAkJLyogQXBwbHkgdGhlIHBsYW5uZWQgaXRlbSBjaGFu Z2VzIGFuZCByZXBhaXIgcGFnZSBmcmFnbWVudGF0aW9uLiAqLwogCQlpZiAoZG9fcHJ1bmUpCkBA IC0xMTAwLDYgKzEyMjgsMjcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkJaWYgKGRvX2ZyZWV6ZSkKIAkJCWhlYXBfZnJlZXplX3ByZXBh cmVkX3R1cGxlcyhwcnN0YXRlLmJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3pl bik7CiAKKwkJLyogU2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhp bnQgKi8KKwkJaWYgKGRvX3NldF92bSkKKwkJeworCQkJLyoKKwkJCSAqIFdoaWxlIGl0IGlzIHZh bGlkIGZvciBQRF9BTExfVklTSUJMRSB0byBiZSBzZXQgd2hlbiB0aGUKKwkJCSAqIGNvcnJlc3Bv bmRpbmcgVk0gYml0IGlzIGNsZWFyLCB3ZSBzdHJvbmdseSBwcmVmZXIgdG8ga2VlcCB0aGVtCisJ CQkgKiBpbiBzeW5jLgorCQkJICoKKwkJCSAqIFRoZSBoZWFwIGJ1ZmZlciBtdXN0IGJlIG1hcmtl ZCBkaXJ0eSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZQorCQkJICogV0FMIGNoYWluIHdoZW4gc2V0 dGluZyB0aGUgVk0uIFdlIGRvbid0IHdvcnJ5IGFib3V0CisJCQkgKiB1bm5lY2Vzc2FyaWx5IGRp cnR5aW5nIHRoZSBoZWFwIGJ1ZmZlciBpZiBQRF9BTExfVklTSUJMRSBpcworCQkJICogYWxyZWFk eSBzZXQsIHRob3VnaC4gSXQgaXMgZXh0cmVtZWx5IHJhcmUgdG8gaGF2ZSBhIGNsZWFuIGhlYXAK KwkJCSAqIGJ1ZmZlciB3aXRoIFBEX0FMTF9WSVNJQkxFIGFscmVhZHkgc2V0IGFuZCB0aGUgVk0g Yml0cyBjbGVhciwKKwkJCSAqIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluIG9wdGltaXppbmcgaXQu CisJCQkgKi8KKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHByc3RhdGUucGFnZSk7CisJCQlQYWdlQ2xl YXJQcnVuYWJsZShwcnN0YXRlLnBhZ2UpOworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKHBy c3RhdGUuYmxvY2ssIHByc3RhdGUudm1idWZmZXIsIHByc3RhdGUubmV3X3ZtYml0cywKKwkJCQkJ CQkJCSBwcnN0YXRlLnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJfQorCiAJCU1hcmtCdWZmZXJE aXJ0eShwcnN0YXRlLmJ1ZmZlcik7CiAKIAkJLyoKQEAgLTExMDcsMjkgKzEyNTYsMTIgQEAgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJICov CiAJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHByc3RhdGUucmVsYXRpb24pKQogCQl7Ci0JCQkvKgot CQkJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNo b3VsZCBiZSB0aGUKLQkJCSAqIG1vc3QgY29uc2VydmF0aXZlIG9mIGFsbCB0aGUgaG9yaXpvbnMg Y2FsY3VsYXRlZCBmb3IgYW55IG9mIHRoZQotCQkJICogcG9zc2libGUgbW9kaWZpY2F0aW9ucy4g IElmIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgdHVwbGVzLCBhbnkKLQkJCSAqIHRyYW5zYWN0aW9u cyBvbiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB4aWQgb2YgdGhlCi0JCQkg KiBtb3N0IHJlY2VudGx5IHJlbW92ZWQgdHVwbGUgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB3aWxs Ci0JCQkgKiBjb25mbGljdC4gIElmIHRoaXMgcmVjb3JkIHdpbGwgZnJlZXplIHR1cGxlcywgYW55 IHRyYW5zYWN0aW9ucwotCQkJICogb24gdGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4g dGhlIHlvdW5nZXN0IHR1cGxlIHRoaXMKLQkJCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNv bmZsaWN0LgotCQkJICovCi0JCQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKLQotCQkJaWYg KFRyYW5zYWN0aW9uSWRGb2xsb3dzKHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlQ29uZmxpY3RY aWQsCi0JCQkJCQkJCQkgcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQpKQotCQkJCWNvbmZsaWN0 X3hpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlQ29uZmxpY3RYaWQ7Ci0JCQllbHNlCi0J CQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7Ci0KIAkJCWxvZ19o ZWFwX3BydW5lX2FuZF9mcmVlemUocHJzdGF0ZS5yZWxhdGlvbiwgcHJzdGF0ZS5idWZmZXIsCi0J CQkJCQkJCQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICovCi0JCQkJCQkJCQkgIDAsCS8q IHZtZmxhZ3MgKi8KKwkJCQkJCQkJCSAgZG9fc2V0X3ZtID8gcHJzdGF0ZS52bWJ1ZmZlciA6IElu dmFsaWRCdWZmZXIsCisJCQkJCQkJCQkgIGRvX3NldF92bSA/IHByc3RhdGUubmV3X3ZtYml0cyA6 IDAsCiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKLQkJCQkJCQkJCSAgdHJ1ZSwgcGFyYW1zLT5y ZWFzb24sCisJCQkJCQkJCQkgIHRydWUsIC8qIGNsZWFudXAgbG9jayAqLworCQkJCQkJCQkJICBw YXJhbXMtPnJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3pl biwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5yZWRpcmVjdGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAog CQkJCQkJCQkJICBwcnN0YXRlLm5vd2RlYWQsIHByc3RhdGUubmRlYWQsCkBAIC0xMTM5LDMzICsx MjcxLDY0IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpw YXJhbXMsCiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2Nr QnVmZmVyKHByc3RhdGUudm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKKwkvKgorCSAq IER1cmluZyBpdHMgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVNIGNhbGxzCisJICog aGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBw YWdlIGlzCisJICogYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uIFRoZSBsb2dpYyBoZXJlIGlz IHNpbWlsYXIuIEFmdGVyIGNvbXBsZXRpbmcKKwkgKiBwcnVuaW5nIGFuZCBmcmVlemluZywgdXNl IGFuIGFzc2VydGlvbiB0byB2ZXJpZnkgdGhhdCBvdXIgcmVzdWx0cworCSAqIHJlbWFpbiBjb25z aXN0ZW50IHdpdGggaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkuCisJICovCisjaWZk ZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCWlmIChwcnN0YXRlLnNldF9hbGxfdmlzaWJsZSkKKwl7 CisJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQlib29sCQlkZWJ1Z19hbGxfZnJvemVu OworCisJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKworCQlBc3NlcnQoaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKHByc3RhdGUucmVsYXRpb24sIHByc3RhdGUuYnVmZmVyLAor CQkJCQkJCQkJCXByc3RhdGUudmlzdGVzdCwKKwkJCQkJCQkJCQkmZGVidWdfYWxsX2Zyb3plbiwK KwkJCQkJCQkJCQkmZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSk7CisKKwkJLyoKKwkJICogSXQncyBw b3NzaWJsZSB0aGUgcGFnZSBpcyBjb21wb3NlZCBlbnRpcmVseSBvZiBmcm96ZW4gdHVwbGVzIGJ1 dCBpcworCQkgKiBub3Qgc2V0IGFsbC1mcm96ZW4gaW4gdGhlIFZNIGFuZCBkaWQgbm90IHBhc3MK KwkJICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRS4gSW4gdGhpcyBjYXNlLCBpdCdzIHBvc3NpYmxl CisJCSAqIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGZpbmRzIHRoZSBwYWdlIGNvbXBsZXRl bHkgZnJvemVuLCBldmVuCisJCSAqIHRob3VnaCBwcnN0YXRlLmFsbF9mcm96ZW4gaXMgZmFsc2Uu CisJCSAqLworCQlBc3NlcnQoIXByc3RhdGUuc2V0X2FsbF9mcm96ZW4gfHwgZGVidWdfYWxsX2Zy b3plbik7CisJfQorI2VuZGlmCisKIAkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxl ciAqLwogCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKIAlwcmVzdWx0LT5u bmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKIAlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5u ZnJvemVuOwogCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKIAlw cmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBs ZXM7Ci0JcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLnNldF9hbGxfdmlzaWJsZTsKLQlw cmVzdWx0LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5zZXRfYWxsX2Zyb3plbjsKIAlwcmVzdWx0LT5o YXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKLQlwcmVzdWx0LT52bWJpdHMgPSBwcnN0YXRlLnZtYml0 czsKLQotCS8qCi0JICogRm9yIGNhbGxlcnMgcGxhbm5pbmcgdG8gdXBkYXRlIHRoZSB2aXNpYmls aXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24KLQkgKiBmb3IgdGhhdCByZWNvcmQgbXVzdCBi ZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0aGUKLQkgKiBwYWdl IGlzIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZQot CSAqIHZtX2NvbmZsaWN0X2hvcml6b24gc2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25J ZC4gIFRoaXMgaW5jbHVkZXMKLQkgKiB0aGUgY2FzZSB0aGF0IHdlIGp1c3QgZnJvemUgYWxsIHRo ZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkCi0JICogaW5jbHVkZWQgdGhlIGNvbmZs aWN0IFhJRCBhbHJlYWR5IHNvIHRoZSBjYWxsZXIgZG9lc24ndCBuZWVkIGl0LgotCSAqLwotCWlm IChwcmVzdWx0LT5hbGxfZnJvemVuKQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JZWxzZQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jp em9uID0gcHJzdGF0ZS5uZXdlc3RfbGl2ZV94aWQ7CiAKIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMg PSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJy YXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAKKwlpZiAoZG9fc2V0X3ZtKQorCXsKKwkJaWYg KChwcnN0YXRlLm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQor CQl7CisJCQlwcmVzdWx0LT5uZXdfYWxsX3Zpc2libGVfcGFnZXMgPSAxOworCQkJaWYgKHByc3Rh dGUuc2V0X2FsbF9mcm96ZW4pCisJCQkJcHJlc3VsdC0+bmV3X2FsbF92aXNpYmxlX2Zyb3plbl9w YWdlcyA9IDE7CisJCX0KKwkJZWxzZSBpZiAoKHByc3RhdGUub2xkX3ZtYml0cyAmIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgorCQkJCSBwcnN0YXRlLnNldF9hbGxfZnJvemVuKQor CQkJcHJlc3VsdC0+bmV3X2FsbF9mcm96ZW5fcGFnZXMgPSAxOworCX0KKwogCWlmIChwcnN0YXRl LmF0dGVtcHRfZnJlZXplKQogCXsKIAkJaWYgKHByZXN1bHQtPm5mcm96ZW4gPiAwKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGI1MzcwZWMyNmRhLi40Njc4ZTBiOWMyNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDU4LDEzICs0NTgsNiBAQCBz dGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBPZmZzZXROdW1iZXIgKgogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJl bFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3Rh dGUgKnZhY3JlbCk7CiAKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0aWMgYm9vbCBo ZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJ CQkJIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAotCQkJCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4s Ci0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqbmV3ZXN0X2xpdmVfeGlkLAotCQkJCQkJCQkJIE9m ZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwotI2VuZGlmCiBzdGF0aWMgYm9vbCBoZWFwX3Bh Z2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJ CQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCQkJCSAgIE9mZnNldE51bWJl ciAqZGVhZG9mZnNldHMsCkBAIC0xOTk1LDggKzE5ODgsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLAogCQkudmlzdGVzdCA9IHZhY3JlbC0+dmlzdGVzdCwKIAkJLmN1dG9m ZnMgPSAmdmFjcmVsLT5jdXRvZmZzLAogCX07Ci0JdWludDgJCW9sZF92bWJpdHMgPSAwOwotCXVp bnQ4CQluZXdfdm1iaXRzID0gMDsKIAogCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihidWYp ID09IGJsa25vKTsKIApAQCAtMjAzNywyOSArMjAyOCw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJl bFN0YXRlICp2YWNyZWwsCiAJCXZhY3JlbC0+bmV3X2Zyb3plbl90dXBsZV9wYWdlcysrOwogCX0K IAotCS8qCi0JICogVkFDVVVNIHdpbGwgY2FsbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSBk dXJpbmcgdGhlIHNlY29uZCBwYXNzIG92ZXIKLQkgKiB0aGUgaGVhcCB0byBkZXRlcm1pbmUgYWxs X3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZm9yIHRoZSBwYWdlIC0tIHRoaXMKLQkgKiBpcyBhIHNw ZWNpYWxpemVkIHZlcnNpb24gb2YgdGhlIGxvZ2ljIGZyb20gdGhpcyBmdW5jdGlvbi4gIE5vdyB0 aGF0Ci0JICogd2UndmUgZmluaXNoZWQgcHJ1bmluZyBhbmQgZnJlZXppbmcsIG1ha2Ugc3VyZSB0 aGF0IHdlJ3JlIGluIHRvdGFsCi0JICogYWdyZWVtZW50IHdpdGggaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKCkgdXNpbmcgYW4gYXNzZXJ0aW9uLgotCSAqLwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hF Q0tJTkcKLQlpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSkKLQl7Ci0JCVRyYW5zYWN0aW9uSWQgZGVi dWdfY3V0b2ZmOwotCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwotCi0JCUFzc2VydChwcmVzdWx0 LmxwZGVhZF9pdGVtcyA9PSAwKTsKLQotCQlBc3NlcnQoaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxl KHZhY3JlbC0+cmVsLCBidWYsCi0JCQkJCQkJCQkJdmFjcmVsLT52aXN0ZXN0LCAmZGVidWdfYWxs X2Zyb3plbiwKLQkJCQkJCQkJCQkmZGVidWdfY3V0b2ZmLCAmdmFjcmVsLT5vZmZudW0pKTsKLQot CQlBc3NlcnQocHJlc3VsdC5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOwotCX0KLSNl bmRpZgotCiAJLyoKIAkgKiBOb3cgc2F2ZSBkZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZy b20gdGhlIHBhZ2UgaW4gdmFjcmVsCiAJICovCkBAIC0yMDgwLDYgKzIwNDgsMTQgQEAgbGF6eV9z Y2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAl9CiAKIAkvKiBGaW5hbGx5LCBhZGQgcGFn ZS1sb2NhbCBjb3VudHMgdG8gd2hvbGUtVkFDVVVNIGNvdW50cyAqLworCXZhY3JlbC0+bmV3X2Fs bF92aXNpYmxlX3BhZ2VzICs9IHByZXN1bHQubmV3X2FsbF92aXNpYmxlX3BhZ2VzOworCXZhY3Jl bC0+bmV3X2FsbF92aXNpYmxlX2FsbF9mcm96ZW5fcGFnZXMgKz0gcHJlc3VsdC5uZXdfYWxsX3Zp c2libGVfZnJvemVuX3BhZ2VzOworCXZhY3JlbC0+bmV3X2FsbF9mcm96ZW5fcGFnZXMgKz0gcHJl c3VsdC5uZXdfYWxsX2Zyb3plbl9wYWdlczsKKworCS8qIENhcHR1cmUgaWYgdGhlIHBhZ2Ugd2Fz IG5ld2x5IHNldCBmcm96ZW4gKi8KKwkqdm1fcGFnZV9mcm96ZW4gPSBwcmVzdWx0Lm5ld19hbGxf dmlzaWJsZV9mcm96ZW5fcGFnZXMgPiAwIHx8CisJCXByZXN1bHQubmV3X2FsbF9mcm96ZW5fcGFn ZXMgPiAwOworCiAJdmFjcmVsLT50dXBsZXNfZGVsZXRlZCArPSBwcmVzdWx0Lm5kZWxldGVkOwog CXZhY3JlbC0+dHVwbGVzX2Zyb3plbiArPSBwcmVzdWx0Lm5mcm96ZW47CiAJdmFjcmVsLT5scGRl YWRfaXRlbXMgKz0gcHJlc3VsdC5scGRlYWRfaXRlbXM7CkBAIC0yMDkzLDcxICsyMDY5LDYgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKiBEaWQgd2UgZmluZCBMUF9E RUFEIGl0ZW1zPyAqLwogCSpoYXNfbHBkZWFkX2l0ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1z ID4gMCk7CiAKLQlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9p dGVtcykpOwotCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2li bGUpOwotCi0JaWYgKCFwcmVzdWx0LmFsbF92aXNpYmxlKQotCQlyZXR1cm4gcHJlc3VsdC5uZGVs ZXRlZDsKLQotCS8qIFNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2UgdmlzaWJpbGl0eSBo aW50ICovCi0Jb2xkX3ZtYml0cyA9IHByZXN1bHQudm1iaXRzOwotCW5ld192bWJpdHMgPSBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCW5ld192 bWJpdHMgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwotCi0JLyogTm90aGluZyB0byBkbyAq LwotCWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCi0JCXJldHVybiBwcmVzdWx0Lm5kZWxl dGVkOwotCi0JLyoKLQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlz aWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQgd2hpbGUKLQkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgaXMg Y2xlYXIgKGFuZCBpZiBzbywgd2UgY2xlYXJlZCBpdCBhYm92ZSksIGJ1dCB0aGUKLQkgKiByZXZl cnNlIGlzIGFsbG93ZWQgKGlmIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLiBSZWdhcmRsZXNz LCBzZXQgYm90aAotCSAqIGJpdHMgc28gdGhhdCB3ZSBnZXQgYmFjayBpbiBzeW5jLgotCSAqCi0J ICogVGhlIGhlYXAgYnVmZmVyIG11c3QgYmUgbWFya2VkIGRpcnR5IGJlZm9yZSBhZGRpbmcgaXQg dG8gdGhlIFdBTCBjaGFpbgotCSAqIHdoZW4gc2V0dGluZyB0aGUgVk0uIFdlIGRvbid0IHdvcnJ5 IGFib3V0IHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlCi0JICogaGVhcCBidWZmZXIgaWYgUERf QUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQsIHRob3VnaC4gSXQgaXMgZXh0cmVtZWx5Ci0JICog cmFyZSB0byBoYXZlIGEgY2xlYW4gaGVhcCBidWZmZXIgd2l0aCBQRF9BTExfVklTSUJMRSBhbHJl YWR5IHNldCBhbmQKLQkgKiB0aGUgVk0gYml0cyBjbGVhciwgc28gdGhlcmUgaXMgbm8gcG9pbnQg aW4gb3B0aW1pemluZyBpdC4KLQkgKi8KLQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQlQYWdl Q2xlYXJQcnVuYWJsZShwYWdlKTsKLQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQotCS8qCi0JICog SWYgdGhlIHBhZ2UgaXMgYmVpbmcgc2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5z YWN0aW9uSWQgYXMKLQkgKiB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdCBjb25mbGlj dCBob3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZQotCSAqIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVE TyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0JICovCi0J QXNzZXJ0KCFwcmVzdWx0LmFsbF9mcm96ZW4gfHwKLQkJICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCi0JdmlzaWJpbGl0eW1hcF9zZXQodmFj cmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCSAg dm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJICBuZXdfdm1iaXRz KTsKLQotCS8qCi0JICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkgc2V0IGFsbC12aXNpYmxl IGFuZC9vciBhbGwtZnJvemVuIGluIHRoZSBWTSwKLQkgKiBjb3VudCBpdCBhcyBuZXdseSBzZXQg Zm9yIGxvZ2dpbmcuCi0JICovCi0JaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgPT0gMCkKLQl7Ci0JCXZhY3JlbC0+bmV3X2FsbF92aXNpYmxlX3BhZ2VzKys7Ci0J CWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCXsKLQkJCXZhY3JlbC0+bmV3X2FsbF92aXNpYmxl X2FsbF9mcm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KLQl9 Ci0JZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAg JiYKLQkJCSBwcmVzdWx0LmFsbF9mcm96ZW4pCi0JewotCQl2YWNyZWwtPm5ld19hbGxfZnJvemVu X3BhZ2VzKys7Ci0JCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JfQotCiAJcmV0dXJuIHByZXN1 bHQubmRlbGV0ZWQ7CiB9CiAKQEAgLTM1NzEsNyArMzQ4Miw3IEBAIGRlYWRfaXRlbXNfY2xlYW51 cChMVlJlbFN0YXRlICp2YWNyZWwpCiAgKiB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBw YWdlLiBDdXJyZW50bHkgYXNzZXJ0LW9ubHksIGJ1dCB0aGVyZSBpcyBubwogICogcmVhc29uIG5v dCB0byB1c2UgaXQgb3V0c2lkZSBvZiBhc3NlcnRzLgogICovCi1zdGF0aWMgYm9vbAorYm9vbAog aGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJ CSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCmluZGV4IGU0MDFkZDUyZTI1Li43ZWY0Y2JiZmIxZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aApAQCAtMjYwLDcgKzI2MCw4IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAK IAkvKgogCSAqIENhbGxlcnMgc2hvdWxkIHByb3ZpZGUgYSBwaW5uZWQgdm1idWZmZXIgY29ycmVz cG9uZGluZyB0byB0aGUgaGVhcAotCSAqIGJsb2NrIGluIGJ1ZmZlci4gV2Ugd2lsbCBjaGVjayBm b3IgYW5kIHJlcGFpciBhbnkgY29ycnVwdGlvbiBpbiB0aGUgVk0uCisJICogYmxvY2sgaW4gYnVm ZmVyLiBXZSB3aWxsIGNoZWNrIGZvciBhbmQgcmVwYWlyIGFueSBjb3JydXB0aW9uIGluIHRoZSBW TQorCSAqIGFuZCBzZXQgdGhlIFZNIGFmdGVyIHBydW5pbmcgaWYgdGhlIHBhZ2UgaXMgYWxsLXZp c2libGUvYWxsLWZyb3plbi4KIAkgKi8KIAlCdWZmZXIJCXZtYnVmZmVyOwogCkBAIC0yNzYsOCAr Mjc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKIAkgKiBIRUFQX1BBR0Vf UFJVTkVfTUFSS19VTlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRlbXMgY2FuIGJlIHNl dAogCSAqIExQX1VOVVNFRCBkdXJpbmcgcHJ1bmluZy4KIAkgKgotCSAqIEhFQVBfUEFHRV9QUlVO RV9GUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZAot CSAqIHdpbGwgcmV0dXJuICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUg Y2FsbGVyLgorCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2ls bCBhbHNvIGZyZWV6ZSB0dXBsZXMuCiAJICovCiAJaW50CQkJb3B0aW9uczsKIApAQCAtMzExLDI1 ICszMTEsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlpbnQJCQlyZWNl bnRseV9kZWFkX3R1cGxlczsKIAogCS8qCi0JICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4g aW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCi0JICogYml0cyBpbiB0 aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdlLCBhZnRlciBwcnVuaW5n LgotCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2 ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVzZSBpdCBhcyB0aGUg Y29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJdAotCSAqIGlzIG9u bHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAwKSwgYW5kIGFsbF9m cm96ZW4gaXMKLQkgKiB0cnVlLgotCSAqCi0JICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBI RUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCi0JICovCi0JYm9vbAkJYWxsX3Zp c2libGU7Ci0JYm9vbAkJYWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hv cml6b247Ci0KLQkvKgotCSAqIHZtYml0cyBpcyB0aGUgdmFsdWUgb2YgdGhlIHZtYnVmZmVyJ3Mg dm1iaXRzIGF0IHRoZSBiZWdpbm5pbmcgb2YKLQkgKiBwcnVuaW5nLiBJdCBpcyBjbGVhcmVkIGlm IFZNIGNvcnJ1cHRpb24gaXMgZm91bmQgYW5kIGNvcnJlY3RlZC4KKwkgKiBXaGV0aGVyIG9yIG5v dCB0aGUgcGFnZSB3YXMgbmV3bHkgc2V0IGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGR1cmlu ZworCSAqIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgogCSAqLwotCXVpbnQ4CQl2bWJpdHM7CisJQmxv Y2tOdW1iZXIgbmV3X2FsbF92aXNpYmxlX3BhZ2VzOworCUJsb2NrTnVtYmVyIG5ld19hbGxfdmlz aWJsZV9mcm96ZW5fcGFnZXM7CisJQmxvY2tOdW1iZXIgbmV3X2FsbF9mcm96ZW5fcGFnZXM7CiAK IAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVu c2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBAIC00NjYsNyArNDUzLDEzIEBAIGV4dGVybiB2b2lkIGxv Z19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIs CiAvKiBpbiBoZWFwL3ZhY3V1bWxhenkuYyAqLwogZXh0ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVs KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLCBCdWZmZXJB Y2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwotCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwor ZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKKwkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKKwkJCQkJCQkJCSBib29s ICphbGxfZnJvemVuLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2Zm X3hpZCwKKwkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKKyNlbmRpZgog LyogaW4gaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jICovCiBleHRlcm4gYm9vbCBIZWFwVHVwbGVT YXRpc2ZpZXNWaXNpYmlsaXR5KEhlYXBUdXBsZSBodHVwLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJ CQkJCQkJCQkgQnVmZmVyIGJ1ZmZlcik7Ci0tIAoyLjQzLjAKCg== --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0011-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v35-0011-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tj8so10 RnJvbSA0MTBjMGUwNmM4NWM0ZDY4NmYxMTQ2MzViMDA0NDU0OWRjMjJlY2ViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMTEvMThdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggNDY3OGUwYjljMjYuLjY4ZmE3N2I1MzE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xOTAyLDkgKzE5MDIsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTkyMiwxMyArMTkyNSwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAKIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwogCQkJUGFn ZUNsZWFyUHJ1bmFibGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwg Ymxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCSAgdm1idWZm ZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklT SUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzKGJsa25vLAorCQkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTiwKKwkJCQkJCQkJCSB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CisKKwkJCS8qCisJCQkg KiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExfVklTSUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFu ZAorCQkJICogc2V0dGluZyB0aGUgVk0uCisJCQkgKi8KKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FM KHZhY3JlbC0+cmVsKSkKKwkJCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVs LCBidWYsCisJCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJ CQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQsIC8qIGNvbmZsaWN0IHhpZCAqLworCQkJCQkJ CQkJCSAgZmFsc2UsCS8qIGNsZWFudXAgbG9jayAqLworCQkJCQkJCQkJCSAgUFJVTkVfVkFDVVVN X1NDQU4sCS8qIHJlYXNvbiAqLworCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5V TEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCk7CisKIAkJ CUVORF9DUklUX1NFQ1RJT04oKTsKIAorCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xP Q0tfVU5MT0NLKTsKKwogCQkJLyogQ291bnQgdGhlIG5ld2x5IGFsbC1mcm96ZW4gcGFnZXMgZm9y IGxvZ2dpbmcgKi8KIAkJCXZhY3JlbC0+bmV3X2FsbF92aXNpYmxlX3BhZ2VzKys7CiAJCQl2YWNy ZWwtPm5ld19hbGxfdmlzaWJsZV9hbGxfZnJvemVuX3BhZ2VzKys7Ci0tIAoyLjQzLjAKCg== --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0012-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v35-0012-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tjco911 RnJvbSA0NDYyNmZmZTI3ZWRkYmQxZGVhNzg1MWIxMDA3OWMxNTAwNjlmYWY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMTIvMThdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTYgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEwICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyMCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwLmggICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFw ZGVmcy5oICAgfCAgIDkgLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg ICAgfCAgIDEgLQogMTMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzcyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKaW5kZXggMWE5ZTdiZWE1ZDIu LmJjZTc2N2Q3YjcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpAQCAtNTYsOCAr NTYsOCBAQCBtYXNrX3BhZ2VfaGludF9iaXRzKFBhZ2UgcGFnZSkKIAogCS8qCiAJICogRHVyaW5n IHJlcGxheSwgaWYgdGhlIHBhZ2UgTFNOIGhhcyBhZHZhbmNlZCBwYXN0IG91ciBYTE9HIHJlY29y ZCdzIExTTiwKLQkgKiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVh cF94bG9nX3Zpc2libGUoKSBmb3IKLQkgKiBkZXRhaWxzLgorCSAqIHdlIGRvbid0IG1hcmsgdGhl IHBhZ2UgYWxsLXZpc2libGUuIFNlZSBoZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisJICog Zm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBlMTkyMDlmMTgwZC4uMmY5ZWY4NzQ2M2UgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yNTg5LDExICsyNTg5LDExIEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJewogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CiAJCQlQYWdlQ2xlYXJQ cnVuYWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCdWZmZXJHZXRCbG9j a051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwK LQkJCQkJCQkJCSByZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChC dWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJ ICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTiwKKwkJCQkJCQkgIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKIAkJfQogCiAJCS8qCkBA IC04ODk0LDUwICs4ODk0LDYgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVs ZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3JhYmxlOwogfQogCi0vKgotICog UGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBvcGVyYXRpb24uICAnYmxvY2sn IGlzIHRoZSBibG9jawotICogYmVpbmcgbWFya2VkIGFsbC12aXNpYmxlLCBhbmQgdm1fYnVmZmVy IGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0 eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZAotICog YW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNob3RDb25mbGljdEhvcml6b24gY29tZXMgZnJvbSB0 aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBtYXJrZWQgYWxsLXZpc2libGUu ICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNvdmVyeSBjb25mbGljdHMuCi0g KgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQsIHdlIG1heSBh bHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBoZWFwX2J1ZmZlci4gT3RoZXJ3 aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNpZnlpbmcKLSAqIFJFR0JVRl9O T19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2ggY2FzZSB0aGUgY2FsbGVyIHNo b3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0gKi8KLVhMb2dSZWNQ dHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxlIHhscmVjOwotCVhMb2dSZWNQ dHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBf YnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVmZmVyKSk7Ci0KLQl4bHJlYy5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXhscmVj LmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19S RUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVP ZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCB2bV9idWZmZXIsIDApOwot Ci0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9nSGludEJpdElzTmVlZGVkKCkp Ci0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgaGVh cF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIFhM T0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwotfQotCiAvKgogICogUGVyZm9y bSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlvbi4gIENhbGxlciBtdXN0IGFs cmVhZHkKICAqIGhhdmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBhbmQgbWFya2VkIHRoZW0gZGly dHkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA2ZDM5YTVmZmY3Yy4u ZGY4OWY5M2VkYjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMjM5 LDcgKzIzOSw3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1Na LCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sIHZtYnVmZmVyLCB2bWZs YWdzLCBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLCB2bWJ1ZmZlciwgdm1m bGFncywgcmxvY2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJ CVBhZ2VTZXRMU04odm1wYWdlLCBsc24pOwpAQCAtMjUyLDE0MyArMjUyLDYgQEAgaGVhcF94bG9n X3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNlKTsKIH0KIAotLyoKLSAqIFJl cGxheSBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jkcy4KLSAqCi0gKiBUaGUgY3JpdGljYWwgaW50 ZWdyaXR5IHJlcXVpcmVtZW50IGhlcmUgaXMgdGhhdCB3ZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRo Ci0gKiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCwgYW5k IHRoZSBwYWdlLWxldmVsCi0gKiBQRF9BTExfVklTSUJMRSBiaXQgaXMgY2xlYXIuICBJZiB0aGF0 IHdlcmUgdG8gb2NjdXIsIHRoZW4gYSBzdWJzZXF1ZW50Ci0gKiBwYWdlIG1vZGlmaWNhdGlvbiB3 b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQuCi0gKi8KLXN0YXRpYyB2 b2lkCi1oZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKLXsKLQlYTG9n UmVjUHRyCWxzbiA9IHJlY29yZC0+RW5kUmVjUHRyOwotCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMg PSAoeGxfaGVhcF92aXNpYmxlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7Ci0JQnVmZmVyCQl2 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0JQnVmZmVyCQlidWZmZXI7Ci0JUGFnZQkJcGFnZTsK LQlSZWxGaWxlTG9jYXRvciBybG9jYXRvcjsKLQlCbG9ja051bWJlciBibGtubzsKLQlYTG9nUmVk b0FjdGlvbiBhY3Rpb247Ci0KLQlBc3NlcnQoKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBf WExPR19WQUxJRF9CSVRTKSA9PSB4bHJlYy0+ZmxhZ3MpOwotCi0JWExvZ1JlY0dldEJsb2NrVGFn KHJlY29yZCwgMSwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwotCi0JLyoKLQkgKiBJZiB0aGVy ZSBhcmUgYW55IEhvdCBTdGFuZGJ5IHRyYW5zYWN0aW9ucyBydW5uaW5nIHRoYXQgaGF2ZSBhbiB4 bWluCi0JICogaG9yaXpvbiBvbGQgZW5vdWdoIHRoYXQgdGhpcyBwYWdlIGlzbid0IGFsbC12aXNp YmxlIGZvciB0aGVtLCB0aGV5Ci0JICogbWlnaHQgaW5jb3JyZWN0bHkgZGVjaWRlIHRoYXQgYW4g aW5kZXgtb25seSBzY2FuIGNhbiBza2lwIGEgaGVhcCBmZXRjaC4KLQkgKgotCSAqIE5COiBJdCBt aWdodCBiZSBiZXR0ZXIgdG8gdGhyb3cgc29tZSBraW5kIG9mICJzb2Z0IiBjb25mbGljdCBoZXJl IHRoYXQKLQkgKiBmb3JjZXMgYW55IGluZGV4LW9ubHkgc2NhbiB0aGF0IGlzIGluIGZsaWdodCB0 byBwZXJmb3JtIGhlYXAgZmV0Y2hlcywKLQkgKiByYXRoZXIgdGhhbiBraWxsaW5nIHRoZSB0cmFu c2FjdGlvbiBvdXRyaWdodC4KLQkgKi8KLQlpZiAoSW5Ib3RTdGFuZGJ5KQotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24s Ci0JCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TCwKLQkJCQkJCQkJCQkJcmxvY2F0b3IpOwotCi0JLyoKLQkgKiBSZWFkIHRoZSBoZWFwIHBhZ2Us IGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhlIGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgotCSAq IHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVyeSwgd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgdGhl IHBhZ2UsIGJ1dCB3ZSdkCi0JICogYmV0dGVyIHN0aWxsIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBt YXAuCi0JICovCi0JYWN0aW9uID0gWExvZ1JlYWRCdWZmZXJGb3JSZWRvKHJlY29yZCwgMSwgJmJ1 ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCS8qCi0JCSAqIFdl IGRvbid0IGJ1bXAgdGhlIExTTiBvZiB0aGUgaGVhcCBwYWdlIHdoZW4gc2V0dGluZyB0aGUgdmlz aWJpbGl0eQotCQkgKiBtYXAgYml0ICh1bmxlc3MgY2hlY2tzdW1zIG9yIHdhbF9oaW50X2JpdHMg aXMgZW5hYmxlZCwgaW4gd2hpY2gKLQkJICogY2FzZSB3ZSBtdXN0KS4gVGhpcyBleHBvc2VzIHVz IHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2UKLQkJICogd2UncmUgbm90IGluc3BlY3Rp bmcgdGhlIGV4aXN0aW5nIHBhZ2UgY29udGVudHMgaW4gYW55IHdheSwgd2UKLQkJICogZG9uJ3Qg Y2FyZS4KLQkJICovCi0JCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7Ci0KLQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7Ci0JCVBhZ2VDbGVhclBydW5hYmxlKHBhZ2UpOwotCi0JCWlmIChY TG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7Ci0KLQkJTWFy a0J1ZmZlckRpcnR5KGJ1ZmZlcik7Ci0JfQotCWVsc2UgaWYgKGFjdGlvbiA9PSBCTEtfUkVTVE9S RUQpCi0JewotCQkvKgotCQkgKiBJZiBoZWFwIGJsb2NrIHdhcyBiYWNrZWQgdXAsIHdlIGFscmVh ZHkgcmVzdG9yZWQgaXQgYW5kIHRoZXJlJ3MKLQkJICogbm90aGluZyBtb3JlIHRvIGRvLiAoVGhp cyBjYW4gb25seSBoYXBwZW4gd2l0aCBjaGVja3N1bXMgb3IKLQkJICogd2FsX2xvZ19oaW50cyBl bmFibGVkLikKLQkJICovCi0JfQotCi0JaWYgKEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSkKLQl7Ci0J CVNpemUJCXNwYWNlID0gUGFnZUdldEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwot Ci0JCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKLQotCQkvKgotCQkgKiBTaW5jZSBGU00g aXMgbm90IFdBTC1sb2dnZWQgYW5kIG9ubHkgdXBkYXRlZCBoZXVyaXN0aWNhbGx5LCBpdAotCQkg KiBlYXNpbHkgYmVjb21lcyBzdGFsZSBpbiBzdGFuZGJ5cy4gIElmIHRoZSBzdGFuZGJ5IGlzIGxh dGVyIHByb21vdGVkCi0JCSAqIGFuZCBydW5zIFZBQ1VVTSwgaXQgd2lsbCBza2lwIHVwZGF0aW5n IGluZGl2aWR1YWwgZnJlZSBzcGFjZQotCQkgKiBmaWd1cmVzIGZvciBwYWdlcyB0aGF0IGJlY2Ft ZSBhbGwtdmlzaWJsZSAob3IgYWxsLWZyb3plbiwgZGVwZW5kaW5nCi0JCSAqIG9uIHRoZSB2YWN1 dW0gbW9kZSwpIHdoaWNoIGlzIHRyb3VibGVzb21lIHdoZW4gRnJlZVNwYWNlTWFwVmFjdXVtCi0J CSAqIHByb3BhZ2F0ZXMgdG9vIG9wdGltaXN0aWMgZnJlZSBzcGFjZSB2YWx1ZXMgdG8gdXBwZXIg RlNNIGxheWVyczsKLQkJICogbGF0ZXIgaW5zZXJ0ZXJzIHRyeSB0byB1c2Ugc3VjaCBwYWdlcyBv bmx5IHRvIGZpbmQgb3V0IHRoYXQgdGhleQotCQkgKiBhcmUgdW51c2FibGUuICBUaGlzIGNhbiBj YXVzZSBsb25nIHN0YWxscyB3aGVuIHRoZXJlIGFyZSBtYW55IHN1Y2gKLQkJICogcGFnZXMuCi0J CSAqCi0JCSAqIEZvcmVzdGFsbCB0aG9zZSBwcm9ibGVtcyBieSB1cGRhdGluZyBGU00ncyBpZGVh IGFib3V0IGEgcGFnZSB0aGF0Ci0JCSAqIGlzIGJlY29taW5nIGFsbC12aXNpYmxlIG9yIGFsbC1m cm96ZW4uCi0JCSAqCi0JCSAqIERvIHRoaXMgcmVnYXJkbGVzcyBvZiBhIGZ1bGwtcGFnZSBpbWFn ZSBiZWluZyBhcHBsaWVkLCBzaW5jZSB0aGUKLQkJICogRlNNIGRhdGEgaXMgbm90IGluIHRoZSBw YWdlIGFueXdheS4KLQkJICovCi0JCWlmICh4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpCi0JCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25v LCBzcGFjZSk7Ci0JfQotCi0JLyoKLQkgKiBFdmVuIGlmIHdlIHNraXBwZWQgdGhlIGhlYXAgcGFn ZSB1cGRhdGUgZHVlIHRvIHRoZSBMU04gaW50ZXJsb2NrLCBpdCdzCi0JICogc3RpbGwgc2FmZSB0 byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLiAgQW55IFdBTCByZWNvcmQgdGhhdCBjbGVhcnMK LQkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGRvZXMgc28gYmVmb3JlIGNoZWNraW5nIHRoZSBw YWdlIExTTiwgc28gYW55Ci0JICogYml0cyB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZCB3aWxsIHN0 aWxsIGJlIGNsZWFyZWQuCi0JICovCi0JaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVk KHJlY29yZCwgMCwgUkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLAotCQkJCQkJCQkJICAmdm1idWZm ZXIpID09IEJMS19ORUVEU19SRURPKQotCXsKLQkJUGFnZQkJdm1wYWdlID0gQnVmZmVyR2V0UGFn ZSh2bWJ1ZmZlcik7Ci0JCVJlbGF0aW9uCXJlbG47Ci0JCXVpbnQ4CQl2bWJpdHM7Ci0KLQkJLyog aW5pdGlhbGl6ZSB0aGUgcGFnZSBpZiBpdCB3YXMgcmVhZCBhcyB6ZXJvcyAqLwotCQlpZiAoUGFn ZUlzTmV3KHZtcGFnZSkpCi0JCQlQYWdlSW5pdCh2bXBhZ2UsIEJMQ0tTWiwgMCk7Ci0KLQkJLyog cmVtb3ZlIFZJU0lCSUxJVFlNQVBfWExPR18qICovCi0JCXZtYml0cyA9IHhscmVjLT5mbGFncyAm IFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKLQotCQkvKgotCQkgKiBYTG9nUmVhZEJ1ZmZlckZv clJlZG9FeHRlbmRlZCBsb2NrZWQgdGhlIGJ1ZmZlci4gQnV0Ci0JCSAqIHZpc2liaWxpdHltYXBf c2V0IHdpbGwgaGFuZGxlIGxvY2tpbmcgaXRzZWxmLgotCQkgKi8KLQkJTG9ja0J1ZmZlcih2bWJ1 ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQotCQlyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hl RW50cnkocmxvY2F0b3IpOwotCi0JCXZpc2liaWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLCBJbnZh bGlkQnVmZmVyLCBsc24sIHZtYnVmZmVyLAotCQkJCQkJICB4bHJlYy0+c25hcHNob3RDb25mbGlj dEhvcml6b24sIHZtYml0cyk7Ci0KLQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCUZyZWVG YWtlUmVsY2FjaGVFbnRyeShyZWxuKTsKLQl9Ci0JZWxzZSBpZiAoQnVmZmVySXNWYWxpZCh2bWJ1 ZmZlcikpCi0JCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotfQotCiAvKgogICogR2l2 ZW4gYW4gImluZm9iaXRzIiBmaWVsZCBmcm9tIGFuIFhMb2cgcmVjb3JkLCBzZXQgdGhlIGNvcnJl Y3QgYml0cyBpbiB0aGUKICAqIGdpdmVuIGluZm9tYXNrIGFuZCBpbmZvbWFzazIgZm9yIHRoZSB0 dXBsZSB0b3VjaGVkIGJ5IHRoZSByZWNvcmQuCkBAIC03NjksOCArNjMyLDggQEAgaGVhcF94bG9n X211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKgogCSAqIER1cmluZyBy ZWNvdmVyeSwgaG93ZXZlciwgbm8gY29uY3VycmVudCB3cml0ZXJzIGV4aXN0LiBUaGVyZWZvcmUs CiAJICogdXBkYXRpbmcgdGhlIFZNIHdpdGhvdXQgaG9sZGluZyB0aGUgaGVhcCBwYWdlIGxvY2sg aXMgc2FmZSBlbm91Z2guIFRoaXMKLQkgKiBzYW1lIGFwcHJvYWNoIGlzIHRha2VuIHdoZW4gcmVw bGF5aW5nIHhsX2hlYXBfdmlzaWJsZSByZWNvcmRzIChzZWUKLQkgKiBoZWFwX3hsb2dfdmlzaWJs ZSgpKS4KKwkgKiBzYW1lIGFwcHJvYWNoIGlzIHRha2VuIHdoZW4gcmVwbGF5aW5nIFhMT0dfSEVB UDJfUFJVTkUqIHJlY29yZHMgKHNlZQorCSAqIGhlYXBfeGxvZ19wcnVuZV9hbmRfZnJlZXplKCkp LgogCSAqLwogCWlmICgoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCkg JiYKIAkJWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAxLCBSQk1fWkVST19P Tl9FUlJPUiwgZmFsc2UsCkBAIC03ODIsMTEgKzY0NSwxMSBAQCBoZWFwX3hsb2dfbXVsdGlfaW5z ZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlpZiAoUGFnZUlzTmV3KHZtcGFnZSkpCiAJ CQlQYWdlSW5pdCh2bXBhZ2UsIEJMQ0tTWiwgMCk7CiAKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1i aXRzKGJsa25vLAotCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFIHwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJ IHJsb2NhdG9yKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVy LAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCSAgVklTSUJJTElU WU1BUF9BTExfRlJPWkVOLAorCQkJCQkJICBybG9jYXRvcik7CiAKIAkJQXNzZXJ0KEJ1ZmZlcklz RGlydHkodm1idWZmZXIpKTsKIAkJUGFnZVNldExTTih2bXBhZ2UsIGxzbik7CkBAIC0xMzY3LDkg KzEyMzAsNiBAQCBoZWFwMl9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQljYXNlIFhM T0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6CiAJCQloZWFwX3hsb2dfcHJ1bmVfZnJlZXpl KHJlY29yZCk7CiAJCQlicmVhazsKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6Ci0JCQloZWFw X3hsb2dfdmlzaWJsZShyZWNvcmQpOwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxU SV9JTlNFUlQ6CiAJCQloZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KHJlY29yZCk7CiAJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggZDQxZTFjNmZjZTQuLmI2NmQ0OWY0 ZDYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTI0NSw4ICsxMjQ1LDgg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywK IAkJCSAqLwogCQkJUGFnZVNldEFsbFZpc2libGUocHJzdGF0ZS5wYWdlKTsKIAkJCVBhZ2VDbGVh clBydW5hYmxlKHByc3RhdGUucGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMocHJz dGF0ZS5ibG9jaywgcHJzdGF0ZS52bWJ1ZmZlciwgcHJzdGF0ZS5uZXdfdm1iaXRzLAotCQkJCQkJ CQkJIHByc3RhdGUucmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQo cHJzdGF0ZS5ibG9jaywgcHJzdGF0ZS52bWJ1ZmZlciwgcHJzdGF0ZS5uZXdfdm1iaXRzLAorCQkJ CQkJCSAgcHJzdGF0ZS5yZWxhdGlvbi0+cmRfbG9jYXRvcik7CiAJCX0KIAogCQlNYXJrQnVmZmVy RGlydHkocHJzdGF0ZS5idWZmZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmlu ZGV4IDY4ZmE3N2I1MzE4Li5lZjYwNzk0NWE5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwpAQCAtMTkyNSwxMSArMTkyNSwxMSBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExW UmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAKIAkJCVBh Z2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwogCQkJUGFnZUNsZWFyUHJ1bmFibGUocGFnZSk7Ci0JCQl2 aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJ CQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1B UF9BTExfRlJPWkVOLAotCQkJCQkJCQkJIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJICBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkgIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsKIAogCQkJLyoKIAkJCSAqIEVt aXQgV0FMIGZvciBzZXR0aW5nIFBEX0FMTF9WSVNJQkxFIG9uIHRoZSBoZWFwIHBhZ2UgYW5kCkBA IC0yNzkzLDkgKzI3OTMsOSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFj cmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJICovCiAJCVBhZ2VTZXRB bGxWaXNpYmxlKHBhZ2UpOwogCQlQYWdlQ2xlYXJQcnVuYWJsZShwYWdlKTsKLQkJdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzKGJsa25vLAotCQkJCQkJCQkgdm1idWZmZXIsIHZtZmxhZ3MsCi0JCQkJ CQkJCSB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25v LAorCQkJCQkJICB2bWJ1ZmZlciwgdm1mbGFncywKKwkJCQkJCSAgdmFjcmVsLT5yZWwtPnJkX2xv Y2F0b3IpOwogCQljb25mbGljdF94aWQgPSBuZXdlc3RfbGl2ZV94aWQ7CiAJfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggMzA0N2JkNDZkZWYuLmZjNzRlMzll MDY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsx NCw3IEBACiAgKgkJdmlzaWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFn ZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBt YXAgcGFnZSBmb3Igc2V0dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hl Y2sgd2hldGhlciBjb3JyZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJp bGl0eW1hcF9zZXQJIC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5k IGxvZwotICoJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyAtIHNldCBiaXQocykgaW4gYSBwaW5u ZWQgcGFnZQorICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91 c2x5IHBpbm5lZCBwYWdlCiAgKgkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1 cyBvZiBiaXRzCiAgKgkJdmlzaWJpbGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0 cyBzZXQgaW4gdmlzaWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNh dGUgLQpAQCAtMjIwLDExMiArMjE5LDExIEBAIHZpc2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVt YmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZikKIAlyZXR1cm4gQnVmZmVySXNWYWxpZCh2bWJ1Zikg JiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1idWYpID09IG1hcEJsb2NrOwogfQogCi0vKgotICoJ dmlzaWJpbGl0eW1hcF9zZXQgLSBzZXQgYml0KHMpIG9uIGEgcHJldmlvdXNseSBwaW5uZWQgcGFn ZQotICoKLSAqIHJlY3B0ciBpcyB0aGUgTFNOIG9mIHRoZSBYTE9HIHJlY29yZCB3ZSdyZSByZXBs YXlpbmcsIGlmIHdlJ3JlIGluIHJlY292ZXJ5LAotICogb3IgSW52YWxpZFhMb2dSZWNQdHIgaW4g bm9ybWFsIHJ1bm5pbmcuICBUaGUgVk0gcGFnZSBMU04gaXMgYWR2YW5jZWQgdG8gdGhlCi0gKiBv bmUgcHJvdmlkZWQ7IGluIG5vcm1hbCBydW5uaW5nLCB3ZSBnZW5lcmF0ZSBhIG5ldyBYTE9HIHJl Y29yZCBhbmQgc2V0IHRoZQotICogcGFnZSBMU04gdG8gdGhhdCB2YWx1ZSAodGhvdWdoIHRoZSBo ZWFwIHBhZ2UncyBMU04gbWF5ICpub3QqIGJlIHVwZGF0ZWQ7Ci0gKiBzZWUgYmVsb3cpLiAgY3V0 b2ZmX3hpZCBpcyB0aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nIG1hcmtlZAotICog YWxsLXZpc2libGU7IGl0IGlzIG5lZWRlZCBmb3IgSG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52 YWxpZFRyYW5zYWN0aW9uSWQKLSAqIGlmIHRoZSBwYWdlIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0 IGNhbiBhbHNvIGJlIHNldCB0byBJbnZhbGlkVHJhbnNhY3Rpb25JZAotICogd2hlbiBhIHBhZ2Ug dGhhdCBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGlzIGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgot ICoKLSAqIENhbGxlciBpcyBleHBlY3RlZCB0byBzZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FMTF9W SVNJQkxFIGJpdCBiZWZvcmUgY2FsbGluZwotICogdGhpcyBmdW5jdGlvbi4gRXhjZXB0IGluIHJl Y292ZXJ5LCBjYWxsZXIgc2hvdWxkIGFsc28gcGFzcyB0aGUgaGVhcAotICogYnVmZmVyLiBXaGVu IGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQgd2UncmUgbm90IGluIHJlY292ZXJ5LCB3ZSBtdXN0 IGFkZAotICogdGhlIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gdG8gcHJvdGVjdCBpdCBm cm9tIGJlaW5nIHRvcm4uCi0gKgotICogWW91IG11c3QgcGFzcyBhIGJ1ZmZlciBjb250YWluaW5n IHRoZSBjb3JyZWN0IG1hcCBwYWdlIHRvIHRoaXMgZnVuY3Rpb24uCi0gKiBDYWxsIHZpc2liaWxp dHltYXBfcGluIGZpcnN0IHRvIHBpbiB0aGUgcmlnaHQgb25lLiBUaGlzIGZ1bmN0aW9uIGRvZXNu J3QgZG8KLSAqIGFueSBJL08uCi0gKi8KLXZvaWQKLXZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJICBYTG9nUmVj UHRyIHJlY3B0ciwgQnVmZmVyIHZtQnVmLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJ ICB1aW50OCBmbGFncykKLXsKLQlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQ QkxPQ0soaGVhcEJsayk7Ci0JdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhl YXBCbGspOwotCXVpbnQ4CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFwQmxrKTsK LQlQYWdlCQlwYWdlOwotCXVpbnQ4CSAgICptYXA7Ci0JdWludDgJCXN0YXR1czsKLQotI2lmZGVm IFRSQUNFX1ZJU0lCSUxJVFlNQVAKLQllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlgg Zm9yICVzICVkIiwKLQkJIGZsYWdzLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFw QmxrKTsKLSNlbmRpZgotCi0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgIVhMb2dSZWNQdHJJc1ZhbGlk KHJlY3B0cikpOwotCUFzc2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVy R2V0UGFnZShoZWFwQnVmKSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpID09IGZsYWdzKTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdp dGhvdXQgYWxzbyBzZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBy aWdodCBoZWFwIHBhZ2UgcGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQo aGVhcEJ1ZikgJiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJ ZWxvZyhFUlJPUiwgIndyb25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3Nl dCIpOwotCi0JQXNzZXJ0KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8Ci0JCSAgIEJ1ZmZlcklz TG9ja2VkQnlNZUluTW9kZShoZWFwQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8q IENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1 ZmZlcklzVmFsaWQodm1CdWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBC bG9jaykKLQkJZWxvZyhFUlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0 eW1hcF9zZXQiKTsKLQotCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWlu dDggKikgUGFnZUdldENvbnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9M T0NLX0VYQ0xVU0lWRSk7Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkg JiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0J CVNUQVJUX0NSSVRfU0VDVElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFw T2Zmc2V0KTsKLQkJTWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVk c1dBTChyZWwpKQotCQl7Ci0JCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpCi0JCQl7 Ci0JCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxl KHJlbCwgaGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJ ICogSWYgZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3 ZQotCQkJCSAqIG5lZWQgdG8gcHJvdGVjdCB0aGUgaGVhcCBwYWdlIGZyb20gYmVpbmcgdG9ybi4K LQkJCQkgKgotCQkJCSAqIElmIG5vdCwgdGhlbiB3ZSBtdXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVh cCBwYWdlJ3MgTFNOLiBJbgotCQkJCSAqIHRoaXMgY2FzZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAg cGFnZSB3YXMgb21pdHRlZCBmcm9tIHRoZQotCQkJCSAqIFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJv dmUsIHNvIGl0IHdvdWxkIGJlIGluY29ycmVjdCB0bwotCQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBw YWdlJ3MgTFNOLgotCQkJCSAqLwotCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQkJ ewotCQkJCQlQYWdlCQloZWFwUGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJ UGFnZVNldExTTihoZWFwUGFnZSwgcmVjcHRyKTsKLQkJCQl9Ci0JCQl9Ci0JCQlQYWdlU2V0TFNO KHBhZ2UsIHJlY3B0cik7Ci0JCX0KLQotCQlFTkRfQ1JJVF9TRUNUSU9OKCk7Ci0JfQotCi0JTG9j a0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLX0KLQogLyoKICAqIFNldCBWTSAo dmlzaWJpbGl0eSBtYXApIGZsYWdzIGluIHRoZSBWTSBibG9jayBpbiB2bUJ1Zi4KICAqCiAgKiBU aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBjYWxsZXJzIHRoYXQgbG9nIFZNIGNoYW5nZXMg dG9nZXRoZXIKICAqIHdpdGggdGhlIGhlYXAgcGFnZSBtb2RpZmljYXRpb25zIHRoYXQgcmVuZGVy ZWQgdGhlIHBhZ2UgYWxsLXZpc2libGUuCi0gKiBDYWxsZXJzIHRoYXQgbG9nIFZNIGNoYW5nZXMg c2VwYXJhdGVseSBzaG91bGQgdXNlIHZpc2liaWxpdHltYXBfc2V0KCkuCiAgKgogICogdm1CdWYg bXVzdCBiZSBwaW5uZWQgYW5kIGV4Y2x1c2l2ZWx5IGxvY2tlZCwgYW5kIGl0IG11c3QgY292ZXIg dGhlIFZNIGJpdHMKICAqIGNvcnJlc3BvbmRpbmcgdG8gaGVhcEJsay4KQEAgLTM0MSw5ICsyMzks OSBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGss IEJ1ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5IGZvciBkZWJ1Z2dpbmcg bWVzc2FnZXMuCiAgKi8KIHZvaWQKLXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJl ciBoZWFwQmxrLAotCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCi0JCQkJCQkgY29u c3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpCit2aXNpYmlsaXR5bWFwX3NldChCbG9ja051bWJl ciBoZWFwQmxrLAorCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKKwkJCQkgIGNvbnN0 IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQogewogCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVB UEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RP X01BUEJZVEUoaGVhcEJsayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmlu ZGV4IDAyYWU5MTY1M2MxLi43NWFlNmY5ZDM3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L2hlYXBkZXNjLmMKQEAgLTM0OSwxMyArMzQ5LDYgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1 ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0JZWxzZSBpZiAoaW5m byA9PSBYTE9HX0hFQVAyX1ZJU0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2libGUgKnhscmVjID0g KHhsX2hlYXBfdmlzaWJsZSAqKSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJCQkJIHhscmVjLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJZWxzZSBpZiAoaW5m byA9PSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBfbXVsdGlfaW5zZXJ0 ICp4bHJlYyA9ICh4bF9oZWFwX211bHRpX2luc2VydCAqKSByZWM7CkBAIC00NjEsOSArNDU0LDYg QEAgaGVhcDJfaWRlbnRpZnkodWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZB Q1VVTV9DTEVBTlVQOgogCQkJaWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAiOwogCQkJYnJlYWs7 Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJMRSI7Ci0JCQlicmVh azsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0gIk1VTFRJX0lOU0VS VCI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmlu ZGV4IDIxZjAzODY0YTY2Li4zYzAyN2JjYjJmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2RlY29kZS5jCkBAIC00NDgsNyArNDQ4LDYgQEAgaGVhcDJfZGVjb2RlKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQljYXNlIFhMT0df SEVBUDJfUFJVTkVfT05fQUNDRVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1ND QU46CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKLQkJY2FzZSBYTE9H X0hFQVAyX1ZJU0lCTEU6CiAJCWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFURUQ6CiAJCQlicmVh azsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBkODNhZmJmYjlk Ni4uYWZhY2MxYjhlMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTQ3NiwxMiAr NDc2LDEyIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9u SWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJICogSWYgd2UgZ2V0IHBhc3NlZCBJbnZhbGlk VHJhbnNhY3Rpb25JZCB0aGVuIHdlIGRvIG5vdGhpbmcgKG5vIGNvbmZsaWN0KS4KIAkgKgogCSAq IFRoaXMgY2FuIGhhcHBlbiB3aGVuIHJlcGxheWluZyBhbHJlYWR5LWFwcGxpZWQgV0FMIHJlY29y ZHMgYWZ0ZXIgYQotCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlp bmcgYW4gWExPR19IRUFQMl9WSVNJQkxFCi0JICogcmVjb3JkIHRoYXQgbWFya3MgYXMgZnJvemVu IGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBhbGwtdmlzaWJsZS4gIEl0J3MKLQkgKiBhbHNvIHF1 aXRlIGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleCBkZWxldGlvbgot CSAqIChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBh IHJlY292ZXJ5IGNvbmZsaWN0Ci0JICogd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0 aW9uIG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UgYmVmb3JlCi0JICogcmVwbGF5IG9mIHRoZSBk ZWxldGlvbiByZWNvcmQgaXRzZWxmKS4KKwkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9y IHdoZW4gcmVwbGF5aW5nIGEgcmVjb3JkIHRoYXQgbWFya3MgYXMKKwkgKiBmcm96ZW4gYSBwYWdl IHdoaWNoIHdhcyBhbHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eQor CSAqIG1hcC4gIEl0J3MgYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBk dXJpbmcgaW5kZXgKKwkgKiBkZWxldGlvbiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxl dGlvbiBjYW4gcmVhc29uIHRoYXQgYSByZWNvdmVyeQorCSAqIGNvbmZsaWN0IHdoaWNoIGlzIHN1 ZmZpY2llbnQgZm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlCisJICog YmVmb3JlIHJlcGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCiAJICovCiAJaWYg KCFUcmFuc2FjdGlvbklkSXNWYWxpZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikpCiAJCXJldHVy bjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggY2UzNTY2YmE5NDkuLjVlZWQ1NjdhOGU1 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtNjAsNyArNjAsNiBAQAogI2RlZmluZSBY TE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUwkJMHgxMAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5F X1ZBQ1VVTV9TQ0FOCTB4MjAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5V UAkweDMwCi0jZGVmaW5lIFhMT0dfSEVBUDJfVklTSUJMRQkJMHg0MAogI2RlZmluZSBYTE9HX0hF QVAyX01VTFRJX0lOU0VSVCAweDUwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9DS19VUERBVEVEIDB4 NjAKICNkZWZpbmUgWExPR19IRUFQMl9ORVdfQ0lECQkweDcwCkBAIC00NDMsMjAgKzQ0Miw2IEBA IHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJ bnBsYWNlCShvZmZzZXRvZih4bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQog Ci0vKgotICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlz aWJpbGl0eSBtYXAgYml0Ci0gKgotICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZm ZXIKLSAqIEJhY2t1cCBibGsgMTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxf aGVhcF92aXNpYmxlCi17Ci0JVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsK LQl1aW50OAkJZmxhZ3M7Ci19IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFw VmlzaWJsZSAob2Zmc2V0b2YoeGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgp KQotCiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNTAwLDExICs0 ODUsNiBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDgg aW5mbyk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJT dGF0ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0J CQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJ CSAgIHVpbnQ4IHZtZmxhZ3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hh cmVkIGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hs b2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFn cywKIAkJCQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAppbmRleCBhMDE2NmM1YjQxMC4uMDAxYWZiMDM3 ZjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyArMTUsNiBAQAogI2Rl ZmluZSBWSVNJQklMSVRZTUFQX0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVm cy5oIgotI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxv Y2suaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVsZmls ZWxvY2F0b3IuaCIKQEAgLTMyLDE1ICszMSw5IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBf Y2xlYXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlz aWJpbGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJ CSAgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9j a051bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1h cF9zZXQoUmVsYXRpb24gcmVsLAotCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVy IGhlYXBCdWYsCi0JCQkJCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgIEJ1ZmZlciB2 bUJ1ZiwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkgIHVpbnQ4 IGZsYWdzKTsKLWV4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJl ciBoZWFwQmxrLAotCQkJCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCi0JCQkJCQkJ CQkgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOworZXh0ZXJuIHZvaWQgdmlzaWJpbGl0 eW1hcF9zZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWlu dDggZmxhZ3MsCisJCQkJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcik7CiBleHRl cm4gdWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX2Nv dW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9ja051bWJlciAq YWxsX2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9wcmVwYXJlX3Ry dW5jYXRlKFJlbGF0aW9uIHJlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNp YmlsaXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgK aW5kZXggODkxNTNiM2NkOWEuLmU1Nzk0Yzg1NTllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcGRlZnMuaApAQCAtMjEsMTQgKzIxLDUgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9B TExfRlJPWkVOCTB4MDIKICNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCTB4MDMJLyog T1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKIAkJCQkJCQkJCQkJICogZmxhZ3MgYml0cyAq LwotLyoKLSAqIFRvIGRldGVjdCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxvZ2ljYWwgZGVj b2Rpbmcgb24gYSBzdGFuZGJ5LCB3ZSBuZWVkCi0gKiB0byBrbm93IGlmIGEgdGFibGUgaXMgYSB1 c2VyIGNhdGFsb2cgdGFibGUuIEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFsCi0gKiBiaXQg aW50byB4bF9oZWFwX3Zpc2libGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZS4KLSAq Ci0gKiBOQjogVklTSUJJTElUWU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQgdG8gdmlzaWJp bGl0eW1hcF9zZXQoKS4KLSAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19S RUwJMHgwNAotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUwkoVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTIHwgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMKQogCiAjZW5k aWYJCQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCA3N2UzYzA0MTQ0ZS4uZjVjYmNmMDg0YTQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC00MzU2LDcgKzQzNTYsNiBAQCB4bF9oZWFwX3BydW5lCiB4bF9oZWFwX3Jld3JpdGVf bWFwcGluZwogeGxfaGVhcF90cnVuY2F0ZQogeGxfaGVhcF91cGRhdGUKLXhsX2hlYXBfdmlzaWJs ZQogeGxfaW52YWxpZF9wYWdlCiB4bF9pbnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZhbGlkYXRpb25z Ci0tIAoyLjQzLjAKCg== --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0013-Initialize-missing-fields-in-CreateExecutorState.patch" Content-Disposition: attachment; filename="v35-0013-Initialize-missing-fields-in-CreateExecutorState.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tjg3h12 RnJvbSBmMjRkYTNlYWE2YzM1ODdiYjA2MjE4MTdiNzhjMTQ4YWYwMzkzMzQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTdW4sIDEgTWFyIDIwMjYgMTY6NDg6MTkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNSAxMy8xOF0gSW5pdGlhbGl6ZSBtaXNzaW5nIGZpZWxkcyBpbiBDcmVhdGVFeGVjdXRv clN0YXRlKCkKCmQ0N2NiZjQ3NGVjYmQ0NDlhNCBmb3Jnb3QgdG8gaW5pdGlhbGl6ZSBhIGZldyBm aWVsZHMgaXQgaW50cm9kdWNlZCBpbgp0aGUgRVN0YXRlLCBzbyBkbyB0aGF0IG5vdy4KLS0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDMgKysrCiAxIGZpbGUgY2hhbmdlZCwg MyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBhNzk1NWU0NzZm OS4uY2Q0ZDU0NTJjZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMTksNiArMTE5 LDkgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfcnRlcGVybWluZm9z ID0gTklMOwogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcGFy dF9wcnVuZV9pbmZvcyA9IE5JTDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzID0gTklM OworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzID0gTklMOworCWVzdGF0ZS0+ZXNfdW5w cnVuZWRfcmVsaWRzID0gTlVMTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7CiAK LS0gCjIuNDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0014-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v35-0014-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tjkdu13 RnJvbSAzODJjZGQ3Zjk4MjkxZTAwZTBmZTExYzUzYTMyZTJiNjQzOTZmZDhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNSAxNC8xOF0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmll cGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFu YXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDEzICsrKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIHwgMzIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggIHwgIDMgKysr CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICB8ICA2ICsrKysrKwogNCBmaWxlcyBj aGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYmZk M2ViYzYwMWUuLjZmNTFiODJhMzY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTkyMCw2 ICs5MjAsMTAgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJ CQkJCWJyZWFrOwogCQkJfQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dtYXJrLCB0aGUgcmVsYXRp b24gbWF5IGJlIG1vZGlmaWVkICovCisJCQllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJt c19hZGRfbWVtYmVyKGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQly Yy0+cnRpKTsKKwogCQkJLyogQ2hlY2sgdGhhdCByZWxhdGlvbiBpcyBhIGxlZ2FsIHRhcmdldCBm b3IgbWFya2luZyAqLwogCQkJaWYgKHJlbGF0aW9uKQogCQkJCUNoZWNrVmFsaWRSb3dNYXJrUmVs KHJlbGF0aW9uLCByYy0+bWFya1R5cGUpOwpAQCAtOTkwLDYgKzk5NCwxMCBAQCBJbml0UGxhbihR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkgKi8KIAlwbGFuc3RhdGUgPSBFeGVj SW5pdE5vZGUocGxhbiwgZXN0YXRlLCBlZmxhZ3MpOwogCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVD S0lORworCUNyb3NzQ2hlY2tNb2RpZmllZFJlbGlkcyhlc3RhdGUpOworI2VuZGlmCisKIAkvKgog CSAqIEdldCB0aGUgdHVwbGUgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIHR1cGxl cyB0byByZXR1cm4uCiAJICovCkBAIC0zMDI3LDYgKzMwMzUsNyBAQCBFdmFsUGxhblF1YWxTdGFy dChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCXJjZXN0YXRlLT5lc19yYW5n ZV90YWJsZV9zaXplID0gcGFyZW50ZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplOwogCXJjZXN0 YXRlLT5lc19yZWxhdGlvbnMgPSBwYXJlbnRlc3RhdGUtPmVzX3JlbGF0aW9uczsKIAlyY2VzdGF0 ZS0+ZXNfcm93bWFya3MgPSBwYXJlbnRlc3RhdGUtPmVzX3Jvd21hcmtzOworCXJjZXN0YXRlLT5l c19tb2RpZmllZF9yZWxpZHMgPSBwYXJlbnRlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkczsKIAly Y2VzdGF0ZS0+ZXNfcnRlcGVybWluZm9zID0gcGFyZW50ZXN0YXRlLT5lc19ydGVwZXJtaW5mb3M7 CiAJcmNlc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGFyZW50ZXN0YXRlLT5lc19wbGFubmVkc3Rt dDsKIAlyY2VzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IHBhcmVudGVzdGF0ZS0+ZXNfanVua0ZpbHRl cjsKQEAgLTMxNjUsNiArMzE3NCwxMCBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBx c3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqLwogCWVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRl ID0gRXhlY0luaXROb2RlKHBsYW5UcmVlLCByY2VzdGF0ZSwgMCk7CiAKKyNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCisJQ3Jvc3NDaGVja01vZGlmaWVkUmVsaWRzKHJjZXN0YXRlKTsKKyNlbmRp ZgorCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNVdGlscy5jCmluZGV4IGNkNGQ1NDUyY2ZiLi5iNGU5NTY0NDQwNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1V0aWxzLmMKQEAgLTEyMyw2ICsxMjMsOCBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZv aWQpCiAJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBOSUw7CiAJZXN0YXRlLT5lc191 bnBydW5lZF9yZWxpZHMgPSBOVUxMOwogCisJZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMgPSBO VUxMOworCiAJZXN0YXRlLT5lc19qdW5rRmlsdGVyID0gTlVMTDsKIAogCWVzdGF0ZS0+ZXNfb3V0 cHV0X2NpZCA9IChDb21tYW5kSWQpIDA7CkBAIC04NzEsNiArODczLDM0IEBAIEV4ZWNHZXRSYW5n ZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSwgYm9vbCBpc1Jlc3VsdFJl bCkKIAlyZXR1cm4gcmVsOwogfQogCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworLyoKKyAq IEFzc2VydCB0aGF0IGVzX21vZGlmaWVkX3JlbGlkcyBpbmNsdWRlcyBhbGwgcG90ZW50aWFsbHkg bW9kaWZpZWQgUlQKKyAqIGluZGV4ZXMuCisgKi8KK3ZvaWQKK0Nyb3NzQ2hlY2tNb2RpZmllZFJl bGlkcyhFU3RhdGUgKmVzdGF0ZSkKK3sKKwlCaXRtYXBzZXQgICpleHBlY3RlZCA9IE5VTEw7CisJ TGlzdENlbGwgICAqbGM7CisJSW5kZXgJCXJ0aTsKKworCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNf b3BlbmVkX3Jlc3VsdF9yZWxhdGlvbnMpCisJeworCQlSZXN1bHRSZWxJbmZvICpycmkgPSBsZmly c3Rfbm9kZShSZXN1bHRSZWxJbmZvLCBsYyk7CisKKwkJZXhwZWN0ZWQgPSBibXNfYWRkX21lbWJl cihleHBlY3RlZCwgcnJpLT5yaV9SYW5nZVRhYmxlSW5kZXgpOworCX0KKwlpZiAoZXN0YXRlLT5l c19yb3dtYXJrcykKKwl7CisJCWZvciAocnRpID0gMTsgcnRpIDw9IGVzdGF0ZS0+ZXNfcmFuZ2Vf dGFibGVfc2l6ZTsgcnRpKyspCisJCQlpZiAoZXN0YXRlLT5lc19yb3dtYXJrc1tydGkgLSAxXSAh PSBOVUxMKQorCQkJCWV4cGVjdGVkID0gYm1zX2FkZF9tZW1iZXIoZXhwZWN0ZWQsIHJ0aSk7CisJ fQorCUFzc2VydChibXNfaXNfc3Vic2V0KGV4cGVjdGVkLCBlc3RhdGUtPmVzX21vZGlmaWVkX3Jl bGlkcykpOworfQorI2VuZGlmCisKIC8qCiAgKiBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uCiAgKgkJ T3BlbiByZWxhdGlvbiBnaXZlbiBieSB0aGUgcGFzc2VkLWluIFJUIGluZGV4IGFuZCBmaWxsIGl0 cwpAQCAtODk2LDYgKzkyNiw4IEBAIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICplc3Rh dGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWVzdGF0ZS0+ZXNfcmVzdWx0X3Jl bGF0aW9ucyA9IChSZXN1bHRSZWxJbmZvICoqKQogCQkJcGFsbG9jMChlc3RhdGUtPmVzX3Jhbmdl X3RhYmxlX3NpemUgKiBzaXplb2YoUmVzdWx0UmVsSW5mbyAqKSk7CiAJZXN0YXRlLT5lc19yZXN1 bHRfcmVsYXRpb25zW3J0aSAtIDFdID0gcmVzdWx0UmVsSW5mbzsKKwllc3RhdGUtPmVzX21vZGlm aWVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAor CQkJCQkJCQkJCQkJcnRpKTsKIAogCS8qCiAJICogU2F2aW5nIGluIHRoZSBsaXN0IGFsbG93cyB0 byBhdm9pZCBuZWVkbGVzc2x5IHRyYXZlcnNpbmcgdGhlIHdob2xlCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaAppbmRleCBkNDZiYTU5ODk1ZC4uMDVmMDMyYmFlYWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaApAQCAtNzAzLDYgKzcwMyw5IEBAIGV4dGVybiBSZWxhdGlvbiBFeGVjR2V0UmFuZ2VUYWJs ZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGksCiAJCQkJCQkJCQkJICBib29sIGlz UmVzdWx0UmVsKTsKIGV4dGVybiB2b2lkIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCSAgIEluZGV4IHJ0 aSk7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworZXh0ZXJuIHZvaWQgQ3Jvc3NDaGVja01v ZGlmaWVkUmVsaWRzKEVTdGF0ZSAqZXN0YXRlKTsKKyNlbmRpZgogCiBleHRlcm4gaW50CWV4ZWN1 dG9yX2VycnBvc2l0aW9uKEVTdGF0ZSAqZXN0YXRlLCBpbnQgbG9jYXRpb24pOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IDYzYzA2N2Q1YWFlLi42MTAzODVkZjEyYiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTY3OSw2ICs2NzksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJ CQkgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4 dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAorCS8qCisJICogUlQgaW5kZXhl cyBvZiByZWxhdGlvbnMgbW9kaWZpZWQgYnkgdGhlIHF1ZXJ5IHRocm91Z2ggYQorCSAqIFVQREFU RS9ERUxFVEUvSU5TRVJUL01FUkdFIG9yIHRhcmdldGVkIGJ5IGEgU0VMRUNUIEZPUiBVUERBVEUu CisJICovCisJQml0bWFwc2V0ICAqZXNfbW9kaWZpZWRfcmVsaWRzOworCiAJSnVua0ZpbHRlciAq ZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KIAogCS8q IElmIHF1ZXJ5IGNhbiBpbnNlcnQvZGVsZXRlIHR1cGxlcywgdGhlIGNvbW1hbmQgSUQgdG8gbWFy ayB0aGVtIHdpdGggKi8KLS0gCjIuNDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0015-Make-begin_scan-functions-take-a-flags-argument.patch" Content-Disposition: attachment; filename="v35-0015-Make-begin_scan-functions-take-a-flags-argument.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tjo4i14 RnJvbSA2MWNlMGQ0ODFjMTRiNjIwM2VmZGI3ZmE3Nzk0OWU3Nzc1MDVkNjEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgTWFyIDIwMjYgMTY6MzE6MTcgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNSAxNS8xOF0gTWFrZSBiZWdpbl9zY2FuKCkgZnVuY3Rpb25zIHRha2UgYSBmbGFncyBh cmd1bWVudAoKVGhpcyBsZXRzIHVzIHBhc3MgbW9yZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBleGVj dXRvciB0byB1c2Ugd2hlbgpidWlsZGluZyB0aGUgc2NhbiBkZXNjcmlwdG9yLiBBIGZ1dHVyZSBj b21taXQgd2lsbCB1c2UgdGhpcyB0byB0ZWxsIHRoZQpzY2FuIGRlc2NyaXB0b3Igd2hldGhlciBv ciBub3QgaXRzIHJlbGF0aW9uIGlzIHJlYWQtb25seSBpbiB0aGUgY3VycmVudApxdWVyeS4KLS0t CiBjb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jICAgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICB8ICAzICsrLQogc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgfCAgMyArKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgIHwgIDYgKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaW5kZXgvZ2VuYW0uYyAgICAgICAgICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9p bmRleC9pbmRleGFtLmMgICAgICAgIHwgIDYgKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNvcnQuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFi bGVhbS5jICAgICAgICB8ICA3ICsrKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFp bnQuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAg IHwgIDggKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgICAgICAgICAg IHwgIDQgKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgfCAgOCArKysr LS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgfCAgMiArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jICAgICAgICB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3NlbGZ1bmNzLmMgICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFt LmggICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAg ICAgICAgICAgICAgfCAxNyArKysrKysrKystLS0tLS0tLQogMjIgZmlsZXMgY2hhbmdlZCwgNTAg aW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3Jv d2xvY2tzL3Bncm93bG9ja3MuYyBiL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMKaW5k ZXggZjg4MjY5MzMyYjYuLjI3ZjAxZDgwNTVmIDEwMDY0NAotLS0gYS9jb250cmliL3Bncm93bG9j a3MvcGdyb3dsb2Nrcy5jCisrKyBiL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMKQEAg LTExNCw3ICsxMTQsNyBAQCBwZ3Jvd2xvY2tzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCSAgIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOwogCiAJLyogU2NhbiB0aGUgcmVsYXRpb24gKi8K LQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwgTlVM TCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAs IE5VTEwsIDApOwogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKIAogCWF0dGlubWV0YSA9 IFR1cGxlRGVzY0dldEF0dEluTWV0YWRhdGEocnNpbmZvLT5zZXREZXNjKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYwppbmRleCA5Y2Q1NjNmZDBjMy4uZWVhMjRlYjcxMTYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMKQEAgLTI4NDQsNyArMjg0NCw4IEBAIF9icmluX3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxk KEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBicmlu c2hhcmVkLT5pc2NvbmN1cnJlbnQ7CiAKIAlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs KGhlYXAsCi0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFy ZWQpKTsKKwkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJl ZCksCisJCQkJCQkJCQkwKTsKIAogCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4o aGVhcCwgaW5kZXgsIGluZGV4SW5mbywgdHJ1ZSwgdHJ1ZSwKIAkJCQkJCQkJCSAgIGJyaW5idWls ZENhbGxiYWNrUGFyYWxsZWwsIHN0YXRlLCBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jCmluZGV4IGVlOWI2MTA2OTIyLi45NzczMDhmNzI4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dp bmluc2VydC5jCkBAIC0yMDYwLDcgKzIwNjAsOCBAQCBfZ2luX3BhcmFsbGVsX3NjYW5fYW5kX2J1 aWxkKEdpbkJ1aWxkU3RhdGUgKnN0YXRlLAogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGdp bnNoYXJlZC0+aXNjb25jdXJyZW50OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChoZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2lu c2hhcmVkKSk7CisJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21HaW5CdWlsZFNoYXJlZChn aW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWls ZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8sIHRydWUsIHByb2dyZXNzLAogCQkJCQkJCQkJ ICAgZ2luQnVpbGRDYWxsYmFja1BhcmFsbGVsLCBzdGF0ZSwgc2Nhbik7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA0NzYyNDE5NGY5My4uZWJlMmU4N2EyOGIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtNzksNyArNzks NyBAQCBoZWFwYW1fc2xvdF9jYWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24pCiAgKi8KIAogc3Rh dGljIEluZGV4RmV0Y2hUYWJsZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0 aW9uIHJlbCkKK2hlYXBhbV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBm bGFncykKIHsKIAlJbmRleEZldGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9jMF9vYmplY3QoSW5k ZXhGZXRjaEhlYXBEYXRhKTsKIApAQCAtNzYxLDcgKzc2MSw3IEBAIGhlYXBhbV9yZWxhdGlvbl9j b3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkJ dGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNjYW4gPSBOVUxMOwotCQlpbmRleFNjYW4gPSBpbmRl eF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5kZXgsIFNuYXBzaG90QW55LCBOVUxMLCAwLCAwKTsK KwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2FuKE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hv dEFueSwgTlVMTCwgMCwgMCwgMCk7CiAJCWluZGV4X3Jlc2NhbihpbmRleFNjYW4sIE5VTEwsIDAs IE5VTEwsIDApOwogCX0KIAllbHNlCkBAIC03NzAsNyArNzcwLDcgQEAgaGVhcGFtX3JlbGF0aW9u X2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DTFVTVEVSX1BIQVNFLAogCQkJ CQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhBU0VfU0VRX1NDQU5fSEVBUCk7CiAKLQkJdGFibGVT Y2FuID0gdGFibGVfYmVnaW5zY2FuKE9sZEhlYXAsIFNuYXBzaG90QW55LCAwLCAoU2NhbktleSkg TlVMTCk7CisJCXRhYmxlU2NhbiA9IHRhYmxlX2JlZ2luc2NhbihPbGRIZWFwLCBTbmFwc2hvdEFu eSwgMCwgKFNjYW5LZXkpIE5VTEwsIDApOwogCQloZWFwU2NhbiA9IChIZWFwU2NhbkRlc2MpIHRh YmxlU2NhbjsKIAkJaW5kZXhTY2FuID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpp bmRleCA1ZTg5Yjg2YTYyYy4uMWZlN2ZmYjI0ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5j CkBAIC00NTUsNyArNDU1LDcgQEAgc3lzdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAkJfQogCiAJCXN5c3NjYW4tPmlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxh dGlvbiwgaXJlbCwKLQkJCQkJCQkJCQkgc25hcHNob3QsIE5VTEwsIG5rZXlzLCAwKTsKKwkJCQkJ CQkJCQkgc25hcHNob3QsIE5VTEwsIG5rZXlzLCAwLCAwKTsKIAkJaW5kZXhfcmVzY2FuKHN5c3Nj YW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxMLCAwKTsKIAkJc3lzc2Nhbi0+c2NhbiA9IE5V TEw7CiAKQEAgLTcxNiw3ICs3MTYsNyBAQCBzeXN0YWJsZV9iZWdpbnNjYW5fb3JkZXJlZChSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJCWJzeXNzY2FuID0gdHJ1ZTsKIAogCXN5c3NjYW4tPmlzY2Fu ID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaW5kZXhSZWxhdGlvbiwKLQkJCQkJCQkJ CSBzbmFwc2hvdCwgTlVMTCwgbmtleXMsIDApOworCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBu a2V5cywgMCwgMCk7CiAJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlz LCBOVUxMLCAwKTsKIAlzeXNzY2FuLT5zY2FuID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9p bmRleGFtLmMKaW5kZXggNDNmNjRhMGU3MjEuLjE4MjcyMDgzOTZjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9p bmRleC9pbmRleGFtLmMKQEAgLTI1Nyw3ICsyNTcsNyBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCQkJCVJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJU25hcHNo b3Qgc25hcHNob3QsCiAJCQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAot CQkJCWludCBua2V5cywgaW50IG5vcmRlcmJ5cykKKwkJCQlpbnQgbmtleXMsIGludCBub3JkZXJi eXMsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRleFNjYW5EZXNjIHNjYW47CiAKQEAgLTI4NCw3ICsy ODQsNyBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXNjYW4tPmlu c3RydW1lbnQgPSBpbnN0cnVtZW50OwogCiAJLyogcHJlcGFyZSB0byBmZXRjaCBpbmRleCBtYXRj aGVzIGZyb20gdGFibGUgKi8KLQlzY2FuLT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRj aF9iZWdpbihoZWFwUmVsYXRpb24pOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4 X2ZldGNoX2JlZ2luKGhlYXBSZWxhdGlvbiwgZmxhZ3MpOwogCiAJcmV0dXJuIHNjYW47CiB9CkBA IC02MTUsNyArNjE1LDcgQEAgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIGhlYXBy ZWwsIFJlbGF0aW9uIGluZGV4cmVsLAogCXNjYW4tPmluc3RydW1lbnQgPSBpbnN0cnVtZW50Owog CiAJLyogcHJlcGFyZSB0byBmZXRjaCBpbmRleCBtYXRjaGVzIGZyb20gdGFibGUgKi8KLQlzY2Fu LT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVsKTsKKwlzY2Fu LT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVsLCAwKTsKIAog CXJldHVybiBzY2FuOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCBmZDlk NDA4N2I1YS4uY2M0ODZlNjY3OTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBA IC0xOTI2LDcgKzE5MjYsNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpi dHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhi dHNwb29sLT5pbmRleCk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnRzaGFyZWQtPmlz Y29uY3VycmVudDsKIAlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhl YXAsCi0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCkpOwor CQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLCAwKTsKIAly ZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wt PmluZGV4LCBpbmRleEluZm8sCiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxk X2NhbGxiYWNrLAogCQkJCQkJCQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 YWJsZS90YWJsZWFtLmMKaW5kZXggZGZkYTFhZjQxMmUuLmIzYWVlZTM2Y2U2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTE2MywxMCArMTYzLDExIEBAIHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2Fu LAogfQogCiBUYWJsZVNjYW5EZXNjCi10YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24g cmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKK3RhYmxlX2JlZ2luc2Nhbl9w YXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLCB1 aW50MzIgZmxhZ3MpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7Ci0JdWludDMyCQlmbGFncyA9IFNP X1RZUEVfU0VRU0NBTiB8CisKKwlmbGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlTT19BTExP V19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAogCUFzc2VydChS ZWxGaWxlTG9jYXRvckVxdWFscyhyZWxhdGlvbi0+cmRfbG9jYXRvciwgcHNjYW4tPnBoc19sb2Nh dG9yKSk7CkBAIC0yNDgsNyArMjQ5LDcgQEAgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2so UmVsYXRpb24gcmVsLAogCWJvb2wJCWZvdW5kOwogCiAJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRl KHJlbCwgTlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHJlbCk7CisJc2Nh biA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHJlbCwgMCk7CiAJZm91bmQgPSB0YWJsZV9pbmRl eF9mZXRjaF90dXBsZShzY2FuLCB0aWQsIHNuYXBzaG90LCBzbG90LCAmY2FsbF9hZ2FpbiwKIAkJ CQkJCQkJCWFsbF9kZWFkKTsKIAl0YWJsZV9pbmRleF9mZXRjaF9lbmQoc2Nhbik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb25zdHJhaW50LmMKaW5kZXggY2MxMWM0N2I2ZjIuLjM3Y2ZiZDYzOTM4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29uc3RyYWludC5jCkBAIC0xMDYsNyArMTA2LDcgQEAgdW5pcXVlX2tleV9yZWNo ZWNrKFBHX0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJdG1wdGlkID0gY2hlY2t0aWQ7CiAJewotCQlJ bmRleEZldGNoVGFibGVEYXRhICpzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2Rh dGEtPnRnX3JlbGF0aW9uKTsKKwkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiA9IHRhYmxlX2lu ZGV4X2ZldGNoX2JlZ2luKHRyaWdkYXRhLT50Z19yZWxhdGlvbiwgMCk7CiAJCWJvb2wJCWNhbGxf YWdhaW4gPSBmYWxzZTsKIAogCQlpZiAoIXRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sICZ0 bXB0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggOWNlZWZm NmQ5OWUuLmM1Y2JjNWI0ZTFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtMTE1OCw3ICsxMTU4 LDcgQEAgQ29weVJlbGF0aW9uVG8oQ29weVRvU3RhdGUgY3N0YXRlLCBSZWxhdGlvbiByZWwsIFJl bGF0aW9uIHJvb3RfcmVsLCB1aW50NjQgKnByb2MKIAlBdHRyTWFwICAgICptYXAgPSBOVUxMOwog CVR1cGxlVGFibGVTbG90ICpyb290X3Nsb3QgPSBOVUxMOwogCi0Jc2NhbmRlc2MgPSB0YWJsZV9i ZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMKTsKKwlzY2FuZGVzYyA9 IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwsIDApOwog CXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiAJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKaW5kZXggYjA0YjBkYmQyYTAuLjY1NGNjN2RiMTc1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwpAQCAtNjM4OCw3ICs2Mzg4LDcgQEAgQVRSZXdyaXRlVGFibGUoQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBPaWQgT0lETmV3SGVhcCkKIAkJICogY2hlY2tpbmcgYWxsIHRoZSBj b25zdHJhaW50cy4KIAkJICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRl c3RTbmFwc2hvdCgpKTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihvbGRyZWwsIHNuYXBzaG90 LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihvbGRyZWwsIHNuYXBzaG90LCAw LCBOVUxMLCAwKTsKIAogCQkvKgogCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250 ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQpAQCAtMTM3NjUsNyArMTM3NjUsNyBAQCB2 YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJICovCiAJc25hcHNo b3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwogCXNsb3QgPSB0YWJs ZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBz bmFwc2hvdCwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIHNuYXBzaG90 LCAwLCBOVUxMLCAwKTsKIAogCXBlclR1cEN4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJy ZW50TWVtb3J5Q29udGV4dCwKIAkJCQkJCQkJCSAgInZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFp bnQiLApAQCAtMjI2MjMsNyArMjI2MjMsNyBAQCBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cyhMaXN0 ICoqd3F1ZXVlLCBMaXN0ICptZXJnaW5nUGFydGl0aW9ucywgUmVsYXRpb24gbmV3UGFydAogCiAJ CS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG1lcmdp bmdQYXJ0aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nh bihtZXJnaW5nUGFydGl0aW9uLCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkJLyoKIAkJICog U3dpdGNoIHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2gg dHVwbGUKQEAgLTIzMDg3LDcgKzIzMDg3LDcgQEAgU3BsaXRQYXJ0aXRpb25Nb3ZlUm93cyhMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLAogCiAJLyogU2NhbiB0 aHJvdWdoIHRoZSByb3dzLiAqLwogCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRl c3RTbmFwc2hvdCgpKTsKLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hv dCwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihzcGxpdFJlbCwgc25hcHNob3Qs IDAsIE5VTEwsIDApOwogCiAJLyoKIAkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250 ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHlwZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKaW5k ZXggM2RhYjZiYjVhNzkuLjUzMTZjZWE3Y2VjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90eXBlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAg LTMxODUsNyArMzE4NSw3IEBAIHZhbGlkYXRlRG9tYWluTm90TnVsbENvbnN0cmFpbnQoT2lkIGRv bWFpbm9pZCkKIAogCQkvKiBTY2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxhdGlvbiAqLwogCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4g PSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0g dGFibGVfYmVnaW5zY2FuKHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAkJc2xvdCA9 IHRhYmxlX3Nsb3RfY3JlYXRlKHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAodGFibGVfc2Nhbl9n ZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCXsKQEAgLTMy NjYsNyArMzI2Niw3IEBAIHZhbGlkYXRlRG9tYWluQ2hlY2tDb25zdHJhaW50KE9pZCBkb21haW5v aWQsIGNvbnN0IGNoYXIgKmNjYmluLCBMT0NLTU9ERSBsb2NrbW9kCiAKIAkJLyogU2NhbiBhbGwg dHVwbGVzIGluIHRoaXMgcmVsYXRpb24gKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90 KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHRlc3RyZWws IHNuYXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBz bmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAJCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZSh0ZXN0cmVs LCBOVUxMKTsKIAkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNj YW5EaXJlY3Rpb24sIHNsb3QpKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmlu ZGV4IDlkMDcxZTQ5NWM2Li5jYjNlNGY2N2VhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMKQEAgLTgxNSw3ICs4MTUsNyBAQCBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0 cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiByZXRyeToKIAljb25mbGljdCA9 IGZhbHNlOwogCWZvdW5kX3NlbGYgPSBmYWxzZTsKLQlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXAsIGluZGV4LCAmRGlydHlTbmFwc2hvdCwgTlVMTCwgaW5kbmtleWF0dHMsIDApOwor CWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZEaXJ0eVNuYXBzaG90 LCBOVUxMLCBpbmRua2V5YXR0cywgMCwgMCk7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3NjYW4sIHNj YW5rZXlzLCBpbmRua2V5YXR0cywgTlVMTCwgMCk7CiAKIAl3aGlsZSAoaW5kZXhfZ2V0bmV4dF9z bG90KGluZGV4X3NjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBleGlzdGluZ19zbG90KSkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggMjQ5N2VlN2VkYzUuLjViOGNh MWFiZjYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtMjA1LDcg KzIwNSw3IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQg aWR4b2lkLAogCXNrZXlfYXR0b2ZmID0gYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KHNrZXksIHJl bCwgaWR4cmVsLCBzZWFyY2hzbG90KTsKIAogCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4uICovCi0J c2NhbiA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNrZXlfYXR0 b2ZmLCAwKTsKKwlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVM TCwgc2tleV9hdHRvZmYsIDAsIDApOwogCiByZXRyeToKIAlmb3VuZCA9IGZhbHNlOwpAQCAtMzgz LDcgKzM4Myw3IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZVNlcShSZWxhdGlvbiByZWwsIExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCiAKIAkvKiBTdGFydCBhIGhlYXAgc2Nhbi4gKi8KIAlJbml0RGly dHlTbmFwc2hvdChzbmFwKTsKLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgJnNuYXAsIDAs IE5VTEwpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCAmc25hcCwgMCwgTlVMTCwgMCk7 CiAJc2NhbnNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiByZXRyeToKQEAg LTYwMiw3ICs2MDIsNyBAQCBSZWxhdGlvbkZpbmREZWxldGVkVHVwbGVJbmZvU2VxKFJlbGF0aW9u IHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNlYXJjaHNsb3QsCiAJICogbm90IHlldCBjb21taXR0ZWQg b3IgdGhvc2UganVzdCBjb21taXR0ZWQgcHJpb3IgdG8gdGhlIHNjYW4gYXJlCiAJICogZXhjbHVk ZWQgaW4gdXBkYXRlX21vc3RfcmVjZW50X2RlbGV0aW9uX2luZm8oKS4KIAkgKi8KLQlzY2FuID0g dGFibGVfYmVnaW5zY2FuKHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4ocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgMCk7CiAJc2NhbnNsb3QgPSB0 YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiAJdGFibGVfcmVzY2FuKHNjYW4sIE5VTEwp OwpAQCAtNjY2LDcgKzY2Niw3IEBAIFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9CeUluZGV4 KFJlbGF0aW9uIHJlbCwgT2lkIGlkeG9pZCwKIAkgKiBub3QgeWV0IGNvbW1pdHRlZCBvciB0aG9z ZSBqdXN0IGNvbW1pdHRlZCBwcmlvciB0byB0aGUgc2NhbiBhcmUKIAkgKiBleGNsdWRlZCBpbiB1 cGRhdGVfbW9zdF9yZWNlbnRfZGVsZXRpb25faW5mbygpLgogCSAqLwotCXNjYW4gPSBpbmRleF9i ZWdpbnNjYW4ocmVsLCBpZHhyZWwsIFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7 CisJc2NhbiA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgU25hcHNob3RBbnksIE5VTEws IHNrZXlfYXR0b2ZmLCAwLCAwKTsKIAogCWluZGV4X3Jlc2NhbihzY2FuLCBza2V5LCBza2V5X2F0 dG9mZiwgTlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2Fu LmMKaW5kZXggYzY4YzI2Y2JmMzguLjEwNmJjZDMzMDFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwSGVhcHNjYW4uYwpAQCAtMTA3LDcgKzEwNyw3IEBAIEJpdG1hcFRhYmxlU2Nh blNldHVwKEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUpCiAJCQl0YWJsZV9iZWdpbnNjYW5fYm0o bm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCSAgIG5vZGUtPnNzLnBzLnN0YXRl LT5lc19zbmFwc2hvdCwKIAkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5VTEwpOworCQkJCQkJCSAg IE5VTEwsIDApOwogCX0KIAogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYy0+c3QucnNfdGJt aXRlcmF0b3IgPSB0Ym1pdGVyYXRvcjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5 c2Nhbi5jCmluZGV4IGMyZDA5Mzc0NTE3Li5jZjRkOWE0ZjgzMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC05NCw3ICs5NCw3IEBAIEluZGV4T25seU5leHQo SW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90 LAogCQkJCQkJCQkgICAmbm9kZS0+aW9zc19JbnN0cnVtZW50LAogCQkJCQkJCQkgICBub2RlLT5p b3NzX051bVNjYW5LZXlzLAotCQkJCQkJCQkgICBub2RlLT5pb3NzX051bU9yZGVyQnlLZXlzKTsK KwkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1PcmRlckJ5S2V5cywgMCk7CiAKIAkJbm9kZS0+aW9z c19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK aW5kZXggYTYxNmFiZmYwNGMuLmE3YWYyZjY2MjhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jCkBAIC0xMTEsNyArMTExLDcgQEAgSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpu b2RlKQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICAmbm9kZS0+ aXNzX0luc3RydW1lbnQsCiAJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJ CQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKwkJCQkJCQkJICAgbm9kZS0+aXNzX051 bU9yZGVyQnlLZXlzLCAwKTsKIAogCQlub2RlLT5pc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApA QCAtMjA3LDcgKzIwNyw3IEBAIEluZGV4TmV4dFdpdGhSZW9yZGVyKEluZGV4U2NhblN0YXRlICpu b2RlKQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICAmbm9kZS0+ aXNzX0luc3RydW1lbnQsCiAJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJ CQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKwkJCQkJCQkJICAgbm9kZS0+aXNzX051 bU9yZGVyQnlLZXlzLCAwKTsKIAogCQlub2RlLT5pc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKaW5kZXggYWYzYzc4OGNlOGIuLmQ5ZDdlYzA1MTZh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTcxLDcgKzcxLDcgQEAgU2VxTmV4 dChTZXFTY2FuU3RhdGUgKm5vZGUpCiAJCSAqLwogCQlzY2FuZGVzYyA9IHRhYmxlX2JlZ2luc2Nh bihub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25h cHNob3QsCi0JCQkJCQkJCSAgIDAsIE5VTEwpOworCQkJCQkJCQkgICAwLCBOVUxMLCAwKTsKIAkJ bm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gc2NhbmRlc2M7CiAJfQogCkBAIC0zNzQsNyAr Mzc0LDcgQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAkJ CQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2Ms IG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1 cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19j dXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUt PnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4sIDApOwogfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00 MDcsNSArNDA3LDUgQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplV29ya2VyKFNlcVNjYW5TdGF0ZSAq bm9kZSwKIAogCXBzY2FuID0gc2htX3RvY19sb29rdXAocHdjeHQtPnRvYywgbm9kZS0+c3MucHMu cGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7CiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNj ID0KLQkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlv biwgcHNjYW4pOworCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVu dFJlbGF0aW9uLCBwc2NhbiwgMCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu YwppbmRleCAwY2EzMTJhYzI3ZC4uYjdjNGU2ZDEwNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuYwpAQCAtMzM2Miw3ICszMzYyLDcgQEAgY2hlY2tfZGVmYXVsdF9wYXJ0aXRp b25fY29udGVudHMoUmVsYXRpb24gcGFyZW50LCBSZWxhdGlvbiBkZWZhdWx0X3JlbCwKIAkJZWNv bnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CiAJCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKIAkJdHVwc2xvdCA9IHRhYmxlX3Ns b3RfY3JlYXRlKHBhcnRfcmVsLCAmZXN0YXRlLT5lc190dXBsZVRhYmxlKTsKLQkJc2NhbiA9IHRh YmxlX2JlZ2luc2NhbihwYXJ0X3JlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFi bGVfYmVnaW5zY2FuKHBhcnRfcmVsLCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkJLyoKIAkJ ICogU3dpdGNoIHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVh Y2ggdHVwbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXggZGQ3ZTExYzBjYTUuLjNkYTJk Yjc0ZTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwpAQCAtNzE4Niw3ICs3MTg2LDcgQEAg Z2V0X2FjdHVhbF92YXJpYWJsZV9lbmRwb2ludChSZWxhdGlvbiBoZWFwUmVsLAogCiAJaW5kZXhf c2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwUmVsLCBpbmRleFJlbCwKIAkJCQkJCQkJICZTbmFw c2hvdE5vblZhY3V1bWFibGUsIE5VTEwsCi0JCQkJCQkJCSAxLCAwKTsKKwkJCQkJCQkJIDEsIDAs IDApOwogCS8qIFNldCBpdCB1cCBmb3IgaW5kZXgtb25seSBzY2FuICovCiAJaW5kZXhfc2Nhbi0+ eHNfd2FudF9pdHVwID0gdHJ1ZTsKIAlpbmRleF9yZXNjYW4oaW5kZXhfc2Nhbiwgc2NhbmtleXMs IDEsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA0YzA0MjljYzYxMy4uMzkzNGZhNDQ3OTMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9nZW5hbS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgZXh0ZXJuIEluZGV4U2NhbkRlc2Mg aW5kZXhfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCSBSZWxhdGlv biBpbmRleFJlbGF0aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJ IEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKLQkJCQkJCQkJCSBpbnQgbmtl eXMsIGludCBub3JkZXJieXMpOworCQkJCQkJCQkJIGludCBua2V5cywgaW50IG5vcmRlcmJ5cywg dWludDMyIGZsYWdzKTsKIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9iaXRt YXAoUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCQkJU25hcHNob3Qgc25hcHNob3Qs CiAJCQkJCQkJCQkJCUluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oCmluZGV4IDA2MDg0NzUyMjQ1Li5lODgxZTRmODJhMCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oCkBAIC00MjAsNyArNDIwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkg KgogCSAqIFR1cGxlcyBmb3IgYW4gaW5kZXggc2NhbiBjYW4gdGhlbiBiZSBmZXRjaGVkIHZpYSBp bmRleF9mZXRjaF90dXBsZS4KIAkgKi8KLQlzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSAqKCpp bmRleF9mZXRjaF9iZWdpbikgKFJlbGF0aW9uIHJlbCk7CisJc3RydWN0IEluZGV4RmV0Y2hUYWJs ZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVnaW4pIChSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncyk7 CiAKIAkvKgogCSAqIFJlc2V0IGluZGV4IGZldGNoLiBUeXBpY2FsbHkgdGhpcyB3aWxsIHJlbGVh c2UgY3Jvc3MgaW5kZXggZmV0Y2gKQEAgLTg5NCw5ICs4OTQsOSBAQCB0YWJsZV9iZWdpbnNjYW5f Y29tbW9uKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsIGludCBua2V5cywKICAqLwog c3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24gcmVs LCBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQlpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXkpCisJ CQkJaW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5LCB1aW50MzIgZmxhZ3MpCiB7Ci0JdWludDMy CQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJZmxhZ3MgfD0gU09fVFlQRV9TRVFTQ0FOIHwK IAkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5DIHwgU09fQUxMT1dfUEFHRU1PREU7CiAK IAlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX2NvbW1vbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5 LCBOVUxMLCBmbGFncyk7CkBAIC05MzksOSArOTM5LDkgQEAgdGFibGVfYmVnaW5zY2FuX3N0cmF0 KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCiAgKi8KIHN0YXRpYyBpbmxpbmUgVGFi bGVTY2FuRGVzYwogdGFibGVfYmVnaW5zY2FuX2JtKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25h cHNob3QsCi0JCQkJICAgaW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5KQorCQkJCSAgIGludCBu a2V5cywgU2NhbktleURhdGEgKmtleSwgdWludDMyIGZsYWdzKQogewotCXVpbnQzMgkJZmxhZ3Mg PSBTT19UWVBFX0JJVE1BUFNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKKwlmbGFncyB8PSBTT19U WVBFX0JJVE1BUFNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIAogCXJldHVybiB0YWJsZV9iZWdp bnNjYW5fY29tbW9uKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKIH0K QEAgLTExMzksNyArMTEzOSw4IEBAIGV4dGVybiB2b2lkIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0 aWFsaXplKFJlbGF0aW9uIHJlbCwKICAqIENhbGxlciBtdXN0IGhvbGQgYSBzdWl0YWJsZSBsb2Nr IG9uIHRoZSByZWxhdGlvbi4KICAqLwogZXh0ZXJuIFRhYmxlU2NhbkRlc2MgdGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJCQkgIFBhcmFsbGVsVGFi bGVTY2FuRGVzYyBwc2Nhbik7CisJCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBz Y2FuLAorCQkJCQkJCQkJCQkgIHVpbnQzMiBmbGFncyk7CiAKIC8qCiAgKiBCZWdpbiBhIHBhcmFs bGVsIHRpZCByYW5nZSBzY2FuLiBgcHNjYW5gIG5lZWRzIHRvIGhhdmUgYmVlbiBpbml0aWFsaXpl ZApAQCAtMTE3NSw3ICsxMTc2LDcgQEAgdGFibGVfcGFyYWxsZWxzY2FuX3JlaW5pdGlhbGl6ZShS ZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKICAqIFR1cGxlcyBmb3Ig YW4gaW5kZXggc2NhbiBjYW4gdGhlbiBiZSBmZXRjaGVkIHZpYSB0YWJsZV9pbmRleF9mZXRjaF90 dXBsZSgpLgogICovCiBzdGF0aWMgaW5saW5lIEluZGV4RmV0Y2hUYWJsZURhdGEgKgotdGFibGVf aW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsKQordGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4o UmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpCiB7CiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBz Y2FucyB0byBiZSBzdGFydGVkIHdoaWxlIENoZWNrWGlkQWxpdmUgaXMgc2V0LCBleGNlcHQKQEAg LTExODUsNyArMTE4Niw3IEBAIHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkK IAlpZiAodW5saWtlbHkoVHJhbnNhY3Rpb25JZElzVmFsaWQoQ2hlY2tYaWRBbGl2ZSkgJiYgIWJz eXNzY2FuKSkKIAkJZWxvZyhFUlJPUiwgInNjYW4gc3RhcnRlZCBkdXJpbmcgbG9naWNhbCBkZWNv ZGluZyIpOwogCi0JcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+aW5kZXhfZmV0Y2hfYmVnaW4ocmVs KTsKKwlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5pbmRleF9mZXRjaF9iZWdpbihyZWwsIGZsYWdz KTsKIH0KIAogLyoKLS0gCjIuNDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0016-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v35-0016-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tjqus15 RnJvbSAxYjQxYjBhODkzMjNjNDU2NTI5NjVkMmUxMWFmZDcyOWJkYjJjMWM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgTWFyIDIwMjYgMTY6MzE6MzMgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNSAxNi8xOF0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv biB0byBzY2FuCiBub2RlCgpQYXNzIGRvd24gaW5mb3JtYXRpb24gdG8gc2VxdWVudGlhbCBzY2Fu LCBpbmRleCBbb25seV0gc2NhbiwgYW5kIGJpdG1hcAp0YWJsZSBzY2FuIG5vZGVzIG9uIHdoZXRo ZXIgb3Igbm90IHRoZSBxdWVyeSBtb2RpZmllcyB0aGUgcmVsYXRpb24gYmVpbmcKc2Nhbm5lZC4g QSBsYXRlciBjb21taXQgd2lsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byB1cGRhdGUgdGhlIFZN CmR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyBvbmx5IGlmIHRoZSByZWxhdGlvbiBpcyBub3QgbW9k aWZpZWQgYnkgdGhlCnF1ZXJ5LgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxh Z2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJh emVsLmRlPgpSZXZpZXdlZC1ieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1 PgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS80Mzc5RkRBMy05NDQ2LTRFMkMtOUMxNS0zMkVGRThENEYz MUIlNDB5YW5kZXgtdGVhbS5ydQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2Fu LmMgfCAgOSArKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YyAgfCAgOSArKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jICAg ICAgfCAxOCArKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nh bi5jICAgICAgICB8IDI2ICsrKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggICAgICAgICAgICAgICB8ICA2ICsrKysrKwogc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaCAgICAgICAgICAgICAgfCAgMiArKwogNyBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNl cnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jCmluZGV4IGViZTJlODdhMjhiLi4zYThlYjlkOGI2MSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC04Niw2ICs4Niw3IEBAIGhlYXBhbV9pbmRl eF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncykKIAloc2Nhbi0+eHNfYmFz ZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCWhzY2FuLT54 c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0g IShmbGFncyAmIFNPX0hJTlRfUkVMX1JFQURfT05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19i YXNlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCAx MDZiY2QzMzAxYy4uMTAxNzY3NmZjZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jCkBAIC0xMDMsMTEgKzEwMywxOCBAQCBCaXRtYXBUYWJsZVNjYW5TZXR1cChC aXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Muc3NfY3VycmVu dFNjYW5EZXNjKQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7CisKKwkJaWYgKCFibXNfaXNfbWVt YmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJICAgbm9k ZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRf UkVMX1JFQURfT05MWTsKKwogCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQogCQkJdGFi bGVfYmVnaW5zY2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkgICBu b2RlLT5zcy5wcy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJICAgMCwKLQkJCQkJCQkgICBO VUxMLCAwKTsKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIGZsYWdzKTsKIAl9CiAKIAlub2Rl LT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0b3I7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwppbmRleCBjZjRkOWE0Zjgz Mi4uMmZlNzI0YTMyM2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwpAQCAtODQsNiArODQsMTIgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5v ZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOwor CisJCWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5y ZWxpZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0g U09fSElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhl IGluZGV4IG9ubHkgc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdlJ3JlCiAJCSAqIHNlcmlh bGx5IGV4ZWN1dGluZyBhbiBpbmRleCBvbmx5IHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBiZQpA QCAtOTQsNyArMTAwLDggQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUp CiAJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJCSAgICZub2RlLT5pb3Nz X0luc3RydW1lbnQsCiAJCQkJCQkJCSAgIG5vZGUtPmlvc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJ CSAgIG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsIDApOworCQkJCQkJCQkgICBub2RlLT5pb3Nz X051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkgICBmbGFncyk7CiAKIAkJbm9kZS0+aW9zc19TY2Fu RGVzYyA9IHNjYW5kZXNjOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXgg YTdhZjJmNjYyOGEuLjg3MzBkYWI3NDY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nh bi5jCkBAIC0xMDIsNiArMTAyLDEyIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkK IAogCWlmIChzY2FuZGVzYyA9PSBOVUxMKQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7CisKKwkJ aWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlk LAorCQkJCQkJICAgZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpKQorCQkJZmxhZ3MgPSBTT19I SU5UX1JFTF9SRUFEX09OTFk7CisKIAkJLyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgaW5k ZXggc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdlJ3JlCiAJCSAqIHNlcmlhbGx5IGV4ZWN1 dGluZyBhbiBpbmRleCBzY2FuIHRoYXQgd2FzIHBsYW5uZWQgdG8gYmUgcGFyYWxsZWwuCkBAIC0x MTEsNyArMTE3LDggQEAgSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkg ICBlc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQs CiAJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNz X051bU9yZGVyQnlLZXlzLCAwKTsKKwkJCQkJCQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlz LAorCQkJCQkJCQkgICBmbGFncyk7CiAKIAkJbm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7 CiAKQEAgLTE5OCw2ICsyMDUsMTIgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3Rh dGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3Mg PSAwOworCisJCWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbikt PnNjYW5yZWxpZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZs YWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUg aWYgdGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJp YWxseSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFs bGVsLgpAQCAtMjA3LDcgKzIyMCw4IEBAIEluZGV4TmV4dFdpdGhSZW9yZGVyKEluZGV4U2NhblN0 YXRlICpub2RlKQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICAm bm9kZS0+aXNzX0luc3RydW1lbnQsCiAJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywK LQkJCQkJCQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLCAwKTsKKwkJCQkJCQkJICAgbm9k ZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkgICBmbGFncyk7CiAKIAkJbm9kZS0+aXNz X1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4 IGQ5ZDdlYzA1MTZhLi4zMzYzNTQ5MjJhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5j CkBAIC02NSwxMyArNjUsMjAgQEAgU2VxTmV4dChTZXFTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAo c2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJCWlmICghYm1z X2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJ CSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09fSElOVF9SRUxf UkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIHNjYW4gaXMgbm90 IHBhcmFsbGVsLCBvciBpZiB3ZSdyZSBzZXJpYWxseQogCQkgKiBleGVjdXRpbmcgYSBzY2FuIHRo YXQgd2FzIHBsYW5uZWQgdG8gYmUgcGFyYWxsZWwuCiAJCSAqLwogCQlzY2FuZGVzYyA9IHRhYmxl X2JlZ2luc2Nhbihub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJCSAgIGVzdGF0 ZS0+ZXNfc25hcHNob3QsCi0JCQkJCQkJCSAgIDAsIE5VTEwsIDApOworCQkJCQkJCQkgICAwLCBO VUxMLCBmbGFncyk7CisKIAkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gc2NhbmRlc2M7 CiAJfQogCkBAIC0zNjcsMTQgKzM3NCwyMCBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2Vx U2NhblN0YXRlICpub2RlLAogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3MucHMuc3Rh dGU7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCXVpbnQzMgkJZmxhZ3MgPSAwOwog CiAJcHNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9kZS0+cHNjYW5fbGVuKTsK IAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShub2RlLT5zcy5zc19jdXJyZW50UmVsYXRp b24sCiAJCQkJCQkJCSAgcHNjYW4sCiAJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCk7CiAJ c2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX25vZGVfaWQs IHBzY2FuKTsKKwlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4p LT5zY2FucmVsaWQsCisJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJZmxh Z3MgPSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CisKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRl c2MgPQotCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uLCBwc2NhbiwgMCk7CisJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19j dXJyZW50UmVsYXRpb24sIHBzY2FuLAorCQkJCQkJCQkgZmxhZ3MpOwogfQogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkBAIC00MDQsOCArNDE3LDE1IEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZVdvcmtlcihTZXFTY2Fu U3RhdGUgKm5vZGUsCiAJCQkJCQkJUGFyYWxsZWxXb3JrZXJDb250ZXh0ICpwd2N4dCkKIHsKIAlQ YXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CisJdWludDMyCQlmbGFncyA9IDA7CisKKwlpZiAo IWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJ CQkJCSAgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpKQorCQlmbGFncyA9 IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKIAogCXBzY2FuID0gc2htX3RvY19sb29rdXAocHdjeHQt PnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7CiAJbm9kZS0+c3Mu c3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4sIDApOworCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxs ZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkgcHNjYW4sCisJCQkJCQkJ CSBmbGFncyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggN2VmNGNiYmZiMWUuLmMyMDIxOGY4MTkw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0xMzAsNiArMTMwLDEyIEBAIHR5cGVkZWYgc3RydWN0IElu ZGV4RmV0Y2hIZWFwRGF0YQogCiAJLyogQ3VycmVudCBoZWFwIGJsb2NrJ3MgY29ycmVzcG9uZGlu ZyBwYWdlIGluIHRoZSB2aXNpYmlsaXR5IG1hcCAqLwogCUJ1ZmZlcgkJeHNfdm1idWZmZXI7CisK KwkvKgorCSAqIFNvbWUgb3B0aW1pemF0aW9ucyBjYW4gb25seSBiZSBwZXJmb3JtZWQgaWYgdGhl IHF1ZXJ5IGRvZXMgbm90IG1vZGlmeQorCSAqIHRoZSB1bmRlcmx5aW5nIHJlbGF0aW9uLiBUcmFj ayB0aGF0IGhlcmUuCisJICovCisJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWw7CiB9IEluZGV4RmV0 Y2hIZWFwRGF0YTsKIAogLyogUmVzdWx0IGNvZGVzIGZvciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1 dW0gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGU4ODFlNGY4MmEwLi41OTkwMTFiYTU2NyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCkBAIC02Myw2ICs2Myw4IEBAIHR5cGVkZWYgZW51bSBTY2FuT3B0aW9u cwogCiAJLyogdW5yZWdpc3RlciBzbmFwc2hvdCBhdCBzY2FuIGVuZD8gKi8KIAlTT19URU1QX1NO QVBTSE9UID0gMSA8PCA5LAorCS8qIHNldCBpZiB0aGUgcXVlcnkgZG9lc24ndCBtb2RpZnkgdGhl IHJlbGF0aW9uICovCisJU09fSElOVF9SRUxfUkVBRF9PTkxZID0gMSA8PCAxMCwKIH0JCQlTY2Fu T3B0aW9uczsKIAogLyoKLS0gCjIuNDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0017-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v35-0017-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tjtjk16 RnJvbSA4OGE4NmRiZmM1NGRiMzhjODkwNzE4ZDc0NDE5ZDk0ZjE1ZGFkZTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDI3IEZlYiAyMDI2IDE2OjMzOjQwIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMTcvMThdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIGFuZCBDT1BZIEZSRUVaRSBtYXJrZWQgcGFnZXMgYXMgYWxsLXZpc2li bGUgb3IKYWxsLWZyb3plbi4KClRoaXMgY29tbWl0IGltcGxlbWVudHMgb24tYWNjZXNzIFZNIHNl dHRpbmcgZm9yIHNlcXVlbnRpYWwgc2NhbnMgYXMgd2VsbAphcyBmb3IgdGhlIHVuZGVybHlpbmcg aGVhcCByZWxhdGlvbiBpbiBpbmRleCBzY2FucyBhbmQgYml0bWFwIGhlYXAKc2NhbnMuCgpBdXRo b3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2VkLWJ5OiBLaXJp bGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tL2ZsYXQvQ0FBS1J1X1pNdzZOcGRfcW0yS00lMkJGd1EzY01PTXgxRGgzVk1ocDgt VjdTT0x4ZEs5LWclNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jICAgICAgICAgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jICAgICAgfCAgNiArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jICAgICAgICAgICB8IDQxICsrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgICAgICAgfCAxMiArKysrLS0KIC4uLi90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICstCiA2IGZpbGVzIGNoYW5n ZWQsIDUwIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggMmY5ZWY4NzQ2M2UuLjU1MzliYjhjMTBiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNjMzLDcgKzYzMyw4IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNj YW5EZXNjIHNzY2FuKQogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZv ciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29w dChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIsICZzY2FuLT5yc192bWJ1ZmZlcik7CisJaGVh cF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIsICZzY2FuLT5yc192 bWJ1ZmZlciwKKwkJCQkJCShzc2Nhbi0+cnNfZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkp KTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBjb250 ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggM2E4ZWI5ZDhiNjEuLmViNWExYjdiZDIxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTE0Nyw3ICsxNDcsOCBAQCBoZWFwYW1faW5k ZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJCSAqLwog CQlpZiAocHJldl9idWYgIT0gaHNjYW4tPnhzX2NidWYpCiAJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0 KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4tPnhzX2NidWYsCi0JCQkJCQkJCSZoc2Nhbi0+eHNf dm1idWZmZXIpOworCQkJCQkJCQkmaHNjYW4tPnhzX3ZtYnVmZmVyLAorCQkJCQkJCQloc2Nhbi0+ bW9kaWZpZXNfYmFzZV9yZWwpOwogCX0KIAogCS8qIE9idGFpbiBzaGFyZS1sb2NrIG9uIHRoZSBi dWZmZXIgc28gd2UgY2FuIGV4YW1pbmUgdmlzaWJpbGl0eSAqLwpAQCAtMjU0Miw3ICsyNTQzLDgg QEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICog UHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9z c2libGUuCiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyLCAm aHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBi dWZmZXIsICZoc2Nhbi0+cnNfdm1idWZmZXIsCisJCQkJCQlzY2FuLT5yc19mbGFncyAmIFNPX0hJ TlRfUkVMX1JFQURfT05MWSk7CiAKIAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2NrIG9u IHRoZSBidWZmZXIgY29udGVudCB3aGlsZSBleGFtaW5pbmcgdHVwbGUKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKaW5kZXggYjY2ZDQ5ZjRkNjAuLmZjMmRkY2I1YWI0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNDQsNiArNDQsOCBAQCB0eXBlZGVmIHN0cnVjdAog CWJvb2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0dGVtcHQgZnJlZXppbmcg dHVwbGVzICovCiAJYm9vbAkJYXR0ZW1wdF9mcmVlemU7CisJLyogd2hldGhlciB0byBhdHRlbXB0 IHNldHRpbmcgdGhlIFZNICovCisJYm9vbAkJYXR0ZW1wdF9zZXRfdm07CiAJc3RydWN0IFZhY3V1 bUN1dG9mZnMgKmN1dG9mZnM7CiAJUmVsYXRpb24JcmVsYXRpb247CiAKQEAgLTIxMyw3ICsyMTUs OCBAQCBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIAogc3Rh dGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBi b29sIGRvX3BydW5lLCBib29sIGRvX2hpbnRfcHJ1bmUsCiAJCQkJCQkJCSAgUHJ1bmVTdGF0ZSAq cHJzdGF0ZSk7Ci1zdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwgUHJ1bmVSZWFzb24gcmVhc29uKTsKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLCBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJCQkJ CSAgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUpOwogc3RhdGljIFRyYW5zYWN0aW9uSWQg Z2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19z ZXRfdm0sCiAJCQkJCQkJCQkgIHVpbnQ4IG9sZF92bWJpdHMsIHVpbnQ4IG5ld192bWJpdHMsCiAJ CQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgbGF0ZXN0X3hpZF9yZW1vdmVkLApAQCAtMjM3LDcgKzI0 MCw4IEBAIHN0YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVu ZSwgYm9vbCBkb19mcmVlemUsIGJvb2wgZG9fc2V0CiAgKiBwaW5uZWQuIElmIHdlIGZpbmQgVk0g Y29ycnVwdGlvbiBkdXJpbmcgcHJ1bmluZywgd2Ugd2lsbCBmaXggaXQuCiAgKi8KIHZvaWQKLWhl YXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1ZmZl ciAqdm1idWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLCBCdWZmZXIgKnZtYnVmZmVyLAorCQkJCQlib29sIHJlbF9yZWFkX29ubHkpCiB7 CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlUcmFuc2FjdGlvbklkIHBy dW5lX3hpZDsKQEAgLTMxOSw2ICszMjMsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLCBCdWZmZXIgKnZtYnVmZmVyKQogCQkJICogY3VycmVu dCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAqLwogCQkJcGFyYW1zLm9wdGlvbnMgPSAwOworCQkJaWYg KHJlbF9yZWFkX29ubHkpCisJCQkJcGFyYW1zLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfU0VU X1ZNOwogCiAJCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgmcGFyYW1zLCAmcHJlc3VsdCwg JmR1bW15X29mZl9sb2MsCiAJCQkJCQkJCQkgICBOVUxMLCBOVUxMKTsKQEAgLTM3NSw2ICszODEs NyBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkvKiBj dXRvZmZzIG11c3QgYmUgcHJvdmlkZWQgaWYgd2Ugd2lsbCBhdHRlbXB0IGZyZWV6aW5nICovCiAJ QXNzZXJ0KCEocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgfHwgcGFy YW1zLT5jdXRvZmZzKTsKIAlwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA9IChwYXJhbXMtPm9wdGlv bnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUtPmF0dGVtcHRfc2V0 X3ZtID0gKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9TRVRfVk0pICE9IDA7CiAJ cHJzdGF0ZS0+Y3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsKIAlwcnN0YXRlLT5yZWxhdGlvbiA9 IHBhcmFtcy0+cmVsYXRpb247CiAJcHJzdGF0ZS0+YmxvY2sgPSBCdWZmZXJHZXRCbG9ja051bWJl cihwYXJhbXMtPmJ1ZmZlcik7CkBAIC05MzcsMjEgKzk0NCwzNyBAQCBoZWFwX2ZpeF92bV9jb3Jy dXB0aW9uKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCiAgKiBUaGlz IGZ1bmN0aW9uIGRvZXMgbm90IGFjdHVhbGx5IHNldCB0aGUgVk0gYml0cyBvciBwYWdlLWxldmVs IHZpc2liaWxpdHkKICAqIGhpbnQsIFBEX0FMTF9WSVNJQkxFLgogICoKKyAqIFRoaXMgc2hvdWxk IGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRvX2ZyZWV6ZSBoYXMgYmVlbiBkZWNpZGVkIChhbmQgZG9f cHJ1bmUKKyAqIGhhcyBiZWVuIHNldCksIGFzIHRoZXNlIGZhY3RvciBpbnRvIG91ciBoZXVyaXN0 aWMtYmFzZWQgZGVjaXNpb24uCisgKgogICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3RoIFZN IGJpdHMgc2hvdWxkIGJlIHNldCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICovCiBzdGF0aWMgYm9v bAotaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsIFBydW5lUmVhc29u IHJlYXNvbikKK2hlYXBfcGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLCBQcnVu ZVJlYXNvbiByZWFzb24sCisJCQkJCSAgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUpCiB7 Ci0JLyoKLQkgKiBUaG91Z2ggb24tYWNjZXNzIHBydW5pbmcgbWFpbnRhaW5zIHByc3RhdGUtPnNl dF9hbGxfdmlzaWJsZSwgd2UgZG9uJ3QKLQkgKiBjb25zaWRlciBzZXR0aW5nIHRoZSBWTS4KLQkg Ki8KLQlpZiAocmVhc29uID09IFBSVU5FX09OX0FDQ0VTUykKKwlpZiAoIXByc3RhdGUtPmF0dGVt cHRfc2V0X3ZtKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoIXByc3RhdGUtPnNldF9hbGxfdmlz aWJsZSkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyoKKwkgKiBJZiB0aGlzIGlzIGFuIG9uLWFjY2Vz cyBjYWxsIGFuZCB3ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQKKwkgKiBzZXR0aW5n IHRoZSB2aXNpYmlsaXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVhcCBwYWdl IG9yLCBpZgorCSAqIHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRvaW5nIHNvIHdvdWxk IHJlcXVpcmUgaW5jbHVkaW5nIGEKKwkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSkgb2YgdGhlIGhl YXAgcGFnZSBpbiB0aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgorCSAqIHNob3VsZCBiZSByYXJlLCBh cyBvbi1hY2Nlc3MgcHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCisJICogcGRfcHJ1bmVf eGlkIGlzIHZhbGlkLgorCSAqLworCWlmIChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTICYmICFk b19wcnVuZSAmJiAhZG9fZnJlZXplICYmCisJCSghQnVmZmVySXNEaXJ0eShwcnN0YXRlLT5idWZm ZXIpIHx8IFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKHByc3RhdGUtPmJ1ZmZlcikpKQorCXsK KwkJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUtPnNldF9hbGxf ZnJvemVuID0gZmFsc2U7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIAlwcnN0YXRlLT5uZXdfdm1i aXRzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKIAogCWlmIChwcnN0YXRlLT5zZXRfYWxs X2Zyb3plbikKQEAgLTExNjYsNyArMTE4OSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQXNzZXJ0KCFwcnN0YXRlLnNldF9hbGxfZnJv emVuIHx8IHByc3RhdGUuc2V0X2FsbF92aXNpYmxlKTsKIAlBc3NlcnQoIXByc3RhdGUuc2V0X2Fs bF92aXNpYmxlIHx8IChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CiAKLQlkb19zZXRfdm0g PSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oJnByc3RhdGUsIHBhcmFtcy0+cmVhc29uKTsKKwlkb19z ZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oJnByc3RhdGUsIHBhcmFtcy0+cmVhc29uLCBk b19wcnVuZSwgZG9fZnJlZXplKTsKIAogCS8qCiAJICogbmV3X3ZtYml0cyBzaG91bGQgYmUgMCBy ZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKaW5kZXggZWY2MDc5NDVhOTMuLmFiNzY4MDBiNGRmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMDA3LDcgKzIwMDcsNyBAQCBsYXp5X3NjYW5f cHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkuYnVmZmVyID0gYnVmLAogCQkudm1idWZmZXIg PSB2bWJ1ZmZlciwKIAkJLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9TQ0FOLAotCQkub3B0aW9ucyA9 IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJCS5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSB8IEhFQVBfUEFHRV9QUlVORV9TRVRfVk0sCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52aXN0 ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMsCiAJfTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApp bmRleCBjMjAyMThmODE5MC4uMGEzZTNkZjliMmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYg KzQyLDcgQEAKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplICovCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cJCSgxIDw8 IDApCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUJCQkJKDEgPDwgMSkKKyNkZWZpbmUg SEVBUF9QQUdFX1BSVU5FX1NFVF9WTQkJCQkoMSA8PCAyKQogCiB0eXBlZGVmIHN0cnVjdCBCdWxr SW5zZXJ0U3RhdGVEYXRhICpCdWxrSW5zZXJ0U3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBHbG9iYWxW aXNTdGF0ZSBHbG9iYWxWaXNTdGF0ZTsKQEAgLTk2LDcgKzk3LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg SGVhcFNjYW5EZXNjRGF0YQogCiAJLyoKIAkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBhbmQgYml0 bWFwIGhlYXAgc2NhbnMuIFRoZSBjdXJyZW50IGhlYXAgYmxvY2sncwotCSAqIGNvcnJlc3BvbmRp bmcgcGFnZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCisJICogY29ycmVzcG9uZGluZyBwYWdlIGlu IHRoZSB2aXNpYmlsaXR5IG1hcC4gSWYgdGhlIHJlbGF0aW9uIGlzIG5vdAorCSAqIG1vZGlmaWVk IGJ5IHRoZSBxdWVyeSwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHNldCB0aGUgVk0uCiAJICovCiAJ QnVmZmVyCQlyc192bWJ1ZmZlcjsKIApAQCAtMTI4LDcgKzEzMCwxMSBAQCB0eXBlZGVmIHN0cnVj dCBJbmRleEZldGNoSGVhcERhdGEKIAkgKi8KIAlCdWZmZXIJCXhzX2NidWY7CiAKLQkvKiBDdXJy ZW50IGhlYXAgYmxvY2sncyBjb3JyZXNwb25kaW5nIHBhZ2UgaW4gdGhlIHZpc2liaWxpdHkgbWFw ICovCisJLyoKKwkgKiBDdXJyZW50IGhlYXAgYmxvY2sncyBjb3JyZXNwb25kaW5nIHBhZ2UgaW4g dGhlIHZpc2liaWxpdHkgbWFwLiBGb3IKKwkgKiBpbmRleCBzY2FucyB0aGF0IGRvIG5vdCBtb2Rp ZnkgdGhlIHVuZGVybHlpbmcgaGVhcCB0YWJsZSwgb24tYWNjZXNzCisJICogcHJ1bmluZyBtYXkg c2V0IHRoZSBWTSBvbi1hY2Nlc3MuCisJICovCiAJQnVmZmVyCQl4c192bWJ1ZmZlcjsKIAogCS8q CkBAIC00MzUsNyArNDQxLDcgQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxl dGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwogZXh0 ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKLQkJCQkJCQkJQnVmZmVyICp2bWJ1ZmZlcik7CisJCQkJCQkJCUJ1ZmZlciAqdm1idWZm ZXIsIGJvb2wgcmVsX3JlYWRfb25seSk7CiBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5k X2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJCQkJICAgUHJ1bmVGcmVl emVSZXN1bHQgKnByZXN1bHQsCiAJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rp bmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rpbmcu cGwKaW5kZXggZDI2NGE2OThmZjYuLmE1NTM2YmE0ZmY2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKKysrIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCkBAIC0yOTYsNiArMjk2 LDcgQEAgd2FsX2xldmVsID0gJ2xvZ2ljYWwnCiBtYXhfcmVwbGljYXRpb25fc2xvdHMgPSA0CiBt YXhfd2FsX3NlbmRlcnMgPSA0CiBhdXRvdmFjdXVtID0gb2ZmCitob3Rfc3RhbmRieV9mZWVkYmFj ayA9IG9uCiB9KTsKICRub2RlX3ByaW1hcnktPmR1bXBfaW5mbzsKICRub2RlX3ByaW1hcnktPnN0 YXJ0OwpAQCAtNzQ4LDcgKzc0OSw3IEBAIGNoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFu ZGxlLAogJGxvZ3N0YXJ0ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKIAogcmVhY3RpdmVf c2xvdHNfY2hhbmdlX2hmc19hbmRfd2FpdF9mb3JfeG1pbnMoJ3NoYXJlZF9yb3dfcmVtb3ZhbF8n LAotCSdub19jb25mbGljdF8nLCAwLCAxKTsKKwknbm9fY29uZmxpY3RfJywgMSwgMCk7CiAKICMg VGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBjb25mbGljdAogd2FpdF91bnRpbF92YWN1dW1fY2Fu X3JlbW92ZSgKLS0gCjIuNDMuMAoK --0000000000000f1b2e064c131624 Content-Type: text/x-patch; charset="UTF-8"; name="v35-0018-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v35-0018-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9tk02817 RnJvbSA4MTVhMmQxMGViYzZmNjcyYmU1NTA4YTBjNGE5OGZmODY2ZDBkNzFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMTgvMThdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYW5kIHNldCB0aGUg Vk0KYWxsLXZpc2libGUgYWZ0ZXIgYSBwYWdlIGlzIGZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVk IHR1cGxlcyB0aGUgZmlyc3QKdGltZSBpdCBpcyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRy ZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUgaW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0 aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQgdGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3Vs ZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5zZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1 Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRpbCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2Fu IGJlIHBydW5lZCBlYXJsaWVyLgoKVGhlIGluZGV4IGtpbGx0dXBsZXMgdGVzdCBoYWQgdG8gYmUg dXBkYXRlZCB0byByZWZsZWN0IGEgbGFyZ2VyIG51bWJlcgpvZiBoaXRzIGJ5IHNvbWUgYWNjZXNz ZXMuIFNpbmNlIHRoZSBwcnVuZV94aWQgaXMgc2V0IGJ5IHRoZSBmaWxsL2luc2VydApzdGVwLCBv bi1hY2Nlc3MgcHJ1bmluZyBjYW4gaGFwcGVuIGR1cmluZyB0aGUgZmlyc3QgYWNjZXNzIHN0ZXAg KGJlZm9yZQp0aGUgREVMRVRFKS4gVGhpcyBpcyB3aGVuIHRoZSBWTSBpcyBleHRlbmRlZC4gQWZ0 ZXIgdGhlIERFTEVURSwgdGhlIG5leHQKYWNjZXNzIGhpdHMgdGhlIFZNIGJsb2NrIGluc3RlYWQg b2YgZXh0ZW5kaW5nIGl0LiBUaHVzLCBhbiBhZGRpdGlvbmFsCmJ1ZmZlciBoaXQgaXMgY291bnRl ZCBmb3IgdGhlIHRhYmxlLgoKUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFp bC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAg IHwgMzEgKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X3hsb2cuYyAgICAgICAgIHwgMTcgKysrKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgICAgICAgICAgIHwgMTQgKysrKy0tLS0tCiAuLi4vbW9kdWxlcy9pbmRleC9l eHBlY3RlZC9raWxsdHVwbGVzLm91dCAgICAgfCAgOCArKy0tLQogNCBmaWxlcyBjaGFuZ2VkLCA0 NyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j CmluZGV4IDU1MzliYjhjMTBiLi5iYjEyNGJjNzY3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKQEAgLTIxNTYsNiArMjE1Niw3IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBI ZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3Vy cmVudFRyYW5zYWN0aW9uSWQoKTsKIAlIZWFwVHVwbGUJaGVhcHR1cDsKIAlCdWZmZXIJCWJ1ZmZl cjsKKwlQYWdlCQlwYWdlOwogCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCWJv b2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxzZTsKIApAQCAtMjE4Miw2ICsyMTgzLDggQEAg aGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBj aWQsCiAJCQkJCQkJCQkgICAmdm1idWZmZXIsIE5VTEwsCiAJCQkJCQkJCQkgICAwKTsKIAorCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisKIAkvKgogCSAqIFdlJ3JlIGFib3V0IHRvIGRv IHRoZSBhY3R1YWwgaW5zZXJ0IC0tIGJ1dCBjaGVjayBmb3IgY29uZmxpY3QgZmlyc3QsIHRvCiAJ ICogYXZvaWQgcG9zc2libHkgaGF2aW5nIHRvIHJvbGwgYmFjayB3b3JrIHdlJ3ZlIGp1c3QgZG9u ZS4KQEAgLTIyMDUsMjUgKzIyMDgsMjkgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24s IEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJUmVsYXRpb25QdXRIZWFwVHVwbGUocmVs YXRpb24sIGJ1ZmZlciwgaGVhcHR1cCwKIAkJCQkJCSAob3B0aW9ucyAmIEhFQVBfSU5TRVJUX1NQ RUNVTEFUSVZFKSAhPSAwKTsKIAotCWlmIChQYWdlSXNBbGxWaXNpYmxlKEJ1ZmZlckdldFBhZ2Uo YnVmZmVyKSkpCisJaWYgKFBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJewogCQlhbGxfdmlzaWJs ZV9jbGVhcmVkID0gdHJ1ZTsKLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKGJ1 ZmZlcikpOworCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHJlbGF0aW9uLAogCQkJCQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJihoZWFwdHVw LT50X3NlbGYpKSwKIAkJCQkJCQl2bWJ1ZmZlciwgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsK IAl9CiAKIAkvKgotCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlz IHBhZ2UgPworCSAqIFNldCBwZF9wcnVuZV94aWQgdG8gdHJpZ2dlciBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZSgpIG9uY2UgdGhlIHBhZ2UKKwkgKiBpcyBmdWxsIHNvIHRoYXQgd2UgY2FuIHNl dCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUgVk0uCiAJICoKLQkgKiBUaGUgaW5zZXJ0aW5n IHRyYW5zYWN0aW9uIG1heSBldmVudHVhbGx5IGFib3J0IHRodXMgbWFraW5nIHRoaXMgdHVwbGUK LQkgKiBERUFEIGFuZCBoZW5jZSBhdmFpbGFibGUgZm9yIHBydW5pbmcuIFRob3VnaCB3ZSBkb24n dCB3YW50IHRvIG9wdGltaXplCi0JICogZm9yIGFib3J0cywgaWYgbm8gb3RoZXIgdHVwbGUgaW4g dGhpcyBwYWdlIGlzIFVQREFURWQvREVMRVRFZCwgdGhlCi0JICogYWJvcnRlZCB0dXBsZSB3aWxs IG5ldmVyIGJlIHBydW5lZCB1bnRpbCBuZXh0IHZhY3V1bSBpcyB0cmlnZ2VyZWQuCisJICogU2V0 dGluZyBwZF9wcnVuZV94aWQgaXMgYWxzbyBoYW5keSBpZiB0aGUgaW5zZXJ0aW5nIHRyYW5zYWN0 aW9uCisJICogZXZlbnR1YWxseSBhYm9ydHMgbWFraW5nIHRoaXMgdHVwbGUgREVBRCBhbmQgaGVu Y2UgYXZhaWxhYmxlIGZvcgorCSAqIHBydW5pbmcuIElmIG5vIG90aGVyIHR1cGxlIGluIHRoaXMg cGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZSBhYm9ydGVkCisJICogdHVwbGUgd291bGQgbmV2 ZXIgb3RoZXJ3aXNlIGJlIHBydW5lZCB1bnRpbCBuZXh0IHZhY3V1bSBpcyB0cmlnZ2VyZWQuCiAJ ICoKLQkgKiBJZiB5b3UgZG8gYWRkIFBhZ2VTZXRQcnVuYWJsZSBoZXJlLCBhZGQgaXQgaW4gaGVh cF94bG9nX2luc2VydCB0b28uCisJICogRG9uJ3Qgc2V0IGl0IGlmIHdlIGFyZSBpbiBib290c3Ry YXAgbW9kZSBvciB3ZSBhcmUgaW5zZXJ0aW5nIGEgZnJvemVuCisJICogdHVwbGUuCiAJICovCisJ aWYgKFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpICYmICEob3B0aW9ucyAmIEhFQVBfSU5TRVJU X0ZST1pFTikpCisJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJTWFya0J1ZmZlckRp cnR5KGJ1ZmZlcik7CiAKQEAgLTIyMzMsNyArMjI0MCw2IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9u IHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQl4bF9oZWFwX2luc2Vy dCB4bHJlYzsKIAkJeGxfaGVhcF9oZWFkZXIgeGxoZHI7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwot CQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQl1aW50OAkJaW5mbyA9IFhM T0dfSEVBUF9JTlNFUlQ7CiAJCWludAkJCWJ1ZmZsYWdzID0gMDsKIApAQCAtMjU5OCw4ICsyNjA0 LDEzIEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xv dCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJfQogCiAJCS8qCi0JCSAqIFhYWCBTaG91bGQgd2Ug c2V0IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQorCQkg KiBTZXQgcGRfcHJ1bmVfeGlkLiBTZWUgaGVhcF9pbnNlcnQoKSBmb3IgbW9yZSBvbiB3aHkgd2Ug ZG8gdGhpcyB3aGVuCisJCSAqIGluc2VydGluZyB0dXBsZXMuIFRoaXMgb25seSBtYWtlcyBzZW5z ZSBpZiB3ZSBhcmVuJ3QgYWxyZWFkeQorCQkgKiBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiBpbiB0 aGUgVk0uIFdlIGFsc28gZG9uJ3Qgc2V0IGl0IGluCisJCSAqIGJvb3RzdHJhcCBtb2RlLgogCQkg Ki8KKwkJaWYgKCFhbGxfZnJvemVuX3NldCAmJiBUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkK KwkJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZm ZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBkZjg5ZjkzZWRi NC4uZWRkNWM5NDZjNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAt NDUwLDYgKzQ1MCwxNCBAQCBoZWFwX3hsb2dfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCiAJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKHBhZ2UpOyAvKiBuZWVkZWQg dG8gdXBkYXRlIEZTTSBiZWxvdyAqLwogCisJCS8qCisJCSAqIFNldCB0aGUgcGFnZSBwcnVuYWJs ZSB0byB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxhdGVyLCB3aGljaCBtYXkKKwkJICogc2V0 IHRoZSBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4gU2VlIGNvbW1lbnRzIGluIGhlYXBfaW5z ZXJ0KCkuCisJCSAqLworCQlpZiAoVHJhbnNhY3Rpb25JZElzTm9ybWFsKFhMb2dSZWNHZXRYaWQo cmVjb3JkKSkgJiYKKwkJCSFIZWFwVHVwbGVIZWFkZXJYbWluRnJvemVuKGh0dXApKQorCQkJUGFn ZVNldFBydW5hYmxlKHBhZ2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CisKIAkJUGFnZVNldExT TihwYWdlLCBsc24pOwogCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJ QkxFX0NMRUFSRUQpCkBAIC01OTksMTIgKzYwNywxOSBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0 KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VS VF9BTExfVklTSUJMRV9DTEVBUkVEKQogCQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKIAot CQkvKiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFy ZSB2aXNpYmxlICovCisJCS8qCisJCSAqIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQgaW1wbGll cyB0aGF0IGFsbCB0dXBsZXMgYXJlIHZpc2libGUuIElmCisJCSAqIHdlIGFyZSBub3Qgc2V0dGlu ZyB0aGUgcGFnZSBmcm96ZW4sIHRoZW4gc2V0IHRoZSBwYWdlJ3MgcHJ1bmFibGUKKwkJICogaGlu dCBzbyB0aGF0IHdlIHRyaWdnZXIgb24tYWNjZXNzIHBydW5pbmcgbGF0ZXIgd2hpY2ggbWF5IHNl dCB0aGUKKwkJICogcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUgVk0uCisJCSAqLwogCQlpZiAoeGxy ZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCkKIAkJewogCQkJUGFnZVNldEFs bFZpc2libGUocGFnZSk7CiAJCQlQYWdlQ2xlYXJQcnVuYWJsZShwYWdlKTsKIAkJfQorCQllbHNl CisJCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQpKTsKIAogCQlN YXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CmluZGV4IGZjMmRkY2I1YWI0Li43MmExYzMxMWJkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTE5MDQsMTYgKzE5MDQsMTQgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQog CQkJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CiAJCQlwcnN0YXRlLT5zZXRfYWxs X2Zyb3plbiA9IGZhbHNlOwogCi0JCQkvKiBUaGUgcGFnZSBzaG91bGQgbm90IGJlIG1hcmtlZCBh bGwtdmlzaWJsZSAqLwotCQkJaWYgKFBhZ2VJc0FsbFZpc2libGUocGFnZSkpCi0JCQkJaGVhcF9m aXhfdm1fY29ycnVwdGlvbihwcnN0YXRlLCBvZmZudW0pOwotCiAJCQkvKgotCQkJICogSWYgd2Ug d2FudGVkIHRvIG9wdGltaXplIGZvciBhYm9ydHMsIHdlIG1pZ2h0IGNvbnNpZGVyIG1hcmtpbmcK LQkJCSAqIHRoZSBwYWdlIHBydW5hYmxlIHdoZW4gd2Ugc2VlIElOU0VSVF9JTl9QUk9HUkVTUy4g IEJ1dCB3ZQotCQkJICogZG9uJ3QuICBTZWUgcmVsYXRlZCBkZWNpc2lvbnMgYWJvdXQgd2hlbiB0 byBtYXJrIHRoZSBwYWdlCi0JCQkgKiBwcnVuYWJsZSBpbiBoZWFwYW0uYy4KKwkJCSAqIFRob3Vn aCB0aGVyZSBpcyBub3RoaW5nICJwcnVuYWJsZSIgb24gdGhlIHBhZ2UsIHdlIG1haW50YWluCisJ CQkgKiBwZF9wcnVuZV94aWQgZm9yIGluc2VydHMgc28gdGhhdCB3ZSBoYXZlIHRoZSBvcHBvcnR1 bml0eSB0bworCQkJICogbWFyayB0aGVtIGFsbC12aXNpYmxlIGR1cmluZyB0aGUgbmV4dCByb3Vu ZCBvZiBwcnVuaW5nLgogCQkJICovCisJCQloZWFwX3BydW5lX3JlY29yZF9wcnVuYWJsZShwcnN0 YXRlLAorCQkJCQkJCQkJICAgSGVhcFR1cGxlSGVhZGVyR2V0WG1pbihodHVwKSwKKwkJCQkJCQkJ CSAgIG9mZm51bSk7CiAJCQlicmVhazsKIAogCQljYXNlIEhFQVBUVVBMRV9ERUxFVEVfSU5fUFJP R1JFU1M6CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0 dXBsZXMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9leHBlY3RlZC9raWxsdHVwbGVzLm91 dAppbmRleCBiZTdkZGQ3NTZlZi4uNzAwMTQ0ZDY3ODMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmRleC9leHBlY3RlZC9raWxsdHVwbGVzLm91dApAQCAtNTQsNyArNTQsNyBAQCBzdGVwIGZs dXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAgcmVzdWx0 OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5oZWFwX2Fj Y2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdfc3RhdGlvX2FsbF90 YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFwX2FjY2Vz c2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAg ICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhlYXBfYWNj ZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9NIHBnX3N0 YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScpOwpAQCAt MTMwLDcgKzEzMCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxr c19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMgRlJPTSBj b3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3Jf dHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAg ICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJlOiBVUERB VEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBo ZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdr aWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0yODMsNyArMjgzLDcgQEAgc3RlcCBmbHVzaDogU0VMRUNU IEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDogU0VMRUNUIGhl YXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3NlcyBBUyBu ZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJF IHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3NlcwogLS0tLS0t LS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgMgogKDEgcm93 KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vzc2VzID0gKFNF TEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0aW9fYWxsX3Rh YmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTMyOSw3ICszMjks NyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK IHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291 bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdf c3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5l d19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAg ICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIg U0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hp dCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90 dXBsZScpOwotLSAKMi40My4wCgo= --0000000000000f1b2e064c131624--