<?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>119807</bug_id>
          
          <creation_ts>2013-08-14 11:09:28 -0700</creation_ts>
          <short_desc>Finish making FloatingObject a real class with private members</short_desc>
          <delta_ts>2013-08-14 13:29:14 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Bem Jones-Bey">bjonesbe</reporter>
          <assigned_to name="Bem Jones-Bey">bjonesbe</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>917195</commentid>
    <comment_count>0</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-08-14 11:09:28 -0700</bug_when>
    <thetext>Finish making FloatingObject a real class with private members</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917198</commentid>
    <comment_count>1</comment_count>
      <attachid>208747</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-08-14 11:13:28 -0700</bug_when>
    <thetext>Created attachment 208747
Patch

Port patch from Blink</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917199</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-14 11:15:38 -0700</bug_when>
    <thetext>Does this additional encapsulation help with something forthcoming?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917204</commentid>
    <comment_count>3</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-08-14 11:24:04 -0700</bug_when>
    <thetext>It&apos;s the beginning of making floats easier to hack on and understand. There is also a goal of increasing security and performance of floats in general. (One pathalogical example the blink guys have been looking at is http://oilevent.com/, which causes very bad behavior in the placed floats tree, among other places) I&apos;d also like to port the perf fixes they&apos;ve been doing in this area.

I also have patches that I&apos;ve worked on that I&apos;ll be porting over as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917205</commentid>
    <comment_count>4</comment_count>
      <attachid>208747</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-08-14 11:28:48 -0700</bug_when>
    <thetext>Comment on attachment 208747
Patch

Patch looks fine. The FIXME next to pagination strut is not necessary though. It should be a LayoutUnit actually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917210</commentid>
    <comment_count>5</comment_count>
      <attachid>208748</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-08-14 11:37:06 -0700</bug_when>
    <thetext>Created attachment 208748
Patch

Update comment to reference LayoutUnit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917212</commentid>
    <comment_count>6</comment_count>
      <attachid>208748</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-08-14 11:38:22 -0700</bug_when>
    <thetext>Comment on attachment 208748
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917225</commentid>
    <comment_count>7</comment_count>
      <attachid>208748</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-14 12:07:37 -0700</bug_when>
    <thetext>Comment on attachment 208748
Patch

Rejecting attachment 208748 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
00BC0EC4.sh&quot;
(1 failure)

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;]&quot; exit_code: 65
** wait: No child processes.  Stop.
make: *** Waiting for unfinished jobs....
make: *** wait: No child processes.  Stop.
Command /bin/sh failed with exit code 2


** BUILD FAILED **


The following build commands failed:
	PhaseScriptExecution &quot;Generate Derived Sources&quot; &quot;/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release/Derived Sources.build/Script-C0CE72841247E66800BC0EC4.sh&quot;
(1 failure)

Full output: http://webkit-queues.appspot.com/results/1466002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917244</commentid>
    <comment_count>8</comment_count>
      <attachid>208748</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-08-14 12:54:29 -0700</bug_when>
    <thetext>Comment on attachment 208748
Patch

That&apos;s a really strange failure, and I still build fine locally after syncing to head, so lets try the CQ one more time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917256</commentid>
    <comment_count>9</comment_count>
      <attachid>208748</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-14 13:20:22 -0700</bug_when>
    <thetext>Comment on attachment 208748
Patch

Rejecting attachment 208748 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
&quot;
(1 failure)

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;]&quot; exit_code: 65
.sb
make: *** wait: No child processes.  Stop.
make: *** Waiting for unfinished jobs....
make: *** wait: No child processes.  Stop.
Command /bin/sh failed with exit code 2


** BUILD FAILED **


The following build commands failed:
	PhaseScriptExecution &quot;Generate Derived Sources&quot; &quot;/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release/Derived Sources.build/Script-C0CE72841247E66800BC0EC4.sh&quot;
(1 failure)

Full output: http://webkit-queues.appspot.com/results/1458815</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917259</commentid>
    <comment_count>10</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-08-14 13:28:03 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 208748 [details])
&gt; Rejecting attachment 208748 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit
&gt; 
&gt; Last 500 characters of output:
&gt; &quot;
&gt; (1 failure)
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;]&quot; exit_code: 65
&gt; .sb
&gt; make: *** wait: No child processes.  Stop.
&gt; make: *** Waiting for unfinished jobs....
&gt; make: *** wait: No child processes.  Stop.
&gt; Command /bin/sh failed with exit code 2
&gt; 
&gt; 
&gt; ** BUILD FAILED **
&gt; 
&gt; 
&gt; The following build commands failed:
&gt;     PhaseScriptExecution &quot;Generate Derived Sources&quot; &quot;/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release/Derived Sources.build/Script-C0CE72841247E66800BC0EC4.sh&quot;
&gt; (1 failure)
&gt; 
&gt; Full output: http://webkit-queues.appspot.com/results/1458815

I&apos;ve looked over this output a couple of times, and I can&apos;t see anything that would be caused by my patch. So I&apos;m going to commit manually, since it passed all the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917262</commentid>
    <comment_count>11</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-08-14 13:29:14 -0700</bug_when>
    <thetext>Committed r154069: &lt;http://trac.webkit.org/changeset/154069&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208747</attachid>
            <date>2013-08-14 11:13:28 -0700</date>
            <delta_ts>2013-08-14 11:37:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119807-20130814111327.patch</filename>
            <type>text/plain</type>
            <size>27194</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkxZjVjYTg5MWI3OTJl
