<?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>176421</bug_id>
          
          <creation_ts>2017-09-05 13:22:29 -0700</creation_ts>
          <short_desc>[iOS WK2] Support tapping to add items to the current drag session in web content</short_desc>
          <delta_ts>2017-09-11 21:27:26 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>176348</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1345626</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-05 13:22:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/31144674&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345798</commentid>
    <comment_count>1</comment_count>
      <attachid>319979</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-05 21:16:14 -0700</bug_when>
    <thetext>Created attachment 319979
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346432</commentid>
    <comment_count>2</comment_count>
      <attachid>320142</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-07 11:12:18 -0700</bug_when>
    <thetext>Created attachment 320142
Fix non-cocoa builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347544</commentid>
    <comment_count>3</comment_count>
      <attachid>320456</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-11 12:31:06 -0700</bug_when>
    <thetext>Created attachment 320456
Rebase on master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347762</commentid>
    <comment_count>4</comment_count>
      <attachid>320509</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-11 18:17:08 -0700</bug_when>
    <thetext>Created attachment 320509
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347764</commentid>
    <comment_count>5</comment_count>
      <attachid>320510</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-11 18:26:16 -0700</bug_when>
    <thetext>Created attachment 320510
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347775</commentid>
    <comment_count>6</comment_count>
      <attachid>320510</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-11 19:09:31 -0700</bug_when>
    <thetext>Comment on attachment 320510
Patch for landing

Clearing flags on attachment: 320510

Committed r221900: &lt;http://trac.webkit.org/changeset/221900&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319979</attachid>
            <date>2017-09-05 21:16:14 -0700</date>
            <delta_ts>2017-09-07 11:12:16 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-176421-20170905211613.patch</filename>
            <type>text/plain</type>
            <size>26712</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQxNWNhMzdjZWQzYWMz
NWM2YjA2NmRmNWMzZjQ1MjBkMmU4NjMyMi4uYTQwZGVkZDVlNWI3MjM2YjI4OTJhY2UyNGU1ZmMw
OTI0NGE5NWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE3LTA5LTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBT
dXBwb3J0IHRhcHBpbmcgdG8gYWRkIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBp
biB3ZWIgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc2NDIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgc29tZSBk
cmFnIGluaXRpYXRpb24gbG9naWMgdG8gaGFuZGxlIHN0YXJ0aW5nIGEgZHJhZyB3aGVuIGRhdGEg
aGFzIGFscmVhZHkgYmVlbiB3cml0dGVuIHRvIHRoZQorICAgICAgICBwYXN0ZWJvYXJkIChpbiB0
aGUgY2FzZSBvZiBpT1MsIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQpLiBTZWUgYW5ub3RhdGVk
IGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBUZXN0czogRGF0YUlu
dGVyYWN0aW9uVGVzdHMuQWRkaXRpb25hbExpbmtBbmRJbWFnZUludG9Db250ZW50RWRpdGFibGUK
KworICAgICAgICAqIHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcp
OgorCisgICAgICAgIEFkZCBhIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBhcmd1bWVudCBo
ZXJlLCBhbmQgcmVwbGFjZSBjaGVja3MgZm9yICFkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhh
c0RhdGEoKQorICAgICAgICB3aXRoIGNoZWNrcyBmb3Igd2hldGhlciB0aGUgYXJndW1lbnQgaXMg
SGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpOby4gVGhlc2UgY2hlY2tzIGZvciBQYXN0ZWJv
YXJkOjpoYXNEYXRhKCkKKyAgICAgICAgY3VycmVudGx5IHByZXZlbnQgdXMgZnJvbSBvdmVyd3Jp
dGluZyBjdXN0b20gcGFzdGVib2FyZCBkYXRhLCBpbiB0aGUgY2FzZSB0aGF0IHRoZSBwYWdlIGhh
cyB3cml0dGVuIHBhc3RlYm9hcmQKKyAgICAgICAgZGF0YSB1c2luZyB0aGUgZXZlbnQncyBEYXRh
VHJhbnNmZXIuIEhvd2V2ZXIsIGluIHRoZSBjYXNlIG9mIGFkZGluZyBhZGRpdGlvbmFsIGRyYWcg
aXRlbXMgdG8gdGhlIHNlc3Npb24sIHdlCisgICAgICAgIHdpbGwgYWxyZWFkeSBoYXZlIHBhc3Rl
Ym9hcmQgZGF0YSwgc28gdGhlc2UgY2hlY2tzIHdpbGwgcHJldmVudCB1cyBmcm9tIHdyaXRpbmcg
ZGVmYXVsdCBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLgorICAgICAgICBTZWUgRXZlbnRIYW5kbGVy
OjpoYW5kbGVEcmFnIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdTdGF0ZS5oOgorCisgICAgICAgIFJlbW92ZSB0
aGUgZHJhZ2dlZENvbnRlbnRSYW5nZSBtZW1iZXIgZnJvbSBEcmFnU3RhdGUuIFNlZSBiZWxvdy4K
KworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
bW92ZURyYWdnZWRDb250ZW50RG9jdW1lbnRNYXJrZXJzRnJvbUFsbEZyYW1lc0luUGFnZSk6CisK
KyAgICAgICAgU2ltcGxpZnkgdGhlIGhhbmRsaW5nIG9mIGRyYWdnZWQgY29udGVudCByYW5nZSBt
YXJrZXJzLiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIERPTSBSYW5nZSBiZWluZyBkcmFnZ2VkIGFu
ZAorICAgICAgICByZW1vdmluZy9yZXBhaW50aW5nIHRoZSByYW5nZSBhZnRlciBkcmFnZ2luZyBl
bmRzLCBqdXN0IHJlcGFpbnQgdGhlIGNvbnRlbnRSZW5kZXJlciBvZiB0aGUgZnJhbWUgYmVpbmcg
ZHJhZ2dlZC4KKyAgICAgICAgV2hlbiB0aGUgZHJhZ2dpbmcgc2Vzc2lvbiBoYXMgY29tcGxldGVs
eSBlbmRlZCwgcmVtb3ZlIGFsbCBkcmFnZ2VkIGNvbnRlbnQgcmFuZ2VzIGZyb20gdGhlIHBhZ2Un
cyBtYWluZnJhbWUgYW5kCisgICAgICAgIGFsbCBvZiBpdHMgc3ViZnJhbWVzLCBhbmQgcmVwYWlu
dCBldmVyeXRoaW5nLgorCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRyYWdDYW5j
ZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaWRTdGFydERyYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdCk6CisKKyAg
ICAgICAgQWRkIGEgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gYXJndW1lbnQsIGluZGljYXRpbmcgd2hl
dGhlciBvciBub3QgdGhlIHdlYiBwcm9jZXNzIHdpbGwgYXR0ZW1wdCB0byBjb250aW51ZSB0aGUg
ZHJhZworICAgICAgICBzZXNzaW9uLCBpbiB3aGljaCBjYXNlIEV2ZW50SGFuZGxlcjo6ZHJhZ1Nv
dXJjZUVuZGVkQXQgc2hvdWxkIG5vdCByZW1vdmUgYW55IGV4aXN0aW5nIGRyYWdnZWQgY29udGVu
dCByYW5nZQorICAgICAgICBkb2N1bWVudCBtYXJrZXJzLgorCisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorCisgICAgICAgIFdyYXAgYGRyYWdzdGFydGAgZXZl
bnQgcHJvcGFnYXRpb24gd2l0aGluIGEgY2FsbCB0byBQYXN0ZWJvYXJkOjpkaWRDaGFuZ2VXaGls
ZVBlcmZvcm1pbmdUYXNrIHRvIGRldGVybWluZQorICAgICAgICB3aGV0aGVyIG9yIG5vdCBKYXZh
U2NyaXB0IGF0dGVtcHRlZCB0byBtb2RpZnkgdGhlIGNvbnRlbnRzIG9mIHRoZSBwYXN0ZWJvYXJk
LiBJZiBzbywgcGFzcyBhbG9uZworICAgICAgICBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6
OlllcyB3aGVuIGNhbGxpbmcgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZy4KKworICAgICAgICAo
V2ViQ29yZTo6cmVwYWludENvbnRlbnRzT2ZSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rp
b25BdFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisKKyAgICAgICAg
QWRkIGEgaGVscGVyIG1ldGhvZCB0byBQYXN0ZWJvYXJkIHRvIGRldGVybWluZSB3aGV0aGVyIHRo
ZSBwYXN0ZWJvYXJkIHdhcyBtdXRhdGVkIHdoaWxlIHBlcmZvcm1pbmcgYSBnaXZlbiB0YXNrLgor
ICAgICAgICBUaGlzIGlzIHVzZWQgaW4gRXZlbnRIYW5kbGVyLCB3aGVuIHByb3BhZ2F0aW5nIHRo
ZSBkcmFnc3RhcnQsIHRvIGRldGVybWluZSB3aGV0aGVyIGN1c3RvbSBkYXRhIHdhcyBzdXBwbGll
ZCB0bworICAgICAgICB0aGUgcGFzdGVib2FyZCBieSB0aGUgcGFnZS4KKworICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6ZGlkQ2hhbmdlV2hpbGVQZXJmb3JtaW5nVGFzayBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpdKToKKworICAgICAgICBTdG9wIGNs
ZWFyaW5nIG91dCB0aGUgc3RhZ2VkIGl0ZW0gcHJvdmlkZXIgcmVnaXN0cmF0aW9uIGxpc3Qgd2hl
biBzZXR0aW5nIGl0ZW0gcHJvdmlkZXJzLiBBZnRlciByZWZhY3RvcmluZyBpbgorICAgICAgICBy
MjIxNTk1LCBzdGFnZWQgcmVnaXN0cmF0aW9uIGxpc3RzIGFyZSBub3cgYXV0b21hdGljYWxseSBj
bGVhcmVkIG91dCB3aGVuICgxKSB0aGUgZHJhZy1hbmQtZHJvcCBpbnRlcmFjdGlvbgorICAgICAg
ICBzdGF0ZSBpcyBjbGVhcmVkIG91dCBpbiB0aGUgVUkgcHJvY2Vzcywgb3IgKDIpIHdoZW4gdGhl
IHJlZ2lzdHJhdGlvbiBsaXN0IGlzIHRha2VuIGJ5IFdLQ29udGVudFZpZXcgKHNlZQorICAgICAg
ICAtdGFrZVJlZ2lzdHJhdGlvbkxpc3QpIHdoZW4gZ2VuZXJhdGluZyBhbiBpdGVtIHByb3ZpZGVy
LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpkaWRDaGFuZ2VXaGlsZVBlcmZvcm1pbmdUYXNrIGNvbnN0KToK
KwogMjAxNy0wOS0wNSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxNDk1LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMjllMzU5
YzYyYTI5MmY5NGQyNjgzZDY5MmQyZDIyZDNiYzRlMDEzLi40YmVjZjE5ZmMwN2UxNjM5MzMwZDBj
OTUwZDMzNWExN2ZmNGFhYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDE3LTA5LTA1
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFtpT1Mg
V0syXSBTdXBwb3J0IHRhcHBpbmcgdG8gYWRkIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vz
c2lvbiBpbiB3ZWIgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc2NDIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3ND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyByZXF1ZXN0
IGFkZGl0aW9uYWwgZHJhZyBpdGVtcywgZW5kIHRoZSBjdXJyZW50IGRyYWcgaW4gdGhlIHdlYiBw
YWdlIGFuZCB0cnkgdG8gYmVnaW4gYSBkcmFnIGF0IHRoZSBuZXcKKyAgICAgICAgbG9jYXRpb24u
IFRoaXMgcHJvY2VzcyBpcyB0cmFuc3BhcmVudCB0byB0aGUgVUkgcHJvY2Vzcywgd2hpY2ggc3Rp
bGwgbWFpbnRhaW5zIHRoZSBzYW1lIFVJRHJhZ1Nlc3Npb24gd2l0aCB0aGUKKyAgICAgICAgb2xk
IGRyYWcgc291cmNlLgorCisgICAgICAgIEFzIG9wcG9zZWQgdG8gZmlyaW5nIGEgbmV3IGV2ZW50
IChmb3IgaW5zdGFuY2U6IGBhZGRkcmFnaXRlbWApLCB0aGlzIGFwcHJvYWNoIGlzIHRha2VuIHRv
IGVuc3VyZSB0aGF0IGlmIHRoZQorICAgICAgICBwYWdlIHdhbnRzIHRvIHByZXZlbnREZWZhdWx0
KCkgb24gYGRyYWdzdGFydGAsIGl0IHdvdWxkIGFsc28gcHJldmVudCB0aGUgdXNlciBmcm9tIGFk
ZGluZyBpdCBhcyBhbiBhZGRpdGlvbmFsCisgICAgICAgIGRyYWcgaXRlbS4gVXNpbmcgdGhlIG5l
dyBldmVudCBhcHByb2FjaCwgZGVhbGluZyB3aXRoIHRoaXMgY2FzZSB3b3VsZCBlaXRoZXIgcmVx
dWlyZSB0aGUgcGFnZSB0byBsaXN0ZW4gZm9yIGEKKyAgICAgICAgbmV3IGV2ZW50IGFuZCBjYWxs
IHByZXZlbnREZWZhdWx0KCksIHdoaWNoIHdvdWxkIGJyZWFrIGNvbXBhdGliaWxpdHkgd2l0aCBw
YWdlcyB0aGF0IG9ubHkgcHJldmVudERlZmF1bHQoKSBvbgorICAgICAgICBgZHJhZ3N0YXJ0YCwg
b3IgaXQgd291bGQgcmVxdWlyZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGlzIG5ldyBldmVu
dCB0byBiZSBfbm90XyBhZGRpbmcgYSBkcmFnIGl0ZW0sIGluIHdoaWNoCisgICAgICAgIGNhc2Ug
dGhpcyBhcHByb2FjaCB3b3VsZCByZXF1aXJlIHBhZ2VzIHRvIGFkb3B0IHRoZSBuZXcgZXZlbnQg
aW4gc29tZSBmb3JtLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1z
Rm9yRHJhZ1Nlc3Npb24pOgorCisyMDE3LTA5LTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFtpT1MgV0syXSBBZGQgcGx1bWJpbmcgZm9yIFdLQ29u
dGVudFZpZXcgdG8gYXNrIHRoZSB3ZWIgcHJvY2VzcyBmb3IgYWRkaXRpb25hbCBkcmFnIGl0ZW1z
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzNDgK
ICAgICAgICAgV29yayB0b3dhcmRzIDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3ND4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0FjdGlvbnMuaAppbmRleCBhZDI4NjM0NzIyNTU2ZGQ1ZGE4YjQ5OWFhYjFhY2I2ZTI5
MDQ4N2MxLi4yYzFhMzdhNmUwYmU1MjczYzJjNTUwZTQ4NDlmMjZmZTM1MjU4NzVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC02Miw1ICs2Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgRHJhZ09wZXJhdGlvbkRlbGV0ZSAgPSAzMiwKICAgICAgICAgRHJhZ09wZXJh
dGlvbkV2ZXJ5ICAgPSBVSU5UX01BWAogICAgIH0gRHJhZ09wZXJhdGlvbjsKKworICAgIGVudW0g
Y2xhc3MgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24geyBObywgWWVzIH07CisgICAgZW51bSBjbGFzcyBI
YXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgeyBObywgWWVzIH07CiAgICAgCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDQ3
MTNjMzkxMDMzYTI1OWQ0MTk1ZTFiNTExMDgwYjYzNTkyOTlmMmUuLmExZDFlNTc0YWNkMzNkYTc3
MmE0MzAwZDVkYjRiZGI5MDgwMTdhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCkBAIC04NjgsNyArODY4LDcgQEAgc3RhdGljIEludFBvaW50IGRyYWdMb2NGb3JTZWxl
Y3Rpb25EcmFnKEZyYW1lJiBzcmMpCiAgICAgcmV0dXJuIEludFBvaW50KHhwb3MsIHlwb3MpOwog
fQogCi1ib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJh
Z1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKQorYm9vbCBEcmFnQ29u
dHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERy
YWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBj
b25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGhh
c0RhdGEpCiB7CiAgICAgaWYgKCFzcmMudmlldygpIHx8ICFzcmMuY29udGVudFJlbmRlcmVyKCkg
fHwgIXN0YXRlLnNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTMzLDE0ICs5MzMs
MTQgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERy
YWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBBU1NFUlQoc3RhdGUuc291cmNlKTsK
ICAgICBFbGVtZW50JiBlbGVtZW50ID0gKnN0YXRlLnNvdXJjZTsKIAotICAgIGJvb2wgbXVzdFVz
ZUxlZ2FjeURyYWdDbGllbnQgPSBkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhhc0RhdGEoKSB8
fCBtX2NsaWVudC51c2VMZWdhY3lEcmFnQ2xpZW50KCk7CisgICAgYm9vbCBtdXN0VXNlTGVnYWN5
RHJhZ0NsaWVudCA9IGhhc0RhdGEgPT0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpZZXMg
fHwgbV9jbGllbnQudXNlTGVnYWN5RHJhZ0NsaWVudCgpOwogCiAgICAgSW50UmVjdCBkcmFnSW1h
Z2VCb3VuZHM7CiAgICAgSW1hZ2UqIGltYWdlID0gZ2V0SW1hZ2UoZWxlbWVudCk7CiAgICAgaWYg
KHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgewogICAgICAgICBQYXN0
ZWJvYXJkV3JpdGVyRGF0YSBwYXN0ZWJvYXJkV3JpdGVyRGF0YTsKIAotICAgICAgICBpZiAoIWRh
dGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0YSgpKSB7CisgICAgICAgIGlmIChoYXNEYXRh
ID09IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm8pIHsKICAgICAgICAgICAgIGlmIChz
cmMuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgcGFnZSBtYXkgaGF2ZSBjbGVhcmVkIG91dCB0aGUgc2VsZWN0aW9uIGluIHRoZSBkcmFn
c3RhcnQgaGFuZGxlciwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgYmFpbAogICAgICAgICAgICAg
ICAgIC8vIG91dCBvZiB0aGUgZHJhZywgc2luY2UgdGhlcmUgaXMgbm8gY29udGVudCB0byB3cml0
ZSB0byB0aGUgcGFzdGVib2FyZC4KQEAgLTEwMTYsNyArMTAxNiw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFn
T3BlcmF0aW9uCiAgICAgICAgIC8vIFdlIHNob3VsZG4ndCBiZSBzdGFydGluZyBhIGRyYWcgZm9y
IGFuIGltYWdlIHRoYXQgY2FuJ3QgcHJvdmlkZSBhbiBleHRlbnNpb24uCiAgICAgICAgIC8vIFRo
aXMgaXMgYW4gZWFybHkgZGV0ZWN0aW9uIGZvciBwcm9ibGVtcyBlbmNvdW50ZXJlZCBsYXRlciB1
cG9uIGRyb3AuCiAgICAgICAgIEFTU0VSVCghaW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCkuaXNF
bXB0eSgpKTsKLSAgICAgICAgaWYgKCFkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhhc0RhdGEo
KSkgeworICAgICAgICBpZiAoaGFzRGF0YSA9PSBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6
Ok5vKSB7CiAgICAgICAgICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBpbWFnZVVSTDsKICAgICAg
ICAgICAgIGlmIChlbGVtZW50LmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpCiAgICAgICAgICAg
ICAgICAgc2VsZWN0RWxlbWVudChlbGVtZW50KTsKQEAgLTEwNDAsNyArMTA0MCw3IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0
YXRlLCBEcmFnT3BlcmF0aW9uCiAKICAgICAgICAgU3RyaW5nIHRleHRDb250ZW50V2l0aFNpbXBs
aWZpZWRXaGl0ZVNwYWNlID0gaGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpLnNpbXBsaWZ5V2hp
dGVTcGFjZSgpOwogCi0gICAgICAgIGlmICghZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNE
YXRhKCkpIHsKKyAgICAgICAgaWYgKGhhc0RhdGEgPT0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmRE
YXRhOjpObykgewogICAgICAgICAgICAgLy8gU2ltcGxpZnkgd2hpdGVzcGFjZSBzbyB0aGUgdGl0
bGUgcHV0IG9uIHRoZSBkYXRhVHJhbnNmZXIgcmVzZW1ibGVzIHdoYXQgdGhlIHVzZXIgc2Vlcwog
ICAgICAgICAgICAgLy8gb24gdGhlIHdlYiBwYWdlLiBUaGlzIGluY2x1ZGVzIHJlcGxhY2luZyBu
ZXdsaW5lcyB3aXRoIHNwYWNlcy4KICAgICAgICAgICAgIGlmIChtdXN0VXNlTGVnYWN5RHJhZ0Ns
aWVudCkKQEAgLTExMDMsNyArMTEwMyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAKICAg
ICAgICAgc3JjLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7CiAgICAg
ICAgIGF1dG8gcHJldmlvdXNTZWxlY3Rpb24gPSBzcmMuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7
Ci0gICAgICAgIGlmICghZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkpIHsKKyAg
ICAgICAgaWYgKGhhc0RhdGEgPT0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObykgewog
ICAgICAgICAgICAgc2VsZWN0RWxlbWVudChlbGVtZW50KTsKICAgICAgICAgICAgIGlmICghYXR0
YWNobWVudFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGF0dGFj
aG1lbnQgVVJMIHNwZWNpZmllZCBieSB0aGUgZmlsZSBhdHRyaWJ1dGUgdG8gcG9wdWxhdGUgdGhl
IHBhc3RlYm9hcmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggZmI5MDFm
M2YxZDVjMjY3OWYwNDYwZTdlNzg2MDcxMjE2NzQyZjdlMC4uMDViODQ4N2QxZDY0ZjU1MjE3NDdh
MDQ1YjYzNGM1MGFmMDFlN2RkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApA
QCAtOTEsNyArOTEsNyBAQCBzdHJ1Y3QgRHJhZ1N0YXRlOwogICAgICAgICAKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBwbGFjZURyYWdDYXJldChjb25zdCBJbnRQb2ludCYpOwogICAgICAg
ICAKLSAgICAgICAgYm9vbCBzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwg
RHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQs
IGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKTsKKyAgICAgICAgYm9vbCBzdGFydERyYWcoRnJh
bWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBI
YXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgICAgICBzdGF0aWMgY29uc3QgSW50U2l6
ZSYgbWF4RHJhZ0ltYWdlU2l6ZSgpOwogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IGlu
dCBNYXhPcmlnaW5hbEltYWdlQXJlYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCmluZGV4IDYyNThh
YmQ1Y2NkNTQ0ZjBmNzk1MmM0NDUwMTNhNThmOGYyMWMxNTcuLjZkMTYyNTkwMGUzNDVmMzNlZmE2
NTA4YTA1ZTUzMzYyMTRhYzhiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaApAQCAtMzQsNyAr
MzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBEcmFnU3RhdGUgewogICAgIFJl
ZlB0cjxFbGVtZW50PiBzb3VyY2U7IC8vIEVsZW1lbnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJj
ZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUuCi0gICAgUmVmUHRyPFJhbmdlPiBkcmFn
Z2VkQ29udGVudFJhbmdlOwogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudHM7CiAgICAgRHJh
Z1NvdXJjZUFjdGlvbiB0eXBlOwogICAgIFJlZlB0cjxEYXRhVHJhbnNmZXI+IGRhdGFUcmFuc2Zl
cjsgLy8gVXNlZCBvbiBvbmx5IHRoZSBzb3VyY2Ugc2lkZSBvZiBkcmFnZ2luZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBlNTM4YmE2YzUzMTJkOWM4MTllYjVhNzU2NjQw
YWM1YWJhOGNkM2FiLi42YmFmNmQ2M2RlM2U5MzczZDhkZWQzNjA0NDA2NTI1ZTcxYzdhOGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5j
bHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJk
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgpAQCAtMzQ2NSwzMSAr
MzQ2NiwyMiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6aW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpCiAg
ICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQg
cmVwYWludENvbnRlbnRzT2ZSYW5nZShSZWZQdHI8UmFuZ2U+IHJhbmdlKQorc3RhdGljIHZvaWQg
cmVtb3ZlRHJhZ2dlZENvbnRlbnREb2N1bWVudE1hcmtlcnNGcm9tQWxsRnJhbWVzSW5QYWdlKFBh
Z2UmIHBhZ2UpCiB7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0
byogY29udGFpbmVyID0gcmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKCk7Ci0gICAgaWYg
KCFjb250YWluZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0
IGFsbCBub2RlcyBlbmNsb3NlZCBpbiB0aGlzIFJhbmdlIGFyZSByZXBhaW50ZWQuCi0gICAgaWYg
KGF1dG8gcmVuZGVyZXJUb1JlcGFpbnQgPSBjb250YWluZXItPnJlbmRlcmVyKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIGNvbnRhaW5pbmdSZW5kZXJlciA9IHJlbmRlcmVyVG9SZXBhaW50LT5jb250
YWluZXIoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyVG9SZXBhaW50ID0gY29udGFpbmluZ1JlbmRl
cmVyOwotICAgICAgICByZW5kZXJlclRvUmVwYWludC0+cmVwYWludCgpOworICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+bWFya2VycygpLnJlbW92ZU1hcmtl
cnMoRG9jdW1lbnRNYXJrZXI6OkRyYWdnZWRDb250ZW50KTsKICAgICB9CisKKyAgICBpZiAoYXV0
byogbWFpbkZyYW1lUmVuZGVyZXIgPSBwYWdlLm1haW5GcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigp
KQorICAgICAgICBtYWluRnJhbWVSZW5kZXJlci0+cmVwYWludFJvb3RDb250ZW50cygpOwogfQog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ0NhbmNlbGxlZCgpCiB7CiAjaWYgRU5BQkxFKERBVEFf
SU5URVJBQ1RJT04pCi0gICAgaWYgKGF1dG8gcmFuZ2UgPSBkcmFnU3RhdGUoKS5kcmFnZ2VkQ29u
dGVudFJhbmdlKSB7Ci0gICAgICAgIHJhbmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpLnJl
bW92ZU1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6OkRyYWdnZWRDb250ZW50KTsKLSAgICAgICAgcmVw
YWludENvbnRlbnRzT2ZSYW5nZShyYW5nZSk7Ci0gICAgfQotICAgIGRyYWdTdGF0ZSgpLmRyYWdn
ZWRDb250ZW50UmFuZ2UgPSBudWxscHRyOworICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5w
YWdlKCkpCisgICAgICAgIHJlbW92ZURyYWdnZWRDb250ZW50RG9jdW1lbnRNYXJrZXJzRnJvbUFs
bEZyYW1lc0luUGFnZSgqcGFnZSk7CiAjZW5kaWYKIH0KIApAQCAtMzUwNCwyMiArMzQ5NiwyNCBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkU3RhcnREcmFnKCkKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBSZWZQdHI8UmFuZ2U+IGRyYWdnZWRDb250ZW50UmFuZ2U7
CiAgICAgaWYgKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKQot
ICAgICAgICBkcmFnU3RhdGUoKS5kcmFnZ2VkQ29udGVudFJhbmdlID0gbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBkcmFnZ2VkQ29u
dGVudFJhbmdlID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRS
YW5nZSgpOwogICAgIGVsc2UgewogICAgICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uKGRyYWdT
b3VyY2UuZ2V0KCksIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKTsKICAgICAgICAg
UG9zaXRpb24gZW5kUG9zaXRpb24oZHJhZ1NvdXJjZS5nZXQoKSwgUG9zaXRpb246OlBvc2l0aW9u
SXNBZnRlckFuY2hvcik7Ci0gICAgICAgIGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKGRyYWdTb3VyY2UtPmRvY3VtZW50KCksIHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKTsKKyAgICAgICAgZHJhZ2dlZENvbnRlbnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
ZHJhZ1NvdXJjZS0+ZG9jdW1lbnQoKSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwogICAg
IH0KIAotICAgIGlmIChhdXRvIHJhbmdlID0gZHJhZ1N0YXRlKCkuZHJhZ2dlZENvbnRlbnRSYW5n
ZSkgewotICAgICAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREcmFnZ2Vk
Q29udGVudE1hcmtlcihyYW5nZS5nZXQoKSk7Ci0gICAgICAgIHJlcGFpbnRDb250ZW50c09mUmFu
Z2UocmFuZ2UpOworICAgIGlmIChkcmFnZ2VkQ29udGVudFJhbmdlKSB7CisgICAgICAgIGRyYWdn
ZWRDb250ZW50UmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRHJhZ2dlZENvbnRl
bnRNYXJrZXIoZHJhZ2dlZENvbnRlbnRSYW5nZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IG1fZnJhbWUuY29udGVudFJlbmRlcmVyKCkpCisgICAgICAgICAgICByZW5kZXJl
ci0+cmVwYWludFJvb3RDb250ZW50cygpOwogICAgIH0KICNlbmRpZgogfQogCi12b2lkIEV2ZW50
SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVu
dCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJj
ZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBv
cGVyYXRpb24sIE1heUV4dGVuZERyYWdTZXNzaW9uIG1heUV4dGVuZERyYWdTZXNzaW9uKQogewog
ICAgIC8vIFNlbmQgYSBoaXQgdGVzdCByZXF1ZXN0IHNvIHRoYXQgUmVuZGVyTGF5ZXIgZ2V0cyBh
IGNoYW5jZSB0byB1cGRhdGUgdGhlIDpob3ZlciBhbmQgOmFjdGl2ZSBwc2V1ZG9jbGFzc2VzLgog
ICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2UgfCBIaXRU
ZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KTsKQEAgLTM1MzIsOSAr
MzUyNiw5IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEcmFnT3BlcmF0CiAgICAgfQogICAgIGludmFsaWRhdGVE
YXRhVHJhbnNmZXIoKTsKIAotICAgIGlmIChhdXRvIHJhbmdlID0gZHJhZ1N0YXRlKCkuZHJhZ2dl
ZENvbnRlbnRSYW5nZSkgewotICAgICAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMo
KS5yZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpEcmFnZ2VkQ29udGVudCk7Ci0gICAgICAg
IHJlcGFpbnRDb250ZW50c09mUmFuZ2UocmFuZ2UpOworICAgIGlmIChtYXlFeHRlbmREcmFnU2Vz
c2lvbiA9PSBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6Tm8pIHsKKyAgICAgICAgaWYgKGF1dG8qIHBh
Z2UgPSBtX2ZyYW1lLnBhZ2UoKSkKKyAgICAgICAgICAgIHJlbW92ZURyYWdnZWRDb250ZW50RG9j
dW1lbnRNYXJrZXJzRnJvbUFsbEZyYW1lc0luUGFnZSgqcGFnZSk7CiAgICAgfQogCiAgICAgZHJh
Z1N0YXRlKCkuc291cmNlID0gbnVsbHB0cjsKQEAgLTM2NjAsNiArMzY1NCw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
IGV2ZW50LCBDaGVja0RyCiAgICAgaW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwogCiAgICAgZHJh
Z1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gY3JlYXRlRHJhZ2dpbmdEYXRhVHJhbnNmZXIoKTsKKyAg
ICBib29sIGRpZENoYW5nZVBhc3RlYm9hcmREdXJpbmdEcmFnU3RhcnQgPSBmYWxzZTsKICAgICAK
ICAgICBpZiAoZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMpIHsKICAgICAgICAgLy8g
Q2hlY2sgdG8gc2VlIGlmIHRoZSBpcyBhIERPTSBiYXNlZCBkcmFnLiBJZiBpdCBpcywgZ2V0IHRo
ZSBET00gc3BlY2lmaWVkIGRyYWcgaW1hZ2UgYW5kIG9mZnNldC4KQEAgLTM2ODAsOCArMzY3NSw5
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gCiAK
LSAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBkaXNwYXRjaERyYWdTcmNFdmVudChl
dmVudE5hbWVzKCkuZHJhZ3N0YXJ0RXZlbnQsIG1fbW91c2VEb3duKQotICAgICAgICAgICAgJiYg
IW1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKTsKKyAg
ICAgICAgZGlkQ2hhbmdlUGFzdGVib2FyZER1cmluZ0RyYWdTdGFydCA9IGRyYWdTdGF0ZSgpLmRh
dGFUcmFuc2Zlci0+cGFzdGVib2FyZCgpLmRpZENoYW5nZVdoaWxlUGVyZm9ybWluZ1Rhc2soW3Ro
aXNdIHsKKyAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZGlzcGF0Y2hEcmFn
U3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50LCBtX21vdXNlRG93bikgJiYgIW1f
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKTsKKyAgICAg
ICAgfSk7CiAKICAgICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZv
clNlY3VyaXR5KCk7CiAKQEAgLTM2OTgsNyArMzY5NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVj
a0RyCiAgICAgCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAgbV9kaWRTdGFydERyYWcgPSBwYWdl
ICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgp
LCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOworICAgICAgICBtX2RpZFN0
YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWcobV9mcmFt
ZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93blBvcywgZGlk
Q2hhbmdlUGFzdGVib2FyZER1cmluZ0RyYWdTdGFydCA/IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJk
RGF0YTo6WWVzIDogSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObyk7CiAgICAgICAgIC8v
IEluIFdlYktpdDIgd2UgY291bGQgcmUtZW50ZXIgdGhpcyBjb2RlIGFuZCBzdGFydCBhbm90aGVy
IGRyYWcuCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2l0aCB0aGUg
b3duZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkIGFuZCB0aGUgcHJvbWlzZWQgdHlwZXMuCiAgICAg
ICAgIGlmIChtX2RpZFN0YXJ0RHJhZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5k
ZXggMjI1MWY5YWVkNTQwYmRlNGE3OTMwYjA3YzJjZDEzZGY2MmMyNDYwNi4uODk3NDY2MTlmNTVl
MTMxNmJlYjRlZGQ3YTAxNjg3MDM4ZmJkNjFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCkBAIC0yNTYsNyArMjU2LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2Vs
bGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmLCBEcmFnT3BlcmF0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERyYWdPcGVy
YXRpb24sIE1heUV4dGVuZERyYWdTZXNzaW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBmb2N1c0RvY3VtZW50VmlldygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCmluZGV4IDgwNjQ0YjdmZDgyM2RiYmYyMDVkMjky
YjAwYjM2Y2NkZmQ4NDI3ZWMuLjhmMGZiNGUyZWFiYTNkZDk2Y2VlYjQ0MzhmOGYzYjAzOTk1OGIx
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAgLTYw
Niw3ICs2MDYsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6dHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlv
bkF0UG9pbnQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aQogCiAgICAgU2V0Rm9yU2NvcGU8
Ym9vbD4gbW91c2VQcmVzc2VkKG1fbW91c2VQcmVzc2VkLCB0cnVlKTsKICAgICBkcmFnU3RhdGUo
KS5zb3VyY2UgPSBudWxscHRyOwotICAgIGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2Ug
PSBudWxscHRyOwogICAgIG1fbW91c2VEb3duUG9zID0gcHJvdGVjdGVkRnJhbWUtPnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyhzeW50aGV0aWNNb3VzZU1vdmVFdmVudC5wb3NpdGlvbigpKTsKIAog
ICAgIHJldHVybiBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChoaXRUZXN0ZWRNb3VzZUV2ZW50LCBE
b250Q2hlY2tEcmFnSHlzdGVyZXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
aW5kZXggNWUyNmJmMmZiZjY2NDcyMDM0Zjg5Y2E5Y2FhZDQzY2I4ZmZmYzUzOS4uNTA3ZGJmZDE2
ZDYxNTk3OWYwYzM2ZjcxOGMwMDc2NDkzYTc5OGJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuaApAQCAtMTY5LDYgKzE2OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBT
dHJpbmcmIHR5cGUpOwogCisgICAgdmlydHVhbCBib29sIGRpZENoYW5nZVdoaWxlUGVyZm9ybWlu
Z1Rhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+KSBjb25zdDsKKwogICAgIHZpcnR1YWwgdm9pZCB3
cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CmluZGV4IDI5OTcxNWQ1NmFlZGI2ODA0Nzk4ZThlYzYxN2IyZWQyY2RlOTVlZjAuLmI5ZGVjZTMw
MDNkYzk4ZTg4NzYwMjY0YjdiZDNhYzc1YmY4ZjUxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zNTYsNiArMzU2LDEzIEBAIHZvaWQgUGFz
dGVib2FyZDo6Y2xlYXIoKQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoU3RyaW5nKCksIFN0cmluZygpLCBtX3Bhc3RlYm9h
cmROYW1lKTsKIH0KIAorYm9vbCBQYXN0ZWJvYXJkOjpkaWRDaGFuZ2VXaGlsZVBlcmZvcm1pbmdU
YXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiB0YXNrKSBjb25zdAoreworICAgIGF1dG8gY2hhbmdl
Q291bnRCZWZvcmVUYXNrID0gY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKG1fcGFzdGVib2FyZE5h
bWUpOworICAgIHRhc2soKTsKKyAgICByZXR1cm4gY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKG1f
cGFzdGVib2FyZE5hbWUpICE9IGNoYW5nZUNvdW50QmVmb3JlVGFzazsKK30KKwogU3RyaW5nIFBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIFBhc3RlYm9h
cmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCAzOTJkNWIwZWM0OWNhNjJjNjZiMmMwNGRh
OTgyYjViYzhjNDYwYjdhLi44NmY1YjYxZWQ3MDUxODFjYWNiNjE2Zjk4ZTFiYWQ1ZGZlYzYyMTEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtMjc3LDcgKzI3Nyw2IEBAIC0gKHZvaWQpc2V0SXRlbVBy
b3ZpZGVyczooTlNBcnJheTxfX2tpbmRvZiBOU0l0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRl
cnMKICAgICBfaXRlbVByb3ZpZGVycyA9IGl0ZW1Qcm92aWRlcnM7CiAgICAgX2NoYW5nZUNvdW50
Kys7CiAgICAgX2NhY2hlZFR5cGVJZGVudGlmaWVycyA9IG5pbDsKLSAgICBfc3RhZ2VkUmVnaXN0
cmF0aW9uSW5mb0xpc3QgPSBuaWw7CiAKICAgICBOU011dGFibGVBcnJheSAqdHlwZVRvRmlsZVVS
TE1hcHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6aXRlbVByb3ZpZGVycy5j
b3VudF07CiAgICAgW2l0ZW1Qcm92aWRlcnMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6W3R5
cGVUb0ZpbGVVUkxNYXBzXSAoVUlJdGVtUHJvdmlkZXIgKiwgTlNVSW50ZWdlciwgQk9PTCAqKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGNk
NjJhMmRjYmJjMTE5ODg1NjUyNDcwOWJlZDhkZmZlZDJkNTNmMjguLmExZjAwYzQxYjQ0OTViNzcw
M2FmY2Y5OGQ1YjY5M2IzMjNjNjc4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC01NjIsNiArNTYyLDEzIEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKK2Jvb2wgUGFzdGVib2FyZDo6ZGlkQ2hhbmdlV2hpbGVQZXJmb3JtaW5nVGFzayhXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4gdGFzaykgY29uc3QKK3sKKyAgICBhdXRvIGNoYW5nZUNvdW50QmVmb3Jl
VGFzayA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdl
Q291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgdGFzaygpOworICAgIHJldHVybiBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVi
b2FyZE5hbWUpICE9IGNoYW5nZUNvdW50QmVmb3JlVGFzazsKK30KKwogc3RhdGljIFN0cmluZyB1
dGlUeXBlRnJvbUNvY29hVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXRpVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVk
SWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSwgdHlwZS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCAwKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNDc3OTE2MTE5YmZkMjFlOGEwMGRhZWYwMWM0
ZTEzOTI1MmQ2NzdkMi4uYmNkYjBiZjA2YTBjYTljMzlmZjVmM2M1YjRhNTI1NDU2MTJiYzA1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KQEAgLTU3LDYgKzU3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0Nv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgpAQCAtNjMzLDkgKzYzNCwx
NSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdGFydERhdGFJbnRlcmFjdGlvbihjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0CiAKIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0
aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgLy8gVG8gYXVnbWVudCB0aGUgcGxhdGZvcm0gZHJhZyBzZXNzaW9uIHdpdGggYWRkaXRp
b25hbCBpdGVtcywgZW5kIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBhbmQgYmVnaW4gYSBuZXcg
ZHJhZyBzZXNzaW9uIHdpdGggdGhlIG5ldyBkcmFnIGl0ZW0uCisgICAgLy8gVGhpcyBwcm9jZXNz
IGlzIG9wYXF1ZSB0byB0aGUgVUkgcHJvY2Vzcywgd2hpY2ggc3RpbGwgbWFpbnRhaW5zIHRoZSBv
bGQgZHJhZyBpdGVtIGluIGl0cyBkcmFnIHNlc3Npb24uIFNpbWlsYXJseSwgdGhpcyBwZXJzaXN0
ZW50IGRyYWcgc2Vzc2lvbgorICAgIC8vIGlzIG9wYXF1ZSB0byB0aGUgd2ViIHByb2Nlc3MsIHdo
aWNoIG9ubHkgc2VlcyB0aGF0IHRoZSBjdXJyZW50IGRyYWcgaGFzIGVuZGVkLCBhbmQgdGhhdCBh
IG5ldyBvbmUgaXMgYmVnaW5uaW5nLgorICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChjbGll
bnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpLCAw
LCBOb1RhcCk7CisgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbmRlZCgpOworICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZl
bnQsIERyYWdPcGVyYXRpb25Ob25lLCBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6WWVzKTsKIAotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVt
c1JlcXVlc3QoZmFsc2UpKTsKKyAgICBib29sIGRpZEhhbmRsZURyYWcgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLmV2ZW50SGFuZGxlcigpLnRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb25BdFBvaW50KGNs
aWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbik7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChkaWRIYW5kbGVEcmFn
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZTM0
MDczZTM5OTNkNWQ2OGUwNTYxMTU1ZmQ3ZmZlNzhhNTg5NTZhLi4xM2IzNjMwODNlMDdiMzM2N2Vh
YjQ2ZWRmZWM2MWM1OGI3YzMxNWE3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMTctMDktMDUgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKKyAgICAgICAgW2lPUyBXSzJdIFN1cHBvcnQg
dGFwcGluZyB0byBhZGQgaXRlbXMgdG8gdGhlIGN1cnJlbnQgZHJhZyBzZXNzaW9uIGluIHdlYiBj
b250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzY0MjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMTQ0Njc0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBuZXcgZHJhZyBhbmQgZHJv
cCB0ZXN0IHRoYXQgYmVnaW5zIGEgZHJhZyBvbiBhIHRleHQgc2VsZWN0aW9uLCBhZGRzIGFuIGlt
YWdlIGFuZCBhIGxpbmssIGFuZCB0aGVuIGRyb3BzCisgICAgICAgIGludG8gYSBjb250ZW50ZWRp
dGFibGUgYXJlYS4gVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSB0ZXh0LCBsaW5rIGFuZCBpbWFnZSBh
cmUgaW5zZXJ0ZWQgaW50byB0aGUgZWRpdGFibGUgYXJlYQorICAgICAgICB1cG9uIGRyb3AuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCisyMDE3LTA5LTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFtpT1MgV0syXSBBZGQg
cGx1bWJpbmcgZm9yIFdLQ29udGVudFZpZXcgdG8gYXNrIHRoZSB3ZWIgcHJvY2VzcyBmb3IgYWRk
aXRpb25hbCBkcmFnIGl0ZW1zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzYzNDgKICAgICAgICAgV29yayB0b3dhcmRzIDxyZGFyOi8vcHJvYmxlbS8z
MTE0NDY3ND4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJ
bnRlcmFjdGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUlu
dGVyYWN0aW9uVGVzdHMubW0KaW5kZXggNTViMGJiZGYxNThhYjdmNGU5NjZkNzc0Mzg1NDU4ODAw
YWI2NDMxZS4uMTQ1NzI1MTQ4YzczMjIwOTZhNjMyMTQyMmJhZmJmNGE2Yjc4OThjYSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVz
dHMubW0KQEAgLTEyNDksNiArMTI0OSwyMSBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBB
ZGRpdGlvbmFsSXRlbXNDYW5CZVByZXZlbnRlZE9uRHJhZ1N0YXJ0KQogICAgIEVYUEVDVF9XS19T
VFJFUSgiQUJDRCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0
b3IudGV4dENvbnRlbnQiXSk7CiB9CiAKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEFkZGl0
aW9uYWxMaW5rQW5kSW1hZ2VJbnRvQ29udGVudEVkaXRhYmxlKQoreworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAic2VsZWN0ZWQtdGV4dC1pbWFnZS1saW5rLWFuZC1lZGl0YWJsZSJdOworCisg
ICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3IgcnVu
RnJvbTpDR1BvaW50TWFrZSg1MCwgNTApIHRvOkNHUG9pbnRNYWtlKDUwLCA0MDApIGFkZGl0aW9u
YWxJdGVtUmVxdWVzdExvY2F0aW9uczpAeworICAgICAgICBAMC4zMzogW05TVmFsdWUgdmFsdWVX
aXRoQ0dQb2ludDpDR1BvaW50TWFrZSg1MCwgMTUwKV0sCisgICAgICAgIEAwLjY2OiBbTlNWYWx1
ZSB2YWx1ZVdpdGhDR1BvaW50OkNHUG9pbnRNYWtlKDUwLCAyNTApXQorICAgIH1dOworICAgIEVY
UEVDVF9XS19TVFJFUSgiQUJDRCBBIGxpbmsiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZWRpdG9yLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCIhIWVkaXRvci5xdWVyeVNlbGVjdG9y
KCdpbWcnKSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8i
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLnF1ZXJ5U2Vs
ZWN0b3IoJ2EnKS5ocmVmIl0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAK
ICNlbmRpZiAvLyBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320142</attachid>
            <date>2017-09-07 11:12:18 -0700</date>
            <delta_ts>2017-09-11 10:49:57 -0700</delta_ts>
            <desc>Fix non-cocoa builds</desc>
            <filename>bug-176421-20170907111217.patch</filename>
            <type>text/plain</type>
            <size>27506</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQxNWNhMzdjZWQzYWMz
