<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>93123</bug_id>
          
          <creation_ts>2012-08-03 07:47:26 -0700</creation_ts>
          <short_desc>Meaning of deltaX/deltaY in PlatformGestureEvent is overloaded</short_desc>
          <delta_ts>2013-10-21 11:54:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>94238</dependson>
    
    <dependson>95573</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rick Byers">rbyers</reporter>
          <assigned_to name="Rick Byers">rbyers</assigned_to>
          <cc>abarth</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>jamesr</cc>
    
    <cc>rjkroege</cc>
    
    <cc>rniwa</cc>
    
    <cc>sadrul</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>686743</commentid>
    <comment_count>0</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-08-03 07:47:26 -0700</bug_when>
    <thetext>WebCore::PlatformGestureEvent has deltaX and deltaY fields that are used for a variety of different things for different gesture types:
  - For scroll update it&apos;s the scroll amount
  - For pinch it&apos;s a scale factor
  - For fling it&apos;s a velocity
  - For tap it&apos;s the tap count
This is confusing and error prone.

We should split these uses out into new fields, and where we care about wasting too much space new sub-classes of PlatformGestureEvent (or potentially a union).

I&apos;m not sure what the best trade-off between simplicity and space is.  For example, PlatformMouseEvent keeps a tapCount field, even though it&apos;s only relevent for mousedown/mouseup/click events.  So to be consistent we should probably just add a tapCount to PlatformGestureEvent.

For the others (which really are x and y values), perhaps we should use &quot;extraX&quot; and &quot;extraY&quot; fields and just have properly-named accessors that validate they are only called when the event is of the required type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686885</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 10:07:06 -0700</bug_when>
    <thetext>I wouldn&apos;t worry too much about space.  There are only a handful of these objects at a time.  It&apos;s not like you&apos;re adding bytes to Node, of which there are thousands in each page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697317</commentid>
    <comment_count>2</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-08-16 11:39:39 -0700</bug_when>
    <thetext>There was some concern over the performance, especially given that we&apos;re trying hard to drive down latency of some gesture events (scroll updates in particular).  I just did some measurements, and I agree there&apos;s no point worrying about a few extra fields.

In particular (for those that don&apos;t want to take my word for it), here is what I did:
 - Added an array of N floats to chromium&apos;s WebGestureEvent, which all get initialized to 0
 - Added an identical array to PlatformGestureEvent, and copied each element one-by-one (in a for loop) from WebGestureEvent
 - Measured latency of about 100 tap events on ChromeOS with different values of N by plumbing high-resolution event timestamps through to javascript using this patch: https://codereview.appspot.com/6452060 and comparing event timestamps to window.performance.webkitNow().  
- I did this without any touch event handlers on the page so that we wouldn&apos;t have the extra overhead of touch event round trip (which could add ~10ms in my tests).

With no extra padding (N=0), average latency on my hardware was about 3.8ms (+/- 0.8ms)
With N=1024 or 10240, any difference in latency was indistinguishable from noise
For N=10k, the average latency went up to about 6ms.

So as long as we keep the number of additional fields under 1k, I don&apos;t think we should worry about performance at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708971</commentid>
    <comment_count>3</comment_count>
      <attachid>161543</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-08-30 13:32:26 -0700</bug_when>
    <thetext>Created attachment 161543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709004</commentid>
    <comment_count>4</comment_count>
      <attachid>161543</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-30 13:56:22 -0700</bug_when>
    <thetext>Comment on attachment 161543
Patch

Attachment 161543 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13684827</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709068</commentid>
    <comment_count>5</comment_count>
      <attachid>161543</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-30 15:00:44 -0700</bug_when>
    <thetext>Comment on attachment 161543
Patch

Attachment 161543 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13683916</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709103</commentid>
    <comment_count>6</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-08-30 15:32:35 -0700</bug_when>
    <thetext>Have you considered using subclasses for the PlatformGestureEvent? While unions would seem to be the right choice for WebGestureEvent, it is not clear to me that PGEs could not benefit from division.

You could conceivably separate the WCIHi code from the PGE change if you want a smaller CL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709583</commentid>
    <comment_count>7</comment_count>
      <attachid>161690</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-08-31 06:55:31 -0700</bug_when>
    <thetext>Created attachment 161690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709603</commentid>
    <comment_count>8</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-08-31 07:35:45 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Have you considered using subclasses for the PlatformGestureEvent? While unions would seem to be the right choice for WebGestureEvent, it is not clear to me that PGEs could not benefit from division.

Yeah, it&apos;s certainly an option.  But at first glance it doesn&apos;t seem worth the extra complexity to me (more types, more Builder types, etc.).  I think you could make the argument that almost every Platform*Event type could be split into a lot more sub classes (eg. PlatformMouseEvent has some fields that are only used by some event types).  What&apos;s the right trade-off?

jamesr@ what&apos;s your opinion?
 
&gt; You could conceivably separate the WCIHi code from the PGE change if you want a smaller CL?

Sure.  I thought this was simple enough that it wasn&apos;t worth adding another serializing step (it&apos;s already 6 CLs back and forth between chromium and WebKit to do the full clean-up).  But if you think this is too big, I&apos;m happy to split this piece into two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709729</commentid>
    <comment_count>9</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-08-31 09:48:32 -0700</bug_when>
    <thetext>Ok, I&apos;ve split the WebGestureEvents changes off into bug 95573.  I&apos;ll upload a new patch here based against it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717856</commentid>
    <comment_count>10</comment_count>
      <attachid>163506</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-09-11 20:20:34 -0700</bug_when>
    <thetext>Created attachment 163506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722231</commentid>
    <comment_count>11</comment_count>
      <attachid>163506</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-17 13:44:42 -0700</bug_when>
    <thetext>Comment on attachment 163506
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=163506&amp;action=review

&gt; Source/WebCore/platform/PlatformGestureEvent.h:47
&gt; +        memset(&amp;m_data, 0, sizeof(m_data));

Why do we need to memset here? The rationale of this change should be explained in the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722245</commentid>
    <comment_count>12</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-09-17 13:54:54 -0700</bug_when>
    <thetext>Thanks for your comments!

