<?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>160700</bug_id>
          
          <creation_ts>2016-08-09 11:20:08 -0700</creation_ts>
          <short_desc>Implement &quot;dumb&quot; WK2 support for gamepads</short_desc>
          <delta_ts>2016-08-09 14:30:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>134076</blocked>
    
    <blocked>134675</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1218774</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-09 11:20:08 -0700</bug_when>
    <thetext>Implement &quot;dumb&quot; WK2 support for gamepads

The support is &quot;dumb&quot; because:
- It uses a timer to refresh gamepad values instead of syncing to the display as spec&apos;ed
- It sends gamepad updates to all tabs instead of just the focused tab

Those are tracked by https://bugs.webkit.org/show_bug.cgi?id=160673 and https://bugs.webkit.org/show_bug.cgi?id=160699, respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218776</commentid>
    <comment_count>1</comment_count>
      <attachid>285652</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-09 11:32:00 -0700</bug_when>
    <thetext>Created attachment 285652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218790</commentid>
    <comment_count>2</comment_count>
      <attachid>285658</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-09 12:05:05 -0700</bug_when>
    <thetext>Created attachment 285658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218791</commentid>
    <comment_count>3</comment_count>
      <attachid>285658</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-09 12:10:15 -0700</bug_when>
    <thetext>Comment on attachment 285658
Patch

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

r=me.  Verified functionality manually.  We really need some tests.

&gt; Source/WebKit2/Shared/Gamepad/GamepadData.h:50
&gt; +    String loggingString() const;

#if !LOG_DISABLED around this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218847</commentid>
    <comment_count>4</comment_count>
      <attachid>285658</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-09 14:30:33 -0700</bug_when>
    <thetext>Comment on attachment 285658
Patch

Clearing flags on attachment: 285658

Committed r204297: &lt;http://trac.webkit.org/changeset/204297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218848</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-09 14:30:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285652</attachid>
            <date>2016-08-09 11:32:00 -0700</date>
            <delta_ts>2016-08-09 12:05:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160700-20160809113026.patch</filename>
            <type>text/plain</type>
            <size>40862</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGZkMGZmM2ZiNjEwNWFh
