<?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>218312</bug_id>
          
          <creation_ts>2020-10-28 15:54:46 -0700</creation_ts>
          <short_desc>[LFC][IFC] Move the root inline box to the correct vertical position when line-height is present</short_desc>
          <delta_ts>2020-11-01 14:01:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>218397</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1702533</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-10-28 15:54:46 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702571</commentid>
    <comment_count>1</comment_count>
      <attachid>412591</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-28 17:08:19 -0700</bug_when>
    <thetext>Created attachment 412591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702617</commentid>
    <comment_count>2</comment_count>
      <attachid>412611</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-28 20:25:26 -0700</bug_when>
    <thetext>Created attachment 412611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703119</commentid>
    <comment_count>3</comment_count>
      <attachid>412771</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 10:33:51 -0700</bug_when>
    <thetext>Created attachment 412771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703124</commentid>
    <comment_count>4</comment_count>
      <attachid>412774</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 10:37:38 -0700</bug_when>
    <thetext>Created attachment 412774
Patch no-alignment

EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703126</commentid>
    <comment_count>5</comment_count>
      <attachid>412775</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 10:39:11 -0700</bug_when>
    <thetext>Created attachment 412775
Patch no-images.

EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703194</commentid>
    <comment_count>6</comment_count>
      <attachid>412795</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 13:52:53 -0700</bug_when>
    <thetext>Created attachment 412795
Patch

for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703207</commentid>
    <comment_count>7</comment_count>
      <attachid>412799</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 14:29:05 -0700</bug_when>
    <thetext>Created attachment 412799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703277</commentid>
    <comment_count>8</comment_count>
      <attachid>412820</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 17:39:10 -0700</bug_when>
    <thetext>Created attachment 412820
Patch

for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703303</commentid>
    <comment_count>9</comment_count>
      <attachid>412828</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 20:49:57 -0700</bug_when>
    <thetext>Created attachment 412828
Patch

for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703423</commentid>
    <comment_count>10</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-11-01 14:01:54 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 218397 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412591</attachid>
            <date>2020-10-28 17:08:19 -0700</date>
            <delta_ts>2020-10-28 20:15:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218312-20201028170818.patch</filename>
            <type>text/plain</type>
            <size>4206</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRiZGQxNGU1ODdmOGI0
NjBiY2I4ODdlZDI4NWY0NzNiMDQyMTI1YS4uYTE3MDIzMjc1NTQxYjJkYjFmYzEyNWMwNzhlYjI3
MWRhZGQ0NWE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEwLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIHRo
ZSByb290IGlubGluZSBib3ggdG8gdGhlIGNvcnJlY3QgdmVydGljYWwgcG9zaXRpb24gd2hlbiBs
aW5lLWhlaWdodCBpcyBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTgzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAxLiBBc2NlbnQvZGVzY2VudCB2YWx1ZXMgYXJlIG5vdCBsaW5lLWhlaWdo
dCBkZXBlbmRlbnQsIG9ubHkgdGhlIGxheW91dCBib3VuZCB2YWx1ZXMgYXJlLgorICAgICAgICAy
LiBXaGVuIGNvbXB1dGluZyB0aGUgdmVydGljYWwgcG9zaXRpb24gb2YgdGhlIHJvb3QgaW5saW5l
IGJveCwgdXNlIHRoZSBiYXNlbGluZSB2YWx1ZSBpbnN0ZWFkIG9mIHRoZSBsYXlvdXQgYm91bmRz
LiBMYXlvdXQgYm91bmRzIGFyZSBpbnB1dCBvbmx5IHRvIGhlaWdodCBjb21wdXRhdGlvbi4KKwor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6
c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5
QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQpOgorCiAyMDIwLTEwLTI4ICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEltcGxlbWVudCBv
dXRwdXRMaW5lVHJlZUFuZE1hcmsgZm9yIElGQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAwYmY5MWRmMDBhYzQ2ODJiY2IwNzY2YTI4ZDNk
ZTM2YmQ4ZmU5OTY1Li43NGZkNjMyYzE4NDVkYmI3Y2UwYzNmZTg1ZTA3MTNkNmVlYTU4YzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAt
MTczLDYgKzE3MywxMCBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbEdlb21ldHJ5
Rm9ySW5saW5lQm94KExpbmVCb3g6OklubGluZUxldmVsQm94JiBpbgogICAgIElubGluZUxheW91
dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7CiAgICAgSW5saW5lTGF5b3V0VW5p
dCBkZXNjZW50ID0gZm9udE1ldHJpY3MuZGVzY2VudCgpOwogICAgIGF1dG8gbG9naWNhbEhlaWdo
dCA9IGFzY2VudCArIGRlc2NlbnQ7CisgICAgLy8gV2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNo
IGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCisgICAgaW5saW5lTGV2ZWxCb3gu
c2V0QmFzZWxpbmUoZmxvb3JmKGFzY2VudCkpOworICAgIGlubGluZUxldmVsQm94LnNldERlc2Nl
bnQoY2VpbChkZXNjZW50KSk7CisgICAgaW5saW5lTGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChs
b2dpY2FsSGVpZ2h0KTsKIAogICAgIC8vIEZJWE1FOiBBZGp1c3QgbGF5b3V0IGJvdW5kcyB3aXRo
IGZhbGxiYWNrIGZvbnQgd2hlbiBhcHBsaWNhYmxlLgogICAgIGF1dG8mIHN0eWxlID0gaW5saW5l
TGV2ZWxCb3gubGF5b3V0Qm94KCkuc3R5bGUoKTsKQEAgLTE5MiwxNCArMTk2LDggQEAgdm9pZCBM
aW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94OjpJ
bmxpbmVMZXZlbEJveCYgaW4KICAgICAgICAgYXNjZW50ICs9IGhhbGZMZWFkaW5nOwogICAgICAg
ICBkZXNjZW50ICs9IGhhbGZMZWFkaW5nOwogICAgIH0KLSAgICAvLyBXZSBuZWVkIHRoaXMgdG8g
bWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBwb3NpdGlvbmluZy4KLSAgICBhc2NlbnQgPSBm
bG9vcmYoYXNjZW50KTsKLSAgICBkZXNjZW50ID0gY2VpbChkZXNjZW50KTsKLQotICAgIGlubGlu
ZUxldmVsQm94LnNldExheW91dEJvdW5kcyhMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0
Qm91bmRzIHsgYXNjZW50LCBkZXNjZW50IH0pOwotICAgIGlubGluZUxldmVsQm94LnNldEJhc2Vs
aW5lKGFzY2VudCk7Ci0gICAgaW5saW5lTGV2ZWxCb3guc2V0RGVzY2VudChkZXNjZW50KTsKLSAg
ICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOworICAgIC8v
IFdlIG5lZWQgZmxvb3IvY2VpbCB0byBtYXRjaCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0
aW9uaW5nLgorICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyhMaW5lQm94OjpJbmxp
bmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgZmxvb3JmKGFzY2VudCksIGNlaWwoZGVzY2VudCkg
fSk7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMo
TGluZUJveCYgbGluZUJveCwgY29uc3QgTGluZTo6UnVuTGlzdCYgcnVucykKQEAgLTM4OSw3ICsz
ODcsNiBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNh
bGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQoTGluZQogICAgIGF1dG8gbGluZUJveExvZ2ljYWxI
ZWlnaHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAgICBhdXRvIGlubGluZUJveFJlbGF0aXZl
TG9naWNhbEhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAgIGF1dG8gY29tcHV0ZUxp
bmVCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBsYXlvdXQgYm91bmRzIGJhc2VkIGxpbmUgYm94IGhlaWdodC4KICAgICAgICAgYXV0byBt
aW5pbXVtTG9naWNhbFRvcCA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKICAgICAg
ICAgYXV0byBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IHsgfTsKICAgICAgICAgZm9yIChhdXRvIGFic29sdXRlR2VvbWV0cnkgOiBpbmxpbmVMZXZlbEJv
eEFic29sdXRlR2VvbWV0cnlNYXAudmFsdWVzKCkpIHsKQEAgLTQxMSw4ICs0MDgsNyBAQCB2b2lk
IExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0
ZUxpbmVCb3hIZWlnaHQoTGluZQogICAgIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCgpOwog
CiAgICAgYXV0byBhZGp1c3RSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiA9IFsmXSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY2FzZXMgd2hlbiB0aGUgc3RyZXRjaGlu
ZyBpbmxpbmUgYm94ZXMgYXJlIG5vdCBiYXNlbGluZSBhbGlnbmVkLgotICAgICAgICBhdXRvIHJv
b3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94
QmFzZWxpbmUgLSByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAg
YXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5iYXNlbGluZSgpOwogICAgICAgICByb290
SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveExvZ2ljYWxUb3ApOwogICAgIH07
CiAgICAgYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412611</attachid>
            <date>2020-10-28 20:25:26 -0700</date>
            <delta_ts>2020-10-30 10:33:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218312-20201028202525.patch</filename>
            <type>text/plain</type>
            <size>6714</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ4OWVlMzRlY2RiMzJl
OTAwOGNjMmY4OTEwOTFhYjhlMWZjYjE3Mi4uMDM4ZjVmYmIyZTA2Y2U5YjI4NGU2ZTVmZGFkNDJj
ZDZmZjIxYzM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTEwLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIHRo
ZSByb290IGlubGluZSBib3ggdG8gdGhlIGNvcnJlY3QgdmVydGljYWwgcG9zaXRpb24gd2hlbiBs
aW5lLWhlaWdodCBpcyBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTgzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAxLiBBc2NlbnQvZGVzY2VudCB2YWx1ZXMgYXJlIG5vdCBsaW5lLWhlaWdo
dCBkZXBlbmRlbnQgKGFkanVzdGVkIHdpdGggaGFsZi1sZWFkaW5nKSwgb25seSB0aGUgbGF5b3V0
IGJvdW5kIHZhbHVlcyBhcmUuCisgICAgICAgIDIuIFdoZW4gY29tcHV0aW5nIHRoZSB2ZXJ0aWNh
bCBwb3NpdGlvbiBvZiB0aGUgcm9vdCBpbmxpbmUgYm94LCB1c2UgdGhlIGJhc2VsaW5lIHZhbHVl
IGluc3RlYWQgb2YgdGhlIGxheW91dCBib3VuZHMuCisgICAgICAgIDMuIEZpbmFsaXplIHRoZSBs
YXlvdXQgYm91bmRzIHRyYW5zaXRpb24gaW4gYWxpZ25JbmxpbmVCb3hSZWxhdGl2ZUlubGluZUxl
dmVsQm94ZXMuCisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsR2VvbWV0cnlGb3JJbmxpbmVCb3ggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWxpZ25JbmxpbmVMZXZlbEJv
eGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lQm94SGVpZ2h0KToKKwogMjAyMC0xMC0yOCAgQ29u
cmFkIFNodWx0eiAgPGNvbnJhZF9zaHVsdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBk
aWFnbm9zdGljIGxvZ2dpbmcgZm9yIHBsdWctaW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDBiZjkxZGYwMGFjNDY4MmJjYjA3NjZhMjhk
M2RlMzZiZDhmZTk5NjUuLjk5YjUxODIyZGEzMTE4ZWFiOGQ4YmM5YTBiM2MzMTI4ZjVlNDI5ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBA
IC0xNzMsNiArMTczLDEwIEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsR2VvbWV0
cnlGb3JJbmxpbmVCb3goTGluZUJveDo6SW5saW5lTGV2ZWxCb3gmIGluCiAgICAgSW5saW5lTGF5
b3V0VW5pdCBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKICAgICBJbmxpbmVMYXlvdXRV
bml0IGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNjZW50KCk7CiAgICAgYXV0byBsb2dpY2FsSGVp
Z2h0ID0gYXNjZW50ICsgZGVzY2VudDsKKyAgICAvLyBXZSBuZWVkIGZsb29yL2NlaWwgdG8gbWF0
Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBwb3NpdGlvbmluZy4KKyAgICBpbmxpbmVMZXZlbEJv
eC5zZXRCYXNlbGluZShmbG9vcmYoYXNjZW50KSk7CisgICAgaW5saW5lTGV2ZWxCb3guc2V0RGVz
Y2VudChjZWlsKGRlc2NlbnQpKTsKKyAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0
KGxvZ2ljYWxIZWlnaHQpOwogCiAgICAgLy8gRklYTUU6IEFkanVzdCBsYXlvdXQgYm91bmRzIHdp
dGggZmFsbGJhY2sgZm9udCB3aGVuIGFwcGxpY2FibGUuCiAgICAgYXV0byYgc3R5bGUgPSBpbmxp
bmVMZXZlbEJveC5sYXlvdXRCb3goKS5zdHlsZSgpOwpAQCAtMTkyLDE0ICsxOTYsOCBAQCB2b2lk
IExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbEdlb21ldHJ5Rm9ySW5saW5lQm94KExpbmVCb3g6
OklubGluZUxldmVsQm94JiBpbgogICAgICAgICBhc2NlbnQgKz0gaGFsZkxlYWRpbmc7CiAgICAg
ICAgIGRlc2NlbnQgKz0gaGFsZkxlYWRpbmc7CiAgICAgfQotICAgIC8vIFdlIG5lZWQgdGhpcyB0
byBtYXRjaCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgotICAgIGFzY2VudCA9
IGZsb29yZihhc2NlbnQpOwotICAgIGRlc2NlbnQgPSBjZWlsKGRlc2NlbnQpOwotCi0gICAgaW5s
aW5lTGV2ZWxCb3guc2V0TGF5b3V0Qm91bmRzKExpbmVCb3g6OklubGluZUxldmVsQm94OjpMYXlv
dXRCb3VuZHMgeyBhc2NlbnQsIGRlc2NlbnQgfSk7Ci0gICAgaW5saW5lTGV2ZWxCb3guc2V0QmFz
ZWxpbmUoYXNjZW50KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXREZXNjZW50KGRlc2NlbnQpOwot
ICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCk7CisgICAg
Ly8gV2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9z
aXRpb25pbmcuCisgICAgaW5saW5lTGV2ZWxCb3guc2V0TGF5b3V0Qm91bmRzKExpbmVCb3g6Oklu
bGluZUxldmVsQm94OjpMYXlvdXRCb3VuZHMgeyBmbG9vcmYoYXNjZW50KSwgY2VpbChkZXNjZW50
KSB9KTsKIH0KIAogdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hl
cyhMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5lOjpSdW5MaXN0JiBydW5zKQpAQCAtMzI4LDcg
KzMyNiw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRp
Y2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChMaW5lCiAgICAgICAgICAgICBhdXRvIGJhc2Vs
aW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAg
ICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKICAgICAg
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6Ci0gICAgICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50
SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGlubGluZUxldmVsQm94LT5sYXlvdXRC
b3VuZHMoKS5hc2NlbnQ7CiAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSB7IH07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFZlcnRpY2FsQWxpZ246OlRleHRUb3A6IHsKQEAgLTM1MSwyMCArMzQ5LDIwIEBAIHZvaWQgTGlu
ZUJveEJ1aWxkZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGlu
ZUJveEhlaWdodChMaW5lCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246Ok1pZGRsZTogewogICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZy
b21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQo
KSAvIDIgKyBwYXJlbnRJbmxpbmVCb3guZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAg
ICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxv
Z2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgbG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBsb2dpY2FsVG9w
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwogICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0
RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAt
IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJh
c2VsaW5lTWlkZGxlOiB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJv
bVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgp
IC8gMjsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmJhc2Vs
aW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOworICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0g
bG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgICAgICBiYXNl
bGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBWZXJ0aWNh
bEFsaWduOjpMZW5ndGg6IHsKICAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJv
eC5zdHlsZSgpOwogICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUudmVydGljYWxBbGlnbkxlbmd0
aCgpLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSkgKyBpbmxpbmVMZXZlbEJveC0+bGF5b3V0
Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsK
KyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5k
cygpLmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAg
ICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFz
Y2VudDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4OSw3ICsz
ODcsNiBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNh
bGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQoTGluZQogICAgIGF1dG8gbGluZUJveExvZ2ljYWxI
ZWlnaHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAgICBhdXRvIGlubGluZUJveFJlbGF0aXZl
TG9naWNhbEhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAgIGF1dG8gY29tcHV0ZUxp
bmVCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBsYXlvdXQgYm91bmRzIGJhc2VkIGxpbmUgYm94IGhlaWdodC4KICAgICAgICAgYXV0byBt
aW5pbXVtTG9naWNhbFRvcCA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKICAgICAg
ICAgYXV0byBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IHsgfTsKICAgICAgICAgZm9yIChhdXRvIGFic29sdXRlR2VvbWV0cnkgOiBpbmxpbmVMZXZlbEJv
eEFic29sdXRlR2VvbWV0cnlNYXAudmFsdWVzKCkpIHsKQEAgLTQxMSw4ICs0MDgsNyBAQCB2b2lk
IExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0
ZUxpbmVCb3hIZWlnaHQoTGluZQogICAgIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCgpOwog
CiAgICAgYXV0byBhZGp1c3RSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiA9IFsmXSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY2FzZXMgd2hlbiB0aGUgc3RyZXRjaGlu
ZyBpbmxpbmUgYm94ZXMgYXJlIG5vdCBiYXNlbGluZSBhbGlnbmVkLgotICAgICAgICBhdXRvIHJv
b3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94
QmFzZWxpbmUgLSByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAg
YXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5iYXNlbGluZSgpOwogICAgICAgICByb290
SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveExvZ2ljYWxUb3ApOwogICAgIH07
CiAgICAgYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412771</attachid>
            <date>2020-10-30 10:33:51 -0700</date>
            <delta_ts>2020-10-30 13:45:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218312-20201030103350.patch</filename>
            <type>text/plain</type>
            <size>28881</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFiYzM5NTU5MTg1ODk4