(In reply to comment #11)
&gt; (From update of attachment 163506 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163506&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/PlatformGestureEvent.h:47
&gt; &gt; +        memset(&amp;m_data, 0, sizeof(m_data));
&gt; 
&gt; Why do we need to memset here? The rationale of this change should be explained in the change log.

jamesr@ argued that we should use a union here to avoid wasting space for event-type specific data (like the tap-count I added for GestureTapDown).  If we&apos;re going to use a union, then memset to zero all the union fields on initialization seems like a good idea to me, but we could explicitly initialize all the union members or some subset of them (but which subset?).

Once we have consensus on the approach, I&apos;ll update the Changelog with more rationale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722257</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-17 14:04:52 -0700</bug_when>
    <thetext>I don&apos;t think we should memset m_data unless they&apos;re used, in which case, we should be using the initialization list anyways. Calling memset is quite expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722264</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-17 14:12:12 -0700</bug_when>
    <thetext>I think memset() is the right thing to do for a union type.  I&apos;m not sure what you mean about &quot;quite expensive&quot; - do you expect it to be more expensive than zeroing out the fields by hand?

Saying &quot;use the initializer list&quot; doesn&apos;t make a ton of sense for unions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722267</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-17 14:27:01 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I think memset() is the right thing to do for a union type.

If we&apos;re going to use values in the union, then sure. But if we&apos;re not going to access/use the union, then there&apos;s no need to initialize it.

&gt; I&apos;m not sure what you mean about &quot;quite expensive&quot; - do you expect it to be more expensive than zeroing out the fields by hand?

Yes. memset results in a function call in many platforms.

&gt; Saying &quot;use the initializer list&quot; doesn&apos;t make a ton of sense for unions.

Why not? Don&apos;t we know the type, i.e. which value in the union to use, at the time of initialization?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941949</commentid>
    <comment_count>16</comment_count>
    <who name="Hugo Parente Lima">hugo.lima</who>
    <bug_when>2013-10-21 11:54:54 -0700</bug_when>
    <thetext>PlatformGestureEvent was removed from WebKit on bug 122650.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161543</attachid>
            <date>2012-08-30 13:32:26 -0700</date>
            <delta_ts>2012-08-31 06:55:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93123-20120830163214.patch</filename>
            <type>text/plain</type>
            <size>24344</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkxMTE4ODViYmM2YThk
MTYzNmVkODY3NWY5MzkzY2U2ZGE0Mzg4OC4uMmQ4NjhhNTI0MzI0ZjYwNzY0ZTFjNTdlYzZjZTg1
OTMwYzk2NmFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA4LTMwICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbiB1cCBvdmVybG9h
ZGVkIHVzZSBvZiBkZWx0YVgvZGVsdGFZIGluIFBsYXRmb3JtR2VzdHVyZUV2ZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzEyMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBuZXcgZXhw
bGljaXQgZXZlbnQgdHlwZS1zcGVjaWZpYyBmaWVsZHMgaW4gUGxhdGZvcm1HZXN0dXJlRXZlbnQK
KyAgICAgICAgdXNpbmcgYSB1bmlvbiwgdG8gcHJldmVudCBoYXZpbmcgdG8gb3ZlcmxvYWQgZGVs
dGFYL2RlbHRhWSB0byBtZWFuCisgICAgICAgIGRpZmZlcmVudCB0aGluZ3MgZm9yIGRpZmZlcmVu
dCBldmVudCB0eXBlcy4gIE5vdGUgdGhhdCBkZWx0YVggYW5kCisgICAgICAgIGRlbHRhWSBhcmUg
c3RpbGwgdXNlZCBmb3IgYSBmZXcgZGlmZmVyZW50IGV2ZW50IHR5cGVzIGluIHRoZSBNYWMgcG9y
dCwKKyAgICAgICAgYnV0IGluIGNocm9taXVtIHRoZXkncmUgbm93IHVzZWQgb25seSBmb3Igc2Ny
b2xsIHVwZGF0ZXMuICBUaGlzIGFsc28KKyAgICAgICAgcHJldmVudHMgaGF2aW5nIGFuICdhcmVh
JyBmaWVsZCBmb3IgYWxsIGdlc3R1cmUgdHlwZXMgd2hlbiBpdCdzIG9ubHkKKyAgICAgICAgdXNl
ZCBieSBhIHNtYWxsIG51bWJlciBvZiB0aGVtLgorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVRh
cCk6IFVzZSBleHBsaWNpdCB0YXBDb3VudAorICAgICAgICBpbnN0ZWFkIG9mIG92ZXJsb2FkZWQg
ZGVsdGFYCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDogQWRkIHRo
ZSBhZGRpdGlvbmFsIHR5cGUtc3BlY2lmaWMgZmllbGRzCisgICAgICAgIGFuZCBhZGQvdXBkYXRl
IGFjY2Vzc29ycyB0byBlbmZvcmNlIGNvcnJlY3QgdHlwZS1zcGVjaWZpYyB1c2FnZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVFdmVudCk6
CisgICAgICAgIChQbGF0Zm9ybUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6dGFwQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OmFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OnZlbG9jaXR5WCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
dmVsb2NpdHlZKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpzY2Fs
ZSk6CisKIDIwMTItMDgtMjkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtOZXcgTXVsdGljb2x1bW5dIFJlbmFtZSBtZXRob2RzIHRvIHByZXBhcmUgZm9yIHByb3Bl
ciBwYWdpbmF0aW9uIG9mIGNvbHVtbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOWE5
NDM3ZTkyZjRhZTkyNDI2M2FhYTRhZGRhZmFlOTZmNTA5NjhmNi4uZmE3YWJlOWNiMGZjZGVkMDY5
NTAwN2Q5ZTEwMzU3NjIxNzFhODEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxMi0wOC0zMCAgUmljayBCeWVycyAgPHJieWVyc0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgVXNlIG5ldyB0eXBlLXNwZWNpZmljIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGZp
ZWxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMx
MjMKKworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENo
cm9taXVtIGhhcyBiZWVuIHVwZGF0ZWQgdG8gc3RvcmUgZ2VzdHVyZS10eXBlIHNwZWNpZmljIGRl
dGFpbHMgaW4gdGhlCisgICAgICAgIG5ldyBmaWVsZHMgKGNycmV2LmNvbS8xNTI1MDgpLCBzbyB3
ZSBjYW4gbm93IHJlbHkgb24gdGhlbS4KKyAgICAgICAgVE9ETzogYWxzbyBsaXN0IHJldmlzaW9u
IFVSTCBmb3IKKyAgICAgICAgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwODk1MDI0
LyB3aGVuIGl0IGxhbmRzLgorCisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmNwcDoKKyAgICAgICAgVXBkYXRlIHRoZSBjb21wb3NpdG9yIHNjcm9sbCwgcGluY2gg
YW5kIGZsaW5nIGhhbmRsaW5nIHRvIHVzZSB0aGVzZSBuZXcgZmllbGRzLgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudEludGVy
bmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6Omhh
bmRsZUdlc3R1cmVGbGluZyk6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgVXBkYXRlIFBsYXRmb3JtR2VzdHVyZUV2ZW50L1dlYkdlc3R1cmVFdmVu
dCBjb252ZXJzaW9uIHRvIHVzZSB0aGUgbmV3CisgICAgICAgIGZpZWxkcyBvbiBib3RoIHNpZGVz
LgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
R2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1cmVFdmVudEJ1
aWxkZXI6OldlYkdlc3R1cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQp
OgorICAgICAgICBVcGRhdGUgZmxpbmcgc2Nyb2xsaW5nIGltcGxlbWVudGF0aW9uIGZvciBjb3Jy
ZWN0IGxvY2F0aW9uIG9mIHZlbG9jaXR5LgorICAgICAgICAqIHRlc3RzL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAg
ICAgIFVwZGF0ZSB0ZXN0cyB0byB1c2UgdGhlIG5ldyBmaWVsZHMuCisKKwogMjAxMi0wOC0yOSAg
U2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIEFkZCBtb3JlIHVuaXQgdGVzdCBjb3ZlcmFnZSBmb3Igc2VtYW50aWNzIG9mIGRyYXdhYmxl
Q29udGVudFJlY3QgYW5kIHZpc2libGVDb250ZW50UmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGRjNmNmYTg3NTJkMjdmZDFkNzRmMGJjMjM4ZTBlMzJkM2Y5Yzk5OTcu
LjAxYzkyMzBlYmYyMWE1ZWNiZTAyYmNjY2RkMWYzYjc5N2U3YTE3NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI0NjAsMjAgKzI0NjAsMTQgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZUdlc3R1cmVUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1
cmVFdmVudCkKICAgICAgICAgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5j
dHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwg
Z2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmUp
OwogCi0gICAgaW50IHRhcENvdW50ID0gMTsKLSAgICAvLyBGSVhNRTogZGVsZXRhWCBpcyBvdmVy
bG9hZGVkIHRvIG1lYW4gZGlmZmVyZW50IHRoaW5ncyBmb3IgZGlmZmVyZW50IGdlc3R1cmVzLgot
ICAgIC8vIGh0dHA6Ly93a2IudWcvOTMxMjMKLSAgICBpZiAoZ2VzdHVyZUV2ZW50LmRlbHRhWCgp
ID4gMCkKLSAgICAgICAgdGFwQ291bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGdlc3R1cmVFdmVudC5k
ZWx0YVgoKSk7Ci0KICAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTsKICAgICBQbGF0
Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihhZGp1c3RlZFBvaW50LCBnZXN0dXJlRXZlbnQu
Z2xvYmFsUG9zaXRpb24oKSwKLSAgICAgICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91
c2VQcmVzc2VkLCB0YXBDb3VudCwKKyAgICAgICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VQcmVzc2VkLCBnZXN0dXJlRXZlbnQudGFwQ291bnQoKSwKICAgICAgICAgZ2VzdHVyZUV2
ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRL
ZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsK
ICAgICBkZWZhdWx0UHJldmVudGVkIHw9IGhhbmRsZU1vdXNlUHJlc3NFdmVudChmYWtlTW91c2VE
b3duKTsKIAogICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChhZGp1c3RlZFBvaW50
LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwKLSAgICAgICAgTGVmdEJ1dHRvbiwgUGxh
dGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgdGFwQ291bnQsCisgICAgICAgIExlZnRCdXR0b24s
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQsIGdlc3R1cmVFdmVudC50YXBDb3VudCgpLAog
ICAgICAgICBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwg
Z2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZl
bnQudGltZXN0YW1wKCkpOwogICAgIGRlZmF1bHRQcmV2ZW50ZWQgfD0gaGFuZGxlTW91c2VSZWxl
YXNlRXZlbnQoZmFrZU1vdXNlVXApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1HZXN0dXJlRXZlbnQuaAppbmRleCBlZDU1N2MxNzg1OGQ1NWFkMjMyYjliNzYyMzQ0MWUw
MWE0YWZmZWUyLi4xMzlhZmEwOGU4NjA3NjA4YWM1NGMxMzZjNDNkMWU3ZjhmM2RjOTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKQEAgLTMy
LDYgKzMyLDggQEAKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw2ICs0
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RlbHRhWCgwKQogICAgICAgICAsIG1fZGVsdGFZ
KDApCiAgICAgeworICAgICAgICBtZW1zZXQoJm1fZGF0YSwgMCwgc2l6ZW9mKG1fZGF0YSkpOwog
ICAgIH0KIAogICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGRvdWJsZSB0aW1l
c3RhbXAsIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBib29sIHNoaWZ0S2V5LCBib29sIGN0
cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCkBAIC01MSwzMiArNTQsOTYgQEAgcHVi
bGljOgogICAgICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKICAgICAgICAgLCBtX2RlbHRhWShkZWx0
YVkpCiAgICAgeworICAgICAgbWVtc2V0KCZtX2RhdGEsIDAsIHNpemVvZihtX2RhdGEpKTsKICAg
ICB9CiAKICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudChUeXBlIHR5cGUsIGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBkb3VibGUgdGltZXN0
YW1wLCBjb25zdCBJbnRTaXplJiBhcmVhLCBjb25zdCBGbG9hdFBvaW50JiBkZWx0YSwgYm9vbCBz
aGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQogICAgICAg
ICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtl
eSwgdGltZXN0YW1wKQogICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICwg
bV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKLSAgICAgICAgLCBtX2FyZWEoYXJlYSkK
ICAgICAgICAgLCBtX2RlbHRhWChkZWx0YS54KCkpCiAgICAgICAgICwgbV9kZWx0YVkoZGVsdGEu
eSgpKQogICAgIHsKKyAgICAgIG1lbXNldCgmbV9kYXRhLCAwLCBzaXplb2YobV9kYXRhKSk7Cisg
ICAgICBBU1NFUlQodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwIHx8IHR5cGUgPT0g
UGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzcyk7CisgICAgICBpZiAobV90eXBlID09IFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MpIHsKKyAgICAgICAgICBtX2RhdGEubV9sb25n
UHJlc3MubV93aWR0aCA9IGFyZWEud2lkdGgoKTsKKyAgICAgICAgICBtX2RhdGEubV9sb25nUHJl
c3MubV9oZWlnaHQgPSBhcmVhLmhlaWdodCgpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBt
X2RhdGEubV90YXAubV93aWR0aCA9IGFyZWEud2lkdGgoKTsKKyAgICAgICAgICBtX2RhdGEubV90
YXAubV9oZWlnaHQgPSBhcmVhLmhlaWdodCgpOworICAgICAgfQogICAgIH0KIAogICAgIGNvbnN0
IEludFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0gLy8gUGxh
dGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfSAvLyBTY3JlZW4gY29vcmRp
bmF0ZXMuCiAKLSAgICBjb25zdCBJbnRTaXplJiBhcmVhKCkgY29uc3QgeyByZXR1cm4gbV9hcmVh
OyB9Ci0KICAgICBmbG9hdCBkZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQogICAg
IGZsb2F0IGRlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFZOyB9Ci0gICAgCisKKyAgICBp
bnQgdGFwQ291bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0
Zm9ybUV2ZW50OjpHZXN0dXJlVGFwKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5tX3RhcC5tX3Rh
cENvdW50OworICAgIH0KKworICAgIEludFNpemUgYXJlYSgpIGNvbnN0CisgICAgeworICAgICAg
ICAvLyBTdXBwb3J0ZWQgYnkgbXVsdGlwbGUgZXZlbnQgdHlwZXMgKGFuZCBwcm9iYWJseSBtb3Jl
IGluIHRoZSBmdXR1cmUpLCBzbworICAgICAgICAvLyBkb24ndCByZXF1aXJlIGNhbGxlcnMgdG8g
a25vdyB3aGljaCBvbmVzIHN1cHBvcnQgaXQuCisgICAgICAgIGlmIChtX3R5cGUgPT0gUGxhdGZv
cm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzcykKKyAgICAgICAgICAgIHJldHVybiBJbnRTaXplKG1f
ZGF0YS5tX2xvbmdQcmVzcy5tX3dpZHRoLCBtX2RhdGEubV9sb25nUHJlc3MubV9oZWlnaHQpOwor
ICAgICAgICBpZiAobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXApCisgICAgICAg
ICAgICByZXR1cm4gSW50U2l6ZShtX2RhdGEubV90YXAubV93aWR0aCwgbV9kYXRhLm1fdGFwLm1f
aGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICB9CisKKyAgICBmbG9hdCB2
ZWxvY2l0eVgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5tX3Nj
cm9sbFVwZGF0ZS5tX3ZlbG9jaXR5WDsKKyAgICB9CisKKyAgICBmbG9hdCB2ZWxvY2l0eVkoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlU2Nyb2xsVXBkYXRlKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5tX3Njcm9sbFVwZGF0ZS5t
X3ZlbG9jaXR5WTsKKyAgICB9CisKKyAgICBmbG9hdCBzY2FsZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZSk7
CisgICAgICAgIHJldHVybiBtX2RhdGEubV9waW5jaFVwZGF0ZS5tX3NjYWxlOworICAgIH0KKwog
cHJvdGVjdGVkOgogICAgIEludFBvaW50IG1fcG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9i
YWxQb3NpdGlvbjsKLSAgICBJbnRTaXplIG1fYXJlYTsKKwogICAgIGZsb2F0IG1fZGVsdGFYOwog
ICAgIGZsb2F0IG1fZGVsdGFZOworCisgICAgdW5pb24geworICAgICAgc3RydWN0IHsKKyAgICAg
ICAgaW50IG1fdGFwQ291bnQ7CisgICAgICAgIGludCBtX3dpZHRoOworICAgICAgICBpbnQgbV9o
ZWlnaHQ7CisgICAgICB9IG1fdGFwOworCisgICAgICBzdHJ1Y3QgeworICAgICAgICBpbnQgbV93
aWR0aDsKKyAgICAgICAgaW50IG1faGVpZ2h0OworICAgICAgfSBtX2xvbmdQcmVzczsKKworICAg
ICAgc3RydWN0IHsKKyAgICAgICAgZmxvYXQgbV92ZWxvY2l0eVg7CisgICAgICAgIGZsb2F0IG1f
dmVsb2NpdHlZOworICAgICAgfSBtX3Njcm9sbFVwZGF0ZTsKKworICAgICAgc3RydWN0IHsKKyAg
ICAgICAgZmxvYXQgbV9zY2FsZTsKKyAgICAgIH0gbV9waW5jaFVwZGF0ZTsKKyAgICB9IG1fZGF0
YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApp
bmRleCA4MDg0ZDcxNWM3YjAyYTU3OGU0MWVjYmEzZTk5Mzg0ZjY0MmFkMmU5Li4xZTUwMzg1NTBi
MDE3OTM1YzBmZGQyM2JlMzU0OWYyYWEyYTE3NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3Bw
CkBAIC0yMTYsNyArMjE2LDggQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50
RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgICAg
IHJldHVybiBEaWROb3RIYW5kbGU7CiAKICAgICAgICAgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmV2ZW50
KTsKLSAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJ5KEludFBvaW50KGdlc3R1
cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSksIEludFNpemUoLWdlc3R1cmVFdmVudC5kZWx0YVgs
IC1nZXN0dXJlRXZlbnQuZGVsdGFZKSk7CisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5z
Y3JvbGxCeShJbnRQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLAorICAgICAg
ICAgICAgSW50U2l6ZSgtZ2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCwgLWdl
c3R1cmVFdmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkpKTsKICAgICAgICAgcmV0dXJuIERp
ZEhhbmRsZTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVNjcm9sbEVuZCkgewogICAgICAgICBBU1NFUlQobV9leHBlY3RTY3JvbGxVcGRhdGVFbmQp
OwpAQCAtMjQ2LDcgKzI0Nyw3IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVu
dERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgfSBlbHNl
IGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZSkgewog
ICAgICAgICBBU1NFUlQobV9leHBlY3RQaW5jaFVwZGF0ZUVuZCk7CiAgICAgICAgIGNvbnN0IFdl
Ykdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1
cmVFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5waW5jaEdl
c3R1cmVVcGRhdGUoZ2VzdHVyZUV2ZW50LmRlbHRhWCwgSW50UG9pbnQoZ2VzdHVyZUV2ZW50Lngs
IGdlc3R1cmVFdmVudC55KSk7CisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5waW5jaEdl
c3R1cmVVcGRhdGUoZ2VzdHVyZUV2ZW50LmRhdGEucGluY2hVcGRhdGUuc2NhbGUsIEludFBvaW50
KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSkpOwogICAgICAgICByZXR1cm4gRGlkSGFu
ZGxlOwogICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RmxpbmdTdGFydCkgewogICAgICAgICBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVu
dCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmZXZlbnQpOwpAQCAtMjY3
LDkgKzI2OCw5IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0
aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgc3dpdGNoIChzY3JvbGxT
dGF0dXMpIHsKICAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkOiB7
CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nOjpzdGFydGVkIik7Ci0gICAgICAgIE93blB0
cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2ZSA9IFRvdWNocGFkRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZ2VzdHVyZUV2ZW50LmRlbHRhWCwgZ2Vz
dHVyZUV2ZW50LmRlbHRhWSkpOworICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+
IGZsaW5nQ3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShG
bG9hdFBvaW50KGdlc3R1cmVFdmVudC5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlYLCBnZXN0dXJl
RXZlbnQuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5WSkpOwogICAgICAgICBtX3doZWVsRmxpbmdB
bmltYXRpb24gPSBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUdlc3R1
cmVUb0NDR2VzdHVyZUFkYXB0ZXI6OmNyZWF0ZShmbGluZ0N1cnZlLnJlbGVhc2UoKSksIHRoaXMp
OwotICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRhID0gV2ViRmxvYXRQb2ludChn
ZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKTsKKyAgICAgICAgbV93aGVl
bEZsaW5nUGFyYW1ldGVycy5kZWx0YSA9IFdlYkZsb2F0UG9pbnQoZ2VzdHVyZUV2ZW50LmRhdGEu
ZmxpbmdTdGFydC52ZWxvY2l0eVgsIGdlc3R1cmVFdmVudC5kYXRhLmZsaW5nU3RhcnQudmVsb2Np
dHlZKTsKICAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludCA9IFdlYlBvaW50KGdl
c3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFt
ZXRlcnMuZ2xvYmFsUG9pbnQgPSBXZWJQb2ludChnZXN0dXJlRXZlbnQuZ2xvYmFsWCwgZ2VzdHVy
ZUV2ZW50Lmdsb2JhbFkpOwogICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLm1vZGlmaWVy
cyA9IGdlc3R1cmVFdmVudC5tb2RpZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKaW5kZXggMDM5MWMyODViN2Y4
ZTNlNjY5NTE2MzlkMzY1ZjU4YmQ3M2U4YTk5Mi4uODY4YTJhMWRkYzhkM2IxNmM5N2M4MTQ4ZDBi
MjFiZjExMTYwMGRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW5wdXRFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcApAQCAtMTQ5LDEwICsxNDksMTYgQEAgUGxhdGZv
cm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0
KiB3aWRnZXQsIGNvbnN0IFcKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlU2Nyb2xsVXBkYXRlOworICAgICAgICBtX2RlbHRhWCA9IGUuZGF0YS5zY3JvbGxVcGRh
dGUuZGVsdGFYOworICAgICAgICBtX2RlbHRhWSA9IGUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZ
OworICAgICAgICBtX2RhdGEubV9zY3JvbGxVcGRhdGUubV92ZWxvY2l0eVggPSBlLmRhdGEuc2Ny
b2xsVXBkYXRlLnZlbG9jaXR5WDsKKyAgICAgICAgbV9kYXRhLm1fc2Nyb2xsVXBkYXRlLm1fdmVs
b2NpdHlZID0gZS5kYXRhLnNjcm9sbFVwZGF0ZS52ZWxvY2l0eVk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKICAgICAgICAgbV90eXBlID0gUGxh
dGZvcm1FdmVudDo6R2VzdHVyZVRhcDsKLSAgICAgICAgbV9hcmVhID0gSW50U2l6ZShlLmJvdW5k
aW5nQm94LndpZHRoLCBlLmJvdW5kaW5nQm94LmhlaWdodCk7CisgICAgICAgIG1fZGF0YS5tX3Rh
cC5tX3dpZHRoID0gZS5kYXRhLnRhcC53aWR0aDsKKyAgICAgICAgbV9kYXRhLm1fdGFwLm1faGVp
Z2h0ID0gZS5kYXRhLnRhcC5oZWlnaHQ7CisgICAgICAgIG1fZGF0YS5tX3RhcC5tX3RhcENvdW50
ID0gZS5kYXRhLnRhcC50YXBDb3VudDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlVGFwRG93bjoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6
R2VzdHVyZVRhcERvd247CkBAIC0xNjUsNyArMTcxLDggQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRC
dWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0
IFcKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1By
ZXNzOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOwot
ICAgICAgICBtX2FyZWEgPSBJbnRTaXplKGUuYm91bmRpbmdCb3gud2lkdGgsIGUuYm91bmRpbmdC
b3guaGVpZ2h0KTsKKyAgICAgICAgbV9kYXRhLm1fbG9uZ1ByZXNzLm1fd2lkdGggPSBlLmRhdGEu
bG9uZ1ByZXNzLndpZHRoOworICAgICAgICBtX2RhdGEubV9sb25nUHJlc3MubV9oZWlnaHQgPSBl
LmRhdGEubG9uZ1ByZXNzLmhlaWdodDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZVBpbmNoQmVnaW47CkBAIC0xNzUsMTQgKzE4MiwxMyBAQCBQbGF0Zm9ybUdlc3R1
cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdl
dCwgY29uc3QgVwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVQaW5jaFVwZGF0ZToKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVBp
bmNoVXBkYXRlOworICAgICAgICBtX2RhdGEubV9waW5jaFVwZGF0ZS5tX3NjYWxlID0gZS5kYXRh
LnBpbmNoVXBkYXRlLnNjYWxlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgbV9wb3NpdGlvbiA9IHdpZGdldC0+
Y29udmVydEZyb21Db250YWluaW5nV2luZG93KEludFBvaW50KGUueCwgZS55KSk7CiAgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGUuZ2xvYmFsWCwgZS5nbG9iYWxZKTsKLSAgICBtX2Rl
bHRhWCA9IGUuZGVsdGFYOwotICAgIG1fZGVsdGFZID0gZS5kZWx0YVk7CiAgICAgbV90aW1lc3Rh
bXAgPSBlLnRpbWVTdGFtcFNlY29uZHM7CiAKICAgICBtX21vZGlmaWVycyA9IDA7CkBAIC01MjYs
OCArNTMyLDExIEBAIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXI6OldlYkdlc3R1cmVFdmVudEJ1aWxk
ZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IEdlc3R1CiAgICAgICAgIHR5cGUgPSBHZXN0
dXJlU2Nyb2xsQmVnaW47CiAgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS5nZXN0dXJlc2Nyb2xsZW5kRXZlbnQpCiAgICAgICAgIHR5cGUgPSBHZXN0dXJlU2Nyb2xsRW5k
OwotICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZ2VzdHVyZXNjcm9s
bHVwZGF0ZUV2ZW50KQorICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Z2VzdHVyZXNjcm9sbHVwZGF0ZUV2ZW50KSB7CiAgICAgICAgIHR5cGUgPSBHZXN0dXJlU2Nyb2xs
VXBkYXRlOworICAgICAgICBkYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVggPSBldmVudC5kZWx0YVgo
KTsKKyAgICAgICAgZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZID0gZXZlbnQuZGVsdGFZKCk7Cisg
ICAgfQogCiAgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlz
UGVyU2Vjb25kOwogICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJzKGV2ZW50KTsK
QEAgLTUzNiw5ICs1NDUsNiBAQCBXZWJHZXN0dXJlRXZlbnRCdWlsZGVyOjpXZWJHZXN0dXJlRXZl
bnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBHZXN0dQogICAgIGdsb2JhbFkg
PSBldmVudC5zY3JlZW5ZKCk7CiAgICAgeCA9IGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS54KCkg
LSB3aWRnZXQtPmxvY2F0aW9uKCkueCgpOwogICAgIHkgPSBldmVudC5hYnNvbHV0ZUxvY2F0aW9u
KCkueSgpIC0gd2lkZ2V0LT5sb2NhdGlvbigpLnkoKTsKLQotICAgIGRlbHRhWCA9IGV2ZW50LmRl
bHRhWCgpOwotICAgIGRlbHRhWSA9IGV2ZW50LmRlbHRhWSgpOwogfQogI2VuZGlmIC8vIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IGU4NjhjNjliYTJjNDRjMjJhYTNlMjBkNjI3YmRhZmMyYjJmZmU5ZTcuLjlj
N2RhMTg1NjBhYTM3YzZhOTQwNmNmNmJiMDIzNWNlNzI0YWViOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTY5Miw3ICs2OTIsNyBAQCBib29sIFdl
YlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVu
dCkKICAgICAgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50Lmds
b2JhbFgsIGV2ZW50Lmdsb2JhbFkpOwogICAgICAgICBtX2ZsaW5nTW9kaWZpZXIgPSBldmVudC5t
b2RpZmllcnM7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBjdXJ2ZSBwYXJhbWV0cml6YWJs
ZSBmcm9tIHRoZSBicm93c2VyLgotICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKSks
IHRoaXMpOworICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb246OmNyZWF0ZShUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZShGbG9hdFBvaW50KGV2ZW50LmRhdGEuZmxpbmdTdGFydC52ZWxvY2l0eVgsIGV2ZW50LmRh
dGEuZmxpbmdTdGFydC52ZWxvY2l0eVkpKSwgdGhpcyk7CiAgICAgICAgIHNjaGVkdWxlQW5pbWF0
aW9uKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGxUZXN0LmNwcAppbmRleCA4MzEzYjBmNWI4YmZjN2RlZGY4NGVlZDVkMjFmNzAzZTlmNmVk
ZTZkLi44MmUzYjU0NmE1Mzc3M2ZjNjBjMWYzMmM1ZWVhOWFiZTUwNDRlYWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC0yMDAsMTQgKzIwMCwxNCBAQCBURVNUX0Yo
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsU3RhcnRlZCkK
ICAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwotICAgIGdlc3R1cmUuZGVsdGFZID0gLTQw
OyAvLyAtWSBtZWFucyBzY3JvbGwgZG93biAtIGkuZS4gaW4gdGhlICtZIGRpcmVjdGlvbi4KKyAg
ICBnZXN0dXJlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IC00MDsgLy8gLVkgbWVhbnMgc2Ny
b2xsIGRvd24gLSBpLmUuIGluIHRoZSArWSBkaXJlY3Rpb24uCiAgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6OlBy
b3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRlc3Rpbmc6Okd0KDApKSkpOwogICAg
IG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCiAgICAgVkVSSUZZ
X0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVNjcm9sbEVuZDsKLSAgICBnZXN0dXJlLmRlbHRhWSA9IDA7CisgICAgZ2VzdHVyZS5k
YXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkgPSAwOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRs
ZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CkBAIC0yMjcsMTMgKzIyNywxMyBAQCBURVNUX0YoV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsT25NYWluVGhyZWFk
KQogICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7Ci0gICAgZ2VzdHVyZS5kZWx0YVkgPSA0
MDsKKyAgICBnZXN0dXJlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IDQwOwogICAgIG1faW5w
dXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCiAgICAgVkVSSUZZX0FORF9S
RVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbEVuZDsKLSAgICBnZXN0dXJlLmRlbHRhWSA9IDA7CisgICAgZ2VzdHVyZS5kYXRhLnNj
cm9sbFVwZGF0ZS5kZWx0YVkgPSAwOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2
ZW50KGdlc3R1cmUpOwogfQogCkBAIC0yNjYsNyArMjY2LDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVBpbmNoKQogICAgIFZFUklGWV9BTkRfUkVT
RVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQ
aW5jaFVwZGF0ZTsKLSAgICBnZXN0dXJlLmRlbHRhWCA9IDEuNTsKKyAgICBnZXN0dXJlLmRhdGEu
cGluY2hVcGRhdGUuc2NhbGUgPSAxLjU7CiAgICAgZ2VzdHVyZS54ID0gNzsKICAgICBnZXN0dXJl
LnkgPSAxMzsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgcGlu
Y2hHZXN0dXJlVXBkYXRlKDEuNSwgV2ViQ29yZTo6SW50UG9pbnQoNywgMTMpKSk7CkBAIC0yNzUs
NyArMjc1LDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2Vz
dHVyZVBpbmNoKQogICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUu
dHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTsKLSAgICBnZXN0dXJlLmRl
bHRhWCA9IDAuNTsKKyAgICBnZXN0dXJlLmRhdGEucGluY2hVcGRhdGUuc2NhbGUgPSAwLjU7CiAg
ICAgZ2VzdHVyZS54ID0gOTsKICAgICBnZXN0dXJlLnkgPSA2OwogICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVVcGRhdGUoLjUsIFdlYkNvcmU6
OkludFBvaW50KDksIDYpKSk7CkBAIC0yOTgsNyArMjk4LDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nU3RhcnRlZCkKICAgICAgICAgLldp
bGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Ny
b2xsU3RhcnRlZCkpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZUZsaW5nU3RhcnQ7Ci0gICAgZ2VzdHVyZS5kZWx0YVggPSAxMDsKKyAgICBnZXN0dXJlLmRhdGEu
ZmxpbmdTdGFydC52ZWxvY2l0eVggPSAxMDsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgbV9pbnB1dEhhbmRsZXIt
PmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKQEAgLTM1OSw4ICszNTksOCBAQCBURVNUX0Yo
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdBbmltYXRlcykK
ICAgICBXZWJQb2ludCBmbGluZ1BvaW50ID0gV2ViUG9pbnQoNywgMTMpOwogICAgIFdlYlBvaW50
IGZsaW5nR2xvYmFsUG9pbnQgPSBXZWJQb2ludCgxNywgMjMpOwogICAgIGludCBtb2RpZmllcnMg
PSA3OwotICAgIGdlc3R1cmUuZGVsdGFYID0gZmxpbmdEZWx0YS54OwotICAgIGdlc3R1cmUuZGVs
dGFZID0gZmxpbmdEZWx0YS55OworICAgIGdlc3R1cmUuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5
WCA9IGZsaW5nRGVsdGEueDsKKyAgICBnZXN0dXJlLmRhdGEuZmxpbmdTdGFydC52ZWxvY2l0eVkg
PSBmbGluZ0RlbHRhLnk7CiAgICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54OwogICAgIGdlc3R1
cmUueSA9IGZsaW5nUG9pbnQueTsKICAgICBnZXN0dXJlLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBv
aW50Lng7CkBAIC00NDMsOCArNDQzLDggQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nVHJhbnNmZXJSZXNldHMpCiAgICAgV2ViUG9pbnQgZmxp
bmdQb2ludCA9IFdlYlBvaW50KDcsIDEzKTsKICAgICBXZWJQb2ludCBmbGluZ0dsb2JhbFBvaW50
ID0gV2ViUG9pbnQoMTcsIDIzKTsKICAgICBpbnQgbW9kaWZpZXJzID0gMTsKLSAgICBnZXN0dXJl
LmRlbHRhWCA9IGZsaW5nRGVsdGEueDsKLSAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEu
eTsKKyAgICBnZXN0dXJlLmRhdGEuZmxpbmdTdGFydC52ZWxvY2l0eVggPSBmbGluZ0RlbHRhLng7
CisgICAgZ2VzdHVyZS5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlZID0gZmxpbmdEZWx0YS55Owog
ICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueDsKICAgICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50
Lnk7CiAgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54OwpAQCAtNTIyLDgg
KzUyMiw4IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1
cmVGbGluZ1RyYW5zZmVyUmVzZXRzKQogICAgIGZsaW5nUG9pbnQgPSBXZWJQb2ludCg5NSwgODcp
OwogICAgIGZsaW5nR2xvYmFsUG9pbnQgPSBXZWJQb2ludCgzMiwgNzEpOwogICAgIG1vZGlmaWVy
cyA9IDI7Ci0gICAgZ2VzdHVyZS5kZWx0YVggPSBmbGluZ0RlbHRhLng7Ci0gICAgZ2VzdHVyZS5k
ZWx0YVkgPSBmbGluZ0RlbHRhLnk7CisgICAgZ2VzdHVyZS5kYXRhLmZsaW5nU3RhcnQudmVsb2Np
dHlYID0gZmxpbmdEZWx0YS54OworICAgIGdlc3R1cmUuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5
WSA9IGZsaW5nRGVsdGEueTsKICAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50Lng7CiAgICAgZ2Vz
dHVyZS55ID0gZmxpbmdQb2ludC55OwogICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5nR2xvYmFs
UG9pbnQueDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA3NzA0YTQ2OGYyOWRhY2FhYmI0OTg5M2U3ZWQ5NWY3ZmIxN2JlMDRmLi5iYzdlYjYzODY0
ODBkNTYwNDM1YTA1MGM5NGE1YzgzNTdjODY2NGVkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMzAgIFJp
Y2sgQnllcnMgIDxyYnllcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBjaHJvbWl1
bSBEdW1wUmVuZGVyVHJlZSBmb3IgbmV3IFdlYkdlc3R1cmVFdmVudCBmaWVsZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEV2ZW50U2VuZGVy
IHRvIHdyaXRlIGdlc3R1cmUgZGV0YWlscyBpbnRvIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICB0
eXBlLXNwZWNpZmljIFdlYkdlc3R1cmVFdmVudCBmaWVsZHMuCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChFdmVu
dFNlbmRlcjo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpnZXN0dXJlRmxp
bmdTdGFydCk6CisKIDIwMTItMDgtMjkgIEtldmluIEZ1bmsgIDxrZXZpbi5mdW5rQGtkYWIuY29t
PgogCiAgICAgICAgIEZpeCBjaGVjay13ZWJraXQtc3R5bGUgKGFuZCBwcm9iYWJseSBvdGhlcnMp
IHdoZW4gV2ViS2l0IGlzIGluIGEgZ2l0IHN1Ym1vZHVsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0V2ZW50U2VuZGVyLmNwcAppbmRleCBj
YWZhY2E5YWNkN2NkODY0ZDczOTRmZTc1MjY0MTdjNDc0YTI5N2QyLi44YWVhMGIzY2I2OTgzNGU0
ZGE4MWNlYTI4Njk0N2E2OGY0M2RhMzIxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0V2ZW50U2VuZGVyLmNwcApAQCAtMTE1MywxMiAr
MTE1MywxNCBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQoV2ViSW5wdXRFdmVudDo6
VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmCiAKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6Ci0gICAgICAgIGV2
ZW50LmRlbHRhWCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSk7
Ci0gICAgICAgIGV2ZW50LmRlbHRhWSA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMV0u
dG9Eb3VibGUoKSk7CisgICAgICAgIGV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCA9Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzBdLnRvRG91YmxlKCkpOwor
ICAgICAgICBldmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkgPQorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1sxXS50b0RvdWJsZSgpKTsKICAgICAgICAgZXZlbnQu
eCA9IG1fY3VycmVudEdlc3R1cmVMb2NhdGlvbi54OwogICAgICAgICBldmVudC55ID0gbV9jdXJy
ZW50R2VzdHVyZUxvY2F0aW9uLnk7Ci0gICAgICAgIG1fY3VycmVudEdlc3R1cmVMb2NhdGlvbi54
ID0gbV9jdXJyZW50R2VzdHVyZUxvY2F0aW9uLnggKyBldmVudC5kZWx0YVg7Ci0gICAgICAgIG1f
Y3VycmVudEdlc3R1cmVMb2NhdGlvbi55ID0gbV9jdXJyZW50R2VzdHVyZUxvY2F0aW9uLnkgKyBl
dmVudC5kZWx0YVk7CisgICAgICAgIG1fY3VycmVudEdlc3R1cmVMb2NhdGlvbi54ID0gbV9jdXJy
ZW50R2VzdHVyZUxvY2F0aW9uLnggKyBldmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVg7Cisg
ICAgICAgIG1fY3VycmVudEdlc3R1cmVMb2NhdGlvbi55ID0gbV9jdXJyZW50R2VzdHVyZUxvY2F0
aW9uLnkgKyBldmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVk7CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CkBAIC0xMTY3LDE1
ICsxMTY5LDE1IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50
OjpUeXBlIHR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYKICAgICAgICAgZXZlbnQueSA9IG1f
Y3VycmVudEdlc3R1cmVMb2NhdGlvbi55OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAgICAgIGV2ZW50LmRlbHRhWCA9IHN0YXRp
Y19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSk7Ci0gICAgICAgIGV2ZW50LmRl
bHRhWSA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMV0udG9Eb3VibGUoKSk7CiAgICAg
ICAgIGV2ZW50LnggPSBtX2N1cnJlbnRHZXN0dXJlTG9jYXRpb24ueDsKICAgICAgICAgZXZlbnQu
eSA9IG1fY3VycmVudEdlc3R1cmVMb2NhdGlvbi55OwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6CiAgICAgICAgIGlmIChhcmd1bWVudHMuc2l6ZSgp
ID49IDMpIHsKLSAgICAgICAgICAgIC8vIFRhcCBjb3VudC4KLSAgICAgICAgICAgIGV2ZW50LmRl
bHRhWCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CisgICAg
ICAgICAgICBldmVudC5kYXRhLnRhcC50YXBDb3VudCA9CisgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICBldmVudC5kYXRhLnRhcC50YXBDb3VudCA9IDE7CiAgICAgICAgIH0KICAgICAg
ICAgZXZlbnQueCA9IHBvaW50Lng7CiAgICAgICAgIGV2ZW50LnkgPSBwb2ludC55OwpAQCAtMTIz
Miw4ICsxMjM0LDEwIEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVGbGluZ1N0YXJ0KGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50CiAgICAgZXZlbnQuZ2xvYmFs
WCA9IGV2ZW50Lng7CiAgICAgZXZlbnQuZ2xvYmFsWSA9IGV2ZW50Lnk7CiAKLSAgICBldmVudC5k
ZWx0YVggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwotICAg
IGV2ZW50LmRlbHRhWSA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUo
KSk7CisgICAgZXZlbnQuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5WCA9CisgICAgICAgIHN0YXRp
Y19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CisgICAgZXZlbnQuZGF0YS5m
bGluZ1N0YXJ0LnZlbG9jaXR5WSA9CisgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVu
dHNbM10udG9Eb3VibGUoKSk7CiAgICAgZXZlbnQudGltZVN0YW1wU2Vjb25kcyA9IGdldEN1cnJl
bnRFdmVudFRpbWVTZWMoKTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQp
OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161690</attachid>
            <date>2012-08-31 06:55:31 -0700</date>
            <delta_ts>2012-09-11 20:20:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93123-20120831095518.patch</filename>
            <type>text/plain</type>
            <size>22696</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkxMTE4ODViYmM2YThk
MTYzNmVkODY3NWY5MzkzY2U2ZGE0Mzg4OC4uYzliZTVmZWNjNTJlYTc0YzMzYjhhNWI3ZTk0NTU3
MmI1NWQzNTc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTMwICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbiB1cCBvdmVybG9h
ZGVkIHVzZSBvZiBkZWx0YVgvZGVsdGFZIGluIFBsYXRmb3JtR2VzdHVyZUV2ZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzEyMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBuZXcgZXhw
bGljaXQgZXZlbnQgdHlwZS1zcGVjaWZpYyBmaWVsZHMgaW4gUGxhdGZvcm1HZXN0dXJlRXZlbnQK
KyAgICAgICAgdXNpbmcgYSB1bmlvbiwgdG8gcHJldmVudCBoYXZpbmcgdG8gb3ZlcmxvYWQgZGVs
dGFYL2RlbHRhWSB0byBtZWFuCisgICAgICAgIGRpZmZlcmVudCB0aGluZ3MgZm9yIGRpZmZlcmVu
dCBldmVudCB0eXBlcy4KKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVRhcCk6IFVzZSBleHBsaWNp
dCB0YXBDb3VudAorICAgICAgICBpbnN0ZWFkIG9mIG92ZXJsb2FkZWQgZGVsdGFYCisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDogQWRkIHRoZSBhZGRpdGlvbmFsIHR5
cGUtc3BlY2lmaWMgZmllbGRzCisgICAgICAgIGFuZCBhZGQvdXBkYXRlIGFjY2Vzc29ycyB0byBl
bmZvcmNlIGNvcnJlY3QgdHlwZS1zcGVjaWZpYyB1c2FnZS4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVFdmVudCk6CisgICAgICAgIChQbGF0
Zm9ybUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6dGFwQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmFy
ZWEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OnZlbG9jaXR5WCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6dmVsb2NpdHlZKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpzY2FsZSk6CisKIDIwMTItMDgt
MjkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtOZXcgTXVsdGlj
b2x1bW5dIFJlbmFtZSBtZXRob2RzIHRvIHByZXBhcmUgZm9yIHByb3BlciBwYWdpbmF0aW9uIG9m
IGNvbHVtbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOWE5NDM3ZTkyZjRhZTkyNDI2
M2FhYTRhZGRhZmFlOTZmNTA5NjhmNi4uYjJkNGUyODI3MGE1ZmFlYTY0NThkM2Y5OTA3Njg4Nzg3
MzVhZjIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAx
Mi0wOC0zMCAgUmljayBCeWVycyAgPHJieWVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNl
IG5ldyB0eXBlLXNwZWNpZmljIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGZpZWxkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMxMjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bSBoYXMgYmVlbiB1
cGRhdGVkIHRvIHN0b3JlIGdlc3R1cmUtdHlwZSBzcGVjaWZpYyBkZXRhaWxzIGluIHRoZQorICAg
ICAgICBuZXcgV2ViR2VzdHVyZUV2ZW50IGZpZWxkcyAoY3JyZXYuY29tLzE1MjUwOCksIHNvIHdl
IGNhbiBub3cgcmVseSBvbiB0aGVtLgorICAgICAgICBUT0RPOiBhbHNvIGxpc3QgcmV2aXNpb24g
VVJMIGZvcgorICAgICAgICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTA4OTUwMjQv
IHdoZW4gaXQgbGFuZHMuCisKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuY3BwOgorICAgICAgICBVcGRhdGUgdGhlIGNvbXBvc2l0b3Igc2Nyb2xsLCBwaW5jaCBh
bmQgZmxpbmcgaGFuZGxpbmcgdG8gdXNlIHRoZXNlIG5ldyBmaWVsZHMuCisgICAgICAgIChXZWJL
aXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVJbnB1dEV2ZW50SW50ZXJu
YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFu
ZGxlR2VzdHVyZUZsaW5nKToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24u
Y3BwOgorICAgICAgICBVcGRhdGUgUGxhdGZvcm1HZXN0dXJlRXZlbnQvV2ViR2VzdHVyZUV2ZW50
IGNvbnZlcnNpb24gdG8gdXNlIHRoZSBuZXcKKyAgICAgICAgZmllbGRzIG9uIGJvdGggc2lkZXMu
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1H
ZXN0dXJlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50QnVp
bGRlcjo6V2ViR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudCk6
CisgICAgICAgIFVwZGF0ZSBmbGluZyBzY3JvbGxpbmcgaW1wbGVtZW50YXRpb24gZm9yIGNvcnJl
Y3QgbG9jYXRpb24gb2YgdmVsb2NpdHkuCisgICAgICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAg
ICAgVXBkYXRlIHRlc3RzIHRvIHVzZSB0aGUgbmV3IGZpZWxkcy4KKworCiAyMDEyLTA4LTI5ICBT
aGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gQWRkIG1vcmUgdW5pdCB0ZXN0IGNvdmVyYWdlIGZvciBzZW1hbnRpY3Mgb2YgZHJhd2FibGVD
b250ZW50UmVjdCBhbmQgdmlzaWJsZUNvbnRlbnRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggZGM2Y2ZhODc1MmQyN2ZkMWQ3NGYwYmMyMzhlMGUzMmQzZjljOTk5Ny4u
MDFjOTIzMGViZjIxYTVlY2JlMDJiY2NjZGQxZjNiNzk3ZTdhMTc0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjQ2MCwyMCArMjQ2MCwxNCBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2ZW50KQogICAgICAgICBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0
cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBn
ZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwogICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7
CiAKLSAgICBpbnQgdGFwQ291bnQgPSAxOwotICAgIC8vIEZJWE1FOiBkZWxldGFYIGlzIG92ZXJs
b2FkZWQgdG8gbWVhbiBkaWZmZXJlbnQgdGhpbmdzIGZvciBkaWZmZXJlbnQgZ2VzdHVyZXMuCi0g
ICAgLy8gaHR0cDovL3drYi51Zy85MzEyMwotICAgIGlmIChnZXN0dXJlRXZlbnQuZGVsdGFYKCkg
PiAwKQotICAgICAgICB0YXBDb3VudCA9IHN0YXRpY19jYXN0PGludD4oZ2VzdHVyZUV2ZW50LmRl
bHRhWCgpKTsKLQogICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlOwogICAgIFBsYXRm
b3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGFkanVzdGVkUG9pbnQsIGdlc3R1cmVFdmVudC5n
bG9iYWxQb3NpdGlvbigpLAotICAgICAgICBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZVByZXNzZWQsIHRhcENvdW50LAorICAgICAgICBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpN
b3VzZVByZXNzZWQsIGdlc3R1cmVFdmVudC50YXBDb3VudCgpLAogICAgICAgICBnZXN0dXJlRXZl
bnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtl
eSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwog
ICAgIGRlZmF1bHRQcmV2ZW50ZWQgfD0gaGFuZGxlTW91c2VQcmVzc0V2ZW50KGZha2VNb3VzZURv
d24pOwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGFkanVzdGVkUG9pbnQs
IGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLAotICAgICAgICBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkLCB0YXBDb3VudCwKKyAgICAgICAgTGVmdEJ1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgZ2VzdHVyZUV2ZW50LnRhcENvdW50KCksCiAg
ICAgICAgIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBn
ZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVu
dC50aW1lc3RhbXAoKSk7CiAgICAgZGVmYXVsdFByZXZlbnRlZCB8PSBoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChmYWtlTW91c2VVcCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUdlc3R1cmVFdmVudC5oCmluZGV4IGVkNTU3YzE3ODU4ZDU1YWQyMzJiOWI3NjIzNDQxZTAx
YTRhZmZlZTIuLmIwYmU4OTA3OTI2MTNlMmMwOTZjNmI2MzM4MjMyZjFlYzg4Njg2MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApAQCAtMzIs
NiArMzIsOCBAQAogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDYgKzQ0
LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZGVsdGFYKDApCiAgICAgICAgICwgbV9kZWx0YVko
MCkKICAgICB7CisgICAgICAgIG1lbXNldCgmbV9kYXRhLCAwLCBzaXplb2YobV9kYXRhKSk7CiAg
ICAgfQogCiAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZG91YmxlIHRpbWVz
dGFtcCwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKQEAgLTUxLDYgKzU0LDcgQEAgcHVibGlj
OgogICAgICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKICAgICAgICAgLCBtX2RlbHRhWShkZWx0YVkp
CiAgICAgeworICAgICAgbWVtc2V0KCZtX2RhdGEsIDAsIHNpemVvZihtX2RhdGEpKTsKICAgICB9
CiAKICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudChUeXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBw
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBkb3VibGUgdGltZXN0YW1w
LCBjb25zdCBJbnRTaXplJiBhcmVhLCBjb25zdCBGbG9hdFBvaW50JiBkZWx0YSwgYm9vbCBzaGlm
dEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQpAQCAtNjEsNiAr
NjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9kZWx0YVgoZGVsdGEueCgpKQogICAgICAgICAs
IG1fZGVsdGFZKGRlbHRhLnkoKSkKICAgICB7CisgICAgICBtZW1zZXQoJm1fZGF0YSwgMCwgc2l6
ZW9mKG1fZGF0YSkpOwogICAgIH0KIAogICAgIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMu
CkBAIC03MCwxMyArNzUsNTIgQEAgcHVibGljOgogCiAgICAgZmxvYXQgZGVsdGFYKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWx0YVg7IH0KICAgICBmbG9hdCBkZWx0YVkoKSBjb25zdCB7IHJldHVybiBt
X2RlbHRhWTsgfQotICAgIAorCisgICAgaW50IHRhcENvdW50KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcCk7CisgICAgICAg
IHJldHVybiBtX2RhdGEubV90YXAubV90YXBDb3VudDsKKyAgICB9CisKKyAgICBmbG9hdCB2ZWxv
Y2l0eVgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5tX3Njcm9s
bFVwZGF0ZS5tX3ZlbG9jaXR5WDsKKyAgICB9CisKKyAgICBmbG9hdCB2ZWxvY2l0eVkoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJl
U2Nyb2xsVXBkYXRlKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5tX3Njcm9sbFVwZGF0ZS5tX3Zl
bG9jaXR5WTsKKyAgICB9CisKKyAgICBmbG9hdCBzY2FsZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZSk7Cisg
ICAgICAgIHJldHVybiBtX2RhdGEubV9waW5jaFVwZGF0ZS5tX3NjYWxlOworICAgIH0KKwogcHJv
dGVjdGVkOgogICAgIEludFBvaW50IG1fcG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQ
b3NpdGlvbjsKICAgICBJbnRTaXplIG1fYXJlYTsKICAgICBmbG9hdCBtX2RlbHRhWDsKICAgICBm
bG9hdCBtX2RlbHRhWTsKKworICAgIHVuaW9uIHsKKyAgICAgIHN0cnVjdCB7CisgICAgICAgIGlu
dCBtX3RhcENvdW50OworICAgICAgfSBtX3RhcDsKKworICAgICAgc3RydWN0IHsKKyAgICAgICAg
ZmxvYXQgbV92ZWxvY2l0eVg7CisgICAgICAgIGZsb2F0IG1fdmVsb2NpdHlZOworICAgICAgfSBt
X3Njcm9sbFVwZGF0ZTsKKworICAgICAgc3RydWN0IHsKKyAgICAgICAgZmxvYXQgbV9zY2FsZTsK
KyAgICAgIH0gbV9waW5jaFVwZGF0ZTsKKyAgICB9IG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAppbmRleCA4MDg0ZDcxNWM3YjAyYTU3
OGU0MWVjYmEzZTk5Mzg0ZjY0MmFkMmU5Li4xZTUwMzg1NTBiMDE3OTM1YzBmZGQyM2JlMzU0OWYy
YWEyYTE3NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCkBAIC0yMTYsNyArMjE2LDggQEAg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgICAgIHJldHVybiBEaWROb3RIYW5kbGU7
CiAKICAgICAgICAgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQgPSAqc3RhdGlj
X2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmV2ZW50KTsKLSAgICAgICAgbV9pbnB1dEhh
bmRsZXJDbGllbnQtPnNjcm9sbEJ5KEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZl
bnQueSksIEludFNpemUoLWdlc3R1cmVFdmVudC5kZWx0YVgsIC1nZXN0dXJlRXZlbnQuZGVsdGFZ
KSk7CisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRQb2ludChnZXN0
dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLAorICAgICAgICAgICAgSW50U2l6ZSgtZ2VzdHVy
ZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kYXRhLnNjcm9s
bFVwZGF0ZS5kZWx0YVkpKTsKICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAgICB9IGVsc2Ug
aWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZCkgewogICAg
ICAgICBBU1NFUlQobV9leHBlY3RTY3JvbGxVcGRhdGVFbmQpOwpAQCAtMjQ2LDcgKzI0Nyw3IEBA
IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09IFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZSkgewogICAgICAgICBBU1NFUlQobV9leHBl
Y3RQaW5jaFVwZGF0ZUVuZCk7CiAgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZldmVudCk7Ci0g
ICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5waW5jaEdlc3R1cmVVcGRhdGUoZ2VzdHVyZUV2
ZW50LmRlbHRhWCwgSW50UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KSk7Cisg
ICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5waW5jaEdlc3R1cmVVcGRhdGUoZ2VzdHVyZUV2
ZW50LmRhdGEucGluY2hVcGRhdGUuc2NhbGUsIEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0
dXJlRXZlbnQueSkpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAgIH0gZWxzZSBpZiAo
ZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydCkgewogICAgICAg
ICBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25z
dCBXZWJHZXN0dXJlRXZlbnQqPigmZXZlbnQpOwpAQCAtMjY3LDkgKzI2OCw5IEBAIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOjpoCiAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKICAgICBjYXNlIEND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkOiB7CiAgICAgICAgIFRSQUNFX0VWRU5U
X0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlR2Vz
dHVyZUZsaW5nOjpzdGFydGVkIik7Ci0gICAgICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZT4gZmxpbmdDdXJ2ZSA9IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRl
KEZsb2F0UG9pbnQoZ2VzdHVyZUV2ZW50LmRlbHRhWCwgZ2VzdHVyZUV2ZW50LmRlbHRhWSkpOwor
ICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaHBh
ZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KGdlc3R1cmVFdmVu
dC5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlYLCBnZXN0dXJlRXZlbnQuZGF0YS5mbGluZ1N0YXJ0
LnZlbG9jaXR5WSkpOwogICAgICAgICBtX3doZWVsRmxpbmdBbmltYXRpb24gPSBDQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUdlc3R1cmVUb0NDR2VzdHVyZUFkYXB0ZXI6
OmNyZWF0ZShmbGluZ0N1cnZlLnJlbGVhc2UoKSksIHRoaXMpOwotICAgICAgICBtX3doZWVsRmxp
bmdQYXJhbWV0ZXJzLmRlbHRhID0gV2ViRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBn
ZXN0dXJlRXZlbnQuZGVsdGFZKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5kZWx0
YSA9IFdlYkZsb2F0UG9pbnQoZ2VzdHVyZUV2ZW50LmRhdGEuZmxpbmdTdGFydC52ZWxvY2l0eVgs
IGdlc3R1cmVFdmVudC5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlZKTsKICAgICAgICAgbV93aGVl
bEZsaW5nUGFyYW1ldGVycy5wb2ludCA9IFdlYlBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJl
RXZlbnQueSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBX
ZWJQb2ludChnZXN0dXJlRXZlbnQuZ2xvYmFsWCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFkpOwogICAg
ICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLm1vZGlmaWVycyA9IGdlc3R1cmVFdmVudC5tb2Rp
ZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2
ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2
ZW50Q29udmVyc2lvbi5jcHAKaW5kZXggMDM5MWMyODViN2Y4ZTNlNjY5NTE2MzlkMzY1ZjU4YmQ3
M2U4YTk5Mi4uNzNiNGZjODNjOTkxNGM2NzQ5NWZhOWRjNTM5YWE2YWUxNjkyNzAyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJz
aW9uLmNwcApAQCAtMTQ5LDEwICsxNDksMTUgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVy
OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFcKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRl
OgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwor
ICAgICAgICBtX2RlbHRhWCA9IGUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYOworICAgICAgICBt
X2RlbHRhWSA9IGUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZOworICAgICAgICBtX2RhdGEubV9z
Y3JvbGxVcGRhdGUubV92ZWxvY2l0eVggPSBlLmRhdGEuc2Nyb2xsVXBkYXRlLnZlbG9jaXR5WDsK
KyAgICAgICAgbV9kYXRhLm1fc2Nyb2xsVXBkYXRlLm1fdmVsb2NpdHlZID0gZS5kYXRhLnNjcm9s
bFVwZGF0ZS52ZWxvY2l0eVk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVRhcDoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRh
cDsKLSAgICAgICAgbV9hcmVhID0gSW50U2l6ZShlLmJvdW5kaW5nQm94LndpZHRoLCBlLmJvdW5k
aW5nQm94LmhlaWdodCk7CisgICAgICAgIG1fYXJlYSA9IEludFNpemUoZS5kYXRhLnRhcC53aWR0
aCwgZS5kYXRhLnRhcC5oZWlnaHQpOworICAgICAgICBtX2RhdGEubV90YXAubV90YXBDb3VudCA9
IGUuZGF0YS50YXAudGFwQ291bnQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVRhcERvd246CiAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVUYXBEb3duOwpAQCAtMTY1LDcgKzE3MCw3IEBAIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVp
bGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBX
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVz
czoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzczsKLSAg
ICAgICAgbV9hcmVhID0gSW50U2l6ZShlLmJvdW5kaW5nQm94LndpZHRoLCBlLmJvdW5kaW5nQm94
LmhlaWdodCk7CisgICAgICAgIG1fYXJlYSA9IEludFNpemUoZS5kYXRhLmxvbmdQcmVzcy53aWR0
aCwgZS5kYXRhLmxvbmdQcmVzcy5oZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2luOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjsKQEAgLTE3NSwxNCArMTgwLDEzIEBAIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKFdpZGdldCog
d2lkZ2V0LCBjb25zdCBXCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVBpbmNoVXBkYXRlOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlUGluY2hVcGRhdGU7CisgICAgICAgIG1fZGF0YS5tX3BpbmNoVXBkYXRlLm1fc2NhbGUgPSBl
LmRhdGEucGluY2hVcGRhdGUuc2NhbGU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBtX3Bvc2l0aW9uID0gd2lk
Z2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50UG9pbnQoZS54LCBlLnkpKTsKICAg
ICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZS5nbG9iYWxYLCBlLmdsb2JhbFkpOwotICAg
IG1fZGVsdGFYID0gZS5kZWx0YVg7Ci0gICAgbV9kZWx0YVkgPSBlLmRlbHRhWTsKICAgICBtX3Rp
bWVzdGFtcCA9IGUudGltZVN0YW1wU2Vjb25kczsKIAogICAgIG1fbW9kaWZpZXJzID0gMDsKQEAg
LTUyNiw4ICs1MzAsMTEgQEAgV2ViR2VzdHVyZUV2ZW50QnVpbGRlcjo6V2ViR2VzdHVyZUV2ZW50
QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgR2VzdHUKICAgICAgICAgdHlwZSA9
IEdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmdlc3R1cmVzY3JvbGxlbmRFdmVudCkKICAgICAgICAgdHlwZSA9IEdlc3R1cmVTY3Jv
bGxFbmQ7Ci0gICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5nZXN0dXJl
c2Nyb2xsdXBkYXRlRXZlbnQpCisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5nZXN0dXJlc2Nyb2xsdXBkYXRlRXZlbnQpIHsKICAgICAgICAgdHlwZSA9IEdlc3R1cmVT
Y3JvbGxVcGRhdGU7CisgICAgICAgIGRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCA9IGV2ZW50LmRl
bHRhWCgpOworICAgICAgICBkYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkgPSBldmVudC5kZWx0YVko
KTsKKyAgICB9CiAKICAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBt
aWxsaXNQZXJTZWNvbmQ7CiAgICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZl
bnQpOwpAQCAtNTM2LDkgKzU0Myw2IEBAIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXI6OldlYkdlc3R1
cmVFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IEdlc3R1CiAgICAgZ2xv
YmFsWSA9IGV2ZW50LnNjcmVlblkoKTsKICAgICB4ID0gZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigp
LngoKSAtIHdpZGdldC0+bG9jYXRpb24oKS54KCk7CiAgICAgeSA9IGV2ZW50LmFic29sdXRlTG9j
YXRpb24oKS55KCkgLSB3aWRnZXQtPmxvY2F0aW9uKCkueSgpOwotCi0gICAgZGVsdGFYID0gZXZl
bnQuZGVsdGFYKCk7Ci0gICAgZGVsdGFZID0gZXZlbnQuZGVsdGFZKCk7CiB9CiAjZW5kaWYgLy8g
RU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKaW5kZXggZTg2OGM2OWJhMmM0NGMyMmFhM2UyMGQ2MjdiZGFmYzJiMmZmZTll
Ny4uOWM3ZGExODU2MGFhMzdjNmE5NDA2Y2Y2YmIwMjM1Y2U3MjRhZWI4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNjkyLDcgKzY5Miw3IEBAIGJv
b2wgV2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQm
IGV2ZW50KQogICAgICAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZl
bnQuZ2xvYmFsWCwgZXZlbnQuZ2xvYmFsWSk7CiAgICAgICAgIG1fZmxpbmdNb2RpZmllciA9IGV2
ZW50Lm1vZGlmaWVyczsKICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhlIGN1cnZlIHBhcmFtZXRy
aXphYmxlIGZyb20gdGhlIGJyb3dzZXIuCi0gICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFj
dGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFRvdWNocGFkRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZXZlbnQuZGVsdGFYLCBldmVudC5kZWx0
YVkpKSwgdGhpcyk7CisgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3Jt
R2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZXZlbnQuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5WCwgZXZl
bnQuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5WSkpLCB0aGlzKTsKICAgICAgICAgc2NoZWR1bGVB
bmltYXRpb24oKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3QuY3BwCmluZGV4IDgzMTNiMGY1YjhiZmM3ZGVkZjg0ZWVkNWQyMWY3MDNl
OWY2ZWRlNmQuLjgyZTNiNTQ2YTUzNzczZmM2MGMxZjMyYzVlZWE5YWJlNTA0NGVhYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKQEAgLTIwMCwxNCArMjAwLDE0IEBAIFRF
U1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxTdGFy
dGVkKQogICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUudHlwZSA9
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7Ci0gICAgZ2VzdHVyZS5kZWx0YVkg
PSAtNDA7IC8vIC1ZIG1lYW5zIHNjcm9sbCBkb3duIC0gaS5lLiBpbiB0aGUgK1kgZGlyZWN0aW9u
LgorICAgIGdlc3R1cmUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZID0gLTQwOyAvLyAtWSBtZWFu
cyBzY3JvbGwgZG93biAtIGkuZS4gaW4gdGhlICtZIGRpcmVjdGlvbi4KICAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVzdGlu
Zzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OmhlaWdodCwgdGVzdGluZzo6R3QoMCkpKSk7
CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKICAgICBW
RVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOwotICAgIGdlc3R1cmUuZGVsdGFZID0gMDsKKyAgICBnZXN0
dXJlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IDA7CiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKICAgICBtX2lucHV0SGFuZGxlci0+
aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KQEAgLTIyNywxMyArMjI3LDEzIEBAIFRFU1Rf
RihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxPbk1haW5U
aHJlYWQpCiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBl
ID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTsKLSAgICBnZXN0dXJlLmRlbHRh
WSA9IDQwOworICAgIGdlc3R1cmUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZID0gNDA7CiAgICAg
bV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKICAgICBWRVJJRllf
QU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsRW5kOwotICAgIGdlc3R1cmUuZGVsdGFZID0gMDsKKyAgICBnZXN0dXJlLmRh
dGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IDA7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlu
cHV0RXZlbnQoZ2VzdHVyZSk7CiB9CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCBURVNUX0YoV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlUGluY2gpCiAgICAgVkVSSUZZX0FO
RF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVBpbmNoVXBkYXRlOwotICAgIGdlc3R1cmUuZGVsdGFYID0gMS41OworICAgIGdlc3R1cmUu
ZGF0YS5waW5jaFVwZGF0ZS5zY2FsZSA9IDEuNTsKICAgICBnZXN0dXJlLnggPSA3OwogICAgIGdl
c3R1cmUueSA9IDEzOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
LCBwaW5jaEdlc3R1cmVVcGRhdGUoMS41LCBXZWJDb3JlOjpJbnRQb2ludCg3LCAxMykpKTsKQEAg
LTI3NSw3ICsyNzUsNyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LCBnZXN0dXJlUGluY2gpCiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2Vz
dHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOwotICAgIGdlc3R1
cmUuZGVsdGFYID0gMC41OworICAgIGdlc3R1cmUuZGF0YS5waW5jaFVwZGF0ZS5zY2FsZSA9IDAu
NTsKICAgICBnZXN0dXJlLnggPSA5OwogICAgIGdlc3R1cmUueSA9IDY7CiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZVVwZGF0ZSguNSwgV2Vi
Q29yZTo6SW50UG9pbnQoOSwgNikpKTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBURVNUX0YoV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdTdGFydGVkKQogICAgICAg
ICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxTdGFydGVkKSk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlRmxpbmdTdGFydDsKLSAgICBnZXN0dXJlLmRlbHRhWCA9IDEwOworICAgIGdlc3R1cmUu
ZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5WCA9IDEwOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0ND
SW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBtX2lucHV0SGFu
ZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIApAQCAtMzU5LDggKzM1OSw4IEBAIFRF
U1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1h
dGVzKQogICAgIFdlYlBvaW50IGZsaW5nUG9pbnQgPSBXZWJQb2ludCg3LCAxMyk7CiAgICAgV2Vi
UG9pbnQgZmxpbmdHbG9iYWxQb2ludCA9IFdlYlBvaW50KDE3LCAyMyk7CiAgICAgaW50IG1vZGlm
aWVycyA9IDc7Ci0gICAgZ2VzdHVyZS5kZWx0YVggPSBmbGluZ0RlbHRhLng7Ci0gICAgZ2VzdHVy
ZS5kZWx0YVkgPSBmbGluZ0RlbHRhLnk7CisgICAgZ2VzdHVyZS5kYXRhLmZsaW5nU3RhcnQudmVs
b2NpdHlYID0gZmxpbmdEZWx0YS54OworICAgIGdlc3R1cmUuZGF0YS5mbGluZ1N0YXJ0LnZlbG9j
aXR5WSA9IGZsaW5nRGVsdGEueTsKICAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50Lng7CiAgICAg
Z2VzdHVyZS55ID0gZmxpbmdQb2ludC55OwogICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5nR2xv
YmFsUG9pbnQueDsKQEAgLTQ0Myw4ICs0NDMsOCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJlc2V0cykKICAgICBXZWJQb2lu
dCBmbGluZ1BvaW50ID0gV2ViUG9pbnQoNywgMTMpOwogICAgIFdlYlBvaW50IGZsaW5nR2xvYmFs
UG9pbnQgPSBXZWJQb2ludCgxNywgMjMpOwogICAgIGludCBtb2RpZmllcnMgPSAxOwotICAgIGdl
c3R1cmUuZGVsdGFYID0gZmxpbmdEZWx0YS54OwotICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdE
ZWx0YS55OworICAgIGdlc3R1cmUuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5WCA9IGZsaW5nRGVs
dGEueDsKKyAgICBnZXN0dXJlLmRhdGEuZmxpbmdTdGFydC52ZWxvY2l0eVkgPSBmbGluZ0RlbHRh
Lnk7CiAgICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54OwogICAgIGdlc3R1cmUueSA9IGZsaW5n
UG9pbnQueTsKICAgICBnZXN0dXJlLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBvaW50Lng7CkBAIC01
MjIsOCArNTIyLDggQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwg
Z2VzdHVyZUZsaW5nVHJhbnNmZXJSZXNldHMpCiAgICAgZmxpbmdQb2ludCA9IFdlYlBvaW50KDk1
LCA4Nyk7CiAgICAgZmxpbmdHbG9iYWxQb2ludCA9IFdlYlBvaW50KDMyLCA3MSk7CiAgICAgbW9k
aWZpZXJzID0gMjsKLSAgICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEueDsKLSAgICBnZXN0
dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEueTsKKyAgICBnZXN0dXJlLmRhdGEuZmxpbmdTdGFydC52
ZWxvY2l0eVggPSBmbGluZ0RlbHRhLng7CisgICAgZ2VzdHVyZS5kYXRhLmZsaW5nU3RhcnQudmVs
b2NpdHlZID0gZmxpbmdEZWx0YS55OwogICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueDsKICAg
ICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50Lnk7CiAgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdH
bG9iYWxQb2ludC54OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDc3MDRhNDY4ZjI5ZGFjYWFiYjQ5ODkzZTdlZDk1ZjdmYjE3YmUwNGYuLmJjN2Vi
NjM4NjQ4MGQ1NjA0MzVhMDUwYzk0YTVjODM1N2M4NjY0ZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0z
MCAgUmljayBCeWVycyAgPHJieWVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXBkYXRlIGNo
cm9taXVtIER1bXBSZW5kZXJUcmVlIGZvciBuZXcgV2ViR2VzdHVyZUV2ZW50IGZpZWxkcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMxMjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgRXZlbnRT
ZW5kZXIgdG8gd3JpdGUgZ2VzdHVyZSBkZXRhaWxzIGludG8gdGhlIGFwcHJvcHJpYXRlCisgICAg
ICAgIHR5cGUtc3BlY2lmaWMgV2ViR2VzdHVyZUV2ZW50IGZpZWxkcy4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAg
KEV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAoRXZlbnRTZW5kZXI6Omdlc3R1
cmVGbGluZ1N0YXJ0KToKKwogMjAxMi0wOC0yOSAgS2V2aW4gRnVuayAgPGtldmluLmZ1bmtAa2Rh
Yi5jb20+CiAKICAgICAgICAgRml4IGNoZWNrLXdlYmtpdC1zdHlsZSAoYW5kIHByb2JhYmx5IG90
aGVycykgd2hlbiBXZWJLaXQgaXMgaW4gYSBnaXQgc3VibW9kdWxlCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0V2ZW50U2VuZGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvRXZlbnRTZW5kZXIuY3BwCmlu
ZGV4IGNhZmFjYTlhY2Q3Y2Q4NjRkNzM5NGZlNzUyNjQxN2M0NzRhMjk3ZDIuLjhhZWEwYjNjYjY5
ODM0ZTRkYTgxY2VhMjg2OTQ3YTY4ZjQzZGEzMjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvRXZlbnRTZW5kZXIuY3BwCkBAIC0xMTUz
LDEyICsxMTUzLDE0IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVudChXZWJJbnB1dEV2
ZW50OjpUeXBlIHR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYKIAogICAgIHN3aXRjaCAodHlw
ZSkgewogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKLSAgICAg
ICAgZXZlbnQuZGVsdGFYID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1swXS50b0RvdWJs
ZSgpKTsKLSAgICAgICAgZXZlbnQuZGVsdGFZID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50
c1sxXS50b0RvdWJsZSgpKTsKKyAgICAgICAgZXZlbnQuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFY
ID0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMF0udG9Eb3VibGUo
KSk7CisgICAgICAgIGV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9CisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzFdLnRvRG91YmxlKCkpOwogICAgICAgICBl
dmVudC54ID0gbV9jdXJyZW50R2VzdHVyZUxvY2F0aW9uLng7CiAgICAgICAgIGV2ZW50LnkgPSBt
X2N1cnJlbnRHZXN0dXJlTG9jYXRpb24ueTsKLSAgICAgICAgbV9jdXJyZW50R2VzdHVyZUxvY2F0
aW9uLnggPSBtX2N1cnJlbnRHZXN0dXJlTG9jYXRpb24ueCArIGV2ZW50LmRlbHRhWDsKLSAgICAg
ICAgbV9jdXJyZW50R2VzdHVyZUxvY2F0aW9uLnkgPSBtX2N1cnJlbnRHZXN0dXJlTG9jYXRpb24u
eSArIGV2ZW50LmRlbHRhWTsKKyAgICAgICAgbV9jdXJyZW50R2VzdHVyZUxvY2F0aW9uLnggPSBt
X2N1cnJlbnRHZXN0dXJlTG9jYXRpb24ueCArIGV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRh
WDsKKyAgICAgICAgbV9jdXJyZW50R2VzdHVyZUxvY2F0aW9uLnkgPSBtX2N1cnJlbnRHZXN0dXJl
TG9jYXRpb24ueSArIGV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWTsKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKQEAgLTEx
NjcsMTUgKzExNjksMTUgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KFdlYklucHV0
RXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JgogICAgICAgICBldmVudC55
ID0gbV9jdXJyZW50R2VzdHVyZUxvY2F0aW9uLnk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKLSAgICAgICAgZXZlbnQuZGVsdGFYID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1swXS50b0RvdWJsZSgpKTsKLSAgICAgICAgZXZl
bnQuZGVsdGFZID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1sxXS50b0RvdWJsZSgpKTsK
ICAgICAgICAgZXZlbnQueCA9IG1fY3VycmVudEdlc3R1cmVMb2NhdGlvbi54OwogICAgICAgICBl
dmVudC55ID0gbV9jdXJyZW50R2VzdHVyZUxvY2F0aW9uLnk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKICAgICAgICAgaWYgKGFyZ3VtZW50cy5z
aXplKCkgPj0gMykgewotICAgICAgICAgICAgLy8gVGFwIGNvdW50LgotICAgICAgICAgICAgZXZl
bnQuZGVsdGFYID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsK
KyAgICAgICAgICAgIGV2ZW50LmRhdGEudGFwLnRhcENvdW50ID0KKyAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgIGV2ZW50LmRhdGEudGFwLnRhcENvdW50ID0gMTsKICAgICAgICAgfQog
ICAgICAgICBldmVudC54ID0gcG9pbnQueDsKICAgICAgICAgZXZlbnQueSA9IHBvaW50Lnk7CkBA
IC0xMjMyLDggKzEyMzQsMTAgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUZsaW5nU3RhcnQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQKICAgICBldmVudC5n
bG9iYWxYID0gZXZlbnQueDsKICAgICBldmVudC5nbG9iYWxZID0gZXZlbnQueTsKIAotICAgIGV2
ZW50LmRlbHRhWCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7
Ci0gICAgZXZlbnQuZGVsdGFZID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1szXS50b0Rv
dWJsZSgpKTsKKyAgICBldmVudC5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlYID0KKyAgICAgICAg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyAgICBldmVudC5k
YXRhLmZsaW5nU3RhcnQudmVsb2NpdHlZID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFy
Z3VtZW50c1szXS50b0RvdWJsZSgpKTsKICAgICBldmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0
Q3VycmVudEV2ZW50VGltZVNlYygpOwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChl
dmVudCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163506</attachid>
            <date>2012-09-11 20:20:34 -0700</date>
            <delta_ts>2013-04-08 19:17:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93123-20120911232009.patch</filename>
            <type>text/plain</type>
            <size>7926</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc1NGZlZGNjNTlkOGIz
OGE5MDExYTdlZGVlYjE0MTI4Nzg0NTU4Ni4uNDhjMTkwNTJhZmI2YzQ0ZTc1ZmE3YjRhY2E3ZmU3
NWMwYjQyOGRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA5LTExICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdG9wIG92ZXJsb2FkaW5n
IGRlbHRhWC9kZWx0YVkgZmllbGRzIGluIFBsYXRmb3JtR2VzdHVyZUV2ZW50LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMxMjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyBldmVudC10eXBl
IHNwZWNpZmljIGZpZWxkcyAoaW5zaWRlIGEgdW5pb24pIHRvIAorICAgICAgICBQbGF0Zm9ybUdl
c3R1cmVFdmVudCBhbmQgdXNlcyB0aGVtIGluIHBsYWNlIG9mIG92ZXJsb2FkaW5nIHRoZSBnZW5l
cmljCisgICAgICAgIGRlbHRhWCBhbmQgZGVsdGFZIGZpZWxkcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgLSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVU
YXApOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgor
ICAgICAgICAoUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OnRhcENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2Vz
dHVyZUV2ZW50Ojp2ZWxvY2l0eVgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OnZlbG9jaXR5WSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6c2NhbGUpOgorCiAyMDEyLTA5LTExICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYktpdEd0aysgY3Jhc2hlcyB3aXRoIG5vbi1V
VEY4IEhUVFAgaGVhZGVyIG5hbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA2MDI2
OTkzNjQyZDVlNDMxM2NiMTdlMjdjOWM2ZGU5ZmViMDY1NDguLjM5YzBlMjNiYWU1MzYyY2JhNDlm
MzJlNDQzMGJlYzIyOGQzMDdmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDktMTEgIFJpY2sgQnllcnMgIDxyYnllcnNAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIE1lYW5pbmcgb2YgZGVsdGFYL2RlbHRhWSBpbiBQbGF0Zm9ybUdlc3R1cmVFdmVu
dCBpcyBvdmVybG9hZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTMxMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgdGhlIG5ldyB0eXBlLXNwZWNpZmljIGZpZWxkcyBpbiBQ
bGF0Zm9ybUdlc3R1cmVFdmVudC4KKworICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVy
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6
UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKToKKwogMjAxMi0wOS0xMSAgUGV0ZXIgQmV2ZXJs
b28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBE
RVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDM4MDdjNTU5NzI4Y2Y1
NmNlNTFlYzYzMGM3YTY5YmQwZDczZjBkYjQuLjUxZDc0YTJhMWMzYzE1ZTVjMjNkYzdlODM5MDg2
ZDkxNjdiMjFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI0MzYs
MjAgKzI0MzYsMTQgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVUYXAoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgZ2VzdHVyZUV2ZW50
LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXko
KSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKICAg
ICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmUpOwogCi0gICAgaW50IHRhcENvdW50ID0gMTsKLSAg
ICAvLyBGSVhNRTogZGVsZXRhWCBpcyBvdmVybG9hZGVkIHRvIG1lYW4gZGlmZmVyZW50IHRoaW5n
cyBmb3IgZGlmZmVyZW50IGdlc3R1cmVzLgotICAgIC8vIGh0dHA6Ly93a2IudWcvOTMxMjMKLSAg
ICBpZiAoZ2VzdHVyZUV2ZW50LmRlbHRhWCgpID4gMCkKLSAgICAgICAgdGFwQ291bnQgPSBzdGF0
aWNfY2FzdDxpbnQ+KGdlc3R1cmVFdmVudC5kZWx0YVgoKSk7Ci0KICAgICBib29sIGRlZmF1bHRQ
cmV2ZW50ZWQgPSBmYWxzZTsKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihh
ZGp1c3RlZFBvaW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwKLSAgICAgICAgTGVm
dEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCB0YXBDb3VudCwKKyAgICAgICAg
TGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCBnZXN0dXJlRXZlbnQudGFw
Q291bnQoKSwKICAgICAgICAgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5j
dHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwg
Z2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKICAgICBkZWZhdWx0UHJldmVudGVkIHw9IGhhbmRs
ZU1vdXNlUHJlc3NFdmVudChmYWtlTW91c2VEb3duKTsKIAogICAgIFBsYXRmb3JtTW91c2VFdmVu
dCBmYWtlTW91c2VVcChhZGp1c3RlZFBvaW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24o
KSwKLSAgICAgICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgdGFw
Q291bnQsCisgICAgICAgIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQs
IGdlc3R1cmVFdmVudC50YXBDb3VudCgpLAogICAgICAgICBnZXN0dXJlRXZlbnQuc2hpZnRLZXko
KSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJl
RXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwogICAgIGRlZmF1bHRQ
cmV2ZW50ZWQgfD0gaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAppbmRleCBlZDU1
N2MxNzg1OGQ1NWFkMjMyYjliNzYyMzQ0MWUwMWE0YWZmZWUyLi5jNWUwMDBiNDMzYTg3MTE3ZDAz
MGVlYjk3MTk0OWEzNTliN2E5MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtR2VzdHVyZUV2ZW50LmgKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJJbnRQb2lu
dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCisj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00Miw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Rl
bHRhWCgwKQogICAgICAgICAsIG1fZGVsdGFZKDApCiAgICAgeworICAgICAgICBtZW1zZXQoJm1f
ZGF0YSwgMCwgc2l6ZW9mKG1fZGF0YSkpOwogICAgIH0KIAogICAgIFBsYXRmb3JtR2VzdHVyZUV2
ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIGRvdWJsZSB0aW1lc3RhbXAsIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVs
dGFZLCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFL
ZXkpCkBAIC01MSw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RlbHRhWChkZWx0YVgp
CiAgICAgICAgICwgbV9kZWx0YVkoZGVsdGFZKQogICAgIHsKKyAgICAgIG1lbXNldCgmbV9kYXRh
LCAwLCBzaXplb2YobV9kYXRhKSk7CiAgICAgfQogCiAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQo
VHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW50U2l6ZSYgYXJlYSwgY29uc3Qg
RmxvYXRQb2ludCYgZGVsdGEsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgbWV0YUtleSkKQEAgLTYxLDYgKzY1LDcgQEAgcHVibGljOgogICAgICAgICAsIG1f
ZGVsdGFYKGRlbHRhLngoKSkKICAgICAgICAgLCBtX2RlbHRhWShkZWx0YS55KCkpCiAgICAgewor
ICAgICAgbWVtc2V0KCZtX2RhdGEsIDAsIHNpemVvZihtX2RhdGEpKTsKICAgICB9CiAKICAgICBj
b25zdCBJbnRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9IC8v
IFBsYXRmb3JtV2luZG93IGNvb3JkaW5hdGVzLgpAQCAtNzAsMTMgKzc1LDUzIEBAIHB1YmxpYzoK
IAogICAgIGZsb2F0IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFYOyB9CiAgICAgZmxv
YXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0KLSAgICAKKworICAgIGludCB0
YXBDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFBsYXRmb3Jt
RXZlbnQ6Okdlc3R1cmVUYXApOworICAgICAgICByZXR1cm4gbV9kYXRhLm1fdGFwLm1fdGFwQ291
bnQ7CisgICAgfQorCisgICAgZmxvYXQgdmVsb2NpdHlYKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZSk7Cisg
ICAgICAgIHJldHVybiBtX2RhdGEubV9zY3JvbGxVcGRhdGUubV92ZWxvY2l0eVg7CisgICAgfQor
CisgICAgZmxvYXQgdmVsb2NpdHlZKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZSk7CisgICAgICAgIHJldHVy
biBtX2RhdGEubV9zY3JvbGxVcGRhdGUubV92ZWxvY2l0eVk7CisgICAgfQorCisgICAgZmxvYXQg
c2NhbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlUGluY2hVcGRhdGUpOworICAgICAgICByZXR1cm4gbV9kYXRhLm1fcGluY2hV
cGRhdGUubV9zY2FsZTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBJbnRQb2ludCBtX3Bvc2l0
aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CiAgICAgSW50U2l6ZSBtX2FyZWE7
CisKICAgICBmbG9hdCBtX2RlbHRhWDsKICAgICBmbG9hdCBtX2RlbHRhWTsKKworICAgIHVuaW9u
IHsKKyAgICAgIHN0cnVjdCB7CisgICAgICAgIGludCBtX3RhcENvdW50OworICAgICAgfSBtX3Rh
cDsKKworICAgICAgc3RydWN0IHsKKyAgICAgICAgZmxvYXQgbV92ZWxvY2l0eVg7CisgICAgICAg
IGZsb2F0IG1fdmVsb2NpdHlZOworICAgICAgfSBtX3Njcm9sbFVwZGF0ZTsKKworICAgICAgc3Ry
dWN0IHsKKyAgICAgICAgZmxvYXQgbV9zY2FsZTsKKyAgICAgIH0gbV9waW5jaFVwZGF0ZTsKKyAg
ICB9IG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAppbmRl
eCAyYWZjN2RjZmU3OTk1YzI4NDNjMWMyNGEwZTc3ODc2MjY3MWI3NzQ0Li41M2Q0NWM4ZjQxNzlj
ZTI1ODgyMjY4Yzk2M2I1NTdkM2NjYzc2Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCkBAIC0xNTEsMTIgKzE1
MSwxMyBAQCBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50
QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgVwogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwogICAgICAgICBtX2RlbHRhWCA9IGUuZGF0YS5z
Y3JvbGxVcGRhdGUuZGVsdGFYOwogICAgICAgICBtX2RlbHRhWSA9IGUuZGF0YS5zY3JvbGxVcGRh
dGUuZGVsdGFZOworICAgICAgICBtX2RhdGEubV9zY3JvbGxVcGRhdGUubV92ZWxvY2l0eVggPSBl
LmRhdGEuc2Nyb2xsVXBkYXRlLnZlbG9jaXR5WDsKKyAgICAgICAgbV9kYXRhLm1fc2Nyb2xsVXBk
YXRlLm1fdmVsb2NpdHlZID0gZS5kYXRhLnNjcm9sbFVwZGF0ZS52ZWxvY2l0eVk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKICAgICAgICAgbV90
eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcDsKICAgICAgICAgbV9hcmVhID0gSW50U2l6
ZShlLmRhdGEudGFwLndpZHRoLCBlLmRhdGEudGFwLmhlaWdodCk7Ci0gICAgICAgIC8vIEZJWE1F
OiBQbGF0Zm9ybUdlc3R1cmVFdmVudCBkZWx0YVggaXMgb3ZlcmxvYWRlZCAtIHdrYi51Zy85MzEy
MwotICAgICAgICBtX2RlbHRhWCA9IHN0YXRpY19jYXN0PGludD4oZS5kYXRhLnRhcC50YXBDb3Vu
dCk7CisgICAgICAgIG1fZGF0YS5tX3RhcC5tX3RhcENvdW50ID0gZS5kYXRhLnRhcC50YXBDb3Vu
dDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwRG93
bjoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd247CkBAIC0x
NzksOCArMTgwLDcgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1
cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFcKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRhdGU6CiAgICAgICAgIG1fdHlw
ZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTsKLSAgICAgICAgLy8gRklYTUU6
IFBsYXRmb3JtR2VzdHVyZUV2ZW50IGRlbHRhWCBpcyBvdmVybG9hZGVkIC0gd2tiLnVnLzkzMTIz
Ci0gICAgICAgIG1fZGVsdGFYID0gZS5kYXRhLnBpbmNoVXBkYXRlLnNjYWxlOworICAgICAgICBt
X2RhdGEubV9waW5jaFVwZGF0ZS5tX3NjYWxlID0gZS5kYXRhLnBpbmNoVXBkYXRlLnNjYWxlOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>