MjIzZGIzNDAwNDJjYzk5M2U2MzhiNGJkYy4uNzliODk4NjgzOGQyYjU1ZDM2NDRmOTYzNzhkNjky
NGNkYmE3ZThkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA4LTE0ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIEZpbmlzaCBtYWtpbmcg
RmxvYXRpbmdPYmplY3QgYSByZWFsIGNsYXNzIHdpdGggcHJpdmF0ZSBtZW1iZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTk4MDcKKworICAgICAg
ICBUaGlzIGlzIGEgcG9ydCBmcm9tIEJsaW5rIG9mCisgICAgICAgIGh0dHA6Ly9zcmMuY2hyb21p
dW0ub3JnL3ZpZXd2Yy9ibGluaz92aWV3PXJldmlzaW9uJnJldmlzaW9uPTE1NTk2NAorICAgICAg
ICBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBGcm9tIGhpcyBjb21t
ZW50cyBvbiB0aGUgQmxpbmsgY2hhbmdlOgorICAgICAgICAKKyAgICAgICAgUHJldmlvdXNseSBG
bG9hdGluZ09iamVjdCB3YXMgaW4gYSBoYWxmLWRvbmUgc3RhdGUgd2hlcmUgaXQgaGFkCisgICAg
ICAgIGFjY2Vzc29ycyBmb3IgbWFueSBtZW1iZXJzLCBidXQgYWxzbyBtYW55IG1lbWJlcnMgd2Vy
ZSBwdWJsaWMuCisKKyAgICAgICAgVGhpcyBDTCBtYWtlcyBhbGwgbWVtYmVycyBwcml2YXRlIGFu
ZCBhZGRzIHRoZSBuZWNlc3NhcnkgcmVtYWluaW5nCisgICAgICAgIGFjY2Vzc29ycy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGVsZXRlTGluZUJveFRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbUZsb2F0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVwYWludE92ZXJoYW5naW5nRmxvYXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludEZsb2F0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6aW5zZXJ0RmxvYXRpbmdPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmNsZWFyRmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRP
dmVyaGFuZ2luZ0Zsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkSW50
cnVkaW5nRmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoaXRUZXN0Rmxv
YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGp1c3RGb3JCb3JkZXJGaXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpwYWdpbmF0aW9uU3RydXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpzZXRQYWdpbmF0aW9uU3RydXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpzZXRSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6Om9y
aWdpbmF0aW5nTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdP
YmplY3Q6OnNldE9yaWdpbmF0aW5nTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6RmxvYXRpbmdPYmplY3RIYXNoRnVuY3Rpb25zOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdEhhc2hGdW5jdGlvbnM6OmVxdWFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdEhhc2hUcmFuc2xhdG9yOjpl
cXVhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXBwZW5kRmxvYXRpbmdPYmplY3RUb0xhc3RM
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRz
SW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGlua1RvRW5kTGluZUlm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZXRlcm1pbmVTdGFydFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0
T25MaW5lKToKKwogMjAxMy0wOC0xNCAgUm9iIEJ1aXMgIDxyd2xidWlzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcmVzdWx0QW5pbWF0aW9uRWxlbWVudC0+bV9hbmlt
YXRlZFR5cGUgaW4gV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRhN2I5
MmVlNDJhZWZkZTBiY2VmMjI0NzkyNmIxNDJkYTdhMzkzN2MuLmY5MDVjMjVmMmQ1ZDQ0OThkMzA3
ZDMwYTIyZGEyODBhMjM4Mzg0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtOTk1LDggKzk5NSw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRlbGV0ZUxpbmVC
b3hUcmVlKCkKICAgICAgICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0
U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgICAgICBGbG9hdGluZ09iamVjdFNl
dEl0ZXJhdG9yIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwogICAgICAgICBmb3IgKEZs
b2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEFTU0VSVCghKCgqaXQpLT5tX29yaWdpbmF0
aW5nTGluZSkgfHwgKCppdCktPm1fb3JpZ2luYXRpbmdMaW5lLT5yZW5kZXJlcigpID09IHRoaXMp
OwotICAgICAgICAgICAgKCppdCktPm1fb3JpZ2luYXRpbmdMaW5lID0gMDsKKyAgICAgICAgICAg
IEFTU0VSVCghKCgqaXQpLT5vcmlnaW5hdGluZ0xpbmUoKSkgfHwgKCppdCktPm9yaWdpbmF0aW5n
TGluZSgpLT5yZW5kZXJlcigpID09IHRoaXMpOworICAgICAgICAgICAgKCppdCktPnNldE9yaWdp
bmF0aW5nTGluZSgwKTsKICAgICAgICAgfQogICAgIH0KICAgICBtX2xpbmVCb3hlcy5kZWxldGVM
aW5lQm94VHJlZShyZW5kZXJBcmVuYSgpKTsKQEAgLTE4NDcsNyArMTg0Nyw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbUZsb2F0cygpCiAgICAgZm9yIChGbG9hdGluZ09iamVj
dFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiByID0gKml0OwogICAgICAgICBpZiAoci0+
aXNEZXNjZW5kYW50KCkpCi0gICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChyLT5tX3Jl
bmRlcmVyLCBJbnRTaXplKHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKHIpLCB5UG9z
aXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSkpOworICAgICAgICAgICAgYWRkT3ZlcmZs
b3dGcm9tQ2hpbGQoci0+cmVuZGVyZXIoKSwgSW50U2l6ZSh4UG9zaXRpb25Gb3JGbG9hdEluY2x1
ZGluZ01hcmdpbihyKSwgeVBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJnaW4ocikpKTsKICAg
ICB9CiB9CiAKQEAgLTI5NzYsOSArMjk3Niw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlcGFpbnRP
dmVyaGFuZ2luZ0Zsb2F0cyhib29sIHBhaW50QWxsRGVzY2VuZGFudHMpCiAgICAgICAgIC8vIE9u
bHkgcmVwYWludCB0aGUgb2JqZWN0IGlmIGl0IGlzIG92ZXJoYW5naW5nLCBpcyBub3QgaW4gaXRz
IG93biBsYXllciwgYW5kCiAgICAgICAgIC8vIGlzIG91ciByZXNwb25zaWJpbGl0eSB0byBwYWlu
dCAobV9zaG91bGRQYWludCBpcyBzZXQpLiBXaGVuIHBhaW50QWxsRGVzY2VuZGFudHMgaXMgdHJ1
ZSwgdGhlIGxhdHRlcgogICAgICAgICAvLyBjb25kaXRpb24gaXMgcmVwbGFjZWQgd2l0aCBiZWlu
ZyBhIGRlc2NlbmRhbnQgb2YgdXMuCi0gICAgICAgIGlmIChsb2dpY2FsQm90dG9tRm9yRmxvYXQo
cikgPiBsb2dpY2FsSGVpZ2h0KCkgJiYgKChwYWludEFsbERlc2NlbmRhbnRzICYmIHItPm1fcmVu
ZGVyZXItPmlzRGVzY2VuZGFudE9mKHRoaXMpKSB8fCByLT5zaG91bGRQYWludCgpKSAmJiAhci0+
bV9yZW5kZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewotICAgICAgICAgICAgci0+bV9y
ZW5kZXJlci0+cmVwYWludCgpOwotICAgICAgICAgICAgci0+bV9yZW5kZXJlci0+cmVwYWludE92
ZXJoYW5naW5nRmxvYXRzKGZhbHNlKTsKKyAgICAgICAgaWYgKGxvZ2ljYWxCb3R0b21Gb3JGbG9h
dChyKSA+IGxvZ2ljYWxIZWlnaHQoKSAmJiAoKHBhaW50QWxsRGVzY2VuZGFudHMgJiYgci0+cmVu
ZGVyZXIoKS0+aXNEZXNjZW5kYW50T2YodGhpcykpIHx8IHItPnNob3VsZFBhaW50KCkpICYmICFy
LT5yZW5kZXJlcigpLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CisgICAgICAgICAgICByLT5y
ZW5kZXJlcigpLT5yZXBhaW50KCk7CisgICAgICAgICAgICByLT5yZW5kZXJlcigpLT5yZXBhaW50
T3ZlcmhhbmdpbmdGbG9hdHMoZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMzM4Niwy
MCArMzM4NiwyMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludEZsb2F0cyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIGZvciAoRmxvYXRpbmdP
YmplY3RTZXRJdGVyYXRvciBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewogICAgICAgICBGbG9hdGluZ09iamVjdCogciA9ICppdDsKICAgICAgICAgLy8g
T25seSBwYWludCB0aGUgb2JqZWN0IGlmIG91ciBtX3Nob3VsZFBhaW50IGZsYWcgaXMgc2V0Lgot
ICAgICAgICBpZiAoci0+c2hvdWxkUGFpbnQoKSAmJiAhci0+bV9yZW5kZXJlci0+aGFzU2VsZlBh
aW50aW5nTGF5ZXIoKSkgeworICAgICAgICBpZiAoci0+c2hvdWxkUGFpbnQoKSAmJiAhci0+cmVu
ZGVyZXIoKS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgUGFpbnRJbmZv
IGN1cnJlbnRQYWludEluZm8ocGFpbnRJbmZvKTsKICAgICAgICAgICAgIGN1cnJlbnRQYWludElu
Zm8ucGhhc2UgPSBwcmVzZXJ2ZVBoYXNlID8gcGFpbnRJbmZvLnBoYXNlIDogUGFpbnRQaGFzZUJs
b2NrQmFja2dyb3VuZDsKLSAgICAgICAgICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBmbGlw
RmxvYXRGb3JXcml0aW5nTW9kZUZvckNoaWxkKHIsIExheW91dFBvaW50KHBhaW50T2Zmc2V0Lngo
KSArIHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKHIpIC0gci0+bV9yZW5kZXJlci0+
eCgpLCBwYWludE9mZnNldC55KCkgKyB5UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihy
KSAtIHItPm1fcmVuZGVyZXItPnkoKSkpOwotICAgICAgICAgICAgci0+bV9yZW5kZXJlci0+cGFp
bnQoY3VycmVudFBhaW50SW5mbywgY2hpbGRQb2ludCk7CisgICAgICAgICAgICAvLyBGSVhNRTog
TGF5b3V0UG9pbnQgdmVyc2lvbiBvZiB4UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbiB3
b3VsZCBtYWtlIHRoaXMgbXVjaCBjbGVhbmVyLgorICAgICAgICAgICAgTGF5b3V0UG9pbnQgY2hp
bGRQb2ludCA9IGZsaXBGbG9hdEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQociwgTGF5b3V0UG9pbnQo
cGFpbnRPZmZzZXQueCgpICsgeFBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJnaW4ocikgLSBy
LT5yZW5kZXJlcigpLT54KCksIHBhaW50T2Zmc2V0LnkoKSArIHlQb3NpdGlvbkZvckZsb2F0SW5j
bHVkaW5nTWFyZ2luKHIpIC0gci0+cmVuZGVyZXIoKS0+eSgpKSk7CisgICAgICAgICAgICByLT5y
ZW5kZXJlcigpLT5wYWludChjdXJyZW50UGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKICAgICAgICAg
ICAgIGlmICghcHJlc2VydmVQaGFzZSkgewogICAgICAgICAgICAgICAgIGN1cnJlbnRQYWludElu
Zm8ucGhhc2UgPSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzOwotICAgICAgICAgICAg
ICAgIHItPm1fcmVuZGVyZXItPnBhaW50KGN1cnJlbnRQYWludEluZm8sIGNoaWxkUG9pbnQpOwor
ICAgICAgICAgICAgICAgIHItPnJlbmRlcmVyKCktPnBhaW50KGN1cnJlbnRQYWludEluZm8sIGNo
aWxkUG9pbnQpOwogICAgICAgICAgICAgICAgIGN1cnJlbnRQYWludEluZm8ucGhhc2UgPSBQYWlu
dFBoYXNlRmxvYXQ7Ci0gICAgICAgICAgICAgICAgci0+bV9yZW5kZXJlci0+cGFpbnQoY3VycmVu
dFBhaW50SW5mbywgY2hpbGRQb2ludCk7CisgICAgICAgICAgICAgICAgci0+cmVuZGVyZXIoKS0+
cGFpbnQoY3VycmVudFBhaW50SW5mbywgY2hpbGRQb2ludCk7CiAgICAgICAgICAgICAgICAgY3Vy
cmVudFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGb3JlZ3JvdW5kOwotICAgICAgICAgICAg
ICAgIHItPm1fcmVuZGVyZXItPnBhaW50KGN1cnJlbnRQYWludEluZm8sIGNoaWxkUG9pbnQpOwor
ICAgICAgICAgICAgICAgIHItPnJlbmRlcmVyKCktPnBhaW50KGN1cnJlbnRQYWludEluZm8sIGNo
aWxkUG9pbnQpOwogICAgICAgICAgICAgICAgIGN1cnJlbnRQYWludEluZm8ucGhhc2UgPSBQYWlu
dFBoYXNlT3V0bGluZTsKLSAgICAgICAgICAgICAgICByLT5tX3JlbmRlcmVyLT5wYWludChjdXJy
ZW50UGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAgICAgICAgICAgICAgICByLT5yZW5kZXJlcigp
LT5wYWludChjdXJyZW50UGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KQEAgLTM2MTUsNyArMzYxNiw3IEBAIEdhcFJlY3RzIFJlbmRlckJsb2Nr
OjpzZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50
JiByCiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIHIgPSAqaXQ7CiAgICAgICAgICAg
ICAgICAgTGF5b3V0UmVjdCBmbG9hdEJveChvZmZzZXRGcm9tUm9vdEJsb2NrLndpZHRoKCkgKyB4
UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9mZnNldEZyb21Sb290QmxvY2suaGVpZ2h0KCkgKyB5UG9zaXRpb25G
b3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHItPm1fcmVuZGVyZXItPndpZHRoKCksIHItPm1fcmVuZGVyZXItPmhlaWdodCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHItPnJlbmRlcmVyKCktPndpZHRo
KCksIHItPnJlbmRlcmVyKCktPmhlaWdodCgpKTsKICAgICAgICAgICAgICAgICByb290QmxvY2st
PmZsaXBGb3JXcml0aW5nTW9kZShmbG9hdEJveCk7CiAgICAgICAgICAgICAgICAgZmxvYXRCb3gu
bW92ZShyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLngoKSwgcm9vdEJsb2NrUGh5c2ljYWxQb3Np
dGlvbi55KCkpOwogICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+Y2xpcE91dChw
aXhlbFNuYXBwZWRJbnRSZWN0KGZsb2F0Qm94KSk7CkBAIC00MDgxLDcgKzQwODIsNyBAQCBSZW5k
ZXJCbG9jazo6RmxvYXRpbmdPYmplY3QqIFJlbmRlckJsb2NrOjppbnNlcnRGbG9hdGluZ09iamVj
dChSZW5kZXJCb3gqIG8pCiAKICAgICBuZXdPYmotPnNldFNob3VsZFBhaW50KCFvLT5oYXNTZWxm
UGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBh
aW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgogICAgIG5ld09iai0+c2V0
SXNEZXNjZW5kYW50KHRydWUpOwotICAgIG5ld09iai0+bV9yZW5kZXJlciA9IG87CisgICAgbmV3
T2JqLT5zZXRSZW5kZXJlcihvKTsKIAogICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQobmV3T2Jq
KTsKICAgICAKQEAgLTQxMDgsMTkgKzQxMDksMTkgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVtb3Zl
RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94KiBvKQogICAgICAgICAgICAgICAgICAgICAvLyBhY2Nv
bXBsaXNoZWQgYnkgcHJldGVuZGluZyB0aGV5IGhhdmUgYSBoZWlnaHQgb2YgMS4KICAgICAgICAg
ICAgICAgICAgICAgbG9naWNhbEJvdHRvbSA9IG1heChsb2dpY2FsQm90dG9tLCBsb2dpY2FsVG9w
ICsgMSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyLT5tX29yaWdp
bmF0aW5nTGluZSkgeworICAgICAgICAgICAgICAgIGlmIChyLT5vcmlnaW5hdGluZ0xpbmUoKSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoIXNlbGZOZWVkc0xheW91dCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoci0+bV9vcmlnaW5hdGluZ0xpbmUtPnJlbmRlcmVyKCkg
PT0gdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByLT5tX29yaWdpbmF0aW5nTGluZS0+
bWFya0RpcnR5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoci0+b3JpZ2luYXRp
bmdMaW5lKCktPnJlbmRlcmVyKCkgPT0gdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
LT5vcmlnaW5hdGluZ0xpbmUoKS0+bWFya0RpcnR5KCk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgICAgICAgICAgICAgIHItPm1fb3JpZ2luYXRp
bmdMaW5lID0gMDsKKyAgICAgICAgICAgICAgICAgICAgci0+c2V0T3JpZ2luYXRpbmdMaW5lKDAp
OwogI2VuZGlmCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hcmtMaW5lc0Rp
cnR5SW5CbG9ja1JhbmdlKDAsIGxvZ2ljYWxCb3R0b20pOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92ZShyKTsKLSAgICAgICAgICAgIEFTU0VSVCgh
ci0+bV9vcmlnaW5hdGluZ0xpbmUpOworICAgICAgICAgICAgQVNTRVJUKCFyLT5vcmlnaW5hdGlu
Z0xpbmUoKSk7CiAgICAgICAgICAgICBkZWxldGUgcjsKICAgICAgICAgfQogICAgIH0KQEAgLTQx
MzUsNyArNDEzNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0c0Jl
bG93KEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXQsIGludCBsb2dpCiAgICAgRmxvYXRpbmdPYmpl
Y3QqIGN1cnIgPSBmbG9hdGluZ09iamVjdFNldC5sYXN0KCk7CiAgICAgd2hpbGUgKGN1cnIgIT0g
bGFzdEZsb2F0ICYmICghY3Vyci0+aXNQbGFjZWQoKSB8fCBsb2dpY2FsVG9wRm9yRmxvYXQoY3Vy
cikgPj0gbG9naWNhbE9mZnNldCkpIHsKICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92
ZShjdXJyKTsKLSAgICAgICAgQVNTRVJUKCFjdXJyLT5tX29yaWdpbmF0aW5nTGluZSk7CisgICAg
ICAgIEFTU0VSVCghY3Vyci0+b3JpZ2luYXRpbmdMaW5lKCkpOwogICAgICAgICBkZWxldGUgY3Vy
cjsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0U2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNDI5Miw3ICs0MjkzLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25O
ZXdGbG9hdHMoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bmV3TG9naWNhbFRvcCAhPSBmbG9hdExvZ2ljYWxMb2NhdGlvbi55KCkpIHsKLSAgICAgICAgICAg
ICAgICBmbG9hdGluZ09iamVjdC0+bV9wYWdpbmF0aW9uU3RydXQgPSBuZXdMb2dpY2FsVG9wIC0g
ZmxvYXRMb2dpY2FsTG9jYXRpb24ueSgpOworICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqZWN0
LT5zZXRQYWdpbmF0aW9uU3RydXQobmV3TG9naWNhbFRvcCAtIGZsb2F0TG9naWNhbExvY2F0aW9u
LnkoKSk7CiAKICAgICAgICAgICAgICAgICBmbG9hdExvZ2ljYWxMb2NhdGlvbiA9IGNvbXB1dGVM
b2dpY2FsTG9jYXRpb25Gb3JGbG9hdChmbG9hdGluZ09iamVjdCwgbmV3TG9naWNhbFRvcCk7CiAg
ICAgICAgICAgICAgICAgc2V0TG9naWNhbExlZnRGb3JGbG9hdChmbG9hdGluZ09iamVjdCwgZmxv
YXRMb2dpY2FsTG9jYXRpb24ueCgpKTsKQEAgLTQ2ODUsNyArNDY4Niw3IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgZm9yIChGbG9hdGluZ09iamVjdFNldEl0ZXJh
dG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSAqaXQ7CiAgICAgICAg
ICAgICBpZiAoIWZsb2F0aW5nT2JqZWN0LT5pc0Rlc2NlbmRhbnQoKSkKLSAgICAgICAgICAgICAg
ICBvbGRJbnRydWRpbmdGbG9hdFNldC5hZGQoZmxvYXRpbmdPYmplY3QtPm1fcmVuZGVyZXIpOwor
ICAgICAgICAgICAgICAgIG9sZEludHJ1ZGluZ0Zsb2F0U2V0LmFkZChmbG9hdGluZ09iamVjdC0+
cmVuZGVyZXIoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3MDksNyArNDcxMCw3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0
U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAgICAgICAgICBm
b3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCog
ZiA9ICppdDsKLSAgICAgICAgICAgICAgICBmbG9hdE1hcC5hZGQoZi0+bV9yZW5kZXJlciwgZik7
CisgICAgICAgICAgICAgICAgZmxvYXRNYXAuYWRkKGYtPnJlbmRlcmVyKCksIGYpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhmbG9h
dGluZ09iamVjdFNldCk7CkBAIC00NzYwLDcgKzQ3NjEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpj
bGVhckZsb2F0cygpCiAgICAgICAgICAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGVuZCA9
IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwogICAgICAgICAgICAgZm9yIChGbG9hdGluZ09iamVj
dFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGYgPSAqaXQ7Ci0gICAgICAg
ICAgICAgICAgRmxvYXRpbmdPYmplY3QqIG9sZEZsb2F0aW5nT2JqZWN0ID0gZmxvYXRNYXAuZ2V0
KGYtPm1fcmVuZGVyZXIpOworICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBvbGRGbG9h
dGluZ09iamVjdCA9IGZsb2F0TWFwLmdldChmLT5yZW5kZXJlcigpKTsKICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20gPSBsb2dpY2FsQm90dG9tRm9yRmxvYXQoZik7CiAg
ICAgICAgICAgICAgICAgaWYgKG9sZEZsb2F0aW5nT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgb2xkTG9naWNhbEJvdHRvbSA9IGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChv
bGRGbG9hdGluZ09iamVjdCk7CkBAIC00NzgwLDEwICs0NzgxLDEwIEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGZsb2F0TWFwLnJlbW92ZShmLT5tX3Jl
bmRlcmVyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9sZEZsb2F0aW5nT2JqZWN0LT5tX29y
aWdpbmF0aW5nTGluZSAmJiAhc2VsZk5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChvbGRGbG9hdGluZ09iamVjdC0+bV9vcmlnaW5hdGluZ0xpbmUtPnJlbmRl
cmVyKCkgPT0gdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbGRGbG9hdGluZ09iamVj
dC0+bV9vcmlnaW5hdGluZ0xpbmUtPm1hcmtEaXJ0eSgpOworICAgICAgICAgICAgICAgICAgICBm
bG9hdE1hcC5yZW1vdmUoZi0+cmVuZGVyZXIoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChv
bGRGbG9hdGluZ09iamVjdC0+b3JpZ2luYXRpbmdMaW5lKCkgJiYgIXNlbGZOZWVkc0xheW91dCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkRmxvYXRpbmdPYmplY3QtPm9y
aWdpbmF0aW5nTGluZSgpLT5yZW5kZXJlcigpID09IHRoaXMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgb2xkRmxvYXRpbmdPYmplY3QtPm9yaWdpbmF0aW5nTGluZSgpLT5tYXJrRGlydHkoKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2xkRmxv
YXRpbmdPYmplY3Q7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ4MTMsNyArNDgxNCw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgICAgIGNvbnN0IEZs
b2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5z
ZXQoKTsKICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRp
bmdPYmplY3RTZXQuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRl
cmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQgJiYgIW9sZElu
dHJ1ZGluZ0Zsb2F0U2V0LmlzRW1wdHkoKTsgKytpdCkKLSAgICAgICAgICAgICAgICBvbGRJbnRy
dWRpbmdGbG9hdFNldC5yZW1vdmUoKCppdCktPm1fcmVuZGVyZXIpOworICAgICAgICAgICAgICAg
IG9sZEludHJ1ZGluZ0Zsb2F0U2V0LnJlbW92ZSgoKml0KS0+cmVuZGVyZXIoKSk7CiAgICAgICAg
ICAgICBpZiAoIW9sZEludHJ1ZGluZ0Zsb2F0U2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICBtYXJrQWxsRGVzY2VuZGFudHNXaXRoRmxvYXRzRm9yTGF5b3V0KCk7CiAgICAgICAgIH0KQEAg
LTQ4NDEsMTYgKzQ4NDIsMTYgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRkT3Zlcmhhbmdp
bmdGbG9hdHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBib29sIG1ha2VDaGlsZFAKIAogICAgICAgICBp
ZiAobG9naWNhbEJvdHRvbSA+IGxvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gSWYg
dGhlIG9iamVjdCBpcyBub3QgaW4gdGhlIGxpc3QsIHdlIGFkZCBpdCBub3cuCi0gICAgICAgICAg
ICBpZiAoIWNvbnRhaW5zRmxvYXQoci0+bV9yZW5kZXJlcikpIHsKKyAgICAgICAgICAgIGlmICgh
Y29udGFpbnNGbG9hdChyLT5yZW5kZXJlcigpKSkgewogICAgICAgICAgICAgICAgIExheW91dFNp
emUgb2Zmc2V0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IExheW91dFNpemUoLWNoaWxk
TG9naWNhbExlZnQsIC1jaGlsZExvZ2ljYWxUb3ApIDogTGF5b3V0U2l6ZSgtY2hpbGRMb2dpY2Fs
VG9wLCAtY2hpbGRMb2dpY2FsTGVmdCk7CiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3Qq
IGZsb2F0aW5nT2JqID0gbmV3IEZsb2F0aW5nT2JqZWN0KHItPnR5cGUoKSwgTGF5b3V0UmVjdChy
LT5mcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCByLT5mcmFtZVJlY3QoKS5zaXplKCkp
KTsKLSAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+bV9yZW5kZXJlciA9IHItPm1fcmVuZGVy
ZXI7CisgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmotPnNldFJlbmRlcmVyKHItPnJlbmRlcmVy
KCkpOwogCiAgICAgICAgICAgICAgICAgLy8gVGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxheWVyIGFs
d2F5cyBwYWludHMgdGhlIGZsb2F0IChzbyB0aGF0IHppbmRleCBhbmQgc3RhY2tpbmcKICAgICAg
ICAgICAgICAgICAvLyBiZWhhdmVzIHByb3Blcmx5KS4gIFdlIGFsd2F5cyB3YW50IHRvIHByb3Bh
Z2F0ZSB0aGUgZGVzaXJlIHRvIHBhaW50IHRoZSBmbG9hdCBhcwogICAgICAgICAgICAgICAgIC8v
IGZhciBvdXQgYXMgd2UgY2FuLCB0byB0aGUgb3V0ZXJtb3N0IGJsb2NrIHRoYXQgb3ZlcmxhcHMg
dGhlIGZsb2F0LCBzdG9wcGluZyBvbmx5CiAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGl0IGEg
c2VsZi1wYWludGluZyBsYXllciBib3VuZGFyeS4KLSAgICAgICAgICAgICAgICBpZiAoci0+bV9y
ZW5kZXJlci0+ZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgPT0gZW5jbG9zaW5nRmxvYXRQ
YWludGluZ0xheWVyKCkpCisgICAgICAgICAgICAgICAgaWYgKHItPnJlbmRlcmVyKCktPmVuY2xv
c2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpID09IGVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcigp
KQogICAgICAgICAgICAgICAgICAgICByLT5zZXRTaG91bGRQYWludChmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+c2V0U2hvdWxk
UGFpbnQoZmFsc2UpOwpAQCAtNDg2Myw4ICs0ODY0LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9j
azo6YWRkT3ZlcmhhbmdpbmdGbG9hdHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBib29sIG1ha2VDaGls
ZFAKICAgICAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKGZsb2F0aW5nT2JqKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtYWtlQ2hp
bGRQYWludE90aGVyRmxvYXRzICYmICFyLT5zaG91bGRQYWludCgpICYmICFyLT5tX3JlbmRlcmVy
LT5oYXNTZWxmUGFpbnRpbmdMYXllcigpCi0gICAgICAgICAgICAgICAgJiYgci0+bV9yZW5kZXJl
ci0+aXNEZXNjZW5kYW50T2YoY2hpbGQpICYmIHItPm1fcmVuZGVyZXItPmVuY2xvc2luZ0Zsb2F0
UGFpbnRpbmdMYXllcigpID09IGNoaWxkLT5lbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSkg
eworICAgICAgICAgICAgaWYgKG1ha2VDaGlsZFBhaW50T3RoZXJGbG9hdHMgJiYgIXItPnNob3Vs
ZFBhaW50KCkgJiYgIXItPnJlbmRlcmVyKCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkKKyAgICAg
ICAgICAgICAgICAmJiByLT5yZW5kZXJlcigpLT5pc0Rlc2NlbmRhbnRPZihjaGlsZCkgJiYgci0+
cmVuZGVyZXIoKS0+ZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgPT0gY2hpbGQtPmVuY2xv
c2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGZsb2F0
IGlzIG5vdCBvdmVyaGFuZ2luZyBmcm9tIHRoaXMgYmxvY2ssIHNvIGlmIGl0IGlzIGEgZGVzY2Vu
ZGFudCBvZiB0aGUgY2hpbGQsIHRoZSBjaGlsZCBzaG91bGQKICAgICAgICAgICAgICAgICAvLyBw
YWludCBpdCAodGhlIG90aGVyIGNhc2UgaXMgdGhhdCBpdCBpcyBpbnRydWRpbmcgaW50byB0aGUg
Y2hpbGQpLCB1bmxlc3MgaXQgaGFzIGl0cyBvd24gbGF5ZXIgb3IgZW5jbG9zaW5nCiAgICAgICAg
ICAgICAgICAgLy8gbGF5ZXIuCkBAIC00ODc2LDcgKzQ4NzcsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJsb2NrOjphZGRPdmVyaGFuZ2luZ0Zsb2F0cyhSZW5kZXJCbG9jayogY2hpbGQsIGJvb2wgbWFr
ZUNoaWxkUAogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGZsb2F0IGRvZXNuJ3Qgb3Zlcmhhbmcs
IGl0IGRpZG4ndCBnZXQgcHV0IGludG8gb3VyIGxpc3QuICBXZSBuZWVkIHRvIGdvIGFoZWFkIGFu
ZCBhZGQgaXRzIG92ZXJmbG93IGluIHRvIHRoZQogICAgICAgICAgICAgLy8gY2hpbGQgbm93Lgog
ICAgICAgICAgICAgaWYgKHItPmlzRGVzY2VuZGFudCgpKQotICAgICAgICAgICAgICAgIGNoaWxk
LT5hZGRPdmVyZmxvd0Zyb21DaGlsZChyLT5tX3JlbmRlcmVyLCBMYXlvdXRTaXplKHhQb3NpdGlv
bkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKHIpLCB5UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01h
cmdpbihyKSkpOworICAgICAgICAgICAgICAgIGNoaWxkLT5hZGRPdmVyZmxvd0Zyb21DaGlsZChy
LT5yZW5kZXJlcigpLCBMYXlvdXRTaXplKHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2lu
KHIpLCB5UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSkpOwogICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiBsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b207CkBAIC00OTI3LDcgKzQ5
MjgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRJbnRydWRpbmdGbG9hdHMoUmVuZGVyQmxvY2sq
IHByZXYsIExheW91dFVuaXQgbG9naWNhbExlZnRPZgogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5zZXRTaG91bGRQYWludChm
YWxzZSk7IC8vIFdlIGFyZSBub3QgaW4gdGhlIGRpcmVjdCBpbmhlcml0YW5jZSBjaGFpbiBmb3Ig
dGhpcyBmbG9hdC4gV2Ugd2lsbCBuZXZlciBwYWludCBpdC4KLSAgICAgICAgICAgICAgICBmbG9h
dGluZ09iai0+bV9yZW5kZXJlciA9IHItPm1fcmVuZGVyZXI7CisgICAgICAgICAgICAgICAgZmxv
YXRpbmdPYmotPnNldFJlbmRlcmVyKHItPnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIC8vIFdlIGNyZWF0ZSB0aGUgZmxvYXRpbmcgb2JqZWN0IGxpc3QgbGF6
aWx5LgogICAgICAgICAgICAgICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMpCkBAIC01MTY1LDEx
ICs1MTY2LDExIEBAIGJvb2wgUmVuZGVyQmxvY2s6OmhpdFRlc3RGbG9hdHMoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgZm9yIChGbG9hdGluZ09i
amVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7IGl0ICE9IGJlZ2lu
OykgewogICAgICAgICAtLWl0OwogICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmpl
Y3QgPSAqaXQ7Ci0gICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+c2hvdWxkUGFpbnQoKSAmJiAh
ZmxvYXRpbmdPYmplY3QtPm1fcmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAg
ICAgICAgICAgIExheW91dFVuaXQgeE9mZnNldCA9IHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5n
TWFyZ2luKGZsb2F0aW5nT2JqZWN0KSAtIGZsb2F0aW5nT2JqZWN0LT5tX3JlbmRlcmVyLT54KCk7
Ci0gICAgICAgICAgICBMYXlvdXRVbml0IHlPZmZzZXQgPSB5UG9zaXRpb25Gb3JGbG9hdEluY2x1
ZGluZ01hcmdpbihmbG9hdGluZ09iamVjdCkgLSBmbG9hdGluZ09iamVjdC0+bV9yZW5kZXJlci0+
eSgpOworICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPnNob3VsZFBhaW50KCkgJiYgIWZsb2F0
aW5nT2JqZWN0LT5yZW5kZXJlcigpLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CisgICAgICAg
ICAgICBMYXlvdXRVbml0IHhPZmZzZXQgPSB4UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdp
bihmbG9hdGluZ09iamVjdCkgLSBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS0+eCgpOworICAg
ICAgICAgICAgTGF5b3V0VW5pdCB5T2Zmc2V0ID0geVBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdN
YXJnaW4oZmxvYXRpbmdPYmplY3QpIC0gZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCktPnkoKTsK
ICAgICAgICAgICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBmbGlwRmxvYXRGb3JXcml0aW5n
TW9kZUZvckNoaWxkKGZsb2F0aW5nT2JqZWN0LCBhZGp1c3RlZExvY2F0aW9uICsgTGF5b3V0U2l6
ZSh4T2Zmc2V0LCB5T2Zmc2V0KSk7Ci0gICAgICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPm1f
cmVuZGVyZXItPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBj
aGlsZFBvaW50KSkgeworICAgICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigp
LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgY2hpbGRQb2lu
dCkpIHsKICAgICAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRp
b25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGNoaWxkUG9pbnQpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTcwNTgsOCArNzA1OSw4
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkanVzdEZvckJvcmRlckZpdChMYXlvdXRVbml0IHgsIExh
eW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmCiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmpl
Y3QqIHIgPSAqaXQ7CiAgICAgICAgICAgICAgICAgLy8gT25seSBleGFtaW5lIHRoZSBvYmplY3Qg
aWYgb3VyIG1fc2hvdWxkUGFpbnQgZmxhZyBpcyBzZXQuCiAgICAgICAgICAgICAgICAgaWYgKHIt
PnNob3VsZFBhaW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdExl
ZnQgPSB4UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSAtIHItPm1fcmVuZGVyZXIt
PngoKTsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdFJpZ2h0ID0gZmxvYXRM
ZWZ0ICsgci0+bV9yZW5kZXJlci0+d2lkdGgoKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0
VW5pdCBmbG9hdExlZnQgPSB4UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSAtIHIt
PnJlbmRlcmVyKCktPngoKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdFJp
Z2h0ID0gZmxvYXRMZWZ0ICsgci0+cmVuZGVyZXIoKS0+d2lkdGgoKTsKICAgICAgICAgICAgICAg
ICAgICAgbGVmdCA9IG1pbihsZWZ0LCBmbG9hdExlZnQpOwogICAgICAgICAgICAgICAgICAgICBy
aWdodCA9IG1heChyaWdodCwgZmxvYXRSaWdodCk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBjOTY0YmVkNTI4NDE2ZGFkMWE2ZGJj
YWM3MGNjOWY2ZGQ1ZmIwOWFjLi5lY2Y1ODZkZDc1ZmRjMTRlZWNmMzhlOGI1YmUwZWZiNDUwYzQ4
MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNjc2LDcgKzY3
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZXZlckhhZExheW91dDsKICAgICB9OwogCi0g
ICAgc3RydWN0IEZsb2F0aW5nT2JqZWN0IHsKKyAgICBjbGFzcyBGbG9hdGluZ09iamVjdCB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZsb2F0aW5nT2JqZWN0KTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICAvLyBOb3RlIHRoYXQgVHlwZSB1c2Vz
IGJpdHMgc28geW91IGNhbiB1c2UgRmxvYXRMZWZ0UmlnaHQgYXMgYSBtYXNrIHRvIHF1ZXJ5IGZv
ciBib3RoIGxlZnQgYW5kIHJpZ2h0LgpAQCAtNzQ4LDYgKzc0OCw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCgpIGNvbnN0IHsgQVNTRVJUKGlzUGxhY2Vk
KCkpOyByZXR1cm4gbV9mcmFtZVJlY3Q7IH0KICAgICAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7IG1f
ZnJhbWVSZWN0ID0gZnJhbWVSZWN0OyB9CiAKKyAgICAgICAgaW50IHBhZ2luYXRpb25TdHJ1dCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnaW5hdGlvblN0cnV0OyB9CisgICAgICAgIHZvaWQgc2V0UGFn
aW5hdGlvblN0cnV0KGludCBzdHJ1dCkgeyBtX3BhZ2luYXRpb25TdHJ1dCA9IHN0cnV0OyB9CisK
ICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgaXNJblBsYWNlZFRyZWUoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5QbGFjZWRUcmVlOyB9CiAgICAgICAgIHZvaWQgc2V0SXNJblBsYWNlZFRyZWUo
Ym9vbCB2YWx1ZSkgeyBtX2lzSW5QbGFjZWRUcmVlID0gdmFsdWU7IH0KQEAgLTc1OCwxMiArNzYx
LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1
cm4gbV9pc0Rlc2NlbmRhbnQ7IH0KICAgICAgICAgdm9pZCBzZXRJc0Rlc2NlbmRhbnQoYm9vbCBp
c0Rlc2NlbmRhbnQpIHsgbV9pc0Rlc2NlbmRhbnQgPSBpc0Rlc2NlbmRhbnQ7IH0KIAorICAgICAg
ICAvLyBGSVhNRTogQ2FsbGVycyBvZiB0aGVzZSBtZXRob2RzIGFyZSBkYW5nZXJvdXMgYW5kIHNo
b3VsZCBiZSB3aGl0ZWxpc3RlZCBleHBsaWNpdGx5IG9yIHJlbW92ZWQuCisgICAgICAgIHZvaWQg
c2V0UmVuZGVyZXIoUmVuZGVyQm94KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7
IH0KKyAgICAgICAgUm9vdElubGluZUJveCogb3JpZ2luYXRpbmdMaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5hdGluZ0xpbmU7IH0KKyAgICAgICAgdm9pZCBzZXRPcmlnaW5hdGluZ0xpbmUo
Um9vdElubGluZUJveCogbGluZSkgeyBtX29yaWdpbmF0aW5nTGluZSA9IGxpbmU7IH0KKworICAg
IHByaXZhdGU6CiAgICAgICAgIFJlbmRlckJveCogbV9yZW5kZXJlcjsKICAgICAgICAgUm9vdElu
bGluZUJveCogbV9vcmlnaW5hdGluZ0xpbmU7CiAgICAgICAgIExheW91dFJlY3QgbV9mcmFtZVJl
Y3Q7Ci0gICAgICAgIGludCBtX3BhZ2luYXRpb25TdHJ1dDsKKyAgICAgICAgaW50IG1fcGFnaW5h
dGlvblN0cnV0OyAvLyBGSVhNRTogSXMgdGhpcyBjbGFzcyBzaXplLXNlbnNpdGl2ZT8gRG9lcyB0
aGlzIG5lZWQgMzItYml0cz8KIAotICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fdHlw
ZSA6IDI7IC8vIFR5cGUgKGxlZnQgb3IgcmlnaHQgYWxpZ25lZCkKICAgICAgICAgdW5zaWduZWQg
bV9zaG91bGRQYWludCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNEZXNjZW5kYW50IDogMTsK
QEAgLTExNzMsMTMgKzExODEsMTMgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0
IEZsb2F0aW5nT2JqZWN0SGFzaEZ1bmN0aW9ucyB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKEZsb2F0aW5nT2JqZWN0KiBrZXkpIHsgcmV0dXJuIERlZmF1bHRIYXNoPFJlbmRlckJveCo+
OjpIYXNoOjpoYXNoKGtleS0+bV9yZW5kZXJlcik7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1
YWwoRmxvYXRpbmdPYmplY3QqIGEsIEZsb2F0aW5nT2JqZWN0KiBiKSB7IHJldHVybiBhLT5tX3Jl
bmRlcmVyID09IGItPm1fcmVuZGVyZXI7IH0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
RmxvYXRpbmdPYmplY3QqIGtleSkgeyByZXR1cm4gRGVmYXVsdEhhc2g8UmVuZGVyQm94Kj46Okhh
c2g6Omhhc2goa2V5LT5yZW5kZXJlcigpKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChG
bG9hdGluZ09iamVjdCogYSwgRmxvYXRpbmdPYmplY3QqIGIpIHsgcmV0dXJuIGEtPnJlbmRlcmVy
KCkgPT0gYi0+cmVuZGVyZXIoKTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiAgICAgfTsKICAgICBzdHJ1Y3QgRmxvYXRp
bmdPYmplY3RIYXNoVHJhbnNsYXRvciB7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFJl
bmRlckJveCoga2V5KSB7IHJldHVybiBEZWZhdWx0SGFzaDxSZW5kZXJCb3gqPjo6SGFzaDo6aGFz
aChrZXkpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKEZsb2F0aW5nT2JqZWN0KiBhLCBS
ZW5kZXJCb3gqIGIpIHsgcmV0dXJuIGEtPm1fcmVuZGVyZXIgPT0gYjsgfQorICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChGbG9hdGluZ09iamVjdCogYSwgUmVuZGVyQm94KiBiKSB7IHJldHVybiBh
LT5yZW5kZXJlcigpID09IGI7IH0KICAgICB9OwogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8Rmxv
YXRpbmdPYmplY3QqLCA0LCBGbG9hdGluZ09iamVjdEhhc2hGdW5jdGlvbnM+IEZsb2F0aW5nT2Jq
ZWN0U2V0OwogICAgIHR5cGVkZWYgRmxvYXRpbmdPYmplY3RTZXQ6OmNvbnN0X2l0ZXJhdG9yIEZs
b2F0aW5nT2JqZWN0U2V0SXRlcmF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IDc4MTQ3NTRiNzM2NmFhMGRiY2ExNGVj
NDQ5MThiMTNmNzVlZjE4OTcuLmQ3ZTRiZmQxYjI2ZmQyNTU0MjBlMjBjOWY0NWMyYzkwMTU5MWU3
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwCkBAIC0xMjgxLDggKzEyODEsOCBAQCBpbmxpbmUgQmlkaVJ1biogUmVuZGVyQmxv
Y2s6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucwog
CiB2b2lkIFJlbmRlckJsb2NrOjphcHBlbmRGbG9hdGluZ09iamVjdFRvTGFzdExpbmUoRmxvYXRp
bmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQogewotICAgIEFTU0VSVCghZmxvYXRpbmdPYmplY3Qt
Pm1fb3JpZ2luYXRpbmdMaW5lKTsKLSAgICBmbG9hdGluZ09iamVjdC0+bV9vcmlnaW5hdGluZ0xp
bmUgPSBsYXN0Um9vdEJveCgpOworICAgIEFTU0VSVCghZmxvYXRpbmdPYmplY3QtPm9yaWdpbmF0
aW5nTGluZSgpKTsKKyAgICBmbG9hdGluZ09iamVjdC0+c2V0T3JpZ2luYXRpbmdMaW5lKGxhc3RS
b290Qm94KCkpOwogICAgIGxhc3RSb290Qm94KCktPmFwcGVuZEZsb2F0KGZsb2F0aW5nT2JqZWN0
LT5yZW5kZXJlcigpKTsKIH0KIApAQCAtMTk0Niw3ICsxOTQ2LDcgQEAgdm9pZCBSZW5kZXJCbG9j
azo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgSW5saW4KICAgICAgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAg
ICAgICAgICBGbG9hdGluZ09iamVjdCogZiA9ICppdDsKICAgICAgICAgICAgICAgICBhcHBlbmRG
bG9hdGluZ09iamVjdFRvTGFzdExpbmUoZik7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGYtPm1f
cmVuZGVyZXIgPT0gbGF5b3V0U3RhdGUuZmxvYXRzKClbbGF5b3V0U3RhdGUuZmxvYXRJbmRleCgp
XS5vYmplY3QpOworICAgICAgICAgICAgICAgIEFTU0VSVChmLT5yZW5kZXJlcigpID09IGxheW91
dFN0YXRlLmZsb2F0cygpW2xheW91dFN0YXRlLmZsb2F0SW5kZXgoKV0ub2JqZWN0KTsKICAgICAg
ICAgICAgICAgICAvLyBJZiBhIGZsb2F0J3MgZ2VvbWV0cnkgaGFzIGNoYW5nZWQsIGdpdmUgdXAg
b24gc3luY2luZyB3aXRoIGNsZWFuIGxpbmVzLgogICAgICAgICAgICAgICAgIGlmIChsYXlvdXRT
dGF0ZS5mbG9hdHMoKVtsYXlvdXRTdGF0ZS5mbG9hdEluZGV4KCldLnJlY3QgIT0gZi0+ZnJhbWVS
ZWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrRm9yRW5kTGluZU1hdGNoID0gZmFsc2U7
CkBAIC0yMDQwLDggKzIwNDAsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpsaW5rVG9FbmRMaW5lSWZO
ZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAg
VmVjdG9yPFJlbmRlckJveCo+OjppdGVyYXRvciBlbmQgPSBjbGVhbkxpbmVGbG9hdHMtPmVuZCgp
OwogICAgICAgICAgICAgICAgICAgICBmb3IgKFZlY3RvcjxSZW5kZXJCb3gqPjo6aXRlcmF0b3Ig
ZiA9IGNsZWFuTGluZUZsb2F0cy0+YmVnaW4oKTsgZiAhPSBlbmQ7ICsrZikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0gaW5zZXJ0Rmxv
YXRpbmdPYmplY3QoKmYpOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFmbG9hdGlu
Z09iamVjdC0+bV9vcmlnaW5hdGluZ0xpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXRpbmdPYmplY3QtPm1fb3JpZ2luYXRpbmdMaW5lID0gbGluZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghZmxvYXRpbmdPYmplY3QtPm9yaWdpbmF0aW5nTGluZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqZWN0LT5zZXRPcmlnaW5hdGluZ0xpbmUobGlu
ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxUb3BG
b3JDaGlsZCgqZikgLSBtYXJnaW5CZWZvcmVGb3JDaGlsZCgqZikgKyBkZWx0YSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBwb3NpdGlvbk5ld0Zsb2F0cygpOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0yMzI3LDggKzIzMjcsOCBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6ZGV0
ZXJtaW5lU3RhcnRQb3NpdGlvbihMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLAogICAgICAg
ICAgICAgICAgIFZlY3RvcjxSZW5kZXJCb3gqPjo6aXRlcmF0b3IgZW5kID0gY2xlYW5MaW5lRmxv
YXRzLT5lbmQoKTsKICAgICAgICAgICAgICAgICBmb3IgKFZlY3RvcjxSZW5kZXJCb3gqPjo6aXRl
cmF0b3IgZiA9IGNsZWFuTGluZUZsb2F0cy0+YmVnaW4oKTsgZiAhPSBlbmQ7ICsrZikgewogICAg
ICAgICAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpbnNlcnRG
bG9hdGluZ09iamVjdCgqZik7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZmxvYXRpbmdP
YmplY3QtPm1fb3JpZ2luYXRpbmdMaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdP
YmplY3QtPm1fb3JpZ2luYXRpbmdMaW5lID0gbGluZTsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFmbG9hdGluZ09iamVjdC0+b3JpZ2luYXRpbmdMaW5lKCkpOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdGluZ09iamVjdC0+c2V0T3JpZ2luYXRpbmdMaW5lKGxpbmUpOwogICAgICAgICAg
ICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxUb3BGb3JDaGlsZCgqZikgLSBtYXJn
aW5CZWZvcmVGb3JDaGlsZCgqZikpOwogICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbk5ld0Zs
b2F0cygpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobGF5b3V0U3RhdGUuZmxvYXRzKClb
bnVtQ2xlYW5GbG9hdHNdLm9iamVjdCA9PSAqZik7CkBAIC0zNjM3LDE0ICszNjM3LDE0IEBAIGJv
b2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRPbkxpbmUoRmxvYXRpbmdPYmplY3QqIG5l
d0Zsb2F0LCBGbG9hdGluZ09iamVjCiAgICAgLy8gV2Ugb25seSBjb25uZWN0IGZsb2F0cyB0byBs
aW5lcyBmb3IgcGFnaW5hdGlvbiBwdXJwb3NlcyBpZiB0aGUgZmxvYXRzIG9jY3VyIGF0IHRoZSBz
dGFydCBvZgogICAgIC8vIHRoZSBsaW5lIGFuZCB0aGUgcHJldmlvdXMgbGluZSBoYWQgYSBoYXJk
IGJyZWFrIChzbyB0aGlzIGxpbmUgaXMgZWl0aGVyIHRoZSBmaXJzdCBpbiB0aGUgYmxvY2sKICAg
ICAvLyBvciBmb2xsb3dzIGEgPGJyPikuCi0gICAgaWYgKCFuZXdGbG9hdC0+bV9wYWdpbmF0aW9u
U3RydXQgfHwgIWxpbmVJbmZvLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpIHx8ICFsaW5lSW5m
by5pc0VtcHR5KCkpCisgICAgaWYgKCFuZXdGbG9hdC0+cGFnaW5hdGlvblN0cnV0KCkgfHwgIWxp
bmVJbmZvLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpIHx8ICFsaW5lSW5mby5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZs
b2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgIEFTU0VSVChm
bG9hdGluZ09iamVjdFNldC5sYXN0KCkgPT0gbmV3RmxvYXQpOwogCiAgICAgTGF5b3V0VW5pdCBm
bG9hdExvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wRm9yRmxvYXQobmV3RmxvYXQpOwotICAgIGludCBw
YWdpbmF0aW9uU3RydXQgPSBuZXdGbG9hdC0+bV9wYWdpbmF0aW9uU3RydXQ7CisgICAgaW50IHBh
Z2luYXRpb25TdHJ1dCA9IG5ld0Zsb2F0LT5wYWdpbmF0aW9uU3RydXQoKTsKIAogICAgIGlmIChm
bG9hdExvZ2ljYWxUb3AgLSBwYWdpbmF0aW9uU3RydXQgIT0gbG9naWNhbEhlaWdodCgpICsgbGlu
ZUluZm8uZmxvYXRQYWdpbmF0aW9uU3RydXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0z
NjU4LDggKzM2NTgsOCBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0T25MaW5l
KEZsb2F0aW5nT2JqZWN0KiBuZXdGbG9hdCwgRmxvYXRpbmdPYmplYwogICAgICAgICBpZiAoZiA9
PSBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGlmIChsb2dpY2FsVG9wRm9yRmxvYXQoZikgPT0gbG9naWNhbEhlaWdodCgpICsgbGluZUluZm8u
ZmxvYXRQYWdpbmF0aW9uU3RydXQoKSkgewotICAgICAgICAgICAgZi0+bV9wYWdpbmF0aW9uU3Ry
dXQgKz0gcGFnaW5hdGlvblN0cnV0OwotICAgICAgICAgICAgUmVuZGVyQm94KiBvID0gZi0+bV9y
ZW5kZXJlcjsKKyAgICAgICAgICAgIGYtPnNldFBhZ2luYXRpb25TdHJ1dChwYWdpbmF0aW9uU3Ry
dXQgKyBmLT5wYWdpbmF0aW9uU3RydXQoKSk7CisgICAgICAgICAgICBSZW5kZXJCb3gqIG8gPSBm
LT5yZW5kZXJlcigpOwogICAgICAgICAgICAgc2V0TG9naWNhbFRvcEZvckNoaWxkKG8sIGxvZ2lj
YWxUb3BGb3JDaGlsZChvKSArIG1hcmdpbkJlZm9yZUZvckNoaWxkKG8pICsgcGFnaW5hdGlvblN0
cnV0KTsKICAgICAgICAgICAgIGlmIChvLT5pc1JlbmRlckJsb2NrKCkpCiAgICAgICAgICAgICAg
ICAgdG9SZW5kZXJCbG9jayhvKS0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBNYXJrT25seVRo
aXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208748</attachid>
            <date>2013-08-14 11:37:06 -0700</date>
            <delta_ts>2013-08-14 13:20:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119807-20130814113705.patch</filename>
            <type>text/plain</type>
            <size>27199</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkxZjVjYTg5MWI3OTJl