NWM2YjA2NmRmNWMzZjQ1MjBkMmU4NjMyMi4uNzM1ZTY4NzY4NWNjYTJjZTNjZGNhMmM0OTcwMDZl
NmE5YzE2ZjZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA5LTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBT
dXBwb3J0IHRhcHBpbmcgdG8gYWRkIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBp
biB3ZWIgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc2NDIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgc29tZSBk
cmFnIGluaXRpYXRpb24gbG9naWMgdG8gaGFuZGxlIHN0YXJ0aW5nIGEgZHJhZyB3aGVuIGRhdGEg
aGFzIGFscmVhZHkgYmVlbiB3cml0dGVuIHRvIHRoZQorICAgICAgICBwYXN0ZWJvYXJkIChpbiB0
aGUgY2FzZSBvZiBpT1MsIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQpLiBTZWUgYW5ub3RhdGVk
IGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBUZXN0czogRGF0YUlu
dGVyYWN0aW9uVGVzdHMuQWRkaXRpb25hbExpbmtBbmRJbWFnZUludG9Db250ZW50RWRpdGFibGUK
KworICAgICAgICAqIHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcp
OgorCisgICAgICAgIEFkZCBhIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBhcmd1bWVudCBo
ZXJlLCBhbmQgcmVwbGFjZSBjaGVja3MgZm9yICFkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhh
c0RhdGEoKQorICAgICAgICB3aXRoIGNoZWNrcyBmb3Igd2hldGhlciB0aGUgYXJndW1lbnQgaXMg
SGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpOby4gVGhlc2UgY2hlY2tzIGZvciBQYXN0ZWJv
YXJkOjpoYXNEYXRhKCkKKyAgICAgICAgY3VycmVudGx5IHByZXZlbnQgdXMgZnJvbSBvdmVyd3Jp
dGluZyBjdXN0b20gcGFzdGVib2FyZCBkYXRhLCBpbiB0aGUgY2FzZSB0aGF0IHRoZSBwYWdlIGhh
cyB3cml0dGVuIHBhc3RlYm9hcmQKKyAgICAgICAgZGF0YSB1c2luZyB0aGUgZXZlbnQncyBEYXRh
VHJhbnNmZXIuIEhvd2V2ZXIsIGluIHRoZSBjYXNlIG9mIGFkZGluZyBhZGRpdGlvbmFsIGRyYWcg
aXRlbXMgdG8gdGhlIHNlc3Npb24sIHdlCisgICAgICAgIHdpbGwgYWxyZWFkeSBoYXZlIHBhc3Rl
Ym9hcmQgZGF0YSwgc28gdGhlc2UgY2hlY2tzIHdpbGwgcHJldmVudCB1cyBmcm9tIHdyaXRpbmcg
ZGVmYXVsdCBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLgorICAgICAgICBTZWUgRXZlbnRIYW5kbGVy
OjpoYW5kbGVEcmFnIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdTdGF0ZS5oOgorCisgICAgICAgIFJlbW92ZSB0
aGUgZHJhZ2dlZENvbnRlbnRSYW5nZSBtZW1iZXIgZnJvbSBEcmFnU3RhdGUuIFNlZSBiZWxvdy4K
KworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
bW92ZURyYWdnZWRDb250ZW50RG9jdW1lbnRNYXJrZXJzRnJvbUFsbEZyYW1lc0luUGFnZSk6CisK
KyAgICAgICAgU2ltcGxpZnkgdGhlIGhhbmRsaW5nIG9mIGRyYWdnZWQgY29udGVudCByYW5nZSBt
YXJrZXJzLiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIERPTSBSYW5nZSBiZWluZyBkcmFnZ2VkIGFu
ZAorICAgICAgICByZW1vdmluZy9yZXBhaW50aW5nIHRoZSByYW5nZSBhZnRlciBkcmFnZ2luZyBl
bmRzLCBqdXN0IHJlcGFpbnQgdGhlIGNvbnRlbnRSZW5kZXJlciBvZiB0aGUgZnJhbWUgYmVpbmcg
ZHJhZ2dlZC4KKyAgICAgICAgV2hlbiB0aGUgZHJhZ2dpbmcgc2Vzc2lvbiBoYXMgY29tcGxldGVs
eSBlbmRlZCwgcmVtb3ZlIGFsbCBkcmFnZ2VkIGNvbnRlbnQgcmFuZ2VzIGZyb20gdGhlIHBhZ2Un
cyBtYWluZnJhbWUgYW5kCisgICAgICAgIGFsbCBvZiBpdHMgc3ViZnJhbWVzLCBhbmQgcmVwYWlu
dCBldmVyeXRoaW5nLgorCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRyYWdDYW5j
ZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaWRTdGFydERyYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdCk6CisKKyAg
ICAgICAgQWRkIGEgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gYXJndW1lbnQsIGluZGljYXRpbmcgd2hl
dGhlciBvciBub3QgdGhlIHdlYiBwcm9jZXNzIHdpbGwgYXR0ZW1wdCB0byBjb250aW51ZSB0aGUg
ZHJhZworICAgICAgICBzZXNzaW9uLCBpbiB3aGljaCBjYXNlIEV2ZW50SGFuZGxlcjo6ZHJhZ1Nv
dXJjZUVuZGVkQXQgc2hvdWxkIG5vdCByZW1vdmUgYW55IGV4aXN0aW5nIGRyYWdnZWQgY29udGVu
dCByYW5nZQorICAgICAgICBkb2N1bWVudCBtYXJrZXJzLgorCisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ1N0YXJ0RXZlbnQpOgorCisgICAgICAgIEhlbHBlciBt
ZXRob2QgdG8gZGlzcGF0Y2ggYSBgZHJhZ3N0YXJ0YCBldmVudCwgcmV0dXJuIHdoZXRoZXIgb3Ig
bm90IHRvIHByb2NlZWQgd2l0aCB0aGUgZHJhZywgYW5kIGFsc28gY29tcHV0ZQorICAgICAgICAo
YXMgYW4gb3V0cGFyYW0pIHdoZXRoZXIgb3Igbm90IGN1c3RvbSBwYXN0ZWJvYXJkIGRhdGEgd2Fz
IHdyaXR0ZW4gZHVyaW5nIHRoZSBldmVudC4KKworICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVEcmFnKToKKworICAgICAgICBJZiBjdXN0b20gZGF0YSB3YXMgd3JpdHRlbiBk
dXJpbmcgYGRyYWdzdGFydGAsIHBhc3MgYWxvbmcgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
OjpZZXMgd2hlbiBjYWxsaW5nCisgICAgICAgIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcuCisK
KyAgICAgICAgKFdlYkNvcmU6OnJlcGFpbnRDb250ZW50c09mUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9pb3MvRXZlbnRIYW5k
bGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2luRGF0
YUludGVyYWN0aW9uQXRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6Y2hhbmdlQ291bnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSk6CisKKyAgICAgICAgU3RvcCBjbGVhcmlu
ZyBvdXQgdGhlIHN0YWdlZCBpdGVtIHByb3ZpZGVyIHJlZ2lzdHJhdGlvbiBsaXN0IHdoZW4gc2V0
dGluZyBpdGVtIHByb3ZpZGVycy4gQWZ0ZXIgcmVmYWN0b3JpbmcgaW4KKyAgICAgICAgcjIyMTU5
NSwgc3RhZ2VkIHJlZ2lzdHJhdGlvbiBsaXN0cyBhcmUgbm93IGF1dG9tYXRpY2FsbHkgY2xlYXJl
ZCBvdXQgd2hlbiAoMSkgdGhlIGRyYWctYW5kLWRyb3AgaW50ZXJhY3Rpb24KKyAgICAgICAgc3Rh
dGUgaXMgY2xlYXJlZCBvdXQgaW4gdGhlIFVJIHByb2Nlc3MsIG9yICgyKSB3aGVuIHRoZSByZWdp
c3RyYXRpb24gbGlzdCBpcyB0YWtlbiBieSBXS0NvbnRlbnRWaWV3IChzZWUKKyAgICAgICAgLXRh
a2VSZWdpc3RyYXRpb25MaXN0KSB3aGVuIGdlbmVyYXRpbmcgYW4gaXRlbSBwcm92aWRlci4KKwor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6Y2hhbmdlQ291bnQgY29uc3QpOgorCisgICAgICAgIEFkZCBhIGNoYW5n
ZUNvdW50IG1ldGhvZCB0byBQYXN0ZWJvYXJkIG9uIENvY29hIHBsYXRmb3JtcyAoTWFjLCBpT1Mp
IHdoaWNoIHN1cHBvcnQgY2hhbmdlQ291bnQgbmF0aXZlbHkuIEluCisgICAgICAgIHRoZW9yeSwg
dGhlcmUncyBubyByZWFzb24gV2luZG93cywgR1RLIGFuZCBXUEUgcG9ydHMgY2FuJ3QgYWxzbyBp
bXBsZW1lbnQgYSBzaW1pbGFyIG1lY2hhbmlzbSBpbgorICAgICAgICBQbGF0Zm9ybVBhc3RlYm9h
cmQsIGJ1dCB0aGlzIGlzbid0IG5lZWRlZCBmb3IgYW55dGhpbmcgeWV0LiBVcG9uIGRyYWdzdGFy
dCwgaXQgaXMgc2FmZSB0byBhc3N1bWUgdGhhdCB0aGUKKyAgICAgICAgcGFzdGVib2FyZCBoYXMg
YmVlbiBjbGVhcmVkIG9uIHRoZXNlIHBsYXRmb3Jtcywgc28gY2hlY2tpbmcgZm9yIFBhc3RlYm9h
cmQ6Omhhc0RhdGEgKGFzIHdlIGRvIGZvciBhbGwgcGxhdGZvcm1zCisgICAgICAgIGN1cnJlbnRs
eSkgaXMgc3VmZmljaWVudC4KKwogMjAxNy0wOS0wNSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFk
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxNDk1Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBhMjllMzU5YzYyYTI5MmY5NGQyNjgzZDY5MmQyZDIyZDNiYzRlMDEzLi5hMmI4
NTNhZDcxYmU1MTAyMzA2YjE0YzZmNWQ1Y2Y4YjZmYjlkNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDE3LTA5LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1MgV0syXSBTdXBwb3J0IHRhcHBpbmcgdG8gYWRkIGl0ZW1zIHRvIHRo
ZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBpbiB3ZWIgY29udGVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDIxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMTE0NDY3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUbyByZXF1ZXN0IGFkZGl0aW9uYWwgZHJhZyBpdGVtcywgZW5kIHRoZSBjdXJyZW50
IGRyYWcgaW4gdGhlIHdlYiBwYWdlIGFuZCB0cnkgdG8gYmVnaW4gYSBkcmFnIGF0IHRoZSBuZXcK
KyAgICAgICAgbG9jYXRpb24uIFRoaXMgcHJvY2VzcyBpcyB0cmFuc3BhcmVudCB0byB0aGUgVUkg
cHJvY2Vzcywgd2hpY2ggc3RpbGwgbWFpbnRhaW5zIHRoZSBzYW1lIFVJRHJhZ1Nlc3Npb24gd2l0
aCB0aGUKKyAgICAgICAgb2xkIGRyYWcgc291cmNlLgorCisgICAgICAgIEFzIG9wcG9zZWQgdG8g
ZmlyaW5nIGEgbmV3IGV2ZW50IChmb3IgaW5zdGFuY2U6IGBhZGRkcmFnaXRlbWApLCB0aGlzIGFw
cHJvYWNoIGlzIHRha2VuIHRvIGVuc3VyZSB0aGF0IGlmIHRoZQorICAgICAgICBwYWdlIHdhbnRz
IHRvIHByZXZlbnREZWZhdWx0KCkgb24gYGRyYWdzdGFydGAsIGl0IHdvdWxkIGFsc28gcHJldmVu
dCB0aGUgdXNlciBmcm9tIGFkZGluZyBpdCBhcyBhbiBhZGRpdGlvbmFsCisgICAgICAgIGRyYWcg
aXRlbS4gVXNpbmcgdGhlIG5ldyBldmVudCBhcHByb2FjaCwgZGVhbGluZyB3aXRoIHRoaXMgY2Fz
ZSB3b3VsZCBlaXRoZXIgcmVxdWlyZSB0aGUgcGFnZSB0byBsaXN0ZW4gZm9yIGEKKyAgICAgICAg
bmV3IGV2ZW50IGFuZCBjYWxsIHByZXZlbnREZWZhdWx0KCksIHdoaWNoIHdvdWxkIGJyZWFrIGNv
bXBhdGliaWxpdHkgd2l0aCBwYWdlcyB0aGF0IG9ubHkgcHJldmVudERlZmF1bHQoKSBvbgorICAg
ICAgICBgZHJhZ3N0YXJ0YCwgb3IgaXQgd291bGQgcmVxdWlyZSB0aGUgZGVmYXVsdCBiZWhhdmlv
ciBvZiB0aGlzIG5ldyBldmVudCB0byBiZSBfbm90XyBhZGRpbmcgYSBkcmFnIGl0ZW0sIGluIHdo
aWNoCisgICAgICAgIGNhc2UgdGhpcyBhcHByb2FjaCB3b3VsZCByZXF1aXJlIHBhZ2VzIHRvIGFk
b3B0IHRoZSBuZXcgZXZlbnQgaW4gc29tZSBmb3JtLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1
ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24pOgorCiAyMDE3LTA5LTA1ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgV0syXSBBZGQg
cGx1bWJpbmcgZm9yIFdLQ29udGVudFZpZXcgdG8gYXNrIHRoZSB3ZWIgcHJvY2VzcyBmb3IgYWRk
aXRpb25hbCBkcmFnIGl0ZW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdB
Y3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5kZXggYWQyODYz
NDcyMjU1NmRkNWRhOGI0OTlhYWIxYWNiNmUyOTA0ODdjMS4uMmMxYTM3YTZlMGJlNTI3M2MyYzU1
MGU0ODQ5ZjI2ZmUzNTI1ODc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
QWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAtNjIs
NSArNjIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdPcGVyYXRpb25EZWxl
dGUgID0gMzIsCiAgICAgICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlOVF9NQVgKICAgICB9
IERyYWdPcGVyYXRpb247CisKKyAgICBlbnVtIGNsYXNzIE1heUV4dGVuZERyYWdTZXNzaW9uIHsg
Tm8sIFllcyB9OworICAgIGVudW0gY2xhc3MgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIHsg
Tm8sIFllcyB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA0NzEzYzM5MTAzM2EyNTlkNDE5NWUxYjUxMTA4MGI2
MzU5Mjk5ZjJlLi5hMWQxZTU3NGFjZDMzZGE3NzJhNDMwMGQ1ZGI0YmRiOTA4MDE3YWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtODY4LDcgKzg2OCw3IEBAIHN0
YXRpYyBJbnRQb2ludCBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhGcmFtZSYgc3JjKQogICAgIHJl
dHVybiBJbnRQb2ludCh4cG9zLCB5cG9zKTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24g
c3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2lu
dCYgZHJhZ09yaWdpbikKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3Jj
LCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhh
c05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNEYXRhKQogewogICAgIGlmICghc3JjLnZpZXco
KSB8fCAhc3JjLmNvbnRlbnRSZW5kZXJlcigpIHx8ICFzdGF0ZS5zb3VyY2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTkzMywxNCArOTMzLDE0IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0
YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9u
CiAgICAgQVNTRVJUKHN0YXRlLnNvdXJjZSk7CiAgICAgRWxlbWVudCYgZWxlbWVudCA9ICpzdGF0
ZS5zb3VyY2U7CiAKLSAgICBib29sIG11c3RVc2VMZWdhY3lEcmFnQ2xpZW50ID0gZGF0YVRyYW5z
ZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkgfHwgbV9jbGllbnQudXNlTGVnYWN5RHJhZ0NsaWVu
dCgpOworICAgIGJvb2wgbXVzdFVzZUxlZ2FjeURyYWdDbGllbnQgPSBoYXNEYXRhID09IEhhc05v
bkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6WWVzIHx8IG1fY2xpZW50LnVzZUxlZ2FjeURyYWdDbGll
bnQoKTsKIAogICAgIEludFJlY3QgZHJhZ0ltYWdlQm91bmRzOwogICAgIEltYWdlKiBpbWFnZSA9
IGdldEltYWdlKGVsZW1lbnQpOwogICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pIHsKICAgICAgICAgUGFzdGVib2FyZFdyaXRlckRhdGEgcGFzdGVib2FyZFdy
aXRlckRhdGE7CiAKLSAgICAgICAgaWYgKCFkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhhc0Rh
dGEoKSkgeworICAgICAgICBpZiAoaGFzRGF0YSA9PSBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERh
dGE6Ok5vKSB7CiAgICAgICAgICAgICBpZiAoc3JjLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlz
Tm9uZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIHBhZ2UgbWF5IGhhdmUgY2xlYXJlZCBv
dXQgdGhlIHNlbGVjdGlvbiBpbiB0aGUgZHJhZ3N0YXJ0IGhhbmRsZXIsIGluIHdoaWNoIGNhc2Ug
d2Ugc2hvdWxkIGJhaWwKICAgICAgICAgICAgICAgICAvLyBvdXQgb2YgdGhlIGRyYWcsIHNpbmNl
IHRoZXJlIGlzIG5vIGNvbnRlbnQgdG8gd3JpdGUgdG8gdGhlIHBhc3RlYm9hcmQuCkBAIC0xMDE2
LDcgKzEwMTYsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywg
Y29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICAvLyBXZSBzaG91
bGRuJ3QgYmUgc3RhcnRpbmcgYSBkcmFnIGZvciBhbiBpbWFnZSB0aGF0IGNhbid0IHByb3ZpZGUg
YW4gZXh0ZW5zaW9uLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRldGVjdGlvbiBmb3Ig
cHJvYmxlbXMgZW5jb3VudGVyZWQgbGF0ZXIgdXBvbiBkcm9wLgogICAgICAgICBBU1NFUlQoIWlt
YWdlLT5maWxlbmFtZUV4dGVuc2lvbigpLmlzRW1wdHkoKSk7Ci0gICAgICAgIGlmICghZGF0YVRy
YW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGhhc0RhdGEgPT0g
SGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObykgewogICAgICAgICAgICAgbV9kcmFnZ2lu
Z0ltYWdlVVJMID0gaW1hZ2VVUkw7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC5pc0NvbnRlbnRS
aWNobHlFZGl0YWJsZSgpKQogICAgICAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudCk7
CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJh
bWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogCiAgICAgICAg
IFN0cmluZyB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSA9IGhpdFRlc3RSZXN1
bHQudGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKIAotICAgICAgICBpZiAoIWRh
dGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0YSgpKSB7CisgICAgICAgIGlmIChoYXNEYXRh
ID09IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm8pIHsKICAgICAgICAgICAgIC8vIFNp
bXBsaWZ5IHdoaXRlc3BhY2Ugc28gdGhlIHRpdGxlIHB1dCBvbiB0aGUgZGF0YVRyYW5zZmVyIHJl
c2VtYmxlcyB3aGF0IHRoZSB1c2VyIHNlZXMKICAgICAgICAgICAgIC8vIG9uIHRoZSB3ZWIgcGFn
ZS4gVGhpcyBpbmNsdWRlcyByZXBsYWNpbmcgbmV3bGluZXMgd2l0aCBzcGFjZXMuCiAgICAgICAg
ICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRl
JiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogCiAgICAgICAgIHNyYy5lZGl0b3IoKS5zZXRJZ25vcmVT
ZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwogICAgICAgICBhdXRvIHByZXZpb3VzU2VsZWN0aW9uID0g
c3JjLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgICAgICBpZiAoIWRhdGFUcmFuc2Zlci5w
YXN0ZWJvYXJkKCkuaGFzRGF0YSgpKSB7CisgICAgICAgIGlmIChoYXNEYXRhID09IEhhc05vbkRl
ZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm8pIHsKICAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQoZWxl
bWVudCk7CiAgICAgICAgICAgICBpZiAoIWF0dGFjaG1lbnRVUkwuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gVXNlIHRoZSBhdHRhY2htZW50IFVSTCBzcGVjaWZpZWQgYnkgdGhlIGZp
bGUgYXR0cmlidXRlIHRvIHBvcHVsYXRlIHRoZSBwYXN0ZWJvYXJkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5oCmluZGV4IGZiOTAxZjNmMWQ1YzI2NzlmMDQ2MGU3ZTc4NjA3MTIxNjc0
MmY3ZTAuLjA1Yjg0ODdkMWQ2NGY1NTIxNzQ3YTA0NWI2MzRjNTBhZjAxZTdkZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTkxLDcgKzkxLDcgQEAgc3RydWN0IERyYWdT
dGF0ZTsKICAgICAgICAgCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhY2VEcmFnQ2Fy
ZXQoY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAgCi0gICAgICAgIGJvb2wgc3RhcnREcmFnKEZy
YW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbik7
CisgICAgICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERy
YWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBj
b25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsK
ICAgICAgICAgc3RhdGljIGNvbnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKICAgICAg
ICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4T3JpZ2luYWxJbWFnZUFyZWE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnU3RhdGUuaAppbmRleCA2MjU4YWJkNWNjZDU0NGYwZjc5NTJjNDQ1MDEzYTU4Zjhm
MjFjMTU3Li42ZDE2MjU5MDBlMzQ1ZjMzZWZhNjUwOGEwNWU1MzM2MjE0YWM4YmJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ1N0YXRlLmgKQEAgLTM0LDcgKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgRHJhZ1N0YXRlIHsKICAgICBSZWZQdHI8RWxlbWVudD4gc291cmNlOyAvLyBFbGVt
ZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBtb3VzZSBnZXN0
dXJlLgotICAgIFJlZlB0cjxSYW5nZT4gZHJhZ2dlZENvbnRlbnRSYW5nZTsKICAgICBib29sIHNo
b3VsZERpc3BhdGNoRXZlbnRzOwogICAgIERyYWdTb3VyY2VBY3Rpb24gdHlwZTsKICAgICBSZWZQ
dHI8RGF0YVRyYW5zZmVyPiBkYXRhVHJhbnNmZXI7IC8vIFVzZWQgb24gb25seSB0aGUgc291cmNl
IHNpZGUgb2YgZHJhZ2dpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXgg
ZTUzOGJhNmM1MzEyZDljODE5ZWI1YTc1NjY0MGFjNWFiYThjZDNhYi4uZjJkZWIxNjFhZWVkYmNm
NDcwMGU1NzlkMmUwZGIyNzgxNjRkOTNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXlDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVdoZWVsRXZlbnQuaCIKQEAgLTM0NjUsMzEgKzM0NjYsMjIgQEAgdm9pZCBFdmVudEhhbmRsZXI6
OmludmFsaWRhdGVEYXRhVHJhbnNmZXIoKQogICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlciA9
IG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcGFpbnRDb250ZW50c09mUmFuZ2UoUmVmUHRy
PFJhbmdlPiByYW5nZSkKK3N0YXRpYyB2b2lkIHJlbW92ZURyYWdnZWRDb250ZW50RG9jdW1lbnRN
YXJrZXJzRnJvbUFsbEZyYW1lc0luUGFnZShQYWdlJiBwYWdlKQogewotICAgIGlmICghcmFuZ2Up
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIGNvbnRhaW5lciA9IHJhbmdlLT5jb21tb25B
bmNlc3RvckNvbnRhaW5lcigpOwotICAgIGlmICghY29udGFpbmVyKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgbm9kZXMgZW5jbG9zZWQgaW4gdGhpcyBS
YW5nZSBhcmUgcmVwYWludGVkLgotICAgIGlmIChhdXRvIHJlbmRlcmVyVG9SZXBhaW50ID0gY29u
dGFpbmVyLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250YWluaW5nUmVuZGVy
ZXIgPSByZW5kZXJlclRvUmVwYWludC0+Y29udGFpbmVyKCkpCi0gICAgICAgICAgICByZW5kZXJl
clRvUmVwYWludCA9IGNvbnRhaW5pbmdSZW5kZXJlcjsKLSAgICAgICAgcmVuZGVyZXJUb1JlcGFp
bnQtPnJlcGFpbnQoKTsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAg
IGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZG9j
dW1lbnQtPm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpEcmFnZ2VkQ29u
dGVudCk7CiAgICAgfQorCisgICAgaWYgKGF1dG8qIG1haW5GcmFtZVJlbmRlcmVyID0gcGFnZS5t
YWluRnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgbWFpbkZyYW1lUmVuZGVyZXIt
PnJlcGFpbnRSb290Q29udGVudHMoKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmRyYWdDYW5j
ZWxsZWQoKQogewogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgIGlmIChhdXRvIHJh
bmdlID0gZHJhZ1N0YXRlKCkuZHJhZ2dlZENvbnRlbnRSYW5nZSkgewotICAgICAgICByYW5nZS0+
b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpE
cmFnZ2VkQ29udGVudCk7Ci0gICAgICAgIHJlcGFpbnRDb250ZW50c09mUmFuZ2UocmFuZ2UpOwot
ICAgIH0KLSAgICBkcmFnU3RhdGUoKS5kcmFnZ2VkQ29udGVudFJhbmdlID0gbnVsbHB0cjsKKyAg
ICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQorICAgICAgICByZW1vdmVEcmFnZ2Vk
Q29udGVudERvY3VtZW50TWFya2Vyc0Zyb21BbGxGcmFtZXNJblBhZ2UoKnBhZ2UpOwogI2VuZGlm
CiB9CiAKQEAgLTM1MDQsMjIgKzM0OTYsMjQgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0YXJ0
RHJhZygpCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCisgICAgUmVmUHRy
PFJhbmdlPiBkcmFnZ2VkQ29udGVudFJhbmdlOwogICAgIGlmIChkcmFnU3RhdGUoKS50eXBlICYg
RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKLSAgICAgICAgZHJhZ1N0YXRlKCkuZHJhZ2dlZENv
bnRlbnRSYW5nZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVk
UmFuZ2UoKTsKKyAgICAgICAgZHJhZ2dlZENvbnRlbnRSYW5nZSA9IG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBlbHNlIHsKICAgICAgICAg
UG9zaXRpb24gc3RhcnRQb3NpdGlvbihkcmFnU291cmNlLmdldCgpLCBQb3NpdGlvbjo6UG9zaXRp
b25Jc0JlZm9yZUFuY2hvcik7CiAgICAgICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uKGRyYWdTb3Vy
Y2UuZ2V0KCksIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpOwotICAgICAgICBkcmFn
U3RhdGUoKS5kcmFnZ2VkQ29udGVudFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkcmFnU291cmNlLT5k
b2N1bWVudCgpLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgICAgIGRyYWdnZWRD
b250ZW50UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRyYWdTb3VyY2UtPmRvY3VtZW50KCksIHN0YXJ0
UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byByYW5nZSA9IGRy
YWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2UpIHsKLSAgICAgICAgcmFuZ2UtPm93bmVyRG9j
dW1lbnQoKS5tYXJrZXJzKCkuYWRkRHJhZ2dlZENvbnRlbnRNYXJrZXIocmFuZ2UuZ2V0KCkpOwot
ICAgICAgICByZXBhaW50Q29udGVudHNPZlJhbmdlKHJhbmdlKTsKKyAgICBpZiAoZHJhZ2dlZENv
bnRlbnRSYW5nZSkgeworICAgICAgICBkcmFnZ2VkQ29udGVudFJhbmdlLT5vd25lckRvY3VtZW50
KCkubWFya2VycygpLmFkZERyYWdnZWRDb250ZW50TWFya2VyKGRyYWdnZWRDb250ZW50UmFuZ2Uu
Z2V0KCkpOworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX2ZyYW1lLmNvbnRlbnRSZW5k
ZXJlcigpKQorICAgICAgICAgICAgcmVuZGVyZXItPnJlcGFpbnRSb290Q29udGVudHMoKTsKICAg
ICB9CiAjZW5kaWYKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQor
dm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lv
biBtYXlFeHRlbmREcmFnU2Vzc2lvbikKIHsKICAgICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVxdWVz
dCBzbyB0aGF0IFJlbmRlckxheWVyIGdldHMgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92ZXIg
YW5kIDphY3RpdmUgcHNldWRvY2xhc3Nlcy4KICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhp
dFRlc3RSZXF1ZXN0OjpSZWxlYXNlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCk7CkBAIC0zNTMyLDkgKzM1MjYsOSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09w
ZXJhdAogICAgIH0KICAgICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAKLSAgICBpZiAoYXV0
byByYW5nZSA9IGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2UpIHsKLSAgICAgICAgcmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCkucmVtb3ZlTWFya2VycyhEb2N1bWVudE1hcmtl
cjo6RHJhZ2dlZENvbnRlbnQpOwotICAgICAgICByZXBhaW50Q29udGVudHNPZlJhbmdlKHJhbmdl
KTsKKyAgICBpZiAobWF5RXh0ZW5kRHJhZ1Nlc3Npb24gPT0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246
Ok5vKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCisgICAgICAg
ICAgICByZW1vdmVEcmFnZ2VkQ29udGVudERvY3VtZW50TWFya2Vyc0Zyb21BbGxGcmFtZXNJblBh
Z2UoKnBhZ2UpOwogICAgIH0KIAogICAgIGRyYWdTdGF0ZSgpLnNvdXJjZSA9IG51bGxwdHI7CkBA
IC0zNTU1LDYgKzM1NDksMjMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ1NyY0V2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBQbGEKIHsKICAgICByZXR1
cm4gIWRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50VHlwZSwgKmRyYWdTdGF0ZSgpLnNvdXJjZSwgZXZl
bnQsIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci5nZXQoKSk7CiB9CisKK2Jvb2wgRXZlbnRIYW5k
bGVyOjpkaXNwYXRjaERyYWdTdGFydEV2ZW50KEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSYg
aGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGF1dG8gY2hhbmdlQ291bnQgPSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnBhc3RlYm9hcmQo
KS5jaGFuZ2VDb3VudCgpOworI2VuZGlmCisKKyAgICBib29sIG1heVN0YXJ0RHJhZyA9IGRpc3Bh
dGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnc3RhcnRFdmVudCwgbV9tb3VzZURvd24p
OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
ID0gY2hhbmdlQ291bnQgIT0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCku
Y2hhbmdlQ291bnQoKSA/IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6WWVzIDogSGFzTm9u
RGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObzsKKyNlbHNlCisgICAgaGFzTm9uRGVmYXVsdFBhc3Rl
Ym9hcmREYXRhID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCkuaGFzRGF0
YSgpID8gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpZZXMgOiBIYXNOb25EZWZhdWx0UGFz
dGVib2FyZERhdGE6Ok5vOworI2VuZGlmCisKKyAgICByZXR1cm4gbWF5U3RhcnREcmFnICYmICFt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7Cit9CiAg
ICAgCiBzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VBY3Rpb24gbikKIHsK
QEAgLTM2NjAsNiArMzY3MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgaW52YWxp
ZGF0ZURhdGFUcmFuc2ZlcigpOwogCiAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gY3Jl
YXRlRHJhZ2dpbmdEYXRhVHJhbnNmZXIoKTsKKyAgICBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERh
dGEgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhID0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmRE
YXRhOjpObzsKICAgICAKICAgICBpZiAoZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMp
IHsKICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBpcyBhIERPTSBiYXNlZCBkcmFnLiBJ
ZiBpdCBpcywgZ2V0IHRoZSBET00gc3BlY2lmaWVkIGRyYWcgaW1hZ2UgYW5kIG9mZnNldC4KQEAg
LTM2ODAsOCArMzY5Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gCiAKLSAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBkaXNwYXRj
aERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ3N0YXJ0RXZlbnQsIG1fbW91c2VEb3duKQot
ICAgICAgICAgICAgJiYgIW1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3
b3JkRmllbGQoKTsKKyAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBkaXNwYXRjaERy
YWdTdGFydEV2ZW50KGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAKICAgICAgICAgZHJh
Z1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAKQEAgLTM2
OTgsNyArMzcwOSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgCiAgICAgaWYgKG1f
bW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBh
Z2UoKTsKLSAgICAgICAgbV9kaWRTdGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9s
bGVyKCkuc3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQo
KSwgbV9tb3VzZURvd25Qb3MpOworICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09w
LCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93blBvcywgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmRE
YXRhKTsKICAgICAgICAgLy8gSW4gV2ViS2l0MiB3ZSBjb3VsZCByZS1lbnRlciB0aGlzIGNvZGUg
YW5kIHN0YXJ0IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBw
cm9ibGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9t
aXNlZCB0eXBlcy4KICAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAppbmRleCAyMjUxZjlhZWQ1NDBiZGU0YTc5MzBiMDdjMmNkMTNkZjYyYzI0
NjA2Li42NjYzYzhmMmE4OWQzZjIyYzNiZWY2MmIwOTdjNDZhZWRiZjY3NjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI1Niw3ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTdGFydERyYWcoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYWdDYW5jZWxsZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdTb3Vy
Y2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERyYWdPcGVyYXRpb24pOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiwgRHJhZ09wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gPSBNYXlFeHRlbmRE
cmFnU2Vzc2lvbjo6Tm8pOwogI2VuZGlmCiAKICAgICB2b2lkIGZvY3VzRG9jdW1lbnRWaWV3KCk7
CkBAIC00MDUsNiArNDA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRHJhZ1N0YXRlKCk7
CiAKICAgICBib29sIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICBib29sIGRpc3BhdGNoRHJh
Z1N0YXJ0RXZlbnQoSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhJik7CiAKICAgICBib29sIGRy
YWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wg
ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCmluZGV4IDgwNjQ0YjdmZDgyM2RiYmYy
MDVkMjkyYjAwYjM2Y2NkZmQ4NDI3ZWMuLjhmMGZiNGUyZWFiYTNkZDk2Y2VlYjQ0MzhmOGYzYjAz
OTk1OGIxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0K
QEAgLTYwNiw3ICs2MDYsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6dHJ5VG9CZWdpbkRhdGFJbnRl
cmFjdGlvbkF0UG9pbnQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aQogCiAgICAgU2V0Rm9y
U2NvcGU8Ym9vbD4gbW91c2VQcmVzc2VkKG1fbW91c2VQcmVzc2VkLCB0cnVlKTsKICAgICBkcmFn
U3RhdGUoKS5zb3VyY2UgPSBudWxscHRyOwotICAgIGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50
UmFuZ2UgPSBudWxscHRyOwogICAgIG1fbW91c2VEb3duUG9zID0gcHJvdGVjdGVkRnJhbWUtPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhzeW50aGV0aWNNb3VzZU1vdmVFdmVudC5wb3NpdGlvbigp
KTsKIAogICAgIHJldHVybiBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChoaXRUZXN0ZWRNb3VzZUV2
ZW50LCBEb250Q2hlY2tEcmFnSHlzdGVyZXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgKaW5kZXggNWUyNmJmMmZiZjY2NDcyMDM0Zjg5Y2E5Y2FhZDQzY2I4ZmZmYzUzOS4uNmVl
MDg3NmYwYjgyMThjMTI0M2IwYzI4MTFlYzYxNTc3ZjllNmVmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaApAQCAtMjE5LDYgKzIxOSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBOU0FycmF5ICpzdXBwb3J0ZWRGaWxlVXBsb2FkUGFzdGVib2FyZFR5
cGVzKCk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXN0ZWJv
YXJkTmFtZTsgfQorICAgIGxvbmcgY2hhbmdlQ291bnQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQppbmRleCAyOTk3MTVkNTZhZWRiNjgwNDc5OGU4ZWM2MTdiMmVkMmNkZTk1ZWYwLi41ZTQy
ZWQyZjdhZWE0MzhmMjdmM2RhZWIyOGE2ZjY1MDU2NDAyNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMjk5LDYgKzI5OSwxMSBAQCB2b2lk
IFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYgcmVhZGVyKQogICAgIH0KIH0KIAorbG9uZyBQYXN0ZWJvYXJkOjpjaGFuZ2VD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7Cit9CisKIE5TQXJy
YXkgKlBhc3RlYm9hcmQ6OnN1cHBvcnRlZFdlYkNvbnRlbnRQYXN0ZWJvYXJkVHlwZXMoKQogewog
ICAgIHJldHVybiBAWyhpZClXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKGlkKWtVVFR5cGVGbGF0UlRG
RCwgKGlkKWtVVFR5cGVSVEYsIChpZClrVVRUeXBlSFRNTCwgKGlkKWtVVFR5cGVQTkcsIChpZClr
VVRUeXBlVElGRiwgKGlkKWtVVFR5cGVKUEVHLCAoaWQpa1VUVHlwZUdJRiwgKGlkKWtVVFR5cGVV
UkwsIChpZClrVVRUeXBlVGV4dF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDM5MmQ1YjBlYzQ5Y2E2
MmM2NmIyYzA0ZGE5ODJiNWJjOGM0NjBiN2EuLjg2ZjViNjFlZDcwNTE4MWNhY2I2MTZmOThlMWJh
ZDVkZmVjNjIxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0yNzcsNyArMjc3LDYgQEAgLSAodm9p
ZClzZXRJdGVtUHJvdmlkZXJzOihOU0FycmF5PF9fa2luZG9mIE5TSXRlbVByb3ZpZGVyICo+ICop
aXRlbVByb3ZpZGVycwogICAgIF9pdGVtUHJvdmlkZXJzID0gaXRlbVByb3ZpZGVyczsKICAgICBf
Y2hhbmdlQ291bnQrKzsKICAgICBfY2FjaGVkVHlwZUlkZW50aWZpZXJzID0gbmlsOwotICAgIF9z
dGFnZWRSZWdpc3RyYXRpb25JbmZvTGlzdCA9IG5pbDsKIAogICAgIE5TTXV0YWJsZUFycmF5ICp0
eXBlVG9GaWxlVVJMTWFwcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTppdGVt
UHJvdmlkZXJzLmNvdW50XTsKICAgICBbaXRlbVByb3ZpZGVycyBlbnVtZXJhdGVPYmplY3RzVXNp
bmdCbG9jazpbdHlwZVRvRmlsZVVSTE1hcHNdIChVSUl0ZW1Qcm92aWRlciAqLCBOU1VJbnRlZ2Vy
LCBCT09MICopIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KaW5kZXggY2Q2MmEyZGNiYmMxMTk4ODU2NTI0NzA5YmVkOGRmZmVkMmQ1M2YyOC4uYTg4YzVk
OThiNDRmYjkzM2ZmMGE2ZTM1MTQ2NzZmMGRhMThjOGM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEwNyw2ICsxMDcsMTEgQEAgc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiAgICAgcmV0dXJuIHR5cGVz
OwogfQogCitsb25nIFBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3Vu
dChtX3Bhc3RlYm9hcmROYW1lKTsKK30KKwogTlNBcnJheSAqUGFzdGVib2FyZDo6c3VwcG9ydGVk
RmlsZVVwbG9hZFBhc3RlYm9hcmRUeXBlcygpCiB7CiAgICAgcmV0dXJuIEBbIChOU1N0cmluZyAq
KU5TRmlsZXNQcm9taXNlUGJvYXJkVHlwZSwgKE5TU3RyaW5nICopTlNGaWxlbmFtZXNQYm9hcmRU
eXBlIF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDQ3NzkxNjExOWJmZDIxZThhMDBkYWVmMDFjNGUxMzkyNTJkNjc3ZDIu
LmJjZGIwYmYwNmEwY2E5YzM5ZmY1ZjNjNWI0YTUyNTQ1NjEyYmMwNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC01Nyw2
ICs1Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KQEAgLTYzMyw5ICs2MzQsMTUgQEAgdm9pZCBXZWJQ
YWdlOjpyZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdAogCiB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JE
cmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIFRvIGF1
Z21lbnQgdGhlIHBsYXRmb3JtIGRyYWcgc2Vzc2lvbiB3aXRoIGFkZGl0aW9uYWwgaXRlbXMsIGVu
ZCB0aGUgY3VycmVudCBkcmFnIHNlc3Npb24gYW5kIGJlZ2luIGEgbmV3IGRyYWcgc2Vzc2lvbiB3
aXRoIHRoZSBuZXcgZHJhZyBpdGVtLgorICAgIC8vIFRoaXMgcHJvY2VzcyBpcyBvcGFxdWUgdG8g
dGhlIFVJIHByb2Nlc3MsIHdoaWNoIHN0aWxsIG1haW50YWlucyB0aGUgb2xkIGRyYWcgaXRlbSBp
biBpdHMgZHJhZyBzZXNzaW9uLiBTaW1pbGFybHksIHRoaXMgcGVyc2lzdGVudCBkcmFnIHNlc3Np
b24KKyAgICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGljaCBvbmx5IHNlZXMg
dGhhdCB0aGUgY3VycmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcgb25lIGlzIGJl
Z2lubmluZy4KKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoY2xpZW50UG9zaXRpb24sIGds
b2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSwgMCwgTm9UYXApOworICAg
IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW5kZWQoKTsKKyAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBEcmFnT3BlcmF0
aW9uTm9uZSwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Olllcyk7CiAKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGZhbHNl
KSk7CisgICAgYm9vbCBkaWRIYW5kbGVEcmFnID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhh
bmRsZXIoKS50cnlUb0JlZ2luRGF0YUludGVyYWN0aW9uQXRQb2ludChjbGllbnRQb3NpdGlvbiwg
Z2xvYmFsUG9zaXRpb24pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFu
ZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoZGlkSGFuZGxlRHJhZykpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmRpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbigpCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmUzNDA3M2UzOTkzZDVkNjhl
MDU2MTE1NWZkN2ZmZTc4YTU4OTU2YS4uM2Q1NDUwNzJiYTYwMzMyYzA1OWI0OWRlNjg2MWYxMzVj
ZjU1MmM5NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA5LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBTdXBwb3J0IHRhcHBpbmcgdG8gYWRk
IGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBpbiB3ZWIgY29udGVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDIxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IGRyYWcgYW5kIGRyb3AgdGVzdCB0aGF0IGJl
Z2lucyBhIGRyYWcgb24gYSB0ZXh0IHNlbGVjdGlvbiwgYWRkcyBhbiBpbWFnZSBhbmQgYSBsaW5r
LCBhbmQgdGhlbiBkcm9wcworICAgICAgICBpbnRvIGEgY29udGVudGVkaXRhYmxlIGFyZWEuIFRo
aXMgdmVyaWZpZXMgdGhhdCB0aGUgdGV4dCwgbGluayBhbmQgaW1hZ2UgYXJlIGluc2VydGVkIGlu
dG8gdGhlIGVkaXRhYmxlIGFyZWEKKyAgICAgICAgdXBvbiBkcm9wLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0wOS0wNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gQWRkIHBsdW1iaW5nIGZvciBX
S0NvbnRlbnRWaWV3IHRvIGFzayB0aGUgd2ViIHByb2Nlc3MgZm9yIGFkZGl0aW9uYWwgZHJhZyBp
dGVtcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVy
YWN0aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJh
Y3Rpb25UZXN0cy5tbQppbmRleCA1NWIwYmJkZjE1OGFiN2Y0ZTk2NmQ3NzQzODU0NTg4MDBhYjY0
MzFlLi4xNDU3MjUxNDhjNzMyMjA5NmE2MzIxNDIyYmFmYmY0YTZiNzg5OGNhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5t
bQpAQCAtMTI0OSw2ICsxMjQ5LDIxIEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEFkZGl0
aW9uYWxJdGVtc0NhbkJlUHJldmVudGVkT25EcmFnU3RhcnQpCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJBQkNEIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci50
ZXh0Q29udGVudCJdKTsKIH0KIAorVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQWRkaXRpb25h
bExpbmtBbmRJbWFnZUludG9Db250ZW50RWRpdGFibGUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJzZWxlY3RlZC10ZXh0LWltYWdlLWxpbmstYW5kLWVkaXRhYmxlIl07CisKKyAgICBh
dXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2Nd
IGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW3NpbXVsYXRvciBydW5Gcm9t
OkNHUG9pbnRNYWtlKDUwLCA1MCkgdG86Q0dQb2ludE1ha2UoNTAsIDQwMCkgYWRkaXRpb25hbEl0
ZW1SZXF1ZXN0TG9jYXRpb25zOkB7CisgICAgICAgIEAwLjMzOiBbTlNWYWx1ZSB2YWx1ZVdpdGhD
R1BvaW50OkNHUG9pbnRNYWtlKDUwLCAxNTApXSwKKyAgICAgICAgQDAuNjY6IFtOU1ZhbHVlIHZh
bHVlV2l0aENHUG9pbnQ6Q0dQb2ludE1ha2UoNTAsIDI1MCldCisgICAgfV07CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJBQkNEIEEgbGluayIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJlZGl0b3IudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIiEhZWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJ2lt
ZycpIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IucXVlcnlTZWxlY3Rv
cignYScpLmhyZWYiXSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2Vu
ZGlmIC8vIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQo=
</data>
<flag name="review"
          id="340286"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320456</attachid>
            <date>2017-09-11 12:31:06 -0700</date>
            <delta_ts>2017-09-11 18:31:16 -0700</delta_ts>
            <desc>Rebase on master</desc>
            <filename>bug-176421-20170911123106.patch</filename>
            <type>text/plain</type>
            <size>27739</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjMzc1ZTJjY2NhM2Rj
