<?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>153222</bug_id>
          
          <creation_ts>2016-01-18 22:29:56 -0800</creation_ts>
          <short_desc>Enable API related to the video fullscreen layer in MediaPlayerPrivateAVFoundationObjC for cocoa platforms with VIDEO_PRESENTATION_MODE enabled</short_desc>
          <delta_ts>2016-01-26 10:58:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ada Chan">adachan</reporter>
          <assigned_to name="Ada Chan">adachan</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1156547</commentid>
    <comment_count>0</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-01-18 22:29:56 -0800</bug_when>
    <thetext>Enable API related to the video fullscreen layer in MediaPlayerPrivateAVFoundationObjC for all cocoa platforms. Right now they are only enabled on iOS.

These API include:
    virtual void setVideoFullscreenLayer(PlatformLayer*) override;
    virtual void setVideoFullscreenFrame(FloatRect) override;
    virtual void setVideoFullscreenGravity(MediaPlayer::VideoGravity) override;
    virtual void setVideoFullscreenMode(MediaPlayer::VideoFullscreenMode) override;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156548</commentid>
    <comment_count>1</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-01-18 22:31:09 -0800</bug_when>
    <thetext>Part of &lt;rdar://problem/24172052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158396</commentid>
    <comment_count>2</comment_count>
      <attachid>269765</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-01-25 11:12:24 -0800</bug_when>
    <thetext>Created attachment 269765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158411</commentid>
    <comment_count>3</comment_count>
      <attachid>269765</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-01-25 11:31:54 -0800</bug_when>
    <thetext>Comment on attachment 269765
Patch

Fixing the iOS build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158429</commentid>
    <comment_count>4</comment_count>
      <attachid>269776</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-01-25 11:52:44 -0800</bug_when>
    <thetext>Created attachment 269776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158459</commentid>
    <comment_count>5</comment_count>
      <attachid>269781</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-01-25 13:03:04 -0800</bug_when>
    <thetext>Created attachment 269781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158872</commentid>
    <comment_count>6</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-01-26 10:58:02 -0800</bug_when>
    <thetext>Committed:
http://trac.webkit.org/changeset/195595</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269765</attachid>
            <date>2016-01-25 11:12:24 -0800</date>
            <delta_ts>2016-01-25 11:31:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153222-20160125111158.patch</filename>
            <type>text/plain</type>
            <size>34641</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdkZjQwY2M4ZDQ3MWU0