ZDFkODZlOWQ4Yjc0OGEzMTUyYWZkOTA2ZC4uOWQwYTExOWM2MDkxMGFkN2NiN2FhY2I1Nzg1Njgy
YmFjYjUxNGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIHRo
ZSByb290IGlubGluZSBib3ggdG8gdGhlIGNvcnJlY3QgdmVydGljYWwgcG9zaXRpb24gd2hlbiBs
aW5lLWhlaWdodCBpcyBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTgzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFV1MuCisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsR2VvbWV0cnlGb3JJbmxpbmVCb3ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWxpZ25Jbmxp
bmVMZXZlbEJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lQm94SGVpZ2h0KToKKyAgICAgICAg
KiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFJlY3RGb3JUZXh0UnVuIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFJlY3RGb3JJbmxpbmVMZXZl
bEJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVMZXZlbEJv
eDo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxp
bmVMZXZlbEJveDo6Zm9udE1ldHJpY3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpjYW5Vc2VGb3JDaGlsZCk6CisKIDIwMjAtMTAtMjkg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3Jh
dGlvbl0gSW1wbGVtZW50IG91dHB1dExpbmVUcmVlQW5kTWFyayBmb3IgSUZDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDBiZjkxZGYwMGFj
NDY4MmJjYjA3NjZhMjhkM2RlMzZiZDhmZTk5NjUuLjcwN2M3NTgyN2RhODJhYzZlZThiMDFiYTNl
YjYyZTA4MWQ2ZDgwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwCkBAIC0xNjksMTAgKzE2OSwxNCBAQCBMaW5lQm94IExpbmVCb3hCdWlsZGVy
OjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQogdm9p
ZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94
OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlu
bGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNMaW5lQnJlYWtC
b3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVMZXZlbEJveC5mb250TWV0cmlj
cygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gaW5saW5lTGV2ZWxCb3guc3R5bGUoKS5mb250
TWV0cmljcygpOwogICAgIElubGluZUxheW91dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNj
ZW50KCk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50ID0gZm9udE1ldHJpY3MuZGVzY2Vu
dCgpOwogICAgIGF1dG8gbG9naWNhbEhlaWdodCA9IGFzY2VudCArIGRlc2NlbnQ7CisgICAgLy8g
V2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRp
b25pbmcuCisgICAgaW5saW5lTGV2ZWxCb3guc2V0QmFzZWxpbmUoZmxvb3JmKGFzY2VudCkpOwor
ICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoY2VpbChkZXNjZW50KSk7CisgICAgaW5saW5l
TGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKIAogICAgIC8vIEZJWE1F
OiBBZGp1c3QgbGF5b3V0IGJvdW5kcyB3aXRoIGZhbGxiYWNrIGZvbnQgd2hlbiBhcHBsaWNhYmxl
LgogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuc3R5bGUoKTsK
QEAgLTE5MiwxNCArMTk2LDggQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9t
ZXRyeUZvcklubGluZUJveChMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW4KICAgICAgICAgYXNj
ZW50ICs9IGhhbGZMZWFkaW5nOwogICAgICAgICBkZXNjZW50ICs9IGhhbGZMZWFkaW5nOwogICAg
IH0KLSAgICAvLyBXZSBuZWVkIHRoaXMgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBw
b3NpdGlvbmluZy4KLSAgICBhc2NlbnQgPSBmbG9vcmYoYXNjZW50KTsKLSAgICBkZXNjZW50ID0g
Y2VpbChkZXNjZW50KTsKLQotICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyhMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgYXNjZW50LCBkZXNjZW50IH0pOwot
ICAgIGlubGluZUxldmVsQm94LnNldEJhc2VsaW5lKGFzY2VudCk7Ci0gICAgaW5saW5lTGV2ZWxC
b3guc2V0RGVzY2VudChkZXNjZW50KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVp
Z2h0KGxvZ2ljYWxIZWlnaHQpOworICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0byBtYXRjaCBs
ZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgorICAgIGlubGluZUxldmVsQm94LnNl
dExheW91dEJvdW5kcyhMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgZmxv
b3JmKGFzY2VudCksIGNlaWwoZGVzY2VudCkgfSk7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6
OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGluZTo6
UnVuTGlzdCYgcnVucykKQEAgLTMwMSwyMiArMjk5LDI3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6
OmFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChM
aW5lCiAgICAgLy8gVGhpcyBmdW5jdGlvbiAocGFydGlhbGx5KSBpbXBsZW1lbnRzOgogICAgIC8v
IDIuMi4gTGF5b3V0IFdpdGhpbiBMaW5lIEJveGVzCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3Jn
L1RSL2Nzcy1pbmxpbmUtMy8jbGluZS1sYXlvdXQKKyAgICAvLyAxLiBDb21wdXRlIHRoZSBsaW5l
IGJveCBoZWlnaHQgdXNpbmcgdGhlIGxheW91dCBib3VuZHMgZ2VvbWV0cnkuIFRoaXMgaGVpZ2h0
IGNvbXB1dGF0aW9uIHN0cmljdGx5IHVzZXMgbGF5b3V0IGJvdW5kcyBhbmQgbm90IG5vcm1hbCBp
bmxpbmUgbGV2ZWwgYm94IGdlb21ldHJpZXMuCisgICAgLy8gMi4gQ29tcHV0ZSB0aGUgYmFzZWxp
bmUvbG9naWNhbCB0b3AgcG9zaXRpb24gb2YgdGhlIHJvb3QgaW5saW5lIGJveC4gQWxpZ25lZCBi
b3hlcyBwdXNoIHRoZSByb290IGlubGluZSBib3ggYXJvdW5kIGluc2lkZSB0aGUgbGluZSBib3gu
CisgICAgLy8gMy4gRmluYWxseSBhbGlnbiB0aGUgaW5saW5lIGxldmVsIGJveGVzIHVzaW5nICht
b3N0bHkpIG5vcm1hbCBpbmxpbmUgbGV2ZWwgYm94IGdlb21ldHJpZXMuIAogICAgIGF1dG8gcXVp
cmtzID0gZm9ybWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKTsKLSAgICBWZWN0b3I8TGluZUJveDo6
SW5saW5lTGV2ZWxCb3gqPiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzOwotICAgIHN0
cnVjdCBBYnNvbHV0ZUdlb21ldHJ5IHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AgeyAw
IH07Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgYm90dG9tIHsgMCB9OwotICAgICAgICBJbmxp
bmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSB7IDAg
fTsKLSAgICAgICAgY29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gqIGlubGluZUxldmVsQm94
IHsgbnVsbHB0ciB9OwotICAgIH07Ci0gICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVMZXZlbEJv
eCosIEFic29sdXRlR2VvbWV0cnk+IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1hcDsK
ICAgICBhdXRvJiByb290SW5saW5lQm94ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7Ci0gICAg
aW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJz
b2x1dGVHZW9tZXRyeSB7IHsgfSwgcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQo
KSwgeyB9LCAmcm9vdElubGluZUJveCB9KTsKLSAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9t
Um9vdElubGluZUJveEJhc2VsaW5lID0gcm9vdElubGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVM
YXlvdXRVbml0KCkgOiByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKIAotICAg
IGF1dG8gYWxpZ25JbmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAg
ICAgICAvLyBGSVhNRTogQWRkIHByb3BlciBzdXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBpbmxp
bmUgYm94IHdpdGggbGluZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50IGhhcyBhIGNoaWxkIGlubGlu
ZSBib3gKLSAgICAgICAgLy8gd2l0aCBub24tbGluZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50Lgor
ICAgIGF1dG8gY29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKKyAgICAgICAgVmVj
dG9yPExpbmVCb3g6OklubGluZUxldmVsQm94Kj4gbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxC
b3hlczsKKyAgICAgICAgLy8gTGluZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGJhc2VkIG9u
IHRoZSBsYXlvdXQgYm91bmRzIG9mIHRoZSBpbmxpbmUgYm94ZXMgYW5kIG5vdCB0aGVpciBsb2dp
Y2FsIChhc2NlbnQvZGVzY2VudCkgZGltZW5zaW9ucy4KKyAgICAgICAgc3RydWN0IEFic29sdXRl
VG9wQW5kQm90dG9tIHsKKyAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgdG9wIHsgMCB9Owor
ICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBib3R0b20geyAwIH07CisgICAgICAgIH07Cisg
ICAgICAgIEhhc2hNYXA8TGluZUJveDo6SW5saW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZVRvcEFuZEJv
dHRvbT4gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcDsKKworICAgICAgICBh
dXRvIHJvb3RBYnNvbHV0ZVRvcEFuZEJvdHRvbSA9IEFic29sdXRlVG9wQW5kQm90dG9tIHsgeyB9
LCByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIH07CisgICAgICAgIGlubGlu
ZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKCZyb290SW5saW5lQm94LCByb290
QWJzb2x1dGVUb3BBbmRCb3R0b20pOworCisgICAgICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3Ag
PSByb290QWJzb2x1dGVUb3BBbmRCb3R0b20udG9wOworICAgICAgICBhdXRvIG1heGltdW1Mb2dp
Y2FsQm90dG9tID0gcm9vdEFic29sdXRlVG9wQW5kQm90dG9tLmJvdHRvbTsKKwogICAgICAgICBm
b3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hl
cygpKSB7CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxh
dGl2ZUFsaWdubWVudCgpKSB7CkBAIC0zMjQsMTI0ICszMjcsMTkwIEBAIHZvaWQgTGluZUJveEJ1
aWxkZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhl
aWdodChMaW5lCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9y
TGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgICAgICAgICAvLyBMb2dpY2FsIHRv
cCBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3gncyBsYXlvdXQgYm91bmRzLgor
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgbG9naWNhbCB0b3AgaXMgbm90IHRoZSBmaW5h
bCBsb2dpY2FsIHRvcCBvZiB0aGUgaW5saW5lIGxldmVsIGJveC4KKyAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIGxvZ2ljYWwgdG9wIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXlvdXQgYm91bmRz
IGdlb21ldHJ5IHdoaWNoIG1heSBiZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIHRoZSBpbmxpbmUgYm94
J3Mgbm9ybWFsIGdlb21ldHJ5LgogICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wID0gSW5saW5l
TGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBzd2l0Y2ggKGlu
bGluZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6QmFzZWxpbmU6Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2Vu
dDsKLSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsg
fTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dFRvcDogewotICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBUZXh0VG9wIGFsaWdu
cyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIHRvcCAoYXNjZW50KSBhbmQgbm90
IHRoZSBsYXlvdXQgYm91bmRzIHRvcC4KLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudEFzY2Vu
dCA9IHBhcmVudElubGluZUJveC5mb250TWV0cmljcygpLmFzY2VudCgpOwotICAgICAgICAgICAg
ICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQgLSBwYXJlbnRBc2NlbnQ7Ci0gICAgICAgICAgICAgICAgbG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveExvZ2ljYWxUb3A7Ci0gICAgICAgICAgICAgICAgYmFzZWxp
bmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBwYXJlbnRBc2NlbnQgLSBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOiB7Ci0g
ICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IFRleHRCb3R0b20gYWxpZ25zIHdpdGggdGhlIGlu
bGluZSBib3gncyBmb250IG1ldHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlv
dXQgYm91bmRzIGJvdHRvbS4KLSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGb250TWV0cmlj
cyA9IHBhcmVudElubGluZUJveC5mb250TWV0cmljcygpOwotICAgICAgICAgICAgICAgIGF1dG8g
cGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5k
cygpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9
IHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExh
eW91dEJvdW5kcy5kZXNjZW50ICsgcGFyZW50Rm9udE1ldHJpY3MuZGVzY2VudCgpOwotICAgICAg
ICAgICAgICAgIGF1dG8gbGF5b3V0Qm91bmRzID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5k
cygpOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2Fs
Qm90dG9tIC0gbGF5b3V0Qm91bmRzLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGJhc2VsaW5l
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbGF5b3V0Qm91bmRzLmRlc2NlbnQgLSBwYXJlbnRG
b250TWV0cmljcy5kZXNjZW50KCk7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJh
c2VsaW5lOiB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAg
ICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFz
Y2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
Ok1pZGRsZTogewotICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIg
KyBwYXJlbnRJbmxpbmVCb3guZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5l
IC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnN0eWxlKCku
Zm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKICAg
ICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBp
bmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BP
ZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0g
aW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBs
b2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Okxlbmd0aDogewot
ICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CisgICAgICAg
ICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKICAgICAgICAg
ICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRM
aW5lSGVpZ2h0KCkpICsgaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwot
ICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAt
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFz
ZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAg
ICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFz
Y2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
OlRleHRUb3A6IHsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC10b3AgYWxpZ25z
IHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgdG9wIChhc2NlbnQpIGFuZCBub3Qg
dGhlIGxheW91dCBib3VuZHMgdG9wLgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJl
bnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gcGFyZW50SW5saW5lQm94LmJhc2Vs
aW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206IHsKKyAgICAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGV4dC1ib3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1l
dHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4K
KyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVu
dElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElu
bGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0
KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJv
eC5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkpOworICAgICAgICAgICAgICAg
IGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lTGV2ZWxC
b3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3gtPnNldExvZ2ljYWxUb3AobG9naWNhbFRv
cCk7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveEFic29sdXRlR2VvbWV0cnkgPSBp
bmxpbmVMZXZlbEJveEFic29sdXRlR2VvbWV0cnlNYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gpOwot
ICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hBYnNv
bHV0ZUdlb21ldHJ5LnRvcCArIGxvZ2ljYWxUb3A7CisgICAgICAgICAgICBhdXRvIHBhcmVudElu
bGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFu
ZEJvdHRvbU1hcC5nZXQoJnBhcmVudElubGluZUJveCk7CisgICAgICAgICAgICBhdXRvIGFic29s
dXRlTG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tLnRvcCAr
IGxvZ2ljYWxUb3A7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNhbEJvdHRvbSA9IGFi
c29sdXRlTG9naWNhbFRvcCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQo
KTsKLSAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5l
Qm94QmFzZWxpbmUgPSBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5LmJhc2VsaW5lT2Zm
c2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJh
c2VsaW5lOwotICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFwLmFk
ZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgQWJzb2x1dGVHZW9tZXRyeSB7IGFic29sdXRlTG9naWNh
bFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0RnJvbVJv
b3RJbmxpbmVCb3hCYXNlbGluZSwgaW5saW5lTGV2ZWxCb3guZ2V0KCkgfSk7Ci0KLSAgICAgICAg
ICAgIGF1dG8gYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gcXVpcmtzLnNo
b3VsZElubGluZUxldmVsQm94U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmlubGluZUxldmVsQm94
KTsKLSAgICAgICAgICAgIGlmIChhZmZlY3RzUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24p
Ci0gICAgICAgICAgICAgICAgbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxp
bmUgPSBzdGQ6Om1heChtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSwg
YWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgKyBpbmxpbmVM
ZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50KTsKLSAgICAgICAgfQotICAgIH07Ci0gICAg
YWxpZ25JbmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMoKTsKLQotICAgIGF1dG8gbGlu
ZUJveExvZ2ljYWxIZWlnaHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICBhdXRvIGlubGlu
ZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1
dG8gY29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBsYXlvdXQgYm91bmRzIGJhc2VkIGxpbmUgYm94IGhlaWdodC4KLSAg
ICAgICAgYXV0byBtaW5pbXVtTG9naWNhbFRvcCA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IHsgfTsKLSAgICAgICAgYXV0byBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IE9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IHsgfTsKLSAgICAgICAgZm9yIChhdXRvIGFic29sdXRlR2VvbWV0cnkgOiBp
bmxpbmVMZXZlbEJveEFic29sdXRlR2VvbWV0cnlNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAg
IGF1dG8mIGlubGluZUxldmVsQm94ID0gKmFic29sdXRlR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3g7
Ci0gICAgICAgICAgICBpZiAoIXF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5l
Qm94KGxpbmVCb3gsIGlubGluZUxldmVsQm94KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9wID0gc3RkOjptaW4obWluaW11bUxvZ2ljYWxU
b3AudmFsdWVPcihhYnNvbHV0ZUdlb21ldHJ5LnRvcCksIGFic29sdXRlR2VvbWV0cnkudG9wKTsK
LSAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2lj
YWxCb3R0b20udmFsdWVPcihhYnNvbHV0ZUdlb21ldHJ5LmJvdHRvbSksIGFic29sdXRlR2VvbWV0
cnkuYm90dG9tKTsKKyAgICAgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0
b21NYXAuYWRkKGlubGluZUxldmVsQm94LmdldCgpLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFi
c29sdXRlTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tIH0pOworICAgICAgICAgICAg
Ly8gU3RyZXRjaCB0aGUgbWluL21heCBhYnNvbHV0ZSB2YWx1ZXMgaWYgYXBwbGljYWJsZS4KKyAg
ICAgICAgICAgIGlmIChxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJveChs
aW5lQm94LCAqaW5saW5lTGV2ZWxCb3gpKSB7CisgICAgICAgICAgICAgICAgbWluaW11bUxvZ2lj
YWxUb3AgPSBzdGQ6Om1pbihtaW5pbXVtTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsVG9wKTsK
KyAgICAgICAgICAgICAgICBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KG1heGltdW1M
b2dpY2FsQm90dG9tLCBhYnNvbHV0ZUxvZ2ljYWxCb3R0b20pOworICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IG1heGltdW1M
b2dpY2FsQm90dG9tLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKSAtIG1pbmltdW1Mb2dpY2Fs
VG9wLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKLSAgICAgICAgbGluZUJveExvZ2ljYWxI
ZWlnaHQgPSBpbmxpbmVCb3hSZWxhdGl2ZUxvZ2ljYWxIZWlnaHQ7Ci0gICAgICAgIC8vIE5vdyBz
dHJldGNoIHRoZSBsaW5lIGJveCB3aXRoIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBpbmxpbmUgbGV2
ZWwgYm94ZXMuCisgICAgICAgIC8vIFRoZSBsaW5lIGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMg
YXMgZm9sbG93czoKKyAgICAgICAgLy8gMS4gU3RyZXRjaCB0aGUgbGluZSBib3ggd2l0aCB0aGUg
bm9uLWxpbmUtYm94IHJlbGF0aXZlIGFsaWduZWQgaW5saW5lIGJveCBhYnNvbHV0ZSB0b3AgYW5k
IGJvdHRvbSB2YWx1ZXMuCisgICAgICAgIC8vIDIuIENoZWNrIGlmIHRoZSBsaW5lIGJveCByZWxh
dGl2ZSBhbGlnbmVkIGlubGluZSBib3hlcyAodG9wLCBib3R0b20gZXRjKSBoYXZlIGVub3VnaCBy
b29tIGFuZCBzdHJldGNoIHRoZSBsaW5lIGJveCBmdXJ0aGVyIGlmIG5lZWRlZC4KKyAgICAgICAg
YXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tIC0gbWluaW11
bUxvZ2ljYWxUb3A7CiAgICAgICAgIGZvciAoYXV0byogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2
ZWxCb3ggOiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKSB7CiAgICAgICAgICAgICBp
ZiAoIXF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICps
aW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBsaW5lQm94TG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGxpbmVCb3hMb2dp
Y2FsSGVpZ2h0LCBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
aGVpZ2h0KCkpOwogICAgICAgICB9CisgICAgICAgIGxpbmVCb3guc2V0TG9naWNhbEhlaWdodChs
aW5lQm94TG9naWNhbEhlaWdodCk7CiAgICAgfTsKICAgICBjb21wdXRlTGluZUJveExvZ2ljYWxI
ZWlnaHQoKTsKIAotICAgIGF1dG8gYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24g
PSBbJl0gewotICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGNhc2VzIHdoZW4gdGhl
IHN0cmV0Y2hpbmcgaW5saW5lIGJveGVzIGFyZSBub3QgYmFzZWxpbmUgYWxpZ25lZC4KLSAgICAg
ICAgYXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9v
dElubGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7
CisgICAgYXV0byBjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0gewor
ICAgICAgICBIYXNoTWFwPExpbmVCb3g6OklubGluZUxldmVsQm94KiwgSW5saW5lTGF5b3V0VW5p
dD4gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwOworICAgICAgICBpbmxp
bmVMZXZlbEJveEFic29sdXRlQmFzZWxpbmVPZmZzZXRNYXAuYWRkKCZyb290SW5saW5lQm94LCBJ
bmxpbmVMYXlvdXRVbml0IHsgfSk7CisKKyAgICAgICAgYXV0byBtYXhpbXVtVG9wT2Zmc2V0RnJv
bVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHJvb3RJbmxpbmVCb3guaXNFbXB0eSgpID8gSW5saW5l
TGF5b3V0VW5pdCgpIDogcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisKKyAg
ICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxl
dmVsQm94ZXMoKSkgeworICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0g
SW5saW5lTGF5b3V0VW5pdCB7IH07CisgICAgICAgICAgICBpZiAoIWlubGluZUxldmVsQm94LT5o
YXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGxh
eW91dEJveCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3goKTsKKyAgICAgICAgICAgICAgICBh
dXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94
KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZSA9IElubGluZUxheW91dFVuaXQgeyB9OworCisgICAgICAgICAg
ICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZToKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
TWlkZGxlOiB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21Q
YXJlbnRCYXNlbGluZSA9IChpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkg
LyAyICsgcGFyZW50SW5saW5lQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAy
KTsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUg
PSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmJh
c2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGlu
ZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDI7CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6IHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byB2ZXJ0aWNhbEFsaWduT2Zmc2V0ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS52
ZXJ0aWNhbEFsaWduTGVuZ3RoKCksIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
dmVydGljYWxBbGlnbk9mZnNldCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWln
aHQoKTsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gt
PmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFyZW50SW5s
aW5lQm94LmJhc2VsaW5lKCkgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpU
ZXh0Qm90dG9tOgorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRC
YXNlbGluZSA9IGlubGluZUxldmVsQm94LT5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRV
bml0KCkpIC0gKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0
ID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmdldCgmcGFyZW50SW5s
aW5lQm94KSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52ZXJ0aWNh
bEFsaWduKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDogewor
ICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gcm9vdElubGluZUJv
eC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
YXNjZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKKyAgICAgICAgICAg
ICAgICAgICAgYWJzb2x1dGVCYXNlbGluZU9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRC
b3VuZHMoKS5kZXNjZW50IC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50Owor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRF
RF9ZRVQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5l
T2Zmc2V0TWFwLmFkZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgYWJzb2x1dGVCYXNlbGluZU9mZnNl
dCk7CisgICAgICAgICAgICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlv
biA9IHF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICpp
bmxpbmVMZXZlbEJveCk7CisgICAgICAgICAgICBpZiAoYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0
aWNhbFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lID0gc3RkOjptYXgobWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5l
Qm94QmFzZWxpbmUsIGFic29sdXRlQmFzZWxpbmVPZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+YmFz
ZWxpbmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgYXV0byByb290SW5saW5lQm94TG9naWNhbFRv
cCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lIC0gcm9vdElubGlu
ZUJveC5iYXNlbGluZSgpOwogICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9v
dElubGluZUJveExvZ2ljYWxUb3ApOwogICAgIH07Ci0gICAgYWRqdXN0Um9vdElubGluZUJveFZl
cnRpY2FsUG9zaXRpb24oKTsKKyAgICBjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRp
b24oKTsKIAotICAgIGF1dG8gYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0g
WyZdIHsKLSAgICAgICAgZm9yIChhdXRvKiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2
ZUlubGluZUxldmVsQm94ZXMpIHsKKyAgICBhdXRvIGFsaWduSW5saW5lTGV2ZWxCb3hlcyA9IFsm
XSB7CisgICAgICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJ
bmxpbmVMZXZlbEJveGVzKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGlu
ZUxldmVsQm94LT5sYXlvdXRCb3goKTsKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbm1l
bnQgPSBsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7CisgICAgICAgICAgICBhdXRv
JiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveC5wYXJlbnQoKSk7CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVM
YXlvdXRVbml0IHsgfTsKLSAgICAgICAgICAgIGF1dG8gcm9vdElubGluZUJveE9mZnNldCA9IElu
bGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVu
dCkgeworICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigp
KSB7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxl
dmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxI
ZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3guc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWln
aHQoKSAvIDIpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gu
YmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9w
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQo
KSAvIDI7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNl
bGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6TGVuZ3RoOiB7CisgICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJv
eC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBm
bG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29t
cHV0ZWRMaW5lSGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZSA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJv
eC0+bG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgKHRleHQpdG9wL2JvdHRvbSBhbGlnbiB0aGVpciBsYXlvdXQgYm91bmRzLgorICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOgorICAgICAgICAgICAgICAgIGxv
Z2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5l
TGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206CisgICAgICAgICAgICAgICAgbG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgLSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6
Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHsgfTsKKyAgICAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBp
bmxpbmUgYm94LgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRv
bToKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gbGluZUJveExvZ2ljYWxIZWlnaHQgLSBp
bmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAg
cm9vdElubGluZUJveE9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWln
aHQoKSAtIGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodDsKKyAgICAgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVu
dCBpbmxpbmUgYm94LgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBsaW5lQm94LmxvZ2lj
YWxIZWlnaHQoKSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5s
aW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVU
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
bmxpbmVMZXZlbEJveC0+c2V0TG9naWNhbFRvcChsb2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGlm
IChyb290SW5saW5lQm94T2Zmc2V0ID4gMCkKLSAgICAgICAgICAgICAgICByb290SW5saW5lQm94
LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveC5sb2dpY2FsVG9wKCkgKyByb290SW5saW5lQm94
T2Zmc2V0KTsKICAgICAgICAgfQogICAgIH07Ci0gICAgYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxp
bmVMZXZlbEJveGVzKCk7Ci0gICAgbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dp
Y2FsSGVpZ2h0KTsKKyAgICBhbGlnbklubGluZUxldmVsQm94ZXMoKTsKIH0KIAogTGluZUJveCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmxpbmVCb3hGb3JMaW5lQ29udGVudChj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNw
cAppbmRleCBkMjJhZGI2NjZlZjI2ZWRlMzA4ZjJmZWI1ZGFiM2Q3NTFiYWJhZWQ5Li5lZGRjZDQw
ZDdjNzcyMGMwODlmNjFmY2ExMDhlZDEwMTJlMDUxOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcApAQCAt
ODYsNyArODYsNyBAQCBJbmxpbmVSZWN0IExpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihj
b25zdCBMaW5lOjpSdW4mIHJ1bikgY29uc3QKICAgICBBU1NFUlQocnVuLmlzVGV4dCgpIHx8IHJ1
bi5pc0xpbmVCcmVhaygpKTsKICAgICBhdXRvKiBwYXJlbnRJbmxpbmVCb3ggPSAmaW5saW5lTGV2
ZWxCb3hGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpLnBhcmVudCgpKTsKICAgICBBU1NFUlQo
cGFyZW50SW5saW5lQm94LT5pc0lubGluZUJveCgpKTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9
IHBhcmVudElubGluZUJveC0+Zm9udE1ldHJpY3MoKTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9
IHBhcmVudElubGluZUJveC0+c3R5bGUoKS5mb250TWV0cmljcygpOwogICAgIGF1dG8gcnVubG9n
aWNhbFRvcCA9IHBhcmVudElubGluZUJveC0+bG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94
LT5iYXNlbGluZSgpIC0gZm9udE1ldHJpY3MuYXNjZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50
SW5saW5lQm94ICE9IG1fcm9vdElubGluZUJveC5nZXQoKSAmJiAhcGFyZW50SW5saW5lQm94LT5o
YXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkgewpAQCAtMTAzLDExICsxMDMsMTIgQEAgSW5s
aW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsUmVjdEZvcklubGluZUxldmVsQm94KGNvbnN0IEJveCYg
bGF5b3V0Qm94KSBjb25zdAogICAgIGF1dG8qIGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZv
ckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGF1dG8gaW5saW5lQm94TG9naWNhbFJlY3QgPSBp
bmxpbmVCb3gtPmxvZ2ljYWxSZWN0KCk7CiAgICAgYXV0byBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2lj
YWxUb3AgPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKTsKLQotICAgIHdoaWxlIChpbmxpbmVCb3gg
IT0gbV9yb290SW5saW5lQm94LmdldCgpICYmICFpbmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxhdGl2
ZUFsaWdubWVudCgpKSB7Ci0gICAgICAgIGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxh
eW91dEJveChpbmxpbmVCb3gtPmxheW91dEJveCgpLnBhcmVudCgpKTsKLSAgICAgICAgQVNTRVJU
KGlubGluZUJveC0+aXNJbmxpbmVCb3goKSk7Ci0gICAgICAgIGlubGluZUJveEFic29sdXRlbG9n
aWNhbFRvcCArPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKTsKKyAgICBpZiAoIWlubGluZUJveC0+
aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKKyAgICAgICAgd2hpbGUgKGlubGluZUJv
eCAhPSBtX3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYgIWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0
aXZlQWxpZ25tZW50KCkpIHsKKyAgICAgICAgICAgIGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJv
eEZvckxheW91dEJveChpbmxpbmVCb3gtPmxheW91dEJveCgpLnBhcmVudCgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVChpbmxpbmVCb3gtPmlzSW5saW5lQm94KCkpOworICAgICAgICAgICAgaW5saW5l
Qm94QWJzb2x1dGVsb2dpY2FsVG9wICs9IGlubGluZUJveC0+bG9naWNhbFRvcCgpOworICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiB7IGlubGluZUJveEFic29sdXRlbG9naWNhbFRvcCwgaW5s
aW5lQm94TG9naWNhbFJlY3QubGVmdCgpLCBpbmxpbmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBp
bmxpbmVCb3hMb2dpY2FsUmVjdC5oZWlnaHQoKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oCmluZGV4IGVhZWYy
MjgwN2JlYjJlM2RkMWViZGZmZTUxM2ZmOTA4NjkyNmU1MDkuLmJjNjRlN2Y5OTZhNTBiNzRiOTJk
MTQwZDAyYWUwMDU0YjBlZWRkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmgKQEAgLTg3LDkgKzg3LDkgQEAgcHVi
bGljOgogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2lzRW1wdHk7IH0K
ICAgICAgICAgdm9pZCBzZXRJc05vbkVtcHR5KCkgeyBtX2lzRW1wdHkgPSBmYWxzZTsgfQogCi0g
ICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGxh
eW91dEJveCgpLnN0eWxlKCkuZm9udE1ldHJpY3MoKTsgfQogICAgICAgICBWZXJ0aWNhbEFsaWdu
IHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVybiBsYXlvdXRCb3goKS5zdHlsZSgpLnZlcnRp
Y2FsQWxpZ24oKTsgfQogICAgICAgICBjb25zdCBCb3gmIGxheW91dEJveCgpIGNvbnN0IHsgcmV0
dXJuICptX2xheW91dEJveDsgfQorICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUoKSBj
b25zdCB7IHJldHVybiBtX2xheW91dEJveC0+c3R5bGUoKTsgfQogCiAgICAgICAgIGJvb2wgaXNJ
bmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IG1f
dHlwZSA9PSBUeXBlOjpSb290SW5saW5lQm94OyB9CiAgICAgICAgIGJvb2wgaXNSb290SW5saW5l
Qm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCA2ZDllMjFiZjhkYTA1MjQ4NjZkMjc3MzU1
ZWY3NDZjMDllZWYyMzY1Li45ZjVmNjRmMDkyODNkN2ZkZGRjYTFiMDZlZmQwMGFhOGNhOGMxNmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2RlZmluZSBBTExPV19JTUFH
RVMgMAorI2RlZmluZSBBTExPV19JTUFHRVMgMQogI2RlZmluZSBBTExPV19BTExfUkVQTEFDRUQg
MAogI2RlZmluZSBBTExPV19JTkxJTkVfQkxPQ0sgMAogCkBAIC0yNzIsOCArMjcyLDYgQEAgc3Rh
dGljIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckNoaWxkKGNvbnN0IFJlbmRl
ck9iamVjdCYgY2hpbGQsIEluY2wKICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9J
Rl9ORUVERUQoRmxvd0hhc05vblN1cHBvcnRlZENoaWxkLCByZWFzb25zLCBpbmNsdWRlUmVhc29u
cyk7CiAKICAgICAgICAgYXV0byYgc3R5bGUgPSByZXBsYWNlZC5zdHlsZSgpOwotICAgICAgICBp
ZiAoc3R5bGUudmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lKQotICAg
ICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzTm9uU3VwcG9y
dGVkQ2hpbGQsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICAgICAgaWYgKHN0eWxlLndp
ZHRoKCkuaXNQZXJjZW50KCkgfHwgc3R5bGUuaGVpZ2h0KCkuaXNQZXJjZW50KCkpCiAgICAgICAg
ICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNOb25TdXBwb3J0ZWRD
aGlsZCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgICAgICBpZiAoc3R5bGUub2JqZWN0
Rml0KCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RGaXQoKSkKQEAgLTMwMyw4ICszMDEs
NiBAQCBzdGF0aWMgT3B0aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gY2FuVXNlRm9yQ2hpbGQoY29u
c3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwgSW5jbAogICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRf
UkVUVVJOX0lGX05FRURFRChGbG93SGFzTm9uU3VwcG9ydGVkQ2hpbGQsIHJlYXNvbnMsIGluY2x1
ZGVSZWFzb25zKTsKIAogICAgICAgICBhdXRvJiBzdHlsZSA9IGJsb2NrLnN0eWxlKCk7Ci0gICAg
ICAgIGlmIChzdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUp
Ci0gICAgICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNOb25T
dXBwb3J0ZWRDaGlsZCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgICAgICBpZiAoc3R5
bGUud2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBzdHlsZS5oZWlnaHQoKS5pc1BlcmNlbnQoKSkKICAg
ICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc05vblN1cHBv
cnRlZENoaWxkLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412774</attachid>
            <date>2020-10-30 10:37:38 -0700</date>
            <delta_ts>2020-10-30 13:45:55 -0700</delta_ts>
            <desc>Patch no-alignment</desc>
            <filename>Patch-no-alignment.txt</filename>
            <type>text/plain</type>
            <size>27385</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMWJjMzk1NTkxODUuLmU4NDk2NjFlY2Y1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDIwLTEwLTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIHRoZSByb290IGlubGluZSBib3ggdG8gdGhlIGNv
cnJlY3QgdmVydGljYWwgcG9zaXRpb24gd2hlbiBsaW5lLWhlaWdodCBpcyBwcmVzZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzMTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFV1MuIE5vIGFsaWdu
bWVudC4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNW
ZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvcklubGluZUxldmVsQm94IGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94OjpzdHlsZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94Ojpm
b250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OmNhblVzZUZvckNoaWxkKToKKwogMjAyMC0xMC0yOSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBJbXBsZW1l
bnQgb3V0cHV0TGluZVRyZWVBbmRNYXJrIGZvciBJRkMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggMGJmOTFkZjAwYWM0Li43MDdjNzU4Mjdk
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
CkBAIC0xNjksMTAgKzE2OSwxNCBAQCBMaW5lQm94IExpbmVCb3hCdWlsZGVyOjpidWlsZChjb25z
dCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQogdm9pZCBMaW5lQm94QnVp
bGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94OjpJbmxpbmVMZXZl
bEJveCYgaW5saW5lTGV2ZWxCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlubGluZUxldmVsQm94
LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNMaW5lQnJlYWtCb3goKSk7Ci0gICAg
YXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVMZXZlbEJveC5mb250TWV0cmljcygpOworICAgIGF1
dG8mIGZvbnRNZXRyaWNzID0gaW5saW5lTGV2ZWxCb3guc3R5bGUoKS5mb250TWV0cmljcygpOwog
ICAgIElubGluZUxheW91dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7CiAgICAg
SW5saW5lTGF5b3V0VW5pdCBkZXNjZW50ID0gZm9udE1ldHJpY3MuZGVzY2VudCgpOwogICAgIGF1
dG8gbG9naWNhbEhlaWdodCA9IGFzY2VudCArIGRlc2NlbnQ7CisgICAgLy8gV2UgbmVlZCBmbG9v
ci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCisgICAg
aW5saW5lTGV2ZWxCb3guc2V0QmFzZWxpbmUoZmxvb3JmKGFzY2VudCkpOworICAgIGlubGluZUxl
dmVsQm94LnNldERlc2NlbnQoY2VpbChkZXNjZW50KSk7CisgICAgaW5saW5lTGV2ZWxCb3guc2V0
TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKIAogICAgIC8vIEZJWE1FOiBBZGp1c3QgbGF5
b3V0IGJvdW5kcyB3aXRoIGZhbGxiYWNrIGZvbnQgd2hlbiBhcHBsaWNhYmxlLgogICAgIGF1dG8m
IHN0eWxlID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuc3R5bGUoKTsKQEAgLTE5MiwxNCAr
MTk2LDggQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGlu
ZUJveChMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW4KICAgICAgICAgYXNjZW50ICs9IGhhbGZM
ZWFkaW5nOwogICAgICAgICBkZXNjZW50ICs9IGhhbGZMZWFkaW5nOwogICAgIH0KLSAgICAvLyBX
ZSBuZWVkIHRoaXMgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBwb3NpdGlvbmluZy4K
LSAgICBhc2NlbnQgPSBmbG9vcmYoYXNjZW50KTsKLSAgICBkZXNjZW50ID0gY2VpbChkZXNjZW50
KTsKLQotICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyhMaW5lQm94OjpJbmxpbmVM
ZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgYXNjZW50LCBkZXNjZW50IH0pOwotICAgIGlubGluZUxl
dmVsQm94LnNldEJhc2VsaW5lKGFzY2VudCk7Ci0gICAgaW5saW5lTGV2ZWxCb3guc2V0RGVzY2Vu
dChkZXNjZW50KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxI
ZWlnaHQpOworICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0byBtYXRjaCBsZWdhY3kgbGF5b3V0
IGludGVncmFsIHBvc2l0aW9uaW5nLgorICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5k
cyhMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgZmxvb3JmKGFzY2VudCks
IGNlaWwoZGVzY2VudCkgfSk7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdElu
bGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGluZTo6UnVuTGlzdCYgcnVu
cykKQEAgLTMwMSwyMiArMjk5LDI3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFsaWduSW5saW5l
TGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChMaW5lCiAgICAgLy8g
VGhpcyBmdW5jdGlvbiAocGFydGlhbGx5KSBpbXBsZW1lbnRzOgogICAgIC8vIDIuMi4gTGF5b3V0
IFdpdGhpbiBMaW5lIEJveGVzCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1pbmxp
bmUtMy8jbGluZS1sYXlvdXQKKyAgICAvLyAxLiBDb21wdXRlIHRoZSBsaW5lIGJveCBoZWlnaHQg
dXNpbmcgdGhlIGxheW91dCBib3VuZHMgZ2VvbWV0cnkuIFRoaXMgaGVpZ2h0IGNvbXB1dGF0aW9u
IHN0cmljdGx5IHVzZXMgbGF5b3V0IGJvdW5kcyBhbmQgbm90IG5vcm1hbCBpbmxpbmUgbGV2ZWwg
Ym94IGdlb21ldHJpZXMuCisgICAgLy8gMi4gQ29tcHV0ZSB0aGUgYmFzZWxpbmUvbG9naWNhbCB0
b3AgcG9zaXRpb24gb2YgdGhlIHJvb3QgaW5saW5lIGJveC4gQWxpZ25lZCBib3hlcyBwdXNoIHRo
ZSByb290IGlubGluZSBib3ggYXJvdW5kIGluc2lkZSB0aGUgbGluZSBib3guCisgICAgLy8gMy4g
RmluYWxseSBhbGlnbiB0aGUgaW5saW5lIGxldmVsIGJveGVzIHVzaW5nIChtb3N0bHkpIG5vcm1h
bCBpbmxpbmUgbGV2ZWwgYm94IGdlb21ldHJpZXMuIAogICAgIGF1dG8gcXVpcmtzID0gZm9ybWF0
dGluZ0NvbnRleHQoKS5xdWlya3MoKTsKLSAgICBWZWN0b3I8TGluZUJveDo6SW5saW5lTGV2ZWxC
b3gqPiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzOwotICAgIHN0cnVjdCBBYnNvbHV0
ZUdlb21ldHJ5IHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AgeyAwIH07Ci0gICAgICAg
IElubGluZUxheW91dFVuaXQgYm90dG9tIHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IGJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSB7IDAgfTsKLSAgICAgICAg
Y29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gqIGlubGluZUxldmVsQm94IHsgbnVsbHB0ciB9
OwotICAgIH07Ci0gICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCosIEFic29sdXRl
R2VvbWV0cnk+IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1hcDsKICAgICBhdXRvJiBy
b290SW5saW5lQm94ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7Ci0gICAgaW5saW5lTGV2ZWxC
b3hBYnNvbHV0ZUdlb21ldHJ5TWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVHZW9tZXRy
eSB7IHsgfSwgcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSwgeyB9LCAmcm9v
dElubGluZUJveCB9KTsKLSAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJv
eEJhc2VsaW5lID0gcm9vdElubGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkg
OiByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKIAotICAgIGF1dG8gYWxpZ25J
bmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAgICAgICAvLyBGSVhN
RTogQWRkIHByb3BlciBzdXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBpbmxpbmUgYm94IHdpdGgg
bGluZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50IGhhcyBhIGNoaWxkIGlubGluZSBib3gKLSAgICAg
ICAgLy8gd2l0aCBub24tbGluZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50LgorICAgIGF1dG8gY29t
cHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKKyAgICAgICAgVmVjdG9yPExpbmVCb3g6
OklubGluZUxldmVsQm94Kj4gbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlczsKKyAgICAg
ICAgLy8gTGluZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBsYXlvdXQg
Ym91bmRzIG9mIHRoZSBpbmxpbmUgYm94ZXMgYW5kIG5vdCB0aGVpciBsb2dpY2FsIChhc2NlbnQv
ZGVzY2VudCkgZGltZW5zaW9ucy4KKyAgICAgICAgc3RydWN0IEFic29sdXRlVG9wQW5kQm90dG9t
IHsKKyAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgdG9wIHsgMCB9OworICAgICAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBib3R0b20geyAwIH07CisgICAgICAgIH07CisgICAgICAgIEhhc2hN
YXA8TGluZUJveDo6SW5saW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbT4gaW5saW5l
TGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcDsKKworICAgICAgICBhdXRvIHJvb3RBYnNv
bHV0ZVRvcEFuZEJvdHRvbSA9IEFic29sdXRlVG9wQW5kQm90dG9tIHsgeyB9LCByb290SW5saW5l
Qm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIH07CisgICAgICAgIGlubGluZUxldmVsQm94QWJz
b2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKCZyb290SW5saW5lQm94LCByb290QWJzb2x1dGVUb3BB
bmRCb3R0b20pOworCisgICAgICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3AgPSByb290QWJzb2x1
dGVUb3BBbmRCb3R0b20udG9wOworICAgICAgICBhdXRvIG1heGltdW1Mb2dpY2FsQm90dG9tID0g
cm9vdEFic29sdXRlVG9wQW5kQm90dG9tLmJvdHRvbTsKKwogICAgICAgICBmb3IgKGF1dG8mIGlu
bGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm94KCk7CiAg
ICAgICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVu
dCgpKSB7CkBAIC0zMjQsMTI0ICszMjcsMTkwIEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFsaWdu
SW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChMaW5lCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdXRv
JiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveC5wYXJlbnQoKSk7CisgICAgICAgICAgICAvLyBMb2dpY2FsIHRvcCBpcyByZWxhdGl2
ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3gncyBsYXlvdXQgYm91bmRzLgorICAgICAgICAgICAg
Ly8gTm90ZSB0aGF0IHRoaXMgbG9naWNhbCB0b3AgaXMgbm90IHRoZSBmaW5hbCBsb2dpY2FsIHRv
cCBvZiB0aGUgaW5saW5lIGxldmVsIGJveC4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxv
Z2ljYWwgdG9wIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5IHdo
aWNoIG1heSBiZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIHRoZSBpbmxpbmUgYm94J3Mgbm9ybWFsIGdl
b21ldHJ5LgogICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7
IH07Ci0gICAgICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
SW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94
LT52ZXJ0aWNhbEFsaWduKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFz
ZWxpbmU6Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNl
bGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKLSAgICAgICAg
ICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsgfTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRvcDog
ewotICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBUZXh0VG9wIGFsaWducyB3aXRoIHRoZSBp
bmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIHRvcCAoYXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQg
Ym91bmRzIHRvcC4KLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudEFzY2VudCA9IHBhcmVudElu
bGluZUJveC5mb250TWV0cmljcygpLmFzY2VudCgpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFy
ZW50SW5saW5lQm94TG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5h
c2NlbnQgLSBwYXJlbnRBc2NlbnQ7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVu
dElubGluZUJveExvZ2ljYWxUb3A7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgPSBwYXJlbnRBc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91
bmRzKCkuYXNjZW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOiB7Ci0gICAgICAgICAgICAg
ICAgLy8gTm90ZSB0aGF0IFRleHRCb3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBm
b250IG1ldHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJv
dHRvbS4KLSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGb250TWV0cmljcyA9IHBhcmVudElu
bGluZUJveC5mb250TWV0cmljcygpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5l
Qm94TGF5b3V0Qm91bmRzID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpOwotICAgICAg
ICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElubGlu
ZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5k
ZXNjZW50ICsgcGFyZW50Rm9udE1ldHJpY3MuZGVzY2VudCgpOwotICAgICAgICAgICAgICAgIGF1
dG8gbGF5b3V0Qm91bmRzID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpOwotICAgICAg
ICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gbGF5
b3V0Qm91bmRzLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBh
cmVudEJhc2VsaW5lID0gbGF5b3V0Qm91bmRzLmRlc2NlbnQgLSBwYXJlbnRGb250TWV0cmljcy5k
ZXNjZW50KCk7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOiB7Cisg
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
aW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBs
b2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogewot
ICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxp
bmVCb3guZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2
ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91
bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnN0eWxlKCkuZm9udE1ldHJpY3Mo
KS54SGVpZ2h0KCkgLyAyOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxp
bmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRC
YXNlbGluZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKICAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxU
b3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFy
ZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFz
ZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxC
b3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0g
cGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Okxlbmd0aDogewotICAgICAgICAgICAg
ICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CisgICAgICAgICAgICAgICAgYXV0
byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKICAgICAgICAgICAgICAgICBhdXRv
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkp
ICsgaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwotICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BP
ZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0g
aW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBs
b2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6IHsK
KyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC10b3AgYWxpZ25zIHdpdGggdGhlIGlu
bGluZSBib3gncyBmb250IG1ldHJpY3MgdG9wIChhc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBi
b3VuZHMgdG9wLgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gu
bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OlRleHRCb3R0b206IHsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4
dC1ib3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgYm90dG9t
IChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4KKyAgICAgICAgICAg
ICAgICBhdXRvIHBhcmVudElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVudElubGluZUJveC5s
YXlvdXRCb3VuZHMoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2lj
YWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJ
bmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJveC5kZXNjZW50KCku
dmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJv
dW5kcygpLmhlaWdodCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVO
VEVEX1lFVCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW5saW5lTGV2ZWxCb3gtPnNldExvZ2ljYWxUb3AobG9naWNhbFRvcCk7Ci0gICAgICAg
ICAgICBhdXRvIHBhcmVudElubGluZUJveEFic29sdXRlR2VvbWV0cnkgPSBpbmxpbmVMZXZlbEJv
eEFic29sdXRlR2VvbWV0cnlNYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gpOwotICAgICAgICAgICAg
YXV0byBhYnNvbHV0ZUxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5
LnRvcCArIGxvZ2ljYWxUb3A7CisgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveEFic29s
dXRlVG9wQW5kQm90dG9tID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcC5n
ZXQoJnBhcmVudElubGluZUJveCk7CisgICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNhbFRv
cCA9IHBhcmVudElubGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tLnRvcCArIGxvZ2ljYWxUb3A7
CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNhbEJvdHRvbSA9IGFic29sdXRlTG9naWNh
bFRvcCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKLSAgICAgICAg
ICAgIGF1dG8gYWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUg
PSBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5LmJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJ
bmxpbmVCb3hCYXNlbGluZSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwotICAg
ICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFwLmFkZChpbmxpbmVMZXZl
bEJveC5nZXQoKSwgQWJzb2x1dGVHZW9tZXRyeSB7IGFic29sdXRlTG9naWNhbFRvcCwgYWJzb2x1
dGVMb2dpY2FsQm90dG9tLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hC
YXNlbGluZSwgaW5saW5lTGV2ZWxCb3guZ2V0KCkgfSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWZm
ZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gcXVpcmtzLnNob3VsZElubGluZUxl
dmVsQm94U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmlubGluZUxldmVsQm94KTsKLSAgICAgICAg
ICAgIGlmIChhZmZlY3RzUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24pCi0gICAgICAgICAg
ICAgICAgbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBzdGQ6Om1h
eChtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSwgYWJzb2x1dGVCYXNl
bGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgKyBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50KTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgYWxpZ25JbmxpbmVC
b3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMoKTsKLQotICAgIGF1dG8gbGluZUJveExvZ2ljYWxI
ZWlnaHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICBhdXRvIGlubGluZUJveFJlbGF0aXZl
TG9naWNhbEhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gY29tcHV0ZUxp
bmVCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBsYXlvdXQgYm91bmRzIGJhc2VkIGxpbmUgYm94IGhlaWdodC4KLSAgICAgICAgYXV0byBt
aW5pbXVtTG9naWNhbFRvcCA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICAg
ICAgYXV0byBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IHsgfTsKLSAgICAgICAgZm9yIChhdXRvIGFic29sdXRlR2VvbWV0cnkgOiBpbmxpbmVMZXZlbEJv
eEFic29sdXRlR2VvbWV0cnlNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGlubGlu
ZUxldmVsQm94ID0gKmFic29sdXRlR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3g7Ci0gICAgICAgICAg
ICBpZiAoIXF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gs
IGlubGluZUxldmVsQm94KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IG1pbmltdW1Mb2dpY2FsVG9wID0gc3RkOjptaW4obWluaW11bUxvZ2ljYWxUb3AudmFsdWVPcihh
YnNvbHV0ZUdlb21ldHJ5LnRvcCksIGFic29sdXRlR2VvbWV0cnkudG9wKTsKLSAgICAgICAgICAg
IG1heGltdW1Mb2dpY2FsQm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20udmFs
dWVPcihhYnNvbHV0ZUdlb21ldHJ5LmJvdHRvbSksIGFic29sdXRlR2VvbWV0cnkuYm90dG9tKTsK
KyAgICAgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKGlu
bGluZUxldmVsQm94LmdldCgpLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFic29sdXRlTG9naWNh
bFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tIH0pOworICAgICAgICAgICAgLy8gU3RyZXRjaCB0
aGUgbWluL21heCBhYnNvbHV0ZSB2YWx1ZXMgaWYgYXBwbGljYWJsZS4KKyAgICAgICAgICAgIGlm
IChxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJveChsaW5lQm94LCAqaW5s
aW5lTGV2ZWxCb3gpKSB7CisgICAgICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBzdGQ6
Om1pbihtaW5pbXVtTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsVG9wKTsKKyAgICAgICAgICAg
ICAgICBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KG1heGltdW1Mb2dpY2FsQm90dG9t
LCBhYnNvbHV0ZUxvZ2ljYWxCb3R0b20pOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9t
LnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKSAtIG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlT3Io
SW5saW5lTGF5b3V0VW5pdCgpKTsKLSAgICAgICAgbGluZUJveExvZ2ljYWxIZWlnaHQgPSBpbmxp
bmVCb3hSZWxhdGl2ZUxvZ2ljYWxIZWlnaHQ7Ci0gICAgICAgIC8vIE5vdyBzdHJldGNoIHRoZSBs
aW5lIGJveCB3aXRoIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBpbmxpbmUgbGV2ZWwgYm94ZXMuCisg
ICAgICAgIC8vIFRoZSBsaW5lIGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMgYXMgZm9sbG93czoK
KyAgICAgICAgLy8gMS4gU3RyZXRjaCB0aGUgbGluZSBib3ggd2l0aCB0aGUgbm9uLWxpbmUtYm94
IHJlbGF0aXZlIGFsaWduZWQgaW5saW5lIGJveCBhYnNvbHV0ZSB0b3AgYW5kIGJvdHRvbSB2YWx1
ZXMuCisgICAgICAgIC8vIDIuIENoZWNrIGlmIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBhbGlnbmVk
IGlubGluZSBib3hlcyAodG9wLCBib3R0b20gZXRjKSBoYXZlIGVub3VnaCByb29tIGFuZCBzdHJl
dGNoIHRoZSBsaW5lIGJveCBmdXJ0aGVyIGlmIG5lZWRlZC4KKyAgICAgICAgYXV0byBsaW5lQm94
TG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tIC0gbWluaW11bUxvZ2ljYWxUb3A7
CiAgICAgICAgIGZvciAoYXV0byogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3ggOiBsaW5l
Qm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKSB7CiAgICAgICAgICAgICBpZiAoIXF1aXJrcy5z
aG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICpsaW5lQm94UmVsYXRp
dmVJbmxpbmVMZXZlbEJveCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBsaW5lQm94TG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGxpbmVCb3hMb2dpY2FsSGVpZ2h0LCBs
aW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkpOwog
ICAgICAgICB9CisgICAgICAgIGxpbmVCb3guc2V0TG9naWNhbEhlaWdodChsaW5lQm94TG9naWNh
bEhlaWdodCk7CiAgICAgfTsKICAgICBjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoKTsKIAot
ICAgIGF1dG8gYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0gewotICAg
ICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGNhc2VzIHdoZW4gdGhlIHN0cmV0Y2hpbmcg
aW5saW5lIGJveGVzIGFyZSBub3QgYmFzZWxpbmUgYWxpZ25lZC4KLSAgICAgICAgYXV0byByb290
SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJh
c2VsaW5lIC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgYXV0byBj
b21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0geworICAgICAgICBIYXNo
TWFwPExpbmVCb3g6OklubGluZUxldmVsQm94KiwgSW5saW5lTGF5b3V0VW5pdD4gaW5saW5lTGV2
ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwOworICAgICAgICBpbmxpbmVMZXZlbEJveEFi
c29sdXRlQmFzZWxpbmVPZmZzZXRNYXAuYWRkKCZyb290SW5saW5lQm94LCBJbmxpbmVMYXlvdXRV
bml0IHsgfSk7CisKKyAgICAgICAgYXV0byBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVC
b3hCYXNlbGluZSA9IHJvb3RJbmxpbmVCb3guaXNFbXB0eSgpID8gSW5saW5lTGF5b3V0VW5pdCgp
IDogcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisKKyAgICAgICAgZm9yIChh
dXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkg
eworICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gSW5saW5lTGF5b3V0
VW5pdCB7IH07CisgICAgICAgICAgICBpZiAoIWlubGluZUxldmVsQm94LT5oYXNMaW5lQm94UmVs
YXRpdmVBbGlnbm1lbnQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlu
bGluZUxldmVsQm94LT5sYXlvdXRCb3goKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRJ
bmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5w
YXJlbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRC
YXNlbGluZSA9IElubGluZUxheW91dFVuaXQgeyB9OworCisgICAgICAgICAgICAgICAgc3dpdGNo
IChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZToKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVP
ZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
YXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGlu
ZSA9IChpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50
SW5saW5lQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9w
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxl
dmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDI7CisgICAgICAgICAgICAgICAgICAg
IGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21Q
YXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpMZW5ndGg6IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgc3R5bGUg
PSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byB2ZXJ0
aWNhbEFsaWduT2Zmc2V0ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS52ZXJ0aWNhbEFsaWdu
TGVuZ3RoKCksIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gdmVydGljYWxBbGln
bk9mZnNldCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2Fs
VG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6CisgICAgICAgICAgICAgICAgICAg
IGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFyZW50SW5saW5lQm94LmJhc2Vs
aW5lKCkgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgor
ICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlu
bGluZUxldmVsQm94LT5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkpIC0gKnBh
cmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1Q
TEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gaW5saW5lTGV2
ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmdldCgmcGFyZW50SW5saW5lQm94KSArIGJh
c2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDogeworICAgICAgICAgICAg
ICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gcm9vdElubGluZUJveC5sYXlvdXRCb3Vu
ZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKKyAgICAgICAgICAgICAgICAgICAgYWJz
b2x1dGVCYXNlbGluZU9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNj
ZW50IC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50OworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmFk
ZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgYWJzb2x1dGVCYXNlbGluZU9mZnNldCk7CisgICAgICAg
ICAgICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiA9IHF1aXJrcy5z
aG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICppbmxpbmVMZXZlbEJv
eCk7CisgICAgICAgICAgICBpZiAoYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2Vs
aW5lID0gc3RkOjptYXgobWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUs
IGFic29sdXRlQmFzZWxpbmVPZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgYXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1U
b3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5iYXNlbGlu
ZSgpOwogICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveExv
Z2ljYWxUb3ApOwogICAgIH07Ci0gICAgYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRp
b24oKTsKKyAgICBjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsKIAotICAg
IGF1dG8gYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0gWyZdIHsKLSAgICAg
ICAgZm9yIChhdXRvKiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVs
Qm94ZXMpIHsKKyAgICBhdXRvIGFsaWduSW5saW5lTGV2ZWxCb3hlcyA9IFsmXSB7CisgICAgICAg
IGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJv
eGVzKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3goKTsKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbm1lbnQgPSBsYXlvdXRC
b3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxp
bmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJl
bnQoKSk7CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsg
fTsKLSAgICAgICAgICAgIGF1dG8gcm9vdElubGluZUJveE9mZnNldCA9IElubGluZUxheW91dFVu
aXQgeyB9OwotICAgICAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkgeworICAgICAg
ICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAg
ICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAgICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LT5iYXNl
bGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZXJ0aWNh
bEFsaWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDIg
KyBwYXJlbnRJbmxpbmVCb3guc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOwor
ICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAt
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2Vs
aW5lTWlkZGxlOiB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBh
cmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDI7CisgICAg
ICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9n
aWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7
CisgICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsK
KyAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBmbG9hdFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVp
Z2h0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRC
YXNlbGluZSA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+bG9naWNhbEhl
aWdodCgpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFz
ZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgKHRl
eHQpdG9wL2JvdHRvbSBhbGlnbiB0aGVpciBsYXlvdXQgYm91bmRzLgorICAgICAgICAgICAgY2Fz
ZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBp
bmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJh
c2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OlRleHRCb3R0b206CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVu
dElubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRz
KCkuZGVzY2VudCAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgICAg
ICAgICAgbG9naWNhbFRvcCA9IHsgfTsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhp
cyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94Lgor
ICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRz
KCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKLSAgICAgICAg
ICAgICAgICBsb2dpY2FsVG9wID0gbGluZUJveExvZ2ljYWxIZWlnaHQgLSBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgcm9vdElubGluZUJv
eE9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAtIGlubGlu
ZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodDsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
dGhpcyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94
LgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBsaW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAt
IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5saW5lTGV2ZWxCb3gt
PmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmxpbmVMZXZlbEJv
eC0+c2V0TG9naWNhbFRvcChsb2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGlmIChyb290SW5saW5l
Qm94T2Zmc2V0ID4gMCkKLSAgICAgICAgICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxU
b3Aocm9vdElubGluZUJveC5sb2dpY2FsVG9wKCkgKyByb290SW5saW5lQm94T2Zmc2V0KTsKICAg
ICAgICAgfQogICAgIH07Ci0gICAgYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVz
KCk7Ci0gICAgbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsK
KyAgICBhbGlnbklubGluZUxldmVsQm94ZXMoKTsKIH0KIAogTGluZUJveCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmxpbmVCb3hGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVp
bGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBkMjJh
ZGI2NjZlZjIuLmVkZGNkNDBkN2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4oY29uc3QgTGluZTo6
UnVuJiBydW4pIGNvbnN0CiAgICAgQVNTRVJUKHJ1bi5pc1RleHQoKSB8fCBydW4uaXNMaW5lQnJl
YWsoKSk7CiAgICAgYXV0byogcGFyZW50SW5saW5lQm94ID0gJmlubGluZUxldmVsQm94Rm9yTGF5
b3V0Qm94KHJ1bi5sYXlvdXRCb3goKS5wYXJlbnQoKSk7CiAgICAgQVNTRVJUKHBhcmVudElubGlu
ZUJveC0+aXNJbmxpbmVCb3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBwYXJlbnRJbmxp
bmVCb3gtPmZvbnRNZXRyaWNzKCk7CisgICAgYXV0byYgZm9udE1ldHJpY3MgPSBwYXJlbnRJbmxp
bmVCb3gtPnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKICAgICBhdXRvIHJ1bmxvZ2ljYWxUb3AgPSBw
YXJlbnRJbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSArIHBhcmVudElubGluZUJveC0+YmFzZWxpbmUo
KSAtIGZvbnRNZXRyaWNzLmFzY2VudCgpOwogCiAgICAgd2hpbGUgKHBhcmVudElubGluZUJveCAh
PSBtX3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYgIXBhcmVudElubGluZUJveC0+aGFzTGluZUJveFJl
bGF0aXZlQWxpZ25tZW50KCkpIHsKQEAgLTEwMywxMSArMTAzLDEyIEBAIElubGluZVJlY3QgTGlu
ZUJveDo6bG9naWNhbFJlY3RGb3JJbmxpbmVMZXZlbEJveChjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKICAgICBhdXRvKiBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KTsKICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxSZWN0ID0gaW5saW5lQm94LT5s
b2dpY2FsUmVjdCgpOwogICAgIGF1dG8gaW5saW5lQm94QWJzb2x1dGVsb2dpY2FsVG9wID0gaW5s
aW5lQm94LT5sb2dpY2FsVG9wKCk7Ci0KLSAgICB3aGlsZSAoaW5saW5lQm94ICE9IG1fcm9vdElu
bGluZUJveC5nZXQoKSAmJiAhaW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQo
KSkgewotICAgICAgICBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3goaW5s
aW5lQm94LT5sYXlvdXRCb3goKS5wYXJlbnQoKSk7Ci0gICAgICAgIEFTU0VSVChpbmxpbmVCb3gt
PmlzSW5saW5lQm94KCkpOwotICAgICAgICBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AgKz0g
aW5saW5lQm94LT5sb2dpY2FsVG9wKCk7CisgICAgaWYgKCFpbmxpbmVCb3gtPmhhc0xpbmVCb3hS
ZWxhdGl2ZUFsaWdubWVudCgpKSB7CisgICAgICAgIHdoaWxlIChpbmxpbmVCb3ggIT0gbV9yb290
SW5saW5lQm94LmdldCgpICYmICFpbmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVu
dCgpKSB7CisgICAgICAgICAgICBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRC
b3goaW5saW5lQm94LT5sYXlvdXRCb3goKS5wYXJlbnQoKSk7CisgICAgICAgICAgICBBU1NFUlQo
aW5saW5lQm94LT5pc0lubGluZUJveCgpKTsKKyAgICAgICAgICAgIGlubGluZUJveEFic29sdXRl
bG9naWNhbFRvcCArPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKTsKKyAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4geyBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AsIGlubGluZUJveExvZ2lj
YWxSZWN0LmxlZnQoKSwgaW5saW5lQm94TG9naWNhbFJlY3Qud2lkdGgoKSwgaW5saW5lQm94TG9n
aWNhbFJlY3QuaGVpZ2h0KCkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAppbmRleCBlYWVmMjI4MDdiZWIuLmJj
NjRlN2Y5OTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCb3guaApAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbXB0eTsgfQogICAgICAgICB2
b2lkIHNldElzTm9uRW1wdHkoKSB7IG1faXNFbXB0eSA9IGZhbHNlOyB9CiAKLSAgICAgICAgY29u
c3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gbGF5b3V0Qm94KCku
c3R5bGUoKS5mb250TWV0cmljcygpOyB9CiAgICAgICAgIFZlcnRpY2FsQWxpZ24gdmVydGljYWxB
bGlnbigpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCkudmVydGljYWxBbGlnbigp
OyB9CiAgICAgICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5
b3V0Qm94OyB9CisgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5b3V0Qm94LT5zdHlsZSgpOyB9CiAKICAgICAgICAgYm9vbCBpc0lubGluZUJveCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpJbmxpbmVCb3ggfHwgbV90eXBlID09IFR5
cGU6OlJvb3RJbmxpbmVCb3g7IH0KICAgICAgICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uQ292ZXJhZ2UuY3BwCmluZGV4IDZkOWUyMWJmOGRhMC4uOTNmY2VkMDdlZWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25D
b3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAKICNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2RlZmluZSBBTExPV19JTUFHRVMgMAorI2Rl
ZmluZSBBTExPV19JTUFHRVMgMQogI2RlZmluZSBBTExPV19BTExfUkVQTEFDRUQgMAogI2RlZmlu
ZSBBTExPV19JTkxJTkVfQkxPQ0sgMAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412775</attachid>
            <date>2020-10-30 10:39:11 -0700</date>
            <delta_ts>2020-10-30 13:46:03 -0700</delta_ts>
            <desc>Patch no-images.</desc>
            <filename>Patch-no-images.txt</filename>
            <type>text/plain</type>
            <size>26888</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMWJjMzk1NTkxODUuLjMxNzk1OWExMTVhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDIwLTEwLTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIHRoZSByb290IGlubGluZSBib3ggdG8gdGhlIGNv