NjA4Y2U5MjM2YjkwYmEzNDIyMGFlN2U3MS4uNTE2ZWVkMDdjYTFmNDE5ZTdhMWUwNjc0MTgxNTcx
YjU1NWEwNDY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA5LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBT
dXBwb3J0IHRhcHBpbmcgdG8gYWRkIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBp
biB3ZWIgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc2NDIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFJlZmFjdG9ycyBzb21lIGRyYWcg
aW5pdGlhdGlvbiBsb2dpYyB0byBoYW5kbGUgc3RhcnRpbmcgYSBkcmFnIHdoZW4gZGF0YSBoYXMg
YWxyZWFkeSBiZWVuIHdyaXR0ZW4gdG8gdGhlCisgICAgICAgIHBhc3RlYm9hcmQgKGluIHRoZSBj
YXNlIG9mIGlPUywgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCkuIFNlZSBhbm5vdGF0ZWQgY29t
bWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgIFRlc3RzOiBEYXRhSW50ZXJh
Y3Rpb25UZXN0cy5BZGRpdGlvbmFsTGlua0FuZEltYWdlSW50b0NvbnRlbnRFZGl0YWJsZQorCisg
ICAgICAgICogcGFnZS9EcmFnQWN0aW9ucy5oOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisK
KyAgICAgICAgQWRkIGEgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGFyZ3VtZW50IGhlcmUs
IGFuZCByZXBsYWNlIGNoZWNrcyBmb3IgIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0
YSgpCisgICAgICAgIHdpdGggY2hlY2tzIGZvciB3aGV0aGVyIHRoZSBhcmd1bWVudCBpcyBIYXNO
b25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vLiBUaGVzZSBjaGVja3MgZm9yIFBhc3RlYm9hcmQ6
Omhhc0RhdGEoKQorICAgICAgICBjdXJyZW50bHkgcHJldmVudCB1cyBmcm9tIG92ZXJ3cml0aW5n
IGN1c3RvbSBwYXN0ZWJvYXJkIGRhdGEsIGluIHRoZSBjYXNlIHRoYXQgdGhlIHBhZ2UgaGFzIHdy
aXR0ZW4gcGFzdGVib2FyZAorICAgICAgICBkYXRhIHVzaW5nIHRoZSBldmVudCdzIERhdGFUcmFu
c2Zlci4gSG93ZXZlciwgaW4gdGhlIGNhc2Ugb2YgYWRkaW5nIGFkZGl0aW9uYWwgZHJhZyBpdGVt
cyB0byB0aGUgc2Vzc2lvbiwgd2UKKyAgICAgICAgd2lsbCBhbHJlYWR5IGhhdmUgcGFzdGVib2Fy
ZCBkYXRhLCBzbyB0aGVzZSBjaGVja3Mgd2lsbCBwcmV2ZW50IHVzIGZyb20gd3JpdGluZyBkZWZh
dWx0IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQuCisgICAgICAgIFNlZSBFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5oOgorICAgICAgICAqIHBhZ2UvRHJhZ1N0YXRlLmg6CisKKyAgICAgICAgUmVtb3ZlIHRoZSBk
cmFnZ2VkQ29udGVudFJhbmdlIG1lbWJlciBmcm9tIERyYWdTdGF0ZS4gU2VlIGJlbG93LgorCisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3Zl
RHJhZ2dlZENvbnRlbnREb2N1bWVudE1hcmtlcnNGcm9tQWxsRnJhbWVzSW5QYWdlKToKKworICAg
ICAgICBTaW1wbGlmeSB0aGUgaGFuZGxpbmcgb2YgZHJhZ2dlZCBjb250ZW50IHJhbmdlIG1hcmtl
cnMuIEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgRE9NIFJhbmdlIGJlaW5nIGRyYWdnZWQgYW5kCisg
ICAgICAgIHJlbW92aW5nL3JlcGFpbnRpbmcgdGhlIHJhbmdlIGFmdGVyIGRyYWdnaW5nIGVuZHMs
IGp1c3QgcmVwYWludCB0aGUgY29udGVudFJlbmRlcmVyIG9mIHRoZSBmcmFtZSBiZWluZyBkcmFn
Z2VkLgorICAgICAgICBXaGVuIHRoZSBkcmFnZ2luZyBzZXNzaW9uIGhhcyBjb21wbGV0ZWx5IGVu
ZGVkLCByZW1vdmUgYWxsIGRyYWdnZWQgY29udGVudCByYW5nZXMgZnJvbSB0aGUgcGFnZSdzIG1h
aW5mcmFtZSBhbmQKKyAgICAgICAgYWxsIG9mIGl0cyBzdWJmcmFtZXMsIGFuZCByZXBhaW50IGV2
ZXJ5dGhpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ0NhbmNlbGxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KToKKworICAgICAg
ICBBZGQgYSBNYXlFeHRlbmREcmFnU2Vzc2lvbiBhcmd1bWVudCwgaW5kaWNhdGluZyB3aGV0aGVy
IG9yIG5vdCB0aGUgd2ViIHByb2Nlc3Mgd2lsbCBhdHRlbXB0IHRvIGNvbnRpbnVlIHRoZSBkcmFn
CisgICAgICAgIHNlc3Npb24sIGluIHdoaWNoIGNhc2UgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNl
RW5kZWRBdCBzaG91bGQgbm90IHJlbW92ZSBhbnkgZXhpc3RpbmcgZHJhZ2dlZCBjb250ZW50IHJh
bmdlCisgICAgICAgIGRvY3VtZW50IG1hcmtlcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnU3RhcnRFdmVudCk6CisKKyAgICAgICAgSGVscGVyIG1ldGhv
ZCB0byBkaXNwYXRjaCBhIGBkcmFnc3RhcnRgIGV2ZW50LCByZXR1cm4gd2hldGhlciBvciBub3Qg
dG8gcHJvY2VlZCB3aXRoIHRoZSBkcmFnLCBhbmQgYWxzbyBjb21wdXRlCisgICAgICAgIChhcyBh
biBvdXRwYXJhbSkgd2hldGhlciBvciBub3QgY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSB3YXMgd3Jp
dHRlbiBkdXJpbmcgdGhlIGV2ZW50LgorCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWcpOgorCisgICAgICAgIElmIGN1c3RvbSBkYXRhIHdhcyB3cml0dGVuIGR1cmlu
ZyBgZHJhZ3N0YXJ0YCwgcGFzcyBhbG9uZyBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Olll
cyB3aGVuIGNhbGxpbmcKKyAgICAgICAgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZy4KKworICAg
ICAgICAoV2ViQ29yZTo6cmVwYWludENvbnRlbnRzT2ZSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRyeVRvQmVnaW5EYXRhSW50
ZXJhY3Rpb25BdFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpdKToKKworICAgICAgICBTdG9wIGNsZWFyaW5nIG91
dCB0aGUgc3RhZ2VkIGl0ZW0gcHJvdmlkZXIgcmVnaXN0cmF0aW9uIGxpc3Qgd2hlbiBzZXR0aW5n
IGl0ZW0gcHJvdmlkZXJzLiBBZnRlciByZWZhY3RvcmluZyBpbgorICAgICAgICByMjIxNTk1LCBz
dGFnZWQgcmVnaXN0cmF0aW9uIGxpc3RzIGFyZSBub3cgYXV0b21hdGljYWxseSBjbGVhcmVkIG91
dCB3aGVuICgxKSB0aGUgZHJhZy1hbmQtZHJvcCBpbnRlcmFjdGlvbgorICAgICAgICBzdGF0ZSBp
cyBjbGVhcmVkIG91dCBpbiB0aGUgVUkgcHJvY2Vzcywgb3IgKDIpIHdoZW4gdGhlIHJlZ2lzdHJh
dGlvbiBsaXN0IGlzIHRha2VuIGJ5IFdLQ29udGVudFZpZXcgKHNlZQorICAgICAgICAtdGFrZVJl
Z2lzdHJhdGlvbkxpc3QpIHdoZW4gZ2VuZXJhdGluZyBhbiBpdGVtIHByb3ZpZGVyLgorCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgY2hhbmdlQ291
bnQgbWV0aG9kIHRvIFBhc3RlYm9hcmQgb24gQ29jb2EgcGxhdGZvcm1zIChNYWMsIGlPUykgd2hp
Y2ggc3VwcG9ydCBjaGFuZ2VDb3VudCBuYXRpdmVseS4gSW4KKyAgICAgICAgdGhlb3J5LCB0aGVy
ZSdzIG5vIHJlYXNvbiBXaW5kb3dzLCBHVEsgYW5kIFdQRSBwb3J0cyBjYW4ndCBhbHNvIGltcGxl
bWVudCBhIHNpbWlsYXIgbWVjaGFuaXNtIGluCisgICAgICAgIFBsYXRmb3JtUGFzdGVib2FyZCwg
YnV0IHRoaXMgaXNuJ3QgbmVlZGVkIGZvciBhbnl0aGluZyB5ZXQuIFVwb24gZHJhZ3N0YXJ0LCBp
dCBpcyBzYWZlIHRvIGFzc3VtZSB0aGF0IHRoZQorICAgICAgICBwYXN0ZWJvYXJkIGhhcyBiZWVu
IGNsZWFyZWQgb24gdGhlc2UgcGxhdGZvcm1zLCBzbyBjaGVja2luZyBmb3IgUGFzdGVib2FyZDo6
aGFzRGF0YSAoYXMgd2UgZG8gZm9yIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgY3VycmVudGx5KSBp
cyBzdWZmaWNpZW50LgorCiAyMDE3LTA5LTExICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbRU1FXSBDbGVhcktleTogaW1wbGVtZW50IENETUluc3RhbmNl
Q2xlYXJLZXkgc3RhdGUgbW9kaWZpZXJzLCBjYWxsYmFjayBkaXNwYXRjaGVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGRlNDFhOWQzMmZlMjE1YWE1ODY5OWIxNTFlZTA4MTAyZDJlZDkwMjUuLjllNmQ3MjlhMDQ0NDVl
ZjNhODE1MTY0YWE1Zjk1NzdhMjQ0ODNjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcgQEAKIDIw
MTctMDktMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKKyAgICAg
ICAgW2lPUyBXSzJdIFN1cHBvcnQgdGFwcGluZyB0byBhZGQgaXRlbXMgdG8gdGhlIGN1cnJlbnQg
ZHJhZyBzZXNzaW9uIGluIHdlYiBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0MjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMTQ0
Njc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgVG8gcmVx
dWVzdCBhZGRpdGlvbmFsIGRyYWcgaXRlbXMsIGVuZCB0aGUgY3VycmVudCBkcmFnIGluIHRoZSB3
ZWIgcGFnZSBhbmQgdHJ5IHRvIGJlZ2luIGEgZHJhZyBhdCB0aGUgbmV3CisgICAgICAgIGxvY2F0
aW9uLiBUaGlzIHByb2Nlc3MgaXMgdHJhbnNwYXJlbnQgdG8gdGhlIFVJIHByb2Nlc3MsIHdoaWNo
IHN0aWxsIG1haW50YWlucyB0aGUgc2FtZSBVSURyYWdTZXNzaW9uIHdpdGggdGhlCisgICAgICAg
IG9sZCBkcmFnIHNvdXJjZS4KKworICAgICAgICBBcyBvcHBvc2VkIHRvIGZpcmluZyBhIG5ldyBl
dmVudCAoZm9yIGluc3RhbmNlOiBgYWRkZHJhZ2l0ZW1gKSwgdGhpcyBhcHByb2FjaCBpcyB0YWtl
biB0byBlbnN1cmUgdGhhdCBpZiB0aGUKKyAgICAgICAgcGFnZSB3YW50cyB0byBwcmV2ZW50RGVm
YXVsdCgpIG9uIGBkcmFnc3RhcnRgLCBpdCB3b3VsZCBhbHNvIHByZXZlbnQgdGhlIHVzZXIgZnJv
bSBhZGRpbmcgaXQgYXMgYW4gYWRkaXRpb25hbAorICAgICAgICBkcmFnIGl0ZW0uIFVzaW5nIHRo
ZSBuZXcgZXZlbnQgYXBwcm9hY2gsIGRlYWxpbmcgd2l0aCB0aGlzIGNhc2Ugd291bGQgZWl0aGVy
IHJlcXVpcmUgdGhlIHBhZ2UgdG8gbGlzdGVuIGZvciBhCisgICAgICAgIG5ldyBldmVudCBhbmQg
Y2FsbCBwcmV2ZW50RGVmYXVsdCgpLCB3aGljaCB3b3VsZCBicmVhayBjb21wYXRpYmlsaXR5IHdp
dGggcGFnZXMgdGhhdCBvbmx5IHByZXZlbnREZWZhdWx0KCkgb24KKyAgICAgICAgYGRyYWdzdGFy
dGAsIG9yIGl0IHdvdWxkIHJlcXVpcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhpcyBuZXcg
ZXZlbnQgdG8gYmUgX25vdF8gYWRkaW5nIGEgZHJhZyBpdGVtLCBpbiB3aGljaAorICAgICAgICBj
YXNlIHRoaXMgYXBwcm9hY2ggd291bGQgcmVxdWlyZSBwYWdlcyB0byBhZG9wdCB0aGUgbmV3IGV2
ZW50IGluIHNvbWUgZm9ybS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJ
dGVtc0ZvckRyYWdTZXNzaW9uKToKKworMjAxNy0wOS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBbaU9TIERuRF0gRWxlbWVudHMgaW4gdGhlIERP
TSB3aXRoIHRoZSBgZHJhZ2dhYmxlYCBhdHRyaWJ1dGUgc2hvdWxkIGJlIGRyYWdnYWJsZQogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NjY0CiAgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8zMjU5NjE1Nj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApp
bmRleCBhZDI4NjM0NzIyNTU2ZGQ1ZGE4YjQ5OWFhYjFhY2I2ZTI5MDQ4N2MxLi4yYzFhMzdhNmUw
YmU1MjczYzJjNTUwZTQ4NDlmMjZmZTM1MjU4NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9u
cy5oCkBAIC02Miw1ICs2Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ09w
ZXJhdGlvbkRlbGV0ZSAgPSAzMiwKICAgICAgICAgRHJhZ09wZXJhdGlvbkV2ZXJ5ICAgPSBVSU5U
X01BWAogICAgIH0gRHJhZ09wZXJhdGlvbjsKKworICAgIGVudW0gY2xhc3MgTWF5RXh0ZW5kRHJh
Z1Nlc3Npb24geyBObywgWWVzIH07CisgICAgZW51bSBjbGFzcyBIYXNOb25EZWZhdWx0UGFzdGVi
b2FyZERhdGEgeyBObywgWWVzIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDQ3MTNjMzkxMDMzYTI1OWQ0MTk1
ZTFiNTExMDgwYjYzNTkyOTlmMmUuLmExZDFlNTc0YWNkMzNkYTc3MmE0MzAwZDVkYjRiZGI5MDgw
MTdhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC04NjgsNyAr
ODY4LDcgQEAgc3RhdGljIEludFBvaW50IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKEZyYW1lJiBz
cmMpCiAgICAgcmV0dXJuIEludFBvaW50KHhwb3MsIHlwb3MpOwogfQogCi1ib29sIERyYWdDb250
cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJh
Z09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNv
bnN0IEludFBvaW50JiBkcmFnT3JpZ2luKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFn
KEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3As
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJh
Z09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGhhc0RhdGEpCiB7CiAgICAgaWYg
KCFzcmMudmlldygpIHx8ICFzcmMuY29udGVudFJlbmRlcmVyKCkgfHwgIXN0YXRlLnNvdXJjZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTMzLDE0ICs5MzMsMTQgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERy
YWdPcGVyYXRpb24KICAgICBBU1NFUlQoc3RhdGUuc291cmNlKTsKICAgICBFbGVtZW50JiBlbGVt
ZW50ID0gKnN0YXRlLnNvdXJjZTsKIAotICAgIGJvb2wgbXVzdFVzZUxlZ2FjeURyYWdDbGllbnQg
PSBkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhhc0RhdGEoKSB8fCBtX2NsaWVudC51c2VMZWdh
Y3lEcmFnQ2xpZW50KCk7CisgICAgYm9vbCBtdXN0VXNlTGVnYWN5RHJhZ0NsaWVudCA9IGhhc0Rh
dGEgPT0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpZZXMgfHwgbV9jbGllbnQudXNlTGVn
YWN5RHJhZ0NsaWVudCgpOwogCiAgICAgSW50UmVjdCBkcmFnSW1hZ2VCb3VuZHM7CiAgICAgSW1h
Z2UqIGltYWdlID0gZ2V0SW1hZ2UoZWxlbWVudCk7CiAgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJh
Z1NvdXJjZUFjdGlvblNlbGVjdGlvbikgewogICAgICAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBw
YXN0ZWJvYXJkV3JpdGVyRGF0YTsKIAotICAgICAgICBpZiAoIWRhdGFUcmFuc2Zlci5wYXN0ZWJv
YXJkKCkuaGFzRGF0YSgpKSB7CisgICAgICAgIGlmIChoYXNEYXRhID09IEhhc05vbkRlZmF1bHRQ
YXN0ZWJvYXJkRGF0YTo6Tm8pIHsKICAgICAgICAgICAgIGlmIChzcmMuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuaXNOb25lKCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcGFnZSBtYXkgaGF2
ZSBjbGVhcmVkIG91dCB0aGUgc2VsZWN0aW9uIGluIHRoZSBkcmFnc3RhcnQgaGFuZGxlciwgaW4g
d2hpY2ggY2FzZSB3ZSBzaG91bGQgYmFpbAogICAgICAgICAgICAgICAgIC8vIG91dCBvZiB0aGUg
ZHJhZywgc2luY2UgdGhlcmUgaXMgbm8gY29udGVudCB0byB3cml0ZSB0byB0aGUgcGFzdGVib2Fy
ZC4KQEAgLTEwMTYsNyArMTAxNiw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhG
cmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAg
IC8vIFdlIHNob3VsZG4ndCBiZSBzdGFydGluZyBhIGRyYWcgZm9yIGFuIGltYWdlIHRoYXQgY2Fu
J3QgcHJvdmlkZSBhbiBleHRlbnNpb24uCiAgICAgICAgIC8vIFRoaXMgaXMgYW4gZWFybHkgZGV0
ZWN0aW9uIGZvciBwcm9ibGVtcyBlbmNvdW50ZXJlZCBsYXRlciB1cG9uIGRyb3AuCiAgICAgICAg
IEFTU0VSVCghaW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCkuaXNFbXB0eSgpKTsKLSAgICAgICAg
aWYgKCFkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhhc0RhdGEoKSkgeworICAgICAgICBpZiAo
aGFzRGF0YSA9PSBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vKSB7CiAgICAgICAgICAg
ICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBpbWFnZVVSTDsKICAgICAgICAgICAgIGlmIChlbGVtZW50
LmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpCiAgICAgICAgICAgICAgICAgc2VsZWN0RWxlbWVu
dChlbGVtZW50KTsKQEAgLTEwNDAsNyArMTA0MCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0
YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9u
CiAKICAgICAgICAgU3RyaW5nIHRleHRDb250ZW50V2l0aFNpbXBsaWZpZWRXaGl0ZVNwYWNlID0g
aGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogCi0gICAg
ICAgIGlmICghZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkpIHsKKyAgICAgICAg
aWYgKGhhc0RhdGEgPT0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObykgewogICAgICAg
ICAgICAgLy8gU2ltcGxpZnkgd2hpdGVzcGFjZSBzbyB0aGUgdGl0bGUgcHV0IG9uIHRoZSBkYXRh
VHJhbnNmZXIgcmVzZW1ibGVzIHdoYXQgdGhlIHVzZXIgc2VlcwogICAgICAgICAgICAgLy8gb24g
dGhlIHdlYiBwYWdlLiBUaGlzIGluY2x1ZGVzIHJlcGxhY2luZyBuZXdsaW5lcyB3aXRoIHNwYWNl
cy4KICAgICAgICAgICAgIGlmIChtdXN0VXNlTGVnYWN5RHJhZ0NsaWVudCkKQEAgLTExMDMsNyAr
MTEwMyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAKICAgICAgICAgc3JjLmVkaXRvcigp
LnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7CiAgICAgICAgIGF1dG8gcHJldmlvdXNT
ZWxlY3Rpb24gPSBzcmMuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmICghZGF0
YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGhhc0RhdGEg
PT0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObykgewogICAgICAgICAgICAgc2VsZWN0
RWxlbWVudChlbGVtZW50KTsKICAgICAgICAgICAgIGlmICghYXR0YWNobWVudFVSTC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGF0dGFjaG1lbnQgVVJMIHNwZWNpZmll
ZCBieSB0aGUgZmlsZSBhdHRyaWJ1dGUgdG8gcG9wdWxhdGUgdGhlIHBhc3RlYm9hcmQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggZmI5MDFmM2YxZDVjMjY3OWYwNDYwZTdl
Nzg2MDcxMjE2NzQyZjdlMC4uMDViODQ4N2QxZDY0ZjU1MjE3NDdhMDQ1YjYzNGM1MGFmMDFlN2Rk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtOTEsNyArOTEsNyBAQCBz
dHJ1Y3QgRHJhZ1N0YXRlOwogICAgICAgICAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
bGFjZURyYWdDYXJldChjb25zdCBJbnRQb2ludCYpOwogICAgICAgICAKLSAgICAgICAgYm9vbCBz
dGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNP
cCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBk
cmFnT3JpZ2luKTsKKyAgICAgICAgYm9vbCBzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJh
Z1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBk
cmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVi
b2FyZERhdGEpOwogICAgICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSYgbWF4RHJhZ0ltYWdlU2l6
ZSgpOwogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBNYXhPcmlnaW5hbEltYWdl
QXJlYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCmluZGV4IDYyNThhYmQ1Y2NkNTQ0ZjBmNzk1MmM0
NDUwMTNhNThmOGYyMWMxNTcuLjZkMTYyNTkwMGUzNDVmMzNlZmE2NTA4YTA1ZTUzMzYyMTRhYzhi
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaApAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBEcmFnU3RhdGUgewogICAgIFJlZlB0cjxFbGVtZW50PiBzb3Vy
Y2U7IC8vIEVsZW1lbnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50
IG1vdXNlIGdlc3R1cmUuCi0gICAgUmVmUHRyPFJhbmdlPiBkcmFnZ2VkQ29udGVudFJhbmdlOwog
ICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudHM7CiAgICAgRHJhZ1NvdXJjZUFjdGlvbiB0eXBl
OwogICAgIFJlZlB0cjxEYXRhVHJhbnNmZXI+IGRhdGFUcmFuc2ZlcjsgLy8gVXNlZCBvbiBvbmx5
IHRoZSBzb3VyY2Ugc2lkZSBvZiBkcmFnZ2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAppbmRleCBlNTM4YmE2YzUzMTJkOWM4MTllYjVhNzU2NjQwYWM1YWJhOGNkM2FiLi44MGIx
YzY2NjU0Mzk4YTkwYWNlNDY2YTZmNGM3ZTZiOTYyYWEyYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlT3Zl
cmxheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgpAQCAtMzQ2NSwzMSArMzQ2NiwyMiBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6aW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpCiAgICAgZHJhZ1N0YXRlKCkuZGF0
YVRyYW5zZmVyID0gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgcmVwYWludENvbnRlbnRzT2ZS
YW5nZShSZWZQdHI8UmFuZ2U+IHJhbmdlKQorc3RhdGljIHZvaWQgcmVtb3ZlRHJhZ2dlZENvbnRl
bnREb2N1bWVudE1hcmtlcnNGcm9tQWxsRnJhbWVzSW5QYWdlKFBhZ2UmIHBhZ2UpCiB7Ci0gICAg
aWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogY29udGFpbmVyID0gcmFu
Z2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKCk7Ci0gICAgaWYgKCFjb250YWluZXIpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCBub2RlcyBlbmNsb3Nl
ZCBpbiB0aGlzIFJhbmdlIGFyZSByZXBhaW50ZWQuCi0gICAgaWYgKGF1dG8gcmVuZGVyZXJUb1Jl
cGFpbnQgPSBjb250YWluZXItPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRh
aW5pbmdSZW5kZXJlciA9IHJlbmRlcmVyVG9SZXBhaW50LT5jb250YWluZXIoKSkKLSAgICAgICAg
ICAgIHJlbmRlcmVyVG9SZXBhaW50ID0gY29udGFpbmluZ1JlbmRlcmVyOwotICAgICAgICByZW5k
ZXJlclRvUmVwYWludC0+cmVwYWludCgpOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2Uu
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCisgICAg
ICAgICAgICBkb2N1bWVudC0+bWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6
OkRyYWdnZWRDb250ZW50KTsKICAgICB9CisKKyAgICBpZiAoYXV0byogbWFpbkZyYW1lUmVuZGVy
ZXIgPSBwYWdlLm1haW5GcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICBtYWluRnJh
bWVSZW5kZXJlci0+cmVwYWludFJvb3RDb250ZW50cygpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxl
cjo6ZHJhZ0NhbmNlbGxlZCgpCiB7CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0gICAg
aWYgKGF1dG8gcmFuZ2UgPSBkcmFnU3RhdGUoKS5kcmFnZ2VkQ29udGVudFJhbmdlKSB7Ci0gICAg
ICAgIHJhbmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9jdW1l
bnRNYXJrZXI6OkRyYWdnZWRDb250ZW50KTsKLSAgICAgICAgcmVwYWludENvbnRlbnRzT2ZSYW5n
ZShyYW5nZSk7Ci0gICAgfQotICAgIGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2UgPSBu
dWxscHRyOworICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCisgICAgICAgIHJl
bW92ZURyYWdnZWRDb250ZW50RG9jdW1lbnRNYXJrZXJzRnJvbUFsbEZyYW1lc0luUGFnZSgqcGFn
ZSk7CiAjZW5kaWYKIH0KIApAQCAtMzUwNCwyMiArMzQ5NiwyNCBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZGlkU3RhcnREcmFnKCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAK
KyAgICBSZWZQdHI8UmFuZ2U+IGRyYWdnZWRDb250ZW50UmFuZ2U7CiAgICAgaWYgKGRyYWdTdGF0
ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKQotICAgICAgICBkcmFnU3RhdGUo
KS5kcmFnZ2VkQ29udGVudFJhbmdlID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50
b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBkcmFnZ2VkQ29udGVudFJhbmdlID0gbV9mcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGVsc2Ug
ewogICAgICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uKGRyYWdTb3VyY2UuZ2V0KCksIFBvc2l0
aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKTsKICAgICAgICAgUG9zaXRpb24gZW5kUG9zaXRp
b24oZHJhZ1NvdXJjZS5nZXQoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7Ci0g
ICAgICAgIGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRy
YWdTb3VyY2UtPmRvY3VtZW50KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKKyAgICAg
ICAgZHJhZ2dlZENvbnRlbnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZHJhZ1NvdXJjZS0+ZG9jdW1l
bnQoKSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwogICAgIH0KIAotICAgIGlmIChhdXRv
IHJhbmdlID0gZHJhZ1N0YXRlKCkuZHJhZ2dlZENvbnRlbnRSYW5nZSkgewotICAgICAgICByYW5n
ZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREcmFnZ2VkQ29udGVudE1hcmtlcihyYW5n
ZS5nZXQoKSk7Ci0gICAgICAgIHJlcGFpbnRDb250ZW50c09mUmFuZ2UocmFuZ2UpOworICAgIGlm
IChkcmFnZ2VkQ29udGVudFJhbmdlKSB7CisgICAgICAgIGRyYWdnZWRDb250ZW50UmFuZ2UtPm93
bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRHJhZ2dlZENvbnRlbnRNYXJrZXIoZHJhZ2dlZENv
bnRlbnRSYW5nZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IG1fZnJhbWUu
Y29udGVudFJlbmRlcmVyKCkpCisgICAgICAgICAgICByZW5kZXJlci0+cmVwYWludFJvb3RDb250
ZW50cygpOwogICAgIH0KICNlbmRpZgogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJj
ZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBv
cGVyYXRpb24pCit2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIE1heUV4dGVu
ZERyYWdTZXNzaW9uIG1heUV4dGVuZERyYWdTZXNzaW9uKQogewogICAgIC8vIFNlbmQgYSBoaXQg
dGVzdCByZXF1ZXN0IHNvIHRoYXQgUmVuZGVyTGF5ZXIgZ2V0cyBhIGNoYW5jZSB0byB1cGRhdGUg
dGhlIDpob3ZlciBhbmQgOmFjdGl2ZSBwc2V1ZG9jbGFzc2VzLgogICAgIEhpdFRlc3RSZXF1ZXN0
IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2UgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxs
b3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KTsKQEAgLTM1MzIsOSArMzUyNiw5IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
ZW50LCBEcmFnT3BlcmF0CiAgICAgfQogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKIAot
ICAgIGlmIChhdXRvIHJhbmdlID0gZHJhZ1N0YXRlKCkuZHJhZ2dlZENvbnRlbnRSYW5nZSkgewot
ICAgICAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJzKERv
Y3VtZW50TWFya2VyOjpEcmFnZ2VkQ29udGVudCk7Ci0gICAgICAgIHJlcGFpbnRDb250ZW50c09m
UmFuZ2UocmFuZ2UpOworICAgIGlmIChtYXlFeHRlbmREcmFnU2Vzc2lvbiA9PSBNYXlFeHRlbmRE
cmFnU2Vzc2lvbjo6Tm8pIHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2Uo
KSkKKyAgICAgICAgICAgIHJlbW92ZURyYWdnZWRDb250ZW50RG9jdW1lbnRNYXJrZXJzRnJvbUFs
bEZyYW1lc0luUGFnZSgqcGFnZSk7CiAgICAgfQogCiAgICAgZHJhZ1N0YXRlKCkuc291cmNlID0g
bnVsbHB0cjsKQEAgLTM1NTUsNiArMzU0OSwyMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0
Y2hEcmFnU3JjRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFBsYQog
ewogICAgIHJldHVybiAhZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRUeXBlLCAqZHJhZ1N0YXRlKCku
c291cmNlLCBldmVudCwgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLmdldCgpKTsKIH0KKworYm9v
bCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ1N0YXJ0RXZlbnQoSGFzTm9uRGVmYXVsdFBhc3Rl
Ym9hcmREYXRhJiBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpCit7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgYXV0byBjaGFuZ2VDb3VudEJlZm9yZURyYWdTdGFydCA9IGRyYWdTdGF0ZSgp
LmRhdGFUcmFuc2Zlci0+cGFzdGVib2FyZCgpLmNoYW5nZUNvdW50KCk7CisjZW5kaWYKKworICAg
IGJvb2wgbWF5U3RhcnREcmFnID0gZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRy
YWdzdGFydEV2ZW50LCBtX21vdXNlRG93bik7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBo
YXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBjaGFuZ2VDb3VudEJlZm9yZURyYWdTdGFydCAh
PSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnBhc3RlYm9hcmQoKS5jaGFuZ2VDb3VudCgpID8g
SGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpZZXMgOiBIYXNOb25EZWZhdWx0UGFzdGVib2Fy
ZERhdGE6Ok5vOworI2Vsc2UKKyAgICBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBkcmFn
U3RhdGUoKS5kYXRhVHJhbnNmZXItPnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkgPyBIYXNOb25EZWZh
dWx0UGFzdGVib2FyZERhdGE6OlllcyA6IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm87
CisjZW5kaWYKKworICAgIHJldHVybiBtYXlTdGFydERyYWcgJiYgIW1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKTsKK30KICAgICAKIHN0YXRpYyBib29s
IEV4YWN0bHlPbmVCaXRTZXQoRHJhZ1NvdXJjZUFjdGlvbiBuKQogewpAQCAtMzY2MCw2ICszNjcx
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVy
KCk7CiAKICAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXIgPSBjcmVhdGVEcmFnZ2luZ0RhdGFU
cmFuc2ZlcigpOworICAgIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNOb25EZWZhdWx0
UGFzdGVib2FyZERhdGEgPSBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vOwogICAgIAog
ICAgIGlmIChkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cykgewogICAgICAgICAvLyBD
aGVjayB0byBzZWUgaWYgdGhlIGlzIGEgRE9NIGJhc2VkIGRyYWcuIElmIGl0IGlzLCBnZXQgdGhl
IERPTSBzcGVjaWZpZWQgZHJhZyBpbWFnZSBhbmQgb2Zmc2V0LgpAQCAtMzY4MCw4ICszNjkyLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgICAgIH0KICAgICAgICAgfSAKIAot
ICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2
ZW50TmFtZXMoKS5kcmFnc3RhcnRFdmVudCwgbV9tb3VzZURvd24pCi0gICAgICAgICAgICAmJiAh
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpOworICAg
ICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGRpc3BhdGNoRHJhZ1N0YXJ0RXZlbnQoaGFz
Tm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKIAogICAgICAgICBkcmFnU3RhdGUoKS5kYXRhVHJh
bnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKIApAQCAtMzY5OCw3ICszNzA5LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFy
dERyYWcpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwotICAgICAgICBt
X2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWco
bV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93blBv
cyk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxl
cigpLnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCks
IG1fbW91c2VEb3duUG9zLCBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgICAgICAv
LyBJbiBXZWJLaXQyIHdlIGNvdWxkIHJlLWVudGVyIHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhl
ciBkcmFnLgogICAgICAgICAvLyBPbiBPUyBYIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhl
IG93bmVyc2hpcCBvZiB0aGUgcGFzdGVib2FyZCBhbmQgdGhlIHByb21pc2VkIHR5cGVzLgogICAg
ICAgICBpZiAobV9kaWRTdGFydERyYWcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmlu
ZGV4IDIyNTFmOWFlZDU0MGJkZTRhNzkzMGIwN2MyY2QxM2RmNjJjMjQ2MDYuLjY2NjNjOGYyYTg5
ZDNmMjJjM2JlZjYyYjA5N2M0NmFlZGJmNjc2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaApAQCAtMjU2LDcgKzI1Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZFN0YXJ0RHJhZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNl
bGxlZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgRHJhZ09wZXJhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBEcmFnT3Bl
cmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpObyk7
CiAjZW5kaWYKIAogICAgIHZvaWQgZm9jdXNEb2N1bWVudFZpZXcoKTsKQEAgLTQwNSw2ICs0MDUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJEcmFnU3RhdGUoKTsKIAogICAgIGJvb2wgZGlz
cGF0Y2hEcmFnU3JjRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOworICAgIGJvb2wgZGlzcGF0Y2hEcmFnU3RhcnRFdmVudChIYXNO
b25EZWZhdWx0UGFzdGVib2FyZERhdGEmKTsKIAogICAgIGJvb2wgZHJhZ0h5c3RlcmVzaXNFeGNl
ZWRlZChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBkcmFnSHlzdGVyZXNpc0V4
Y2VlZGVkKGNvbnN0IEludFBvaW50JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9F
dmVudEhhbmRsZXJJT1MubW0KaW5kZXggODA2NDRiN2ZkODIzZGJiZjIwNWQyOTJiMDBiMzZjY2Rm
ZDg0MjdlYy4uOGYwZmI0ZTJlYWJhM2RkOTZjZWViNDQzOGY4ZjNiMDM5OTU4YjE0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtNjA2LDcgKzYwNiw2
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2luRGF0YUludGVyYWN0aW9uQXRQb2ludChj
b25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpCiAKICAgICBTZXRGb3JTY29wZTxib29sPiBtb3Vz
ZVByZXNzZWQobV9tb3VzZVByZXNzZWQsIHRydWUpOwogICAgIGRyYWdTdGF0ZSgpLnNvdXJjZSA9
IG51bGxwdHI7Ci0gICAgZHJhZ1N0YXRlKCkuZHJhZ2dlZENvbnRlbnRSYW5nZSA9IG51bGxwdHI7
CiAgICAgbV9tb3VzZURvd25Qb3MgPSBwcm90ZWN0ZWRGcmFtZS0+dmlldygpLT53aW5kb3dUb0Nv
bnRlbnRzKHN5bnRoZXRpY01vdXNlTW92ZUV2ZW50LnBvc2l0aW9uKCkpOwogCiAgICAgcmV0dXJu
IGhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGhpdFRlc3RlZE1vdXNlRXZlbnQsIERvbnRDaGVja0Ry
YWdIeXN0ZXJlc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA1ZTI2
YmYyZmJmNjY0NzIwMzRmODljYTljYWFkNDNjYjhmZmZjNTM5Li42ZWUwODc2ZjBiODIxOGMxMjQz
YjBjMjgxMWVjNjE1NzdmOWU2ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
CkBAIC0yMTksNiArMjE5LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IE5TQXJyYXkgKnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKICAgICBjb25z
dCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CisgICAg
bG9uZyBjaGFuZ2VDb3VudCgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDczMTc4
MmNjYzg2Mjc4M2Q0ZjJkOTIxZWJkYzU5YjE2YTZiZDkyMWIuLjMxYjA0ODIzNjBhOTBiZTJhYWQ2
NDBlNmExODBkNTllNmY3N2UzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC0yOTksNiArMjk5LDExIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFk
ZXIpCiAgICAgfQogfQogCitsb25nIFBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5j
aGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsKK30KKwogTlNBcnJheSAqUGFzdGVib2FyZDo6
c3VwcG9ydGVkV2ViQ29udGVudFBhc3RlYm9hcmRUeXBlcygpCiB7CiAgICAgcmV0dXJuIEBbKGlk
KVdlYkFyY2hpdmVQYm9hcmRUeXBlLCAoaWQpa1VUVHlwZUZsYXRSVEZELCAoaWQpa1VUVHlwZVJU
RiwgKGlkKWtVVFR5cGVIVE1MLCAoaWQpa1VUVHlwZVBORywgKGlkKWtVVFR5cGVUSUZGLCAoaWQp
a1VUVHlwZUpQRUcsIChpZClrVVRUeXBlR0lGLCAoaWQpa1VUVHlwZVVSTCwgKGlkKWtVVFR5cGVU
ZXh0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggODI5NjU1OWVhM2QxYWNkNWIyMWQ5ODc3YjQwNTNk
OTkyODQxYTllOC4uMWFmMTNkNDZkZmJiZjJkOWY0Yjg3YzA3NTJmMzk5ZTg3MjBmN2QyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQubW0KQEAgLTI3Nyw3ICsyNzcsNiBAQCAtICh2b2lkKXNldEl0ZW1Qcm92aWRl
cnM6KE5TQXJyYXk8X19raW5kb2YgTlNJdGVtUHJvdmlkZXIgKj4gKilpdGVtUHJvdmlkZXJzCiAg
ICAgX2l0ZW1Qcm92aWRlcnMgPSBpdGVtUHJvdmlkZXJzOwogICAgIF9jaGFuZ2VDb3VudCsrOwog
ICAgIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMgPSBuaWw7Ci0gICAgX3N0YWdlZFJlZ2lzdHJhdGlv
bkluZm9MaXN0ID0gbmlsOwogCiAgICAgTlNNdXRhYmxlQXJyYXkgKnR5cGVUb0ZpbGVVUkxNYXBz
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5Oml0ZW1Qcm92aWRlcnMuY291bnRd
OwogICAgIFtpdGVtUHJvdmlkZXJzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOlt0eXBlVG9G
aWxlVVJMTWFwc10gKFVJSXRlbVByb3ZpZGVyICosIE5TVUludGVnZXIsIEJPT0wgKikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBjZDYyYTJk
Y2JiYzExOTg4NTY1MjQ3MDliZWQ4ZGZmZWQyZDUzZjI4Li5hODhjNWQ5OGI0NGZiOTMzZmYwYTZl
MzUxNDY3NmYwZGExOGM4YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQpAQCAtMTA3LDYgKzEwNywxMSBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4g
d3JpdGFibGVUeXBlc0ZvckltYWdlKCkKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKK2xvbmcgUGFz
dGVib2FyZDo6Y2hhbmdlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5h
bWUpOworfQorCiBOU0FycmF5ICpQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRGaWxlVXBsb2FkUGFzdGVi
b2FyZFR5cGVzKCkKIHsKICAgICByZXR1cm4gQFsgKE5TU3RyaW5nICopTlNGaWxlc1Byb21pc2VQ
Ym9hcmRUeXBlLCAoTlNTdHJpbmcgKilOU0ZpbGVuYW1lc1Bib2FyZFR5cGUgXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
NDc3OTE2MTE5YmZkMjFlOGEwMGRhZWYwMWM0ZTEzOTI1MmQ2NzdkMi4uYmNkYjBiZjA2YTBjYTlj
MzlmZjVmM2M1YjRhNTI1NDU2MTJiYzA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTU3LDYgKzU3LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RWxlbWVudC5oPgpAQCAtNjMzLDkgKzYzNCwxNSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdGFy
dERhdGFJbnRlcmFjdGlvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0CiAK
IHZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLy8gVG8gYXVnbWVudCB0aGUgcGxhdGZv
cm0gZHJhZyBzZXNzaW9uIHdpdGggYWRkaXRpb25hbCBpdGVtcywgZW5kIHRoZSBjdXJyZW50IGRy
YWcgc2Vzc2lvbiBhbmQgYmVnaW4gYSBuZXcgZHJhZyBzZXNzaW9uIHdpdGggdGhlIG5ldyBkcmFn
IGl0ZW0uCisgICAgLy8gVGhpcyBwcm9jZXNzIGlzIG9wYXF1ZSB0byB0aGUgVUkgcHJvY2Vzcywg
d2hpY2ggc3RpbGwgbWFpbnRhaW5zIHRoZSBvbGQgZHJhZyBpdGVtIGluIGl0cyBkcmFnIHNlc3Np
b24uIFNpbWlsYXJseSwgdGhpcyBwZXJzaXN0ZW50IGRyYWcgc2Vzc2lvbgorICAgIC8vIGlzIG9w
YXF1ZSB0byB0aGUgd2ViIHByb2Nlc3MsIHdoaWNoIG9ubHkgc2VlcyB0aGF0IHRoZSBjdXJyZW50
IGRyYWcgaGFzIGVuZGVkLCBhbmQgdGhhdCBhIG5ldyBvbmUgaXMgYmVnaW5uaW5nLgorICAgIFBs
YXRmb3JtTW91c2VFdmVudCBldmVudChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIExl
ZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBjdXJyZW50VGltZSgpLCAwLCBOb1RhcCk7CisgICAgbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLmRyYWdFbmRlZCgpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5k
bGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIERyYWdPcGVyYXRpb25Ob25lLCBNYXlFeHRl
bmREcmFnU2Vzc2lvbjo6WWVzKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoZmFsc2UpKTsKKyAgICBib29sIGRp
ZEhhbmRsZURyYWcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLnRyeVRvQmVn
aW5EYXRhSW50ZXJhY3Rpb25BdFBvaW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbik7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRIYW5kbGVBZGRpdGlvbmFsRHJh
Z0l0ZW1zUmVxdWVzdChkaWRIYW5kbGVEcmFnKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ29u
Y2x1ZGVFZGl0RGF0YUludGVyYWN0aW9uKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNWFmYTllNjk5NTNlMjVkZjljODFkZmYzYWE4MTg3NTg4
NWE5ZDIyLi5mN2E4MzcxODNkMjQyMDkwY2I1YWExYWQyZjAyMWZjMWEzYzM0ZDUxIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAg
QEAKIDIwMTctMDktMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
KyAgICAgICAgW2lPUyBXSzJdIFN1cHBvcnQgdGFwcGluZyB0byBhZGQgaXRlbXMgdG8gdGhlIGN1
cnJlbnQgZHJhZyBzZXNzaW9uIGluIHdlYiBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0MjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMxMTQ0Njc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAg
QWRkcyBhIG5ldyBkcmFnIGFuZCBkcm9wIHRlc3QgdGhhdCBiZWdpbnMgYSBkcmFnIG9uIGEgdGV4
dCBzZWxlY3Rpb24sIGFkZHMgYW4gaW1hZ2UgYW5kIGEgbGluaywgYW5kIHRoZW4gZHJvcHMKKyAg
ICAgICAgaW50byBhIGNvbnRlbnRlZGl0YWJsZSBhcmVhLiBUaGlzIHZlcmlmaWVzIHRoYXQgdGhl
IHRleHQsIGxpbmsgYW5kIGltYWdlIGFyZSBpbnNlcnRlZCBpbnRvIHRoZSBlZGl0YWJsZSBhcmVh
CisgICAgICAgIHVwb24gZHJvcC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKKzIwMTctMDktMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisK
ICAgICAgICAgW2lPUyBEbkRdIEVsZW1lbnRzIGluIHRoZSBET00gd2l0aCB0aGUgYGRyYWdnYWJs
ZWAgYXR0cmlidXRlIHNob3VsZCBiZSBkcmFnZ2FibGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjY2NAogICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzI1OTYxNTY+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRh
SW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJ
bnRlcmFjdGlvblRlc3RzLm1tCmluZGV4IDYzNDEyNmM4ODIwNGY4MmQ3ZDU1NDI3NDQ2NGQzNzli
MGEzY2JjZDQuLmM0NjUyNTE1NzJkZmMwZDI0NjEwMjU2NjEyYTExNjdjZjY5MjNkZjMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3Rz
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRl
c3RzLm1tCkBAIC0xMzk0LDYgKzEzOTQsMjEgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywg
QWRkaXRpb25hbEl0ZW1zQ2FuQmVQcmV2ZW50ZWRPbkRyYWdTdGFydCkKICAgICBFWFBFQ1RfV0tf
U1RSRVEoIkFCQ0QiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRp
dG9yLnRleHRDb250ZW50Il0pOwogfQogCitURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBBZGRp
dGlvbmFsTGlua0FuZEltYWdlSW50b0NvbnRlbnRFZGl0YWJsZSkKK3sKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVz
dFBhZ2VOYW1lZDpAInNlbGVjdGVkLXRleHQtaW1hZ2UtbGluay1hbmQtZWRpdGFibGUiXTsKKwor
ICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbc2ltdWxhdG9yIHJ1
bkZyb206Q0dQb2ludE1ha2UoNTAsIDUwKSB0bzpDR1BvaW50TWFrZSg1MCwgNDAwKSBhZGRpdGlv
bmFsSXRlbVJlcXVlc3RMb2NhdGlvbnM6QHsKKyAgICAgICAgQDAuMzM6IFtOU1ZhbHVlIHZhbHVl
V2l0aENHUG9pbnQ6Q0dQb2ludE1ha2UoNTAsIDE1MCldLAorICAgICAgICBAMC42NjogW05TVmFs
dWUgdmFsdWVXaXRoQ0dQb2ludDpDR1BvaW50TWFrZSg1MCwgMjUwKV0KKyAgICB9XTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoIkFCQ0QgQSBsaW5rIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImVkaXRvci50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfVFJVRShbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiISFlZGl0b3IucXVlcnlTZWxlY3Rv
cignaW1nJykiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5hcHBsZS5jb20v
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci5xdWVyeVNl
bGVjdG9yKCdhJykuaHJlZiJdKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQog
CiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320509</attachid>
            <date>2017-09-11 18:17:08 -0700</date>
            <delta_ts>2017-09-11 18:26:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176421-20170911181707.patch</filename>
            <type>text/plain</type>
            <size>27959</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVmMDBlMzI5NjQyNmNl