ZGQ0Njc0MDEyMTFhNTczZDNkZWZlOGRiNS4uODE0MGMyM2YzNDQ0ODg3ZDIzNjE1OTBlNTU5ZGU4
OWI4YmM0YjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE2LTAxLTIyICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBBUEkgcmVsYXRlZCB0
byB0aGUgdmlkZW8gZnVsbHNjcmVlbiBsYXllciBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDCisgICAgICAgIGFsc28gb24gTWFjIHdpdGggdmlkZW8gcHJlc2VudGF0aW9uIG1v
ZGUgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MzIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBJ
bnRyb2R1Y2UgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyIHRvIGRlYWwgd2l0aCB0aGUgdmlk
ZW8gbGF5ZXIgd2hlbiBzd2l0Y2hpbmcKKyAgICAgICAgYmV0d2VlbiBpbmxpbmUgYW5kIGZ1bGxz
Y3JlZW4gbW9kZS4gV2UnbGwgcmV1c2UgaXQgaW4gb3RoZXIgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlCisgICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICBOb3cgdGhhdCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDJ3MgcGxhdGZvcm0gbGF5ZXIgY2FuIGJlIGEg
V2ViVmlkZW9Db250YWluZXJMYXllciwKKyAgICAgICAgdGhpcyBleHBvc2VzIGEgYnVnIGluIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpjbG9uZSgpIHdoZXJlIHdlIGFzc3VtZWQgdGhlIHBsYXRmb3Jt
IGxheWVyCisgICAgICAgIGlzIGFsd2F5cyBhbiBBVlBsYXllckxheWVyIGlmIHRoZSBQbGF0Zm9y
bUNBTGF5ZXIncyBsYXllciB0eXBlIGlzIExheWVyVHlwZUFWUGxheWVyTGF5ZXIuCisgICAgICAg
IEFkZCBhIGhlbHBlciBtZXRob2QgdG8gZ2V0IGFuIEFWUGxheWVyTGF5ZXIgZnJvbSBhIFBsYXRm
b3JtQ0FMYXllckNvY29hICh3aGljaCBhbHNvIGhhbmRsZXMKKyAgICAgICAgV2ViVmlkZW9Db250
YWluZXJMYXllciBjYXNlKSBhbmQgdXNlIGl0IGluIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjbG9u
ZSgpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBBZGQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyIHRvIHRoZSBwcm9qZWN0LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgQ3JlYXRlIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLiBUaGUgdmlkZW8gaW5saW5lIGxheWVyLCB2aWRlbyBmdWxs
c2NyZWVuIGxheWVyLAorICAgICAgICBhbmQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gZnJhbWUgYXJl
IG5vdyBtYW5hZ2VkIGJ5IHRoYXQgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAg
SnVzdCBjYWxsIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcigpIHRv
IGhhbmRsZSBhZGRpbmcgdGhlIHZpZGVvCisgICAgICAgIGxheWVyIGluIGVpdGhlciB0aGUgaW5s
aW5lIG9yIGZ1bGxzY3JlZW4gbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9MYXllcik6CisgICAgICAgIENhbGwg
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpkaWREZXN0cm95VmlkZW9MYXllcigpLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZv
cm1MYXllcik6CisgICAgICAgIEdldCB0aGUgdmlkZW8gaW5saW5lIGxheWVyIGZyb20gVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBD
YWxsIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
KS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgQ2FsbCBWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKCkuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5N
b2RlKToKKyAgICAgICAgR3VhcmQgdGhlIGlPUyBzcGVjaWZpYyBjb2RlIHByb3Blcmx5LgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
VmlkZW9MYXllckdyYXZpdHkpOgorICAgICAgICBHZXQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gbGF5
ZXIgZnJvbSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZXF1aXJlc1RleHRUcmFja1JlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jVGV4dFRyYWNrQm91bmRzKToKKyAgICAgICAg
R2V0IHRoZSB2aWRlbyBmdWxsc2NyZWVuIGxheWVyIGFuZCB2aWRlbyBmdWxsc2NyZWVuIGZyYW1l
IGZyb20gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRp
b24pOgorICAgICAgICBHZXQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gbGF5ZXIgZnJvbSBWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnZpZGVvSW5saW5lTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjp2aWRl
b0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXI6OnZpZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW06IEFk
ZGVkLgorICAgICAgICAoLVtXZWJWaWRlb0NvbnRhaW5lckxheWVyIHNldEJvdW5kczpdKToKKyAg
ICAgICAgKC1bV2ViVmlkZW9Db250YWluZXJMYXllciBzZXRQb3NpdGlvbjpdKToKKyAgICAgICAg
V2ViVmlkZW9Db250YWluZXJMYXllciB3YXMgbW92ZWQgZnJvbSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0xheWVyKToKKyAgICAgICAg
Q29kZSBtb3ZlZCBmcm9tIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZUFWUGxheWVyTGF5ZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBDb2RlIG1vdmVkIGZy
b20gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICBDb2RlIG1vdmVkIGZyb20gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoKS4K
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6ZGlkRGVzdHJv
eVZpZGVvTGF5ZXIpOgorICAgICAgICBDb2RlIG1vdmVkIGZyb20gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvTGF5ZXIoKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAg
ICAgIChQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y2xvbmUpOgorICAgICAgICBVc2UgdGhlIG5ldyBQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YXZQbGF5ZXJMYXllcigpIG1ldGhvZCB0byBnZXQgdGhlIEFW
UGxheWVyTGF5ZXIgZnJvbSBib3RoIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBhbmQgc291cmNl
IFBsYXRmb3JtQ0FMYXllcnMuCisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YXZQbGF5
ZXJMYXllcik6CisgICAgICAgIFJldHVybiBuaWwgaWYgdGhlIGxheWVyIHR5cGUgaXMgbm90IExh
eWVyVHlwZUFWUGxheWVyTGF5ZXIuIE90aGVyd2lzZSwgcmV0dXJuIHRoZQorICAgICAgICBwbGF0
Zm9ybSBsYXllciBpZiBpdCBpcyBpbmRlZWQgYW4gQVZQbGF5ZXJMYXllci4gSWYgbm90LCBpdCBz
aG91bGQgYmUgYSBXZWJWaWRlb0NvbnRhaW5lckxheWVyCisgICAgICAgIGFuZCB3ZSBzaG91bGQg
cmV0dXJuIGl0cyBzdWJsYXllciB3aGljaCBzaG91bGQgYmUgYW4gQVZQbGF5ZXJMYXllci4KKwog
MjAxNi0wMS0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TW9kZXJuIElEQjogSW1wbGVtZW50IGdldEluZGV4UmVjb3JkIGluIHRoZSBTUUxpdGUgYmFja2lu
ZyBzdG9yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA1NjBhZDJlMjZhN2U0ZWViMGQ5MmUxMWY3YjgzMTAxYmIxYjQyMzQ3Li5j
NDdkMTI0NTQyNGZmNGY1ZmU3M2YzOWU5MGMxYzI2YmVhNzYxMTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjczLDYgKzIy
NzMsNyBAQAogCQk1MkNDQTlFODE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJDQ0E5RTUxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCAq
LzsgfTsKIAkJNTJDQ0E5RTkxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxl
Y3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkNDQTlFNjE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5tbSAq
LzsgfTsKIAkJNTJDQ0E5RUExNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxl
Y3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJDQ0E5RTcxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rp
b25JbnRlcm5hbC5oICovOyB9OworCQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJENUExOEQxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci5tbSAqLzsgfTsKIAkJNTJFMkNBRkMxOUZGMDIwNzAwMUVFQjRGIC8qIE1l
ZGlhUHJvZHVjZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyRTJDQUZCMTlGRjAyMDcwMDFFRUI0RiAvKiBNZWRpYVByb2R1Y2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJGMTA4NjUxNjJCNkRB
NDAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGMTA4NjIxNjJCNkQ4MjAwOUFDODFFIC8qIE1p
eGVkQ29udGVudENoZWNrZXIuY3BwICovOyB9OwogCQk1MkYxMDg2NjE2MkI2REE4MDA5QUM4MUUg
LyogTWl4ZWRDb250ZW50Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJGMTA4NjMxNjJCNkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENo
ZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtOTc1NCw2ICs5NzU1LDggQEAKIAkJNTJDQ0E5RTUxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MkNDQTlFNjE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURPTU5hbWVkRmxv
d0NvbGxlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQ0NBOUU3MTVF
M0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uSW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbklu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRDVBMThEMUM1NDU5MDMw
MERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRDVBMThFMUM1NDU5MDMwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyRTJDQUZCMTlGRjAyMDcwMDFFRUI0RiAvKiBNZWRpYVByb2R1Y2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUHJvZHVjZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGMTA4NjIxNjJCNkQ4MjAwOUFDODFFIC8qIE1peGVk
Q29udGVudENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
RjEwODYzMTYyQjZEODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1peGVkQ29udGVudENoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTcyLDYgKzIyOTc1LDggQEAKIAkJCQk3QTI5RjU3MTE4
QzY5NTE0MDA0RDBGODEgLyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAogCQkJ
CUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
ICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbSAqLywKKwkJCQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLmggKi8sCisJCQkJNTJENUExOEQxQzU0NTkwMzAwREUzNEEzIC8q
IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSAqLywKIAkJCQlDRDMzNkY2NTE3RkEwQUM2
MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLywKIAkJCQlDRDMzNkY2
NjE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJ
Q0Q4QjVBNDExODBEMTQ5QTAwOEI4RTY1IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmggKi8sCkBAIC0zMTUyMyw2ICszMTUyOCw3IEBACiAJCQkJMkUzQkJGMDcxMTYyREEx
MTAwQjk0MDlBIC8qIFVVSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVBMTU0MjcxMjc5NTM0
RDAwRDBCMEMwIC8qIFZhbGlkYXRpb25NZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
MzE2MEFFMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU4M0RCMTE4M0M0NDA2MDAzMUVBQTMgLyogVmlk
ZW9QbGF5YmFja1F1YWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwREUxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRTEx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCmluZGV4IDBhZjNlYTM1YWFkNDJiZDA5M2EyMDNjYjU4YjBmMDZiNGI4
YjVmODIuLmFiOTFkYzVjNWRlODQ1MTA3N2YzNzY5ZjZjY2VjOTg3YTM4MjBmM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKQEAgLTc0LDYgKzc0LDEwIEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOwogY2xhc3MgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOwogCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorY2xhc3MgVmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyOworI2VuZGlmCisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1l
ZGlhUGxheWVyKik7CkBAIC0xNjAsMTIgKzE2NCwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKKyNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQog
ICAgIHZpcnR1YWwgTlNBcnJheSAqdGltZWRNZXRhZGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgU3RyaW5nIGFjY2Vzc0xvZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
U3RyaW5nIGVycm9yTG9nKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMTUsMTAgKzMyMSw4IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxheWVyOwogICAgIFJldGFpblB0
cjxBVlBsYXllckl0ZW0+IG1fYXZQbGF5ZXJJdGVtOwogICAgIFJldGFpblB0cjxBVlBsYXllckxh
eWVyPiBtX3ZpZGVvTGF5ZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBtX3ZpZGVvSW5saW5lTGF5ZXI7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7Ci0gICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2Ny
ZWVuRnJhbWU7CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwogICAgIE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OwogICAgIFJl
dGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5ZXI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGY1MmRiMTliMWZjNjVmYzE4OWQyMTAz
Y2JlYzFkYmQ4N2IxZGMwMzIuLjczMjFjYTU4OTdkOThkZjhkN2JmNDk5ZDU1ZDFhYmE5ZjA3YTU3
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtODUsNiArODUsMTEgQEAKICNlbmRpZgog
CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CisKKyNpZiBQTEFURk9STShJ
T1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkp
CisjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV0FLQXBwS2l0U3R1YnMuaCIKICNpbXBvcnQgPENvcmVJ
bWFnZS9Db3JlSW1hZ2UuaD4KQEAgLTExMywyOCArMTE4LDYgQEAgdGVtcGxhdGUgPD4gc3RydWN0
IGl0ZXJhdG9yX3RyYWl0czxIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9w
dGlvbkEKIH07CiB9CiAKLUBpbnRlcmZhY2UgV2ViVmlkZW9Db250YWluZXJMYXllciA6IENBTGF5
ZXIKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIKLQotLSAo
dm9pZClzZXRCb3VuZHM6KENHUmVjdClib3VuZHMKLXsKLSAgICBbc3VwZXIgc2V0Qm91bmRzOmJv
dW5kc107Ci0gICAgZm9yIChDQUxheWVyKiBsYXllciBpbiBzZWxmLnN1YmxheWVycykKLSAgICAg
ICAgbGF5ZXIuZnJhbWUgPSBib3VuZHM7Ci19Ci0KLS0gKHZvaWQpc2V0UG9zaXRpb246KENHUG9p
bnQpcG9zaXRpb24KLXsKLSAgICBpZiAoIUNBVHJhbnNmb3JtM0RJc0lkZW50aXR5KHNlbGYudHJh
bnNmb3JtKSkgewotICAgICAgICAvLyBQcmUtYXBwbHkgdGhlIHRyYW5zZm9ybSBhZGRlZCBpbiB0
aGUgV2ViUHJvY2VzcyB0byBmaXggPHJkYXI6Ly9wcm9ibGVtLzE4MzE2NTQyPiB0byB0aGUgcG9z
aXRpb24uCi0gICAgICAgIHBvc2l0aW9uID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKHBv
c2l0aW9uLCBDQVRyYW5zZm9ybTNER2V0QWZmaW5lVHJhbnNmb3JtKHNlbGYudHJhbnNmb3JtKSk7
Ci0gICAgfQotICAgIFtzdXBlciBzZXRQb3NpdGlvbjpwb3NpdGlvbl07Ci19Ci1AZW5kCi0KICNp
ZiBFTkFCTEUoQVZGX0NBUFRJT05TKQogLy8gTm90ZTogVGhpcyBtdXN0IGJlIGRlZmluZWQgYmVm
b3JlIG91ciBTT0ZUX0xJTksgbWFjcm9zOgogQGNsYXNzIEFWTWVkaWFTZWxlY3Rpb25PcHRpb247
CkBAIC00NzQsNyArNDU3LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbihwbGF5ZXIpCiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
KFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX3ZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKICNl
bmRpZgogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKSkKQEAgLTY5MywyMiArNjc3LDEzIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJM
YXllcigpCiAgICAgSW50U2l6ZSBkZWZhdWx0U2l6ZSA9IHNuYXBwZWRJbnRSZWN0KHBsYXllcigp
LT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKICAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0xh
eWVyKCVwKSAtIHJldHVybmluZyAlcCIsIHRoaXMsIG1fdmlkZW9MYXllci5nZXQoKSk7CiAKKyNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVv
TGF5ZXIobV92aWRlb0xheWVyLmdldCgpLCBkZWZhdWx0U2l6ZSk7CisKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgW21fdmlkZW9MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwotICAgIG1fdmlk
ZW9JbmxpbmVMYXllciA9IGFkb3B0TlMoW1tXZWJWaWRlb0NvbnRhaW5lckxheWVyIGFsbG9jXSBp
bml0XSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0TmFtZTpA
IldlYlZpZGVvQ29udGFpbmVyTGF5ZXIiXTsKLSNlbmRpZgotICAgIFttX3ZpZGVvSW5saW5lTGF5
ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBkZWZhdWx0U2l6ZS53aWR0aCgpLCBkZWZhdWx0
U2l6ZS5oZWlnaHQoKSldOwotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKSB7Ci0gICAg
ICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNj
cmVlbkZyYW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKLSAg
ICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVy
LmdldCgpIGF0SW5kZXg6MF07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW21fdmlkZW9JbmxpbmVM
YXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKLSAgICAg
ICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTptX3ZpZGVvSW5saW5lTGF5ZXIuZ2V0KCkuYm91bmRz
XTsKLSAgICB9CiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzZXRQSVBNb2RlRW5hYmxlZDopXSkKICAgICAgICAgW21fdmlkZW9MYXllciBzZXRQSVBN
b2RlRW5hYmxlZDoocGxheWVyKCktPmZ1bGxzY3JlZW5Nb2RlKCkgJiBNZWRpYVBsYXllcjo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpXTsKKyNlbmRpZgogI2Vsc2UKICAgICBb
bV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgZGVmYXVsdFNpemUud2lkdGgo
KSwgZGVmYXVsdFNpemUuaGVpZ2h0KCkpXTsKICNlbmRpZgpAQCAtNzI0LDEwICs2OTksOCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVy
KCkKICAgICBbbV92aWRlb0xheWVyLmdldCgpIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVy
LmdldCgpIGZvcktleVBhdGg6QCJyZWFkeUZvckRpc3BsYXkiXTsKICAgICBbbV92aWRlb0xheWVy
LmdldCgpIHNldFBsYXllcjpuaWxdOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKLSAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBuaWw7CisjaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQor
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5kaWREZXN0cm95VmlkZW9MYXllcigp
OwogI2VuZGlmCiAKICAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CkBAIC0xMTE0LDQ5ICsxMDg3LDI0
IEBAIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxh
dGZvcm1NZWRpYSgpIGNvbnN0CiAKIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElP
UykKLSAgICByZXR1cm4gbV9oYXZlQmVlbkFza2VkVG9DcmVhdGVMYXllciA/IG1fdmlkZW9Jbmxp
bmVMYXllci5nZXQoKSA6IG51bGxwdHI7CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIHJldHVybiBtX2hh
dmVCZWVuQXNrZWRUb0NyZWF0ZUxheWVyID8gbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIt
PnZpZGVvSW5saW5lTGF5ZXIoKSA6IG51bGxwdHI7CiAjZWxzZQogICAgIHJldHVybiBtX2hhdmVC
ZWVuQXNrZWRUb0NyZWF0ZUxheWVyID8gbV92aWRlb0xheWVyLmdldCgpIDogbnVsbHB0cjsKICNl
bmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCiB7Ci0gICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpID09IHZpZGVvRnVsbHNj
cmVlbkxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
ID0gdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyKTsKIAotICAg
IFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0
aW9uczpZRVNdOwotICAgIAotICAgIENBQ29udGV4dCAqb2xkQ29udGV4dCA9IFttX3ZpZGVvTGF5
ZXIgY29udGV4dF07Ci0gICAgQ0FDb250ZXh0ICpuZXdDb250ZXh0ID0gbmlsOwotICAgIAotICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyICYmIG1fdmlkZW9MYXllcikgewotICAgICAgICBb
bV92aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkg
YXRJbmRleDowXTsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFt
ZS5oZWlnaHQoKSldOwotICAgICAgICBuZXdDb250ZXh0ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgY29udGV4dF07Ci0gICAgfSBlbHNlIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIgJiYgbV92aWRl
b0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVM
YXllciBib3VuZHNdXTsKLSAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXll
cl07Ci0gICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xh
eWVyLmdldCgpIGF0SW5kZXg6MF07Ci0gICAgICAgIG5ld0NvbnRleHQgPSBbbV92aWRlb0lubGlu
ZUxheWVyIGNvbnRleHRdOwotICAgIH0gZWxzZSBpZiAobV92aWRlb0xheWVyKQotICAgICAgICBb
bV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLQotICAgIGlmIChvbGRDb250ZXh0
ICYmIG5ld0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdDb250ZXh0KSB7Ci0gICAgICAgIG1h
Y2hfcG9ydF90IGZlbmNlUG9ydCA9IFtvbGRDb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF07Ci0gICAg
ICAgIFtuZXdDb250ZXh0IHNldEZlbmNlUG9ydDpmZW5jZVBvcnRdOwotICAgICAgICBtYWNoX3Bv
cnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBmZW5jZVBvcnQpOwotICAgIH0KLSAgICBb
Q0FUcmFuc2FjdGlvbiBjb21taXRdOwotCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
JiYgbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyKSB7CisgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpICYmIG1fdGV4dFRyYWNr
UmVwcmVzZW50YXRpb25MYXllcikgewogICAgICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7Ci0g
ICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGFkZFN1YmxheWVyOm1fdGV4dFRyYWNrUmVw
cmVzZW50YXRpb25MYXllci5nZXQoKV07CisgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBhZGRTdWJsYXllcjptX3RleHRUcmFja1Jl
cHJlc2VudGF0aW9uTGF5ZXIuZ2V0KCldOwogICAgIH0KIAogICAgIHVwZGF0ZURpc2FibGVFeHRl
cm5hbFBsYXliYWNrKCk7CkBAIC0xMTY0LDEzICsxMTEyLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyKgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKIHsKLSAgICBtX3ZpZGVvRnVsbHNjcmVl
bkZyYW1lID0gZnJhbWU7Ci0gICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV92aWRlb0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVvTGF5
ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBmcmFtZS53aWR0aCgpLCBmcmFtZS5oZWlnaHQo
KSldOwotICAgIH0KKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoZnJhbWUpOwogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIApA
QCAtMTE5OSwxMCArMTE0MSwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OgogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUo
TWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKKyNpZiBQTEFURk9STShJ
T1MpCiAgICAgaWYgKG1fdmlkZW9MYXllciAmJiBbbV92aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0pCiAgICAgICAgIFttX3ZpZGVvTGF5
ZXIgc2V0UElQTW9kZUVuYWJsZWQ6KG1vZGUgJiBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVu
TW9kZVBpY3R1cmVJblBpY3R1cmUpXTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwor
I2VuZGlmCiB9CiAKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpZiBQTEFURk9STShJT1MpCiBO
U0FycmF5ICpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0aW1lZE1ldGFkYXRh
KCkgY29uc3QKIHsKICAgICBpZiAobV9jdXJyZW50TWV0YURhdGEpCkBAIC0xODI4LDEwICsxNzc3
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlk
ZW9MYXllckdyYXZpdHkoKQogICAgIGlmICghbV92aWRlb0xheWVyKQogICAgICAgICByZXR1cm47
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIC8vIERvIG5vdCBhdHRl
bXB0IHRvIGNoYW5nZSB0aGUgdmlkZW8gZ3Jhdml0eSB3aGlsZSBpbiBmdWxsIHNjcmVlbiBtb2Rl
LgogICAgIC8vIFNlZSBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkuCi0gICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
LT52aWRlb0Z1bGxzY3JlZW5MYXllcigpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApAQCAt
MjEyMCw4ICsyMDY5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb1RyYWNrcygpCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7Ci0jaWYg
UExBVEZPUk0oSU9TKQotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQorI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjEyOSwxOCArMjA3OCwxOSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdAogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN5bmNUZXh0VHJhY2tCb3Vu
ZHMoKQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgfHwgIW1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb25MYXllcikKKyNpZiBQTEFURk9STShJT1Mp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisg
ICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKSB8fCAhbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyKQogICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgQ0dSZWN0IHRleHRGcmFtZSA9IG1fdmlkZW9MYXllciA/IFttX3ZpZGVvTGF5
ZXIgdmlkZW9SZWN0XSA6IENHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53
aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKTsKKworICAgIEZsb2F0UmVj
dCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSA9IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52
aWRlb0Z1bGxzY3JlZW5GcmFtZSgpOworICAgIENHUmVjdCB0ZXh0RnJhbWUgPSBtX3ZpZGVvTGF5
ZXIgPyBbbV92aWRlb0xheWVyIHZpZGVvUmVjdF0gOiBDR1JlY3RNYWtlKDAsIDAsIHZpZGVvRnVs
bHNjcmVlbkZyYW1lLndpZHRoKCksIHZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKTsKICAg
ICBbbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyIHNldEZyYW1lOnRleHRGcmFtZV07CiAj
ZW5kaWYKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiogcmVwcmVzZW50
YXRpb24pCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBQbGF0Zm9y
bUxheWVyKiByZXByZXNlbnRhdGlvbkxheWVyID0gcmVwcmVzZW50YXRpb24gPyByZXByZXNlbnRh
dGlvbi0+cGxhdGZvcm1MYXllcigpIDogbmlsOwogICAgIGlmIChyZXByZXNlbnRhdGlvbkxheWVy
ID09IG1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb25MYXllcikgewogICAgICAgICBzeW5jVGV4dFRy
YWNrQm91bmRzKCk7CkBAIC0yMTUyLDkgKzIxMDIsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1Jl
cAogCiAgICAgbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyID0gcmVwcmVzZW50YXRpb25M
YXllcjsKIAotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyICYmIG1fdGV4dFRyYWNrUmVw
cmVzZW50YXRpb25MYXllcikgeworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSAmJiBtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5
ZXIpIHsKICAgICAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwotICAgICAgICBbbV92aWRlb0Z1
bGxzY3JlZW5MYXllciBhZGRTdWJsYXllcjptX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5ZXIu
Z2V0KCldOworICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVs
bHNjcmVlbkxheWVyKCkgYWRkU3VibGF5ZXI6bV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVy
LmdldCgpXTsKICAgICB9CiAKICNlbHNlCkBAIC0zMTQyLDcgKzMwOTIsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXli
YWNrKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIFttX2F2UGxh
eWVyIHNldFVzZXNFeHRlcm5hbFBsYXliYWNrV2hpbGVFeHRlcm5hbFNjcmVlbklzQWN0aXZlOm1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgIT0gbmlsXTsKKyAgICBbbV9hdlBsYXllciBzZXRVc2VzRXh0
ZXJuYWxQbGF5YmFja1doaWxlRXh0ZXJuYWxTY3JlZW5Jc0FjdGl2ZTptX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSAhPSBuaWxdOwogI2VuZGlmCiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ1ZGI2MDQ3OTA3YmQ5OTgxMzBjZjNjYjk3YmQ4
YmI0MjMzMDcxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcl9oCisjZGVmaW5lIFZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlcl9oCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXll
ci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcik7CitwdWJsaWM6CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI+IGNyZWF0ZSgpOwor
CisgICAgUGxhdGZvcm1MYXllciAqdmlkZW9JbmxpbmVMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW9JbmxpbmVMYXllci5nZXQoKTsgfQorICAgIFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsg
fQorICAgIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWU7IH0KKyAgICB2b2lkIHNldFZpZGVvTGF5ZXIoUGxhdGZvcm1M
YXllciAqLCBJbnRTaXplIGNvbnRlbnRTaXplKTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIgKik7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShGbG9hdFJlY3QpOworICAgIHZvaWQgZGlkRGVzdHJveVZpZGVvTGF5ZXIoKTsKKworcHJpdmF0
ZToKKyAgICBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoKTsKKworICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvSW5saW5lTGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9MYXllcjsKKyAgICBGbG9hdFJlY3QgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsK
K307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2VuZGlmIC8qIFZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM1ZDczODAwMDgxZjli
OTZkMTc0ZTk1ZjQ2Y2ZmYWNlNGM2MTlkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlci5tbQpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmgiCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbXBvcnQgIlF1
YXJ0ekNvcmVTUEkuaCIKKyNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCisKKworQGlu
dGVyZmFjZSBXZWJWaWRlb0NvbnRhaW5lckxheWVyIDogQ0FMYXllcgorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV2ViVmlkZW9Db250YWluZXJMYXllcgorCistICh2b2lkKXNldEJvdW5kczooQ0dS
ZWN0KWJvdW5kcworeworICAgIFtzdXBlciBzZXRCb3VuZHM6Ym91bmRzXTsKKyAgICBmb3IgKENB
TGF5ZXIqIGxheWVyIGluIHNlbGYuc3VibGF5ZXJzKQorICAgICAgICBsYXllci5mcmFtZSA9IGJv
dW5kczsKK30KKworLSAodm9pZClzZXRQb3NpdGlvbjooQ0dQb2ludClwb3NpdGlvbgoreworICAg
IGlmICghQ0FUcmFuc2Zvcm0zRElzSWRlbnRpdHkoc2VsZi50cmFuc2Zvcm0pKSB7CisgICAgICAg
IC8vIFByZS1hcHBseSB0aGUgdHJhbnNmb3JtIGFkZGVkIGluIHRoZSBXZWJQcm9jZXNzIHRvIGZp
eCA8cmRhcjovL3Byb2JsZW0vMTgzMTY1NDI+IHRvIHRoZSBwb3NpdGlvbi4KKyAgICAgICAgcG9z
aXRpb24gPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0ocG9zaXRpb24sIENBVHJhbnNmb3Jt
M0RHZXRBZmZpbmVUcmFuc2Zvcm0oc2VsZi50cmFuc2Zvcm0pKTsKKyAgICB9CisgICAgW3N1cGVy
IHNldFBvc2l0aW9uOnBvc2l0aW9uXTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyPiBWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI+KG5ldyBWaWRlb0Z1bGxzY3JlZW5MYXllck1h
bmFnZXIoKSk7Cit9CisKK1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyKCkKK3sKK30KKwordm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXI6OnNldFZpZGVvTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9MYXllciwgSW50U2l6ZSBjb250
ZW50U2l6ZSkKK3sKKyAgICBtX3ZpZGVvTGF5ZXIgPSB2aWRlb0xheWVyOworCisgICAgW21fdmlk
ZW9MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworICAgIG1fdmlkZW9JbmxpbmVMYXllciA9
IGFkb3B0TlMoW1tXZWJWaWRlb0NvbnRhaW5lckxheWVyIGFsbG9jXSBpbml0XSk7CisjaWZuZGVm
IE5ERUJVRworICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0TmFtZTpAIldlYlZpZGVvQ29udGFp
bmVyTGF5ZXIiXTsKKyNlbmRpZgorICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0RnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCBjb250ZW50U2l6ZS53aWR0aCgpLCBjb250ZW50U2l6ZS5oZWlnaHQoKSld
OworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CisgICAgICAgIFttX3ZpZGVvTGF5
ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRo
KCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKKyAgICAgICAgW21fdmlkZW9G
dWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6
MF07CisgICAgfSBlbHNlIHsKKyAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBpbnNlcnRTdWJs
YXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAgW21fdmlkZW9MYXll
ciBzZXRGcmFtZTptX3ZpZGVvSW5saW5lTGF5ZXIuZ2V0KCkuYm91bmRzXTsKKyAgICB9Cit9CisK
K3ZvaWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllcikKK3sKKyAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5MYXllciA9PSB2aWRlb0Z1bGxzY3JlZW5MYXllcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9IHZpZGVvRnVsbHNjcmVlbkxheWVyOwor
CisgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2Fi
bGVBY3Rpb25zOllFU107CisKKyAgICBDQUNvbnRleHQgKm9sZENvbnRleHQgPSBbbV92aWRlb0xh
eWVyIGNvbnRleHRdOworICAgIENBQ29udGV4dCAqbmV3Q29udGV4dCA9IG5pbDsKKworICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyICYmIG1fdmlkZW9MYXllcikgeworICAgICAgICBbbV92
aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJ
bmRleDowXTsKKyAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5o
ZWlnaHQoKSldOworICAgICAgICBuZXdDb250ZXh0ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
Y29udGV4dF07CisgICAgfSBlbHNlIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIgJiYgbV92aWRlb0xh
eWVyKSB7CisgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVMYXll
ciBib3VuZHNdXTsKKyAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07
CisgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVy
LmdldCgpIGF0SW5kZXg6MF07CisgICAgICAgIG5ld0NvbnRleHQgPSBbbV92aWRlb0lubGluZUxh
eWVyIGNvbnRleHRdOworICAgIH0gZWxzZSBpZiAobV92aWRlb0xheWVyKQorICAgICAgICBbbV92
aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKworICAgIGlmIChvbGRDb250ZXh0ICYm
IG5ld0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdDb250ZXh0KSB7CisgICAgICAgIG1hY2hf
cG9ydF90IGZlbmNlUG9ydCA9IFtvbGRDb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF07CisgICAgICAg
IFtuZXdDb250ZXh0IHNldEZlbmNlUG9ydDpmZW5jZVBvcnRdOworICAgICAgICBtYWNoX3BvcnRf
ZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBmZW5jZVBvcnQpOworICAgIH0KKyAgICBbQ0FU
cmFuc2FjdGlvbiBjb21taXRdOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
cjo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1l
KQoreworICAgIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUgPSB2aWRlb0Z1bGxzY3JlZW5GcmFtZTsK
KyAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX3ZpZGVvTGF5ZXIpCisgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCB2aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCB2aWRlb0Z1bGxzY3JlZW5G
cmFtZS5oZWlnaHQoKSldOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6
ZGlkRGVzdHJveVZpZGVvTGF5ZXIoKQoreworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
KQorICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKworICAgIG1f
dmlkZW9JbmxpbmVMYXllciA9IG5pbDsKKyAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7Cit9CisKK30K
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmlu
ZGV4IDJiMTAxZGE2MDY2YTUzNDBhNjIwMjNkZGQ4MTE2ZTk5YWI0Y2FhNGEuLjI0OGEzZTc1ODYy
N2QzNmRkYzBmZGQ3MGU0NDM0YTllNjg1OWMxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVy
Q29jb2EuaApAQCAtMTczLDYgKzE3Myw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlcXVpcmVz
Q3VzdG9tQXBwZWFyYW5jZVVwZGF0ZU9uQm91bmRzQ2hhbmdlKCkgY29uc3Q7CiAKKyAgICBBVlBs
YXllckxheWVyICphdlBsYXllckxheWVyKCkgY29uc3Q7CisKICAgICBSZXRhaW5QdHI8TlNPYmpl
Y3Q+IG1fZGVsZWdhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ0FMYXllckxpc3Q+
IG1fY3VzdG9tU3VibGF5ZXJzOwogICAgIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2Ug
bV9jdXN0b21BcHBlYXJhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRl
eCBlZGFhMDdkN2U3MjYyNjgzNTg0NzI3ZmIyZWJkMTliMGQxMDlkMTcyLi5mNjY1Y2JmNjI2ODU1
OWVhNDZjM2Q1YjI3MzI2NzRmOTYzYTczY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQpAQCAtMzYxLDEwICszNjEsMTEgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
IFBsYXRmb3JtQ0FMYXllckNvY29hOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG8KIAog
ICAgIGlmICh0eXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5ZXIpIHsKICAgICAgICAgQVNTRVJU
KFtuZXdMYXllci0+cGxhdGZvcm1MYXllcigpIGlzS2luZE9mQ2xhc3M6Z2V0QVZQbGF5ZXJMYXll
ckNsYXNzKCldKTsKLSAgICAgICAgQVNTRVJUKFtwbGF0Zm9ybUxheWVyKCkgaXNLaW5kT2ZDbGFz
czpnZXRBVlBsYXllckxheWVyQ2xhc3MoKV0pOwogCi0gICAgICAgIEFWUGxheWVyTGF5ZXIqIGRl
c3RpbmF0aW9uUGxheWVyTGF5ZXIgPSBzdGF0aWNfY2FzdDxBVlBsYXllckxheWVyICo+KG5ld0xh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpOwotICAgICAgICBBVlBsYXllckxheWVyKiBzb3VyY2VQbGF5
ZXJMYXllciA9IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4ocGxhdGZvcm1MYXllcigpKTsK
KyAgICAgICAgQVZQbGF5ZXJMYXllciAqZGVzdGluYXRpb25QbGF5ZXJMYXllciA9IHN0YXRpY19j
YXN0PFBsYXRmb3JtQ0FMYXllckNvY29hICo+KG5ld0xheWVyLmdldCgpKS0+YXZQbGF5ZXJMYXll
cigpOworICAgICAgICBBVlBsYXllckxheWVyICpzb3VyY2VQbGF5ZXJMYXllciA9IGF2UGxheWVy
TGF5ZXIoKTsKKyAgICAgICAgQVNTRVJUKHNvdXJjZVBsYXllckxheWVyKTsKKwogICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICAgICAg
W2Rlc3RpbmF0aW9uUGxheWVyTGF5ZXIgc2V0UGxheWVyOltzb3VyY2VQbGF5ZXJMYXllciBwbGF5
ZXJdXTsKICAgICAgICAgfSk7CkBAIC0xMTEwLDMgKzExMTEsMjEgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJDb2NvYTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0
LCB2b2lkICgKIHsKICAgICB3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxv
Y2sobV9sYXllci5nZXQoKSwgY29udGV4dCwgYmxvY2spOwogfQorCitBVlBsYXllckxheWVyICpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YXZQbGF5ZXJMYXllcigpIGNvbnN0Cit7CisgICAgaWYgKGxh
eWVyVHlwZSgpICE9IExheWVyVHlwZUFWUGxheWVyTGF5ZXIpCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBpZiAoW3BsYXRmb3JtTGF5ZXIoKSBpc0tpbmRPZkNsYXNzOmdldEFWUGxheWVyTGF5
ZXJDbGFzcygpXSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4o
cGxhdGZvcm1MYXllcigpKTsKKworICAgIGlmIChbcGxhdGZvcm1MYXllcigpIGlzS2luZE9mQ2xh
c3M6b2JqY19nZXRDbGFzcygiV2ViVmlkZW9Db250YWluZXJMYXllciIpXSkgeworICAgICAgICBB
U1NFUlQoW3BsYXRmb3JtTGF5ZXIoKSBzdWJsYXllcnNdLmNvdW50ID09IDEpOworICAgICAgICBB
U1NFUlQoW1twbGF0Zm9ybUxheWVyKCkgc3VibGF5ZXJzXVswXSBpc0tpbmRPZkNsYXNzOmdldEFW
UGxheWVyTGF5ZXJDbGFzcygpXSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBVlBsYXll
ckxheWVyICo+KFtwbGF0Zm9ybUxheWVyKCkgc3VibGF5ZXJzXVswXSk7CisgICAgfQorCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG5pbDsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269776</attachid>
            <date>2016-01-25 11:52:44 -0800</date>
            <delta_ts>2016-01-25 13:02:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153222-20160125115217.patch</filename>
            <type>text/plain</type>
            <size>34667</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdkZjQwY2M4ZDQ3MWU0