MjIzZGIzNDAwNDJjYzk5M2U2MzhiNGJkYy4uNzliODk4NjgzOGQyYjU1ZDM2NDRmOTYzNzhkNjky
NGNkYmE3ZThkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA4LTE0ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIEZpbmlzaCBtYWtpbmcg
RmxvYXRpbmdPYmplY3QgYSByZWFsIGNsYXNzIHdpdGggcHJpdmF0ZSBtZW1iZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTk4MDcKKworICAgICAg
ICBUaGlzIGlzIGEgcG9ydCBmcm9tIEJsaW5rIG9mCisgICAgICAgIGh0dHA6Ly9zcmMuY2hyb21p
dW0ub3JnL3ZpZXd2Yy9ibGluaz92aWV3PXJldmlzaW9uJnJldmlzaW9uPTE1NTk2NAorICAgICAg
ICBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBGcm9tIGhpcyBjb21t
ZW50cyBvbiB0aGUgQmxpbmsgY2hhbmdlOgorICAgICAgICAKKyAgICAgICAgUHJldmlvdXNseSBG
bG9hdGluZ09iamVjdCB3YXMgaW4gYSBoYWxmLWRvbmUgc3RhdGUgd2hlcmUgaXQgaGFkCisgICAg
ICAgIGFjY2Vzc29ycyBmb3IgbWFueSBtZW1iZXJzLCBidXQgYWxzbyBtYW55IG1lbWJlcnMgd2Vy
ZSBwdWJsaWMuCisKKyAgICAgICAgVGhpcyBDTCBtYWtlcyBhbGwgbWVtYmVycyBwcml2YXRlIGFu
ZCBhZGRzIHRoZSBuZWNlc3NhcnkgcmVtYWluaW5nCisgICAgICAgIGFjY2Vzc29ycy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGVsZXRlTGluZUJveFRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbUZsb2F0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVwYWludE92ZXJoYW5naW5nRmxvYXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludEZsb2F0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6aW5zZXJ0RmxvYXRpbmdPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmNsZWFyRmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRP
dmVyaGFuZ2luZ0Zsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkSW50
cnVkaW5nRmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoaXRUZXN0Rmxv
YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGp1c3RGb3JCb3JkZXJGaXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpwYWdpbmF0aW9uU3RydXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpzZXRQYWdpbmF0aW9uU3RydXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpzZXRSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6Om9y
aWdpbmF0aW5nTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdP
YmplY3Q6OnNldE9yaWdpbmF0aW5nTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6RmxvYXRpbmdPYmplY3RIYXNoRnVuY3Rpb25zOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdEhhc2hGdW5jdGlvbnM6OmVxdWFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdEhhc2hUcmFuc2xhdG9yOjpl
cXVhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXBwZW5kRmxvYXRpbmdPYmplY3RUb0xhc3RM
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRz
SW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGlua1RvRW5kTGluZUlm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZXRlcm1pbmVTdGFydFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0
T25MaW5lKToKKwogMjAxMy0wOC0xNCAgUm9iIEJ1aXMgIDxyd2xidWlzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcmVzdWx0QW5pbWF0aW9uRWxlbWVudC0+bV9hbmlt
YXRlZFR5cGUgaW4gV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRhN2I5
MmVlNDJhZWZkZTBiY2VmMjI0NzkyNmIxNDJkYTdhMzkzN2MuLmY5MDVjMjVmMmQ1ZDQ0OThkMzA3
ZDMwYTIyZGEyODBhMjM4Mzg0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtOTk1LDggKzk5NSw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRlbGV0ZUxpbmVC
b3hUcmVlKCkKICAgICAgICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0
U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgICAgICBGbG9hdGluZ09iamVjdFNl
dEl0ZXJhdG9yIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwogICAgICAgICBmb3IgKEZs
b2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEFTU0VSVCghKCgqaXQpLT5tX29yaWdpbmF0
aW5nTGluZSkgfHwgKCppdCktPm1fb3JpZ2luYXRpbmdMaW5lLT5yZW5kZXJlcigpID09IHRoaXMp
OwotICAgICAgICAgICAgKCppdCktPm1fb3JpZ2luYXRpbmdMaW5lID0gMDsKKyAgICAgICAgICAg
IEFTU0VSVCghKCgqaXQpLT5vcmlnaW5hdGluZ0xpbmUoKSkgfHwgKCppdCktPm9yaWdpbmF0aW5n
TGluZSgpLT5yZW5kZXJlcigpID09IHRoaXMpOworICAgICAgICAgICAgKCppdCktPnNldE9yaWdp
bmF0aW5nTGluZSgwKTsKICAgICAgICAgfQogICAgIH0KICAgICBtX2xpbmVCb3hlcy5kZWxldGVM
aW5lQm94VHJlZShyZW5kZXJBcmVuYSgpKTsKQEAgLTE4NDcsNyArMTg0Nyw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbUZsb2F0cygpCiAgICAgZm9yIChGbG9hdGluZ09iamVj
dFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiByID0gKml0OwogICAgICAgICBpZiAoci0+
aXNEZXNjZW5kYW50KCkpCi0gICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChyLT5tX3Jl
bmRlcmVyLCBJbnRTaXplKHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKHIpLCB5UG9z
aXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSkpOworICAgICAgICAgICAgYWRkT3ZlcmZs
b3dGcm9tQ2hpbGQoci0+cmVuZGVyZXIoKSwgSW50U2l6ZSh4UG9zaXRpb25Gb3JGbG9hdEluY2x1
ZGluZ01hcmdpbihyKSwgeVBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJnaW4ocikpKTsKICAg
ICB9CiB9CiAKQEAgLTI5NzYsOSArMjk3Niw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlcGFpbnRP
dmVyaGFuZ2luZ0Zsb2F0cyhib29sIHBhaW50QWxsRGVzY2VuZGFudHMpCiAgICAgICAgIC8vIE9u
bHkgcmVwYWludCB0aGUgb2JqZWN0IGlmIGl0IGlzIG92ZXJoYW5naW5nLCBpcyBub3QgaW4gaXRz
IG93biBsYXllciwgYW5kCiAgICAgICAgIC8vIGlzIG91ciByZXNwb25zaWJpbGl0eSB0byBwYWlu
dCAobV9zaG91bGRQYWludCBpcyBzZXQpLiBXaGVuIHBhaW50QWxsRGVzY2VuZGFudHMgaXMgdHJ1
ZSwgdGhlIGxhdHRlcgogICAgICAgICAvLyBjb25kaXRpb24gaXMgcmVwbGFjZWQgd2l0aCBiZWlu
ZyBhIGRlc2NlbmRhbnQgb2YgdXMuCi0gICAgICAgIGlmIChsb2dpY2FsQm90dG9tRm9yRmxvYXQo
cikgPiBsb2dpY2FsSGVpZ2h0KCkgJiYgKChwYWludEFsbERlc2NlbmRhbnRzICYmIHItPm1fcmVu
ZGVyZXItPmlzRGVzY2VuZGFudE9mKHRoaXMpKSB8fCByLT5zaG91bGRQYWludCgpKSAmJiAhci0+
bV9yZW5kZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewotICAgICAgICAgICAgci0+bV9y
ZW5kZXJlci0+cmVwYWludCgpOwotICAgICAgICAgICAgci0+bV9yZW5kZXJlci0+cmVwYWludE92
ZXJoYW5naW5nRmxvYXRzKGZhbHNlKTsKKyAgICAgICAgaWYgKGxvZ2ljYWxCb3R0b21Gb3JGbG9h
dChyKSA+IGxvZ2ljYWxIZWlnaHQoKSAmJiAoKHBhaW50QWxsRGVzY2VuZGFudHMgJiYgci0+cmVu
ZGVyZXIoKS0+aXNEZXNjZW5kYW50T2YodGhpcykpIHx8IHItPnNob3VsZFBhaW50KCkpICYmICFy
LT5yZW5kZXJlcigpLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CisgICAgICAgICAgICByLT5y
ZW5kZXJlcigpLT5yZXBhaW50KCk7CisgICAgICAgICAgICByLT5yZW5kZXJlcigpLT5yZXBhaW50
T3ZlcmhhbmdpbmdGbG9hdHMoZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMzM4Niwy
MCArMzM4NiwyMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludEZsb2F0cyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIGZvciAoRmxvYXRpbmdP
YmplY3RTZXRJdGVyYXRvciBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewogICAgICAgICBGbG9hdGluZ09iamVjdCogciA9ICppdDsKICAgICAgICAgLy8g
T25seSBwYWludCB0aGUgb2JqZWN0IGlmIG91ciBtX3Nob3VsZFBhaW50IGZsYWcgaXMgc2V0Lgot
ICAgICAgICBpZiAoci0+c2hvdWxkUGFpbnQoKSAmJiAhci0+bV9yZW5kZXJlci0+aGFzU2VsZlBh
aW50aW5nTGF5ZXIoKSkgeworICAgICAgICBpZiAoci0+c2hvdWxkUGFpbnQoKSAmJiAhci0+cmVu
ZGVyZXIoKS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgUGFpbnRJbmZv
IGN1cnJlbnRQYWludEluZm8ocGFpbnRJbmZvKTsKICAgICAgICAgICAgIGN1cnJlbnRQYWludElu
Zm8ucGhhc2UgPSBwcmVzZXJ2ZVBoYXNlID8gcGFpbnRJbmZvLnBoYXNlIDogUGFpbnRQaGFzZUJs
b2NrQmFja2dyb3VuZDsKLSAgICAgICAgICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBmbGlw
RmxvYXRGb3JXcml0aW5nTW9kZUZvckNoaWxkKHIsIExheW91dFBvaW50KHBhaW50T2Zmc2V0Lngo
KSArIHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKHIpIC0gci0+bV9yZW5kZXJlci0+
eCgpLCBwYWludE9mZnNldC55KCkgKyB5UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihy
KSAtIHItPm1fcmVuZGVyZXItPnkoKSkpOwotICAgICAgICAgICAgci0+bV9yZW5kZXJlci0+cGFp
bnQoY3VycmVudFBhaW50SW5mbywgY2hpbGRQb2ludCk7CisgICAgICAgICAgICAvLyBGSVhNRTog
TGF5b3V0UG9pbnQgdmVyc2lvbiBvZiB4UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbiB3
b3VsZCBtYWtlIHRoaXMgbXVjaCBjbGVhbmVyLgorICAgICAgICAgICAgTGF5b3V0UG9pbnQgY2hp
bGRQb2ludCA9IGZsaXBGbG9hdEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQociwgTGF5b3V0UG9pbnQo
cGFpbnRPZmZzZXQueCgpICsgeFBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJnaW4ocikgLSBy
LT5yZW5kZXJlcigpLT54KCksIHBhaW50T2Zmc2V0LnkoKSArIHlQb3NpdGlvbkZvckZsb2F0SW5j
bHVkaW5nTWFyZ2luKHIpIC0gci0+cmVuZGVyZXIoKS0+eSgpKSk7CisgICAgICAgICAgICByLT5y
ZW5kZXJlcigpLT5wYWludChjdXJyZW50UGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKICAgICAgICAg
ICAgIGlmICghcHJlc2VydmVQaGFzZSkgewogICAgICAgICAgICAgICAgIGN1cnJlbnRQYWludElu
Zm8ucGhhc2UgPSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzOwotICAgICAgICAgICAg
ICAgIHItPm1fcmVuZGVyZXItPnBhaW50KGN1cnJlbnRQYWludEluZm8sIGNoaWxkUG9pbnQpOwor
ICAgICAgICAgICAgICAgIHItPnJlbmRlcmVyKCktPnBhaW50KGN1cnJlbnRQYWludEluZm8sIGNo
aWxkUG9pbnQpOwogICAgICAgICAgICAgICAgIGN1cnJlbnRQYWludEluZm8ucGhhc2UgPSBQYWlu
dFBoYXNlRmxvYXQ7Ci0gICAgICAgICAgICAgICAgci0+bV9yZW5kZXJlci0+cGFpbnQoY3VycmVu
dFBhaW50SW5mbywgY2hpbGRQb2ludCk7CisgICAgICAgICAgICAgICAgci0+cmVuZGVyZXIoKS0+
cGFpbnQoY3VycmVudFBhaW50SW5mbywgY2hpbGRQb2ludCk7CiAgICAgICAgICAgICAgICAgY3Vy
cmVudFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGb3JlZ3JvdW5kOwotICAgICAgICAgICAg
ICAgIHItPm1fcmVuZGVyZXItPnBhaW50KGN1cnJlbnRQYWludEluZm8sIGNoaWxkUG9pbnQpOwor
ICAgICAgICAgICAgICAgIHItPnJlbmRlcmVyKCktPnBhaW50KGN1cnJlbnRQYWludEluZm8sIGNo
aWxkUG9pbnQpOwogICAgICAgICAgICAgICAgIGN1cnJlbnRQYWludEluZm8ucGhhc2UgPSBQYWlu
dFBoYXNlT3V0bGluZTsKLSAgICAgICAgICAgICAgICByLT5tX3JlbmRlcmVyLT5wYWludChjdXJy
ZW50UGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAgICAgICAgICAgICAgICByLT5yZW5kZXJlcigp
LT5wYWludChjdXJyZW50UGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KQEAgLTM2MTUsNyArMzYxNiw3IEBAIEdhcFJlY3RzIFJlbmRlckJsb2Nr
OjpzZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50
JiByCiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIHIgPSAqaXQ7CiAgICAgICAgICAg
ICAgICAgTGF5b3V0UmVjdCBmbG9hdEJveChvZmZzZXRGcm9tUm9vdEJsb2NrLndpZHRoKCkgKyB4
UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9mZnNldEZyb21Sb290QmxvY2suaGVpZ2h0KCkgKyB5UG9zaXRpb25G
b3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHItPm1fcmVuZGVyZXItPndpZHRoKCksIHItPm1fcmVuZGVyZXItPmhlaWdodCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHItPnJlbmRlcmVyKCktPndpZHRo
KCksIHItPnJlbmRlcmVyKCktPmhlaWdodCgpKTsKICAgICAgICAgICAgICAgICByb290QmxvY2st
PmZsaXBGb3JXcml0aW5nTW9kZShmbG9hdEJveCk7CiAgICAgICAgICAgICAgICAgZmxvYXRCb3gu
bW92ZShyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLngoKSwgcm9vdEJsb2NrUGh5c2ljYWxQb3Np
dGlvbi55KCkpOwogICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+Y2xpcE91dChw
aXhlbFNuYXBwZWRJbnRSZWN0KGZsb2F0Qm94KSk7CkBAIC00MDgxLDcgKzQwODIsNyBAQCBSZW5k
ZXJCbG9jazo6RmxvYXRpbmdPYmplY3QqIFJlbmRlckJsb2NrOjppbnNlcnRGbG9hdGluZ09iamVj
dChSZW5kZXJCb3gqIG8pCiAKICAgICBuZXdPYmotPnNldFNob3VsZFBhaW50KCFvLT5oYXNTZWxm
UGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBh
aW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgogICAgIG5ld09iai0+c2V0
SXNEZXNjZW5kYW50KHRydWUpOwotICAgIG5ld09iai0+bV9yZW5kZXJlciA9IG87CisgICAgbmV3
T2JqLT5zZXRSZW5kZXJlcihvKTsKIAogICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQobmV3T2Jq
KTsKICAgICAKQEAgLTQxMDgsMTkgKzQxMDksMTkgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVtb3Zl
RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94KiBvKQogICAgICAgICAgICAgICAgICAgICAvLyBhY2Nv
bXBsaXNoZWQgYnkgcHJldGVuZGluZyB0aGV5IGhhdmUgYSBoZWlnaHQgb2YgMS4KICAgICAgICAg
ICAgICAgICAgICAgbG9naWNhbEJvdHRvbSA9IG1heChsb2dpY2FsQm90dG9tLCBsb2dpY2FsVG9w
ICsgMSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyLT5tX29yaWdp
bmF0aW5nTGluZSkgeworICAgICAgICAgICAgICAgIGlmIChyLT5vcmlnaW5hdGluZ0xpbmUoKSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoIXNlbGZOZWVkc0xheW91dCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoci0+bV9vcmlnaW5hdGluZ0xpbmUtPnJlbmRlcmVyKCkg
PT0gdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByLT5tX29yaWdpbmF0aW5nTGluZS0+
bWFya0RpcnR5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoci0+b3JpZ2luYXRp
bmdMaW5lKCktPnJlbmRlcmVyKCkgPT0gdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
LT5vcmlnaW5hdGluZ0xpbmUoKS0+bWFya0RpcnR5KCk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgICAgICAgICAgICAgIHItPm1fb3JpZ2luYXRp
bmdMaW5lID0gMDsKKyAgICAgICAgICAgICAgICAgICAgci0+c2V0T3JpZ2luYXRpbmdMaW5lKDAp
OwogI2VuZGlmCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hcmtMaW5lc0Rp
cnR5SW5CbG9ja1JhbmdlKDAsIGxvZ2ljYWxCb3R0b20pOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92ZShyKTsKLSAgICAgICAgICAgIEFTU0VSVCgh
ci0+bV9vcmlnaW5hdGluZ0xpbmUpOworICAgICAgICAgICAgQVNTRVJUKCFyLT5vcmlnaW5hdGlu
Z0xpbmUoKSk7CiAgICAgICAgICAgICBkZWxldGUgcjsKICAgICAgICAgfQogICAgIH0KQEAgLTQx
MzUsNyArNDEzNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0c0Jl
bG93KEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXQsIGludCBsb2dpCiAgICAgRmxvYXRpbmdPYmpl
Y3QqIGN1cnIgPSBmbG9hdGluZ09iamVjdFNldC5sYXN0KCk7CiAgICAgd2hpbGUgKGN1cnIgIT0g
bGFzdEZsb2F0ICYmICghY3Vyci0+aXNQbGFjZWQoKSB8fCBsb2dpY2FsVG9wRm9yRmxvYXQoY3Vy
cikgPj0gbG9naWNhbE9mZnNldCkpIHsKICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92
ZShjdXJyKTsKLSAgICAgICAgQVNTRVJUKCFjdXJyLT5tX29yaWdpbmF0aW5nTGluZSk7CisgICAg
ICAgIEFTU0VSVCghY3Vyci0+b3JpZ2luYXRpbmdMaW5lKCkpOwogICAgICAgICBkZWxldGUgY3Vy
cjsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0U2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNDI5Miw3ICs0MjkzLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25O
ZXdGbG9hdHMoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bmV3TG9naWNhbFRvcCAhPSBmbG9hdExvZ2ljYWxMb2NhdGlvbi55KCkpIHsKLSAgICAgICAgICAg
ICAgICBmbG9hdGluZ09iamVjdC0+bV9wYWdpbmF0aW9uU3RydXQgPSBuZXdMb2dpY2FsVG9wIC0g
ZmxvYXRMb2dpY2FsTG9jYXRpb24ueSgpOworICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqZWN0
LT5zZXRQYWdpbmF0aW9uU3RydXQobmV3TG9naWNhbFRvcCAtIGZsb2F0TG9naWNhbExvY2F0aW9u
LnkoKSk7CiAKICAgICAgICAgICAgICAgICBmbG9hdExvZ2ljYWxMb2NhdGlvbiA9IGNvbXB1dGVM
b2dpY2FsTG9jYXRpb25Gb3JGbG9hdChmbG9hdGluZ09iamVjdCwgbmV3TG9naWNhbFRvcCk7CiAg
ICAgICAgICAgICAgICAgc2V0TG9naWNhbExlZnRGb3JGbG9hdChmbG9hdGluZ09iamVjdCwgZmxv
YXRMb2dpY2FsTG9jYXRpb24ueCgpKTsKQEAgLTQ2ODUsNyArNDY4Niw3IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgZm9yIChGbG9hdGluZ09iamVjdFNldEl0ZXJh
dG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSAqaXQ7CiAgICAgICAg
ICAgICBpZiAoIWZsb2F0aW5nT2JqZWN0LT5pc0Rlc2NlbmRhbnQoKSkKLSAgICAgICAgICAgICAg
ICBvbGRJbnRydWRpbmdGbG9hdFNldC5hZGQoZmxvYXRpbmdPYmplY3QtPm1fcmVuZGVyZXIpOwor
ICAgICAgICAgICAgICAgIG9sZEludHJ1ZGluZ0Zsb2F0U2V0LmFkZChmbG9hdGluZ09iamVjdC0+
cmVuZGVyZXIoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3MDksNyArNDcxMCw3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0
U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAgICAgICAgICBm
b3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCog
ZiA9ICppdDsKLSAgICAgICAgICAgICAgICBmbG9hdE1hcC5hZGQoZi0+bV9yZW5kZXJlciwgZik7
CisgICAgICAgICAgICAgICAgZmxvYXRNYXAuYWRkKGYtPnJlbmRlcmVyKCksIGYpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhmbG9h
dGluZ09iamVjdFNldCk7CkBAIC00NzYwLDcgKzQ3NjEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpj
bGVhckZsb2F0cygpCiAgICAgICAgICAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGVuZCA9
IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwogICAgICAgICAgICAgZm9yIChGbG9hdGluZ09iamVj
dFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGYgPSAqaXQ7Ci0gICAgICAg
ICAgICAgICAgRmxvYXRpbmdPYmplY3QqIG9sZEZsb2F0aW5nT2JqZWN0ID0gZmxvYXRNYXAuZ2V0
KGYtPm1fcmVuZGVyZXIpOworICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBvbGRGbG9h
dGluZ09iamVjdCA9IGZsb2F0TWFwLmdldChmLT5yZW5kZXJlcigpKTsKICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20gPSBsb2dpY2FsQm90dG9tRm9yRmxvYXQoZik7CiAg
ICAgICAgICAgICAgICAgaWYgKG9sZEZsb2F0aW5nT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgb2xkTG9naWNhbEJvdHRvbSA9IGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChv
bGRGbG9hdGluZ09iamVjdCk7CkBAIC00NzgwLDEwICs0NzgxLDEwIEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGZsb2F0TWFwLnJlbW92ZShmLT5tX3Jl
bmRlcmVyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9sZEZsb2F0aW5nT2JqZWN0LT5tX29y
aWdpbmF0aW5nTGluZSAmJiAhc2VsZk5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChvbGRGbG9hdGluZ09iamVjdC0+bV9vcmlnaW5hdGluZ0xpbmUtPnJlbmRl
cmVyKCkgPT0gdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbGRGbG9hdGluZ09iamVj
dC0+bV9vcmlnaW5hdGluZ0xpbmUtPm1hcmtEaXJ0eSgpOworICAgICAgICAgICAgICAgICAgICBm
bG9hdE1hcC5yZW1vdmUoZi0+cmVuZGVyZXIoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChv
bGRGbG9hdGluZ09iamVjdC0+b3JpZ2luYXRpbmdMaW5lKCkgJiYgIXNlbGZOZWVkc0xheW91dCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkRmxvYXRpbmdPYmplY3QtPm9y
aWdpbmF0aW5nTGluZSgpLT5yZW5kZXJlcigpID09IHRoaXMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgb2xkRmxvYXRpbmdPYmplY3QtPm9yaWdpbmF0aW5nTGluZSgpLT5tYXJrRGlydHkoKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2xkRmxv
YXRpbmdPYmplY3Q7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ4MTMsNyArNDgxNCw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgICAgIGNvbnN0IEZs
b2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5z
ZXQoKTsKICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRp
bmdPYmplY3RTZXQuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRl
cmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQgJiYgIW9sZElu
dHJ1ZGluZ0Zsb2F0U2V0LmlzRW1wdHkoKTsgKytpdCkKLSAgICAgICAgICAgICAgICBvbGRJbnRy
dWRpbmdGbG9hdFNldC5yZW1vdmUoKCppdCktPm1fcmVuZGVyZXIpOworICAgICAgICAgICAgICAg
IG9sZEludHJ1ZGluZ0Zsb2F0U2V0LnJlbW92ZSgoKml0KS0+cmVuZGVyZXIoKSk7CiAgICAgICAg
ICAgICBpZiAoIW9sZEludHJ1ZGluZ0Zsb2F0U2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICBtYXJrQWxsRGVzY2VuZGFudHNXaXRoRmxvYXRzRm9yTGF5b3V0KCk7CiAgICAgICAgIH0KQEAg
LTQ4NDEsMTYgKzQ4NDIsMTYgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRkT3Zlcmhhbmdp
bmdGbG9hdHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBib29sIG1ha2VDaGlsZFAKIAogICAgICAgICBp
ZiAobG9naWNhbEJvdHRvbSA+IGxvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gSWYg
dGhlIG9iamVjdCBpcyBub3QgaW4gdGhlIGxpc3QsIHdlIGFkZCBpdCBub3cuCi0gICAgICAgICAg
ICBpZiAoIWNvbnRhaW5zRmxvYXQoci0+bV9yZW5kZXJlcikpIHsKKyAgICAgICAgICAgIGlmICgh
Y29udGFpbnNGbG9hdChyLT5yZW5kZXJlcigpKSkgewogICAgICAgICAgICAgICAgIExheW91dFNp
emUgb2Zmc2V0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IExheW91dFNpemUoLWNoaWxk
TG9naWNhbExlZnQsIC1jaGlsZExvZ2ljYWxUb3ApIDogTGF5b3V0U2l6ZSgtY2hpbGRMb2dpY2Fs
VG9wLCAtY2hpbGRMb2dpY2FsTGVmdCk7CiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3Qq
IGZsb2F0aW5nT2JqID0gbmV3IEZsb2F0aW5nT2JqZWN0KHItPnR5cGUoKSwgTGF5b3V0UmVjdChy
LT5mcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCByLT5mcmFtZVJlY3QoKS5zaXplKCkp
KTsKLSAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+bV9yZW5kZXJlciA9IHItPm1fcmVuZGVy
ZXI7CisgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmotPnNldFJlbmRlcmVyKHItPnJlbmRlcmVy
KCkpOwogCiAgICAgICAgICAgICAgICAgLy8gVGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxheWVyIGFs
d2F5cyBwYWludHMgdGhlIGZsb2F0IChzbyB0aGF0IHppbmRleCBhbmQgc3RhY2tpbmcKICAgICAg
ICAgICAgICAgICAvLyBiZWhhdmVzIHByb3Blcmx5KS4gIFdlIGFsd2F5cyB3YW50IHRvIHByb3Bh
Z2F0ZSB0aGUgZGVzaXJlIHRvIHBhaW50IHRoZSBmbG9hdCBhcwogICAgICAgICAgICAgICAgIC8v
IGZhciBvdXQgYXMgd2UgY2FuLCB0byB0aGUgb3V0ZXJtb3N0IGJsb2NrIHRoYXQgb3ZlcmxhcHMg
dGhlIGZsb2F0LCBzdG9wcGluZyBvbmx5CiAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGl0IGEg
c2VsZi1wYWludGluZyBsYXllciBib3VuZGFyeS4KLSAgICAgICAgICAgICAgICBpZiAoci0+bV9y
ZW5kZXJlci0+ZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgPT0gZW5jbG9zaW5nRmxvYXRQ
YWludGluZ0xheWVyKCkpCisgICAgICAgICAgICAgICAgaWYgKHItPnJlbmRlcmVyKCktPmVuY2xv
c2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpID09IGVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcigp
KQogICAgICAgICAgICAgICAgICAgICByLT5zZXRTaG91bGRQYWludChmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+c2V0U2hvdWxk
UGFpbnQoZmFsc2UpOwpAQCAtNDg2Myw4ICs0ODY0LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9j
azo6YWRkT3ZlcmhhbmdpbmdGbG9hdHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBib29sIG1ha2VDaGls
ZFAKICAgICAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKGZsb2F0aW5nT2JqKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtYWtlQ2hp
bGRQYWludE90aGVyRmxvYXRzICYmICFyLT5zaG91bGRQYWludCgpICYmICFyLT5tX3JlbmRlcmVy
LT5oYXNTZWxmUGFpbnRpbmdMYXllcigpCi0gICAgICAgICAgICAgICAgJiYgci0+bV9yZW5kZXJl
ci0+aXNEZXNjZW5kYW50T2YoY2hpbGQpICYmIHItPm1fcmVuZGVyZXItPmVuY2xvc2luZ0Zsb2F0
UGFpbnRpbmdMYXllcigpID09IGNoaWxkLT5lbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSkg
eworICAgICAgICAgICAgaWYgKG1ha2VDaGlsZFBhaW50T3RoZXJGbG9hdHMgJiYgIXItPnNob3Vs
ZFBhaW50KCkgJiYgIXItPnJlbmRlcmVyKCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkKKyAgICAg
ICAgICAgICAgICAmJiByLT5yZW5kZXJlcigpLT5pc0Rlc2NlbmRhbnRPZihjaGlsZCkgJiYgci0+
cmVuZGVyZXIoKS0+ZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgPT0gY2hpbGQtPmVuY2xv
c2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGZsb2F0
IGlzIG5vdCBvdmVyaGFuZ2luZyBmcm9tIHRoaXMgYmxvY2ssIHNvIGlmIGl0IGlzIGEgZGVzY2Vu
ZGFudCBvZiB0aGUgY2hpbGQsIHRoZSBjaGlsZCBzaG91bGQKICAgICAgICAgICAgICAgICAvLyBw
YWludCBpdCAodGhlIG90aGVyIGNhc2UgaXMgdGhhdCBpdCBpcyBpbnRydWRpbmcgaW50byB0aGUg
Y2hpbGQpLCB1bmxlc3MgaXQgaGFzIGl0cyBvd24gbGF5ZXIgb3IgZW5jbG9zaW5nCiAgICAgICAg
ICAgICAgICAgLy8gbGF5ZXIuCkBAIC00ODc2LDcgKzQ4NzcsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJsb2NrOjphZGRPdmVyaGFuZ2luZ0Zsb2F0cyhSZW5kZXJCbG9jayogY2hpbGQsIGJvb2wgbWFr
ZUNoaWxkUAogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGZsb2F0IGRvZXNuJ3Qgb3Zlcmhhbmcs
IGl0IGRpZG4ndCBnZXQgcHV0IGludG8gb3VyIGxpc3QuICBXZSBuZWVkIHRvIGdvIGFoZWFkIGFu
ZCBhZGQgaXRzIG92ZXJmbG93IGluIHRvIHRoZQogICAgICAgICAgICAgLy8gY2hpbGQgbm93Lgog
ICAgICAgICAgICAgaWYgKHItPmlzRGVzY2VuZGFudCgpKQotICAgICAgICAgICAgICAgIGNoaWxk
LT5hZGRPdmVyZmxvd0Zyb21DaGlsZChyLT5tX3JlbmRlcmVyLCBMYXlvdXRTaXplKHhQb3NpdGlv
bkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKHIpLCB5UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01h
cmdpbihyKSkpOworICAgICAgICAgICAgICAgIGNoaWxkLT5hZGRPdmVyZmxvd0Zyb21DaGlsZChy
LT5yZW5kZXJlcigpLCBMYXlvdXRTaXplKHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2lu
KHIpLCB5UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSkpOwogICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiBsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b207CkBAIC00OTI3LDcgKzQ5
MjgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRJbnRydWRpbmdGbG9hdHMoUmVuZGVyQmxvY2sq
IHByZXYsIExheW91dFVuaXQgbG9naWNhbExlZnRPZgogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5zZXRTaG91bGRQYWludChm
YWxzZSk7IC8vIFdlIGFyZSBub3QgaW4gdGhlIGRpcmVjdCBpbmhlcml0YW5jZSBjaGFpbiBmb3Ig
dGhpcyBmbG9hdC4gV2Ugd2lsbCBuZXZlciBwYWludCBpdC4KLSAgICAgICAgICAgICAgICBmbG9h
dGluZ09iai0+bV9yZW5kZXJlciA9IHItPm1fcmVuZGVyZXI7CisgICAgICAgICAgICAgICAgZmxv
YXRpbmdPYmotPnNldFJlbmRlcmVyKHItPnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIC8vIFdlIGNyZWF0ZSB0aGUgZmxvYXRpbmcgb2JqZWN0IGxpc3QgbGF6
aWx5LgogICAgICAgICAgICAgICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMpCkBAIC01MTY1LDEx
ICs1MTY2LDExIEBAIGJvb2wgUmVuZGVyQmxvY2s6OmhpdFRlc3RGbG9hdHMoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgZm9yIChGbG9hdGluZ09i
amVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7IGl0ICE9IGJlZ2lu
OykgewogICAgICAgICAtLWl0OwogICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmpl
Y3QgPSAqaXQ7Ci0gICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+c2hvdWxkUGFpbnQoKSAmJiAh
ZmxvYXRpbmdPYmplY3QtPm1fcmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAg
ICAgICAgICAgIExheW91dFVuaXQgeE9mZnNldCA9IHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5n
TWFyZ2luKGZsb2F0aW5nT2JqZWN0KSAtIGZsb2F0aW5nT2JqZWN0LT5tX3JlbmRlcmVyLT54KCk7
Ci0gICAgICAgICAgICBMYXlvdXRVbml0IHlPZmZzZXQgPSB5UG9zaXRpb25Gb3JGbG9hdEluY2x1
ZGluZ01hcmdpbihmbG9hdGluZ09iamVjdCkgLSBmbG9hdGluZ09iamVjdC0+bV9yZW5kZXJlci0+
eSgpOworICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPnNob3VsZFBhaW50KCkgJiYgIWZsb2F0
aW5nT2JqZWN0LT5yZW5kZXJlcigpLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CisgICAgICAg
ICAgICBMYXlvdXRVbml0IHhPZmZzZXQgPSB4UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdp
bihmbG9hdGluZ09iamVjdCkgLSBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS0+eCgpOworICAg
ICAgICAgICAgTGF5b3V0VW5pdCB5T2Zmc2V0ID0geVBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdN
YXJnaW4oZmxvYXRpbmdPYmplY3QpIC0gZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCktPnkoKTsK
ICAgICAgICAgICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBmbGlwRmxvYXRGb3JXcml0aW5n
TW9kZUZvckNoaWxkKGZsb2F0aW5nT2JqZWN0LCBhZGp1c3RlZExvY2F0aW9uICsgTGF5b3V0U2l6
ZSh4T2Zmc2V0LCB5T2Zmc2V0KSk7Ci0gICAgICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPm1f
cmVuZGVyZXItPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBj
aGlsZFBvaW50KSkgeworICAgICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigp
LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgY2hpbGRQb2lu
dCkpIHsKICAgICAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRp
b25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGNoaWxkUG9pbnQpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTcwNTgsOCArNzA1OSw4
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkanVzdEZvckJvcmRlckZpdChMYXlvdXRVbml0IHgsIExh
eW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmCiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmpl
Y3QqIHIgPSAqaXQ7CiAgICAgICAgICAgICAgICAgLy8gT25seSBleGFtaW5lIHRoZSBvYmplY3Qg
aWYgb3VyIG1fc2hvdWxkUGFpbnQgZmxhZyBpcyBzZXQuCiAgICAgICAgICAgICAgICAgaWYgKHIt
PnNob3VsZFBhaW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdExl
ZnQgPSB4UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSAtIHItPm1fcmVuZGVyZXIt
PngoKTsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdFJpZ2h0ID0gZmxvYXRM
ZWZ0ICsgci0+bV9yZW5kZXJlci0+d2lkdGgoKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0
VW5pdCBmbG9hdExlZnQgPSB4UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGluZ01hcmdpbihyKSAtIHIt
PnJlbmRlcmVyKCktPngoKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdFJp
Z2h0ID0gZmxvYXRMZWZ0ICsgci0+cmVuZGVyZXIoKS0+d2lkdGgoKTsKICAgICAgICAgICAgICAg
ICAgICAgbGVmdCA9IG1pbihsZWZ0LCBmbG9hdExlZnQpOwogICAgICAgICAgICAgICAgICAgICBy
aWdodCA9IG1heChyaWdodCwgZmxvYXRSaWdodCk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBjOTY0YmVkNTI4NDE2ZGFkMWE2ZGJj
YWM3MGNjOWY2ZGQ1ZmIwOWFjLi4xMDcyYTFlNmNjN2U0YmFmZWQ5M2I0ZGJmZGYyNDUxMDIxZjIw
YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNjc2LDcgKzY3
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZXZlckhhZExheW91dDsKICAgICB9OwogCi0g
ICAgc3RydWN0IEZsb2F0aW5nT2JqZWN0IHsKKyAgICBjbGFzcyBGbG9hdGluZ09iamVjdCB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZsb2F0aW5nT2JqZWN0KTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICAvLyBOb3RlIHRoYXQgVHlwZSB1c2Vz
IGJpdHMgc28geW91IGNhbiB1c2UgRmxvYXRMZWZ0UmlnaHQgYXMgYSBtYXNrIHRvIHF1ZXJ5IGZv
ciBib3RoIGxlZnQgYW5kIHJpZ2h0LgpAQCAtNzQ4LDYgKzc0OCw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCgpIGNvbnN0IHsgQVNTRVJUKGlzUGxhY2Vk
KCkpOyByZXR1cm4gbV9mcmFtZVJlY3Q7IH0KICAgICAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7IG1f
ZnJhbWVSZWN0ID0gZnJhbWVSZWN0OyB9CiAKKyAgICAgICAgaW50IHBhZ2luYXRpb25TdHJ1dCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnaW5hdGlvblN0cnV0OyB9CisgICAgICAgIHZvaWQgc2V0UGFn
aW5hdGlvblN0cnV0KGludCBzdHJ1dCkgeyBtX3BhZ2luYXRpb25TdHJ1dCA9IHN0cnV0OyB9CisK
ICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgaXNJblBsYWNlZFRyZWUoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5QbGFjZWRUcmVlOyB9CiAgICAgICAgIHZvaWQgc2V0SXNJblBsYWNlZFRyZWUo
Ym9vbCB2YWx1ZSkgeyBtX2lzSW5QbGFjZWRUcmVlID0gdmFsdWU7IH0KQEAgLTc1OCwxMiArNzYx
LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1
cm4gbV9pc0Rlc2NlbmRhbnQ7IH0KICAgICAgICAgdm9pZCBzZXRJc0Rlc2NlbmRhbnQoYm9vbCBp
c0Rlc2NlbmRhbnQpIHsgbV9pc0Rlc2NlbmRhbnQgPSBpc0Rlc2NlbmRhbnQ7IH0KIAorICAgICAg
ICAvLyBGSVhNRTogQ2FsbGVycyBvZiB0aGVzZSBtZXRob2RzIGFyZSBkYW5nZXJvdXMgYW5kIHNo
b3VsZCBiZSB3aGl0ZWxpc3RlZCBleHBsaWNpdGx5IG9yIHJlbW92ZWQuCisgICAgICAgIHZvaWQg
c2V0UmVuZGVyZXIoUmVuZGVyQm94KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7
IH0KKyAgICAgICAgUm9vdElubGluZUJveCogb3JpZ2luYXRpbmdMaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5hdGluZ0xpbmU7IH0KKyAgICAgICAgdm9pZCBzZXRPcmlnaW5hdGluZ0xpbmUo
Um9vdElubGluZUJveCogbGluZSkgeyBtX29yaWdpbmF0aW5nTGluZSA9IGxpbmU7IH0KKworICAg
IHByaXZhdGU6CiAgICAgICAgIFJlbmRlckJveCogbV9yZW5kZXJlcjsKICAgICAgICAgUm9vdElu
bGluZUJveCogbV9vcmlnaW5hdGluZ0xpbmU7CiAgICAgICAgIExheW91dFJlY3QgbV9mcmFtZVJl
Y3Q7Ci0gICAgICAgIGludCBtX3BhZ2luYXRpb25TdHJ1dDsKKyAgICAgICAgaW50IG1fcGFnaW5h
dGlvblN0cnV0OyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBMYXlvdXRVbml0LCBzaW5jZSBp
dCdzIGEgdmVydGljYWwgb2Zmc2V0LgogCi0gICAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQg
bV90eXBlIDogMjsgLy8gVHlwZSAobGVmdCBvciByaWdodCBhbGlnbmVkKQogICAgICAgICB1bnNp
Z25lZCBtX3Nob3VsZFBhaW50IDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Rlc2NlbmRhbnQg
OiAxOwpAQCAtMTE3MywxMyArMTE4MSwxMyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBz
dHJ1Y3QgRmxvYXRpbmdPYmplY3RIYXNoRnVuY3Rpb25zIHsKLSAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goRmxvYXRpbmdPYmplY3QqIGtleSkgeyByZXR1cm4gRGVmYXVsdEhhc2g8UmVuZGVy
Qm94Kj46Okhhc2g6Omhhc2goa2V5LT5tX3JlbmRlcmVyKTsgfQotICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChGbG9hdGluZ09iamVjdCogYSwgRmxvYXRpbmdPYmplY3QqIGIpIHsgcmV0dXJuIGEt
Pm1fcmVuZGVyZXIgPT0gYi0+bV9yZW5kZXJlcjsgfQorICAgICAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChGbG9hdGluZ09iamVjdCoga2V5KSB7IHJldHVybiBEZWZhdWx0SGFzaDxSZW5kZXJCb3gq
Pjo6SGFzaDo6aGFzaChrZXktPnJlbmRlcmVyKCkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKEZsb2F0aW5nT2JqZWN0KiBhLCBGbG9hdGluZ09iamVjdCogYikgeyByZXR1cm4gYS0+cmVu
ZGVyZXIoKSA9PSBiLT5yZW5kZXJlcigpOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKICAgICB9OwogICAgIHN0cnVjdCBG
bG9hdGluZ09iamVjdEhhc2hUcmFuc2xhdG9yIHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goUmVuZGVyQm94KiBrZXkpIHsgcmV0dXJuIERlZmF1bHRIYXNoPFJlbmRlckJveCo+OjpIYXNo
OjpoYXNoKGtleSk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoRmxvYXRpbmdPYmplY3Qq
IGEsIFJlbmRlckJveCogYikgeyByZXR1cm4gYS0+bV9yZW5kZXJlciA9PSBiOyB9CisgICAgICAg
IHN0YXRpYyBib29sIGVxdWFsKEZsb2F0aW5nT2JqZWN0KiBhLCBSZW5kZXJCb3gqIGIpIHsgcmV0
dXJuIGEtPnJlbmRlcmVyKCkgPT0gYjsgfQogICAgIH07CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNl
dDxGbG9hdGluZ09iamVjdCosIDQsIEZsb2F0aW5nT2JqZWN0SGFzaEZ1bmN0aW9ucz4gRmxvYXRp
bmdPYmplY3RTZXQ7CiAgICAgdHlwZWRlZiBGbG9hdGluZ09iamVjdFNldDo6Y29uc3RfaXRlcmF0
b3IgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggNzgxNDc1NGI3MzY2YWEwZGJj
YTE0ZWM0NDkxOGIxM2Y3NWVmMTg5Ny4uZDdlNGJmZDFiMjZmZDI1NTQyMGUyMGM5ZjQ1YzJjOTAx
NTkxZTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
TGluZUxheW91dC5jcHAKQEAgLTEyODEsOCArMTI4MSw4IEBAIGlubGluZSBCaWRpUnVuKiBSZW5k
ZXJCbG9jazo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlS
dW5zCiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFwcGVuZEZsb2F0aW5nT2JqZWN0VG9MYXN0TGluZShG
bG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCiB7Ci0gICAgQVNTRVJUKCFmbG9hdGluZ09i
amVjdC0+bV9vcmlnaW5hdGluZ0xpbmUpOwotICAgIGZsb2F0aW5nT2JqZWN0LT5tX29yaWdpbmF0
aW5nTGluZSA9IGxhc3RSb290Qm94KCk7CisgICAgQVNTRVJUKCFmbG9hdGluZ09iamVjdC0+b3Jp
Z2luYXRpbmdMaW5lKCkpOworICAgIGZsb2F0aW5nT2JqZWN0LT5zZXRPcmlnaW5hdGluZ0xpbmUo
bGFzdFJvb3RCb3goKSk7CiAgICAgbGFzdFJvb3RCb3goKS0+YXBwZW5kRmxvYXQoZmxvYXRpbmdP
YmplY3QtPnJlbmRlcmVyKCkpOwogfQogCkBAIC0xOTQ2LDcgKzE5NDYsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShMaW5lTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBJbmxpbgogICAgICAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmID0gKml0OwogICAgICAgICAgICAgICAgIGFw
cGVuZEZsb2F0aW5nT2JqZWN0VG9MYXN0TGluZShmKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
Zi0+bV9yZW5kZXJlciA9PSBsYXlvdXRTdGF0ZS5mbG9hdHMoKVtsYXlvdXRTdGF0ZS5mbG9hdElu
ZGV4KCldLm9iamVjdCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGYtPnJlbmRlcmVyKCkgPT0g
bGF5b3V0U3RhdGUuZmxvYXRzKClbbGF5b3V0U3RhdGUuZmxvYXRJbmRleCgpXS5vYmplY3QpOwog
ICAgICAgICAgICAgICAgIC8vIElmIGEgZmxvYXQncyBnZW9tZXRyeSBoYXMgY2hhbmdlZCwgZ2l2
ZSB1cCBvbiBzeW5jaW5nIHdpdGggY2xlYW4gbGluZXMuCiAgICAgICAgICAgICAgICAgaWYgKGxh
eW91dFN0YXRlLmZsb2F0cygpW2xheW91dFN0YXRlLmZsb2F0SW5kZXgoKV0ucmVjdCAhPSBmLT5m
cmFtZVJlY3QoKSkKICAgICAgICAgICAgICAgICAgICAgY2hlY2tGb3JFbmRMaW5lTWF0Y2ggPSBm
YWxzZTsKQEAgLTIwNDAsOCArMjA0MCw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxpbmtUb0VuZExp
bmVJZk5lZWRlZChMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQogICAgICAgICAgICAgICAg
ICAgICBWZWN0b3I8UmVuZGVyQm94Kj46Oml0ZXJhdG9yIGVuZCA9IGNsZWFuTGluZUZsb2F0cy0+
ZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoVmVjdG9yPFJlbmRlckJveCo+OjppdGVy
YXRvciBmID0gY2xlYW5MaW5lRmxvYXRzLT5iZWdpbigpOyBmICE9IGVuZDsgKytmKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpbnNl
cnRGbG9hdGluZ09iamVjdCgqZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWZs
b2F0aW5nT2JqZWN0LT5tX29yaWdpbmF0aW5nTGluZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdGluZ09iamVjdC0+bV9vcmlnaW5hdGluZ0xpbmUgPSBsaW5lOworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFmbG9hdGluZ09iamVjdC0+b3JpZ2luYXRpbmdMaW5lKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmplY3QtPnNldE9yaWdpbmF0aW5nTGlu
ZShsaW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNh
bFRvcEZvckNoaWxkKCpmKSAtIG1hcmdpbkJlZm9yZUZvckNoaWxkKCpmKSArIGRlbHRhKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uTmV3RmxvYXRzKCk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KQEAgLTIzMjcsOCArMjMyNyw4IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2Nr
OjpkZXRlcm1pbmVTdGFydFBvc2l0aW9uKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsCiAg
ICAgICAgICAgICAgICAgVmVjdG9yPFJlbmRlckJveCo+OjppdGVyYXRvciBlbmQgPSBjbGVhbkxp
bmVGbG9hdHMtPmVuZCgpOwogICAgICAgICAgICAgICAgIGZvciAoVmVjdG9yPFJlbmRlckJveCo+
OjppdGVyYXRvciBmID0gY2xlYW5MaW5lRmxvYXRzLT5iZWdpbigpOyBmICE9IGVuZDsgKytmKSB7
CiAgICAgICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCA9IGlu
c2VydEZsb2F0aW5nT2JqZWN0KCpmKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFmbG9h
dGluZ09iamVjdC0+bV9vcmlnaW5hdGluZ0xpbmUpOwotICAgICAgICAgICAgICAgICAgICBmbG9h
dGluZ09iamVjdC0+bV9vcmlnaW5hdGluZ0xpbmUgPSBsaW5lOworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWZsb2F0aW5nT2JqZWN0LT5vcmlnaW5hdGluZ0xpbmUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGZsb2F0aW5nT2JqZWN0LT5zZXRPcmlnaW5hdGluZ0xpbmUobGluZSk7CiAgICAg
ICAgICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbFRvcEZvckNoaWxkKCpmKSAt
IG1hcmdpbkJlZm9yZUZvckNoaWxkKCpmKSk7CiAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9u
TmV3RmxvYXRzKCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsYXlvdXRTdGF0ZS5mbG9h
dHMoKVtudW1DbGVhbkZsb2F0c10ub2JqZWN0ID09ICpmKTsKQEAgLTM2MzcsMTQgKzM2MzcsMTQg
QEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9uTGluZShGbG9hdGluZ09iamVj
dCogbmV3RmxvYXQsIEZsb2F0aW5nT2JqZWMKICAgICAvLyBXZSBvbmx5IGNvbm5lY3QgZmxvYXRz
IHRvIGxpbmVzIGZvciBwYWdpbmF0aW9uIHB1cnBvc2VzIGlmIHRoZSBmbG9hdHMgb2NjdXIgYXQg
dGhlIHN0YXJ0IG9mCiAgICAgLy8gdGhlIGxpbmUgYW5kIHRoZSBwcmV2aW91cyBsaW5lIGhhZCBh
IGhhcmQgYnJlYWsgKHNvIHRoaXMgbGluZSBpcyBlaXRoZXIgdGhlIGZpcnN0IGluIHRoZSBibG9j
awogICAgIC8vIG9yIGZvbGxvd3MgYSA8YnI+KS4KLSAgICBpZiAoIW5ld0Zsb2F0LT5tX3BhZ2lu
YXRpb25TdHJ1dCB8fCAhbGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkgfHwgIWxp
bmVJbmZvLmlzRW1wdHkoKSkKKyAgICBpZiAoIW5ld0Zsb2F0LT5wYWdpbmF0aW9uU3RydXQoKSB8
fCAhbGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkgfHwgIWxpbmVJbmZvLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNl
dCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgQVNT
RVJUKGZsb2F0aW5nT2JqZWN0U2V0Lmxhc3QoKSA9PSBuZXdGbG9hdCk7CiAKICAgICBMYXlvdXRV
bml0IGZsb2F0TG9naWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JGbG9hdChuZXdGbG9hdCk7Ci0gICAg
aW50IHBhZ2luYXRpb25TdHJ1dCA9IG5ld0Zsb2F0LT5tX3BhZ2luYXRpb25TdHJ1dDsKKyAgICBp
bnQgcGFnaW5hdGlvblN0cnV0ID0gbmV3RmxvYXQtPnBhZ2luYXRpb25TdHJ1dCgpOwogCiAgICAg
aWYgKGZsb2F0TG9naWNhbFRvcCAtIHBhZ2luYXRpb25TdHJ1dCAhPSBsb2dpY2FsSGVpZ2h0KCkg
KyBsaW5lSW5mby5mbG9hdFBhZ2luYXRpb25TdHJ1dCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTM2NTgsOCArMzY1OCw4IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRP
bkxpbmUoRmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0LCBGbG9hdGluZ09iamVjCiAgICAgICAgIGlm
IChmID09IGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgaWYgKGxvZ2ljYWxUb3BGb3JGbG9hdChmKSA9PSBsb2dpY2FsSGVpZ2h0KCkgKyBsaW5l
SW5mby5mbG9hdFBhZ2luYXRpb25TdHJ1dCgpKSB7Ci0gICAgICAgICAgICBmLT5tX3BhZ2luYXRp
b25TdHJ1dCArPSBwYWdpbmF0aW9uU3RydXQ7Ci0gICAgICAgICAgICBSZW5kZXJCb3gqIG8gPSBm
LT5tX3JlbmRlcmVyOworICAgICAgICAgICAgZi0+c2V0UGFnaW5hdGlvblN0cnV0KHBhZ2luYXRp
b25TdHJ1dCArIGYtPnBhZ2luYXRpb25TdHJ1dCgpKTsKKyAgICAgICAgICAgIFJlbmRlckJveCog
byA9IGYtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQobywg
bG9naWNhbFRvcEZvckNoaWxkKG8pICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQobykgKyBwYWdpbmF0
aW9uU3RydXQpOwogICAgICAgICAgICAgaWYgKG8tPmlzUmVuZGVyQmxvY2soKSkKICAgICAgICAg
ICAgICAgICB0b1JlbmRlckJsb2NrKG8pLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIE1hcmtP
bmx5VGhpcyk7Cg==
</data>
<flag name="review"
          id="230690"
          type_id="1"
          status="+"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="230693"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>