ZDNmMTgwY2M4MmQyMWU2NTJmY2JiYTZjMy4uMGY3ZmY5ZGQ3Yjc1ZDI5ZjU5ODdiOGQ4MjRmNWRh
Y2IyNmQzMzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE2LTA4LTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgImR1bWIi
IFdLMiBzdXBwb3J0IGZvciBnYW1lcGFkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MDcwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBnYW1lcGFkcyB3b3Jr
IGluIFdLMi4KKworICAgICAgICBUaGluZ3Mga25vd24gdG8gYmUgbWlzc2luZyB0byBtYWtlIHRo
aXMgbWVjaGFuaXNtIG1vcmUgInNtYXJ0IjoKKyAgICAgICAgICAtIFJlZnJlc2ggdmFsdWVzIGFs
b25nIHdpdGggZGlzcGxheSBzeW5jIGluc3RlYWQgb2Ygb24gYSA2MGh6IHRpbWVyIChidWcgMTYw
NjczKQorICAgICAgICAgIC0gT25seSBzZW5kIHVwZGF0ZWQgdmFsdWVzIHRvIHRoZSBjdXJyZW50
IGZvY3VzZWQgd2ViIHBhZ2UgKGJ1ZyAxNjA2OTkpCisKKyAgICAgICAgKiBTaGFyZWQvR2FtZXBh
ZC9HYW1lcGFkRGF0YS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
YW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAuCisgICAgICAgIChXZWJLaXQ6Okdh
bWVwYWREYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpHYW1lcGFkRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6R2FtZXBhZERhdGE6OmlzTnVsbCk6CisgICAgICAgIChXZWJL
aXQ6OkdhbWVwYWREYXRhOjpsb2dnaW5nU3RyaW5nKToKKyAgICAgICAgKiBTaGFyZWQvR2FtZXBh
ZC9HYW1lcGFkRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dh
bWVwYWQvV2ViR2FtZXBhZC5oLgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBh
ZC9VSUdhbWVwYWQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2Ft
ZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwLgorICAgICAgICAoV2ViS2l0OjpVSUdh
bWVwYWQ6OlVJR2FtZXBhZCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZDo6dXBkYXRlRnJv
bVBsYXRmb3JtR2FtZXBhZCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZDo6Z2FtZXBhZERh
dGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5oLgorICAgICAg
ICAoV2ViS2l0OjpVSUdhbWVwYWQ6OmluZGV4KToKKyAgICAgICAgCisgICAgICAgICogVUlQcm9j
ZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVSUdh
bWVwYWRQcm92aWRlcjo6VUlHYW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpVSUdh
bWVwYWRQcm92aWRlcjo6dXBkYXRlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2Ft
ZXBhZFByb3ZpZGVyOjpzdGFydE9yU3RvcFN5bmNoaW5nR2FtZXBhZFN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25u
ZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1l
cGFkSW5wdXRBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpw
cm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1l
cGFkUHJvdmlkZXI6OnByb2Nlc3NQb29sU3RvcHBlZFVzaW5nR2FtZXBhZHMpOgorICAgICAgICAo
V2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkcyk6CisgICAgICAgIAorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpnYW1lcGFkQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OmdhbWVwYWREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6Z2FtZXBhZEFjdGl2aXR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaDoKKyAgICAgICAgCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWQ6OldlYkdhbWVwYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHYW1lcGFkOjpheGlzVmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Ft
ZXBhZDo6YnV0dG9uVmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZDo6dXBkYXRl
VmFsdWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5oOgorICAg
ICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkRGlzY29ubmVj
dGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQWN0aXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBh
ZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaDoK
KyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6Z2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmdhbWVwYWREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpnYW1lcGFkQWN0aXZpdHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAx
Ni0wOC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
cmVzc2luZyBsYXRlIHJldmlldyBmZWVkYmFjayBpbiBidWcgMTYwNjA1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZDg4OGEy
ZDllY2MyNzg1OThkODExNDc4MGJjYzVkYWU0YjQ0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcApAQCAtMCwwICsxLDc4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWREYXRh
LmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordm9pZCBHYW1lcGFkRGF0YTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgaW5kZXggPDwgYXhpc1ZhbHVlcyA8PCBidXR0
b25WYWx1ZXM7Cit9CisKK2Jvb2wgR2FtZXBhZERhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgR2FtZXBhZERhdGEmIGRhdGEpCit7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLmluZGV4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhLmF4aXNWYWx1ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuYnV0dG9uVmFsdWVzKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR2FtZXBhZERhdGE6OmlzTnVs
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpbmRleCAmJiBheGlzVmFsdWVzLmlzRW1wdHkoKSAm
JiBidXR0b25WYWx1ZXMuaXNFbXB0eSgpOworfQorCitTdHJpbmcgR2FtZXBhZERhdGE6OmxvZ2dp
bmdTdHJpbmcoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoU3RyaW5nOjpudW1iZXIoYXhpc1ZhbHVlcy5zaXplKCkp
LCAiIGF4ZXMsICIsIFN0cmluZzo6bnVtYmVyKGJ1dHRvblZhbHVlcy5zaXplKCkpLCAiIGJ1dHRv
bnNcbiIpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXhpc1ZhbHVlcy5zaXplKCk7
ICsraSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiIEF4aXMgIiwgU3RyaW5n
OjpudW1iZXIoaSksICI6ICIsIFN0cmluZzo6bnVtYmVyKGF4aXNWYWx1ZXNbaV0pKSk7CisKKyAg
ICBidWlsZGVyLmFwcGVuZCgiXG4iKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1dHRv
blZhbHVlcy5zaXplKCk7ICsraSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygi
IEJ1dHRvbiAiLCBTdHJpbmc6Om51bWJlcihpKSwgIjogIiwgU3RyaW5nOjpudW1iZXIoYnV0dG9u
VmFsdWVzW2ldKSkpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYjMwM2Jk
NWVjNTU4NjBjZTIwNmVjODRlYzk1OWZiZmU5ZDNmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5oCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFyZ3VtZW50RW5j
b2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBHYW1lcGFkRGF0YSB7Cisg
ICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBHYW1lcGFkRGF0YSYpOworCisgICAg
Ym9vbCBpc051bGwoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGluZGV4OworICAgIFZlY3Rvcjxk
b3VibGU+IGF4aXNWYWx1ZXM7CisgICAgVmVjdG9yPGRvdWJsZT4gYnV0dG9uVmFsdWVzOworCisg
ICAgU3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODBkODY4Y2Y4MjFiYzAz
ODgxY2NhM2M0YjA2MDYxYzI3YzUxOTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVJR2FtZXBhZC5oIgorCisj
aWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1lcGFkRGF0YS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1HYW1lcGFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworVUlHYW1lcGFkOjpVSUdhbWVwYWQoV2ViQ29yZTo6UGxh
dGZvcm1HYW1lcGFkJiBwbGF0Zm9ybUdhbWVwYWQpCisgICAgOiBtX2luZGV4KHBsYXRmb3JtR2Ft
ZXBhZC5pbmRleCgpKQoreworICAgIG1fYXhpc1ZhbHVlcy5yZXNpemUocGxhdGZvcm1HYW1lcGFk
LmF4aXNWYWx1ZXMoKS5zaXplKCkpOworICAgIG1fYnV0dG9uVmFsdWVzLnJlc2l6ZShwbGF0Zm9y
bUdhbWVwYWQuYnV0dG9uVmFsdWVzKCkuc2l6ZSgpKTsKKworICAgIHVwZGF0ZUZyb21QbGF0Zm9y
bUdhbWVwYWQocGxhdGZvcm1HYW1lcGFkKTsKK30KKwordm9pZCBVSUdhbWVwYWQ6OnVwZGF0ZUZy
b21QbGF0Zm9ybUdhbWVwYWQoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkJiBwbGF0Zm9ybUdhbWVw
YWQpCit7CisgICAgQVNTRVJUKG1faW5kZXggPT0gcGxhdGZvcm1HYW1lcGFkLmluZGV4KCkpOwor
ICAgIEFTU0VSVChtX2F4aXNWYWx1ZXMuc2l6ZSgpID09IHBsYXRmb3JtR2FtZXBhZC5heGlzVmFs
dWVzKCkuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9idXR0b25WYWx1ZXMuc2l6ZSgpID09IHBsYXRm
b3JtR2FtZXBhZC5idXR0b25WYWx1ZXMoKS5zaXplKCkpOworCisgICAgbV9heGlzVmFsdWVzID0g
cGxhdGZvcm1HYW1lcGFkLmF4aXNWYWx1ZXMoKTsKKyAgICBtX2J1dHRvblZhbHVlcyA9IHBsYXRm
b3JtR2FtZXBhZC5idXR0b25WYWx1ZXMoKTsKK30KKworR2FtZXBhZERhdGEgVUlHYW1lcGFkOjpn
YW1lcGFkRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgbV9pbmRleCwgbV9heGlzVmFsdWVz
LCBtX2J1dHRvblZhbHVlcyB9OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2FmMTg4NjVkYzgzODM2MTU4NjhhMjAyYTZiN2M3YjBjNWFlNWQxOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZC5oCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1F
UEFEKQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBQbGF0Zm9ybUdhbWVwYWQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3Qg
R2FtZXBhZERhdGE7CisKK2NsYXNzIFVJR2FtZXBhZCB7CitwdWJsaWM6CisgICAgVUlHYW1lcGFk
KFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCYpOworCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBHYW1lcGFkRGF0YSBnYW1lcGFkRGF0YSgpIGNv
bnN0OworCisgICAgdm9pZCB1cGRhdGVGcm9tUGxhdGZvcm1HYW1lcGFkKFdlYkNvcmU6OlBsYXRm
b3JtR2FtZXBhZCYpOworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgVmVj
dG9yPGRvdWJsZT4gbV9heGlzVmFsdWVzOworICAgIFZlY3Rvcjxkb3VibGU+IG1fYnV0dG9uVmFs
dWVzOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5k
ZXggOGNhZDU1MjRlZDQxZGVlYmM5YmM3NmI3NDdhMGY3NTQ5MTMwOWE4Mi4uZDQxODFjN2IzNTBj
ZTA3YzU1OTEzNTllNGYyNmYzMDYyZTRhOTg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMjgsNiArMjgs
OSBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKKyNpbmNsdWRlICJHYW1lcGFkRGF0YS5oIgor
I2luY2x1ZGUgIlVJR2FtZXBhZC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KIApAQCAtMzUsNiArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyBjb25zdCBkb3VibGUgZ2FtZXBhZFVwZGF0
ZUludGVydmFsID0gMSAvIDYwLjA7CisKIFVJR2FtZXBhZFByb3ZpZGVyJiBVSUdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VUlHYW1lcGFk
UHJvdmlkZXI+IHNoYXJlZFByb3ZpZGVyOwpAQCAtNDIsNiArNDcsNyBAQCBVSUdhbWVwYWRQcm92
aWRlciYgVUlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCiB9CiAKIFVJR2FtZXBhZFByb3Zp
ZGVyOjpVSUdhbWVwYWRQcm92aWRlcigpCisgICAgOiBtX3RpbWVyKCp0aGlzLCAmVUlHYW1lcGFk
UHJvdmlkZXI6OnVwZGF0ZVRpbWVyRmlyZWQpCiB7CiB9CiAKQEAgLTUxLDE2ICs1Nyw4NiBAQCBV
SUdhbWVwYWRQcm92aWRlcjo6flVJR2FtZXBhZFByb3ZpZGVyKCkKICAgICAgICAgcGxhdGZvcm1T
dG9wTW9uaXRvcmluZ0dhbWVwYWRzKCk7CiB9CiAKLXZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBs
YXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKQordm9pZCBVSUdhbWVwYWRQ
cm92aWRlcjo6dXBkYXRlVGltZXJGaXJlZCgpCiB7CisgICAgaWYgKCFtX2hhZEFjdGl2aXR5U2lu
Y2VMYXN0U3luY2gpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxHYW1lcGFkRGF0YT4g
Z2FtZXBhZERhdGFzOworICAgIGdhbWVwYWREYXRhcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
Z2FtZXBhZHMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgZ2FtZXBhZCA6IG1fZ2FtZXBhZHMp
IHsKKyAgICAgICAgaWYgKGdhbWVwYWQpCisgICAgICAgICAgICBnYW1lcGFkRGF0YXMudW5jaGVj
a2VkQXBwZW5kKGdhbWVwYWQtPmdhbWVwYWREYXRhKCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBnYW1lcGFkRGF0YXMudW5jaGVja2VkQXBwZW5kKHsgfSk7CisgICAgfQorCisgICAgLy8g
RklYTUUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2OTkpCisg
ICAgLy8gT25seSBzZW5kIHVwZGF0ZXMgdG8gdGhlIHByb2Nlc3MgcG9vbCB0aGF0IGNvbnRhaW5z
IHRoZSBjdXJyZW50bHkgZm9jdXNlZCB3ZWIgcGFnZS4KKyAgICBmb3IgKGF1dG8mIHBvb2wgOiBt
X3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMpCisgICAgICAgIHBvb2wtPmdhbWVwYWRBY3Rpdml0
eShnYW1lcGFkRGF0YXMpOworCisgICAgbV9oYWRBY3Rpdml0eVNpbmNlTGFzdFN5bmNoID0gZmFs
c2U7CiB9CiAKLXZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5l
Y3RlZChQbGF0Zm9ybUdhbWVwYWQmKQordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6c3RhcnRPclN0
b3BTeW5jaGluZ0dhbWVwYWRTdGF0ZSgpCiB7CisgICAgLy8gRklYTUUgKGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2OTkpCisgICAgLy8gT25seSBzdGFydCBzeW5j
aGluZyB1cGRhdGVzIGlmIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBXS1dlYlZpZXcgaXMgYWxzbyBs
aXN0ZW5pbmcgZm9yIGdhbWVwYWRzLgorCisgICAgLy8gRklYTUUgKGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2NzMpCisgICAgLy8gSW5zdGVhZCBvZiByZWZyZXNo
aW5nIGdhbWVwYWQgZGF0YSBvbiBhIDYwaHogdGltZXIsIGFjdHVhbGx5IHN5bmMgd2l0aCB0aGUg
ZGlzcGxheS4KKyAgICBpZiAobV9nYW1lcGFkcy5pc0VtcHR5KCkgfHwgbV9wcm9jZXNzUG9vbHNV
c2luZ0dhbWVwYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV90aW1lci5zdG9wKCk7CisgICAgZWxz
ZQorICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKGdhbWVwYWRVcGRhdGVJbnRlcnZhbCk7
Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQ
bGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQpCit7CisgICAgaWYgKG1fZ2FtZXBhZHMuc2l6ZSgpIDw9
IGdhbWVwYWQuaW5kZXgoKSkKKyAgICAgICAgbV9nYW1lcGFkcy5yZXNpemUoZ2FtZXBhZC5pbmRl
eCgpICsgMSk7CisKKyAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7Cisg
ICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVw
YWQ+KGdhbWVwYWQpOworCisgICAgbV9oYWRBY3Rpdml0eVNpbmNlTGFzdFN5bmNoID0gdHJ1ZTsK
KyAgICBzdGFydE9yU3RvcFN5bmNoaW5nR2FtZXBhZFN0YXRlKCk7CisKKyAgICBmb3IgKGF1dG8m
IHBvb2wgOiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMpCisgICAgICAgIHBvb2wtPmdhbWVw
YWRDb25uZWN0ZWQoKm1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7Cit9CisKK3ZvaWQgVUlH
YW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVw
YWQmIGdhbWVwYWQpCit7CisgICAgQVNTRVJUKGdhbWVwYWQuaW5kZXgoKSA8IG1fZ2FtZXBhZHMu
c2l6ZSgpKTsKKyAgICBBU1NFUlQobV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldKTsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxVSUdhbWVwYWQ+IGRpc2Nvbm5lY3RlZEdhbWVwYWQgPSBXVEZNb3Zl
KG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7CisKKyAgICBzdGFydE9yU3RvcFN5bmNoaW5n
R2FtZXBhZFN0YXRlKCk7CisKKyAgICBmb3IgKGF1dG8mIHBvb2wgOiBtX3Byb2Nlc3NQb29sc1Vz
aW5nR2FtZXBhZHMpCisgICAgICAgIHBvb2wtPmdhbWVwYWREaXNjb25uZWN0ZWQoKmRpc2Nvbm5l
Y3RlZEdhbWVwYWQpOwogfQogCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVw
YWRJbnB1dEFjdGl2aXR5KCkKIHsKKyAgICBhdXRvIHBsYXRmb3JtR2FtZXBhZHMgPSB0aGlzLT5w
bGF0Zm9ybUdhbWVwYWRzKCk7CisgICAgQVNTRVJUKHBsYXRmb3JtR2FtZXBhZHMuc2l6ZSgpID09
IG1fZ2FtZXBhZHMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGxhdGZv
cm1HYW1lcGFkcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIXBsYXRmb3JtR2FtZXBhZHNb
aV0pIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9nYW1lcGFkc1tpXSk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChtX2dhbWVwYWRzW2ldKTsKKyAg
ICAgICAgbV9nYW1lcGFkc1tpXS0+dXBkYXRlRnJvbVBsYXRmb3JtR2FtZXBhZCgqcGxhdGZvcm1H
YW1lcGFkc1tpXSk7CisgICAgfQorCisgICAgbV9oYWRBY3Rpdml0eVNpbmNlTGFzdFN5bmNoID0g
dHJ1ZTsKIH0KIAogdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vzc1Bvb2xTdGFydGVkVXNp
bmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkKQEAgLTcyLDYgKzE0OCw4IEBAIHZvaWQg
VUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQb29sU3RhcnRlZFVzaW5nR2FtZXBhZHMoV2ViUHJv
Y2Vzc1Bvb2wmIHBvb2wpCiAKICAgICBpZiAoIXdlcmVBbnlQcm9jZXNzUG9vbHNVc2luZ0dhbWVw
YWRzKQogICAgICAgICBwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCk7CisKKyAgICBz
dGFydE9yU3RvcFN5bmNoaW5nR2FtZXBhZFN0YXRlKCk7CiB9CiAKIHZvaWQgVUlHYW1lcGFkUHJv
dmlkZXI6OnByb2Nlc3NQb29sU3RvcHBlZFVzaW5nR2FtZXBhZHMoV2ViUHJvY2Vzc1Bvb2wmIHBv
b2wpCkBAIC04Myw5ICsxNjEsMTIgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vzc1Bv
b2xTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkKIAogICAgIGlmICh3
ZXJlQW55UHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcyAmJiBtX3Byb2Nlc3NQb29sc1VzaW5nR2Ft
ZXBhZHMuaXNFbXB0eSgpKQogICAgICAgICBwbGF0Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMo
KTsKKworICAgIHN0YXJ0T3JTdG9wU3luY2hpbmdHYW1lcGFkU3RhdGUoKTsKIH0KIAogI2lmICFQ
TEFURk9STShNQUMpCisKIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25p
dG9yaW5nR2FtZXBhZHMoKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIG90aGVyIHBs
YXRmb3JtcwpAQCAtOTUsNiArMTc2LDE1IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtU3RvcE1vbml0b3JpbmdHYW1lcGFkcygpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBm
b3Igb3RoZXIgcGxhdGZvcm1zCiB9CisKK2NvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYg
VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZHMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4+IGVtcHR5R2FtZXBhZHM7CisgICAg
cmV0dXJuIGVtcHR5R2FtZXBhZHM7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBvdGhl
ciBwbGF0Zm9ybXMKK30KKwogI2VuZGlmIC8vICFQTEFURk9STShNQUMpCiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCmlu
ZGV4IDA2OWVjMTRhMjQwOGQ0YjRiM2JhYjA5ZTJjY2Y3YzZhN2M1OGEzODYuLjBlOGJmZmE4NWM1
ZWYwYTg3ZmQ0MzIyMTgzY2E5NmI1MmE4YmJiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuaApAQCAtMjgsMTIgKzI4LDE2
IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0dhbWVwYWRQcm92
aWRlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFVJR2FtZXBhZDsKIGNs
YXNzIFdlYlByb2Nlc3NQb29sOworc3RydWN0IEdhbWVwYWREYXRhOwogCiBjbGFzcyBVSUdhbWVw
YWRQcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpHYW1lcGFkUHJvdmlkZXJDbGllbnQgewogcHVi
bGljOgpAQCAtNDIsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm9jZXNzUG9vbFN0YXJ0
ZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQb29sJik7CiAgICAgdm9pZCBwcm9jZXNzUG9vbFN0
b3BwZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQb29sJik7CiAKKyAgICBWZWN0b3I8R2FtZXBh
ZERhdGE+IGdhbWVwYWRTdGF0ZXMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8VUlHYW1lcGFkUHJvdmlkZXI+OwogICAgIFVJR2FtZXBhZFByb3ZpZGVyKCk7
CkBAIC00OSwxMiArNTUsMjEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1TdGFydE1v
bml0b3JpbmdHYW1lcGFkcygpOwogICAgIHZvaWQgcGxhdGZvcm1TdG9wTW9uaXRvcmluZ0dhbWVw
YWRzKCk7CisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCo+JiBwbGF0
Zm9ybUdhbWVwYWRzKCk7CiAKICAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChXZWJD
b3JlOjpQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKICAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZERp
c2Nvbm5lY3RlZChXZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKICAgICB2b2lkIHBs
YXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKSBmaW5hbDsKIAorICAgIHZvaWQgc3RhcnRPclN0
b3BTeW5jaGluZ0dhbWVwYWRTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwor
CiAgICAgSGFzaFNldDxXZWJQcm9jZXNzUG9vbCo+IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFk
czsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VUlHYW1lcGFkPj4gbV9nYW1lcGFkczsK
KworICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZXI7CisgICAgYm9vbCBtX2hhZEFjdGl2aXR5U2lu
Y2VMYXN0U3luY2ggeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAK
aW5kZXggMTU4MTVhZDRjMTc0MWE5OGU2N2E1YTYxYTk0YmZjYzdmMDBjOTA2Ny4uNzllYTMzY2Q0
MTQ2ZDk0ZmMyNjJkYTZlZmM1MjM3MjMyZGYzY2Y2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQu
Y3BwCkBAIC00Niw2ICs0NiwxMSBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0
b3BNb25pdG9yaW5nR2FtZXBhZHMoKQogICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CiB9CiAKK2NvbnN0IFZlY3RvcjxQbGF0
Zm9ybUdhbWVwYWQqPiYgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZHMoKQorewor
ICAgIHJldHVybiBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnBsYXRmb3JtR2FtZXBh
ZHMoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmOWYyNGVhMTg1ZjgzMGU1MjFl
YmFhNzVkMGE1NzIwZDA4YTI2N2EwLi5kN2E3OTdkNDU4Y2Q0ZjJmZDQxMDk2ZGQ5MjE0YjY4ZWEy
NThlMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJHYW1lcGFkRGF0YS5oIgogI2luY2x1ZGUgIkxvZ0luaXRp
YWxpemF0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC00Miw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRh
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKKyNpbmNsdWRlICJVSUdhbWVwYWQuaCIKICNp
bmNsdWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgogI2luY2x1ZGUgIldLQ29udGV4dFByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgpAQCAtMTI4MCw2ICsxMjgyLDI2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgICAgIFVJR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0
b24oKS5wcm9jZXNzUG9vbFN0b3BwZWRVc2luZ0dhbWVwYWRzKCp0aGlzKTsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6Z2FtZXBhZENvbm5lY3RlZChjb25zdCBVSUdhbWVwYWQmIGdhbWVwYWQp
Cit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRzKQor
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHYW1lcGFkQ29ubmVj
dGVkKGdhbWVwYWQuZ2FtZXBhZERhdGEoKSksIDApOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpnYW1lcGFkRGlzY29ubmVjdGVkKGNvbnN0IFVJR2FtZXBhZCYgZ2FtZXBhZCkKK3sKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMpCisgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdhbWVwYWREaXNjb25uZWN0ZWQoZ2Ft
ZXBhZC5pbmRleCgpKSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdhbWVwYWRBY3Rp
dml0eShjb25zdCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMpCit7CisgICAgLy8g
RklYTUUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2OTkpCisg
ICAgLy8gT25seSBzZW5kIHVwZGF0ZXMgdG8gdGhlIHByb2Nlc3MgdGhhdCBjb250YWlucyB0aGUg
Y3VycmVudGx5IGZvY3VzZWQgd2ViIHBhZ2UuCisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9w
cm9jZXNzZXNVc2luZ0dhbWVwYWRzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpHYW1lcGFkQWN0aXZpdHkoZ2FtZXBhZERhdGFzKSwgMCk7Cit9CisKICNlbmRp
ZiAvLyBFTkFCTEUoR0FNRVBBRCkKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2FyYmFnZUNvbGxl
Y3RKYXZhU2NyaXB0T2JqZWN0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IGNmZWYxZjY5MDc2ODhmMThmMjcxNDZiYTMxOGUzNTYwZWIzZGFiMjEuLmRk
ZDg2OWRhNmRiMmQ3OTlmZjIyODJjZGFhM2Q1ZDIzODQwMTYwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03OSwxMSArNzksMTMgQEAgY2xhc3MgUGFn
ZUNvbmZpZ3VyYXRpb247CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWRQcm94
eTsKK2NsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3Mg
V2ViQ29udGV4dFN1cHBsZW1lbnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBXZWJQ
YWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CitzdHJ1Y3QgR2FtZXBhZERhdGE7CiBzdHJ1
Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgU3RhdGlzdGljc0Rh
dGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKQEAgLTM2OSw2ICszNzEs
MTIgQEAgcHVibGljOgogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSB7
IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KIAorI2lmIEVOQUJMRShHQU1FUEFEKQor
ICAgIHZvaWQgZ2FtZXBhZENvbm5lY3RlZChjb25zdCBVSUdhbWVwYWQmKTsKKyAgICB2b2lkIGdh
bWVwYWREaXNjb25uZWN0ZWQoY29uc3QgVUlHYW1lcGFkJik7CisgICAgdm9pZCBnYW1lcGFkQWN0
aXZpdHkoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM0MWY0MWVmMjgwNmM3NGM1ZGRh
ZmVlNTUyNWY3ZGRmYzk2NDBlODEuLmE1YWI3MjY4NTkyNzljZTM0OTM3Nzk3MmU5MjA5OWQ4MTIz
ZDM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTk0MSw2ICs5NDEsMTIgQEAKIAkJNTE1QkUxQTcxRDU1MjkzNDAwREQ3QzY4
IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE2MUQ1NTI5MzAwMEREN0M2OCAvKiBVSUdhbWVwYWRQ
cm92aWRlckhJRC5jcHAgKi87IH07CiAJCTUxNUJFMUE4MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdh
bWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTVCRTFBNDFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3Bw
ICovOyB9OwogCQk1MTVCRTFBOTFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE1
MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oICovOyB9OworCQk1MTVCRTFB
QTFENTU1QTlCMDBERDdDNjggLyogV2ViR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE5RjFENTUwQUIwMDBERDdDNjggLyogV2Vi
R2FtZXBhZC5jcHAgKi87IH07CisJCTUxNUJFMUFCMUQ1NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1l
cGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVC
RTFBMDFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5oICovOyB9OworCQk1MTVCRTFCMjFE
NTkwMkREMDBERDdDNjggLyogR2FtZXBhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQjExRDU5MDJCNjAwREQ3QzY4IC8qIEdhbWVw
YWREYXRhLmNwcCAqLzsgfTsKKwkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVwYWRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVC
RTFCMDFENTkwMDY5MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCAqLzsgfTsKKwkJNTE1QkUxQjQx
RDU5MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBQzFENTU1QzUxMDBERDdDNjggLyogVUlHYW1l
cGFkLmNwcCAqLzsgfTsKKwkJNTE1QkUxQjUxRDU5MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQUQx
RDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovOyB9OwogCQk1MTVFNzcyNzE4M0RENkY2
MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVl
c3QuY3BwICovOyB9OwogCQk1MTVFNzcyODE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcy
NjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi87IH07CiAJCTUxNUU3NzJCMTg0
MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjkxODQw
MDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi87
IH07CkBAIC0yOTg3LDYgKzI5OTMsMTAgQEAKIAkJNTE1QkUxQTQxRDU1MjkyODAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVJR2FtZXBhZFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMUE2MUQ1NTI5MzAwMEREN0M2OCAvKiBVSUdhbWVwYWRQ
cm92aWRlckhJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVSUdh
bWVwYWRQcm92aWRlckhJRC5jcHA7IHBhdGggPSBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1l
cGFkUHJvdmlkZXJISUQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTUxNUJF
MUFDMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVUlHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVSUdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE1QkUxQjAxRDU5MDA2OTAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVwYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxNUJFMUIxMUQ1OTAyQjYwMEREN0M2OCAvKiBHYW1lcGFkRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHYW1lcGFkRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAv
KiBBc3luY1JlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXN5bmNSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1RTc3MjYx
ODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBc3luY1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE1RTc3MjkxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDQ3MSw2ICs0NDgxLDcgQEAKIAkJCQk1MUUzNTFDMjE4MEYyQzg1MDBFNTNCRTkgLyogRGF0
YWJhc2VzICovLAogCQkJCUJDODI4MzY4MTZCMzU4NzkwMEEyNzhGRSAvKiBFbnRyeVBvaW50VXRp
bGl0aWVzICovLAogCQkJCUUxNzA4NzcyMTZENkNGRUMwMEY5OTIyNiAvKiBGaWxlQVBJICovLAor
CQkJCTUxNUJFMUFFMUQ1OTAwMzQwMEREN0M2OCAvKiBHYW1lcGFkICovLAogCQkJCTJEQTk0NDk2
MTg4NEU0REEwMEVEODZEQiAvKiBpb3MgKi8sCiAJCQkJQkMxMTFCNUExMTJGNjI4MjAwMzM3QkFC
IC8qIG1hYyAqLywKIAkJCQkxQUFFMDU4QzEyNzlEQ0Q0MDA4NTI0MTggLyogUGx1Z2lucyAqLywK
QEAgLTU0OTYsNiArNTUwNyw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTUxNUJFMUExMUQ1NTIzQjMwMEREN0M2OCAvKiBtYWMgKi8sCisJCQkJNTE1QkUxQUMx
RDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5jcHAgKi8sCisJCQkJNTE1QkUxQUQxRDU1NUM1
MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovLAogCQkJCTUxNUJFMUE0MUQ1NTI5MjgwMEREN0M2
OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJCQkJNTE1QkUxQTUxRDU1MjkyODAwREQ3
QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmggKi8sCiAJCQkpOwpAQCAtNTUxMSw2ICs1NTI0LDE1
IEBACiAJCQlwYXRoID0gVUlQcm9jZXNzL0dhbWVwYWQvbWFjOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKKwkJNTE1QkUxQUUxRDU5MDAzNDAwREQ3QzY4IC8qIEdhbWVwYWQgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxNUJFMUIxMUQ1
OTAyQjYwMEREN0M2OCAvKiBHYW1lcGFkRGF0YS5jcHAgKi8sCisJCQkJNTE1QkUxQjAxRDU5MDA2
OTAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggKi8sCisJCQkpOworCQkJcGF0aCA9IEdhbWVwYWQ7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1MTYzMTk5MzE2Mjg5ODBFMDBF
MjJGMDAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTc0MjIsNiArNzQ0NCw3IEBACiAJCQkJMUFFMjg2NzgxQzdFNzY1MTAwNjlBQzRGIC8qIF9X
S1dlYnNpdGVEYXRhU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2ODAxQzdGOTJDMDAw
NjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUZCNEM3MjFBREYxNTVEMDBCMzMzMzkgLyogX1dLV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOTNCNzFBRUIwOEVBMDAxNTBFOUMgLyogX1dLV2Vic2l0
ZURhdGFTdG9yZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE1REM3MjE5MUQ4MkRB
MDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTlERDNDMDFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtNzc0OCw2ICs3NzcxLDcgQEAKIAkJCQlFMTc5MDg5
MTE2OUJBQTgyMDA2OTA0QzcgLyogU2VjSXRlbVNoaW1NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTE4RTY5MEMxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNUJFMUI1MUQ1OTE3RkYwMEREN0M2
OCAvKiBVSUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAw
NjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVB
MTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzg4OCw2ICs3OTEyLDcgQEAKIAkJCQkyRDNFRjQ0MzE5MTc2NDYzMDAwMzQxODQg
LyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDk4
NTRFRDEyQkM0RTE4MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGNjlGOUExMTc2Q0VENjAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxNUJFMUFCMUQ1NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1l
cGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0NDQzhGQjFBNUY1MEZEMDA4RkIwREEgLyogV2Vi
TmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEyRUM0OTE0ODk5N0MyMDA4
MTBENzEgLyogV2ViTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTA5OTlDNzE0
NkM5RTNEMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTkxNzUsNiArOTIwMCw3IEBACiAJCQkJMUEwNDNDRUIxMjRGRTM4RjAwRkZCRkI1IC8qIFBs
dWdpblByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwRUM3
NUYxMjRCQzdCMjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTJEOTBCQjEyODFDOTMxMDAxRUI5NjIgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1QkUxQjQxRDU5MTdGRjAwREQ3QzY4IC8qIFVJR2Ft
ZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTA0M0I1RDEyNEQ1RTlEMDBGRkJGQjUgLyog
UGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBMDQzREMyMTI0RkY4NzUwMEZGQkZCNSAvKiBQbHVnaW5Qcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTJEOTIyMTEyODFEQzFCMDAxRUI5NjIgLyogUGx1Z2luUHJveHlNYWMubW0gaW4g
U291cmNlcyAqLywKQEAgLTkxOTMsNiArOTIxOSw3IEBACiAJCQkJMkQ0N0I1NkMxODEwNzE0RTAw
M0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkRERjczMTYxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVj
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUU5MTY0QjNBODgwMDI5MEQ2MiAvKiBS
ZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1QkUxQjIxRDU5
MDJERDAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMjlF
Q0QxMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFERDE2NDg1OTg0MDAyOTBENjIgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFFMTE2
NDg2NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBT
b3VyY2VzICovLApAQCAtOTQ4OCw2ICs5NTE1LDcgQEAKIAkJCQk3QzM2MUQ3ODE5MjgwM0JEMDAz
NkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTU3MzlCQkUxQjQyMDQ2NjAwRDI1OEMxIC8qIFdlYlVzZXJN
ZWRpYUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkQ1QTFCNzFDNTc0QTAyMDBERTM0
QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUx
NUJFMUFBMUQ1NTVBOUIwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTNGNDE4RUY5MTg4N0JEOTcwMDI3OTVGRCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyRDVBMUIxMUM1NzQ5NjIw
MERFMzRBMyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gaW4gU291cmNlcyAq
LywKIAkJCQkzRjQxOEVGQjE4ODdCRDk3MDAyNzk1RkQgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwCmluZGV4IDlkMjcwYzU0
MzU2YWQ5ZDE0MWFjYjY2ZmMxNDVjNGNjMDQzNTJhYjcuLmEwMWVjMjQzZGU4NDdlOGQxZTUzMzdj
NTNmOGMyMjQ0MjZlN2JjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
R2FtZXBhZC9XZWJHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dh
bWVwYWQvV2ViR2FtZXBhZC5jcHAKQEAgLTI4LDggKzI4LDQwIEBACiAKICNpZiBFTkFCTEUoR0FN
RVBBRCkKIAorI2luY2x1ZGUgIkdhbWVwYWREYXRhLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitXZWJHYW1lcGFkOjpXZWJHYW1lcGFkKGNvbnN0IEdhbWVwYWREYXRhJiBnYW1lcGFkRGF0YSkK
KyAgICA6IFBsYXRmb3JtR2FtZXBhZChnYW1lcGFkRGF0YS5pbmRleCkKK3sKKyAgICBtX2F4aXNW
YWx1ZXMucmVzaXplKGdhbWVwYWREYXRhLmF4aXNWYWx1ZXMuc2l6ZSgpKTsKKyAgICBtX2J1dHRv
blZhbHVlcy5yZXNpemUoZ2FtZXBhZERhdGEuYnV0dG9uVmFsdWVzLnNpemUoKSk7CisKKyAgICB1
cGRhdGVWYWx1ZXMoZ2FtZXBhZERhdGEpOworfQorCitjb25zdCBWZWN0b3I8ZG91YmxlPiYgV2Vi
R2FtZXBhZDo6YXhpc1ZhbHVlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXhpc1ZhbHVlczsK
K30KKworY29uc3QgVmVjdG9yPGRvdWJsZT4mIFdlYkdhbWVwYWQ6OmJ1dHRvblZhbHVlcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOworfQorCit2b2lkIFdlYkdhbWVwYWQ6
OnVwZGF0ZVZhbHVlcyhjb25zdCBHYW1lcGFkRGF0YSYgZ2FtZXBhZERhdGEpCit7CisgICAgQVNT
RVJUKCFnYW1lcGFkRGF0YS5pc051bGwoKSk7CisgICAgQVNTRVJUKGdhbWVwYWREYXRhLmluZGV4
ID09IGluZGV4KCkpOworICAgIEFTU0VSVChtX2F4aXNWYWx1ZXMuc2l6ZSgpID09IGdhbWVwYWRE
YXRhLmF4aXNWYWx1ZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9idXR0b25WYWx1ZXMuc2l6ZSgp
ID09IGdhbWVwYWREYXRhLmJ1dHRvblZhbHVlcy5zaXplKCkpOworCisgICAgbV9heGlzVmFsdWVz
ID0gZ2FtZXBhZERhdGEuYXhpc1ZhbHVlczsKKyAgICBtX2J1dHRvblZhbHVlcyA9IGdhbWVwYWRE
YXRhLmJ1dHRvblZhbHVlczsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuaAppbmRleCA1
NDk5MDg2MjExYjRlMjZkODc2NmM4MmI1MDg4NWU5YzdiYmYyNWI4Li45MjY1NGQ3ZWJiMjBlMDgy
NmUzNzg2NWY5MDVmODYxOWRmNzZmYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvR2FtZXBhZC9XZWJHYW1lcGFkLmgKQEAgLTI3LDggKzI3LDI4IEBACiAKICNpZiBFTkFCTEUo
R0FNRVBBRCkKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1HYW1lcGFkLmg+CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjbGFzcyBTaGFyZWRNZW1vcnk7CisKK3N0cnVjdCBHYW1lcGFkRGF0
YTsKKworY2xhc3MgV2ViR2FtZXBhZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQg
eworcHVibGljOgorICAgIFdlYkdhbWVwYWQoY29uc3QgR2FtZXBhZERhdGEmKTsKKworICAgIGNv
bnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IG92ZXJyaWRlOworCisgICAg
dm9pZCB1cGRhdGVWYWx1ZXMoY29uc3QgR2FtZXBhZERhdGEmKTsKKworcHJpdmF0ZToKKyAgICBW
ZWN0b3I8ZG91YmxlPiBtX2F4aXNWYWx1ZXM7CisgICAgVmVjdG9yPGRvdWJsZT4gbV9idXR0b25W
YWx1ZXM7Cit9OworCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5j
cHAKaW5kZXggMmNlNTVhY2U0MThkZTE1N2Q4ZjBlNzNjZGI4YTUwMDUxNGVhZmYzZS4uNDE2MDM5
ZTlkNWZkYjBiYzE0MmFlZGQ3ZDE2NGVlYTVkZTQyZTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKQEAg
LTI4LDggKzI4LDExIEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAorI2luY2x1ZGUgIkdhbWVw
YWREYXRhLmgiCisjaW5jbHVkZSAiV2ViR2FtZXBhZC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9HYW1lcGFkUHJvdmlkZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw2ICs1Myw0NyBAQCBXZWJHYW1l
cGFkUHJvdmlkZXI6On5XZWJHYW1lcGFkUHJvdmlkZXIoKQogewogfQogCit2b2lkIFdlYkdhbWVw
YWRQcm92aWRlcjo6Z2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYgZ2FtZXBhZERh
dGEpCit7CisgICAgaWYgKG1fZ2FtZXBhZHMuc2l6ZSgpIDw9IGdhbWVwYWREYXRhLmluZGV4KSB7
CisgICAgICAgIG1fZ2FtZXBhZHMucmVzaXplKGdhbWVwYWREYXRhLmluZGV4ICsgMSk7CisgICAg
ICAgIG1fcmF3R2FtZXBhZHMucmVzaXplKGdhbWVwYWREYXRhLmluZGV4ICsgMSk7CisgICAgfQor
CisgICAgQVNTRVJUKCFtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4XSk7CisKKyAgICBtX2dh
bWVwYWRzW2dhbWVwYWREYXRhLmluZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBhZD4o
Z2FtZXBhZERhdGEpOworICAgIG1fcmF3R2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXhdID0gbV9n
YW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleF0uZ2V0KCk7CisKKyAgICBmb3IgKGF1dG8qIGNsaWVu
dCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQo
Km1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXhdKTsKK30KKworCit2b2lkIFdlYkdhbWVwYWRQ
cm92aWRlcjo6Z2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBBU1NF
UlQobV9nYW1lcGFkcy5zaXplKCkgPiBpbmRleCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R2FtZXBhZD4gZGlzY29ubmVjdGVkR2FtZXBhZCA9IFdURk1vdmUobV9nYW1lcGFkc1tpbmRleF0p
OworICAgIG1fcmF3R2FtZXBhZHNbaW5kZXhdID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byog
Y2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nv
bm5lY3RlZCgqZGlzY29ubmVjdGVkR2FtZXBhZCk7Cit9CisKK3ZvaWQgV2ViR2FtZXBhZFByb3Zp
ZGVyOjpnYW1lcGFkQWN0aXZpdHkoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYgZ2FtZXBhZERh
dGFzKQoreworICAgIEFTU0VSVChtX2dhbWVwYWRzLnNpemUoKSA9PSBnYW1lcGFkRGF0YXMuc2l6
ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9nYW1lcGFkcy5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAobV9nYW1lcGFkc1tpXSkKKyAgICAgICAgICAgIG1fZ2FtZXBhZHNb
aV0tPnVwZGF0ZVZhbHVlcyhnYW1lcGFkRGF0YXNbaV0pOworICAgIH0KKworICAgIGZvciAoYXV0
byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZElu
cHV0QWN0aXZpdHkoKTsKK30KKwogdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRv
cmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQogewogICAgIGJvb2wg
cHJvY2Vzc0hhZEdhbWVwYWRDbGllbnRzID0gIW1fY2xpZW50cy5pc0VtcHR5KCk7CkBAIC03NCw4
ICsxMTgsNyBAQCB2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFk
cyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKIAogY29uc3QgVmVjdG9yPFBsYXRmb3Jt
R2FtZXBhZCo+JiBXZWJHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZHMoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4+IGdhbWVwYWRz
OwotICAgIHJldHVybiBnYW1lcGFkczsKKyAgICByZXR1cm4gbV9yYXdHYW1lcGFkczsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVw
YWRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVw
YWRQcm92aWRlci5oCmluZGV4IGUyODM0MGRlZjRiOWVlNGY3NTFlMDZhMmU1MTdmMmZiZTUxODdk
ZDAuLmE1MzQ4M2Q2MjI4NTA1NmUzMmE3ZDdjMDAwMGI0YzY0OGU5NWY5NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVy
LmgKQEAgLTMzLDEwICszMywxOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU2hh
cmVkTWVtb3J5OworY2xhc3MgV2ViR2FtZXBhZDsKKworc3RydWN0IEdhbWVwYWREYXRhOworCiBj
bGFzcyBXZWJHYW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVy
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViR2FtZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsK
IAorICAgIHZvaWQgZ2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYpOworICAgIHZv
aWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CisgICAgdm9pZCBnYW1lcGFk
QWN0aXZpdHkoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYpOworCiBwcml2YXRlOgogICAgIGZy
aWVuZCBOZXZlckRlc3Ryb3llZDxXZWJHYW1lcGFkUHJvdmlkZXI+OwogICAgIFdlYkdhbWVwYWRQ
cm92aWRlcigpOwpAQCAtNDcsOCArNTYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbDsKIAog
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyQ2xpZW50Kj4gbV9jbGllbnRzOwor
CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJHYW1lcGFkPj4gbV9nYW1lcGFkczsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkKj4gbV9yYXdHYW1lcGFkczsKIH07CiAK
LX0KK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBiYTJjYjljM2MxZWMz
MWZmNDVhMDE1YjJjNTMxNThhZTI3NWY1NWM3Li43ZmVhYWUzOGU1ZDkxZTQ2ZWVhNGM2NzE3N2Zj
OGQwZDNkMWE3MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTEwMjksNiArMTAyOSwyNSBAQCB2b2lkIFdlYlByb2Nlc3M6Om1haW5UaHJlYWRQaW5nKCkK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygpLCAwKTsKIH0KIAorI2lmIEVOQUJMRShH
QU1FUEFEKQorCit2b2lkIFdlYlByb2Nlc3M6OmdhbWVwYWRDb25uZWN0ZWQoY29uc3QgR2FtZXBh
ZERhdGEmIGdhbWVwYWREYXRhKQoreworICAgIFdlYkdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkuZ2FtZXBhZENvbm5lY3RlZChnYW1lcGFkRGF0YSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6
Z2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBXZWJHYW1lcGFkUHJv
dmlkZXI6OnNpbmdsZXRvbigpLmdhbWVwYWREaXNjb25uZWN0ZWQoaW5kZXgpOworfQorCit2b2lk
IFdlYlByb2Nlc3M6OmdhbWVwYWRBY3Rpdml0eShjb25zdCBWZWN0b3I8R2FtZXBhZERhdGE+JiBn
YW1lcGFkRGF0YXMpCit7CisgICAgV2ViR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5nYW1l
cGFkQWN0aXZpdHkoZ2FtZXBhZERhdGFzKTsKK30KKworI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vz
czo6c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBmbGFnKQog
ewogICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xs
ZWN0b3JUaW1lckVuYWJsZWQoZmxhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCmluZGV4IDA4YjRkYmRlOTU5MDlhN2VmNGMwYzkzNDE2YTMzYTFlMWM0MGUxNGUuLjgyNDNl
OWNlODlmYzJjMDQ4ODEzM2EwODU2ODRjMTc1YmIyMjU5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFz
cyBXZWJQYWdlR3JvdXBQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NTdXBwbGVtZW50OwogZW51bSBj
bGFzcyBXZWJzaXRlRGF0YVR5cGU7CitzdHJ1Y3QgR2FtZXBhZERhdGE7CiBzdHJ1Y3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhOwogc3RydWN0IFdl
YlByZWZlcmVuY2VzU3RvcmU7CkBAIC0yNzUsNiArMjc2LDEyIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIG1haW5UaHJlYWRQaW5nKCk7CiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICB2b2lkIGdh
bWVwYWRDb25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmKTsKKyAgICB2b2lkIGdhbWVwYWREaXNj
b25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQgZ2FtZXBhZEFjdGl2aXR5KGNvbnN0
IFZlY3RvcjxHYW1lcGFkRGF0YT4mKTsKKyNlbmRpZgorCiAgICAgdm9pZCByZWxlYXNlUGFnZUNh
Y2hlKCk7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzlh
ZWRkNWVmZmU2MmE4ZDY0MDUyOWQ1NTY4NmYzODJkMWU5NzAxZi4uY2Q1ZWE4MTJjNDVhYjBiOTVk
Njk4MWY5YWE4MzYxY2ViNjc0NzRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTAxLDQgKzEwMSwxMCBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAog
ICAgIE1haW5UaHJlYWRQaW5nKCkKKworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIEdhbWVwYWRD
b25uZWN0ZWQoc3RydWN0IFdlYktpdDo6R2FtZXBhZERhdGEgZ2FtZXBhZERhdGEpCisgICAgR2Ft
ZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCkKKyAgICBHYW1lcGFkQWN0aXZpdHkoVmVj
dG9yPFdlYktpdDo6R2FtZXBhZERhdGE+IGdhbWVwYWREYXRhcykKKyNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285658</attachid>
            <date>2016-08-09 12:05:05 -0700</date>
            <delta_ts>2016-08-09 14:30:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160700-20160809120331.patch</filename>
            <type>text/plain</type>
            <size>41477</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGZkMGZmM2ZiNjEwNWFh