NDhlMmFhMjg3MmVmZjc2Zjg4MGQwNzQzYy4uMjU4ODYzYTI1ZmI1NDRmZjcwNDliOTEyOWU1OTM2
MWY4MTE0Mzc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA5LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBT
dXBwb3J0IHRhcHBpbmcgdG8gYWRkIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBp
biB3ZWIgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc2NDIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFJlZmFjdG9ycyBzb21lIGRyYWcg
aW5pdGlhdGlvbiBsb2dpYyB0byBoYW5kbGUgc3RhcnRpbmcgYSBkcmFnIHdoZW4gZGF0YSBoYXMg
YWxyZWFkeSBiZWVuIHdyaXR0ZW4gdG8gdGhlCisgICAgICAgIHBhc3RlYm9hcmQgKGluIHRoZSBj
YXNlIG9mIGlPUywgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCkuIFNlZSBhbm5vdGF0ZWQgY29t
bWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgIFRlc3RzOiBEYXRhSW50ZXJh
Y3Rpb25UZXN0cy5BZGRpdGlvbmFsTGlua0FuZEltYWdlSW50b0NvbnRlbnRFZGl0YWJsZQorCisg
ICAgICAgICogcGFnZS9EcmFnQWN0aW9ucy5oOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisK
KyAgICAgICAgQWRkIGEgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGFyZ3VtZW50IGhlcmUs
IGFuZCByZXBsYWNlIGNoZWNrcyBmb3IgIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0
YSgpCisgICAgICAgIHdpdGggY2hlY2tzIGZvciB3aGV0aGVyIHRoZSBhcmd1bWVudCBpcyBIYXNO
b25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vLiBUaGVzZSBjaGVja3MgZm9yIFBhc3RlYm9hcmQ6
Omhhc0RhdGEoKQorICAgICAgICBjdXJyZW50bHkgcHJldmVudCB1cyBmcm9tIG92ZXJ3cml0aW5n
IGN1c3RvbSBwYXN0ZWJvYXJkIGRhdGEsIGluIHRoZSBjYXNlIHRoYXQgdGhlIHBhZ2UgaGFzIHdy
aXR0ZW4gcGFzdGVib2FyZAorICAgICAgICBkYXRhIHVzaW5nIHRoZSBldmVudCdzIERhdGFUcmFu
c2Zlci4gSG93ZXZlciwgaW4gdGhlIGNhc2Ugb2YgYWRkaW5nIGFkZGl0aW9uYWwgZHJhZyBpdGVt
cyB0byB0aGUgc2Vzc2lvbiwgd2UKKyAgICAgICAgd2lsbCBhbHJlYWR5IGhhdmUgcGFzdGVib2Fy
ZCBkYXRhLCBzbyB0aGVzZSBjaGVja3Mgd2lsbCBwcmV2ZW50IHVzIGZyb20gd3JpdGluZyBkZWZh
dWx0IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQuCisgICAgICAgIFNlZSBFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5oOgorICAgICAgICAqIHBhZ2UvRHJhZ1N0YXRlLmg6CisKKyAgICAgICAgUmVtb3ZlIHRoZSBk
cmFnZ2VkQ29udGVudFJhbmdlIG1lbWJlciBmcm9tIERyYWdTdGF0ZS4gU2VlIGJlbG93LgorCisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3Zl
RHJhZ2dlZENvbnRlbnREb2N1bWVudE1hcmtlcnNGcm9tQWxsRnJhbWVzSW5QYWdlKToKKworICAg
ICAgICBTaW1wbGlmeSB0aGUgaGFuZGxpbmcgb2YgZHJhZ2dlZCBjb250ZW50IHJhbmdlIG1hcmtl
cnMuIEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgRE9NIFJhbmdlIGJlaW5nIGRyYWdnZWQgYW5kCisg
ICAgICAgIHJlbW92aW5nL3JlcGFpbnRpbmcgdGhlIHJhbmdlIGFmdGVyIGRyYWdnaW5nIGVuZHMs
IGp1c3QgcmVwYWludCB0aGUgY29udGVudFJlbmRlcmVyIG9mIHRoZSBmcmFtZSBiZWluZyBkcmFn
Z2VkLgorICAgICAgICBXaGVuIHRoZSBkcmFnZ2luZyBzZXNzaW9uIGhhcyBjb21wbGV0ZWx5IGVu
ZGVkLCByZW1vdmUgYWxsIGRyYWdnZWQgY29udGVudCByYW5nZXMgZnJvbSB0aGUgcGFnZSdzIG1h
aW5mcmFtZSBhbmQKKyAgICAgICAgYWxsIG9mIGl0cyBzdWJmcmFtZXMsIGFuZCByZXBhaW50IGV2
ZXJ5dGhpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ0NhbmNlbGxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KToKKworICAgICAg
ICBBZGQgYSBNYXlFeHRlbmREcmFnU2Vzc2lvbiBhcmd1bWVudCwgaW5kaWNhdGluZyB3aGV0aGVy
IG9yIG5vdCB0aGUgd2ViIHByb2Nlc3Mgd2lsbCBhdHRlbXB0IHRvIGNvbnRpbnVlIHRoZSBkcmFn
CisgICAgICAgIHNlc3Npb24sIGluIHdoaWNoIGNhc2UgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNl
RW5kZWRBdCBzaG91bGQgbm90IHJlbW92ZSBhbnkgZXhpc3RpbmcgZHJhZ2dlZCBjb250ZW50IHJh
bmdlCisgICAgICAgIGRvY3VtZW50IG1hcmtlcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnU3RhcnRFdmVudCk6CisKKyAgICAgICAgSGVscGVyIG1ldGhv
ZCB0byBkaXNwYXRjaCBhIGBkcmFnc3RhcnRgIGV2ZW50LCByZXR1cm4gd2hldGhlciBvciBub3Qg
dG8gcHJvY2VlZCB3aXRoIHRoZSBkcmFnLCBhbmQgYWxzbyBjb21wdXRlCisgICAgICAgIChhcyBh
biBvdXRwYXJhbSkgd2hldGhlciBvciBub3QgY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSB3YXMgd3Jp
dHRlbiBkdXJpbmcgdGhlIGV2ZW50LgorCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWcpOgorCisgICAgICAgIElmIGN1c3RvbSBkYXRhIHdhcyB3cml0dGVuIGR1cmlu
ZyBgZHJhZ3N0YXJ0YCwgcGFzcyBhbG9uZyBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Olll
cyB3aGVuIGNhbGxpbmcKKyAgICAgICAgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZy4KKworICAg
ICAgICAoV2ViQ29yZTo6cmVwYWludENvbnRlbnRzT2ZSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRyeVRvQmVnaW5EYXRhSW50
ZXJhY3Rpb25BdFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpdKToKKworICAgICAgICBTdG9wIGNsZWFyaW5nIG91
dCB0aGUgc3RhZ2VkIGl0ZW0gcHJvdmlkZXIgcmVnaXN0cmF0aW9uIGxpc3Qgd2hlbiBzZXR0aW5n
IGl0ZW0gcHJvdmlkZXJzLiBBZnRlciByZWZhY3RvcmluZyBpbgorICAgICAgICByMjIxNTk1LCBz
dGFnZWQgcmVnaXN0cmF0aW9uIGxpc3RzIGFyZSBub3cgYXV0b21hdGljYWxseSBjbGVhcmVkIG91
dCB3aGVuICgxKSB0aGUgZHJhZy1hbmQtZHJvcCBpbnRlcmFjdGlvbgorICAgICAgICBzdGF0ZSBp
cyBjbGVhcmVkIG91dCBpbiB0aGUgVUkgcHJvY2Vzcywgb3IgKDIpIHdoZW4gdGhlIHJlZ2lzdHJh
dGlvbiBsaXN0IGlzIHRha2VuIGJ5IFdLQ29udGVudFZpZXcgKHNlZQorICAgICAgICAtdGFrZVJl
Z2lzdHJhdGlvbkxpc3QpIHdoZW4gZ2VuZXJhdGluZyBhbiBpdGVtIHByb3ZpZGVyLgorCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgY2hhbmdlQ291
bnQgbWV0aG9kIHRvIFBhc3RlYm9hcmQgb24gQ29jb2EgcGxhdGZvcm1zIChNYWMsIGlPUykgd2hp
Y2ggc3VwcG9ydCBjaGFuZ2VDb3VudCBuYXRpdmVseS4gSW4KKyAgICAgICAgdGhlb3J5LCB0aGVy
ZSdzIG5vIHJlYXNvbiBXaW5kb3dzLCBHVEsgYW5kIFdQRSBwb3J0cyBjYW4ndCBhbHNvIGltcGxl
bWVudCBhIHNpbWlsYXIgbWVjaGFuaXNtIGluCisgICAgICAgIFBsYXRmb3JtUGFzdGVib2FyZCwg
YnV0IHRoaXMgaXNuJ3QgbmVlZGVkIGZvciBhbnl0aGluZyB5ZXQuIFVwb24gZHJhZ3N0YXJ0LCBp
dCBpcyBzYWZlIHRvIGFzc3VtZSB0aGF0IHRoZQorICAgICAgICBwYXN0ZWJvYXJkIGhhcyBiZWVu
IGNsZWFyZWQgb24gdGhlc2UgcGxhdGZvcm1zLCBzbyBjaGVja2luZyBmb3IgUGFzdGVib2FyZDo6
aGFzRGF0YSAoYXMgd2UgZG8gZm9yIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgY3VycmVudGx5KSBp
cyBzdWZmaWNpZW50LgorCiAyMDE3LTA5LTExICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjE3NjIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDc5MjdlODY3NDE0YmM4OTAyZTJiNDlkNzMzY2VhYWUyYTAzYmUxZmIuLmU0MzljYjkx
MzQ5MzIzMTIxZWFiZWQ2NzY1OGI1NGIyMWUwYmZhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0zLDYgKzMsOCBA
QAogICAgICAgICBGaXggbWVtb3J5IGxlYWsgaW50cm9kdWNlZCBpbiByMjIxODk0LgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzUzCiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKwogICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKICAg
ICAgICAgKFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmNyZWF0ZVJlcXVlc3QpOgogICAgICAgICBUaGUgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkga2VlcHMgdHJhY2sgb2YgcGVuZGluZyByZXF1ZXN0cwpAQCAtMTU0LDYg
KzE1NiwyOCBAQAogCiAyMDE3LTA5LTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCisgICAgICAgIFtpT1MgV0syXSBTdXBwb3J0IHRhcHBpbmcgdG8gYWRkIGl0ZW1z
IHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBpbiB3ZWIgY29udGVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDIxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zMTE0NDY3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgor
CisgICAgICAgIFRvIHJlcXVlc3QgYWRkaXRpb25hbCBkcmFnIGl0ZW1zLCBlbmQgdGhlIGN1cnJl
bnQgZHJhZyBpbiB0aGUgd2ViIHBhZ2UgYW5kIHRyeSB0byBiZWdpbiBhIGRyYWcgYXQgdGhlIG5l
dworICAgICAgICBsb2NhdGlvbi4gVGhpcyBwcm9jZXNzIGlzIHRyYW5zcGFyZW50IHRvIHRoZSBV
SSBwcm9jZXNzLCB3aGljaCBzdGlsbCBtYWludGFpbnMgdGhlIHNhbWUgVUlEcmFnU2Vzc2lvbiB3
aXRoIHRoZQorICAgICAgICBvbGQgZHJhZyBzb3VyY2UuCisKKyAgICAgICAgQXMgb3Bwb3NlZCB0
byBmaXJpbmcgYSBuZXcgZXZlbnQgKGZvciBpbnN0YW5jZTogYGFkZGRyYWdpdGVtYCksIHRoaXMg
YXBwcm9hY2ggaXMgdGFrZW4gdG8gZW5zdXJlIHRoYXQgaWYgdGhlCisgICAgICAgIHBhZ2Ugd2Fu
dHMgdG8gcHJldmVudERlZmF1bHQoKSBvbiBgZHJhZ3N0YXJ0YCwgaXQgd291bGQgYWxzbyBwcmV2
ZW50IHRoZSB1c2VyIGZyb20gYWRkaW5nIGl0IGFzIGFuIGFkZGl0aW9uYWwKKyAgICAgICAgZHJh
ZyBpdGVtLiBVc2luZyB0aGUgbmV3IGV2ZW50IGFwcHJvYWNoLCBkZWFsaW5nIHdpdGggdGhpcyBj
YXNlIHdvdWxkIGVpdGhlciByZXF1aXJlIHRoZSBwYWdlIHRvIGxpc3RlbiBmb3IgYQorICAgICAg
ICBuZXcgZXZlbnQgYW5kIGNhbGwgcHJldmVudERlZmF1bHQoKSwgd2hpY2ggd291bGQgYnJlYWsg
Y29tcGF0aWJpbGl0eSB3aXRoIHBhZ2VzIHRoYXQgb25seSBwcmV2ZW50RGVmYXVsdCgpIG9uCisg
ICAgICAgIGBkcmFnc3RhcnRgLCBvciBpdCB3b3VsZCByZXF1aXJlIHRoZSBkZWZhdWx0IGJlaGF2
aW9yIG9mIHRoaXMgbmV3IGV2ZW50IHRvIGJlIF9ub3RfIGFkZGluZyBhIGRyYWcgaXRlbSwgaW4g
d2hpY2gKKyAgICAgICAgY2FzZSB0aGlzIGFwcHJvYWNoIHdvdWxkIHJlcXVpcmUgcGFnZXMgdG8g
YWRvcHQgdGhlIG5ldyBldmVudCBpbiBzb21lIGZvcm0uCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
cXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbik6CisKKzIwMTctMDktMTAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKICAgICAgICAgW2lPUyBEbkRdIEVs
ZW1lbnRzIGluIHRoZSBET00gd2l0aCB0aGUgYGRyYWdnYWJsZWAgYXR0cmlidXRlIHNob3VsZCBi
ZSBkcmFnZ2FibGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NjY2NAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI1OTYxNTY+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdBY3Rpb25zLmgKaW5kZXggYWQyODYzNDcyMjU1NmRkNWRhOGI0OTlhYWIxYWNiNmUyOTA0
ODdjMS4uMmMxYTM3YTZlMGJlNTI3M2MyYzU1MGU0ODQ5ZjI2ZmUzNTI1ODc1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAtNjIsNSArNjIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIERyYWdPcGVyYXRpb25EZWxldGUgID0gMzIsCiAgICAgICAgIERyYWdPcGVyYXRp
b25FdmVyeSAgID0gVUlOVF9NQVgKICAgICB9IERyYWdPcGVyYXRpb247CisKKyAgICBlbnVtIGNs
YXNzIE1heUV4dGVuZERyYWdTZXNzaW9uIHsgTm8sIFllcyB9OworICAgIGVudW0gY2xhc3MgSGFz
Tm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIHsgTm8sIFllcyB9OwogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA0NzEz
YzM5MTAzM2EyNTlkNDE5NWUxYjUxMTA4MGI2MzU5Mjk5ZjJlLi5hMWQxZTU3NGFjZDMzZGE3NzJh
NDMwMGQ1ZGI0YmRiOTA4MDE3YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcApAQCAtODY4LDcgKzg2OCw3IEBAIHN0YXRpYyBJbnRQb2ludCBkcmFnTG9jRm9yU2VsZWN0
aW9uRHJhZyhGcmFtZSYgc3JjKQogICAgIHJldHVybiBJbnRQb2ludCh4cG9zLCB5cG9zKTsKIH0K
IAotYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikKK2Jvb2wgRHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFn
T3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29u
c3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNE
YXRhKQogewogICAgIGlmICghc3JjLnZpZXcoKSB8fCAhc3JjLmNvbnRlbnRSZW5kZXJlcigpIHx8
ICFzdGF0ZS5zb3VyY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkzMywxNCArOTMzLDE0
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFn
U3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgQVNTRVJUKHN0YXRlLnNvdXJjZSk7CiAg
ICAgRWxlbWVudCYgZWxlbWVudCA9ICpzdGF0ZS5zb3VyY2U7CiAKLSAgICBib29sIG11c3RVc2VM
ZWdhY3lEcmFnQ2xpZW50ID0gZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkgfHwg
bV9jbGllbnQudXNlTGVnYWN5RHJhZ0NsaWVudCgpOworICAgIGJvb2wgbXVzdFVzZUxlZ2FjeURy
YWdDbGllbnQgPSBoYXNEYXRhID09IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6WWVzIHx8
IG1fY2xpZW50LnVzZUxlZ2FjeURyYWdDbGllbnQoKTsKIAogICAgIEludFJlY3QgZHJhZ0ltYWdl
Qm91bmRzOwogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwogICAgIGlmIChz
dGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsKICAgICAgICAgUGFzdGVi
b2FyZFdyaXRlckRhdGEgcGFzdGVib2FyZFdyaXRlckRhdGE7CiAKLSAgICAgICAgaWYgKCFkYXRh
VHJhbnNmZXIucGFzdGVib2FyZCgpLmhhc0RhdGEoKSkgeworICAgICAgICBpZiAoaGFzRGF0YSA9
PSBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vKSB7CiAgICAgICAgICAgICBpZiAoc3Jj
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzTm9uZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIHBhZ2UgbWF5IGhhdmUgY2xlYXJlZCBvdXQgdGhlIHNlbGVjdGlvbiBpbiB0aGUgZHJhZ3N0
YXJ0IGhhbmRsZXIsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGJhaWwKICAgICAgICAgICAgICAg
ICAvLyBvdXQgb2YgdGhlIGRyYWcsIHNpbmNlIHRoZXJlIGlzIG5vIGNvbnRlbnQgdG8gd3JpdGUg
dG8gdGhlIHBhc3RlYm9hcmQuCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBib29sIERyYWdDb250cm9s
bGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09w
ZXJhdGlvbgogICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBkcmFnIGZvciBh
biBpbWFnZSB0aGF0IGNhbid0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uLgogICAgICAgICAvLyBUaGlz
IGlzIGFuIGVhcmx5IGRldGVjdGlvbiBmb3IgcHJvYmxlbXMgZW5jb3VudGVyZWQgbGF0ZXIgdXBv
biBkcm9wLgogICAgICAgICBBU1NFUlQoIWltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpLmlzRW1w
dHkoKSk7Ci0gICAgICAgIGlmICghZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkp
IHsKKyAgICAgICAgaWYgKGhhc0RhdGEgPT0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpO
bykgewogICAgICAgICAgICAgbV9kcmFnZ2luZ0ltYWdlVVJMID0gaW1hZ2VVUkw7CiAgICAgICAg
ICAgICBpZiAoZWxlbWVudC5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKQogICAgICAgICAgICAg
ICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudCk7CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBib29sIERy
YWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0
ZSwgRHJhZ09wZXJhdGlvbgogCiAgICAgICAgIFN0cmluZyB0ZXh0Q29udGVudFdpdGhTaW1wbGlm
aWVkV2hpdGVTcGFjZSA9IGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRl
U3BhY2UoKTsKIAotICAgICAgICBpZiAoIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0
YSgpKSB7CisgICAgICAgIGlmIChoYXNEYXRhID09IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0
YTo6Tm8pIHsKICAgICAgICAgICAgIC8vIFNpbXBsaWZ5IHdoaXRlc3BhY2Ugc28gdGhlIHRpdGxl
IHB1dCBvbiB0aGUgZGF0YVRyYW5zZmVyIHJlc2VtYmxlcyB3aGF0IHRoZSB1c2VyIHNlZXMKICAg
ICAgICAgICAgIC8vIG9uIHRoZSB3ZWIgcGFnZS4gVGhpcyBpbmNsdWRlcyByZXBsYWNpbmcgbmV3
bGluZXMgd2l0aCBzcGFjZXMuCiAgICAgICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGll
bnQpCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWco
RnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogCiAgICAg
ICAgIHNyYy5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwogICAgICAg
ICBhdXRvIHByZXZpb3VzU2VsZWN0aW9uID0gc3JjLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwot
ICAgICAgICBpZiAoIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0YSgpKSB7CisgICAg
ICAgIGlmIChoYXNEYXRhID09IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm8pIHsKICAg
ICAgICAgICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoIWF0dGFj
aG1lbnRVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBhdHRhY2ht
ZW50IFVSTCBzcGVjaWZpZWQgYnkgdGhlIGZpbGUgYXR0cmlidXRlIHRvIHBvcHVsYXRlIHRoZSBw
YXN0ZWJvYXJkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IGZiOTAxZjNm
MWQ1YzI2NzlmMDQ2MGU3ZTc4NjA3MTIxNjc0MmY3ZTAuLjA1Yjg0ODdkMWQ2NGY1NTIxNzQ3YTA0
NWI2MzRjNTBhZjAxZTdkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAg
LTkxLDcgKzkxLDcgQEAgc3RydWN0IERyYWdTdGF0ZTsKICAgICAgICAgCiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGxhY2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAg
Ci0gICAgICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERy
YWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBj
b25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbik7CisgICAgICAgIGJvb2wgc3RhcnREcmFnKEZyYW1l
JiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFz
Tm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKICAgICAgICAgc3RhdGljIGNvbnN0IEludFNpemUm
IG1heERyYWdJbWFnZVNpemUoKTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
TWF4T3JpZ2luYWxJbWFnZUFyZWE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaAppbmRleCA2MjU4YWJk
NWNjZDU0NGYwZjc5NTJjNDQ1MDEzYTU4ZjhmMjFjMTU3Li42ZDE2MjU5MDBlMzQ1ZjMzZWZhNjUw
OGEwNWU1MzM2MjE0YWM4YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKQEAgLTM0LDcgKzM0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRHJhZ1N0YXRlIHsKICAgICBSZWZQ
dHI8RWxlbWVudD4gc291cmNlOyAvLyBFbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2Us
IGZvciB0aGUgY3VycmVudCBtb3VzZSBnZXN0dXJlLgotICAgIFJlZlB0cjxSYW5nZT4gZHJhZ2dl
ZENvbnRlbnRSYW5nZTsKICAgICBib29sIHNob3VsZERpc3BhdGNoRXZlbnRzOwogICAgIERyYWdT
b3VyY2VBY3Rpb24gdHlwZTsKICAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBkYXRhVHJhbnNmZXI7
IC8vIFVzZWQgb24gb25seSB0aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZTUzOGJhNmM1MzEyZDljODE5ZWI1YTc1NjY0MGFj
NWFiYThjZDNhYi4uODBiMWM2NjY1NDM5OGE5MGFjZTQ2NmE2ZjRjN2U2Yjk2MmFhMmFjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1
ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZU92ZXJsYXlDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJk
RXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKQEAgLTM0NjUsMzEgKzM0
NjYsMjIgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmludmFsaWRhdGVEYXRhVHJhbnNmZXIoKQogICAg
IGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlciA9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIHJl
cGFpbnRDb250ZW50c09mUmFuZ2UoUmVmUHRyPFJhbmdlPiByYW5nZSkKK3N0YXRpYyB2b2lkIHJl
bW92ZURyYWdnZWRDb250ZW50RG9jdW1lbnRNYXJrZXJzRnJvbUFsbEZyYW1lc0luUGFnZShQYWdl
JiBwYWdlKQogewotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8q
IGNvbnRhaW5lciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcigpOwotICAgIGlmICgh
Y29udGFpbmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBh
bGwgbm9kZXMgZW5jbG9zZWQgaW4gdGhpcyBSYW5nZSBhcmUgcmVwYWludGVkLgotICAgIGlmIChh
dXRvIHJlbmRlcmVyVG9SZXBhaW50ID0gY29udGFpbmVyLT5yZW5kZXJlcigpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBjb250YWluaW5nUmVuZGVyZXIgPSByZW5kZXJlclRvUmVwYWludC0+Y29udGFp
bmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlclRvUmVwYWludCA9IGNvbnRhaW5pbmdSZW5kZXJl
cjsKLSAgICAgICAgcmVuZGVyZXJUb1JlcGFpbnQtPnJlcGFpbnQoKTsKKyAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9ICZwYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpKQorICAgICAgICAgICAgZG9jdW1lbnQtPm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJz
KERvY3VtZW50TWFya2VyOjpEcmFnZ2VkQ29udGVudCk7CiAgICAgfQorCisgICAgaWYgKGF1dG8q
IG1haW5GcmFtZVJlbmRlcmVyID0gcGFnZS5tYWluRnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkK
KyAgICAgICAgbWFpbkZyYW1lUmVuZGVyZXItPnJlcGFpbnRSb290Q29udGVudHMoKTsKIH0KIAog
dm9pZCBFdmVudEhhbmRsZXI6OmRyYWdDYW5jZWxsZWQoKQogewogI2lmIEVOQUJMRShEQVRBX0lO
VEVSQUNUSU9OKQotICAgIGlmIChhdXRvIHJhbmdlID0gZHJhZ1N0YXRlKCkuZHJhZ2dlZENvbnRl
bnRSYW5nZSkgewotICAgICAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5yZW1v
dmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpEcmFnZ2VkQ29udGVudCk7Ci0gICAgICAgIHJlcGFp
bnRDb250ZW50c09mUmFuZ2UocmFuZ2UpOwotICAgIH0KLSAgICBkcmFnU3RhdGUoKS5kcmFnZ2Vk
Q29udGVudFJhbmdlID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUucGFn
ZSgpKQorICAgICAgICByZW1vdmVEcmFnZ2VkQ29udGVudERvY3VtZW50TWFya2Vyc0Zyb21BbGxG
cmFtZXNJblBhZ2UoKnBhZ2UpOwogI2VuZGlmCiB9CiAKQEAgLTM1MDQsMjIgKzM0OTYsMjQgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZygpCiAgICAgaWYgKCFyZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuOwogCisgICAgUmVmUHRyPFJhbmdlPiBkcmFnZ2VkQ29udGVudFJhbmdlOwog
ICAgIGlmIChkcmFnU3RhdGUoKS50eXBlICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKLSAg
ICAgICAgZHJhZ1N0YXRlKCkuZHJhZ2dlZENvbnRlbnRSYW5nZSA9IG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICAgICAgZHJhZ2dlZENvbnRl
bnRSYW5nZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFu
Z2UoKTsKICAgICBlbHNlIHsKICAgICAgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbihkcmFnU291
cmNlLmdldCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CiAgICAgICAgIFBv
c2l0aW9uIGVuZFBvc2l0aW9uKGRyYWdTb3VyY2UuZ2V0KCksIFBvc2l0aW9uOjpQb3NpdGlvbklz
QWZ0ZXJBbmNob3IpOwotICAgICAgICBkcmFnU3RhdGUoKS5kcmFnZ2VkQ29udGVudFJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShkcmFnU291cmNlLT5kb2N1bWVudCgpLCBzdGFydFBvc2l0aW9uLCBlbmRQ
b3NpdGlvbik7CisgICAgICAgIGRyYWdnZWRDb250ZW50UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRy
YWdTb3VyY2UtPmRvY3VtZW50KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKICAgICB9
CiAKLSAgICBpZiAoYXV0byByYW5nZSA9IGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2Up
IHsKLSAgICAgICAgcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRHJhZ2dlZENv
bnRlbnRNYXJrZXIocmFuZ2UuZ2V0KCkpOwotICAgICAgICByZXBhaW50Q29udGVudHNPZlJhbmdl
KHJhbmdlKTsKKyAgICBpZiAoZHJhZ2dlZENvbnRlbnRSYW5nZSkgeworICAgICAgICBkcmFnZ2Vk
Q29udGVudFJhbmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpLmFkZERyYWdnZWRDb250ZW50
TWFya2VyKGRyYWdnZWRDb250ZW50UmFuZ2UuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byogcmVu
ZGVyZXIgPSBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgcmVuZGVyZXIt
PnJlcGFpbnRSb290Q29udGVudHMoKTsKICAgICB9CiAjZW5kaWYKIH0KIAotdm9pZCBFdmVudEhh
bmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQs
IERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQordm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VF
bmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3Bl
cmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFnU2Vzc2lvbikKIHsKICAg
ICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVxdWVzdCBzbyB0aGF0IFJlbmRlckxheWVyIGdldHMgYSBj
aGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92ZXIgYW5kIDphY3RpdmUgcHNldWRvY2xhc3Nlcy4KICAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlIHwgSGl0VGVz
dFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCk7CkBAIC0zNTMyLDkgKzM1
MjYsOSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdAogICAgIH0KICAgICBpbnZhbGlkYXRlRGF0
YVRyYW5zZmVyKCk7CiAKLSAgICBpZiAoYXV0byByYW5nZSA9IGRyYWdTdGF0ZSgpLmRyYWdnZWRD
b250ZW50UmFuZ2UpIHsKLSAgICAgICAgcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCku
cmVtb3ZlTWFya2VycyhEb2N1bWVudE1hcmtlcjo6RHJhZ2dlZENvbnRlbnQpOwotICAgICAgICBy
ZXBhaW50Q29udGVudHNPZlJhbmdlKHJhbmdlKTsKKyAgICBpZiAobWF5RXh0ZW5kRHJhZ1Nlc3Np
b24gPT0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdl
ID0gbV9mcmFtZS5wYWdlKCkpCisgICAgICAgICAgICByZW1vdmVEcmFnZ2VkQ29udGVudERvY3Vt
ZW50TWFya2Vyc0Zyb21BbGxGcmFtZXNJblBhZ2UoKnBhZ2UpOwogICAgIH0KIAogICAgIGRyYWdT
dGF0ZSgpLnNvdXJjZSA9IG51bGxwdHI7CkBAIC0zNTU1LDYgKzM1NDksMjMgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmRpc3BhdGNoRHJhZ1NyY0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBQbGEKIHsKICAgICByZXR1cm4gIWRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50VHlw
ZSwgKmRyYWdTdGF0ZSgpLnNvdXJjZSwgZXZlbnQsIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci5n
ZXQoKSk7CiB9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdTdGFydEV2ZW50KEhh
c05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSYgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKQor
eworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gY2hhbmdlQ291bnRCZWZvcmVEcmFnU3Rh
cnQgPSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnBhc3RlYm9hcmQoKS5jaGFuZ2VDb3VudCgp
OworI2VuZGlmCisKKyAgICBib29sIG1heVN0YXJ0RHJhZyA9IGRpc3BhdGNoRHJhZ1NyY0V2ZW50
KGV2ZW50TmFtZXMoKS5kcmFnc3RhcnRFdmVudCwgbV9tb3VzZURvd24pOworCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhID0gY2hhbmdlQ291bnRC
ZWZvcmVEcmFnU3RhcnQgIT0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCku
Y2hhbmdlQ291bnQoKSA/IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6WWVzIDogSGFzTm9u
RGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObzsKKyNlbHNlCisgICAgaGFzTm9uRGVmYXVsdFBhc3Rl
Ym9hcmREYXRhID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCkuaGFzRGF0
YSgpID8gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpZZXMgOiBIYXNOb25EZWZhdWx0UGFz
dGVib2FyZERhdGE6Ok5vOworI2VuZGlmCisKKyAgICByZXR1cm4gbWF5U3RhcnREcmFnICYmICFt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7Cit9CiAg
ICAgCiBzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VBY3Rpb24gbikKIHsK
QEAgLTM2NjAsNiArMzY3MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgaW52YWxp
ZGF0ZURhdGFUcmFuc2ZlcigpOwogCiAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gY3Jl
YXRlRHJhZ2dpbmdEYXRhVHJhbnNmZXIoKTsKKyAgICBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERh
dGEgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhID0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmRE
YXRhOjpObzsKICAgICAKICAgICBpZiAoZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMp
IHsKICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBpcyBhIERPTSBiYXNlZCBkcmFnLiBJ
ZiBpdCBpcywgZ2V0IHRoZSBET00gc3BlY2lmaWVkIGRyYWcgaW1hZ2UgYW5kIG9mZnNldC4KQEAg
LTM2ODAsOCArMzY5Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gCiAKLSAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBkaXNwYXRj
aERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ3N0YXJ0RXZlbnQsIG1fbW91c2VEb3duKQot
ICAgICAgICAgICAgJiYgIW1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3
b3JkRmllbGQoKTsKKyAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBkaXNwYXRjaERy
YWdTdGFydEV2ZW50KGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAKICAgICAgICAgZHJh
Z1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAKQEAgLTM2
OTgsNyArMzcwOSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgCiAgICAgaWYgKG1f
bW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBh
Z2UoKTsKLSAgICAgICAgbV9kaWRTdGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9s
bGVyKCkuc3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQo
KSwgbV9tb3VzZURvd25Qb3MpOworICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09w
LCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93blBvcywgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmRE
YXRhKTsKICAgICAgICAgLy8gSW4gV2ViS2l0MiB3ZSBjb3VsZCByZS1lbnRlciB0aGlzIGNvZGUg
YW5kIHN0YXJ0IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBw
cm9ibGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9t
aXNlZCB0eXBlcy4KICAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAppbmRleCAyMjUxZjlhZWQ1NDBiZGU0YTc5MzBiMDdjMmNkMTNkZjYyYzI0
NjA2Li42NjYzYzhmMmE4OWQzZjIyYzNiZWY2MmIwOTdjNDZhZWRiZjY3NjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI1Niw3ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTdGFydERyYWcoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYWdDYW5jZWxsZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdTb3Vy
Y2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERyYWdPcGVyYXRpb24pOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiwgRHJhZ09wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gPSBNYXlFeHRlbmRE
cmFnU2Vzc2lvbjo6Tm8pOwogI2VuZGlmCiAKICAgICB2b2lkIGZvY3VzRG9jdW1lbnRWaWV3KCk7
CkBAIC00MDUsNiArNDA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRHJhZ1N0YXRlKCk7
CiAKICAgICBib29sIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICBib29sIGRpc3BhdGNoRHJh
Z1N0YXJ0RXZlbnQoSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhJik7CiAKICAgICBib29sIGRy
YWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wg
ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCmluZGV4IDgwNjQ0YjdmZDgyM2RiYmYy
MDVkMjkyYjAwYjM2Y2NkZmQ4NDI3ZWMuLjhmMGZiNGUyZWFiYTNkZDk2Y2VlYjQ0MzhmOGYzYjAz
OTk1OGIxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0K
QEAgLTYwNiw3ICs2MDYsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6dHJ5VG9CZWdpbkRhdGFJbnRl
cmFjdGlvbkF0UG9pbnQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aQogCiAgICAgU2V0Rm9y
U2NvcGU8Ym9vbD4gbW91c2VQcmVzc2VkKG1fbW91c2VQcmVzc2VkLCB0cnVlKTsKICAgICBkcmFn
U3RhdGUoKS5zb3VyY2UgPSBudWxscHRyOwotICAgIGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50
UmFuZ2UgPSBudWxscHRyOwogICAgIG1fbW91c2VEb3duUG9zID0gcHJvdGVjdGVkRnJhbWUtPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhzeW50aGV0aWNNb3VzZU1vdmVFdmVudC5wb3NpdGlvbigp
KTsKIAogICAgIHJldHVybiBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChoaXRUZXN0ZWRNb3VzZUV2
ZW50LCBEb250Q2hlY2tEcmFnSHlzdGVyZXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgKaW5kZXggNWUyNmJmMmZiZjY2NDcyMDM0Zjg5Y2E5Y2FhZDQzY2I4ZmZmYzUzOS4uNmVl
MDg3NmYwYjgyMThjMTI0M2IwYzI4MTFlYzYxNTc3ZjllNmVmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaApAQCAtMjE5LDYgKzIxOSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBOU0FycmF5ICpzdXBwb3J0ZWRGaWxlVXBsb2FkUGFzdGVib2FyZFR5
cGVzKCk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXN0ZWJv
YXJkTmFtZTsgfQorICAgIGxvbmcgY2hhbmdlQ291bnQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQppbmRleCA3MzE3ODJjY2M4NjI3ODNkNGYyZDkyMWViZGM1OWIxNmE2YmQ5MjFiLi4zMWIw
NDgyMzYwYTkwYmUyYWFkNjQwZTZhMTgwZDU5ZTZmNzdlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMjk5LDYgKzI5OSwxMSBAQCB2b2lk
IFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYgcmVhZGVyKQogICAgIH0KIH0KIAorbG9uZyBQYXN0ZWJvYXJkOjpjaGFuZ2VD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7Cit9CisKIE5TQXJy
YXkgKlBhc3RlYm9hcmQ6OnN1cHBvcnRlZFdlYkNvbnRlbnRQYXN0ZWJvYXJkVHlwZXMoKQogewog
ICAgIHJldHVybiBAWyhpZClXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKGlkKWtVVFR5cGVGbGF0UlRG
RCwgKGlkKWtVVFR5cGVSVEYsIChpZClrVVRUeXBlSFRNTCwgKGlkKWtVVFR5cGVQTkcsIChpZClr
VVRUeXBlVElGRiwgKGlkKWtVVFR5cGVKUEVHLCAoaWQpa1VUVHlwZUdJRiwgKGlkKWtVVFR5cGVV
UkwsIChpZClrVVRUeXBlVGV4dF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDgyOTY1NTllYTNkMWFj
ZDViMjFkOTg3N2I0MDUzZDk5Mjg0MWE5ZTguLjFhZjEzZDQ2ZGZiYmYyZDlmNGI4N2MwNzUyZjM5
OWU4NzIwZjdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0yNzcsNyArMjc3LDYgQEAgLSAodm9p
ZClzZXRJdGVtUHJvdmlkZXJzOihOU0FycmF5PF9fa2luZG9mIE5TSXRlbVByb3ZpZGVyICo+ICop
aXRlbVByb3ZpZGVycwogICAgIF9pdGVtUHJvdmlkZXJzID0gaXRlbVByb3ZpZGVyczsKICAgICBf
Y2hhbmdlQ291bnQrKzsKICAgICBfY2FjaGVkVHlwZUlkZW50aWZpZXJzID0gbmlsOwotICAgIF9z
dGFnZWRSZWdpc3RyYXRpb25JbmZvTGlzdCA9IG5pbDsKIAogICAgIE5TTXV0YWJsZUFycmF5ICp0
eXBlVG9GaWxlVVJMTWFwcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTppdGVt
UHJvdmlkZXJzLmNvdW50XTsKICAgICBbaXRlbVByb3ZpZGVycyBlbnVtZXJhdGVPYmplY3RzVXNp
bmdCbG9jazpbdHlwZVRvRmlsZVVSTE1hcHNdIChVSUl0ZW1Qcm92aWRlciAqLCBOU1VJbnRlZ2Vy
LCBCT09MICopIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KaW5kZXggY2Q2MmEyZGNiYmMxMTk4ODU2NTI0NzA5YmVkOGRmZmVkMmQ1M2YyOC4uYTg4YzVk
OThiNDRmYjkzM2ZmMGE2ZTM1MTQ2NzZmMGRhMThjOGM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEwNyw2ICsxMDcsMTEgQEAgc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiAgICAgcmV0dXJuIHR5cGVz
OwogfQogCitsb25nIFBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3Vu
dChtX3Bhc3RlYm9hcmROYW1lKTsKK30KKwogTlNBcnJheSAqUGFzdGVib2FyZDo6c3VwcG9ydGVk
RmlsZVVwbG9hZFBhc3RlYm9hcmRUeXBlcygpCiB7CiAgICAgcmV0dXJuIEBbIChOU1N0cmluZyAq
KU5TRmlsZXNQcm9taXNlUGJvYXJkVHlwZSwgKE5TU3RyaW5nICopTlNGaWxlbmFtZXNQYm9hcmRU
eXBlIF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDQ3NzkxNjExOWJmZDIxZThhMDBkYWVmMDFjNGUxMzkyNTJkNjc3ZDIu
LmJjZGIwYmYwNmEwY2E5YzM5ZmY1ZjNjNWI0YTUyNTQ1NjEyYmMwNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC01Nyw2
ICs1Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KQEAgLTYzMyw5ICs2MzQsMTUgQEAgdm9pZCBXZWJQ
YWdlOjpyZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdAogCiB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JE
cmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIFRvIGF1
Z21lbnQgdGhlIHBsYXRmb3JtIGRyYWcgc2Vzc2lvbiB3aXRoIGFkZGl0aW9uYWwgaXRlbXMsIGVu
ZCB0aGUgY3VycmVudCBkcmFnIHNlc3Npb24gYW5kIGJlZ2luIGEgbmV3IGRyYWcgc2Vzc2lvbiB3
aXRoIHRoZSBuZXcgZHJhZyBpdGVtLgorICAgIC8vIFRoaXMgcHJvY2VzcyBpcyBvcGFxdWUgdG8g
dGhlIFVJIHByb2Nlc3MsIHdoaWNoIHN0aWxsIG1haW50YWlucyB0aGUgb2xkIGRyYWcgaXRlbSBp
biBpdHMgZHJhZyBzZXNzaW9uLiBTaW1pbGFybHksIHRoaXMgcGVyc2lzdGVudCBkcmFnIHNlc3Np
b24KKyAgICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGljaCBvbmx5IHNlZXMg
dGhhdCB0aGUgY3VycmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcgb25lIGlzIGJl
Z2lubmluZy4KKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoY2xpZW50UG9zaXRpb24sIGds
b2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSwgMCwgTm9UYXApOworICAg
IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW5kZWQoKTsKKyAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBEcmFnT3BlcmF0
aW9uTm9uZSwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Olllcyk7CiAKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGZhbHNl
KSk7CisgICAgYm9vbCBkaWRIYW5kbGVEcmFnID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhh
bmRsZXIoKS50cnlUb0JlZ2luRGF0YUludGVyYWN0aW9uQXRQb2ludChjbGllbnRQb3NpdGlvbiwg
Z2xvYmFsUG9zaXRpb24pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFu
ZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoZGlkSGFuZGxlRHJhZykpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmRpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbigpCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzBhYjY0ZjMzOGY5NGU2ODVm
Y2NkMmNkZWE0ZWFjODcwNTllZmJiMC4uNWI1YzFkOWJmOWI0ZjA4NjU0MzFmYWE4OWQyMTk4NTUw
YmZmMWQyOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA5LTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBTdXBwb3J0IHRhcHBpbmcgdG8gYWRk
IGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBpbiB3ZWIgY29udGVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDIxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9y
dG9uLgorCisgICAgICAgIEFkZHMgYSBuZXcgZHJhZyBhbmQgZHJvcCB0ZXN0IHRoYXQgYmVnaW5z
IGEgZHJhZyBvbiBhIHRleHQgc2VsZWN0aW9uLCBhZGRzIGFuIGltYWdlIGFuZCBhIGxpbmssIGFu
ZCB0aGVuIGRyb3BzCisgICAgICAgIGludG8gYSBjb250ZW50ZWRpdGFibGUgYXJlYS4gVGhpcyB2
ZXJpZmllcyB0aGF0IHRoZSB0ZXh0LCBsaW5rIGFuZCBpbWFnZSBhcmUgaW5zZXJ0ZWQgaW50byB0
aGUgZWRpdGFibGUgYXJlYQorICAgICAgICB1cG9uIGRyb3AuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTA5LTExICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9yc2No
bGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBiaXNlY3QtYnVpbGRzOiBhZGQgLS1saXN0IG9wdGlv
bgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0
aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rp
b25UZXN0cy5tbQppbmRleCAzODM4NGUwOWQ4YWUwNWM3YmI1OGIyYzczOGIxZWI5YjE4YzU1YzE2
Li41ZDU1YzAxNDU0ODcxMjA2YWIwOTcxYzFkYTYyOWNmZDAxMzU1ODNlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpA
QCAtMTM5NCw2ICsxMzk0LDIxIEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEFkZGl0aW9u
YWxJdGVtc0NhbkJlUHJldmVudGVkT25EcmFnU3RhcnQpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJB
QkNEIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci50ZXh0
Q29udGVudCJdKTsKIH0KIAorVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQWRkaXRpb25hbExp
bmtBbmRJbWFnZUludG9Db250ZW50RWRpdGFibGUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFt
ZWQ6QCJzZWxlY3RlZC10ZXh0LWltYWdlLWxpbmstYW5kLWVkaXRhYmxlIl07CisKKyAgICBhdXRv
IHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGlu
aXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNH
UG9pbnRNYWtlKDUwLCA1MCkgdG86Q0dQb2ludE1ha2UoNTAsIDQwMCkgYWRkaXRpb25hbEl0ZW1S
ZXF1ZXN0TG9jYXRpb25zOkB7CisgICAgICAgIEAwLjMzOiBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1Bv
aW50OkNHUG9pbnRNYWtlKDUwLCAxNTApXSwKKyAgICAgICAgQDAuNjY6IFtOU1ZhbHVlIHZhbHVl
V2l0aENHUG9pbnQ6Q0dQb2ludE1ha2UoNTAsIDI1MCldCisgICAgfV07CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJBQkNEIEEgbGluayIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJlZGl0b3IudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIiEhZWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJ2ltZycp
Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IucXVlcnlTZWxlY3Rvcign
YScpLmhyZWYiXSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlm
IC8vIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320510</attachid>
            <date>2017-09-11 18:26:16 -0700</date>
            <delta_ts>2017-09-11 19:09:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176421-20170911182616.patch</filename>
            <type>text/plain</type>
            <size>27422</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVmMDBlMzI5NjQyNmNl