cnJlY3QgdmVydGljYWwgcG9zaXRpb24gd2hlbiBsaW5lLWhlaWdodCBpcyBwcmVzZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzMTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFV1MuIE5vIGltYWdl
cy4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVp
bGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0
aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvcklubGluZUxldmVsQm94IGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94OjpzdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94Ojpmb250
TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OmNhblVzZUZvckNoaWxkKToKKwogMjAyMC0xMC0yOSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBJbXBsZW1lbnQg
b3V0cHV0TGluZVRyZWVBbmRNYXJrIGZvciBJRkMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggMGJmOTFkZjAwYWM0Li43MDdjNzU4MjdkYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBA
IC0xNjksMTAgKzE2OSwxNCBAQCBMaW5lQm94IExpbmVCb3hCdWlsZGVyOjpidWlsZChjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQogdm9pZCBMaW5lQm94QnVpbGRl
cjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94OjpJbmxpbmVMZXZlbEJv
eCYgaW5saW5lTGV2ZWxCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlubGluZUxldmVsQm94Lmlz
SW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNMaW5lQnJlYWtCb3goKSk7Ci0gICAgYXV0
byYgZm9udE1ldHJpY3MgPSBpbmxpbmVMZXZlbEJveC5mb250TWV0cmljcygpOworICAgIGF1dG8m
IGZvbnRNZXRyaWNzID0gaW5saW5lTGV2ZWxCb3guc3R5bGUoKS5mb250TWV0cmljcygpOwogICAg
IElubGluZUxheW91dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7CiAgICAgSW5s
aW5lTGF5b3V0VW5pdCBkZXNjZW50ID0gZm9udE1ldHJpY3MuZGVzY2VudCgpOwogICAgIGF1dG8g
bG9naWNhbEhlaWdodCA9IGFzY2VudCArIGRlc2NlbnQ7CisgICAgLy8gV2UgbmVlZCBmbG9vci9j
ZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCisgICAgaW5s
aW5lTGV2ZWxCb3guc2V0QmFzZWxpbmUoZmxvb3JmKGFzY2VudCkpOworICAgIGlubGluZUxldmVs
Qm94LnNldERlc2NlbnQoY2VpbChkZXNjZW50KSk7CisgICAgaW5saW5lTGV2ZWxCb3guc2V0TG9n
aWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKIAogICAgIC8vIEZJWE1FOiBBZGp1c3QgbGF5b3V0
IGJvdW5kcyB3aXRoIGZhbGxiYWNrIGZvbnQgd2hlbiBhcHBsaWNhYmxlLgogICAgIGF1dG8mIHN0
eWxlID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuc3R5bGUoKTsKQEAgLTE5MiwxNCArMTk2
LDggQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJv
eChMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW4KICAgICAgICAgYXNjZW50ICs9IGhhbGZMZWFk
aW5nOwogICAgICAgICBkZXNjZW50ICs9IGhhbGZMZWFkaW5nOwogICAgIH0KLSAgICAvLyBXZSBu
ZWVkIHRoaXMgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBwb3NpdGlvbmluZy4KLSAg
ICBhc2NlbnQgPSBmbG9vcmYoYXNjZW50KTsKLSAgICBkZXNjZW50ID0gY2VpbChkZXNjZW50KTsK
LQotICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyhMaW5lQm94OjpJbmxpbmVMZXZl
bEJveDo6TGF5b3V0Qm91bmRzIHsgYXNjZW50LCBkZXNjZW50IH0pOwotICAgIGlubGluZUxldmVs
Qm94LnNldEJhc2VsaW5lKGFzY2VudCk7Ci0gICAgaW5saW5lTGV2ZWxCb3guc2V0RGVzY2VudChk
ZXNjZW50KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWln
aHQpOworICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0byBtYXRjaCBsZWdhY3kgbGF5b3V0IGlu
dGVncmFsIHBvc2l0aW9uaW5nLgorICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyhM
aW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgZmxvb3JmKGFzY2VudCksIGNl
aWwoZGVzY2VudCkgfSk7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdElubGlu
ZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGluZTo6UnVuTGlzdCYgcnVucykK
QEAgLTMwMSwyMiArMjk5LDI3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFsaWduSW5saW5lTGV2
ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChMaW5lCiAgICAgLy8gVGhp
cyBmdW5jdGlvbiAocGFydGlhbGx5KSBpbXBsZW1lbnRzOgogICAgIC8vIDIuMi4gTGF5b3V0IFdp
dGhpbiBMaW5lIEJveGVzCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1pbmxpbmUt
My8jbGluZS1sYXlvdXQKKyAgICAvLyAxLiBDb21wdXRlIHRoZSBsaW5lIGJveCBoZWlnaHQgdXNp
bmcgdGhlIGxheW91dCBib3VuZHMgZ2VvbWV0cnkuIFRoaXMgaGVpZ2h0IGNvbXB1dGF0aW9uIHN0
cmljdGx5IHVzZXMgbGF5b3V0IGJvdW5kcyBhbmQgbm90IG5vcm1hbCBpbmxpbmUgbGV2ZWwgYm94
IGdlb21ldHJpZXMuCisgICAgLy8gMi4gQ29tcHV0ZSB0aGUgYmFzZWxpbmUvbG9naWNhbCB0b3Ag
cG9zaXRpb24gb2YgdGhlIHJvb3QgaW5saW5lIGJveC4gQWxpZ25lZCBib3hlcyBwdXNoIHRoZSBy
b290IGlubGluZSBib3ggYXJvdW5kIGluc2lkZSB0aGUgbGluZSBib3guCisgICAgLy8gMy4gRmlu
YWxseSBhbGlnbiB0aGUgaW5saW5lIGxldmVsIGJveGVzIHVzaW5nIChtb3N0bHkpIG5vcm1hbCBp
bmxpbmUgbGV2ZWwgYm94IGdlb21ldHJpZXMuIAogICAgIGF1dG8gcXVpcmtzID0gZm9ybWF0dGlu
Z0NvbnRleHQoKS5xdWlya3MoKTsKLSAgICBWZWN0b3I8TGluZUJveDo6SW5saW5lTGV2ZWxCb3gq
PiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzOwotICAgIHN0cnVjdCBBYnNvbHV0ZUdl
b21ldHJ5IHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AgeyAwIH07Ci0gICAgICAgIElu
bGluZUxheW91dFVuaXQgYm90dG9tIHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJh
c2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSB7IDAgfTsKLSAgICAgICAgY29u
c3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gqIGlubGluZUxldmVsQm94IHsgbnVsbHB0ciB9Owot
ICAgIH07Ci0gICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCosIEFic29sdXRlR2Vv
bWV0cnk+IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1hcDsKICAgICBhdXRvJiByb290
SW5saW5lQm94ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7Ci0gICAgaW5saW5lTGV2ZWxCb3hB
YnNvbHV0ZUdlb21ldHJ5TWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVHZW9tZXRyeSB7
IHsgfSwgcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSwgeyB9LCAmcm9vdElu
bGluZUJveCB9KTsKLSAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJh
c2VsaW5lID0gcm9vdElubGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkgOiBy
b290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKIAotICAgIGF1dG8gYWxpZ25Jbmxp
bmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAgICAgICAvLyBGSVhNRTog
QWRkIHByb3BlciBzdXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBpbmxpbmUgYm94IHdpdGggbGlu
ZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50IGhhcyBhIGNoaWxkIGlubGluZSBib3gKLSAgICAgICAg
Ly8gd2l0aCBub24tbGluZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50LgorICAgIGF1dG8gY29tcHV0
ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKKyAgICAgICAgVmVjdG9yPExpbmVCb3g6Oklu
bGluZUxldmVsQm94Kj4gbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlczsKKyAgICAgICAg
Ly8gTGluZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBsYXlvdXQgYm91
bmRzIG9mIHRoZSBpbmxpbmUgYm94ZXMgYW5kIG5vdCB0aGVpciBsb2dpY2FsIChhc2NlbnQvZGVz
Y2VudCkgZGltZW5zaW9ucy4KKyAgICAgICAgc3RydWN0IEFic29sdXRlVG9wQW5kQm90dG9tIHsK
KyAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgdG9wIHsgMCB9OworICAgICAgICAgICAgSW5s
aW5lTGF5b3V0VW5pdCBib3R0b20geyAwIH07CisgICAgICAgIH07CisgICAgICAgIEhhc2hNYXA8
TGluZUJveDo6SW5saW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbT4gaW5saW5lTGV2
ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcDsKKworICAgICAgICBhdXRvIHJvb3RBYnNvbHV0
ZVRvcEFuZEJvdHRvbSA9IEFic29sdXRlVG9wQW5kQm90dG9tIHsgeyB9LCByb290SW5saW5lQm94
LmxheW91dEJvdW5kcygpLmhlaWdodCgpIH07CisgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1
dGVUb3BBbmRCb3R0b21NYXAuYWRkKCZyb290SW5saW5lQm94LCByb290QWJzb2x1dGVUb3BBbmRC
b3R0b20pOworCisgICAgICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3AgPSByb290QWJzb2x1dGVU
b3BBbmRCb3R0b20udG9wOworICAgICAgICBhdXRvIG1heGltdW1Mb2dpY2FsQm90dG9tID0gcm9v
dEFic29sdXRlVG9wQW5kQm90dG9tLmJvdHRvbTsKKwogICAgICAgICBmb3IgKGF1dG8mIGlubGlu
ZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7CiAgICAgICAg
ICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm94KCk7CiAgICAg
ICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgp
KSB7CkBAIC0zMjQsMTI0ICszMjcsMTkwIEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFsaWduSW5s
aW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChMaW5lCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdXRvJiBw
YXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91
dEJveC5wYXJlbnQoKSk7CisgICAgICAgICAgICAvLyBMb2dpY2FsIHRvcCBpcyByZWxhdGl2ZSB0
byB0aGUgcGFyZW50IGlubGluZSBib3gncyBsYXlvdXQgYm91bmRzLgorICAgICAgICAgICAgLy8g
Tm90ZSB0aGF0IHRoaXMgbG9naWNhbCB0b3AgaXMgbm90IHRoZSBmaW5hbCBsb2dpY2FsIHRvcCBv
ZiB0aGUgaW5saW5lIGxldmVsIGJveC4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxvZ2lj
YWwgdG9wIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5IHdoaWNo
IG1heSBiZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIHRoZSBpbmxpbmUgYm94J3Mgbm9ybWFsIGdlb21l
dHJ5LgogICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7IH07
Ci0gICAgICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gSW5s
aW5lTGF5b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52
ZXJ0aWNhbEFsaWduKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxp
bmU6Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGlu
ZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKLSAgICAgICAgICAg
ICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsgfTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRvcDogewot
ICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBUZXh0VG9wIGFsaWducyB3aXRoIHRoZSBpbmxp
bmUgYm94J3MgZm9udCBtZXRyaWNzIHRvcCAoYXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91
bmRzIHRvcC4KLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudEFzY2VudCA9IHBhcmVudElubGlu
ZUJveC5mb250TWV0cmljcygpLmFzY2VudCgpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50
SW5saW5lQm94TG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2Nl
bnQgLSBwYXJlbnRBc2NlbnQ7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveExvZ2ljYWxUb3A7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFy
ZW50QmFzZWxpbmUgPSBwYXJlbnRBc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRz
KCkuYXNjZW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOiB7Ci0gICAgICAgICAgICAgICAg
Ly8gTm90ZSB0aGF0IFRleHRCb3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250
IG1ldHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRv
bS4KLSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGb250TWV0cmljcyA9IHBhcmVudElubGlu
ZUJveC5mb250TWV0cmljcygpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94
TGF5b3V0Qm91bmRzID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpOwotICAgICAgICAg
ICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElubGluZUJv
eExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5kZXNj
ZW50ICsgcGFyZW50Rm9udE1ldHJpY3MuZGVzY2VudCgpOwotICAgICAgICAgICAgICAgIGF1dG8g
bGF5b3V0Qm91bmRzID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpOwotICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gbGF5b3V0
Qm91bmRzLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gbGF5b3V0Qm91bmRzLmRlc2NlbnQgLSBwYXJlbnRGb250TWV0cmljcy5kZXNj
ZW50KCk7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOiB7CisgICAg
ICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5s
aW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dp
Y2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogewotICAg
ICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlu
bGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVC
b3guZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxU
b3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFy
ZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFz
ZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxC
b3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRz
KCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkgLyAyOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVC
b3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNl
bGluZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKICAgICAgICAgICAgICAgICBh
dXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gt
PmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFy
ZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Okxlbmd0aDogewotICAgICAgICAgICAgICAg
IGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CisgICAgICAgICAgICAgICAgYXV0byYg
c3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKICAgICAgICAgICAgICAgICBhdXRvIGxv
Z2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0
eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpICsg
aW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwotICAgICAgICAgICAgICAg
IGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5s
aW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dp
Y2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6IHsKKyAg
ICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC10b3AgYWxpZ25zIHdpdGggdGhlIGlubGlu
ZSBib3gncyBmb250IG1ldHJpY3MgdG9wIChhc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBib3Vu
ZHMgdG9wLgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5
b3V0Qm91bmRzKCkuYXNjZW50IC0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OlRleHRCb3R0b206IHsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC1i
b3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgYm90dG9tIChk
ZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4KKyAgICAgICAgICAgICAg
ICBhdXRvIHBhcmVudElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVudElubGluZUJveC5sYXlv
dXRCb3VuZHMoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxC
b3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxp
bmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJveC5kZXNjZW50KCkudmFs
dWVPcihJbmxpbmVMYXlvdXRVbml0KCkpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBw
YXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5k
cygpLmhlaWdodCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVE
X1lFVCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaW5saW5lTGV2ZWxCb3gtPnNldExvZ2ljYWxUb3AobG9naWNhbFRvcCk7Ci0gICAgICAgICAg
ICBhdXRvIHBhcmVudElubGluZUJveEFic29sdXRlR2VvbWV0cnkgPSBpbmxpbmVMZXZlbEJveEFi
c29sdXRlR2VvbWV0cnlNYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gpOwotICAgICAgICAgICAgYXV0
byBhYnNvbHV0ZUxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5LnRv
cCArIGxvZ2ljYWxUb3A7CisgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveEFic29sdXRl
VG9wQW5kQm90dG9tID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcC5nZXQo
JnBhcmVudElubGluZUJveCk7CisgICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNhbFRvcCA9
IHBhcmVudElubGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tLnRvcCArIGxvZ2ljYWxUb3A7CiAg
ICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNhbEJvdHRvbSA9IGFic29sdXRlTG9naWNhbFRv
cCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKLSAgICAgICAgICAg
IGF1dG8gYWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBw
YXJlbnRJbmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5LmJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxp
bmVCb3hCYXNlbGluZSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwotICAgICAg
ICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFwLmFkZChpbmxpbmVMZXZlbEJv
eC5nZXQoKSwgQWJzb2x1dGVHZW9tZXRyeSB7IGFic29sdXRlTG9naWNhbFRvcCwgYWJzb2x1dGVM
b2dpY2FsQm90dG9tLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNl
bGluZSwgaW5saW5lTGV2ZWxCb3guZ2V0KCkgfSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWZmZWN0
c1Jvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gcXVpcmtzLnNob3VsZElubGluZUxldmVs
Qm94U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmlubGluZUxldmVsQm94KTsKLSAgICAgICAgICAg
IGlmIChhZmZlY3RzUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24pCi0gICAgICAgICAgICAg
ICAgbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBzdGQ6Om1heCht
YXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSwgYWJzb2x1dGVCYXNlbGlu
ZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgKyBpbmxpbmVMZXZlbEJveC0+bGF5b3V0
Qm91bmRzKCkuYXNjZW50KTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgYWxpZ25JbmxpbmVCb3hS
ZWxhdGl2ZUlubGluZUxldmVsQm94ZXMoKTsKLQotICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWln
aHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICBhdXRvIGlubGluZUJveFJlbGF0aXZlTG9n
aWNhbEhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gY29tcHV0ZUxpbmVC
b3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZv
ciBsYXlvdXQgYm91bmRzIGJhc2VkIGxpbmUgYm94IGhlaWdodC4KLSAgICAgICAgYXV0byBtaW5p
bXVtTG9naWNhbFRvcCA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICAgICAg
YXV0byBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsg
fTsKLSAgICAgICAgZm9yIChhdXRvIGFic29sdXRlR2VvbWV0cnkgOiBpbmxpbmVMZXZlbEJveEFi
c29sdXRlR2VvbWV0cnlNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGlubGluZUxl
dmVsQm94ID0gKmFic29sdXRlR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3g7Ci0gICAgICAgICAgICBp
ZiAoIXF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsIGlu
bGluZUxldmVsQm94KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1p
bmltdW1Mb2dpY2FsVG9wID0gc3RkOjptaW4obWluaW11bUxvZ2ljYWxUb3AudmFsdWVPcihhYnNv
bHV0ZUdlb21ldHJ5LnRvcCksIGFic29sdXRlR2VvbWV0cnkudG9wKTsKLSAgICAgICAgICAgIG1h
eGltdW1Mb2dpY2FsQm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVP
cihhYnNvbHV0ZUdlb21ldHJ5LmJvdHRvbSksIGFic29sdXRlR2VvbWV0cnkuYm90dG9tKTsKKyAg
ICAgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKGlubGlu
ZUxldmVsQm94LmdldCgpLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFic29sdXRlTG9naWNhbFRv
cCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tIH0pOworICAgICAgICAgICAgLy8gU3RyZXRjaCB0aGUg
bWluL21heCBhYnNvbHV0ZSB2YWx1ZXMgaWYgYXBwbGljYWJsZS4KKyAgICAgICAgICAgIGlmIChx
dWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJveChsaW5lQm94LCAqaW5saW5l
TGV2ZWxCb3gpKSB7CisgICAgICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBzdGQ6Om1p
bihtaW5pbXVtTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsVG9wKTsKKyAgICAgICAgICAgICAg
ICBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KG1heGltdW1Mb2dpY2FsQm90dG9tLCBh
YnNvbHV0ZUxvZ2ljYWxCb3R0b20pOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tLnZh
bHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKSAtIG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlT3IoSW5s
aW5lTGF5b3V0VW5pdCgpKTsKLSAgICAgICAgbGluZUJveExvZ2ljYWxIZWlnaHQgPSBpbmxpbmVC
b3hSZWxhdGl2ZUxvZ2ljYWxIZWlnaHQ7Ci0gICAgICAgIC8vIE5vdyBzdHJldGNoIHRoZSBsaW5l
IGJveCB3aXRoIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBpbmxpbmUgbGV2ZWwgYm94ZXMuCisgICAg
ICAgIC8vIFRoZSBsaW5lIGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMgYXMgZm9sbG93czoKKyAg
ICAgICAgLy8gMS4gU3RyZXRjaCB0aGUgbGluZSBib3ggd2l0aCB0aGUgbm9uLWxpbmUtYm94IHJl
bGF0aXZlIGFsaWduZWQgaW5saW5lIGJveCBhYnNvbHV0ZSB0b3AgYW5kIGJvdHRvbSB2YWx1ZXMu
CisgICAgICAgIC8vIDIuIENoZWNrIGlmIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBhbGlnbmVkIGlu
bGluZSBib3hlcyAodG9wLCBib3R0b20gZXRjKSBoYXZlIGVub3VnaCByb29tIGFuZCBzdHJldGNo
IHRoZSBsaW5lIGJveCBmdXJ0aGVyIGlmIG5lZWRlZC4KKyAgICAgICAgYXV0byBsaW5lQm94TG9n
aWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tIC0gbWluaW11bUxvZ2ljYWxUb3A7CiAg
ICAgICAgIGZvciAoYXV0byogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94
UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKSB7CiAgICAgICAgICAgICBpZiAoIXF1aXJrcy5zaG91
bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICpsaW5lQm94UmVsYXRpdmVJ
bmxpbmVMZXZlbEJveCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBs
aW5lQm94TG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGxpbmVCb3hMb2dpY2FsSGVpZ2h0LCBsaW5l
Qm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkpOwogICAg
ICAgICB9CisgICAgICAgIGxpbmVCb3guc2V0TG9naWNhbEhlaWdodChsaW5lQm94TG9naWNhbEhl
aWdodCk7CiAgICAgfTsKICAgICBjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoKTsKIAotICAg
IGF1dG8gYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0gewotICAgICAg
ICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGNhc2VzIHdoZW4gdGhlIHN0cmV0Y2hpbmcgaW5s
aW5lIGJveGVzIGFyZSBub3QgYmFzZWxpbmUgYWxpZ25lZC4KLSAgICAgICAgYXV0byByb290SW5s
aW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2Vs
aW5lIC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgYXV0byBjb21w
dXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0geworICAgICAgICBIYXNoTWFw
PExpbmVCb3g6OklubGluZUxldmVsQm94KiwgSW5saW5lTGF5b3V0VW5pdD4gaW5saW5lTGV2ZWxC
b3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwOworICAgICAgICBpbmxpbmVMZXZlbEJveEFic29s
dXRlQmFzZWxpbmVPZmZzZXRNYXAuYWRkKCZyb290SW5saW5lQm94LCBJbmxpbmVMYXlvdXRVbml0
IHsgfSk7CisKKyAgICAgICAgYXV0byBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hC
YXNlbGluZSA9IHJvb3RJbmxpbmVCb3guaXNFbXB0eSgpID8gSW5saW5lTGF5b3V0VW5pdCgpIDog
cm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisKKyAgICAgICAgZm9yIChhdXRv
JiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgewor
ICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gSW5saW5lTGF5b3V0VW5p
dCB7IH07CisgICAgICAgICAgICBpZiAoIWlubGluZUxldmVsQm94LT5oYXNMaW5lQm94UmVsYXRp
dmVBbGlnbm1lbnQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGlu
ZUxldmVsQm94LT5sYXlvdXRCb3goKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxp
bmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJl
bnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNl
bGluZSA9IElubGluZUxheW91dFVuaXQgeyB9OworCisgICAgICAgICAgICAgICAgc3dpdGNoIChp
bmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpCYXNlbGluZToKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNj
ZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IChpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5s
aW5lQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAg
ICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVs
Qm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDI7CisgICAgICAgICAgICAgICAgICAgIGJh
c2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0
aWNhbEFsaWduOjpMZW5ndGg6IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBp
bmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byB2ZXJ0aWNh
bEFsaWduT2Zmc2V0ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS52ZXJ0aWNhbEFsaWduTGVu
Z3RoKCksIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gdmVydGljYWxBbGlnbk9m
ZnNldCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9w
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6CisgICAgICAgICAgICAgICAgICAgIGJh
c2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5l
KCkgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgorICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGlu
ZUxldmVsQm94LT5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkpIC0gKnBhcmVu
dElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVN
RU5URURfWUVUKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gaW5saW5lTGV2ZWxC
b3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmdldCgmcGFyZW50SW5saW5lQm94KSArIGJhc2Vs
aW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDogeworICAgICAgICAgICAgICAg
ICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMo
KS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKKyAgICAgICAgICAgICAgICAgICAgYWJzb2x1
dGVCYXNlbGluZU9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50
IC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50OworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmFkZChp
bmxpbmVMZXZlbEJveC5nZXQoKSwgYWJzb2x1dGVCYXNlbGluZU9mZnNldCk7CisgICAgICAgICAg
ICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiA9IHF1aXJrcy5zaG91
bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICppbmxpbmVMZXZlbEJveCk7
CisgICAgICAgICAgICBpZiAoYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5l
ID0gc3RkOjptYXgobWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUsIGFi
c29sdXRlQmFzZWxpbmVPZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgYXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BP
ZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5iYXNlbGluZSgp
OwogICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveExvZ2lj
YWxUb3ApOwogICAgIH07Ci0gICAgYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24o
KTsKKyAgICBjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsKIAotICAgIGF1
dG8gYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0gWyZdIHsKLSAgICAgICAg
Zm9yIChhdXRvKiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94
ZXMpIHsKKyAgICBhdXRvIGFsaWduSW5saW5lTGV2ZWxCb3hlcyA9IFsmXSB7CisgICAgICAgIGZv
ciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVz
KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3goKTsKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbm1lbnQgPSBsYXlvdXRCb3gu
c3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVC
b3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQo
KSk7CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsK
LSAgICAgICAgICAgIGF1dG8gcm9vdElubGluZUJveE9mZnNldCA9IElubGluZUxheW91dFVuaXQg
eyB9OwotICAgICAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkgeworICAgICAgICAg
ICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAgICAgICAgICAgICAgIGxvZ2ljYWxU
b3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LT5iYXNlbGlu
ZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFs
aWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDIgKyBw
YXJlbnRJbmxpbmVCb3guc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAg
ICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxv
Z2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5l
TWlkZGxlOiB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDI7CisgICAgICAg
ICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNh
bFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7Cisg
ICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBmbG9hdFZhbHVlRm9yTGVu
Z3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0
KCkpOworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNl
bGluZSA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+bG9naWNhbEhlaWdo
dCgpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxp
bmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgKHRleHQp
dG9wL2JvdHRvbSBhbGlnbiB0aGVpciBsYXlvdXQgYm91bmRzLgorICAgICAgICAgICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpUZXh0VG9wOgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxp
bmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2Vs
aW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OlRleHRCb3R0b206CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
ZGVzY2VudCAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgICAgICAg
ICAgbG9naWNhbFRvcCA9IHsgfTsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBs
b2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94LgorICAg
ICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
YXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKLSAgICAgICAgICAg
ICAgICBsb2dpY2FsVG9wID0gbGluZUJveExvZ2ljYWxIZWlnaHQgLSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgcm9vdElubGluZUJveE9m
ZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAtIGlubGluZUJv
eFJlbGF0aXZlTG9naWNhbEhlaWdodDsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhp
cyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94Lgor
ICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBsaW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGlu
bGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJh
c2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmxpbmVMZXZlbEJveC0+
c2V0TG9naWNhbFRvcChsb2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGlmIChyb290SW5saW5lQm94
T2Zmc2V0ID4gMCkKLSAgICAgICAgICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Ao
cm9vdElubGluZUJveC5sb2dpY2FsVG9wKCkgKyByb290SW5saW5lQm94T2Zmc2V0KTsKICAgICAg
ICAgfQogICAgIH07Ci0gICAgYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKCk7
Ci0gICAgbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKKyAg
ICBhbGlnbklubGluZUxldmVsQm94ZXMoKTsKIH0KIAogTGluZUJveCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmxpbmVCb3hGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRl
cjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBkMjJhZGI2
NjZlZjIuLmVkZGNkNDBkN2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAg
SW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4oY29uc3QgTGluZTo6UnVu
JiBydW4pIGNvbnN0CiAgICAgQVNTRVJUKHJ1bi5pc1RleHQoKSB8fCBydW4uaXNMaW5lQnJlYWso
KSk7CiAgICAgYXV0byogcGFyZW50SW5saW5lQm94ID0gJmlubGluZUxldmVsQm94Rm9yTGF5b3V0
Qm94KHJ1bi5sYXlvdXRCb3goKS5wYXJlbnQoKSk7CiAgICAgQVNTRVJUKHBhcmVudElubGluZUJv
eC0+aXNJbmxpbmVCb3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBwYXJlbnRJbmxpbmVC
b3gtPmZvbnRNZXRyaWNzKCk7CisgICAgYXV0byYgZm9udE1ldHJpY3MgPSBwYXJlbnRJbmxpbmVC
b3gtPnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKICAgICBhdXRvIHJ1bmxvZ2ljYWxUb3AgPSBwYXJl
bnRJbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSArIHBhcmVudElubGluZUJveC0+YmFzZWxpbmUoKSAt
IGZvbnRNZXRyaWNzLmFzY2VudCgpOwogCiAgICAgd2hpbGUgKHBhcmVudElubGluZUJveCAhPSBt
X3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYgIXBhcmVudElubGluZUJveC0+aGFzTGluZUJveFJlbGF0
aXZlQWxpZ25tZW50KCkpIHsKQEAgLTEwMywxMSArMTAzLDEyIEBAIElubGluZVJlY3QgTGluZUJv
eDo6bG9naWNhbFJlY3RGb3JJbmxpbmVMZXZlbEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29u
c3QKICAgICBhdXRvKiBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5
b3V0Qm94KTsKICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxSZWN0ID0gaW5saW5lQm94LT5sb2dp
Y2FsUmVjdCgpOwogICAgIGF1dG8gaW5saW5lQm94QWJzb2x1dGVsb2dpY2FsVG9wID0gaW5saW5l
Qm94LT5sb2dpY2FsVG9wKCk7Ci0KLSAgICB3aGlsZSAoaW5saW5lQm94ICE9IG1fcm9vdElubGlu
ZUJveC5nZXQoKSAmJiAhaW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkg
ewotICAgICAgICBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3goaW5saW5l
Qm94LT5sYXlvdXRCb3goKS5wYXJlbnQoKSk7Ci0gICAgICAgIEFTU0VSVChpbmxpbmVCb3gtPmlz
SW5saW5lQm94KCkpOwotICAgICAgICBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AgKz0gaW5s
aW5lQm94LT5sb2dpY2FsVG9wKCk7CisgICAgaWYgKCFpbmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxh
dGl2ZUFsaWdubWVudCgpKSB7CisgICAgICAgIHdoaWxlIChpbmxpbmVCb3ggIT0gbV9yb290SW5s
aW5lQm94LmdldCgpICYmICFpbmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgp
KSB7CisgICAgICAgICAgICBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3go
aW5saW5lQm94LT5sYXlvdXRCb3goKS5wYXJlbnQoKSk7CisgICAgICAgICAgICBBU1NFUlQoaW5s
aW5lQm94LT5pc0lubGluZUJveCgpKTsKKyAgICAgICAgICAgIGlubGluZUJveEFic29sdXRlbG9n
aWNhbFRvcCArPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKTsKKyAgICAgICAgfQogICAgIH0KICAg
ICByZXR1cm4geyBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AsIGlubGluZUJveExvZ2ljYWxS
ZWN0LmxlZnQoKSwgaW5saW5lQm94TG9naWNhbFJlY3Qud2lkdGgoKSwgaW5saW5lQm94TG9naWNh
bFJlY3QuaGVpZ2h0KCkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAppbmRleCBlYWVmMjI4MDdiZWIuLmJjNjRl
N2Y5OTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCb3guaApAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbXB0eTsgfQogICAgICAgICB2b2lk
IHNldElzTm9uRW1wdHkoKSB7IG1faXNFbXB0eSA9IGZhbHNlOyB9CiAKLSAgICAgICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gbGF5b3V0Qm94KCkuc3R5
bGUoKS5mb250TWV0cmljcygpOyB9CiAgICAgICAgIFZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGln
bigpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCkudmVydGljYWxBbGlnbigpOyB9
CiAgICAgICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0
Qm94OyB9CisgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5b3V0Qm94LT5zdHlsZSgpOyB9CiAKICAgICAgICAgYm9vbCBpc0lubGluZUJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpJbmxpbmVCb3ggfHwgbV90eXBlID09IFR5cGU6
OlJvb3RJbmxpbmVCb3g7IH0KICAgICAgICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7
IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412795</attachid>
            <date>2020-10-30 13:52:53 -0700</date>
            <delta_ts>2020-10-30 14:29:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>29506</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMWJjMzk1NTkxODUuLmI4NDIzNDZhMWU0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDIwLTEwLTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBTcGxpdCBpbmxpbmUgbGV2ZWwgYm94IGFsaWdubWVudCBw