ZDNmMTgwY2M4MmQyMWU2NTJmY2JiYTZjMy4uYTYwMWRlNWVjYmVlNzM0NzFjZjg4ZTU3ZTJiMWUw
ZDJiOWVmN2EzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE2LTA4LTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgImR1bWIi
IFdLMiBzdXBwb3J0IGZvciBnYW1lcGFkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MDcwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBnYW1lcGFkcyB3b3Jr
IGluIFdLMi4KKworICAgICAgICBUaGluZ3Mga25vd24gdG8gYmUgbWlzc2luZyB0byBtYWtlIHRo
aXMgbWVjaGFuaXNtIG1vcmUgInNtYXJ0IjoKKyAgICAgICAgICAtIFJlZnJlc2ggdmFsdWVzIGFs
b25nIHdpdGggZGlzcGxheSBzeW5jIGluc3RlYWQgb2Ygb24gYSA2MGh6IHRpbWVyIChidWcgMTYw
NjczKQorICAgICAgICAgIC0gT25seSBzZW5kIHVwZGF0ZWQgdmFsdWVzIHRvIHRoZSBjdXJyZW50
IGZvY3VzZWQgd2ViIHBhZ2UgKGJ1ZyAxNjA2OTkpCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IAorICAgICAgICAqIFNoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElE
LmNwcC4KKyAgICAgICAgKFdlYktpdDo6R2FtZXBhZERhdGE6OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OkdhbWVwYWREYXRhOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpHYW1lcGFkRGF0
YTo6aXNOdWxsKToKKyAgICAgICAgKFdlYktpdDo6R2FtZXBhZERhdGE6OmxvZ2dpbmdTdHJpbmcp
OgorICAgICAgICAqIFNoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmguCisgICAgICAgIAor
ICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZC5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5j
cHAuCisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZDo6VUlHYW1lcGFkKToKKyAgICAgICAgKFdl
YktpdDo6VUlHYW1lcGFkOjp1cGRhdGVGcm9tUGxhdGZvcm1HYW1lcGFkKToKKyAgICAgICAgKFdl
YktpdDo6VUlHYW1lcGFkOjpnYW1lcGFkRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVw
YWQvVUlHYW1lcGFkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2Ft
ZXBhZC9XZWJHYW1lcGFkLmguCisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZDo6aW5kZXgpOgor
ICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpVSUdhbWVwYWRQcm92aWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjp1cGRhdGVUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0T3JTdG9wU3luY2hp
bmdHYW1lcGFkU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxh
dGZvcm1HYW1lcGFkQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlk
ZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2Ft
ZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToKKyAgICAgICAgKFdl
YktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQb29sU3RhcnRlZFVzaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vzc1Bvb2xTdG9wcGVk
VXNpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0
Zm9ybUdhbWVwYWRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92
aWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRl
ckhJRC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdh
bWVwYWRzKToKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdhbWVwYWRDb25uZWN0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Z2FtZXBhZERpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnYW1lcGFkQWN0aXZpdHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVw
YWQ6OldlYkdhbWVwYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkOjpheGlzVmFsdWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZDo6YnV0dG9uVmFsdWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR2FtZXBhZDo6dXBkYXRlVmFsdWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dhbWVwYWQvV2ViR2FtZXBhZC5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dh
bWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBh
ZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBh
ZFByb3ZpZGVyOjpnYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Ft
ZXBhZFByb3ZpZGVyOjpnYW1lcGFkQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1l
cGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2Ft
ZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Z2FtZXBhZENv
bm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmdhbWVwYWREaXNjb25uZWN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpnYW1lcGFkQWN0aXZpdHkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxNi0wOC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkcmVzc2luZyBsYXRlIHJldmlldyBmZWVkYmFjayBp
biBidWcgMTYwNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IGE2ODQyNTU2ODhjMjliMzY3NGM0
Y2FlZmM0NjZjNzU0YTc3NzllMDguLjA1OWIwMDY5ODRiMDI5MjkyZjU2Yjc1M2Y2YTZiNWI4NGUw
NzBiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0yMSw2ICsyMSw3IEBAIHNldChXZWJLaXQy
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0RhdGFiYXNl
cyIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9GaWxlQVBJIgorICAgICIke1dFQktJVDJfRElSfS9TaGFy
ZWQvR2FtZXBhZCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL1BsdWdpbnMiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlIgogICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
R2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZDg4OGEyZDllY2MyNzg1OThk
ODExNDc4MGJjYzVkYWU0YjQ0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWREYXRhLmgiCisKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBH
YW1lcGFkRGF0YTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgaW5kZXggPDwgYXhpc1ZhbHVlcyA8PCBidXR0b25WYWx1ZXM7Cit9
CisKK2Jvb2wgR2FtZXBhZERhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgR2FtZXBhZERhdGEmIGRhdGEpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmlu
ZGV4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhLmF4aXNWYWx1ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEuYnV0dG9uVmFsdWVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR2FtZXBhZERhdGE6OmlzTnVsbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFpbmRleCAmJiBheGlzVmFsdWVzLmlzRW1wdHkoKSAmJiBidXR0b25WYWx1
ZXMuaXNFbXB0eSgpOworfQorCitTdHJpbmcgR2FtZXBhZERhdGE6OmxvZ2dpbmdTdHJpbmcoKSBj
b25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcoU3RyaW5nOjpudW1iZXIoYXhpc1ZhbHVlcy5zaXplKCkpLCAiIGF4ZXMsICIs
IFN0cmluZzo6bnVtYmVyKGJ1dHRvblZhbHVlcy5zaXplKCkpLCAiIGJ1dHRvbnNcbiIpKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXhpc1ZhbHVlcy5zaXplKCk7ICsraSkKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiIEF4aXMgIiwgU3RyaW5nOjpudW1iZXIoaSks
ICI6ICIsIFN0cmluZzo6bnVtYmVyKGF4aXNWYWx1ZXNbaV0pKSk7CisKKyAgICBidWlsZGVyLmFw
cGVuZCgiXG4iKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1dHRvblZhbHVlcy5zaXpl
KCk7ICsraSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiIEJ1dHRvbiAiLCBT
dHJpbmc6Om51bWJlcihpKSwgIjogIiwgU3RyaW5nOjpudW1iZXIoYnV0dG9uVmFsdWVzW2ldKSkp
OworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYjMwM2JkNWVjNTU4NjBjZTIw
NmVjODRlYzk1OWZiZmU5ZDNmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBHYW1lcGFkRGF0YSB7CisgICAgdm9pZCBlbmNv
ZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
SVBDOjpBcmd1bWVudERlY29kZXImLCBHYW1lcGFkRGF0YSYpOworCisgICAgYm9vbCBpc051bGwo
KSBjb25zdDsKKworICAgIHVuc2lnbmVkIGluZGV4OworICAgIFZlY3Rvcjxkb3VibGU+IGF4aXNW
YWx1ZXM7CisgICAgVmVjdG9yPGRvdWJsZT4gYnV0dG9uVmFsdWVzOworCisgICAgU3RyaW5nIGxv
Z2dpbmdTdHJpbmcoKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2FtZXBhZC9VSUdhbWVwYWQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVw
YWQvVUlHYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODBkODY4Y2Y4MjFiYzAzODgxY2NhM2M0YjA2
MDYxYzI3YzUxOTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0dhbWVwYWQvVUlHYW1lcGFkLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVJR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdB
TUVQQUQpCisKKyNpbmNsdWRlICJHYW1lcGFkRGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1HYW1lcGFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworVUlHYW1lcGFkOjpVSUdhbWVwYWQoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFk
JiBwbGF0Zm9ybUdhbWVwYWQpCisgICAgOiBtX2luZGV4KHBsYXRmb3JtR2FtZXBhZC5pbmRleCgp
KQoreworICAgIG1fYXhpc1ZhbHVlcy5yZXNpemUocGxhdGZvcm1HYW1lcGFkLmF4aXNWYWx1ZXMo
KS5zaXplKCkpOworICAgIG1fYnV0dG9uVmFsdWVzLnJlc2l6ZShwbGF0Zm9ybUdhbWVwYWQuYnV0
dG9uVmFsdWVzKCkuc2l6ZSgpKTsKKworICAgIHVwZGF0ZUZyb21QbGF0Zm9ybUdhbWVwYWQocGxh
dGZvcm1HYW1lcGFkKTsKK30KKwordm9pZCBVSUdhbWVwYWQ6OnVwZGF0ZUZyb21QbGF0Zm9ybUdh
bWVwYWQoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkJiBwbGF0Zm9ybUdhbWVwYWQpCit7CisgICAg
QVNTRVJUKG1faW5kZXggPT0gcGxhdGZvcm1HYW1lcGFkLmluZGV4KCkpOworICAgIEFTU0VSVCht
X2F4aXNWYWx1ZXMuc2l6ZSgpID09IHBsYXRmb3JtR2FtZXBhZC5heGlzVmFsdWVzKCkuc2l6ZSgp
KTsKKyAgICBBU1NFUlQobV9idXR0b25WYWx1ZXMuc2l6ZSgpID09IHBsYXRmb3JtR2FtZXBhZC5i
dXR0b25WYWx1ZXMoKS5zaXplKCkpOworCisgICAgbV9heGlzVmFsdWVzID0gcGxhdGZvcm1HYW1l
cGFkLmF4aXNWYWx1ZXMoKTsKKyAgICBtX2J1dHRvblZhbHVlcyA9IHBsYXRmb3JtR2FtZXBhZC5i
dXR0b25WYWx1ZXMoKTsKK30KKworR2FtZXBhZERhdGEgVUlHYW1lcGFkOjpnYW1lcGFkRGF0YSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHsgbV9pbmRleCwgbV9heGlzVmFsdWVzLCBtX2J1dHRvblZh
bHVlcyB9OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FmMTg4NjVk
YzgzODM2MTU4NjhhMjAyYTZiN2M3YjBjNWFlNWQxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZC5oCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0Zm9y
bUdhbWVwYWQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgR2FtZXBhZERhdGE7
CisKK2NsYXNzIFVJR2FtZXBhZCB7CitwdWJsaWM6CisgICAgVUlHYW1lcGFkKFdlYkNvcmU6OlBs
YXRmb3JtR2FtZXBhZCYpOworCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBt
X2luZGV4OyB9CisKKyAgICBHYW1lcGFkRGF0YSBnYW1lcGFkRGF0YSgpIGNvbnN0OworCisgICAg
dm9pZCB1cGRhdGVGcm9tUGxhdGZvcm1HYW1lcGFkKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCYp
OworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgVmVjdG9yPGRvdWJsZT4g
bV9heGlzVmFsdWVzOworICAgIFZlY3Rvcjxkb3VibGU+IG1fYnV0dG9uVmFsdWVzOworfTsKKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggOGNhZDU1MjRl
ZDQxZGVlYmM5YmM3NmI3NDdhMGY3NTQ5MTMwOWE4Mi4uZDQxODFjN2IzNTBjZTA3YzU1OTEzNTll
NGYyNmYzMDYyZTRhOTg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dh
bWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKEdBTUVQQUQpCiAKKyNpbmNsdWRlICJHYW1lcGFkRGF0YS5oIgorI2luY2x1ZGUgIlVJ
R2FtZXBhZC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IApAQCAtMzUsNiArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK3N0YXRpYyBjb25zdCBkb3VibGUgZ2FtZXBhZFVwZGF0ZUludGVydmFsID0g
MSAvIDYwLjA7CisKIFVJR2FtZXBhZFByb3ZpZGVyJiBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VUlHYW1lcGFkUHJvdmlkZXI+IHNo
YXJlZFByb3ZpZGVyOwpAQCAtNDIsNiArNDcsNyBAQCBVSUdhbWVwYWRQcm92aWRlciYgVUlHYW1l
cGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCiB9CiAKIFVJR2FtZXBhZFByb3ZpZGVyOjpVSUdhbWVw
YWRQcm92aWRlcigpCisgICAgOiBtX3RpbWVyKCp0aGlzLCAmVUlHYW1lcGFkUHJvdmlkZXI6OnVw
ZGF0ZVRpbWVyRmlyZWQpCiB7CiB9CiAKQEAgLTUxLDE2ICs1Nyw4NiBAQCBVSUdhbWVwYWRQcm92
aWRlcjo6flVJR2FtZXBhZFByb3ZpZGVyKCkKICAgICAgICAgcGxhdGZvcm1TdG9wTW9uaXRvcmlu
Z0dhbWVwYWRzKCk7CiB9CiAKLXZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBh
ZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKQordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6dXBk
YXRlVGltZXJGaXJlZCgpCiB7CisgICAgaWYgKCFtX2hhZEFjdGl2aXR5U2luY2VMYXN0U3luY2gp
CisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxHYW1lcGFkRGF0YT4gZ2FtZXBhZERhdGFz
OworICAgIGdhbWVwYWREYXRhcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZ2FtZXBhZHMuc2l6
ZSgpKTsKKworICAgIGZvciAoYXV0byYgZ2FtZXBhZCA6IG1fZ2FtZXBhZHMpIHsKKyAgICAgICAg
aWYgKGdhbWVwYWQpCisgICAgICAgICAgICBnYW1lcGFkRGF0YXMudW5jaGVja2VkQXBwZW5kKGdh
bWVwYWQtPmdhbWVwYWREYXRhKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnYW1lcGFk
RGF0YXMudW5jaGVja2VkQXBwZW5kKHsgfSk7CisgICAgfQorCisgICAgLy8gRklYTUUgKGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2OTkpCisgICAgLy8gT25seSBz
ZW5kIHVwZGF0ZXMgdG8gdGhlIHByb2Nlc3MgcG9vbCB0aGF0IGNvbnRhaW5zIHRoZSBjdXJyZW50
bHkgZm9jdXNlZCB3ZWIgcGFnZS4KKyAgICBmb3IgKGF1dG8mIHBvb2wgOiBtX3Byb2Nlc3NQb29s
c1VzaW5nR2FtZXBhZHMpCisgICAgICAgIHBvb2wtPmdhbWVwYWRBY3Rpdml0eShnYW1lcGFkRGF0
YXMpOworCisgICAgbV9oYWRBY3Rpdml0eVNpbmNlTGFzdFN5bmNoID0gZmFsc2U7CiB9CiAKLXZv
aWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9y
bUdhbWVwYWQmKQordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6c3RhcnRPclN0b3BTeW5jaGluZ0dh
bWVwYWRTdGF0ZSgpCiB7CisgICAgLy8gRklYTUUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjA2OTkpCisgICAgLy8gT25seSBzdGFydCBzeW5jaGluZyB1cGRhdGVz
IGlmIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBXS1dlYlZpZXcgaXMgYWxzbyBsaXN0ZW5pbmcgZm9y
IGdhbWVwYWRzLgorCisgICAgLy8gRklYTUUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjA2NzMpCisgICAgLy8gSW5zdGVhZCBvZiByZWZyZXNoaW5nIGdhbWVwYWQg
ZGF0YSBvbiBhIDYwaHogdGltZXIsIGFjdHVhbGx5IHN5bmMgd2l0aCB0aGUgZGlzcGxheS4KKyAg
ICBpZiAobV9nYW1lcGFkcy5pc0VtcHR5KCkgfHwgbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRz
LmlzRW1wdHkoKSkKKyAgICAgICAgbV90aW1lci5zdG9wKCk7CisgICAgZWxzZQorICAgICAgICBt
X3RpbWVyLnN0YXJ0UmVwZWF0aW5nKGdhbWVwYWRVcGRhdGVJbnRlcnZhbCk7Cit9CisKK3ZvaWQg
VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVw
YWQmIGdhbWVwYWQpCit7CisgICAgaWYgKG1fZ2FtZXBhZHMuc2l6ZSgpIDw9IGdhbWVwYWQuaW5k
ZXgoKSkKKyAgICAgICAgbV9nYW1lcGFkcy5yZXNpemUoZ2FtZXBhZC5pbmRleCgpICsgMSk7CisK
KyAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7CisgICAgbV9nYW1lcGFk
c1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVwYWQp
OworCisgICAgbV9oYWRBY3Rpdml0eVNpbmNlTGFzdFN5bmNoID0gdHJ1ZTsKKyAgICBzdGFydE9y
U3RvcFN5bmNoaW5nR2FtZXBhZFN0YXRlKCk7CisKKyAgICBmb3IgKGF1dG8mIHBvb2wgOiBtX3By
b2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMpCisgICAgICAgIHBvb2wtPmdhbWVwYWRDb25uZWN0ZWQo
Km1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlk
ZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQp
Cit7CisgICAgQVNTRVJUKGdhbWVwYWQuaW5kZXgoKSA8IG1fZ2FtZXBhZHMuc2l6ZSgpKTsKKyAg
ICBBU1NFUlQobV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxVSUdhbWVwYWQ+IGRpc2Nvbm5lY3RlZEdhbWVwYWQgPSBXVEZNb3ZlKG1fZ2FtZXBhZHNb
Z2FtZXBhZC5pbmRleCgpXSk7CisKKyAgICBzdGFydE9yU3RvcFN5bmNoaW5nR2FtZXBhZFN0YXRl
KCk7CisKKyAgICBmb3IgKGF1dG8mIHBvb2wgOiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMp
CisgICAgICAgIHBvb2wtPmdhbWVwYWREaXNjb25uZWN0ZWQoKmRpc2Nvbm5lY3RlZEdhbWVwYWQp
OwogfQogCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2
aXR5KCkKIHsKKyAgICBhdXRvIHBsYXRmb3JtR2FtZXBhZHMgPSB0aGlzLT5wbGF0Zm9ybUdhbWVw
YWRzKCk7CisgICAgQVNTRVJUKHBsYXRmb3JtR2FtZXBhZHMuc2l6ZSgpID09IG1fZ2FtZXBhZHMu
c2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGxhdGZvcm1HYW1lcGFkcy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAoIXBsYXRmb3JtR2FtZXBhZHNbaV0pIHsKKyAgICAg
ICAgICAgIEFTU0VSVCghbV9nYW1lcGFkc1tpXSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIEFTU0VSVChtX2dhbWVwYWRzW2ldKTsKKyAgICAgICAgbV9nYW1l
cGFkc1tpXS0+dXBkYXRlRnJvbVBsYXRmb3JtR2FtZXBhZCgqcGxhdGZvcm1HYW1lcGFkc1tpXSk7
CisgICAgfQorCisgICAgbV9oYWRBY3Rpdml0eVNpbmNlTGFzdFN5bmNoID0gdHJ1ZTsKIH0KIAog
dm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vzc1Bvb2xTdGFydGVkVXNpbmdHYW1lcGFkcyhX
ZWJQcm9jZXNzUG9vbCYgcG9vbCkKQEAgLTcyLDYgKzE0OCw4IEBAIHZvaWQgVUlHYW1lcGFkUHJv
dmlkZXI6OnByb2Nlc3NQb29sU3RhcnRlZFVzaW5nR2FtZXBhZHMoV2ViUHJvY2Vzc1Bvb2wmIHBv
b2wpCiAKICAgICBpZiAoIXdlcmVBbnlQcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzKQogICAgICAg
ICBwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCk7CisKKyAgICBzdGFydE9yU3RvcFN5
bmNoaW5nR2FtZXBhZFN0YXRlKCk7CiB9CiAKIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nl
c3NQb29sU3RvcHBlZFVzaW5nR2FtZXBhZHMoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wpCkBAIC04Myw5
ICsxNjEsMTIgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vzc1Bvb2xTdG9wcGVkVXNp
bmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkKIAogICAgIGlmICh3ZXJlQW55UHJvY2Vz
c1Bvb2xzVXNpbmdHYW1lcGFkcyAmJiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0
eSgpKQogICAgICAgICBwbGF0Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKKworICAgIHN0
YXJ0T3JTdG9wU3luY2hpbmdHYW1lcGFkU3RhdGUoKTsKIH0KIAogI2lmICFQTEFURk9STShNQUMp
CisKIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nR2FtZXBh
ZHMoKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIG90aGVyIHBsYXRmb3JtcwpAQCAt
OTUsNiArMTc2LDE1IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0
b3JpbmdHYW1lcGFkcygpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igb3RoZXIgcGxh
dGZvcm1zCiB9CisKK2NvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgVUlHYW1lcGFkUHJv
dmlkZXI6OnBsYXRmb3JtR2FtZXBhZHMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4+IGVtcHR5R2FtZXBhZHM7CisgICAgcmV0dXJuIGVtcHR5
R2FtZXBhZHM7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBvdGhlciBwbGF0Zm9ybXMK
K30KKwogI2VuZGlmIC8vICFQTEFURk9STShNQUMpCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCmluZGV4IDA2OWVjMTRh
MjQwOGQ0YjRiM2JhYjA5ZTJjY2Y3YzZhN2M1OGEzODYuLjBlOGJmZmE4NWM1ZWYwYTg3ZmQ0MzIy
MTgzY2E5NmI1MmE4YmJiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
YW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuaApAQCAtMjgsMTIgKzI4LDE2IEBACiAjaWYgRU5B
QkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0dhbWVwYWRQcm92aWRlckNsaWVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOworc3RydWN0IEdhbWVwYWREYXRhOwogCiBjbGFzcyBVSUdhbWVwYWRQcm92aWRlciA6
IHB1YmxpYyBXZWJDb3JlOjpHYW1lcGFkUHJvdmlkZXJDbGllbnQgewogcHVibGljOgpAQCAtNDIs
NiArNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dhbWVw
YWRzKFdlYlByb2Nlc3NQb29sJik7CiAgICAgdm9pZCBwcm9jZXNzUG9vbFN0b3BwZWRVc2luZ0dh
bWVwYWRzKFdlYlByb2Nlc3NQb29sJik7CiAKKyAgICBWZWN0b3I8R2FtZXBhZERhdGE+IGdhbWVw
YWRTdGF0ZXMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8
VUlHYW1lcGFkUHJvdmlkZXI+OwogICAgIFVJR2FtZXBhZFByb3ZpZGVyKCk7CkBAIC00OSwxMiAr
NTUsMjEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1TdGFydE1vbml0b3JpbmdHYW1l
cGFkcygpOwogICAgIHZvaWQgcGxhdGZvcm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCk7CisgICAg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdhbWVwYWRz
KCk7CiAKICAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChXZWJDb3JlOjpQbGF0Zm9y
bUdhbWVwYWQmKSBmaW5hbDsKICAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChX
ZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKICAgICB2b2lkIHBsYXRmb3JtR2FtZXBh
ZElucHV0QWN0aXZpdHkoKSBmaW5hbDsKIAorICAgIHZvaWQgc3RhcnRPclN0b3BTeW5jaGluZ0dh
bWVwYWRTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOworCiAgICAgSGFzaFNl
dDxXZWJQcm9jZXNzUG9vbCo+IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkczsKKworICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VUlHYW1lcGFkPj4gbV9nYW1lcGFkczsKKworICAgIFdlYkNv
cmU6OlRpbWVyIG1fdGltZXI7CisgICAgYm9vbCBtX2hhZEFjdGl2aXR5U2luY2VMYXN0U3luY2gg
eyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAKaW5kZXggMTU4MTVh
ZDRjMTc0MWE5OGU2N2E1YTYxYTk0YmZjYzdmMDBjOTA2Ny4uNzllYTMzY2Q0MTQ2ZDk0ZmMyNjJk
YTZlZmM1MjM3MjMyZGYzY2Y2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwCkBAIC00Niw2
ICs0NiwxMSBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5n
R2FtZXBhZHMoKQogICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RvcE1vbml0
b3JpbmdHYW1lcGFkcygqdGhpcyk7CiB9CiAKK2NvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQq
PiYgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZHMoKQoreworICAgIHJldHVybiBI
SURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnBsYXRmb3JtR2FtZXBhZHMoKTsKK30KKwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmOWYyNGVhMTg1ZjgzMGU1MjFlYmFhNzVkMGE1NzIw
ZDA4YTI2N2EwLi5kN2E3OTdkNDU4Y2Q0ZjJmZDQxMDk2ZGQ5MjE0YjY4ZWEyNThlMjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJHYW1lcGFkRGF0YS5oIgogI2luY2x1ZGUgIkxvZ0luaXRpYWxpemF0aW9uLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC00Miw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNrZXIuaCIKKyNpbmNsdWRlICJVSUdhbWVwYWQuaCIKICNpbmNsdWRlICJVSUdh
bWVwYWRQcm92aWRlci5oIgogI2luY2x1ZGUgIldLQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgpAQCAtMTI4MCw2ICsxMjgyLDI2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnByb2Nlc3NTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCiAgICAgICAgIFVJR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5wcm9jZXNz
UG9vbFN0b3BwZWRVc2luZ0dhbWVwYWRzKCp0aGlzKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9v
bDo6Z2FtZXBhZENvbm5lY3RlZChjb25zdCBVSUdhbWVwYWQmIGdhbWVwYWQpCit7CisgICAgZm9y
IChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRzKQorICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHYW1lcGFkQ29ubmVjdGVkKGdhbWVwYWQu
Z2FtZXBhZERhdGEoKSksIDApOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpnYW1lcGFkRGlz
Y29ubmVjdGVkKGNvbnN0IFVJR2FtZXBhZCYgZ2FtZXBhZCkKK3sKKyAgICBmb3IgKGF1dG8mIHBy
b2Nlc3MgOiBtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkdhbWVwYWREaXNjb25uZWN0ZWQoZ2FtZXBhZC5pbmRleCgp
KSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdhbWVwYWRBY3Rpdml0eShjb25zdCBW
ZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMpCit7CisgICAgLy8gRklYTUUgKGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2OTkpCisgICAgLy8gT25seSBz
ZW5kIHVwZGF0ZXMgdG8gdGhlIHByb2Nlc3MgdGhhdCBjb250YWlucyB0aGUgY3VycmVudGx5IGZv
Y3VzZWQgd2ViIHBhZ2UuCisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXNVc2lu
Z0dhbWVwYWRzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpH
YW1lcGFkQWN0aXZpdHkoZ2FtZXBhZERhdGFzKSwgMCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0
T2JqZWN0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IGNmZWYxZjY5MDc2ODhmMThmMjcxNDZiYTMxOGUzNTYwZWIzZGFiMjEuLmRkZDg2OWRhNmRiMmQ3
OTlmZjIyODJjZGFhM2Q1ZDIzODQwMTYwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCkBAIC03OSwxMSArNzksMTMgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRp
b247CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWRQcm94eTsKK2NsYXNzIFVJ
R2FtZXBhZDsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3MgV2ViQ29udGV4dFN1
cHBsZW1lbnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CitzdHJ1Y3QgR2FtZXBhZERhdGE7CiBzdHJ1Y3QgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3Qg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKQEAgLTM2OSw2ICszNzEsMTIgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSB7IHJldHVybiBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KIAorI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIHZvaWQgZ2Ft
ZXBhZENvbm5lY3RlZChjb25zdCBVSUdhbWVwYWQmKTsKKyAgICB2b2lkIGdhbWVwYWREaXNjb25u
ZWN0ZWQoY29uc3QgVUlHYW1lcGFkJik7CisgICAgdm9pZCBnYW1lcGFkQWN0aXZpdHkoY29uc3Qg
VmVjdG9yPEdhbWVwYWREYXRhPiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM0MWY0MWVmMjgwNmM3NGM1ZGRhZmVlNTUyNWY3ZGRm
Yzk2NDBlODEuLmE1YWI3MjY4NTkyNzljZTM0OTM3Nzk3MmU5MjA5OWQ4MTIzZDM3ZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTk0MSw2ICs5NDEsMTIgQEAKIAkJNTE1QkUxQTcxRDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBh
ZFByb3ZpZGVySElELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUJFMUE2MUQ1NTI5MzAwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5j
cHAgKi87IH07CiAJCTUxNUJFMUE4MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVC
RTFBNDFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3BwICovOyB9OwogCQk1
MTVCRTFBOTFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE1MUQ1NTI5MjgwMERE
N0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oICovOyB9OworCQk1MTVCRTFBQTFENTU1QTlCMDBE
RDdDNjggLyogV2ViR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTVCRTE5RjFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5jcHAg
Ki87IH07CisJCTUxNUJFMUFCMUQ1NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBMDFENTUwQUIw
MDBERDdDNjggLyogV2ViR2FtZXBhZC5oICovOyB9OworCQk1MTVCRTFCMjFENTkwMkREMDBERDdD
NjggLyogR2FtZXBhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE1QkUxQjExRDU5MDJCNjAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmNwcCAq
LzsgfTsKKwkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFCMDFENTkwMDY5
MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCAqLzsgfTsKKwkJNTE1QkUxQjQxRDU5MTdGRjAwREQ3
QzY4IC8qIFVJR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTVCRTFBQzFENTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFkLmNwcCAqLzsg
fTsKKwkJNTE1QkUxQjUxRDU5MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQUQxRDU1NUM1MTAwREQ3
QzY4IC8qIFVJR2FtZXBhZC5oICovOyB9OwogCQk1MTVFNzcyNzE4M0RENkY2MDAwNzIwM0YgLyog
QXN5bmNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovOyB9
OwogCQk1MTVFNzcyODE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNjE4M0RENkY2MDAw
NzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi87IH07CiAJCTUxNUU3NzJCMTg0MDA4QjkwMDA3MjAz
RiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjkxODQwMDhCOTAwMDcyMDNG
IC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi87IH07CkBAIC0yOTg3
LDYgKzI5OTMsMTAgQEAKIAkJNTE1QkUxQTQxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVJR2FtZXBh
ZFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQTUxRDU1
MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNUJFMUE2MUQ1NTI5MzAwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVSUdhbWVwYWRQcm92aWRl
ckhJRC5jcHA7IHBhdGggPSBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJI
SUQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTUxNUJFMUFDMUQ1NTVDNTEw
MEREN0M2OCAvKiBVSUdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVUlHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1QkUx
QUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVSUdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1
QkUxQjAxRDU5MDA2OTAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdhbWVwYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxNUJFMUIxMUQ1OTAyQjYwMEREN0M2OCAvKiBHYW1lcGFkRGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHYW1lcGFkRGF0YS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVl
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNSZXF1ZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1RTc3MjYxODNERDZGNjAwMDcy
MDNGIC8qIEFzeW5jUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
c3luY1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1RTc3MjkxODQw
MDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ3MSw2ICs0
NDgxLDcgQEAKIAkJCQk1MUUzNTFDMjE4MEYyQzg1MDBFNTNCRTkgLyogRGF0YWJhc2VzICovLAog
CQkJCUJDODI4MzY4MTZCMzU4NzkwMEEyNzhGRSAvKiBFbnRyeVBvaW50VXRpbGl0aWVzICovLAog
CQkJCUUxNzA4NzcyMTZENkNGRUMwMEY5OTIyNiAvKiBGaWxlQVBJICovLAorCQkJCTUxNUJFMUFF
MUQ1OTAwMzQwMEREN0M2OCAvKiBHYW1lcGFkICovLAogCQkJCTJEQTk0NDk2MTg4NEU0REEwMEVE
ODZEQiAvKiBpb3MgKi8sCiAJCQkJQkMxMTFCNUExMTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAqLywK
IAkJCQkxQUFFMDU4QzEyNzlEQ0Q0MDA4NTI0MTggLyogUGx1Z2lucyAqLywKQEAgLTU0OTYsNiAr
NTUwNyw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxNUJF
MUExMUQ1NTIzQjMwMEREN0M2OCAvKiBtYWMgKi8sCisJCQkJNTE1QkUxQUMxRDU1NUM1MTAwREQ3
QzY4IC8qIFVJR2FtZXBhZC5jcHAgKi8sCisJCQkJNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8q
IFVJR2FtZXBhZC5oICovLAogCQkJCTUxNUJFMUE0MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVw
YWRQcm92aWRlci5jcHAgKi8sCiAJCQkJNTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2Ft
ZXBhZFByb3ZpZGVyLmggKi8sCiAJCQkpOwpAQCAtNTUxMSw2ICs1NTI0LDE1IEBACiAJCQlwYXRo
ID0gVUlQcm9jZXNzL0dhbWVwYWQvbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJNTE1QkUxQUUxRDU5MDAzNDAwREQ3QzY4IC8qIEdhbWVwYWQgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxNUJFMUIxMUQ1OTAyQjYwMEREN0M2
OCAvKiBHYW1lcGFkRGF0YS5jcHAgKi8sCisJCQkJNTE1QkUxQjAxRDU5MDA2OTAwREQ3QzY4IC8q
IEdhbWVwYWREYXRhLmggKi8sCisJCQkpOworCQkJcGF0aCA9IEdhbWVwYWQ7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OwogCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyogbWFj
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTc0MjIsNiAr
NzQ0NCw3IEBACiAJCQkJMUFFMjg2NzgxQzdFNzY1MTAwNjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRh
U2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2ODAxQzdGOTJDMDAwNjlBQzRGIC8qIF9X
S1dlYnNpdGVEYXRhU2l6ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZCNEM3MjFB
REYxNTVEMDBCMzMzMzkgLyogX1dLV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTRBOTNCNzFBRUIwOEVBMDAxNTBFOUMgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyog
X1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTlERDNDMDFE
MDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzc0OCw2ICs3NzcxLDcgQEAKIAkJCQlFMTc5MDg5MTE2OUJBQTgyMDA2
OTA0QzcgLyogU2VjSXRlbVNoaW1NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4RTY5
MEMxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxNUJFMUI1MUQ1OTE3RkYwMEREN0M2OCAvKiBVSUdhbWVw
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2
aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0
OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0
NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLApAQCAtNzg4
OCw2ICs3OTEyLDcgQEAKIAkJCQkyRDNFRjQ0MzE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5
UHJlc3N1cmVIYW5kbGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDk4NTRFRDEyQkM0RTE4
MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNjlG
OUExMTc2Q0VENjAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxNUJFMUFCMUQ1NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0NDQzhGQjFBNUY1MEZEMDA4RkIwREEgLyogV2ViTmF2aWdhdGlvblN0
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEyRUM0OTE0ODk5N0MyMDA4MTBENzEgLyogV2Vi
Tm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTA5OTlDNzE0NkM5RTNEMDAyOURF
QjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTkxNzUsNiAr
OTIwMCw3IEBACiAJCQkJMUEwNDNDRUIxMjRGRTM4RjAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwRUM3NUYxMjRCQzdCMjAw
N0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJE
OTBCQjEyODFDOTMxMDAxRUI5NjIgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTE1QkUxQjQxRDU5MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTA0M0I1RDEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vz
c1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMDQzREMyMTI0
RkY4NzUwMEZGQkZCNSAvKiBQbHVnaW5Qcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJE
OTIyMTEyODFEQzFCMDAxRUI5NjIgLyogUGx1Z2luUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywK
QEAgLTkxOTMsNiArOTIxOSw3IEBACiAJCQkJMkQ0N0I1NkMxODEwNzE0RTAwM0EzQUVFIC8qIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRERjczMTYxOEU5
NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFBQjE2QUU5MTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRy
ZWVDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1QkUxQjIxRDU5MDJERDAwREQ3QzY4
IC8qIEdhbWVwYWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMjlFQ0QxMTkyRjJDMkUw
MDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQUIxNkFERDE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFFMTE2NDg2NTZEMDAyOTBE
NjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBTb3VyY2VzICovLApA
QCAtOTQ4OCw2ICs5NTE1LDcgQEAKIAkJCQk3QzM2MUQ3ODE5MjgwM0JEMDAzNkE1OUQgLyogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTU3MzlCQkUxQjQyMDQ2NjAwRDI1OEMxIC8qIFdlYlVzZXJNZWRpYUNsaWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkQ1QTFCNzFDNTc0QTAyMDBERTM0QTMgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNUJFMUFBMUQ1NTVB
OUIwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGNDE4RUY5
MTg4N0JEOTcwMDI3OTVGRCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyRDVBMUIxMUM1NzQ5NjIwMERFMzRBMyAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gaW4gU291cmNlcyAqLywKIAkJCQkzRjQx
OEVGQjE4ODdCRDk3MDAyNzk1RkQgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwCmluZGV4IDlkMjcwYzU0MzU2YWQ5ZDE0MWFj
YjY2ZmMxNDVjNGNjMDQzNTJhYjcuLmEwMWVjMjQzZGU4NDdlOGQxZTUzMzdjNTNmOGMyMjQ0MjZl
N2JjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJH
YW1lcGFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2Ft
ZXBhZC5jcHAKQEAgLTI4LDggKzI4LDQwIEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAorI2lu
Y2x1ZGUgIkdhbWVwYWREYXRhLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCitXZWJHYW1lcGFk
OjpXZWJHYW1lcGFkKGNvbnN0IEdhbWVwYWREYXRhJiBnYW1lcGFkRGF0YSkKKyAgICA6IFBsYXRm
b3JtR2FtZXBhZChnYW1lcGFkRGF0YS5pbmRleCkKK3sKKyAgICBtX2F4aXNWYWx1ZXMucmVzaXpl
KGdhbWVwYWREYXRhLmF4aXNWYWx1ZXMuc2l6ZSgpKTsKKyAgICBtX2J1dHRvblZhbHVlcy5yZXNp
emUoZ2FtZXBhZERhdGEuYnV0dG9uVmFsdWVzLnNpemUoKSk7CisKKyAgICB1cGRhdGVWYWx1ZXMo
Z2FtZXBhZERhdGEpOworfQorCitjb25zdCBWZWN0b3I8ZG91YmxlPiYgV2ViR2FtZXBhZDo6YXhp
c1ZhbHVlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXhpc1ZhbHVlczsKK30KKworY29uc3Qg
VmVjdG9yPGRvdWJsZT4mIFdlYkdhbWVwYWQ6OmJ1dHRvblZhbHVlcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fYnV0dG9uVmFsdWVzOworfQorCit2b2lkIFdlYkdhbWVwYWQ6OnVwZGF0ZVZhbHVl
cyhjb25zdCBHYW1lcGFkRGF0YSYgZ2FtZXBhZERhdGEpCit7CisgICAgQVNTRVJUKCFnYW1lcGFk
RGF0YS5pc051bGwoKSk7CisgICAgQVNTRVJUKGdhbWVwYWREYXRhLmluZGV4ID09IGluZGV4KCkp
OworICAgIEFTU0VSVChtX2F4aXNWYWx1ZXMuc2l6ZSgpID09IGdhbWVwYWREYXRhLmF4aXNWYWx1
ZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9idXR0b25WYWx1ZXMuc2l6ZSgpID09IGdhbWVwYWRE
YXRhLmJ1dHRvblZhbHVlcy5zaXplKCkpOworCisgICAgbV9heGlzVmFsdWVzID0gZ2FtZXBhZERh
dGEuYXhpc1ZhbHVlczsKKyAgICBtX2J1dHRvblZhbHVlcyA9IGdhbWVwYWREYXRhLmJ1dHRvblZh
bHVlczsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuaAppbmRleCA1NDk5MDg2MjExYjRl
MjZkODc2NmM4MmI1MDg4NWU5YzdiYmYyNWI4Li45MjY1NGQ3ZWJiMjBlMDgyNmUzNzg2NWY5MDVm
ODYxOWRmNzZmYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVw
YWQvV2ViR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9X
ZWJHYW1lcGFkLmgKQEAgLTI3LDggKzI3LDI4IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAor
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1HYW1lcGFkLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBTaGFyZWRNZW1vcnk7CisKK3N0cnVjdCBHYW1lcGFkRGF0YTsKKworY2xhc3Mg
V2ViR2FtZXBhZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQgeworcHVibGljOgor
ICAgIFdlYkdhbWVwYWQoY29uc3QgR2FtZXBhZERhdGEmKTsKKworICAgIGNvbnN0IFZlY3Rvcjxk
b3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgVmVjdG9yPGRv
dWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCB1cGRhdGVW
YWx1ZXMoY29uc3QgR2FtZXBhZERhdGEmKTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8ZG91Ymxl
PiBtX2F4aXNWYWx1ZXM7CisgICAgVmVjdG9yPGRvdWJsZT4gbV9idXR0b25WYWx1ZXM7Cit9Owor
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggMmNl
NTVhY2U0MThkZTE1N2Q4ZjBlNzNjZGI4YTUwMDUxNGVhZmYzZS4uNDE2MDM5ZTlkNWZkYjBiYzE0
MmFlZGQ3ZDE2NGVlYTVkZTQyZTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTI4LDggKzI4LDEx
IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAorI2luY2x1ZGUgIkdhbWVwYWREYXRhLmgiCisj
aW5jbHVkZSAiV2ViR2FtZXBhZC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HYW1lcGFkUHJv
dmlkZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw2ICs1Myw0NyBAQCBXZWJHYW1lcGFkUHJvdmlkZXI6
On5XZWJHYW1lcGFkUHJvdmlkZXIoKQogewogfQogCit2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6
Z2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYgZ2FtZXBhZERhdGEpCit7CisgICAg
aWYgKG1fZ2FtZXBhZHMuc2l6ZSgpIDw9IGdhbWVwYWREYXRhLmluZGV4KSB7CisgICAgICAgIG1f
Z2FtZXBhZHMucmVzaXplKGdhbWVwYWREYXRhLmluZGV4ICsgMSk7CisgICAgICAgIG1fcmF3R2Ft
ZXBhZHMucmVzaXplKGdhbWVwYWREYXRhLmluZGV4ICsgMSk7CisgICAgfQorCisgICAgQVNTRVJU
KCFtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4XSk7CisKKyAgICBtX2dhbWVwYWRzW2dhbWVw
YWREYXRhLmluZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGEp
OworICAgIG1fcmF3R2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXhdID0gbV9nYW1lcGFkc1tnYW1l
cGFkRGF0YS5pbmRleF0uZ2V0KCk7CisKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50
cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZHNb
Z2FtZXBhZERhdGEuaW5kZXhdKTsKK30KKworCit2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6Z2Ft
ZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9nYW1lcGFk
cy5zaXplKCkgPiBpbmRleCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR2FtZXBhZD4gZGlz
Y29ubmVjdGVkR2FtZXBhZCA9IFdURk1vdmUobV9nYW1lcGFkc1tpbmRleF0pOworICAgIG1fcmF3
R2FtZXBhZHNbaW5kZXhdID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqZGlz
Y29ubmVjdGVkR2FtZXBhZCk7Cit9CisKK3ZvaWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFk
QWN0aXZpdHkoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYgZ2FtZXBhZERhdGFzKQoreworICAg
IEFTU0VSVChtX2dhbWVwYWRzLnNpemUoKSA9PSBnYW1lcGFkRGF0YXMuc2l6ZSgpKTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9nYW1lcGFkcy5zaXplKCk7ICsraSkgeworICAgICAg
ICBpZiAobV9nYW1lcGFkc1tpXSkKKyAgICAgICAgICAgIG1fZ2FtZXBhZHNbaV0tPnVwZGF0ZVZh
bHVlcyhnYW1lcGFkRGF0YXNbaV0pOworICAgIH0KKworICAgIGZvciAoYXV0byogY2xpZW50IDog
bV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHko
KTsKK30KKwogdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRz
KEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQogewogICAgIGJvb2wgcHJvY2Vzc0hhZEdh
bWVwYWRDbGllbnRzID0gIW1fY2xpZW50cy5pc0VtcHR5KCk7CkBAIC03NCw4ICsxMTgsNyBAQCB2
b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJv
dmlkZXJDbGllbnQmIGNsaWVudCkKIAogY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+JiBX
ZWJHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZHMoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4+IGdhbWVwYWRzOwotICAgIHJldHVy
biBnYW1lcGFkczsKKyAgICByZXR1cm4gbV9yYXdHYW1lcGFkczsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5o
CmluZGV4IGUyODM0MGRlZjRiOWVlNGY3NTFlMDZhMmU1MTdmMmZiZTUxODdkZDAuLmE1MzQ4M2Q2
MjI4NTA1NmUzMmE3ZDdjMDAwMGI0YzY0OGU5NWY5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTMzLDEw
ICszMywxOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU2hhcmVkTWVtb3J5Owor
Y2xhc3MgV2ViR2FtZXBhZDsKKworc3RydWN0IEdhbWVwYWREYXRhOworCiBjbGFzcyBXZWJHYW1l
cGFkUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViR2FtZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIAorICAgIHZvaWQg
Z2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYpOworICAgIHZvaWQgZ2FtZXBhZERp
c2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CisgICAgdm9pZCBnYW1lcGFkQWN0aXZpdHkoY29u
c3QgVmVjdG9yPEdhbWVwYWREYXRhPiYpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRl
c3Ryb3llZDxXZWJHYW1lcGFkUHJvdmlkZXI+OwogICAgIFdlYkdhbWVwYWRQcm92aWRlcigpOwpA
QCAtNDcsOCArNTYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGxh
dGZvcm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbDsKIAogICAgIEhhc2hTZXQ8
V2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyQ2xpZW50Kj4gbV9jbGllbnRzOworCisgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxXZWJHYW1lcGFkPj4gbV9nYW1lcGFkczsKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6UGxhdGZvcm1HYW1lcGFkKj4gbV9yYXdHYW1lcGFkczsKIH07CiAKLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBiYTJjYjljM2MxZWMzMWZmNDVhMDE1YjJj
NTMxNThhZTI3NWY1NWM3Li43ZmVhYWUzOGU1ZDkxZTQ2ZWVhNGM2NzE3N2ZjOGQwZDNkMWE3MTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEwMjksNiAr
MTAyOSwyNSBAQCB2b2lkIFdlYlByb2Nlc3M6Om1haW5UaHJlYWRQaW5nKCkKICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZFJl
Y2VpdmVNYWluVGhyZWFkUGluZygpLCAwKTsKIH0KIAorI2lmIEVOQUJMRShHQU1FUEFEKQorCit2
b2lkIFdlYlByb2Nlc3M6OmdhbWVwYWRDb25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmIGdhbWVw
YWREYXRhKQoreworICAgIFdlYkdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuZ2FtZXBhZENv
bm5lY3RlZChnYW1lcGFkRGF0YSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6Z2FtZXBhZERpc2Nv
bm5lY3RlZCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBXZWJHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpLmdhbWVwYWREaXNjb25uZWN0ZWQoaW5kZXgpOworfQorCit2b2lkIFdlYlByb2Nlc3M6
OmdhbWVwYWRBY3Rpdml0eShjb25zdCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMp
Cit7CisgICAgV2ViR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5nYW1lcGFkQWN0aXZpdHko
Z2FtZXBhZERhdGFzKTsKK30KKworI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzczo6c2V0SmF2YVNj
cmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBmbGFnKQogewogICAgIEdDQ29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVu
YWJsZWQoZmxhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDA4
YjRkYmRlOTU5MDlhN2VmNGMwYzkzNDE2YTMzYTFlMWM0MGUxNGUuLjgyNDNlOWNlODlmYzJjMDQ4
ODEzM2EwODU2ODRjMTc1YmIyMjU5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJQYWdlR3Jv
dXBQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NTdXBwbGVtZW50OwogZW51bSBjbGFzcyBXZWJzaXRl
RGF0YVR5cGU7CitzdHJ1Y3QgR2FtZXBhZERhdGE7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczsKIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhOwogc3RydWN0IFdlYlByZWZlcmVuY2Vz
U3RvcmU7CkBAIC0yNzUsNiArMjc2LDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1haW5UaHJl
YWRQaW5nKCk7CiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICB2b2lkIGdhbWVwYWRDb25uZWN0
ZWQoY29uc3QgR2FtZXBhZERhdGEmKTsKKyAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQodW5z
aWduZWQgaW5kZXgpOworICAgIHZvaWQgZ2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1l
cGFkRGF0YT4mKTsKKyNlbmRpZgorCiAgICAgdm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7CiAKICAg
ICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzlhZWRkNWVmZmU2MmE4
ZDY0MDUyOWQ1NTY4NmYzODJkMWU5NzAxZi4uY2Q1ZWE4MTJjNDVhYjBiOTVkNjk4MWY5YWE4MzYx
Y2ViNjc0NzRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMTAxLDQgKzEwMSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAogICAgIE1haW5UaHJl
YWRQaW5nKCkKKworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIEdhbWVwYWRDb25uZWN0ZWQoc3Ry
dWN0IFdlYktpdDo6R2FtZXBhZERhdGEgZ2FtZXBhZERhdGEpCisgICAgR2FtZXBhZERpc2Nvbm5l
Y3RlZCh1bnNpZ25lZCBpbmRleCkKKyAgICBHYW1lcGFkQWN0aXZpdHkoVmVjdG9yPFdlYktpdDo6
R2FtZXBhZERhdGE+IGdhbWVwYWREYXRhcykKKyNlbmRpZgogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>