ZGQ0Njc0MDEyMTFhNTczZDNkZWZlOGRiNS4uODE0MGMyM2YzNDQ0ODg3ZDIzNjE1OTBlNTU5ZGU4
OWI4YmM0YjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE2LTAxLTIyICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBBUEkgcmVsYXRlZCB0
byB0aGUgdmlkZW8gZnVsbHNjcmVlbiBsYXllciBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDCisgICAgICAgIGFsc28gb24gTWFjIHdpdGggdmlkZW8gcHJlc2VudGF0aW9uIG1v
ZGUgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MzIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBJ
bnRyb2R1Y2UgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyIHRvIGRlYWwgd2l0aCB0aGUgdmlk
ZW8gbGF5ZXIgd2hlbiBzd2l0Y2hpbmcKKyAgICAgICAgYmV0d2VlbiBpbmxpbmUgYW5kIGZ1bGxz
Y3JlZW4gbW9kZS4gV2UnbGwgcmV1c2UgaXQgaW4gb3RoZXIgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlCisgICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICBOb3cgdGhhdCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDJ3MgcGxhdGZvcm0gbGF5ZXIgY2FuIGJlIGEg
V2ViVmlkZW9Db250YWluZXJMYXllciwKKyAgICAgICAgdGhpcyBleHBvc2VzIGEgYnVnIGluIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpjbG9uZSgpIHdoZXJlIHdlIGFzc3VtZWQgdGhlIHBsYXRmb3Jt
IGxheWVyCisgICAgICAgIGlzIGFsd2F5cyBhbiBBVlBsYXllckxheWVyIGlmIHRoZSBQbGF0Zm9y
bUNBTGF5ZXIncyBsYXllciB0eXBlIGlzIExheWVyVHlwZUFWUGxheWVyTGF5ZXIuCisgICAgICAg
IEFkZCBhIGhlbHBlciBtZXRob2QgdG8gZ2V0IGFuIEFWUGxheWVyTGF5ZXIgZnJvbSBhIFBsYXRm
b3JtQ0FMYXllckNvY29hICh3aGljaCBhbHNvIGhhbmRsZXMKKyAgICAgICAgV2ViVmlkZW9Db250
YWluZXJMYXllciBjYXNlKSBhbmQgdXNlIGl0IGluIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjbG9u
ZSgpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBBZGQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyIHRvIHRoZSBwcm9qZWN0LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgQ3JlYXRlIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLiBUaGUgdmlkZW8gaW5saW5lIGxheWVyLCB2aWRlbyBmdWxs
c2NyZWVuIGxheWVyLAorICAgICAgICBhbmQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gZnJhbWUgYXJl
IG5vdyBtYW5hZ2VkIGJ5IHRoYXQgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAg
SnVzdCBjYWxsIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcigpIHRv
IGhhbmRsZSBhZGRpbmcgdGhlIHZpZGVvCisgICAgICAgIGxheWVyIGluIGVpdGhlciB0aGUgaW5s
aW5lIG9yIGZ1bGxzY3JlZW4gbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9MYXllcik6CisgICAgICAgIENhbGwg
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpkaWREZXN0cm95VmlkZW9MYXllcigpLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZv
cm1MYXllcik6CisgICAgICAgIEdldCB0aGUgdmlkZW8gaW5saW5lIGxheWVyIGZyb20gVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBD
YWxsIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
KS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgQ2FsbCBWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKCkuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5N
b2RlKToKKyAgICAgICAgR3VhcmQgdGhlIGlPUyBzcGVjaWZpYyBjb2RlIHByb3Blcmx5LgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
VmlkZW9MYXllckdyYXZpdHkpOgorICAgICAgICBHZXQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gbGF5
ZXIgZnJvbSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZXF1aXJlc1RleHRUcmFja1JlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jVGV4dFRyYWNrQm91bmRzKToKKyAgICAgICAg
R2V0IHRoZSB2aWRlbyBmdWxsc2NyZWVuIGxheWVyIGFuZCB2aWRlbyBmdWxsc2NyZWVuIGZyYW1l
IGZyb20gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRp
b24pOgorICAgICAgICBHZXQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gbGF5ZXIgZnJvbSBWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnZpZGVvSW5saW5lTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjp2aWRl
b0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXI6OnZpZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW06IEFk
ZGVkLgorICAgICAgICAoLVtXZWJWaWRlb0NvbnRhaW5lckxheWVyIHNldEJvdW5kczpdKToKKyAg
ICAgICAgKC1bV2ViVmlkZW9Db250YWluZXJMYXllciBzZXRQb3NpdGlvbjpdKToKKyAgICAgICAg
V2ViVmlkZW9Db250YWluZXJMYXllciB3YXMgbW92ZWQgZnJvbSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0xheWVyKToKKyAgICAgICAg
Q29kZSBtb3ZlZCBmcm9tIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZUFWUGxheWVyTGF5ZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBDb2RlIG1vdmVkIGZy
b20gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICBDb2RlIG1vdmVkIGZyb20gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoKS4K
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6ZGlkRGVzdHJv
eVZpZGVvTGF5ZXIpOgorICAgICAgICBDb2RlIG1vdmVkIGZyb20gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvTGF5ZXIoKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAg
ICAgIChQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y2xvbmUpOgorICAgICAgICBVc2UgdGhlIG5ldyBQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YXZQbGF5ZXJMYXllcigpIG1ldGhvZCB0byBnZXQgdGhlIEFW
UGxheWVyTGF5ZXIgZnJvbSBib3RoIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBhbmQgc291cmNl
IFBsYXRmb3JtQ0FMYXllcnMuCisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YXZQbGF5
ZXJMYXllcik6CisgICAgICAgIFJldHVybiBuaWwgaWYgdGhlIGxheWVyIHR5cGUgaXMgbm90IExh
eWVyVHlwZUFWUGxheWVyTGF5ZXIuIE90aGVyd2lzZSwgcmV0dXJuIHRoZQorICAgICAgICBwbGF0
Zm9ybSBsYXllciBpZiBpdCBpcyBpbmRlZWQgYW4gQVZQbGF5ZXJMYXllci4gSWYgbm90LCBpdCBz
aG91bGQgYmUgYSBXZWJWaWRlb0NvbnRhaW5lckxheWVyCisgICAgICAgIGFuZCB3ZSBzaG91bGQg
cmV0dXJuIGl0cyBzdWJsYXllciB3aGljaCBzaG91bGQgYmUgYW4gQVZQbGF5ZXJMYXllci4KKwog
MjAxNi0wMS0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TW9kZXJuIElEQjogSW1wbGVtZW50IGdldEluZGV4UmVjb3JkIGluIHRoZSBTUUxpdGUgYmFja2lu
ZyBzdG9yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA1NjBhZDJlMjZhN2U0ZWViMGQ5MmUxMWY3YjgzMTAxYmIxYjQyMzQ3Li5j
NDdkMTI0NTQyNGZmNGY1ZmU3M2YzOWU5MGMxYzI2YmVhNzYxMTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjczLDYgKzIy
NzMsNyBAQAogCQk1MkNDQTlFODE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJDQ0E5RTUxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCAq
LzsgfTsKIAkJNTJDQ0E5RTkxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxl
Y3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkNDQTlFNjE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5tbSAq
LzsgfTsKIAkJNTJDQ0E5RUExNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxl
Y3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJDQ0E5RTcxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rp
b25JbnRlcm5hbC5oICovOyB9OworCQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJENUExOEQxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci5tbSAqLzsgfTsKIAkJNTJFMkNBRkMxOUZGMDIwNzAwMUVFQjRGIC8qIE1l
ZGlhUHJvZHVjZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyRTJDQUZCMTlGRjAyMDcwMDFFRUI0RiAvKiBNZWRpYVByb2R1Y2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJGMTA4NjUxNjJCNkRB
NDAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGMTA4NjIxNjJCNkQ4MjAwOUFDODFFIC8qIE1p
eGVkQ29udGVudENoZWNrZXIuY3BwICovOyB9OwogCQk1MkYxMDg2NjE2MkI2REE4MDA5QUM4MUUg
LyogTWl4ZWRDb250ZW50Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJGMTA4NjMxNjJCNkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENo
ZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtOTc1NCw2ICs5NzU1LDggQEAKIAkJNTJDQ0E5RTUxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MkNDQTlFNjE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURPTU5hbWVkRmxv
d0NvbGxlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQ0NBOUU3MTVF
M0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uSW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbklu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRDVBMThEMUM1NDU5MDMw
MERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRDVBMThFMUM1NDU5MDMwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyRTJDQUZCMTlGRjAyMDcwMDFFRUI0RiAvKiBNZWRpYVByb2R1Y2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUHJvZHVjZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGMTA4NjIxNjJCNkQ4MjAwOUFDODFFIC8qIE1peGVk
Q29udGVudENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
RjEwODYzMTYyQjZEODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1peGVkQ29udGVudENoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTcyLDYgKzIyOTc1LDggQEAKIAkJCQk3QTI5RjU3MTE4
QzY5NTE0MDA0RDBGODEgLyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAogCQkJ
CUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
ICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbSAqLywKKwkJCQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLmggKi8sCisJCQkJNTJENUExOEQxQzU0NTkwMzAwREUzNEEzIC8q
IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSAqLywKIAkJCQlDRDMzNkY2NTE3RkEwQUM2
MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLywKIAkJCQlDRDMzNkY2
NjE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJ
Q0Q4QjVBNDExODBEMTQ5QTAwOEI4RTY1IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmggKi8sCkBAIC0zMTUyMyw2ICszMTUyOCw3IEBACiAJCQkJMkUzQkJGMDcxMTYyREEx
MTAwQjk0MDlBIC8qIFVVSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVBMTU0MjcxMjc5NTM0
RDAwRDBCMEMwIC8qIFZhbGlkYXRpb25NZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
MzE2MEFFMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU4M0RCMTE4M0M0NDA2MDAzMUVBQTMgLyogVmlk
ZW9QbGF5YmFja1F1YWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwREUxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRTEx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCmluZGV4IDBhZjNlYTM1YWFkNDJiZDA5M2EyMDNjYjU4YjBmMDZiNGI4
YjVmODIuLmFiOTFkYzVjNWRlODQ1MTA3N2YzNzY5ZjZjY2VjOTg3YTM4MjBmM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKQEAgLTc0LDYgKzc0LDEwIEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOwogY2xhc3MgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOwogCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorY2xhc3MgVmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyOworI2VuZGlmCisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1l
ZGlhUGxheWVyKik7CkBAIC0xNjAsMTIgKzE2NCwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKKyNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQog
ICAgIHZpcnR1YWwgTlNBcnJheSAqdGltZWRNZXRhZGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgU3RyaW5nIGFjY2Vzc0xvZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
U3RyaW5nIGVycm9yTG9nKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMTUsMTAgKzMyMSw4IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxheWVyOwogICAgIFJldGFpblB0
cjxBVlBsYXllckl0ZW0+IG1fYXZQbGF5ZXJJdGVtOwogICAgIFJldGFpblB0cjxBVlBsYXllckxh
eWVyPiBtX3ZpZGVvTGF5ZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBtX3ZpZGVvSW5saW5lTGF5ZXI7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7Ci0gICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2Ny
ZWVuRnJhbWU7CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwogICAgIE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OwogICAgIFJl
dGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5ZXI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGY1MmRiMTliMWZjNjVmYzE4OWQyMTAz
Y2JlYzFkYmQ4N2IxZGMwMzIuLjczMjFjYTU4OTdkOThkZjhkN2JmNDk5ZDU1ZDFhYmE5ZjA3YTU3
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtODUsNiArODUsMTEgQEAKICNlbmRpZgog
CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CisKKyNpZiBQTEFURk9STShJ
T1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkp
CisjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV0FLQXBwS2l0U3R1YnMuaCIKICNpbXBvcnQgPENvcmVJ
bWFnZS9Db3JlSW1hZ2UuaD4KQEAgLTExMywyOCArMTE4LDYgQEAgdGVtcGxhdGUgPD4gc3RydWN0
IGl0ZXJhdG9yX3RyYWl0czxIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9w
dGlvbkEKIH07CiB9CiAKLUBpbnRlcmZhY2UgV2ViVmlkZW9Db250YWluZXJMYXllciA6IENBTGF5
ZXIKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIKLQotLSAo
dm9pZClzZXRCb3VuZHM6KENHUmVjdClib3VuZHMKLXsKLSAgICBbc3VwZXIgc2V0Qm91bmRzOmJv
dW5kc107Ci0gICAgZm9yIChDQUxheWVyKiBsYXllciBpbiBzZWxmLnN1YmxheWVycykKLSAgICAg
ICAgbGF5ZXIuZnJhbWUgPSBib3VuZHM7Ci19Ci0KLS0gKHZvaWQpc2V0UG9zaXRpb246KENHUG9p
bnQpcG9zaXRpb24KLXsKLSAgICBpZiAoIUNBVHJhbnNmb3JtM0RJc0lkZW50aXR5KHNlbGYudHJh
bnNmb3JtKSkgewotICAgICAgICAvLyBQcmUtYXBwbHkgdGhlIHRyYW5zZm9ybSBhZGRlZCBpbiB0
aGUgV2ViUHJvY2VzcyB0byBmaXggPHJkYXI6Ly9wcm9ibGVtLzE4MzE2NTQyPiB0byB0aGUgcG9z
aXRpb24uCi0gICAgICAgIHBvc2l0aW9uID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKHBv
c2l0aW9uLCBDQVRyYW5zZm9ybTNER2V0QWZmaW5lVHJhbnNmb3JtKHNlbGYudHJhbnNmb3JtKSk7
Ci0gICAgfQotICAgIFtzdXBlciBzZXRQb3NpdGlvbjpwb3NpdGlvbl07Ci19Ci1AZW5kCi0KICNp
ZiBFTkFCTEUoQVZGX0NBUFRJT05TKQogLy8gTm90ZTogVGhpcyBtdXN0IGJlIGRlZmluZWQgYmVm
b3JlIG91ciBTT0ZUX0xJTksgbWFjcm9zOgogQGNsYXNzIEFWTWVkaWFTZWxlY3Rpb25PcHRpb247
CkBAIC00NzQsNyArNDU3LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbihwbGF5ZXIpCiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
KFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX3ZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKICNl
bmRpZgogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKSkKQEAgLTY5MywyMiArNjc3LDEzIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJM
YXllcigpCiAgICAgSW50U2l6ZSBkZWZhdWx0U2l6ZSA9IHNuYXBwZWRJbnRSZWN0KHBsYXllcigp
LT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKICAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0xh
eWVyKCVwKSAtIHJldHVybmluZyAlcCIsIHRoaXMsIG1fdmlkZW9MYXllci5nZXQoKSk7CiAKKyNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVv
TGF5ZXIobV92aWRlb0xheWVyLmdldCgpLCBkZWZhdWx0U2l6ZSk7CisKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgW21fdmlkZW9MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwotICAgIG1fdmlk
ZW9JbmxpbmVMYXllciA9IGFkb3B0TlMoW1tXZWJWaWRlb0NvbnRhaW5lckxheWVyIGFsbG9jXSBp
bml0XSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0TmFtZTpA
IldlYlZpZGVvQ29udGFpbmVyTGF5ZXIiXTsKLSNlbmRpZgotICAgIFttX3ZpZGVvSW5saW5lTGF5
ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBkZWZhdWx0U2l6ZS53aWR0aCgpLCBkZWZhdWx0
U2l6ZS5oZWlnaHQoKSldOwotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKSB7Ci0gICAg
ICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNj
cmVlbkZyYW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKLSAg
ICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVy
LmdldCgpIGF0SW5kZXg6MF07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW21fdmlkZW9JbmxpbmVM
YXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKLSAgICAg
ICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTptX3ZpZGVvSW5saW5lTGF5ZXIuZ2V0KCkuYm91bmRz
XTsKLSAgICB9CiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzZXRQSVBNb2RlRW5hYmxlZDopXSkKICAgICAgICAgW21fdmlkZW9MYXllciBzZXRQSVBN
b2RlRW5hYmxlZDoocGxheWVyKCktPmZ1bGxzY3JlZW5Nb2RlKCkgJiBNZWRpYVBsYXllcjo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpXTsKKyNlbmRpZgogI2Vsc2UKICAgICBb
bV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgZGVmYXVsdFNpemUud2lkdGgo
KSwgZGVmYXVsdFNpemUuaGVpZ2h0KCkpXTsKICNlbmRpZgpAQCAtNzI0LDEwICs2OTksOCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVy
KCkKICAgICBbbV92aWRlb0xheWVyLmdldCgpIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVy
LmdldCgpIGZvcktleVBhdGg6QCJyZWFkeUZvckRpc3BsYXkiXTsKICAgICBbbV92aWRlb0xheWVy
LmdldCgpIHNldFBsYXllcjpuaWxdOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKLSAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBuaWw7CisjaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQor
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5kaWREZXN0cm95VmlkZW9MYXllcigp
OwogI2VuZGlmCiAKICAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CkBAIC0xMTE0LDQ5ICsxMDg3LDI0
IEBAIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxh
dGZvcm1NZWRpYSgpIGNvbnN0CiAKIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElP
UykKLSAgICByZXR1cm4gbV9oYXZlQmVlbkFza2VkVG9DcmVhdGVMYXllciA/IG1fdmlkZW9Jbmxp
bmVMYXllci5nZXQoKSA6IG51bGxwdHI7CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIHJldHVybiBtX2hh
dmVCZWVuQXNrZWRUb0NyZWF0ZUxheWVyID8gbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIt
PnZpZGVvSW5saW5lTGF5ZXIoKSA6IG51bGxwdHI7CiAjZWxzZQogICAgIHJldHVybiBtX2hhdmVC
ZWVuQXNrZWRUb0NyZWF0ZUxheWVyID8gbV92aWRlb0xheWVyLmdldCgpIDogbnVsbHB0cjsKICNl
bmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCiB7Ci0gICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpID09IHZpZGVvRnVsbHNj
cmVlbkxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
ID0gdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyKTsKIAotICAg
IFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0
aW9uczpZRVNdOwotICAgIAotICAgIENBQ29udGV4dCAqb2xkQ29udGV4dCA9IFttX3ZpZGVvTGF5
ZXIgY29udGV4dF07Ci0gICAgQ0FDb250ZXh0ICpuZXdDb250ZXh0ID0gbmlsOwotICAgIAotICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyICYmIG1fdmlkZW9MYXllcikgewotICAgICAgICBb
bV92aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkg
YXRJbmRleDowXTsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFt
ZS5oZWlnaHQoKSldOwotICAgICAgICBuZXdDb250ZXh0ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgY29udGV4dF07Ci0gICAgfSBlbHNlIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIgJiYgbV92aWRl
b0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVM
YXllciBib3VuZHNdXTsKLSAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXll
cl07Ci0gICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xh
eWVyLmdldCgpIGF0SW5kZXg6MF07Ci0gICAgICAgIG5ld0NvbnRleHQgPSBbbV92aWRlb0lubGlu
ZUxheWVyIGNvbnRleHRdOwotICAgIH0gZWxzZSBpZiAobV92aWRlb0xheWVyKQotICAgICAgICBb
bV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLQotICAgIGlmIChvbGRDb250ZXh0
ICYmIG5ld0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdDb250ZXh0KSB7Ci0gICAgICAgIG1h
Y2hfcG9ydF90IGZlbmNlUG9ydCA9IFtvbGRDb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF07Ci0gICAg
ICAgIFtuZXdDb250ZXh0IHNldEZlbmNlUG9ydDpmZW5jZVBvcnRdOwotICAgICAgICBtYWNoX3Bv
cnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBmZW5jZVBvcnQpOwotICAgIH0KLSAgICBb
Q0FUcmFuc2FjdGlvbiBjb21taXRdOwotCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
JiYgbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyKSB7CisgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpICYmIG1fdGV4dFRyYWNr
UmVwcmVzZW50YXRpb25MYXllcikgewogICAgICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7Ci0g
ICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGFkZFN1YmxheWVyOm1fdGV4dFRyYWNrUmVw
cmVzZW50YXRpb25MYXllci5nZXQoKV07CisgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBhZGRTdWJsYXllcjptX3RleHRUcmFja1Jl
cHJlc2VudGF0aW9uTGF5ZXIuZ2V0KCldOwogICAgIH0KIAogICAgIHVwZGF0ZURpc2FibGVFeHRl
cm5hbFBsYXliYWNrKCk7CkBAIC0xMTY0LDEzICsxMTEyLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyKgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKIHsKLSAgICBtX3ZpZGVvRnVsbHNjcmVl
bkZyYW1lID0gZnJhbWU7Ci0gICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV92aWRlb0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVvTGF5
ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBmcmFtZS53aWR0aCgpLCBmcmFtZS5oZWlnaHQo
KSldOwotICAgIH0KKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoZnJhbWUpOwogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIApA
QCAtMTE5OSwxMCArMTE0MSwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OgogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUo
TWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKKyNpZiBQTEFURk9STShJ
T1MpCiAgICAgaWYgKG1fdmlkZW9MYXllciAmJiBbbV92aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0pCiAgICAgICAgIFttX3ZpZGVvTGF5
ZXIgc2V0UElQTW9kZUVuYWJsZWQ6KG1vZGUgJiBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVu
TW9kZVBpY3R1cmVJblBpY3R1cmUpXTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwor
I2VuZGlmCiB9CiAKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpZiBQTEFURk9STShJT1MpCiBO
U0FycmF5ICpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0aW1lZE1ldGFkYXRh
KCkgY29uc3QKIHsKICAgICBpZiAobV9jdXJyZW50TWV0YURhdGEpCkBAIC0xODI4LDEwICsxNzc3
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlk
ZW9MYXllckdyYXZpdHkoKQogICAgIGlmICghbV92aWRlb0xheWVyKQogICAgICAgICByZXR1cm47
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIC8vIERvIG5vdCBhdHRl
bXB0IHRvIGNoYW5nZSB0aGUgdmlkZW8gZ3Jhdml0eSB3aGlsZSBpbiBmdWxsIHNjcmVlbiBtb2Rl
LgogICAgIC8vIFNlZSBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkuCi0gICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
LT52aWRlb0Z1bGxzY3JlZW5MYXllcigpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApAQCAt
MjEyMCw4ICsyMDY5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb1RyYWNrcygpCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7Ci0jaWYg
UExBVEZPUk0oSU9TKQotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQorI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjEyOSwxOCArMjA3OCwxOSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdAogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN5bmNUZXh0VHJhY2tCb3Vu
ZHMoKQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgfHwgIW1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb25MYXllcikKKyNpZiBQTEFURk9STShJT1Mp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisg
ICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKSB8fCAhbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyKQogICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgQ0dSZWN0IHRleHRGcmFtZSA9IG1fdmlkZW9MYXllciA/IFttX3ZpZGVvTGF5
ZXIgdmlkZW9SZWN0XSA6IENHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53
aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKTsKKworICAgIEZsb2F0UmVj
dCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSA9IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52
aWRlb0Z1bGxzY3JlZW5GcmFtZSgpOworICAgIENHUmVjdCB0ZXh0RnJhbWUgPSBtX3ZpZGVvTGF5
ZXIgPyBbbV92aWRlb0xheWVyIHZpZGVvUmVjdF0gOiBDR1JlY3RNYWtlKDAsIDAsIHZpZGVvRnVs
bHNjcmVlbkZyYW1lLndpZHRoKCksIHZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKTsKICAg
ICBbbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyIHNldEZyYW1lOnRleHRGcmFtZV07CiAj
ZW5kaWYKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiogcmVwcmVzZW50
YXRpb24pCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBQbGF0Zm9y
bUxheWVyKiByZXByZXNlbnRhdGlvbkxheWVyID0gcmVwcmVzZW50YXRpb24gPyByZXByZXNlbnRh
dGlvbi0+cGxhdGZvcm1MYXllcigpIDogbmlsOwogICAgIGlmIChyZXByZXNlbnRhdGlvbkxheWVy
ID09IG1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb25MYXllcikgewogICAgICAgICBzeW5jVGV4dFRy
YWNrQm91bmRzKCk7CkBAIC0yMTUyLDkgKzIxMDIsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1Jl
cAogCiAgICAgbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyID0gcmVwcmVzZW50YXRpb25M
YXllcjsKIAotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyICYmIG1fdGV4dFRyYWNrUmVw
cmVzZW50YXRpb25MYXllcikgeworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSAmJiBtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5
ZXIpIHsKICAgICAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwotICAgICAgICBbbV92aWRlb0Z1
bGxzY3JlZW5MYXllciBhZGRTdWJsYXllcjptX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5ZXIu
Z2V0KCldOworICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVs
bHNjcmVlbkxheWVyKCkgYWRkU3VibGF5ZXI6bV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVy
LmdldCgpXTsKICAgICB9CiAKICNlbHNlCkBAIC0zMTQyLDcgKzMwOTIsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXli
YWNrKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIFttX2F2UGxh
eWVyIHNldFVzZXNFeHRlcm5hbFBsYXliYWNrV2hpbGVFeHRlcm5hbFNjcmVlbklzQWN0aXZlOm1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgIT0gbmlsXTsKKyAgICBbbV9hdlBsYXllciBzZXRVc2VzRXh0
ZXJuYWxQbGF5YmFja1doaWxlRXh0ZXJuYWxTY3JlZW5Jc0FjdGl2ZTptX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSAhPSBuaWxdOwogI2VuZGlmCiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ1ZGI2MDQ3OTA3YmQ5OTgxMzBjZjNjYjk3YmQ4
YmI0MjMzMDcxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcl9oCisjZGVmaW5lIFZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlcl9oCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXll
ci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcik7CitwdWJsaWM6CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI+IGNyZWF0ZSgpOwor
CisgICAgUGxhdGZvcm1MYXllciAqdmlkZW9JbmxpbmVMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW9JbmxpbmVMYXllci5nZXQoKTsgfQorICAgIFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsg
fQorICAgIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWU7IH0KKyAgICB2b2lkIHNldFZpZGVvTGF5ZXIoUGxhdGZvcm1M
YXllciAqLCBJbnRTaXplIGNvbnRlbnRTaXplKTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIgKik7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShGbG9hdFJlY3QpOworICAgIHZvaWQgZGlkRGVzdHJveVZpZGVvTGF5ZXIoKTsKKworcHJpdmF0
ZToKKyAgICBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoKTsKKworICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvSW5saW5lTGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9MYXllcjsKKyAgICBGbG9hdFJlY3QgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsK
K307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2VuZGlmIC8qIFZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ0NzZlOWNiMGYwNWE2
MWI3NGMwZTQ5NjBhYzM2YTYzOWI2YjJhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlci5tbQpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmgiCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbXBvcnQgIlF1
YXJ0ekNvcmVTUEkuaCIKKyNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCisjaW1wb3J0
IDxtYWNoL21hY2hfcG9ydC5oPgorCitAaW50ZXJmYWNlIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIg
OiBDQUxheWVyCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0NvbnRhaW5lckxheWVy
CisKKy0gKHZvaWQpc2V0Qm91bmRzOihDR1JlY3QpYm91bmRzCit7CisgICAgW3N1cGVyIHNldEJv
dW5kczpib3VuZHNdOworICAgIGZvciAoQ0FMYXllciogbGF5ZXIgaW4gc2VsZi5zdWJsYXllcnMp
CisgICAgICAgIGxheWVyLmZyYW1lID0gYm91bmRzOworfQorCistICh2b2lkKXNldFBvc2l0aW9u
OihDR1BvaW50KXBvc2l0aW9uCit7CisgICAgaWYgKCFDQVRyYW5zZm9ybTNESXNJZGVudGl0eShz
ZWxmLnRyYW5zZm9ybSkpIHsKKyAgICAgICAgLy8gUHJlLWFwcGx5IHRoZSB0cmFuc2Zvcm0gYWRk
ZWQgaW4gdGhlIFdlYlByb2Nlc3MgdG8gZml4IDxyZGFyOi8vcHJvYmxlbS8xODMxNjU0Mj4gdG8g
dGhlIHBvc2l0aW9uLgorICAgICAgICBwb3NpdGlvbiA9IENHUG9pbnRBcHBseUFmZmluZVRyYW5z
Zm9ybShwb3NpdGlvbiwgQ0FUcmFuc2Zvcm0zREdldEFmZmluZVRyYW5zZm9ybShzZWxmLnRyYW5z
Zm9ybSkpOworICAgIH0KKyAgICBbc3VwZXIgc2V0UG9zaXRpb246cG9zaXRpb25dOworfQorQGVu
ZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXI+IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6Y3JlYXRlKCkKK3sK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcj4o
bmV3IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcigpKTsKK30KKworVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoKQoreworfQorCit2b2lk
IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcihQbGF0Zm9ybUxheWVy
ICp2aWRlb0xheWVyLCBJbnRTaXplIGNvbnRlbnRTaXplKQoreworICAgIG1fdmlkZW9MYXllciA9
IHZpZGVvTGF5ZXI7CisKKyAgICBbbV92aWRlb0xheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107
CisgICAgbV92aWRlb0lubGluZUxheWVyID0gYWRvcHROUyhbW1dlYlZpZGVvQ29udGFpbmVyTGF5
ZXIgYWxsb2NdIGluaXRdKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgW21fdmlkZW9JbmxpbmVMYXll
ciBzZXROYW1lOkAiV2ViVmlkZW9Db250YWluZXJMYXllciJdOworI2VuZGlmCisgICAgW21fdmlk
ZW9JbmxpbmVMYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIGNvbnRlbnRTaXplLndpZHRo
KCksIGNvbnRlbnRTaXplLmhlaWdodCgpKV07CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIpIHsKKyAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWln
aHQoKSldOworICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjpt
X3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICB9IGVsc2UgeworICAgICAgICBbbV92
aWRlb0lubGluZUxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4
OjBdOworICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOm1fdmlkZW9JbmxpbmVMYXllci5n
ZXQoKS5ib3VuZHNdOworICAgIH0KK30KKwordm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVl
bkxheWVyKQoreworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNj
cmVlbkxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
ID0gdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Cisg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKworICAgIENBQ29udGV4
dCAqb2xkQ29udGV4dCA9IFttX3ZpZGVvTGF5ZXIgY29udGV4dF07CisgICAgQ0FDb250ZXh0ICpu
ZXdDb250ZXh0ID0gbmlsOworCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgJiYgbV92
aWRlb0xheWVyKSB7CisgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGluc2VydFN1Ymxh
eWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOworICAgICAgICBbbV92aWRlb0xheWVy
IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgp
LCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07CisgICAgICAgIG5ld0NvbnRleHQg
PSBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBjb250ZXh0XTsKKyAgICB9IGVsc2UgaWYgKG1fdmlk
ZW9JbmxpbmVMYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKKyAgICAgICAgW21fdmlkZW9MYXllciBz
ZXRGcmFtZTpbbV92aWRlb0lubGluZUxheWVyIGJvdW5kc11dOworICAgICAgICBbbV92aWRlb0xh
eWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBp
bnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAgbmV3
Q29udGV4dCA9IFttX3ZpZGVvSW5saW5lTGF5ZXIgY29udGV4dF07CisgICAgfSBlbHNlIGlmICht
X3ZpZGVvTGF5ZXIpCisgICAgICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJd
OworCisgICAgaWYgKG9sZENvbnRleHQgJiYgbmV3Q29udGV4dCAmJiBvbGRDb250ZXh0ICE9IG5l
d0NvbnRleHQpIHsKKyAgICAgICAgbWFjaF9wb3J0X3QgZmVuY2VQb3J0ID0gW29sZENvbnRleHQg
Y3JlYXRlRmVuY2VQb3J0XTsKKyAgICAgICAgW25ld0NvbnRleHQgc2V0RmVuY2VQb3J0OmZlbmNl
UG9ydF07CisgICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIGZl
bmNlUG9ydCk7CisgICAgfQorICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Cit9CisKK3ZvaWQg
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9h
dFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUpCit7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5GcmFt
ZSA9IHZpZGVvRnVsbHNjcmVlbkZyYW1lOworICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5MYXll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdmlkZW9MYXllcikKKyAgICAgICAgW21f
dmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHZpZGVvRnVsbHNjcmVlbkZyYW1l
LndpZHRoKCksIHZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07Cit9CisKK3ZvaWQgVmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpkaWREZXN0cm95VmlkZW9MYXllcigpCit7CisgICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3Zl
RnJvbVN1cGVybGF5ZXJdOworCisgICAgbV92aWRlb0lubGluZUxheWVyID0gbmlsOworICAgIG1f
dmlkZW9MYXllciA9IG5pbDsKK30KKworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggMmIxMDFkYTYwNjZhNTM0MGE2MjAyM2RkZDgx
MTZlOTlhYjRjYWE0YS4uMjQ4YTNlNzU4NjI3ZDM2ZGRjMGZkZDcwZTQ0MzRhOWU2ODU5YzE1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xNzMsNiArMTczLDggQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNDdXN0b21BcHBlYXJhbmNlVXBkYXRlT25Cb3VuZHND
aGFuZ2UoKSBjb25zdDsKIAorICAgIEFWUGxheWVyTGF5ZXIgKmF2UGxheWVyTGF5ZXIoKSBjb25z
dDsKKwogICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9kZWxlZ2F0ZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1DQUxheWVyTGlzdD4gbV9jdXN0b21TdWJsYXllcnM7CiAgICAgR3JhcGhp
Y3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBtX2N1c3RvbUFwcGVhcmFuY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IGVkYWEwN2Q3ZTcyNjI2ODM1ODQ3MjdmYjJlYmQx
OWIwZDEwOWQxNzIuLmY2NjVjYmY2MjY4NTU5ZWE0NmMzZDViMjczMjY3NGY5NjNhNzNjYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC0zNjEsMTAgKzM2MSwxMSBAQCBQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNsb25lKFBs
YXRmb3JtQ0FMYXllckNsaWVudCogbwogCiAgICAgaWYgKHR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcikgewogICAgICAgICBBU1NFUlQoW25ld0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgaXNL
aW5kT2ZDbGFzczpnZXRBVlBsYXllckxheWVyQ2xhc3MoKV0pOwotICAgICAgICBBU1NFUlQoW3Bs
YXRmb3JtTGF5ZXIoKSBpc0tpbmRPZkNsYXNzOmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSk7CiAK
LSAgICAgICAgQVZQbGF5ZXJMYXllciogZGVzdGluYXRpb25QbGF5ZXJMYXllciA9IHN0YXRpY19j
YXN0PEFWUGxheWVyTGF5ZXIgKj4obmV3TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7Ci0gICAgICAg
IEFWUGxheWVyTGF5ZXIqIHNvdXJjZVBsYXllckxheWVyID0gc3RhdGljX2Nhc3Q8QVZQbGF5ZXJM
YXllciAqPihwbGF0Zm9ybUxheWVyKCkpOworICAgICAgICBBVlBsYXllckxheWVyICpkZXN0aW5h
dGlvblBsYXllckxheWVyID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1DQUxheWVyQ29jb2EgKj4obmV3
TGF5ZXIuZ2V0KCkpLT5hdlBsYXllckxheWVyKCk7CisgICAgICAgIEFWUGxheWVyTGF5ZXIgKnNv
dXJjZVBsYXllckxheWVyID0gYXZQbGF5ZXJMYXllcigpOworICAgICAgICBBU1NFUlQoc291cmNl
UGxheWVyTGF5ZXIpOworCiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CiAgICAgICAgICAgICBbZGVzdGluYXRpb25QbGF5ZXJMYXllciBzZXRQbGF5
ZXI6W3NvdXJjZVBsYXllckxheWVyIHBsYXllcl1dOwogICAgICAgICB9KTsKQEAgLTExMTAsMyAr
MTExMSwyMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjplbnVtZXJhdGVSZWN0c0JlaW5n
RHJhd24oQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKAogewogICAgIHdrQ0FMYXllckVudW1l
cmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jayhtX2xheWVyLmdldCgpLCBjb250ZXh0LCBibG9j
ayk7CiB9CisKK0FWUGxheWVyTGF5ZXIgKlBsYXRmb3JtQ0FMYXllckNvY29hOjphdlBsYXllckxh
eWVyKCkgY29uc3QKK3sKKyAgICBpZiAobGF5ZXJUeXBlKCkgIT0gTGF5ZXJUeXBlQVZQbGF5ZXJM
YXllcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGlmIChbcGxhdGZvcm1MYXllcigpIGlz
S2luZE9mQ2xhc3M6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCldKQorICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QVZQbGF5ZXJMYXllciAqPihwbGF0Zm9ybUxheWVyKCkpOworCisgICAgaWYgKFtw
bGF0Zm9ybUxheWVyKCkgaXNLaW5kT2ZDbGFzczpvYmpjX2dldENsYXNzKCJXZWJWaWRlb0NvbnRh
aW5lckxheWVyIildKSB7CisgICAgICAgIEFTU0VSVChbcGxhdGZvcm1MYXllcigpIHN1YmxheWVy
c10uY291bnQgPT0gMSk7CisgICAgICAgIEFTU0VSVChbW3BsYXRmb3JtTGF5ZXIoKSBzdWJsYXll
cnNdWzBdIGlzS2luZE9mQ2xhc3M6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCldKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4oW3BsYXRmb3JtTGF5ZXIoKSBzdWJs
YXllcnNdWzBdKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gbmlsOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269781</attachid>
            <date>2016-01-25 13:03:04 -0800</date>
            <delta_ts>2016-01-26 06:49:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153222-20160125130238.patch</filename>
            <type>text/plain</type>
            <size>34695</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdkZjQwY2M4ZDQ3MWU0