NDhlMmFhMjg3MmVmZjc2Zjg4MGQwNzQzYy4uMjU4ODYzYTI1ZmI1NDRmZjcwNDliOTEyOWU1OTM2
MWY4MTE0Mzc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA5LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBT
dXBwb3J0IHRhcHBpbmcgdG8gYWRkIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBp
biB3ZWIgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc2NDIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFJlZmFjdG9ycyBzb21lIGRyYWcg
aW5pdGlhdGlvbiBsb2dpYyB0byBoYW5kbGUgc3RhcnRpbmcgYSBkcmFnIHdoZW4gZGF0YSBoYXMg
YWxyZWFkeSBiZWVuIHdyaXR0ZW4gdG8gdGhlCisgICAgICAgIHBhc3RlYm9hcmQgKGluIHRoZSBj
YXNlIG9mIGlPUywgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCkuIFNlZSBhbm5vdGF0ZWQgY29t
bWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgIFRlc3RzOiBEYXRhSW50ZXJh
Y3Rpb25UZXN0cy5BZGRpdGlvbmFsTGlua0FuZEltYWdlSW50b0NvbnRlbnRFZGl0YWJsZQorCisg
ICAgICAgICogcGFnZS9EcmFnQWN0aW9ucy5oOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisK
KyAgICAgICAgQWRkIGEgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGFyZ3VtZW50IGhlcmUs
IGFuZCByZXBsYWNlIGNoZWNrcyBmb3IgIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0
YSgpCisgICAgICAgIHdpdGggY2hlY2tzIGZvciB3aGV0aGVyIHRoZSBhcmd1bWVudCBpcyBIYXNO
b25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vLiBUaGVzZSBjaGVja3MgZm9yIFBhc3RlYm9hcmQ6
Omhhc0RhdGEoKQorICAgICAgICBjdXJyZW50bHkgcHJldmVudCB1cyBmcm9tIG92ZXJ3cml0aW5n
IGN1c3RvbSBwYXN0ZWJvYXJkIGRhdGEsIGluIHRoZSBjYXNlIHRoYXQgdGhlIHBhZ2UgaGFzIHdy
aXR0ZW4gcGFzdGVib2FyZAorICAgICAgICBkYXRhIHVzaW5nIHRoZSBldmVudCdzIERhdGFUcmFu
c2Zlci4gSG93ZXZlciwgaW4gdGhlIGNhc2Ugb2YgYWRkaW5nIGFkZGl0aW9uYWwgZHJhZyBpdGVt
cyB0byB0aGUgc2Vzc2lvbiwgd2UKKyAgICAgICAgd2lsbCBhbHJlYWR5IGhhdmUgcGFzdGVib2Fy
ZCBkYXRhLCBzbyB0aGVzZSBjaGVja3Mgd2lsbCBwcmV2ZW50IHVzIGZyb20gd3JpdGluZyBkZWZh
dWx0IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQuCisgICAgICAgIFNlZSBFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5oOgorICAgICAgICAqIHBhZ2UvRHJhZ1N0YXRlLmg6CisKKyAgICAgICAgUmVtb3ZlIHRoZSBk
cmFnZ2VkQ29udGVudFJhbmdlIG1lbWJlciBmcm9tIERyYWdTdGF0ZS4gU2VlIGJlbG93LgorCisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3Zl
RHJhZ2dlZENvbnRlbnREb2N1bWVudE1hcmtlcnNGcm9tQWxsRnJhbWVzSW5QYWdlKToKKworICAg
ICAgICBTaW1wbGlmeSB0aGUgaGFuZGxpbmcgb2YgZHJhZ2dlZCBjb250ZW50IHJhbmdlIG1hcmtl
cnMuIEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgRE9NIFJhbmdlIGJlaW5nIGRyYWdnZWQgYW5kCisg
ICAgICAgIHJlbW92aW5nL3JlcGFpbnRpbmcgdGhlIHJhbmdlIGFmdGVyIGRyYWdnaW5nIGVuZHMs
IGp1c3QgcmVwYWludCB0aGUgY29udGVudFJlbmRlcmVyIG9mIHRoZSBmcmFtZSBiZWluZyBkcmFn
Z2VkLgorICAgICAgICBXaGVuIHRoZSBkcmFnZ2luZyBzZXNzaW9uIGhhcyBjb21wbGV0ZWx5IGVu
ZGVkLCByZW1vdmUgYWxsIGRyYWdnZWQgY29udGVudCByYW5nZXMgZnJvbSB0aGUgcGFnZSdzIG1h
aW5mcmFtZSBhbmQKKyAgICAgICAgYWxsIG9mIGl0cyBzdWJmcmFtZXMsIGFuZCByZXBhaW50IGV2
ZXJ5dGhpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ0NhbmNlbGxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KToKKworICAgICAg
ICBBZGQgYSBNYXlFeHRlbmREcmFnU2Vzc2lvbiBhcmd1bWVudCwgaW5kaWNhdGluZyB3aGV0aGVy
IG9yIG5vdCB0aGUgd2ViIHByb2Nlc3Mgd2lsbCBhdHRlbXB0IHRvIGNvbnRpbnVlIHRoZSBkcmFn
CisgICAgICAgIHNlc3Npb24sIGluIHdoaWNoIGNhc2UgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNl
RW5kZWRBdCBzaG91bGQgbm90IHJlbW92ZSBhbnkgZXhpc3RpbmcgZHJhZ2dlZCBjb250ZW50IHJh
bmdlCisgICAgICAgIGRvY3VtZW50IG1hcmtlcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnU3RhcnRFdmVudCk6CisKKyAgICAgICAgSGVscGVyIG1ldGhv
ZCB0byBkaXNwYXRjaCBhIGBkcmFnc3RhcnRgIGV2ZW50LCByZXR1cm4gd2hldGhlciBvciBub3Qg
dG8gcHJvY2VlZCB3aXRoIHRoZSBkcmFnLCBhbmQgYWxzbyBjb21wdXRlCisgICAgICAgIChhcyBh
biBvdXRwYXJhbSkgd2hldGhlciBvciBub3QgY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSB3YXMgd3Jp
dHRlbiBkdXJpbmcgdGhlIGV2ZW50LgorCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWcpOgorCisgICAgICAgIElmIGN1c3RvbSBkYXRhIHdhcyB3cml0dGVuIGR1cmlu
ZyBgZHJhZ3N0YXJ0YCwgcGFzcyBhbG9uZyBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Olll
cyB3aGVuIGNhbGxpbmcKKyAgICAgICAgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZy4KKworICAg
ICAgICAoV2ViQ29yZTo6cmVwYWludENvbnRlbnRzT2ZSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRyeVRvQmVnaW5EYXRhSW50
ZXJhY3Rpb25BdFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpdKToKKworICAgICAgICBTdG9wIGNsZWFyaW5nIG91
dCB0aGUgc3RhZ2VkIGl0ZW0gcHJvdmlkZXIgcmVnaXN0cmF0aW9uIGxpc3Qgd2hlbiBzZXR0aW5n
IGl0ZW0gcHJvdmlkZXJzLiBBZnRlciByZWZhY3RvcmluZyBpbgorICAgICAgICByMjIxNTk1LCBz
dGFnZWQgcmVnaXN0cmF0aW9uIGxpc3RzIGFyZSBub3cgYXV0b21hdGljYWxseSBjbGVhcmVkIG91
dCB3aGVuICgxKSB0aGUgZHJhZy1hbmQtZHJvcCBpbnRlcmFjdGlvbgorICAgICAgICBzdGF0ZSBp
cyBjbGVhcmVkIG91dCBpbiB0aGUgVUkgcHJvY2Vzcywgb3IgKDIpIHdoZW4gdGhlIHJlZ2lzdHJh
dGlvbiBsaXN0IGlzIHRha2VuIGJ5IFdLQ29udGVudFZpZXcgKHNlZQorICAgICAgICAtdGFrZVJl
Z2lzdHJhdGlvbkxpc3QpIHdoZW4gZ2VuZXJhdGluZyBhbiBpdGVtIHByb3ZpZGVyLgorCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgY2hhbmdlQ291
bnQgbWV0aG9kIHRvIFBhc3RlYm9hcmQgb24gQ29jb2EgcGxhdGZvcm1zIChNYWMsIGlPUykgd2hp
Y2ggc3VwcG9ydCBjaGFuZ2VDb3VudCBuYXRpdmVseS4gSW4KKyAgICAgICAgdGhlb3J5LCB0aGVy
ZSdzIG5vIHJlYXNvbiBXaW5kb3dzLCBHVEsgYW5kIFdQRSBwb3J0cyBjYW4ndCBhbHNvIGltcGxl
bWVudCBhIHNpbWlsYXIgbWVjaGFuaXNtIGluCisgICAgICAgIFBsYXRmb3JtUGFzdGVib2FyZCwg
YnV0IHRoaXMgaXNuJ3QgbmVlZGVkIGZvciBhbnl0aGluZyB5ZXQuIFVwb24gZHJhZ3N0YXJ0LCBp
dCBpcyBzYWZlIHRvIGFzc3VtZSB0aGF0IHRoZQorICAgICAgICBwYXN0ZWJvYXJkIGhhcyBiZWVu
IGNsZWFyZWQgb24gdGhlc2UgcGxhdGZvcm1zLCBzbyBjaGVja2luZyBmb3IgUGFzdGVib2FyZDo6
aGFzRGF0YSAoYXMgd2UgZG8gZm9yIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgY3VycmVudGx5KSBp
cyBzdWZmaWNpZW50LgorCiAyMDE3LTA5LTExICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjE3NjIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDc5MjdlODY3NDE0YmM4OTAyZTJiNDlkNzMzY2VhYWUyYTAzYmUxZmIuLjQ3NDZjMmNi
MjIxZDAxNzM4MDY5MmNjZGM4YzdlYmM3Nzg4ZjE3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTctMDktMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPUyBXSzJdIFN1cHBvcnQgdGFwcGluZyB0byBhZGQgaXRlbXMgdG8gdGhlIGN1
cnJlbnQgZHJhZyBzZXNzaW9uIGluIHdlYiBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0MjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMxMTQ0Njc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAg
VG8gcmVxdWVzdCBhZGRpdGlvbmFsIGRyYWcgaXRlbXMsIGVuZCB0aGUgY3VycmVudCBkcmFnIGlu
IHRoZSB3ZWIgcGFnZSBhbmQgdHJ5IHRvIGJlZ2luIGEgZHJhZyBhdCB0aGUgbmV3CisgICAgICAg
IGxvY2F0aW9uLiBUaGlzIHByb2Nlc3MgaXMgdHJhbnNwYXJlbnQgdG8gdGhlIFVJIHByb2Nlc3Ms
IHdoaWNoIHN0aWxsIG1haW50YWlucyB0aGUgc2FtZSBVSURyYWdTZXNzaW9uIHdpdGggdGhlCisg
ICAgICAgIG9sZCBkcmFnIHNvdXJjZS4KKworICAgICAgICBBcyBvcHBvc2VkIHRvIGZpcmluZyBh
IG5ldyBldmVudCAoZm9yIGluc3RhbmNlOiBgYWRkZHJhZ2l0ZW1gKSwgdGhpcyBhcHByb2FjaCBp
cyB0YWtlbiB0byBlbnN1cmUgdGhhdCBpZiB0aGUKKyAgICAgICAgcGFnZSB3YW50cyB0byBwcmV2
ZW50RGVmYXVsdCgpIG9uIGBkcmFnc3RhcnRgLCBpdCB3b3VsZCBhbHNvIHByZXZlbnQgdGhlIHVz
ZXIgZnJvbSBhZGRpbmcgaXQgYXMgYW4gYWRkaXRpb25hbAorICAgICAgICBkcmFnIGl0ZW0uIFVz
aW5nIHRoZSBuZXcgZXZlbnQgYXBwcm9hY2gsIGRlYWxpbmcgd2l0aCB0aGlzIGNhc2Ugd291bGQg
ZWl0aGVyIHJlcXVpcmUgdGhlIHBhZ2UgdG8gbGlzdGVuIGZvciBhCisgICAgICAgIG5ldyBldmVu
dCBhbmQgY2FsbCBwcmV2ZW50RGVmYXVsdCgpLCB3aGljaCB3b3VsZCBicmVhayBjb21wYXRpYmls
aXR5IHdpdGggcGFnZXMgdGhhdCBvbmx5IHByZXZlbnREZWZhdWx0KCkgb24KKyAgICAgICAgYGRy
YWdzdGFydGAsIG9yIGl0IHdvdWxkIHJlcXVpcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhp
cyBuZXcgZXZlbnQgdG8gYmUgX25vdF8gYWRkaW5nIGEgZHJhZyBpdGVtLCBpbiB3aGljaAorICAg
ICAgICBjYXNlIHRoaXMgYXBwcm9hY2ggd291bGQgcmVxdWlyZSBwYWdlcyB0byBhZG9wdCB0aGUg
bmV3IGV2ZW50IGluIHNvbWUgZm9ybS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEFkZGl0
aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKToKKwogMjAxNy0wOS0xMSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBtZW1vcnkgbGVhayBp
bnRyb2R1Y2VkIGluIHIyMjE4OTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdBY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5kZXggYWQy
ODYzNDcyMjU1NmRkNWRhOGI0OTlhYWIxYWNiNmUyOTA0ODdjMS4uMmMxYTM3YTZlMGJlNTI3M2My
YzU1MGU0ODQ5ZjI2ZmUzNTI1ODc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAt
NjIsNSArNjIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdPcGVyYXRpb25E
ZWxldGUgID0gMzIsCiAgICAgICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlOVF9NQVgKICAg
ICB9IERyYWdPcGVyYXRpb247CisKKyAgICBlbnVtIGNsYXNzIE1heUV4dGVuZERyYWdTZXNzaW9u
IHsgTm8sIFllcyB9OworICAgIGVudW0gY2xhc3MgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
IHsgTm8sIFllcyB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA0NzEzYzM5MTAzM2EyNTlkNDE5NWUxYjUxMTA4
MGI2MzU5Mjk5ZjJlLi5hMWQxZTU3NGFjZDMzZGE3NzJhNDMwMGQ1ZGI0YmRiOTA4MDE3YWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtODY4LDcgKzg2OCw3IEBA
IHN0YXRpYyBJbnRQb2ludCBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhGcmFtZSYgc3JjKQogICAg
IHJldHVybiBJbnRQb2ludCh4cG9zLCB5cG9zKTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6
c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRp
b24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQ
b2ludCYgZHJhZ09yaWdpbikKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYg
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4s
IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNEYXRhKQogewogICAgIGlmICghc3JjLnZp
ZXcoKSB8fCAhc3JjLmNvbnRlbnRSZW5kZXJlcigpIHx8ICFzdGF0ZS5zb3VyY2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTkzMywxNCArOTMzLDE0IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6
OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0
aW9uCiAgICAgQVNTRVJUKHN0YXRlLnNvdXJjZSk7CiAgICAgRWxlbWVudCYgZWxlbWVudCA9ICpz
dGF0ZS5zb3VyY2U7CiAKLSAgICBib29sIG11c3RVc2VMZWdhY3lEcmFnQ2xpZW50ID0gZGF0YVRy
YW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkgfHwgbV9jbGllbnQudXNlTGVnYWN5RHJhZ0Ns
aWVudCgpOworICAgIGJvb2wgbXVzdFVzZUxlZ2FjeURyYWdDbGllbnQgPSBoYXNEYXRhID09IEhh
c05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6WWVzIHx8IG1fY2xpZW50LnVzZUxlZ2FjeURyYWdD
bGllbnQoKTsKIAogICAgIEludFJlY3QgZHJhZ0ltYWdlQm91bmRzOwogICAgIEltYWdlKiBpbWFn
ZSA9IGdldEltYWdlKGVsZW1lbnQpOwogICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VB
Y3Rpb25TZWxlY3Rpb24pIHsKICAgICAgICAgUGFzdGVib2FyZFdyaXRlckRhdGEgcGFzdGVib2Fy
ZFdyaXRlckRhdGE7CiAKLSAgICAgICAgaWYgKCFkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhh
c0RhdGEoKSkgeworICAgICAgICBpZiAoaGFzRGF0YSA9PSBIYXNOb25EZWZhdWx0UGFzdGVib2Fy
ZERhdGE6Ok5vKSB7CiAgICAgICAgICAgICBpZiAoc3JjLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LmlzTm9uZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIHBhZ2UgbWF5IGhhdmUgY2xlYXJl
ZCBvdXQgdGhlIHNlbGVjdGlvbiBpbiB0aGUgZHJhZ3N0YXJ0IGhhbmRsZXIsIGluIHdoaWNoIGNh
c2Ugd2Ugc2hvdWxkIGJhaWwKICAgICAgICAgICAgICAgICAvLyBvdXQgb2YgdGhlIGRyYWcsIHNp
bmNlIHRoZXJlIGlzIG5vIGNvbnRlbnQgdG8gd3JpdGUgdG8gdGhlIHBhc3RlYm9hcmQuCkBAIC0x
MDE2LDcgKzEwMTYsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNy
YywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICAvLyBXZSBz
aG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBkcmFnIGZvciBhbiBpbWFnZSB0aGF0IGNhbid0IHByb3Zp
ZGUgYW4gZXh0ZW5zaW9uLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRldGVjdGlvbiBm
b3IgcHJvYmxlbXMgZW5jb3VudGVyZWQgbGF0ZXIgdXBvbiBkcm9wLgogICAgICAgICBBU1NFUlQo
IWltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpLmlzRW1wdHkoKSk7Ci0gICAgICAgIGlmICghZGF0
YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGhhc0RhdGEg
PT0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObykgewogICAgICAgICAgICAgbV9kcmFn
Z2luZ0ltYWdlVVJMID0gaW1hZ2VVUkw7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC5pc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSgpKQogICAgICAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVu
dCk7CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWco
RnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogCiAgICAg
ICAgIFN0cmluZyB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSA9IGhpdFRlc3RS
ZXN1bHQudGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKIAotICAgICAgICBpZiAo
IWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0YSgpKSB7CisgICAgICAgIGlmIChoYXNE
YXRhID09IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm8pIHsKICAgICAgICAgICAgIC8v
IFNpbXBsaWZ5IHdoaXRlc3BhY2Ugc28gdGhlIHRpdGxlIHB1dCBvbiB0aGUgZGF0YVRyYW5zZmVy
IHJlc2VtYmxlcyB3aGF0IHRoZSB1c2VyIHNlZXMKICAgICAgICAgICAgIC8vIG9uIHRoZSB3ZWIg
cGFnZS4gVGhpcyBpbmNsdWRlcyByZXBsYWNpbmcgbmV3bGluZXMgd2l0aCBzcGFjZXMuCiAgICAg
ICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpCkBAIC0xMTAzLDcgKzExMDMsNyBA
QCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0
YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogCiAgICAgICAgIHNyYy5lZGl0b3IoKS5zZXRJZ25v
cmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwogICAgICAgICBhdXRvIHByZXZpb3VzU2VsZWN0aW9u
ID0gc3JjLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgICAgICBpZiAoIWRhdGFUcmFuc2Zl
ci5wYXN0ZWJvYXJkKCkuaGFzRGF0YSgpKSB7CisgICAgICAgIGlmIChoYXNEYXRhID09IEhhc05v
bkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm8pIHsKICAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQo
ZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoIWF0dGFjaG1lbnRVUkwuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBhdHRhY2htZW50IFVSTCBzcGVjaWZpZWQgYnkgdGhl
IGZpbGUgYXR0cmlidXRlIHRvIHBvcHVsYXRlIHRoZSBwYXN0ZWJvYXJkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IGZiOTAxZjNmMWQ1YzI2NzlmMDQ2MGU3ZTc4NjA3MTIx
Njc0MmY3ZTAuLjA1Yjg0ODdkMWQ2NGY1NTIxNzQ3YTA0NWI2MzRjNTBhZjAxZTdkZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTkxLDcgKzkxLDcgQEAgc3RydWN0IERy
YWdTdGF0ZTsKICAgICAgICAgCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhY2VEcmFn
Q2FyZXQoY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAgCi0gICAgICAgIGJvb2wgc3RhcnREcmFn
KEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdp
bik7CisgICAgICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYs
IERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50
LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
KTsKICAgICAgICAgc3RhdGljIGNvbnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKICAg
ICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4T3JpZ2luYWxJbWFnZUFyZWE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnU3RhdGUuaAppbmRleCA2MjU4YWJkNWNjZDU0NGYwZjc5NTJjNDQ1MDEzYTU4
ZjhmMjFjMTU3Li42ZDE2MjU5MDBlMzQ1ZjMzZWZhNjUwOGEwNWU1MzM2MjE0YWM4YmJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ1N0YXRlLmgKQEAgLTM0LDcgKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgRHJhZ1N0YXRlIHsKICAgICBSZWZQdHI8RWxlbWVudD4gc291cmNlOyAvLyBF
bGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBtb3VzZSBn
ZXN0dXJlLgotICAgIFJlZlB0cjxSYW5nZT4gZHJhZ2dlZENvbnRlbnRSYW5nZTsKICAgICBib29s
IHNob3VsZERpc3BhdGNoRXZlbnRzOwogICAgIERyYWdTb3VyY2VBY3Rpb24gdHlwZTsKICAgICBS
ZWZQdHI8RGF0YVRyYW5zZmVyPiBkYXRhVHJhbnNmZXI7IC8vIFVzZWQgb24gb25seSB0aGUgc291
cmNlIHNpZGUgb2YgZHJhZ2dpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggZTUzOGJhNmM1MzEyZDljODE5ZWI1YTc1NjY0MGFjNWFiYThjZDNhYi4uODBiMWM2NjY1NDM5
OGE5MGFjZTQ2NmE2ZjRjN2U2Yjk2MmFhMmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXlDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRXZl
bnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVdoZWVsRXZlbnQuaCIKQEAgLTM0NjUsMzEgKzM0NjYsMjIgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OmludmFsaWRhdGVEYXRhVHJhbnNmZXIoKQogICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zl
ciA9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcGFpbnRDb250ZW50c09mUmFuZ2UoUmVm
UHRyPFJhbmdlPiByYW5nZSkKK3N0YXRpYyB2b2lkIHJlbW92ZURyYWdnZWRDb250ZW50RG9jdW1l
bnRNYXJrZXJzRnJvbUFsbEZyYW1lc0luUGFnZShQYWdlJiBwYWdlKQogewotICAgIGlmICghcmFu
Z2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIGNvbnRhaW5lciA9IHJhbmdlLT5jb21t
b25BbmNlc3RvckNvbnRhaW5lcigpOwotICAgIGlmICghY29udGFpbmVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgbm9kZXMgZW5jbG9zZWQgaW4gdGhp
cyBSYW5nZSBhcmUgcmVwYWludGVkLgotICAgIGlmIChhdXRvIHJlbmRlcmVyVG9SZXBhaW50ID0g
Y29udGFpbmVyLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250YWluaW5nUmVu
ZGVyZXIgPSByZW5kZXJlclRvUmVwYWludC0+Y29udGFpbmVyKCkpCi0gICAgICAgICAgICByZW5k
ZXJlclRvUmVwYWludCA9IGNvbnRhaW5pbmdSZW5kZXJlcjsKLSAgICAgICAgcmVuZGVyZXJUb1Jl
cGFpbnQtPnJlcGFpbnQoKTsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAg
ZG9jdW1lbnQtPm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpEcmFnZ2Vk
Q29udGVudCk7CiAgICAgfQorCisgICAgaWYgKGF1dG8qIG1haW5GcmFtZVJlbmRlcmVyID0gcGFn
ZS5tYWluRnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgbWFpbkZyYW1lUmVuZGVy
ZXItPnJlcGFpbnRSb290Q29udGVudHMoKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmRyYWdD
YW5jZWxsZWQoKQogewogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgIGlmIChhdXRv
IHJhbmdlID0gZHJhZ1N0YXRlKCkuZHJhZ2dlZENvbnRlbnRSYW5nZSkgewotICAgICAgICByYW5n
ZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2Vy
OjpEcmFnZ2VkQ29udGVudCk7Ci0gICAgICAgIHJlcGFpbnRDb250ZW50c09mUmFuZ2UocmFuZ2Up
OwotICAgIH0KLSAgICBkcmFnU3RhdGUoKS5kcmFnZ2VkQ29udGVudFJhbmdlID0gbnVsbHB0cjsK
KyAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQorICAgICAgICByZW1vdmVEcmFn
Z2VkQ29udGVudERvY3VtZW50TWFya2Vyc0Zyb21BbGxGcmFtZXNJblBhZ2UoKnBhZ2UpOwogI2Vu
ZGlmCiB9CiAKQEAgLTM1MDQsMjIgKzM0OTYsMjQgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0
YXJ0RHJhZygpCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCisgICAgUmVm
UHRyPFJhbmdlPiBkcmFnZ2VkQ29udGVudFJhbmdlOwogICAgIGlmIChkcmFnU3RhdGUoKS50eXBl
ICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKLSAgICAgICAgZHJhZ1N0YXRlKCkuZHJhZ2dl
ZENvbnRlbnRSYW5nZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxp
emVkUmFuZ2UoKTsKKyAgICAgICAgZHJhZ2dlZENvbnRlbnRSYW5nZSA9IG1fZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBlbHNlIHsKICAgICAg
ICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbihkcmFnU291cmNlLmdldCgpLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUFuY2hvcik7CiAgICAgICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uKGRyYWdT
b3VyY2UuZ2V0KCksIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpOwotICAgICAgICBk
cmFnU3RhdGUoKS5kcmFnZ2VkQ29udGVudFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkcmFnU291cmNl
LT5kb2N1bWVudCgpLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgICAgIGRyYWdn
ZWRDb250ZW50UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRyYWdTb3VyY2UtPmRvY3VtZW50KCksIHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byByYW5nZSA9
IGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2UpIHsKLSAgICAgICAgcmFuZ2UtPm93bmVy
RG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRHJhZ2dlZENvbnRlbnRNYXJrZXIocmFuZ2UuZ2V0KCkp
OwotICAgICAgICByZXBhaW50Q29udGVudHNPZlJhbmdlKHJhbmdlKTsKKyAgICBpZiAoZHJhZ2dl
ZENvbnRlbnRSYW5nZSkgeworICAgICAgICBkcmFnZ2VkQ29udGVudFJhbmdlLT5vd25lckRvY3Vt
ZW50KCkubWFya2VycygpLmFkZERyYWdnZWRDb250ZW50TWFya2VyKGRyYWdnZWRDb250ZW50UmFu
Z2UuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX2ZyYW1lLmNvbnRlbnRS
ZW5kZXJlcigpKQorICAgICAgICAgICAgcmVuZGVyZXItPnJlcGFpbnRSb290Q29udGVudHMoKTsK
ICAgICB9CiAjZW5kaWYKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
KQordm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vz
c2lvbiBtYXlFeHRlbmREcmFnU2Vzc2lvbikKIHsKICAgICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVx
dWVzdCBzbyB0aGF0IFJlbmRlckxheWVyIGdldHMgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92
ZXIgYW5kIDphY3RpdmUgcHNldWRvY2xhc3Nlcy4KICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFn
ZW50U2hhZG93Q29udGVudCk7CkBAIC0zNTMyLDkgKzM1MjYsOSBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRHJh
Z09wZXJhdAogICAgIH0KICAgICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAKLSAgICBpZiAo
YXV0byByYW5nZSA9IGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2UpIHsKLSAgICAgICAg
cmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCkucmVtb3ZlTWFya2VycyhEb2N1bWVudE1h
cmtlcjo6RHJhZ2dlZENvbnRlbnQpOwotICAgICAgICByZXBhaW50Q29udGVudHNPZlJhbmdlKHJh
bmdlKTsKKyAgICBpZiAobWF5RXh0ZW5kRHJhZ1Nlc3Npb24gPT0gTWF5RXh0ZW5kRHJhZ1Nlc3Np
b246Ok5vKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCisgICAg
ICAgICAgICByZW1vdmVEcmFnZ2VkQ29udGVudERvY3VtZW50TWFya2Vyc0Zyb21BbGxGcmFtZXNJ
blBhZ2UoKnBhZ2UpOwogICAgIH0KIAogICAgIGRyYWdTdGF0ZSgpLnNvdXJjZSA9IG51bGxwdHI7
CkBAIC0zNTU1LDYgKzM1NDksMjMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ1Ny
Y0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBQbGEKIHsKICAgICBy
ZXR1cm4gIWRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50VHlwZSwgKmRyYWdTdGF0ZSgpLnNvdXJjZSwg
ZXZlbnQsIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci5nZXQoKSk7CiB9CisKK2Jvb2wgRXZlbnRI
YW5kbGVyOjpkaXNwYXRjaERyYWdTdGFydEV2ZW50KEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0
YSYgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGF1dG8gY2hhbmdlQ291bnRCZWZvcmVEcmFnU3RhcnQgPSBkcmFnU3RhdGUoKS5kYXRhVHJh
bnNmZXItPnBhc3RlYm9hcmQoKS5jaGFuZ2VDb3VudCgpOworI2VuZGlmCisKKyAgICBib29sIG1h
eVN0YXJ0RHJhZyA9IGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnc3RhcnRF
dmVudCwgbV9tb3VzZURvd24pOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFzTm9uRGVm
YXVsdFBhc3RlYm9hcmREYXRhID0gY2hhbmdlQ291bnRCZWZvcmVEcmFnU3RhcnQgIT0gZHJhZ1N0
YXRlKCkuZGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCkuY2hhbmdlQ291bnQoKSA/IEhhc05vbkRl
ZmF1bHRQYXN0ZWJvYXJkRGF0YTo6WWVzIDogSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpO
bzsKKyNlbHNlCisgICAgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhID0gZHJhZ1N0YXRlKCku
ZGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCkuaGFzRGF0YSgpID8gSGFzTm9uRGVmYXVsdFBhc3Rl
Ym9hcmREYXRhOjpZZXMgOiBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vOworI2VuZGlm
CisKKyAgICByZXR1cm4gbWF5U3RhcnREcmFnICYmICFtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7Cit9CiAgICAgCiBzdGF0aWMgYm9vbCBFeGFjdGx5
T25lQml0U2V0KERyYWdTb3VyY2VBY3Rpb24gbikKIHsKQEAgLTM2NjAsNiArMzY3MSw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgaW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwogCiAg
ICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gY3JlYXRlRHJhZ2dpbmdEYXRhVHJhbnNmZXIo
KTsKKyAgICBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgaGFzTm9uRGVmYXVsdFBhc3RlYm9h
cmREYXRhID0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObzsKICAgICAKICAgICBpZiAo
ZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMpIHsKICAgICAgICAgLy8gQ2hlY2sgdG8g
c2VlIGlmIHRoZSBpcyBhIERPTSBiYXNlZCBkcmFnLiBJZiBpdCBpcywgZ2V0IHRoZSBET00gc3Bl
Y2lmaWVkIGRyYWcgaW1hZ2UgYW5kIG9mZnNldC4KQEAgLTM2ODAsOCArMzY5Miw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gCiAKLSAgICAgICAg
bV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBkaXNwYXRjaERyYWdTcmNFdmVudChldmVudE5hbWVz
KCkuZHJhZ3N0YXJ0RXZlbnQsIG1fbW91c2VEb3duKQotICAgICAgICAgICAgJiYgIW1fZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKTsKKyAgICAgICAgbV9t
b3VzZURvd25NYXlTdGFydERyYWcgPSBkaXNwYXRjaERyYWdTdGFydEV2ZW50KGhhc05vbkRlZmF1
bHRQYXN0ZWJvYXJkRGF0YSk7CiAKICAgICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5t
YWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAKQEAgLTM2OTgsNyArMzcwOSw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
IGV2ZW50LCBDaGVja0RyCiAgICAgCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7
CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAgbV9kaWRTdGFy
dERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFnKG1fZnJhbWUs
IGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOworICAg
ICAgICBtX2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFy
dERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNl
RG93blBvcywgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKICAgICAgICAgLy8gSW4gV2Vi
S2l0MiB3ZSBjb3VsZCByZS1lbnRlciB0aGlzIGNvZGUgYW5kIHN0YXJ0IGFub3RoZXIgZHJhZy4K
ICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBwcm9ibGVtcyB3aXRoIHRoZSBvd25lcnNo
aXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9taXNlZCB0eXBlcy4KICAgICAgICAgaWYg
KG1fZGlkU3RhcnREcmFnKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAyMjUx
ZjlhZWQ1NDBiZGU0YTc5MzBiMDdjMmNkMTNkZjYyYzI0NjA2Li42NjYzYzhmMmE4OWQzZjIyYzNi
ZWY2MmIwOTdjNDZhZWRiZjY3NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAg
LTI1Niw3ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
aWRTdGFydERyYWcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdDYW5jZWxsZWQoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYsIERyYWdPcGVyYXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJh
Z1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgRHJhZ09wZXJhdGlvbiwg
TWF5RXh0ZW5kRHJhZ1Nlc3Npb24gPSBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6Tm8pOwogI2VuZGlm
CiAKICAgICB2b2lkIGZvY3VzRG9jdW1lbnRWaWV3KCk7CkBAIC00MDUsNiArNDA1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsZWFyRHJhZ1N0YXRlKCk7CiAKICAgICBib29sIGRpc3BhdGNoRHJh
Z1NyY0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKKyAgICBib29sIGRpc3BhdGNoRHJhZ1N0YXJ0RXZlbnQoSGFzTm9uRGVmYXVs
dFBhc3RlYm9hcmREYXRhJik7CiAKICAgICBib29sIGRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29u
c3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChj
b25zdCBJbnRQb2ludCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9p
b3MvRXZlbnRIYW5kbGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5k
bGVySU9TLm1tCmluZGV4IDgwNjQ0YjdmZDgyM2RiYmYyMDVkMjkyYjAwYjM2Y2NkZmQ4NDI3ZWMu
LjhmMGZiNGUyZWFiYTNkZDk2Y2VlYjQ0MzhmOGYzYjAzOTk1OGIxNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAgLTYwNiw3ICs2MDYsNiBAQCBib29s
IEV2ZW50SGFuZGxlcjo6dHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbkF0UG9pbnQoY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gbW91c2VQcmVzc2Vk
KG1fbW91c2VQcmVzc2VkLCB0cnVlKTsKICAgICBkcmFnU3RhdGUoKS5zb3VyY2UgPSBudWxscHRy
OwotICAgIGRyYWdTdGF0ZSgpLmRyYWdnZWRDb250ZW50UmFuZ2UgPSBudWxscHRyOwogICAgIG1f
bW91c2VEb3duUG9zID0gcHJvdGVjdGVkRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhz
eW50aGV0aWNNb3VzZU1vdmVFdmVudC5wb3NpdGlvbigpKTsKIAogICAgIHJldHVybiBoYW5kbGVN
b3VzZURyYWdnZWRFdmVudChoaXRUZXN0ZWRNb3VzZUV2ZW50LCBEb250Q2hlY2tEcmFnSHlzdGVy
ZXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggNWUyNmJmMmZiZjY2
NDcyMDM0Zjg5Y2E5Y2FhZDQzY2I4ZmZmYzUzOS4uNmVlMDg3NmYwYjgyMThjMTI0M2IwYzI4MTFl
YzYxNTc3ZjllNmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjE5
LDYgKzIxOSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOU0FycmF5
ICpzdXBwb3J0ZWRGaWxlVXBsb2FkUGFzdGVib2FyZFR5cGVzKCk7CiAgICAgY29uc3QgU3RyaW5n
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXN0ZWJvYXJkTmFtZTsgfQorICAgIGxvbmcgY2hh
bmdlQ291bnQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA3MzE3ODJjY2M4NjI3
ODNkNGYyZDkyMWViZGM1OWIxNmE2YmQ5MjFiLi4zMWIwNDgyMzYwYTkwYmUyYWFkNjQwZTZhMTgw
ZDU5ZTZmNzdlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQpAQCAtMjk5LDYgKzI5OSwxMSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0
aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAg
IH0KIH0KIAorbG9uZyBQYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291
bnQobV9wYXN0ZWJvYXJkTmFtZSk7Cit9CisKIE5TQXJyYXkgKlBhc3RlYm9hcmQ6OnN1cHBvcnRl
ZFdlYkNvbnRlbnRQYXN0ZWJvYXJkVHlwZXMoKQogewogICAgIHJldHVybiBAWyhpZClXZWJBcmNo
aXZlUGJvYXJkVHlwZSwgKGlkKWtVVFR5cGVGbGF0UlRGRCwgKGlkKWtVVFR5cGVSVEYsIChpZClr
VVRUeXBlSFRNTCwgKGlkKWtVVFR5cGVQTkcsIChpZClrVVRUeXBlVElGRiwgKGlkKWtVVFR5cGVK
UEVHLCAoaWQpa1VUVHlwZUdJRiwgKGlkKWtVVFR5cGVVUkwsIChpZClrVVRUeXBlVGV4dF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQ
YXN0ZWJvYXJkLm1tCmluZGV4IDgyOTY1NTllYTNkMWFjZDViMjFkOTg3N2I0MDUzZDk5Mjg0MWE5
ZTguLjFhZjEzZDQ2ZGZiYmYyZDlmNGI4N2MwNzUyZjM5OWU4NzIwZjdkMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLm1tCkBAIC0yNzcsNyArMjc3LDYgQEAgLSAodm9pZClzZXRJdGVtUHJvdmlkZXJzOihOU0Fy
cmF5PF9fa2luZG9mIE5TSXRlbVByb3ZpZGVyICo+ICopaXRlbVByb3ZpZGVycwogICAgIF9pdGVt
UHJvdmlkZXJzID0gaXRlbVByb3ZpZGVyczsKICAgICBfY2hhbmdlQ291bnQrKzsKICAgICBfY2Fj
aGVkVHlwZUlkZW50aWZpZXJzID0gbmlsOwotICAgIF9zdGFnZWRSZWdpc3RyYXRpb25JbmZvTGlz
dCA9IG5pbDsKIAogICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlVG9GaWxlVVJMTWFwcyA9IFtOU011
dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTppdGVtUHJvdmlkZXJzLmNvdW50XTsKICAgICBb
aXRlbVByb3ZpZGVycyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpbdHlwZVRvRmlsZVVSTE1h
cHNdIChVSUl0ZW1Qcm92aWRlciAqLCBOU1VJbnRlZ2VyLCBCT09MICopIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggY2Q2MmEyZGNiYmMxMTk4
ODU2NTI0NzA5YmVkOGRmZmVkMmQ1M2YyOC4uYTg4YzVkOThiNDRmYjkzM2ZmMGE2ZTM1MTQ2NzZm
MGRhMThjOGM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KQEAgLTEwNyw2ICsxMDcsMTEgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxl
VHlwZXNGb3JJbWFnZSgpCiAgICAgcmV0dXJuIHR5cGVzOwogfQogCitsb25nIFBhc3RlYm9hcmQ6
OmNoYW5nZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsKK30K
KwogTlNBcnJheSAqUGFzdGVib2FyZDo6c3VwcG9ydGVkRmlsZVVwbG9hZFBhc3RlYm9hcmRUeXBl
cygpCiB7CiAgICAgcmV0dXJuIEBbIChOU1N0cmluZyAqKU5TRmlsZXNQcm9taXNlUGJvYXJkVHlw
ZSwgKE5TU3RyaW5nICopTlNGaWxlbmFtZXNQYm9hcmRUeXBlIF07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDQ3NzkxNjEx
OWJmZDIxZThhMDBkYWVmMDFjNGUxMzkyNTJkNjc3ZDIuLmJjZGIwYmYwNmEwY2E5YzM5ZmY1ZjNj
NWI0YTUyNTQ1NjEyYmMwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQu
aD4KQEAgLTYzMyw5ICs2MzQsMTUgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0U3RhcnREYXRhSW50
ZXJhY3Rpb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdAogCiB2b2lkIFdl
YlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbikKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIFRvIGF1Z21lbnQgdGhlIHBsYXRmb3JtIGRyYWcg
c2Vzc2lvbiB3aXRoIGFkZGl0aW9uYWwgaXRlbXMsIGVuZCB0aGUgY3VycmVudCBkcmFnIHNlc3Np
b24gYW5kIGJlZ2luIGEgbmV3IGRyYWcgc2Vzc2lvbiB3aXRoIHRoZSBuZXcgZHJhZyBpdGVtLgor
ICAgIC8vIFRoaXMgcHJvY2VzcyBpcyBvcGFxdWUgdG8gdGhlIFVJIHByb2Nlc3MsIHdoaWNoIHN0
aWxsIG1haW50YWlucyB0aGUgb2xkIGRyYWcgaXRlbSBpbiBpdHMgZHJhZyBzZXNzaW9uLiBTaW1p
bGFybHksIHRoaXMgcGVyc2lzdGVudCBkcmFnIHNlc3Npb24KKyAgICAvLyBpcyBvcGFxdWUgdG8g
dGhlIHdlYiBwcm9jZXNzLCB3aGljaCBvbmx5IHNlZXMgdGhhdCB0aGUgY3VycmVudCBkcmFnIGhh
cyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcgb25lIGlzIGJlZ2lubmluZy4KKyAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgZXZlbnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgY3VycmVudFRpbWUoKSwgMCwgTm9UYXApOworICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnRW5kZWQoKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRy
YWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBEcmFnT3BlcmF0aW9uTm9uZSwgTWF5RXh0ZW5kRHJhZ1Nl
c3Npb246Olllcyk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRs
ZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGZhbHNlKSk7CisgICAgYm9vbCBkaWRIYW5kbGVE
cmFnID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS50cnlUb0JlZ2luRGF0YUlu
dGVyYWN0aW9uQXRQb2ludChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24pOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1Jl
cXVlc3QoZGlkSGFuZGxlRHJhZykpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRpZENvbmNsdWRlRWRp
dERhdGFJbnRlcmFjdGlvbigpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYzBhYjY0ZjMzOGY5NGU2ODVmY2NkMmNkZWE0ZWFjODcwNTllZmJiMC4u
NWI1YzFkOWJmOWI0ZjA4NjU0MzFmYWE4OWQyMTk4NTUwYmZmMWQyOSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3
LTA5LTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1MgV0syXSBTdXBwb3J0IHRhcHBpbmcgdG8gYWRkIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRy
YWcgc2Vzc2lvbiBpbiB3ZWIgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTE0NDY3
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZHMgYSBu
ZXcgZHJhZyBhbmQgZHJvcCB0ZXN0IHRoYXQgYmVnaW5zIGEgZHJhZyBvbiBhIHRleHQgc2VsZWN0
aW9uLCBhZGRzIGFuIGltYWdlIGFuZCBhIGxpbmssIGFuZCB0aGVuIGRyb3BzCisgICAgICAgIGlu
dG8gYSBjb250ZW50ZWRpdGFibGUgYXJlYS4gVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSB0ZXh0LCBs
aW5rIGFuZCBpbWFnZSBhcmUgaW5zZXJ0ZWQgaW50byB0aGUgZWRpdGFibGUgYXJlYQorICAgICAg
ICB1cG9uIGRyb3AuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50
ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3
LTA5LTExICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9yc2NobGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBiaXNlY3QtYnVpbGRzOiBhZGQgLS1saXN0IG9wdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQppbmRleCAzODM4NGUw
OWQ4YWUwNWM3YmI1OGIyYzczOGIxZWI5YjE4YzU1YzE2Li41ZDU1YzAxNDU0ODcxMjA2YWIwOTcx
YzFkYTYyOWNmZDAxMzU1ODNlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtMTM5NCw2ICsxMzk0LDIxIEBAIFRF
U1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEFkZGl0aW9uYWxJdGVtc0NhbkJlUHJldmVudGVkT25E
cmFnU3RhcnQpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJBQkNEIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci50ZXh0Q29udGVudCJdKTsKIH0KIAorVEVTVChE
YXRhSW50ZXJhY3Rpb25UZXN0cywgQWRkaXRpb25hbExpbmtBbmRJbWFnZUludG9Db250ZW50RWRp
dGFibGUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzZWxlY3RlZC10ZXh0LWltYWdl
LWxpbmstYW5kLWVkaXRhYmxlIl07CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tE
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3Lmdl
dCgpXSk7CisgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDUwLCA1MCkgdG86Q0dQ
b2ludE1ha2UoNTAsIDQwMCkgYWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zOkB7CisgICAg
ICAgIEAwLjMzOiBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OkNHUG9pbnRNYWtlKDUwLCAxNTAp
XSwKKyAgICAgICAgQDAuNjY6IFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6Q0dQb2ludE1ha2Uo
NTAsIDI1MCldCisgICAgfV07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJBQkNEIEEgbGluayIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IudGV4dENvbnRlbnQi
XSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAIiEhZWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpIl0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJlZGl0b3IucXVlcnlTZWxlY3RvcignYScpLmhyZWYiXSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShEQVRBX0lOVEVSQUNU
SU9OKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>