cm9jZXNzIGludG8gbXVsdGlwbGUgcGhhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbmxpbmUgbGV2ZWwgYm94IGFsaWdubWVudCBpbnNpZGUgdGhl
IGxpbmUgYm94IGlzIGRlc2NyaWJlZCBhdCBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWlubGlu
ZS0zLyNsaW5lLWxheW91dC4KKyAgICAgICAgVGhlIGFsaWdubWVudCBwcm9jZXNzIGludm9sdmVz
IDMgZGlzdGluY3Qgc3RlcHM6CisgICAgICAgIDEuIENvbXB1dGluZyB0aGUgbGluZSBib3gncyBs
b2dpY2FsIGhlaWdodC4gVGhpcyBzdGVwIHNvbGVseSB1c2VzIHRoZSBsYXlvdXQgYm91bmRzIGdl
b21ldHJ5IG9mIHRoZSBpbmxpbmUgbGV2ZWwgYm94ZXMuCisgICAgICAgIDIuIEZpbmRpbmcgdGhl
IHJvb3QgaW5saW5lIGJveCB2ZXJ0aWNhbCBwb3NpdGlvbi4gVGhpcyBzdGVwIGlzIHNvbWV3aGF0
IHNpbWlsYXIgdG8gdGhlIGZpbmFsLCBhbGlnbm1lbnQgcGhhc2UgYnV0IGluc3RlYWQgb2YKKyAg
ICAgICAgdGhlIGxvZ2ljYWwgdG9wLCBoZXJlIHdlIGNvbXB1dGUgdGhlIGJhc2VsaW5lIG9mZnNl
dHMuIEl0IGhlbHBzIHRvIGZpZ3VyZSBvdXQgdGhlIHJvb3QgaW5saW5lIGJveCdzIGJhc2VsaW5l
IHBvc2l0aW5nIGluc2lkZSB0aGUgbGluZSBib3guICAKKyAgICAgICAgMy4gQWxpZ25pbmcgdGhl
IGlubGluZSBsZXZlbCBib3hlcyBieSBjb21wdXRpbmcgdGhlaXIgbG9naWNhbCB0b3AgcG9zaXRp
b24uCisKKyAgICAgICAgVGhlc2UgMyBzdGVwcyBhcmUgaW1wbGVtZW50ZWQgYnkgdGhlIGZvbGxv
d2luZyAzIGZ1bmN0aW9uczogCisgICAgICAgIDEuIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdo
dCgpCisgICAgICAgIDIuIGNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbigpCisg
ICAgICAgIDMuIGFsaWduSW5saW5lTGV2ZWxCb3hlcygpCisgICAgICAgIFdoaWxlIHNvbWUgb2Yg
dGhlIGNvZGUgaW4gdGhlc2UgZnVuY3Rpb25zIG1heSBsb29rIHJlZHVuZGFudCwgdGhleSB3b3Jr
IHdpdGggZGlmZmVyZW50IHR5cGUgb2YgZ2VvbWV0cmllcyAobGF5b3V0IGJvdW5kcyB2cy4gbm9y
bWFsIGFzY2VudC9kZXNjZW50L2xvZ2ljYWwgaGVpZ2h0KS4KKworICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRy
eUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hC
dWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hI
ZWlnaHQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRl
eHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2Fs
UmVjdEZvcklubGluZUxldmVsQm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
b3g6OklubGluZUxldmVsQm94OjpzdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94Ojpmb250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQu
CisKIDIwMjAtMTAtMjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtJbnRlZ3JhdGlvbl0gSW1wbGVtZW50IG91dHB1dExpbmVUcmVlQW5kTWFyayBmb3Ig
SUZDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmlu
ZGV4IDBiZjkxZGYwMGFjNC4uNzE2NDUyYzQwNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIHZvaWQgc2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94
OjpJbmxpbmVMZXZlbEJveCYpIGNvbnN0OwogICAgIHZvaWQgY29uc3RydWN0SW5saW5lTGV2ZWxC
b3hlcyhMaW5lQm94JiwgY29uc3QgTGluZTo6UnVuTGlzdCYpOwotICAgIHZvaWQgYWxpZ25Jbmxp
bmVMZXZlbEJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lQm94SGVpZ2h0KExpbmVCb3gmKTsK
KyAgICB2b2lkIGNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVMZXZlbEJveGVzVmVy
dGljYWxseShMaW5lQm94Jik7CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYg
Zm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250
ZXh0OyB9CiAgICAgY29uc3QgQm94JiByb290Qm94KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGlu
Z0NvbnRleHQoKS5yb290KCk7IH0KQEAgLTE2MiwxNyArMTYyLDIxIEBAIExpbmVCb3ggTGluZUJv
eEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRl
bnQpCiAgICAgaWYgKGF1dG8gaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCA9IExheW91dDo6aG9y
aXpvbnRhbEFsaWdubWVudE9mZnNldChydW5zLCByb290Qm94KCkuc3R5bGUoKS50ZXh0QWxpZ24o
KSwgbGluZUxvZ2ljYWxXaWR0aCwgY29udGVudExvZ2ljYWxXaWR0aCwgbGluZUNvbnRlbnQuaXNM
YXN0TGluZVdpdGhJbmxpbmVDb250ZW50KSkKICAgICAgICAgbGluZUJveC5zZXRIb3Jpem9udGFs
QWxpZ25tZW50T2Zmc2V0KCpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KTsKICAgICBjb25zdHJ1
Y3RJbmxpbmVMZXZlbEJveGVzKGxpbmVCb3gsIHJ1bnMpOwotICAgIGFsaWduSW5saW5lTGV2ZWxC
b3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChsaW5lQm94KTsKKyAgICBjb21w
dXRlTGluZUJveEhlaWdodEFuZGFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkobGluZUJv
eCk7CiAgICAgcmV0dXJuIGxpbmVCb3g7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZl
cnRpY2FsR2VvbWV0cnlGb3JJbmxpbmVCb3goTGluZUJveDo6SW5saW5lTGV2ZWxCb3gmIGlubGlu
ZUxldmVsQm94KSBjb25zdAogewogICAgIEFTU0VSVChpbmxpbmVMZXZlbEJveC5pc0lubGluZUJv
eCgpIHx8IGlubGluZUxldmVsQm94LmlzTGluZUJyZWFrQm94KCkpOwotICAgIGF1dG8mIGZvbnRN
ZXRyaWNzID0gaW5saW5lTGV2ZWxCb3guZm9udE1ldHJpY3MoKTsKKyAgICBhdXRvJiBmb250TWV0
cmljcyA9IGlubGluZUxldmVsQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKICAgICBJbmxpbmVM
YXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwogICAgIElubGluZUxheW91
dFVuaXQgZGVzY2VudCA9IGZvbnRNZXRyaWNzLmRlc2NlbnQoKTsKICAgICBhdXRvIGxvZ2ljYWxI
ZWlnaHQgPSBhc2NlbnQgKyBkZXNjZW50OworICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0byBt
YXRjaCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgorICAgIGlubGluZUxldmVs
Qm94LnNldEJhc2VsaW5lKGZsb29yZihhc2NlbnQpKTsKKyAgICBpbmxpbmVMZXZlbEJveC5zZXRE
ZXNjZW50KGNlaWwoZGVzY2VudCkpOworICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWln
aHQobG9naWNhbEhlaWdodCk7CiAKICAgICAvLyBGSVhNRTogQWRqdXN0IGxheW91dCBib3VuZHMg
d2l0aCBmYWxsYmFjayBmb250IHdoZW4gYXBwbGljYWJsZS4KICAgICBhdXRvJiBzdHlsZSA9IGlu
bGluZUxldmVsQm94LmxheW91dEJveCgpLnN0eWxlKCk7CkBAIC0xOTIsMTQgKzE5Niw4IEBAIHZv
aWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsR2VvbWV0cnlGb3JJbmxpbmVCb3goTGluZUJv
eDo6SW5saW5lTGV2ZWxCb3gmIGluCiAgICAgICAgIGFzY2VudCArPSBoYWxmTGVhZGluZzsKICAg
ICAgICAgZGVzY2VudCArPSBoYWxmTGVhZGluZzsKICAgICB9Ci0gICAgLy8gV2UgbmVlZCB0aGlz
IHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCi0gICAgYXNjZW50
ID0gZmxvb3JmKGFzY2VudCk7Ci0gICAgZGVzY2VudCA9IGNlaWwoZGVzY2VudCk7Ci0KLSAgICBp
bmxpbmVMZXZlbEJveC5zZXRMYXlvdXRCb3VuZHMoTGluZUJveDo6SW5saW5lTGV2ZWxCb3g6Okxh
eW91dEJvdW5kcyB7IGFzY2VudCwgZGVzY2VudCB9KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXRC
YXNlbGluZShhc2NlbnQpOwotICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoZGVzY2VudCk7
Ci0gICAgaW5saW5lTGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKKyAg
ICAvLyBXZSBuZWVkIGZsb29yL2NlaWwgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBw
b3NpdGlvbmluZy4KKyAgICBpbmxpbmVMZXZlbEJveC5zZXRMYXlvdXRCb3VuZHMoTGluZUJveDo6
SW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5kcyB7IGZsb29yZihhc2NlbnQpLCBjZWlsKGRlc2Nl
bnQpIH0pOwogfQogCiB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVMZXZlbEJv
eGVzKExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnMpCkBAIC0yOTYs
MjcgKzI5NCwzMiBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVMZXZlbEJv
eGVzKExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmU6OlJ1bgogICAgIH0KIH0KIAotdm9pZCBM
aW5lQm94QnVpbGRlcjo6YWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseUFuZENvbXB1dGVM
aW5lQm94SGVpZ2h0KExpbmVCb3gmIGxpbmVCb3gpCit2b2lkIExpbmVCb3hCdWlsZGVyOjpjb21w
dXRlTGluZUJveEhlaWdodEFuZGFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkoTGluZUJv
eCYgbGluZUJveCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIChwYXJ0aWFsbHkpIGltcGxlbWVu
dHM6CiAgICAgLy8gMi4yLiBMYXlvdXQgV2l0aGluIExpbmUgQm94ZXMKICAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5lLWxheW91dAorICAgIC8vIDEuIENvbXB1
dGUgdGhlIGxpbmUgYm94IGhlaWdodCB1c2luZyB0aGUgbGF5b3V0IGJvdW5kcyBnZW9tZXRyeS4g
VGhpcyBoZWlnaHQgY29tcHV0YXRpb24gc3RyaWN0bHkgdXNlcyBsYXlvdXQgYm91bmRzIGFuZCBu
b3Qgbm9ybWFsIGlubGluZSBsZXZlbCBib3ggZ2VvbWV0cmllcy4KKyAgICAvLyAyLiBDb21wdXRl
IHRoZSBiYXNlbGluZS9sb2dpY2FsIHRvcCBwb3NpdGlvbiBvZiB0aGUgcm9vdCBpbmxpbmUgYm94
LiBBbGlnbmVkIGJveGVzIHB1c2ggdGhlIHJvb3QgaW5saW5lIGJveCBhcm91bmQgaW5zaWRlIHRo
ZSBsaW5lIGJveC4KKyAgICAvLyAzLiBGaW5hbGx5IGFsaWduIHRoZSBpbmxpbmUgbGV2ZWwgYm94
ZXMgdXNpbmcgKG1vc3RseSkgbm9ybWFsIGlubGluZSBsZXZlbCBib3ggZ2VvbWV0cmllcy4KICAg
ICBhdXRvIHF1aXJrcyA9IGZvcm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCk7Ci0gICAgVmVjdG9y
PExpbmVCb3g6OklubGluZUxldmVsQm94Kj4gbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hl
czsKLSAgICBzdHJ1Y3QgQWJzb2x1dGVHZW9tZXRyeSB7Ci0gICAgICAgIElubGluZUxheW91dFVu
aXQgdG9wIHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSB7IDAgfTsKLSAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFz
ZWxpbmUgeyAwIH07Ci0gICAgICAgIGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94KiBpbmxp
bmVMZXZlbEJveCB7IG51bGxwdHIgfTsKLSAgICB9OwotICAgIEhhc2hNYXA8TGluZUJveDo6SW5s
aW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZUdlb21ldHJ5PiBpbmxpbmVMZXZlbEJveEFic29sdXRlR2Vv
bWV0cnlNYXA7CiAgICAgYXV0byYgcm9vdElubGluZUJveCA9IGxpbmVCb3gucm9vdElubGluZUJv
eCgpOwotICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1hcC5hZGQoJnJvb3RJbmxp
bmVCb3gsIEFic29sdXRlR2VvbWV0cnkgeyB7IH0sIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRz
KCkuaGVpZ2h0KCksIHsgfSwgJnJvb3RJbmxpbmVCb3ggfSk7Ci0gICAgYXV0byBtYXhpbXVtVG9w
T2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHJvb3RJbmxpbmVCb3guaXNFbXB0eSgp
ID8gSW5saW5lTGF5b3V0VW5pdCgpIDogcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2Nl
bnQ7CiAKLSAgICBhdXRvIGFsaWduSW5saW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0g
WyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgY2FzZXMgd2hl
biB0aGUgaW5saW5lIGJveCB3aXRoIGxpbmUgYm94IHJlbGF0aXZlIGFsaWdubWVudCBoYXMgYSBj
aGlsZCBpbmxpbmUgYm94Ci0gICAgICAgIC8vIHdpdGggbm9uLWxpbmUgYm94IHJlbGF0aXZlIGFs
aWdubWVudC4KKyAgICBhdXRvIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCA9IFsmXSB7Cisg
ICAgICAgIFZlY3RvcjxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCo+IGxpbmVCb3hSZWxhdGl2ZUlu
bGluZUxldmVsQm94ZXM7CisgICAgICAgIC8vIExpbmUgYm94IGhlaWdodCBjb21wdXRhdGlvbiBp
cyBiYXNlZCBvbiB0aGUgbGF5b3V0IGJvdW5kcyBvZiB0aGUgaW5saW5lIGJveGVzIGFuZCBub3Qg
dGhlaXIgbG9naWNhbCAoYXNjZW50L2Rlc2NlbnQpIGRpbWVuc2lvbnMuCisgICAgICAgIHN0cnVj
dCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7CisgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHRv
cCB7IDAgfTsKKyAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgYm90dG9tIHsgMCB9OworICAg
ICAgICB9OworICAgICAgICBIYXNoTWFwPExpbmVCb3g6OklubGluZUxldmVsQm94KiwgQWJzb2x1
dGVUb3BBbmRCb3R0b20+IGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXA7CisK
KyAgICAgICAgYXV0byByb290QWJzb2x1dGVUb3BBbmRCb3R0b20gPSBBYnNvbHV0ZVRvcEFuZEJv
dHRvbSB7IHsgfSwgcm9vdElubGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkg
OiByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIH07CisgICAgICAgIGlubGlu
ZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKCZyb290SW5saW5lQm94LCByb290
QWJzb2x1dGVUb3BBbmRCb3R0b20pOworCisgICAgICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3Ag
PSByb290QWJzb2x1dGVUb3BBbmRCb3R0b20udG9wOworICAgICAgICBhdXRvIG1heGltdW1Mb2dp
Y2FsQm90dG9tID0gcm9vdEFic29sdXRlVG9wQW5kQm90dG9tLmJvdHRvbTsKKwogICAgICAgICBm
b3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hl
cygpKSB7CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxh
dGl2ZUFsaWdubWVudCgpKSB7CkBAIC0zMjQsMTI0ICszMjcsMTkwIEBAIHZvaWQgTGluZUJveEJ1
aWxkZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhl
aWdodChMaW5lCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9y
TGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgICAgICAgICAvLyBMb2dpY2FsIHRv
cCBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3gncyBsYXlvdXQgYm91bmRzLgor
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgbG9naWNhbCB0b3AgaXMgbm90IHRoZSBmaW5h
bCBsb2dpY2FsIHRvcCBvZiB0aGUgaW5saW5lIGxldmVsIGJveC4KKyAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIGxvZ2ljYWwgdG9wIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXlvdXQgYm91bmRz
IGdlb21ldHJ5IHdoaWNoIG1heSBiZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIHRoZSBpbmxpbmUgYm94
J3Mgbm9ybWFsIGdlb21ldHJ5LgogICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wID0gSW5saW5l
TGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBzd2l0Y2ggKGlu
bGluZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6QmFzZWxpbmU6Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2Vu
dDsKLSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsg
fTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dFRvcDogewotICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBUZXh0VG9wIGFsaWdu
cyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIHRvcCAoYXNjZW50KSBhbmQgbm90
IHRoZSBsYXlvdXQgYm91bmRzIHRvcC4KLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudEFzY2Vu
dCA9IHBhcmVudElubGluZUJveC5mb250TWV0cmljcygpLmFzY2VudCgpOwotICAgICAgICAgICAg
ICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQgLSBwYXJlbnRBc2NlbnQ7Ci0gICAgICAgICAgICAgICAgbG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveExvZ2ljYWxUb3A7Ci0gICAgICAgICAgICAgICAgYmFzZWxp
bmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBwYXJlbnRBc2NlbnQgLSBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOiB7Ci0g
ICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IFRleHRCb3R0b20gYWxpZ25zIHdpdGggdGhlIGlu
bGluZSBib3gncyBmb250IG1ldHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlv
dXQgYm91bmRzIGJvdHRvbS4KLSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGb250TWV0cmlj
cyA9IHBhcmVudElubGluZUJveC5mb250TWV0cmljcygpOwotICAgICAgICAgICAgICAgIGF1dG8g
cGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5k
cygpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9
IHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExh
eW91dEJvdW5kcy5kZXNjZW50ICsgcGFyZW50Rm9udE1ldHJpY3MuZGVzY2VudCgpOwotICAgICAg
ICAgICAgICAgIGF1dG8gbGF5b3V0Qm91bmRzID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5k
cygpOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2Fs
Qm90dG9tIC0gbGF5b3V0Qm91bmRzLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGJhc2VsaW5l
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbGF5b3V0Qm91bmRzLmRlc2NlbnQgLSBwYXJlbnRG
b250TWV0cmljcy5kZXNjZW50KCk7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJh
c2VsaW5lOiB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAg
ICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFz
Y2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
Ok1pZGRsZTogewotICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIg
KyBwYXJlbnRJbmxpbmVCb3guZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5l
IC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnN0eWxlKCku
Zm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKICAg
ICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBp
bmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BP
ZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0g
aW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBs
b2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Okxlbmd0aDogewot
ICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CisgICAgICAg
ICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKICAgICAgICAg
ICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRM
aW5lSGVpZ2h0KCkpICsgaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwot
ICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAt
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFz
ZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAg
ICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFz
Y2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
OlRleHRUb3A6IHsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC10b3AgYWxpZ25z
IHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgdG9wIChhc2NlbnQpIGFuZCBub3Qg
dGhlIGxheW91dCBib3VuZHMgdG9wLgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJl
bnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gcGFyZW50SW5saW5lQm94LmJhc2Vs
aW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206IHsKKyAgICAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGV4dC1ib3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1l
dHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4K
KyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVu
dElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElu
bGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0
KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJv
eC5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkpOworICAgICAgICAgICAgICAg
IGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lTGV2ZWxC
b3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3gtPnNldExvZ2ljYWxUb3AobG9naWNhbFRv
cCk7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveEFic29sdXRlR2VvbWV0cnkgPSBp
bmxpbmVMZXZlbEJveEFic29sdXRlR2VvbWV0cnlNYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gpOwot
ICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hBYnNv
bHV0ZUdlb21ldHJ5LnRvcCArIGxvZ2ljYWxUb3A7CisgICAgICAgICAgICBhdXRvIHBhcmVudElu
bGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFu
ZEJvdHRvbU1hcC5nZXQoJnBhcmVudElubGluZUJveCk7CisgICAgICAgICAgICBhdXRvIGFic29s
dXRlTG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tLnRvcCAr
IGxvZ2ljYWxUb3A7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNhbEJvdHRvbSA9IGFi
c29sdXRlTG9naWNhbFRvcCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQo
KTsKLSAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5l
Qm94QmFzZWxpbmUgPSBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5LmJhc2VsaW5lT2Zm
c2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJh
c2VsaW5lOwotICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFwLmFk
ZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgQWJzb2x1dGVHZW9tZXRyeSB7IGFic29sdXRlTG9naWNh
bFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0RnJvbVJv
b3RJbmxpbmVCb3hCYXNlbGluZSwgaW5saW5lTGV2ZWxCb3guZ2V0KCkgfSk7Ci0KLSAgICAgICAg
ICAgIGF1dG8gYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gcXVpcmtzLnNo
b3VsZElubGluZUxldmVsQm94U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmlubGluZUxldmVsQm94
KTsKLSAgICAgICAgICAgIGlmIChhZmZlY3RzUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24p
Ci0gICAgICAgICAgICAgICAgbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxp
bmUgPSBzdGQ6Om1heChtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSwg
YWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgKyBpbmxpbmVM
ZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50KTsKLSAgICAgICAgfQotICAgIH07Ci0gICAg
YWxpZ25JbmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMoKTsKLQotICAgIGF1dG8gbGlu
ZUJveExvZ2ljYWxIZWlnaHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICBhdXRvIGlubGlu
ZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1
dG8gY29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBsYXlvdXQgYm91bmRzIGJhc2VkIGxpbmUgYm94IGhlaWdodC4KLSAg
ICAgICAgYXV0byBtaW5pbXVtTG9naWNhbFRvcCA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IHsgfTsKLSAgICAgICAgYXV0byBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IE9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IHsgfTsKLSAgICAgICAgZm9yIChhdXRvIGFic29sdXRlR2VvbWV0cnkgOiBp
bmxpbmVMZXZlbEJveEFic29sdXRlR2VvbWV0cnlNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAg
IGF1dG8mIGlubGluZUxldmVsQm94ID0gKmFic29sdXRlR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3g7
Ci0gICAgICAgICAgICBpZiAoIXF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5l
Qm94KGxpbmVCb3gsIGlubGluZUxldmVsQm94KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9wID0gc3RkOjptaW4obWluaW11bUxvZ2ljYWxU
b3AudmFsdWVPcihhYnNvbHV0ZUdlb21ldHJ5LnRvcCksIGFic29sdXRlR2VvbWV0cnkudG9wKTsK
LSAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2lj
YWxCb3R0b20udmFsdWVPcihhYnNvbHV0ZUdlb21ldHJ5LmJvdHRvbSksIGFic29sdXRlR2VvbWV0
cnkuYm90dG9tKTsKKyAgICAgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0
b21NYXAuYWRkKGlubGluZUxldmVsQm94LmdldCgpLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFi
c29sdXRlTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tIH0pOworICAgICAgICAgICAg
Ly8gU3RyZXRjaCB0aGUgbWluL21heCBhYnNvbHV0ZSB2YWx1ZXMgaWYgYXBwbGljYWJsZS4KKyAg
ICAgICAgICAgIGlmIChxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJveChs
aW5lQm94LCAqaW5saW5lTGV2ZWxCb3gpKSB7CisgICAgICAgICAgICAgICAgbWluaW11bUxvZ2lj
YWxUb3AgPSBzdGQ6Om1pbihtaW5pbXVtTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsVG9wKTsK
KyAgICAgICAgICAgICAgICBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KG1heGltdW1M
b2dpY2FsQm90dG9tLCBhYnNvbHV0ZUxvZ2ljYWxCb3R0b20pOworICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IG1heGltdW1M
b2dpY2FsQm90dG9tLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKSAtIG1pbmltdW1Mb2dpY2Fs
VG9wLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKLSAgICAgICAgbGluZUJveExvZ2ljYWxI
ZWlnaHQgPSBpbmxpbmVCb3hSZWxhdGl2ZUxvZ2ljYWxIZWlnaHQ7Ci0gICAgICAgIC8vIE5vdyBz
dHJldGNoIHRoZSBsaW5lIGJveCB3aXRoIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBpbmxpbmUgbGV2
ZWwgYm94ZXMuCisgICAgICAgIC8vIFRoZSBsaW5lIGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMg
YXMgZm9sbG93czoKKyAgICAgICAgLy8gMS4gU3RyZXRjaCB0aGUgbGluZSBib3ggd2l0aCB0aGUg
bm9uLWxpbmUtYm94IHJlbGF0aXZlIGFsaWduZWQgaW5saW5lIGJveCBhYnNvbHV0ZSB0b3AgYW5k
IGJvdHRvbSB2YWx1ZXMuCisgICAgICAgIC8vIDIuIENoZWNrIGlmIHRoZSBsaW5lIGJveCByZWxh
dGl2ZSBhbGlnbmVkIGlubGluZSBib3hlcyAodG9wLCBib3R0b20gZXRjKSBoYXZlIGVub3VnaCBy
b29tIGFuZCBzdHJldGNoIHRoZSBsaW5lIGJveCBmdXJ0aGVyIGlmIG5lZWRlZC4KKyAgICAgICAg
YXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tIC0gbWluaW11
bUxvZ2ljYWxUb3A7CiAgICAgICAgIGZvciAoYXV0byogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2
ZWxCb3ggOiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKSB7CiAgICAgICAgICAgICBp
ZiAoIXF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICps
aW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBsaW5lQm94TG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGxpbmVCb3hMb2dp
Y2FsSGVpZ2h0LCBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
aGVpZ2h0KCkpOwogICAgICAgICB9CisgICAgICAgIGxpbmVCb3guc2V0TG9naWNhbEhlaWdodChs
aW5lQm94TG9naWNhbEhlaWdodCk7CiAgICAgfTsKICAgICBjb21wdXRlTGluZUJveExvZ2ljYWxI
ZWlnaHQoKTsKIAotICAgIGF1dG8gYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24g
PSBbJl0gewotICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGNhc2VzIHdoZW4gdGhl
IHN0cmV0Y2hpbmcgaW5saW5lIGJveGVzIGFyZSBub3QgYmFzZWxpbmUgYWxpZ25lZC4KLSAgICAg
ICAgYXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9v
dElubGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7
CisgICAgYXV0byBjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0gewor
ICAgICAgICBIYXNoTWFwPExpbmVCb3g6OklubGluZUxldmVsQm94KiwgSW5saW5lTGF5b3V0VW5p
dD4gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwOworICAgICAgICBpbmxp
bmVMZXZlbEJveEFic29sdXRlQmFzZWxpbmVPZmZzZXRNYXAuYWRkKCZyb290SW5saW5lQm94LCBJ
bmxpbmVMYXlvdXRVbml0IHsgfSk7CisKKyAgICAgICAgYXV0byBtYXhpbXVtVG9wT2Zmc2V0RnJv
bVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHJvb3RJbmxpbmVCb3guaXNFbXB0eSgpID8gSW5saW5l
TGF5b3V0VW5pdCgpIDogcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisKKyAg
ICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxl
dmVsQm94ZXMoKSkgeworICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0g
SW5saW5lTGF5b3V0VW5pdCB7IH07CisgICAgICAgICAgICBpZiAoIWlubGluZUxldmVsQm94LT5o
YXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGxh
eW91dEJveCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3goKTsKKyAgICAgICAgICAgICAgICBh
dXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94
KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZSA9IElubGluZUxheW91dFVuaXQgeyB9OworCisgICAgICAgICAg
ICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZToKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
TWlkZGxlOiB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21Q
YXJlbnRCYXNlbGluZSA9IChpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkg
LyAyICsgcGFyZW50SW5saW5lQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAy
KTsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUg
PSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmJh
c2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGlu
ZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDI7CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6IHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byB2ZXJ0aWNhbEFsaWduT2Zmc2V0ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS52
ZXJ0aWNhbEFsaWduTGVuZ3RoKCksIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
dmVydGljYWxBbGlnbk9mZnNldCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWln
aHQoKTsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gt
PmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFyZW50SW5s
aW5lQm94LmJhc2VsaW5lKCkgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpU
ZXh0Qm90dG9tOgorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRC
YXNlbGluZSA9IGlubGluZUxldmVsQm94LT5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRV
bml0KCkpIC0gKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0
ID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmdldCgmcGFyZW50SW5s
aW5lQm94KSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52ZXJ0aWNh
bEFsaWduKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDogewor
ICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gcm9vdElubGluZUJv
eC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
YXNjZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKKyAgICAgICAgICAg
ICAgICAgICAgYWJzb2x1dGVCYXNlbGluZU9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRC
b3VuZHMoKS5kZXNjZW50IC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50Owor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRF
RF9ZRVQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5l
T2Zmc2V0TWFwLmFkZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgYWJzb2x1dGVCYXNlbGluZU9mZnNl
dCk7CisgICAgICAgICAgICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlv
biA9IHF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICpp
bmxpbmVMZXZlbEJveCk7CisgICAgICAgICAgICBpZiAoYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0
aWNhbFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lID0gc3RkOjptYXgobWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5l
Qm94QmFzZWxpbmUsIGFic29sdXRlQmFzZWxpbmVPZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+YmFz
ZWxpbmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgYXV0byByb290SW5saW5lQm94TG9naWNhbFRv
cCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lIC0gcm9vdElubGlu
ZUJveC5iYXNlbGluZSgpOwogICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9v
dElubGluZUJveExvZ2ljYWxUb3ApOwogICAgIH07Ci0gICAgYWRqdXN0Um9vdElubGluZUJveFZl
cnRpY2FsUG9zaXRpb24oKTsKKyAgICBjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRp
b24oKTsKIAotICAgIGF1dG8gYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0g
WyZdIHsKLSAgICAgICAgZm9yIChhdXRvKiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2
ZUlubGluZUxldmVsQm94ZXMpIHsKKyAgICBhdXRvIGFsaWduSW5saW5lTGV2ZWxCb3hlcyA9IFsm
XSB7CisgICAgICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJ
bmxpbmVMZXZlbEJveGVzKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGlu
ZUxldmVsQm94LT5sYXlvdXRCb3goKTsKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbm1l
bnQgPSBsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7CisgICAgICAgICAgICBhdXRv
JiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveC5wYXJlbnQoKSk7CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVM
YXlvdXRVbml0IHsgfTsKLSAgICAgICAgICAgIGF1dG8gcm9vdElubGluZUJveE9mZnNldCA9IElu
bGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVu
dCkgeworICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigp
KSB7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxl
dmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxI
ZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3guc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWln
aHQoKSAvIDIpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gu
YmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9w
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQo
KSAvIDI7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNl
bGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6TGVuZ3RoOiB7CisgICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJv
eC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBm
bG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29t
cHV0ZWRMaW5lSGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZSA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJv
eC0+bG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgKHRleHQpdG9wL2JvdHRvbSBhbGlnbiB0aGVpciBsYXlvdXQgYm91bmRzLgorICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOgorICAgICAgICAgICAgICAgIGxv
Z2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5l
TGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206CisgICAgICAgICAgICAgICAgbG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgLSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6
Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHsgfTsKKyAgICAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBp
bmxpbmUgYm94LgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRv
bToKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gbGluZUJveExvZ2ljYWxIZWlnaHQgLSBp
bmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAg
cm9vdElubGluZUJveE9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWln
aHQoKSAtIGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodDsKKyAgICAgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVu
dCBpbmxpbmUgYm94LgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBsaW5lQm94LmxvZ2lj
YWxIZWlnaHQoKSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5s
aW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVU
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
bmxpbmVMZXZlbEJveC0+c2V0TG9naWNhbFRvcChsb2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGlm
IChyb290SW5saW5lQm94T2Zmc2V0ID4gMCkKLSAgICAgICAgICAgICAgICByb290SW5saW5lQm94
LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveC5sb2dpY2FsVG9wKCkgKyByb290SW5saW5lQm94
T2Zmc2V0KTsKICAgICAgICAgfQogICAgIH07Ci0gICAgYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxp
bmVMZXZlbEJveGVzKCk7Ci0gICAgbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dp
Y2FsSGVpZ2h0KTsKKyAgICBhbGlnbklubGluZUxldmVsQm94ZXMoKTsKIH0KIAogTGluZUJveCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmxpbmVCb3hGb3JMaW5lQ29udGVudChj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNw
cAppbmRleCBkMjJhZGI2NjZlZjIuLmVkZGNkNDBkN2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKQEAg
LTg2LDcgKzg2LDcgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4o
Y29uc3QgTGluZTo6UnVuJiBydW4pIGNvbnN0CiAgICAgQVNTRVJUKHJ1bi5pc1RleHQoKSB8fCBy
dW4uaXNMaW5lQnJlYWsoKSk7CiAgICAgYXV0byogcGFyZW50SW5saW5lQm94ID0gJmlubGluZUxl
dmVsQm94Rm9yTGF5b3V0Qm94KHJ1bi5sYXlvdXRCb3goKS5wYXJlbnQoKSk7CiAgICAgQVNTRVJU
KHBhcmVudElubGluZUJveC0+aXNJbmxpbmVCb3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3Mg
PSBwYXJlbnRJbmxpbmVCb3gtPmZvbnRNZXRyaWNzKCk7CisgICAgYXV0byYgZm9udE1ldHJpY3Mg
PSBwYXJlbnRJbmxpbmVCb3gtPnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKICAgICBhdXRvIHJ1bmxv
Z2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSArIHBhcmVudElubGluZUJv
eC0+YmFzZWxpbmUoKSAtIGZvbnRNZXRyaWNzLmFzY2VudCgpOwogCiAgICAgd2hpbGUgKHBhcmVu
dElubGluZUJveCAhPSBtX3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYgIXBhcmVudElubGluZUJveC0+
aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKQEAgLTEwMywxMSArMTAzLDEyIEBAIElu
bGluZVJlY3QgTGluZUJveDo6bG9naWNhbFJlY3RGb3JJbmxpbmVMZXZlbEJveChjb25zdCBCb3gm
IGxheW91dEJveCkgY29uc3QKICAgICBhdXRvKiBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxSZWN0ID0g
aW5saW5lQm94LT5sb2dpY2FsUmVjdCgpOwogICAgIGF1dG8gaW5saW5lQm94QWJzb2x1dGVsb2dp
Y2FsVG9wID0gaW5saW5lQm94LT5sb2dpY2FsVG9wKCk7Ci0KLSAgICB3aGlsZSAoaW5saW5lQm94
ICE9IG1fcm9vdElubGluZUJveC5nZXQoKSAmJiAhaW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRp
dmVBbGlnbm1lbnQoKSkgewotICAgICAgICBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JM
YXlvdXRCb3goaW5saW5lQm94LT5sYXlvdXRCb3goKS5wYXJlbnQoKSk7Ci0gICAgICAgIEFTU0VS
VChpbmxpbmVCb3gtPmlzSW5saW5lQm94KCkpOwotICAgICAgICBpbmxpbmVCb3hBYnNvbHV0ZWxv
Z2ljYWxUb3AgKz0gaW5saW5lQm94LT5sb2dpY2FsVG9wKCk7CisgICAgaWYgKCFpbmxpbmVCb3gt
Pmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7CisgICAgICAgIHdoaWxlIChpbmxpbmVC
b3ggIT0gbV9yb290SW5saW5lQm94LmdldCgpICYmICFpbmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxh
dGl2ZUFsaWdubWVudCgpKSB7CisgICAgICAgICAgICBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxC
b3hGb3JMYXlvdXRCb3goaW5saW5lQm94LT5sYXlvdXRCb3goKS5wYXJlbnQoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoaW5saW5lQm94LT5pc0lubGluZUJveCgpKTsKKyAgICAgICAgICAgIGlubGlu
ZUJveEFic29sdXRlbG9naWNhbFRvcCArPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4geyBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AsIGlu
bGluZUJveExvZ2ljYWxSZWN0LmxlZnQoKSwgaW5saW5lQm94TG9naWNhbFJlY3Qud2lkdGgoKSwg
aW5saW5lQm94TG9naWNhbFJlY3QuaGVpZ2h0KCkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAppbmRleCBlYWVm
MjI4MDdiZWIuLmJjNjRlN2Y5OTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaApAQCAtODcsOSArODcsOSBAQCBw
dWJsaWM6CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbXB0eTsg
fQogICAgICAgICB2b2lkIHNldElzTm9uRW1wdHkoKSB7IG1faXNFbXB0eSA9IGZhbHNlOyB9CiAK
LSAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4g
bGF5b3V0Qm94KCkuc3R5bGUoKS5mb250TWV0cmljcygpOyB9CiAgICAgICAgIFZlcnRpY2FsQWxp
Z24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCkudmVy
dGljYWxBbGlnbigpOyB9CiAgICAgICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gKm1fbGF5b3V0Qm94OyB9CisgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94LT5zdHlsZSgpOyB9CiAKICAgICAgICAgYm9vbCBp
c0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpJbmxpbmVCb3ggfHwg
bV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0KICAgICAgICAgYm9vbCBpc1Jvb3RJbmxp
bmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCmluZGV4IDZkOWUyMWJmOGRhMC4uOTNmY2VkMDdl
ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAK
ICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2RlZmluZSBBTExPV19J
TUFHRVMgMAorI2RlZmluZSBBTExPV19JTUFHRVMgMQogI2RlZmluZSBBTExPV19BTExfUkVQTEFD
RUQgMAogI2RlZmluZSBBTExPV19JTkxJTkVfQkxPQ0sgMAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412799</attachid>
            <date>2020-10-30 14:29:05 -0700</date>
            <delta_ts>2020-10-30 17:39:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>30225</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMWJjMzk1NTkxODUuLmI4NDIzNDZhMWU0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDIwLTEwLTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBTcGxpdCBpbmxpbmUgbGV2ZWwgYm94IGFsaWdubWVudCBw