ZGQ0Njc0MDEyMTFhNTczZDNkZWZlOGRiNS4uODE0MGMyM2YzNDQ0ODg3ZDIzNjE1OTBlNTU5ZGU4
OWI4YmM0YjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE2LTAxLTIyICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBBUEkgcmVsYXRlZCB0
byB0aGUgdmlkZW8gZnVsbHNjcmVlbiBsYXllciBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDCisgICAgICAgIGFsc28gb24gTWFjIHdpdGggdmlkZW8gcHJlc2VudGF0aW9uIG1v
ZGUgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MzIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBJ
bnRyb2R1Y2UgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyIHRvIGRlYWwgd2l0aCB0aGUgdmlk
ZW8gbGF5ZXIgd2hlbiBzd2l0Y2hpbmcKKyAgICAgICAgYmV0d2VlbiBpbmxpbmUgYW5kIGZ1bGxz
Y3JlZW4gbW9kZS4gV2UnbGwgcmV1c2UgaXQgaW4gb3RoZXIgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlCisgICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICBOb3cgdGhhdCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDJ3MgcGxhdGZvcm0gbGF5ZXIgY2FuIGJlIGEg
V2ViVmlkZW9Db250YWluZXJMYXllciwKKyAgICAgICAgdGhpcyBleHBvc2VzIGEgYnVnIGluIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpjbG9uZSgpIHdoZXJlIHdlIGFzc3VtZWQgdGhlIHBsYXRmb3Jt
IGxheWVyCisgICAgICAgIGlzIGFsd2F5cyBhbiBBVlBsYXllckxheWVyIGlmIHRoZSBQbGF0Zm9y
bUNBTGF5ZXIncyBsYXllciB0eXBlIGlzIExheWVyVHlwZUFWUGxheWVyTGF5ZXIuCisgICAgICAg
IEFkZCBhIGhlbHBlciBtZXRob2QgdG8gZ2V0IGFuIEFWUGxheWVyTGF5ZXIgZnJvbSBhIFBsYXRm
b3JtQ0FMYXllckNvY29hICh3aGljaCBhbHNvIGhhbmRsZXMKKyAgICAgICAgV2ViVmlkZW9Db250
YWluZXJMYXllciBjYXNlKSBhbmQgdXNlIGl0IGluIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjbG9u
ZSgpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBBZGQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyIHRvIHRoZSBwcm9qZWN0LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgQ3JlYXRlIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLiBUaGUgdmlkZW8gaW5saW5lIGxheWVyLCB2aWRlbyBmdWxs
c2NyZWVuIGxheWVyLAorICAgICAgICBhbmQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gZnJhbWUgYXJl
IG5vdyBtYW5hZ2VkIGJ5IHRoYXQgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAg
SnVzdCBjYWxsIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcigpIHRv
IGhhbmRsZSBhZGRpbmcgdGhlIHZpZGVvCisgICAgICAgIGxheWVyIGluIGVpdGhlciB0aGUgaW5s
aW5lIG9yIGZ1bGxzY3JlZW4gbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9MYXllcik6CisgICAgICAgIENhbGwg
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpkaWREZXN0cm95VmlkZW9MYXllcigpLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZv
cm1MYXllcik6CisgICAgICAgIEdldCB0aGUgdmlkZW8gaW5saW5lIGxheWVyIGZyb20gVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBD
YWxsIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
KS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgQ2FsbCBWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKCkuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5N
b2RlKToKKyAgICAgICAgR3VhcmQgdGhlIGlPUyBzcGVjaWZpYyBjb2RlIHByb3Blcmx5LgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
VmlkZW9MYXllckdyYXZpdHkpOgorICAgICAgICBHZXQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gbGF5
ZXIgZnJvbSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZXF1aXJlc1RleHRUcmFja1JlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jVGV4dFRyYWNrQm91bmRzKToKKyAgICAgICAg
R2V0IHRoZSB2aWRlbyBmdWxsc2NyZWVuIGxheWVyIGFuZCB2aWRlbyBmdWxsc2NyZWVuIGZyYW1l
IGZyb20gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRp
b24pOgorICAgICAgICBHZXQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gbGF5ZXIgZnJvbSBWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnZpZGVvSW5saW5lTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjp2aWRl
b0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXI6OnZpZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW06IEFk
ZGVkLgorICAgICAgICAoLVtXZWJWaWRlb0NvbnRhaW5lckxheWVyIHNldEJvdW5kczpdKToKKyAg
ICAgICAgKC1bV2ViVmlkZW9Db250YWluZXJMYXllciBzZXRQb3NpdGlvbjpdKToKKyAgICAgICAg
V2ViVmlkZW9Db250YWluZXJMYXllciB3YXMgbW92ZWQgZnJvbSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0xheWVyKToKKyAgICAgICAg
Q29kZSBtb3ZlZCBmcm9tIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZUFWUGxheWVyTGF5ZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBDb2RlIG1vdmVkIGZy
b20gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICBDb2RlIG1vdmVkIGZyb20gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoKS4K
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6ZGlkRGVzdHJv
eVZpZGVvTGF5ZXIpOgorICAgICAgICBDb2RlIG1vdmVkIGZyb20gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvTGF5ZXIoKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAg
ICAgIChQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y2xvbmUpOgorICAgICAgICBVc2UgdGhlIG5ldyBQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YXZQbGF5ZXJMYXllcigpIG1ldGhvZCB0byBnZXQgdGhlIEFW
UGxheWVyTGF5ZXIgZnJvbSBib3RoIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBhbmQgc291cmNl
IFBsYXRmb3JtQ0FMYXllcnMuCisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YXZQbGF5
ZXJMYXllcik6CisgICAgICAgIFJldHVybiBuaWwgaWYgdGhlIGxheWVyIHR5cGUgaXMgbm90IExh
eWVyVHlwZUFWUGxheWVyTGF5ZXIuIE90aGVyd2lzZSwgcmV0dXJuIHRoZQorICAgICAgICBwbGF0
Zm9ybSBsYXllciBpZiBpdCBpcyBpbmRlZWQgYW4gQVZQbGF5ZXJMYXllci4gSWYgbm90LCBpdCBz
aG91bGQgYmUgYSBXZWJWaWRlb0NvbnRhaW5lckxheWVyCisgICAgICAgIGFuZCB3ZSBzaG91bGQg
cmV0dXJuIGl0cyBzdWJsYXllciB3aGljaCBzaG91bGQgYmUgYW4gQVZQbGF5ZXJMYXllci4KKwog
MjAxNi0wMS0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TW9kZXJuIElEQjogSW1wbGVtZW50IGdldEluZGV4UmVjb3JkIGluIHRoZSBTUUxpdGUgYmFja2lu
ZyBzdG9yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA1NjBhZDJlMjZhN2U0ZWViMGQ5MmUxMWY3YjgzMTAxYmIxYjQyMzQ3Li5j
NDdkMTI0NTQyNGZmNGY1ZmU3M2YzOWU5MGMxYzI2YmVhNzYxMTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjczLDYgKzIy
NzMsNyBAQAogCQk1MkNDQTlFODE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJDQ0E5RTUxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCAq
LzsgfTsKIAkJNTJDQ0E5RTkxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxl
Y3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkNDQTlFNjE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5tbSAq
LzsgfTsKIAkJNTJDQ0E5RUExNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxl
Y3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJDQ0E5RTcxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rp
b25JbnRlcm5hbC5oICovOyB9OworCQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJENUExOEQxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci5tbSAqLzsgfTsKIAkJNTJFMkNBRkMxOUZGMDIwNzAwMUVFQjRGIC8qIE1l
ZGlhUHJvZHVjZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyRTJDQUZCMTlGRjAyMDcwMDFFRUI0RiAvKiBNZWRpYVByb2R1Y2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJGMTA4NjUxNjJCNkRB
NDAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGMTA4NjIxNjJCNkQ4MjAwOUFDODFFIC8qIE1p
eGVkQ29udGVudENoZWNrZXIuY3BwICovOyB9OwogCQk1MkYxMDg2NjE2MkI2REE4MDA5QUM4MUUg
LyogTWl4ZWRDb250ZW50Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJGMTA4NjMxNjJCNkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENo
ZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtOTc1NCw2ICs5NzU1LDggQEAKIAkJNTJDQ0E5RTUxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MkNDQTlFNjE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURPTU5hbWVkRmxv
d0NvbGxlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQ0NBOUU3MTVF
M0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uSW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbklu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRDVBMThEMUM1NDU5MDMw
MERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRDVBMThFMUM1NDU5MDMwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyRTJDQUZCMTlGRjAyMDcwMDFFRUI0RiAvKiBNZWRpYVByb2R1Y2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUHJvZHVjZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGMTA4NjIxNjJCNkQ4MjAwOUFDODFFIC8qIE1peGVk
Q29udGVudENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
RjEwODYzMTYyQjZEODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1peGVkQ29udGVudENoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTcyLDYgKzIyOTc1LDggQEAKIAkJCQk3QTI5RjU3MTE4
QzY5NTE0MDA0RDBGODEgLyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAogCQkJ
CUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
ICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbSAqLywKKwkJCQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLmggKi8sCisJCQkJNTJENUExOEQxQzU0NTkwMzAwREUzNEEzIC8q
IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSAqLywKIAkJCQlDRDMzNkY2NTE3RkEwQUM2
MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLywKIAkJCQlDRDMzNkY2
NjE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJ
Q0Q4QjVBNDExODBEMTQ5QTAwOEI4RTY1IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmggKi8sCkBAIC0zMTUyMyw2ICszMTUyOCw3IEBACiAJCQkJMkUzQkJGMDcxMTYyREEx
MTAwQjk0MDlBIC8qIFVVSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVBMTU0MjcxMjc5NTM0
RDAwRDBCMEMwIC8qIFZhbGlkYXRpb25NZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
MzE2MEFFMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU4M0RCMTE4M0M0NDA2MDAzMUVBQTMgLyogVmlk
ZW9QbGF5YmFja1F1YWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwREUxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRTEx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCmluZGV4IDBhZjNlYTM1YWFkNDJiZDA5M2EyMDNjYjU4YjBmMDZiNGI4
YjVmODIuLmFiOTFkYzVjNWRlODQ1MTA3N2YzNzY5ZjZjY2VjOTg3YTM4MjBmM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKQEAgLTc0LDYgKzc0LDEwIEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOwogY2xhc3MgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOwogCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorY2xhc3MgVmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyOworI2VuZGlmCisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1l
ZGlhUGxheWVyKik7CkBAIC0xNjAsMTIgKzE2NCwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKKyNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQog
ICAgIHZpcnR1YWwgTlNBcnJheSAqdGltZWRNZXRhZGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgU3RyaW5nIGFjY2Vzc0xvZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
U3RyaW5nIGVycm9yTG9nKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMTUsMTAgKzMyMSw4IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxheWVyOwogICAgIFJldGFpblB0
cjxBVlBsYXllckl0ZW0+IG1fYXZQbGF5ZXJJdGVtOwogICAgIFJldGFpblB0cjxBVlBsYXllckxh
eWVyPiBtX3ZpZGVvTGF5ZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBtX3ZpZGVvSW5saW5lTGF5ZXI7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7Ci0gICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2Ny
ZWVuRnJhbWU7CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwogICAgIE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OwogICAgIFJl
dGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5ZXI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGY1MmRiMTliMWZjNjVmYzE4OWQyMTAz
Y2JlYzFkYmQ4N2IxZGMwMzIuLjczMjFjYTU4OTdkOThkZjhkN2JmNDk5ZDU1ZDFhYmE5ZjA3YTU3
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtODUsNiArODUsMTEgQEAKICNlbmRpZgog
CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CisKKyNpZiBQTEFURk9STShJ
T1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkp
CisjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV0FLQXBwS2l0U3R1YnMuaCIKICNpbXBvcnQgPENvcmVJ
bWFnZS9Db3JlSW1hZ2UuaD4KQEAgLTExMywyOCArMTE4LDYgQEAgdGVtcGxhdGUgPD4gc3RydWN0
IGl0ZXJhdG9yX3RyYWl0czxIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9w
dGlvbkEKIH07CiB9CiAKLUBpbnRlcmZhY2UgV2ViVmlkZW9Db250YWluZXJMYXllciA6IENBTGF5
ZXIKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIKLQotLSAo
dm9pZClzZXRCb3VuZHM6KENHUmVjdClib3VuZHMKLXsKLSAgICBbc3VwZXIgc2V0Qm91bmRzOmJv
dW5kc107Ci0gICAgZm9yIChDQUxheWVyKiBsYXllciBpbiBzZWxmLnN1YmxheWVycykKLSAgICAg
ICAgbGF5ZXIuZnJhbWUgPSBib3VuZHM7Ci19Ci0KLS0gKHZvaWQpc2V0UG9zaXRpb246KENHUG9p
bnQpcG9zaXRpb24KLXsKLSAgICBpZiAoIUNBVHJhbnNmb3JtM0RJc0lkZW50aXR5KHNlbGYudHJh
bnNmb3JtKSkgewotICAgICAgICAvLyBQcmUtYXBwbHkgdGhlIHRyYW5zZm9ybSBhZGRlZCBpbiB0
aGUgV2ViUHJvY2VzcyB0byBmaXggPHJkYXI6Ly9wcm9ibGVtLzE4MzE2NTQyPiB0byB0aGUgcG9z
aXRpb24uCi0gICAgICAgIHBvc2l0aW9uID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKHBv
c2l0aW9uLCBDQVRyYW5zZm9ybTNER2V0QWZmaW5lVHJhbnNmb3JtKHNlbGYudHJhbnNmb3JtKSk7
Ci0gICAgfQotICAgIFtzdXBlciBzZXRQb3NpdGlvbjpwb3NpdGlvbl07Ci19Ci1AZW5kCi0KICNp
ZiBFTkFCTEUoQVZGX0NBUFRJT05TKQogLy8gTm90ZTogVGhpcyBtdXN0IGJlIGRlZmluZWQgYmVm
b3JlIG91ciBTT0ZUX0xJTksgbWFjcm9zOgogQGNsYXNzIEFWTWVkaWFTZWxlY3Rpb25PcHRpb247
CkBAIC00NzQsNyArNDU3LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbihwbGF5ZXIpCiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
KFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX3ZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKICNl
bmRpZgogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKSkKQEAgLTY5MywyMiArNjc3LDEzIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJM
YXllcigpCiAgICAgSW50U2l6ZSBkZWZhdWx0U2l6ZSA9IHNuYXBwZWRJbnRSZWN0KHBsYXllcigp
LT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKICAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0xh
eWVyKCVwKSAtIHJldHVybmluZyAlcCIsIHRoaXMsIG1fdmlkZW9MYXllci5nZXQoKSk7CiAKKyNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVv
TGF5ZXIobV92aWRlb0xheWVyLmdldCgpLCBkZWZhdWx0U2l6ZSk7CisKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgW21fdmlkZW9MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwotICAgIG1fdmlk
ZW9JbmxpbmVMYXllciA9IGFkb3B0TlMoW1tXZWJWaWRlb0NvbnRhaW5lckxheWVyIGFsbG9jXSBp
bml0XSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0TmFtZTpA
IldlYlZpZGVvQ29udGFpbmVyTGF5ZXIiXTsKLSNlbmRpZgotICAgIFttX3ZpZGVvSW5saW5lTGF5
ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBkZWZhdWx0U2l6ZS53aWR0aCgpLCBkZWZhdWx0
U2l6ZS5oZWlnaHQoKSldOwotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKSB7Ci0gICAg
ICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNj
cmVlbkZyYW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKLSAg
ICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVy
LmdldCgpIGF0SW5kZXg6MF07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW21fdmlkZW9JbmxpbmVM
YXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKLSAgICAg
ICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTptX3ZpZGVvSW5saW5lTGF5ZXIuZ2V0KCkuYm91bmRz
XTsKLSAgICB9CiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzZXRQSVBNb2RlRW5hYmxlZDopXSkKICAgICAgICAgW21fdmlkZW9MYXllciBzZXRQSVBN
b2RlRW5hYmxlZDoocGxheWVyKCktPmZ1bGxzY3JlZW5Nb2RlKCkgJiBNZWRpYVBsYXllcjo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpXTsKKyNlbmRpZgogI2Vsc2UKICAgICBb
bV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgZGVmYXVsdFNpemUud2lkdGgo
KSwgZGVmYXVsdFNpemUuaGVpZ2h0KCkpXTsKICNlbmRpZgpAQCAtNzI0LDEwICs2OTksOCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVy
KCkKICAgICBbbV92aWRlb0xheWVyLmdldCgpIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVy
LmdldCgpIGZvcktleVBhdGg6QCJyZWFkeUZvckRpc3BsYXkiXTsKICAgICBbbV92aWRlb0xheWVy
LmdldCgpIHNldFBsYXllcjpuaWxdOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKLSAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBuaWw7CisjaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQor
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5kaWREZXN0cm95VmlkZW9MYXllcigp
OwogI2VuZGlmCiAKICAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CkBAIC0xMTE0LDQ5ICsxMDg3LDI0
IEBAIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxh
dGZvcm1NZWRpYSgpIGNvbnN0CiAKIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElP
UykKLSAgICByZXR1cm4gbV9oYXZlQmVlbkFza2VkVG9DcmVhdGVMYXllciA/IG1fdmlkZW9Jbmxp
bmVMYXllci5nZXQoKSA6IG51bGxwdHI7CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIHJldHVybiBtX2hh
dmVCZWVuQXNrZWRUb0NyZWF0ZUxheWVyID8gbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIt
PnZpZGVvSW5saW5lTGF5ZXIoKSA6IG51bGxwdHI7CiAjZWxzZQogICAgIHJldHVybiBtX2hhdmVC
ZWVuQXNrZWRUb0NyZWF0ZUxheWVyID8gbV92aWRlb0xheWVyLmdldCgpIDogbnVsbHB0cjsKICNl
bmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCiB7Ci0gICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpID09IHZpZGVvRnVsbHNj
cmVlbkxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
ID0gdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyKTsKIAotICAg
IFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0
aW9uczpZRVNdOwotICAgIAotICAgIENBQ29udGV4dCAqb2xkQ29udGV4dCA9IFttX3ZpZGVvTGF5
ZXIgY29udGV4dF07Ci0gICAgQ0FDb250ZXh0ICpuZXdDb250ZXh0ID0gbmlsOwotICAgIAotICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyICYmIG1fdmlkZW9MYXllcikgewotICAgICAgICBb
bV92aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkg
YXRJbmRleDowXTsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFt
ZS5oZWlnaHQoKSldOwotICAgICAgICBuZXdDb250ZXh0ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgY29udGV4dF07Ci0gICAgfSBlbHNlIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIgJiYgbV92aWRl
b0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVM
YXllciBib3VuZHNdXTsKLSAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXll
cl07Ci0gICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xh
eWVyLmdldCgpIGF0SW5kZXg6MF07Ci0gICAgICAgIG5ld0NvbnRleHQgPSBbbV92aWRlb0lubGlu
ZUxheWVyIGNvbnRleHRdOwotICAgIH0gZWxzZSBpZiAobV92aWRlb0xheWVyKQotICAgICAgICBb
bV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLQotICAgIGlmIChvbGRDb250ZXh0
ICYmIG5ld0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdDb250ZXh0KSB7Ci0gICAgICAgIG1h
Y2hfcG9ydF90IGZlbmNlUG9ydCA9IFtvbGRDb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF07Ci0gICAg
ICAgIFtuZXdDb250ZXh0IHNldEZlbmNlUG9ydDpmZW5jZVBvcnRdOwotICAgICAgICBtYWNoX3Bv
cnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBmZW5jZVBvcnQpOwotICAgIH0KLSAgICBb
Q0FUcmFuc2FjdGlvbiBjb21taXRdOwotCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
JiYgbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyKSB7CisgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpICYmIG1fdGV4dFRyYWNr
UmVwcmVzZW50YXRpb25MYXllcikgewogICAgICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7Ci0g
ICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGFkZFN1YmxheWVyOm1fdGV4dFRyYWNrUmVw
cmVzZW50YXRpb25MYXllci5nZXQoKV07CisgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBhZGRTdWJsYXllcjptX3RleHRUcmFja1Jl
cHJlc2VudGF0aW9uTGF5ZXIuZ2V0KCldOwogICAgIH0KIAogICAgIHVwZGF0ZURpc2FibGVFeHRl
cm5hbFBsYXliYWNrKCk7CkBAIC0xMTY0LDEzICsxMTEyLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyKgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKIHsKLSAgICBtX3ZpZGVvRnVsbHNjcmVl
bkZyYW1lID0gZnJhbWU7Ci0gICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV92aWRlb0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVvTGF5
ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBmcmFtZS53aWR0aCgpLCBmcmFtZS5oZWlnaHQo
KSldOwotICAgIH0KKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoZnJhbWUpOwogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIApA
QCAtMTE5OSwxMCArMTE0MSwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OgogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUo
TWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKKyNpZiBQTEFURk9STShJ
T1MpCiAgICAgaWYgKG1fdmlkZW9MYXllciAmJiBbbV92aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0pCiAgICAgICAgIFttX3ZpZGVvTGF5
ZXIgc2V0UElQTW9kZUVuYWJsZWQ6KG1vZGUgJiBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVu
TW9kZVBpY3R1cmVJblBpY3R1cmUpXTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwor
I2VuZGlmCiB9CiAKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpZiBQTEFURk9STShJT1MpCiBO
U0FycmF5ICpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0aW1lZE1ldGFkYXRh
KCkgY29uc3QKIHsKICAgICBpZiAobV9jdXJyZW50TWV0YURhdGEpCkBAIC0xODI4LDEwICsxNzc3
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlk
ZW9MYXllckdyYXZpdHkoKQogICAgIGlmICghbV92aWRlb0xheWVyKQogICAgICAgICByZXR1cm47
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIC8vIERvIG5vdCBhdHRl
bXB0IHRvIGNoYW5nZSB0aGUgdmlkZW8gZ3Jhdml0eSB3aGlsZSBpbiBmdWxsIHNjcmVlbiBtb2Rl
LgogICAgIC8vIFNlZSBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkuCi0gICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
LT52aWRlb0Z1bGxzY3JlZW5MYXllcigpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApAQCAt
MjEyMCw4ICsyMDY5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb1RyYWNrcygpCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7Ci0jaWYg
UExBVEZPUk0oSU9TKQotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQorI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjEyOSwxOCArMjA3OCwxOSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdAogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN5bmNUZXh0VHJhY2tCb3Vu
ZHMoKQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgfHwgIW1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb25MYXllcikKKyNpZiBQTEFURk9STShJT1Mp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisg
ICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKSB8fCAhbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyKQogICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgQ0dSZWN0IHRleHRGcmFtZSA9IG1fdmlkZW9MYXllciA/IFttX3ZpZGVvTGF5
ZXIgdmlkZW9SZWN0XSA6IENHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53
aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKTsKKworICAgIEZsb2F0UmVj
dCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSA9IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52
aWRlb0Z1bGxzY3JlZW5GcmFtZSgpOworICAgIENHUmVjdCB0ZXh0RnJhbWUgPSBtX3ZpZGVvTGF5
ZXIgPyBbbV92aWRlb0xheWVyIHZpZGVvUmVjdF0gOiBDR1JlY3RNYWtlKDAsIDAsIHZpZGVvRnVs
bHNjcmVlbkZyYW1lLndpZHRoKCksIHZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKTsKICAg
ICBbbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyIHNldEZyYW1lOnRleHRGcmFtZV07CiAj
ZW5kaWYKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiogcmVwcmVzZW50
YXRpb24pCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBQbGF0Zm9y
bUxheWVyKiByZXByZXNlbnRhdGlvbkxheWVyID0gcmVwcmVzZW50YXRpb24gPyByZXByZXNlbnRh
dGlvbi0+cGxhdGZvcm1MYXllcigpIDogbmlsOwogICAgIGlmIChyZXByZXNlbnRhdGlvbkxheWVy
ID09IG1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb25MYXllcikgewogICAgICAgICBzeW5jVGV4dFRy
YWNrQm91bmRzKCk7CkBAIC0yMTUyLDkgKzIxMDIsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1Jl
cAogCiAgICAgbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyID0gcmVwcmVzZW50YXRpb25M
YXllcjsKIAotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyICYmIG1fdGV4dFRyYWNrUmVw
cmVzZW50YXRpb25MYXllcikgeworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSAmJiBtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5
ZXIpIHsKICAgICAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwotICAgICAgICBbbV92aWRlb0Z1
bGxzY3JlZW5MYXllciBhZGRTdWJsYXllcjptX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5ZXIu
Z2V0KCldOworICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVs
bHNjcmVlbkxheWVyKCkgYWRkU3VibGF5ZXI6bV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVy
LmdldCgpXTsKICAgICB9CiAKICNlbHNlCkBAIC0zMTQyLDcgKzMwOTIsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXli
YWNrKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIFttX2F2UGxh
eWVyIHNldFVzZXNFeHRlcm5hbFBsYXliYWNrV2hpbGVFeHRlcm5hbFNjcmVlbklzQWN0aXZlOm1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgIT0gbmlsXTsKKyAgICBbbV9hdlBsYXllciBzZXRVc2VzRXh0
ZXJuYWxQbGF5YmFja1doaWxlRXh0ZXJuYWxTY3JlZW5Jc0FjdGl2ZTptX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSAhPSBuaWxdOwogI2VuZGlmCiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ1ZGI2MDQ3OTA3YmQ5OTgxMzBjZjNjYjk3YmQ4
YmI0MjMzMDcxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcl9oCisjZGVmaW5lIFZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlcl9oCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXll
ci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcik7CitwdWJsaWM6CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI+IGNyZWF0ZSgpOwor
CisgICAgUGxhdGZvcm1MYXllciAqdmlkZW9JbmxpbmVMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW9JbmxpbmVMYXllci5nZXQoKTsgfQorICAgIFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsg
fQorICAgIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWU7IH0KKyAgICB2b2lkIHNldFZpZGVvTGF5ZXIoUGxhdGZvcm1M
YXllciAqLCBJbnRTaXplIGNvbnRlbnRTaXplKTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIgKik7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShGbG9hdFJlY3QpOworICAgIHZvaWQgZGlkRGVzdHJveVZpZGVvTGF5ZXIoKTsKKworcHJpdmF0
ZToKKyAgICBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoKTsKKworICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvSW5saW5lTGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9MYXllcjsKKyAgICBGbG9hdFJlY3QgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsK
K307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2VuZGlmIC8qIFZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhiOTIwMzRjOThkNWM5
YzAyODhlMzIwYjk2NzQ2ODdkNzVmNGRhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlci5tbQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmgiCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbXBvcnQgIlF1
YXJ0ekNvcmVTUEkuaCIKKyNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCisjaW1wb3J0
IDxtYWNoL21hY2hfaW5pdC5oPgorI2ltcG9ydCA8bWFjaC9tYWNoX3BvcnQuaD4KKworQGludGVy
ZmFjZSBXZWJWaWRlb0NvbnRhaW5lckxheWVyIDogQ0FMYXllcgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gV2ViVmlkZW9Db250YWluZXJMYXllcgorCistICh2b2lkKXNldEJvdW5kczooQ0dSZWN0
KWJvdW5kcworeworICAgIFtzdXBlciBzZXRCb3VuZHM6Ym91bmRzXTsKKyAgICBmb3IgKENBTGF5
ZXIqIGxheWVyIGluIHNlbGYuc3VibGF5ZXJzKQorICAgICAgICBsYXllci5mcmFtZSA9IGJvdW5k
czsKK30KKworLSAodm9pZClzZXRQb3NpdGlvbjooQ0dQb2ludClwb3NpdGlvbgoreworICAgIGlm
ICghQ0FUcmFuc2Zvcm0zRElzSWRlbnRpdHkoc2VsZi50cmFuc2Zvcm0pKSB7CisgICAgICAgIC8v
IFByZS1hcHBseSB0aGUgdHJhbnNmb3JtIGFkZGVkIGluIHRoZSBXZWJQcm9jZXNzIHRvIGZpeCA8
cmRhcjovL3Byb2JsZW0vMTgzMTY1NDI+IHRvIHRoZSBwb3NpdGlvbi4KKyAgICAgICAgcG9zaXRp
b24gPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0ocG9zaXRpb24sIENBVHJhbnNmb3JtM0RH
ZXRBZmZpbmVUcmFuc2Zvcm0oc2VsZi50cmFuc2Zvcm0pKTsKKyAgICB9CisgICAgW3N1cGVyIHNl
dFBvc2l0aW9uOnBvc2l0aW9uXTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyPiBWaWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI+KG5ldyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXIoKSk7Cit9CisKK1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6VmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyKCkKK3sKK30KKwordm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6
OnNldFZpZGVvTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9MYXllciwgSW50U2l6ZSBjb250ZW50
U2l6ZSkKK3sKKyAgICBtX3ZpZGVvTGF5ZXIgPSB2aWRlb0xheWVyOworCisgICAgW21fdmlkZW9M
YXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworICAgIG1fdmlkZW9JbmxpbmVMYXllciA9IGFk
b3B0TlMoW1tXZWJWaWRlb0NvbnRhaW5lckxheWVyIGFsbG9jXSBpbml0XSk7CisjaWZuZGVmIE5E
RUJVRworICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0TmFtZTpAIldlYlZpZGVvQ29udGFpbmVy
TGF5ZXIiXTsKKyNlbmRpZgorICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCBjb250ZW50U2l6ZS53aWR0aCgpLCBjb250ZW50U2l6ZS5oZWlnaHQoKSldOwor
ICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CisgICAgICAgIFttX3ZpZGVvTGF5ZXIg
c2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCks
IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKKyAgICAgICAgW21fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07
CisgICAgfSBlbHNlIHsKKyAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBpbnNlcnRTdWJsYXll
cjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAgW21fdmlkZW9MYXllciBz
ZXRGcmFtZTptX3ZpZGVvSW5saW5lTGF5ZXIuZ2V0KCkuYm91bmRzXTsKKyAgICB9Cit9CisKK3Zv
aWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllcikKK3sKKyAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5MYXllciA9PSB2aWRlb0Z1bGxzY3JlZW5MYXllcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9IHZpZGVvRnVsbHNjcmVlbkxheWVyOworCisg
ICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVB
Y3Rpb25zOllFU107CisKKyAgICBDQUNvbnRleHQgKm9sZENvbnRleHQgPSBbbV92aWRlb0xheWVy
IGNvbnRleHRdOworICAgIENBQ29udGV4dCAqbmV3Q29udGV4dCA9IG5pbDsKKworICAgIGlmICht
X3ZpZGVvRnVsbHNjcmVlbkxheWVyICYmIG1fdmlkZW9MYXllcikgeworICAgICAgICBbbV92aWRl
b0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRl
eDowXTsKKyAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWln
aHQoKSldOworICAgICAgICBuZXdDb250ZXh0ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29u
dGV4dF07CisgICAgfSBlbHNlIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIgJiYgbV92aWRlb0xheWVy
KSB7CisgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVMYXllciBi
b3VuZHNdXTsKKyAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07Cisg
ICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdl
dCgpIGF0SW5kZXg6MF07CisgICAgICAgIG5ld0NvbnRleHQgPSBbbV92aWRlb0lubGluZUxheWVy
IGNvbnRleHRdOworICAgIH0gZWxzZSBpZiAobV92aWRlb0xheWVyKQorICAgICAgICBbbV92aWRl
b0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKworICAgIGlmIChvbGRDb250ZXh0ICYmIG5l
d0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdDb250ZXh0KSB7CisgICAgICAgIG1hY2hfcG9y
dF90IGZlbmNlUG9ydCA9IFtvbGRDb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF07CisgICAgICAgIFtu
ZXdDb250ZXh0IHNldEZlbmNlUG9ydDpmZW5jZVBvcnRdOworICAgICAgICBtYWNoX3BvcnRfZGVh
bGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBmZW5jZVBvcnQpOworICAgIH0KKyAgICBbQ0FUcmFu
c2FjdGlvbiBjb21taXRdOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKQor
eworICAgIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUgPSB2aWRlb0Z1bGxzY3JlZW5GcmFtZTsKKyAg
ICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX3ZpZGVvTGF5ZXIpCisgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCB2aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCB2aWRlb0Z1bGxzY3JlZW5GcmFt
ZS5oZWlnaHQoKSldOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6ZGlk
RGVzdHJveVZpZGVvTGF5ZXIoKQoreworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQor
ICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKworICAgIG1fdmlk
ZW9JbmxpbmVMYXllciA9IG5pbDsKKyAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7Cit9CisKK30KKwor
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4
IDJiMTAxZGE2MDY2YTUzNDBhNjIwMjNkZGQ4MTE2ZTk5YWI0Y2FhNGEuLjI0OGEzZTc1ODYyN2Qz
NmRkYzBmZGQ3MGU0NDM0YTllNjg1OWMxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EuaApAQCAtMTczLDYgKzE3Myw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlcXVpcmVzQ3Vz
dG9tQXBwZWFyYW5jZVVwZGF0ZU9uQm91bmRzQ2hhbmdlKCkgY29uc3Q7CiAKKyAgICBBVlBsYXll
ckxheWVyICphdlBsYXllckxheWVyKCkgY29uc3Q7CisKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+
IG1fZGVsZWdhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ0FMYXllckxpc3Q+IG1f
Y3VzdG9tU3VibGF5ZXJzOwogICAgIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgbV9j
dXN0b21BcHBlYXJhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCBl
ZGFhMDdkN2U3MjYyNjgzNTg0NzI3ZmIyZWJkMTliMGQxMDlkMTcyLi5mNjY1Y2JmNjI2ODU1OWVh
NDZjM2Q1YjI3MzI2NzRmOTYzYTczY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQpAQCAtMzYxLDEwICszNjEsMTEgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBs
YXRmb3JtQ0FMYXllckNvY29hOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG8KIAogICAg
IGlmICh0eXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKFtu
ZXdMYXllci0+cGxhdGZvcm1MYXllcigpIGlzS2luZE9mQ2xhc3M6Z2V0QVZQbGF5ZXJMYXllckNs
YXNzKCldKTsKLSAgICAgICAgQVNTRVJUKFtwbGF0Zm9ybUxheWVyKCkgaXNLaW5kT2ZDbGFzczpn
ZXRBVlBsYXllckxheWVyQ2xhc3MoKV0pOwogCi0gICAgICAgIEFWUGxheWVyTGF5ZXIqIGRlc3Rp
bmF0aW9uUGxheWVyTGF5ZXIgPSBzdGF0aWNfY2FzdDxBVlBsYXllckxheWVyICo+KG5ld0xheWVy
LT5wbGF0Zm9ybUxheWVyKCkpOwotICAgICAgICBBVlBsYXllckxheWVyKiBzb3VyY2VQbGF5ZXJM
YXllciA9IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4ocGxhdGZvcm1MYXllcigpKTsKKyAg
ICAgICAgQVZQbGF5ZXJMYXllciAqZGVzdGluYXRpb25QbGF5ZXJMYXllciA9IHN0YXRpY19jYXN0
PFBsYXRmb3JtQ0FMYXllckNvY29hICo+KG5ld0xheWVyLmdldCgpKS0+YXZQbGF5ZXJMYXllcigp
OworICAgICAgICBBVlBsYXllckxheWVyICpzb3VyY2VQbGF5ZXJMYXllciA9IGF2UGxheWVyTGF5
ZXIoKTsKKyAgICAgICAgQVNTRVJUKHNvdXJjZVBsYXllckxheWVyKTsKKwogICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICAgICAgW2Rl
c3RpbmF0aW9uUGxheWVyTGF5ZXIgc2V0UGxheWVyOltzb3VyY2VQbGF5ZXJMYXllciBwbGF5ZXJd
XTsKICAgICAgICAgfSk7CkBAIC0xMTEwLDMgKzExMTEsMjEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0LCB2
b2lkICgKIHsKICAgICB3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2so
bV9sYXllci5nZXQoKSwgY29udGV4dCwgYmxvY2spOwogfQorCitBVlBsYXllckxheWVyICpQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6YXZQbGF5ZXJMYXllcigpIGNvbnN0Cit7CisgICAgaWYgKGxheWVy
VHlwZSgpICE9IExheWVyVHlwZUFWUGxheWVyTGF5ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBpZiAoW3BsYXRmb3JtTGF5ZXIoKSBpc0tpbmRPZkNsYXNzOmdldEFWUGxheWVyTGF5ZXJD
bGFzcygpXSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4ocGxh
dGZvcm1MYXllcigpKTsKKworICAgIGlmIChbcGxhdGZvcm1MYXllcigpIGlzS2luZE9mQ2xhc3M6
b2JqY19nZXRDbGFzcygiV2ViVmlkZW9Db250YWluZXJMYXllciIpXSkgeworICAgICAgICBBU1NF
UlQoW3BsYXRmb3JtTGF5ZXIoKSBzdWJsYXllcnNdLmNvdW50ID09IDEpOworICAgICAgICBBU1NF
UlQoW1twbGF0Zm9ybUxheWVyKCkgc3VibGF5ZXJzXVswXSBpc0tpbmRPZkNsYXNzOmdldEFWUGxh
eWVyTGF5ZXJDbGFzcygpXSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBVlBsYXllckxh
eWVyICo+KFtwbGF0Zm9ybUxheWVyKCkgc3VibGF5ZXJzXVswXSk7CisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG5pbDsKK30K
</data>
<flag name="review"
          id="294672"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>