cm9jZXNzIGludG8gbXVsdGlwbGUgcGhhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbmxpbmUgbGV2ZWwgYm94IGFsaWdubWVudCBpbnNpZGUgdGhl
IGxpbmUgYm94IGlzIGRlc2NyaWJlZCBhdCBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWlubGlu
ZS0zLyNsaW5lLWxheW91dC4KKyAgICAgICAgVGhlIGFsaWdubWVudCBwcm9jZXNzIGludm9sdmVz
IDMgZGlzdGluY3Qgc3RlcHM6CisgICAgICAgIDEuIENvbXB1dGluZyB0aGUgbGluZSBib3gncyBs
b2dpY2FsIGhlaWdodC4gVGhpcyBzdGVwIHNvbGVseSB1c2VzIHRoZSBsYXlvdXQgYm91bmRzIGdl
b21ldHJ5IG9mIHRoZSBpbmxpbmUgbGV2ZWwgYm94ZXMuCisgICAgICAgIDIuIEZpbmRpbmcgdGhl
IHJvb3QgaW5saW5lIGJveCB2ZXJ0aWNhbCBwb3NpdGlvbi4gVGhpcyBzdGVwIGlzIHNvbWV3aGF0
IHNpbWlsYXIgdG8gdGhlIGZpbmFsLCBhbGlnbm1lbnQgcGhhc2UgYnV0IGluc3RlYWQgb2YKKyAg
ICAgICAgdGhlIGxvZ2ljYWwgdG9wLCBoZXJlIHdlIGNvbXB1dGUgdGhlIGJhc2VsaW5lIG9mZnNl
dHMuIEl0IGhlbHBzIHRvIGZpZ3VyZSBvdXQgdGhlIHJvb3QgaW5saW5lIGJveCdzIGJhc2VsaW5l
IHBvc2l0aW5nIGluc2lkZSB0aGUgbGluZSBib3guICAKKyAgICAgICAgMy4gQWxpZ25pbmcgdGhl
IGlubGluZSBsZXZlbCBib3hlcyBieSBjb21wdXRpbmcgdGhlaXIgbG9naWNhbCB0b3AgcG9zaXRp
b24uCisKKyAgICAgICAgVGhlc2UgMyBzdGVwcyBhcmUgaW1wbGVtZW50ZWQgYnkgdGhlIGZvbGxv
d2luZyAzIGZ1bmN0aW9uczogCisgICAgICAgIDEuIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdo
dCgpCisgICAgICAgIDIuIGNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbigpCisg
ICAgICAgIDMuIGFsaWduSW5saW5lTGV2ZWxCb3hlcygpCisgICAgICAgIFdoaWxlIHNvbWUgb2Yg
dGhlIGNvZGUgaW4gdGhlc2UgZnVuY3Rpb25zIG1heSBsb29rIHJlZHVuZGFudCwgdGhleSB3b3Jr
IHdpdGggZGlmZmVyZW50IHR5cGUgb2YgZ2VvbWV0cmllcyAobGF5b3V0IGJvdW5kcyB2cy4gbm9y
bWFsIGFzY2VudC9kZXNjZW50L2xvZ2ljYWwgaGVpZ2h0KS4KKworICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRy
eUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hC
dWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hI
ZWlnaHQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRl
eHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2Fs
UmVjdEZvcklubGluZUxldmVsQm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
b3g6OklubGluZUxldmVsQm94OjpzdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94Ojpmb250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQu
CisKIDIwMjAtMTAtMjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtJbnRlZ3JhdGlvbl0gSW1wbGVtZW50IG91dHB1dExpbmVUcmVlQW5kTWFyayBmb3Ig
SUZDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmlu
ZGV4IDBiZjkxZGYwMGFjNC4uNzE2NDUyYzQwNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIHZvaWQgc2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94
OjpJbmxpbmVMZXZlbEJveCYpIGNvbnN0OwogICAgIHZvaWQgY29uc3RydWN0SW5saW5lTGV2ZWxC
b3hlcyhMaW5lQm94JiwgY29uc3QgTGluZTo6UnVuTGlzdCYpOwotICAgIHZvaWQgYWxpZ25Jbmxp
bmVMZXZlbEJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lQm94SGVpZ2h0KExpbmVCb3gmKTsK
KyAgICB2b2lkIGNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVMZXZlbEJveGVzVmVy
dGljYWxseShMaW5lQm94Jik7CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYg
Zm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250
ZXh0OyB9CiAgICAgY29uc3QgQm94JiByb290Qm94KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGlu
Z0NvbnRleHQoKS5yb290KCk7IH0KQEAgLTE2MiwxNyArMTYyLDIxIEBAIExpbmVCb3ggTGluZUJv
eEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRl
bnQpCiAgICAgaWYgKGF1dG8gaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCA9IExheW91dDo6aG9y
aXpvbnRhbEFsaWdubWVudE9mZnNldChydW5zLCByb290Qm94KCkuc3R5bGUoKS50ZXh0QWxpZ24o
KSwgbGluZUxvZ2ljYWxXaWR0aCwgY29udGVudExvZ2ljYWxXaWR0aCwgbGluZUNvbnRlbnQuaXNM
YXN0TGluZVdpdGhJbmxpbmVDb250ZW50KSkKICAgICAgICAgbGluZUJveC5zZXRIb3Jpem9udGFs
QWxpZ25tZW50T2Zmc2V0KCpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KTsKICAgICBjb25zdHJ1
Y3RJbmxpbmVMZXZlbEJveGVzKGxpbmVCb3gsIHJ1bnMpOwotICAgIGFsaWduSW5saW5lTGV2ZWxC
b3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChsaW5lQm94KTsKKyAgICBjb21w
dXRlTGluZUJveEhlaWdodEFuZGFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkobGluZUJv
eCk7CiAgICAgcmV0dXJuIGxpbmVCb3g7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZl
cnRpY2FsR2VvbWV0cnlGb3JJbmxpbmVCb3goTGluZUJveDo6SW5saW5lTGV2ZWxCb3gmIGlubGlu
ZUxldmVsQm94KSBjb25zdAogewogICAgIEFTU0VSVChpbmxpbmVMZXZlbEJveC5pc0lubGluZUJv
eCgpIHx8IGlubGluZUxldmVsQm94LmlzTGluZUJyZWFrQm94KCkpOwotICAgIGF1dG8mIGZvbnRN
ZXRyaWNzID0gaW5saW5lTGV2ZWxCb3guZm9udE1ldHJpY3MoKTsKKyAgICBhdXRvJiBmb250TWV0
cmljcyA9IGlubGluZUxldmVsQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKICAgICBJbmxpbmVM
YXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwogICAgIElubGluZUxheW91
dFVuaXQgZGVzY2VudCA9IGZvbnRNZXRyaWNzLmRlc2NlbnQoKTsKICAgICBhdXRvIGxvZ2ljYWxI
ZWlnaHQgPSBhc2NlbnQgKyBkZXNjZW50OworICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0byBt
YXRjaCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgorICAgIGlubGluZUxldmVs
Qm94LnNldEJhc2VsaW5lKGZsb29yZihhc2NlbnQpKTsKKyAgICBpbmxpbmVMZXZlbEJveC5zZXRE
ZXNjZW50KGNlaWwoZGVzY2VudCkpOworICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWln
aHQobG9naWNhbEhlaWdodCk7CiAKICAgICAvLyBGSVhNRTogQWRqdXN0IGxheW91dCBib3VuZHMg
d2l0aCBmYWxsYmFjayBmb250IHdoZW4gYXBwbGljYWJsZS4KICAgICBhdXRvJiBzdHlsZSA9IGlu
bGluZUxldmVsQm94LmxheW91dEJveCgpLnN0eWxlKCk7CkBAIC0xOTIsMTQgKzE5Niw4IEBAIHZv
aWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsR2VvbWV0cnlGb3JJbmxpbmVCb3goTGluZUJv
eDo6SW5saW5lTGV2ZWxCb3gmIGluCiAgICAgICAgIGFzY2VudCArPSBoYWxmTGVhZGluZzsKICAg
ICAgICAgZGVzY2VudCArPSBoYWxmTGVhZGluZzsKICAgICB9Ci0gICAgLy8gV2UgbmVlZCB0aGlz
IHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCi0gICAgYXNjZW50
ID0gZmxvb3JmKGFzY2VudCk7Ci0gICAgZGVzY2VudCA9IGNlaWwoZGVzY2VudCk7Ci0KLSAgICBp
bmxpbmVMZXZlbEJveC5zZXRMYXlvdXRCb3VuZHMoTGluZUJveDo6SW5saW5lTGV2ZWxCb3g6Okxh
eW91dEJvdW5kcyB7IGFzY2VudCwgZGVzY2VudCB9KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXRC
YXNlbGluZShhc2NlbnQpOwotICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoZGVzY2VudCk7
Ci0gICAgaW5saW5lTGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKKyAg
ICAvLyBXZSBuZWVkIGZsb29yL2NlaWwgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBw
b3NpdGlvbmluZy4KKyAgICBpbmxpbmVMZXZlbEJveC5zZXRMYXlvdXRCb3VuZHMoTGluZUJveDo6
SW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5kcyB7IGZsb29yZihhc2NlbnQpLCBjZWlsKGRlc2Nl
bnQpIH0pOwogfQogCiB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVMZXZlbEJv
eGVzKExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnMpCkBAIC0yOTYs
MjcgKzI5NCwzMiBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVMZXZlbEJv
eGVzKExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmU6OlJ1bgogICAgIH0KIH0KIAotdm9pZCBM
aW5lQm94QnVpbGRlcjo6YWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseUFuZENvbXB1dGVM
aW5lQm94SGVpZ2h0KExpbmVCb3gmIGxpbmVCb3gpCit2b2lkIExpbmVCb3hCdWlsZGVyOjpjb21w
dXRlTGluZUJveEhlaWdodEFuZGFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkoTGluZUJv
eCYgbGluZUJveCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIChwYXJ0aWFsbHkpIGltcGxlbWVu
dHM6CiAgICAgLy8gMi4yLiBMYXlvdXQgV2l0aGluIExpbmUgQm94ZXMKICAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5lLWxheW91dAorICAgIC8vIDEuIENvbXB1
dGUgdGhlIGxpbmUgYm94IGhlaWdodCB1c2luZyB0aGUgbGF5b3V0IGJvdW5kcyBnZW9tZXRyeS4g
VGhpcyBoZWlnaHQgY29tcHV0YXRpb24gc3RyaWN0bHkgdXNlcyBsYXlvdXQgYm91bmRzIGFuZCBu
b3Qgbm9ybWFsIGlubGluZSBsZXZlbCBib3ggZ2VvbWV0cmllcy4KKyAgICAvLyAyLiBDb21wdXRl
IHRoZSBiYXNlbGluZS9sb2dpY2FsIHRvcCBwb3NpdGlvbiBvZiB0aGUgcm9vdCBpbmxpbmUgYm94
LiBBbGlnbmVkIGJveGVzIHB1c2ggdGhlIHJvb3QgaW5saW5lIGJveCBhcm91bmQgaW5zaWRlIHRo
ZSBsaW5lIGJveC4KKyAgICAvLyAzLiBGaW5hbGx5IGFsaWduIHRoZSBpbmxpbmUgbGV2ZWwgYm94
ZXMgdXNpbmcgKG1vc3RseSkgbm9ybWFsIGlubGluZSBsZXZlbCBib3ggZ2VvbWV0cmllcy4KICAg
ICBhdXRvIHF1aXJrcyA9IGZvcm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCk7Ci0gICAgVmVjdG9y
PExpbmVCb3g6OklubGluZUxldmVsQm94Kj4gbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hl
czsKLSAgICBzdHJ1Y3QgQWJzb2x1dGVHZW9tZXRyeSB7Ci0gICAgICAgIElubGluZUxheW91dFVu
aXQgdG9wIHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSB7IDAgfTsKLSAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFz
ZWxpbmUgeyAwIH07Ci0gICAgICAgIGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94KiBpbmxp
bmVMZXZlbEJveCB7IG51bGxwdHIgfTsKLSAgICB9OwotICAgIEhhc2hNYXA8TGluZUJveDo6SW5s
aW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZUdlb21ldHJ5PiBpbmxpbmVMZXZlbEJveEFic29sdXRlR2Vv
bWV0cnlNYXA7CiAgICAgYXV0byYgcm9vdElubGluZUJveCA9IGxpbmVCb3gucm9vdElubGluZUJv
eCgpOwotICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1hcC5hZGQoJnJvb3RJbmxp
bmVCb3gsIEFic29sdXRlR2VvbWV0cnkgeyB7IH0sIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRz
KCkuaGVpZ2h0KCksIHsgfSwgJnJvb3RJbmxpbmVCb3ggfSk7Ci0gICAgYXV0byBtYXhpbXVtVG9w
T2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHJvb3RJbmxpbmVCb3guaXNFbXB0eSgp
ID8gSW5saW5lTGF5b3V0VW5pdCgpIDogcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2Nl
bnQ7CiAKLSAgICBhdXRvIGFsaWduSW5saW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0g
WyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgY2FzZXMgd2hl
biB0aGUgaW5saW5lIGJveCB3aXRoIGxpbmUgYm94IHJlbGF0aXZlIGFsaWdubWVudCBoYXMgYSBj
aGlsZCBpbmxpbmUgYm94Ci0gICAgICAgIC8vIHdpdGggbm9uLWxpbmUgYm94IHJlbGF0aXZlIGFs
aWdubWVudC4KKyAgICBhdXRvIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCA9IFsmXSB7Cisg
ICAgICAgIFZlY3RvcjxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCo+IGxpbmVCb3hSZWxhdGl2ZUlu
bGluZUxldmVsQm94ZXM7CisgICAgICAgIC8vIExpbmUgYm94IGhlaWdodCBjb21wdXRhdGlvbiBp
cyBiYXNlZCBvbiB0aGUgbGF5b3V0IGJvdW5kcyBvZiB0aGUgaW5saW5lIGJveGVzIGFuZCBub3Qg
dGhlaXIgbG9naWNhbCAoYXNjZW50L2Rlc2NlbnQpIGRpbWVuc2lvbnMuCisgICAgICAgIHN0cnVj
dCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7CisgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHRv
cCB7IDAgfTsKKyAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgYm90dG9tIHsgMCB9OworICAg
ICAgICB9OworICAgICAgICBIYXNoTWFwPExpbmVCb3g6OklubGluZUxldmVsQm94KiwgQWJzb2x1
dGVUb3BBbmRCb3R0b20+IGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXA7CisK
KyAgICAgICAgYXV0byByb290QWJzb2x1dGVUb3BBbmRCb3R0b20gPSBBYnNvbHV0ZVRvcEFuZEJv
dHRvbSB7IHsgfSwgcm9vdElubGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkg
OiByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIH07CisgICAgICAgIGlubGlu
ZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKCZyb290SW5saW5lQm94LCByb290
QWJzb2x1dGVUb3BBbmRCb3R0b20pOworCisgICAgICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3Ag
PSByb290QWJzb2x1dGVUb3BBbmRCb3R0b20udG9wOworICAgICAgICBhdXRvIG1heGltdW1Mb2dp
Y2FsQm90dG9tID0gcm9vdEFic29sdXRlVG9wQW5kQm90dG9tLmJvdHRvbTsKKwogICAgICAgICBm
b3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hl
cygpKSB7CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxh
dGl2ZUFsaWdubWVudCgpKSB7CkBAIC0zMjQsMTI0ICszMjcsMTkwIEBAIHZvaWQgTGluZUJveEJ1
aWxkZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhl
aWdodChMaW5lCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9y
TGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgICAgICAgICAvLyBMb2dpY2FsIHRv
cCBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3gncyBsYXlvdXQgYm91bmRzLgor
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgbG9naWNhbCB0b3AgaXMgbm90IHRoZSBmaW5h
bCBsb2dpY2FsIHRvcCBvZiB0aGUgaW5saW5lIGxldmVsIGJveC4KKyAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIGxvZ2ljYWwgdG9wIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXlvdXQgYm91bmRz
IGdlb21ldHJ5IHdoaWNoIG1heSBiZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIHRoZSBpbmxpbmUgYm94
J3Mgbm9ybWFsIGdlb21ldHJ5LgogICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wID0gSW5saW5l
TGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBzd2l0Y2ggKGlu
bGluZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6QmFzZWxpbmU6Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2Vu
dDsKLSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsg
fTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dFRvcDogewotICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBUZXh0VG9wIGFsaWdu
cyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIHRvcCAoYXNjZW50KSBhbmQgbm90
IHRoZSBsYXlvdXQgYm91bmRzIHRvcC4KLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudEFzY2Vu
dCA9IHBhcmVudElubGluZUJveC5mb250TWV0cmljcygpLmFzY2VudCgpOwotICAgICAgICAgICAg
ICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQgLSBwYXJlbnRBc2NlbnQ7Ci0gICAgICAgICAgICAgICAgbG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveExvZ2ljYWxUb3A7Ci0gICAgICAgICAgICAgICAgYmFzZWxp
bmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBwYXJlbnRBc2NlbnQgLSBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOiB7Ci0g
ICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IFRleHRCb3R0b20gYWxpZ25zIHdpdGggdGhlIGlu
bGluZSBib3gncyBmb250IG1ldHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlv
dXQgYm91bmRzIGJvdHRvbS4KLSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGb250TWV0cmlj
cyA9IHBhcmVudElubGluZUJveC5mb250TWV0cmljcygpOwotICAgICAgICAgICAgICAgIGF1dG8g
cGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5k
cygpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9
IHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExh
eW91dEJvdW5kcy5kZXNjZW50ICsgcGFyZW50Rm9udE1ldHJpY3MuZGVzY2VudCgpOwotICAgICAg
ICAgICAgICAgIGF1dG8gbGF5b3V0Qm91bmRzID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5k
cygpOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2Fs
Qm90dG9tIC0gbGF5b3V0Qm91bmRzLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGJhc2VsaW5l
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbGF5b3V0Qm91bmRzLmRlc2NlbnQgLSBwYXJlbnRG
b250TWV0cmljcy5kZXNjZW50KCk7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJh
c2VsaW5lOiB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAg
ICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFz
Y2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
Ok1pZGRsZTogewotICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIg
KyBwYXJlbnRJbmxpbmVCb3guZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5l
IC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnN0eWxlKCku
Zm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKICAg
ICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBp
bmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BP
ZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0g
aW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBs
b2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Okxlbmd0aDogewot
ICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CisgICAgICAg
ICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKICAgICAgICAg
ICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRM
aW5lSGVpZ2h0KCkpICsgaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwot
ICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAt
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFz
ZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAg
ICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFz
Y2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
OlRleHRUb3A6IHsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC10b3AgYWxpZ25z
IHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgdG9wIChhc2NlbnQpIGFuZCBub3Qg
dGhlIGxheW91dCBib3VuZHMgdG9wLgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJl
bnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gcGFyZW50SW5saW5lQm94LmJhc2Vs
aW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206IHsKKyAgICAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGV4dC1ib3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1l
dHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4K
KyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVu
dElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElu
bGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0
KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJv
eC5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkpOworICAgICAgICAgICAgICAg
IGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lTGV2ZWxC
b3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3gtPnNldExvZ2ljYWxUb3AobG9naWNhbFRv
cCk7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveEFic29sdXRlR2VvbWV0cnkgPSBp
bmxpbmVMZXZlbEJveEFic29sdXRlR2VvbWV0cnlNYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gpOwot
ICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hBYnNv
bHV0ZUdlb21ldHJ5LnRvcCArIGxvZ2ljYWxUb3A7CisgICAgICAgICAgICBhdXRvIHBhcmVudElu
bGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFu
ZEJvdHRvbU1hcC5nZXQoJnBhcmVudElubGluZUJveCk7CisgICAgICAgICAgICBhdXRvIGFic29s
dXRlTG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tLnRvcCAr
IGxvZ2ljYWxUb3A7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNhbEJvdHRvbSA9IGFi
c29sdXRlTG9naWNhbFRvcCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQo
KTsKLSAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5l
Qm94QmFzZWxpbmUgPSBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5LmJhc2VsaW5lT2Zm
c2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJh
c2VsaW5lOwotICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFwLmFk
ZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgQWJzb2x1dGVHZW9tZXRyeSB7IGFic29sdXRlTG9naWNh
bFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0RnJvbVJv
b3RJbmxpbmVCb3hCYXNlbGluZSwgaW5saW5lTGV2ZWxCb3guZ2V0KCkgfSk7Ci0KLSAgICAgICAg
ICAgIGF1dG8gYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gcXVpcmtzLnNo
b3VsZElubGluZUxldmVsQm94U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmlubGluZUxldmVsQm94
KTsKLSAgICAgICAgICAgIGlmIChhZmZlY3RzUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24p
Ci0gICAgICAgICAgICAgICAgbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxp
bmUgPSBzdGQ6Om1heChtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSwg
YWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgKyBpbmxpbmVM
ZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50KTsKLSAgICAgICAgfQotICAgIH07Ci0gICAg
YWxpZ25JbmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMoKTsKLQotICAgIGF1dG8gbGlu
ZUJveExvZ2ljYWxIZWlnaHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICBhdXRvIGlubGlu
ZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1
dG8gY29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBsYXlvdXQgYm91bmRzIGJhc2VkIGxpbmUgYm94IGhlaWdodC4KLSAg
ICAgICAgYXV0byBtaW5pbXVtTG9naWNhbFRvcCA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IHsgfTsKLSAgICAgICAgYXV0byBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IE9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IHsgfTsKLSAgICAgICAgZm9yIChhdXRvIGFic29sdXRlR2VvbWV0cnkgOiBp
bmxpbmVMZXZlbEJveEFic29sdXRlR2VvbWV0cnlNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAg
IGF1dG8mIGlubGluZUxldmVsQm94ID0gKmFic29sdXRlR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3g7
Ci0gICAgICAgICAgICBpZiAoIXF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5l
Qm94KGxpbmVCb3gsIGlubGluZUxldmVsQm94KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9wID0gc3RkOjptaW4obWluaW11bUxvZ2ljYWxU
b3AudmFsdWVPcihhYnNvbHV0ZUdlb21ldHJ5LnRvcCksIGFic29sdXRlR2VvbWV0cnkudG9wKTsK
LSAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2lj
YWxCb3R0b20udmFsdWVPcihhYnNvbHV0ZUdlb21ldHJ5LmJvdHRvbSksIGFic29sdXRlR2VvbWV0
cnkuYm90dG9tKTsKKyAgICAgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0
b21NYXAuYWRkKGlubGluZUxldmVsQm94LmdldCgpLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFi
c29sdXRlTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tIH0pOworICAgICAgICAgICAg
Ly8gU3RyZXRjaCB0aGUgbWluL21heCBhYnNvbHV0ZSB2YWx1ZXMgaWYgYXBwbGljYWJsZS4KKyAg
ICAgICAgICAgIGlmIChxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJveChs
aW5lQm94LCAqaW5saW5lTGV2ZWxCb3gpKSB7CisgICAgICAgICAgICAgICAgbWluaW11bUxvZ2lj
YWxUb3AgPSBzdGQ6Om1pbihtaW5pbXVtTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsVG9wKTsK
KyAgICAgICAgICAgICAgICBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KG1heGltdW1M
b2dpY2FsQm90dG9tLCBhYnNvbHV0ZUxvZ2ljYWxCb3R0b20pOworICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IG1heGltdW1M
b2dpY2FsQm90dG9tLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKSAtIG1pbmltdW1Mb2dpY2Fs
VG9wLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKLSAgICAgICAgbGluZUJveExvZ2ljYWxI
ZWlnaHQgPSBpbmxpbmVCb3hSZWxhdGl2ZUxvZ2ljYWxIZWlnaHQ7Ci0gICAgICAgIC8vIE5vdyBz
dHJldGNoIHRoZSBsaW5lIGJveCB3aXRoIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBpbmxpbmUgbGV2
ZWwgYm94ZXMuCisgICAgICAgIC8vIFRoZSBsaW5lIGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMg
YXMgZm9sbG93czoKKyAgICAgICAgLy8gMS4gU3RyZXRjaCB0aGUgbGluZSBib3ggd2l0aCB0aGUg
bm9uLWxpbmUtYm94IHJlbGF0aXZlIGFsaWduZWQgaW5saW5lIGJveCBhYnNvbHV0ZSB0b3AgYW5k
IGJvdHRvbSB2YWx1ZXMuCisgICAgICAgIC8vIDIuIENoZWNrIGlmIHRoZSBsaW5lIGJveCByZWxh
dGl2ZSBhbGlnbmVkIGlubGluZSBib3hlcyAodG9wLCBib3R0b20gZXRjKSBoYXZlIGVub3VnaCBy
b29tIGFuZCBzdHJldGNoIHRoZSBsaW5lIGJveCBmdXJ0aGVyIGlmIG5lZWRlZC4KKyAgICAgICAg
YXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tIC0gbWluaW11
bUxvZ2ljYWxUb3A7CiAgICAgICAgIGZvciAoYXV0byogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2
ZWxCb3ggOiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKSB7CiAgICAgICAgICAgICBp
ZiAoIXF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICps
aW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBsaW5lQm94TG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGxpbmVCb3hMb2dp
Y2FsSGVpZ2h0LCBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
aGVpZ2h0KCkpOwogICAgICAgICB9CisgICAgICAgIGxpbmVCb3guc2V0TG9naWNhbEhlaWdodChs
aW5lQm94TG9naWNhbEhlaWdodCk7CiAgICAgfTsKICAgICBjb21wdXRlTGluZUJveExvZ2ljYWxI
ZWlnaHQoKTsKIAotICAgIGF1dG8gYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24g
PSBbJl0gewotICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGNhc2VzIHdoZW4gdGhl
IHN0cmV0Y2hpbmcgaW5saW5lIGJveGVzIGFyZSBub3QgYmFzZWxpbmUgYWxpZ25lZC4KLSAgICAg
ICAgYXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9v
dElubGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7
CisgICAgYXV0byBjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0gewor
ICAgICAgICBIYXNoTWFwPExpbmVCb3g6OklubGluZUxldmVsQm94KiwgSW5saW5lTGF5b3V0VW5p
dD4gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwOworICAgICAgICBpbmxp
bmVMZXZlbEJveEFic29sdXRlQmFzZWxpbmVPZmZzZXRNYXAuYWRkKCZyb290SW5saW5lQm94LCBJ
bmxpbmVMYXlvdXRVbml0IHsgfSk7CisKKyAgICAgICAgYXV0byBtYXhpbXVtVG9wT2Zmc2V0RnJv
bVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHJvb3RJbmxpbmVCb3guaXNFbXB0eSgpID8gSW5saW5l
TGF5b3V0VW5pdCgpIDogcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisKKyAg
ICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxl
dmVsQm94ZXMoKSkgeworICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0g
SW5saW5lTGF5b3V0VW5pdCB7IH07CisgICAgICAgICAgICBpZiAoIWlubGluZUxldmVsQm94LT5o
YXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGxh
eW91dEJveCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3goKTsKKyAgICAgICAgICAgICAgICBh
dXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94
KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZSA9IElubGluZUxheW91dFVuaXQgeyB9OworCisgICAgICAgICAg
ICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZToKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
TWlkZGxlOiB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21Q
YXJlbnRCYXNlbGluZSA9IChpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkg
LyAyICsgcGFyZW50SW5saW5lQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAy
KTsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUg
PSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmJh
c2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGlu
ZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDI7CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6IHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byB2ZXJ0aWNhbEFsaWduT2Zmc2V0ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS52
ZXJ0aWNhbEFsaWduTGVuZ3RoKCksIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
dmVydGljYWxBbGlnbk9mZnNldCArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWln
aHQoKTsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gt
PmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFyZW50SW5s
aW5lQm94LmJhc2VsaW5lKCkgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpU
ZXh0Qm90dG9tOgorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRC
YXNlbGluZSA9IGlubGluZUxldmVsQm94LT5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRV
bml0KCkpIC0gKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0
ID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmdldCgmcGFyZW50SW5s
aW5lQm94KSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52ZXJ0aWNh
bEFsaWduKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDogewor
ICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gcm9vdElubGluZUJv
eC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
YXNjZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKKyAgICAgICAgICAg
ICAgICAgICAgYWJzb2x1dGVCYXNlbGluZU9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRC
b3VuZHMoKS5kZXNjZW50IC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50Owor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRF
RF9ZRVQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5l
T2Zmc2V0TWFwLmFkZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgYWJzb2x1dGVCYXNlbGluZU9mZnNl
dCk7CisgICAgICAgICAgICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlv
biA9IHF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICpp
bmxpbmVMZXZlbEJveCk7CisgICAgICAgICAgICBpZiAoYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0
aWNhbFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lID0gc3RkOjptYXgobWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5l
Qm94QmFzZWxpbmUsIGFic29sdXRlQmFzZWxpbmVPZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+YmFz
ZWxpbmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgYXV0byByb290SW5saW5lQm94TG9naWNhbFRv
cCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lIC0gcm9vdElubGlu
ZUJveC5iYXNlbGluZSgpOwogICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9v
dElubGluZUJveExvZ2ljYWxUb3ApOwogICAgIH07Ci0gICAgYWRqdXN0Um9vdElubGluZUJveFZl
cnRpY2FsUG9zaXRpb24oKTsKKyAgICBjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRp
b24oKTsKIAotICAgIGF1dG8gYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0g
WyZdIHsKLSAgICAgICAgZm9yIChhdXRvKiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2
ZUlubGluZUxldmVsQm94ZXMpIHsKKyAgICBhdXRvIGFsaWduSW5saW5lTGV2ZWxCb3hlcyA9IFsm
XSB7CisgICAgICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJ
bmxpbmVMZXZlbEJveGVzKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGlu
ZUxldmVsQm94LT5sYXlvdXRCb3goKTsKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbm1l
bnQgPSBsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7CisgICAgICAgICAgICBhdXRv
JiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveC5wYXJlbnQoKSk7CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVM
YXlvdXRVbml0IHsgfTsKLSAgICAgICAgICAgIGF1dG8gcm9vdElubGluZUJveE9mZnNldCA9IElu
bGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVu
dCkgeworICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigp
KSB7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxl
dmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxI
ZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3guc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWln
aHQoKSAvIDIpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gu
YmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9w
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQo
KSAvIDI7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNl
bGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6TGVuZ3RoOiB7CisgICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJv
eC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBm
bG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29t
cHV0ZWRMaW5lSGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZSA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJv
eC0+bG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgKHRleHQpdG9wL2JvdHRvbSBhbGlnbiB0aGVpciBsYXlvdXQgYm91bmRzLgorICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOgorICAgICAgICAgICAgICAgIGxv
Z2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5l
TGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206CisgICAgICAgICAgICAgICAgbG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgLSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6
Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHsgfTsKKyAgICAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBp
bmxpbmUgYm94LgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRv
bToKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gbGluZUJveExvZ2ljYWxIZWlnaHQgLSBp
bmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAg
cm9vdElubGluZUJveE9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWln
aHQoKSAtIGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodDsKKyAgICAgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVu
dCBpbmxpbmUgYm94LgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBsaW5lQm94LmxvZ2lj
YWxIZWlnaHQoKSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5s
aW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVU
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
bmxpbmVMZXZlbEJveC0+c2V0TG9naWNhbFRvcChsb2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGlm
IChyb290SW5saW5lQm94T2Zmc2V0ID4gMCkKLSAgICAgICAgICAgICAgICByb290SW5saW5lQm94
LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveC5sb2dpY2FsVG9wKCkgKyByb290SW5saW5lQm94
T2Zmc2V0KTsKICAgICAgICAgfQogICAgIH07Ci0gICAgYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxp
bmVMZXZlbEJveGVzKCk7Ci0gICAgbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dp
Y2FsSGVpZ2h0KTsKKyAgICBhbGlnbklubGluZUxldmVsQm94ZXMoKTsKIH0KIAogTGluZUJveCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmxpbmVCb3hGb3JMaW5lQ29udGVudChj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNw
cAppbmRleCBkMjJhZGI2NjZlZjIuLmVkZGNkNDBkN2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKQEAg
LTg2LDcgKzg2LDcgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4o
Y29uc3QgTGluZTo6UnVuJiBydW4pIGNvbnN0CiAgICAgQVNTRVJUKHJ1bi5pc1RleHQoKSB8fCBy
dW4uaXNMaW5lQnJlYWsoKSk7CiAgICAgYXV0byogcGFyZW50SW5saW5lQm94ID0gJmlubGluZUxl
dmVsQm94Rm9yTGF5b3V0Qm94KHJ1bi5sYXlvdXRCb3goKS5wYXJlbnQoKSk7CiAgICAgQVNTRVJU
KHBhcmVudElubGluZUJveC0+aXNJbmxpbmVCb3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3Mg
PSBwYXJlbnRJbmxpbmVCb3gtPmZvbnRNZXRyaWNzKCk7CisgICAgYXV0byYgZm9udE1ldHJpY3Mg
PSBwYXJlbnRJbmxpbmVCb3gtPnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKICAgICBhdXRvIHJ1bmxv
Z2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSArIHBhcmVudElubGluZUJv
eC0+YmFzZWxpbmUoKSAtIGZvbnRNZXRyaWNzLmFzY2VudCgpOwogCiAgICAgd2hpbGUgKHBhcmVu
dElubGluZUJveCAhPSBtX3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYgIXBhcmVudElubGluZUJveC0+
aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKQEAgLTEwMywxMSArMTAzLDEyIEBAIElu
bGluZVJlY3QgTGluZUJveDo6bG9naWNhbFJlY3RGb3JJbmxpbmVMZXZlbEJveChjb25zdCBCb3gm
IGxheW91dEJveCkgY29uc3QKICAgICBhdXRvKiBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxSZWN0ID0g
aW5saW5lQm94LT5sb2dpY2FsUmVjdCgpOwogICAgIGF1dG8gaW5saW5lQm94QWJzb2x1dGVsb2dp
Y2FsVG9wID0gaW5saW5lQm94LT5sb2dpY2FsVG9wKCk7Ci0KLSAgICB3aGlsZSAoaW5saW5lQm94
ICE9IG1fcm9vdElubGluZUJveC5nZXQoKSAmJiAhaW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRp
dmVBbGlnbm1lbnQoKSkgewotICAgICAgICBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JM
YXlvdXRCb3goaW5saW5lQm94LT5sYXlvdXRCb3goKS5wYXJlbnQoKSk7Ci0gICAgICAgIEFTU0VS
VChpbmxpbmVCb3gtPmlzSW5saW5lQm94KCkpOwotICAgICAgICBpbmxpbmVCb3hBYnNvbHV0ZWxv
Z2ljYWxUb3AgKz0gaW5saW5lQm94LT5sb2dpY2FsVG9wKCk7CisgICAgaWYgKCFpbmxpbmVCb3gt
Pmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7CisgICAgICAgIHdoaWxlIChpbmxpbmVC
b3ggIT0gbV9yb290SW5saW5lQm94LmdldCgpICYmICFpbmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxh
dGl2ZUFsaWdubWVudCgpKSB7CisgICAgICAgICAgICBpbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxC
b3hGb3JMYXlvdXRCb3goaW5saW5lQm94LT5sYXlvdXRCb3goKS5wYXJlbnQoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoaW5saW5lQm94LT5pc0lubGluZUJveCgpKTsKKyAgICAgICAgICAgIGlubGlu
ZUJveEFic29sdXRlbG9naWNhbFRvcCArPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4geyBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AsIGlu
bGluZUJveExvZ2ljYWxSZWN0LmxlZnQoKSwgaW5saW5lQm94TG9naWNhbFJlY3Qud2lkdGgoKSwg
aW5saW5lQm94TG9naWNhbFJlY3QuaGVpZ2h0KCkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAppbmRleCBlYWVm
MjI4MDdiZWIuLmJjNjRlN2Y5OTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaApAQCAtODcsOSArODcsOSBAQCBw
dWJsaWM6CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbXB0eTsg
fQogICAgICAgICB2b2lkIHNldElzTm9uRW1wdHkoKSB7IG1faXNFbXB0eSA9IGZhbHNlOyB9CiAK
LSAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4g
bGF5b3V0Qm94KCkuc3R5bGUoKS5mb250TWV0cmljcygpOyB9CiAgICAgICAgIFZlcnRpY2FsQWxp
Z24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCkudmVy
dGljYWxBbGlnbigpOyB9CiAgICAgICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gKm1fbGF5b3V0Qm94OyB9CisgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94LT5zdHlsZSgpOyB9CiAKICAgICAgICAgYm9vbCBp
c0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpJbmxpbmVCb3ggfHwg
bV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0KICAgICAgICAgYm9vbCBpc1Jvb3RJbmxp
bmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCmluZGV4IDZkOWUyMWJmOGRhMC4uOTNmY2VkMDdl
ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAK
ICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2RlZmluZSBBTExPV19J
TUFHRVMgMAorI2RlZmluZSBBTExPV19JTUFHRVMgMQogI2RlZmluZSBBTExPV19BTExfUkVQTEFD
RUQgMAogI2RlZmluZSBBTExPV19JTkxJTkVfQkxPQ0sgMAogCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5u
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9s
YXlvdXRfdGVzdF9ydW5uZXIucHkKaW5kZXggMWZlNjBiOGMwZDFjLi4xYzdiMWRmMTdiM2IgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L2xheW91dF90ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkKQEAgLTE2Niw2ICsxNjYs
NyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2Vs
Zi5fbWFya19pbnRlcnJ1cHRlZF90ZXN0c19hc19za2lwcGVkKHJ1bl9yZXN1bHRzKQogICAgICAg
ICAgICAgICAgIHJhaXNlIFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbihtZXNzYWdlKQogCisg
ICAgICAgIHNlbGYuX29wdGlvbnMuZXhpdF9hZnRlcl9uX2ZhaWx1cmVzID0gTm9uZQogICAgICAg
ICBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdCgKICAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuZXhpdF9hZnRlcl9uX2ZhaWx1cmVzLAogICAgICAgICAgICAgcnVuX3Jlc3VsdHMudW5leHBl
Y3RlZF9mYWlsdXJlcywK
</data>
<flag name="commit-queue"
          id="429300"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412820</attachid>
            <date>2020-10-30 17:39:10 -0700</date>
            <delta_ts>2020-10-30 20:49:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>30308</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">Y29tbWl0IDZiNDExZWRhNDcxMmNjMTY1NzU0YzMzOTFiZDgyODM5MGU5OThhNmEKQXV0aG9yOiBB
bGFuIEtpbnNsZXkgPHphbGFuQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgT2N0IDMwIDE3OjA1OjAw
IDIwMjAgLTA3MDAKCiAgICBmb29iYXIKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFiYzM5NTU5MTg1Li5iODQy
MzQ2YTFlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0xMC0zMCAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gU3BsaXQgaW5s
aW5lIGxldmVsIGJveCBhbGlnbm1lbnQgcHJvY2VzcyBpbnRvIG11bHRpcGxlIHBoYXNlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mzk3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5saW5lIGxldmVs
IGJveCBhbGlnbm1lbnQgaW5zaWRlIHRoZSBsaW5lIGJveCBpcyBkZXNjcmliZWQgYXQgaHR0cHM6
Ly93d3cudzMub3JnL1RSL2Nzcy1pbmxpbmUtMy8jbGluZS1sYXlvdXQuCisgICAgICAgIFRoZSBh
bGlnbm1lbnQgcHJvY2VzcyBpbnZvbHZlcyAzIGRpc3RpbmN0IHN0ZXBzOgorICAgICAgICAxLiBD
b21wdXRpbmcgdGhlIGxpbmUgYm94J3MgbG9naWNhbCBoZWlnaHQuIFRoaXMgc3RlcCBzb2xlbHkg
dXNlcyB0aGUgbGF5b3V0IGJvdW5kcyBnZW9tZXRyeSBvZiB0aGUgaW5saW5lIGxldmVsIGJveGVz
LgorICAgICAgICAyLiBGaW5kaW5nIHRoZSByb290IGlubGluZSBib3ggdmVydGljYWwgcG9zaXRp
b24uIFRoaXMgc3RlcCBpcyBzb21ld2hhdCBzaW1pbGFyIHRvIHRoZSBmaW5hbCwgYWxpZ25tZW50
IHBoYXNlIGJ1dCBpbnN0ZWFkIG9mCisgICAgICAgIHRoZSBsb2dpY2FsIHRvcCwgaGVyZSB3ZSBj
b21wdXRlIHRoZSBiYXNlbGluZSBvZmZzZXRzLiBJdCBoZWxwcyB0byBmaWd1cmUgb3V0IHRoZSBy
b290IGlubGluZSBib3gncyBiYXNlbGluZSBwb3NpdGluZyBpbnNpZGUgdGhlIGxpbmUgYm94LiAg
CisgICAgICAgIDMuIEFsaWduaW5nIHRoZSBpbmxpbmUgbGV2ZWwgYm94ZXMgYnkgY29tcHV0aW5n
IHRoZWlyIGxvZ2ljYWwgdG9wIHBvc2l0aW9uLgorCisgICAgICAgIFRoZXNlIDMgc3RlcHMgYXJl
IGltcGxlbWVudGVkIGJ5IHRoZSBmb2xsb3dpbmcgMyBmdW5jdGlvbnM6IAorICAgICAgICAxLiBj
b21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoKQorICAgICAgICAyLiBjb21wdXRlUm9vdElubGlu
ZUJveFZlcnRpY2FsUG9zaXRpb24oKQorICAgICAgICAzLiBhbGlnbklubGluZUxldmVsQm94ZXMo
KQorICAgICAgICBXaGlsZSBzb21lIG9mIHRoZSBjb2RlIGluIHRoZXNlIGZ1bmN0aW9ucyBtYXkg
bG9vayByZWR1bmRhbnQsIHRoZXkgd29yayB3aXRoIGRpZmZlcmVudCB0eXBlIG9mIGdlb21ldHJp
ZXMgKGxheW91dCBib3VuZHMgdnMuIG5vcm1hbCBhc2NlbnQvZGVzY2VudC9sb2dpY2FsIGhlaWdo
dCkuCisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1
aWxkZXI6OnNldFZlcnRpY2FsR2VvbWV0cnlGb3JJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWxpZ25JbmxpbmVMZXZlbEJveGVzVmVy
dGljYWxseUFuZENvbXB1dGVMaW5lQm94SGVpZ2h0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveDo6bG9naWNhbFJlY3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUJveDo6bG9naWNhbFJlY3RGb3JJbmxpbmVMZXZlbEJveCBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6c3R5bGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6Zm9u
dE1ldHJpY3MgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTEwLTI5ICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEltcGxlbWVudCBv
dXRwdXRMaW5lVHJlZUFuZE1hcmsgZm9yIElGQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAwYmY5MWRmMDBhYzQuLjJmZDBjZjBkZTVhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHNldFZlcnRpY2FsR2Vv
bWV0cnlGb3JJbmxpbmVCb3goTGluZUJveDo6SW5saW5lTGV2ZWxCb3gmKSBjb25zdDsKICAgICB2
b2lkIGNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYsIGNvbnN0IExpbmU6OlJ1bkxp
c3QmKTsKLSAgICB2b2lkIGFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRl
TGluZUJveEhlaWdodChMaW5lQm94Jik7CisgICAgdm9pZCBjb21wdXRlTGluZUJveEhlaWdodEFu
ZGFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkoTGluZUJveCYpOwogCiAgICAgY29uc3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IEJveCYgcm9vdEJveCgp
IGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOyB9CkBAIC0xNjIsMTcg
KzE2MiwyMSBAQCBMaW5lQm94IExpbmVCb3hCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRl
cjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQogICAgIGlmIChhdXRvIGhvcml6b250YWxBbGln
bm1lbnRPZmZzZXQgPSBMYXlvdXQ6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQocnVucywgcm9v
dEJveCgpLnN0eWxlKCkudGV4dEFsaWduKCksIGxpbmVMb2dpY2FsV2lkdGgsIGNvbnRlbnRMb2dp
Y2FsV2lkdGgsIGxpbmVDb250ZW50LmlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkpCiAgICAg
ICAgIGxpbmVCb3guc2V0SG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCgqaG9yaXpvbnRhbEFsaWdu
bWVudE9mZnNldCk7CiAgICAgY29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhsaW5lQm94LCBydW5z
KTsKLSAgICBhbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hI
ZWlnaHQobGluZUJveCk7CisgICAgY29tcHV0ZUxpbmVCb3hIZWlnaHRBbmRhbGlnbklubGluZUxl
dmVsQm94ZXNWZXJ0aWNhbGx5KGxpbmVCb3gpOwogICAgIHJldHVybiBsaW5lQm94OwogfQogCiB2
b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbEdlb21ldHJ5Rm9ySW5saW5lQm94KExpbmVC
b3g6OklubGluZUxldmVsQm94JiBpbmxpbmVMZXZlbEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQo
aW5saW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSB8fCBpbmxpbmVMZXZlbEJveC5pc0xpbmVCcmVh
a0JveCgpKTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IGlubGluZUxldmVsQm94LmZvbnRNZXRy
aWNzKCk7CisgICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVMZXZlbEJveC5zdHlsZSgpLmZv
bnRNZXRyaWNzKCk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQgPSBmb250TWV0cmljcy5h
c2NlbnQoKTsKICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNj
ZW50KCk7CiAgICAgYXV0byBsb2dpY2FsSGVpZ2h0ID0gYXNjZW50ICsgZGVzY2VudDsKKyAgICAv
LyBXZSBuZWVkIGZsb29yL2NlaWwgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBwb3Np
dGlvbmluZy4KKyAgICBpbmxpbmVMZXZlbEJveC5zZXRCYXNlbGluZShmbG9vcmYoYXNjZW50KSk7
CisgICAgaW5saW5lTGV2ZWxCb3guc2V0RGVzY2VudChjZWlsKGRlc2NlbnQpKTsKKyAgICBpbmxp
bmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOwogCiAgICAgLy8gRklY
TUU6IEFkanVzdCBsYXlvdXQgYm91bmRzIHdpdGggZmFsbGJhY2sgZm9udCB3aGVuIGFwcGxpY2Fi
bGUuCiAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKS5zdHlsZSgp
OwpAQCAtMTkyLDE0ICsxOTYsOCBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbEdl
b21ldHJ5Rm9ySW5saW5lQm94KExpbmVCb3g6OklubGluZUxldmVsQm94JiBpbgogICAgICAgICBh
c2NlbnQgKz0gaGFsZkxlYWRpbmc7CiAgICAgICAgIGRlc2NlbnQgKz0gaGFsZkxlYWRpbmc7CiAg
ICAgfQotICAgIC8vIFdlIG5lZWQgdGhpcyB0byBtYXRjaCBsZWdhY3kgbGF5b3V0IGludGVncmFs
IHBvc2l0aW9uaW5nLgotICAgIGFzY2VudCA9IGZsb29yZihhc2NlbnQpOwotICAgIGRlc2NlbnQg
PSBjZWlsKGRlc2NlbnQpOwotCi0gICAgaW5saW5lTGV2ZWxCb3guc2V0TGF5b3V0Qm91bmRzKExp
bmVCb3g6OklubGluZUxldmVsQm94OjpMYXlvdXRCb3VuZHMgeyBhc2NlbnQsIGRlc2NlbnQgfSk7
Ci0gICAgaW5saW5lTGV2ZWxCb3guc2V0QmFzZWxpbmUoYXNjZW50KTsKLSAgICBpbmxpbmVMZXZl
bEJveC5zZXREZXNjZW50KGRlc2NlbnQpOwotICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxI
ZWlnaHQobG9naWNhbEhlaWdodCk7CisgICAgLy8gV2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNo
IGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCisgICAgaW5saW5lTGV2ZWxCb3gu
c2V0TGF5b3V0Qm91bmRzKExpbmVCb3g6OklubGluZUxldmVsQm94OjpMYXlvdXRCb3VuZHMgeyBm
bG9vcmYoYXNjZW50KSwgY2VpbChkZXNjZW50KSB9KTsKIH0KIAogdm9pZCBMaW5lQm94QnVpbGRl
cjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5l
OjpSdW5MaXN0JiBydW5zKQpAQCAtMjk2LDI3ICsyOTQsMzIgQEAgdm9pZCBMaW5lQm94QnVpbGRl
cjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5l
OjpSdW4KICAgICB9CiB9CiAKLXZvaWQgTGluZUJveEJ1aWxkZXI6OmFsaWduSW5saW5lTGV2ZWxC
b3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChMaW5lQm94JiBsaW5lQm94KQor
dm9pZCBMaW5lQm94QnVpbGRlcjo6Y29tcHV0ZUxpbmVCb3hIZWlnaHRBbmRhbGlnbklubGluZUxl
dmVsQm94ZXNWZXJ0aWNhbGx5KExpbmVCb3gmIGxpbmVCb3gpCiB7CiAgICAgLy8gVGhpcyBmdW5j
dGlvbiAocGFydGlhbGx5KSBpbXBsZW1lbnRzOgogICAgIC8vIDIuMi4gTGF5b3V0IFdpdGhpbiBM
aW5lIEJveGVzCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1pbmxpbmUtMy8jbGlu
ZS1sYXlvdXQKKyAgICAvLyAxLiBDb21wdXRlIHRoZSBsaW5lIGJveCBoZWlnaHQgdXNpbmcgdGhl
IGxheW91dCBib3VuZHMgZ2VvbWV0cnkuIFRoaXMgaGVpZ2h0IGNvbXB1dGF0aW9uIHN0cmljdGx5
IHVzZXMgbGF5b3V0IGJvdW5kcyBhbmQgbm90IG5vcm1hbCBpbmxpbmUgbGV2ZWwgYm94IGdlb21l
dHJpZXMuCisgICAgLy8gMi4gQ29tcHV0ZSB0aGUgYmFzZWxpbmUvbG9naWNhbCB0b3AgcG9zaXRp
b24gb2YgdGhlIHJvb3QgaW5saW5lIGJveC4gQWxpZ25lZCBib3hlcyBwdXNoIHRoZSByb290IGlu
bGluZSBib3ggYXJvdW5kIGluc2lkZSB0aGUgbGluZSBib3guCisgICAgLy8gMy4gRmluYWxseSBh
bGlnbiB0aGUgaW5saW5lIGxldmVsIGJveGVzIHVzaW5nIChtb3N0bHkpIG5vcm1hbCBpbmxpbmUg
bGV2ZWwgYm94IGdlb21ldHJpZXMuCiAgICAgYXV0byBxdWlya3MgPSBmb3JtYXR0aW5nQ29udGV4
dCgpLnF1aXJrcygpOwotICAgIFZlY3RvcjxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCo+IGxpbmVC
b3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXM7Ci0gICAgc3RydWN0IEFic29sdXRlR2VvbWV0cnkg
ewotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHRvcCB7IDAgfTsKLSAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBib3R0b20geyAwIH07Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVP
ZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lIHsgMCB9OwotICAgICAgICBjb25zdCBMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveCogaW5saW5lTGV2ZWxCb3ggeyBudWxscHRyIH07Ci0gICAgfTsK
LSAgICBIYXNoTWFwPExpbmVCb3g6OklubGluZUxldmVsQm94KiwgQWJzb2x1dGVHZW9tZXRyeT4g
aW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFwOwogICAgIGF1dG8mIHJvb3RJbmxpbmVC
b3ggPSBsaW5lQm94LnJvb3RJbmxpbmVCb3goKTsKLSAgICBpbmxpbmVMZXZlbEJveEFic29sdXRl
R2VvbWV0cnlNYXAuYWRkKCZyb290SW5saW5lQm94LCBBYnNvbHV0ZUdlb21ldHJ5IHsgeyB9LCBy
b290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpLCB7IH0sICZyb290SW5saW5lQm94
IH0pOwotICAgIGF1dG8gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUg
PSByb290SW5saW5lQm94LmlzRW1wdHkoKSA/IElubGluZUxheW91dFVuaXQoKSA6IHJvb3RJbmxp
bmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50OwogCi0gICAgYXV0byBhbGlnbklubGluZUJveFJl
bGF0aXZlSW5saW5lTGV2ZWxCb3hlcyA9IFsmXSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgcHJv
cGVyIHN1cHBvcnQgZm9yIGNhc2VzIHdoZW4gdGhlIGlubGluZSBib3ggd2l0aCBsaW5lIGJveCBy
ZWxhdGl2ZSBhbGlnbm1lbnQgaGFzIGEgY2hpbGQgaW5saW5lIGJveAotICAgICAgICAvLyB3aXRo
IG5vbi1saW5lIGJveCByZWxhdGl2ZSBhbGlnbm1lbnQuCisgICAgYXV0byBjb21wdXRlTGluZUJv
eExvZ2ljYWxIZWlnaHQgPSBbJl0geworICAgICAgICBWZWN0b3I8TGluZUJveDo6SW5saW5lTGV2
ZWxCb3gqPiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzOworICAgICAgICAvLyBMaW5l
IGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMgYmFzZWQgb24gdGhlIGxheW91dCBib3VuZHMgb2Yg
dGhlIGlubGluZSBib3hlcyBhbmQgbm90IHRoZWlyIGxvZ2ljYWwgKGFzY2VudC9kZXNjZW50KSBk
aW1lbnNpb25zLgorICAgICAgICBzdHJ1Y3QgQWJzb2x1dGVUb3BBbmRCb3R0b20geworICAgICAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AgeyAwIH07CisgICAgICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IGJvdHRvbSB7IDAgfTsKKyAgICAgICAgfTsKKyAgICAgICAgSGFzaE1hcDxMaW5lQm94
OjpJbmxpbmVMZXZlbEJveCosIEFic29sdXRlVG9wQW5kQm90dG9tPiBpbmxpbmVMZXZlbEJveEFi
c29sdXRlVG9wQW5kQm90dG9tTWFwOworCisgICAgICAgIGF1dG8gcm9vdEFic29sdXRlVG9wQW5k
Qm90dG9tID0gQWJzb2x1dGVUb3BBbmRCb3R0b20geyB7IH0sIHJvb3RJbmxpbmVCb3guaXNFbXB0
eSgpID8gSW5saW5lTGF5b3V0VW5pdCgpIDogcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5o
ZWlnaHQoKSB9OworICAgICAgICBpbmxpbmVMZXZlbEJveEFic29sdXRlVG9wQW5kQm90dG9tTWFw
LmFkZCgmcm9vdElubGluZUJveCwgcm9vdEFic29sdXRlVG9wQW5kQm90dG9tKTsKKworICAgICAg
ICBhdXRvIG1pbmltdW1Mb2dpY2FsVG9wID0gcm9vdEFic29sdXRlVG9wQW5kQm90dG9tLnRvcDsK
KyAgICAgICAgYXV0byBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IHJvb3RBYnNvbHV0ZVRvcEFuZEJv
dHRvbS5ib3R0b207CisKICAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVC
b3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgewogICAgICAgICAgICAgYXV0byYgbGF5b3V0
Qm94ID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJveCgpOwogICAgICAgICAgICAgaWYgKGlubGlu
ZUxldmVsQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkgewpAQCAtMzI0LDEyNCAr
MzI3LDE5MCBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0
aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQoTGluZQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0g
bGluZUJveC5pbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpOwor
ICAgICAgICAgICAgLy8gTG9naWNhbCB0b3AgaXMgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxp
bmUgYm94J3MgbGF5b3V0IGJvdW5kcy4KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxv
Z2ljYWwgdG9wIGlzIG5vdCB0aGUgZmluYWwgbG9naWNhbCB0b3Agb2YgdGhlIGlubGluZSBsZXZl
bCBib3guCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBsb2dpY2FsIHRvcCBpbiB0aGUgY29u
dGV4dCBvZiB0aGUgbGF5b3V0IGJvdW5kcyBnZW9tZXRyeSB3aGljaCBtYXkgYmUgdmVyeSBkaWZm
ZXJlbnQgZnJvbSB0aGUgaW5saW5lIGJveCdzIG5vcm1hbCBnZW9tZXRyeS4KICAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAgICAgYXV0
byBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IElubGluZUxheW91dFVuaXQgeyB9
OwogICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7
Ci0gICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgotICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVs
Qm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6IHsKLSAgICAgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgVGV4dFRvcCBhbGlnbnMgd2l0aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0
cmljcyB0b3AgKGFzY2VudCkgYW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyB0b3AuCi0gICAgICAg
ICAgICAgICAgYXV0byBwYXJlbnRBc2NlbnQgPSBwYXJlbnRJbmxpbmVCb3guZm9udE1ldHJpY3Mo
KS5hc2NlbnQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxU
b3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gcGFyZW50QXNjZW50
OwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsVG9w
OwotICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFy
ZW50QXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6VGV4dEJvdHRvbTogewotICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBUZXh0
Qm90dG9tIGFsaWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAo
ZGVzY2VudCkgYW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCi0gICAgICAgICAgICAg
ICAgYXV0byYgcGFyZW50Rm9udE1ldHJpY3MgPSBwYXJlbnRJbmxpbmVCb3guZm9udE1ldHJpY3Mo
KTsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExheW91dEJvdW5kcyA9IHBh
cmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVu
dElubGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVp
Z2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudEZvbnRN
ZXRyaWNzLmRlc2NlbnQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGxheW91dEJvdW5kcyA9IGlu
bGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9w
ID0gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSAtIGxheW91dEJvdW5kcy5oZWlnaHQoKTsK
LSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxheW91
dEJvdW5kcy5kZXNjZW50IC0gcGFyZW50Rm9udE1ldHJpY3MuZGVzY2VudCgpOworICAgICAgICAg
ICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTogeworICAgICAgICAgICAgICAgIGF1dG8g
bG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKLSAgICAgICAgICAgICAgICBhdXRv
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LmZvbnRNZXRyaWNzKCku
eEhlaWdodCgpIC8gMjsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5l
Qm94LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwotICAg
ICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMo
KS5hc2NlbnQ7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiAr
IHBhcmVudElubGluZUJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMjsKKyAg
ICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygp
LmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxp
Z246OkJhc2VsaW5lTWlkZGxlOiB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhl
aWdodCgpIC8gMjsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94
LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwotICAgICAg
ICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5h
c2NlbnQ7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpMZW5ndGg6IHsKLSAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IGxh
eW91dEJveC5zdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gaW5saW5lTGV2
ZWxCb3gtPnN0eWxlKCk7CiAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJv
bVBhcmVudEJhc2VsaW5lID0gZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS52ZXJ0aWNhbEFsaWdu
TGVuZ3RoKCksIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKSArIGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFy
ZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2Vs
aW5lOwotICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
bG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOiB7CisgICAgICAgICAgICAgICAgLy8g
Tm90ZSB0aGF0IHRleHQtdG9wIGFsaWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRy
aWNzIHRvcCAoYXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIHRvcC4KKyAgICAgICAg
ICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2Vu
dCAtIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9t
OiB7CisgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRleHQtYm90dG9tIGFsaWducyB3aXRo
IHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAoZGVzY2VudCkgYW5kIG5vdCB0
aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCisgICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxp
bmVCb3hMYXlvdXRCb3VuZHMgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCk7CisgICAg
ICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tID0gcGFyZW50SW5s
aW5lQm94TGF5b3V0Qm91bmRzLmhlaWdodCgpIC0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRz
LmRlc2NlbnQgKyBwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpLnZhbHVlT3IoSW5saW5lTGF5b3V0
VW5pdCgpKTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94TG9n
aWNhbEJvdHRvbSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlubGluZUxldmVsQm94
LT5zZXRMb2dpY2FsVG9wKGxvZ2ljYWxUb3ApOwotICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxp
bmVCb3hBYnNvbHV0ZUdlb21ldHJ5ID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFw
LmdldCgmcGFyZW50SW5saW5lQm94KTsKLSAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVMb2dpY2Fs
VG9wID0gcGFyZW50SW5saW5lQm94QWJzb2x1dGVHZW9tZXRyeS50b3AgKyBsb2dpY2FsVG9wOwor
ICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbSA9IGlu
bGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gp
OworICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hB
YnNvbHV0ZVRvcEFuZEJvdHRvbS50b3AgKyBsb2dpY2FsVG9wOwogICAgICAgICAgICAgYXV0byBh
YnNvbHV0ZUxvZ2ljYWxCb3R0b20gPSBhYnNvbHV0ZUxvZ2ljYWxUb3AgKyBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGFic29sdXRlQmFz
ZWxpbmVPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gcGFyZW50SW5saW5lQm94QWJz
b2x1dGVHZW9tZXRyeS5iYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgKyBi
YXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKLSAgICAgICAgICAgIGlubGluZUxldmVs
Qm94QWJzb2x1dGVHZW9tZXRyeU1hcC5hZGQoaW5saW5lTGV2ZWxCb3guZ2V0KCksIEFic29sdXRl
R2VvbWV0cnkgeyBhYnNvbHV0ZUxvZ2ljYWxUb3AsIGFic29sdXRlTG9naWNhbEJvdHRvbSwgYWJz
b2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUsIGlubGluZUxldmVs
Qm94LmdldCgpIH0pOwotCi0gICAgICAgICAgICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94VmVy
dGljYWxQb3NpdGlvbiA9IHF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94
KGxpbmVCb3gsICppbmxpbmVMZXZlbEJveCk7Ci0gICAgICAgICAgICBpZiAoYWZmZWN0c1Jvb3RJ
bmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uKQotICAgICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZz
ZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gc3RkOjptYXgobWF4aW11bVRvcE9mZnNldEZy
b21Sb290SW5saW5lQm94QmFzZWxpbmUsIGFic29sdXRlQmFzZWxpbmVPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lICsgaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudCk7
Ci0gICAgICAgIH0KLSAgICB9OwotICAgIGFsaWduSW5saW5lQm94UmVsYXRpdmVJbmxpbmVMZXZl
bEJveGVzKCk7Ci0KLSAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gSW5saW5lTGF5b3V0
VW5pdCB7IH07Ci0gICAgYXV0byBpbmxpbmVCb3hSZWxhdGl2ZUxvZ2ljYWxIZWlnaHQgPSBJbmxp
bmVMYXlvdXRVbml0IHsgfTsKLSAgICBhdXRvIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCA9
IFsmXSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbGF5b3V0IGJvdW5kcyBi
YXNlZCBsaW5lIGJveCBoZWlnaHQuCi0gICAgICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3AgPSBP
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07Ci0gICAgICAgIGF1dG8gbWF4aW11bUxvZ2lj
YWxCb3R0b20gPSBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07Ci0gICAgICAgIGZvciAo
YXV0byBhYnNvbHV0ZUdlb21ldHJ5IDogaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFw
LnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBhdXRvJiBpbmxpbmVMZXZlbEJveCA9ICphYnNvbHV0
ZUdlb21ldHJ5LmlubGluZUxldmVsQm94OwotICAgICAgICAgICAgaWYgKCFxdWlya3Muc2hvdWxk
SW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJveChsaW5lQm94LCBpbmxpbmVMZXZlbEJveCkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9
IHN0ZDo6bWluKG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlT3IoYWJzb2x1dGVHZW9tZXRyeS50b3Ap
LCBhYnNvbHV0ZUdlb21ldHJ5LnRvcCk7Ci0gICAgICAgICAgICBtYXhpbXVtTG9naWNhbEJvdHRv
bSA9IHN0ZDo6bWF4KG1heGltdW1Mb2dpY2FsQm90dG9tLnZhbHVlT3IoYWJzb2x1dGVHZW9tZXRy
eS5ib3R0b20pLCBhYnNvbHV0ZUdlb21ldHJ5LmJvdHRvbSk7CisgICAgICAgICAgICBpbmxpbmVM
ZXZlbEJveEFic29sdXRlVG9wQW5kQm90dG9tTWFwLmFkZChpbmxpbmVMZXZlbEJveC5nZXQoKSwg
QWJzb2x1dGVUb3BBbmRCb3R0b20geyBhYnNvbHV0ZUxvZ2ljYWxUb3AsIGFic29sdXRlTG9naWNh
bEJvdHRvbSB9KTsKKyAgICAgICAgICAgIC8vIFN0cmV0Y2ggdGhlIG1pbi9tYXggYWJzb2x1dGUg
dmFsdWVzIGlmIGFwcGxpY2FibGUuCisgICAgICAgICAgICBpZiAocXVpcmtzLnNob3VsZElubGlu
ZUxldmVsQm94U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmlubGluZUxldmVsQm94KSkgeworICAg
ICAgICAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9wID0gc3RkOjptaW4obWluaW11bUxvZ2ljYWxU
b3AsIGFic29sdXRlTG9naWNhbFRvcCk7CisgICAgICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxC
b3R0b20gPSBzdGQ6Om1heChtYXhpbXVtTG9naWNhbEJvdHRvbSwgYWJzb2x1dGVMb2dpY2FsQm90
dG9tKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpbmxpbmVCb3hSZWxhdGl2
ZUxvZ2ljYWxIZWlnaHQgPSBtYXhpbXVtTG9naWNhbEJvdHRvbS52YWx1ZU9yKElubGluZUxheW91
dFVuaXQoKSkgLSBtaW5pbXVtTG9naWNhbFRvcC52YWx1ZU9yKElubGluZUxheW91dFVuaXQoKSk7
Ci0gICAgICAgIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gaW5saW5lQm94UmVsYXRpdmVMb2dpY2Fs
SGVpZ2h0OwotICAgICAgICAvLyBOb3cgc3RyZXRjaCB0aGUgbGluZSBib3ggd2l0aCB0aGUgbGlu
ZSBib3ggcmVsYXRpdmUgaW5saW5lIGxldmVsIGJveGVzLgorICAgICAgICAvLyBUaGUgbGluZSBi
b3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGFzIGZvbGxvd3M6CisgICAgICAgIC8vIDEuIFN0cmV0
Y2ggdGhlIGxpbmUgYm94IHdpdGggdGhlIG5vbi1saW5lLWJveCByZWxhdGl2ZSBhbGlnbmVkIGlu
bGluZSBib3ggYWJzb2x1dGUgdG9wIGFuZCBib3R0b20gdmFsdWVzLgorICAgICAgICAvLyAyLiBD
aGVjayBpZiB0aGUgbGluZSBib3ggcmVsYXRpdmUgYWxpZ25lZCBpbmxpbmUgYm94ZXMgKHRvcCwg
Ym90dG9tIGV0YykgaGF2ZSBlbm91Z2ggcm9vbSBhbmQgc3RyZXRjaCB0aGUgbGluZSBib3ggZnVy
dGhlciBpZiBuZWVkZWQuCisgICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBtYXhp
bXVtTG9naWNhbEJvdHRvbSAtIG1pbmltdW1Mb2dpY2FsVG9wOwogICAgICAgICBmb3IgKGF1dG8q
IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94IDogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2
ZWxCb3hlcykgewogICAgICAgICAgICAgaWYgKCFxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hT
dHJldGNoTGluZUJveChsaW5lQm94LCAqbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3gpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbGluZUJveExvZ2ljYWxIZWln
aHQgPSBzdGQ6Om1heChsaW5lQm94TG9naWNhbEhlaWdodCwgbGluZUJveFJlbGF0aXZlSW5saW5l
TGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpKTsKICAgICAgICAgfQorICAgICAgICBs
aW5lQm94LnNldExvZ2ljYWxIZWlnaHQobGluZUJveExvZ2ljYWxIZWlnaHQpOwogICAgIH07CiAg
ICAgY29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0KCk7CiAKLSAgICBhdXRvIGFkanVzdFJvb3RJ
bmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBzdHJldGNoaW5nIGlubGluZSBib3hlcyBhcmUgbm90
IGJhc2VsaW5lIGFsaWduZWQuCi0gICAgICAgIGF1dG8gcm9vdElubGluZUJveExvZ2ljYWxUb3Ag
PSBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSAtIHJvb3RJbmxpbmVC
b3gubGF5b3V0Qm91bmRzKCkuYXNjZW50OworICAgIGF1dG8gY29tcHV0ZVJvb3RJbmxpbmVCb3hW
ZXJ0aWNhbFBvc2l0aW9uID0gWyZdIHsKKyAgICAgICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVM
ZXZlbEJveCosIElubGluZUxheW91dFVuaXQ+IGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGlu
ZU9mZnNldE1hcDsKKyAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0
TWFwLmFkZCgmcm9vdElubGluZUJveCwgSW5saW5lTGF5b3V0VW5pdCB7IH0pOworCisgICAgICAg
IGF1dG8gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSByb290SW5s
aW5lQm94LmlzRW1wdHkoKSA/IElubGluZUxheW91dFVuaXQoKSA6IHJvb3RJbmxpbmVCb3gubGF5
b3V0Qm91bmRzKCkuYXNjZW50OworCisgICAgICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3gg
OiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
YWJzb2x1dGVCYXNlbGluZU9mZnNldCA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgICAgICAg
ICAgaWYgKCFpbmxpbmVMZXZlbEJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsK
KyAgICAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0
Qm94KCk7CisgICAgICAgICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0gbGluZUJveC5p
bmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpOworICAgICAgICAg
ICAgICAgIGF1dG8gYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBJbmxpbmVMYXlv
dXRVbml0IHsgfTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5saW5lTGV2ZWxCb3gtPnZl
cnRpY2FsQWxpZ24oKSkgeworICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFz
ZWxpbmU6CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2Vs
aW5lID0geyB9OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxv
Z2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxCb3gtPmxheW91
dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5zdHlsZSgpLmZvbnRNZXRy
aWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0
RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAt
IGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZU1pZGRsZTogeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVp
Z2h0KCkgLyAyOworICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRC
YXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZl
bEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gaW5saW5lTGV2ZWxCb3gtPnN0eWxlKCk7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbk9mZnNldCA9IGZsb2F0VmFs
dWVGb3JMZW5ndGgoc3R5bGUudmVydGljYWxBbGlnbkxlbmd0aCgpLCBzdHlsZS5jb21wdXRlZExp
bmVIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZy
b21QYXJlbnRCYXNlbGluZSA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGlu
ZSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWdu
OjpUZXh0VG9wOgorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRC
YXNlbGluZSA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgorICAgICAgICAgICAgICAg
ICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhYnNvbHV0
ZUJhc2VsaW5lT2Zmc2V0ID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFw
LmdldCgmcGFyZW50SW5saW5lQm94KSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5l
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxl
dmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OlRvcDogeworICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0
ID0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuYXNjZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206
IHsKKyAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVCYXNlbGluZU9mZnNldCA9IGlubGluZUxl
dmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gcm9vdElubGluZUJveC5sYXlvdXRCb3Vu
ZHMoKS5kZXNjZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hB
YnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmFkZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgYWJzb2x1
dGVCYXNlbGluZU9mZnNldCk7CisgICAgICAgICAgICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94
VmVydGljYWxQb3NpdGlvbiA9IHF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5l
Qm94KGxpbmVCb3gsICppbmxpbmVMZXZlbEJveCk7CisgICAgICAgICAgICBpZiAoYWZmZWN0c1Jv
b3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIG1heGltdW1Ub3BP
ZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gc3RkOjptYXgobWF4aW11bVRvcE9mZnNl
dEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUsIGFic29sdXRlQmFzZWxpbmVPZmZzZXQgKyBpbmxp
bmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50KTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5s
aW5lQm94QmFzZWxpbmUgLSByb290SW5saW5lQm94LmJhc2VsaW5lKCk7CiAgICAgICAgIHJvb3RJ
bmxpbmVCb3guc2V0TG9naWNhbFRvcChyb290SW5saW5lQm94TG9naWNhbFRvcCk7CiAgICAgfTsK
LSAgICBhZGp1c3RSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbigpOworICAgIGNvbXB1dGVS
b290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbigpOwogCi0gICAgYXV0byBhbGlnbkxpbmVCb3hS
ZWxhdGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAgICAgICBmb3IgKGF1dG8qIGlubGlu
ZUxldmVsQm94IDogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlcykgeworICAgIGF1dG8g
YWxpZ25JbmxpbmVMZXZlbEJveGVzID0gWyZdIHsKKyAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVM
ZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgewogICAgICAgICAg
ICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJveCgpOwotICAgICAg
ICAgICAgYXV0byB2ZXJ0aWNhbEFsaWdubWVudCA9IGxheW91dEJveC5zdHlsZSgpLnZlcnRpY2Fs
QWxpZ24oKTsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGxpbmVCb3guaW5s
aW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKTsKICAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAgICAgYXV0
byByb290SW5saW5lQm94T2Zmc2V0ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAg
ICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGlubGlu
ZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6QmFzZWxpbmU6CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGlu
ZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogewor
ICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IChpbmxpbmVMZXZlbEJveC0+bG9naWNhbEhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5z
dHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZy
b21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxp
bmVMZXZlbEJveC0+bG9naWNhbEhlaWdodCgpIC8gMjsKKyAgICAgICAgICAgICAgICBsb2dpY2Fs
VG9wID0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBh
cmVudEJhc2VsaW5lOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6IHsKKyAgICAgICAgICAgICAgICBh
dXRvJiBzdHlsZSA9IGlubGluZUxldmVsQm94LT5zdHlsZSgpOworICAgICAgICAgICAgICAgIGF1
dG8gdmVydGljYWxBbGlnbk9mZnNldCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUudmVydGlj
YWxBbGlnbkxlbmd0aCgpLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7CisgICAgICAgICAg
ICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gdmVydGljYWxB
bGlnbk9mZnNldCArIGlubGluZUxldmVsQm94LT5sb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAg
ICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCAodGV4dCl0b3AvYm90dG9tIGFsaWdu
IHRoZWlyIGxheW91dCBib3VuZHMuCisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRl
eHRUb3A6CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRv
bToKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxvZ2ljYWxI
ZWlnaHQoKSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5saW5l
TGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0g
eyB9OworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljYWwgdG9wIGlzIG5v
dCByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3guCisgICAgICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVM
ZXZlbEJveC0+YmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBsaW5lQm94TG9naWNhbEhlaWdodCAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5o
ZWlnaHQoKTsKLSAgICAgICAgICAgICAgICByb290SW5saW5lQm94T2Zmc2V0ID0gaW5saW5lTGV2
ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpIC0gaW5saW5lQm94UmVsYXRpdmVMb2dpY2Fs
SGVpZ2h0OworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljYWwgdG9wIGlz
IG5vdCByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3guCisgICAgICAgICAgICAgICAg
bG9naWNhbFRvcCA9IGxpbmVCb3gubG9naWNhbEhlaWdodCgpIC0gaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmRlc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlubGluZUxldmVsQm94LT5zZXRMb2dpY2FsVG9wKGxv
Z2ljYWxUb3ApOwotICAgICAgICAgICAgaWYgKHJvb3RJbmxpbmVCb3hPZmZzZXQgPiAwKQotICAg
ICAgICAgICAgICAgIHJvb3RJbmxpbmVCb3guc2V0TG9naWNhbFRvcChyb290SW5saW5lQm94Lmxv
Z2ljYWxUb3AoKSArIHJvb3RJbmxpbmVCb3hPZmZzZXQpOwogICAgICAgICB9CiAgICAgfTsKLSAg
ICBhbGlnbkxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMoKTsKLSAgICBsaW5lQm94LnNl
dExvZ2ljYWxIZWlnaHQobGluZUJveExvZ2ljYWxIZWlnaHQpOworICAgIGFsaWduSW5saW5lTGV2
ZWxCb3hlcygpOwogfQogCiBMaW5lQm94IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6bGluZUJveEZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYg
bGluZUNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwCmluZGV4IGQyMmFkYjY2NmVmMi4uZWRkY2Q0MGQ3
Yzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmNwcApAQCAtODYsNyArODYsNyBAQCBJbmxpbmVSZWN0IExpbmVC
b3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5lOjpSdW4mIHJ1bikgY29uc3QKICAg
ICBBU1NFUlQocnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKTsKICAgICBhdXRvKiBw
YXJlbnRJbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gocnVuLmxheW91dEJv
eCgpLnBhcmVudCgpKTsKICAgICBBU1NFUlQocGFyZW50SW5saW5lQm94LT5pc0lubGluZUJveCgp
KTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+Zm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+c3R5bGUoKS5mb250
TWV0cmljcygpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC0+bG9n
aWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGluZSgpIC0gZm9udE1ldHJpY3MuYXNj
ZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94ICE9IG1fcm9vdElubGluZUJveC5n
ZXQoKSAmJiAhcGFyZW50SW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkg
ewpAQCAtMTAzLDExICsxMDMsMTIgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsUmVjdEZv
cklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgIGF1dG8qIGlu
bGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGF1
dG8gaW5saW5lQm94TG9naWNhbFJlY3QgPSBpbmxpbmVCb3gtPmxvZ2ljYWxSZWN0KCk7CiAgICAg
YXV0byBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AgPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3Ao
KTsKLQotICAgIHdoaWxlIChpbmxpbmVCb3ggIT0gbV9yb290SW5saW5lQm94LmdldCgpICYmICFp
bmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7Ci0gICAgICAgIGlubGlu
ZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVCb3gtPmxheW91dEJveCgp
LnBhcmVudCgpKTsKLSAgICAgICAgQVNTRVJUKGlubGluZUJveC0+aXNJbmxpbmVCb3goKSk7Ci0g
ICAgICAgIGlubGluZUJveEFic29sdXRlbG9naWNhbFRvcCArPSBpbmxpbmVCb3gtPmxvZ2ljYWxU
b3AoKTsKKyAgICBpZiAoIWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkp
IHsKKyAgICAgICAgd2hpbGUgKGlubGluZUJveCAhPSBtX3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYg
IWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKKyAgICAgICAgICAg
IGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVCb3gtPmxheW91
dEJveCgpLnBhcmVudCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVCb3gtPmlzSW5saW5l
Qm94KCkpOworICAgICAgICAgICAgaW5saW5lQm94QWJzb2x1dGVsb2dpY2FsVG9wICs9IGlubGlu
ZUJveC0+bG9naWNhbFRvcCgpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB7IGlubGlu
ZUJveEFic29sdXRlbG9naWNhbFRvcCwgaW5saW5lQm94TG9naWNhbFJlY3QubGVmdCgpLCBpbmxp
bmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBpbmxpbmVCb3hMb2dpY2FsUmVjdC5oZWlnaHQoKSB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oCmluZGV4IGVhZWYyMjgwN2JlYi4uYmM2NGU3Zjk5NmE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJveC5oCkBAIC04Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0VtcHR5OyB9CiAgICAgICAgIHZvaWQgc2V0SXNOb25FbXB0eSgp
IHsgbV9pc0VtcHR5ID0gZmFsc2U7IH0KIAotICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBsYXlvdXRCb3goKS5zdHlsZSgpLmZvbnRNZXRyaWNz
KCk7IH0KICAgICAgICAgVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1
cm4gbGF5b3V0Qm94KCkuc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7IH0KICAgICAgICAgY29uc3Qg
Qm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KKyAgICAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3gtPnN0
eWxlKCk7IH0KIAogICAgICAgICBib29sIGlzSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IFR5cGU6OklubGluZUJveCB8fCBtX3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsg
fQogICAgICAgICBib29sIGlzUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBUeXBlOjpSb290SW5saW5lQm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5k
ZXggNmQ5ZTIxYmY4ZGEwLi45M2ZjZWQwN2VlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFn
ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQogCi0jZGVmaW5lIEFMTE9XX0lNQUdFUyAwCisjZGVmaW5lIEFMTE9XX0lNQUdFUyAx
CiAjZGVmaW5lIEFMTE9XX0FMTF9SRVBMQUNFRCAwCiAjZGVmaW5lIEFMTE9XX0lOTElORV9CTE9D
SyAwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQppbmRleCAxZmU2
MGI4YzBkMWMuLjFjN2IxZGYxN2IzYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0
X3J1bm5lci5weQpAQCAtMTY2LDYgKzE2Niw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9tYXJrX2ludGVycnVwdGVkX3Rlc3RzX2FzX3Nr
aXBwZWQocnVuX3Jlc3VsdHMpCiAgICAgICAgICAgICAgICAgcmFpc2UgVGVzdFJ1bkludGVycnVw
dGVkRXhjZXB0aW9uKG1lc3NhZ2UpCiAKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5leGl0X2FmdGVy
X25fZmFpbHVyZXMgPSBOb25lCiAgICAgICAgIGludGVycnVwdF9pZl9hdF9mYWlsdXJlX2xpbWl0
KAogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leGl0X2FmdGVyX25fZmFpbHVyZXMsCiAgICAg
ICAgICAgICBydW5fcmVzdWx0cy51bmV4cGVjdGVkX2ZhaWx1cmVzLAo=
</data>
<flag name="commit-queue"
          id="429320"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412828</attachid>
            <date>2020-10-30 20:49:57 -0700</date>
            <delta_ts>2020-10-31 06:40:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>29874</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">Y29tbWl0IGVmZmIwMTUyYjkyODFkYzA3N2I3MjA0NDZjMzMxMWE0M2M0MDZjNDIKQXV0aG9yOiBB
bGFuIEtpbnNsZXkgPHphbGFuQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgT2N0IDMwIDE5OjQ1OjE4
IDIwMjAgLTA3MDAKCiAgICBmb29iYXIKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFiYzM5NTU5MTg1Li4zZjJi
YzMyYzU3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0xMC0zMCAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gU3BsaXQgaW5s
aW5lIGxldmVsIGJveCBhbGlnbm1lbnQgcHJvY2VzcyBpbnRvIG11bHRpcGxlIHBoYXNlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mzk3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5saW5lIGxldmVs
IGJveCBhbGlnbm1lbnQgaW5zaWRlIHRoZSBsaW5lIGJveCBpcyBkZXNjcmliZWQgYXQgaHR0cHM6
Ly93d3cudzMub3JnL1RSL2Nzcy1pbmxpbmUtMy8jbGluZS1sYXlvdXQuCisgICAgICAgIFRoZSBh
bGlnbm1lbnQgcHJvY2VzcyBpbnZvbHZlcyAzIGRpc3RpbmN0IHN0ZXBzOgorICAgICAgICAxLiBD
b21wdXRpbmcgdGhlIGxpbmUgYm94J3MgbG9naWNhbCBoZWlnaHQuIFRoaXMgc3RlcCBzb2xlbHkg
dXNlcyB0aGUgbGF5b3V0IGJvdW5kcyBnZW9tZXRyeSBvZiB0aGUgaW5saW5lIGxldmVsIGJveGVz
LgorICAgICAgICAyLiBGaW5kaW5nIHRoZSByb290IGlubGluZSBib3ggdmVydGljYWwgcG9zaXRp
b24uIFRoaXMgc3RlcCBpcyBzb21ld2hhdCBzaW1pbGFyIHRvIHRoZSBmaW5hbCwgYWxpZ25tZW50
IHBoYXNlIGJ1dCBpbnN0ZWFkIG9mCisgICAgICAgIHRoZSBsb2dpY2FsIHRvcCwgaGVyZSB3ZSBj
b21wdXRlIHRoZSBiYXNlbGluZSBvZmZzZXRzLiBJdCBoZWxwcyB0byBmaWd1cmUgb3V0IHRoZSBy
b290IGlubGluZSBib3gncyBiYXNlbGluZSBwb3NpdGluZyBpbnNpZGUgdGhlIGxpbmUgYm94Lgor
ICAgICAgICAzLiBBbGlnbmluZyB0aGUgaW5saW5lIGxldmVsIGJveGVzIGJ5IGNvbXB1dGluZyB0
aGVpciBsb2dpY2FsIHRvcCBwb3NpdGlvbi4KKworICAgICAgICBUaGVzZSAzIHN0ZXBzIGFyZSBp
bXBsZW1lbnRlZCBieSB0aGUgZm9sbG93aW5nIDMgZnVuY3Rpb25zOgorICAgICAgICAxLiBjb21w
dXRlTGluZUJveExvZ2ljYWxIZWlnaHQoKQorICAgICAgICAyLiBjb21wdXRlUm9vdElubGluZUJv
eFZlcnRpY2FsUG9zaXRpb24oKQorICAgICAgICAzLiBhbGlnbklubGluZUxldmVsQm94ZXMoKQor
ICAgICAgICBXaGlsZSBzb21lIG9mIHRoZSBjb2RlIGluIHRoZXNlIGZ1bmN0aW9ucyBtYXkgbG9v
ayByZWR1bmRhbnQsIHRoZXkgd29yayB3aXRoIGRpZmZlcmVudCB0eXBlIG9mIGdlb21ldHJpZXMg
KGxheW91dCBib3VuZHMgdnMuIG5vcm1hbCBhc2NlbnQvZGVzY2VudC9sb2dpY2FsIGhlaWdodCku
CisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxk
ZXI6OnNldFZlcnRpY2FsR2VvbWV0cnlGb3JJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGlj
YWxseUFuZENvbXB1dGVMaW5lQm94SGVpZ2h0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJveDo6bG9naWNhbFJlY3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveDo6bG9naWNhbFJlY3RGb3JJbmxpbmVMZXZlbEJveCBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6c3R5bGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6Zm9udE1l
dHJpY3MgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTEwLTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEltcGxlbWVudCBvdXRw
dXRMaW5lVHJlZUFuZE1hcmsgZm9yIElGQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAwYmY5MWRmMDBhYzQuLjI0ZjRhZTEyMWJjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHNldFZlcnRpY2FsR2VvbWV0
cnlGb3JJbmxpbmVCb3goTGluZUJveDo6SW5saW5lTGV2ZWxCb3gmKSBjb25zdDsKICAgICB2b2lk
IGNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYsIGNvbnN0IExpbmU6OlJ1bkxpc3Qm
KTsKLSAgICB2b2lkIGFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGlu
ZUJveEhlaWdodChMaW5lQm94Jik7CisgICAgdm9pZCBjb21wdXRlTGluZUJveEhlaWdodEFuZGFs
aWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkoTGluZUJveCYpOwogCiAgICAgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IEJveCYgcm9vdEJveCgpIGNv
bnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOyB9CkBAIC0xNjIsMTcgKzE2
MiwyMSBAQCBMaW5lQm94IExpbmVCb3hCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6
TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQogICAgIGlmIChhdXRvIGhvcml6b250YWxBbGlnbm1l
bnRPZmZzZXQgPSBMYXlvdXQ6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQocnVucywgcm9vdEJv
eCgpLnN0eWxlKCkudGV4dEFsaWduKCksIGxpbmVMb2dpY2FsV2lkdGgsIGNvbnRlbnRMb2dpY2Fs
V2lkdGgsIGxpbmVDb250ZW50LmlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkpCiAgICAgICAg
IGxpbmVCb3guc2V0SG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCgqaG9yaXpvbnRhbEFsaWdubWVu
dE9mZnNldCk7CiAgICAgY29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhsaW5lQm94LCBydW5zKTsK
LSAgICBhbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWln
aHQobGluZUJveCk7CisgICAgY29tcHV0ZUxpbmVCb3hIZWlnaHRBbmRhbGlnbklubGluZUxldmVs
Qm94ZXNWZXJ0aWNhbGx5KGxpbmVCb3gpOwogICAgIHJldHVybiBsaW5lQm94OwogfQogCiB2b2lk
IExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbEdlb21ldHJ5Rm9ySW5saW5lQm94KExpbmVCb3g6
OklubGluZUxldmVsQm94JiBpbmxpbmVMZXZlbEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQoaW5s
aW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSB8fCBpbmxpbmVMZXZlbEJveC5pc0xpbmVCcmVha0Jv
eCgpKTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IGlubGluZUxldmVsQm94LmZvbnRNZXRyaWNz
KCk7CisgICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVMZXZlbEJveC5zdHlsZSgpLmZvbnRN
ZXRyaWNzKCk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQgPSBmb250TWV0cmljcy5hc2Nl
bnQoKTsKICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNjZW50
KCk7CiAgICAgYXV0byBsb2dpY2FsSGVpZ2h0ID0gYXNjZW50ICsgZGVzY2VudDsKKyAgICAvLyBX
ZSBuZWVkIGZsb29yL2NlaWwgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBwb3NpdGlv
bmluZy4KKyAgICBpbmxpbmVMZXZlbEJveC5zZXRCYXNlbGluZShmbG9vcmYoYXNjZW50KSk7Cisg
ICAgaW5saW5lTGV2ZWxCb3guc2V0RGVzY2VudChjZWlsKGRlc2NlbnQpKTsKKyAgICBpbmxpbmVM
ZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOwogCiAgICAgLy8gRklYTUU6
IEFkanVzdCBsYXlvdXQgYm91bmRzIHdpdGggZmFsbGJhY2sgZm9udCB3aGVuIGFwcGxpY2FibGUu
CiAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKS5zdHlsZSgpOwpA
QCAtMTkyLDE0ICsxOTYsOCBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbEdlb21l
dHJ5Rm9ySW5saW5lQm94KExpbmVCb3g6OklubGluZUxldmVsQm94JiBpbgogICAgICAgICBhc2Nl
bnQgKz0gaGFsZkxlYWRpbmc7CiAgICAgICAgIGRlc2NlbnQgKz0gaGFsZkxlYWRpbmc7CiAgICAg
fQotICAgIC8vIFdlIG5lZWQgdGhpcyB0byBtYXRjaCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBv
c2l0aW9uaW5nLgotICAgIGFzY2VudCA9IGZsb29yZihhc2NlbnQpOwotICAgIGRlc2NlbnQgPSBj
ZWlsKGRlc2NlbnQpOwotCi0gICAgaW5saW5lTGV2ZWxCb3guc2V0TGF5b3V0Qm91bmRzKExpbmVC
b3g6OklubGluZUxldmVsQm94OjpMYXlvdXRCb3VuZHMgeyBhc2NlbnQsIGRlc2NlbnQgfSk7Ci0g
ICAgaW5saW5lTGV2ZWxCb3guc2V0QmFzZWxpbmUoYXNjZW50KTsKLSAgICBpbmxpbmVMZXZlbEJv
eC5zZXREZXNjZW50KGRlc2NlbnQpOwotICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWln
aHQobG9naWNhbEhlaWdodCk7CisgICAgLy8gV2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNoIGxl
Z2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCisgICAgaW5saW5lTGV2ZWxCb3guc2V0
TGF5b3V0Qm91bmRzKExpbmVCb3g6OklubGluZUxldmVsQm94OjpMYXlvdXRCb3VuZHMgeyBmbG9v
cmYoYXNjZW50KSwgY2VpbChkZXNjZW50KSB9KTsKIH0KIAogdm9pZCBMaW5lQm94QnVpbGRlcjo6
Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5lOjpS
dW5MaXN0JiBydW5zKQpAQCAtMjk2LDI3ICsyOTQsMzUgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6
Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5lOjpS
dW4KICAgICB9CiB9CiAKLXZvaWQgTGluZUJveEJ1aWxkZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hl
c1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChMaW5lQm94JiBsaW5lQm94KQordm9p
ZCBMaW5lQm94QnVpbGRlcjo6Y29tcHV0ZUxpbmVCb3hIZWlnaHRBbmRhbGlnbklubGluZUxldmVs
Qm94ZXNWZXJ0aWNhbGx5KExpbmVCb3gmIGxpbmVCb3gpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlv
biAocGFydGlhbGx5KSBpbXBsZW1lbnRzOgogICAgIC8vIDIuMi4gTGF5b3V0IFdpdGhpbiBMaW5l
IEJveGVzCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1pbmxpbmUtMy8jbGluZS1s
YXlvdXQKKyAgICAvLyAxLiBDb21wdXRlIHRoZSBsaW5lIGJveCBoZWlnaHQgdXNpbmcgdGhlIGxh
eW91dCBib3VuZHMgZ2VvbWV0cnkuIFRoaXMgaGVpZ2h0IGNvbXB1dGF0aW9uIHN0cmljdGx5IHVz
ZXMgbGF5b3V0IGJvdW5kcyBhbmQgbm90IG5vcm1hbCBpbmxpbmUgbGV2ZWwgYm94IGdlb21ldHJp
ZXMuCisgICAgLy8gMi4gQ29tcHV0ZSB0aGUgYmFzZWxpbmUvbG9naWNhbCB0b3AgcG9zaXRpb24g
b2YgdGhlIHJvb3QgaW5saW5lIGJveC4gQWxpZ25lZCBib3hlcyBwdXNoIHRoZSByb290IGlubGlu
ZSBib3ggYXJvdW5kIGluc2lkZSB0aGUgbGluZSBib3guCisgICAgLy8gMy4gRmluYWxseSBhbGln
biB0aGUgaW5saW5lIGxldmVsIGJveGVzIHVzaW5nIChtb3N0bHkpIG5vcm1hbCBpbmxpbmUgbGV2
ZWwgYm94IGdlb21ldHJpZXMuCiAgICAgYXV0byBxdWlya3MgPSBmb3JtYXR0aW5nQ29udGV4dCgp
LnF1aXJrcygpOwotICAgIFZlY3RvcjxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCo+IGxpbmVCb3hS
ZWxhdGl2ZUlubGluZUxldmVsQm94ZXM7Ci0gICAgc3RydWN0IEFic29sdXRlR2VvbWV0cnkgewot
ICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHRvcCB7IDAgfTsKLSAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCBib3R0b20geyAwIH07Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZz
ZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lIHsgMCB9OwotICAgICAgICBjb25zdCBMaW5lQm94
OjpJbmxpbmVMZXZlbEJveCogaW5saW5lTGV2ZWxCb3ggeyBudWxscHRyIH07Ci0gICAgfTsKLSAg
ICBIYXNoTWFwPExpbmVCb3g6OklubGluZUxldmVsQm94KiwgQWJzb2x1dGVHZW9tZXRyeT4gaW5s
aW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFwOwogICAgIGF1dG8mIHJvb3RJbmxpbmVCb3gg
PSBsaW5lQm94LnJvb3RJbmxpbmVCb3goKTsKLSAgICBpbmxpbmVMZXZlbEJveEFic29sdXRlR2Vv
bWV0cnlNYXAuYWRkKCZyb290SW5saW5lQm94LCBBYnNvbHV0ZUdlb21ldHJ5IHsgeyB9LCByb290
SW5saW5lQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpLCB7IH0sICZyb290SW5saW5lQm94IH0p
OwotICAgIGF1dG8gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBy
b290SW5saW5lQm94LmlzRW1wdHkoKSA/IElubGluZUxheW91dFVuaXQoKSA6IHJvb3RJbmxpbmVC
b3gubGF5b3V0Qm91bmRzKCkuYXNjZW50OwogCi0gICAgYXV0byBhbGlnbklubGluZUJveFJlbGF0
aXZlSW5saW5lTGV2ZWxCb3hlcyA9IFsmXSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgcHJvcGVy
IHN1cHBvcnQgZm9yIGNhc2VzIHdoZW4gdGhlIGlubGluZSBib3ggd2l0aCBsaW5lIGJveCByZWxh
dGl2ZSBhbGlnbm1lbnQgaGFzIGEgY2hpbGQgaW5saW5lIGJveAotICAgICAgICAvLyB3aXRoIG5v
bi1saW5lIGJveCByZWxhdGl2ZSBhbGlnbm1lbnQuCisgICAgYXV0byBjb21wdXRlTGluZUJveExv
Z2ljYWxIZWlnaHQgPSBbJl0geworICAgICAgICAvLyBMaW5lIGJveCBoZWlnaHQgY29tcHV0YXRp
b24gaXMgYmFzZWQgb24gdGhlIGxheW91dCBib3VuZHMgb2YgdGhlIGlubGluZSBib3hlcyBhbmQg
bm90IHRoZWlyIGxvZ2ljYWwgKGFzY2VudC9kZXNjZW50KSBkaW1lbnNpb25zLgorICAgICAgICBz
dHJ1Y3QgQWJzb2x1dGVUb3BBbmRCb3R0b20geworICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCB0b3AgeyAwIH07CisgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSB7IDAgfTsK
KyAgICAgICAgfTsKKyAgICAgICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCosIEFi
c29sdXRlVG9wQW5kQm90dG9tPiBpbmxpbmVMZXZlbEJveEFic29sdXRlVG9wQW5kQm90dG9tTWFw
OworCisgICAgICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3AgPSBPcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiB7IH07CisgICAgICAgIGF1dG8gbWF4aW11bUxvZ2ljYWxCb3R0b20gPSBPcHRpb25h
bDxJbmxpbmVMYXlvdXRVbml0PiB7IH07CisgICAgICAgIGlmICghcm9vdElubGluZUJveC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5p
dCB7IH07CisgICAgICAgICAgICBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IHJvb3RJbmxpbmVCb3gu
bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7CisgICAgICAgICAgICBpbmxpbmVMZXZlbEJveEFic29s
dXRlVG9wQW5kQm90dG9tTWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVUb3BBbmRCb3R0
b20geyAqbWluaW11bUxvZ2ljYWxUb3AsICptYXhpbXVtTG9naWNhbEJvdHRvbSB9KTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBpbmxpbmVMZXZlbEJveEFic29sdXRlVG9wQW5kQm90dG9t
TWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVUb3BBbmRCb3R0b20geyB9KTsKKworICAg
ICAgICBWZWN0b3I8TGluZUJveDo6SW5saW5lTGV2ZWxCb3gqPiBsaW5lQm94UmVsYXRpdmVJbmxp
bmVMZXZlbEJveGVzOwogICAgICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJv
eC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAoaW5saW5l
TGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7CkBAIC0zMjQsMTI0ICsz
MzAsMTkwIEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRp
Y2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChMaW5lCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBs
aW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7Cisg
ICAgICAgICAgICAvLyBMb2dpY2FsIHRvcCBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGlu
ZSBib3gncyBsYXlvdXQgYm91bmRzLgorICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgbG9n
aWNhbCB0b3AgaXMgbm90IHRoZSBmaW5hbCBsb2dpY2FsIHRvcCBvZiB0aGUgaW5saW5lIGxldmVs
IGJveC4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxvZ2ljYWwgdG9wIGluIHRoZSBjb250
ZXh0IG9mIHRoZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5IHdoaWNoIG1heSBiZSB2ZXJ5IGRpZmZl
cmVudCBmcm9tIHRoZSBpbmxpbmUgYm94J3Mgbm9ybWFsIGdlb21ldHJ5LgogICAgICAgICAgICAg
YXV0byBsb2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAgICBhdXRv
IGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gSW5saW5lTGF5b3V0VW5pdCB7IH07
CiAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6Ci0gICAgICAgICAgICAg
ICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxC
b3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKLSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZSA9IHsgfTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRvcDogewotICAgICAgICAgICAgICAgIC8v
IE5vdGUgdGhhdCBUZXh0VG9wIGFsaWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRy
aWNzIHRvcCAoYXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIHRvcC4KLSAgICAgICAg
ICAgICAgICBhdXRvIHBhcmVudEFzY2VudCA9IHBhcmVudElubGluZUJveC5mb250TWV0cmljcygp
LmFzY2VudCgpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbFRv
cCA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBwYXJlbnRBc2NlbnQ7
Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveExvZ2ljYWxUb3A7
Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBwYXJl
bnRBc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBWZXJ0aWNh
bEFsaWduOjpUZXh0Qm90dG9tOiB7Ci0gICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IFRleHRC
b3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgYm90dG9tIChk
ZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4KLSAgICAgICAgICAgICAg
ICBhdXRvJiBwYXJlbnRGb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5mb250TWV0cmljcygp
OwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzID0gcGFy
ZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50
SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5oZWln
aHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5kZXNjZW50ICsgcGFyZW50Rm9udE1l
dHJpY3MuZGVzY2VudCgpOwotICAgICAgICAgICAgICAgIGF1dG8gbGF5b3V0Qm91bmRzID0gaW5s
aW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gbGF5b3V0Qm91bmRzLmhlaWdodCgpOwot
ICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbGF5b3V0
Qm91bmRzLmRlc2NlbnQgLSBwYXJlbnRGb250TWV0cmljcy5kZXNjZW50KCk7CisgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOiB7CisgICAgICAgICAgICAgICAgYXV0byBs
b2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91
dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5s
aW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogewotICAgICAgICAgICAgICAgIGF1dG8g
bG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3guZm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVC
b3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAg
ICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9w
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygp
LmFzY2VudDsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsg
cGFyZW50SW5saW5lQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOworICAg
ICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCku
YXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6QmFzZWxpbmVNaWRkbGU6IHsKICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVp
Z2h0KCkgLyAyOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gu
YmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAg
ICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFz
Y2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91
dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZl
cnRpY2FsQWxpZ246Okxlbmd0aDogewotICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5
b3V0Qm94LnN0eWxlKCk7CisgICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZl
bEJveC0+c3R5bGUoKTsKICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25M
ZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpICsgaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJl
bnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBs
b2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91
dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5s
aW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6IHsKKyAgICAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGV4dC10b3AgYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJp
Y3MgdG9wIChhc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBib3VuZHMgdG9wLgorICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50
IC0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206
IHsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC1ib3R0b20gYWxpZ25zIHdpdGgg
dGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRo
ZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4KKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGlu
ZUJveExheW91dEJvdW5kcyA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxp
bmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMu
ZGVzY2VudCArIHBhcmVudElubGluZUJveC5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRV
bml0KCkpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dp
Y2FsQm90dG9tIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3gt
PnNldExvZ2ljYWxUb3AobG9naWNhbFRvcCk7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudElubGlu
ZUJveEFic29sdXRlR2VvbWV0cnkgPSBpbmxpbmVMZXZlbEJveEFic29sdXRlR2VvbWV0cnlNYXAu
Z2V0KCZwYXJlbnRJbmxpbmVCb3gpOwotICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxvZ2ljYWxU
b3AgPSBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5LnRvcCArIGxvZ2ljYWxUb3A7Cisg
ICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tID0gaW5s
aW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcC5nZXQoJnBhcmVudElubGluZUJveCk7
CisgICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveEFi
c29sdXRlVG9wQW5kQm90dG9tLnRvcCArIGxvZ2ljYWxUb3A7CiAgICAgICAgICAgICBhdXRvIGFi
c29sdXRlTG9naWNhbEJvdHRvbSA9IGFic29sdXRlTG9naWNhbFRvcCArIGlubGluZUxldmVsQm94
LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVCYXNl
bGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBwYXJlbnRJbmxpbmVCb3hBYnNv
bHV0ZUdlb21ldHJ5LmJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSArIGJh
c2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwotICAgICAgICAgICAgaW5saW5lTGV2ZWxC
b3hBYnNvbHV0ZUdlb21ldHJ5TWFwLmFkZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgQWJzb2x1dGVH
ZW9tZXRyeSB7IGFic29sdXRlTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tLCBhYnNv
bHV0ZUJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSwgaW5saW5lTGV2ZWxC
b3guZ2V0KCkgfSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0
aWNhbFBvc2l0aW9uID0gcXVpcmtzLnNob3VsZElubGluZUxldmVsQm94U3RyZXRjaExpbmVCb3go
bGluZUJveCwgKmlubGluZUxldmVsQm94KTsKLSAgICAgICAgICAgIGlmIChhZmZlY3RzUm9vdElu
bGluZUJveFZlcnRpY2FsUG9zaXRpb24pCi0gICAgICAgICAgICAgICAgbWF4aW11bVRvcE9mZnNl
dEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBzdGQ6Om1heChtYXhpbXVtVG9wT2Zmc2V0RnJv
bVJvb3RJbmxpbmVCb3hCYXNlbGluZSwgYWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5s
aW5lQm94QmFzZWxpbmUgKyBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50KTsK
LSAgICAgICAgfQotICAgIH07Ci0gICAgYWxpZ25JbmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVs
Qm94ZXMoKTsKLQotICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBJbmxpbmVMYXlvdXRV
bml0IHsgfTsKLSAgICBhdXRvIGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IElubGlu
ZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gY29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0g
WyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBsYXlvdXQgYm91bmRzIGJh
c2VkIGxpbmUgYm94IGhlaWdodC4KLSAgICAgICAgYXV0byBtaW5pbXVtTG9naWNhbFRvcCA9IE9w
dGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICAgICAgYXV0byBtYXhpbXVtTG9naWNh
bEJvdHRvbSA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICAgICAgZm9yIChh
dXRvIGFic29sdXRlR2VvbWV0cnkgOiBpbmxpbmVMZXZlbEJveEFic29sdXRlR2VvbWV0cnlNYXAu
dmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGlubGluZUxldmVsQm94ID0gKmFic29sdXRl
R2VvbWV0cnkuaW5saW5lTGV2ZWxCb3g7Ci0gICAgICAgICAgICBpZiAoIXF1aXJrcy5zaG91bGRJ
bmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsIGlubGluZUxldmVsQm94KSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9wID0g
c3RkOjptaW4obWluaW11bUxvZ2ljYWxUb3AudmFsdWVPcihhYnNvbHV0ZUdlb21ldHJ5LnRvcCks
IGFic29sdXRlR2VvbWV0cnkudG9wKTsKLSAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9t
ID0gc3RkOjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVPcihhYnNvbHV0ZUdlb21ldHJ5
LmJvdHRvbSksIGFic29sdXRlR2VvbWV0cnkuYm90dG9tKTsKKyAgICAgICAgICAgIGlubGluZUxl
dmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKGlubGluZUxldmVsQm94LmdldCgpLCBB
YnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFic29sdXRlTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2Fs
Qm90dG9tIH0pOworICAgICAgICAgICAgLy8gU3RyZXRjaCB0aGUgbWluL21heCBhYnNvbHV0ZSB2
YWx1ZXMgaWYgYXBwbGljYWJsZS4KKyAgICAgICAgICAgIGlmIChxdWlya3Muc2hvdWxkSW5saW5l
TGV2ZWxCb3hTdHJldGNoTGluZUJveChsaW5lQm94LCAqaW5saW5lTGV2ZWxCb3gpKSB7CisgICAg
ICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBzdGQ6Om1pbihtaW5pbXVtTG9naWNhbFRv
cC52YWx1ZU9yKGFic29sdXRlTG9naWNhbFRvcCksIGFic29sdXRlTG9naWNhbFRvcCk7CisgICAg
ICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChtYXhpbXVtTG9naWNh
bEJvdHRvbS52YWx1ZU9yKGFic29sdXRlTG9naWNhbEJvdHRvbSksIGFic29sdXRlTG9naWNhbEJv
dHRvbSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaW5saW5lQm94UmVsYXRp
dmVMb2dpY2FsSGVpZ2h0ID0gbWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVPcihJbmxpbmVMYXlv
dXRVbml0KCkpIC0gbWluaW11bUxvZ2ljYWxUb3AudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkp
OwotICAgICAgICBsaW5lQm94TG9naWNhbEhlaWdodCA9IGlubGluZUJveFJlbGF0aXZlTG9naWNh
bEhlaWdodDsKLSAgICAgICAgLy8gTm93IHN0cmV0Y2ggdGhlIGxpbmUgYm94IHdpdGggdGhlIGxp
bmUgYm94IHJlbGF0aXZlIGlubGluZSBsZXZlbCBib3hlcy4KKyAgICAgICAgLy8gVGhlIGxpbmUg
Ym94IGhlaWdodCBjb21wdXRhdGlvbiBpcyBhcyBmb2xsb3dzOgorICAgICAgICAvLyAxLiBTdHJl
dGNoIHRoZSBsaW5lIGJveCB3aXRoIHRoZSBub24tbGluZS1ib3ggcmVsYXRpdmUgYWxpZ25lZCBp
bmxpbmUgYm94IGFic29sdXRlIHRvcCBhbmQgYm90dG9tIHZhbHVlcy4KKyAgICAgICAgLy8gMi4g
Q2hlY2sgaWYgdGhlIGxpbmUgYm94IHJlbGF0aXZlIGFsaWduZWQgaW5saW5lIGJveGVzICh0b3As
IGJvdHRvbSBldGMpIGhhdmUgZW5vdWdoIHJvb20gYW5kIHN0cmV0Y2ggdGhlIGxpbmUgYm94IGZ1
cnRoZXIgaWYgbmVlZGVkLgorICAgICAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gbWF4
aW11bUxvZ2ljYWxCb3R0b20udmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkpIC0gbWluaW11bUxv
Z2ljYWxUb3AudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkpOwogICAgICAgICBmb3IgKGF1dG8q
IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94IDogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2
ZWxCb3hlcykgewogICAgICAgICAgICAgaWYgKCFxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hT
dHJldGNoTGluZUJveChsaW5lQm94LCAqbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3gpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbGluZUJveExvZ2ljYWxIZWln
aHQgPSBzdGQ6Om1heChsaW5lQm94TG9naWNhbEhlaWdodCwgbGluZUJveFJlbGF0aXZlSW5saW5l
TGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpKTsKICAgICAgICAgfQorICAgICAgICBs
aW5lQm94LnNldExvZ2ljYWxIZWlnaHQobGluZUJveExvZ2ljYWxIZWlnaHQpOwogICAgIH07CiAg
ICAgY29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0KCk7CiAKLSAgICBhdXRvIGFkanVzdFJvb3RJ
bmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBzdHJldGNoaW5nIGlubGluZSBib3hlcyBhcmUgbm90
IGJhc2VsaW5lIGFsaWduZWQuCi0gICAgICAgIGF1dG8gcm9vdElubGluZUJveExvZ2ljYWxUb3Ag
PSBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSAtIHJvb3RJbmxpbmVC
b3gubGF5b3V0Qm91bmRzKCkuYXNjZW50OworICAgIGF1dG8gY29tcHV0ZVJvb3RJbmxpbmVCb3hW
ZXJ0aWNhbFBvc2l0aW9uID0gWyZdIHsKKyAgICAgICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVM
ZXZlbEJveCosIElubGluZUxheW91dFVuaXQ+IGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGlu
ZU9mZnNldE1hcDsKKyAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0
TWFwLmFkZCgmcm9vdElubGluZUJveCwgSW5saW5lTGF5b3V0VW5pdCB7IH0pOworCisgICAgICAg
IGF1dG8gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSByb290SW5s
aW5lQm94LmlzRW1wdHkoKSA/IElubGluZUxheW91dFVuaXQoKSA6IHJvb3RJbmxpbmVCb3gubGF5
b3V0Qm91bmRzKCkuYXNjZW50OworCisgICAgICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3gg
OiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
YWJzb2x1dGVCYXNlbGluZU9mZnNldCA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgICAgICAg
ICAgaWYgKCFpbmxpbmVMZXZlbEJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsK
KyAgICAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0
Qm94KCk7CisgICAgICAgICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0gbGluZUJveC5p
bmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpOworICAgICAgICAg
ICAgICAgIGF1dG8gYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBJbmxpbmVMYXlv
dXRVbml0IHsgfTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5saW5lTGV2ZWxCb3gtPnZl
cnRpY2FsQWxpZ24oKSkgeworICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFz
ZWxpbmU6CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2Vs
aW5lID0geyB9OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxv
Z2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxCb3gtPmxheW91
dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5zdHlsZSgpLmZvbnRNZXRy
aWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0
RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAt
IGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZU1pZGRsZTogeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVp
Z2h0KCkgLyAyOworICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRC
YXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZl
bEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gaW5saW5lTGV2ZWxCb3gtPnN0eWxlKCk7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbk9mZnNldCA9IGZsb2F0VmFs
dWVGb3JMZW5ndGgoc3R5bGUudmVydGljYWxBbGlnbkxlbmd0aCgpLCBzdHlsZS5jb21wdXRlZExp
bmVIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZy
b21QYXJlbnRCYXNlbGluZSA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGlu
ZSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWdu
OjpUZXh0VG9wOgorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRC
YXNlbGluZSA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgorICAgICAgICAgICAgICAg
ICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhYnNvbHV0
ZUJhc2VsaW5lT2Zmc2V0ID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFw
LmdldCgmcGFyZW50SW5saW5lQm94KSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5l
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxl
dmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OlRvcDogeworICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0
ID0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuYXNjZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206
IHsKKyAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVCYXNlbGluZU9mZnNldCA9IGlubGluZUxl
dmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gcm9vdElubGluZUJveC5sYXlvdXRCb3Vu
ZHMoKS5kZXNjZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hB
YnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmFkZChpbmxpbmVMZXZlbEJveC5nZXQoKSwgYWJzb2x1
dGVCYXNlbGluZU9mZnNldCk7CisgICAgICAgICAgICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94
VmVydGljYWxQb3NpdGlvbiA9IHF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5l
Qm94KGxpbmVCb3gsICppbmxpbmVMZXZlbEJveCk7CisgICAgICAgICAgICBpZiAoYWZmZWN0c1Jv
b3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIG1heGltdW1Ub3BP
ZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gc3RkOjptYXgobWF4aW11bVRvcE9mZnNl
dEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUsIGFic29sdXRlQmFzZWxpbmVPZmZzZXQgKyBpbmxp
bmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50KTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5s
aW5lQm94QmFzZWxpbmUgLSByb290SW5saW5lQm94LmJhc2VsaW5lKCk7CiAgICAgICAgIHJvb3RJ
bmxpbmVCb3guc2V0TG9naWNhbFRvcChyb290SW5saW5lQm94TG9naWNhbFRvcCk7CiAgICAgfTsK
LSAgICBhZGp1c3RSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbigpOworICAgIGNvbXB1dGVS
b290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbigpOwogCi0gICAgYXV0byBhbGlnbkxpbmVCb3hS
ZWxhdGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAgICAgICBmb3IgKGF1dG8qIGlubGlu
ZUxldmVsQm94IDogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlcykgeworICAgIGF1dG8g
YWxpZ25JbmxpbmVMZXZlbEJveGVzID0gWyZdIHsKKyAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVM
ZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgewogICAgICAgICAg
ICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJveCgpOwotICAgICAg
ICAgICAgYXV0byB2ZXJ0aWNhbEFsaWdubWVudCA9IGxheW91dEJveC5zdHlsZSgpLnZlcnRpY2Fs
QWxpZ24oKTsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGxpbmVCb3guaW5s
aW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKTsKICAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAgICAgYXV0
byByb290SW5saW5lQm94T2Zmc2V0ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAg
ICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGlubGlu
ZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6QmFzZWxpbmU6CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGlu
ZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogewor
ICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IChpbmxpbmVMZXZlbEJveC0+bG9naWNhbEhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5z
dHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZy
b21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxp
bmVMZXZlbEJveC0+bG9naWNhbEhlaWdodCgpIC8gMjsKKyAgICAgICAgICAgICAgICBsb2dpY2Fs
VG9wID0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBh
cmVudEJhc2VsaW5lOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6IHsKKyAgICAgICAgICAgICAgICBh
dXRvJiBzdHlsZSA9IGlubGluZUxldmVsQm94LT5zdHlsZSgpOworICAgICAgICAgICAgICAgIGF1
dG8gdmVydGljYWxBbGlnbk9mZnNldCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUudmVydGlj
YWxBbGlnbkxlbmd0aCgpLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7CisgICAgICAgICAg
ICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gdmVydGljYWxB
bGlnbk9mZnNldCArIGlubGluZUxldmVsQm94LT5sb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAg
ICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCAodGV4dCl0b3AvYm90dG9tIGFsaWdu
IHRoZWlyIGxheW91dCBib3VuZHMuCisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRl
eHRUb3A6CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRv
bToKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxvZ2ljYWxI
ZWlnaHQoKSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5saW5l
TGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0g
eyB9OworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljYWwgdG9wIGlzIG5v
dCByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3guCisgICAgICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVM
ZXZlbEJveC0+YmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBsaW5lQm94TG9naWNhbEhlaWdodCAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5o
ZWlnaHQoKTsKLSAgICAgICAgICAgICAgICByb290SW5saW5lQm94T2Zmc2V0ID0gaW5saW5lTGV2
ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpIC0gaW5saW5lQm94UmVsYXRpdmVMb2dpY2Fs
SGVpZ2h0OworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljYWwgdG9wIGlz
IG5vdCByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3guCisgICAgICAgICAgICAgICAg
bG9naWNhbFRvcCA9IGxpbmVCb3gubG9naWNhbEhlaWdodCgpIC0gaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmRlc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlubGluZUxldmVsQm94LT5zZXRMb2dpY2FsVG9wKGxv
Z2ljYWxUb3ApOwotICAgICAgICAgICAgaWYgKHJvb3RJbmxpbmVCb3hPZmZzZXQgPiAwKQotICAg
ICAgICAgICAgICAgIHJvb3RJbmxpbmVCb3guc2V0TG9naWNhbFRvcChyb290SW5saW5lQm94Lmxv
Z2ljYWxUb3AoKSArIHJvb3RJbmxpbmVCb3hPZmZzZXQpOwogICAgICAgICB9CiAgICAgfTsKLSAg
ICBhbGlnbkxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMoKTsKLSAgICBsaW5lQm94LnNl
dExvZ2ljYWxIZWlnaHQobGluZUJveExvZ2ljYWxIZWlnaHQpOworICAgIGFsaWduSW5saW5lTGV2
ZWxCb3hlcygpOwogfQogCiBMaW5lQm94IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6bGluZUJveEZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYg
bGluZUNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwCmluZGV4IGQyMmFkYjY2NmVmMi4uZWRkY2Q0MGQ3
Yzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmNwcApAQCAtODYsNyArODYsNyBAQCBJbmxpbmVSZWN0IExpbmVC
b3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5lOjpSdW4mIHJ1bikgY29uc3QKICAg
ICBBU1NFUlQocnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKTsKICAgICBhdXRvKiBw
YXJlbnRJbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gocnVuLmxheW91dEJv
eCgpLnBhcmVudCgpKTsKICAgICBBU1NFUlQocGFyZW50SW5saW5lQm94LT5pc0lubGluZUJveCgp
KTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+Zm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+c3R5bGUoKS5mb250
TWV0cmljcygpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC0+bG9n
aWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGluZSgpIC0gZm9udE1ldHJpY3MuYXNj
ZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94ICE9IG1fcm9vdElubGluZUJveC5n
ZXQoKSAmJiAhcGFyZW50SW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkg
ewpAQCAtMTAzLDExICsxMDMsMTIgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsUmVjdEZv
cklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgIGF1dG8qIGlu
bGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGF1
dG8gaW5saW5lQm94TG9naWNhbFJlY3QgPSBpbmxpbmVCb3gtPmxvZ2ljYWxSZWN0KCk7CiAgICAg
YXV0byBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AgPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3Ao
KTsKLQotICAgIHdoaWxlIChpbmxpbmVCb3ggIT0gbV9yb290SW5saW5lQm94LmdldCgpICYmICFp
bmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7Ci0gICAgICAgIGlubGlu
ZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVCb3gtPmxheW91dEJveCgp
LnBhcmVudCgpKTsKLSAgICAgICAgQVNTRVJUKGlubGluZUJveC0+aXNJbmxpbmVCb3goKSk7Ci0g
ICAgICAgIGlubGluZUJveEFic29sdXRlbG9naWNhbFRvcCArPSBpbmxpbmVCb3gtPmxvZ2ljYWxU
b3AoKTsKKyAgICBpZiAoIWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkp
IHsKKyAgICAgICAgd2hpbGUgKGlubGluZUJveCAhPSBtX3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYg
IWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKKyAgICAgICAgICAg
IGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVCb3gtPmxheW91
dEJveCgpLnBhcmVudCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVCb3gtPmlzSW5saW5l
Qm94KCkpOworICAgICAgICAgICAgaW5saW5lQm94QWJzb2x1dGVsb2dpY2FsVG9wICs9IGlubGlu
ZUJveC0+bG9naWNhbFRvcCgpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB7IGlubGlu
ZUJveEFic29sdXRlbG9naWNhbFRvcCwgaW5saW5lQm94TG9naWNhbFJlY3QubGVmdCgpLCBpbmxp
bmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBpbmxpbmVCb3hMb2dpY2FsUmVjdC5oZWlnaHQoKSB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oCmluZGV4IGVhZWYyMjgwN2JlYi4uYmM2NGU3Zjk5NmE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJveC5oCkBAIC04Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0VtcHR5OyB9CiAgICAgICAgIHZvaWQgc2V0SXNOb25FbXB0eSgp
IHsgbV9pc0VtcHR5ID0gZmFsc2U7IH0KIAotICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBsYXlvdXRCb3goKS5zdHlsZSgpLmZvbnRNZXRyaWNz
KCk7IH0KICAgICAgICAgVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1
cm4gbGF5b3V0Qm94KCkuc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7IH0KICAgICAgICAgY29uc3Qg
Qm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KKyAgICAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3gtPnN0
eWxlKCk7IH0KIAogICAgICAgICBib29sIGlzSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IFR5cGU6OklubGluZUJveCB8fCBtX3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsg
fQogICAgICAgICBib29sIGlzUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBUeXBlOjpSb290SW5saW5lQm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5k
ZXggNmQ5ZTIxYmY4ZGEwLi45M2ZjZWQwN2VlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFn
ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQogCi0jZGVmaW5lIEFMTE9XX0lNQUdFUyAwCisjZGVmaW5lIEFMTE9XX0lNQUdFUyAx
CiAjZGVmaW5lIEFMTE9XX0FMTF9SRVBMQUNFRCAwCiAjZGVmaW5lIEFMTE9XX0lOTElORV9CTE9D
SyAwCiAK
</data>
<flag name="commit-queue"
          id="429339"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>