<?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>230643</bug_id>
          
          <creation_ts>2021-09-22 14:54:22 -0700</creation_ts>
          <short_desc>[LFC][IFC] Move Layout::Run under InlineDisplay and rename it to Box</short_desc>
          <delta_ts>2021-09-23 08:41:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796220</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-09-22 14:54:22 -0700</bug_when>
    <thetext>They are closer to being boxes (rectangles sitting on the line) than being runs. Also the term &apos;run&apos; is way overloaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796224</commentid>
    <comment_count>1</comment_count>
      <attachid>438980</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-09-22 15:01:04 -0700</bug_when>
    <thetext>Created attachment 438980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796242</commentid>
    <comment_count>2</comment_count>
      <attachid>438983</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-09-22 16:00:19 -0700</bug_when>
    <thetext>Created attachment 438983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796469</commentid>
    <comment_count>3</comment_count>
      <attachid>439040</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-09-23 06:32:56 -0700</bug_when>
    <thetext>Created attachment 439040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796486</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-23 07:34:13 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 439040 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796487</commentid>
    <comment_count>5</comment_count>
      <attachid>439041</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-09-23 07:42:55 -0700</bug_when>
    <thetext>Created attachment 439041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796508</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-23 08:40:28 -0700</bug_when>
    <thetext>Committed r282961 (242051@main): &lt;https://commits.webkit.org/242051@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439041.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796510</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-23 08:41:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/83448707&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438980</attachid>
            <date>2021-09-22 15:01:04 -0700</date>
            <delta_ts>2021-09-22 16:00:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230643-20210922150103.patch</filename>
            <type>text/plain</type>
            <size>121450</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTVjNjZhYjkzZjFmYmQz
ZTZlOTFhMzBlNGVjMDMwMWIwMTg2NDdlOC4uNjA5MTllNWQ5NzE2YWIwZGIzM2MyM2M1ZTM2ZDJm
MzMyOWJkZDlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAyMS0wOS0yMiAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIExh
eW91dDo6UnVuIHVuZGVyIElubGluZURpc3BsYXkgYW5kIHJlbmFtZSBpdCB0byBCb3gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGZyYWdtZW50
cyBvZiBpbmxpbmUgY29udGVudCBzaG91bGQgYmUgY29uc2lkZXJlZCBydW5zIG9ubHkgdXAgdG8g
dGhlIHBvaW50IHdoZXJlIHdlIGZpbmlzaGVkIGJyZWFraW5nIHRoZSBsaW5lLiBTb29uIGFmdGVy
IHRoZXkgZ2FpbiBob3Jpem9udGFsIChhbmQgbGF0ZXIgdmVydGljYWwpIGdlb21ldHJpZXMsIHdl
CisgICAgICAgIHNob3VsZCBjYWxsIHRoZW0gYm94ZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmJ1aWxk
SW5saW5lRGlzcGxheVRyZWUpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveEZhY3Rvcnk6OmRpc3BsYXlC
b3hGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFj
dG9yeS5oOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OlRleHRCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6bV90ZXh0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VGV4dEJveDo6ZXhwYW5zaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OnRleHQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9WZXJpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpv
dXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlQm94ZXNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRl
R2VvbWV0cnlGb3JMaW5lQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21l
dHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxv
d0ZvcklubGluZUJveFJ1bnMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZs
b3dDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVGb3JtYXR0aW5nU3Rh
dGUpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nU3RhdGU6OmxpbmVCb3hlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdTdGF0ZTo6YWRkTGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6Ym94ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmJveGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRCb3hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJMaW5lQW5kQm94ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNocmlu
a1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRl
OjpydW5zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ1N0YXRlOjpydW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRSdW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpjbGVhckxpbmVBbmRSdW5zKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6ZXhwYW5zaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjpzZXRFeHBhbnNp
b24pOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lTGluZVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94Ojps
b2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6
Omlua092ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJv
eDo6bG9naWNhbFRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpC
b3g6OmxvZ2ljYWxCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRGlzcGxh
eTo6Qm94Ojpsb2dpY2FsTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNw
bGF5OjpCb3g6OmxvZ2ljYWxSaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVE
aXNwbGF5OjpCb3g6OmxvZ2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVEaXNwbGF5OjpCb3g6OmxvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRGlzcGxheTo6Qm94Ojptb3ZlVmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVEaXNwbGF5OjpCb3g6OmFkanVzdElua092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6bGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZURpc3Bs
YXk6OkJveDo6VGV4dDo6VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4
dDo6c3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OlRleHQ6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6VGV4dDo6bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UnVuOjpUZXh0OjpvcmlnaW5hbENvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSdW46OlRleHQ6OnJlbmRlcmVkQ29udGVudCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4dDo6aGFzSHlwaGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppc1RleHQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmlzU29mdExpbmVCcmVh
ayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNMaW5l
QnJlYWtCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OmlzTGluZUJyZWFrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
UnVuOjppc0F0b21pY0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6UnVuOjppc0lubGluZUJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNOb25Sb290SW5saW5lQm94IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppc1Jvb3RJbmxpbmVCb3ggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmlzR2VuZXJpY0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
Ojppc0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6UnVuOjppc05vblJvb3RJbmxpbmVMZXZlbEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6dHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aGFzQ29udGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFJlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46Omlua092ZXJmbG93IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsVG9wIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsQm90dG9tIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsTGVmdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFJp
Z2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dp
Y2FsV2lkdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OmxvZ2ljYWxIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpSdW46Om1vdmVWZXJ0aWNhbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UnVuOjphZGp1c3RJbmtPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlJ1bjo6dGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6dGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6
ZXhwYW5zaW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
OjpsYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OnN0eWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
OjpsaW5lSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OlJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4dDo6
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJs
ZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yQ2VsbHMpOgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6Omhh
c0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dDo6fklubGluZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OklubGluZUNvbnRlbnQ6OmluZGV4Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpmaXJzdEJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudDo6
Zmlyc3RCb3hJbmRleEZvckxheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudDo6bm9uUm9vdElubGluZUJveEluZGV4ZXNGb3JM
YXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Oklu
bGluZUNvbnRlbnQ6OnJlbGVhc2VDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjppbmRleEZvclJ1biBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dDo6Zmlyc3RSdW5Gb3JMYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OmZpcnN0UnVuSW5kZXhGb3JMYXlv
dXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpsaW5lRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50Ojp0cmF2ZXJzZU5vblJvb3RJ
bmxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudDo6bGluZUZvclJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnRCdWlsZGVyOjpi
dWlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmU6OkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmU6OmZpcnN0Qm94SW5kZXggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmU6OmJveENvdW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lOjpmaXJzdFJ1bkluZGV4IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lOjpydW5D
b3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmZpcnN0UnVuIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JNb2Rl
cm5QYXRoOjpsYXN0UnVuIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnRleHRSdW5zRm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpydW5Gb3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmZpcnN0SW5saW5l
Qm94UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUxheW91dDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVMYXlvdXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OnBhaW50VGV4dEJveFVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnRUZXh0UnVu
VXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6bWFrZUFkanVzdGVkQ29udGVudCk6CisgICAgICAg
ICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46OmxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5Gb3IpOgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aFJ1bjo6aW5saW5lQm94
IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvck1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpp
c1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aDo6cmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjppc0xpbmVCcmVhayBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRo
OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpzdGFydCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRo
OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6Om9mZnNldEZvclBvc2l0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1v
ZGVyblBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnNlbGVjdGFibGVSYW5nZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JN
b2Rlcm5QYXRoOjpyZW5kZXJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6
OnRyYXZlcnNlTmV4dE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aDo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6Ym94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnRy
YXZlcnNlTmV4dExlYWYpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VQcmV2aW91c0xlYWYpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6c2V0QXRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aDo6Ym94ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpjcmVhdGVUZXh0UnVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1v
ZGVyblBhdGg6OnJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpydW5zIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OnNob3dJbmxpbmVUcmVlQW5kUnVucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQ
YWludGVyOjpUZXh0Qm94UGFpbnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRCb3hQYWlu
dGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKToKKwogMjAyMS0wOS0y
MiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBN
b3ZlIExpbmVHZW9tZXRyeSB1bmRlciBJbmxpbmVEaXNwbGF5IG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc5ODVm
NDMxYTk4MGQ5M2E3OTAyOWFhYzhhYWFjNjJiNDU5MDdjNDkuLmRhMTE0MWY3YjhiOWMyY2ZhMjli
MzYzYzViNDUxZWI3M2Y5ODM4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyMTksNyArMjIxOSw3IEBACiAJCTZGQjVFMjE0
MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjVFMjEyMjIxRjI0NDcwMDM5ODlD
RiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkI3RDJERDI1MEZEODI4MDAwMjA3QUEgLyogRmxleEZv
cm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RkI3RDJEOTI1MEZEN0ZDMDAwMjA3QUEgLyogRmxleEZvcm1hdHRpbmdDb250ZXh0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZC
N0QyREUyNTBGRDgyRTAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nU3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjdEMkRBMjUwRkQ3RkMwMDAy
MDdBQSAvKiBGbGV4Rm9ybWF0dGluZ1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVBIC8qIElubGlu
ZUxpbmVSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkZDM0Y5NDcyNTE2NzU2NzAw
QTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVEaXNw
bGF5Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNkZDQkRCOTcyNjVERjJDODAwMjFFQTdCIC8qIExheW91dENvbnRhaW5pbmdCbG9ja0NoYWlu
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGQ0JEQjk1MjY1REYyQzcwMDIxRUE3QiAvKiBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNkZEMDk1NDMyNTExMTUyMjAwOTg4NzdEIC8qIExheW91dEdlb21ldHJ5UmVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZEMDk1NDEyNTExMTUy
MjAwOTg4NzdEIC8qIExheW91dEdlb21ldHJ5UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJ
bmxpbmVDb250ZW50QnJlYWtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUNvbnRlbnRCcmVh
a2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTEwMjQwLDcgKzEwMjQwLDcgQEAKIAkJNkZCN0QyRDkyNTBGRDdGQzAwMDIwN0FBIC8qIEZsZXhG
b3JtYXR0aW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbGV4
Rm9ybWF0dGluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCN0Qy
REEyNTBGRDdGQzAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmxleEZvcm1hdHRpbmdTdGF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RkJCODYwNTIwQjQ2NEI2MDBEQUQ5MzggLyogRm9ybWF0dGluZ0dl
b21ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdHRpbmdHZW9tZXRyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJ
bmxpbmVMaW5lUnVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUxp
bmVSdW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkZDM0Y5NDUyNTE2NzU2NjAw
QTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5saW5lRGlzcGxheUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RkM1M0FFQjI0QUY3QThFMDA2MDU5RkUgLyogVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZGQzVDQTkyMjJFMzU5OTMwMEIxM0UxMSAvKiBUYWJsZUZvcm1hdHRp
bmdTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQzVDQTk0MjJFMzU5OTQwMEIxM0UxMSAv
KiBUYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgzMzUs
NyArMTgzMzUsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk2
RjkxNDIwRjI1MTUyMTM3MDA0RTRGRUEgLyogSW5saW5lRGlzcGxheUxpbmUuaCAqLywKLQkJCQk2
RkMzRjk0NTI1MTY3NTY2MDBBNDlCRUEgLyogSW5saW5lTGluZVJ1bi5oICovLAorCQkJCTZGQzNG
OTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVEaXNwbGF5Qm94LmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGRpc3BsYXk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzI5MzAsNiAr
MzI5MzAsNyBAQAogCQkJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVDb250ZW50
QnJlYWtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTExRkExQzgyNkYwRjMwRjAwM0I4RjE2IC8q
IElubGluZURhbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTE1MTNEMDMyNkQ5ODFFODAwNEQz
RkFBIC8qIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NkY5MTQyMTEyNTE1MjEzODAwNEU0RkVBIC8qIElubGluZURpc3BsYXlMaW5lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RjdDQTNDQTIwOEMyQjJFMDAyRjI5QUIgLyogSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3QzRENTdEMjY1MDhCQ0IwMEM3QUIxRiAvKiBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGRTYzNkU4MjY0
Nzk2MjkwMEYwOTUxRSAvKiBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAqLywK
QEAgLTMyOTQzLDggKzMyOTQ0LDcgQEAKIAkJCQkxMUMzMjI3RDI2RDk1OENFMDAzMjhGNEQgLyog
SW5saW5lTGluZUJveEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGNkVFNzQzMjZENDRF
RTMwMDM3NENEQSAvKiBJbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2RTIgLyogSW5saW5lTGluZUJ1aWxkZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTZGOTE0MjExMjUxNTIxMzgwMDRFNEZFQSAvKiBJbmxpbmVEaXNw
bGF5TGluZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVBIC8q
IElubGluZUxpbmVSdW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTZGQzNGOTQ3MjUxNjc1NjcwMEE0
OUJFQSAvKiBJbmxpbmVEaXNwbGF5Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDU3NzVDRTI0
MTQzN0Q1MDAyREYxQTAgLyogSW5saW5lUGF0aERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTZG
NDBEQTgyMjUxMzAzM0EwMEVDMDRCNyAvKiBJbmxpbmVSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNEQzM0YzQjI1MkFFRUNEMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNw
cAppbmRleCBhNWU4OGUyNDFlOTNiNjU2OTIzMDE2ODZiYzc3ZTA0YzUyZWJiODY0Li5jN2VmZDY4
ZGRiOGQwYjMwNDZhOWY0NDllNjlmMGJhZWVkZWM3OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3BwCkBAIC0zMDUsMzEgKzMwNSwzMSBAQCB2b2lk
IFRyZWVCdWlsZGVyOjpidWlsZElubGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLAogewogICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9
IGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvcklubGluZUZvcm1hdHRpbmdDb250ZXh0KGlu
bGluZUZvcm1hdHRpbmdSb290KTsKIAotICAgIGZvciAoYXV0byYgcnVuIDogaW5saW5lRm9ybWF0
dGluZ1N0YXRlLnJ1bnMoKSkgewotICAgICAgICBpZiAocnVuLmlzUm9vdElubGluZUJveCgpKSB7
CisgICAgZm9yIChhdXRvJiBib3ggOiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuYm94ZXMoKSkgewor
ICAgICAgICBpZiAoYm94LmlzUm9vdElubGluZUJveCgpKSB7CiAgICAgICAgICAgICAvLyBOb3Qg
c3VwcG9ydGVkIHlldC4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKHJ1bi50ZXh0KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGxpbmVHZW9tZXRyeSA9IGlu
bGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLmF0KHJ1bi5saW5lSW5kZXgoKSk7Ci0gICAgICAg
ICAgICBhdXRvIHRleHRCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvclRleHRSdW4ocnVu
LCBsaW5lR2VvbWV0cnksIHBvc2l0aW9uaW5nQ29udGV4dCgpLmluRmxvd0NvbnRhaW5pbmdCbG9j
a0NvbnRleHQoKSk7CisgICAgICAgIGlmIChib3gudGV4dCgpKSB7CisgICAgICAgICAgICBhdXRv
JiBsaW5lR2VvbWV0cnkgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKS5hdChib3gubGlu
ZUluZGV4KCkpOworICAgICAgICAgICAgYXV0byB0ZXh0Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3Bs
YXlCb3hGb3JUZXh0UnVuKGJveCwgbGluZUdlb21ldHJ5LCBwb3NpdGlvbmluZ0NvbnRleHQoKS5p
bkZsb3dDb250YWluaW5nQmxvY2tDb250ZXh0KCkpOwogICAgICAgICAgICAgaW5zZXJ0KFdURk1v
dmUodGV4dEJveCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICAgICAgICAgIGFjY291bnRGb3JC
b3hQYWludGluZ0V4dGVudCgqaW5zZXJ0aW9uUG9zaXRpb24uY3VycmVudENoaWxkKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzPExheW91dDo6Q29u
dGFpbmVyQm94PihydW4ubGF5b3V0Qm94KCkpKSB7Ci0gICAgICAgICAgICByZWN1cnNpdmVCdWls
ZERpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBydW4ubGF5b3V0Qm94KCksIGluc2VydGlvblBvc2l0
aW9uKTsKKyAgICAgICAgaWYgKGlzPExheW91dDo6Q29udGFpbmVyQm94Pihib3gubGF5b3V0Qm94
KCkpKSB7CisgICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0YXRl
LCBib3gubGF5b3V0Qm94KCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgZm9yIHdlYmtp
dC5vcmdiL2IvMjE5MzM1LgotICAgICAgICBpZiAocnVuLmxheW91dEJveCgpLmlzTGluZUJyZWFr
Qm94KCkgJiYgcnVuLmxheW91dEJveCgpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAg
ICBpZiAoYm94LmxheW91dEJveCgpLmlzTGluZUJyZWFrQm94KCkgJiYgYm94LmxheW91dEJveCgp
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgYXV0byBnZW9tZXRyeSA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KHJ1bi5sYXlvdXRC
b3goKSk7Ci0gICAgICAgIGF1dG8gZGlzcGxheUJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KHJ1bi5sYXlvdXRCb3goKSwgZ2VvbWV0cnksIHBvc2l0aW9uaW5nQ29udGV4
dCgpLmluRmxvd0NvbnRhaW5pbmdCbG9ja0NvbnRleHQoKSk7CisgICAgICAgIGF1dG8gZ2VvbWV0
cnkgPSBsYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckJveChib3gubGF5b3V0Qm94KCkpOworICAgICAg
ICBhdXRvIGRpc3BsYXlCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvckxheW91dEJveChi
b3gubGF5b3V0Qm94KCksIGdlb21ldHJ5LCBwb3NpdGlvbmluZ0NvbnRleHQoKS5pbkZsb3dDb250
YWluaW5nQmxvY2tDb250ZXh0KCkpOwogICAgICAgICBpbnNlcnRJbnRvVHJlZShXVEZNb3ZlKGRp
c3BsYXlCb3gpLCBpbnNlcnRpb25Qb3NpdGlvbiwgV2lsbFRyYXZlcnNlRGVzY2VuZGFudHM6Ok5v
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNw
bGF5Qm94RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94
RmFjdG9yeS5jcHAKaW5kZXggZTY1ZGU4MDM1MjgwMGY5MzI3N2M1NjA5OTk1ZDZhNmM5ZDBiODdk
OC4uZDVkMmMxZGJiMWU0NzUyOTc5NmRkNTgyODczZTUwODBlNGVkNTliZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmNwcApAQCAtMTQzLDE2
ICsxNDMsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZv
ckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3UKICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxCb3g+KG1fdHJlZUJ1aWxkZXIudHJlZSgpLCBwaXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0LCBX
VEZNb3ZlKHN0eWxlKSwgZmxhZ3MpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0
b3J5OjpkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBMYXlvdXQ6OlJ1biYgcnVuLCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpMaW5lJiBsaW5lLCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBj
b250YWluaW5nQmxvY2tDb250ZXh0KSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFj
dG9yeTo6ZGlzcGxheUJveEZvclRleHRSdW4oY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gs
IGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmIGxpbmUsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0Nv
bnRleHQmIGNvbnRhaW5pbmdCbG9ja0NvbnRleHQpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxpbmUpOwotICAgIEFTU0VSVChydW4udGV4dCgpKTsKKyAgICBBU1NFUlQoYm94LnRleHQoKSk7
CiAKLSAgICBhdXRvIHJ1blJlY3QgPSBMYXlvdXRSZWN0IHsgcnVuLmxvZ2ljYWxMZWZ0KCksIHJ1
bi5sb2dpY2FsVG9wKCksIHJ1bi5sb2dpY2FsV2lkdGgoKSwgcnVuLmxvZ2ljYWxIZWlnaHQoKSB9
OwotICAgIHJ1blJlY3QubW92ZShjb250YWluaW5nQmxvY2tDb250ZXh0Lm9mZnNldEZyb21Sb290
KTsKKyAgICBhdXRvIGJveFJlY3QgPSBMYXlvdXRSZWN0IHsgYm94LmxvZ2ljYWxMZWZ0KCksIGJv
eC5sb2dpY2FsVG9wKCksIGJveC5sb2dpY2FsV2lkdGgoKSwgYm94LmxvZ2ljYWxIZWlnaHQoKSB9
OworICAgIGJveFJlY3QubW92ZShjb250YWluaW5nQmxvY2tDb250ZXh0Lm9mZnNldEZyb21Sb290
KTsKIAotICAgIGF1dG8gc3R5bGUgPSBTdHlsZSB7IHJ1bi5sYXlvdXRCb3goKS5zdHlsZSgpIH07
Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dEJveD4obV90cmVlQnVpbGRlci50cmVlKCksIFVu
YWRqdXN0ZWRBYnNvbHV0ZUZsb2F0UmVjdCB7IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocnVuUmVj
dCwgbV9waXhlbFNuYXBwaW5nRmFjdG9yKSB9LCBXVEZNb3ZlKHN0eWxlKSwgcnVuKTsKKyAgICBh
dXRvIHN0eWxlID0gU3R5bGUgeyBib3gubGF5b3V0Qm94KCkuc3R5bGUoKSB9OworICAgIHJldHVy
biBtYWtlVW5pcXVlPFRleHRCb3g+KG1fdHJlZUJ1aWxkZXIudHJlZSgpLCBVbmFkanVzdGVkQWJz
b2x1dGVGbG9hdFJlY3QgeyBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJveFJlY3QsIG1fcGl4ZWxT
bmFwcGluZ0ZhY3RvcikgfSwgV1RGTW92ZShzdHlsZSksIGJveCk7CiB9CiAKIHZvaWQgQm94RmFj
dG9yeTo6c2V0dXBCb3hHZW9tZXRyeShCb3hNb2RlbEJveCYgYm94LCBjb25zdCBMYXlvdXQ6OkJv
eCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmIGxheW91dEdlb21ldHJ5LCBjb25zdCBDb250
YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWluaW5nQmxvY2tDb250ZXh0KSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmgKaW5kZXggODBjMjBh
MzdmM2Q1MjFmOWZjZThmYmQ5ZTM5MzY1NmFkM2I3M2E3Yi4uMDIwM2JhZGZmMzIzNmIzNGJhYmI4
ZDY3N2JjOTlkMTU4YTdkZGM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheUJveEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Qm94RmFjdG9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBSdW47CiB9CiAKIG5h
bWVzcGFjZSBJbmxpbmVEaXNwbGF5IHsKK3N0cnVjdCBCb3g7CiBjbGFzcyBMaW5lOwogfQogCkBA
IC03Nyw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5
Qm94Rm9yQm9keUJveChjb25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0
cnkmLCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiwgUm9vdEJhY2tncm91bmRQcm9wYWdh
dGlvbikgY29uc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckxheW91
dEJveChjb25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25z
dCBDb250YWluaW5nQmxvY2tDb250ZXh0JikgY29uc3Q7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qm94PiBkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBMYXlvdXQ6OlJ1biYsIGNvbnN0IElubGlu
ZURpc3BsYXk6OkxpbmUmLCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JikgY29uc3Q7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvclRleHRSdW4oY29uc3QgSW5saW5l
RGlzcGxheTo6Qm94JiwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYsIGNvbnN0IENvbnRhaW5p
bmdCbG9ja0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qm94PiBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgTGF5
b3V0OjpCb3hHZW9tZXRyeSYsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmLCBjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kLCBTdHlsZSYmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAppbmRleCBkYjIzMTRkYjQ3
NDMwMDhlYjYwNmYyZmYxMjc4ZDQ2MTUxMjhhZjBhLi5lNTgwYzM0Yjg4MWVhNDgxMmEyNTJjMTA2
NTM4ZDMyOTUxMjIwNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5VGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eVRleHRCb3guY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAgbmFtZXNwYWNlIERpc3BsYXkgewogCiBE
RUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFRleHRCb3gpOwogCi1UZXh0Qm94
OjpUZXh0Qm94KFRyZWUmIHRyZWUsIFVuYWRqdXN0ZWRBYnNvbHV0ZUZsb2F0UmVjdCBib3JkZXJC
b3gsIFN0eWxlJiYgZGlzcGxheVN0eWxlLCBjb25zdCBMYXlvdXQ6OlJ1biYgbGluZVJ1bikKK1Rl
eHRCb3g6OlRleHRCb3goVHJlZSYgdHJlZSwgVW5hZGp1c3RlZEFic29sdXRlRmxvYXRSZWN0IGJv
cmRlckJveCwgU3R5bGUmJiBkaXNwbGF5U3R5bGUsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYg
Ym94KQogICAgIDogQm94KHRyZWUsIGJvcmRlckJveCwgV1RGTW92ZShkaXNwbGF5U3R5bGUpLCB7
IFR5cGVGbGFnczo6VGV4dEJveCB9KQotICAgICwgbV9leHBhbnNpb24obGluZVJ1bi5leHBhbnNp
b24oKSkKLSAgICAsIG1fdGV4dChsaW5lUnVuLnRleHQoKS52YWx1ZSgpKQorICAgICwgbV9leHBh
bnNpb24oYm94LmV4cGFuc2lvbigpKQorICAgICwgbV90ZXh0KGJveC50ZXh0KCkudmFsdWUoKSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRl
eHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmgKaW5k
ZXggYzUxODJlODY5YjcxNjQ4MzMzZGMxNDQ2ODZlZDEyMGFhNzFiMmUyNy4uZTQ4NGNjMzdjNzA1
MzI4NzU0MmVkMzFjOTBlNWZlMDNiMTEzNGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L2Nzcy9EaXNwbGF5VGV4dEJveC5oCkBAIC0zOCwxNyArMzgsMTcgQEAgREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoVGV4dEJveCk7CiBjbGFzcyBUZXh0Qm94IDogcHVibGlj
IEJveCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIo
VGV4dEJveCk7CiBwdWJsaWM6Ci0gICAgVGV4dEJveChUcmVlJiwgVW5hZGp1c3RlZEFic29sdXRl
RmxvYXRSZWN0IGJvcmRlckJveCwgU3R5bGUmJiwgY29uc3QgTGF5b3V0OjpSdW4mKTsKKyAgICBU
ZXh0Qm94KFRyZWUmLCBVbmFkanVzdGVkQWJzb2x1dGVGbG9hdFJlY3QgYm9yZGVyQm94LCBTdHls
ZSYmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmKTsKIAotICAgIExheW91dDo6UnVuOjpFeHBh
bnNpb24gZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0KLSAgICBjb25z
dCBMYXlvdXQ6OlJ1bjo6VGV4dCYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQorICAg
IElubGluZURpc3BsYXk6OkJveDo6RXhwYW5zaW9uIGV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZXhwYW5zaW9uOyB9CisgICAgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94OjpUZXh0JiB0ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciog
Ym94TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29u
c3QgZmluYWw7CiAgICAgCi0gICAgTGF5b3V0OjpSdW46OkV4cGFuc2lvbiBtX2V4cGFuc2lvbjsK
LSAgICBMYXlvdXQ6OlJ1bjo6VGV4dCBtX3RleHQ7CisgICAgSW5saW5lRGlzcGxheTo6Qm94OjpF
eHBhbnNpb24gbV9leHBhbnNpb247CisgICAgSW5saW5lRGlzcGxheTo6Qm94OjpUZXh0IG1fdGV4
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zlcmlm
aWNhdGlvbi5jcHAKaW5kZXggOTI5ZjEwOTdjNmIyM2YxYjRjZDk1OTUyZjhmMjAwYjMyM2YxZTM1
NC4uYjkyMDA2OTFhZWQ3OWIxZGMxNTFlODIxNzcyM2QyMTg2NTIyMTBiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTcwLDI0ICs3MCwyNCBAQCBzdGF0aWMgYm9v
bCBhcmVFc3NlbnRpYWxseUVxdWFsKExheW91dFJlY3QgYSwgTGF5b3V0UmVjdCBiKQogICAgICAg
ICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGEuaGVpZ2h0KCksIGIuaGVpZ2h0KCkpOwogfQogCi1z
dGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMoY29uc3QgUnVuJiBydW4sIGNv
bnN0IFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveCYgaW5saW5lQm94KQorc3RhdGljIGJvb2wgY2hl
Y2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgYm94LCBj
b25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gmIGlubGluZUJveCkKIHsKLSAgICByZXR1cm4g
YXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gubGVmdCgpLCBydW4ubG9naWNhbExlZnQoKSkK
LSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gucmlnaHQoKSwgcnVuLmxv
Z2ljYWxSaWdodCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC50
b3AoKSwgcnVuLmxvZ2ljYWxUb3AoKSkKLSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChp
bmxpbmVCb3guYm90dG9tKCksIHJ1bi5sb2dpY2FsQm90dG9tKCkpOworICAgIHJldHVybiBhcmVF
c3NlbnRpYWxseUVxdWFsKGlubGluZUJveC5sZWZ0KCksIGJveC5sb2dpY2FsTGVmdCgpKQorICAg
ICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC5yaWdodCgpLCBib3gubG9naWNh
bFJpZ2h0KCkpCisgICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LnRvcCgp
LCBib3gubG9naWNhbFRvcCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGlu
ZUJveC5ib3R0b20oKSwgYm94LmxvZ2ljYWxCb3R0b20oKSk7CiB9CiAKIAotc3RhdGljIGJvb2wg
Y2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGNvbnN0IFJ1biYgcnVuLCBjb25zdCBXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KQorc3RhdGljIGJvb2wgY2hlY2tGb3JN
YXRjaGluZ1RleHRSdW5zKElubGluZURpc3BsYXk6OkJveCYgYm94LCBjb25zdCBXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KQogewotICAgIGlmICghcnVuLnRleHQo
KSkKKyAgICBpZiAoIWJveC50ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LmxlZnQoKSwgcnVuLmxvZ2ljYWxM
ZWZ0KCkpCi0gICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC5yaWdo
dCgpLCBydW4ubG9naWNhbFJpZ2h0KCkpCi0gICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwo
aW5saW5lVGV4dEJveC50b3AoKSwgcnVuLmxvZ2ljYWxUb3AoKSkKLSAgICAgICAgJiYgYXJlRXNz
ZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LmJvdHRvbSgpLCBydW4ubG9naWNhbEJvdHRvbSgp
KQotICAgICAgICAmJiAoaW5saW5lVGV4dEJveC5pc0xpbmVCcmVhaygpIHx8IChpbmxpbmVUZXh0
Qm94LnN0YXJ0KCkgPT0gcnVuLnRleHQoKS0+c3RhcnQoKSAmJiBpbmxpbmVUZXh0Qm94LmVuZCgp
ID09IHJ1bi50ZXh0KCktPmVuZCgpKSk7CisgICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwo
aW5saW5lVGV4dEJveC5sZWZ0KCksIGJveC5sb2dpY2FsTGVmdCgpKQorICAgICAgICAmJiBhcmVF
c3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3gucmlnaHQoKSwgYm94LmxvZ2ljYWxSaWdodCgp
KQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3gudG9wKCksIGJv
eC5sb2dpY2FsVG9wKCkpCisgICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4
dEJveC5ib3R0b20oKSwgYm94LmxvZ2ljYWxCb3R0b20oKSkKKyAgICAgICAgJiYgKGlubGluZVRl
eHRCb3guaXNMaW5lQnJlYWsoKSB8fCAoaW5saW5lVGV4dEJveC5zdGFydCgpID09IGJveC50ZXh0
KCktPnN0YXJ0KCkgJiYgaW5saW5lVGV4dEJveC5lbmQoKSA9PSBib3gudGV4dCgpLT5lbmQoKSkp
OwogfQogCiBzdGF0aWMgdm9pZCBjb2xsZWN0Rmxvd0JveFN1YnRyZWUoY29uc3QgTGVnYWN5SW5s
aW5lRmxvd0JveCYgZmxvd2JveCwgVmVjdG9yPFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveCo+JiBp
bmxpbmVCb3hlcykKQEAgLTExOCw0OCArMTE4LDQ4IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RJbmxp
bmVCb3hlcyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJvb3QsIFZlY3RvcjxXZWJDb3JlOjpMZWdh
CiBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5l
ZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNvbnN0IENvbnRhaW5lckJveCYgaW5s
aW5lRm9ybWF0dGluZ1Jvb3QpCiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0g
bGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9y
bWF0dGluZ1Jvb3QpOwotICAgIGF1dG8mIHJ1bnMgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5n
U3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkucnVucygpOworICAgIGF1dG8mIGJveGVzID0g
ZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmJv
eGVzKCk7CiAgICAgLy8gQ29sbGVjdCBpbmxpbmVib3hlcy4KICAgICBWZWN0b3I8V2ViQ29yZTo6
TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7CiAgICAgY29sbGVjdElubGluZUJveGVzKGJs
b2NrRmxvdywgaW5saW5lQm94ZXMpOwogCiAgICAgYXV0byBtaXNtYXRjaGVkID0gZmFsc2U7Ci0g
ICAgdW5zaWduZWQgcnVuSW5kZXggPSAwOworICAgIHVuc2lnbmVkIGJveEluZGV4ID0gMDsKIAot
ICAgIGlmIChpbmxpbmVCb3hlcy5zaXplKCkgIT0gcnVucy5zaXplKCkpIHsKLSAgICAgICAgc3Ry
ZWFtIDw8ICJXYXJuaW5nOiBtaXNtYXRjaGluZyBudW1iZXIgb2YgcnVuczogaW5saW5lYm94ZXMo
IiA8PCBpbmxpbmVCb3hlcy5zaXplKCkgPDwgIikgdnMuIGlubGluZSBydW5zKCIgPDwgcnVucy5z
aXplKCkgPDwgIikiOworICAgIGlmIChpbmxpbmVCb3hlcy5zaXplKCkgIT0gYm94ZXMuc2l6ZSgp
KSB7CisgICAgICAgIHN0cmVhbSA8PCAiV2FybmluZzogbWlzbWF0Y2hpbmcgbnVtYmVyIG9mIGJv
eGVzOiBpbmxpbmVib3hlcygiIDw8IGlubGluZUJveGVzLnNpemUoKSA8PCAiKSB2cy4gaW5saW5l
IGJveGVzKCIgPDwgYm94ZXMuc2l6ZSgpIDw8ICIpIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5l
KCk7CiAgICAgfQogCi0gICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlubGlu
ZUJveEluZGV4IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIHJ1bkluZGV4IDwgcnVucy5zaXplKCk7
ICsraW5saW5lQm94SW5kZXgpIHsKLSAgICAgICAgYXV0byYgcnVuID0gcnVuc1tydW5JbmRleF07
CisgICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlubGluZUJveEluZGV4IDwg
aW5saW5lQm94ZXMuc2l6ZSgpICYmIGJveEluZGV4IDwgYm94ZXMuc2l6ZSgpOyArK2lubGluZUJv
eEluZGV4KSB7CisgICAgICAgIGF1dG8mIGJveCA9IGJveGVzW2JveEluZGV4XTsKICAgICAgICAg
YXV0byogaW5saW5lQm94ID0gaW5saW5lQm94ZXNbaW5saW5lQm94SW5kZXhdOwogICAgICAgICBh
dXRvKiBpbmxpbmVUZXh0Qm94ID0gaXM8V2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveD4oaW5s
aW5lQm94KSA/IGRvd25jYXN0PFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g+KGlubGluZUJv
eCkgOiBudWxscHRyOwotICAgICAgICBib29sIG1hdGNoaW5nUnVucyA9IGlubGluZVRleHRCb3gg
PyBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMocnVuLCAqaW5saW5lVGV4dEJveCkgOiBjaGVja0Zv
ck1hdGNoaW5nTm9uVGV4dFJ1bnMocnVuLCAqaW5saW5lQm94KTsKKyAgICAgICAgYm9vbCBtYXRj
aGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94ID8gY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGJveCwg
KmlubGluZVRleHRCb3gpIDogY2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGJveCwgKmlubGlu
ZUJveCk7CiAKICAgICAgICAgaWYgKCFtYXRjaGluZ1J1bnMpIHsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKGlzPFJlbmRlckxpbmVCcmVhaz4oaW5saW5lQm94LT5yZW5kZXJlcigpKSkg
ewogICAgICAgICAgICAgICAgIC8vIDxicj4gcG9zaXRpb25pbmcgaXMgd2VpcmQgYXQgdGhpcyBw
b2ludC4gSXQgbmVlZHMgcHJvcGVyIGJhc2VsaW5lLgogICAgICAgICAgICAgICAgIG1hdGNoaW5n
UnVucyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgKytydW5JbmRleDsKKyAgICAgICAgICAgICAg
ICArK2JveEluZGV4OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBzdHJlYW0gPDwgIk1pc21hdGNoaW5nOiBydW4iOworICAgICAgICAgICAg
c3RyZWFtIDw8ICJNaXNtYXRjaGluZzogYm94IjsKIAogICAgICAgICAgICAgaWYgKGlubGluZVRl
eHRCb3gpCiAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgaW5saW5lVGV4dEJveC0+
c3RhcnQoKSA8PCAiLCAiIDw8IGlubGluZVRleHRCb3gtPmVuZCgpIDw8ICIpIjsKICAgICAgICAg
ICAgIHN0cmVhbSA8PCAiICgiIDw8IGlubGluZUJveC0+bG9naWNhbExlZnQoKSA8PCAiLCAiIDw8
IGlubGluZUJveC0+bG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGlubGluZUJveC0+bG9naWNhbFdp
ZHRoKCkgPDwgIngiIDw8IGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpIDw8ICIpIjsKIAotICAg
ICAgICAgICAgc3RyZWFtIDw8ICIgaW5saW5lIHJ1biI7Ci0gICAgICAgICAgICBpZiAocnVuLnRl
eHQoKSkKLSAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBydW4udGV4dCgpLT5zdGFy
dCgpIDw8ICIsICIgPDwgcnVuLnRleHQoKS0+ZW5kKCkgPDwgIikiOwotICAgICAgICAgICAgc3Ry
ZWFtIDw8ICIgKCIgPDwgcnVuLmxvZ2ljYWxMZWZ0KCkgPDwgIiwgIiA8PCBydW4ubG9naWNhbFRv
cCgpIDw8ICIpICgiIDw8IHJ1bi5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgcnVuLmxvZ2ljYWxI
ZWlnaHQoKSA8PCAiKSI7CisgICAgICAgICAgICBzdHJlYW0gPDwgIiBpbmxpbmUgYm94IjsKKyAg
ICAgICAgICAgIGlmIChib3gudGV4dCgpKQorICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiICgi
IDw8IGJveC50ZXh0KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBib3gudGV4dCgpLT5lbmQoKSA8PCAi
KSI7CisgICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBib3gubG9naWNhbExlZnQoKSA8PCAi
LCAiIDw8IGJveC5sb2dpY2FsVG9wKCkgPDwgIikgKCIgPDwgYm94LmxvZ2ljYWxXaWR0aCgpIDw8
ICJ4IiA8PCBib3gubG9naWNhbEhlaWdodCgpIDw8ICIpIjsKICAgICAgICAgICAgIHN0cmVhbS5u
ZXh0TGluZSgpOwogICAgICAgICAgICAgbWlzbWF0Y2hlZCA9IHRydWU7CiAgICAgICAgIH0KLSAg
ICAgICAgKytydW5JbmRleDsKKyAgICAgICAgKytib3hJbmRleDsKICAgICB9CiAgICAgcmV0dXJu
IG1pc21hdGNoZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCA4OWExMTEwNzNlOGNhZWNjMzg4MTY3MjdlM2Y4Yzhk
ZTNkOGJjMWQ5Li5jNmYwNDJlOThmMjY5NWMxMmQwZTFmMDM5NmY3YTNjYTQ1ZTJiNjBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5j
cHAKQEAgLTQyLDI2ICs0MiwyNiBAQCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OklubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlcihjb25zdCBDb250YWluZXJCb3gmIGZvcgogewogfQogCi1J
bmxpbmVSdW5zIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1
aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwg
Y29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6
ZV90IGxpbmVJbmRleCkKK0Rpc3BsYXlCb3hlcyBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6
OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0
IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNh
bFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgpCiB7Ci0gICAgSW5saW5lUnVucyBydW5z
OwotICAgIHJ1bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaW5lQ29udGVudC5ydW5zLnNpemUo
KSArIGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKS5zaXplKCkgKyAxKTsKKyAgICBE
aXNwbGF5Qm94ZXMgYm94ZXM7CisgICAgYm94ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaW5l
Q29udGVudC5ydW5zLnNpemUoKSArIGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKS5z
aXplKCkgKyAxKTsKIAotICAgIC8vIEV2ZXJ5IGxpbmUgc3RhcnRzIHdpdGggYSByb290IHJ1biwg
ZXZlbiB0aGUgZW1wdHkgb25lcy4KKyAgICAvLyBFdmVyeSBsaW5lIHN0YXJ0cyB3aXRoIGEgcm9v
dCBib3gsIGV2ZW4gdGhlIGVtcHR5IG9uZXMuCiAgICAgYXV0byByb290SW5saW5lQm94UmVjdCA9
IGxpbmVCb3gubG9naWNhbFJlY3RGb3JSb290SW5saW5lQm94KCk7CiAgICAgcm9vdElubGluZUJv
eFJlY3QubW92ZUJ5KGxpbmVCb3hMb2dpY2FsVG9wTGVmdCk7Ci0gICAgcnVucy5hcHBlbmQoeyBs
aW5lSW5kZXgsIFJ1bjo6VHlwZTo6Um9vdElubGluZUJveCwgcm9vdCgpLCByb290SW5saW5lQm94
UmVjdCwgcm9vdElubGluZUJveFJlY3QsIHsgfSwgeyB9LCAgbGluZUJveC5yb290SW5saW5lQm94
KCkuaGFzQ29udGVudCgpfSk7CisgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4LCBJbmxpbmVE
aXNwbGF5OjpCb3g6OlR5cGU6OlJvb3RJbmxpbmVCb3gsIHJvb3QoKSwgcm9vdElubGluZUJveFJl
Y3QsIHJvb3RJbmxpbmVCb3hSZWN0LCB7IH0sIHsgfSwgIGxpbmVCb3gucm9vdElubGluZUJveCgp
Lmhhc0NvbnRlbnQoKX0pOwogCi0gICAgY3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGlu
ZVNwYW5uaW5nSW5saW5lQm94ZXMobGluZUJveCwgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBsaW5l
SW5kZXgsIHJ1bnMpOwotICAgIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250
ZW50KGxpbmVDb250ZW50LCBsaW5lQm94LCBsaW5lQm94TG9naWNhbFRvcExlZnQsIGxpbmVJbmRl
eCwgcnVucyk7Ci0gICAgY29sbGVjdElua092ZXJmbG93Rm9ySW5saW5lQm94UnVucyhsaW5lQm94
LCBydW5zKTsKLSAgICByZXR1cm4gcnVuczsKKyAgICBjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21l
dHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMobGluZUJveCwgbGluZUJveExvZ2ljYWxUb3BM
ZWZ0LCBsaW5lSW5kZXgsIGJveGVzKTsKKyAgICBjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5
Rm9yTGluZUNvbnRlbnQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGxpbmVCb3hMb2dpY2FsVG9wTGVm
dCwgbGluZUluZGV4LCBib3hlcyk7CisgICAgY29sbGVjdElua092ZXJmbG93Rm9ySW5saW5lQm94
ZXMobGluZUJveCwgYm94ZXMpOworICAgIHJldHVybiBib3hlczsKIH0KIAotdm9pZCBJbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVD
b250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0
IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNh
bFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIElubGluZVJ1bnMmIHJ1bnMpCit2b2lk
IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlQm94ZXNBbmRVcGRhdGVHZW9tZXRy
eUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRl
bnQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5l
Qm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIERpc3BsYXlCb3hlcyYg
Ym94ZXMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0
YXRlKCk7Ci0gICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgcnVucyBvbiB0aGUgY3VycmVudCBsaW5l
LiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMgaW5saW5lIHJ1bnMuCisgICAgLy8gQ3Jl
YXRlIHRoZSBpbmxpbmUgYm94ZXMgb24gdGhlIGN1cnJlbnQgbGluZS4gVGhpcyBpcyBtb3N0bHkg
dGV4dCBhbmQgYXRvbWljIGlubGluZSBib3hlcy4KICAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBs
aW5lQ29udGVudC5ydW5zKSB7CiAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGxpbmVSdW4ubGF5
b3V0Qm94KCk7CiAgICAgICAgIHN3aXRjaCAobGluZVJ1bi50eXBlKCkpIHsKQEAgLTkwLDEzICs5
MCwxMyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVw
ZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogICAgICAgICAgICAgYXV0byBhZGp1c3Rl
ZENvbnRlbnRUb1JlbmRlciA9IFsmXSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQtPm5l
ZWRzSHlwaGVuID8gbWFrZVN0cmluZyhjb250ZW50LnN1YnN0cmluZyh0ZXh0LT5zdGFydCwgdGV4
dC0+bGVuZ3RoKSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpIDogU3RyaW5nKCk7CiAgICAgICAgICAg
ICB9OwotICAgICAgICAgICAgcnVucy5hcHBlbmQoeyBsaW5lSW5kZXgKLSAgICAgICAgICAgICAg
ICAsIFJ1bjo6VHlwZTo6VGV4dAorICAgICAgICAgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4
CisgICAgICAgICAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OlRleHQKICAgICAg
ICAgICAgICAgICAsIGxheW91dEJveAogICAgICAgICAgICAgICAgICwgdGV4dFJ1blJlY3QKICAg
ICAgICAgICAgICAgICAsIGlua092ZXJmbG93KCkKICAgICAgICAgICAgICAgICAsIGxpbmVSdW4u
ZXhwYW5zaW9uKCkKLSAgICAgICAgICAgICAgICAsIFJ1bjo6VGV4dCB7IHRleHQtPnN0YXJ0LCB0
ZXh0LT5sZW5ndGgsIGNvbnRlbnQsIGFkanVzdGVkQ29udGVudFRvUmVuZGVyKCksIHRleHQtPm5l
ZWRzSHlwaGVuIH0gfSk7CisgICAgICAgICAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlRl
eHQgeyB0ZXh0LT5zdGFydCwgdGV4dC0+bGVuZ3RoLCBjb250ZW50LCBhZGp1c3RlZENvbnRlbnRU
b1JlbmRlcigpLCB0ZXh0LT5uZWVkc0h5cGhlbiB9IH0pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpTb2Z0TGluZUJyZWFrOiB7
CkBAIC0xMDUsMjAgKzEwNSwyMCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogCiAgICAgICAg
ICAgICBBU1NFUlQobGluZVJ1bi50ZXh0Q29udGVudCgpICYmIGlzPElubGluZVRleHRCb3g+KGxh
eW91dEJveCkpOwogICAgICAgICAgICAgYXV0byYgdGV4dCA9IGxpbmVSdW4udGV4dENvbnRlbnQo
KTsKLSAgICAgICAgICAgIHJ1bnMuYXBwZW5kKHsgbGluZUluZGV4Ci0gICAgICAgICAgICAgICAg
LCBSdW46OlR5cGU6OlNvZnRMaW5lQnJlYWsKKyAgICAgICAgICAgIGJveGVzLmFwcGVuZCh7IGxp
bmVJbmRleAorICAgICAgICAgICAgICAgICwgSW5saW5lRGlzcGxheTo6Qm94OjpUeXBlOjpTb2Z0
TGluZUJyZWFrCiAgICAgICAgICAgICAgICAgLCBsYXlvdXRCb3gKICAgICAgICAgICAgICAgICAs
IHNvZnRMaW5lQnJlYWtSdW5SZWN0CiAgICAgICAgICAgICAgICAgLCBzb2Z0TGluZUJyZWFrUnVu
UmVjdAogICAgICAgICAgICAgICAgICwgbGluZVJ1bi5leHBhbnNpb24oKQotICAgICAgICAgICAg
ICAgICwgUnVuOjpUZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgZG93bmNhc3Q8SW5s
aW5lVGV4dEJveD4obGF5b3V0Qm94KS5jb250ZW50KCkgfSB9KTsKKyAgICAgICAgICAgICAgICAs
IElubGluZURpc3BsYXk6OkJveDo6VGV4dCB7IHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgsIGRv
d25jYXN0PElubGluZVRleHRCb3g+KGxheW91dEJveCkuY29udGVudCgpIH0gfSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6Okhh
cmRMaW5lQnJlYWs6IHsKICAgICAgICAgICAgIC8vIE9ubHkgaGFyZCBsaW5lYnJlYWtzIGhhdmUg
YXNzb2NpYXRlZCBsYXlvdXQgYm94ZXMuCiAgICAgICAgICAgICBhdXRvIGxpbmVCcmVha0JveFJl
Y3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yTGluZUJyZWFrQm94KGxheW91dEJveCk7CiAgICAg
ICAgICAgICBsaW5lQnJlYWtCb3hSZWN0Lm1vdmVCeShsaW5lQm94TG9naWNhbFRvcExlZnQpOwot
ICAgICAgICAgICAgcnVucy5hcHBlbmQoeyBsaW5lSW5kZXgsIFJ1bjo6VHlwZTo6TGluZUJyZWFr
Qm94LCBsYXlvdXRCb3gsIGxpbmVCcmVha0JveFJlY3QsIGxpbmVCcmVha0JveFJlY3QsIGxpbmVS
dW4uZXhwYW5zaW9uKCksIHsgfSB9KTsKKyAgICAgICAgICAgIGJveGVzLmFwcGVuZCh7IGxpbmVJ
bmRleCwgSW5saW5lRGlzcGxheTo6Qm94OjpUeXBlOjpMaW5lQnJlYWtCb3gsIGxheW91dEJveCwg
bGluZUJyZWFrQm94UmVjdCwgbGluZUJyZWFrQm94UmVjdCwgbGluZVJ1bi5leHBhbnNpb24oKSwg
eyB9IH0pOwogCiAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0
ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpOwogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9n
aWNhbFRvcExlZnQodG9MYXlvdXRQb2ludChsaW5lQnJlYWtCb3hSZWN0LnRvcExlZnQoKSkpOwpA
QCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVh
dGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBh
dXRvIGxvZ2ljYWxCb3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJ
bmxpbmVMZXZlbEJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsKICAgICAgICAgICAgIGxvZ2lj
YWxCb3JkZXJCb3gubW92ZUJ5KGxpbmVCb3hMb2dpY2FsVG9wTGVmdCk7CiAgICAgICAgICAgICAv
LyBGSVhNRTogQWRkIGluayBvdmVyZmxvdyBzdXBwb3J0IGZvciBhdG9taWMgaW5saW5lIGxldmVs
IGJveGVzIChlLmcuIGJveCBzaGFkb3cpLgotICAgICAgICAgICAgcnVucy5hcHBlbmQoeyBsaW5l
SW5kZXgsIFJ1bjo6VHlwZTo6QXRvbWljSW5saW5lTGV2ZWxCb3gsIGxheW91dEJveCwgbG9naWNh
bEJvcmRlckJveCwgbG9naWNhbEJvcmRlckJveCwgbGluZVJ1bi5leHBhbnNpb24oKSwgeyB9IH0p
OworICAgICAgICAgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4LCBJbmxpbmVEaXNwbGF5OjpC
b3g6OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94LCBsYXlvdXRCb3gsIGxvZ2ljYWxCb3JkZXJC
b3gsIGxvZ2ljYWxCb3JkZXJCb3gsIGxpbmVSdW4uZXhwYW5zaW9uKCksIHsgfSB9KTsKIAogICAg
ICAgICAgICAgYXV0byBib3JkZXJCb3hMb2dpY2FsVG9wTGVmdCA9IGxvZ2ljYWxCb3JkZXJCb3gu
dG9wTGVmdCgpOwogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGlubGluZSBib3hlcyBhcmUgcmVs
YXRpdmUgdG8gdGhlIGxpbmUgYW5kIHRoZWlyIHRvcCBwb3NpdGlvbiBjYW4gYmUgbmVnYXRpdmUu
CkBAIC0xNDEsMTEgKzE0MSwxMSBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogICAgICAgICAg
ICAgYXV0byBhZGp1c3RQYXJlbnRJbmxpbmVCb3hJbmtPdmVyZmxvdyA9IFsmXSB7CiAgICAgICAg
ICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0gbGF5b3V0Qm94LnBhcmVudCgpOwogICAg
ICAgICAgICAgICAgIGlmICgmcGFyZW50SW5saW5lQm94ID09ICZyb290KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY29sbGVjdCBpbmsgb3ZlcmZsb3cgZm9yIHRoZSByb290
IGlubGluZSBib3ggcnVuLgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBjb2xsZWN0
IGluayBvdmVyZmxvdyBmb3IgdGhlIHJvb3QgaW5saW5lIGJveC4KICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX2lubGluZUJveFJ1bkluZGV4TWFwLmNvbnRhaW5zKCZwYXJlbnRJbmxpbmVCb3gpKTsK
LSAgICAgICAgICAgICAgICBydW5zW21faW5saW5lQm94UnVuSW5kZXhNYXAuZ2V0KCZwYXJlbnRJ
bmxpbmVCb3gpXS5hZGp1c3RJbmtPdmVyZmxvdyhsb2dpY2FsQm9yZGVyQm94KTsKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2lubGluZUJveEluZGV4TWFwLmNvbnRhaW5zKCZwYXJl
bnRJbmxpbmVCb3gpKTsKKyAgICAgICAgICAgICAgICBib3hlc1ttX2lubGluZUJveEluZGV4TWFw
LmdldCgmcGFyZW50SW5saW5lQm94KV0uYWRqdXN0SW5rT3ZlcmZsb3cobG9naWNhbEJvcmRlckJv
eCk7CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgYWRqdXN0UGFyZW50SW5saW5lQm94SW5r
T3ZlcmZsb3coKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2LDkgKzE1Niw5IEBAIHZvaWQg
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlG
b3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBhdXRvIGlubGluZUJveEJvcmRlckJveCA9
IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21l
dHJ5KTsKICAgICAgICAgICAgIGlubGluZUJveEJvcmRlckJveC5tb3ZlQnkobGluZUJveExvZ2lj
YWxUb3BMZWZ0KTsKICAgICAgICAgICAgIGlmIChsaW5lQm94Lmhhc0NvbnRlbnQoKSkgewotICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIGV4cGVjdGVkIHRvIG5vdCBoYXZlIGFueSBydW5z
IG9uIGVtcHR5IGxpbmVzLiBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzLgotICAgICAgICAgICAg
ICAgIG1faW5saW5lQm94UnVuSW5kZXhNYXAuYWRkKCZsYXlvdXRCb3gsIHJ1bnMuc2l6ZSgpKTsK
LSAgICAgICAgICAgICAgICBydW5zLmFwcGVuZCh7IGxpbmVJbmRleCwgUnVuOjpUeXBlOjpOb25S
b290SW5saW5lQm94LCBsYXlvdXRCb3gsIGlubGluZUJveEJvcmRlckJveCwgaW5saW5lQm94Qm9y
ZGVyQm94LCB7IH0sIHsgfSwgbGluZUJveC5pbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlv
dXRCb3gpLmhhc0NvbnRlbnQoKSB9KTsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogSXQncyBl
eHBlY3RlZCB0byBub3QgaGF2ZSBhbnkgYm94ZXMgb24gZW1wdHkgbGluZXMuIFdlIHNob3VsZCBy
ZWNvbnNpZGVyIHRoaXMuCisgICAgICAgICAgICAgICAgbV9pbmxpbmVCb3hJbmRleE1hcC5hZGQo
JmxheW91dEJveCwgYm94ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBib3hlcy5hcHBlbmQo
eyBsaW5lSW5kZXgsIElubGluZURpc3BsYXk6OkJveDo6VHlwZTo6Tm9uUm9vdElubGluZUJveCwg
bGF5b3V0Qm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIGlubGluZUJveEJvcmRlckJveCwgeyB9LCB7
IH0sIGxpbmVCb3guaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5oYXNDb250
ZW50KCkgfSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGF1dG8gaW5saW5lQm94U2l6
ZSA9IExheW91dFNpemUgeyBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRl
ckJveC53aWR0aCgpKSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVCb3hCb3JkZXJC
b3guaGVpZ2h0KCkpIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNv
bnMKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVS
dW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxpbmVCb3hlcyhjb25zdCBMaW5l
Qm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BM
ZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBJbmxpbmVSdW5zJiBydW5zKQordm9pZCBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZUJveGVzQW5kVXBkYXRlR2VvbWV0cnlGb3JM
aW5lU3Bhbm5pbmdJbmxpbmVCb3hlcyhjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxp
bmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUlu
ZGV4LCBEaXNwbGF5Qm94ZXMmIGJveGVzKQogewogICAgIGlmICghbGluZUJveC5oYXNDb250ZW50
KCkpIHsKICAgICAgICAgLy8gV2hlbiBhIHNwYW5uaW5nIGlubGluZSBib3ggKGUuZy4gPGRpdj50
ZXh0PHNwYW4+PGJyPjwvc3Bhbj48L2Rpdj4pIGxhbmRzIG9uIGFuIGVtcHR5IGxpbmUKQEAgLTE5
MiwxMiArMTkyLDEyIEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVS
dW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94
KCk7CiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21l
dHJ5KGxheW91dEJveCk7Ci0gICAgICAgIC8vIElubGluZSBib3hlcyBtYXkgb3IgbWF5IG5vdCBi
ZSB3cmFwcGVkIGFuZCBoYXZlIHJ1bnMgb24gbXVsdGlwbGUgbGluZXMgKGUuZy4gPHNwYW4+Zmly
c3QgbGluZTxicj5zZWNvbmQgbGluZTxicj50aGlyZCBsaW5lPC9zcGFuPikKKyAgICAgICAgLy8g
SW5saW5lIGJveGVzIG1heSBvciBtYXkgbm90IGJlIHdyYXBwZWQgYW5kIGhhdmUgYm94ZXMgb24g
bXVsdGlwbGUgbGluZXMgKGUuZy4gPHNwYW4+Zmlyc3QgbGluZTxicj5zZWNvbmQgbGluZTxicj50
aGlyZCBsaW5lPC9zcGFuPikKICAgICAgICAgYXV0byBpbmxpbmVCb3hCb3JkZXJCb3ggPSBsaW5l
Qm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7
CiAgICAgICAgIGlubGluZUJveEJvcmRlckJveC5tb3ZlQnkobGluZUJveExvZ2ljYWxUb3BMZWZ0
KTsKIAotICAgICAgICBtX2lubGluZUJveFJ1bkluZGV4TWFwLmFkZCgmbGF5b3V0Qm94LCBydW5z
LnNpemUoKSk7Ci0gICAgICAgIHJ1bnMuYXBwZW5kKHsgbGluZUluZGV4LCBSdW46OlR5cGU6Ok5v
blJvb3RJbmxpbmVCb3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9yZGVyQm94LCBpbmxpbmVCb3hC
b3JkZXJCb3gsIHsgfSwgeyB9LCBpbmxpbmVMZXZlbEJveC5oYXNDb250ZW50KCkgfSk7CisgICAg
ICAgIG1faW5saW5lQm94SW5kZXhNYXAuYWRkKCZsYXlvdXRCb3gsIGJveGVzLnNpemUoKSk7Cisg
ICAgICAgIGJveGVzLmFwcGVuZCh7IGxpbmVJbmRleCwgSW5saW5lRGlzcGxheTo6Qm94OjpUeXBl
OjpOb25Sb290SW5saW5lQm94LCBsYXlvdXRCb3gsIGlubGluZUJveEJvcmRlckJveCwgaW5saW5l
Qm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpIH0pOwog
CiAgICAgICAgIGF1dG8gaW5saW5lQm94U2l6ZSA9IExheW91dFNpemUgeyBMYXlvdXRVbml0Ojpm
cm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC53aWR0aCgpKSwgTGF5b3V0VW5pdDo6ZnJv
bUZsb2F0Q2VpbChpbmxpbmVCb3hCb3JkZXJCb3guaGVpZ2h0KCkpIH07CiAgICAgICAgIGF1dG8g
bG9naWNhbFJlY3QgPSBSZWN0IHsgTGF5b3V0UG9pbnQgeyBpbmxpbmVCb3hCb3JkZXJCb3gudG9w
TGVmdCgpIH0sIGlubGluZUJveFNpemUgfTsKQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIElubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGlu
ZVNwYW5uaW5nSW5saQogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveFJ1bnMoY29uc3QgTGluZUJveCYgbGlu
ZUJveCwgSW5saW5lUnVucyYgcnVucykKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
Ojpjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hlcyhjb25zdCBMaW5lQm94JiBsaW5lQm94
LCBEaXNwbGF5Qm94ZXMmIGJveGVzKQogewotICAgIGlmIChtX2lubGluZUJveFJ1bkluZGV4TWFw
LmlzRW1wdHkoKSB8fCAhbGluZUJveC5oYXNDb250ZW50KCkpIHsKKyAgICBpZiAobV9pbmxpbmVC
b3hJbmRleE1hcC5pc0VtcHR5KCkgfHwgIWxpbmVCb3guaGFzQ29udGVudCgpKSB7CiAgICAgICAg
IC8vIFRoaXMgbGluZSBoYXMgbm8gaW5saW5lIGJveCAob25seSByb290LCBidXQgd2UgZG9uJ3Qg
Y29sbGVjdCBpbmsgb3ZlcmZsb3cgZm9yIHRoZSByb290IGlubGluZSBib3ggYXRtKQogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjI4LDEwICsyMjgsMTAgQEAgdm9pZCBJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveFJ1bnMoY29uc3Qg
TGluZUIKICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0gaW5saW5lQm94LnBhcmVudCgp
OwogICAgICAgICBpZiAoJnBhcmVudElubGluZUJveCA9PSAmcm9vdCgpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5saW5lQm94UnVuSW5kZXhNYXAu
Y29udGFpbnMoJmlubGluZUJveCkgJiYgbV9pbmxpbmVCb3hSdW5JbmRleE1hcC5jb250YWlucygm
cGFyZW50SW5saW5lQm94KSk7Ci0gICAgICAgIGF1dG8mIGlua092ZXJmbG93ID0gcnVuc1ttX2lu
bGluZUJveFJ1bkluZGV4TWFwLmdldCgmaW5saW5lQm94KV0uaW5rT3ZlcmZsb3coKTsKLSAgICAg
ICAgYXV0byYgcGFyZW50SW5saW5lQm94UnVuID0gcnVuc1ttX2lubGluZUJveFJ1bkluZGV4TWFw
LmdldCgmcGFyZW50SW5saW5lQm94KV07Ci0gICAgICAgIHBhcmVudElubGluZUJveFJ1bi5hZGp1
c3RJbmtPdmVyZmxvdyhpbmtPdmVyZmxvdyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5s
aW5lQm94SW5kZXhNYXAuY29udGFpbnMoJmlubGluZUJveCkgJiYgbV9pbmxpbmVCb3hJbmRleE1h
cC5jb250YWlucygmcGFyZW50SW5saW5lQm94KSk7CisgICAgICAgIGF1dG8mIGlua092ZXJmbG93
ID0gYm94ZXNbbV9pbmxpbmVCb3hJbmRleE1hcC5nZXQoJmlubGluZUJveCldLmlua092ZXJmbG93
KCk7CisgICAgICAgIGF1dG8mIHBhcmVudERpc3BsYXlCb3ggPSBib3hlc1ttX2lubGluZUJveElu
ZGV4TWFwLmdldCgmcGFyZW50SW5saW5lQm94KV07CisgICAgICAgIHBhcmVudERpc3BsYXlCb3gu
YWRqdXN0SW5rT3ZlcmZsb3coaW5rT3ZlcmZsb3cpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAppbmRleCBiY2Y1MDk1
NWY2YWU3ZDllOWFlNzJhNTk3MDkyYTkwODdhZDRiZmViLi42ZGJmMjFkM2RhMjU4Y2YwMjMwNGQ3
ZGY4YTc4MzZjYjY4YzU5MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXIuaApAQCAtNDEsMTkgKzQxLDE5IEBAIGNsYXNzIElubGluZURp
c3BsYXlDb250ZW50QnVpbGRlciB7CiBwdWJsaWM6CiAgICAgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUmKTsKIAotICAgIElubGluZVJ1bnMgYnVpbGQoY29uc3QgTGluZUJ1aWxk
ZXI6OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJveCYsIGNvbnN0IElubGluZUxheW91dFBvaW50
JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgpOworICAgIERp
c3BsYXlCb3hlcyBidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBM
aW5lQm94JiwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwg
Y29uc3Qgc2l6ZV90IGxpbmVJbmRleCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVSdW5z
QW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNv
bnRlbnQmLCBjb25zdCBMaW5lQm94JiwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hM
b2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgSW5saW5lUnVucyYpOwotICAg
IHZvaWQgY3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94
ZXMoY29uc3QgTGluZUJveCYsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNh
bFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIElubGluZVJ1bnMmKTsKLSAgICB2b2lk
IGNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveFJ1bnMoY29uc3QgTGluZUJveCYsIElubGlu
ZVJ1bnMmKTsKKyAgICB2b2lkIGNyZWF0ZUJveGVzQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29u
dGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBMaW5lQm94JiwgY29u
c3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90
IGxpbmVJbmRleCwgRGlzcGxheUJveGVzJik7CisgICAgdm9pZCBjcmVhdGVCb3hlc0FuZFVwZGF0
ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMoY29uc3QgTGluZUJveCYsIGNvbnN0
IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBs
aW5lSW5kZXgsIERpc3BsYXlCb3hlcyYpOworICAgIHZvaWQgY29sbGVjdElua092ZXJmbG93Rm9y
SW5saW5lQm94ZXMoY29uc3QgTGluZUJveCYsIERpc3BsYXlCb3hlcyYpOwogCiAgICAgY29uc3Qg
Q29udGFpbmVyQm94JiByb290KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dFJv
b3Q7IH0KICAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlOyB9IAogCiAgICAgY29uc3QgQ29udGFpbmVyQm94
JiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsKICAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1f
Zm9ybWF0dGluZ1N0YXRlOwotICAgIEhhc2hNYXA8Y29uc3QgQm94Kiwgc2l6ZV90PiBtX2lubGlu
ZUJveFJ1bkluZGV4TWFwOworICAgIEhhc2hNYXA8Y29uc3QgQm94Kiwgc2l6ZV90PiBtX2lubGlu
ZUJveEluZGV4TWFwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGU1ODIwMTUwZWZiY2QwMTEzNGE0ZTBhYjU0NmNjY2Zh
NjdjYzJkOTMuLmQwYTdiYmNlYmQwZTlkOTE1MTMxNWNkMjEyNGZkYzA5MmZiNjdiNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTMx
LDExICszMSwxMSBAQAogI2luY2x1ZGUgIkZsb2F0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRGFtYWdlLmgiCisjaW5jbHVkZSAiSW5saW5l
RGlzcGxheUJveC5oIgogI2luY2x1ZGUgIklubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIgog
I2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUxpbmVC
b3guaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94QnVpbGRlci5oIgotI2luY2x1ZGUgIklubGlu
ZUxpbmVSdW4uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRlbS5oIgogI2luY2x1ZGUgIkxheW91
dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgpAQCAtMTI2LDcgKzEyNiw3
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoY29u
c3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRD
b250ZW50Qm94V2lkdGgoeyB9KTsKICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldFZlcnRpY2Fs
TWFyZ2luKHsgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LT5pc0lubGluZUJveCgp
KSB7Ci0gICAgICAgICAgICAvLyBUZXh0IHdyYXBwZXIgYm94ZXMgKGFub255bW91cyBpbmxpbmUg
bGV2ZWwgYm94ZXMpIGRvbid0IGhhdmUgYm94IGdlb21ldHJpZXMgKHRoZXkgb25seSBnZW5lcmF0
ZSBydW5zKS4KKyAgICAgICAgICAgIC8vIFRleHQgd3JhcHBlciBib3hlcyAoYW5vbnltb3VzIGlu
bGluZSBsZXZlbCBib3hlcykgZG9uJ3QgaGF2ZSBib3ggZ2VvbWV0cmllcyAodGhleSBvbmx5IGdl
bmVyYXRlIGJveGVzKS4KICAgICAgICAgICAgIGlmICghbGF5b3V0Qm94LT5pc0lubGluZVRleHRC
b3goKSkgewogICAgICAgICAgICAgICAgIC8vIElubGluZSBib3hlcyAoPHNwYW4+KSBjYW4ndCBn
ZXQgc2l6ZWQvcG9zaXRpb25lZCB5ZXQuIEF0IHRoaXMgcG9pbnQgd2UgY2FuIG9ubHkgY29tcHV0
ZSB0aGVpciBtYXJnaW5zLCBib3JkZXJzIGFuZCBwYWRkaW5nLgogICAgICAgICAgICAgICAgIGNv
bXB1dGVCb3JkZXJBbmRQYWRkaW5nKCpsYXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwo
KSk7CkBAIC0xODIsNyArMTgyLDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6dXNlZENvbnRlbnRIZWlnaHQoKSBjb25zdAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIExpbmVCdWlsZGVyOjpJbmxp
bmVJdGVtUmFuZ2UgbmVlZHNMYXlvdXRSYW5nZSwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlz
LT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICBmb3JtYXR0aW5nU3RhdGUucnVucygpLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0ZW1zKCkuc2l6ZSgpKTsKKyAg
ICBmb3JtYXR0aW5nU3RhdGUuYm94ZXMoKS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZvcm1hdHRp
bmdTdGF0ZS5pbmxpbmVJdGVtcygpLnNpemUoKSk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBsaW5l
TG9naWNhbFRvcCA9IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKTsKICAgICBzdHJ1Y3QgUHJldmlv
dXNMaW5lIHsKICAgICAgICAgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSByYW5nZTsKQEAg
LTI2Nyw3ICsyNjcsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3Rh
dGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcgogICAgIC8vIHBsYWNlIHRo
ZSBvdXQtb2YtZmxvdyBib3ggYXQgdGhlIGxvZ2ljYWwgcmlnaHQgcG9zaXRpb24uCiAgICAgYXV0
byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CiAgICAgYXV0byYg
bGluZXMgPSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKTsKLSAgICBhdXRvJiBydW5zID0gZm9ybWF0
dGluZ1N0YXRlLnJ1bnMoKTsKKyAgICBhdXRvJiBib3hlcyA9IGZvcm1hdHRpbmdTdGF0ZS5ib3hl
cygpOwogCiAgICAgZm9yIChhdXRvJiBvdXRPZkZsb3dCb3ggOiBvdXRPZkZsb3dCb3hlcykgewog
ICAgICAgICBhdXRvJiBvdXRPZkZsb3dHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9t
ZXRyeSgqb3V0T2ZGbG93Qm94KTsKQEAgLTI4NSwxMCArMjg1LDEwIEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQo
Y29uc3QgRm9yCiAgICAgICAgIH0oKTsKIAogICAgICAgICBpZiAoIXByZXZpb3VzQ29udGVudFNr
aXBwaW5nRmxvYXRzKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCAobm9uLWZs
b2F0KWNoaWxkLiBMZXQncyBwbGFjZSBpdCB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgcnVuLgor
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgKG5vbi1mbG9hdCljaGlsZC4gTGV0J3Mg
cGxhY2UgaXQgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IGJveC4KICAgICAgICAgICAgIC8vIDxk
aXY+PGltZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj50ZXh0IGNvbnRlbnQ8L2Rpdj4KLSAg
ICAgICAgICAgIEFTU0VSVChydW5zLnNpemUoKSk7Ci0gICAgICAgICAgICBvdXRPZkZsb3dHZW9t
ZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IHJ1bnNbMF0ubG9naWNhbExlZnQoKSwgbGluZXNbMF0u
bGluZUJveExvZ2ljYWxSZWN0KCkudG9wKCkgfSk7CisgICAgICAgICAgICBBU1NFUlQoYm94ZXMu
c2l6ZSgpKTsKKyAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0
KHsgYm94ZXNbMF0ubG9naWNhbExlZnQoKSwgbGluZXNbMF0ubGluZUJveExvZ2ljYWxSZWN0KCku
dG9wKCkgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0zMDIsMjQg
KzMwMiwyNCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9z
aXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcgogICAgICAgICBBU1NFUlQocHJldmlv
dXNDb250ZW50U2tpcHBpbmdGbG9hdHMtPmlzSW5GbG93KCkpOwogICAgICAgICBhdXRvIHBsYWNl
T3V0T2ZGbG93Qm94QWZ0ZXJQcmV2aW91c0luRmxvd0JveCA9IFsmXSB7CiAgICAgICAgICAgICAv
LyBUaGUgb3V0LW9mLWZsb3cgYm94IHNob3VsZCBiZSBwbGFjZWQgYWZ0ZXIgdGhpcyBpbmZsb3cg
Ym94LgotICAgICAgICAgICAgLy8gU2tpcCB0byB0aGUgbGFzdCBydW4gb2YgdGhpcyBsYXlvdXQg
Ym94LiBUaGUgbGFzdCBydW4ncyBnZW9tZXRyeSBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIG91dC1v
Zi1mbG93IGJveCdzIHN0YXRpYyBwb3NpdGlvbi4KLSAgICAgICAgICAgIHNpemVfdCBsYXN0UnVu
SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94ID0gMDsKLSAgICAgICAgICAgIGZvciAoOyBsYXN0UnVu
SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94IDwgcnVucy5zaXplKCkgJiYgJnJ1bnNbbGFzdFJ1bklu
ZGV4T25QcmV2aW91c0xheW91dEJveF0ubGF5b3V0Qm94KCkgIT0gcHJldmlvdXNDb250ZW50U2tp
cHBpbmdGbG9hdHM7ICsrbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCkgeyB9Ci0gICAg
ICAgICAgICBpZiAobGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCA9PSBydW5zLnNpemUo
KSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJbiB2ZXJ5IHJhcmUgY2FzZXMsIHRoZSBw
cmV2aW91cyBib3gncyBjb250ZW50IG1pZ2h0IGhhdmUgYmVlbiBjb21wbGV0ZWx5IGNvbGxhcHNl
ZCBhbmQgbGVmdCB1cyB3aXRoIG5vIHJ1bi4KKyAgICAgICAgICAgIC8vIFNraXAgdG8gdGhlIGxh
c3QgYm94IG9mIHRoaXMgbGF5b3V0IGJveC4gVGhlIGxhc3QgYm94J3MgZ2VvbWV0cnkgaXMgdXNl
ZCB0byBjb21wdXRlIHRoZSBvdXQtb2YtZmxvdyBib3gncyBzdGF0aWMgcG9zaXRpb24uCisgICAg
ICAgICAgICBzaXplX3QgbGFzdEJveEluZGV4T25QcmV2aW91c0xheW91dEJveCA9IDA7CisgICAg
ICAgICAgICBmb3IgKDsgbGFzdEJveEluZGV4T25QcmV2aW91c0xheW91dEJveCA8IGJveGVzLnNp
emUoKSAmJiAmYm94ZXNbbGFzdEJveEluZGV4T25QcmV2aW91c0xheW91dEJveF0ubGF5b3V0Qm94
KCkgIT0gcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHM7ICsrbGFzdEJveEluZGV4T25QcmV2
aW91c0xheW91dEJveCkgeyB9CisgICAgICAgICAgICBpZiAobGFzdEJveEluZGV4T25QcmV2aW91
c0xheW91dEJveCA9PSBib3hlcy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
SW4gdmVyeSByYXJlIGNhc2VzLCB0aGUgcHJldmlvdXMgYm94J3MgY29udGVudCBtaWdodCBoYXZl
IGJlZW4gY29tcGxldGVseSBjb2xsYXBzZWQgYW5kIGxlZnQgdXMgd2l0aCBubyBib3guCiAgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKDsgbGFzdFJ1bkluZGV4
T25QcmV2aW91c0xheW91dEJveCA8IHJ1bnMuc2l6ZSgpICYmICZydW5zW2xhc3RSdW5JbmRleE9u
UHJldmlvdXNMYXlvdXRCb3hdLmxheW91dEJveCgpID09IHByZXZpb3VzQ29udGVudFNraXBwaW5n
RmxvYXRzOyArK2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3gpIHsgfQotICAgICAgICAg
ICAgICAgIC0tbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveDsKLSAgICAgICAgICAgIC8v
IExldCdzIGNoZWNrIGlmIHRoZSBwcmV2aW91cyBydW4gaXMgdGhlIGxhc3QgcnVuIG9uIHRoZSBj
dXJyZW50IGxpbmUgYW5kIHVzZSB0aGUgbmV4dCBydW4ncyBsZWZ0IGluc3RlYWQuCi0gICAgICAg
ICAgICBhdXRvJiBwcmV2aW91c1J1biA9IHJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91
dEJveF07Ci0gICAgICAgICAgICBhdXRvKiBuZXh0UnVuID0gbGFzdFJ1bkluZGV4T25QcmV2aW91
c0xheW91dEJveCArIDEgPCBydW5zLnNpemUoKSA/ICZydW5zW2xhc3RSdW5JbmRleE9uUHJldmlv
dXNMYXlvdXRCb3ggKyAxXSA6IG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGlmIChuZXh0UnVuICYm
IG5leHRSdW4tPmxpbmVJbmRleCgpID09IHByZXZpb3VzUnVuLmxpbmVJbmRleCgpKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gUHJldmlvdXMgYW5kIG5leHQgcnVucyBhcmUgb24gdGhlIHNhbWUgbGlu
ZS4gVGhlIG91dC1vZi1mbG93IGJveCBpcyByaWdodCBhdCB0aGUgcHJldmlvdXMgcnVuJ3MgbG9n
aWNhbCByaWdodC4KKyAgICAgICAgICAgIGZvciAoOyBsYXN0Qm94SW5kZXhPblByZXZpb3VzTGF5
b3V0Qm94IDwgYm94ZXMuc2l6ZSgpICYmICZib3hlc1tsYXN0Qm94SW5kZXhPblByZXZpb3VzTGF5
b3V0Qm94XS5sYXlvdXRCb3goKSA9PSBwcmV2aW91c0NvbnRlbnRTa2lwcGluZ0Zsb2F0czsgKyts
YXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94KSB7IH0KKyAgICAgICAgICAgICAgICAtLWxh
c3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3g7CisgICAgICAgICAgICAvLyBMZXQncyBjaGVj
ayBpZiB0aGUgcHJldmlvdXMgYm94IGlzIHRoZSBsYXN0IGJveCBvbiB0aGUgY3VycmVudCBsaW5l
IGFuZCB1c2UgdGhlIG5leHQgYm94J3MgbGVmdCBpbnN0ZWFkLgorICAgICAgICAgICAgYXV0byYg
cHJldmlvdXNCb3ggPSBib3hlc1tsYXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94XTsKKyAg
ICAgICAgICAgIGF1dG8qIG5leHRCb3ggPSBsYXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94
ICsgMSA8IGJveGVzLnNpemUoKSA/ICZib3hlc1tsYXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0
Qm94ICsgMV0gOiBudWxscHRyOworCisgICAgICAgICAgICBpZiAobmV4dEJveCAmJiBuZXh0Qm94
LT5saW5lSW5kZXgoKSA9PSBwcmV2aW91c0JveC5saW5lSW5kZXgoKSkgeworICAgICAgICAgICAg
ICAgIC8vIFByZXZpb3VzIGFuZCBuZXh0IGJveGVzIGFyZSBvbiB0aGUgc2FtZSBsaW5lLiBUaGUg
b3V0LW9mLWZsb3cgYm94IGlzIHJpZ2h0IGF0IHRoZSBwcmV2aW91cyBib3gncyBsb2dpY2FsIHJp
Z2h0LgogICAgICAgICAgICAgICAgIC8vIDxkaXY+dGV4dDxpbWcgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZSI+Y29udGVudDwvZGl2PgotICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbExlZnQg
PSBwcmV2aW91c1J1bi5sb2dpY2FsUmlnaHQoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxMZWZ0ID0gcHJldmlvdXNCb3gubG9naWNhbFJpZ2h0KCk7CiAgICAgICAgICAgICAgICAgaWYg
KHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzLT5pc0lubGluZUJveCgpICYmICFwcmV2aW91
c0NvbnRlbnRTa2lwcGluZ0Zsb2F0cy0+aXNBbm9ueW1vdXMoKSkgewogICAgICAgICAgICAgICAg
ICAgICAvLyA8ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPmNv
bnRlbnQ8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIC8vIG9yCkBAIC0zMjksMjcg
KzMyOSwyNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9z
aXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcgogICAgICAgICAgICAgICAgICAgICAg
ICAgPyBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94TGVmdChpbmxpbmVCb3hCb3hHZW9tZXRyeSkgKyBp
bmxpbmVCb3hCb3hHZW9tZXRyeS5jb250ZW50Qm94TGVmdCgpCiAgICAgICAgICAgICAgICAgICAg
ICAgICA6IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGlubGluZUJveEJveEdlb21ldHJ5KS5y
aWdodCgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBvdXRPZkZsb3dHZW9t
ZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IGxvZ2ljYWxMZWZ0LCBsaW5lc1twcmV2aW91c1J1bi5s
aW5lSW5kZXgoKV0ubGluZUJveExvZ2ljYWxSZWN0KCkudG9wKCkgfSk7CisgICAgICAgICAgICAg
ICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBsb2dpY2FsTGVmdCwgbGlu
ZXNbcHJldmlvdXNCb3gubGluZUluZGV4KCldLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgpIH0p
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
aWYgKG5leHRSdW4pIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgb3V0IG9mIGZsb3cgYm94IGlz
IHBsYWNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUgKHdoZXJlIHRoZSBmaXJz
dCBydW4gb24gdGhlIGxpbmUgaXMpLgorICAgICAgICAgICAgaWYgKG5leHRCb3gpIHsKKyAgICAg
ICAgICAgICAgICAvLyBUaGUgb3V0IG9mIGZsb3cgYm94IGlzIHBsYWNlZCBhdCB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBuZXh0IGxpbmUgKHdoZXJlIHRoZSBmaXJzdCBib3ggb24gdGhlIGxpbmUgaXMp
LgogICAgICAgICAgICAgICAgIC8vIDxkaXY+dGV4dDxicj48aW1nIHN0eWxlPSJwb3NpdGlvbjog
YWJzb2x1dGUiPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+Y29udGVudDwvZGl2Pgot
ICAgICAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgbmV4
dFJ1bi0+bG9naWNhbExlZnQoKSwgbGluZXNbbmV4dFJ1bi0+bGluZUluZGV4KCldLmxpbmVCb3hM
b2dpY2FsUmVjdCgpLnRvcCgpIH0pOworICAgICAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5
LnNldExvZ2ljYWxUb3BMZWZ0KHsgbmV4dEJveC0+bG9naWNhbExlZnQoKSwgbGluZXNbbmV4dEJv
eC0+bGluZUluZGV4KCldLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgpIH0pOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byYgbGFzdExp
bmVMb2dpY2FsUmVjdCA9IGxpbmVzW3ByZXZpb3VzUnVuLmxpbmVJbmRleCgpXS5saW5lQm94TG9n
aWNhbFJlY3QoKTsKKyAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5lTG9naWNhbFJlY3QgPSBsaW5l
c1twcmV2aW91c0JveC5saW5lSW5kZXgoKV0ubGluZUJveExvZ2ljYWxSZWN0KCk7CiAgICAgICAg
ICAgICAvLyBUaGlzIG91dC1vZi1mbG93IGJveCBpcyB0aGUgbGFzdCBib3guCiAgICAgICAgICAg
ICAvLyBGSVhNRTogVXNlIGlzTGluZUJyZWFrIGluc3RlYWQgdG8gY292ZXIgcHJlc2VydmVkIG5l
dyBsaW5lcyB0b28uCi0gICAgICAgICAgICBpZiAocHJldmlvdXNSdW4ubGF5b3V0Qm94KCkuaXNM
aW5lQnJlYWtCb3goKSkgeworICAgICAgICAgICAgaWYgKHByZXZpb3VzQm94LmxheW91dEJveCgp
LmlzTGluZUJyZWFrQm94KCkpIHsKICAgICAgICAgICAgICAgICAvLyA8ZGl2PnRleHQ8YnI+PGlt
ZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGUiPjwvZGl2PgogICAgICAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExvZ2ljYWxU
b3BMZWZ0KHsgbGFzdExpbmVMb2dpY2FsUmVjdC5sZWZ0KCksIGxhc3RMaW5lTG9naWNhbFJlY3Qu
Ym90dG9tKCkgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIG1heSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgYm94IGFjdHVh
bGx5IGZpdHMgdGhlIGxhc3QgbGluZSBhbmQgbW92ZSBpdCBvdmVyIHRvIHRoZSAibmV4dCIgbGlu
ZS4KLSAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgcHJl
dmlvdXNSdW4ubG9naWNhbFJpZ2h0KCksIGxhc3RMaW5lTG9naWNhbFJlY3QudG9wKCkgfSk7Cisg
ICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IHByZXZpb3Vz
Qm94LmxvZ2ljYWxSaWdodCgpLCBsYXN0TGluZUxvZ2ljYWxSZWN0LnRvcCgpIH0pOwogICAgICAg
ICB9OwogICAgICAgICBwbGFjZU91dE9mRmxvd0JveEFmdGVyUHJldmlvdXNJbkZsb3dCb3goKTsK
ICAgICB9CkBAIC01NzcsNyArNTc3LDcgQEAgSW5saW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWwKIAogICAg
IGF1dG8gaW5saW5lQ29udGVudEJ1aWxkZXIgPSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIg
eyByb290KCksIGZvcm1hdHRpbmdTdGF0ZSB9OwogICAgIGF1dG8gY3VycmVudExpbmVJbmRleCA9
IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsKLSAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
UnVucyhpbmxpbmVDb250ZW50QnVpbGRlci5idWlsZChsaW5lQ29udGVudCwgbGluZUFuZExpbmVC
b3gubGluZUJveCwgbGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQoKSwgY3VycmVudExpbmVJbmRl
eCkpOworICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRCb3hlcyhpbmxpbmVDb250ZW50QnVpbGRlci5i
dWlsZChsaW5lQ29udGVudCwgbGluZUFuZExpbmVCb3gubGluZUJveCwgbGluZUJveExvZ2ljYWxS
ZWN0LnRvcExlZnQoKSwgY3VycmVudExpbmVJbmRleCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5h
ZGRMaW5lQm94KFdURk1vdmUobGluZUFuZExpbmVCb3gubGluZUJveCkpOwogICAgIGZvcm1hdHRp
bmdTdGF0ZS5hZGRMaW5lKGxpbmVBbmRMaW5lQm94LmxpbmUpOwogCkBAIC01ODksMTYgKzU4OSwx
NiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjppbnZhbGlkYXRlRm9ybWF0dGluZ1N0
YXRlKCkKICAgICBpZiAoIW1fbGluZURhbWFnZSkgewogICAgICAgICAvLyBOb24tZW1wdHkgZm9y
bWF0dGluZyBzdGF0ZSB3aXRoIG5vIGRhbWFnZSBtZWFucyB3ZSBhcmUgdHJ5aW5nIHRvIGxheW91
dCBhIGNsZWFuIHRyZWUuCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgQVNTRVJUKGZvcm1hdHRpbmdT
dGF0ZSgpLmlubGluZUl0ZW1zKCkuaXNFbXB0eSgpKSB3aGVuIGFsbCB0aGUgY29kZXBhdGhzIGFy
ZSBjb3ZlcmVkLgotICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5jbGVhckxpbmVBbmRSdW5zKCk7
CisgICAgICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmNsZWFyTGluZUFuZEJveGVzKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgLy8gRklYTUU6IExpbmVzIGFuZCBydW5zIGFyZSBtb3ZlZCBv
dXQgdG8gdW5kZXIgSW50ZWdyYXRpb246OklubGluZUNvbnRlbnQgaW4gdGhlIGludGVncmF0aW9u
IGNvZGVwYXRoLCBzbyBjbGVhckxpbmVBbmRSdW5zIGlzIG5vLW9wLgorICAgIC8vIEZJWE1FOiBM
aW5lcyBhbmQgYm94ZXMgYXJlIG1vdmVkIG91dCB0byB1bmRlciBJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudCBpbiB0aGUgaW50ZWdyYXRpb24gY29kZXBhdGgsIHNvIGNsZWFyTGluZUFuZEJveGVz
IGlzIG5vLW9wLgogICAgIHN3aXRjaCAobV9saW5lRGFtYWdlLT50eXBlKCkpIHsKICAgICBjYXNl
IElubGluZURhbWFnZTo6VHlwZTo6TmVlZHNDb250ZW50VXBkYXRlQW5kTGluZUxheW91dDoKICAg
ICAgICAgZm9ybWF0dGluZ1N0YXRlKCkuY2xlYXJJbmxpbmVJdGVtcygpOwogICAgICAgICBGQUxM
VEhST1VHSDsKICAgICBjYXNlIElubGluZURhbWFnZTo6VHlwZTo6TmVlZHNMaW5lTGF5b3V0Ogot
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5jbGVhckxpbmVBbmRSdW5zKCk7CisgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZSgpLmNsZWFyTGluZUFuZEJveGVzKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSW5saW5lRGFtYWdlOjpUeXBlOjpOZWVkc1ZlcnRpY2FsQWRqdXN0bWVudDoKICAgICBj
YXNlIElubGluZURhbWFnZTo6VHlwZTo6TmVlZHNIb3Jpem9udGFsQWRqdXN0bWVudDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggZTJiMGU4ODFiY2Nl
ZDZlZmZjZjg4ODMwNjA3ODU1MGFiNTkyNDNlZC4uOTY1ZTAxMmRmZjhiZTI1ZWUzYWY2NjBmN2Jm
Yjk3MjFhYTU2YWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0
YXRlLmgKQEAgLTI4LDE5ICsyOCwxOSBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQogCiAjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiSW5saW5l
RGlzcGxheUJveC5oIgogI2luY2x1ZGUgIklubGluZURpc3BsYXlMaW5lLmgiCiAjaW5jbHVkZSAi
SW5saW5lSXRlbS5oIgogI2luY2x1ZGUgIklubGluZUxpbmVCb3guaCIKLSNpbmNsdWRlICJJbmxp
bmVMaW5lUnVuLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogdXNpbmcgSW5saW5lSXRlbXMgPSBWZWN0b3I8
SW5saW5lSXRlbT47Ci11c2luZyBEaXNwbGF5TGluZXMgPSBWZWN0b3I8SW5saW5lRGlzcGxheTo6
TGluZT47CiB1c2luZyBJbmxpbmVMaW5lQm94ZXMgPSBWZWN0b3I8TGluZUJveD47Ci11c2luZyBJ
bmxpbmVSdW5zID0gVmVjdG9yPFJ1bj47Cit1c2luZyBEaXNwbGF5TGluZXMgPSBWZWN0b3I8SW5s
aW5lRGlzcGxheTo6TGluZT47Cit1c2luZyBEaXNwbGF5Qm94ZXMgPSBWZWN0b3I8SW5saW5lRGlz
cGxheTo6Qm94PjsKIAogLy8gSW5saW5lRm9ybWF0dGluZ1N0YXRlIGhvbGRzIHRoZSBzdGF0ZSBm
b3IgYSBwYXJ0aWN1bGFyIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgdHJlZS4KIGNsYXNzIElu
bGluZUZvcm1hdHRpbmdTdGF0ZSA6IHB1YmxpYyBGb3JtYXR0aW5nU3RhdGUgewpAQCAtNTMsMzAg
KzUzLDMwIEBAIHB1YmxpYzoKICAgICBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMoKSBj
b25zdCB7IHJldHVybiBtX2lubGluZUl0ZW1zOyB9CiAgICAgdm9pZCBhZGRJbmxpbmVJdGVtKElu
bGluZUl0ZW0mJiBpbmxpbmVJdGVtKSB7IG1faW5saW5lSXRlbXMuYXBwZW5kKFdURk1vdmUoaW5s
aW5lSXRlbSkpOyB9CiAKKyAgICBjb25zdCBJbmxpbmVMaW5lQm94ZXMmIGxpbmVCb3hlcygpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUJveGVzOyB9CisgICAgdm9pZCBhZGRMaW5lQm94KExpbmVCb3gm
JiBsaW5lQm94KSB7IG1fbGluZUJveGVzLmFwcGVuZChXVEZNb3ZlKGxpbmVCb3gpKTsgfQorCiAg
ICAgY29uc3QgRGlzcGxheUxpbmVzJiBsaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxp
bmVzOyB9CiAgICAgRGlzcGxheUxpbmVzJiBsaW5lcygpIHsgcmV0dXJuIG1fZGlzcGxheUxpbmVz
OyB9CiAgICAgdm9pZCBhZGRMaW5lKGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmIGxpbmUpIHsg
bV9kaXNwbGF5TGluZXMuYXBwZW5kKGxpbmUpOyB9CiAKLSAgICBjb25zdCBJbmxpbmVMaW5lQm94
ZXMmIGxpbmVCb3hlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzOyB9Ci0gICAgdm9pZCBh
ZGRMaW5lQm94KExpbmVCb3gmJiBsaW5lQm94KSB7IG1fbGluZUJveGVzLmFwcGVuZChXVEZNb3Zl
KGxpbmVCb3gpKTsgfQotCi0gICAgY29uc3QgSW5saW5lUnVucyYgcnVucygpIGNvbnN0IHsgcmV0
dXJuIG1fcnVuczsgfQotICAgIElubGluZVJ1bnMmIHJ1bnMoKSB7IHJldHVybiBtX3J1bnM7IH0K
LSAgICB2b2lkIGFkZFJ1bnMoSW5saW5lUnVucyYmIHJ1bnMpIHsgbV9ydW5zLmFwcGVuZFZlY3Rv
cihXVEZNb3ZlKHJ1bnMpKTsgfQorICAgIGNvbnN0IERpc3BsYXlCb3hlcyYgYm94ZXMoKSBjb25z
dCB7IHJldHVybiBtX2Rpc3BsYXlCb3hlczsgfQorICAgIERpc3BsYXlCb3hlcyYgYm94ZXMoKSB7
IHJldHVybiBtX2Rpc3BsYXlCb3hlczsgfQorICAgIHZvaWQgYWRkQm94ZXMoRGlzcGxheUJveGVz
JiYgYm94ZXMpIHsgbV9kaXNwbGF5Qm94ZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUoYm94ZXMpKTsg
fQogCiAgICAgdm9pZCBzZXRDbGVhckdhcEFmdGVyTGFzdExpbmUoSW5saW5lTGF5b3V0VW5pdCB2
ZXJ0aWNhbEdhcCk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBjbGVhckdhcEFmdGVyTGFzdExpbmUo
KSBjb25zdCB7IHJldHVybiBtX2NsZWFyR2FwQWZ0ZXJMYXN0TGluZTsgfQogCiAgICAgdm9pZCBj
bGVhcklubGluZUl0ZW1zKCkgeyBtX2lubGluZUl0ZW1zLmNsZWFyKCk7IH0KLSAgICB2b2lkIGNs
ZWFyTGluZUFuZFJ1bnMoKTsKKyAgICB2b2lkIGNsZWFyTGluZUFuZEJveGVzKCk7CiAgICAgdm9p
ZCBzaHJpbmtUb0ZpdCgpOwogCiBwcml2YXRlOgogICAgIC8vIENhY2hlYWJsZSBpbnB1dCB0byBs
aW5lIGxheW91dC4KICAgICBJbmxpbmVJdGVtcyBtX2lubGluZUl0ZW1zOwotICAgIERpc3BsYXlM
aW5lcyBtX2Rpc3BsYXlMaW5lczsKICAgICBJbmxpbmVMaW5lQm94ZXMgbV9saW5lQm94ZXM7Ci0g
ICAgSW5saW5lUnVucyBtX3J1bnM7CisgICAgRGlzcGxheUxpbmVzIG1fZGlzcGxheUxpbmVzOwor
ICAgIERpc3BsYXlCb3hlcyBtX2Rpc3BsYXlCb3hlczsKICAgICBJbmxpbmVMYXlvdXRVbml0IG1f
Y2xlYXJHYXBBZnRlckxhc3RMaW5lIHsgMCB9OwogfTsKIApAQCAtODYsMTEgKzg2LDExIEBAIGlu
bGluZSB2b2lkIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6c2V0Q2xlYXJHYXBBZnRlckxhc3RMaW5l
KElubGluZUxheW91dFVuaXQgdmVyCiAgICAgbV9jbGVhckdhcEFmdGVyTGFzdExpbmUgPSB2ZXJ0
aWNhbEdhcDsKIH0KIAotaW5saW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjpjbGVhckxp
bmVBbmRSdW5zKCkKK2lubGluZSB2b2lkIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJMaW5l
QW5kQm94ZXMoKQogewotICAgIG1fZGlzcGxheUxpbmVzLmNsZWFyKCk7CiAgICAgbV9saW5lQm94
ZXMuY2xlYXIoKTsKLSAgICBtX3J1bnMuY2xlYXIoKTsKKyAgICBtX2Rpc3BsYXlCb3hlcy5jbGVh
cigpOworICAgIG1fZGlzcGxheUxpbmVzLmNsZWFyKCk7CiAgICAgbV9jbGVhckdhcEFmdGVyTGFz
dExpbmUgPSB7IH07CiB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgaW5saW5lIHZvaWQgSW5saW5lRm9y
bWF0dGluZ1N0YXRlOjpzaHJpbmtUb0ZpdCgpCiAgICAgbV9pbmxpbmVJdGVtcy5zaHJpbmtUb0Zp
dCgpOwogICAgIG1fZGlzcGxheUxpbmVzLnNocmlua1RvRml0KCk7CiAgICAgbV9saW5lQm94ZXMu
c2hyaW5rVG9GaXQoKTsKLSAgICBtX3J1bnMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX2Rpc3BsYXlC
b3hlcy5zaHJpbmtUb0ZpdCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKaW5kZXgg
YmJiZWUzNGJlODExYjM3OGVlYWRiMGIyM2YxOWMxM2UxODA4NGJhMS4uZWE4MTI1NDhkY2Q2Yzlh
MDNjYjhjZmZjZTJkNTZlYWM1YzZjMjExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaApAQCAt
MjcsOCArMjcsOCBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAK
KyNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlbS5oIgot
I2luY2x1ZGUgIklubGluZUxpbmVSdW4uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRlbS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbExl
ZnQ7IH0KICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBsb2dpY2FsTGVmdCgpICsgbG9naWNhbFdpZHRoKCk7IH0KIAotICAgICAgICBjb25zdCA6
OldlYkNvcmU6OkxheW91dDo6UnVuOjpFeHBhbnNpb24mIGV4cGFuc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwYW5zaW9uOyB9CisgICAgICAgIGNvbnN0IElubGluZURpc3BsYXk6OkJveDo6RXhw
YW5zaW9uJiBleHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQogCiAgICAg
ICAgIGJvb2wgaGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV90cmFpbGlu
Z1doaXRlc3BhY2VUeXBlICE9IFRyYWlsaW5nV2hpdGVzcGFjZTo6Tm9uZTsgfQogICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IHRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV90cmFpbGluZ1doaXRlc3BhY2VXaWR0aDsgfQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHZvaWQgZXhwYW5kKGNvbnN0IElubGluZVRleHRJdGVtJiwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGgpOwogICAgICAgICB2b2lkIG1vdmVIb3Jpem9udGFsbHkoSW5saW5lTGF5
b3V0VW5pdCBvZmZzZXQpIHsgbV9sb2dpY2FsTGVmdCArPSBvZmZzZXQ7IH0KICAgICAgICAgdm9p
ZCBzaHJpbmtIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCB3aWR0aCkgeyBtX2xvZ2ljYWxX
aWR0aCAtPSB3aWR0aDsgfQotICAgICAgICB2b2lkIHNldEV4cGFuc2lvbig6OldlYkNvcmU6Okxh
eW91dDo6UnVuOjpFeHBhbnNpb24gZXhwYW5zaW9uKSB7IG1fZXhwYW5zaW9uID0gZXhwYW5zaW9u
OyB9CisgICAgICAgIHZvaWQgc2V0RXhwYW5zaW9uKElubGluZURpc3BsYXk6OkJveDo6RXhwYW5z
aW9uIGV4cGFuc2lvbikgeyBtX2V4cGFuc2lvbiA9IGV4cGFuc2lvbjsgfQogICAgICAgICB2b2lk
IHNldE5lZWRzSHlwaGVuKElubGluZUxheW91dFVuaXQgaHlwaGVuTG9naWNhbFdpZHRoKTsKIAog
ICAgICAgICBlbnVtIGNsYXNzIFRyYWlsaW5nV2hpdGVzcGFjZSB7CkBAIC0xMjQsNyArMTI0LDcg
QEAgcHVibGljOgogICAgICAgICBUcmFpbGluZ1doaXRlc3BhY2UgbV90cmFpbGluZ1doaXRlc3Bh
Y2VUeXBlIHsgVHJhaWxpbmdXaGl0ZXNwYWNlOjpOb25lIH07CiAgICAgICAgIElubGluZUxheW91
dFVuaXQgbV90cmFpbGluZ1doaXRlc3BhY2VXaWR0aCB7IDAgfTsKICAgICAgICAgc3RkOjpvcHRp
b25hbDxUZXh0PiBtX3RleHRDb250ZW50OwotICAgICAgICA6OldlYkNvcmU6OkxheW91dDo6UnVu
OjpFeHBhbnNpb24gbV9leHBhbnNpb247CisgICAgICAgIElubGluZURpc3BsYXk6OkJveDo6RXhw
YW5zaW9uIG1fZXhwYW5zaW9uOwogICAgIH07CiAgICAgdXNpbmcgUnVuTGlzdCA9IFZlY3RvcjxS
dW4sIDEwPjsKICAgICBjb25zdCBSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9ydW5z
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA3YzkwNDU2OTgzZmZiMzNmNTg2ZWMwMDM1YzNiY2VmYzQ1YjdmNzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCisKKyNpbmNsdWRlICJJbmxpbmVSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisj
aW5jbHVkZSAiVGV4dEZsYWdzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJ
bmxpbmVEaXNwbGF5IHsKKworc3RydWN0IEJveCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOworICAgIHN0cnVjdCBUZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgVGV4dChzaXplX3QgcG9zaXRpb24s
IHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJpbmcgYWRq
dXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9vbCBoYXNIeXBoZW4gPSBmYWxzZSk7
CisKKyAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsgfQorICAg
ICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSArIGxlbmd0aCgpOyB9Cisg
ICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAg
ICBTdHJpbmdWaWV3IG9yaWdpbmFsQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZ1ZpZXco
bV9vcmlnaW5hbENvbnRlbnQpLnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbmd0aCk7IH0KKyAgICAg
ICAgU3RyaW5nVmlldyByZW5kZXJlZENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2FkanVzdGVk
Q29udGVudFRvUmVuZGVyLmlzTnVsbCgpID8gb3JpZ2luYWxDb250ZW50KCkgOiBtX2FkanVzdGVk
Q29udGVudFRvUmVuZGVyOyB9CisKKyAgICAgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdCB7IHJl
dHVybiBtX2hhc0h5cGhlbjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgc2l6ZV90IG1fc3Rh
cnQgeyAwIH07CisgICAgICAgIHNpemVfdCBtX2xlbmd0aCB7IDAgfTsKKyAgICAgICAgYm9vbCBt
X2hhc0h5cGhlbiB7IGZhbHNlIH07CisgICAgICAgIFN0cmluZyBtX29yaWdpbmFsQ29udGVudDsK
KyAgICAgICAgU3RyaW5nIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXI7CisgICAgfTsKKworICAg
IGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIFRleHQsCisgICAgICAgIFNvZnRMaW5lQnJlYWss
CisgICAgICAgIExpbmVCcmVha0JveCwKKyAgICAgICAgQXRvbWljSW5saW5lTGV2ZWxCb3gsCisg
ICAgICAgIE5vblJvb3RJbmxpbmVCb3gsCisgICAgICAgIFJvb3RJbmxpbmVCb3gsCisgICAgICAg
IEdlbmVyaWNJbmxpbmVMZXZlbEJveAorICAgIH07CisgICAgc3RydWN0IEV4cGFuc2lvbjsKKyAg
ICBCb3goc2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBM
YXlvdXQ6OklubGluZVJlY3QmLCBjb25zdCBMYXlvdXQ6OklubGluZVJlY3QmIGlua092ZXJmbG93
LCBFeHBhbnNpb24sIHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQsIGJvb2wgaGFz
Q29udGVudCA9IHRydWUpOworCisgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6VGV4dDsgfQorICAgIGJvb2wgaXNTb2Z0TGluZUJyZWFrKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFR5cGU6OlNvZnRMaW5lQnJlYWs7IH0KKyAgICBib29sIGlzTGluZUJy
ZWFrQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkxpbmVCcmVha0JveDsgfQor
ICAgIGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBpc1NvZnRMaW5lQnJlYWsoKSB8
fCBpc0xpbmVCcmVha0JveCgpOyB9CisgICAgYm9vbCBpc0F0b21pY0lubGluZUxldmVsQm94KCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkF0b21pY0lubGluZUxldmVsQm94OyB9Cisg
ICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGlzTm9uUm9vdElubGluZUJveCgp
IHx8IGlzUm9vdElubGluZUJveCgpOyB9CisgICAgYm9vbCBpc05vblJvb3RJbmxpbmVCb3goKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Tm9uUm9vdElubGluZUJveDsgfQorICAgIGJv
b2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlJvb3RJ
bmxpbmVCb3g7IH0KKyAgICBib29sIGlzR2VuZXJpY0lubGluZUxldmVsQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFR5cGU6OkdlbmVyaWNJbmxpbmVMZXZlbEJveDsgfQorICAgIGJvb2wg
aXNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIGlzQXRvbWljSW5saW5lTGV2ZWxCb3go
KSB8fCBpc0xpbmVCcmVha0JveCgpIHx8IGlzSW5saW5lQm94KCkgfHwgaXNHZW5lcmljSW5saW5l
TGV2ZWxCb3goKTsgfQorICAgIGJvb2wgaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSBjb25zdCB7
IHJldHVybiBpc0lubGluZUxldmVsQm94KCkgJiYgIWlzUm9vdElubGluZUJveCgpOyB9CisgICAg
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBib29sIGhhc0NvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KKworICAgIGNvbnN0IExheW91dDo6
SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxSZWN0OyB9
CisgICAgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIG1faW5rT3ZlcmZsb3c7IH0KKworICAgIExheW91dDo6SW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS50b3AoKTsgfQorICAgIExheW91
dDo6SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbG9naWNh
bFJlY3QoKS5ib3R0b20oKTsgfQorICAgIExheW91dDo6SW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkubGVmdCgpOyB9CisgICAgTGF5b3V0
OjpJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxS
ZWN0KCkucmlnaHQoKTsgfQorCisgICAgTGF5b3V0OjpJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkud2lkdGgoKTsgfQorICAgIExheW91
dDo6SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNh
bFJlY3QoKS5oZWlnaHQoKTsgfQorCisgICAgdm9pZCBtb3ZlVmVydGljYWxseShMYXlvdXQ6Oklu
bGluZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1fbG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHkob2Zm
c2V0KTsgfQorICAgIHZvaWQgYWRqdXN0SW5rT3ZlcmZsb3coY29uc3QgTGF5b3V0OjpJbmxpbmVS
ZWN0JiBjaGlsZEJvcmRlckJveCkgeyByZXR1cm4gbV9pbmtPdmVyZmxvdy5leHBhbmRUb0NvbnRh
aW4oY2hpbGRCb3JkZXJCb3gpOyB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkg
eyByZXR1cm4gbV90ZXh0OyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxUZXh0PiYgdGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQorCisgICAgc3RydWN0IEV4cGFuc2lvbiB7CisgICAg
ICAgIEV4cGFuc2lvbkJlaGF2aW9yIGJlaGF2aW9yIHsgRGVmYXVsdEV4cGFuc2lvbiB9OworICAg
ICAgICBMYXlvdXQ6OklubGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEV4cGFuc2lvbiB7IDAgfTsK
KyAgICB9OworICAgIEV4cGFuc2lvbiBleHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFu
c2lvbjsgfQorCisgICAgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCgpIGNvbnN0IHsgcmV0
dXJuICptX2xheW91dEJveDsgfQorICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCk7IH0KKworICAgIHNpemVfdCBsaW5lSW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRleDsgfQorCitwcml2YXRlOgorICAgIGNvbnN0IHNp
emVfdCBtX2xpbmVJbmRleCB7IDAgfTsKKyAgICBjb25zdCBUeXBlIG1fdHlwZSB7IFR5cGU6Okdl
bmVyaWNJbmxpbmVMZXZlbEJveCB9OworICAgIFdlYWtQdHI8Y29uc3QgTGF5b3V0OjpCb3g+IG1f
bGF5b3V0Qm94OworICAgIExheW91dDo6SW5saW5lUmVjdCBtX2xvZ2ljYWxSZWN0OworICAgIExh
eW91dDo6SW5saW5lUmVjdCBtX2lua092ZXJmbG93OworICAgIGJvb2wgbV9oYXNDb250ZW50IHsg
dHJ1ZSB9OworICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFRl
eHQ+IG1fdGV4dDsKK307CisKK2lubGluZSBCb3g6OkJveChzaXplX3QgbGluZUluZGV4LCBUeXBl
IHR5cGUsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IExheW91dDo6SW5saW5l
UmVjdCYgbG9naWNhbFJlY3QsIGNvbnN0IExheW91dDo6SW5saW5lUmVjdCYgaW5rT3ZlcmZsb3cs
IEV4cGFuc2lvbiBleHBhbnNpb24sIHN0ZDo6b3B0aW9uYWw8VGV4dD4gdGV4dCwgYm9vbCBoYXND
b250ZW50KQorICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQorICAgICwgbV90eXBlKHR5cGUp
CisgICAgLCBtX2xheW91dEJveChtYWtlV2Vha1B0cihsYXlvdXRCb3gpKQorICAgICwgbV9sb2dp
Y2FsUmVjdChsb2dpY2FsUmVjdCkKKyAgICAsIG1faW5rT3ZlcmZsb3coaW5rT3ZlcmZsb3cpCisg
ICAgLCBtX2hhc0NvbnRlbnQoaGFzQ29udGVudCkKKyAgICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lv
bikKKyAgICAsIG1fdGV4dCh0ZXh0KQoreworfQorCitpbmxpbmUgQm94OjpUZXh0OjpUZXh0KHNp
emVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbENvbnRlbnQs
IFN0cmluZyBhZGp1c3RlZENvbnRlbnRUb1JlbmRlciwgYm9vbCBoYXNIeXBoZW4pCisgICAgOiBt
X3N0YXJ0KHN0YXJ0KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICwgbV9oYXNIeXBoZW4o
aGFzSHlwaGVuKQorICAgICwgbV9vcmlnaW5hbENvbnRlbnQob3JpZ2luYWxDb250ZW50KQorICAg
ICwgbV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlcihhZGp1c3RlZENvbnRlbnRUb1JlbmRlcikKK3sK
K30KKworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZUxpbmVSdW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lTGlu
ZVJ1bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTlhYTIwMzY0NmM1OWVkMDQy
Mzg5NzJhMDdkNzhiYzhiMjUzNmRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lTGluZVJ1bi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQotCi0jaW5jbHVkZSAiSW5saW5lUmVjdC5oIgotI2luY2x1ZGUgIkxheW91
dEJveC5oIgotI2luY2x1ZGUgIlRleHRGbGFncy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1u
YW1lc3BhY2UgTGF5b3V0IHsKLQotc3RydWN0IFJ1biB7Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwotICAgIHN0cnVjdCBUZXh0IHsKLSAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dChzaXplX3QgcG9zaXRp
b24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJpbmcg
YWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9vbCBoYXNIeXBoZW4gPSBmYWxz
ZSk7Ci0KLSAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsgfQot
ICAgICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSArIGxlbmd0aCgpOyB9
Ci0gICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAg
ICAgICBTdHJpbmdWaWV3IG9yaWdpbmFsQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZ1Zp
ZXcobV9vcmlnaW5hbENvbnRlbnQpLnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbmd0aCk7IH0KLSAg
ICAgICAgU3RyaW5nVmlldyByZW5kZXJlZENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2FkanVz
dGVkQ29udGVudFRvUmVuZGVyLmlzTnVsbCgpID8gb3JpZ2luYWxDb250ZW50KCkgOiBtX2FkanVz
dGVkQ29udGVudFRvUmVuZGVyOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdCB7
IHJldHVybiBtX2hhc0h5cGhlbjsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgc2l6ZV90IG1f
c3RhcnQgeyAwIH07Ci0gICAgICAgIHNpemVfdCBtX2xlbmd0aCB7IDAgfTsKLSAgICAgICAgYm9v
bCBtX2hhc0h5cGhlbiB7IGZhbHNlIH07Ci0gICAgICAgIFN0cmluZyBtX29yaWdpbmFsQ29udGVu
dDsKLSAgICAgICAgU3RyaW5nIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXI7Ci0gICAgfTsKLQot
ICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIFRleHQsCi0gICAgICAgIFNvZnRMaW5lQnJl
YWssCi0gICAgICAgIExpbmVCcmVha0JveCwKLSAgICAgICAgQXRvbWljSW5saW5lTGV2ZWxCb3gs
Ci0gICAgICAgIE5vblJvb3RJbmxpbmVCb3gsCi0gICAgICAgIFJvb3RJbmxpbmVCb3gsCi0gICAg
ICAgIEdlbmVyaWNJbmxpbmVMZXZlbEJveAotICAgIH07Ci0gICAgc3RydWN0IEV4cGFuc2lvbjsK
LSAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29uc3QgQm94JiwgY29uc3QgSW5saW5l
UmVjdCYsIGNvbnN0IElubGluZVJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24sIHN0ZDo6b3B0
aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQsIGJvb2wgaGFzQ29udGVudCA9IHRydWUpOwotCi0g
ICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6VGV4dDsgfQot
ICAgIGJvb2wgaXNTb2Z0TGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6
OlNvZnRMaW5lQnJlYWs7IH0KLSAgICBib29sIGlzTGluZUJyZWFrQm94KCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IFR5cGU6OkxpbmVCcmVha0JveDsgfQotICAgIGJvb2wgaXNMaW5lQnJlYWso
KSBjb25zdCB7IHJldHVybiBpc1NvZnRMaW5lQnJlYWsoKSB8fCBpc0xpbmVCcmVha0JveCgpOyB9
Ci0gICAgYm9vbCBpc0F0b21pY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6OkF0b21pY0lubGluZUxldmVsQm94OyB9Ci0gICAgYm9vbCBpc0lubGluZUJveCgp
IGNvbnN0IHsgcmV0dXJuIGlzTm9uUm9vdElubGluZUJveCgpIHx8IGlzUm9vdElubGluZUJveCgp
OyB9Ci0gICAgYm9vbCBpc05vblJvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gVHlwZTo6Tm9uUm9vdElubGluZUJveDsgfQotICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0KLSAgICBib29s
IGlzR2VuZXJpY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6
OkdlbmVyaWNJbmxpbmVMZXZlbEJveDsgfQotICAgIGJvb2wgaXNJbmxpbmVMZXZlbEJveCgpIGNv
bnN0IHsgcmV0dXJuIGlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSB8fCBpc0xpbmVCcmVha0JveCgp
IHx8IGlzSW5saW5lQm94KCkgfHwgaXNHZW5lcmljSW5saW5lTGV2ZWxCb3goKTsgfQotICAgIGJv
b2wgaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBpc0lubGluZUxldmVs
Qm94KCkgJiYgIWlzUm9vdElubGluZUJveCgpOyB9Ci0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBt
X2hhc0NvbnRlbnQ7IH0KLQotICAgIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQotICAgIGNvbnN0IElubGluZVJlY3QmIGlua092
ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQotCi0gICAgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS50b3AoKTsg
fQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGxv
Z2ljYWxSZWN0KCkuYm90dG9tKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0
KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5sZWZ0KCk7IH0KLSAgICBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkucmlnaHQo
KTsgfQotCi0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVy
biBsb2dpY2FsUmVjdCgpLndpZHRoKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmhlaWdodCgpOyB9Ci0KLSAgICB2
b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1fbG9naWNhbFJl
Y3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQotICAgIHZvaWQgYWRqdXN0SW5rT3ZlcmZsb3co
Y29uc3QgSW5saW5lUmVjdCYgY2hpbGRCb3JkZXJCb3gpIHsgcmV0dXJuIG1faW5rT3ZlcmZsb3cu
ZXhwYW5kVG9Db250YWluKGNoaWxkQm9yZGVyQm94KTsgfQotCi0gICAgc3RkOjpvcHRpb25hbDxU
ZXh0PiYgdGV4dCgpIHsgcmV0dXJuIG1fdGV4dDsgfQotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
VGV4dD4mIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KLQotICAgIHN0cnVjdCBFeHBh
bnNpb24gewotICAgICAgICBFeHBhbnNpb25CZWhhdmlvciBiZWhhdmlvciB7IERlZmF1bHRFeHBh
bnNpb24gfTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsRXhwYW5zaW9uIHsg
MCB9OwotICAgIH07Ci0gICAgRXhwYW5zaW9uIGV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZXhwYW5zaW9uOyB9Ci0KLSAgICBjb25zdCBCb3gmIGxheW91dEJveCgpIGNvbnN0IHsgcmV0dXJu
ICptX2xheW91dEJveDsgfQotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCk7IH0KLQotICAgIHNpemVfdCBsaW5lSW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2xpbmVJbmRleDsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IHNpemVf
dCBtX2xpbmVJbmRleCB7IDAgfTsKLSAgICBjb25zdCBUeXBlIG1fdHlwZSB7IFR5cGU6OkdlbmVy
aWNJbmxpbmVMZXZlbEJveCB9OwotICAgIFdlYWtQdHI8Y29uc3QgTGF5b3V0OjpCb3g+IG1fbGF5
b3V0Qm94OwotICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsKLSAgICBJbmxpbmVSZWN0IG1f
aW5rT3ZlcmZsb3c7Ci0gICAgYm9vbCBtX2hhc0NvbnRlbnQgeyB0cnVlIH07Ci0gICAgRXhwYW5z
aW9uIG1fZXhwYW5zaW9uOwotICAgIHN0ZDo6b3B0aW9uYWw8VGV4dD4gbV90ZXh0OwotfTsKLQot
aW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIFR5cGUgdHlwZSwgY29uc3QgTGF5b3V0
OjpCb3gmIGxheW91dEJveCwgY29uc3QgSW5saW5lUmVjdCYgbG9naWNhbFJlY3QsIGNvbnN0IElu
bGluZVJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFs
PFRleHQ+IHRleHQsIGJvb2wgaGFzQ29udGVudCkKLSAgICA6IG1fbGluZUluZGV4KGxpbmVJbmRl
eCkKLSAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9sYXlvdXRCb3gobWFrZVdlYWtQdHIobGF5
b3V0Qm94KSkKLSAgICAsIG1fbG9naWNhbFJlY3QobG9naWNhbFJlY3QpCi0gICAgLCBtX2lua092
ZXJmbG93KGlua092ZXJmbG93KQotICAgICwgbV9oYXNDb250ZW50KGhhc0NvbnRlbnQpCi0gICAg
LCBtX2V4cGFuc2lvbihleHBhbnNpb24pCi0gICAgLCBtX3RleHQodGV4dCkKLXsKLX0KLQotaW5s
aW5lIFJ1bjo6VGV4dDo6VGV4dChzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIsIGJv
b2wgaGFzSHlwaGVuKQotICAgIDogbV9zdGFydChzdGFydCkKLSAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKLSAgICAsIG1faGFzSHlwaGVuKGhhc0h5cGhlbikKLSAgICAsIG1fb3JpZ2luYWxDb250ZW50
KG9yaWdpbmFsQ29udGVudCkKLSAgICAsIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIoYWRqdXN0
ZWRDb250ZW50VG9SZW5kZXIpCi17Ci19Ci0KLX0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
dGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZWUzZWE5ZmVkMjc4MTJlZDY5
OGNkNmIwYjNiZDJmOTJkZTU0Yzk5My4uODlmNjhhMmY5MGIxYjk1NzFkMjhiYjRjYWVkOWQ1MWQz
ZTY1N2ZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCkBAIC0xNjIsOCArMTYyLDggQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRV
c2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b24KICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbEJveC5lc3RhYmxpc2hl
c0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZWUgPSBsYXlvdXRTdGF0ZSgpLmZvcm1hdHRpbmdTdGF0
ZUZvcklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNlbGxCb3gpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChhdXRvJiBydW4gOiBpbmxpbmVGb3JtYXR0aW5nU3RhdGVlLnJ1bnMoKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydW4ubW92ZVZlcnRpY2FsbHkoaW50cmluc2ljUGFk
ZGluZ1RvcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGJveCA6IGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZWUuYm94ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b3gubW92ZVZlcnRpY2FsbHkoaW50cmluc2ljUGFkZGluZ1RvcCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8mIGxpbmUgOiBpbmxpbmVGb3JtYXR0aW5nU3RhdGVlLmxpbmVzKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5tb3ZlVmVydGljYWxseShpbnRyaW5z
aWNQYWRkaW5nVG9wKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25JbmxpbmVDb250ZW50LmNwcAppbmRleCA3MzZjZDA1ZGFlODk1ZDc0NGI4MjUwMmE0YjQyNzNj
OWRmNTFhOGMwLi45ODI5YzM2MjgxNmI0ZDVjOGEzYzdmNTk4MTA2ODRhZjVjYzNhZWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25JbmxpbmVDb250ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcApAQCAtNDMsMjMgKzQzLDIzIEBA
IElubGluZUNvbnRlbnQ6OklubGluZUNvbnRlbnQoY29uc3QgTGluZUxheW91dCYgbGluZUxheW91
dCkKIAogYm9vbCBJbmxpbmVDb250ZW50OjpoYXNDb250ZW50KCkgY29uc3QKIHsKLSAgICBBU1NF
UlQocnVucy5pc0VtcHR5KCkgfHwgcnVuc1swXS5pc1Jvb3RJbmxpbmVCb3goKSk7Ci0gICAgcmV0
dXJuIHJ1bnMuc2l6ZSgpID4gMTsKKyAgICBBU1NFUlQoYm94ZXMuaXNFbXB0eSgpIHx8IGJveGVz
WzBdLmlzUm9vdElubGluZUJveCgpKTsKKyAgICByZXR1cm4gYm94ZXMuc2l6ZSgpID4gMTsKIH07
CiAKLVdURjo6SXRlcmF0b3JSYW5nZTxjb25zdCBMYXlvdXQ6OlJ1bio+IElubGluZUNvbnRlbnQ6
OnJ1bnNGb3JSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdAorV1RGOjpJdGVyYXRvclJhbmdl
PGNvbnN0IElubGluZURpc3BsYXk6OkJveCo+IElubGluZUNvbnRlbnQ6OmJveGVzRm9yUmVjdChj
b25zdCBMYXlvdXRSZWN0JikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIGVm
ZmljaWVudCBlLmcuIHVzaW5nIGxpbmUgYm94ZXMuCi0gICAgaWYgKHJ1bnMuaXNFbXB0eSgpKQor
ICAgIGlmIChib3hlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxw
dHIgfTsKLSAgICByZXR1cm4geyAmcnVucy5maXJzdCgpLCAmcnVucy5sYXN0KCkgKyAxIH07Cisg
ICAgcmV0dXJuIHsgJmJveGVzLmZpcnN0KCksICZib3hlcy5sYXN0KCkgKyAxIH07CiB9CiAKIElu
bGluZUNvbnRlbnQ6On5JbmxpbmVDb250ZW50KCkKIHsKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0
aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcnVuIDogcnVucykKLSAgICAgICAg
ICAgIFRleHRQYWludGVyOjpyZW1vdmVHbHlwaERpc3BsYXlMaXN0KHJ1bik7CisgICAgICAgIGZv
ciAoYXV0byYgYm94IDogYm94ZXMpCisgICAgICAgICAgICBUZXh0UGFpbnRlcjo6cmVtb3ZlR2x5
cGhEaXNwbGF5TGlzdChib3gpOwogICAgIH0KIH0KIApAQCAtNzgsNDQgKzc4LDQ0IEBAIGNvbnN0
IFJlbmRlckJsb2NrRmxvdyYgSW5saW5lQ29udGVudDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QK
ICAgICByZXR1cm4gbV9saW5lTGF5b3V0LT5mbG93KCk7CiB9CiAKLXNpemVfdCBJbmxpbmVDb250
ZW50OjppbmRleEZvclJ1bihjb25zdCBMYXlvdXQ6OlJ1biYgcnVuKSBjb25zdAorc2l6ZV90IElu
bGluZUNvbnRlbnQ6OmluZGV4Rm9yQm94KGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgYm94KSBj
b25zdAogewotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KCZydW4gLSBydW5z
LmJlZ2luKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4IDwgcnVucy5zaXplKCkpOworICAg
IGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KCZib3ggLSBib3hlcy5iZWdpbigpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA8IGJveGVzLnNpemUoKSk7CiAgICAgcmV0dXJuIGlu
ZGV4OwogfQogCi1jb25zdCBMYXlvdXQ6OlJ1biogSW5saW5lQ29udGVudDo6Zmlyc3RSdW5Gb3JM
YXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKK2NvbnN0IElubGlu
ZURpc3BsYXk6OkJveCogSW5saW5lQ29udGVudDo6Zmlyc3RCb3hGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKIHsKLSAgICBhdXRvIGluZGV4ID0gZmlyc3RS
dW5JbmRleEZvckxheW91dEJveChsYXlvdXRCb3gpOwotICAgIHJldHVybiBpbmRleCA/ICZydW5z
WyppbmRleF0gOiBudWxscHRyOworICAgIGF1dG8gaW5kZXggPSBmaXJzdEJveEluZGV4Rm9yTGF5
b3V0Qm94KGxheW91dEJveCk7CisgICAgcmV0dXJuIGluZGV4ID8gJmJveGVzWyppbmRleF0gOiBu
dWxscHRyOwogfQogCi1zdGQ6Om9wdGlvbmFsPHNpemVfdD4gSW5saW5lQ29udGVudDo6Zmlyc3RS
dW5JbmRleEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94KSBjb25zdAor
c3RkOjpvcHRpb25hbDxzaXplX3Q+IElubGluZUNvbnRlbnQ6OmZpcnN0Qm94SW5kZXhGb3JMYXlv
dXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBjb25zdGV4
cHIgYXV0byBjYWNoZVRocmVzaG9sZCA9IDE2OwogCi0gICAgaWYgKHJ1bnMuc2l6ZSgpIDwgY2Fj
aGVUaHJlc2hvbGQpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBydW5zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBydW4gPSBydW5zW2ldOwotICAgICAgICAgICAg
aWYgKCZydW4ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKKyAgICBpZiAoYm94ZXMuc2l6ZSgp
IDwgY2FjaGVUaHJlc2hvbGQpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBib3hl
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYXV0byYgYm94ID0gYm94ZXNbaV07CisgICAg
ICAgICAgICBpZiAoJmJveC5sYXlvdXRCb3goKSA9PSAmbGF5b3V0Qm94KQogICAgICAgICAgICAg
ICAgIHJldHVybiBpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAg
IAotICAgIGlmICghbV9maXJzdFJ1bkluZGV4Q2FjaGUpIHsKLSAgICAgICAgbV9maXJzdFJ1bklu
ZGV4Q2FjaGUgPSBtYWtlVW5pcXVlPEZpcnN0UnVuSW5kZXhDYWNoZT4oKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBydW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRv
JiBydW4gPSBydW5zW2ldOwotICAgICAgICAgICAgaWYgKHJ1bi5pc1Jvb3RJbmxpbmVCb3goKSkK
KyAgICBpZiAoIW1fZmlyc3RCb3hJbmRleENhY2hlKSB7CisgICAgICAgIG1fZmlyc3RCb3hJbmRl
eENhY2hlID0gbWFrZVVuaXF1ZTxGaXJzdEJveEluZGV4Q2FjaGU+KCk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYm94ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGF1dG8m
IGJveCA9IGJveGVzW2ldOworICAgICAgICAgICAgaWYgKGJveC5pc1Jvb3RJbmxpbmVCb3goKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1fZmlyc3RSdW5JbmRleENh
Y2hlLT5hZGQocnVuLmxheW91dEJveCgpLCBpKTsKKyAgICAgICAgICAgIG1fZmlyc3RCb3hJbmRl
eENhY2hlLT5hZGQoYm94LmxheW91dEJveCgpLCBpKTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IGF1dG8gaXQgPSBtX2ZpcnN0UnVuSW5kZXhDYWNoZS0+ZmluZChsYXlvdXRCb3gpOwotICAgIGlm
IChpdCA9PSBtX2ZpcnN0UnVuSW5kZXhDYWNoZS0+ZW5kKCkpCisgICAgYXV0byBpdCA9IG1fZmly
c3RCb3hJbmRleENhY2hlLT5maW5kKGxheW91dEJveCk7CisgICAgaWYgKGl0ID09IG1fZmlyc3RC
b3hJbmRleENhY2hlLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBp
dC0+dmFsdWU7CkBAIC0xMjcsMTEgKzEyNywxMSBAQCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgSW5s
aW5lQ29udGVudDo6bm9uUm9vdElubGluZUJveEluZGV4ZXNGb3JMYXlvdXRCb3goY29uc3QgTAog
CiAgICAgaWYgKCFtX2lubGluZUJveEluZGV4Q2FjaGUpIHsKICAgICAgICAgbV9pbmxpbmVCb3hJ
bmRleENhY2hlID0gbWFrZVVuaXF1ZTxJbmxpbmVCb3hJbmRleENhY2hlPigpOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJ1bnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1
dG8mIHJ1biA9IHJ1bnNbaV07Ci0gICAgICAgICAgICBpZiAoIXJ1bi5pc05vblJvb3RJbmxpbmVC
b3goKSkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBib3hlcy5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgYXV0byYgYm94ID0gYm94ZXNbaV07CisgICAgICAgICAgICBpZiAoIWJv
eC5pc05vblJvb3RJbmxpbmVCb3goKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIG1faW5saW5lQm94SW5kZXhDYWNoZS0+ZW5zdXJlKHJ1bi5sYXlvdXRCb3goKSwgWyZd
IHsKKyAgICAgICAgICAgIG1faW5saW5lQm94SW5kZXhDYWNoZS0+ZW5zdXJlKGJveC5sYXlvdXRC
b3goKSwgWyZdIHsKICAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPHNpemVfdD4geyB9Owog
ICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChpKTsKICAgICAgICAgfQpAQCAt
MTUwLDEzICsxNTAsMTMgQEAgY29uc3QgVmVjdG9yPHNpemVfdD4mIElubGluZUNvbnRlbnQ6Om5v
blJvb3RJbmxpbmVCb3hJbmRleGVzRm9yTGF5b3V0Qm94KGNvbnN0IEwKIAogdm9pZCBJbmxpbmVD
b250ZW50OjpyZWxlYXNlQ2FjaGVzKCkKIHsKLSAgICBtX2ZpcnN0UnVuSW5kZXhDYWNoZSA9IHsg
fTsKKyAgICBtX2ZpcnN0Qm94SW5kZXhDYWNoZSA9IHsgfTsKICAgICBtX2lubGluZUJveEluZGV4
Q2FjaGUgPSB7IH07CiB9CiAKIHZvaWQgSW5saW5lQ29udGVudDo6c2hyaW5rVG9GaXQoKQogewot
ICAgIHJ1bnMuc2hyaW5rVG9GaXQoKTsKKyAgICBib3hlcy5zaHJpbmtUb0ZpdCgpOwogICAgIGxp
bmVzLnNocmlua1RvRml0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQu
aAppbmRleCA5ZmMwZjBmYTljYTNiMzEwNzJhNzllZDFlNDdjMDRjYzcyZjQwZWM3Li5jYmY3NDBl
ZWNlYTliMWMyZTAzZWI4YWVjZDU1YTEwMzJmMDdhMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
SW5saW5lQ29udGVudC5oCkBAIC00Myw2ICs0MywxMCBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNs
YXNzIEJveDsKIH0KIAorbmFtZXNwYWNlIElubGluZURpc3BsYXkgeworc3RydWN0IEJveDsKK30g
CisKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKIGNsYXNzIExpbmVMYXlvdXQ7CkBA
IC01MSwzMCArNTUsMzAgQEAgc3RydWN0IElubGluZUNvbnRlbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJbmxpbmVDb250ZW50PiB7CiAgICAgc3RhdGljIFJlZjxJbmxpbmVDb250ZW50PiBjcmVhdGUo
Y29uc3QgTGluZUxheW91dCYgbGluZUxheW91dCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmxp
bmVDb250ZW50KGxpbmVMYXlvdXQpKTsgfQogICAgIH5JbmxpbmVDb250ZW50KCk7CiAKLSAgICB1
c2luZyBSdW5zID0gVmVjdG9yPExheW91dDo6UnVuPjsKKyAgICB1c2luZyBCb3hlcyA9IFZlY3Rv
cjxJbmxpbmVEaXNwbGF5OjpCb3g+OwogICAgIHVzaW5nIExpbmVzID0gVmVjdG9yPExpbmU+Owog
Ci0gICAgUnVucyBydW5zOworICAgIEJveGVzIGJveGVzOwogICAgIExpbmVzIGxpbmVzOwogCiAg
ICAgZmxvYXQgY2xlYXJHYXBBZnRlckxhc3RMaW5lIHsgMCB9OwogCiAgICAgYm9vbCBoYXNDb250
ZW50KCkgY29uc3Q7CiAgICAgCi0gICAgY29uc3QgTGluZSYgbGluZUZvclJ1bihjb25zdCBMYXlv
dXQ6OlJ1biYgcnVuKSBjb25zdCB7IHJldHVybiBsaW5lc1tydW4ubGluZUluZGV4KCldOyB9Ci0g
ICAgV1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IExheW91dDo6UnVuKj4gcnVuc0ZvclJlY3QoY29u
c3QgTGF5b3V0UmVjdCYpIGNvbnN0OworICAgIGNvbnN0IExpbmUmIGxpbmVGb3JCb3goY29uc3Qg
SW5saW5lRGlzcGxheTo6Qm94JiBib3gpIGNvbnN0IHsgcmV0dXJuIGxpbmVzW2JveC5saW5lSW5k
ZXgoKV07IH0KKyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8Y29uc3QgSW5saW5lRGlzcGxheTo6Qm94
Kj4gYm94ZXNGb3JSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKICAgICB2b2lkIHNocmlu
a1RvRml0KCk7CiAKICAgICBjb25zdCBMaW5lTGF5b3V0JiBsaW5lTGF5b3V0KCkgY29uc3Q7CiAg
ICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6
OkJveCYpIGNvbnN0OwogICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2Nr
KCkgY29uc3Q7CiAKLSAgICBzaXplX3QgaW5kZXhGb3JSdW4oY29uc3QgTGF5b3V0OjpSdW4mKSBj
b25zdDsKKyAgICBzaXplX3QgaW5kZXhGb3JCb3goY29uc3QgSW5saW5lRGlzcGxheTo6Qm94Jikg
Y29uc3Q7CiAKLSAgICBjb25zdCBMYXlvdXQ6OlJ1biogZmlyc3RSdW5Gb3JMYXlvdXRCb3goY29u
c3QgTGF5b3V0OjpCb3gmKSBjb25zdDsKKyAgICBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gqIGZp
cnN0Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgdHJhdmVyc2VOb25Sb290SW5saW5lQm94ZXMoY29u
c3QgTGF5b3V0OjpCb3gmLCBGdW5jdGlvbiYmKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBmaXJzdFJ1bkluZGV4Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpcnN0Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3gmKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbm9uUm9vdElu
bGluZUJveEluZGV4ZXNGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmKSBjb25zdDsKIAog
ICAgIHZvaWQgcmVsZWFzZUNhY2hlcygpOwpAQCAtODQsOCArODgsOCBAQCBwcml2YXRlOgogCiAg
ICAgV2Vha1B0cjxjb25zdCBMaW5lTGF5b3V0PiBtX2xpbmVMYXlvdXQ7CiAKLSAgICB1c2luZyBG
aXJzdFJ1bkluZGV4Q2FjaGUgPSBXZWFrSGFzaE1hcDxMYXlvdXQ6OkJveCwgc2l6ZV90PjsKLSAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxGaXJzdFJ1bkluZGV4Q2FjaGU+IG1fZmlyc3RSdW5J
bmRleENhY2hlOworICAgIHVzaW5nIEZpcnN0Qm94SW5kZXhDYWNoZSA9IFdlYWtIYXNoTWFwPExh
eW91dDo6Qm94LCBzaXplX3Q+OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEZpcnN0Qm94
SW5kZXhDYWNoZT4gbV9maXJzdEJveEluZGV4Q2FjaGU7CiAKICAgICB1c2luZyBJbmxpbmVCb3hJ
bmRleENhY2hlID0gV2Vha0hhc2hNYXA8TGF5b3V0OjpCb3gsIFZlY3RvcjxzaXplX3Q+PjsKICAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVCb3hJbmRleENhY2hlPiBtX2lubGluZUJv
eEluZGV4Q2FjaGU7CkBAIC05NCw3ICs5OCw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdGlvbj4gdm9pZCBJbmxpbmVDb250ZW50Ojp0cmF2ZXJzZU5vblJvb3RJbmxpbmVCb3hl
cyhjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewog
ICAgIGZvciAoYXV0byBpbmRleCA6IG5vblJvb3RJbmxpbmVCb3hJbmRleGVzRm9yTGF5b3V0Qm94
KGxheW91dEJveCkpCi0gICAgICAgIGZ1bmN0aW9uKHJ1bnNbaW5kZXhdKTsKKyAgICAgICAgZnVu
Y3Rpb24oYm94ZXNbaW5kZXhdKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
SW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDVmYTk3NDVhNDQ0Yjg1YWFjM2RjNTM5MTM0
MDAyNDM3ZDU2NjVhYzAuLjgyMjM1ZjAyZWNiZWFjZDVlNjQyMTdkNTM4MzQxNGFlNDZmN2ZjZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAK
QEAgLTY1LDE2ICs2NSwxNiBAQCBJbmxpbmVDb250ZW50QnVpbGRlcjo6SW5saW5lQ29udGVudEJ1
aWxkZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNvbgogCiB2b2lkIElubGlu
ZUNvbnRlbnRCdWlsZGVyOjpidWlsZChMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgaW5s
aW5lRm9ybWF0dGluZ1N0YXRlLCBJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50KSBjb25zdAog
ewotICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0IG5lZWQgYSBkaWZmZXJlbnQgYXBwcm9hY2ggd2l0
aCBwYXJ0aWFsIGxheW91dCB3aGVyZSB0aGUgbGF5b3V0IGNvZGUgbmVlZHMgdG8ga25vdyBhYm91
dCB0aGUgcnVucy4KLSAgICBpbmxpbmVDb250ZW50LnJ1bnMgPSBXVEZNb3ZlKGlubGluZUZvcm1h
dHRpbmdTdGF0ZS5ydW5zKCkpOworICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0IG5lZWQgYSBkaWZm
ZXJlbnQgYXBwcm9hY2ggd2l0aCBwYXJ0aWFsIGxheW91dCB3aGVyZSB0aGUgbGF5b3V0IGNvZGUg
bmVlZHMgdG8ga25vdyBhYm91dCB0aGUgYm94ZXMuCisgICAgaW5saW5lQ29udGVudC5ib3hlcyA9
IFdURk1vdmUoaW5saW5lRm9ybWF0dGluZ1N0YXRlLmJveGVzKCkpOwogICAgIGNyZWF0ZURpc3Bs
YXlMaW5lcyhpbmxpbmVGb3JtYXR0aW5nU3RhdGUsIGlubGluZUNvbnRlbnQpOwogfQogCiB2b2lk
IElubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZXMoTGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nU3RhdGUmIGlubGluZUZvcm1hdHRpbmdTdGF0ZSwgSW5saW5lQ29udGVudCYgaW5s
aW5lQ29udGVudCkgY29uc3QKIHsKICAgICBhdXRvJiBsaW5lcyA9IGlubGluZUZvcm1hdHRpbmdT
dGF0ZS5saW5lcygpOwotICAgIGF1dG8mIHJ1bnMgPSBpbmxpbmVDb250ZW50LnJ1bnM7Ci0gICAg
c2l6ZV90IHJ1bkluZGV4ID0gMDsKKyAgICBhdXRvJiBib3hlcyA9IGlubGluZUNvbnRlbnQuYm94
ZXM7CisgICAgc2l6ZV90IGJveEluZGV4ID0gMDsKICAgICBpbmxpbmVDb250ZW50LmxpbmVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGluZXMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBsaW5l
SW5kZXggPSAwOyBsaW5lSW5kZXggPCBsaW5lcy5zaXplKCk7ICsrbGluZUluZGV4KSB7CiAgICAg
ICAgIGF1dG8mIGxpbmUgPSBsaW5lc1tsaW5lSW5kZXhdOwpAQCAtODIsMzIgKzgyLDMyIEBAIHZv
aWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyhMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdTdGF0ZSYgaW5sCiAgICAgICAgIGlmIChhdXRvIG92ZXJmbG93V2lkdGggPSBs
aW5lT3ZlcmZsb3dXaWR0aChtX2Jsb2NrRmxvdywgbGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkp
OyBvdmVyZmxvd1dpZHRoID4gc2Nyb2xsYWJsZU92ZXJmbG93UmVjdC53aWR0aCgpKQogICAgICAg
ICAgICAgc2Nyb2xsYWJsZU92ZXJmbG93UmVjdC5zZXRXaWR0aChvdmVyZmxvd1dpZHRoKTsKIAot
ICAgICAgICBhdXRvIGZpcnN0UnVuSW5kZXggPSBydW5JbmRleDsKKyAgICAgICAgYXV0byBmaXJz
dEJveEluZGV4ID0gYm94SW5kZXg7CiAgICAgICAgIGF1dG8gbGluZUlua092ZXJmbG93UmVjdCA9
IHNjcm9sbGFibGVPdmVyZmxvd1JlY3Q7Ci0gICAgICAgIC8vIENvbGxlY3Qgb3ZlcmZsb3cgZnJv
bSBydW5zLgotICAgICAgICBmb3IgKDsgcnVuSW5kZXggPCBydW5zLnNpemUoKSAmJiBydW5zW3J1
bkluZGV4XS5saW5lSW5kZXgoKSA9PSBsaW5lSW5kZXg7ICsrcnVuSW5kZXgpIHsKLSAgICAgICAg
ICAgIGF1dG8mIHJ1biA9IHJ1bnNbcnVuSW5kZXhdOworICAgICAgICAvLyBDb2xsZWN0IG92ZXJm
bG93IGZyb20gYm94ZXMuCisgICAgICAgIGZvciAoOyBib3hJbmRleCA8IGJveGVzLnNpemUoKSAm
JiBib3hlc1tib3hJbmRleF0ubGluZUluZGV4KCkgPT0gbGluZUluZGV4OyArK2JveEluZGV4KSB7
CisgICAgICAgICAgICBhdXRvJiBib3ggPSBib3hlc1tib3hJbmRleF07CiAKLSAgICAgICAgICAg
IGxpbmVJbmtPdmVyZmxvd1JlY3QudW5pdGUocnVuLmlua092ZXJmbG93KCkpOworICAgICAgICAg
ICAgbGluZUlua092ZXJmbG93UmVjdC51bml0ZShib3guaW5rT3ZlcmZsb3coKSk7CiAKLSAgICAg
ICAgICAgIGF1dG8mIGxheW91dEJveCA9IHJ1bi5sYXlvdXRCb3goKTsKKyAgICAgICAgICAgIGF1
dG8mIGxheW91dEJveCA9IGJveC5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGlmIChsYXlvdXRC
b3guaXNSZXBsYWNlZEJveCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gU2ltaWxhciB0byBMZWdh
Y3lJbmxpbmVGbG93Qm94OjphZGRSZXBsYWNlZENoaWxkT3ZlcmZsb3cuCi0gICAgICAgICAgICAg
ICAgYXV0byYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihtX2JveFRyZWUucmVuZGVyZXJGb3JM
YXlvdXRCb3gobGF5b3V0Qm94KSk7Ci0gICAgICAgICAgICAgICAgYXV0byBydW5Mb2dpY2FsUmVj
dCA9IHJ1bi5sb2dpY2FsUmVjdCgpOwotICAgICAgICAgICAgICAgIGlmICghYm94Lmhhc1NlbGZQ
YWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBjaGlsZElua092ZXJm
bG93ID0gYm94LmxvZ2ljYWxWaXN1YWxPdmVyZmxvd1JlY3RGb3JQcm9wYWdhdGlvbigmYm94LnBh
cmVudCgpLT5zdHlsZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRJbmtPdmVyZmxvdy5t
b3ZlKHJ1bkxvZ2ljYWxSZWN0LmxlZnQoKSwgcnVuTG9naWNhbFJlY3QudG9wKCkpOworICAgICAg
ICAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94PihtX2JveFRyZWUu
cmVuZGVyZXJGb3JMYXlvdXRCb3gobGF5b3V0Qm94KSk7CisgICAgICAgICAgICAgICAgYXV0byBi
b3hMb2dpY2FsUmVjdCA9IGJveC5sb2dpY2FsUmVjdCgpOworICAgICAgICAgICAgICAgIGlmICgh
cmVuZGVyZXIuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBh
dXRvIGNoaWxkSW5rT3ZlcmZsb3cgPSByZW5kZXJlci5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0
Rm9yUHJvcGFnYXRpb24oJnJlbmRlcmVyLnBhcmVudCgpLT5zdHlsZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2hpbGRJbmtPdmVyZmxvdy5tb3ZlKGJveExvZ2ljYWxSZWN0LmxlZnQoKSwgYm94
TG9naWNhbFJlY3QudG9wKCkpOwogICAgICAgICAgICAgICAgICAgICBsaW5lSW5rT3ZlcmZsb3dS
ZWN0LnVuaXRlKGNoaWxkSW5rT3ZlcmZsb3cpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBhdXRvIGNoaWxkU2Nyb2xsYWJsZU92ZXJmbG93ID0gYm94LmxvZ2ljYWxMYXlvdXRP
dmVyZmxvd1JlY3RGb3JQcm9wYWdhdGlvbigmYm94LnBhcmVudCgpLT5zdHlsZSgpKTsKLSAgICAg
ICAgICAgICAgICBjaGlsZFNjcm9sbGFibGVPdmVyZmxvdy5tb3ZlKHJ1bkxvZ2ljYWxSZWN0Lmxl
ZnQoKSwgcnVuTG9naWNhbFJlY3QudG9wKCkpOworICAgICAgICAgICAgICAgIGF1dG8gY2hpbGRT
Y3JvbGxhYmxlT3ZlcmZsb3cgPSByZW5kZXJlci5sb2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0Rm9y
UHJvcGFnYXRpb24oJnJlbmRlcmVyLnBhcmVudCgpLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAg
ICBjaGlsZFNjcm9sbGFibGVPdmVyZmxvdy5tb3ZlKGJveExvZ2ljYWxSZWN0LmxlZnQoKSwgYm94
TG9naWNhbFJlY3QudG9wKCkpOwogICAgICAgICAgICAgICAgIHNjcm9sbGFibGVPdmVyZmxvd1Jl
Y3QudW5pdGUoY2hpbGRTY3JvbGxhYmxlT3ZlcmZsb3cpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxSZWN0ID0gRmxvYXRSZWN0IHsgbGluZS5s
aW5lQm94TG9naWNhbFJlY3QoKSB9OwotICAgICAgICBhdXRvIHJ1bkNvdW50ID0gcnVuSW5kZXgg
LSBmaXJzdFJ1bkluZGV4OwotICAgICAgICBpbmxpbmVDb250ZW50LmxpbmVzLmFwcGVuZCh7IGZp
cnN0UnVuSW5kZXgsIHJ1bkNvdW50LCBsaW5lQm94TG9naWNhbFJlY3QsIGxpbmUuZW5jbG9zaW5n
VG9wQW5kQm90dG9tKCkudG9wLCBsaW5lLmVuY2xvc2luZ1RvcEFuZEJvdHRvbSgpLmJvdHRvbSwg
c2Nyb2xsYWJsZU92ZXJmbG93UmVjdCwgbGluZUlua092ZXJmbG93UmVjdCwgbGluZS5iYXNlbGlu
ZSgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsTGVmdCgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgo
KSB9KTsKKyAgICAgICAgYXV0byBib3hDb3VudCA9IGJveEluZGV4IC0gZmlyc3RCb3hJbmRleDsK
KyAgICAgICAgaW5saW5lQ29udGVudC5saW5lcy5hcHBlbmQoeyBmaXJzdEJveEluZGV4LCBib3hD
b3VudCwgbGluZUJveExvZ2ljYWxSZWN0LCBsaW5lLmVuY2xvc2luZ1RvcEFuZEJvdHRvbSgpLnRv
cCwgbGluZS5lbmNsb3NpbmdUb3BBbmRCb3R0b20oKS5ib3R0b20sIHNjcm9sbGFibGVPdmVyZmxv
d1JlY3QsIGxpbmVJbmtPdmVyZmxvd1JlY3QsIGxpbmUuYmFzZWxpbmUoKSwgbGluZS5jb250ZW50
TG9naWNhbExlZnQoKSwgbGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgfSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lLmgKaW5kZXggMzkyNjczZTllZDMxYzc3YzE4MDIzMjYyZmNlODkwOTBl
MmY1Zjc4ZC4uNmRmZTZiYzkzZjExZTMwMWNmYTllZTc1MTZmMDMzNzQxOGE2ZjY3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmUuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRp
b24gewogY2xhc3MgTGluZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgTGluZShzaXplX3QgZmlyc3RSdW5JbmRleCwgc2l6ZV90IHJ1bkNvdW50LCBjb25zdCBG
bG9hdFJlY3QmIGxpbmVCb3hSZWN0LCBmbG9hdCBlbmNsb3NpbmdDb250ZW50VG9wLCBmbG9hdCBl
bmNsb3NpbmdDb250ZW50Qm90dG9tLCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVPdmVyZmxv
dywgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgZmxvYXQgYmFzZWxpbmUsIGZsb2F0IGNv
bnRlbnRMZWZ0LCBmbG9hdCBjb250ZW50V2lkdGgpCi0gICAgICAgIDogbV9maXJzdFJ1bkluZGV4
KGZpcnN0UnVuSW5kZXgpCi0gICAgICAgICwgbV9ydW5Db3VudChydW5Db3VudCkKKyAgICBMaW5l
KHNpemVfdCBmaXJzdEJveEluZGV4LCBzaXplX3QgYm94Q291bnQsIGNvbnN0IEZsb2F0UmVjdCYg
bGluZUJveFJlY3QsIGZsb2F0IGVuY2xvc2luZ0NvbnRlbnRUb3AsIGZsb2F0IGVuY2xvc2luZ0Nv
bnRlbnRCb3R0b20sIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25zdCBG
bG9hdFJlY3QmIGlua092ZXJmbG93LCBmbG9hdCBiYXNlbGluZSwgZmxvYXQgY29udGVudExlZnQs
IGZsb2F0IGNvbnRlbnRXaWR0aCkKKyAgICAgICAgOiBtX2ZpcnN0Qm94SW5kZXgoZmlyc3RCb3hJ
bmRleCkKKyAgICAgICAgLCBtX2JveENvdW50KGJveENvdW50KQogICAgICAgICAsIG1fbGluZUJv
eFJlY3QobGluZUJveFJlY3QpCiAgICAgICAgICwgbV9lbmNsb3NpbmdDb250ZW50VG9wKGVuY2xv
c2luZ0NvbnRlbnRUb3ApCiAgICAgICAgICwgbV9lbmNsb3NpbmdDb250ZW50Qm90dG9tKGVuY2xv
c2luZ0NvbnRlbnRCb3R0b20pCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgc2l6ZV90IGZpcnN0UnVuSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UnVu
SW5kZXg7IH0KLSAgICBzaXplX3QgcnVuQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3J1bkNvdW50
OyB9CisgICAgc2l6ZV90IGZpcnN0Qm94SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Qm94
SW5kZXg7IH0KKyAgICBzaXplX3QgYm94Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2JveENvdW50
OyB9CiAKICAgICBmbG9hdCBsaW5lQm94VG9wKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94UmVj
dC55KCk7IH0KICAgICBmbG9hdCBsaW5lQm94Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9saW5l
Qm94UmVjdC5tYXhZKCk7IH0KQEAgLTcwLDggKzcwLDggQEAgcHVibGljOgogICAgIGZsb2F0IGNv
bnRlbnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFdpZHRoOyB9CiAKIHByaXZhdGU6
Ci0gICAgc2l6ZV90IG1fZmlyc3RSdW5JbmRleCB7IDAgfTsKLSAgICBzaXplX3QgbV9ydW5Db3Vu
dCB7IDAgfTsKKyAgICBzaXplX3QgbV9maXJzdEJveEluZGV4IHsgMCB9OworICAgIHNpemVfdCBt
X2JveENvdW50IHsgMCB9OwogICAgIC8vIFRoaXMgaXMgbGluZSBib3ggZ2VvbWV0cnkgKHNlZSBo
dHRwczovL3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5lLWJveCkuCiAgICAgRmxvYXRS
ZWN0IG1fbGluZUJveFJlY3Q7CiAgICAgLy8gRW5jbG9zaW5nIHRvcCBhbmQgYm90dG9tIGluY2x1
ZGVzIGFsbCBpbmxpbmUgbGV2ZWwgYm94ZXMgKGJvcmRlciBib3gpIHZlcnRpY2FsbHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggNGRk
ZDRhYTRlOWYzMWNkOWIzZTc2ODcwMDQ4ODc0ZjY3NjFmNWQ0My4uMjgyYzI4MzEyODhjNGVjMDMz
MjgwNWM3OGEzMDQ4MTVhZjQ3ZDFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVJdGVyYXRvck1vZGVyblBhdGguaApAQCAtOTgsMjEgKzk4LDIxIEBAIHB1YmxpYzoKIAogICAg
IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCBmaXJzdFJ1bigpIGNvbnN0CiAgICAgewotICAgICAgICBp
ZiAoIWxpbmUoKS5ydW5Db3VudCgpKQorICAgICAgICBpZiAoIWxpbmUoKS5ib3hDb3VudCgpKQog
ICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCB9OwotICAgICAgICBhdXRvIHJ1
bkl0ZXJhdG9yID0gUnVuSXRlcmF0b3JNb2Rlcm5QYXRoIHsgKm1faW5saW5lQ29udGVudCwgbGlu
ZSgpLmZpcnN0UnVuSW5kZXgoKSB9OwotICAgICAgICBpZiAocnVuSXRlcmF0b3IucnVuKCkuaXNJ
bmxpbmVCb3goKSkKKyAgICAgICAgYXV0byBydW5JdGVyYXRvciA9IFJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aCB7ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5maXJzdEJveEluZGV4KCkgfTsKKyAgICAg
ICAgaWYgKHJ1bkl0ZXJhdG9yLmJveCgpLmlzSW5saW5lQm94KCkpCiAgICAgICAgICAgICBydW5J
dGVyYXRvci50cmF2ZXJzZU5leHRMZWFmKCk7CiAgICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsK
ICAgICB9CiAKICAgICBSdW5JdGVyYXRvck1vZGVyblBhdGggbGFzdFJ1bigpIGNvbnN0CiAgICAg
ewotICAgICAgICBhdXRvIHJ1bkNvdW50ID0gbGluZSgpLnJ1bkNvdW50KCk7Ci0gICAgICAgIGlm
ICghcnVuQ291bnQpCisgICAgICAgIGF1dG8gYm94Q291bnQgPSBsaW5lKCkuYm94Q291bnQoKTsK
KyAgICAgICAgaWYgKCFib3hDb3VudCkKICAgICAgICAgICAgIHJldHVybiB7ICptX2lubGluZUNv
bnRlbnQgfTsKLSAgICAgICAgYXV0byBydW5JdGVyYXRvciA9IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0
aCB7ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5maXJzdFJ1bkluZGV4KCkgKyBydW5Db3VudCAt
IDEgfTsKLSAgICAgICAgaWYgKHJ1bkl0ZXJhdG9yLnJ1bigpLmlzSW5saW5lQm94KCkpCisgICAg
ICAgIGF1dG8gcnVuSXRlcmF0b3IgPSBSdW5JdGVyYXRvck1vZGVyblBhdGggeyAqbV9pbmxpbmVD
b250ZW50LCBsaW5lKCkuZmlyc3RCb3hJbmRleCgpICsgYm94Q291bnQgLSAxIH07CisgICAgICAg
IGlmIChydW5JdGVyYXRvci5ib3goKS5pc0lubGluZUJveCgpKQogICAgICAgICAgICAgcnVuSXRl
cmF0b3IudHJhdmVyc2VQcmV2aW91c0xlYWYoKTsKICAgICAgICAgcmV0dXJuIHJ1bkl0ZXJhdG9y
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggMTBjNWUxNTAx
YzIwMmQ5ZGJhNjRmMmFmMjBkYWY0MjM5MGZjZDI3YS4uOGY3YzAwN2ExNWJkYmQ1MzNlODY4MjJi
NDU4NDdmOGY1OWRjYTFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAg
LTIxNyw3ICsyMTcsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiAgICAgdXBkYXRlRm9y
bWF0dGluZ1Jvb3RHZW9tZXRyeUFuZEludmFsaWRhdGUoKTsKICAgICBwcmVwYXJlRmxvYXRpbmdT
dGF0ZSgpOwogCi0gICAgLy8gRklYTUU6IERvIG5vdCBjbGVhciB0aGUgbGluZXMgYW5kIHJ1bnMg
aGVyZSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBjb25zdWx0IHdpdGggdGhlIGRhbWFnZSBvYmplY3Qg
aW5zdGVhZC4KKyAgICAvLyBGSVhNRTogRG8gbm90IGNsZWFyIHRoZSBsaW5lcyBhbmQgYm94ZXMg
aGVyZSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBjb25zdWx0IHdpdGggdGhlIGRhbWFnZSBvYmplY3Qg
aW5zdGVhZC4KICAgICBtX2lubGluZUNvbnRlbnQgPSBudWxscHRyOwogICAgIGF1dG8mIHJvb3RH
ZW9tZXRyeSA9IG1fbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gocm9vdExheW91dEJveCk7CiAg
ICAgYXV0byBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCA9IExheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQgeyByb290TGF5b3V0Qm94LCBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZSwgbV9saW5l
RGFtYWdlLmdldCgpIH07CkBAIC0zODcsNyArMzg3LDcgQEAgVGV4dFJ1bkl0ZXJhdG9yIExpbmVM
YXlvdXQ6OnRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlclRleHQpIGNvbnN0CiAg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvJiBsYXlvdXRCb3ggPSBtX2JveFRyZWUubGF5
b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyVGV4dCk7Ci0gICAgYXV0byBmaXJzdEluZGV4ID0gbV9p
bmxpbmVDb250ZW50LT5maXJzdFJ1bkluZGV4Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAg
YXV0byBmaXJzdEluZGV4ID0gbV9pbmxpbmVDb250ZW50LT5maXJzdEJveEluZGV4Rm9yTGF5b3V0
Qm94KGxheW91dEJveCk7CiAgICAgaWYgKCFmaXJzdEluZGV4KQogICAgICAgICByZXR1cm4geyB9
OwogCkBAIC00MDAsNyArNDAwLDcgQEAgUnVuSXRlcmF0b3IgTGluZUxheW91dDo6cnVuRm9yKGNv
bnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQpIGNvbnN0CiAgICAgICAgIHJldHVybiB7
IH07CiAKICAgICBhdXRvJiBsYXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVy
ZXIocmVuZGVyRWxlbWVudCk7Ci0gICAgYXV0byBmaXJzdEluZGV4ID0gbV9pbmxpbmVDb250ZW50
LT5maXJzdFJ1bkluZGV4Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byBmaXJzdElu
ZGV4ID0gbV9pbmxpbmVDb250ZW50LT5maXJzdEJveEluZGV4Rm9yTGF5b3V0Qm94KGxheW91dEJv
eCk7CiAgICAgaWYgKCFmaXJzdEluZGV4KQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC00Mjcs
OCArNDI3LDggQEAgTGF5b3V0UmVjdCBMaW5lTGF5b3V0OjpmaXJzdElubGluZUJveFJlY3QoY29u
c3QgUmVuZGVySW5saW5lJiByZW5kZXJJbmxpbmUpIGNvbnMKIHsKICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVySW5saW5lKTsKIAotICAg
IGlmIChhdXRvKiBydW4gPSBtX2lubGluZUNvbnRlbnQtPmZpcnN0UnVuRm9yTGF5b3V0Qm94KGxh
eW91dEJveCkpCi0gICAgICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0UmVjdChydW4tPmxvZ2lj
YWxSZWN0KCkpOworICAgIGlmIChhdXRvKiBib3ggPSBtX2lubGluZUNvbnRlbnQtPmZpcnN0Qm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0
UmVjdChib3gtPmxvZ2ljYWxSZWN0KCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTQ5OCwx
NCArNDk4LDE0IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBhdXRvIHBhaW50UmVjdCA9IHBh
aW50SW5mby5yZWN0OwogICAgIHBhaW50UmVjdC5tb3ZlQnkoLXBhaW50T2Zmc2V0KTsKIAotICAg
IGZvciAoYXV0byYgcnVuIDogbV9pbmxpbmVDb250ZW50LT5ydW5zRm9yUmVjdChwYWludFJlY3Qp
KSB7Ci0gICAgICAgIGlmIChydW4uaXNJbmxpbmVCb3goKSkKKyAgICBmb3IgKGF1dG8mIGJveCA6
IG1faW5saW5lQ29udGVudC0+Ym94ZXNGb3JSZWN0KHBhaW50UmVjdCkpIHsKKyAgICAgICAgaWYg
KGJveC5pc0lubGluZUJveCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChy
dW4udGV4dCgpKSB7Ci0gICAgICAgICAgICBwYWludFRleHRSdW5Vc2luZ1BoeXNpY2FsQ29vcmRp
bmF0ZXMocGFpbnRJbmZvLCBwYWludE9mZnNldCwgcnVuKTsKKyAgICAgICAgaWYgKGJveC50ZXh0
KCkpIHsKKyAgICAgICAgICAgIHBhaW50VGV4dEJveFVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhw
YWludEluZm8sIHBhaW50T2Zmc2V0LCBib3gpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKGF1dG8mIHJlbmRlcmVyID0gbV9ib3hUcmVlLnJlbmRlcmVyRm9y
TGF5b3V0Qm94KHJ1bi5sYXlvdXRCb3goKSk7IGlzPFJlbmRlckJveD4ocmVuZGVyZXIpICYmIHJl
bmRlcmVyLmlzUmVwbGFjZWQoKSkgeworICAgICAgICBpZiAoYXV0byYgcmVuZGVyZXIgPSBtX2Jv
eFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3goYm94LmxheW91dEJveCgpKTsgaXM8UmVuZGVyQm94
PihyZW5kZXJlcikgJiYgcmVuZGVyZXIuaXNSZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICBhdXRv
JiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKTsKICAgICAgICAgICAg
IGlmICghcmVuZGVyQm94Lmhhc1NlbGZQYWludGluZ0xheWVyKCkgJiYgcGFpbnRJbmZvLnNob3Vs
ZFBhaW50V2l0aGluUm9vdChyZW5kZXJCb3gpKQogICAgICAgICAgICAgICAgIHJlbmRlckJveC5w
YWludEFzSW5saW5lQmxvY2socGFpbnRJbmZvLCBwYWludE9mZnNldCk7CkBAIC01MjMsMjMgKzUy
MywyMyBAQCBib29sIExpbmVMYXlvdXQ6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYwogCiAgICAgYXV0byYgaW5saW5lQ29udGVu
dCA9ICptX2lubGluZUNvbnRlbnQ7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZG8gc29t
ZXRoaW5nIGVmZmljaWVudCB0byBmaW5kIHRoZSBydW4gcmFuZ2UuCi0gICAgZm9yIChhdXRvJiBy
dW4gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKGlubGluZUNvbnRlbnQucnVucykpIHsKLSAgICAg
ICAgYXV0byYgcmVuZGVyZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3gocnVuLmxh
eW91dEJveCgpKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZG8gc29tZXRoaW5nIGVmZmlj
aWVudCB0byBmaW5kIHRoZSBib3ggcmFuZ2UuCisgICAgZm9yIChhdXRvJiBib3ggOiBXVEY6Om1h
a2VSZXZlcnNlZFJhbmdlKGlubGluZUNvbnRlbnQuYm94ZXMpKSB7CisgICAgICAgIGF1dG8mIHJl
bmRlcmVyID0gbV9ib3hUcmVlLnJlbmRlcmVyRm9yTGF5b3V0Qm94KGJveC5sYXlvdXRCb3goKSk7
CiAKLSAgICAgICAgaWYgKCFydW4uaXNSb290SW5saW5lQm94KCkgJiYgaXM8UmVuZGVyTGF5ZXJN
b2RlbE9iamVjdD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+
KHJlbmRlcmVyKS5oYXNTZWxmUGFpbnRpbmdMYXllcigpKQorICAgICAgICBpZiAoIWJveC5pc1Jv
b3RJbmxpbmVCb3goKSAmJiBpczxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihyZW5kZXJlcikgJiYg
ZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVyZXIpLmhhc1NlbGZQYWludGlu
Z0xheWVyKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAocnVuLmlzQXRv
bWljSW5saW5lTGV2ZWxCb3goKSkgeworICAgICAgICBpZiAoYm94LmlzQXRvbWljSW5saW5lTGV2
ZWxCb3goKSkgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLmhpdFRlc3QocmVxdWVzdCwgcmVz
dWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8gcnVuUmVjdCA9IExheW91dDo6dG9MYXlvdXRSZWN0KHJ1bi5sb2dpY2FsUmVj
dCgpKTsKLSAgICAgICAgcnVuUmVjdC5tb3ZlQnkoYWNjdW11bGF0ZWRPZmZzZXQpOworICAgICAg
ICBhdXRvIGJveFJlY3QgPSBMYXlvdXQ6OnRvTGF5b3V0UmVjdChib3gubG9naWNhbFJlY3QoKSk7
CisgICAgICAgIGJveFJlY3QubW92ZUJ5KGFjY3VtdWxhdGVkT2Zmc2V0KTsKIAotICAgICAgICBp
ZiAoIWxvY2F0aW9uSW5Db250YWluZXIuaW50ZXJzZWN0cyhydW5SZWN0KSkKKyAgICAgICAgaWYg
KCFsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMoYm94UmVjdCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICBhdXRvJiBlbGVtZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVt
ZW50PihyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikgOiAqcmVu
ZGVyZXIucGFyZW50KCk7CkBAIC01NDcsNyArNTQ3LDcgQEAgYm9vbCBMaW5lTGF5b3V0OjpoaXRU
ZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQs
IGMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgcmVuZGVyZXIudXBk
YXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRv
TGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwotICAgICAgICBpZiAocmVzdWx0LmFkZE5v
ZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQocmVuZGVyZXIubm9kZUZvckhpdFRlc3QoKSwgcmVxdWVz
dCwgbG9jYXRpb25JbkNvbnRhaW5lciwgcnVuUmVjdCkgPT0gSGl0VGVzdFByb2dyZXNzOjpTdG9w
KQorICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQocmVuZGVy
ZXIubm9kZUZvckhpdFRlc3QoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm94UmVj
dCkgPT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC01NzIsMTMgKzU3MiwxMyBAQCB2b2lkIExpbmVMYXlvdXQ6OnJlbGVhc2VDYWNo
ZXMoKQogICAgICAgICBtX2lubGluZUNvbnRlbnQtPnJlbGVhc2VDYWNoZXMoKTsKIH0KIAotdm9p
ZCBMaW5lTGF5b3V0OjpwYWludFRleHRSdW5Vc2luZ1BoeXNpY2FsQ29vcmRpbmF0ZXMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5
b3V0OjpSdW4mIHJ1bikKK3ZvaWQgTGluZUxheW91dDo6cGFpbnRUZXh0Qm94VXNpbmdQaHlzaWNh
bENvb3JkaW5hdGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgdGV4dEJveCkKIHsKLSAgICBhdXRv
JiBzdHlsZSA9IHJ1bi5zdHlsZSgpOwotICAgIGlmIChydW4uc3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKKyAgICBhdXRvJiBzdHlsZSA9IHRleHRCb3guc3R5bGUo
KTsKKyAgICBpZiAodGV4dEJveC5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiB0ZXh0Q29udGVudCA9ICpydW4u
dGV4dCgpOworICAgIGF1dG8mIHRleHRDb250ZW50ID0gKnRleHRCb3gudGV4dCgpOwogICAgIGlm
ICghdGV4dENvbnRlbnQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTg3LDcgKzU4
Nyw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnRUZXh0UnVuVXNpbmdQaHlzaWNhbENvb3JkaW5h
dGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zCiAgICAgYXV0byBwaHlzaWNhbFBhaW50T2Zm
c2V0ID0gcGFpbnRPZmZzZXQ7CiAgICAgaWYgKCFibG9ja0lzSG9yaXpvbnRhbFdyaXRpbmcpIHsK
ICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgdHJhbnNsYXRlIGlzIHJlcXVp
cmVkLgotICAgICAgICBwaHlzaWNhbFBhaW50T2Zmc2V0Lm1vdmUoeyAwLCAtcnVuLmxvZ2ljYWxS
ZWN0KCkuaGVpZ2h0KCkgfSk7CisgICAgICAgIHBoeXNpY2FsUGFpbnRPZmZzZXQubW92ZSh7IDAs
IC10ZXh0Qm94LmxvZ2ljYWxSZWN0KCkuaGVpZ2h0KCkgfSk7CiAgICAgfQogCiAgICAgYXV0byBw
aHlzaWNhbFJlY3QgPSBbJl0oY29uc3QgYXV0byYgcmVjdCkgLT4gRmxvYXRSZWN0IHsKQEAgLTU5
OSwxNCArNTk5LDE0IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnRUZXh0UnVuVXNpbmdQaHlzaWNh
bENvb3JkaW5hdGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zCiAgICAgICAgIHJldHVybiBy
ZWN0OwogICAgIH07CiAKLSAgICBhdXRvIHZpc3VhbE92ZXJmbG93UmVjdCA9IHBoeXNpY2FsUmVj
dChydW4uaW5rT3ZlcmZsb3coKSk7CisgICAgYXV0byB2aXN1YWxPdmVyZmxvd1JlY3QgPSBwaHlz
aWNhbFJlY3QodGV4dEJveC5pbmtPdmVyZmxvdygpKTsKIAogICAgIGF1dG8gZGFtYWdlZFJlY3Qg
PSBwYWludEluZm8ucmVjdDsKICAgICBkYW1hZ2VkUmVjdC5tb3ZlQnkoLXBoeXNpY2FsUGFpbnRP
ZmZzZXQpOwogICAgIGlmIChkYW1hZ2VkUmVjdC55KCkgPiB2aXN1YWxPdmVyZmxvd1JlY3QubWF4
WSgpIHx8IGRhbWFnZWRSZWN0Lm1heFkoKSA8IHZpc3VhbE92ZXJmbG93UmVjdC55KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFRleHRCb3hQYWludGVyIHBhaW50ZXIoKm1faW5saW5lQ29udGVu
dCwgcnVuLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAgICBUZXh0Qm94UGFpbnRlciBwYWlu
dGVyKCptX2lubGluZUNvbnRlbnQsIHRleHRCb3gsIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwog
ICAgIHBhaW50ZXIucGFpbnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCmlu
ZGV4IGU2NTY1NTVmMTY3MjM0MTgxZjRiODU4Y2VmNzA4YjVmYjFmNDE2Y2UuLmNiNzZiNTJmYWQx
ODNlN2M1ZjBkZjBiZTBkZjA4MzA2YmYyMzcwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIElubGluZUNvbnRlbnQmIGVu
c3VyZUlubGluZUNvbnRlbnQoKTsKICAgICB2b2lkIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMo
Y29uc3QgUmVuZGVyQm94Jik7CiAKLSAgICB2b2lkIHBhaW50VGV4dFJ1blVzaW5nUGh5c2ljYWxD
b29yZGluYXRlcyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNv
bnN0IExheW91dDo6UnVuJik7CisgICAgdm9pZCBwYWludFRleHRCb3hVc2luZ1BoeXNpY2FsQ29v
cmRpbmF0ZXMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpCb3gmKTsKIAogICAgIExheW91dDo6SW5saW5lRGFtYWdlJiBlbnN1
cmVMaW5lRGFtYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHAKaW5kZXgg
OTQzNWM1MDA0NmFmM2M1ZDYxYzM4Y2VhOTNhY2I1Mjc0Nzk1ZTllYy4uOTI0ODhhMmJjZTdmY2Ez
ODBhZTcyODIzODhhYmUwODRmZGYwMWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlv
bi5jcHAKQEAgLTEyNyw4ICsxMjcsOCBAQCBzdGF0aWMgUmVmPElubGluZUNvbnRlbnQ+IG1ha2VB
ZGp1c3RlZENvbnRlbnQoY29uc3QgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudAogICAgIGF1
dG8gYWRqdXN0ZWRMaW5lID0gWyZdKGNvbnN0IExpbmUmIGxpbmUsIGZsb2F0IG9mZnNldCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBMaW5lIHsKLSAgICAgICAgICAgIGxpbmUuZmlyc3RSdW5JbmRl
eCgpLAotICAgICAgICAgICAgbGluZS5ydW5Db3VudCgpLAorICAgICAgICAgICAgbGluZS5maXJz
dEJveEluZGV4KCksCisgICAgICAgICAgICBsaW5lLmJveENvdW50KCksCiAgICAgICAgICAgICBt
b3ZlVmVydGljYWxseSh7IEZsb2F0UG9pbnQgeyBsaW5lLmxpbmVCb3hMZWZ0KCksIGxpbmUubGlu
ZUJveFRvcCgpIH0sIEZsb2F0UG9pbnQgeyBsaW5lLmxpbmVCb3hSaWdodCgpLCBsaW5lLmxpbmVC
b3hCb3R0b20oKSB9IH0sIG9mZnNldCksCiAgICAgICAgICAgICBsaW5lLmVuY2xvc2luZ0NvbnRl
bnRUb3AoKSArIG9mZnNldCwKICAgICAgICAgICAgIGxpbmUuZW5jbG9zaW5nQ29udGVudEJvdHRv
bSgpICsgb2Zmc2V0LApAQCAtMTQwLDE2ICsxNDAsMTYgQEAgc3RhdGljIFJlZjxJbmxpbmVDb250
ZW50PiBtYWtlQWRqdXN0ZWRDb250ZW50KGNvbnN0IElubGluZUNvbnRlbnQmIGlubGluZUNvbnRl
bnQKICAgICAgICAgfTsKICAgICB9OwogCi0gICAgYXV0byBhZGp1c3RlZFJ1biA9IFsmXShjb25z
dCBMYXlvdXQ6OlJ1biYgcnVuLCBmbG9hdCBvZmZzZXQpCisgICAgYXV0byBhZGp1c3RlZEJveCA9
IFsmXShjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmIGJveCwgZmxvYXQgb2Zmc2V0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIExheW91dDo6UnVuIHsKLSAgICAgICAgICAgIHJ1bi5saW5lSW5kZXgo
KSwKLSAgICAgICAgICAgIHJ1bi50eXBlKCksCi0gICAgICAgICAgICBydW4ubGF5b3V0Qm94KCks
Ci0gICAgICAgICAgICBtb3ZlVmVydGljYWxseShydW4ubG9naWNhbFJlY3QoKSwgb2Zmc2V0KSwK
LSAgICAgICAgICAgIG1vdmVWZXJ0aWNhbGx5KHJ1bi5pbmtPdmVyZmxvdygpLCBvZmZzZXQpLAot
ICAgICAgICAgICAgcnVuLmV4cGFuc2lvbigpLAotICAgICAgICAgICAgcnVuLnRleHQoKQorICAg
ICAgICByZXR1cm4gSW5saW5lRGlzcGxheTo6Qm94IHsKKyAgICAgICAgICAgIGJveC5saW5lSW5k
ZXgoKSwKKyAgICAgICAgICAgIGJveC50eXBlKCksCisgICAgICAgICAgICBib3gubGF5b3V0Qm94
KCksCisgICAgICAgICAgICBtb3ZlVmVydGljYWxseShib3gubG9naWNhbFJlY3QoKSwgb2Zmc2V0
KSwKKyAgICAgICAgICAgIG1vdmVWZXJ0aWNhbGx5KGJveC5pbmtPdmVyZmxvdygpLCBvZmZzZXQp
LAorICAgICAgICAgICAgYm94LmV4cGFuc2lvbigpLAorICAgICAgICAgICAgYm94LnRleHQoKQog
ICAgICAgICB9OwogICAgIH07CiAKQEAgLTE1OCw4ICsxNTgsOCBAQCBzdGF0aWMgUmVmPElubGlu
ZUNvbnRlbnQ+IG1ha2VBZGp1c3RlZENvbnRlbnQoY29uc3QgSW5saW5lQ29udGVudCYgaW5saW5l
Q29udGVudAogICAgIGZvciAoc2l6ZV90IGxpbmVJbmRleCA9IDA7IGxpbmVJbmRleCA8IGlubGlu
ZUNvbnRlbnQubGluZXMuc2l6ZSgpOyArK2xpbmVJbmRleCkKICAgICAgICAgYWRqdXN0ZWRDb250
ZW50LT5saW5lcy5hcHBlbmQoYWRqdXN0ZWRMaW5lKGlubGluZUNvbnRlbnQubGluZXNbbGluZUlu
ZGV4XSwgYWRqdXN0bWVudHNbbGluZUluZGV4XSkpOwogCi0gICAgZm9yIChhdXRvJiBydW4gOiBp
bmxpbmVDb250ZW50LnJ1bnMpCi0gICAgICAgIGFkanVzdGVkQ29udGVudC0+cnVucy5hcHBlbmQo
YWRqdXN0ZWRSdW4ocnVuLCBhZGp1c3RtZW50c1tydW4ubGluZUluZGV4KCldKSk7CisgICAgZm9y
IChhdXRvJiBib3ggOiBpbmxpbmVDb250ZW50LmJveGVzKQorICAgICAgICBhZGp1c3RlZENvbnRl
bnQtPmJveGVzLmFwcGVuZChhZGp1c3RlZEJveChib3gsIGFkanVzdG1lbnRzW2JveC5saW5lSW5k
ZXgoKV0pKTsKIAogICAgIHJldHVybiBhZGp1c3RlZENvbnRlbnQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvci5jcHAKaW5kZXggOTBjNDIzMDY5OGJhZjJmMDA3MTk5ZmY1ZGQ0ZDc5
N2Y3NzRiOTg3MC4uNjAxYzkwNGMzYmUxZGQ2ZjUwNjk0YzNjN2ViZTRiMmIyZWMyYTcwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApAQCAtODYsNyArODYsNyBAQCBMaW5l
SXRlcmF0b3IgUGF0aFJ1bjo6bGluZSgpIGNvbnN0CiAgICAgfQogI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQogICAgICwgW10oY29uc3QgUnVuSXRlcmF0b3JNb2Rlcm5QYXRo
JiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBMaW5lSXRlcmF0b3IoTGluZUl0ZXJhdG9yTW9kZXJu
UGF0aCgqcGF0aC5tX2lubGluZUNvbnRlbnQsIHBhdGgucnVuKCkubGluZUluZGV4KCkpKTsKKyAg
ICAgICAgcmV0dXJuIExpbmVJdGVyYXRvcihMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKCpwYXRoLm1f
aW5saW5lQ29udGVudCwgcGF0aC5ib3goKS5saW5lSW5kZXgoKSkpOwogICAgIH0KICNlbmRpZgog
ICAgICk7CkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bkZvcihj
b25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVUZXh0Qm94KQogfQogCiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi1UZXh0UnVuSXRlcmF0b3IgdGV4dFJ1
bkZvcihjb25zdCBJbmxpbmVDb250ZW50JiBjb250ZW50LCBjb25zdCBMYXlvdXQ6OlJ1biYgcnVu
KQorVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgSW5saW5lQ29udGVudCYgY29udGVu
dCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gpCiB7Ci0gICAgcmV0dXJuIHRleHRSdW5G
b3IoY29udGVudCwgY29udGVudC5pbmRleEZvclJ1bihydW4pKTsKKyAgICByZXR1cm4gdGV4dFJ1
bkZvcihjb250ZW50LCBjb250ZW50LmluZGV4Rm9yQm94KGJveCkpOwogfQogCi1UZXh0UnVuSXRl
cmF0b3IgdGV4dFJ1bkZvcihjb25zdCBJbmxpbmVDb250ZW50JiBjb250ZW50LCBzaXplX3QgcnVu
SW5kZXgpCitUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBJbmxpbmVDb250ZW50JiBj
b250ZW50LCBzaXplX3QgYm94SW5kZXgpCiB7Ci0gICAgQVNTRVJUKGNvbnRlbnQucnVuc1tydW5J
bmRleF0udGV4dCgpKTsKLSAgICByZXR1cm4geyBSdW5JdGVyYXRvck1vZGVyblBhdGggeyBjb250
ZW50LCBydW5JbmRleCB9IH07CisgICAgQVNTRVJUKGNvbnRlbnQuYm94ZXNbYm94SW5kZXhdLnRl
eHQoKSk7CisgICAgcmV0dXJuIHsgUnVuSXRlcmF0b3JNb2Rlcm5QYXRoIHsgY29udGVudCwgYm94
SW5kZXggfSB9OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCmlu
ZGV4IGU5ODk3MDkwZTNiOWY2NjViMjY0NzY4NjQ2YWQ3NjliMDI3Yjk5ODkuLjQxMjFmZGIzNTQ5
YmE4NGZjNTQ2YmJhMTZmMzQ4NzIzODRjOWM5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRl
cmF0b3IuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgLy8gRm9yIGludGVybWVkaWF0
ZSBwb3J0aW5nIHN0ZXBzIG9ubHkuCiAgICAgY29uc3QgTGVnYWN5SW5saW5lQm94KiBsZWdhY3lJ
bmxpbmVCb3goKSBjb25zdDsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
LSAgICBjb25zdCBMYXlvdXQ6OlJ1biogaW5saW5lQm94KCkgY29uc3Q7CisgICAgY29uc3QgSW5s
aW5lRGlzcGxheTo6Qm94KiBpbmxpbmVCb3goKSBjb25zdDsKICNlbmRpZgogICAgIFJ1bkl0ZXJh
dG9yIG5leHRPbkxpbmUoKSBjb25zdDsKICAgICBSdW5JdGVyYXRvciBwcmV2aW91c09uTGluZSgp
IGNvbnN0OwpAQCAtMjEyLDcgKzIxMiw3IEBAIFRleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5G
b3IoY29uc3QgUmVuZGVyVGV4dCYpOwogVGV4dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkluVGV4
dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKIFRleHRSdW5JdGVyYXRvciB0ZXh0UnVuRm9y
KGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqKTsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKLVRleHRSdW5JdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IElubGluZUNvbnRl
bnQmLCBjb25zdCBMYXlvdXQ6OlJ1biYpOworVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5Gb3IoY29u
c3QgSW5saW5lQ29udGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYpOwogVGV4dFJ1bkl0
ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgSW5saW5lQ29udGVudCYsIHNpemVfdCBydW5JbmRleCk7
CiAjZW5kaWYKIFRleHRSdW5SYW5nZSB0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0Jik7CkBA
IC0zMDAsMTEgKzMwMCwxMSBAQCBpbmxpbmUgY29uc3QgTGVnYWN5SW5saW5lQm94KiBQYXRoUnVu
OjpsZWdhY3lJbmxpbmVCb3goKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCi1pbmxpbmUgY29uc3QgTGF5b3V0OjpSdW4qIFBhdGhSdW46OmlubGluZUJv
eCgpIGNvbnN0CitpbmxpbmUgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94KiBQYXRoUnVuOjppbmxp
bmVCb3goKSBjb25zdAogewogICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSdW5JdGVy
YXRvck1vZGVyblBhdGg+KG1fcGF0aFZhcmlhbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gJldURjo6Z2V0PFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aD4obV9wYXRoVmFyaWFu
dCkucnVuKCk7CisgICAgcmV0dXJuICZXVEY6OmdldDxSdW5JdGVyYXRvck1vZGVyblBhdGg+KG1f
cGF0aFZhcmlhbnQpLmJveCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggMjMyMzNiMDllYWMyYzM5NTUzYTY3NjIz
MmJkNWYyNzUyYTkxZGVjNC4uMmYzYWUxNzlmOGFkZDBmMzVjYzRiNTNhZmVmMTljMWRlYjc2MWRl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgK
QEAgLTQ0LDI4ICs0NCwyOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIFJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aChjb25zdCBJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50LCBzaXplX3Qgc3RhcnRJbmRl
eCkKICAgICAgICAgOiBtX2lubGluZUNvbnRlbnQoJmlubGluZUNvbnRlbnQpCi0gICAgICAgICwg
bV9ydW5JbmRleChzdGFydEluZGV4KQorICAgICAgICAsIG1fYm94SW5kZXgoc3RhcnRJbmRleCkK
ICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiAhIXJ1bigp
LnRleHQoKTsgfQorICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gISFib3goKS50ZXh0
KCk7IH0KIAotICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gcnVuKCkubG9naWNh
bFJlY3QoKTsgfQorICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gYm94KCkubG9n
aWNhbFJlY3QoKTsgfQogCiAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgYm9vbCBkaXJPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLmlzTGluZUJyZWFrKCk7
IH0KKyAgICBib29sIGlzTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gYm94KCkuaXNMaW5lQnJl
YWsoKTsgfQogCiAgICAgdW5zaWduZWQgbWluaW11bUNhcmV0T2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gaXNUZXh0KCkgPyBzdGFydCgpIDogMDsgfQogICAgIHVuc2lnbmVkIG1heGltdW1DYXJldE9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIGlzVGV4dCgpID8gZW5kKCkgOiAxOyB9CiAKICAgICB1bnNp
Z25lZCBjaGFyIGJpZGlMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIGJvb2wgaGFz
SHlwaGVuKCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dCgpLT5oYXNIeXBoZW4oKTsgfQotICAg
IFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRleHQoKS0+b3JpZ2luYWxD
b250ZW50KCk7IH0KLSAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRl
eHQoKS0+c3RhcnQoKTsgfQotICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigp
LnRleHQoKS0+ZW5kKCk7IH0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBy
dW4oKS50ZXh0KCktPmxlbmd0aCgpOyB9CisgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdCB7IHJl
dHVybiBib3goKS50ZXh0KCktPmhhc0h5cGhlbigpOyB9CisgICAgU3RyaW5nVmlldyB0ZXh0KCkg
Y29uc3QgeyByZXR1cm4gYm94KCkudGV4dCgpLT5vcmlnaW5hbENvbnRlbnQoKTsgfQorICAgIHVu
c2lnbmVkIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gYm94KCkudGV4dCgpLT5zdGFydCgpOyB9Cisg
ICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4gYm94KCkudGV4dCgpLT5lbmQoKTsgfQor
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGJveCgpLnRleHQoKS0+bGVuZ3Ro
KCk7IH0KIAogICAgIC8vIEZJWE1FOiBNYWtlIGEgc2hhcmVkIGdlbmVyaWMgdmVyc2lvbiBvZiB0
aGlzLgogICAgIGlubGluZSB1bnNpZ25lZCBvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCB4KSBjb25z
dApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAg
ICAgICBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHJ1
bigpLnN0eWxlKCkuZm9udENhc2NhZGUoKS5vZmZzZXRGb3JQb3NpdGlvbihjcmVhdGVUZXh0UnVu
KEh5cGhlbk1vZGU6Oklnbm9yZSksIGxvY2FsWCwgaW5jbHVkZVBhcnRpYWxHbHlwaHMpOworICAg
ICAgICByZXR1cm4gYm94KCkuc3R5bGUoKS5mb250Q2FzY2FkZSgpLm9mZnNldEZvclBvc2l0aW9u
KGNyZWF0ZVRleHRSdW4oSHlwaGVuTW9kZTo6SWdub3JlKSwgbG9jYWxYLCBpbmNsdWRlUGFydGlh
bEdseXBocyk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IE1ha2UgYSBzaGFyZWQgZ2VuZXJpYyB2
ZXJzaW9uIG9mIHRoaXMuCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgICAgICBMYXlv
dXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KHJlY3QoKS54KCksIDAsIDAsIDApOwog
ICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGU6Oklnbm9y
ZSk7Ci0gICAgICAgIHJ1bigpLnN0eWxlKCkuZm9udENhc2NhZGUoKS5hZGp1c3RTZWxlY3Rpb25S
ZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCAwLCBlbmRPZmZzZXQpOworICAgICAg
ICBib3goKS5zdHlsZSgpLmZvbnRDYXNjYWRlKCkuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQo
dGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgZW5kT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCBy
ZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSku
bWF4WCgpOwogICAgIH0KIApAQCAtMTA1LDggKzEwNSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHsKICAgICAgICAgICAgIHN0YXJ0KCksCiAgICAgICAgICAgICBsZW5ndGgoKSwKLSAgICAg
ICAgICAgIHJ1bigpLnRleHQoKS0+aGFzSHlwaGVuKCkgPyBydW4oKS5zdHlsZSgpLmh5cGhlblN0
cmluZygpLmxlbmd0aCgpIDogMCwKLSAgICAgICAgICAgIHJ1bigpLmlzTGluZUJyZWFrKCkKKyAg
ICAgICAgICAgIGJveCgpLnRleHQoKS0+aGFzSHlwaGVuKCkgPyBib3goKS5zdHlsZSgpLmh5cGhl
blN0cmluZygpLmxlbmd0aCgpIDogMCwKKyAgICAgICAgICAgIGJveCgpLmlzTGluZUJyZWFrKCkK
ICAgICAgICAgfTsKICAgICB9CiAKQEAgLTExNywyMiArMTE3LDIyIEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIG1faW5saW5lQ29udGVudC0+cmVuZGVyZXJGb3JMYXlvdXRCb3gocnVuKCkubGF5b3V0Qm94
KCkpOworICAgICAgICByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJv
eChib3goKS5sYXlvdXRCb3goKSk7CiAgICAgfQogCiAgICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0
UnVuKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgICAgIEFTU0VSVChy
dW4oKS50ZXh0KCkpOworICAgICAgICBBU1NFUlQoYm94KCkudGV4dCgpKTsKIAotICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSBydW4oKS5sYXlvdXRCb3goKTsKKyAgICAgICAgYXV0byYgbGF5b3V0
Qm94ID0gYm94KCkubGF5b3V0Qm94KCk7CiAKICAgICAgICAgdHJhdmVyc2VOZXh0TGVhZigpOwog
Ci0gICAgICAgIGlmICghYXRFbmQoKSAmJiAmbGF5b3V0Qm94ICE9ICZydW4oKS5sYXlvdXRCb3go
KSkKKyAgICAgICAgaWYgKCFhdEVuZCgpICYmICZsYXlvdXRCb3ggIT0gJmJveCgpLmxheW91dEJv
eCgpKQogICAgICAgICAgICAgc2V0QXRFbmQoKTsKIAotICAgICAgICBBU1NFUlQoYXRFbmQoKSB8
fCBydW4oKS50ZXh0KCkpOworICAgICAgICBBU1NFUlQoYXRFbmQoKSB8fCBib3goKS50ZXh0KCkp
OwogICAgIH0KIAogICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCkKQEAg
LTE0NSwxMSArMTQ1LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghYXRFbmQo
KSk7CiAKLSAgICAgICAgYXV0byBvbGRMaW5lSW5kZXggPSBydW4oKS5saW5lSW5kZXgoKTsKKyAg
ICAgICAgYXV0byBvbGRMaW5lSW5kZXggPSBib3goKS5saW5lSW5kZXgoKTsKIAogICAgICAgICB0
cmF2ZXJzZU5leHRMZWFmKCk7CiAKLSAgICAgICAgaWYgKCFhdEVuZCgpICYmIG9sZExpbmVJbmRl
eCAhPSBydW4oKS5saW5lSW5kZXgoKSkKKyAgICAgICAgaWYgKCFhdEVuZCgpICYmIG9sZExpbmVJ
bmRleCAhPSBib3goKS5saW5lSW5kZXgoKSkKICAgICAgICAgICAgIHNldEF0RW5kKCk7CiAgICAg
fQogCkBAIC0xNTcsMTEgKzE1NywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQo
IWF0RW5kKCkpOwogCi0gICAgICAgIGF1dG8gb2xkTGluZUluZGV4ID0gcnVuKCkubGluZUluZGV4
KCk7CisgICAgICAgIGF1dG8gb2xkTGluZUluZGV4ID0gYm94KCkubGluZUluZGV4KCk7CiAKICAg
ICAgICAgdHJhdmVyc2VQcmV2aW91c0xlYWYoKTsKIAotICAgICAgICBpZiAoIWF0RW5kKCkgJiYg
b2xkTGluZUluZGV4ICE9IHJ1bigpLmxpbmVJbmRleCgpKQorICAgICAgICBpZiAoIWF0RW5kKCkg
JiYgb2xkTGluZUluZGV4ICE9IGJveCgpLmxpbmVJbmRleCgpKQogICAgICAgICAgICAgc2V0QXRF
bmQoKTsKICAgICB9CiAKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgdHJh
dmVyc2VQcmV2aW91c09uTGluZSgpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBSdW5JdGVyYXRvck1vZGVyblBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNv
bnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50ICYmIG1fcnVuSW5kZXggPT0gb3RoZXIubV9y
dW5JbmRleDsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSdW5JdGVyYXRvck1vZGVyblBh
dGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxp
bmVDb250ZW50ICYmIG1fYm94SW5kZXggPT0gb3RoZXIubV9ib3hJbmRleDsgfQogCi0gICAgYm9v
bCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuSW5kZXggPT0gcnVucygpLnNpemUoKTsgfQot
ICAgIGNvbnN0IExheW91dDo6UnVuJiBydW4oKSBjb25zdCB7IHJldHVybiBydW5zKClbbV9ydW5J
bmRleF07IH0KKyAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9ib3hJbmRleCA9PSBi
b3hlcygpLnNpemUoKTsgfQorICAgIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgYm94KCkgY29u
c3QgeyByZXR1cm4gYm94ZXMoKVttX2JveEluZGV4XTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOwpAQCAtMTg5LDI4ICsxODksMjggQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7CiAgICAgICAgIGRvIHsKLSAg
ICAgICAgICAgICsrbV9ydW5JbmRleDsKLSAgICAgICAgfSB3aGlsZSAoIWF0RW5kKCkgJiYgcnVu
KCkuaXNJbmxpbmVCb3goKSk7CisgICAgICAgICAgICArK21fYm94SW5kZXg7CisgICAgICAgIH0g
d2hpbGUgKCFhdEVuZCgpICYmIGJveCgpLmlzSW5saW5lQm94KCkpOwogICAgIH0KIAogICAgIHZv
aWQgdHJhdmVyc2VQcmV2aW91c0xlYWYoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFhdEVuZCgp
KTsKICAgICAgICAgZG8gewotICAgICAgICAgICAgbV9ydW5JbmRleCA9IG1fcnVuSW5kZXggPyBt
X3J1bkluZGV4IC0gMSA6IHJ1bnMoKS5zaXplKCk7Ci0gICAgICAgIH0gd2hpbGUgKCFhdEVuZCgp
ICYmIHJ1bigpLmlzSW5saW5lQm94KCkpOworICAgICAgICAgICAgbV9ib3hJbmRleCA9IG1fYm94
SW5kZXggPyBtX2JveEluZGV4IC0gMSA6IGJveGVzKCkuc2l6ZSgpOworICAgICAgICB9IHdoaWxl
ICghYXRFbmQoKSAmJiBib3goKS5pc0lubGluZUJveCgpKTsKICAgICB9CiAKLSAgICB2b2lkIHNl
dEF0RW5kKCkgeyBtX3J1bkluZGV4ID0gcnVucygpLnNpemUoKTsgfQorICAgIHZvaWQgc2V0QXRF
bmQoKSB7IG1fYm94SW5kZXggPSBib3hlcygpLnNpemUoKTsgfQogCi0gICAgY29uc3QgSW5saW5l
Q29udGVudDo6UnVucyYgcnVucygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+cnVu
czsgfQotICAgIGNvbnN0IExpbmUmIGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRl
bnQtPmxpbmVGb3JSdW4ocnVuKCkpOyB9CisgICAgY29uc3QgSW5saW5lQ29udGVudDo6Qm94ZXMm
IGJveGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5ib3hlczsgfQorICAgIGNv
bnN0IExpbmUmIGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmxpbmVGb3JC
b3goYm94KCkpOyB9CiAKICAgICBlbnVtIGNsYXNzIEh5cGhlbk1vZGUgeyBJbmNsdWRlLCBJZ25v
cmUgfTsKICAgICBUZXh0UnVuIGNyZWF0ZVRleHRSdW4oSHlwaGVuTW9kZSBoeXBoZW5Nb2RlKSBj
b25zdAogICAgIHsKLSAgICAgICAgYXV0byYgc3R5bGUgPSBydW4oKS5zdHlsZSgpOwotICAgICAg
ICBhdXRvIGV4cGFuc2lvbiA9IHJ1bigpLmV4cGFuc2lvbigpOworICAgICAgICBhdXRvJiBzdHls
ZSA9IGJveCgpLnN0eWxlKCk7CisgICAgICAgIGF1dG8gZXhwYW5zaW9uID0gYm94KCkuZXhwYW5z
aW9uKCk7CiAgICAgICAgIGF1dG8gcmVjdCA9IHRoaXMtPnJlY3QoKTsKICAgICAgICAgYXV0byB4
UG9zID0gcmVjdC54KCkgLSAobGluZSgpLmxpbmVCb3hMZWZ0KCkgKyBsaW5lKCkuY29udGVudExl
ZnQoKSk7CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBSZWZQ
dHI8Y29uc3QgSW5saW5lQ29udGVudD4gbV9pbmxpbmVDb250ZW50OwotICAgIHNpemVfdCBtX3J1
bkluZGV4IHsgMCB9OworICAgIHNpemVfdCBtX2JveEluZGV4IHsgMCB9OwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwCmluZGV4IDQyYjczMjJiNDhkNTQ3OTQyNTVhZjRhOGRmOGRlMzE1MWI3NDA3OTYuLjVh
Y2I3YjM3Yzk1NzkzZDQ5OTdjZDQzNTRmZmNlZWM2YzBkNWVhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAg
LTM4NSw3ICszODUsNyBAQCB2b2lkIHNob3dJbmxpbmVUcmVlQW5kUnVucyhUZXh0U3RyZWFtJiBz
dHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgYwogewogICAgIGF1dG8mIGlu
bGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvcklubGlu
ZUZvcm1hdHRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdSb290KTsKICAgICBhdXRvJiBsaW5l
cyA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpOwotICAgIGF1dG8mIHJ1bnMgPSBpbmxp
bmVGb3JtYXR0aW5nU3RhdGUucnVucygpOworICAgIGF1dG8mIGJveGVzID0gaW5saW5lRm9ybWF0
dGluZ1N0YXRlLmJveGVzKCk7CiAKICAgICBmb3IgKHNpemVfdCBsaW5lSW5kZXggPSAwOyBsaW5l
SW5kZXggPCBsaW5lcy5zaXplKCk7ICsrbGluZUluZGV4KSB7CiAgICAgICAgIGF1dG8gYWRkU3Bh
Y2luZyA9IFsmXSB7CkBAIC00MDYsMTEgKzQwNiwxMSBAQCB2b2lkIHNob3dJbmxpbmVUcmVlQW5k
UnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
YwogICAgICAgICBzdHJlYW0gPDwgIiAgSW5saW5lIGxldmVsIGJveGVzOiI7CiAgICAgICAgIHN0
cmVhbS5uZXh0TGluZSgpOwogCi0gICAgICAgIGF1dG8gb3V0cHV0SW5saW5lTGV2ZWxCb3ggPSBb
Jl0oY29uc3QgYXV0byYgaW5saW5lTGV2ZWxCb3hSdW4pIHsKKyAgICAgICAgYXV0byBvdXRwdXRJ
bmxpbmVMZXZlbEJveCA9IFsmXShjb25zdCBhdXRvJiBpbmxpbmVMZXZlbEJveCkgewogICAgICAg
ICAgICAgYWRkU3BhY2luZygpOwogICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgIjsKLSAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFJlY3QgPSBpbmxpbmVMZXZlbEJveFJ1bi5sb2dpY2FsUmVjdCgp
OwotICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3hSdW4ubGF5b3V0
Qm94KCk7CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gaW5saW5lTGV2ZWxCb3gubG9n
aWNhbFJlY3QoKTsKKyAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVsQm94
LmxheW91dEJveCgpOwogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc0F0b21pY0lubGluZUxl
dmVsQm94KCkpCiAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJBdG9taWMgaW5saW5lIGxldmVs
IGJveCI7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSkK
QEAgLTQyNCwyOSArNDI0LDI5IEBAIHZvaWQgc2hvd0lubGluZVRyZWVBbmRSdW5zKFRleHRTdHJl
YW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjCiAgICAgICAgICAg
ICAgICAgPDwgIiBzaXplICgiIDw8IGxvZ2ljYWxSZWN0LndpZHRoKCkgPDwgIngiIDw8IGxvZ2lj
YWxSZWN0LmhlaWdodCgpIDw8ICIpIjsKICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwog
ICAgICAgICB9OwotICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IHJ1bnMpIHsKLSAgICAgICAgICAg
IGlmIChydW4ubGluZUluZGV4KCkgIT0gbGluZUluZGV4KQorICAgICAgICBmb3IgKGF1dG8mIGJv
eCA6IGJveGVzKSB7CisgICAgICAgICAgICBpZiAoYm94LmxpbmVJbmRleCgpICE9IGxpbmVJbmRl
eCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghcnVuLmxheW91
dEJveCgpLmlzSW5saW5lTGV2ZWxCb3goKSkKKyAgICAgICAgICAgIGlmICghYm94LmxheW91dEJv
eCgpLmlzSW5saW5lTGV2ZWxCb3goKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIG91dHB1dElubGluZUxldmVsQm94KHJ1bik7CisgICAgICAgICAgICBvdXRwdXRJbmxp
bmVMZXZlbEJveChib3gpOwogICAgICAgICB9CiAKICAgICAgICAgYWRkU3BhY2luZygpOwogICAg
ICAgICBzdHJlYW0gPDwgIiAgUnVuczoiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKLSAg
ICAgICAgZm9yIChhdXRvJiBydW4gOiBydW5zKSB7Ci0gICAgICAgICAgICBpZiAocnVuLmxpbmVJ
bmRleCgpICE9IGxpbmVJbmRleCkKKyAgICAgICAgZm9yIChhdXRvJiBib3ggOiBib3hlcykgewor
ICAgICAgICAgICAgaWYgKGJveC5saW5lSW5kZXgoKSAhPSBsaW5lSW5kZXgpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhZGRTcGFjaW5nKCk7CiAgICAgICAgICAgICBz
dHJlYW0gPDwgIiAgICAiOwotICAgICAgICAgICAgaWYgKHJ1bi50ZXh0KCkpCi0gICAgICAgICAg
ICAgICAgc3RyZWFtIDw8ICJ0ZXh0IHJ1biI7CisgICAgICAgICAgICBpZiAoYm94LnRleHQoKSkK
KyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgInRleHQgYm94IjsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBzdHJlYW0gPDwgImJveCBydW4iOwotICAgICAgICAgICAgc3RyZWFt
IDw8ICIgYXQgKCIgPDwgcnVuLmxvZ2ljYWxMZWZ0KCkgPDwgIiwiIDw8IHJ1bi5sb2dpY2FsVG9w
KCkgPDwgIikgc2l6ZSAiIDw8IHJ1bi5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgcnVuLmxvZ2lj
YWxIZWlnaHQoKTsKLSAgICAgICAgICAgIGlmIChydW4udGV4dCgpKQotICAgICAgICAgICAgICAg
IHN0cmVhbSA8PCAiIHJ1bigiIDw8IHJ1bi50ZXh0KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBydW4u
dGV4dCgpLT5lbmQoKSA8PCAiKSI7CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJib3ggYm94
IjsKKyAgICAgICAgICAgIHN0cmVhbSA8PCAiIGF0ICgiIDw8IGJveC5sb2dpY2FsTGVmdCgpIDw8
ICIsIiA8PCBib3gubG9naWNhbFRvcCgpIDw8ICIpIHNpemUgIiA8PCBib3gubG9naWNhbFdpZHRo
KCkgPDwgIngiIDw8IGJveC5sb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBpZiAoYm94LnRl
eHQoKSkKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIiBib3goIiA8PCBib3gudGV4dCgpLT5z
dGFydCgpIDw8ICIsICIgPDwgYm94LnRleHQoKS0+ZW5kKCkgPDwgIikiOwogICAgICAgICAgICAg
c3RyZWFtLm5leHRMaW5lKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0Qm94UGFpbnRlci5jcHAKaW5kZXggMWE3YTkxZDRiODZhNTVmM2YzY2ZkMjlkOGE5Zjg5
Mjk2MGU1NjU1Zi4uOWJhYTE2ZDY2Yjc3NzhiODQ3NjA2ZWY1YzYyM2U4YjVlYjI3ZTVjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC01MCw4ICs1
MCw4IEBAIFRleHRCb3hQYWludGVyOjpUZXh0Qm94UGFpbnRlcihjb25zdCBMZWdhY3lJbmxpbmVU
ZXh0Qm94JiB0ZXh0Qm94LCBQYWludEluZm8mIHBhCiB9CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCkKLVRleHRCb3hQYWludGVyOjpUZXh0Qm94UGFpbnRlcihjb25zdCBM
YXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgY29uc3QgTGF5
b3V0OjpSdW4mIHJ1biwgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKLSAgICA6IFRleHRCb3hQYWludGVyKExheW91dEludGVncmF0aW9uOjp0ZXh0
UnVuRm9yKGlubGluZUNvbnRlbnQsIHJ1biksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpCitUZXh0
Qm94UGFpbnRlcjo6VGV4dEJveFBhaW50ZXIoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGlu
ZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgYm94LCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQorICAg
IDogVGV4dEJveFBhaW50ZXIoTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5Gb3IoaW5saW5lQ29u
dGVudCwgYm94KSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCkKIHsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaAppbmRleCAxMmFhMjA2NjkxMTE2ODAx
Njg2MWZlZWVhYjljMjFkMWYzNGE5ZTAwLi40NzAxZWZjNTRhYjgyMGYxOTZmNWU1OGNlODQ1YjVm
MDUwZDBhZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBh
aW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaApA
QCAtNDgsNyArNDgsNyBAQCBjbGFzcyBUZXh0Qm94UGFpbnRlciB7CiBwdWJsaWM6CiAgICAgVGV4
dEJveFBhaW50ZXIoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCYsIFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCk7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCi0gICAgVGV4dEJveFBhaW50ZXIoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246Oklu
bGluZUNvbnRlbnQmLCBjb25zdCBMYXlvdXQ6OlJ1biYsIFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCk7CisgICAgVGV4dEJveFBhaW50ZXIoY29uc3QgTGF5b3V0SW50
ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmLCBQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpOwogI2VuZGlmCiAgICAgflRl
eHRCb3hQYWludGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3Bw
CmluZGV4IDgxYWE4ZGE3MDYxZDUwMWYzYTFlZTNkZDkzZWIzZGVmYjJkYWJkOTUuLjQ5ZGJiYTBm
ZDc3Yzk3NTJmYmYyNDEyNzU5OGI1NDQxMGIwMDQxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludGVyLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6
OmNsZWFyR2x5cGhEaXNwbGF5TGlzdHMoKQogICAgIEdseXBoRGlzcGxheUxpc3RDYWNoZTxMZWdh
Y3lJbmxpbmVUZXh0Qm94Pjo6c2luZ2xldG9uKCkuY2xlYXIoKTsKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCgp
KQotICAgICAgICBHbHlwaERpc3BsYXlMaXN0Q2FjaGU8TGF5b3V0OjpSdW4+OjpzaW5nbGV0b24o
KS5jbGVhcigpOworICAgICAgICBHbHlwaERpc3BsYXlMaXN0Q2FjaGU8SW5saW5lRGlzcGxheTo6
Qm94Pjo6c2luZ2xldG9uKCkuY2xlYXIoKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438983</attachid>
            <date>2021-09-22 16:00:19 -0700</date>
            <delta_ts>2021-09-23 06:32:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230643-20210922160018.patch</filename>
            <type>text/plain</type>
            <size>122238</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTVjNjZhYjkzZjFmYmQz
ZTZlOTFhMzBlNGVjMDMwMWIwMTg2NDdlOC4uNjA5MTllNWQ5NzE2YWIwZGIzM2MyM2M1ZTM2ZDJm
MzMyOWJkZDlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAyMS0wOS0yMiAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIExh
eW91dDo6UnVuIHVuZGVyIElubGluZURpc3BsYXkgYW5kIHJlbmFtZSBpdCB0byBCb3gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGZyYWdtZW50
cyBvZiBpbmxpbmUgY29udGVudCBzaG91bGQgYmUgY29uc2lkZXJlZCBydW5zIG9ubHkgdXAgdG8g
dGhlIHBvaW50IHdoZXJlIHdlIGZpbmlzaGVkIGJyZWFraW5nIHRoZSBsaW5lLiBTb29uIGFmdGVy
IHRoZXkgZ2FpbiBob3Jpem9udGFsIChhbmQgbGF0ZXIgdmVydGljYWwpIGdlb21ldHJpZXMsIHdl
CisgICAgICAgIHNob3VsZCBjYWxsIHRoZW0gYm94ZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmJ1aWxk
SW5saW5lRGlzcGxheVRyZWUpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveEZhY3Rvcnk6OmRpc3BsYXlC
b3hGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFj
dG9yeS5oOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OlRleHRCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6bV90ZXh0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VGV4dEJveDo6ZXhwYW5zaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OnRleHQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9WZXJpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpv
dXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlQm94ZXNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRl
R2VvbWV0cnlGb3JMaW5lQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21l
dHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxv
d0ZvcklubGluZUJveFJ1bnMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZs
b3dDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVGb3JtYXR0aW5nU3Rh
dGUpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nU3RhdGU6OmxpbmVCb3hlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdTdGF0ZTo6YWRkTGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6Ym94ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmJveGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRCb3hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJMaW5lQW5kQm94ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNocmlu
a1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRl
OjpydW5zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ1N0YXRlOjpydW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRSdW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpjbGVhckxpbmVBbmRSdW5zKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6ZXhwYW5zaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjpzZXRFeHBhbnNp
b24pOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lTGluZVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94Ojps
b2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6
Omlua092ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJv
eDo6bG9naWNhbFRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpC
b3g6OmxvZ2ljYWxCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRGlzcGxh
eTo6Qm94Ojpsb2dpY2FsTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNw
bGF5OjpCb3g6OmxvZ2ljYWxSaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVE
aXNwbGF5OjpCb3g6OmxvZ2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVEaXNwbGF5OjpCb3g6OmxvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRGlzcGxheTo6Qm94Ojptb3ZlVmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVEaXNwbGF5OjpCb3g6OmFkanVzdElua092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6bGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZURpc3Bs
YXk6OkJveDo6VGV4dDo6VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4
dDo6c3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OlRleHQ6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6VGV4dDo6bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UnVuOjpUZXh0OjpvcmlnaW5hbENvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSdW46OlRleHQ6OnJlbmRlcmVkQ29udGVudCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4dDo6aGFzSHlwaGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppc1RleHQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmlzU29mdExpbmVCcmVh
ayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNMaW5l
QnJlYWtCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OmlzTGluZUJyZWFrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
UnVuOjppc0F0b21pY0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6UnVuOjppc0lubGluZUJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNOb25Sb290SW5saW5lQm94IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppc1Jvb3RJbmxpbmVCb3ggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmlzR2VuZXJpY0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
Ojppc0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6UnVuOjppc05vblJvb3RJbmxpbmVMZXZlbEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6dHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aGFzQ29udGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFJlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46Omlua092ZXJmbG93IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsVG9wIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsQm90dG9tIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsTGVmdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFJp
Z2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dp
Y2FsV2lkdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OmxvZ2ljYWxIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpSdW46Om1vdmVWZXJ0aWNhbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UnVuOjphZGp1c3RJbmtPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlJ1bjo6dGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6dGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6
ZXhwYW5zaW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
OjpsYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OnN0eWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
OjpsaW5lSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OlJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4dDo6
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJs
ZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yQ2VsbHMpOgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6Omhh
c0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dDo6fklubGluZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OklubGluZUNvbnRlbnQ6OmluZGV4Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpmaXJzdEJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudDo6
Zmlyc3RCb3hJbmRleEZvckxheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudDo6bm9uUm9vdElubGluZUJveEluZGV4ZXNGb3JM
YXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Oklu
bGluZUNvbnRlbnQ6OnJlbGVhc2VDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjppbmRleEZvclJ1biBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dDo6Zmlyc3RSdW5Gb3JMYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OmZpcnN0UnVuSW5kZXhGb3JMYXlv
dXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpsaW5lRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50Ojp0cmF2ZXJzZU5vblJvb3RJ
bmxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudDo6bGluZUZvclJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnRCdWlsZGVyOjpi
dWlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmU6OkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmU6OmZpcnN0Qm94SW5kZXggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmU6OmJveENvdW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lOjpmaXJzdFJ1bkluZGV4IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lOjpydW5D
b3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmZpcnN0UnVuIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JNb2Rl
cm5QYXRoOjpsYXN0UnVuIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnRleHRSdW5zRm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpydW5Gb3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmZpcnN0SW5saW5l
Qm94UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUxheW91dDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVMYXlvdXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OnBhaW50VGV4dEJveFVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnRUZXh0UnVu
VXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6bWFrZUFkanVzdGVkQ29udGVudCk6CisgICAgICAg
ICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46OmxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5Gb3IpOgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aFJ1bjo6aW5saW5lQm94
IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvck1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpp
c1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aDo6cmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjppc0xpbmVCcmVhayBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRo
OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpzdGFydCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRo
OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6Om9mZnNldEZvclBvc2l0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1v
ZGVyblBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnNlbGVjdGFibGVSYW5nZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JN
b2Rlcm5QYXRoOjpyZW5kZXJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6
OnRyYXZlcnNlTmV4dE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aDo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6Ym94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnRy
YXZlcnNlTmV4dExlYWYpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VQcmV2aW91c0xlYWYpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6c2V0QXRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aDo6Ym94ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpjcmVhdGVUZXh0UnVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1v
ZGVyblBhdGg6OnJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpydW5zIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OnNob3dJbmxpbmVUcmVlQW5kUnVucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQ
YWludGVyOjpUZXh0Qm94UGFpbnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRCb3hQYWlu
dGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKToKKwogMjAyMS0wOS0y
MiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBN
b3ZlIExpbmVHZW9tZXRyeSB1bmRlciBJbmxpbmVEaXNwbGF5IG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc5ODVm
NDMxYTk4MGQ5M2E3OTAyOWFhYzhhYWFjNjJiNDU5MDdjNDkuLmFjYTE4ZWJiMGM4MGMzMDM0OGM1
ZWU4OTg1ZGM4ZTNmYTMwMWMyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyMTksNyArMjIxOSw3IEBACiAJCTZGQjVFMjE0
MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjVFMjEyMjIxRjI0NDcwMDM5ODlD
RiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkI3RDJERDI1MEZEODI4MDAwMjA3QUEgLyogRmxleEZv
cm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RkI3RDJEOTI1MEZEN0ZDMDAwMjA3QUEgLyogRmxleEZvcm1hdHRpbmdDb250ZXh0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZC
N0QyREUyNTBGRDgyRTAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nU3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjdEMkRBMjUwRkQ3RkMwMDAy
MDdBQSAvKiBGbGV4Rm9ybWF0dGluZ1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVBIC8qIElubGlu
ZUxpbmVSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkZDM0Y5NDcyNTE2NzU2NzAw
QTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVEaXNw
bGF5Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNkZDQkRCOTcyNjVERjJDODAwMjFFQTdCIC8qIExheW91dENvbnRhaW5pbmdCbG9ja0NoYWlu
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGQ0JEQjk1MjY1REYyQzcwMDIxRUE3QiAvKiBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNkZEMDk1NDMyNTExMTUyMjAwOTg4NzdEIC8qIExheW91dEdlb21ldHJ5UmVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZEMDk1NDEyNTExMTUy
MjAwOTg4NzdEIC8qIExheW91dEdlb21ldHJ5UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJ
bmxpbmVDb250ZW50QnJlYWtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUNvbnRlbnRCcmVh
a2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTEwMjQwLDcgKzEwMjQwLDcgQEAKIAkJNkZCN0QyRDkyNTBGRDdGQzAwMDIwN0FBIC8qIEZsZXhG
b3JtYXR0aW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbGV4
Rm9ybWF0dGluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCN0Qy
REEyNTBGRDdGQzAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmxleEZvcm1hdHRpbmdTdGF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RkJCODYwNTIwQjQ2NEI2MDBEQUQ5MzggLyogRm9ybWF0dGluZ0dl
b21ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdHRpbmdHZW9tZXRyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJ
bmxpbmVMaW5lUnVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUxp
bmVSdW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkZDM0Y5NDUyNTE2NzU2NjAw
QTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5saW5lRGlzcGxheUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RkM1M0FFQjI0QUY3QThFMDA2MDU5RkUgLyogVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZGQzVDQTkyMjJFMzU5OTMwMEIxM0UxMSAvKiBUYWJsZUZvcm1hdHRp
bmdTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQzVDQTk0MjJFMzU5OTQwMEIxM0UxMSAv
KiBUYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgzMzQs
OCArMTgzMzQsOCBAQAogCQkxMUExRTZGQjI2RkJCNkNFMDA0MzVEMzYgLyogZGlzcGxheSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNkZDM0Y5NDUyNTE2
NzU2NjAwQTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCAqLywKIAkJCQk2RjkxNDIwRjI1MTUy
MTM3MDA0RTRGRUEgLyogSW5saW5lRGlzcGxheUxpbmUuaCAqLywKLQkJCQk2RkMzRjk0NTI1MTY3
NTY2MDBBNDlCRUEgLyogSW5saW5lTGluZVJ1bi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkaXNw
bGF5OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMyOTI5LDcgKzMyOTI5LDkgQEAK
IAkJCQlFMzA1OTI2NDFFMjdBM0FEMDBENTdDOTggLyogSW5saW5lQ2xhc3NpY1NjcmlwdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkZFMTk4MTcyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUNvbnRl
bnRCcmVha2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTFGQTFDODI2RjBGMzBGMDAzQjhGMTYg
LyogSW5saW5lRGFtYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RkMzRjk0NzI1MTY3NTY3MDBB
NDlCRUEgLyogSW5saW5lRGlzcGxheUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTE1MTNEMDMy
NkQ5ODFFODAwNEQzRkFBIC8qIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNkY5MTQyMTEyNTE1MjEzODAwNEU0RkVBIC8qIElubGluZURpc3BsYXlMaW5l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjdDQTNDQTIwOEMyQjJFMDAyRjI5QUIgLyogSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3QzRENTdEMjY1MDhCQ0Iw
MEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZGRTYzNkU4MjY0Nzk2MjkwMEYwOTUxRSAvKiBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmggaW4g
SGVhZGVycyAqLywKQEAgLTMyOTQzLDggKzMyOTQ1LDYgQEAKIAkJCQkxMUMzMjI3RDI2RDk1OENF
MDAzMjhGNEQgLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZG
NkVFNzQzMjZENDRFRTMwMDM3NENEQSAvKiBJbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2RTIgLyogSW5saW5lTGlu
ZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGOTE0MjExMjUxNTIxMzgwMDRFNEZFQSAv
KiBJbmxpbmVEaXNwbGF5TGluZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkZDM0Y5NDcyNTE2NzU2
NzAwQTQ5QkVBIC8qIElubGluZUxpbmVSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NTc3NUNF
MjQxNDM3RDUwMDJERjFBMCAvKiBJbmxpbmVQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NkY0MERBODIyNTEzMDMzQTAwRUMwNEI3IC8qIElubGluZVJlY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0RDMzRjNCMjUyQUVFQ0QwMDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJl
ZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIu
Y3BwCmluZGV4IGE1ZTg4ZTI0MWU5M2I2NTY5MjMwMTY4NmJjNzdlMDRjNTJlYmI4NjQuLmM3ZWZk
NjhkZGI4ZDBiMzA0NmE5ZjQ0OWU2OWYwYmFlZWRlYzc5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKQEAgLTMwNSwzMSArMzA1LDMxIEBAIHZv
aWQgVHJlZUJ1aWxkZXI6OmJ1aWxkSW5saW5lRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsCiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRl
ID0gbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9ySW5saW5lRm9ybWF0dGluZ0NvbnRleHQo
aW5saW5lRm9ybWF0dGluZ1Jvb3QpOwogCi0gICAgZm9yIChhdXRvJiBydW4gOiBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUucnVucygpKSB7Ci0gICAgICAgIGlmIChydW4uaXNSb290SW5saW5lQm94KCkp
IHsKKyAgICBmb3IgKGF1dG8mIGJveCA6IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5ib3hlcygpKSB7
CisgICAgICAgIGlmIChib3guaXNSb290SW5saW5lQm94KCkpIHsKICAgICAgICAgICAgIC8vIE5v
dCBzdXBwb3J0ZWQgeWV0LgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAocnVuLnRleHQoKSkgewotICAgICAgICAgICAgYXV0byYgbGluZUdlb21ldHJ5ID0g
aW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKCkuYXQocnVuLmxpbmVJbmRleCgpKTsKLSAgICAg
ICAgICAgIGF1dG8gdGV4dEJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94Rm9yVGV4dFJ1bihy
dW4sIGxpbmVHZW9tZXRyeSwgcG9zaXRpb25pbmdDb250ZXh0KCkuaW5GbG93Q29udGFpbmluZ0Js
b2NrQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKGJveC50ZXh0KCkpIHsKKyAgICAgICAgICAgIGF1
dG8mIGxpbmVHZW9tZXRyeSA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLmF0KGJveC5s
aW5lSW5kZXgoKSk7CisgICAgICAgICAgICBhdXRvIHRleHRCb3ggPSBtX2JveEZhY3RvcnkuZGlz
cGxheUJveEZvclRleHRSdW4oYm94LCBsaW5lR2VvbWV0cnksIHBvc2l0aW9uaW5nQ29udGV4dCgp
LmluRmxvd0NvbnRhaW5pbmdCbG9ja0NvbnRleHQoKSk7CiAgICAgICAgICAgICBpbnNlcnQoV1RG
TW92ZSh0ZXh0Qm94KSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogICAgICAgICAgICAgYWNjb3VudEZv
ckJveFBhaW50aW5nRXh0ZW50KCppbnNlcnRpb25Qb3NpdGlvbi5jdXJyZW50Q2hpbGQpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXM8TGF5b3V0OjpD
b250YWluZXJCb3g+KHJ1bi5sYXlvdXRCb3goKSkpIHsKLSAgICAgICAgICAgIHJlY3Vyc2l2ZUJ1
aWxkRGlzcGxheVRyZWUobGF5b3V0U3RhdGUsIHJ1bi5sYXlvdXRCb3goKSwgaW5zZXJ0aW9uUG9z
aXRpb24pOworICAgICAgICBpZiAoaXM8TGF5b3V0OjpDb250YWluZXJCb3g+KGJveC5sYXlvdXRC
b3goKSkpIHsKKyAgICAgICAgICAgIHJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUobGF5b3V0U3Rh
dGUsIGJveC5sYXlvdXRCb3goKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCBmb3Igd2Vi
a2l0Lm9yZ2IvYi8yMTkzMzUuCi0gICAgICAgIGlmIChydW4ubGF5b3V0Qm94KCkuaXNMaW5lQnJl
YWtCb3goKSAmJiBydW4ubGF5b3V0Qm94KCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAg
ICAgIGlmIChib3gubGF5b3V0Qm94KCkuaXNMaW5lQnJlYWtCb3goKSAmJiBib3gubGF5b3V0Qm94
KCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBhdXRvIGdlb21ldHJ5ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gocnVuLmxheW91
dEJveCgpKTsKLSAgICAgICAgYXV0byBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpLCBnZW9tZXRyeSwgcG9zaXRpb25pbmdDb250
ZXh0KCkuaW5GbG93Q29udGFpbmluZ0Jsb2NrQ29udGV4dCgpKTsKKyAgICAgICAgYXV0byBnZW9t
ZXRyeSA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KGJveC5sYXlvdXRCb3goKSk7CisgICAg
ICAgIGF1dG8gZGlzcGxheUJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KGJveC5sYXlvdXRCb3goKSwgZ2VvbWV0cnksIHBvc2l0aW9uaW5nQ29udGV4dCgpLmluRmxvd0Nv
bnRhaW5pbmdCbG9ja0NvbnRleHQoKSk7CiAgICAgICAgIGluc2VydEludG9UcmVlKFdURk1vdmUo
ZGlzcGxheUJveCksIGluc2VydGlvblBvc2l0aW9uLCBXaWxsVHJhdmVyc2VEZXNjZW5kYW50czo6
Tm8pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rp
c3BsYXlCb3hGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlC
b3hGYWN0b3J5LmNwcAppbmRleCBlNjVkZTgwMzUyODAwZjkzMjc3YzU2MDk5OTVkNmE2YzlkMGI4
N2Q4Li5kNWQyYzFkYmIxZTQ3NTI5Nzk2ZGQ1ODI4NzNlNTA4MGU0ZWQ1OWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCkBAIC0xNDMs
MTYgKzE0MywxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdQogICAgIHJldHVybiBtYWtlVW5p
cXVlPEJveD4obV90cmVlQnVpbGRlci50cmVlKCksIHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3Qs
IFdURk1vdmUoc3R5bGUpLCBmbGFncyk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZh
Y3Rvcnk6OmRpc3BsYXlCb3hGb3JUZXh0UnVuKGNvbnN0IExheW91dDo6UnVuJiBydW4sIGNvbnN0
IElubGluZURpc3BsYXk6OkxpbmUmIGxpbmUsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQm
IGNvbnRhaW5pbmdCbG9ja0NvbnRleHQpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hG
YWN0b3J5OjpkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmIGJv
eCwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYgbGluZSwgY29uc3QgQ29udGFpbmluZ0Jsb2Nr
Q29udGV4dCYgY29udGFpbmluZ0Jsb2NrQ29udGV4dCkgY29uc3QKIHsKICAgICBVTlVTRURfUEFS
QU0obGluZSk7Ci0gICAgQVNTRVJUKHJ1bi50ZXh0KCkpOworICAgIEFTU0VSVChib3gudGV4dCgp
KTsKIAotICAgIGF1dG8gcnVuUmVjdCA9IExheW91dFJlY3QgeyBydW4ubG9naWNhbExlZnQoKSwg
cnVuLmxvZ2ljYWxUb3AoKSwgcnVuLmxvZ2ljYWxXaWR0aCgpLCBydW4ubG9naWNhbEhlaWdodCgp
IH07Ci0gICAgcnVuUmVjdC5tb3ZlKGNvbnRhaW5pbmdCbG9ja0NvbnRleHQub2Zmc2V0RnJvbVJv
b3QpOworICAgIGF1dG8gYm94UmVjdCA9IExheW91dFJlY3QgeyBib3gubG9naWNhbExlZnQoKSwg
Ym94LmxvZ2ljYWxUb3AoKSwgYm94LmxvZ2ljYWxXaWR0aCgpLCBib3gubG9naWNhbEhlaWdodCgp
IH07CisgICAgYm94UmVjdC5tb3ZlKGNvbnRhaW5pbmdCbG9ja0NvbnRleHQub2Zmc2V0RnJvbVJv
b3QpOwogCi0gICAgYXV0byBzdHlsZSA9IFN0eWxlIHsgcnVuLmxheW91dEJveCgpLnN0eWxlKCkg
fTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Qm94PihtX3RyZWVCdWlsZGVyLnRyZWUoKSwg
VW5hZGp1c3RlZEFic29sdXRlRmxvYXRSZWN0IHsgc25hcFJlY3RUb0RldmljZVBpeGVscyhydW5S
ZWN0LCBtX3BpeGVsU25hcHBpbmdGYWN0b3IpIH0sIFdURk1vdmUoc3R5bGUpLCBydW4pOworICAg
IGF1dG8gc3R5bGUgPSBTdHlsZSB7IGJveC5sYXlvdXRCb3goKS5zdHlsZSgpIH07CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dEJveD4obV90cmVlQnVpbGRlci50cmVlKCksIFVuYWRqdXN0ZWRB
YnNvbHV0ZUZsb2F0UmVjdCB7IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm94UmVjdCwgbV9waXhl
bFNuYXBwaW5nRmFjdG9yKSB9LCBXVEZNb3ZlKHN0eWxlKSwgYm94KTsKIH0KIAogdm9pZCBCb3hG
YWN0b3J5OjpzZXR1cEJveEdlb21ldHJ5KEJveE1vZGVsQm94JiBib3gsIGNvbnN0IExheW91dDo6
Qm94JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgbGF5b3V0R2VvbWV0cnksIGNvbnN0IENv
bnRhaW5pbmdCbG9ja0NvbnRleHQmIGNvbnRhaW5pbmdCbG9ja0NvbnRleHQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaAppbmRleCA4MGMy
MGEzN2YzZDUyMWY5ZmNlOGZiZDllMzkzNjU2YWQzYjczYTdiLi4wMjAzYmFkZmYzMjM2YjM0YmFi
YjhkNjc3YmM5OWQxNThhN2RkYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlCb3hGYWN0b3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0IFJ1bjsKIH0KIAog
bmFtZXNwYWNlIElubGluZURpc3BsYXkgeworc3RydWN0IEJveDsKIGNsYXNzIExpbmU7CiB9CiAK
QEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3Bs
YXlCb3hGb3JCb2R5Qm94KGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9t
ZXRyeSYsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmLCBSb290QmFja2dyb3VuZFByb3Bh
Z2F0aW9uKSBjb25zdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYsIGNv
bnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmKSBjb25zdDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxCb3g+IGRpc3BsYXlCb3hGb3JUZXh0UnVuKGNvbnN0IExheW91dDo6UnVuJiwgY29uc3QgSW5s
aW5lRGlzcGxheTo6TGluZSYsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmKSBjb25zdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBJbmxp
bmVEaXNwbGF5OjpCb3gmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJiwgY29uc3QgQ29udGFp
bmluZ0Jsb2NrQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBM
YXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYsIGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZUZvckJhY2tncm91bmQsIFN0eWxlJiYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwCmluZGV4IGRiMjMxNGRi
NDc0MzAwOGViNjA2ZjJmZjEyNzhkNDYxNTEyOGFmMGEuLmU1ODBjMzRiODgxZWE0ODEyYTI1MmMx
MDY1MzhkMzI5NTEyMjA0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNw
bGF5VGV4dEJveC5jcHAKQEAgLTM2LDEwICszNiwxMCBAQCBuYW1lc3BhY2UgRGlzcGxheSB7CiAK
IERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoVGV4dEJveCk7CiAKLVRleHRC
b3g6OlRleHRCb3goVHJlZSYgdHJlZSwgVW5hZGp1c3RlZEFic29sdXRlRmxvYXRSZWN0IGJvcmRl
ckJveCwgU3R5bGUmJiBkaXNwbGF5U3R5bGUsIGNvbnN0IExheW91dDo6UnVuJiBsaW5lUnVuKQor
VGV4dEJveDo6VGV4dEJveChUcmVlJiB0cmVlLCBVbmFkanVzdGVkQWJzb2x1dGVGbG9hdFJlY3Qg
Ym9yZGVyQm94LCBTdHlsZSYmIGRpc3BsYXlTdHlsZSwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94
JiBib3gpCiAgICAgOiBCb3godHJlZSwgYm9yZGVyQm94LCBXVEZNb3ZlKGRpc3BsYXlTdHlsZSks
IHsgVHlwZUZsYWdzOjpUZXh0Qm94IH0pCi0gICAgLCBtX2V4cGFuc2lvbihsaW5lUnVuLmV4cGFu
c2lvbigpKQotICAgICwgbV90ZXh0KGxpbmVSdW4udGV4dCgpLnZhbHVlKCkpCisgICAgLCBtX2V4
cGFuc2lvbihib3guZXhwYW5zaW9uKCkpCisgICAgLCBtX3RleHQoYm94LnRleHQoKS52YWx1ZSgp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
VGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guaApp
bmRleCBjNTE4MmU4NjliNzE2NDgzMzNkYzE0NDY4NmVkMTIwYWE3MWIyZTI3Li5lNmMyZTNkZGE2
ZDg0ODAyOTI5YjkwMzVhYzNiNWMyNWJmYmI0NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKLSNpbmNs
dWRlICJJbmxpbmVMaW5lUnVuLmgiCisjaW5jbHVkZSAiSW5saW5lRGlzcGxheUJveC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheSB7CkBAIC0zOCwxNyArMzgsMTcg
QEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoVGV4dEJveCk7CiBjbGFz
cyBUZXh0Qm94IDogcHVibGljIEJveCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfV0lU
SF9IRUFQX0lERU5USUZJRVIoVGV4dEJveCk7CiBwdWJsaWM6Ci0gICAgVGV4dEJveChUcmVlJiwg
VW5hZGp1c3RlZEFic29sdXRlRmxvYXRSZWN0IGJvcmRlckJveCwgU3R5bGUmJiwgY29uc3QgTGF5
b3V0OjpSdW4mKTsKKyAgICBUZXh0Qm94KFRyZWUmLCBVbmFkanVzdGVkQWJzb2x1dGVGbG9hdFJl
Y3QgYm9yZGVyQm94LCBTdHlsZSYmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmKTsKIAotICAg
IExheW91dDo6UnVuOjpFeHBhbnNpb24gZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBh
bnNpb247IH0KLSAgICBjb25zdCBMYXlvdXQ6OlJ1bjo6VGV4dCYgdGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dDsgfQorICAgIElubGluZURpc3BsYXk6OkJveDo6RXhwYW5zaW9uIGV4cGFuc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9CisgICAgY29uc3QgSW5saW5lRGlzcGxh
eTo6Qm94OjpUZXh0JiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CiAKIHByaXZhdGU6
CiAgICAgY29uc3QgY2hhciogYm94TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBkZWJ1
Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgCi0gICAgTGF5b3V0OjpSdW46OkV4cGFu
c2lvbiBtX2V4cGFuc2lvbjsKLSAgICBMYXlvdXQ6OlJ1bjo6VGV4dCBtX3RleHQ7CisgICAgSW5s
aW5lRGlzcGxheTo6Qm94OjpFeHBhbnNpb24gbV9leHBhbnNpb247CisgICAgSW5saW5lRGlzcGxh
eTo6Qm94OjpUZXh0IG1fdGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggOTI5ZjEwOTdjNmIyM2YxYjRjZDk1
OTUyZjhmMjAwYjMyM2YxZTM1NC4uYjkyMDA2OTFhZWQ3OWIxZGMxNTFlODIxNzcyM2QyMTg2NTIy
MTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTcwLDI0ICs3
MCwyNCBAQCBzdGF0aWMgYm9vbCBhcmVFc3NlbnRpYWxseUVxdWFsKExheW91dFJlY3QgYSwgTGF5
b3V0UmVjdCBiKQogICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGEuaGVpZ2h0KCksIGIu
aGVpZ2h0KCkpOwogfQogCi1zdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMo
Y29uc3QgUnVuJiBydW4sIGNvbnN0IFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveCYgaW5saW5lQm94
KQorc3RhdGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGNvbnN0IElubGluZURp
c3BsYXk6OkJveCYgYm94LCBjb25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gmIGlubGluZUJv
eCkKIHsKLSAgICByZXR1cm4gYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gubGVmdCgpLCBy
dW4ubG9naWNhbExlZnQoKSkKLSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVC
b3gucmlnaHQoKSwgcnVuLmxvZ2ljYWxSaWdodCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRpYWxs
eUVxdWFsKGlubGluZUJveC50b3AoKSwgcnVuLmxvZ2ljYWxUb3AoKSkKLSAgICAgICAgJiYgYXJl
RXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3guYm90dG9tKCksIHJ1bi5sb2dpY2FsQm90dG9tKCkp
OworICAgIHJldHVybiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC5sZWZ0KCksIGJveC5s
b2dpY2FsTGVmdCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC5y
aWdodCgpLCBib3gubG9naWNhbFJpZ2h0KCkpCisgICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1
YWwoaW5saW5lQm94LnRvcCgpLCBib3gubG9naWNhbFRvcCgpKQorICAgICAgICAmJiBhcmVFc3Nl
bnRpYWxseUVxdWFsKGlubGluZUJveC5ib3R0b20oKSwgYm94LmxvZ2ljYWxCb3R0b20oKSk7CiB9
CiAKIAotc3RhdGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGNvbnN0IFJ1biYgcnVu
LCBjb25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KQorc3Rh
dGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKElubGluZURpc3BsYXk6OkJveCYgYm94
LCBjb25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KQogewot
ICAgIGlmICghcnVuLnRleHQoKSkKKyAgICBpZiAoIWJveC50ZXh0KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94Lmxl
ZnQoKSwgcnVuLmxvZ2ljYWxMZWZ0KCkpCi0gICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwo
aW5saW5lVGV4dEJveC5yaWdodCgpLCBydW4ubG9naWNhbFJpZ2h0KCkpCi0gICAgICAgICYmIGFy
ZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC50b3AoKSwgcnVuLmxvZ2ljYWxUb3AoKSkK
LSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LmJvdHRvbSgpLCBy
dW4ubG9naWNhbEJvdHRvbSgpKQotICAgICAgICAmJiAoaW5saW5lVGV4dEJveC5pc0xpbmVCcmVh
aygpIHx8IChpbmxpbmVUZXh0Qm94LnN0YXJ0KCkgPT0gcnVuLnRleHQoKS0+c3RhcnQoKSAmJiBp
bmxpbmVUZXh0Qm94LmVuZCgpID09IHJ1bi50ZXh0KCktPmVuZCgpKSk7CisgICAgcmV0dXJuIGFy
ZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC5sZWZ0KCksIGJveC5sb2dpY2FsTGVmdCgp
KQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3gucmlnaHQoKSwg
Ym94LmxvZ2ljYWxSaWdodCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGlu
ZVRleHRCb3gudG9wKCksIGJveC5sb2dpY2FsVG9wKCkpCisgICAgICAgICYmIGFyZUVzc2VudGlh
bGx5RXF1YWwoaW5saW5lVGV4dEJveC5ib3R0b20oKSwgYm94LmxvZ2ljYWxCb3R0b20oKSkKKyAg
ICAgICAgJiYgKGlubGluZVRleHRCb3guaXNMaW5lQnJlYWsoKSB8fCAoaW5saW5lVGV4dEJveC5z
dGFydCgpID09IGJveC50ZXh0KCktPnN0YXJ0KCkgJiYgaW5saW5lVGV4dEJveC5lbmQoKSA9PSBi
b3gudGV4dCgpLT5lbmQoKSkpOwogfQogCiBzdGF0aWMgdm9pZCBjb2xsZWN0Rmxvd0JveFN1YnRy
ZWUoY29uc3QgTGVnYWN5SW5saW5lRmxvd0JveCYgZmxvd2JveCwgVmVjdG9yPFdlYkNvcmU6Okxl
Z2FjeUlubGluZUJveCo+JiBpbmxpbmVCb3hlcykKQEAgLTExOCw0OCArMTE4LDQ4IEBAIHN0YXRp
YyB2b2lkIGNvbGxlY3RJbmxpbmVCb3hlcyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJvb3QsIFZl
Y3RvcjxXZWJDb3JlOjpMZWdhCiBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhM
aW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNvbnN0
IENvbnRhaW5lckJveCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCiB7CiAgICAgYXV0byYgaW5saW5l
Rm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGlu
Z0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwotICAgIGF1dG8mIHJ1bnMgPSBkb3duY2Fz
dDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkucnVucygpOwor
ICAgIGF1dG8mIGJveGVzID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVG
b3JtYXR0aW5nU3RhdGUpLmJveGVzKCk7CiAgICAgLy8gQ29sbGVjdCBpbmxpbmVib3hlcy4KICAg
ICBWZWN0b3I8V2ViQ29yZTo6TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7CiAgICAgY29s
bGVjdElubGluZUJveGVzKGJsb2NrRmxvdywgaW5saW5lQm94ZXMpOwogCiAgICAgYXV0byBtaXNt
YXRjaGVkID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgcnVuSW5kZXggPSAwOworICAgIHVuc2lnbmVk
IGJveEluZGV4ID0gMDsKIAotICAgIGlmIChpbmxpbmVCb3hlcy5zaXplKCkgIT0gcnVucy5zaXpl
KCkpIHsKLSAgICAgICAgc3RyZWFtIDw8ICJXYXJuaW5nOiBtaXNtYXRjaGluZyBudW1iZXIgb2Yg
cnVuczogaW5saW5lYm94ZXMoIiA8PCBpbmxpbmVCb3hlcy5zaXplKCkgPDwgIikgdnMuIGlubGlu
ZSBydW5zKCIgPDwgcnVucy5zaXplKCkgPDwgIikiOworICAgIGlmIChpbmxpbmVCb3hlcy5zaXpl
KCkgIT0gYm94ZXMuc2l6ZSgpKSB7CisgICAgICAgIHN0cmVhbSA8PCAiV2FybmluZzogbWlzbWF0
Y2hpbmcgbnVtYmVyIG9mIGJveGVzOiBpbmxpbmVib3hlcygiIDw8IGlubGluZUJveGVzLnNpemUo
KSA8PCAiKSB2cy4gaW5saW5lIGJveGVzKCIgPDwgYm94ZXMuc2l6ZSgpIDw8ICIpIjsKICAgICAg
ICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgfQogCi0gICAgZm9yICh1bnNpZ25lZCBpbmxpbmVC
b3hJbmRleCA9IDA7IGlubGluZUJveEluZGV4IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIHJ1bklu
ZGV4IDwgcnVucy5zaXplKCk7ICsraW5saW5lQm94SW5kZXgpIHsKLSAgICAgICAgYXV0byYgcnVu
ID0gcnVuc1tydW5JbmRleF07CisgICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7
IGlubGluZUJveEluZGV4IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIGJveEluZGV4IDwgYm94ZXMu
c2l6ZSgpOyArK2lubGluZUJveEluZGV4KSB7CisgICAgICAgIGF1dG8mIGJveCA9IGJveGVzW2Jv
eEluZGV4XTsKICAgICAgICAgYXV0byogaW5saW5lQm94ID0gaW5saW5lQm94ZXNbaW5saW5lQm94
SW5kZXhdOwogICAgICAgICBhdXRvKiBpbmxpbmVUZXh0Qm94ID0gaXM8V2ViQ29yZTo6TGVnYWN5
SW5saW5lVGV4dEJveD4oaW5saW5lQm94KSA/IGRvd25jYXN0PFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g+KGlubGluZUJveCkgOiBudWxscHRyOwotICAgICAgICBib29sIG1hdGNoaW5nUnVu
cyA9IGlubGluZVRleHRCb3ggPyBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMocnVuLCAqaW5saW5l
VGV4dEJveCkgOiBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMocnVuLCAqaW5saW5lQm94KTsK
KyAgICAgICAgYm9vbCBtYXRjaGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94ID8gY2hlY2tGb3JNYXRj
aGluZ1RleHRSdW5zKGJveCwgKmlubGluZVRleHRCb3gpIDogY2hlY2tGb3JNYXRjaGluZ05vblRl
eHRSdW5zKGJveCwgKmlubGluZUJveCk7CiAKICAgICAgICAgaWYgKCFtYXRjaGluZ1J1bnMpIHsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlzPFJlbmRlckxpbmVCcmVhaz4oaW5saW5l
Qm94LT5yZW5kZXJlcigpKSkgewogICAgICAgICAgICAgICAgIC8vIDxicj4gcG9zaXRpb25pbmcg
aXMgd2VpcmQgYXQgdGhpcyBwb2ludC4gSXQgbmVlZHMgcHJvcGVyIGJhc2VsaW5lLgogICAgICAg
ICAgICAgICAgIG1hdGNoaW5nUnVucyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgKytydW5JbmRl
eDsKKyAgICAgICAgICAgICAgICArK2JveEluZGV4OwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzdHJlYW0gPDwgIk1pc21hdGNoaW5nOiBy
dW4iOworICAgICAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZzogYm94IjsKIAogICAgICAg
ICAgICAgaWYgKGlubGluZVRleHRCb3gpCiAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIg
PDwgaW5saW5lVGV4dEJveC0+c3RhcnQoKSA8PCAiLCAiIDw8IGlubGluZVRleHRCb3gtPmVuZCgp
IDw8ICIpIjsKICAgICAgICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGlubGluZUJveC0+bG9naWNh
bExlZnQoKSA8PCAiLCAiIDw8IGlubGluZUJveC0+bG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGlu
bGluZUJveC0+bG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGlubGluZUJveC0+bG9naWNhbEhlaWdo
dCgpIDw8ICIpIjsKIAotICAgICAgICAgICAgc3RyZWFtIDw8ICIgaW5saW5lIHJ1biI7Ci0gICAg
ICAgICAgICBpZiAocnVuLnRleHQoKSkKLSAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8
PCBydW4udGV4dCgpLT5zdGFydCgpIDw8ICIsICIgPDwgcnVuLnRleHQoKS0+ZW5kKCkgPDwgIiki
OwotICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgcnVuLmxvZ2ljYWxMZWZ0KCkgPDwgIiwg
IiA8PCBydW4ubG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IHJ1bi5sb2dpY2FsV2lkdGgoKSA8PCAi
eCIgPDwgcnVuLmxvZ2ljYWxIZWlnaHQoKSA8PCAiKSI7CisgICAgICAgICAgICBzdHJlYW0gPDwg
IiBpbmxpbmUgYm94IjsKKyAgICAgICAgICAgIGlmIChib3gudGV4dCgpKQorICAgICAgICAgICAg
ICAgIHN0cmVhbSA8PCAiICgiIDw8IGJveC50ZXh0KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBib3gu
dGV4dCgpLT5lbmQoKSA8PCAiKSI7CisgICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBib3gu
bG9naWNhbExlZnQoKSA8PCAiLCAiIDw8IGJveC5sb2dpY2FsVG9wKCkgPDwgIikgKCIgPDwgYm94
LmxvZ2ljYWxXaWR0aCgpIDw8ICJ4IiA8PCBib3gubG9naWNhbEhlaWdodCgpIDw8ICIpIjsKICAg
ICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwogICAgICAgICAgICAgbWlzbWF0Y2hlZCA9IHRy
dWU7CiAgICAgICAgIH0KLSAgICAgICAgKytydW5JbmRleDsKKyAgICAgICAgKytib3hJbmRleDsK
ICAgICB9CiAgICAgcmV0dXJuIG1pc21hdGNoZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCA4OWExMTEwNzNlOGNh
ZWNjMzg4MTY3MjdlM2Y4YzhkZTNkOGJjMWQ5Li5jNmYwNDJlOThmMjY5NWMxMmQwZTFmMDM5NmY3
YTNjYTQ1ZTJiNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTQyLDI2ICs0MiwyNiBAQCBJbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXI6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcihjb25zdCBDb250YWluZXJC
b3gmIGZvcgogewogfQogCi1JbmxpbmVSdW5zIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3Qg
TGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2Fs
VG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCkKK0Rpc3BsYXlCb3hlcyBJbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYg
bGluZUNvbnRlbnQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGluZUxheW91dFBv
aW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgpCiB7Ci0g
ICAgSW5saW5lUnVucyBydW5zOwotICAgIHJ1bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaW5l
Q29udGVudC5ydW5zLnNpemUoKSArIGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKS5z
aXplKCkgKyAxKTsKKyAgICBEaXNwbGF5Qm94ZXMgYm94ZXM7CisgICAgYm94ZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShsaW5lQ29udGVudC5ydW5zLnNpemUoKSArIGxpbmVCb3gubm9uUm9vdElu
bGluZUxldmVsQm94ZXMoKS5zaXplKCkgKyAxKTsKIAotICAgIC8vIEV2ZXJ5IGxpbmUgc3RhcnRz
IHdpdGggYSByb290IHJ1biwgZXZlbiB0aGUgZW1wdHkgb25lcy4KKyAgICAvLyBFdmVyeSBsaW5l
IHN0YXJ0cyB3aXRoIGEgcm9vdCBib3gsIGV2ZW4gdGhlIGVtcHR5IG9uZXMuCiAgICAgYXV0byBy
b290SW5saW5lQm94UmVjdCA9IGxpbmVCb3gubG9naWNhbFJlY3RGb3JSb290SW5saW5lQm94KCk7
CiAgICAgcm9vdElubGluZUJveFJlY3QubW92ZUJ5KGxpbmVCb3hMb2dpY2FsVG9wTGVmdCk7Ci0g
ICAgcnVucy5hcHBlbmQoeyBsaW5lSW5kZXgsIFJ1bjo6VHlwZTo6Um9vdElubGluZUJveCwgcm9v
dCgpLCByb290SW5saW5lQm94UmVjdCwgcm9vdElubGluZUJveFJlY3QsIHsgfSwgeyB9LCAgbGlu
ZUJveC5yb290SW5saW5lQm94KCkuaGFzQ29udGVudCgpfSk7CisgICAgYm94ZXMuYXBwZW5kKHsg
bGluZUluZGV4LCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OlJvb3RJbmxpbmVCb3gsIHJvb3Qo
KSwgcm9vdElubGluZUJveFJlY3QsIHJvb3RJbmxpbmVCb3hSZWN0LCB7IH0sIHsgfSwgIGxpbmVC
b3gucm9vdElubGluZUJveCgpLmhhc0NvbnRlbnQoKX0pOwogCi0gICAgY3JlYXRlUnVuc0FuZFVw
ZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMobGluZUJveCwgbGluZUJveExv
Z2ljYWxUb3BMZWZ0LCBsaW5lSW5kZXgsIHJ1bnMpOwotICAgIGNyZWF0ZVJ1bnNBbmRVcGRhdGVH
ZW9tZXRyeUZvckxpbmVDb250ZW50KGxpbmVDb250ZW50LCBsaW5lQm94LCBsaW5lQm94TG9naWNh
bFRvcExlZnQsIGxpbmVJbmRleCwgcnVucyk7Ci0gICAgY29sbGVjdElua092ZXJmbG93Rm9ySW5s
aW5lQm94UnVucyhsaW5lQm94LCBydW5zKTsKLSAgICByZXR1cm4gcnVuczsKKyAgICBjcmVhdGVC
b3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMobGluZUJveCwg
bGluZUJveExvZ2ljYWxUb3BMZWZ0LCBsaW5lSW5kZXgsIGJveGVzKTsKKyAgICBjcmVhdGVCb3hl
c0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGxp
bmVCb3hMb2dpY2FsVG9wTGVmdCwgbGluZUluZGV4LCBib3hlcyk7CisgICAgY29sbGVjdElua092
ZXJmbG93Rm9ySW5saW5lQm94ZXMobGluZUJveCwgYm94ZXMpOworICAgIHJldHVybiBib3hlczsK
IH0KIAotdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRh
dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYg
bGluZUNvbnRlbnQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGluZUxheW91dFBv
aW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIElubGlu
ZVJ1bnMmIHJ1bnMpCit2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlQm94
ZXNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5l
Q29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGlu
ZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5k
ZXgsIERpc3BsYXlCb3hlcyYgYm94ZXMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0g
dGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7Ci0gICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgcnVucyBv
biB0aGUgY3VycmVudCBsaW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMgaW5saW5l
IHJ1bnMuCisgICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgYm94ZXMgb24gdGhlIGN1cnJlbnQgbGlu
ZS4gVGhpcyBpcyBtb3N0bHkgdGV4dCBhbmQgYXRvbWljIGlubGluZSBib3hlcy4KICAgICBmb3Ig
KGF1dG8mIGxpbmVSdW4gOiBsaW5lQ29udGVudC5ydW5zKSB7CiAgICAgICAgIGF1dG8mIGxheW91
dEJveCA9IGxpbmVSdW4ubGF5b3V0Qm94KCk7CiAgICAgICAgIHN3aXRjaCAobGluZVJ1bi50eXBl
KCkpIHsKQEAgLTkwLDEzICs5MCwxMyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogICAgICAg
ICAgICAgYXV0byBhZGp1c3RlZENvbnRlbnRUb1JlbmRlciA9IFsmXSB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRleHQtPm5lZWRzSHlwaGVuID8gbWFrZVN0cmluZyhjb250ZW50LnN1YnN0cmlu
Zyh0ZXh0LT5zdGFydCwgdGV4dC0+bGVuZ3RoKSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpIDogU3Ry
aW5nKCk7CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgcnVucy5hcHBlbmQoeyBsaW5lSW5k
ZXgKLSAgICAgICAgICAgICAgICAsIFJ1bjo6VHlwZTo6VGV4dAorICAgICAgICAgICAgYm94ZXMu
YXBwZW5kKHsgbGluZUluZGV4CisgICAgICAgICAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6
OlR5cGU6OlRleHQKICAgICAgICAgICAgICAgICAsIGxheW91dEJveAogICAgICAgICAgICAgICAg
ICwgdGV4dFJ1blJlY3QKICAgICAgICAgICAgICAgICAsIGlua092ZXJmbG93KCkKICAgICAgICAg
ICAgICAgICAsIGxpbmVSdW4uZXhwYW5zaW9uKCkKLSAgICAgICAgICAgICAgICAsIFJ1bjo6VGV4
dCB7IHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgsIGNvbnRlbnQsIGFkanVzdGVkQ29udGVudFRv
UmVuZGVyKCksIHRleHQtPm5lZWRzSHlwaGVuIH0gfSk7CisgICAgICAgICAgICAgICAgLCBJbmxp
bmVEaXNwbGF5OjpCb3g6OlRleHQgeyB0ZXh0LT5zdGFydCwgdGV4dC0+bGVuZ3RoLCBjb250ZW50
LCBhZGp1c3RlZENvbnRlbnRUb1JlbmRlcigpLCB0ZXh0LT5uZWVkc0h5cGhlbiB9IH0pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBl
OjpTb2Z0TGluZUJyZWFrOiB7CkBAIC0xMDUsMjAgKzEwNSwyMCBAQCB2b2lkIElubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRl
bnQoY29ucwogCiAgICAgICAgICAgICBBU1NFUlQobGluZVJ1bi50ZXh0Q29udGVudCgpICYmIGlz
PElubGluZVRleHRCb3g+KGxheW91dEJveCkpOwogICAgICAgICAgICAgYXV0byYgdGV4dCA9IGxp
bmVSdW4udGV4dENvbnRlbnQoKTsKLSAgICAgICAgICAgIHJ1bnMuYXBwZW5kKHsgbGluZUluZGV4
Ci0gICAgICAgICAgICAgICAgLCBSdW46OlR5cGU6OlNvZnRMaW5lQnJlYWsKKyAgICAgICAgICAg
IGJveGVzLmFwcGVuZCh7IGxpbmVJbmRleAorICAgICAgICAgICAgICAgICwgSW5saW5lRGlzcGxh
eTo6Qm94OjpUeXBlOjpTb2Z0TGluZUJyZWFrCiAgICAgICAgICAgICAgICAgLCBsYXlvdXRCb3gK
ICAgICAgICAgICAgICAgICAsIHNvZnRMaW5lQnJlYWtSdW5SZWN0CiAgICAgICAgICAgICAgICAg
LCBzb2Z0TGluZUJyZWFrUnVuUmVjdAogICAgICAgICAgICAgICAgICwgbGluZVJ1bi5leHBhbnNp
b24oKQotICAgICAgICAgICAgICAgICwgUnVuOjpUZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxl
bmd0aCwgZG93bmNhc3Q8SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KS5jb250ZW50KCkgfSB9KTsK
KyAgICAgICAgICAgICAgICAsIElubGluZURpc3BsYXk6OkJveDo6VGV4dCB7IHRleHQtPnN0YXJ0
LCB0ZXh0LT5sZW5ndGgsIGRvd25jYXN0PElubGluZVRleHRCb3g+KGxheW91dEJveCkuY29udGVu
dCgpIH0gfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIElu
bGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWs6IHsKICAgICAgICAgICAgIC8vIE9ubHkgaGFy
ZCBsaW5lYnJlYWtzIGhhdmUgYXNzb2NpYXRlZCBsYXlvdXQgYm94ZXMuCiAgICAgICAgICAgICBh
dXRvIGxpbmVCcmVha0JveFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yTGluZUJyZWFrQm94
KGxheW91dEJveCk7CiAgICAgICAgICAgICBsaW5lQnJlYWtCb3hSZWN0Lm1vdmVCeShsaW5lQm94
TG9naWNhbFRvcExlZnQpOwotICAgICAgICAgICAgcnVucy5hcHBlbmQoeyBsaW5lSW5kZXgsIFJ1
bjo6VHlwZTo6TGluZUJyZWFrQm94LCBsYXlvdXRCb3gsIGxpbmVCcmVha0JveFJlY3QsIGxpbmVC
cmVha0JveFJlY3QsIGxpbmVSdW4uZXhwYW5zaW9uKCksIHsgfSB9KTsKKyAgICAgICAgICAgIGJv
eGVzLmFwcGVuZCh7IGxpbmVJbmRleCwgSW5saW5lRGlzcGxheTo6Qm94OjpUeXBlOjpMaW5lQnJl
YWtCb3gsIGxheW91dEJveCwgbGluZUJyZWFrQm94UmVjdCwgbGluZUJyZWFrQm94UmVjdCwgbGlu
ZVJ1bi5leHBhbnNpb24oKSwgeyB9IH0pOwogCiAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRy
eSA9IGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpOwogICAgICAgICAgICAg
Ym94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2ludChsaW5lQnJlYWtCb3hS
ZWN0LnRvcExlZnQoKSkpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChj
b25zCiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxCb3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxC
b3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsK
ICAgICAgICAgICAgIGxvZ2ljYWxCb3JkZXJCb3gubW92ZUJ5KGxpbmVCb3hMb2dpY2FsVG9wTGVm
dCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGluayBvdmVyZmxvdyBzdXBwb3J0IGZvciBh
dG9taWMgaW5saW5lIGxldmVsIGJveGVzIChlLmcuIGJveCBzaGFkb3cpLgotICAgICAgICAgICAg
cnVucy5hcHBlbmQoeyBsaW5lSW5kZXgsIFJ1bjo6VHlwZTo6QXRvbWljSW5saW5lTGV2ZWxCb3gs
IGxheW91dEJveCwgbG9naWNhbEJvcmRlckJveCwgbG9naWNhbEJvcmRlckJveCwgbGluZVJ1bi5l
eHBhbnNpb24oKSwgeyB9IH0pOworICAgICAgICAgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4
LCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94LCBsYXlvdXRC
b3gsIGxvZ2ljYWxCb3JkZXJCb3gsIGxvZ2ljYWxCb3JkZXJCb3gsIGxpbmVSdW4uZXhwYW5zaW9u
KCksIHsgfSB9KTsKIAogICAgICAgICAgICAgYXV0byBib3JkZXJCb3hMb2dpY2FsVG9wTGVmdCA9
IGxvZ2ljYWxCb3JkZXJCb3gudG9wTGVmdCgpOwogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGlu
bGluZSBib3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxpbmUgYW5kIHRoZWlyIHRvcCBwb3NpdGlv
biBjYW4gYmUgbmVnYXRpdmUuCkBAIC0xNDEsMTEgKzE0MSwxMSBAQCB2b2lkIElubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRl
bnQoY29ucwogICAgICAgICAgICAgYXV0byBhZGp1c3RQYXJlbnRJbmxpbmVCb3hJbmtPdmVyZmxv
dyA9IFsmXSB7CiAgICAgICAgICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0gbGF5b3V0
Qm94LnBhcmVudCgpOwogICAgICAgICAgICAgICAgIGlmICgmcGFyZW50SW5saW5lQm94ID09ICZy
b290KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY29sbGVjdCBpbmsgb3Zl
cmZsb3cgZm9yIHRoZSByb290IGlubGluZSBib3ggcnVuLgorICAgICAgICAgICAgICAgICAgICAv
LyBXZSBkb24ndCBjb2xsZWN0IGluayBvdmVyZmxvdyBmb3IgdGhlIHJvb3QgaW5saW5lIGJveC4K
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2lubGluZUJveFJ1bkluZGV4TWFwLmNvbnRhaW5zKCZw
YXJlbnRJbmxpbmVCb3gpKTsKLSAgICAgICAgICAgICAgICBydW5zW21faW5saW5lQm94UnVuSW5k
ZXhNYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gpXS5hZGp1c3RJbmtPdmVyZmxvdyhsb2dpY2FsQm9y
ZGVyQm94KTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2lubGluZUJveEluZGV4
TWFwLmNvbnRhaW5zKCZwYXJlbnRJbmxpbmVCb3gpKTsKKyAgICAgICAgICAgICAgICBib3hlc1tt
X2lubGluZUJveEluZGV4TWFwLmdldCgmcGFyZW50SW5saW5lQm94KV0uYWRqdXN0SW5rT3ZlcmZs
b3cobG9naWNhbEJvcmRlckJveCk7CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgYWRqdXN0
UGFyZW50SW5saW5lQm94SW5rT3ZlcmZsb3coKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2
LDkgKzE1Niw5IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5z
QW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBhdXRvIGlu
bGluZUJveEJvcmRlckJveCA9IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChs
YXlvdXRCb3gsIGJveEdlb21ldHJ5KTsKICAgICAgICAgICAgIGlubGluZUJveEJvcmRlckJveC5t
b3ZlQnkobGluZUJveExvZ2ljYWxUb3BMZWZ0KTsKICAgICAgICAgICAgIGlmIChsaW5lQm94Lmhh
c0NvbnRlbnQoKSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIGV4cGVjdGVkIHRv
IG5vdCBoYXZlIGFueSBydW5zIG9uIGVtcHR5IGxpbmVzLiBXZSBzaG91bGQgcmVjb25zaWRlciB0
aGlzLgotICAgICAgICAgICAgICAgIG1faW5saW5lQm94UnVuSW5kZXhNYXAuYWRkKCZsYXlvdXRC
b3gsIHJ1bnMuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBydW5zLmFwcGVuZCh7IGxpbmVJbmRl
eCwgUnVuOjpUeXBlOjpOb25Sb290SW5saW5lQm94LCBsYXlvdXRCb3gsIGlubGluZUJveEJvcmRl
ckJveCwgaW5saW5lQm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgbGluZUJveC5pbmxpbmVMZXZlbEJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpLmhhc0NvbnRlbnQoKSB9KTsKKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogSXQncyBleHBlY3RlZCB0byBub3QgaGF2ZSBhbnkgYm94ZXMgb24gZW1wdHkg
bGluZXMuIFdlIHNob3VsZCByZWNvbnNpZGVyIHRoaXMuCisgICAgICAgICAgICAgICAgbV9pbmxp
bmVCb3hJbmRleE1hcC5hZGQoJmxheW91dEJveCwgYm94ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBib3hlcy5hcHBlbmQoeyBsaW5lSW5kZXgsIElubGluZURpc3BsYXk6OkJveDo6VHlwZTo6
Tm9uUm9vdElubGluZUJveCwgbGF5b3V0Qm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIGlubGluZUJv
eEJvcmRlckJveCwgeyB9LCB7IH0sIGxpbmVCb3guaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KS5oYXNDb250ZW50KCkgfSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGF1dG8gaW5saW5lQm94U2l6ZSA9IExheW91dFNpemUgeyBMYXlvdXRVbml0Ojpmcm9tRmxvYXRD
ZWlsKGlubGluZUJveEJvcmRlckJveC53aWR0aCgpKSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2Vp
bChpbmxpbmVCb3hCb3JkZXJCb3guaGVpZ2h0KCkpIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9p
ZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRy
eUZvckxpbmVDb250ZW50KGNvbnMKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxp
bmVCb3hlcyhjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYg
bGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBJbmxpbmVSdW5z
JiBydW5zKQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZUJveGVzQW5k
VXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxpbmVCb3hlcyhjb25zdCBMaW5lQm94JiBs
aW5lQm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBj
b25zdCBzaXplX3QgbGluZUluZGV4LCBEaXNwbGF5Qm94ZXMmIGJveGVzKQogewogICAgIGlmICgh
bGluZUJveC5oYXNDb250ZW50KCkpIHsKICAgICAgICAgLy8gV2hlbiBhIHNwYW5uaW5nIGlubGlu
ZSBib3ggKGUuZy4gPGRpdj50ZXh0PHNwYW4+PGJyPjwvc3Bhbj48L2Rpdj4pIGxhbmRzIG9uIGFu
IGVtcHR5IGxpbmUKQEAgLTE5MiwxMiArMTkyLDEyIEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5l
TGV2ZWxCb3gubGF5b3V0Qm94KCk7CiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0
dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7Ci0gICAgICAgIC8vIElubGluZSBib3hl
cyBtYXkgb3IgbWF5IG5vdCBiZSB3cmFwcGVkIGFuZCBoYXZlIHJ1bnMgb24gbXVsdGlwbGUgbGlu
ZXMgKGUuZy4gPHNwYW4+Zmlyc3QgbGluZTxicj5zZWNvbmQgbGluZTxicj50aGlyZCBsaW5lPC9z
cGFuPikKKyAgICAgICAgLy8gSW5saW5lIGJveGVzIG1heSBvciBtYXkgbm90IGJlIHdyYXBwZWQg
YW5kIGhhdmUgYm94ZXMgb24gbXVsdGlwbGUgbGluZXMgKGUuZy4gPHNwYW4+Zmlyc3QgbGluZTxi
cj5zZWNvbmQgbGluZTxicj50aGlyZCBsaW5lPC9zcGFuPikKICAgICAgICAgYXV0byBpbmxpbmVC
b3hCb3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5b3V0
Qm94LCBib3hHZW9tZXRyeSk7CiAgICAgICAgIGlubGluZUJveEJvcmRlckJveC5tb3ZlQnkobGlu
ZUJveExvZ2ljYWxUb3BMZWZ0KTsKIAotICAgICAgICBtX2lubGluZUJveFJ1bkluZGV4TWFwLmFk
ZCgmbGF5b3V0Qm94LCBydW5zLnNpemUoKSk7Ci0gICAgICAgIHJ1bnMuYXBwZW5kKHsgbGluZUlu
ZGV4LCBSdW46OlR5cGU6Ok5vblJvb3RJbmxpbmVCb3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9y
ZGVyQm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIHsgfSwgeyB9LCBpbmxpbmVMZXZlbEJveC5oYXND
b250ZW50KCkgfSk7CisgICAgICAgIG1faW5saW5lQm94SW5kZXhNYXAuYWRkKCZsYXlvdXRCb3gs
IGJveGVzLnNpemUoKSk7CisgICAgICAgIGJveGVzLmFwcGVuZCh7IGxpbmVJbmRleCwgSW5saW5l
RGlzcGxheTo6Qm94OjpUeXBlOjpOb25Sb290SW5saW5lQm94LCBsYXlvdXRCb3gsIGlubGluZUJv
eEJvcmRlckJveCwgaW5saW5lQm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgaW5saW5lTGV2ZWxCb3gu
aGFzQ29udGVudCgpIH0pOwogCiAgICAgICAgIGF1dG8gaW5saW5lQm94U2l6ZSA9IExheW91dFNp
emUgeyBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC53aWR0aCgp
KSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVCb3hCb3JkZXJCb3guaGVpZ2h0KCkp
IH07CiAgICAgICAgIGF1dG8gbG9naWNhbFJlY3QgPSBSZWN0IHsgTGF5b3V0UG9pbnQgeyBpbmxp
bmVCb3hCb3JkZXJCb3gudG9wTGVmdCgpIH0sIGlubGluZUJveFNpemUgfTsKQEAgLTIxMSw5ICsy
MTEsOSBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVw
ZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saQogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveFJ1bnMo
Y29uc3QgTGluZUJveCYgbGluZUJveCwgSW5saW5lUnVucyYgcnVucykKK3ZvaWQgSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyOjpjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hlcyhjb25z
dCBMaW5lQm94JiBsaW5lQm94LCBEaXNwbGF5Qm94ZXMmIGJveGVzKQogewotICAgIGlmIChtX2lu
bGluZUJveFJ1bkluZGV4TWFwLmlzRW1wdHkoKSB8fCAhbGluZUJveC5oYXNDb250ZW50KCkpIHsK
KyAgICBpZiAobV9pbmxpbmVCb3hJbmRleE1hcC5pc0VtcHR5KCkgfHwgIWxpbmVCb3guaGFzQ29u
dGVudCgpKSB7CiAgICAgICAgIC8vIFRoaXMgbGluZSBoYXMgbm8gaW5saW5lIGJveCAob25seSBy
b290LCBidXQgd2UgZG9uJ3QgY29sbGVjdCBpbmsgb3ZlcmZsb3cgZm9yIHRoZSByb290IGlubGlu
ZSBib3ggYXRtKQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI4LDEwICsyMjgsMTAgQEAg
dm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0Zvcklu
bGluZUJveFJ1bnMoY29uc3QgTGluZUIKICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0g
aW5saW5lQm94LnBhcmVudCgpOwogICAgICAgICBpZiAoJnBhcmVudElubGluZUJveCA9PSAmcm9v
dCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5s
aW5lQm94UnVuSW5kZXhNYXAuY29udGFpbnMoJmlubGluZUJveCkgJiYgbV9pbmxpbmVCb3hSdW5J
bmRleE1hcC5jb250YWlucygmcGFyZW50SW5saW5lQm94KSk7Ci0gICAgICAgIGF1dG8mIGlua092
ZXJmbG93ID0gcnVuc1ttX2lubGluZUJveFJ1bkluZGV4TWFwLmdldCgmaW5saW5lQm94KV0uaW5r
T3ZlcmZsb3coKTsKLSAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94UnVuID0gcnVuc1ttX2lu
bGluZUJveFJ1bkluZGV4TWFwLmdldCgmcGFyZW50SW5saW5lQm94KV07Ci0gICAgICAgIHBhcmVu
dElubGluZUJveFJ1bi5hZGp1c3RJbmtPdmVyZmxvdyhpbmtPdmVyZmxvdyk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1faW5saW5lQm94SW5kZXhNYXAuY29udGFpbnMoJmlubGluZUJveCkgJiYg
bV9pbmxpbmVCb3hJbmRleE1hcC5jb250YWlucygmcGFyZW50SW5saW5lQm94KSk7CisgICAgICAg
IGF1dG8mIGlua092ZXJmbG93ID0gYm94ZXNbbV9pbmxpbmVCb3hJbmRleE1hcC5nZXQoJmlubGlu
ZUJveCldLmlua092ZXJmbG93KCk7CisgICAgICAgIGF1dG8mIHBhcmVudERpc3BsYXlCb3ggPSBi
b3hlc1ttX2lubGluZUJveEluZGV4TWFwLmdldCgmcGFyZW50SW5saW5lQm94KV07CisgICAgICAg
IHBhcmVudERpc3BsYXlCb3guYWRqdXN0SW5rT3ZlcmZsb3coaW5rT3ZlcmZsb3cpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaAppbmRleCBiY2Y1MDk1NWY2YWU3ZDllOWFlNzJhNTk3MDkyYTkwODdhZDRiZmViLi42ZGJm
MjFkM2RhMjU4Y2YwMjMwNGQ3ZGY4YTc4MzZjYjY4YzU5MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaApAQCAtNDEsMTkgKzQxLDE5
IEBAIGNsYXNzIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlciB7CiBwdWJsaWM6CiAgICAgSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmKTsKIAotICAgIElubGluZVJ1bnMgYnVp
bGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJveCYsIGNvbnN0
IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBs
aW5lSW5kZXgpOworICAgIERpc3BsYXlCb3hlcyBidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGlu
ZUNvbnRlbnQmLCBjb25zdCBMaW5lQm94JiwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVC
b3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCk7CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCBjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBMaW5lQm94JiwgY29uc3QgSW5saW5lTGF5
b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwg
SW5saW5lUnVucyYpOwotICAgIHZvaWQgY3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGlu
ZVNwYW5uaW5nSW5saW5lQm94ZXMoY29uc3QgTGluZUJveCYsIGNvbnN0IElubGluZUxheW91dFBv
aW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIElubGlu
ZVJ1bnMmKTsKLSAgICB2b2lkIGNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveFJ1bnMoY29u
c3QgTGluZUJveCYsIElubGluZVJ1bnMmKTsKKyAgICB2b2lkIGNyZWF0ZUJveGVzQW5kVXBkYXRl
R2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBj
b25zdCBMaW5lQm94JiwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9w
TGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgRGlzcGxheUJveGVzJik7CisgICAgdm9pZCBj
cmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMoY29u
c3QgTGluZUJveCYsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRvcExl
ZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIERpc3BsYXlCb3hlcyYpOworICAgIHZvaWQgY29s
bGVjdElua092ZXJmbG93Rm9ySW5saW5lQm94ZXMoY29uc3QgTGluZUJveCYsIERpc3BsYXlCb3hl
cyYpOwogCiAgICAgY29uc3QgQ29udGFpbmVyQm94JiByb290KCkgY29uc3QgeyByZXR1cm4gbV9m
b3JtYXR0aW5nQ29udGV4dFJvb3Q7IH0KICAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1h
dHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlOyB9IAogCiAgICAg
Y29uc3QgQ29udGFpbmVyQm94JiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsKICAgICBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUmIG1fZm9ybWF0dGluZ1N0YXRlOwotICAgIEhhc2hNYXA8Y29uc3QgQm94
Kiwgc2l6ZV90PiBtX2lubGluZUJveFJ1bkluZGV4TWFwOworICAgIEhhc2hNYXA8Y29uc3QgQm94
Kiwgc2l6ZV90PiBtX2lubGluZUJveEluZGV4TWFwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGU1ODIwMTUwZWZiY2Qw
MTEzNGE0ZTBhYjU0NmNjY2ZhNjdjYzJkOTMuLmQwYTdiYmNlYmQwZTlkOTE1MTMxNWNkMjEyNGZk
YzA5MmZiNjdiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKQEAgLTMxLDExICszMSwxMSBAQAogI2luY2x1ZGUgIkZsb2F0aW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRGFtYWdlLmgi
CisjaW5jbHVkZSAiSW5saW5lRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlci5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2lu
Y2x1ZGUgIklubGluZUxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94QnVpbGRlci5o
IgotI2luY2x1ZGUgIklubGluZUxpbmVSdW4uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRlbS5o
IgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5o
IgpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91
dEluRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250CiAgICAgICAgICAg
ICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgoeyB9KTsKICAgICAgICAgICAgIGJveEdl
b21ldHJ5LnNldFZlcnRpY2FsTWFyZ2luKHsgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0
Qm94LT5pc0lubGluZUJveCgpKSB7Ci0gICAgICAgICAgICAvLyBUZXh0IHdyYXBwZXIgYm94ZXMg
KGFub255bW91cyBpbmxpbmUgbGV2ZWwgYm94ZXMpIGRvbid0IGhhdmUgYm94IGdlb21ldHJpZXMg
KHRoZXkgb25seSBnZW5lcmF0ZSBydW5zKS4KKyAgICAgICAgICAgIC8vIFRleHQgd3JhcHBlciBi
b3hlcyAoYW5vbnltb3VzIGlubGluZSBsZXZlbCBib3hlcykgZG9uJ3QgaGF2ZSBib3ggZ2VvbWV0
cmllcyAodGhleSBvbmx5IGdlbmVyYXRlIGJveGVzKS4KICAgICAgICAgICAgIGlmICghbGF5b3V0
Qm94LT5pc0lubGluZVRleHRCb3goKSkgewogICAgICAgICAgICAgICAgIC8vIElubGluZSBib3hl
cyAoPHNwYW4+KSBjYW4ndCBnZXQgc2l6ZWQvcG9zaXRpb25lZCB5ZXQuIEF0IHRoaXMgcG9pbnQg
d2UgY2FuIG9ubHkgY29tcHV0ZSB0aGVpciBtYXJnaW5zLCBib3JkZXJzIGFuZCBwYWRkaW5nLgog
ICAgICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKCpsYXlvdXRCb3gsIGNvbnN0
cmFpbnRzLmhvcml6b250YWwoKSk7CkBAIC0xODIsNyArMTgyLDcgQEAgTGF5b3V0VW5pdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6dXNlZENvbnRlbnRIZWlnaHQoKSBjb25zdAogdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMs
IExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UgbmVlZHNMYXlvdXRSYW5nZSwgY29uc3QgQ29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBhdXRvJiBmb3Jt
YXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICBmb3JtYXR0aW5nU3Rh
dGUucnVucygpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0
ZW1zKCkuc2l6ZSgpKTsKKyAgICBmb3JtYXR0aW5nU3RhdGUuYm94ZXMoKS5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygpLnNpemUoKSk7CiAgICAgSW5s
aW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCA9IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKTsK
ICAgICBzdHJ1Y3QgUHJldmlvdXNMaW5lIHsKICAgICAgICAgTGluZUJ1aWxkZXI6OklubGluZUl0
ZW1SYW5nZSByYW5nZTsKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZv
cgogICAgIC8vIHBsYWNlIHRoZSBvdXQtb2YtZmxvdyBib3ggYXQgdGhlIGxvZ2ljYWwgcmlnaHQg
cG9zaXRpb24uCiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0
YXRlKCk7CiAgICAgYXV0byYgbGluZXMgPSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKTsKLSAgICBh
dXRvJiBydW5zID0gZm9ybWF0dGluZ1N0YXRlLnJ1bnMoKTsKKyAgICBhdXRvJiBib3hlcyA9IGZv
cm1hdHRpbmdTdGF0ZS5ib3hlcygpOwogCiAgICAgZm9yIChhdXRvJiBvdXRPZkZsb3dCb3ggOiBv
dXRPZkZsb3dCb3hlcykgewogICAgICAgICBhdXRvJiBvdXRPZkZsb3dHZW9tZXRyeSA9IGZvcm1h
dHRpbmdTdGF0ZS5ib3hHZW9tZXRyeSgqb3V0T2ZGbG93Qm94KTsKQEAgLTI4NSwxMCArMjg1LDEw
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZv
ck91dE9mRmxvd0NvbnRlbnQoY29uc3QgRm9yCiAgICAgICAgIH0oKTsKIAogICAgICAgICBpZiAo
IXByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlz
IHRoZSBmaXJzdCAobm9uLWZsb2F0KWNoaWxkLiBMZXQncyBwbGFjZSBpdCB0byB0aGUgbGVmdCBv
ZiB0aGUgZmlyc3QgcnVuLgorICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgKG5vbi1m
bG9hdCljaGlsZC4gTGV0J3MgcGxhY2UgaXQgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IGJveC4K
ICAgICAgICAgICAgIC8vIDxkaXY+PGltZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj50ZXh0
IGNvbnRlbnQ8L2Rpdj4KLSAgICAgICAgICAgIEFTU0VSVChydW5zLnNpemUoKSk7Ci0gICAgICAg
ICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IHJ1bnNbMF0ubG9naWNh
bExlZnQoKSwgbGluZXNbMF0ubGluZUJveExvZ2ljYWxSZWN0KCkudG9wKCkgfSk7CisgICAgICAg
ICAgICBBU1NFUlQoYm94ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5
LnNldExvZ2ljYWxUb3BMZWZ0KHsgYm94ZXNbMF0ubG9naWNhbExlZnQoKSwgbGluZXNbMF0ubGlu
ZUJveExvZ2ljYWxSZWN0KCkudG9wKCkgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogCkBAIC0zMDIsMjQgKzMwMiwyNCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcgogICAg
ICAgICBBU1NFUlQocHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHMtPmlzSW5GbG93KCkpOwog
ICAgICAgICBhdXRvIHBsYWNlT3V0T2ZGbG93Qm94QWZ0ZXJQcmV2aW91c0luRmxvd0JveCA9IFsm
XSB7CiAgICAgICAgICAgICAvLyBUaGUgb3V0LW9mLWZsb3cgYm94IHNob3VsZCBiZSBwbGFjZWQg
YWZ0ZXIgdGhpcyBpbmZsb3cgYm94LgotICAgICAgICAgICAgLy8gU2tpcCB0byB0aGUgbGFzdCBy
dW4gb2YgdGhpcyBsYXlvdXQgYm94LiBUaGUgbGFzdCBydW4ncyBnZW9tZXRyeSBpcyB1c2VkIHRv
IGNvbXB1dGUgdGhlIG91dC1vZi1mbG93IGJveCdzIHN0YXRpYyBwb3NpdGlvbi4KLSAgICAgICAg
ICAgIHNpemVfdCBsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94ID0gMDsKLSAgICAgICAg
ICAgIGZvciAoOyBsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94IDwgcnVucy5zaXplKCkg
JiYgJnJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveF0ubGF5b3V0Qm94KCkgIT0g
cHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHM7ICsrbGFzdFJ1bkluZGV4T25QcmV2aW91c0xh
eW91dEJveCkgeyB9Ci0gICAgICAgICAgICBpZiAobGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91
dEJveCA9PSBydW5zLnNpemUoKSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJbiB2ZXJ5
IHJhcmUgY2FzZXMsIHRoZSBwcmV2aW91cyBib3gncyBjb250ZW50IG1pZ2h0IGhhdmUgYmVlbiBj
b21wbGV0ZWx5IGNvbGxhcHNlZCBhbmQgbGVmdCB1cyB3aXRoIG5vIHJ1bi4KKyAgICAgICAgICAg
IC8vIFNraXAgdG8gdGhlIGxhc3QgYm94IG9mIHRoaXMgbGF5b3V0IGJveC4gVGhlIGxhc3QgYm94
J3MgZ2VvbWV0cnkgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBvdXQtb2YtZmxvdyBib3gncyBzdGF0
aWMgcG9zaXRpb24uCisgICAgICAgICAgICBzaXplX3QgbGFzdEJveEluZGV4T25QcmV2aW91c0xh
eW91dEJveCA9IDA7CisgICAgICAgICAgICBmb3IgKDsgbGFzdEJveEluZGV4T25QcmV2aW91c0xh
eW91dEJveCA8IGJveGVzLnNpemUoKSAmJiAmYm94ZXNbbGFzdEJveEluZGV4T25QcmV2aW91c0xh
eW91dEJveF0ubGF5b3V0Qm94KCkgIT0gcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHM7ICsr
bGFzdEJveEluZGV4T25QcmV2aW91c0xheW91dEJveCkgeyB9CisgICAgICAgICAgICBpZiAobGFz
dEJveEluZGV4T25QcmV2aW91c0xheW91dEJveCA9PSBib3hlcy5zaXplKCkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogSW4gdmVyeSByYXJlIGNhc2VzLCB0aGUgcHJldmlvdXMgYm94J3Mg
Y29udGVudCBtaWdodCBoYXZlIGJlZW4gY29tcGxldGVseSBjb2xsYXBzZWQgYW5kIGxlZnQgdXMg
d2l0aCBubyBib3guCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQo
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBm
b3IgKDsgbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCA8IHJ1bnMuc2l6ZSgpICYmICZy
dW5zW2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3hdLmxheW91dEJveCgpID09IHByZXZp
b3VzQ29udGVudFNraXBwaW5nRmxvYXRzOyArK2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRC
b3gpIHsgfQotICAgICAgICAgICAgICAgIC0tbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJv
eDsKLSAgICAgICAgICAgIC8vIExldCdzIGNoZWNrIGlmIHRoZSBwcmV2aW91cyBydW4gaXMgdGhl
IGxhc3QgcnVuIG9uIHRoZSBjdXJyZW50IGxpbmUgYW5kIHVzZSB0aGUgbmV4dCBydW4ncyBsZWZ0
IGluc3RlYWQuCi0gICAgICAgICAgICBhdXRvJiBwcmV2aW91c1J1biA9IHJ1bnNbbGFzdFJ1bklu
ZGV4T25QcmV2aW91c0xheW91dEJveF07Ci0gICAgICAgICAgICBhdXRvKiBuZXh0UnVuID0gbGFz
dFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCArIDEgPCBydW5zLnNpemUoKSA/ICZydW5zW2xh
c3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggKyAxXSA6IG51bGxwdHI7Ci0KLSAgICAgICAg
ICAgIGlmIChuZXh0UnVuICYmIG5leHRSdW4tPmxpbmVJbmRleCgpID09IHByZXZpb3VzUnVuLmxp
bmVJbmRleCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gUHJldmlvdXMgYW5kIG5leHQgcnVucyBh
cmUgb24gdGhlIHNhbWUgbGluZS4gVGhlIG91dC1vZi1mbG93IGJveCBpcyByaWdodCBhdCB0aGUg
cHJldmlvdXMgcnVuJ3MgbG9naWNhbCByaWdodC4KKyAgICAgICAgICAgIGZvciAoOyBsYXN0Qm94
SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94IDwgYm94ZXMuc2l6ZSgpICYmICZib3hlc1tsYXN0Qm94
SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94XS5sYXlvdXRCb3goKSA9PSBwcmV2aW91c0NvbnRlbnRT
a2lwcGluZ0Zsb2F0czsgKytsYXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94KSB7IH0KKyAg
ICAgICAgICAgICAgICAtLWxhc3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3g7CisgICAgICAg
ICAgICAvLyBMZXQncyBjaGVjayBpZiB0aGUgcHJldmlvdXMgYm94IGlzIHRoZSBsYXN0IGJveCBv
biB0aGUgY3VycmVudCBsaW5lIGFuZCB1c2UgdGhlIG5leHQgYm94J3MgbGVmdCBpbnN0ZWFkLgor
ICAgICAgICAgICAgYXV0byYgcHJldmlvdXNCb3ggPSBib3hlc1tsYXN0Qm94SW5kZXhPblByZXZp
b3VzTGF5b3V0Qm94XTsKKyAgICAgICAgICAgIGF1dG8qIG5leHRCb3ggPSBsYXN0Qm94SW5kZXhP
blByZXZpb3VzTGF5b3V0Qm94ICsgMSA8IGJveGVzLnNpemUoKSA/ICZib3hlc1tsYXN0Qm94SW5k
ZXhPblByZXZpb3VzTGF5b3V0Qm94ICsgMV0gOiBudWxscHRyOworCisgICAgICAgICAgICBpZiAo
bmV4dEJveCAmJiBuZXh0Qm94LT5saW5lSW5kZXgoKSA9PSBwcmV2aW91c0JveC5saW5lSW5kZXgo
KSkgeworICAgICAgICAgICAgICAgIC8vIFByZXZpb3VzIGFuZCBuZXh0IGJveGVzIGFyZSBvbiB0
aGUgc2FtZSBsaW5lLiBUaGUgb3V0LW9mLWZsb3cgYm94IGlzIHJpZ2h0IGF0IHRoZSBwcmV2aW91
cyBib3gncyBsb2dpY2FsIHJpZ2h0LgogICAgICAgICAgICAgICAgIC8vIDxkaXY+dGV4dDxpbWcg
c3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+Y29udGVudDwvZGl2PgotICAgICAgICAgICAgICAg
IGF1dG8gbG9naWNhbExlZnQgPSBwcmV2aW91c1J1bi5sb2dpY2FsUmlnaHQoKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGxvZ2ljYWxMZWZ0ID0gcHJldmlvdXNCb3gubG9naWNhbFJpZ2h0KCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzLT5pc0lubGlu
ZUJveCgpICYmICFwcmV2aW91c0NvbnRlbnRTa2lwcGluZ0Zsb2F0cy0+aXNBbm9ueW1vdXMoKSkg
ewogICAgICAgICAgICAgICAgICAgICAvLyA8ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAg
IC8vIG9yCkBAIC0zMjksMjcgKzMyOSwyNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcgogICAg
ICAgICAgICAgICAgICAgICAgICAgPyBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94TGVmdChpbmxpbmVC
b3hCb3hHZW9tZXRyeSkgKyBpbmxpbmVCb3hCb3hHZW9tZXRyeS5jb250ZW50Qm94TGVmdCgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICA6IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGlubGlu
ZUJveEJveEdlb21ldHJ5KS5yaWdodCgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IGxvZ2ljYWxMZWZ0LCBs
aW5lc1twcmV2aW91c1J1bi5saW5lSW5kZXgoKV0ubGluZUJveExvZ2ljYWxSZWN0KCkudG9wKCkg
fSk7CisgICAgICAgICAgICAgICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQo
eyBsb2dpY2FsTGVmdCwgbGluZXNbcHJldmlvdXNCb3gubGluZUluZGV4KCldLmxpbmVCb3hMb2dp
Y2FsUmVjdCgpLnRvcCgpIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKG5leHRSdW4pIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUg
b3V0IG9mIGZsb3cgYm94IGlzIHBsYWNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxp
bmUgKHdoZXJlIHRoZSBmaXJzdCBydW4gb24gdGhlIGxpbmUgaXMpLgorICAgICAgICAgICAgaWYg
KG5leHRCb3gpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgb3V0IG9mIGZsb3cgYm94IGlzIHBs
YWNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUgKHdoZXJlIHRoZSBmaXJzdCBi
b3ggb24gdGhlIGxpbmUgaXMpLgogICAgICAgICAgICAgICAgIC8vIDxkaXY+dGV4dDxicj48aW1n
IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0
ZSI+Y29udGVudDwvZGl2PgotICAgICAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExv
Z2ljYWxUb3BMZWZ0KHsgbmV4dFJ1bi0+bG9naWNhbExlZnQoKSwgbGluZXNbbmV4dFJ1bi0+bGlu
ZUluZGV4KCldLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgpIH0pOworICAgICAgICAgICAgICAg
IG91dE9mRmxvd0dlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgbmV4dEJveC0+bG9naWNhbExl
ZnQoKSwgbGluZXNbbmV4dEJveC0+bGluZUluZGV4KCldLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRv
cCgpIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgYXV0byYgbGFzdExpbmVMb2dpY2FsUmVjdCA9IGxpbmVzW3ByZXZpb3VzUnVuLmxpbmVJ
bmRleCgpXS5saW5lQm94TG9naWNhbFJlY3QoKTsKKyAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5l
TG9naWNhbFJlY3QgPSBsaW5lc1twcmV2aW91c0JveC5saW5lSW5kZXgoKV0ubGluZUJveExvZ2lj
YWxSZWN0KCk7CiAgICAgICAgICAgICAvLyBUaGlzIG91dC1vZi1mbG93IGJveCBpcyB0aGUgbGFz
dCBib3guCiAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGlzTGluZUJyZWFrIGluc3RlYWQgdG8g
Y292ZXIgcHJlc2VydmVkIG5ldyBsaW5lcyB0b28uCi0gICAgICAgICAgICBpZiAocHJldmlvdXNS
dW4ubGF5b3V0Qm94KCkuaXNMaW5lQnJlYWtCb3goKSkgeworICAgICAgICAgICAgaWYgKHByZXZp
b3VzQm94LmxheW91dEJveCgpLmlzTGluZUJyZWFrQm94KCkpIHsKICAgICAgICAgICAgICAgICAv
LyA8ZGl2PnRleHQ8YnI+PGltZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj48aW1nIHN0eWxl
PSJwb3NpdGlvbjogYWJzb2x1dGUiPjwvZGl2PgogICAgICAgICAgICAgICAgIG91dE9mRmxvd0dl
b21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgbGFzdExpbmVMb2dpY2FsUmVjdC5sZWZ0KCksIGxh
c3RMaW5lTG9naWNhbFJlY3QuYm90dG9tKCkgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IFdlIG1heSBuZWVkIHRvIGNoZWNr
IGlmIHRoaXMgYm94IGFjdHVhbGx5IGZpdHMgdGhlIGxhc3QgbGluZSBhbmQgbW92ZSBpdCBvdmVy
IHRvIHRoZSAibmV4dCIgbGluZS4KLSAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExv
Z2ljYWxUb3BMZWZ0KHsgcHJldmlvdXNSdW4ubG9naWNhbFJpZ2h0KCksIGxhc3RMaW5lTG9naWNh
bFJlY3QudG9wKCkgfSk7CisgICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2Fs
VG9wTGVmdCh7IHByZXZpb3VzQm94LmxvZ2ljYWxSaWdodCgpLCBsYXN0TGluZUxvZ2ljYWxSZWN0
LnRvcCgpIH0pOwogICAgICAgICB9OwogICAgICAgICBwbGFjZU91dE9mRmxvd0JveEFmdGVyUHJl
dmlvdXNJbkZsb3dCb3goKTsKICAgICB9CkBAIC01NzcsNyArNTc3LDcgQEAgSW5saW5lUmVjdCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29u
c3QgTGluZUJ1aWwKIAogICAgIGF1dG8gaW5saW5lQ29udGVudEJ1aWxkZXIgPSBJbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXIgeyByb290KCksIGZvcm1hdHRpbmdTdGF0ZSB9OwogICAgIGF1dG8g
Y3VycmVudExpbmVJbmRleCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsKLSAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkUnVucyhpbmxpbmVDb250ZW50QnVpbGRlci5idWlsZChsaW5lQ29u
dGVudCwgbGluZUFuZExpbmVCb3gubGluZUJveCwgbGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQo
KSwgY3VycmVudExpbmVJbmRleCkpOworICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRCb3hlcyhpbmxp
bmVDb250ZW50QnVpbGRlci5idWlsZChsaW5lQ29udGVudCwgbGluZUFuZExpbmVCb3gubGluZUJv
eCwgbGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQoKSwgY3VycmVudExpbmVJbmRleCkpOwogICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lQm94KFdURk1vdmUobGluZUFuZExpbmVCb3gubGluZUJv
eCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lKGxpbmVBbmRMaW5lQm94LmxpbmUpOwog
CkBAIC01ODksMTYgKzU4OSwxNiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjppbnZh
bGlkYXRlRm9ybWF0dGluZ1N0YXRlKCkKICAgICBpZiAoIW1fbGluZURhbWFnZSkgewogICAgICAg
ICAvLyBOb24tZW1wdHkgZm9ybWF0dGluZyBzdGF0ZSB3aXRoIG5vIGRhbWFnZSBtZWFucyB3ZSBh
cmUgdHJ5aW5nIHRvIGxheW91dCBhIGNsZWFuIHRyZWUuCiAgICAgICAgIC8vIEZJWE1FOiBBZGQg
QVNTRVJUKGZvcm1hdHRpbmdTdGF0ZSgpLmlubGluZUl0ZW1zKCkuaXNFbXB0eSgpKSB3aGVuIGFs
bCB0aGUgY29kZXBhdGhzIGFyZSBjb3ZlcmVkLgotICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5j
bGVhckxpbmVBbmRSdW5zKCk7CisgICAgICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmNsZWFyTGluZUFu
ZEJveGVzKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gRklYTUU6IExpbmVzIGFu
ZCBydW5zIGFyZSBtb3ZlZCBvdXQgdG8gdW5kZXIgSW50ZWdyYXRpb246OklubGluZUNvbnRlbnQg
aW4gdGhlIGludGVncmF0aW9uIGNvZGVwYXRoLCBzbyBjbGVhckxpbmVBbmRSdW5zIGlzIG5vLW9w
LgorICAgIC8vIEZJWE1FOiBMaW5lcyBhbmQgYm94ZXMgYXJlIG1vdmVkIG91dCB0byB1bmRlciBJ
bnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCBpbiB0aGUgaW50ZWdyYXRpb24gY29kZXBhdGgsIHNv
IGNsZWFyTGluZUFuZEJveGVzIGlzIG5vLW9wLgogICAgIHN3aXRjaCAobV9saW5lRGFtYWdlLT50
eXBlKCkpIHsKICAgICBjYXNlIElubGluZURhbWFnZTo6VHlwZTo6TmVlZHNDb250ZW50VXBkYXRl
QW5kTGluZUxheW91dDoKICAgICAgICAgZm9ybWF0dGluZ1N0YXRlKCkuY2xlYXJJbmxpbmVJdGVt
cygpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIElubGluZURhbWFnZTo6VHlwZTo6
TmVlZHNMaW5lTGF5b3V0OgotICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5jbGVhckxpbmVBbmRS
dW5zKCk7CisgICAgICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmNsZWFyTGluZUFuZEJveGVzKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5saW5lRGFtYWdlOjpUeXBlOjpOZWVkc1ZlcnRpY2Fs
QWRqdXN0bWVudDoKICAgICBjYXNlIElubGluZURhbWFnZTo6VHlwZTo6TmVlZHNIb3Jpem9udGFs
QWRqdXN0bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgK
aW5kZXggZTJiMGU4ODFiY2NlZDZlZmZjZjg4ODMwNjA3ODU1MGFiNTkyNDNlZC4uOTY1ZTAxMmRm
ZjhiZTI1ZWUzYWY2NjBmN2JmYjk3MjFhYTU2YWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTI4LDE5ICsyOCwxOSBAQAogI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgi
CisjaW5jbHVkZSAiSW5saW5lRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIklubGluZURpc3BsYXlM
aW5lLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlbS5oIgogI2luY2x1ZGUgIklubGluZUxpbmVCb3gu
aCIKLSNpbmNsdWRlICJJbmxpbmVMaW5lUnVuLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogdXNpbmcgSW5s
aW5lSXRlbXMgPSBWZWN0b3I8SW5saW5lSXRlbT47Ci11c2luZyBEaXNwbGF5TGluZXMgPSBWZWN0
b3I8SW5saW5lRGlzcGxheTo6TGluZT47CiB1c2luZyBJbmxpbmVMaW5lQm94ZXMgPSBWZWN0b3I8
TGluZUJveD47Ci11c2luZyBJbmxpbmVSdW5zID0gVmVjdG9yPFJ1bj47Cit1c2luZyBEaXNwbGF5
TGluZXMgPSBWZWN0b3I8SW5saW5lRGlzcGxheTo6TGluZT47Cit1c2luZyBEaXNwbGF5Qm94ZXMg
PSBWZWN0b3I8SW5saW5lRGlzcGxheTo6Qm94PjsKIAogLy8gSW5saW5lRm9ybWF0dGluZ1N0YXRl
IGhvbGRzIHRoZSBzdGF0ZSBmb3IgYSBwYXJ0aWN1bGFyIGlubGluZSBmb3JtYXR0aW5nIGNvbnRl
eHQgdHJlZS4KIGNsYXNzIElubGluZUZvcm1hdHRpbmdTdGF0ZSA6IHB1YmxpYyBGb3JtYXR0aW5n
U3RhdGUgewpAQCAtNTMsMzAgKzUzLDMwIEBAIHB1YmxpYzoKICAgICBjb25zdCBJbmxpbmVJdGVt
cyYgaW5saW5lSXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW1zOyB9CiAgICAgdm9p
ZCBhZGRJbmxpbmVJdGVtKElubGluZUl0ZW0mJiBpbmxpbmVJdGVtKSB7IG1faW5saW5lSXRlbXMu
YXBwZW5kKFdURk1vdmUoaW5saW5lSXRlbSkpOyB9CiAKKyAgICBjb25zdCBJbmxpbmVMaW5lQm94
ZXMmIGxpbmVCb3hlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzOyB9CisgICAgdm9pZCBh
ZGRMaW5lQm94KExpbmVCb3gmJiBsaW5lQm94KSB7IG1fbGluZUJveGVzLmFwcGVuZChXVEZNb3Zl
KGxpbmVCb3gpKTsgfQorCiAgICAgY29uc3QgRGlzcGxheUxpbmVzJiBsaW5lcygpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGxheUxpbmVzOyB9CiAgICAgRGlzcGxheUxpbmVzJiBsaW5lcygpIHsgcmV0
dXJuIG1fZGlzcGxheUxpbmVzOyB9CiAgICAgdm9pZCBhZGRMaW5lKGNvbnN0IElubGluZURpc3Bs
YXk6OkxpbmUmIGxpbmUpIHsgbV9kaXNwbGF5TGluZXMuYXBwZW5kKGxpbmUpOyB9CiAKLSAgICBj
b25zdCBJbmxpbmVMaW5lQm94ZXMmIGxpbmVCb3hlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJv
eGVzOyB9Ci0gICAgdm9pZCBhZGRMaW5lQm94KExpbmVCb3gmJiBsaW5lQm94KSB7IG1fbGluZUJv
eGVzLmFwcGVuZChXVEZNb3ZlKGxpbmVCb3gpKTsgfQotCi0gICAgY29uc3QgSW5saW5lUnVucyYg
cnVucygpIGNvbnN0IHsgcmV0dXJuIG1fcnVuczsgfQotICAgIElubGluZVJ1bnMmIHJ1bnMoKSB7
IHJldHVybiBtX3J1bnM7IH0KLSAgICB2b2lkIGFkZFJ1bnMoSW5saW5lUnVucyYmIHJ1bnMpIHsg
bV9ydW5zLmFwcGVuZFZlY3RvcihXVEZNb3ZlKHJ1bnMpKTsgfQorICAgIGNvbnN0IERpc3BsYXlC
b3hlcyYgYm94ZXMoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlCb3hlczsgfQorICAgIERpc3Bs
YXlCb3hlcyYgYm94ZXMoKSB7IHJldHVybiBtX2Rpc3BsYXlCb3hlczsgfQorICAgIHZvaWQgYWRk
Qm94ZXMoRGlzcGxheUJveGVzJiYgYm94ZXMpIHsgbV9kaXNwbGF5Qm94ZXMuYXBwZW5kVmVjdG9y
KFdURk1vdmUoYm94ZXMpKTsgfQogCiAgICAgdm9pZCBzZXRDbGVhckdhcEFmdGVyTGFzdExpbmUo
SW5saW5lTGF5b3V0VW5pdCB2ZXJ0aWNhbEdhcCk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBjbGVh
ckdhcEFmdGVyTGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2NsZWFyR2FwQWZ0ZXJMYXN0TGlu
ZTsgfQogCiAgICAgdm9pZCBjbGVhcklubGluZUl0ZW1zKCkgeyBtX2lubGluZUl0ZW1zLmNsZWFy
KCk7IH0KLSAgICB2b2lkIGNsZWFyTGluZUFuZFJ1bnMoKTsKKyAgICB2b2lkIGNsZWFyTGluZUFu
ZEJveGVzKCk7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiBwcml2YXRlOgogICAgIC8vIENh
Y2hlYWJsZSBpbnB1dCB0byBsaW5lIGxheW91dC4KICAgICBJbmxpbmVJdGVtcyBtX2lubGluZUl0
ZW1zOwotICAgIERpc3BsYXlMaW5lcyBtX2Rpc3BsYXlMaW5lczsKICAgICBJbmxpbmVMaW5lQm94
ZXMgbV9saW5lQm94ZXM7Ci0gICAgSW5saW5lUnVucyBtX3J1bnM7CisgICAgRGlzcGxheUxpbmVz
IG1fZGlzcGxheUxpbmVzOworICAgIERpc3BsYXlCb3hlcyBtX2Rpc3BsYXlCb3hlczsKICAgICBJ
bmxpbmVMYXlvdXRVbml0IG1fY2xlYXJHYXBBZnRlckxhc3RMaW5lIHsgMCB9OwogfTsKIApAQCAt
ODYsMTEgKzg2LDExIEBAIGlubGluZSB2b2lkIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6c2V0Q2xl
YXJHYXBBZnRlckxhc3RMaW5lKElubGluZUxheW91dFVuaXQgdmVyCiAgICAgbV9jbGVhckdhcEFm
dGVyTGFzdExpbmUgPSB2ZXJ0aWNhbEdhcDsKIH0KIAotaW5saW5lIHZvaWQgSW5saW5lRm9ybWF0
dGluZ1N0YXRlOjpjbGVhckxpbmVBbmRSdW5zKCkKK2lubGluZSB2b2lkIElubGluZUZvcm1hdHRp
bmdTdGF0ZTo6Y2xlYXJMaW5lQW5kQm94ZXMoKQogewotICAgIG1fZGlzcGxheUxpbmVzLmNsZWFy
KCk7CiAgICAgbV9saW5lQm94ZXMuY2xlYXIoKTsKLSAgICBtX3J1bnMuY2xlYXIoKTsKKyAgICBt
X2Rpc3BsYXlCb3hlcy5jbGVhcigpOworICAgIG1fZGlzcGxheUxpbmVzLmNsZWFyKCk7CiAgICAg
bV9jbGVhckdhcEFmdGVyTGFzdExpbmUgPSB7IH07CiB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgaW5s
aW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjpzaHJpbmtUb0ZpdCgpCiAgICAgbV9pbmxp
bmVJdGVtcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fZGlzcGxheUxpbmVzLnNocmlua1RvRml0KCk7
CiAgICAgbV9saW5lQm94ZXMuc2hyaW5rVG9GaXQoKTsKLSAgICBtX3J1bnMuc2hyaW5rVG9GaXQo
KTsKKyAgICBtX2Rpc3BsYXlCb3hlcy5zaHJpbmtUb0ZpdCgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lLmgKaW5kZXggYmJiZWUzNGJlODExYjM3OGVlYWRiMGIyM2YxOWMxM2UxODA4NGJh
MS4uZWE4MTI1NDhkY2Q2YzlhMDNjYjhjZmZjZTJkNTZlYWM1YzZjMjExNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmUuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Qm94LmgiCiAjaW5jbHVk
ZSAiSW5saW5lSXRlbS5oIgotI2luY2x1ZGUgIklubGluZUxpbmVSdW4uaCIKICNpbmNsdWRlICJJ
bmxpbmVUZXh0SXRlbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Myw3ICs4Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9naWNhbExlZnQ7IH0KICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
UmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCgpICsgbG9naWNhbFdpZHRoKCk7IH0K
IAotICAgICAgICBjb25zdCA6OldlYkNvcmU6OkxheW91dDo6UnVuOjpFeHBhbnNpb24mIGV4cGFu
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9CisgICAgICAgIGNvbnN0IElubGlu
ZURpc3BsYXk6OkJveDo6RXhwYW5zaW9uJiBleHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4
cGFuc2lvbjsgfQogCiAgICAgICAgIGJvb2wgaGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV90cmFpbGluZ1doaXRlc3BhY2VUeXBlICE9IFRyYWlsaW5nV2hpdGVzcGFjZTo6
Tm9uZTsgfQogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHRyYWlsaW5nV2hpdGVzcGFjZVdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV90cmFpbGluZ1doaXRlc3BhY2VXaWR0aDsgfQpAQCAtOTgsNyAr
OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZXhwYW5kKGNvbnN0IElubGluZVRleHRJdGVt
JiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwogICAgICAgICB2b2lkIG1vdmVIb3Jp
em9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV9sb2dpY2FsTGVmdCArPSBvZmZz
ZXQ7IH0KICAgICAgICAgdm9pZCBzaHJpbmtIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCB3
aWR0aCkgeyBtX2xvZ2ljYWxXaWR0aCAtPSB3aWR0aDsgfQotICAgICAgICB2b2lkIHNldEV4cGFu
c2lvbig6OldlYkNvcmU6OkxheW91dDo6UnVuOjpFeHBhbnNpb24gZXhwYW5zaW9uKSB7IG1fZXhw
YW5zaW9uID0gZXhwYW5zaW9uOyB9CisgICAgICAgIHZvaWQgc2V0RXhwYW5zaW9uKElubGluZURp
c3BsYXk6OkJveDo6RXhwYW5zaW9uIGV4cGFuc2lvbikgeyBtX2V4cGFuc2lvbiA9IGV4cGFuc2lv
bjsgfQogICAgICAgICB2b2lkIHNldE5lZWRzSHlwaGVuKElubGluZUxheW91dFVuaXQgaHlwaGVu
TG9naWNhbFdpZHRoKTsKIAogICAgICAgICBlbnVtIGNsYXNzIFRyYWlsaW5nV2hpdGVzcGFjZSB7
CkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICBUcmFpbGluZ1doaXRlc3BhY2Ug
bV90cmFpbGluZ1doaXRlc3BhY2VUeXBlIHsgVHJhaWxpbmdXaGl0ZXNwYWNlOjpOb25lIH07CiAg
ICAgICAgIElubGluZUxheW91dFVuaXQgbV90cmFpbGluZ1doaXRlc3BhY2VXaWR0aCB7IDAgfTsK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxUZXh0PiBtX3RleHRDb250ZW50OwotICAgICAgICA6Oldl
YkNvcmU6OkxheW91dDo6UnVuOjpFeHBhbnNpb24gbV9leHBhbnNpb247CisgICAgICAgIElubGlu
ZURpc3BsYXk6OkJveDo6RXhwYW5zaW9uIG1fZXhwYW5zaW9uOwogICAgIH07CiAgICAgdXNpbmcg
UnVuTGlzdCA9IFZlY3RvcjxSdW4sIDEwPjsKICAgICBjb25zdCBSdW5MaXN0JiBydW5zKCkgY29u
c3QgeyByZXR1cm4gbV9ydW5zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUJveC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YzkwNDU2OTgzZmZiMzNmNTg2ZWMwMDM1YzNi
Y2VmYzQ1YjdmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaApAQCAtMCww
ICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJbmxpbmVSZWN0LmgiCisjaW5jbHVk
ZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBJbmxpbmVEaXNwbGF5IHsKKworc3RydWN0IEJveCB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgIHN0cnVjdCBUZXh0IHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgVGV4
dChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxD
b250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9vbCBo
YXNIeXBoZW4gPSBmYWxzZSk7CisKKyAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydDsgfQorICAgICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQo
KSArIGxlbmd0aCgpOyB9CisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2xlbmd0aDsgfQorICAgICAgICBTdHJpbmdWaWV3IG9yaWdpbmFsQ29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZ1ZpZXcobV9vcmlnaW5hbENvbnRlbnQpLnN1YnN0cmluZyhtX3N0YXJ0LCBt
X2xlbmd0aCk7IH0KKyAgICAgICAgU3RyaW5nVmlldyByZW5kZXJlZENvbnRlbnQoKSBjb25zdCB7
IHJldHVybiBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyLmlzTnVsbCgpID8gb3JpZ2luYWxDb250
ZW50KCkgOiBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyOyB9CisKKyAgICAgICAgYm9vbCBoYXNI
eXBoZW4oKSBjb25zdCB7IHJldHVybiBtX2hhc0h5cGhlbjsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgc2l6ZV90IG1fc3RhcnQgeyAwIH07CisgICAgICAgIHNpemVfdCBtX2xlbmd0aCB7IDAg
fTsKKyAgICAgICAgYm9vbCBtX2hhc0h5cGhlbiB7IGZhbHNlIH07CisgICAgICAgIFN0cmluZyBt
X29yaWdpbmFsQ29udGVudDsKKyAgICAgICAgU3RyaW5nIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5k
ZXI7CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIFRleHQsCisgICAg
ICAgIFNvZnRMaW5lQnJlYWssCisgICAgICAgIExpbmVCcmVha0JveCwKKyAgICAgICAgQXRvbWlj
SW5saW5lTGV2ZWxCb3gsCisgICAgICAgIE5vblJvb3RJbmxpbmVCb3gsCisgICAgICAgIFJvb3RJ
bmxpbmVCb3gsCisgICAgICAgIEdlbmVyaWNJbmxpbmVMZXZlbEJveAorICAgIH07CisgICAgc3Ry
dWN0IEV4cGFuc2lvbjsKKyAgICBCb3goc2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29uc3QgTGF5
b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OklubGluZVJlY3QmLCBjb25zdCBMYXlvdXQ6OklubGlu
ZVJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24sIHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBzdGQ6
Om51bGxvcHQsIGJvb2wgaGFzQ29udGVudCA9IHRydWUpOworCisgICAgYm9vbCBpc1RleHQoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6VGV4dDsgfQorICAgIGJvb2wgaXNTb2Z0TGlu
ZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlNvZnRMaW5lQnJlYWs7IH0K
KyAgICBib29sIGlzTGluZUJyZWFrQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6
OkxpbmVCcmVha0JveDsgfQorICAgIGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBp
c1NvZnRMaW5lQnJlYWsoKSB8fCBpc0xpbmVCcmVha0JveCgpOyB9CisgICAgYm9vbCBpc0F0b21p
Y0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkF0b21pY0lu
bGluZUxldmVsQm94OyB9CisgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGlz
Tm9uUm9vdElubGluZUJveCgpIHx8IGlzUm9vdElubGluZUJveCgpOyB9CisgICAgYm9vbCBpc05v
blJvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Tm9uUm9vdElu
bGluZUJveDsgfQorICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0KKyAgICBib29sIGlzR2VuZXJpY0lubGluZUxl
dmVsQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkdlbmVyaWNJbmxpbmVMZXZl
bEJveDsgfQorICAgIGJvb2wgaXNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIGlzQXRv
bWljSW5saW5lTGV2ZWxCb3goKSB8fCBpc0xpbmVCcmVha0JveCgpIHx8IGlzSW5saW5lQm94KCkg
fHwgaXNHZW5lcmljSW5saW5lTGV2ZWxCb3goKTsgfQorICAgIGJvb2wgaXNOb25Sb290SW5saW5l
TGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBpc0lubGluZUxldmVsQm94KCkgJiYgIWlzUm9vdElu
bGluZUJveCgpOyB9CisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisK
KyAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KKwor
ICAgIGNvbnN0IExheW91dDo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2xvZ2ljYWxSZWN0OyB9CisgICAgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBpbmtPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3ZlcmZsb3c7IH0KKworICAgIExheW91dDo6SW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS50
b3AoKTsgfQorICAgIExheW91dDo6SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29u
c3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5ib3R0b20oKTsgfQorICAgIExheW91dDo6SW5saW5l
TGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkubGVm
dCgpOyB9CisgICAgTGF5b3V0OjpJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0
IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkucmlnaHQoKTsgfQorCisgICAgTGF5b3V0OjpJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkud2lk
dGgoKTsgfQorICAgIExheW91dDo6SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5oZWlnaHQoKTsgfQorCisgICAgdm9pZCBtb3ZlVmVy
dGljYWxseShMYXlvdXQ6OklubGluZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1fbG9naWNhbFJlY3Qu
bW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQorICAgIHZvaWQgYWRqdXN0SW5rT3ZlcmZsb3coY29u
c3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBjaGlsZEJvcmRlckJveCkgeyByZXR1cm4gbV9pbmtPdmVy
Zmxvdy5leHBhbmRUb0NvbnRhaW4oY2hpbGRCb3JkZXJCb3gpOyB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFRleHQ+JiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9CisgICAgY29uc3Qgc3RkOjpvcHRp
b25hbDxUZXh0PiYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQorCisgICAgc3RydWN0
IEV4cGFuc2lvbiB7CisgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yIGJlaGF2aW9yIHsgRGVmYXVs
dEV4cGFuc2lvbiB9OworICAgICAgICBMYXlvdXQ6OklubGluZUxheW91dFVuaXQgaG9yaXpvbnRh
bEV4cGFuc2lvbiB7IDAgfTsKKyAgICB9OworICAgIEV4cGFuc2lvbiBleHBhbnNpb24oKSBjb25z
dCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQorCisgICAgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91
dEJveCgpIGNvbnN0IHsgcmV0dXJuICptX2xheW91dEJveDsgfQorICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCk7IH0KKworICAg
IHNpemVfdCBsaW5lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRleDsgfQorCitwcml2
YXRlOgorICAgIGNvbnN0IHNpemVfdCBtX2xpbmVJbmRleCB7IDAgfTsKKyAgICBjb25zdCBUeXBl
IG1fdHlwZSB7IFR5cGU6OkdlbmVyaWNJbmxpbmVMZXZlbEJveCB9OworICAgIFdlYWtQdHI8Y29u
c3QgTGF5b3V0OjpCb3g+IG1fbGF5b3V0Qm94OworICAgIExheW91dDo6SW5saW5lUmVjdCBtX2xv
Z2ljYWxSZWN0OworICAgIExheW91dDo6SW5saW5lUmVjdCBtX2lua092ZXJmbG93OworICAgIGJv
b2wgbV9oYXNDb250ZW50IHsgdHJ1ZSB9OworICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFRleHQ+IG1fdGV4dDsKK307CisKK2lubGluZSBCb3g6OkJveChzaXpl
X3QgbGluZUluZGV4LCBUeXBlIHR5cGUsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNv
bnN0IExheW91dDo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QsIGNvbnN0IExheW91dDo6SW5saW5l
UmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lvbiBleHBhbnNpb24sIHN0ZDo6b3B0aW9uYWw8VGV4
dD4gdGV4dCwgYm9vbCBoYXNDb250ZW50KQorICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQor
ICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX2xheW91dEJveChtYWtlV2Vha1B0cihsYXlvdXRC
b3gpKQorICAgICwgbV9sb2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKKyAgICAsIG1faW5rT3ZlcmZs
b3coaW5rT3ZlcmZsb3cpCisgICAgLCBtX2hhc0NvbnRlbnQoaGFzQ29udGVudCkKKyAgICAsIG1f
ZXhwYW5zaW9uKGV4cGFuc2lvbikKKyAgICAsIG1fdGV4dCh0ZXh0KQoreworfQorCitpbmxpbmUg
Qm94OjpUZXh0OjpUZXh0KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hbENvbnRlbnQsIFN0cmluZyBhZGp1c3RlZENvbnRlbnRUb1JlbmRlciwgYm9vbCBo
YXNIeXBoZW4pCisgICAgOiBtX3N0YXJ0KHN0YXJ0KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQor
ICAgICwgbV9oYXNIeXBoZW4oaGFzSHlwaGVuKQorICAgICwgbV9vcmlnaW5hbENvbnRlbnQob3Jp
Z2luYWxDb250ZW50KQorICAgICwgbV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlcihhZGp1c3RlZENv
bnRlbnRUb1JlbmRlcikKK3sKK30KKworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZUxp
bmVSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L2Rpc3BsYXkvSW5saW5lTGluZVJ1bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
NTlhYTIwMzY0NmM1OWVkMDQyMzg5NzJhMDdkNzhiYzhiMjUzNmRmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lTGluZVJ1bi5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotCi0jaW5jbHVkZSAiSW5saW5lUmVjdC5o
IgotI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgIlRleHRGbGFncy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgTGF5b3V0IHsKLQotc3RydWN0IFJ1biB7Ci0gICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIHN0cnVjdCBUZXh0IHsKLSAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAg
VGV4dChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxDb250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9v
bCBoYXNIeXBoZW4gPSBmYWxzZSk7Ci0KLSAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydDsgfQotICAgICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3Rh
cnQoKSArIGxlbmd0aCgpOyB9Ci0gICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aDsgfQotICAgICAgICBTdHJpbmdWaWV3IG9yaWdpbmFsQ29udGVudCgpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZ1ZpZXcobV9vcmlnaW5hbENvbnRlbnQpLnN1YnN0cmluZyhtX3N0YXJ0
LCBtX2xlbmd0aCk7IH0KLSAgICAgICAgU3RyaW5nVmlldyByZW5kZXJlZENvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyLmlzTnVsbCgpID8gb3JpZ2luYWxD
b250ZW50KCkgOiBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyOyB9Ci0KLSAgICAgICAgYm9vbCBo
YXNIeXBoZW4oKSBjb25zdCB7IHJldHVybiBtX2hhc0h5cGhlbjsgfQotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgc2l6ZV90IG1fc3RhcnQgeyAwIH07Ci0gICAgICAgIHNpemVfdCBtX2xlbmd0aCB7
IDAgfTsKLSAgICAgICAgYm9vbCBtX2hhc0h5cGhlbiB7IGZhbHNlIH07Ci0gICAgICAgIFN0cmlu
ZyBtX29yaWdpbmFsQ29udGVudDsKLSAgICAgICAgU3RyaW5nIG1fYWRqdXN0ZWRDb250ZW50VG9S
ZW5kZXI7Ci0gICAgfTsKLQotICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIFRleHQsCi0g
ICAgICAgIFNvZnRMaW5lQnJlYWssCi0gICAgICAgIExpbmVCcmVha0JveCwKLSAgICAgICAgQXRv
bWljSW5saW5lTGV2ZWxCb3gsCi0gICAgICAgIE5vblJvb3RJbmxpbmVCb3gsCi0gICAgICAgIFJv
b3RJbmxpbmVCb3gsCi0gICAgICAgIEdlbmVyaWNJbmxpbmVMZXZlbEJveAotICAgIH07Ci0gICAg
c3RydWN0IEV4cGFuc2lvbjsKLSAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29uc3Qg
Qm94JiwgY29uc3QgSW5saW5lUmVjdCYsIGNvbnN0IElubGluZVJlY3QmIGlua092ZXJmbG93LCBF
eHBhbnNpb24sIHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQsIGJvb2wgaGFzQ29u
dGVudCA9IHRydWUpOwotCi0gICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gVHlwZTo6VGV4dDsgfQotICAgIGJvb2wgaXNTb2Z0TGluZUJyZWFrKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IFR5cGU6OlNvZnRMaW5lQnJlYWs7IH0KLSAgICBib29sIGlzTGluZUJyZWFr
Qm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkxpbmVCcmVha0JveDsgfQotICAg
IGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBpc1NvZnRMaW5lQnJlYWsoKSB8fCBp
c0xpbmVCcmVha0JveCgpOyB9Ci0gICAgYm9vbCBpc0F0b21pY0lubGluZUxldmVsQm94KCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkF0b21pY0lubGluZUxldmVsQm94OyB9Ci0gICAg
Ym9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGlzTm9uUm9vdElubGluZUJveCgpIHx8
IGlzUm9vdElubGluZUJveCgpOyB9Ci0gICAgYm9vbCBpc05vblJvb3RJbmxpbmVCb3goKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Tm9uUm9vdElubGluZUJveDsgfQotICAgIGJvb2wg
aXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlJvb3RJbmxp
bmVCb3g7IH0KLSAgICBib29sIGlzR2VuZXJpY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IFR5cGU6OkdlbmVyaWNJbmxpbmVMZXZlbEJveDsgfQotICAgIGJvb2wgaXNJ
bmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIGlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSB8
fCBpc0xpbmVCcmVha0JveCgpIHx8IGlzSW5saW5lQm94KCkgfHwgaXNHZW5lcmljSW5saW5lTGV2
ZWxCb3goKTsgfQotICAgIGJvb2wgaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJl
dHVybiBpc0lubGluZUxldmVsQm94KCkgJiYgIWlzUm9vdElubGluZUJveCgpOyB9Ci0gICAgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBib29sIGhhc0NvbnRlbnQo
KSBjb25zdCB7IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KLQotICAgIGNvbnN0IElubGluZVJlY3Qm
IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQotICAgIGNvbnN0
IElubGluZVJlY3QmIGlua092ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsg
fQotCi0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbG9n
aWNhbFJlY3QoKS50b3AoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEJvdHRvbSgp
IGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkuYm90dG9tKCk7IH0KLSAgICBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5sZWZ0KCk7
IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxv
Z2ljYWxSZWN0KCkucmlnaHQoKTsgfQotCi0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLndpZHRoKCk7IH0KLSAgICBJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmhl
aWdodCgpOyB9Ci0KLSAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgb2Zm
c2V0KSB7IG1fbG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQotICAgIHZvaWQg
YWRqdXN0SW5rT3ZlcmZsb3coY29uc3QgSW5saW5lUmVjdCYgY2hpbGRCb3JkZXJCb3gpIHsgcmV0
dXJuIG1faW5rT3ZlcmZsb3cuZXhwYW5kVG9Db250YWluKGNoaWxkQm9yZGVyQm94KTsgfQotCi0g
ICAgc3RkOjpvcHRpb25hbDxUZXh0PiYgdGV4dCgpIHsgcmV0dXJuIG1fdGV4dDsgfQotICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0K
LQotICAgIHN0cnVjdCBFeHBhbnNpb24gewotICAgICAgICBFeHBhbnNpb25CZWhhdmlvciBiZWhh
dmlvciB7IERlZmF1bHRFeHBhbnNpb24gfTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBob3Jp
em9udGFsRXhwYW5zaW9uIHsgMCB9OwotICAgIH07Ci0gICAgRXhwYW5zaW9uIGV4cGFuc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9Ci0KLSAgICBjb25zdCBCb3gmIGxheW91dEJv
eCgpIGNvbnN0IHsgcmV0dXJuICptX2xheW91dEJveDsgfQotICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCk7IH0KLQotICAgIHNp
emVfdCBsaW5lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRleDsgfQotCi1wcml2YXRl
OgotICAgIGNvbnN0IHNpemVfdCBtX2xpbmVJbmRleCB7IDAgfTsKLSAgICBjb25zdCBUeXBlIG1f
dHlwZSB7IFR5cGU6OkdlbmVyaWNJbmxpbmVMZXZlbEJveCB9OwotICAgIFdlYWtQdHI8Y29uc3Qg
TGF5b3V0OjpCb3g+IG1fbGF5b3V0Qm94OwotICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsK
LSAgICBJbmxpbmVSZWN0IG1faW5rT3ZlcmZsb3c7Ci0gICAgYm9vbCBtX2hhc0NvbnRlbnQgeyB0
cnVlIH07Ci0gICAgRXhwYW5zaW9uIG1fZXhwYW5zaW9uOwotICAgIHN0ZDo6b3B0aW9uYWw8VGV4
dD4gbV90ZXh0OwotfTsKLQotaW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIFR5cGUg
dHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgSW5saW5lUmVjdCYgbG9n
aWNhbFJlY3QsIGNvbnN0IElubGluZVJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24gZXhwYW5z
aW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+IHRleHQsIGJvb2wgaGFzQ29udGVudCkKLSAgICA6IG1f
bGluZUluZGV4KGxpbmVJbmRleCkKLSAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9sYXlvdXRC
b3gobWFrZVdlYWtQdHIobGF5b3V0Qm94KSkKLSAgICAsIG1fbG9naWNhbFJlY3QobG9naWNhbFJl
Y3QpCi0gICAgLCBtX2lua092ZXJmbG93KGlua092ZXJmbG93KQotICAgICwgbV9oYXNDb250ZW50
KGhhc0NvbnRlbnQpCi0gICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCi0gICAgLCBtX3RleHQo
dGV4dCkKLXsKLX0KLQotaW5saW5lIFJ1bjo6VGV4dDo6VGV4dChzaXplX3Qgc3RhcnQsIHNpemVf
dCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJpbmcgYWRqdXN0ZWRD
b250ZW50VG9SZW5kZXIsIGJvb2wgaGFzSHlwaGVuKQotICAgIDogbV9zdGFydChzdGFydCkKLSAg
ICAsIG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAsIG1faGFzSHlwaGVuKGhhc0h5cGhlbikKLSAgICAs
IG1fb3JpZ2luYWxDb250ZW50KG9yaWdpbmFsQ29udGVudCkKLSAgICAsIG1fYWRqdXN0ZWRDb250
ZW50VG9SZW5kZXIoYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIpCi17Ci19Ci0KLX0KLX0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90
YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXgg
ZWUzZWE5ZmVkMjc4MTJlZDY5OGNkNmIwYjNiZDJmOTJkZTU0Yzk5My4uODlmNjhhMmY5MGIxYjk1
NzFkMjhiYjRjYWVkOWQ1MWQzZTY1N2ZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xNjIsOCArMTYyLDggQEAgdm9pZCBUYWJsZUZvcm1h
dHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRVbml0IGF2YWlsYWJs
ZUhvcml6b24KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAo
Y2VsbEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZWUgPSBsYXlvdXRTdGF0
ZSgpLmZvcm1hdHRpbmdTdGF0ZUZvcklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNlbGxCb3gpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBydW4gOiBpbmxpbmVGb3JtYXR0aW5n
U3RhdGVlLnJ1bnMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW4ubW92ZVZlcnRp
Y2FsbHkoaW50cmluc2ljUGFkZGluZ1RvcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8mIGJveCA6IGlubGluZUZvcm1hdHRpbmdTdGF0ZWUuYm94ZXMoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib3gubW92ZVZlcnRpY2FsbHkoaW50cmluc2ljUGFkZGluZ1RvcCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmUgOiBpbmxpbmVGb3JtYXR0
aW5nU3RhdGVlLmxpbmVzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5tb3Zl
VmVydGljYWxseShpbnRyaW5zaWNQYWRkaW5nVG9wKTsKICAgICAgICAgICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uSW5saW5lQ29udGVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcAppbmRleCA3MzZjZDA1ZGFlODk1
ZDc0NGI4MjUwMmE0YjQyNzNjOWRmNTFhOGMwLi45ODI5YzM2MjgxNmI0ZDVjOGEzYzdmNTk4MTA2
ODRhZjVjYzNhZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcApA
QCAtNDMsMjMgKzQzLDIzIEBAIElubGluZUNvbnRlbnQ6OklubGluZUNvbnRlbnQoY29uc3QgTGlu
ZUxheW91dCYgbGluZUxheW91dCkKIAogYm9vbCBJbmxpbmVDb250ZW50OjpoYXNDb250ZW50KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQocnVucy5pc0VtcHR5KCkgfHwgcnVuc1swXS5pc1Jvb3RJbmxp
bmVCb3goKSk7Ci0gICAgcmV0dXJuIHJ1bnMuc2l6ZSgpID4gMTsKKyAgICBBU1NFUlQoYm94ZXMu
aXNFbXB0eSgpIHx8IGJveGVzWzBdLmlzUm9vdElubGluZUJveCgpKTsKKyAgICByZXR1cm4gYm94
ZXMuc2l6ZSgpID4gMTsKIH07CiAKLVdURjo6SXRlcmF0b3JSYW5nZTxjb25zdCBMYXlvdXQ6OlJ1
bio+IElubGluZUNvbnRlbnQ6OnJ1bnNGb3JSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdAor
V1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IElubGluZURpc3BsYXk6OkJveCo+IElubGluZUNvbnRl
bnQ6OmJveGVzRm9yUmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogRG8gc29tZXRoaW5nIGVmZmljaWVudCBlLmcuIHVzaW5nIGxpbmUgYm94ZXMuCi0gICAgaWYg
KHJ1bnMuaXNFbXB0eSgpKQorICAgIGlmIChib3hlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB7IG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICByZXR1cm4geyAmcnVucy5maXJzdCgpLCAmcnVu
cy5sYXN0KCkgKyAxIH07CisgICAgcmV0dXJuIHsgJmJveGVzLmZpcnN0KCksICZib3hlcy5sYXN0
KCkgKyAxIH07CiB9CiAKIElubGluZUNvbnRlbnQ6On5JbmxpbmVDb250ZW50KCkKIHsKICAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0
aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcnVu
IDogcnVucykKLSAgICAgICAgICAgIFRleHRQYWludGVyOjpyZW1vdmVHbHlwaERpc3BsYXlMaXN0
KHJ1bik7CisgICAgICAgIGZvciAoYXV0byYgYm94IDogYm94ZXMpCisgICAgICAgICAgICBUZXh0
UGFpbnRlcjo6cmVtb3ZlR2x5cGhEaXNwbGF5TGlzdChib3gpOwogICAgIH0KIH0KIApAQCAtNzgs
NDQgKzc4LDQ0IEBAIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgSW5saW5lQ29udGVudDo6Y29udGFp
bmluZ0Jsb2NrKCkgY29uc3QKICAgICByZXR1cm4gbV9saW5lTGF5b3V0LT5mbG93KCk7CiB9CiAK
LXNpemVfdCBJbmxpbmVDb250ZW50OjppbmRleEZvclJ1bihjb25zdCBMYXlvdXQ6OlJ1biYgcnVu
KSBjb25zdAorc2l6ZV90IElubGluZUNvbnRlbnQ6OmluZGV4Rm9yQm94KGNvbnN0IElubGluZURp
c3BsYXk6OkJveCYgYm94KSBjb25zdAogewotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KCZydW4gLSBydW5zLmJlZ2luKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4IDwg
cnVucy5zaXplKCkpOworICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KCZib3gg
LSBib3hlcy5iZWdpbigpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA8IGJveGVzLnNpemUo
KSk7CiAgICAgcmV0dXJuIGluZGV4OwogfQogCi1jb25zdCBMYXlvdXQ6OlJ1biogSW5saW5lQ29u
dGVudDo6Zmlyc3RSdW5Gb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkg
Y29uc3QKK2NvbnN0IElubGluZURpc3BsYXk6OkJveCogSW5saW5lQ29udGVudDo6Zmlyc3RCb3hG
b3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKIHsKLSAgICBh
dXRvIGluZGV4ID0gZmlyc3RSdW5JbmRleEZvckxheW91dEJveChsYXlvdXRCb3gpOwotICAgIHJl
dHVybiBpbmRleCA/ICZydW5zWyppbmRleF0gOiBudWxscHRyOworICAgIGF1dG8gaW5kZXggPSBm
aXJzdEJveEluZGV4Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgcmV0dXJuIGluZGV4ID8g
JmJveGVzWyppbmRleF0gOiBudWxscHRyOwogfQogCi1zdGQ6Om9wdGlvbmFsPHNpemVfdD4gSW5s
aW5lQ29udGVudDo6Zmlyc3RSdW5JbmRleEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYg
bGF5b3V0Qm94KSBjb25zdAorc3RkOjpvcHRpb25hbDxzaXplX3Q+IElubGluZUNvbnRlbnQ6OmZp
cnN0Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29u
c3QKIHsKICAgICBjb25zdGV4cHIgYXV0byBjYWNoZVRocmVzaG9sZCA9IDE2OwogCi0gICAgaWYg
KHJ1bnMuc2l6ZSgpIDwgY2FjaGVUaHJlc2hvbGQpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBydW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBydW4gPSBydW5z
W2ldOwotICAgICAgICAgICAgaWYgKCZydW4ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKKyAg
ICBpZiAoYm94ZXMuc2l6ZSgpIDwgY2FjaGVUaHJlc2hvbGQpIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBib3hlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYXV0byYgYm94
ID0gYm94ZXNbaV07CisgICAgICAgICAgICBpZiAoJmJveC5sYXlvdXRCb3goKSA9PSAmbGF5b3V0
Qm94KQogICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogICAgIAotICAgIGlmICghbV9maXJzdFJ1bkluZGV4Q2FjaGUpIHsKLSAg
ICAgICAgbV9maXJzdFJ1bkluZGV4Q2FjaGUgPSBtYWtlVW5pcXVlPEZpcnN0UnVuSW5kZXhDYWNo
ZT4oKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBydW5zLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBhdXRvJiBydW4gPSBydW5zW2ldOwotICAgICAgICAgICAgaWYgKHJ1bi5p
c1Jvb3RJbmxpbmVCb3goKSkKKyAgICBpZiAoIW1fZmlyc3RCb3hJbmRleENhY2hlKSB7CisgICAg
ICAgIG1fZmlyc3RCb3hJbmRleENhY2hlID0gbWFrZVVuaXF1ZTxGaXJzdEJveEluZGV4Q2FjaGU+
KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYm94ZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIGF1dG8mIGJveCA9IGJveGVzW2ldOworICAgICAgICAgICAgaWYgKGJveC5p
c1Jvb3RJbmxpbmVCb3goKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IG1fZmlyc3RSdW5JbmRleENhY2hlLT5hZGQocnVuLmxheW91dEJveCgpLCBpKTsKKyAgICAgICAg
ICAgIG1fZmlyc3RCb3hJbmRleENhY2hlLT5hZGQoYm94LmxheW91dEJveCgpLCBpKTsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGF1dG8gaXQgPSBtX2ZpcnN0UnVuSW5kZXhDYWNoZS0+ZmluZChs
YXlvdXRCb3gpOwotICAgIGlmIChpdCA9PSBtX2ZpcnN0UnVuSW5kZXhDYWNoZS0+ZW5kKCkpCisg
ICAgYXV0byBpdCA9IG1fZmlyc3RCb3hJbmRleENhY2hlLT5maW5kKGxheW91dEJveCk7CisgICAg
aWYgKGl0ID09IG1fZmlyc3RCb3hJbmRleENhY2hlLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIHJldHVybiBpdC0+dmFsdWU7CkBAIC0xMjcsMTEgKzEyNywxMSBAQCBjb25zdCBW
ZWN0b3I8c2l6ZV90PiYgSW5saW5lQ29udGVudDo6bm9uUm9vdElubGluZUJveEluZGV4ZXNGb3JM
YXlvdXRCb3goY29uc3QgTAogCiAgICAgaWYgKCFtX2lubGluZUJveEluZGV4Q2FjaGUpIHsKICAg
ICAgICAgbV9pbmxpbmVCb3hJbmRleENhY2hlID0gbWFrZVVuaXF1ZTxJbmxpbmVCb3hJbmRleENh
Y2hlPigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJ1bnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbaV07Ci0gICAgICAgICAgICBpZiAoIXJ1
bi5pc05vblJvb3RJbmxpbmVCb3goKSkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
b3hlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYXV0byYgYm94ID0gYm94ZXNbaV07Cisg
ICAgICAgICAgICBpZiAoIWJveC5pc05vblJvb3RJbmxpbmVCb3goKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIG1faW5saW5lQm94SW5kZXhDYWNoZS0+ZW5zdXJlKHJ1
bi5sYXlvdXRCb3goKSwgWyZdIHsKKyAgICAgICAgICAgIG1faW5saW5lQm94SW5kZXhDYWNoZS0+
ZW5zdXJlKGJveC5sYXlvdXRCb3goKSwgWyZdIHsKICAgICAgICAgICAgICAgICByZXR1cm4gVmVj
dG9yPHNpemVfdD4geyB9OwogICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChp
KTsKICAgICAgICAgfQpAQCAtMTUwLDEzICsxNTAsMTMgQEAgY29uc3QgVmVjdG9yPHNpemVfdD4m
IElubGluZUNvbnRlbnQ6Om5vblJvb3RJbmxpbmVCb3hJbmRleGVzRm9yTGF5b3V0Qm94KGNvbnN0
IEwKIAogdm9pZCBJbmxpbmVDb250ZW50OjpyZWxlYXNlQ2FjaGVzKCkKIHsKLSAgICBtX2ZpcnN0
UnVuSW5kZXhDYWNoZSA9IHsgfTsKKyAgICBtX2ZpcnN0Qm94SW5kZXhDYWNoZSA9IHsgfTsKICAg
ICBtX2lubGluZUJveEluZGV4Q2FjaGUgPSB7IH07CiB9CiAKIHZvaWQgSW5saW5lQ29udGVudDo6
c2hyaW5rVG9GaXQoKQogewotICAgIHJ1bnMuc2hyaW5rVG9GaXQoKTsKKyAgICBib3hlcy5zaHJp
bmtUb0ZpdCgpOwogICAgIGxpbmVzLnNocmlua1RvRml0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNv
bnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnQuaAppbmRleCA5ZmMwZjBmYTljYTNiMzEwNzJhNzllZDFlNDdjMDRj
YzcyZjQwZWM3Li4yY2ZjZjJiNjQ5N2YyNWQ5MjA5YTU0Y2Q1Y2U3MDcyNDk3OTlhMmNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25JbmxpbmVDb250ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIklubGluZUxp
bmVSdW4uaCIKKyNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0
SW50ZWdyYXRpb25MaW5lLmgiCiAjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00Myw2ICs0MywxMCBAQCBuYW1lc3BhY2UgTGF5b3V0IHsK
IGNsYXNzIEJveDsKIH0KIAorbmFtZXNwYWNlIElubGluZURpc3BsYXkgeworc3RydWN0IEJveDsK
K30gCisKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKIGNsYXNzIExpbmVMYXlvdXQ7
CkBAIC01MSwzMCArNTUsMzAgQEAgc3RydWN0IElubGluZUNvbnRlbnQgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbmxpbmVDb250ZW50PiB7CiAgICAgc3RhdGljIFJlZjxJbmxpbmVDb250ZW50PiBjcmVh
dGUoY29uc3QgTGluZUxheW91dCYgbGluZUxheW91dCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bmxpbmVDb250ZW50KGxpbmVMYXlvdXQpKTsgfQogICAgIH5JbmxpbmVDb250ZW50KCk7CiAKLSAg
ICB1c2luZyBSdW5zID0gVmVjdG9yPExheW91dDo6UnVuPjsKKyAgICB1c2luZyBCb3hlcyA9IFZl
Y3RvcjxJbmxpbmVEaXNwbGF5OjpCb3g+OwogICAgIHVzaW5nIExpbmVzID0gVmVjdG9yPExpbmU+
OwogCi0gICAgUnVucyBydW5zOworICAgIEJveGVzIGJveGVzOwogICAgIExpbmVzIGxpbmVzOwog
CiAgICAgZmxvYXQgY2xlYXJHYXBBZnRlckxhc3RMaW5lIHsgMCB9OwogCiAgICAgYm9vbCBoYXND
b250ZW50KCkgY29uc3Q7CiAgICAgCi0gICAgY29uc3QgTGluZSYgbGluZUZvclJ1bihjb25zdCBM
YXlvdXQ6OlJ1biYgcnVuKSBjb25zdCB7IHJldHVybiBsaW5lc1tydW4ubGluZUluZGV4KCldOyB9
Ci0gICAgV1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IExheW91dDo6UnVuKj4gcnVuc0ZvclJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OworICAgIGNvbnN0IExpbmUmIGxpbmVGb3JCb3goY29u
c3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gpIGNvbnN0IHsgcmV0dXJuIGxpbmVzW2JveC5saW5l
SW5kZXgoKV07IH0KKyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8Y29uc3QgSW5saW5lRGlzcGxheTo6
Qm94Kj4gYm94ZXNGb3JSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKICAgICB2b2lkIHNo
cmlua1RvRml0KCk7CiAKICAgICBjb25zdCBMaW5lTGF5b3V0JiBsaW5lTGF5b3V0KCkgY29uc3Q7
CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlv
dXQ6OkJveCYpIGNvbnN0OwogICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Js
b2NrKCkgY29uc3Q7CiAKLSAgICBzaXplX3QgaW5kZXhGb3JSdW4oY29uc3QgTGF5b3V0OjpSdW4m
KSBjb25zdDsKKyAgICBzaXplX3QgaW5kZXhGb3JCb3goY29uc3QgSW5saW5lRGlzcGxheTo6Qm94
JikgY29uc3Q7CiAKLSAgICBjb25zdCBMYXlvdXQ6OlJ1biogZmlyc3RSdW5Gb3JMYXlvdXRCb3go
Y29uc3QgTGF5b3V0OjpCb3gmKSBjb25zdDsKKyAgICBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gq
IGZpcnN0Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgdHJhdmVyc2VOb25Sb290SW5saW5lQm94ZXMo
Y29uc3QgTGF5b3V0OjpCb3gmLCBGdW5jdGlvbiYmKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBmaXJzdFJ1bkluZGV4Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpcnN0Qm94SW5kZXhGb3JMYXlvdXRCb3goY29u
c3QgTGF5b3V0OjpCb3gmKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbm9uUm9v
dElubGluZUJveEluZGV4ZXNGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmKSBjb25zdDsK
IAogICAgIHZvaWQgcmVsZWFzZUNhY2hlcygpOwpAQCAtODQsOCArODgsOCBAQCBwcml2YXRlOgog
CiAgICAgV2Vha1B0cjxjb25zdCBMaW5lTGF5b3V0PiBtX2xpbmVMYXlvdXQ7CiAKLSAgICB1c2lu
ZyBGaXJzdFJ1bkluZGV4Q2FjaGUgPSBXZWFrSGFzaE1hcDxMYXlvdXQ6OkJveCwgc2l6ZV90PjsK
LSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxGaXJzdFJ1bkluZGV4Q2FjaGU+IG1fZmlyc3RS
dW5JbmRleENhY2hlOworICAgIHVzaW5nIEZpcnN0Qm94SW5kZXhDYWNoZSA9IFdlYWtIYXNoTWFw
PExheW91dDo6Qm94LCBzaXplX3Q+OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEZpcnN0
Qm94SW5kZXhDYWNoZT4gbV9maXJzdEJveEluZGV4Q2FjaGU7CiAKICAgICB1c2luZyBJbmxpbmVC
b3hJbmRleENhY2hlID0gV2Vha0hhc2hNYXA8TGF5b3V0OjpCb3gsIFZlY3RvcjxzaXplX3Q+PjsK
ICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVCb3hJbmRleENhY2hlPiBtX2lubGlu
ZUJveEluZGV4Q2FjaGU7CkBAIC05NCw3ICs5OCw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdGlvbj4gdm9pZCBJbmxpbmVDb250ZW50Ojp0cmF2ZXJzZU5vblJvb3RJbmxpbmVC
b3hlcyhjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBGdW5jdGlvbiYmIGZ1bmN0aW9uKQog
ewogICAgIGZvciAoYXV0byBpbmRleCA6IG5vblJvb3RJbmxpbmVCb3hJbmRleGVzRm9yTGF5b3V0
Qm94KGxheW91dEJveCkpCi0gICAgICAgIGZ1bmN0aW9uKHJ1bnNbaW5kZXhdKTsKKyAgICAgICAg
ZnVuY3Rpb24oYm94ZXNbaW5kZXhdKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDVmYTk3NDVhNDQ0Yjg1YWFjM2RjNTM5
MTM0MDAyNDM3ZDU2NjVhYzAuLjMxMzNkM2JkZGU1MzJiNzc4MTZjY2M3MTQ1MjY0ZDQyYjkzMTc4
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5j
cHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQogCisjaW5jbHVkZSAiSW5saW5lRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIklubGluZUZv
cm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIklubGluZUxpbmVSdW4uaCIKICNpbmNsdWRlICJM
YXlvdXRCb3hHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uQm94VHJlZS5o
IgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oIgpAQCAtNjUsMTYg
KzY1LDE2IEBAIElubGluZUNvbnRlbnRCdWlsZGVyOjpJbmxpbmVDb250ZW50QnVpbGRlcihjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdywgY29uCiAKIHZvaWQgSW5saW5lQ29udGVudEJ1
aWxkZXI6OmJ1aWxkKExheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlJiBpbmxpbmVGb3JtYXR0
aW5nU3RhdGUsIElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQpIGNvbnN0CiB7Ci0gICAgLy8g
RklYTUU6IFRoaXMgbWlnaHQgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCB3aXRoIHBhcnRpYWwg
bGF5b3V0IHdoZXJlIHRoZSBsYXlvdXQgY29kZSBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBydW5z
LgotICAgIGlubGluZUNvbnRlbnQucnVucyA9IFdURk1vdmUoaW5saW5lRm9ybWF0dGluZ1N0YXRl
LnJ1bnMoKSk7CisgICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgbmVlZCBhIGRpZmZlcmVudCBhcHBy
b2FjaCB3aXRoIHBhcnRpYWwgbGF5b3V0IHdoZXJlIHRoZSBsYXlvdXQgY29kZSBuZWVkcyB0byBr
bm93IGFib3V0IHRoZSBib3hlcy4KKyAgICBpbmxpbmVDb250ZW50LmJveGVzID0gV1RGTW92ZShp
bmxpbmVGb3JtYXR0aW5nU3RhdGUuYm94ZXMoKSk7CiAgICAgY3JlYXRlRGlzcGxheUxpbmVzKGlu
bGluZUZvcm1hdHRpbmdTdGF0ZSwgaW5saW5lQ29udGVudCk7CiB9CiAKIHZvaWQgSW5saW5lQ29u
dGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyhMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdT
dGF0ZSYgaW5saW5lRm9ybWF0dGluZ1N0YXRlLCBJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50
KSBjb25zdAogewogICAgIGF1dG8mIGxpbmVzID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVz
KCk7Ci0gICAgYXV0byYgcnVucyA9IGlubGluZUNvbnRlbnQucnVuczsKLSAgICBzaXplX3QgcnVu
SW5kZXggPSAwOworICAgIGF1dG8mIGJveGVzID0gaW5saW5lQ29udGVudC5ib3hlczsKKyAgICBz
aXplX3QgYm94SW5kZXggPSAwOwogICAgIGlubGluZUNvbnRlbnQubGluZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShsaW5lcy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGxpbmVJbmRleCA9IDA7
IGxpbmVJbmRleCA8IGxpbmVzLnNpemUoKTsgKytsaW5lSW5kZXgpIHsKICAgICAgICAgYXV0byYg
bGluZSA9IGxpbmVzW2xpbmVJbmRleF07CkBAIC04MiwzMiArODIsMzIgQEAgdm9pZCBJbmxpbmVD
b250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVzKExheW91dDo6SW5saW5lRm9ybWF0dGlu
Z1N0YXRlJiBpbmwKICAgICAgICAgaWYgKGF1dG8gb3ZlcmZsb3dXaWR0aCA9IGxpbmVPdmVyZmxv
d1dpZHRoKG1fYmxvY2tGbG93LCBsaW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSk7IG92ZXJmbG93
V2lkdGggPiBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0LndpZHRoKCkpCiAgICAgICAgICAgICBzY3Jv
bGxhYmxlT3ZlcmZsb3dSZWN0LnNldFdpZHRoKG92ZXJmbG93V2lkdGgpOwogCi0gICAgICAgIGF1
dG8gZmlyc3RSdW5JbmRleCA9IHJ1bkluZGV4OworICAgICAgICBhdXRvIGZpcnN0Qm94SW5kZXgg
PSBib3hJbmRleDsKICAgICAgICAgYXV0byBsaW5lSW5rT3ZlcmZsb3dSZWN0ID0gc2Nyb2xsYWJs
ZU92ZXJmbG93UmVjdDsKLSAgICAgICAgLy8gQ29sbGVjdCBvdmVyZmxvdyBmcm9tIHJ1bnMuCi0g
ICAgICAgIGZvciAoOyBydW5JbmRleCA8IHJ1bnMuc2l6ZSgpICYmIHJ1bnNbcnVuSW5kZXhdLmxp
bmVJbmRleCgpID09IGxpbmVJbmRleDsgKytydW5JbmRleCkgewotICAgICAgICAgICAgYXV0byYg
cnVuID0gcnVuc1tydW5JbmRleF07CisgICAgICAgIC8vIENvbGxlY3Qgb3ZlcmZsb3cgZnJvbSBi
b3hlcy4KKyAgICAgICAgZm9yICg7IGJveEluZGV4IDwgYm94ZXMuc2l6ZSgpICYmIGJveGVzW2Jv
eEluZGV4XS5saW5lSW5kZXgoKSA9PSBsaW5lSW5kZXg7ICsrYm94SW5kZXgpIHsKKyAgICAgICAg
ICAgIGF1dG8mIGJveCA9IGJveGVzW2JveEluZGV4XTsKIAotICAgICAgICAgICAgbGluZUlua092
ZXJmbG93UmVjdC51bml0ZShydW4uaW5rT3ZlcmZsb3coKSk7CisgICAgICAgICAgICBsaW5lSW5r
T3ZlcmZsb3dSZWN0LnVuaXRlKGJveC5pbmtPdmVyZmxvdygpKTsKIAotICAgICAgICAgICAgYXV0
byYgbGF5b3V0Qm94ID0gcnVuLmxheW91dEJveCgpOworICAgICAgICAgICAgYXV0byYgbGF5b3V0
Qm94ID0gYm94LmxheW91dEJveCgpOwogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc1JlcGxh
Y2VkQm94KCkpIHsKICAgICAgICAgICAgICAgICAvLyBTaW1pbGFyIHRvIExlZ2FjeUlubGluZUZs
b3dCb3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdy4KLSAgICAgICAgICAgICAgICBhdXRvJiBi
b3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KG1fYm94VHJlZS5yZW5kZXJlckZvckxheW91dEJveChs
YXlvdXRCb3gpKTsKLSAgICAgICAgICAgICAgICBhdXRvIHJ1bkxvZ2ljYWxSZWN0ID0gcnVuLmxv
Z2ljYWxSZWN0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFib3guaGFzU2VsZlBhaW50aW5nTGF5
ZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGNoaWxkSW5rT3ZlcmZsb3cgPSBib3gu
bG9naWNhbFZpc3VhbE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9uKCZib3gucGFyZW50KCktPnN0
eWxlKCkpOwotICAgICAgICAgICAgICAgICAgICBjaGlsZElua092ZXJmbG93Lm1vdmUocnVuTG9n
aWNhbFJlY3QubGVmdCgpLCBydW5Mb2dpY2FsUmVjdC50b3AoKSk7CisgICAgICAgICAgICAgICAg
YXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+KG1fYm94VHJlZS5yZW5kZXJlckZv
ckxheW91dEJveChsYXlvdXRCb3gpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJveExvZ2ljYWxS
ZWN0ID0gYm94LmxvZ2ljYWxSZWN0KCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZW5kZXJlci5o
YXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gY2hpbGRJ
bmtPdmVyZmxvdyA9IHJlbmRlcmVyLmxvZ2ljYWxWaXN1YWxPdmVyZmxvd1JlY3RGb3JQcm9wYWdh
dGlvbigmcmVuZGVyZXIucGFyZW50KCktPnN0eWxlKCkpOworICAgICAgICAgICAgICAgICAgICBj
aGlsZElua092ZXJmbG93Lm1vdmUoYm94TG9naWNhbFJlY3QubGVmdCgpLCBib3hMb2dpY2FsUmVj
dC50b3AoKSk7CiAgICAgICAgICAgICAgICAgICAgIGxpbmVJbmtPdmVyZmxvd1JlY3QudW5pdGUo
Y2hpbGRJbmtPdmVyZmxvdyk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF1
dG8gY2hpbGRTY3JvbGxhYmxlT3ZlcmZsb3cgPSBib3gubG9naWNhbExheW91dE92ZXJmbG93UmVj
dEZvclByb3BhZ2F0aW9uKCZib3gucGFyZW50KCktPnN0eWxlKCkpOwotICAgICAgICAgICAgICAg
IGNoaWxkU2Nyb2xsYWJsZU92ZXJmbG93Lm1vdmUocnVuTG9naWNhbFJlY3QubGVmdCgpLCBydW5M
b2dpY2FsUmVjdC50b3AoKSk7CisgICAgICAgICAgICAgICAgYXV0byBjaGlsZFNjcm9sbGFibGVP
dmVyZmxvdyA9IHJlbmRlcmVyLmxvZ2ljYWxMYXlvdXRPdmVyZmxvd1JlY3RGb3JQcm9wYWdhdGlv
bigmcmVuZGVyZXIucGFyZW50KCktPnN0eWxlKCkpOworICAgICAgICAgICAgICAgIGNoaWxkU2Ny
b2xsYWJsZU92ZXJmbG93Lm1vdmUoYm94TG9naWNhbFJlY3QubGVmdCgpLCBib3hMb2dpY2FsUmVj
dC50b3AoKSk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZU92ZXJmbG93UmVjdC51bml0ZShj
aGlsZFNjcm9sbGFibGVPdmVyZmxvdyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgYXV0byBsaW5lQm94TG9naWNhbFJlY3QgPSBGbG9hdFJlY3QgeyBsaW5lLmxpbmVCb3hMb2dp
Y2FsUmVjdCgpIH07Ci0gICAgICAgIGF1dG8gcnVuQ291bnQgPSBydW5JbmRleCAtIGZpcnN0UnVu
SW5kZXg7Ci0gICAgICAgIGlubGluZUNvbnRlbnQubGluZXMuYXBwZW5kKHsgZmlyc3RSdW5JbmRl
eCwgcnVuQ291bnQsIGxpbmVCb3hMb2dpY2FsUmVjdCwgbGluZS5lbmNsb3NpbmdUb3BBbmRCb3R0
b20oKS50b3AsIGxpbmUuZW5jbG9zaW5nVG9wQW5kQm90dG9tKCkuYm90dG9tLCBzY3JvbGxhYmxl
T3ZlcmZsb3dSZWN0LCBsaW5lSW5rT3ZlcmZsb3dSZWN0LCBsaW5lLmJhc2VsaW5lKCksIGxpbmUu
Y29udGVudExvZ2ljYWxMZWZ0KCksIGxpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpIH0pOworICAg
ICAgICBhdXRvIGJveENvdW50ID0gYm94SW5kZXggLSBmaXJzdEJveEluZGV4OworICAgICAgICBp
bmxpbmVDb250ZW50LmxpbmVzLmFwcGVuZCh7IGZpcnN0Qm94SW5kZXgsIGJveENvdW50LCBsaW5l
Qm94TG9naWNhbFJlY3QsIGxpbmUuZW5jbG9zaW5nVG9wQW5kQm90dG9tKCkudG9wLCBsaW5lLmVu
Y2xvc2luZ1RvcEFuZEJvdHRvbSgpLmJvdHRvbSwgc2Nyb2xsYWJsZU92ZXJmbG93UmVjdCwgbGlu
ZUlua092ZXJmbG93UmVjdCwgbGluZS5iYXNlbGluZSgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsTGVm
dCgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmUuaAppbmRleCAzOTI2NzNlOWVkMzFjNzdjMTgwMjMyNjJmY2U4OTA5MGUyZjVmNzhkLi42
ZGZlNmJjOTNmMTFlMzAxY2ZhOWVlNzUxNmYwMzM3NDE4YTZmNjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZS5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiBjbGFz
cyBMaW5lIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBMaW5l
KHNpemVfdCBmaXJzdFJ1bkluZGV4LCBzaXplX3QgcnVuQ291bnQsIGNvbnN0IEZsb2F0UmVjdCYg
bGluZUJveFJlY3QsIGZsb2F0IGVuY2xvc2luZ0NvbnRlbnRUb3AsIGZsb2F0IGVuY2xvc2luZ0Nv
bnRlbnRCb3R0b20sIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25zdCBG
bG9hdFJlY3QmIGlua092ZXJmbG93LCBmbG9hdCBiYXNlbGluZSwgZmxvYXQgY29udGVudExlZnQs
IGZsb2F0IGNvbnRlbnRXaWR0aCkKLSAgICAgICAgOiBtX2ZpcnN0UnVuSW5kZXgoZmlyc3RSdW5J
bmRleCkKLSAgICAgICAgLCBtX3J1bkNvdW50KHJ1bkNvdW50KQorICAgIExpbmUoc2l6ZV90IGZp
cnN0Qm94SW5kZXgsIHNpemVfdCBib3hDb3VudCwgY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94UmVj
dCwgZmxvYXQgZW5jbG9zaW5nQ29udGVudFRvcCwgZmxvYXQgZW5jbG9zaW5nQ29udGVudEJvdHRv
bSwgY29uc3QgRmxvYXRSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3csIGNvbnN0IEZsb2F0UmVjdCYg
aW5rT3ZlcmZsb3csIGZsb2F0IGJhc2VsaW5lLCBmbG9hdCBjb250ZW50TGVmdCwgZmxvYXQgY29u
dGVudFdpZHRoKQorICAgICAgICA6IG1fZmlyc3RCb3hJbmRleChmaXJzdEJveEluZGV4KQorICAg
ICAgICAsIG1fYm94Q291bnQoYm94Q291bnQpCiAgICAgICAgICwgbV9saW5lQm94UmVjdChsaW5l
Qm94UmVjdCkKICAgICAgICAgLCBtX2VuY2xvc2luZ0NvbnRlbnRUb3AoZW5jbG9zaW5nQ29udGVu
dFRvcCkKICAgICAgICAgLCBtX2VuY2xvc2luZ0NvbnRlbnRCb3R0b20oZW5jbG9zaW5nQ29udGVu
dEJvdHRvbSkKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBz
aXplX3QgZmlyc3RSdW5JbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RSdW5JbmRleDsgfQot
ICAgIHNpemVfdCBydW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuQ291bnQ7IH0KKyAgICBz
aXplX3QgZmlyc3RCb3hJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RCb3hJbmRleDsgfQor
ICAgIHNpemVfdCBib3hDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94Q291bnQ7IH0KIAogICAg
IGZsb2F0IGxpbmVCb3hUb3AoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hSZWN0LnkoKTsgfQog
ICAgIGZsb2F0IGxpbmVCb3hCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hSZWN0Lm1h
eFkoKTsgfQpAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgY29udGVudFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50V2lkdGg7IH0KIAogcHJpdmF0ZToKLSAgICBzaXpl
X3QgbV9maXJzdFJ1bkluZGV4IHsgMCB9OwotICAgIHNpemVfdCBtX3J1bkNvdW50IHsgMCB9Owor
ICAgIHNpemVfdCBtX2ZpcnN0Qm94SW5kZXggeyAwIH07CisgICAgc2l6ZV90IG1fYm94Q291bnQg
eyAwIH07CiAgICAgLy8gVGhpcyBpcyBsaW5lIGJveCBnZW9tZXRyeSAoc2VlIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xpbmUtYm94KS4KICAgICBGbG9hdFJlY3QgbV9saW5l
Qm94UmVjdDsKICAgICAvLyBFbmNsb3NpbmcgdG9wIGFuZCBib3R0b20gaW5jbHVkZXMgYWxsIGlu
bGluZSBsZXZlbCBib3hlcyAoYm9yZGVyIGJveCkgdmVydGljYWxseS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVy
YXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaAppbmRleCA0ZGRkNGFhNGU5ZjMx
Y2Q5YjNlNzY4NzAwNDg4NzRmNjc2MWY1ZDQzLi4yODJjMjgzMTI4OGM0ZWMwMzMyODA1Yzc4YTMw
NDgxNWFmNDdkMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9y
TW9kZXJuUGF0aC5oCkBAIC05OCwyMSArOTgsMjEgQEAgcHVibGljOgogCiAgICAgUnVuSXRlcmF0
b3JNb2Rlcm5QYXRoIGZpcnN0UnVuKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICghbGluZSgp
LnJ1bkNvdW50KCkpCisgICAgICAgIGlmICghbGluZSgpLmJveENvdW50KCkpCiAgICAgICAgICAg
ICByZXR1cm4geyAqbV9pbmxpbmVDb250ZW50IH07Ci0gICAgICAgIGF1dG8gcnVuSXRlcmF0b3Ig
PSBSdW5JdGVyYXRvck1vZGVyblBhdGggeyAqbV9pbmxpbmVDb250ZW50LCBsaW5lKCkuZmlyc3RS
dW5JbmRleCgpIH07Ci0gICAgICAgIGlmIChydW5JdGVyYXRvci5ydW4oKS5pc0lubGluZUJveCgp
KQorICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gUnVuSXRlcmF0b3JNb2Rlcm5QYXRoIHsgKm1f
aW5saW5lQ29udGVudCwgbGluZSgpLmZpcnN0Qm94SW5kZXgoKSB9OworICAgICAgICBpZiAocnVu
SXRlcmF0b3IuYm94KCkuaXNJbmxpbmVCb3goKSkKICAgICAgICAgICAgIHJ1bkl0ZXJhdG9yLnRy
YXZlcnNlTmV4dExlYWYoKTsKICAgICAgICAgcmV0dXJuIHJ1bkl0ZXJhdG9yOwogICAgIH0KIAog
ICAgIFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCBsYXN0UnVuKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGF1dG8gcnVuQ291bnQgPSBsaW5lKCkucnVuQ291bnQoKTsKLSAgICAgICAgaWYgKCFydW5Db3Vu
dCkKKyAgICAgICAgYXV0byBib3hDb3VudCA9IGxpbmUoKS5ib3hDb3VudCgpOworICAgICAgICBp
ZiAoIWJveENvdW50KQogICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCB9Owot
ICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gUnVuSXRlcmF0b3JNb2Rlcm5QYXRoIHsgKm1faW5s
aW5lQ29udGVudCwgbGluZSgpLmZpcnN0UnVuSW5kZXgoKSArIHJ1bkNvdW50IC0gMSB9OwotICAg
ICAgICBpZiAocnVuSXRlcmF0b3IucnVuKCkuaXNJbmxpbmVCb3goKSkKKyAgICAgICAgYXV0byBy
dW5JdGVyYXRvciA9IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRlbnQsIGxp
bmUoKS5maXJzdEJveEluZGV4KCkgKyBib3hDb3VudCAtIDEgfTsKKyAgICAgICAgaWYgKHJ1bkl0
ZXJhdG9yLmJveCgpLmlzSW5saW5lQm94KCkpCiAgICAgICAgICAgICBydW5JdGVyYXRvci50cmF2
ZXJzZVByZXZpb3VzTGVhZigpOwogICAgICAgICByZXR1cm4gcnVuSXRlcmF0b3I7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCAxMGM1ZTE1MDFjMjAyZDlkYmE2
NGYyYWYyMGRhZjQyMzkwZmNkMjdhLi44ZjdjMDA3YTE1YmRiZDUzM2U4NjgyMmI0NTg0N2Y4ZjU5
ZGNhMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtMjE3LDcgKzIx
Nyw3IEBAIHZvaWQgTGluZUxheW91dDo6bGF5b3V0KCkKICAgICB1cGRhdGVGb3JtYXR0aW5nUm9v
dEdlb21ldHJ5QW5kSW52YWxpZGF0ZSgpOwogICAgIHByZXBhcmVGbG9hdGluZ1N0YXRlKCk7CiAK
LSAgICAvLyBGSVhNRTogRG8gbm90IGNsZWFyIHRoZSBsaW5lcyBhbmQgcnVucyBoZXJlIHVuY29u
ZGl0aW9uYWxseSwgYnV0IGNvbnN1bHQgd2l0aCB0aGUgZGFtYWdlIG9iamVjdCBpbnN0ZWFkLgor
ICAgIC8vIEZJWE1FOiBEbyBub3QgY2xlYXIgdGhlIGxpbmVzIGFuZCBib3hlcyBoZXJlIHVuY29u
ZGl0aW9uYWxseSwgYnV0IGNvbnN1bHQgd2l0aCB0aGUgZGFtYWdlIG9iamVjdCBpbnN0ZWFkLgog
ICAgIG1faW5saW5lQ29udGVudCA9IG51bGxwdHI7CiAgICAgYXV0byYgcm9vdEdlb21ldHJ5ID0g
bV9sYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckJveChyb290TGF5b3V0Qm94KTsKICAgICBhdXRvIGlu
bGluZUZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB7
IHJvb3RMYXlvdXRCb3gsIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0
KCkgfTsKQEAgLTM4Nyw3ICszODcsNyBAQCBUZXh0UnVuSXRlcmF0b3IgTGluZUxheW91dDo6dGV4
dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCkgY29uc3QKICAgICAgICAgcmV0
dXJuIHsgfTsKIAogICAgIGF1dG8mIGxheW91dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JS
ZW5kZXJlcihyZW5kZXJUZXh0KTsKLSAgICBhdXRvIGZpcnN0SW5kZXggPSBtX2lubGluZUNvbnRl
bnQtPmZpcnN0UnVuSW5kZXhGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIGZpcnN0
SW5kZXggPSBtX2lubGluZUNvbnRlbnQtPmZpcnN0Qm94SW5kZXhGb3JMYXlvdXRCb3gobGF5b3V0
Qm94KTsKICAgICBpZiAoIWZpcnN0SW5kZXgpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTQw
MCw3ICs0MDAsNyBAQCBSdW5JdGVyYXRvciBMaW5lTGF5b3V0OjpydW5Gb3IoY29uc3QgUmVuZGVy
RWxlbWVudCYgcmVuZGVyRWxlbWVudCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IGF1dG8mIGxheW91dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJF
bGVtZW50KTsKLSAgICBhdXRvIGZpcnN0SW5kZXggPSBtX2lubGluZUNvbnRlbnQtPmZpcnN0UnVu
SW5kZXhGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIGZpcnN0SW5kZXggPSBtX2lu
bGluZUNvbnRlbnQtPmZpcnN0Qm94SW5kZXhGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICBp
ZiAoIWZpcnN0SW5kZXgpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTQyNyw4ICs0MjcsOCBA
QCBMYXlvdXRSZWN0IExpbmVMYXlvdXQ6OmZpcnN0SW5saW5lQm94UmVjdChjb25zdCBSZW5kZXJJ
bmxpbmUmIHJlbmRlcklubGluZSkgY29ucwogewogICAgIGF1dG8mIGxheW91dEJveCA9IG1fYm94
VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJJbmxpbmUpOwogCi0gICAgaWYgKGF1dG8q
IHJ1biA9IG1faW5saW5lQ29udGVudC0+Zmlyc3RSdW5Gb3JMYXlvdXRCb3gobGF5b3V0Qm94KSkK
LSAgICAgICAgcmV0dXJuIExheW91dDo6dG9MYXlvdXRSZWN0KHJ1bi0+bG9naWNhbFJlY3QoKSk7
CisgICAgaWYgKGF1dG8qIGJveCA9IG1faW5saW5lQ29udGVudC0+Zmlyc3RCb3hGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIExheW91dDo6dG9MYXlvdXRSZWN0KGJveC0+
bG9naWNhbFJlY3QoKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtNDk4LDE0ICs0OTgsMTQg
QEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIGF1dG8gcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJl
Y3Q7CiAgICAgcGFpbnRSZWN0Lm1vdmVCeSgtcGFpbnRPZmZzZXQpOwogCi0gICAgZm9yIChhdXRv
JiBydW4gOiBtX2lubGluZUNvbnRlbnQtPnJ1bnNGb3JSZWN0KHBhaW50UmVjdCkpIHsKLSAgICAg
ICAgaWYgKHJ1bi5pc0lubGluZUJveCgpKQorICAgIGZvciAoYXV0byYgYm94IDogbV9pbmxpbmVD
b250ZW50LT5ib3hlc0ZvclJlY3QocGFpbnRSZWN0KSkgeworICAgICAgICBpZiAoYm94LmlzSW5s
aW5lQm94KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHJ1bi50ZXh0KCkp
IHsKLSAgICAgICAgICAgIHBhaW50VGV4dFJ1blVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhwYWlu
dEluZm8sIHBhaW50T2Zmc2V0LCBydW4pOworICAgICAgICBpZiAoYm94LnRleHQoKSkgeworICAg
ICAgICAgICAgcGFpbnRUZXh0Qm94VXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKHBhaW50SW5mbywg
cGFpbnRPZmZzZXQsIGJveCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAg
ICAgICBpZiAoYXV0byYgcmVuZGVyZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3go
cnVuLmxheW91dEJveCgpKTsgaXM8UmVuZGVyQm94PihyZW5kZXJlcikgJiYgcmVuZGVyZXIuaXNS
ZXBsYWNlZCgpKSB7CisgICAgICAgIGlmIChhdXRvJiByZW5kZXJlciA9IG1fYm94VHJlZS5yZW5k
ZXJlckZvckxheW91dEJveChib3gubGF5b3V0Qm94KCkpOyBpczxSZW5kZXJCb3g+KHJlbmRlcmVy
KSAmJiByZW5kZXJlci5pc1JlcGxhY2VkKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHJlbmRlckJv
eCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpOwogICAgICAgICAgICAgaWYgKCFyZW5k
ZXJCb3guaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRo
aW5Sb290KHJlbmRlckJveCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyQm94LnBhaW50QXNJbmxp
bmVCbG9jayhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKQEAgLTUyMywyMyArNTIzLDIzIEBAIGJv
b2wgTGluZUxheW91dDo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LCBjCiAKICAgICBhdXRvJiBpbmxpbmVDb250ZW50ID0gKm1faW5s
aW5lQ29udGVudDsKIAotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkbyBzb21ldGhpbmcgZWZm
aWNpZW50IHRvIGZpbmQgdGhlIHJ1biByYW5nZS4KLSAgICBmb3IgKGF1dG8mIHJ1biA6IFdURjo6
bWFrZVJldmVyc2VkUmFuZ2UoaW5saW5lQ29udGVudC5ydW5zKSkgewotICAgICAgICBhdXRvJiBy
ZW5kZXJlciA9IG1fYm94VHJlZS5yZW5kZXJlckZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkp
OworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkbyBzb21ldGhpbmcgZWZmaWNpZW50IHRvIGZp
bmQgdGhlIGJveCByYW5nZS4KKyAgICBmb3IgKGF1dG8mIGJveCA6IFdURjo6bWFrZVJldmVyc2Vk
UmFuZ2UoaW5saW5lQ29udGVudC5ib3hlcykpIHsKKyAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBt
X2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3goYm94LmxheW91dEJveCgpKTsKIAotICAgICAg
ICBpZiAoIXJ1bi5pc1Jvb3RJbmxpbmVCb3goKSAmJiBpczxSZW5kZXJMYXllck1vZGVsT2JqZWN0
PihyZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVyZXIp
Lmhhc1NlbGZQYWludGluZ0xheWVyKCkpCisgICAgICAgIGlmICghYm94LmlzUm9vdElubGluZUJv
eCgpICYmIGlzPFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxS
ZW5kZXJMYXllck1vZGVsT2JqZWN0PihyZW5kZXJlcikuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChydW4uaXNBdG9taWNJbmxpbmVM
ZXZlbEJveCgpKSB7CisgICAgICAgIGlmIChib3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSB7
CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIuaGl0VGVzdChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0
aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBydW5SZWN0ID0gTGF5b3V0Ojp0b0xheW91dFJlY3QocnVuLmxvZ2ljYWxSZWN0KCkpOwotICAg
ICAgICBydW5SZWN0Lm1vdmVCeShhY2N1bXVsYXRlZE9mZnNldCk7CisgICAgICAgIGF1dG8gYm94
UmVjdCA9IExheW91dDo6dG9MYXlvdXRSZWN0KGJveC5sb2dpY2FsUmVjdCgpKTsKKyAgICAgICAg
Ym94UmVjdC5tb3ZlQnkoYWNjdW11bGF0ZWRPZmZzZXQpOwogCi0gICAgICAgIGlmICghbG9jYXRp
b25JbkNvbnRhaW5lci5pbnRlcnNlY3RzKHJ1blJlY3QpKQorICAgICAgICBpZiAoIWxvY2F0aW9u
SW5Db250YWluZXIuaW50ZXJzZWN0cyhib3hSZWN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGF1dG8mIGVsZW1lbnRSZW5kZXJlciA9IGlzPFJlbmRlckVsZW1lbnQ+KHJlbmRl
cmVyKSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSA6ICpyZW5kZXJlci5wYXJl
bnQoKTsKQEAgLTU0Nyw3ICs1NDcsNyBAQCBib29sIExpbmVMYXlvdXQ6OmhpdFRlc3QoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICByZW5kZXJlci51cGRhdGVIaXRUZXN0
UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXpl
KGFjY3VtdWxhdGVkT2Zmc2V0KSk7Ci0gICAgICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJh
c2VkVGVzdFJlc3VsdChyZW5kZXJlci5ub2RlRm9ySGl0VGVzdCgpLCByZXF1ZXN0LCBsb2NhdGlv
bkluQ29udGFpbmVyLCBydW5SZWN0KSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCisgICAgICAg
IGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChyZW5kZXJlci5ub2RlRm9y
SGl0VGVzdCgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBib3hSZWN0KSA9PSBIaXRU
ZXN0UHJvZ3Jlc3M6OlN0b3ApCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg
LTU3MiwxMyArNTcyLDEzIEBAIHZvaWQgTGluZUxheW91dDo6cmVsZWFzZUNhY2hlcygpCiAgICAg
ICAgIG1faW5saW5lQ29udGVudC0+cmVsZWFzZUNhY2hlcygpOwogfQogCi12b2lkIExpbmVMYXlv
dXQ6OnBhaW50VGV4dFJ1blVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXQ6OlJ1biYg
cnVuKQordm9pZCBMaW5lTGF5b3V0OjpwYWludFRleHRCb3hVc2luZ1BoeXNpY2FsQ29vcmRpbmF0
ZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
Y29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiB0ZXh0Qm94KQogewotICAgIGF1dG8mIHN0eWxlID0g
cnVuLnN0eWxlKCk7Ci0gICAgaWYgKHJ1bi5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlKQorICAgIGF1dG8mIHN0eWxlID0gdGV4dEJveC5zdHlsZSgpOworICAgIGlm
ICh0ZXh0Qm94LnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHRleHRDb250ZW50ID0gKnJ1bi50ZXh0KCk7Cisg
ICAgYXV0byYgdGV4dENvbnRlbnQgPSAqdGV4dEJveC50ZXh0KCk7CiAgICAgaWYgKCF0ZXh0Q29u
dGVudC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01ODcsNyArNTg3LDcgQEAgdm9p
ZCBMaW5lTGF5b3V0OjpwYWludFRleHRSdW5Vc2luZ1BoeXNpY2FsQ29vcmRpbmF0ZXMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnMKICAgICBhdXRvIHBoeXNpY2FsUGFpbnRPZmZzZXQgPSBwYWlu
dE9mZnNldDsKICAgICBpZiAoIWJsb2NrSXNIb3Jpem9udGFsV3JpdGluZykgewogICAgICAgICAv
LyBGSVhNRTogRmlndXJlIG91dCB3aHkgdGhpcyB0cmFuc2xhdGUgaXMgcmVxdWlyZWQuCi0gICAg
ICAgIHBoeXNpY2FsUGFpbnRPZmZzZXQubW92ZSh7IDAsIC1ydW4ubG9naWNhbFJlY3QoKS5oZWln
aHQoKSB9KTsKKyAgICAgICAgcGh5c2ljYWxQYWludE9mZnNldC5tb3ZlKHsgMCwgLXRleHRCb3gu
bG9naWNhbFJlY3QoKS5oZWlnaHQoKSB9KTsKICAgICB9CiAKICAgICBhdXRvIHBoeXNpY2FsUmVj
dCA9IFsmXShjb25zdCBhdXRvJiByZWN0KSAtPiBGbG9hdFJlY3QgewpAQCAtNTk5LDE0ICs1OTks
MTQgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludFRleHRSdW5Vc2luZ1BoeXNpY2FsQ29vcmRpbmF0
ZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnMKICAgICAgICAgcmV0dXJuIHJlY3Q7CiAgICAg
fTsKIAotICAgIGF1dG8gdmlzdWFsT3ZlcmZsb3dSZWN0ID0gcGh5c2ljYWxSZWN0KHJ1bi5pbmtP
dmVyZmxvdygpKTsKKyAgICBhdXRvIHZpc3VhbE92ZXJmbG93UmVjdCA9IHBoeXNpY2FsUmVjdCh0
ZXh0Qm94Lmlua092ZXJmbG93KCkpOwogCiAgICAgYXV0byBkYW1hZ2VkUmVjdCA9IHBhaW50SW5m
by5yZWN0OwogICAgIGRhbWFnZWRSZWN0Lm1vdmVCeSgtcGh5c2ljYWxQYWludE9mZnNldCk7CiAg
ICAgaWYgKGRhbWFnZWRSZWN0LnkoKSA+IHZpc3VhbE92ZXJmbG93UmVjdC5tYXhZKCkgfHwgZGFt
YWdlZFJlY3QubWF4WSgpIDwgdmlzdWFsT3ZlcmZsb3dSZWN0LnkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgVGV4dEJveFBhaW50ZXIgcGFpbnRlcigqbV9pbmxpbmVDb250ZW50LCBydW4sIHBh
aW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgIFRleHRCb3hQYWludGVyIHBhaW50ZXIoKm1faW5s
aW5lQ29udGVudCwgdGV4dEJveCwgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgcGFpbnRl
ci5wYWludCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKaW5kZXggZTY1NjU1
NWYxNjcyMzQxODFmNGI4NThjZWY3MDhiNWZiMWY0MTZjZS4uY2I3NmI1MmZhZDE4M2U3YzVmMGRm
MGJlMGRmMDgzMDZiZjIzNzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAt
MTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgSW5saW5lQ29udGVudCYgZW5zdXJlSW5saW5l
Q29udGVudCgpOwogICAgIHZvaWQgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5k
ZXJCb3gmKTsKIAotICAgIHZvaWQgcGFpbnRUZXh0UnVuVXNpbmdQaHlzaWNhbENvb3JkaW5hdGVz
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0
OjpSdW4mKTsKKyAgICB2b2lkIHBhaW50VGV4dEJveFVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IElubGluZURp
c3BsYXk6OkJveCYpOwogCiAgICAgTGF5b3V0OjpJbmxpbmVEYW1hZ2UmIGVuc3VyZUxpbmVEYW1h
Z2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcAppbmRleCA5NDM1YzUwMDQ2
YWYzYzVkNjFjMzhjZWE5M2FjYjUyNzQ3OTVlOWVjLi45MjQ4OGEyYmNlN2ZjYTM4MGFlNzI4MjM4
OGFiZTA4NGZkZjAxZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcApAQCAt
MTI3LDggKzEyNyw4IEBAIHN0YXRpYyBSZWY8SW5saW5lQ29udGVudD4gbWFrZUFkanVzdGVkQ29u
dGVudChjb25zdCBJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50CiAgICAgYXV0byBhZGp1c3Rl
ZExpbmUgPSBbJl0oY29uc3QgTGluZSYgbGluZSwgZmxvYXQgb2Zmc2V0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIExpbmUgewotICAgICAgICAgICAgbGluZS5maXJzdFJ1bkluZGV4KCksCi0gICAg
ICAgICAgICBsaW5lLnJ1bkNvdW50KCksCisgICAgICAgICAgICBsaW5lLmZpcnN0Qm94SW5kZXgo
KSwKKyAgICAgICAgICAgIGxpbmUuYm94Q291bnQoKSwKICAgICAgICAgICAgIG1vdmVWZXJ0aWNh
bGx5KHsgRmxvYXRQb2ludCB7IGxpbmUubGluZUJveExlZnQoKSwgbGluZS5saW5lQm94VG9wKCkg
fSwgRmxvYXRQb2ludCB7IGxpbmUubGluZUJveFJpZ2h0KCksIGxpbmUubGluZUJveEJvdHRvbSgp
IH0gfSwgb2Zmc2V0KSwKICAgICAgICAgICAgIGxpbmUuZW5jbG9zaW5nQ29udGVudFRvcCgpICsg
b2Zmc2V0LAogICAgICAgICAgICAgbGluZS5lbmNsb3NpbmdDb250ZW50Qm90dG9tKCkgKyBvZmZz
ZXQsCkBAIC0xNDAsMTYgKzE0MCwxNiBAQCBzdGF0aWMgUmVmPElubGluZUNvbnRlbnQ+IG1ha2VB
ZGp1c3RlZENvbnRlbnQoY29uc3QgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudAogICAgICAg
ICB9OwogICAgIH07CiAKLSAgICBhdXRvIGFkanVzdGVkUnVuID0gWyZdKGNvbnN0IExheW91dDo6
UnVuJiBydW4sIGZsb2F0IG9mZnNldCkKKyAgICBhdXRvIGFkanVzdGVkQm94ID0gWyZdKGNvbnN0
IElubGluZURpc3BsYXk6OkJveCYgYm94LCBmbG9hdCBvZmZzZXQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gTGF5b3V0OjpSdW4gewotICAgICAgICAgICAgcnVuLmxpbmVJbmRleCgpLAotICAgICAg
ICAgICAgcnVuLnR5cGUoKSwKLSAgICAgICAgICAgIHJ1bi5sYXlvdXRCb3goKSwKLSAgICAgICAg
ICAgIG1vdmVWZXJ0aWNhbGx5KHJ1bi5sb2dpY2FsUmVjdCgpLCBvZmZzZXQpLAotICAgICAgICAg
ICAgbW92ZVZlcnRpY2FsbHkocnVuLmlua092ZXJmbG93KCksIG9mZnNldCksCi0gICAgICAgICAg
ICBydW4uZXhwYW5zaW9uKCksCi0gICAgICAgICAgICBydW4udGV4dCgpCisgICAgICAgIHJldHVy
biBJbmxpbmVEaXNwbGF5OjpCb3ggeworICAgICAgICAgICAgYm94LmxpbmVJbmRleCgpLAorICAg
ICAgICAgICAgYm94LnR5cGUoKSwKKyAgICAgICAgICAgIGJveC5sYXlvdXRCb3goKSwKKyAgICAg
ICAgICAgIG1vdmVWZXJ0aWNhbGx5KGJveC5sb2dpY2FsUmVjdCgpLCBvZmZzZXQpLAorICAgICAg
ICAgICAgbW92ZVZlcnRpY2FsbHkoYm94Lmlua092ZXJmbG93KCksIG9mZnNldCksCisgICAgICAg
ICAgICBib3guZXhwYW5zaW9uKCksCisgICAgICAgICAgICBib3gudGV4dCgpCiAgICAgICAgIH07
CiAgICAgfTsKIApAQCAtMTU4LDggKzE1OCw4IEBAIHN0YXRpYyBSZWY8SW5saW5lQ29udGVudD4g
bWFrZUFkanVzdGVkQ29udGVudChjb25zdCBJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50CiAg
ICAgZm9yIChzaXplX3QgbGluZUluZGV4ID0gMDsgbGluZUluZGV4IDwgaW5saW5lQ29udGVudC5s
aW5lcy5zaXplKCk7ICsrbGluZUluZGV4KQogICAgICAgICBhZGp1c3RlZENvbnRlbnQtPmxpbmVz
LmFwcGVuZChhZGp1c3RlZExpbmUoaW5saW5lQ29udGVudC5saW5lc1tsaW5lSW5kZXhdLCBhZGp1
c3RtZW50c1tsaW5lSW5kZXhdKSk7CiAKLSAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGluZUNvbnRl
bnQucnVucykKLSAgICAgICAgYWRqdXN0ZWRDb250ZW50LT5ydW5zLmFwcGVuZChhZGp1c3RlZFJ1
bihydW4sIGFkanVzdG1lbnRzW3J1bi5saW5lSW5kZXgoKV0pKTsKKyAgICBmb3IgKGF1dG8mIGJv
eCA6IGlubGluZUNvbnRlbnQuYm94ZXMpCisgICAgICAgIGFkanVzdGVkQ29udGVudC0+Ym94ZXMu
YXBwZW5kKGFkanVzdGVkQm94KGJveCwgYWRqdXN0bWVudHNbYm94LmxpbmVJbmRleCgpXSkpOwog
CiAgICAgcmV0dXJuIGFkanVzdGVkQ29udGVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yLmNwcAppbmRleCA5MGM0MjMwNjk4YmFmMmYwMDcxOTlmZjVkZDRkNzk3Zjc3NGI5ODcw
Li42MDFjOTA0YzNiZTFkZDZmNTA2OTRjM2M3ZWJlNGIyYjJlYzJhNzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCkBAIC04Niw3ICs4Niw3IEBAIExpbmVJdGVyYXRvciBQ
YXRoUnVuOjpsaW5lKCkgY29uc3QKICAgICB9CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCiAgICAgLCBbXShjb25zdCBSdW5JdGVyYXRvck1vZGVyblBhdGgmIHBhdGgpIHsK
LSAgICAgICAgcmV0dXJuIExpbmVJdGVyYXRvcihMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKCpwYXRo
Lm1faW5saW5lQ29udGVudCwgcGF0aC5ydW4oKS5saW5lSW5kZXgoKSkpOworICAgICAgICByZXR1
cm4gTGluZUl0ZXJhdG9yKExpbmVJdGVyYXRvck1vZGVyblBhdGgoKnBhdGgubV9pbmxpbmVDb250
ZW50LCBwYXRoLmJveCgpLmxpbmVJbmRleCgpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgKTsKQEAg
LTI1NiwxNSArMjU2LDE1IEBAIFRleHRSdW5JdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IExlZ2Fj
eUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZVRleHRCb3gpCiB9CiAKICNpZiBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLVRleHRSdW5JdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0
IElubGluZUNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IExheW91dDo6UnVuJiBydW4pCitUZXh0UnVu
SXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBJbmxpbmVDb250ZW50JiBjb250ZW50LCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpCb3gmIGJveCkKIHsKLSAgICByZXR1cm4gdGV4dFJ1bkZvcihjb250ZW50
LCBjb250ZW50LmluZGV4Rm9yUnVuKHJ1bikpOworICAgIHJldHVybiB0ZXh0UnVuRm9yKGNvbnRl
bnQsIGNvbnRlbnQuaW5kZXhGb3JCb3goYm94KSk7CiB9CiAKLVRleHRSdW5JdGVyYXRvciB0ZXh0
UnVuRm9yKGNvbnN0IElubGluZUNvbnRlbnQmIGNvbnRlbnQsIHNpemVfdCBydW5JbmRleCkKK1Rl
eHRSdW5JdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IElubGluZUNvbnRlbnQmIGNvbnRlbnQsIHNp
emVfdCBib3hJbmRleCkKIHsKLSAgICBBU1NFUlQoY29udGVudC5ydW5zW3J1bkluZGV4XS50ZXh0
KCkpOwotICAgIHJldHVybiB7IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCB7IGNvbnRlbnQsIHJ1bklu
ZGV4IH0gfTsKKyAgICBBU1NFUlQoY29udGVudC5ib3hlc1tib3hJbmRleF0udGV4dCgpKTsKKyAg
ICByZXR1cm4geyBSdW5JdGVyYXRvck1vZGVyblBhdGggeyBjb250ZW50LCBib3hJbmRleCB9IH07
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKaW5kZXggZTk4OTcw
OTBlM2I5ZjY2NWIyNjQ3Njg2NDZhZDc2OWIwMjdiOTk4OS4uNDEyMWZkYjM1NDliYTg0ZmM1NDZi
YmExNmYzNDg3MjM4NGM5Yzk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCkBA
IC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgaW50ZXJtZWRpYXRlIHBvcnRpbmcg
c3RlcHMgb25seS4KICAgICBjb25zdCBMZWdhY3lJbmxpbmVCb3gqIGxlZ2FjeUlubGluZUJveCgp
IGNvbnN0OwogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotICAgIGNvbnN0
IExheW91dDo6UnVuKiBpbmxpbmVCb3goKSBjb25zdDsKKyAgICBjb25zdCBJbmxpbmVEaXNwbGF5
OjpCb3gqIGlubGluZUJveCgpIGNvbnN0OwogI2VuZGlmCiAgICAgUnVuSXRlcmF0b3IgbmV4dE9u
TGluZSgpIGNvbnN0OwogICAgIFJ1bkl0ZXJhdG9yIHByZXZpb3VzT25MaW5lKCkgY29uc3Q7CkBA
IC0yMTIsNyArMjEyLDcgQEAgVGV4dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkZvcihjb25zdCBS
ZW5kZXJUZXh0Jik7CiBUZXh0UnVuSXRlcmF0b3IgZmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3Io
Y29uc3QgUmVuZGVyVGV4dCYpOwogVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgTGVn
YWN5SW5saW5lVGV4dEJveCopOwogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQotVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgSW5saW5lQ29udGVudCYsIGNvbnN0
IExheW91dDo6UnVuJik7CitUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBJbmxpbmVD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94Jik7CiBUZXh0UnVuSXRlcmF0b3IgdGV4
dFJ1bkZvcihjb25zdCBJbmxpbmVDb250ZW50Jiwgc2l6ZV90IHJ1bkluZGV4KTsKICNlbmRpZgog
VGV4dFJ1blJhbmdlIHRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKQEAgLTMwMCwxMSAr
MzAwLDExIEBAIGlubGluZSBjb25zdCBMZWdhY3lJbmxpbmVCb3gqIFBhdGhSdW46OmxlZ2FjeUlu
bGluZUJveCgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKLWlubGluZSBjb25zdCBMYXlvdXQ6OlJ1biogUGF0aFJ1bjo6aW5saW5lQm94KCkgY29uc3QK
K2lubGluZSBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gqIFBhdGhSdW46OmlubGluZUJveCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aD4obV9wYXRoVmFyaWFudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biAmV1RGOjpnZXQ8UnVuSXRlcmF0b3JNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KS5ydW4oKTsK
KyAgICByZXR1cm4gJldURjo6Z2V0PFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aD4obV9wYXRoVmFyaWFu
dCkuYm94KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvck1vZGVyblBhdGguaAppbmRleCAyMzIzM2IwOWVhYzJjMzk1NTNhNjc2MjMyYmQ1ZjI3NTJh
OTFkZWM0Li4yZjNhZTE3OWY4YWRkMGYzNWNjNGI1M2FmZWYxOWMxZGViNzYxZGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvck1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaApAQCAtNDQsMjgg
KzQ0LDI4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgUnVuSXRlcmF0b3JNb2Rlcm5QYXRoKGNvbnN0
IElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIHNpemVfdCBzdGFydEluZGV4KQogICAgICAg
ICA6IG1faW5saW5lQ29udGVudCgmaW5saW5lQ29udGVudCkKLSAgICAgICAgLCBtX3J1bkluZGV4
KHN0YXJ0SW5kZXgpCisgICAgICAgICwgbV9ib3hJbmRleChzdGFydEluZGV4KQogICAgIHsKICAg
ICB9CiAKLSAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuICEhcnVuKCkudGV4dCgpOyB9
CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiAhIWJveCgpLnRleHQoKTsgfQogCi0g
ICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBydW4oKS5sb2dpY2FsUmVjdCgpOyB9
CisgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBib3goKS5sb2dpY2FsUmVjdCgp
OyB9CiAKICAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICBib29sIGRpck92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlz
TGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gcnVuKCkuaXNMaW5lQnJlYWsoKTsgfQorICAgIGJv
b2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBib3goKS5pc0xpbmVCcmVhaygpOyB9CiAK
ICAgICB1bnNpZ25lZCBtaW5pbXVtQ2FyZXRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBpc1RleHQo
KSA/IHN0YXJ0KCkgOiAwOyB9CiAgICAgdW5zaWduZWQgbWF4aW11bUNhcmV0T2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gaXNUZXh0KCkgPyBlbmQoKSA6IDE7IH0KIAogICAgIHVuc2lnbmVkIGNoYXIg
YmlkaUxldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgYm9vbCBoYXNIeXBoZW4oKSBj
b25zdCB7IHJldHVybiBydW4oKS50ZXh0KCktPmhhc0h5cGhlbigpOyB9Ci0gICAgU3RyaW5nVmll
dyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dCgpLT5vcmlnaW5hbENvbnRlbnQoKTsg
fQotICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dCgpLT5zdGFy
dCgpOyB9Ci0gICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dCgpLT5l
bmQoKTsgfQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRleHQo
KS0+bGVuZ3RoKCk7IH0KKyAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0IHsgcmV0dXJuIGJveCgp
LnRleHQoKS0+aGFzSHlwaGVuKCk7IH0KKyAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdCB7IHJl
dHVybiBib3goKS50ZXh0KCktPm9yaWdpbmFsQ29udGVudCgpOyB9CisgICAgdW5zaWduZWQgc3Rh
cnQoKSBjb25zdCB7IHJldHVybiBib3goKS50ZXh0KCktPnN0YXJ0KCk7IH0KKyAgICB1bnNpZ25l
ZCBlbmQoKSBjb25zdCB7IHJldHVybiBib3goKS50ZXh0KCktPmVuZCgpOyB9CisgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gYm94KCkudGV4dCgpLT5sZW5ndGgoKTsgfQogCiAg
ICAgLy8gRklYTUU6IE1ha2UgYSBzaGFyZWQgZ2VuZXJpYyB2ZXJzaW9uIG9mIHRoaXMuCiAgICAg
aW5saW5lIHVuc2lnbmVkIG9mZnNldEZvclBvc2l0aW9uKGZsb2F0IHgpIGNvbnN0CkBAIC04MCw3
ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGJvb2wg
aW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVlOwotICAgICAgICByZXR1cm4gcnVuKCkuc3R5bGUo
KS5mb250Q2FzY2FkZSgpLm9mZnNldEZvclBvc2l0aW9uKGNyZWF0ZVRleHRSdW4oSHlwaGVuTW9k
ZTo6SWdub3JlKSwgbG9jYWxYLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CisgICAgICAgIHJldHVy
biBib3goKS5zdHlsZSgpLmZvbnRDYXNjYWRlKCkub2Zmc2V0Rm9yUG9zaXRpb24oY3JlYXRlVGV4
dFJ1bihIeXBoZW5Nb2RlOjpJZ25vcmUpLCBsb2NhbFgsIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsK
ICAgICB9CiAKICAgICAvLyBGSVhNRTogTWFrZSBhIHNoYXJlZCBnZW5lcmljIHZlcnNpb24gb2Yg
dGhpcy4KQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgICAgIExheW91dFJlY3Qgc2Vs
ZWN0aW9uUmVjdCA9IExheW91dFJlY3QocmVjdCgpLngoKSwgMCwgMCwgMCk7CiAgICAgICAgIFRl
eHRSdW4gdGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4oSHlwaGVuTW9kZTo6SWdub3JlKTsKLSAgICAg
ICAgcnVuKCkuc3R5bGUoKS5mb250Q2FzY2FkZSgpLmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0
KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIDAsIGVuZE9mZnNldCk7CisgICAgICAgIGJveCgpLnN0
eWxlKCkuZm9udENhc2NhZGUoKS5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBz
ZWxlY3Rpb25SZWN0LCAwLCBlbmRPZmZzZXQpOwogICAgICAgICByZXR1cm4gc25hcFJlY3RUb0Rl
dmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCku
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKS5tYXhYKCk7CiAg
ICAgfQogCkBAIC0xMDUsOCArMTA1LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gewogICAg
ICAgICAgICAgc3RhcnQoKSwKICAgICAgICAgICAgIGxlbmd0aCgpLAotICAgICAgICAgICAgcnVu
KCkudGV4dCgpLT5oYXNIeXBoZW4oKSA/IHJ1bigpLnN0eWxlKCkuaHlwaGVuU3RyaW5nKCkubGVu
Z3RoKCkgOiAwLAotICAgICAgICAgICAgcnVuKCkuaXNMaW5lQnJlYWsoKQorICAgICAgICAgICAg
Ym94KCkudGV4dCgpLT5oYXNIeXBoZW4oKSA/IGJveCgpLnN0eWxlKCkuaHlwaGVuU3RyaW5nKCku
bGVuZ3RoKCkgOiAwLAorICAgICAgICAgICAgYm94KCkuaXNMaW5lQnJlYWsoKQogICAgICAgICB9
OwogICAgIH0KIApAQCAtMTE3LDIyICsxMTcsMjIgQEAgcHVibGljOgogCiAgICAgY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9pbmxp
bmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChydW4oKS5sYXlvdXRCb3goKSk7CisgICAg
ICAgIHJldHVybiBtX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KGJveCgpLmxh
eW91dEJveCgpKTsKICAgICB9CiAKICAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW4oKQogICAg
IHsKICAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICAgICAgQVNTRVJUKHJ1bigpLnRleHQo
KSk7CisgICAgICAgIEFTU0VSVChib3goKS50ZXh0KCkpOwogCi0gICAgICAgIGF1dG8mIGxheW91
dEJveCA9IHJ1bigpLmxheW91dEJveCgpOworICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBib3go
KS5sYXlvdXRCb3goKTsKIAogICAgICAgICB0cmF2ZXJzZU5leHRMZWFmKCk7CiAKLSAgICAgICAg
aWYgKCFhdEVuZCgpICYmICZsYXlvdXRCb3ggIT0gJnJ1bigpLmxheW91dEJveCgpKQorICAgICAg
ICBpZiAoIWF0RW5kKCkgJiYgJmxheW91dEJveCAhPSAmYm94KCkubGF5b3V0Qm94KCkpCiAgICAg
ICAgICAgICBzZXRBdEVuZCgpOwogCi0gICAgICAgIEFTU0VSVChhdEVuZCgpIHx8IHJ1bigpLnRl
eHQoKSk7CisgICAgICAgIEFTU0VSVChhdEVuZCgpIHx8IGJveCgpLnRleHQoKSk7CiAgICAgfQog
CiAgICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKQpAQCAtMTQ1LDExICsx
NDUsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKIAotICAg
ICAgICBhdXRvIG9sZExpbmVJbmRleCA9IHJ1bigpLmxpbmVJbmRleCgpOworICAgICAgICBhdXRv
IG9sZExpbmVJbmRleCA9IGJveCgpLmxpbmVJbmRleCgpOwogCiAgICAgICAgIHRyYXZlcnNlTmV4
dExlYWYoKTsKIAotICAgICAgICBpZiAoIWF0RW5kKCkgJiYgb2xkTGluZUluZGV4ICE9IHJ1bigp
LmxpbmVJbmRleCgpKQorICAgICAgICBpZiAoIWF0RW5kKCkgJiYgb2xkTGluZUluZGV4ICE9IGJv
eCgpLmxpbmVJbmRleCgpKQogICAgICAgICAgICAgc2V0QXRFbmQoKTsKICAgICB9CiAKQEAgLTE1
NywxMSArMTU3LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7
CiAKLSAgICAgICAgYXV0byBvbGRMaW5lSW5kZXggPSBydW4oKS5saW5lSW5kZXgoKTsKKyAgICAg
ICAgYXV0byBvbGRMaW5lSW5kZXggPSBib3goKS5saW5lSW5kZXgoKTsKIAogICAgICAgICB0cmF2
ZXJzZVByZXZpb3VzTGVhZigpOwogCi0gICAgICAgIGlmICghYXRFbmQoKSAmJiBvbGRMaW5lSW5k
ZXggIT0gcnVuKCkubGluZUluZGV4KCkpCisgICAgICAgIGlmICghYXRFbmQoKSAmJiBvbGRMaW5l
SW5kZXggIT0gYm94KCkubGluZUluZGV4KCkpCiAgICAgICAgICAgICBzZXRBdEVuZCgpOwogICAg
IH0KIApAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHVibGljOgogICAgICAgICB0cmF2ZXJzZVByZXZp
b3VzT25MaW5lKCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJ1bkl0ZXJh
dG9yTW9kZXJuUGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudCA9PSBv
dGhlci5tX2lubGluZUNvbnRlbnQgJiYgbV9ydW5JbmRleCA9PSBvdGhlci5tX3J1bkluZGV4OyB9
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudCA9PSBvdGhlci5tX2lubGluZUNvbnRlbnQg
JiYgbV9ib3hJbmRleCA9PSBvdGhlci5tX2JveEluZGV4OyB9CiAKLSAgICBib29sIGF0RW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9ydW5JbmRleCA9PSBydW5zKCkuc2l6ZSgpOyB9Ci0gICAgY29uc3Qg
TGF5b3V0OjpSdW4mIHJ1bigpIGNvbnN0IHsgcmV0dXJuIHJ1bnMoKVttX3J1bkluZGV4XTsgfQor
ICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2JveEluZGV4ID09IGJveGVzKCkuc2l6
ZSgpOyB9CisgICAgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3goKSBjb25zdCB7IHJldHVy
biBib3hlcygpW21fYm94SW5kZXhdOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExp
bmVJdGVyYXRvck1vZGVyblBhdGg7CkBAIC0xODksMjggKzE4OSwyOCBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKICAgICAgICAgZG8gewotICAgICAgICAgICAg
KyttX3J1bkluZGV4OwotICAgICAgICB9IHdoaWxlICghYXRFbmQoKSAmJiBydW4oKS5pc0lubGlu
ZUJveCgpKTsKKyAgICAgICAgICAgICsrbV9ib3hJbmRleDsKKyAgICAgICAgfSB3aGlsZSAoIWF0
RW5kKCkgJiYgYm94KCkuaXNJbmxpbmVCb3goKSk7CiAgICAgfQogCiAgICAgdm9pZCB0cmF2ZXJz
ZVByZXZpb3VzTGVhZigpCiAgICAgewogICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBtX3J1bkluZGV4ID0gbV9ydW5JbmRleCA/IG1fcnVuSW5kZXgg
LSAxIDogcnVucygpLnNpemUoKTsKLSAgICAgICAgfSB3aGlsZSAoIWF0RW5kKCkgJiYgcnVuKCku
aXNJbmxpbmVCb3goKSk7CisgICAgICAgICAgICBtX2JveEluZGV4ID0gbV9ib3hJbmRleCA/IG1f
Ym94SW5kZXggLSAxIDogYm94ZXMoKS5zaXplKCk7CisgICAgICAgIH0gd2hpbGUgKCFhdEVuZCgp
ICYmIGJveCgpLmlzSW5saW5lQm94KCkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0QXRFbmQoKSB7
IG1fcnVuSW5kZXggPSBydW5zKCkuc2l6ZSgpOyB9CisgICAgdm9pZCBzZXRBdEVuZCgpIHsgbV9i
b3hJbmRleCA9IGJveGVzKCkuc2l6ZSgpOyB9CiAKLSAgICBjb25zdCBJbmxpbmVDb250ZW50OjpS
dW5zJiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5ydW5zOyB9Ci0gICAg
Y29uc3QgTGluZSYgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+bGluZUZv
clJ1bihydW4oKSk7IH0KKyAgICBjb25zdCBJbmxpbmVDb250ZW50OjpCb3hlcyYgYm94ZXMoKSBj
b25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmJveGVzOyB9CisgICAgY29uc3QgTGluZSYg
bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+bGluZUZvckJveChib3goKSk7
IH0KIAogICAgIGVudW0gY2xhc3MgSHlwaGVuTW9kZSB7IEluY2x1ZGUsIElnbm9yZSB9OwogICAg
IFRleHRSdW4gY3JlYXRlVGV4dFJ1bihIeXBoZW5Nb2RlIGh5cGhlbk1vZGUpIGNvbnN0CiAgICAg
ewotICAgICAgICBhdXRvJiBzdHlsZSA9IHJ1bigpLnN0eWxlKCk7Ci0gICAgICAgIGF1dG8gZXhw
YW5zaW9uID0gcnVuKCkuZXhwYW5zaW9uKCk7CisgICAgICAgIGF1dG8mIHN0eWxlID0gYm94KCku
c3R5bGUoKTsKKyAgICAgICAgYXV0byBleHBhbnNpb24gPSBib3goKS5leHBhbnNpb24oKTsKICAg
ICAgICAgYXV0byByZWN0ID0gdGhpcy0+cmVjdCgpOwogICAgICAgICBhdXRvIHhQb3MgPSByZWN0
LngoKSAtIChsaW5lKCkubGluZUJveExlZnQoKSArIGxpbmUoKS5jb250ZW50TGVmdCgpKTsKIApA
QCAtMjI3LDcgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIFJlZlB0cjxjb25zdCBJ
bmxpbmVDb250ZW50PiBtX2lubGluZUNvbnRlbnQ7Ci0gICAgc2l6ZV90IG1fcnVuSW5kZXggeyAw
IH07CisgICAgc2l6ZV90IG1fYm94SW5kZXggeyAwIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5k
ZXggNDJiNzMyMmI0OGQ1NDc5NDI1NWFmNGE4ZGY4ZGUzMTUxYjc0MDc5Ni4uNWFjYjdiMzdjOTU3
OTNkNDk5N2NkNDM1NGZmY2VlYzZjMGQ1ZWFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMzg1LDcgKzM4
NSw3IEBAIHZvaWQgc2hvd0lubGluZVRyZWVBbmRSdW5zKFRleHRTdHJlYW0mIHN0cmVhbSwgY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjCiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0
dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9ySW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwogICAgIGF1dG8mIGxpbmVzID0gaW5saW5l
Rm9ybWF0dGluZ1N0YXRlLmxpbmVzKCk7Ci0gICAgYXV0byYgcnVucyA9IGlubGluZUZvcm1hdHRp
bmdTdGF0ZS5ydW5zKCk7CisgICAgYXV0byYgYm94ZXMgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUu
Ym94ZXMoKTsKIAogICAgIGZvciAoc2l6ZV90IGxpbmVJbmRleCA9IDA7IGxpbmVJbmRleCA8IGxp
bmVzLnNpemUoKTsgKytsaW5lSW5kZXgpIHsKICAgICAgICAgYXV0byBhZGRTcGFjaW5nID0gWyZd
IHsKQEAgLTQwNiwxMSArNDA2LDExIEBAIHZvaWQgc2hvd0lubGluZVRyZWVBbmRSdW5zKFRleHRT
dHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjCiAgICAgICAg
IHN0cmVhbSA8PCAiICBJbmxpbmUgbGV2ZWwgYm94ZXM6IjsKICAgICAgICAgc3RyZWFtLm5leHRM
aW5lKCk7CiAKLSAgICAgICAgYXV0byBvdXRwdXRJbmxpbmVMZXZlbEJveCA9IFsmXShjb25zdCBh
dXRvJiBpbmxpbmVMZXZlbEJveFJ1bikgeworICAgICAgICBhdXRvIG91dHB1dElubGluZUxldmVs
Qm94ID0gWyZdKGNvbnN0IGF1dG8mIGlubGluZUxldmVsQm94KSB7CiAgICAgICAgICAgICBhZGRT
cGFjaW5nKCk7CiAgICAgICAgICAgICBzdHJlYW0gPDwgIiAgICAiOwotICAgICAgICAgICAgYXV0
byBsb2dpY2FsUmVjdCA9IGlubGluZUxldmVsQm94UnVuLmxvZ2ljYWxSZWN0KCk7Ci0gICAgICAg
ICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveFJ1bi5sYXlvdXRCb3goKTsKKyAg
ICAgICAgICAgIGF1dG8gbG9naWNhbFJlY3QgPSBpbmxpbmVMZXZlbEJveC5sb2dpY2FsUmVjdCgp
OworICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94
KCk7CiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkK
ICAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIkF0b21pYyBpbmxpbmUgbGV2ZWwgYm94IjsKICAg
ICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0xpbmVCcmVha0JveCgpKQpAQCAtNDI0LDI5
ICs0MjQsMjkgQEAgdm9pZCBzaG93SW5saW5lVHJlZUFuZFJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFt
LCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGMKICAgICAgICAgICAgICAgICA8PCAi
IHNpemUgKCIgPDwgbG9naWNhbFJlY3Qud2lkdGgoKSA8PCAieCIgPDwgbG9naWNhbFJlY3QuaGVp
Z2h0KCkgPDwgIikiOwogICAgICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgICAgIH07
Ci0gICAgICAgIGZvciAoYXV0byYgcnVuIDogcnVucykgewotICAgICAgICAgICAgaWYgKHJ1bi5s
aW5lSW5kZXgoKSAhPSBsaW5lSW5kZXgpCisgICAgICAgIGZvciAoYXV0byYgYm94IDogYm94ZXMp
IHsKKyAgICAgICAgICAgIGlmIChib3gubGluZUluZGV4KCkgIT0gbGluZUluZGV4KQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCFydW4ubGF5b3V0Qm94KCkuaXNJ
bmxpbmVMZXZlbEJveCgpKQorICAgICAgICAgICAgaWYgKCFib3gubGF5b3V0Qm94KCkuaXNJbmxp
bmVMZXZlbEJveCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgb3V0
cHV0SW5saW5lTGV2ZWxCb3gocnVuKTsKKyAgICAgICAgICAgIG91dHB1dElubGluZUxldmVsQm94
KGJveCk7CiAgICAgICAgIH0KIAogICAgICAgICBhZGRTcGFjaW5nKCk7CiAgICAgICAgIHN0cmVh
bSA8PCAiICBSdW5zOiI7CiAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwotICAgICAgICBmb3Ig
KGF1dG8mIHJ1biA6IHJ1bnMpIHsKLSAgICAgICAgICAgIGlmIChydW4ubGluZUluZGV4KCkgIT0g
bGluZUluZGV4KQorICAgICAgICBmb3IgKGF1dG8mIGJveCA6IGJveGVzKSB7CisgICAgICAgICAg
ICBpZiAoYm94LmxpbmVJbmRleCgpICE9IGxpbmVJbmRleCkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIGFkZFNwYWNpbmcoKTsKICAgICAgICAgICAgIHN0cmVhbSA8PCAi
ICAgICI7Ci0gICAgICAgICAgICBpZiAocnVuLnRleHQoKSkKLSAgICAgICAgICAgICAgICBzdHJl
YW0gPDwgInRleHQgcnVuIjsKKyAgICAgICAgICAgIGlmIChib3gudGV4dCgpKQorICAgICAgICAg
ICAgICAgIHN0cmVhbSA8PCAidGV4dCBib3giOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHN0cmVhbSA8PCAiYm94IHJ1biI7Ci0gICAgICAgICAgICBzdHJlYW0gPDwgIiBhdCAo
IiA8PCBydW4ubG9naWNhbExlZnQoKSA8PCAiLCIgPDwgcnVuLmxvZ2ljYWxUb3AoKSA8PCAiKSBz
aXplICIgPDwgcnVuLmxvZ2ljYWxXaWR0aCgpIDw8ICJ4IiA8PCBydW4ubG9naWNhbEhlaWdodCgp
OwotICAgICAgICAgICAgaWYgKHJ1bi50ZXh0KCkpCi0gICAgICAgICAgICAgICAgc3RyZWFtIDw8
ICIgcnVuKCIgPDwgcnVuLnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IHJ1bi50ZXh0KCktPmVu
ZCgpIDw8ICIpIjsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgImJveCBib3giOworICAgICAg
ICAgICAgc3RyZWFtIDw8ICIgYXQgKCIgPDwgYm94LmxvZ2ljYWxMZWZ0KCkgPDwgIiwiIDw8IGJv
eC5sb2dpY2FsVG9wKCkgPDwgIikgc2l6ZSAiIDw8IGJveC5sb2dpY2FsV2lkdGgoKSA8PCAieCIg
PDwgYm94LmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgICAgIGlmIChib3gudGV4dCgpKQorICAg
ICAgICAgICAgICAgIHN0cmVhbSA8PCAiIGJveCgiIDw8IGJveC50ZXh0KCktPnN0YXJ0KCkgPDwg
IiwgIiA8PCBib3gudGV4dCgpLT5lbmQoKSA8PCAiKSI7CiAgICAgICAgICAgICBzdHJlYW0ubmV4
dExpbmUoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQ
YWludGVyLmNwcAppbmRleCAxYTdhOTFkNGI4NmE1NWYzZjNjZmQyOWQ4YTlmODkyOTYwZTU2NTVm
Li45YmFhMTZkNjZiNzc3OGI4NDc2MDZlZjVjNjIzZThiNWViMjdlNWM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKQEAgLTUwLDggKzUwLDggQEAgVGV4
dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVyKGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gmIHRl
eHRCb3gsIFBhaW50SW5mbyYgcGEKIH0KIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQotVGV4dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVyKGNvbnN0IExheW91dEludGVn
cmF0aW9uOjpJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50LCBjb25zdCBMYXlvdXQ6OlJ1biYg
cnVuLCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQotICAgIDogVGV4dEJveFBhaW50ZXIoTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5Gb3IoaW5s
aW5lQ29udGVudCwgcnVuKSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCkKK1RleHRCb3hQYWludGVy
OjpUZXh0Qm94UGFpbnRlcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYg
aW5saW5lQ29udGVudCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gsIFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCisgICAgOiBUZXh0Qm94
UGFpbnRlcihMYXlvdXRJbnRlZ3JhdGlvbjo6dGV4dFJ1bkZvcihpbmxpbmVDb250ZW50LCBib3gp
LCBwYWludEluZm8sIHBhaW50T2Zmc2V0KQogewogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCmluZGV4IDEyYWEyMDY2OTExMTY4MDE2ODYxZmVlZWFi
OWMyMWQxZjM0YTllMDAuLjQ3MDFlZmM1NGFiODIwZjE5NmY1ZTU4Y2U4NDViNWYwNTBkMGFkOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCkBAIC00OCw3ICs0
OCw3IEBAIGNsYXNzIFRleHRCb3hQYWludGVyIHsKIHB1YmxpYzoKICAgICBUZXh0Qm94UGFpbnRl
cihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94JiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KTsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
LSAgICBUZXh0Qm94UGFpbnRlcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dCYsIGNvbnN0IExheW91dDo6UnVuJiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KTsKKyAgICBUZXh0Qm94UGFpbnRlcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6
SW5saW5lQ29udGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYsIFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCk7CiAjZW5kaWYKICAgICB+VGV4dEJveFBhaW50
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKaW5kZXggODFh
YThkYTcwNjFkNTAxZjNhMWVlM2RkOTNlYjNkZWZiMmRhYmQ5NS4uNDlkYmJhMGZkNzdjOTc1MmZi
ZjI0MTI3NTk4YjU0NDEwYjAwNDFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBUZXh0UGFpbnRlcjo6Y2xlYXJHbHlw
aERpc3BsYXlMaXN0cygpCiAgICAgR2x5cGhEaXNwbGF5TGlzdENhY2hlPExlZ2FjeUlubGluZVRl
eHRCb3g+OjpzaW5nbGV0b24oKS5jbGVhcigpOwogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElO
R19DT05URVhUKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkKCkpCi0gICAgICAg
IEdseXBoRGlzcGxheUxpc3RDYWNoZTxMYXlvdXQ6OlJ1bj46OnNpbmdsZXRvbigpLmNsZWFyKCk7
CisgICAgICAgIEdseXBoRGlzcGxheUxpc3RDYWNoZTxJbmxpbmVEaXNwbGF5OjpCb3g+OjpzaW5n
bGV0b24oKS5jbGVhcigpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439040</attachid>
            <date>2021-09-23 06:32:56 -0700</date>
            <delta_ts>2021-09-23 07:42:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230643-20210923063255.patch</filename>
            <type>text/plain</type>
            <size>122854</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyOTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM2ZWRjODc4ODAyZjE5
Mzk2ZmVlNzc3NzM5ODAzYmFkZGU5ZjYwMi4uMDFjMDlhMTY1MGY1MTIwMTEzOTE0NWExODg5ZWQ0
MjdkYzZkOWU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAyMS0wOS0yMyAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIExh
eW91dDo6UnVuIHVuZGVyIElubGluZURpc3BsYXkgYW5kIHJlbmFtZSBpdCB0byBCb3gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFRoZXNlIGZyYWdtZW50
cyBvZiBpbmxpbmUgY29udGVudCBzaG91bGQgYmUgY29uc2lkZXJlZCBydW5zIG9ubHkgdXAgdG8g
dGhlIHBvaW50IHdoZXJlIHdlIGZpbmlzaGVkIGJyZWFraW5nIHRoZSBsaW5lLiBTb29uIGFmdGVy
IHRoZXkgZ2FpbiBob3Jpem9udGFsIChhbmQgbGF0ZXIgdmVydGljYWwpIGdlb21ldHJpZXMsIHdl
CisgICAgICAgIHNob3VsZCBjYWxsIHRoZW0gYm94ZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmJ1aWxk
SW5saW5lRGlzcGxheVRyZWUpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveEZhY3Rvcnk6OmRpc3BsYXlC
b3hGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFj
dG9yeS5oOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OlRleHRCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6bV90ZXh0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VGV4dEJveDo6ZXhwYW5zaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OnRleHQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9WZXJpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpv
dXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlQm94ZXNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRl
R2VvbWV0cnlGb3JMaW5lQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21l
dHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxv
d0ZvcklubGluZUJveFJ1bnMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZs
b3dDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVGb3JtYXR0aW5nU3Rh
dGUpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nU3RhdGU6OmxpbmVCb3hlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdTdGF0ZTo6YWRkTGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6Ym94ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmJveGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRCb3hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJMaW5lQW5kQm94ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNocmlu
a1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRl
OjpydW5zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ1N0YXRlOjpydW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRSdW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpjbGVhckxpbmVBbmRSdW5zKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6ZXhwYW5zaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjpzZXRFeHBhbnNp
b24pOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lTGluZVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94Ojps
b2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6
Omlua092ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJv
eDo6bG9naWNhbFRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpC
b3g6OmxvZ2ljYWxCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRGlzcGxh
eTo6Qm94Ojpsb2dpY2FsTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNw
bGF5OjpCb3g6OmxvZ2ljYWxSaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVE
aXNwbGF5OjpCb3g6OmxvZ2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVEaXNwbGF5OjpCb3g6OmxvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRGlzcGxheTo6Qm94Ojptb3ZlVmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVEaXNwbGF5OjpCb3g6OmFkanVzdElua092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6bGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZURpc3Bs
YXk6OkJveDo6VGV4dDo6VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4
dDo6c3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OlRleHQ6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6VGV4dDo6bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UnVuOjpUZXh0OjpvcmlnaW5hbENvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSdW46OlRleHQ6OnJlbmRlcmVkQ29udGVudCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4dDo6aGFzSHlwaGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppc1RleHQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmlzU29mdExpbmVCcmVh
ayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNMaW5l
QnJlYWtCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OmlzTGluZUJyZWFrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
UnVuOjppc0F0b21pY0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6UnVuOjppc0lubGluZUJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNOb25Sb290SW5saW5lQm94IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppc1Jvb3RJbmxpbmVCb3ggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmlzR2VuZXJpY0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
Ojppc0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6UnVuOjppc05vblJvb3RJbmxpbmVMZXZlbEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6dHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aGFzQ29udGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFJlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46Omlua092ZXJmbG93IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsVG9wIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsQm90dG9tIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsTGVmdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFJp
Z2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dp
Y2FsV2lkdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OmxvZ2ljYWxIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpSdW46Om1vdmVWZXJ0aWNhbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UnVuOjphZGp1c3RJbmtPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlJ1bjo6dGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6dGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6
ZXhwYW5zaW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
OjpsYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OnN0eWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
OjpsaW5lSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OlJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4dDo6
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJs
ZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yQ2VsbHMpOgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6Omhh
c0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dDo6fklubGluZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OklubGluZUNvbnRlbnQ6OmluZGV4Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpmaXJzdEJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudDo6
Zmlyc3RCb3hJbmRleEZvckxheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudDo6bm9uUm9vdElubGluZUJveEluZGV4ZXNGb3JM
YXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Oklu
bGluZUNvbnRlbnQ6OnJlbGVhc2VDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjppbmRleEZvclJ1biBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dDo6Zmlyc3RSdW5Gb3JMYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OmZpcnN0UnVuSW5kZXhGb3JMYXlv
dXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpsaW5lRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50Ojp0cmF2ZXJzZU5vblJvb3RJ
bmxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudDo6bGluZUZvclJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnRCdWlsZGVyOjpi
dWlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmU6OkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmU6OmZpcnN0Qm94SW5kZXggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmU6OmJveENvdW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lOjpmaXJzdFJ1bkluZGV4IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lOjpydW5D
b3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmZpcnN0UnVuIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JNb2Rl
cm5QYXRoOjpsYXN0UnVuIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnRleHRSdW5zRm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpydW5Gb3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmZpcnN0SW5saW5l
Qm94UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUxheW91dDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVMYXlvdXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OnBhaW50VGV4dEJveFVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnRUZXh0UnVu
VXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6bWFrZUFkanVzdGVkQ29udGVudCk6CisgICAgICAg
ICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46OmxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5Gb3IpOgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aFJ1bjo6aW5saW5lQm94
IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvck1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpp
c1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aDo6cmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjppc0xpbmVCcmVhayBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRo
OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpzdGFydCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRo
OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6Om9mZnNldEZvclBvc2l0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1v
ZGVyblBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnNlbGVjdGFibGVSYW5nZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JN
b2Rlcm5QYXRoOjpyZW5kZXJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6
OnRyYXZlcnNlTmV4dE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aDo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6Ym94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnRy
YXZlcnNlTmV4dExlYWYpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VQcmV2aW91c0xlYWYpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6c2V0QXRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aDo6Ym94ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpjcmVhdGVUZXh0UnVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1v
ZGVyblBhdGg6OnJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpydW5zIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OnNob3dJbmxpbmVUcmVlQW5kUnVucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQ
YWludGVyOjpUZXh0Qm94UGFpbnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRCb3hQYWlu
dGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKToKKwogMjAyMS0wOS0y
MyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIEFYRFJURWxlbWVudElkQXR0cmlidXRlIGZyb20gdGhlIEFYIG9iamVjdCBwbGF0Zm9ybSB3
cmFwcGVyIGludGVyZmFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGZlMmJiNWI2ZTQ1ZjUwOWQ3
ODVjZTIyMTdhMTcwMWRiNDAwNGU5ZDAuLmYyOGRkYTY3MTlhYjU5ZmMwYjU2ODQ4ZmU4NGI1ZDI0
YWQ1MjU0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNzg0LDcgKzc4NCw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBsYXlvdXQvTGF5b3V0VW5pdHMuaAog
ICAgIGxheW91dC9NYXJnaW5UeXBlcy5oCiAKLSAgICBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9kaXNwbGF5L0lubGluZUxpbmVSdW4uaAorICAgIGxheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oCiAgICAgbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lUmVjdC5oCiAKICAgICBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxYTNiZDA4ZTBiNmNhYzcx
N2NhNTQzY2JiYmI5YWE1MWQ1OGUyMDMwLi4yODE0Mjk1N2NiZDU0MjE3ODZlNDU4MGRhODdkZGM3
NGY1NjUyMzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMjE0LDcgKzIyMTQsNyBAQAogCQk2RkI1RTIxNDIyMUYyNDUzMDAz
OTg5Q0YgLyogQ29udGVudENoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkI1RTIxMjIyMUYyNDQ3MDAzOTg5Q0YgLyogQ29udGVu
dENoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNkZCN0QyREQyNTBGRDgyODAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZC
N0QyRDkyNTBGRDdGQzAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nQ29udGV4dC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQjdEMkRFMjUwRkQ4
MkUwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkI3RDJEQTI1MEZEN0ZDMDAwMjA3QUEgLyogRmxl
eEZvcm1hdHRpbmdTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTZGQzNGOTQ3MjUxNjc1NjcwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkMzRjk0NTI1
MTY3NTY2MDBBNDlCRUEgLyogSW5saW5lTGluZVJ1bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZGQzNGOTQ3MjUxNjc1NjcwMEE0OUJFQSAvKiBJ
bmxpbmVEaXNwbGF5Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RkMzRjk0NTI1MTY3NTY2MDBBNDlCRUEgLyogSW5saW5lRGlzcGxheUJveC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQ0JEQjk3
MjY1REYyQzgwMDIxRUE3QiAvKiBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkNCREI5NTI2
NURGMkM3MDAyMUVBN0IgLyogTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGRDA5NTQz
MjUxMTE1MjIwMDk4ODc3RCAvKiBMYXlvdXRHZW9tZXRyeVJlY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRDA5NTQxMjUxMTE1MjIwMDk4ODc3RCAv
KiBMYXlvdXRHZW9tZXRyeVJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RkUxOTgxNzIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5lQ29udGVu
dEJyZWFrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGRTE5ODE1MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVDb250ZW50QnJlYWtlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDIxMyw3ICsx
MDIxMyw3IEBACiAJCTZGQjdEMkQ5MjUwRkQ3RkMwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0dGluZ0Nv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxleEZvcm1hdHRpbmdD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjdEMkRBMjUwRkQ3RkMw
MDAyMDdBQSAvKiBGbGV4Rm9ybWF0dGluZ1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZsZXhGb3JtYXR0aW5nU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkZCQjg2MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXR0aW5nR2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk2RkMzRjk0NTI1MTY3NTY2MDBBNDlCRUEgLyogSW5saW5lTGluZVJ1
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lUnVuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJ
bmxpbmVEaXNwbGF5Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGlu
ZURpc3BsYXlCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZDNTNBRUIyNEFG
N0E4RTAwNjA1OUZFIC8qIFRhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RkM1Q0E5MjIyRTM1OTkzMDBCMTNFMTEgLyogVGFibGVGb3JtYXR0aW5nU3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGFibGVGb3JtYXR0aW5nU3RhdGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2RkM1Q0E5NDIyRTM1OTk0MDBCMTNFMTEgLyogVGFibGVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWJsZUZvcm1hdHRpbmdDb250
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MzA3LDggKzE4MzA3LDgg
QEAKIAkJMTFBMUU2RkIyNkZCQjZDRTAwNDM1RDM2IC8qIGRpc3BsYXkgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJF
QSAvKiBJbmxpbmVEaXNwbGF5Qm94LmggKi8sCiAJCQkJNkY5MTQyMEYyNTE1MjEzNzAwNEU0RkVB
IC8qIElubGluZURpc3BsYXlMaW5lLmggKi8sCi0JCQkJNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVB
IC8qIElubGluZUxpbmVSdW4uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZGlzcGxheTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMjkwMiw3ICszMjkwMiw5IEBACiAJCQkJRTMwNTky
NjQxRTI3QTNBRDAwRDU3Qzk4IC8qIElubGluZUNsYXNzaWNTY3JpcHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVDb250ZW50QnJlYWtlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTExRkExQzgyNkYwRjMwRjAwM0I4RjE2IC8qIElubGluZURh
bWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVBIC8qIElu
bGluZURpc3BsYXlCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTExNTEzRDAzMjZEOTgxRTgwMDRE
M0ZBQSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTZGOTE0MjExMjUxNTIxMzgwMDRFNEZFQSAvKiBJbmxpbmVEaXNwbGF5TGluZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkY3Q0EzQ0EyMDhDMkIyRTAwMkYyOUFCIC8qIElubGluZUZvcm1hdHRpbmdD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0N0M0RDU3RDI2NTA4QkNCMDBDN0FCMUYgLyog
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkU2MzZFODI2
NDc5NjI5MDBGMDk1MUUgLyogSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMjkxNiw4ICszMjkxOCw2IEBACiAJCQkJMTFDMzIyN0QyNkQ5NThDRTAwMzI4RjREIC8q
IElubGluZUxpbmVCb3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjZFRTc0MzI2RDQ0
RUUzMDAzNzRDREEgLyogSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNkYyNkVCNDgyMzQwMDRBNTAwNjkwNkUyIC8qIElubGluZUxpbmVCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk2RjkxNDIxMTI1MTUyMTM4MDA0RTRGRUEgLyogSW5saW5lRGlz
cGxheUxpbmUuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGQzNGOTQ3MjUxNjc1NjcwMEE0OUJFQSAv
KiBJbmxpbmVMaW5lUnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDU3NzVDRTI0MTQzN0Q1MDAy
REYxQTAgLyogSW5saW5lUGF0aERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGNDBEQTgyMjUx
MzAzM0EwMEVDMDRCNyAvKiBJbmxpbmVSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQzM0Yz
QjI1MkFFRUNEMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcAppbmRleCBh
NWU4OGUyNDFlOTNiNjU2OTIzMDE2ODZiYzc3ZTA0YzUyZWJiODY0Li5jN2VmZDY4ZGRiOGQwYjMw
NDZhOWY0NDllNjlmMGJhZWVkZWM3OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9E
aXNwbGF5VHJlZUJ1aWxkZXIuY3BwCkBAIC0zMDUsMzEgKzMwNSwzMSBAQCB2b2lkIFRyZWVCdWls
ZGVyOjpidWlsZElubGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLAogewogICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0
YXRlLmZvcm1hdHRpbmdTdGF0ZUZvcklubGluZUZvcm1hdHRpbmdDb250ZXh0KGlubGluZUZvcm1h
dHRpbmdSb290KTsKIAotICAgIGZvciAoYXV0byYgcnVuIDogaW5saW5lRm9ybWF0dGluZ1N0YXRl
LnJ1bnMoKSkgewotICAgICAgICBpZiAocnVuLmlzUm9vdElubGluZUJveCgpKSB7CisgICAgZm9y
IChhdXRvJiBib3ggOiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuYm94ZXMoKSkgeworICAgICAgICBp
ZiAoYm94LmlzUm9vdElubGluZUJveCgpKSB7CiAgICAgICAgICAgICAvLyBOb3Qgc3VwcG9ydGVk
IHlldC4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHJ1
bi50ZXh0KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGxpbmVHZW9tZXRyeSA9IGlubGluZUZvcm1h
dHRpbmdTdGF0ZS5saW5lcygpLmF0KHJ1bi5saW5lSW5kZXgoKSk7Ci0gICAgICAgICAgICBhdXRv
IHRleHRCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvclRleHRSdW4ocnVuLCBsaW5lR2Vv
bWV0cnksIHBvc2l0aW9uaW5nQ29udGV4dCgpLmluRmxvd0NvbnRhaW5pbmdCbG9ja0NvbnRleHQo
KSk7CisgICAgICAgIGlmIChib3gudGV4dCgpKSB7CisgICAgICAgICAgICBhdXRvJiBsaW5lR2Vv
bWV0cnkgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKS5hdChib3gubGluZUluZGV4KCkp
OworICAgICAgICAgICAgYXV0byB0ZXh0Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JU
ZXh0UnVuKGJveCwgbGluZUdlb21ldHJ5LCBwb3NpdGlvbmluZ0NvbnRleHQoKS5pbkZsb3dDb250
YWluaW5nQmxvY2tDb250ZXh0KCkpOwogICAgICAgICAgICAgaW5zZXJ0KFdURk1vdmUodGV4dEJv
eCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICAgICAgICAgIGFjY291bnRGb3JCb3hQYWludGlu
Z0V4dGVudCgqaW5zZXJ0aW9uUG9zaXRpb24uY3VycmVudENoaWxkKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzPExheW91dDo6Q29udGFpbmVyQm94
PihydW4ubGF5b3V0Qm94KCkpKSB7Ci0gICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlU
cmVlKGxheW91dFN0YXRlLCBydW4ubGF5b3V0Qm94KCksIGluc2VydGlvblBvc2l0aW9uKTsKKyAg
ICAgICAgaWYgKGlzPExheW91dDo6Q29udGFpbmVyQm94Pihib3gubGF5b3V0Qm94KCkpKSB7Cisg
ICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBib3gubGF5
b3V0Qm94KCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgZm9yIHdlYmtpdC5vcmdiL2Iv
MjE5MzM1LgotICAgICAgICBpZiAocnVuLmxheW91dEJveCgpLmlzTGluZUJyZWFrQm94KCkgJiYg
cnVuLmxheW91dEJveCgpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoYm94
LmxheW91dEJveCgpLmlzTGluZUJyZWFrQm94KCkgJiYgYm94LmxheW91dEJveCgpLmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBn
ZW9tZXRyeSA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KHJ1bi5sYXlvdXRCb3goKSk7Ci0g
ICAgICAgIGF1dG8gZGlzcGxheUJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KHJ1bi5sYXlvdXRCb3goKSwgZ2VvbWV0cnksIHBvc2l0aW9uaW5nQ29udGV4dCgpLmluRmxv
d0NvbnRhaW5pbmdCbG9ja0NvbnRleHQoKSk7CisgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSBsYXlv
dXRTdGF0ZS5nZW9tZXRyeUZvckJveChib3gubGF5b3V0Qm94KCkpOworICAgICAgICBhdXRvIGRp
c3BsYXlCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvckxheW91dEJveChib3gubGF5b3V0
Qm94KCksIGdlb21ldHJ5LCBwb3NpdGlvbmluZ0NvbnRleHQoKS5pbkZsb3dDb250YWluaW5nQmxv
Y2tDb250ZXh0KCkpOwogICAgICAgICBpbnNlcnRJbnRvVHJlZShXVEZNb3ZlKGRpc3BsYXlCb3gp
LCBpbnNlcnRpb25Qb3NpdGlvbiwgV2lsbFRyYXZlcnNlRGVzY2VuZGFudHM6Ok5vKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5j
cHAKaW5kZXggZTY1ZGU4MDM1MjgwMGY5MzI3N2M1NjA5OTk1ZDZhNmM5ZDBiODdkOC4uZDVkMmMx
ZGJiMWU0NzUyOTc5NmRkNTgyODczZTUwODBlNGVkNTliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmNwcApAQCAtMTQzLDE2ICsxNDMsMTYg
QEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvckxheW91dEJv
eChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3UKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3g+KG1f
dHJlZUJ1aWxkZXIudHJlZSgpLCBwaXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0LCBXVEZNb3ZlKHN0
eWxlKSwgZmxhZ3MpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNw
bGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBMYXlvdXQ6OlJ1biYgcnVuLCBjb25zdCBJbmxpbmVEaXNw
bGF5OjpMaW5lJiBsaW5lLCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWluaW5n
QmxvY2tDb250ZXh0KSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlz
cGxheUJveEZvclRleHRSdW4oY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gsIGNvbnN0IElu
bGluZURpc3BsYXk6OkxpbmUmIGxpbmUsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmIGNv
bnRhaW5pbmdCbG9ja0NvbnRleHQpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGxpbmUpOwot
ICAgIEFTU0VSVChydW4udGV4dCgpKTsKKyAgICBBU1NFUlQoYm94LnRleHQoKSk7CiAKLSAgICBh
dXRvIHJ1blJlY3QgPSBMYXlvdXRSZWN0IHsgcnVuLmxvZ2ljYWxMZWZ0KCksIHJ1bi5sb2dpY2Fs
VG9wKCksIHJ1bi5sb2dpY2FsV2lkdGgoKSwgcnVuLmxvZ2ljYWxIZWlnaHQoKSB9OwotICAgIHJ1
blJlY3QubW92ZShjb250YWluaW5nQmxvY2tDb250ZXh0Lm9mZnNldEZyb21Sb290KTsKKyAgICBh
dXRvIGJveFJlY3QgPSBMYXlvdXRSZWN0IHsgYm94LmxvZ2ljYWxMZWZ0KCksIGJveC5sb2dpY2Fs
VG9wKCksIGJveC5sb2dpY2FsV2lkdGgoKSwgYm94LmxvZ2ljYWxIZWlnaHQoKSB9OworICAgIGJv
eFJlY3QubW92ZShjb250YWluaW5nQmxvY2tDb250ZXh0Lm9mZnNldEZyb21Sb290KTsKIAotICAg
IGF1dG8gc3R5bGUgPSBTdHlsZSB7IHJ1bi5sYXlvdXRCb3goKS5zdHlsZSgpIH07Ci0gICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dEJveD4obV90cmVlQnVpbGRlci50cmVlKCksIFVuYWRqdXN0ZWRB
YnNvbHV0ZUZsb2F0UmVjdCB7IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocnVuUmVjdCwgbV9waXhl
bFNuYXBwaW5nRmFjdG9yKSB9LCBXVEZNb3ZlKHN0eWxlKSwgcnVuKTsKKyAgICBhdXRvIHN0eWxl
ID0gU3R5bGUgeyBib3gubGF5b3V0Qm94KCkuc3R5bGUoKSB9OworICAgIHJldHVybiBtYWtlVW5p
cXVlPFRleHRCb3g+KG1fdHJlZUJ1aWxkZXIudHJlZSgpLCBVbmFkanVzdGVkQWJzb2x1dGVGbG9h
dFJlY3QgeyBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJveFJlY3QsIG1fcGl4ZWxTbmFwcGluZ0Zh
Y3RvcikgfSwgV1RGTW92ZShzdHlsZSksIGJveCk7CiB9CiAKIHZvaWQgQm94RmFjdG9yeTo6c2V0
dXBCb3hHZW9tZXRyeShCb3hNb2RlbEJveCYgYm94LCBjb25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0
IExheW91dDo6Qm94R2VvbWV0cnkmIGxheW91dEdlb21ldHJ5LCBjb25zdCBDb250YWluaW5nQmxv
Y2tDb250ZXh0JiBjb250YWluaW5nQmxvY2tDb250ZXh0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmgKaW5kZXggODBjMjBhMzdmM2Q1MjFm
OWZjZThmYmQ5ZTM5MzY1NmFkM2I3M2E3Yi4uMDIwM2JhZGZmMzIzNmIzNGJhYmI4ZDY3N2JjOTlk
MTU4YTdkZGM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eUJveEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94
RmFjdG9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBSdW47CiB9CiAKIG5hbWVzcGFjZSBJ
bmxpbmVEaXNwbGF5IHsKK3N0cnVjdCBCb3g7CiBjbGFzcyBMaW5lOwogfQogCkBAIC03Nyw3ICs3
OCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5Qm94Rm9yQm9k
eUJveChjb25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25z
dCBDb250YWluaW5nQmxvY2tDb250ZXh0JiwgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbikgY29u
c3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckxheW91dEJveChjb25z
dCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25zdCBDb250YWlu
aW5nQmxvY2tDb250ZXh0JikgY29uc3Q7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNw
bGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBMYXlvdXQ6OlJ1biYsIGNvbnN0IElubGluZURpc3BsYXk6
OkxpbmUmLCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JikgY29uc3Q7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvclRleHRSdW4oY29uc3QgSW5saW5lRGlzcGxheTo6
Qm94JiwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0Nv
bnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgTGF5b3V0OjpCb3hH
ZW9tZXRyeSYsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGVGb3JCYWNrZ3JvdW5kLCBTdHlsZSYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAppbmRleCBkYjIzMTRkYjQ3NDMwMDhlYjYw
NmYyZmYxMjc4ZDQ2MTUxMjhhZjBhLi5lNTgwYzM0Yjg4MWVhNDgxMmEyNTJjMTA2NTM4ZDMyOTUx
MjIwNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3gu
Y3BwCkBAIC0zNiwxMCArMzYsMTAgQEAgbmFtZXNwYWNlIERpc3BsYXkgewogCiBERUZJTkVfQUxM
T0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFRleHRCb3gpOwogCi1UZXh0Qm94OjpUZXh0Qm94
KFRyZWUmIHRyZWUsIFVuYWRqdXN0ZWRBYnNvbHV0ZUZsb2F0UmVjdCBib3JkZXJCb3gsIFN0eWxl
JiYgZGlzcGxheVN0eWxlLCBjb25zdCBMYXlvdXQ6OlJ1biYgbGluZVJ1bikKK1RleHRCb3g6OlRl
eHRCb3goVHJlZSYgdHJlZSwgVW5hZGp1c3RlZEFic29sdXRlRmxvYXRSZWN0IGJvcmRlckJveCwg
U3R5bGUmJiBkaXNwbGF5U3R5bGUsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgYm94KQogICAg
IDogQm94KHRyZWUsIGJvcmRlckJveCwgV1RGTW92ZShkaXNwbGF5U3R5bGUpLCB7IFR5cGVGbGFn
czo6VGV4dEJveCB9KQotICAgICwgbV9leHBhbnNpb24obGluZVJ1bi5leHBhbnNpb24oKSkKLSAg
ICAsIG1fdGV4dChsaW5lUnVuLnRleHQoKS52YWx1ZSgpKQorICAgICwgbV9leHBhbnNpb24oYm94
LmV4cGFuc2lvbigpKQorICAgICwgbV90ZXh0KGJveC50ZXh0KCkudmFsdWUoKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmgKaW5kZXggYzUxODJl
ODY5YjcxNjQ4MzMzZGMxNDQ2ODZlZDEyMGFhNzFiMmUyNy4uZTZjMmUzZGRhNmQ4NDgwMjkyOWI5
MDM1YWMzYjVjMjViZmJiNDYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNw
bGF5VGV4dEJveC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCi0jaW5jbHVkZSAiSW5saW5l
TGluZVJ1bi5oIgorI2luY2x1ZGUgIklubGluZURpc3BsYXlCb3guaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXkgewpAQCAtMzgsMTcgKzM4LDE3IEBAIERFQ0xBUkVf
QUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFRleHRCb3gpOwogY2xhc3MgVGV4dEJveCA6
IHB1YmxpYyBCb3ggewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVO
VElGSUVSKFRleHRCb3gpOwogcHVibGljOgotICAgIFRleHRCb3goVHJlZSYsIFVuYWRqdXN0ZWRB
YnNvbHV0ZUZsb2F0UmVjdCBib3JkZXJCb3gsIFN0eWxlJiYsIGNvbnN0IExheW91dDo6UnVuJik7
CisgICAgVGV4dEJveChUcmVlJiwgVW5hZGp1c3RlZEFic29sdXRlRmxvYXRSZWN0IGJvcmRlckJv
eCwgU3R5bGUmJiwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94Jik7CiAKLSAgICBMYXlvdXQ6OlJ1
bjo6RXhwYW5zaW9uIGV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9Ci0g
ICAgY29uc3QgTGF5b3V0OjpSdW46OlRleHQmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7
IH0KKyAgICBJbmxpbmVEaXNwbGF5OjpCb3g6OkV4cGFuc2lvbiBleHBhbnNpb24oKSBjb25zdCB7
IHJldHVybiBtX2V4cGFuc2lvbjsgfQorICAgIGNvbnN0IElubGluZURpc3BsYXk6OkJveDo6VGV4
dCYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIGJveE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlv
bigpIGNvbnN0IGZpbmFsOwogICAgIAotICAgIExheW91dDo6UnVuOjpFeHBhbnNpb24gbV9leHBh
bnNpb247Ci0gICAgTGF5b3V0OjpSdW46OlRleHQgbV90ZXh0OworICAgIElubGluZURpc3BsYXk6
OkJveDo6RXhwYW5zaW9uIG1fZXhwYW5zaW9uOworICAgIElubGluZURpc3BsYXk6OkJveDo6VGV4
dCBtX3RleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9WZXJpZmljYXRpb24uY3BwCmluZGV4IDkyOWYxMDk3YzZiMjNmMWI0Y2Q5NTk1MmY4ZjIwMGIz
MjNmMWUzNTQuLmI5MjAwNjkxYWVkNzliMWRjMTUxZTgyMTc3MjNkMjE4NjUyMjEwYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC03MCwyNCArNzAsMjQgQEAgc3Rh
dGljIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChMYXlvdXRSZWN0IGEsIExheW91dFJlY3QgYikK
ICAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChhLmhlaWdodCgpLCBiLmhlaWdodCgpKTsK
IH0KIAotc3RhdGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGNvbnN0IFJ1biYg
cnVuLCBjb25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gmIGlubGluZUJveCkKK3N0YXRpYyBi
b29sIGNoZWNrRm9yTWF0Y2hpbmdOb25UZXh0UnVucyhjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gm
IGJveCwgY29uc3QgV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94JiBpbmxpbmVCb3gpCiB7Ci0gICAg
cmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LmxlZnQoKSwgcnVuLmxvZ2ljYWxM
ZWZ0KCkpCi0gICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LnJpZ2h0KCks
IHJ1bi5sb2dpY2FsUmlnaHQoKSkKLSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxp
bmVCb3gudG9wKCksIHJ1bi5sb2dpY2FsVG9wKCkpCi0gICAgICAgICYmIGFyZUVzc2VudGlhbGx5
RXF1YWwoaW5saW5lQm94LmJvdHRvbSgpLCBydW4ubG9naWNhbEJvdHRvbSgpKTsKKyAgICByZXR1
cm4gYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gubGVmdCgpLCBib3gubG9naWNhbExlZnQo
KSkKKyAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gucmlnaHQoKSwgYm94
LmxvZ2ljYWxSaWdodCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJv
eC50b3AoKSwgYm94LmxvZ2ljYWxUb3AoKSkKKyAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVh
bChpbmxpbmVCb3guYm90dG9tKCksIGJveC5sb2dpY2FsQm90dG9tKCkpOwogfQogCiAKLXN0YXRp
YyBib29sIGNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyhjb25zdCBSdW4mIHJ1biwgY29uc3QgV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCkKK3N0YXRpYyBib29sIGNo
ZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyhJbmxpbmVEaXNwbGF5OjpCb3gmIGJveCwgY29uc3QgV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCkKIHsKLSAgICBpZiAoIXJ1
bi50ZXh0KCkpCisgICAgaWYgKCFib3gudGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC5sZWZ0KCksIHJ1bi5s
b2dpY2FsTGVmdCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRC
b3gucmlnaHQoKSwgcnVuLmxvZ2ljYWxSaWdodCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRpYWxs
eUVxdWFsKGlubGluZVRleHRCb3gudG9wKCksIHJ1bi5sb2dpY2FsVG9wKCkpCi0gICAgICAgICYm
IGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC5ib3R0b20oKSwgcnVuLmxvZ2ljYWxC
b3R0b20oKSkKLSAgICAgICAgJiYgKGlubGluZVRleHRCb3guaXNMaW5lQnJlYWsoKSB8fCAoaW5s
aW5lVGV4dEJveC5zdGFydCgpID09IHJ1bi50ZXh0KCktPnN0YXJ0KCkgJiYgaW5saW5lVGV4dEJv
eC5lbmQoKSA9PSBydW4udGV4dCgpLT5lbmQoKSkpOworICAgIHJldHVybiBhcmVFc3NlbnRpYWxs
eUVxdWFsKGlubGluZVRleHRCb3gubGVmdCgpLCBib3gubG9naWNhbExlZnQoKSkKKyAgICAgICAg
JiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LnJpZ2h0KCksIGJveC5sb2dpY2Fs
UmlnaHQoKSkKKyAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LnRv
cCgpLCBib3gubG9naWNhbFRvcCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlu
bGluZVRleHRCb3guYm90dG9tKCksIGJveC5sb2dpY2FsQm90dG9tKCkpCisgICAgICAgICYmIChp
bmxpbmVUZXh0Qm94LmlzTGluZUJyZWFrKCkgfHwgKGlubGluZVRleHRCb3guc3RhcnQoKSA9PSBi
b3gudGV4dCgpLT5zdGFydCgpICYmIGlubGluZVRleHRCb3guZW5kKCkgPT0gYm94LnRleHQoKS0+
ZW5kKCkpKTsKIH0KIAogc3RhdGljIHZvaWQgY29sbGVjdEZsb3dCb3hTdWJ0cmVlKGNvbnN0IExl
Z2FjeUlubGluZUZsb3dCb3gmIGZsb3dib3gsIFZlY3RvcjxXZWJDb3JlOjpMZWdhY3lJbmxpbmVC
b3gqPiYgaW5saW5lQm94ZXMpCkBAIC0xMTgsNDggKzExOCw0OCBAQCBzdGF0aWMgdm9pZCBjb2xs
ZWN0SW5saW5lQm94ZXMoY29uc3QgUmVuZGVyQmxvY2tGbG93JiByb290LCBWZWN0b3I8V2ViQ29y
ZTo6TGVnYQogc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0
aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93LCBjb25zdCBDb250YWluZXJC
b3gmIGlubGluZUZvcm1hdHRpbmdSb290KQogewogICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdT
dGF0ZSA9IGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdDb250ZXh0KGlu
bGluZUZvcm1hdHRpbmdSb290KTsKLSAgICBhdXRvJiBydW5zID0gZG93bmNhc3Q8SW5saW5lRm9y
bWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLnJ1bnMoKTsKKyAgICBhdXRvJiBi
b3hlcyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0
YXRlKS5ib3hlcygpOwogICAgIC8vIENvbGxlY3QgaW5saW5lYm94ZXMuCiAgICAgVmVjdG9yPFdl
YkNvcmU6OkxlZ2FjeUlubGluZUJveCo+IGlubGluZUJveGVzOwogICAgIGNvbGxlY3RJbmxpbmVC
b3hlcyhibG9ja0Zsb3csIGlubGluZUJveGVzKTsKIAogICAgIGF1dG8gbWlzbWF0Y2hlZCA9IGZh
bHNlOwotICAgIHVuc2lnbmVkIHJ1bkluZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBib3hJbmRleCA9
IDA7CiAKLSAgICBpZiAoaW5saW5lQm94ZXMuc2l6ZSgpICE9IHJ1bnMuc2l6ZSgpKSB7Ci0gICAg
ICAgIHN0cmVhbSA8PCAiV2FybmluZzogbWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHJ1bnM6IGlubGlu
ZWJveGVzKCIgPDwgaW5saW5lQm94ZXMuc2l6ZSgpIDw8ICIpIHZzLiBpbmxpbmUgcnVucygiIDw8
IHJ1bnMuc2l6ZSgpIDw8ICIpIjsKKyAgICBpZiAoaW5saW5lQm94ZXMuc2l6ZSgpICE9IGJveGVz
LnNpemUoKSkgeworICAgICAgICBzdHJlYW0gPDwgIldhcm5pbmc6IG1pc21hdGNoaW5nIG51bWJl
ciBvZiBib3hlczogaW5saW5lYm94ZXMoIiA8PCBpbmxpbmVCb3hlcy5zaXplKCkgPDwgIikgdnMu
IGlubGluZSBib3hlcygiIDw8IGJveGVzLnNpemUoKSA8PCAiKSI7CiAgICAgICAgIHN0cmVhbS5u
ZXh0TGluZSgpOwogICAgIH0KIAotICAgIGZvciAodW5zaWduZWQgaW5saW5lQm94SW5kZXggPSAw
OyBpbmxpbmVCb3hJbmRleCA8IGlubGluZUJveGVzLnNpemUoKSAmJiBydW5JbmRleCA8IHJ1bnMu
c2l6ZSgpOyArK2lubGluZUJveEluZGV4KSB7Ci0gICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbcnVu
SW5kZXhdOworICAgIGZvciAodW5zaWduZWQgaW5saW5lQm94SW5kZXggPSAwOyBpbmxpbmVCb3hJ
bmRleCA8IGlubGluZUJveGVzLnNpemUoKSAmJiBib3hJbmRleCA8IGJveGVzLnNpemUoKTsgKytp
bmxpbmVCb3hJbmRleCkgeworICAgICAgICBhdXRvJiBib3ggPSBib3hlc1tib3hJbmRleF07CiAg
ICAgICAgIGF1dG8qIGlubGluZUJveCA9IGlubGluZUJveGVzW2lubGluZUJveEluZGV4XTsKICAg
ICAgICAgYXV0byogaW5saW5lVGV4dEJveCA9IGlzPFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g+KGlubGluZUJveCkgPyBkb3duY2FzdDxXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Pihp
bmxpbmVCb3gpIDogbnVsbHB0cjsKLSAgICAgICAgYm9vbCBtYXRjaGluZ1J1bnMgPSBpbmxpbmVU
ZXh0Qm94ID8gY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKHJ1biwgKmlubGluZVRleHRCb3gpIDog
Y2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKHJ1biwgKmlubGluZUJveCk7CisgICAgICAgIGJv
b2wgbWF0Y2hpbmdSdW5zID0gaW5saW5lVGV4dEJveCA/IGNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVu
cyhib3gsICppbmxpbmVUZXh0Qm94KSA6IGNoZWNrRm9yTWF0Y2hpbmdOb25UZXh0UnVucyhib3gs
ICppbmxpbmVCb3gpOwogCiAgICAgICAgIGlmICghbWF0Y2hpbmdSdW5zKSB7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KGlubGluZUJveC0+cmVuZGVy
ZXIoKSkpIHsKICAgICAgICAgICAgICAgICAvLyA8YnI+IHBvc2l0aW9uaW5nIGlzIHdlaXJkIGF0
IHRoaXMgcG9pbnQuIEl0IG5lZWRzIHByb3BlciBiYXNlbGluZS4KICAgICAgICAgICAgICAgICBt
YXRjaGluZ1J1bnMgPSB0cnVlOwotICAgICAgICAgICAgICAgICsrcnVuSW5kZXg7CisgICAgICAg
ICAgICAgICAgKytib3hJbmRleDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZzogcnVuIjsKKyAgICAg
ICAgICAgIHN0cmVhbSA8PCAiTWlzbWF0Y2hpbmc6IGJveCI7CiAKICAgICAgICAgICAgIGlmIChp
bmxpbmVUZXh0Qm94KQogICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGlubGluZVRl
eHRCb3gtPnN0YXJ0KCkgPDwgIiwgIiA8PCBpbmxpbmVUZXh0Qm94LT5lbmQoKSA8PCAiKSI7CiAg
ICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBpbmxpbmVCb3gtPmxvZ2ljYWxMZWZ0KCkgPDwg
IiwgIiA8PCBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSA8PCAiKSAoIiA8PCBpbmxpbmVCb3gtPmxv
Z2ljYWxXaWR0aCgpIDw8ICJ4IiA8PCBpbmxpbmVCb3gtPmxvZ2ljYWxIZWlnaHQoKSA8PCAiKSI7
CiAKLSAgICAgICAgICAgIHN0cmVhbSA8PCAiIGlubGluZSBydW4iOwotICAgICAgICAgICAgaWYg
KHJ1bi50ZXh0KCkpCi0gICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgcnVuLnRleHQo
KS0+c3RhcnQoKSA8PCAiLCAiIDw8IHJ1bi50ZXh0KCktPmVuZCgpIDw8ICIpIjsKLSAgICAgICAg
ICAgIHN0cmVhbSA8PCAiICgiIDw8IHJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsICIgPDwgcnVuLmxv
Z2ljYWxUb3AoKSA8PCAiKSAoIiA8PCBydW4ubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IHJ1bi5s
b2dpY2FsSGVpZ2h0KCkgPDwgIikiOworICAgICAgICAgICAgc3RyZWFtIDw8ICIgaW5saW5lIGJv
eCI7CisgICAgICAgICAgICBpZiAoYm94LnRleHQoKSkKKyAgICAgICAgICAgICAgICBzdHJlYW0g
PDwgIiAoIiA8PCBib3gudGV4dCgpLT5zdGFydCgpIDw8ICIsICIgPDwgYm94LnRleHQoKS0+ZW5k
KCkgPDwgIikiOworICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgYm94LmxvZ2ljYWxMZWZ0
KCkgPDwgIiwgIiA8PCBib3gubG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGJveC5sb2dpY2FsV2lk
dGgoKSA8PCAieCIgPDwgYm94LmxvZ2ljYWxIZWlnaHQoKSA8PCAiKSI7CiAgICAgICAgICAgICBz
dHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAgICAgIG1pc21hdGNoZWQgPSB0cnVlOwogICAgICAg
ICB9Ci0gICAgICAgICsrcnVuSW5kZXg7CisgICAgICAgICsrYm94SW5kZXg7CiAgICAgfQogICAg
IHJldHVybiBtaXNtYXRjaGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKaW5kZXggODlhMTExMDczZThjYWVjYzM4ODE2NzI3
ZTNmOGM4ZGUzZDhiYzFkOS4uYzZmMDQyZTk4ZjI2OTVjMTJkMGUxZjAzOTZmN2EzY2E0NWUyYjYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuY3BwCkBAIC00MiwyNiArNDIsMjYgQEAgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIoY29uc3QgQ29udGFpbmVyQm94JiBmb3IKIHsK
IH0KIAotSW5saW5lUnVucyBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmJ1aWxkKGNvbnN0
IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IExpbmVCb3gmIGxp
bmVCb3gsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNv
bnN0IHNpemVfdCBsaW5lSW5kZXgpCitEaXNwbGF5Qm94ZXMgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50
LCBjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJv
eExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4KQogewotICAgIElubGluZVJ1
bnMgcnVuczsKLSAgICBydW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGluZUNvbnRlbnQucnVu
cy5zaXplKCkgKyBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkuc2l6ZSgpICsgMSk7
CisgICAgRGlzcGxheUJveGVzIGJveGVzOworICAgIGJveGVzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobGluZUNvbnRlbnQucnVucy5zaXplKCkgKyBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJv
eGVzKCkuc2l6ZSgpICsgMSk7CiAKLSAgICAvLyBFdmVyeSBsaW5lIHN0YXJ0cyB3aXRoIGEgcm9v
dCBydW4sIGV2ZW4gdGhlIGVtcHR5IG9uZXMuCisgICAgLy8gRXZlcnkgbGluZSBzdGFydHMgd2l0
aCBhIHJvb3QgYm94LCBldmVuIHRoZSBlbXB0eSBvbmVzLgogICAgIGF1dG8gcm9vdElubGluZUJv
eFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpOwogICAgIHJvb3RJ
bmxpbmVCb3hSZWN0Lm1vdmVCeShsaW5lQm94TG9naWNhbFRvcExlZnQpOwotICAgIHJ1bnMuYXBw
ZW5kKHsgbGluZUluZGV4LCBSdW46OlR5cGU6OlJvb3RJbmxpbmVCb3gsIHJvb3QoKSwgcm9vdElu
bGluZUJveFJlY3QsIHJvb3RJbmxpbmVCb3hSZWN0LCB7IH0sIHsgfSwgIGxpbmVCb3gucm9vdElu
bGluZUJveCgpLmhhc0NvbnRlbnQoKX0pOworICAgIGJveGVzLmFwcGVuZCh7IGxpbmVJbmRleCwg
SW5saW5lRGlzcGxheTo6Qm94OjpUeXBlOjpSb290SW5saW5lQm94LCByb290KCksIHJvb3RJbmxp
bmVCb3hSZWN0LCByb290SW5saW5lQm94UmVjdCwgeyB9LCB7IH0sICBsaW5lQm94LnJvb3RJbmxp
bmVCb3goKS5oYXNDb250ZW50KCl9KTsKIAotICAgIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRy
eUZvckxpbmVTcGFubmluZ0lubGluZUJveGVzKGxpbmVCb3gsIGxpbmVCb3hMb2dpY2FsVG9wTGVm
dCwgbGluZUluZGV4LCBydW5zKTsKLSAgICBjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JM
aW5lQ29udGVudChsaW5lQ29udGVudCwgbGluZUJveCwgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBs
aW5lSW5kZXgsIHJ1bnMpOwotICAgIGNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveFJ1bnMo
bGluZUJveCwgcnVucyk7Ci0gICAgcmV0dXJuIHJ1bnM7CisgICAgY3JlYXRlQm94ZXNBbmRVcGRh
dGVHZW9tZXRyeUZvckxpbmVTcGFubmluZ0lubGluZUJveGVzKGxpbmVCb3gsIGxpbmVCb3hMb2dp
Y2FsVG9wTGVmdCwgbGluZUluZGV4LCBib3hlcyk7CisgICAgY3JlYXRlQm94ZXNBbmRVcGRhdGVH
ZW9tZXRyeUZvckxpbmVDb250ZW50KGxpbmVDb250ZW50LCBsaW5lQm94LCBsaW5lQm94TG9naWNh
bFRvcExlZnQsIGxpbmVJbmRleCwgYm94ZXMpOworICAgIGNvbGxlY3RJbmtPdmVyZmxvd0Zvcklu
bGluZUJveGVzKGxpbmVCb3gsIGJveGVzKTsKKyAgICByZXR1cm4gYm94ZXM7CiB9CiAKLXZvaWQg
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlG
b3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50
LCBjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJv
eExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBJbmxpbmVSdW5zJiBydW5z
KQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZUJveGVzQW5kVXBkYXRl
R2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxp
bmVDb250ZW50LCBjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2lu
dCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBEaXNwbGF5
Qm94ZXMmIGJveGVzKQogewogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1h
dHRpbmdTdGF0ZSgpOwotICAgIC8vIENyZWF0ZSB0aGUgaW5saW5lIHJ1bnMgb24gdGhlIGN1cnJl
bnQgbGluZS4gVGhpcyBpcyBtb3N0bHkgdGV4dCBhbmQgYXRvbWljIGlubGluZSBydW5zLgorICAg
IC8vIENyZWF0ZSB0aGUgaW5saW5lIGJveGVzIG9uIHRoZSBjdXJyZW50IGxpbmUuIFRoaXMgaXMg
bW9zdGx5IHRleHQgYW5kIGF0b21pYyBpbmxpbmUgYm94ZXMuCiAgICAgZm9yIChhdXRvJiBsaW5l
UnVuIDogbGluZUNvbnRlbnQucnVucykgewogICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5l
UnVuLmxheW91dEJveCgpOwogICAgICAgICBzd2l0Y2ggKGxpbmVSdW4udHlwZSgpKSB7CkBAIC05
MCwxMyArOTAsMTMgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1
bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKICAgICAgICAgICAgIGF1dG8g
YWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBbJl0gewogICAgICAgICAgICAgICAgIHJldHVybiB0
ZXh0LT5uZWVkc0h5cGhlbiA/IG1ha2VTdHJpbmcoY29udGVudC5zdWJzdHJpbmcodGV4dC0+c3Rh
cnQsIHRleHQtPmxlbmd0aCksIHN0eWxlLmh5cGhlblN0cmluZygpKSA6IFN0cmluZygpOwogICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIHJ1bnMuYXBwZW5kKHsgbGluZUluZGV4Ci0gICAgICAg
ICAgICAgICAgLCBSdW46OlR5cGU6OlRleHQKKyAgICAgICAgICAgIGJveGVzLmFwcGVuZCh7IGxp
bmVJbmRleAorICAgICAgICAgICAgICAgICwgSW5saW5lRGlzcGxheTo6Qm94OjpUeXBlOjpUZXh0
CiAgICAgICAgICAgICAgICAgLCBsYXlvdXRCb3gKICAgICAgICAgICAgICAgICAsIHRleHRSdW5S
ZWN0CiAgICAgICAgICAgICAgICAgLCBpbmtPdmVyZmxvdygpCiAgICAgICAgICAgICAgICAgLCBs
aW5lUnVuLmV4cGFuc2lvbigpCi0gICAgICAgICAgICAgICAgLCBSdW46OlRleHQgeyB0ZXh0LT5z
dGFydCwgdGV4dC0+bGVuZ3RoLCBjb250ZW50LCBhZGp1c3RlZENvbnRlbnRUb1JlbmRlcigpLCB0
ZXh0LT5uZWVkc0h5cGhlbiB9IH0pOworICAgICAgICAgICAgICAgICwgSW5saW5lRGlzcGxheTo6
Qm94OjpUZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgY29udGVudCwgYWRqdXN0ZWRD
b250ZW50VG9SZW5kZXIoKSwgdGV4dC0+bmVlZHNIeXBoZW4gfSB9KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6U29mdExpbmVC
cmVhazogewpAQCAtMTA1LDIwICsxMDUsMjAgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKIAog
ICAgICAgICAgICAgQVNTRVJUKGxpbmVSdW4udGV4dENvbnRlbnQoKSAmJiBpczxJbmxpbmVUZXh0
Qm94PihsYXlvdXRCb3gpKTsKICAgICAgICAgICAgIGF1dG8mIHRleHQgPSBsaW5lUnVuLnRleHRD
b250ZW50KCk7Ci0gICAgICAgICAgICBydW5zLmFwcGVuZCh7IGxpbmVJbmRleAotICAgICAgICAg
ICAgICAgICwgUnVuOjpUeXBlOjpTb2Z0TGluZUJyZWFrCisgICAgICAgICAgICBib3hlcy5hcHBl
bmQoeyBsaW5lSW5kZXgKKyAgICAgICAgICAgICAgICAsIElubGluZURpc3BsYXk6OkJveDo6VHlw
ZTo6U29mdExpbmVCcmVhawogICAgICAgICAgICAgICAgICwgbGF5b3V0Qm94CiAgICAgICAgICAg
ICAgICAgLCBzb2Z0TGluZUJyZWFrUnVuUmVjdAogICAgICAgICAgICAgICAgICwgc29mdExpbmVC
cmVha1J1blJlY3QKICAgICAgICAgICAgICAgICAsIGxpbmVSdW4uZXhwYW5zaW9uKCkKLSAgICAg
ICAgICAgICAgICAsIFJ1bjo6VGV4dCB7IHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgsIGRvd25j
YXN0PElubGluZVRleHRCb3g+KGxheW91dEJveCkuY29udGVudCgpIH0gfSk7CisgICAgICAgICAg
ICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlRleHQgeyB0ZXh0LT5zdGFydCwgdGV4dC0+bGVu
Z3RoLCBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpLmNvbnRlbnQoKSB9IH0pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBJbmxpbmVJdGVtOjpU
eXBlOjpIYXJkTGluZUJyZWFrOiB7CiAgICAgICAgICAgICAvLyBPbmx5IGhhcmQgbGluZWJyZWFr
cyBoYXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzLgogICAgICAgICAgICAgYXV0byBsaW5lQnJl
YWtCb3hSZWN0ID0gbGluZUJveC5sb2dpY2FsUmVjdEZvckxpbmVCcmVha0JveChsYXlvdXRCb3gp
OwogICAgICAgICAgICAgbGluZUJyZWFrQm94UmVjdC5tb3ZlQnkobGluZUJveExvZ2ljYWxUb3BM
ZWZ0KTsKLSAgICAgICAgICAgIHJ1bnMuYXBwZW5kKHsgbGluZUluZGV4LCBSdW46OlR5cGU6Okxp
bmVCcmVha0JveCwgbGF5b3V0Qm94LCBsaW5lQnJlYWtCb3hSZWN0LCBsaW5lQnJlYWtCb3hSZWN0
LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7IH0gfSk7CisgICAgICAgICAgICBib3hlcy5hcHBlbmQo
eyBsaW5lSW5kZXgsIElubGluZURpc3BsYXk6OkJveDo6VHlwZTo6TGluZUJyZWFrQm94LCBsYXlv
dXRCb3gsIGxpbmVCcmVha0JveFJlY3QsIGxpbmVCcmVha0JveFJlY3QsIGxpbmVSdW4uZXhwYW5z
aW9uKCksIHsgfSB9KTsKIAogICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0
aW5nU3RhdGUuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsKICAgICAgICAgICAgIGJveEdlb21ldHJ5
LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9pbnQobGluZUJyZWFrQm94UmVjdC50b3BMZWZ0
KCkpKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogICAgICAg
ICAgICAgYXV0byBsb2dpY2FsQm9yZGVyQm94ID0gbGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9y
QXRvbWljSW5saW5lTGV2ZWxCb3gobGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7CiAgICAgICAgICAg
ICBsb2dpY2FsQm9yZGVyQm94Lm1vdmVCeShsaW5lQm94TG9naWNhbFRvcExlZnQpOwogICAgICAg
ICAgICAgLy8gRklYTUU6IEFkZCBpbmsgb3ZlcmZsb3cgc3VwcG9ydCBmb3IgYXRvbWljIGlubGlu
ZSBsZXZlbCBib3hlcyAoZS5nLiBib3ggc2hhZG93KS4KLSAgICAgICAgICAgIHJ1bnMuYXBwZW5k
KHsgbGluZUluZGV4LCBSdW46OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94LCBsYXlvdXRCb3gs
IGxvZ2ljYWxCb3JkZXJCb3gsIGxvZ2ljYWxCb3JkZXJCb3gsIGxpbmVSdW4uZXhwYW5zaW9uKCks
IHsgfSB9KTsKKyAgICAgICAgICAgIGJveGVzLmFwcGVuZCh7IGxpbmVJbmRleCwgSW5saW5lRGlz
cGxheTo6Qm94OjpUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJveCwgbGF5b3V0Qm94LCBsb2dpY2Fs
Qm9yZGVyQm94LCBsb2dpY2FsQm9yZGVyQm94LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7IH0gfSk7
CiAKICAgICAgICAgICAgIGF1dG8gYm9yZGVyQm94TG9naWNhbFRvcExlZnQgPSBsb2dpY2FsQm9y
ZGVyQm94LnRvcExlZnQoKTsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBpbmxpbmUgYm94ZXMg
YXJlIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGFuZCB0aGVpciB0b3AgcG9zaXRpb24gY2FuIGJlIG5l
Z2F0aXZlLgpAQCAtMTQxLDExICsxNDEsMTEgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKICAg
ICAgICAgICAgIGF1dG8gYWRqdXN0UGFyZW50SW5saW5lQm94SW5rT3ZlcmZsb3cgPSBbJl0gewog
ICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGxheW91dEJveC5wYXJlbnQo
KTsKICAgICAgICAgICAgICAgICBpZiAoJnBhcmVudElubGluZUJveCA9PSAmcm9vdCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGNvbGxlY3QgaW5rIG92ZXJmbG93IGZvciB0
aGUgcm9vdCBpbmxpbmUgYm94IHJ1bi4KKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qg
Y29sbGVjdCBpbmsgb3ZlcmZsb3cgZm9yIHRoZSByb290IGlubGluZSBib3guCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9pbmxpbmVCb3hSdW5JbmRleE1hcC5jb250YWlucygmcGFyZW50SW5saW5l
Qm94KSk7Ci0gICAgICAgICAgICAgICAgcnVuc1ttX2lubGluZUJveFJ1bkluZGV4TWFwLmdldCgm
cGFyZW50SW5saW5lQm94KV0uYWRqdXN0SW5rT3ZlcmZsb3cobG9naWNhbEJvcmRlckJveCk7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9pbmxpbmVCb3hJbmRleE1hcC5jb250YWlu
cygmcGFyZW50SW5saW5lQm94KSk7CisgICAgICAgICAgICAgICAgYm94ZXNbbV9pbmxpbmVCb3hJ
bmRleE1hcC5nZXQoJnBhcmVudElubGluZUJveCldLmFkanVzdElua092ZXJmbG93KGxvZ2ljYWxC
b3JkZXJCb3gpOwogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGFkanVzdFBhcmVudElubGlu
ZUJveElua092ZXJmbG93KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1Niw5ICsxNTYsOSBA
QCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdl
b21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hCb3Jk
ZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5b3V0Qm94LCBi
b3hHZW9tZXRyeSk7CiAgICAgICAgICAgICBpbmxpbmVCb3hCb3JkZXJCb3gubW92ZUJ5KGxpbmVC
b3hMb2dpY2FsVG9wTGVmdCk7CiAgICAgICAgICAgICBpZiAobGluZUJveC5oYXNDb250ZW50KCkp
IHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogSXQncyBleHBlY3RlZCB0byBub3QgaGF2ZSBh
bnkgcnVucyBvbiBlbXB0eSBsaW5lcy4gV2Ugc2hvdWxkIHJlY29uc2lkZXIgdGhpcy4KLSAgICAg
ICAgICAgICAgICBtX2lubGluZUJveFJ1bkluZGV4TWFwLmFkZCgmbGF5b3V0Qm94LCBydW5zLnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgcnVucy5hcHBlbmQoeyBsaW5lSW5kZXgsIFJ1bjo6VHlw
ZTo6Tm9uUm9vdElubGluZUJveCwgbGF5b3V0Qm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIGlubGlu
ZUJveEJvcmRlckJveCwgeyB9LCB7IH0sIGxpbmVCb3guaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KS5oYXNDb250ZW50KCkgfSk7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IEl0J3MgZXhwZWN0ZWQgdG8gbm90IGhhdmUgYW55IGJveGVzIG9uIGVtcHR5IGxpbmVzLiBXZSBz
aG91bGQgcmVjb25zaWRlciB0aGlzLgorICAgICAgICAgICAgICAgIG1faW5saW5lQm94SW5kZXhN
YXAuYWRkKCZsYXlvdXRCb3gsIGJveGVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYm94ZXMu
YXBwZW5kKHsgbGluZUluZGV4LCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6Ok5vblJvb3RJbmxp
bmVCb3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9yZGVyQm94LCBpbmxpbmVCb3hCb3JkZXJCb3gs
IHsgfSwgeyB9LCBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCku
aGFzQ29udGVudCgpIH0pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIGlubGlu
ZUJveFNpemUgPSBMYXlvdXRTaXplIHsgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVC
b3hCb3JkZXJCb3gud2lkdGgoKSksIExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwoaW5saW5lQm94
Qm9yZGVyQm94LmhlaWdodCgpKSB9OwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29u
dGVudChjb25zCiAgICAgfQogfQogCi12b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMoY29u
c3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dp
Y2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgSW5saW5lUnVucyYgcnVucykKK3Zv
aWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21l
dHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMoY29uc3QgTGluZUJveCYgbGluZUJveCwgY29u
c3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90
IGxpbmVJbmRleCwgRGlzcGxheUJveGVzJiBib3hlcykKIHsKICAgICBpZiAoIWxpbmVCb3guaGFz
Q29udGVudCgpKSB7CiAgICAgICAgIC8vIFdoZW4gYSBzcGFubmluZyBpbmxpbmUgYm94IChlLmcu
IDxkaXY+dGV4dDxzcGFuPjxicj48L3NwYW4+PC9kaXY+KSBsYW5kcyBvbiBhbiBlbXB0eSBsaW5l
CkBAIC0xOTIsMTIgKzE5MiwxMiBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVsQm94Lmxh
eW91dEJveCgpOwogICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZS5i
b3hHZW9tZXRyeShsYXlvdXRCb3gpOwotICAgICAgICAvLyBJbmxpbmUgYm94ZXMgbWF5IG9yIG1h
eSBub3QgYmUgd3JhcHBlZCBhbmQgaGF2ZSBydW5zIG9uIG11bHRpcGxlIGxpbmVzIChlLmcuIDxz
cGFuPmZpcnN0IGxpbmU8YnI+c2Vjb25kIGxpbmU8YnI+dGhpcmQgbGluZTwvc3Bhbj4pCisgICAg
ICAgIC8vIElubGluZSBib3hlcyBtYXkgb3IgbWF5IG5vdCBiZSB3cmFwcGVkIGFuZCBoYXZlIGJv
eGVzIG9uIG11bHRpcGxlIGxpbmVzIChlLmcuIDxzcGFuPmZpcnN0IGxpbmU8YnI+c2Vjb25kIGxp
bmU8YnI+dGhpcmQgbGluZTwvc3Bhbj4pCiAgICAgICAgIGF1dG8gaW5saW5lQm94Qm9yZGVyQm94
ID0gbGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9ySW5saW5lQm94KGxheW91dEJveCwgYm94R2Vv
bWV0cnkpOwogICAgICAgICBpbmxpbmVCb3hCb3JkZXJCb3gubW92ZUJ5KGxpbmVCb3hMb2dpY2Fs
VG9wTGVmdCk7CiAKLSAgICAgICAgbV9pbmxpbmVCb3hSdW5JbmRleE1hcC5hZGQoJmxheW91dEJv
eCwgcnVucy5zaXplKCkpOwotICAgICAgICBydW5zLmFwcGVuZCh7IGxpbmVJbmRleCwgUnVuOjpU
eXBlOjpOb25Sb290SW5saW5lQm94LCBsYXlvdXRCb3gsIGlubGluZUJveEJvcmRlckJveCwgaW5s
aW5lQm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpIH0p
OworICAgICAgICBtX2lubGluZUJveEluZGV4TWFwLmFkZCgmbGF5b3V0Qm94LCBib3hlcy5zaXpl
KCkpOworICAgICAgICBib3hlcy5hcHBlbmQoeyBsaW5lSW5kZXgsIElubGluZURpc3BsYXk6OkJv
eDo6VHlwZTo6Tm9uUm9vdElubGluZUJveCwgbGF5b3V0Qm94LCBpbmxpbmVCb3hCb3JkZXJCb3gs
IGlubGluZUJveEJvcmRlckJveCwgeyB9LCB7IH0sIGlubGluZUxldmVsQm94Lmhhc0NvbnRlbnQo
KSB9KTsKIAogICAgICAgICBhdXRvIGlubGluZUJveFNpemUgPSBMYXlvdXRTaXplIHsgTGF5b3V0
VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVCb3hCb3JkZXJCb3gud2lkdGgoKSksIExheW91dFVu
aXQ6OmZyb21GbG9hdENlaWwoaW5saW5lQm94Qm9yZGVyQm94LmhlaWdodCgpKSB9OwogICAgICAg
ICBhdXRvIGxvZ2ljYWxSZWN0ID0gUmVjdCB7IExheW91dFBvaW50IHsgaW5saW5lQm94Qm9yZGVy
Qm94LnRvcExlZnQoKSB9LCBpbmxpbmVCb3hTaXplIH07CkBAIC0yMTEsOSArMjExLDkgQEAgdm9p
ZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRy
eUZvckxpbmVTcGFubmluZ0lubGkKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyOjpjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hSdW5zKGNvbnN0IExpbmVC
b3gmIGxpbmVCb3gsIElubGluZVJ1bnMmIHJ1bnMpCit2b2lkIElubGluZURpc3BsYXlDb250ZW50
QnVpbGRlcjo6Y29sbGVjdElua092ZXJmbG93Rm9ySW5saW5lQm94ZXMoY29uc3QgTGluZUJveCYg
bGluZUJveCwgRGlzcGxheUJveGVzJiBib3hlcykKIHsKLSAgICBpZiAobV9pbmxpbmVCb3hSdW5J
bmRleE1hcC5pc0VtcHR5KCkgfHwgIWxpbmVCb3guaGFzQ29udGVudCgpKSB7CisgICAgaWYgKG1f
aW5saW5lQm94SW5kZXhNYXAuaXNFbXB0eSgpIHx8ICFsaW5lQm94Lmhhc0NvbnRlbnQoKSkgewog
ICAgICAgICAvLyBUaGlzIGxpbmUgaGFzIG5vIGlubGluZSBib3ggKG9ubHkgcm9vdCwgYnV0IHdl
IGRvbid0IGNvbGxlY3QgaW5rIG92ZXJmbG93IGZvciB0aGUgcm9vdCBpbmxpbmUgYm94IGF0bSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyOCwxMCArMjI4LDEwIEBAIHZvaWQgSW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hSdW5z
KGNvbnN0IExpbmVCCiAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGlubGluZUJveC5w
YXJlbnQoKTsKICAgICAgICAgaWYgKCZwYXJlbnRJbmxpbmVCb3ggPT0gJnJvb3QoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2lubGluZUJveFJ1bklu
ZGV4TWFwLmNvbnRhaW5zKCZpbmxpbmVCb3gpICYmIG1faW5saW5lQm94UnVuSW5kZXhNYXAuY29u
dGFpbnMoJnBhcmVudElubGluZUJveCkpOwotICAgICAgICBhdXRvJiBpbmtPdmVyZmxvdyA9IHJ1
bnNbbV9pbmxpbmVCb3hSdW5JbmRleE1hcC5nZXQoJmlubGluZUJveCldLmlua092ZXJmbG93KCk7
Ci0gICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveFJ1biA9IHJ1bnNbbV9pbmxpbmVCb3hSdW5J
bmRleE1hcC5nZXQoJnBhcmVudElubGluZUJveCldOwotICAgICAgICBwYXJlbnRJbmxpbmVCb3hS
dW4uYWRqdXN0SW5rT3ZlcmZsb3coaW5rT3ZlcmZsb3cpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtX2lubGluZUJveEluZGV4TWFwLmNvbnRhaW5zKCZpbmxpbmVCb3gpICYmIG1faW5saW5lQm94
SW5kZXhNYXAuY29udGFpbnMoJnBhcmVudElubGluZUJveCkpOworICAgICAgICBhdXRvJiBpbmtP
dmVyZmxvdyA9IGJveGVzW21faW5saW5lQm94SW5kZXhNYXAuZ2V0KCZpbmxpbmVCb3gpXS5pbmtP
dmVyZmxvdygpOworICAgICAgICBhdXRvJiBwYXJlbnREaXNwbGF5Qm94ID0gYm94ZXNbbV9pbmxp
bmVCb3hJbmRleE1hcC5nZXQoJnBhcmVudElubGluZUJveCldOworICAgICAgICBwYXJlbnREaXNw
bGF5Qm94LmFkanVzdElua092ZXJmbG93KGlua092ZXJmbG93KTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgKaW5kZXgg
YmNmNTA5NTVmNmFlN2Q5ZTlhZTcyYTU5NzA5MmE5MDg3YWQ0YmZlYi4uNmRiZjIxZDNkYTI1OGNm
MDIzMDRkN2RmOGE3ODM2Y2I2OGM1OTBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgKQEAgLTQxLDE5ICs0MSwxOSBAQCBjbGFzcyBJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgewogcHVibGljOgogICAgIElubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcihjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
SW5saW5lRm9ybWF0dGluZ1N0YXRlJik7CiAKLSAgICBJbmxpbmVSdW5zIGJ1aWxkKGNvbnN0IExp
bmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlv
dXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4KTsK
KyAgICBEaXNwbGF5Qm94ZXMgYnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jiwg
Y29uc3QgTGluZUJveCYsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRv
cExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3Jl
YXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJveCYsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBs
aW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIElubGluZVJ1bnMm
KTsKLSAgICB2b2lkIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFubmluZ0lu
bGluZUJveGVzKGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJv
eExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBJbmxpbmVSdW5zJik7Ci0g
ICAgdm9pZCBjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hSdW5zKGNvbnN0IExpbmVCb3gm
LCBJbmxpbmVSdW5zJik7CisgICAgdm9pZCBjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9y
TGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJv
eCYsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0
IHNpemVfdCBsaW5lSW5kZXgsIERpc3BsYXlCb3hlcyYpOworICAgIHZvaWQgY3JlYXRlQm94ZXNB
bmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFubmluZ0lubGluZUJveGVzKGNvbnN0IExpbmVCb3gm
LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBz
aXplX3QgbGluZUluZGV4LCBEaXNwbGF5Qm94ZXMmKTsKKyAgICB2b2lkIGNvbGxlY3RJbmtPdmVy
Zmxvd0ZvcklubGluZUJveGVzKGNvbnN0IExpbmVCb3gmLCBEaXNwbGF5Qm94ZXMmKTsKIAogICAg
IGNvbnN0IENvbnRhaW5lckJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ0Nv
bnRleHRSb290OyB9CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZTsgfSAKIAogICAgIGNvbnN0IENvbnRh
aW5lckJveCYgbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0
YXRlJiBtX2Zvcm1hdHRpbmdTdGF0ZTsKLSAgICBIYXNoTWFwPGNvbnN0IEJveCosIHNpemVfdD4g
bV9pbmxpbmVCb3hSdW5JbmRleE1hcDsKKyAgICBIYXNoTWFwPGNvbnN0IEJveCosIHNpemVfdD4g
bV9pbmxpbmVCb3hJbmRleE1hcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBlNTgyMDE1MGVmYmNkMDExMzRhNGUwYWI1
NDZjY2NmYTY3Y2MyZDkzLi5kMGE3YmJjZWJkMGU5ZDkxNTEzMTVjZDIxMjRmZGMwOTJmYjY3YjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJGbG9hdGluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIklubGluZURhbWFnZS5oIgorI2luY2x1ZGUg
IklubGluZURpc3BsYXlCb3guaCIKICNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxp
bmVMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUJveEJ1aWxkZXIuaCIKLSNpbmNsdWRl
ICJJbmxpbmVMaW5lUnVuLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEl0ZW0uaCIKICNpbmNsdWRl
ICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKQEAgLTEyNiw3
ICsxMjYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250
ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udAogICAgICAgICAgICAgYm94R2VvbWV0
cnkuc2V0Q29udGVudEJveFdpZHRoKHsgfSk7CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRW
ZXJ0aWNhbE1hcmdpbih7IH0pOwogICAgICAgICB9IGVsc2UgaWYgKGxheW91dEJveC0+aXNJbmxp
bmVCb3goKSkgewotICAgICAgICAgICAgLy8gVGV4dCB3cmFwcGVyIGJveGVzIChhbm9ueW1vdXMg
aW5saW5lIGxldmVsIGJveGVzKSBkb24ndCBoYXZlIGJveCBnZW9tZXRyaWVzICh0aGV5IG9ubHkg
Z2VuZXJhdGUgcnVucykuCisgICAgICAgICAgICAvLyBUZXh0IHdyYXBwZXIgYm94ZXMgKGFub255
bW91cyBpbmxpbmUgbGV2ZWwgYm94ZXMpIGRvbid0IGhhdmUgYm94IGdlb21ldHJpZXMgKHRoZXkg
b25seSBnZW5lcmF0ZSBib3hlcykuCiAgICAgICAgICAgICBpZiAoIWxheW91dEJveC0+aXNJbmxp
bmVUZXh0Qm94KCkpIHsKICAgICAgICAgICAgICAgICAvLyBJbmxpbmUgYm94ZXMgKDxzcGFuPikg
Y2FuJ3QgZ2V0IHNpemVkL3Bvc2l0aW9uZWQgeWV0LiBBdCB0aGlzIHBvaW50IHdlIGNhbiBvbmx5
IGNvbXB1dGUgdGhlaXIgbWFyZ2lucywgYm9yZGVycyBhbmQgcGFkZGluZy4KICAgICAgICAgICAg
ICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZygqbGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jp
em9udGFsKCkpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIExheW91dFVuaXQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OnVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3QKIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lQnVpbGRl
cjo6SW5saW5lSXRlbVJhbmdlIG5lZWRzTGF5b3V0UmFuZ2UsIGNvbnN0IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRl
ID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlLnJ1bnMoKS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygpLnNpemUo
KSk7CisgICAgZm9ybWF0dGluZ1N0YXRlLmJveGVzKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShm
b3JtYXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKS5zaXplKCkpOwogICAgIElubGluZUxheW91dFVu
aXQgbGluZUxvZ2ljYWxUb3AgPSBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCk7CiAgICAgc3RydWN0
IFByZXZpb3VzTGluZSB7CiAgICAgICAgIExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UgcmFu
Z2U7CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBGb3IKICAgICAvLyBw
bGFjZSB0aGUgb3V0LW9mLWZsb3cgYm94IGF0IHRoZSBsb2dpY2FsIHJpZ2h0IHBvc2l0aW9uLgog
ICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAg
IGF1dG8mIGxpbmVzID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVzKCk7Ci0gICAgYXV0byYgcnVucyA9
IGZvcm1hdHRpbmdTdGF0ZS5ydW5zKCk7CisgICAgYXV0byYgYm94ZXMgPSBmb3JtYXR0aW5nU3Rh
dGUuYm94ZXMoKTsKIAogICAgIGZvciAoYXV0byYgb3V0T2ZGbG93Qm94IDogb3V0T2ZGbG93Qm94
ZXMpIHsKICAgICAgICAgYXV0byYgb3V0T2ZGbG93R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUu
Ym94R2VvbWV0cnkoKm91dE9mRmxvd0JveCk7CkBAIC0yODUsMTAgKzI4NSwxMCBAQCB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dD
b250ZW50KGNvbnN0IEZvcgogICAgICAgICB9KCk7CiAKICAgICAgICAgaWYgKCFwcmV2aW91c0Nv
bnRlbnRTa2lwcGluZ0Zsb2F0cykgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3Qg
KG5vbi1mbG9hdCljaGlsZC4gTGV0J3MgcGxhY2UgaXQgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0
IHJ1bi4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IChub24tZmxvYXQpY2hpbGQu
IExldCdzIHBsYWNlIGl0IHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBib3guCiAgICAgICAgICAg
ICAvLyA8ZGl2PjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+dGV4dCBjb250ZW50PC9k
aXY+Ci0gICAgICAgICAgICBBU1NFUlQocnVucy5zaXplKCkpOwotICAgICAgICAgICAgb3V0T2ZG
bG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBydW5zWzBdLmxvZ2ljYWxMZWZ0KCksIGxp
bmVzWzBdLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgpIH0pOworICAgICAgICAgICAgQVNTRVJU
KGJveGVzLnNpemUoKSk7CisgICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2Fs
VG9wTGVmdCh7IGJveGVzWzBdLmxvZ2ljYWxMZWZ0KCksIGxpbmVzWzBdLmxpbmVCb3hMb2dpY2Fs
UmVjdCgpLnRvcCgpIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
MzAyLDI0ICszMDIsMjQgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0
YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBGb3IKICAgICAgICAgQVNTRVJU
KHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzLT5pc0luRmxvdygpKTsKICAgICAgICAgYXV0
byBwbGFjZU91dE9mRmxvd0JveEFmdGVyUHJldmlvdXNJbkZsb3dCb3ggPSBbJl0gewogICAgICAg
ICAgICAgLy8gVGhlIG91dC1vZi1mbG93IGJveCBzaG91bGQgYmUgcGxhY2VkIGFmdGVyIHRoaXMg
aW5mbG93IGJveC4KLSAgICAgICAgICAgIC8vIFNraXAgdG8gdGhlIGxhc3QgcnVuIG9mIHRoaXMg
bGF5b3V0IGJveC4gVGhlIGxhc3QgcnVuJ3MgZ2VvbWV0cnkgaXMgdXNlZCB0byBjb21wdXRlIHRo
ZSBvdXQtb2YtZmxvdyBib3gncyBzdGF0aWMgcG9zaXRpb24uCi0gICAgICAgICAgICBzaXplX3Qg
bGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsg
bGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCA8IHJ1bnMuc2l6ZSgpICYmICZydW5zW2xh
c3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3hdLmxheW91dEJveCgpICE9IHByZXZpb3VzQ29u
dGVudFNraXBwaW5nRmxvYXRzOyArK2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3gpIHsg
fQotICAgICAgICAgICAgaWYgKGxhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggPT0gcnVu
cy5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogSW4gdmVyeSByYXJlIGNhc2Vz
LCB0aGUgcHJldmlvdXMgYm94J3MgY29udGVudCBtaWdodCBoYXZlIGJlZW4gY29tcGxldGVseSBj
b2xsYXBzZWQgYW5kIGxlZnQgdXMgd2l0aCBubyBydW4uCisgICAgICAgICAgICAvLyBTa2lwIHRv
IHRoZSBsYXN0IGJveCBvZiB0aGlzIGxheW91dCBib3guIFRoZSBsYXN0IGJveCdzIGdlb21ldHJ5
IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgb3V0LW9mLWZsb3cgYm94J3Mgc3RhdGljIHBvc2l0aW9u
LgorICAgICAgICAgICAgc2l6ZV90IGxhc3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggPSAw
OworICAgICAgICAgICAgZm9yICg7IGxhc3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggPCBi
b3hlcy5zaXplKCkgJiYgJmJveGVzW2xhc3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3hdLmxh
eW91dEJveCgpICE9IHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzOyArK2xhc3RCb3hJbmRl
eE9uUHJldmlvdXNMYXlvdXRCb3gpIHsgfQorICAgICAgICAgICAgaWYgKGxhc3RCb3hJbmRleE9u
UHJldmlvdXNMYXlvdXRCb3ggPT0gYm94ZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IEluIHZlcnkgcmFyZSBjYXNlcywgdGhlIHByZXZpb3VzIGJveCdzIGNvbnRlbnQgbWln
aHQgaGF2ZSBiZWVuIGNvbXBsZXRlbHkgY29sbGFwc2VkIGFuZCBsZWZ0IHVzIHdpdGggbm8gYm94
LgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICg7IGxhc3RS
dW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggPCBydW5zLnNpemUoKSAmJiAmcnVuc1tsYXN0UnVu
SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94XS5sYXlvdXRCb3goKSA9PSBwcmV2aW91c0NvbnRlbnRT
a2lwcGluZ0Zsb2F0czsgKytsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94KSB7IH0KLSAg
ICAgICAgICAgICAgICAtLWxhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3g7Ci0gICAgICAg
ICAgICAvLyBMZXQncyBjaGVjayBpZiB0aGUgcHJldmlvdXMgcnVuIGlzIHRoZSBsYXN0IHJ1biBv
biB0aGUgY3VycmVudCBsaW5lIGFuZCB1c2UgdGhlIG5leHQgcnVuJ3MgbGVmdCBpbnN0ZWFkLgot
ICAgICAgICAgICAgYXV0byYgcHJldmlvdXNSdW4gPSBydW5zW2xhc3RSdW5JbmRleE9uUHJldmlv
dXNMYXlvdXRCb3hdOwotICAgICAgICAgICAgYXV0byogbmV4dFJ1biA9IGxhc3RSdW5JbmRleE9u
UHJldmlvdXNMYXlvdXRCb3ggKyAxIDwgcnVucy5zaXplKCkgPyAmcnVuc1tsYXN0UnVuSW5kZXhP
blByZXZpb3VzTGF5b3V0Qm94ICsgMV0gOiBudWxscHRyOwotCi0gICAgICAgICAgICBpZiAobmV4
dFJ1biAmJiBuZXh0UnVuLT5saW5lSW5kZXgoKSA9PSBwcmV2aW91c1J1bi5saW5lSW5kZXgoKSkg
ewotICAgICAgICAgICAgICAgIC8vIFByZXZpb3VzIGFuZCBuZXh0IHJ1bnMgYXJlIG9uIHRoZSBz
YW1lIGxpbmUuIFRoZSBvdXQtb2YtZmxvdyBib3ggaXMgcmlnaHQgYXQgdGhlIHByZXZpb3VzIHJ1
bidzIGxvZ2ljYWwgcmlnaHQuCisgICAgICAgICAgICBmb3IgKDsgbGFzdEJveEluZGV4T25QcmV2
aW91c0xheW91dEJveCA8IGJveGVzLnNpemUoKSAmJiAmYm94ZXNbbGFzdEJveEluZGV4T25QcmV2
aW91c0xheW91dEJveF0ubGF5b3V0Qm94KCkgPT0gcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9h
dHM7ICsrbGFzdEJveEluZGV4T25QcmV2aW91c0xheW91dEJveCkgeyB9CisgICAgICAgICAgICAg
ICAgLS1sYXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94OworICAgICAgICAgICAgLy8gTGV0
J3MgY2hlY2sgaWYgdGhlIHByZXZpb3VzIGJveCBpcyB0aGUgbGFzdCBib3ggb24gdGhlIGN1cnJl
bnQgbGluZSBhbmQgdXNlIHRoZSBuZXh0IGJveCdzIGxlZnQgaW5zdGVhZC4KKyAgICAgICAgICAg
IGF1dG8mIHByZXZpb3VzQm94ID0gYm94ZXNbbGFzdEJveEluZGV4T25QcmV2aW91c0xheW91dEJv
eF07CisgICAgICAgICAgICBhdXRvKiBuZXh0Qm94ID0gbGFzdEJveEluZGV4T25QcmV2aW91c0xh
eW91dEJveCArIDEgPCBib3hlcy5zaXplKCkgPyAmYm94ZXNbbGFzdEJveEluZGV4T25QcmV2aW91
c0xheW91dEJveCArIDFdIDogbnVsbHB0cjsKKworICAgICAgICAgICAgaWYgKG5leHRCb3ggJiYg
bmV4dEJveC0+bGluZUluZGV4KCkgPT0gcHJldmlvdXNCb3gubGluZUluZGV4KCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBQcmV2aW91cyBhbmQgbmV4dCBib3hlcyBhcmUgb24gdGhlIHNhbWUgbGlu
ZS4gVGhlIG91dC1vZi1mbG93IGJveCBpcyByaWdodCBhdCB0aGUgcHJldmlvdXMgYm94J3MgbG9n
aWNhbCByaWdodC4KICAgICAgICAgICAgICAgICAvLyA8ZGl2PnRleHQ8aW1nIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L2Rpdj4KLSAgICAgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxMZWZ0ID0gcHJldmlvdXNSdW4ubG9naWNhbFJpZ2h0KCk7CisgICAgICAgICAgICAgICAgYXV0
byBsb2dpY2FsTGVmdCA9IHByZXZpb3VzQm94LmxvZ2ljYWxSaWdodCgpOwogICAgICAgICAgICAg
ICAgIGlmIChwcmV2aW91c0NvbnRlbnRTa2lwcGluZ0Zsb2F0cy0+aXNJbmxpbmVCb3goKSAmJiAh
cHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHMtPmlzQW5vbnltb3VzKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gPGRpdj50ZXh0PHNwYW4+PGltZyBzdHlsZT0icG9zaXRpb246IGFic29s
dXRlIj5jb250ZW50PC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAvLyBvcgpAQCAt
MzI5LDI3ICszMjksMjcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0
YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBGb3IKICAgICAgICAgICAgICAg
ICAgICAgICAgID8gQm94R2VvbWV0cnk6OmJvcmRlckJveExlZnQoaW5saW5lQm94Qm94R2VvbWV0
cnkpICsgaW5saW5lQm94Qm94R2VvbWV0cnkuY29udGVudEJveExlZnQoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgOiBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChpbmxpbmVCb3hCb3hHZW9t
ZXRyeSkucmlnaHQoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgb3V0T2ZG
bG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBsb2dpY2FsTGVmdCwgbGluZXNbcHJldmlv
dXNSdW4ubGluZUluZGV4KCldLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgpIH0pOworICAgICAg
ICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgbG9naWNhbExl
ZnQsIGxpbmVzW3ByZXZpb3VzQm94LmxpbmVJbmRleCgpXS5saW5lQm94TG9naWNhbFJlY3QoKS50
b3AoKSB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGlmIChuZXh0UnVuKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIG91dCBvZiBmbG93
IGJveCBpcyBwbGFjZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBsaW5lICh3aGVyZSB0
aGUgZmlyc3QgcnVuIG9uIHRoZSBsaW5lIGlzKS4KKyAgICAgICAgICAgIGlmIChuZXh0Qm94KSB7
CisgICAgICAgICAgICAgICAgLy8gVGhlIG91dCBvZiBmbG93IGJveCBpcyBwbGFjZWQgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUgbmV4dCBsaW5lICh3aGVyZSB0aGUgZmlyc3QgYm94IG9uIHRoZSBs
aW5lIGlzKS4KICAgICAgICAgICAgICAgICAvLyA8ZGl2PnRleHQ8YnI+PGltZyBzdHlsZT0icG9z
aXRpb246IGFic29sdXRlIj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8
L2Rpdj4KLSAgICAgICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVm
dCh7IG5leHRSdW4tPmxvZ2ljYWxMZWZ0KCksIGxpbmVzW25leHRSdW4tPmxpbmVJbmRleCgpXS5s
aW5lQm94TG9naWNhbFJlY3QoKS50b3AoKSB9KTsKKyAgICAgICAgICAgICAgICBvdXRPZkZsb3dH
ZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IG5leHRCb3gtPmxvZ2ljYWxMZWZ0KCksIGxpbmVz
W25leHRCb3gtPmxpbmVJbmRleCgpXS5saW5lQm94TG9naWNhbFJlY3QoKS50b3AoKSB9KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8m
IGxhc3RMaW5lTG9naWNhbFJlY3QgPSBsaW5lc1twcmV2aW91c1J1bi5saW5lSW5kZXgoKV0ubGlu
ZUJveExvZ2ljYWxSZWN0KCk7CisgICAgICAgICAgICBhdXRvJiBsYXN0TGluZUxvZ2ljYWxSZWN0
ID0gbGluZXNbcHJldmlvdXNCb3gubGluZUluZGV4KCldLmxpbmVCb3hMb2dpY2FsUmVjdCgpOwog
ICAgICAgICAgICAgLy8gVGhpcyBvdXQtb2YtZmxvdyBib3ggaXMgdGhlIGxhc3QgYm94LgogICAg
ICAgICAgICAgLy8gRklYTUU6IFVzZSBpc0xpbmVCcmVhayBpbnN0ZWFkIHRvIGNvdmVyIHByZXNl
cnZlZCBuZXcgbGluZXMgdG9vLgotICAgICAgICAgICAgaWYgKHByZXZpb3VzUnVuLmxheW91dEJv
eCgpLmlzTGluZUJyZWFrQm94KCkpIHsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c0JveC5sYXlv
dXRCb3goKS5pc0xpbmVCcmVha0JveCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gPGRpdj50ZXh0
PGJyPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PGltZyBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlIj48L2Rpdj4KICAgICAgICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRM
b2dpY2FsVG9wTGVmdCh7IGxhc3RMaW5lTG9naWNhbFJlY3QubGVmdCgpLCBsYXN0TGluZUxvZ2lj
YWxSZWN0LmJvdHRvbSgpIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBtYXkgbmVlZCB0byBjaGVjayBpZiB0aGlzIGJv
eCBhY3R1YWxseSBmaXRzIHRoZSBsYXN0IGxpbmUgYW5kIG1vdmUgaXQgb3ZlciB0byB0aGUgIm5l
eHQiIGxpbmUuCi0gICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVm
dCh7IHByZXZpb3VzUnVuLmxvZ2ljYWxSaWdodCgpLCBsYXN0TGluZUxvZ2ljYWxSZWN0LnRvcCgp
IH0pOworICAgICAgICAgICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBw
cmV2aW91c0JveC5sb2dpY2FsUmlnaHQoKSwgbGFzdExpbmVMb2dpY2FsUmVjdC50b3AoKSB9KTsK
ICAgICAgICAgfTsKICAgICAgICAgcGxhY2VPdXRPZkZsb3dCb3hBZnRlclByZXZpb3VzSW5GbG93
Qm94KCk7CiAgICAgfQpAQCAtNTc3LDcgKzU3Nyw3IEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWls
CiAKICAgICBhdXRvIGlubGluZUNvbnRlbnRCdWlsZGVyID0gSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyIHsgcm9vdCgpLCBmb3JtYXR0aW5nU3RhdGUgfTsKICAgICBhdXRvIGN1cnJlbnRMaW5l
SW5kZXggPSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKS5zaXplKCk7Ci0gICAgZm9ybWF0dGluZ1N0
YXRlLmFkZFJ1bnMoaW5saW5lQ29udGVudEJ1aWxkZXIuYnVpbGQobGluZUNvbnRlbnQsIGxpbmVB
bmRMaW5lQm94LmxpbmVCb3gsIGxpbmVCb3hMb2dpY2FsUmVjdC50b3BMZWZ0KCksIGN1cnJlbnRM
aW5lSW5kZXgpKTsKKyAgICBmb3JtYXR0aW5nU3RhdGUuYWRkQm94ZXMoaW5saW5lQ29udGVudEJ1
aWxkZXIuYnVpbGQobGluZUNvbnRlbnQsIGxpbmVBbmRMaW5lQm94LmxpbmVCb3gsIGxpbmVCb3hM
b2dpY2FsUmVjdC50b3BMZWZ0KCksIGN1cnJlbnRMaW5lSW5kZXgpKTsKICAgICBmb3JtYXR0aW5n
U3RhdGUuYWRkTGluZUJveChXVEZNb3ZlKGxpbmVBbmRMaW5lQm94LmxpbmVCb3gpKTsKICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkTGluZShsaW5lQW5kTGluZUJveC5saW5lKTsKIApAQCAtNTg5LDE2
ICs1ODksMTYgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZvcm1h
dHRpbmdTdGF0ZSgpCiAgICAgaWYgKCFtX2xpbmVEYW1hZ2UpIHsKICAgICAgICAgLy8gTm9uLWVt
cHR5IGZvcm1hdHRpbmcgc3RhdGUgd2l0aCBubyBkYW1hZ2UgbWVhbnMgd2UgYXJlIHRyeWluZyB0
byBsYXlvdXQgYSBjbGVhbiB0cmVlLgogICAgICAgICAvLyBGSVhNRTogQWRkIEFTU0VSVChmb3Jt
YXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpLmlzRW1wdHkoKSkgd2hlbiBhbGwgdGhlIGNvZGVw
YXRocyBhcmUgY292ZXJlZC4KLSAgICAgICAgZm9ybWF0dGluZ1N0YXRlKCkuY2xlYXJMaW5lQW5k
UnVucygpOworICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5jbGVhckxpbmVBbmRCb3hlcygpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIEZJWE1FOiBMaW5lcyBhbmQgcnVucyBhcmUg
bW92ZWQgb3V0IHRvIHVuZGVyIEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50IGluIHRoZSBpbnRl
Z3JhdGlvbiBjb2RlcGF0aCwgc28gY2xlYXJMaW5lQW5kUnVucyBpcyBuby1vcC4KKyAgICAvLyBG
SVhNRTogTGluZXMgYW5kIGJveGVzIGFyZSBtb3ZlZCBvdXQgdG8gdW5kZXIgSW50ZWdyYXRpb246
OklubGluZUNvbnRlbnQgaW4gdGhlIGludGVncmF0aW9uIGNvZGVwYXRoLCBzbyBjbGVhckxpbmVB
bmRCb3hlcyBpcyBuby1vcC4KICAgICBzd2l0Y2ggKG1fbGluZURhbWFnZS0+dHlwZSgpKSB7CiAg
ICAgY2FzZSBJbmxpbmVEYW1hZ2U6OlR5cGU6Ok5lZWRzQ29udGVudFVwZGF0ZUFuZExpbmVMYXlv
dXQ6CiAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmNsZWFySW5saW5lSXRlbXMoKTsKICAgICAg
ICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBJbmxpbmVEYW1hZ2U6OlR5cGU6Ok5lZWRzTGluZUxh
eW91dDoKLSAgICAgICAgZm9ybWF0dGluZ1N0YXRlKCkuY2xlYXJMaW5lQW5kUnVucygpOworICAg
ICAgICBmb3JtYXR0aW5nU3RhdGUoKS5jbGVhckxpbmVBbmRCb3hlcygpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIElubGluZURhbWFnZTo6VHlwZTo6TmVlZHNWZXJ0aWNhbEFkanVzdG1lbnQ6
CiAgICAgY2FzZSBJbmxpbmVEYW1hZ2U6OlR5cGU6Ok5lZWRzSG9yaXpvbnRhbEFkanVzdG1lbnQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IGUyYjBl
ODgxYmNjZWQ2ZWZmY2Y4ODgzMDYwNzg1NTBhYjU5MjQzZWQuLjk2NWUwMTJkZmY4YmUyNWVlM2Fm
NjYwZjdiZmI5NzIxYWE1NmFkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdTdGF0ZS5oCkBAIC0yOCwxOSArMjgsMTkgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUg
IklubGluZURpc3BsYXlCb3guaCIKICNpbmNsdWRlICJJbmxpbmVEaXNwbGF5TGluZS5oIgogI2lu
Y2x1ZGUgIklubGluZUl0ZW0uaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94LmgiCi0jaW5jbHVk
ZSAiSW5saW5lTGluZVJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKIHVzaW5nIElubGluZUl0ZW1zID0g
VmVjdG9yPElubGluZUl0ZW0+OwotdXNpbmcgRGlzcGxheUxpbmVzID0gVmVjdG9yPElubGluZURp
c3BsYXk6OkxpbmU+OwogdXNpbmcgSW5saW5lTGluZUJveGVzID0gVmVjdG9yPExpbmVCb3g+Owot
dXNpbmcgSW5saW5lUnVucyA9IFZlY3RvcjxSdW4+OwordXNpbmcgRGlzcGxheUxpbmVzID0gVmVj
dG9yPElubGluZURpc3BsYXk6OkxpbmU+OwordXNpbmcgRGlzcGxheUJveGVzID0gVmVjdG9yPElu
bGluZURpc3BsYXk6OkJveD47CiAKIC8vIElubGluZUZvcm1hdHRpbmdTdGF0ZSBob2xkcyB0aGUg
c3RhdGUgZm9yIGEgcGFydGljdWxhciBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHRyZWUuCiBj
bGFzcyBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgOiBwdWJsaWMgRm9ybWF0dGluZ1N0YXRlIHsKQEAg
LTUzLDMwICs1MywzMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0
ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtczsgfQogICAgIHZvaWQgYWRkSW5saW5l
SXRlbShJbmxpbmVJdGVtJiYgaW5saW5lSXRlbSkgeyBtX2lubGluZUl0ZW1zLmFwcGVuZChXVEZN
b3ZlKGlubGluZUl0ZW0pKTsgfQogCisgICAgY29uc3QgSW5saW5lTGluZUJveGVzJiBsaW5lQm94
ZXMoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlczsgfQorICAgIHZvaWQgYWRkTGluZUJveChM
aW5lQm94JiYgbGluZUJveCkgeyBtX2xpbmVCb3hlcy5hcHBlbmQoV1RGTW92ZShsaW5lQm94KSk7
IH0KKwogICAgIGNvbnN0IERpc3BsYXlMaW5lcyYgbGluZXMoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3BsYXlMaW5lczsgfQogICAgIERpc3BsYXlMaW5lcyYgbGluZXMoKSB7IHJldHVybiBtX2Rpc3Bs
YXlMaW5lczsgfQogICAgIHZvaWQgYWRkTGluZShjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJiBs
aW5lKSB7IG1fZGlzcGxheUxpbmVzLmFwcGVuZChsaW5lKTsgfQogCi0gICAgY29uc3QgSW5saW5l
TGluZUJveGVzJiBsaW5lQm94ZXMoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlczsgfQotICAg
IHZvaWQgYWRkTGluZUJveChMaW5lQm94JiYgbGluZUJveCkgeyBtX2xpbmVCb3hlcy5hcHBlbmQo
V1RGTW92ZShsaW5lQm94KSk7IH0KLQotICAgIGNvbnN0IElubGluZVJ1bnMmIHJ1bnMoKSBjb25z
dCB7IHJldHVybiBtX3J1bnM7IH0KLSAgICBJbmxpbmVSdW5zJiBydW5zKCkgeyByZXR1cm4gbV9y
dW5zOyB9Ci0gICAgdm9pZCBhZGRSdW5zKElubGluZVJ1bnMmJiBydW5zKSB7IG1fcnVucy5hcHBl
bmRWZWN0b3IoV1RGTW92ZShydW5zKSk7IH0KKyAgICBjb25zdCBEaXNwbGF5Qm94ZXMmIGJveGVz
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5Qm94ZXM7IH0KKyAgICBEaXNwbGF5Qm94ZXMmIGJv
eGVzKCkgeyByZXR1cm4gbV9kaXNwbGF5Qm94ZXM7IH0KKyAgICB2b2lkIGFkZEJveGVzKERpc3Bs
YXlCb3hlcyYmIGJveGVzKSB7IG1fZGlzcGxheUJveGVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGJv
eGVzKSk7IH0KIAogICAgIHZvaWQgc2V0Q2xlYXJHYXBBZnRlckxhc3RMaW5lKElubGluZUxheW91
dFVuaXQgdmVydGljYWxHYXApOwogICAgIElubGluZUxheW91dFVuaXQgY2xlYXJHYXBBZnRlckxh
c3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9jbGVhckdhcEFmdGVyTGFzdExpbmU7IH0KIAogICAg
IHZvaWQgY2xlYXJJbmxpbmVJdGVtcygpIHsgbV9pbmxpbmVJdGVtcy5jbGVhcigpOyB9Ci0gICAg
dm9pZCBjbGVhckxpbmVBbmRSdW5zKCk7CisgICAgdm9pZCBjbGVhckxpbmVBbmRCb3hlcygpOwog
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogcHJpdmF0ZToKICAgICAvLyBDYWNoZWFibGUgaW5w
dXQgdG8gbGluZSBsYXlvdXQuCiAgICAgSW5saW5lSXRlbXMgbV9pbmxpbmVJdGVtczsKLSAgICBE
aXNwbGF5TGluZXMgbV9kaXNwbGF5TGluZXM7CiAgICAgSW5saW5lTGluZUJveGVzIG1fbGluZUJv
eGVzOwotICAgIElubGluZVJ1bnMgbV9ydW5zOworICAgIERpc3BsYXlMaW5lcyBtX2Rpc3BsYXlM
aW5lczsKKyAgICBEaXNwbGF5Qm94ZXMgbV9kaXNwbGF5Qm94ZXM7CiAgICAgSW5saW5lTGF5b3V0
VW5pdCBtX2NsZWFyR2FwQWZ0ZXJMYXN0TGluZSB7IDAgfTsKIH07CiAKQEAgLTg2LDExICs4Niwx
MSBAQCBpbmxpbmUgdm9pZCBJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNldENsZWFyR2FwQWZ0ZXJM
YXN0TGluZShJbmxpbmVMYXlvdXRVbml0IHZlcgogICAgIG1fY2xlYXJHYXBBZnRlckxhc3RMaW5l
ID0gdmVydGljYWxHYXA7CiB9CiAKLWlubGluZSB2b2lkIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6
Y2xlYXJMaW5lQW5kUnVucygpCitpbmxpbmUgdm9pZCBJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmNs
ZWFyTGluZUFuZEJveGVzKCkKIHsKLSAgICBtX2Rpc3BsYXlMaW5lcy5jbGVhcigpOwogICAgIG1f
bGluZUJveGVzLmNsZWFyKCk7Ci0gICAgbV9ydW5zLmNsZWFyKCk7CisgICAgbV9kaXNwbGF5Qm94
ZXMuY2xlYXIoKTsKKyAgICBtX2Rpc3BsYXlMaW5lcy5jbGVhcigpOwogICAgIG1fY2xlYXJHYXBB
ZnRlckxhc3RMaW5lID0geyB9OwogfQogCkBAIC05OSw3ICs5OSw3IEBAIGlubGluZSB2b2lkIElu
bGluZUZvcm1hdHRpbmdTdGF0ZTo6c2hyaW5rVG9GaXQoKQogICAgIG1faW5saW5lSXRlbXMuc2hy
aW5rVG9GaXQoKTsKICAgICBtX2Rpc3BsYXlMaW5lcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fbGlu
ZUJveGVzLnNocmlua1RvRml0KCk7Ci0gICAgbV9ydW5zLnNocmlua1RvRml0KCk7CisgICAgbV9k
aXNwbGF5Qm94ZXMuc2hyaW5rVG9GaXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5o
CmluZGV4IGJiYmVlMzRiZTgxMWIzNzhlZWFkYjBiMjNmMTljMTNlMTgwODRiYTEuLmVhODEyNTQ4
ZGNkNmM5YTAzY2I4Y2ZmY2UyZDU2ZWFjNWM2YzIxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
LmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQogCisjaW5jbHVkZSAiSW5saW5lRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0
ZW0uaCIKLSNpbmNsdWRlICJJbmxpbmVMaW5lUnVuLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEl0
ZW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBtX2xv
Z2ljYWxMZWZ0OyB9CiAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbG9naWNhbExlZnQoKSArIGxvZ2ljYWxXaWR0aCgpOyB9CiAKLSAgICAgICAg
Y29uc3QgOjpXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6RXhwYW5zaW9uJiBleHBhbnNpb24oKSBjb25z
dCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQorICAgICAgICBjb25zdCBJbmxpbmVEaXNwbGF5OjpC
b3g6OkV4cGFuc2lvbiYgZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0K
IAogICAgICAgICBib29sIGhhc1RyYWlsaW5nV2hpdGVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHJhaWxpbmdXaGl0ZXNwYWNlVHlwZSAhPSBUcmFpbGluZ1doaXRlc3BhY2U6Ok5vbmU7IH0KICAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCB0cmFpbGluZ1doaXRlc3BhY2VXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGg7IH0KQEAgLTk4LDcgKzk4LDcgQEAgcHVi
bGljOgogICAgICAgICB2b2lkIGV4cGFuZChjb25zdCBJbmxpbmVUZXh0SXRlbSYsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICAgICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5KElu
bGluZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1fbG9naWNhbExlZnQgKz0gb2Zmc2V0OyB9CiAgICAg
ICAgIHZvaWQgc2hyaW5rSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgd2lkdGgpIHsgbV9s
b2dpY2FsV2lkdGggLT0gd2lkdGg7IH0KLSAgICAgICAgdm9pZCBzZXRFeHBhbnNpb24oOjpXZWJD
b3JlOjpMYXlvdXQ6OlJ1bjo6RXhwYW5zaW9uIGV4cGFuc2lvbikgeyBtX2V4cGFuc2lvbiA9IGV4
cGFuc2lvbjsgfQorICAgICAgICB2b2lkIHNldEV4cGFuc2lvbihJbmxpbmVEaXNwbGF5OjpCb3g6
OkV4cGFuc2lvbiBleHBhbnNpb24pIHsgbV9leHBhbnNpb24gPSBleHBhbnNpb247IH0KICAgICAg
ICAgdm9pZCBzZXROZWVkc0h5cGhlbihJbmxpbmVMYXlvdXRVbml0IGh5cGhlbkxvZ2ljYWxXaWR0
aCk7CiAKICAgICAgICAgZW51bSBjbGFzcyBUcmFpbGluZ1doaXRlc3BhY2UgewpAQCAtMTI0LDcg
KzEyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgVHJhaWxpbmdXaGl0ZXNwYWNlIG1fdHJhaWxpbmdX
aGl0ZXNwYWNlVHlwZSB7IFRyYWlsaW5nV2hpdGVzcGFjZTo6Tm9uZSB9OwogICAgICAgICBJbmxp
bmVMYXlvdXRVbml0IG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggeyAwIH07CiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8VGV4dD4gbV90ZXh0Q29udGVudDsKLSAgICAgICAgOjpXZWJDb3JlOjpMYXlv
dXQ6OlJ1bjo6RXhwYW5zaW9uIG1fZXhwYW5zaW9uOworICAgICAgICBJbmxpbmVEaXNwbGF5OjpC
b3g6OkV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKICAgICB9OwogICAgIHVzaW5nIFJ1bkxpc3QgPSBW
ZWN0b3I8UnVuLCAxMD47CiAgICAgY29uc3QgUnVuTGlzdCYgcnVucygpIGNvbnN0IHsgcmV0dXJu
IG1fcnVuczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlC
b3guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wN2M5MDQ1Njk4M2ZmYjMzZjU4NmVjMDAzNWMzYmNlZmM0NWI3Zjc3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmgKQEAgLTAsMCArMSwxNDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElO
R19DT05URVhUKQorCisjaW5jbHVkZSAiSW5saW5lUmVjdC5oIgorI2luY2x1ZGUgIkxheW91dEJv
eC5oIgorI2luY2x1ZGUgIlRleHRGbGFncy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgSW5saW5lRGlzcGxheSB7CisKK3N0cnVjdCBCb3ggeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKKyAgICBzdHJ1Y3QgVGV4dCB7CisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFRleHQoc2l6ZV90IHBv
c2l0aW9uLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3Ry
aW5nIGFkanVzdGVkQ29udGVudFRvUmVuZGVyID0gU3RyaW5nKCksIGJvb2wgaGFzSHlwaGVuID0g
ZmFsc2UpOworCisgICAgICAgIHNpemVfdCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7
IH0KKyAgICAgICAgc2l6ZV90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkgKyBsZW5ndGgo
KTsgfQorICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0K
KyAgICAgICAgU3RyaW5nVmlldyBvcmlnaW5hbENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBTdHJp
bmdWaWV3KG1fb3JpZ2luYWxDb250ZW50KS5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW5ndGgpOyB9
CisgICAgICAgIFN0cmluZ1ZpZXcgcmVuZGVyZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9h
ZGp1c3RlZENvbnRlbnRUb1JlbmRlci5pc051bGwoKSA/IG9yaWdpbmFsQ29udGVudCgpIDogbV9h
ZGp1c3RlZENvbnRlbnRUb1JlbmRlcjsgfQorCisgICAgICAgIGJvb2wgaGFzSHlwaGVuKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNIeXBoZW47IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHNpemVf
dCBtX3N0YXJ0IHsgMCB9OworICAgICAgICBzaXplX3QgbV9sZW5ndGggeyAwIH07CisgICAgICAg
IGJvb2wgbV9oYXNIeXBoZW4geyBmYWxzZSB9OworICAgICAgICBTdHJpbmcgbV9vcmlnaW5hbENv
bnRlbnQ7CisgICAgICAgIFN0cmluZyBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyOworICAgIH07
CisKKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBUZXh0LAorICAgICAgICBTb2Z0TGlu
ZUJyZWFrLAorICAgICAgICBMaW5lQnJlYWtCb3gsCisgICAgICAgIEF0b21pY0lubGluZUxldmVs
Qm94LAorICAgICAgICBOb25Sb290SW5saW5lQm94LAorICAgICAgICBSb290SW5saW5lQm94LAor
ICAgICAgICBHZW5lcmljSW5saW5lTGV2ZWxCb3gKKyAgICB9OworICAgIHN0cnVjdCBFeHBhbnNp
b247CisgICAgQm94KHNpemVfdCBsaW5lSW5kZXgsIFR5cGUsIGNvbnN0IExheW91dDo6Qm94Jiwg
Y29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiwgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBpbmtP
dmVyZmxvdywgRXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0LCBi
b29sIGhhc0NvbnRlbnQgPSB0cnVlKTsKKworICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IFR5cGU6OlRleHQ7IH0KKyAgICBib29sIGlzU29mdExpbmVCcmVhaygpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpTb2Z0TGluZUJyZWFrOyB9CisgICAgYm9vbCBp
c0xpbmVCcmVha0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpMaW5lQnJlYWtC
b3g7IH0KKyAgICBib29sIGlzTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gaXNTb2Z0TGluZUJy
ZWFrKCkgfHwgaXNMaW5lQnJlYWtCb3goKTsgfQorICAgIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZl
bEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJv
eDsgfQorICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBpc05vblJvb3RJbmxp
bmVCb3goKSB8fCBpc1Jvb3RJbmxpbmVCb3goKTsgfQorICAgIGJvb2wgaXNOb25Sb290SW5saW5l
Qm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6Ok5vblJvb3RJbmxpbmVCb3g7IH0K
KyAgICBib29sIGlzUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBl
OjpSb290SW5saW5lQm94OyB9CisgICAgYm9vbCBpc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpHZW5lcmljSW5saW5lTGV2ZWxCb3g7IH0KKyAg
ICBib29sIGlzSW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBpc0F0b21pY0lubGluZUxl
dmVsQm94KCkgfHwgaXNMaW5lQnJlYWtCb3goKSB8fCBpc0lubGluZUJveCgpIHx8IGlzR2VuZXJp
Y0lubGluZUxldmVsQm94KCk7IH0KKyAgICBib29sIGlzTm9uUm9vdElubGluZUxldmVsQm94KCkg
Y29uc3QgeyByZXR1cm4gaXNJbmxpbmVMZXZlbEJveCgpICYmICFpc1Jvb3RJbmxpbmVCb3goKTsg
fQorICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgYm9vbCBo
YXNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNDb250ZW50OyB9CisKKyAgICBjb25zdCBM
YXlvdXQ6OklubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2Fs
UmVjdDsgfQorICAgIGNvbnN0IExheW91dDo6SW5saW5lUmVjdCYgaW5rT3ZlcmZsb3coKSBjb25z
dCB7IHJldHVybiBtX2lua092ZXJmbG93OyB9CisKKyAgICBMYXlvdXQ6OklubGluZUxheW91dFVu
aXQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkudG9wKCk7IH0KKyAg
ICBMYXlvdXQ6OklubGluZUxheW91dFVuaXQgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJu
IGxvZ2ljYWxSZWN0KCkuYm90dG9tKCk7IH0KKyAgICBMYXlvdXQ6OklubGluZUxheW91dFVuaXQg
bG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmxlZnQoKTsgfQorICAg
IExheW91dDo6SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBs
b2dpY2FsUmVjdCgpLnJpZ2h0KCk7IH0KKworICAgIExheW91dDo6SW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLndpZHRoKCk7IH0KKyAg
ICBMYXlvdXQ6OklubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IGxvZ2ljYWxSZWN0KCkuaGVpZ2h0KCk7IH0KKworICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoTGF5
b3V0OjpJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkgeyBtX2xvZ2ljYWxSZWN0Lm1vdmVWZXJ0aWNh
bGx5KG9mZnNldCk7IH0KKyAgICB2b2lkIGFkanVzdElua092ZXJmbG93KGNvbnN0IExheW91dDo6
SW5saW5lUmVjdCYgY2hpbGRCb3JkZXJCb3gpIHsgcmV0dXJuIG1faW5rT3ZlcmZsb3cuZXhwYW5k
VG9Db250YWluKGNoaWxkQm9yZGVyQm94KTsgfQorCisgICAgc3RkOjpvcHRpb25hbDxUZXh0PiYg
dGV4dCgpIHsgcmV0dXJuIG1fdGV4dDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4m
IHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKworICAgIHN0cnVjdCBFeHBhbnNpb24g
eworICAgICAgICBFeHBhbnNpb25CZWhhdmlvciBiZWhhdmlvciB7IERlZmF1bHRFeHBhbnNpb24g
fTsKKyAgICAgICAgTGF5b3V0OjpJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxFeHBhbnNpb24g
eyAwIH07CisgICAgfTsKKyAgICBFeHBhbnNpb24gZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9leHBhbnNpb247IH0KKworICAgIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3goKSBjb25z
dCB7IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUo
KSBjb25zdCB7IHJldHVybiBsYXlvdXRCb3goKS5zdHlsZSgpOyB9CisKKyAgICBzaXplX3QgbGlu
ZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXg7IH0KKworcHJpdmF0ZToKKyAgICBj
b25zdCBzaXplX3QgbV9saW5lSW5kZXggeyAwIH07CisgICAgY29uc3QgVHlwZSBtX3R5cGUgeyBU
eXBlOjpHZW5lcmljSW5saW5lTGV2ZWxCb3ggfTsKKyAgICBXZWFrUHRyPGNvbnN0IExheW91dDo6
Qm94PiBtX2xheW91dEJveDsKKyAgICBMYXlvdXQ6OklubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsK
KyAgICBMYXlvdXQ6OklubGluZVJlY3QgbV9pbmtPdmVyZmxvdzsKKyAgICBib29sIG1faGFzQ29u
dGVudCB7IHRydWUgfTsKKyAgICBFeHBhbnNpb24gbV9leHBhbnNpb247CisgICAgc3RkOjpvcHRp
b25hbDxUZXh0PiBtX3RleHQ7Cit9OworCitpbmxpbmUgQm94OjpCb3goc2l6ZV90IGxpbmVJbmRl
eCwgVHlwZSB0eXBlLCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXQ6
OklubGluZVJlY3QmIGxvZ2ljYWxSZWN0LCBjb25zdCBMYXlvdXQ6OklubGluZVJlY3QmIGlua092
ZXJmbG93LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+IHRleHQsIGJv
b2wgaGFzQ29udGVudCkKKyAgICA6IG1fbGluZUluZGV4KGxpbmVJbmRleCkKKyAgICAsIG1fdHlw
ZSh0eXBlKQorICAgICwgbV9sYXlvdXRCb3gobWFrZVdlYWtQdHIobGF5b3V0Qm94KSkKKyAgICAs
IG1fbG9naWNhbFJlY3QobG9naWNhbFJlY3QpCisgICAgLCBtX2lua092ZXJmbG93KGlua092ZXJm
bG93KQorICAgICwgbV9oYXNDb250ZW50KGhhc0NvbnRlbnQpCisgICAgLCBtX2V4cGFuc2lvbihl
eHBhbnNpb24pCisgICAgLCBtX3RleHQodGV4dCkKK3sKK30KKworaW5saW5lIEJveDo6VGV4dDo6
VGV4dChzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxD
b250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIsIGJvb2wgaGFzSHlwaGVuKQor
ICAgIDogbV9zdGFydChzdGFydCkKKyAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICAsIG1faGFz
SHlwaGVuKGhhc0h5cGhlbikKKyAgICAsIG1fb3JpZ2luYWxDb250ZW50KG9yaWdpbmFsQ29udGVu
dCkKKyAgICAsIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIoYWRqdXN0ZWRDb250ZW50VG9SZW5k
ZXIpCit7Cit9CisKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVMaW5lUnVuLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZUxpbmVSdW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU5YWEyMDM2NDZj
NTllZDA0MjM4OTcyYTA3ZDc4YmM4YjI1MzZkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9kaXNwbGF5L0lubGluZUxpbmVSdW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDE0
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIklubGluZVJlY3QuaCIKLSNpbmNsdWRl
ICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLXN0cnVjdCBSdW4gewotICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBzdHJ1Y3QgVGV4dCB7Ci0gICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFRleHQoc2l6ZV90
IHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwg
U3RyaW5nIGFkanVzdGVkQ29udGVudFRvUmVuZGVyID0gU3RyaW5nKCksIGJvb2wgaGFzSHlwaGVu
ID0gZmFsc2UpOwotCi0gICAgICAgIHNpemVfdCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnQ7IH0KLSAgICAgICAgc2l6ZV90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkgKyBsZW5n
dGgoKTsgfQotICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7
IH0KLSAgICAgICAgU3RyaW5nVmlldyBvcmlnaW5hbENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBT
dHJpbmdWaWV3KG1fb3JpZ2luYWxDb250ZW50KS5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW5ndGgp
OyB9Ci0gICAgICAgIFN0cmluZ1ZpZXcgcmVuZGVyZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlci5pc051bGwoKSA/IG9yaWdpbmFsQ29udGVudCgpIDog
bV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlcjsgfQotCi0gICAgICAgIGJvb2wgaGFzSHlwaGVuKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNIeXBoZW47IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHNp
emVfdCBtX3N0YXJ0IHsgMCB9OwotICAgICAgICBzaXplX3QgbV9sZW5ndGggeyAwIH07Ci0gICAg
ICAgIGJvb2wgbV9oYXNIeXBoZW4geyBmYWxzZSB9OwotICAgICAgICBTdHJpbmcgbV9vcmlnaW5h
bENvbnRlbnQ7Ci0gICAgICAgIFN0cmluZyBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyOwotICAg
IH07Ci0KLSAgICBlbnVtIGNsYXNzIFR5cGUgewotICAgICAgICBUZXh0LAotICAgICAgICBTb2Z0
TGluZUJyZWFrLAotICAgICAgICBMaW5lQnJlYWtCb3gsCi0gICAgICAgIEF0b21pY0lubGluZUxl
dmVsQm94LAotICAgICAgICBOb25Sb290SW5saW5lQm94LAotICAgICAgICBSb290SW5saW5lQm94
LAotICAgICAgICBHZW5lcmljSW5saW5lTGV2ZWxCb3gKLSAgICB9OwotICAgIHN0cnVjdCBFeHBh
bnNpb247Ci0gICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIFR5cGUsIGNvbnN0IEJveCYsIGNvbnN0
IElubGluZVJlY3QmLCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uLCBz
dGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0LCBib29sIGhhc0NvbnRlbnQgPSB0cnVl
KTsKLQotICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlRl
eHQ7IH0KLSAgICBib29sIGlzU29mdExpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBUeXBlOjpTb2Z0TGluZUJyZWFrOyB9Ci0gICAgYm9vbCBpc0xpbmVCcmVha0JveCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpMaW5lQnJlYWtCb3g7IH0KLSAgICBib29sIGlzTGlu
ZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gaXNTb2Z0TGluZUJyZWFrKCkgfHwgaXNMaW5lQnJlYWtC
b3goKTsgfQotICAgIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJveDsgfQotICAgIGJvb2wgaXNJbmxp
bmVCb3goKSBjb25zdCB7IHJldHVybiBpc05vblJvb3RJbmxpbmVCb3goKSB8fCBpc1Jvb3RJbmxp
bmVCb3goKTsgfQotICAgIGJvb2wgaXNOb25Sb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IFR5cGU6Ok5vblJvb3RJbmxpbmVCb3g7IH0KLSAgICBib29sIGlzUm9vdElubGlu
ZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpSb290SW5saW5lQm94OyB9Ci0g
ICAgYm9vbCBpc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBUeXBlOjpHZW5lcmljSW5saW5lTGV2ZWxCb3g7IH0KLSAgICBib29sIGlzSW5saW5lTGV2ZWxC
b3goKSBjb25zdCB7IHJldHVybiBpc0F0b21pY0lubGluZUxldmVsQm94KCkgfHwgaXNMaW5lQnJl
YWtCb3goKSB8fCBpc0lubGluZUJveCgpIHx8IGlzR2VuZXJpY0lubGluZUxldmVsQm94KCk7IH0K
LSAgICBib29sIGlzTm9uUm9vdElubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gaXNJbmxp
bmVMZXZlbEJveCgpICYmICFpc1Jvb3RJbmxpbmVCb3goKTsgfQotICAgIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNDb250ZW50OyB9Ci0KLSAgICBjb25zdCBJbmxpbmVSZWN0JiBsb2dpY2FsUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3Q7IH0KLSAgICBjb25zdCBJbmxpbmVSZWN0
JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3ZlcmZsb3c7IH0KLQotICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCku
dG9wKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJl
dHVybiBsb2dpY2FsUmVjdCgpLmJvdHRvbSgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkubGVmdCgpOyB9Ci0gICAgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgp
LnJpZ2h0KCk7IH0KLQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbG9naWNhbFJlY3QoKS53aWR0aCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5oZWlnaHQoKTsgfQot
Ci0gICAgdm9pZCBtb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkgeyBtX2xv
Z2ljYWxSZWN0Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7IH0KLSAgICB2b2lkIGFkanVzdElua092
ZXJmbG93KGNvbnN0IElubGluZVJlY3QmIGNoaWxkQm9yZGVyQm94KSB7IHJldHVybiBtX2lua092
ZXJmbG93LmV4cGFuZFRvQ29udGFpbihjaGlsZEJvcmRlckJveCk7IH0KLQotICAgIHN0ZDo6b3B0
aW9uYWw8VGV4dD4mIHRleHQoKSB7IHJldHVybiBtX3RleHQ7IH0KLSAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPFRleHQ+JiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9Ci0KLSAgICBzdHJ1
Y3QgRXhwYW5zaW9uIHsKLSAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgYmVoYXZpb3IgeyBEZWZh
dWx0RXhwYW5zaW9uIH07Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEV4cGFu
c2lvbiB7IDAgfTsKLSAgICB9OwotICAgIEV4cGFuc2lvbiBleHBhbnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX2V4cGFuc2lvbjsgfQotCi0gICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7
IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUoKSBj
b25zdCB7IHJldHVybiBsYXlvdXRCb3goKS5zdHlsZSgpOyB9Ci0KLSAgICBzaXplX3QgbGluZUlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXg7IH0KLQotcHJpdmF0ZToKLSAgICBjb25z
dCBzaXplX3QgbV9saW5lSW5kZXggeyAwIH07Ci0gICAgY29uc3QgVHlwZSBtX3R5cGUgeyBUeXBl
OjpHZW5lcmljSW5saW5lTGV2ZWxCb3ggfTsKLSAgICBXZWFrUHRyPGNvbnN0IExheW91dDo6Qm94
PiBtX2xheW91dEJveDsKLSAgICBJbmxpbmVSZWN0IG1fbG9naWNhbFJlY3Q7Ci0gICAgSW5saW5l
UmVjdCBtX2lua092ZXJmbG93OwotICAgIGJvb2wgbV9oYXNDb250ZW50IHsgdHJ1ZSB9OwotICAg
IEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKLSAgICBzdGQ6Om9wdGlvbmFsPFRleHQ+IG1fdGV4dDsK
LX07Ci0KLWlubGluZSBSdW46OlJ1bihzaXplX3QgbGluZUluZGV4LCBUeXBlIHR5cGUsIGNvbnN0
IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0LCBj
b25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgc3RkOjpv
cHRpb25hbDxUZXh0PiB0ZXh0LCBib29sIGhhc0NvbnRlbnQpCi0gICAgOiBtX2xpbmVJbmRleChs
aW5lSW5kZXgpCi0gICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fbGF5b3V0Qm94KG1ha2VXZWFr
UHRyKGxheW91dEJveCkpCi0gICAgLCBtX2xvZ2ljYWxSZWN0KGxvZ2ljYWxSZWN0KQotICAgICwg
bV9pbmtPdmVyZmxvdyhpbmtPdmVyZmxvdykKLSAgICAsIG1faGFzQ29udGVudChoYXNDb250ZW50
KQotICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQotICAgICwgbV90ZXh0KHRleHQpCi17Ci19
Ci0KLWlubGluZSBSdW46OlRleHQ6OlRleHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3RyaW5nIGFkanVzdGVkQ29udGVudFRvUmVu
ZGVyLCBib29sIGhhc0h5cGhlbikKLSAgICA6IG1fc3RhcnQoc3RhcnQpCi0gICAgLCBtX2xlbmd0
aChsZW5ndGgpCi0gICAgLCBtX2hhc0h5cGhlbihoYXNIeXBoZW4pCi0gICAgLCBtX29yaWdpbmFs
Q29udGVudChvcmlnaW5hbENvbnRlbnQpCi0gICAgLCBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVy
KGFkanVzdGVkQ29udGVudFRvUmVuZGVyKQotewotfQotCi19Ci19Ci0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGVlM2VhOWZlZDI3
ODEyZWQ2OThjZDZiMGIzYmQyZjkyZGU1NGM5OTMuLjg5ZjY4YTJmOTBiMWI5NTcxZDI4YmI0Y2Fl
ZDlkNTFkM2U2NTdmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0LmNwcApAQCAtMTYyLDggKzE2Miw4IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4
dDo6c2V0VXNlZEdlb21ldHJ5Rm9yQ2VsbHMoTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9uCiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxCb3guZXN0
YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGVlID0gbGF5b3V0U3RhdGUoKS5mb3JtYXR0
aW5nU3RhdGVGb3JJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChjZWxsQm94KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoYXV0byYgcnVuIDogaW5saW5lRm9ybWF0dGluZ1N0YXRlZS5ydW5z
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuLm1vdmVWZXJ0aWNhbGx5KGludHJp
bnNpY1BhZGRpbmdUb3ApOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBib3gg
OiBpbmxpbmVGb3JtYXR0aW5nU3RhdGVlLmJveGVzKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm94Lm1vdmVWZXJ0aWNhbGx5KGludHJpbnNpY1BhZGRpbmdUb3ApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIChhdXRvJiBsaW5lIDogaW5saW5lRm9ybWF0dGluZ1N0YXRlZS5s
aW5lcygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUubW92ZVZlcnRpY2FsbHko
aW50cmluc2ljUGFkZGluZ1RvcCk7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGlu
ZUNvbnRlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uSW5saW5lQ29udGVudC5jcHAKaW5kZXggNzM2Y2QwNWRhZTg5NWQ3NDRiODI1MDJh
NGI0MjczYzlkZjUxYThjMC4uOTgyOWMzNjI4MTZiNGQ1YzhhM2M3ZjU5ODEwNjg0YWY1Y2MzYWVi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uSW5saW5lQ29udGVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5jcHAKQEAgLTQzLDIzICs0
MywyMyBAQCBJbmxpbmVDb250ZW50OjpJbmxpbmVDb250ZW50KGNvbnN0IExpbmVMYXlvdXQmIGxp
bmVMYXlvdXQpCiAKIGJvb2wgSW5saW5lQ29udGVudDo6aGFzQ29udGVudCgpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKHJ1bnMuaXNFbXB0eSgpIHx8IHJ1bnNbMF0uaXNSb290SW5saW5lQm94KCkpOwot
ICAgIHJldHVybiBydW5zLnNpemUoKSA+IDE7CisgICAgQVNTRVJUKGJveGVzLmlzRW1wdHkoKSB8
fCBib3hlc1swXS5pc1Jvb3RJbmxpbmVCb3goKSk7CisgICAgcmV0dXJuIGJveGVzLnNpemUoKSA+
IDE7CiB9OwogCi1XVEY6Okl0ZXJhdG9yUmFuZ2U8Y29uc3QgTGF5b3V0OjpSdW4qPiBJbmxpbmVD
b250ZW50OjpydW5zRm9yUmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3QKK1dURjo6SXRlcmF0
b3JSYW5nZTxjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gqPiBJbmxpbmVDb250ZW50Ojpib3hlc0Zv
clJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IERvIHNvbWV0
aGluZyBlZmZpY2llbnQgZS5nLiB1c2luZyBsaW5lIGJveGVzLgotICAgIGlmIChydW5zLmlzRW1w
dHkoKSkKKyAgICBpZiAoYm94ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyBudWxscHRy
LCBudWxscHRyIH07Ci0gICAgcmV0dXJuIHsgJnJ1bnMuZmlyc3QoKSwgJnJ1bnMubGFzdCgpICsg
MSB9OworICAgIHJldHVybiB7ICZib3hlcy5maXJzdCgpLCAmYm94ZXMubGFzdCgpICsgMSB9Owog
fQogCiBJbmxpbmVDb250ZW50Ojp+SW5saW5lQ29udGVudCgpCiB7CiAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJ
bnRlZ3JhdGlvbkVuYWJsZWQoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IHJ1bnMpCi0g
ICAgICAgICAgICBUZXh0UGFpbnRlcjo6cmVtb3ZlR2x5cGhEaXNwbGF5TGlzdChydW4pOworICAg
ICAgICBmb3IgKGF1dG8mIGJveCA6IGJveGVzKQorICAgICAgICAgICAgVGV4dFBhaW50ZXI6OnJl
bW92ZUdseXBoRGlzcGxheUxpc3QoYm94KTsKICAgICB9CiB9CiAKQEAgLTc4LDQ0ICs3OCw0NCBA
QCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIElubGluZUNvbnRlbnQ6OmNvbnRhaW5pbmdCbG9jaygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fbGluZUxheW91dC0+ZmxvdygpOwogfQogCi1zaXplX3QgSW5s
aW5lQ29udGVudDo6aW5kZXhGb3JSdW4oY29uc3QgTGF5b3V0OjpSdW4mIHJ1bikgY29uc3QKK3Np
emVfdCBJbmxpbmVDb250ZW50OjppbmRleEZvckJveChjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gm
IGJveCkgY29uc3QKIHsKLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigmcnVu
IC0gcnVucy5iZWdpbigpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA8IHJ1bnMuc2l6ZSgp
KTsKKyAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigmYm94IC0gYm94ZXMuYmVn
aW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPCBib3hlcy5zaXplKCkpOwogICAgIHJl
dHVybiBpbmRleDsKIH0KIAotY29uc3QgTGF5b3V0OjpSdW4qIElubGluZUNvbnRlbnQ6OmZpcnN0
UnVuRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gpIGNvbnN0Citjb25z
dCBJbmxpbmVEaXNwbGF5OjpCb3gqIElubGluZUNvbnRlbnQ6OmZpcnN0Qm94Rm9yTGF5b3V0Qm94
KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7Ci0gICAgYXV0byBpbmRleCA9
IGZpcnN0UnVuSW5kZXhGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKLSAgICByZXR1cm4gaW5kZXgg
PyAmcnVuc1sqaW5kZXhdIDogbnVsbHB0cjsKKyAgICBhdXRvIGluZGV4ID0gZmlyc3RCb3hJbmRl
eEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIHJldHVybiBpbmRleCA/ICZib3hlc1sqaW5k
ZXhdIDogbnVsbHB0cjsKIH0KIAotc3RkOjpvcHRpb25hbDxzaXplX3Q+IElubGluZUNvbnRlbnQ6
OmZpcnN0UnVuSW5kZXhGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBJbmxpbmVDb250ZW50OjpmaXJzdEJveEluZGV4
Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAg
Y29uc3RleHByIGF1dG8gY2FjaGVUaHJlc2hvbGQgPSAxNjsKIAotICAgIGlmIChydW5zLnNpemUo
KSA8IGNhY2hlVGhyZXNob2xkKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcnVu
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgcnVuID0gcnVuc1tpXTsKLSAgICAg
ICAgICAgIGlmICgmcnVuLmxheW91dEJveCgpID09ICZsYXlvdXRCb3gpCisgICAgaWYgKGJveGVz
LnNpemUoKSA8IGNhY2hlVGhyZXNob2xkKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYm94ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGF1dG8mIGJveCA9IGJveGVzW2ld
OworICAgICAgICAgICAgaWYgKCZib3gubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KICAgICAKLSAgICBpZiAoIW1fZmlyc3RSdW5JbmRleENhY2hlKSB7Ci0gICAgICAgIG1fZmly
c3RSdW5JbmRleENhY2hlID0gbWFrZVVuaXF1ZTxGaXJzdFJ1bkluZGV4Q2FjaGU+KCk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcnVucy5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgYXV0byYgcnVuID0gcnVuc1tpXTsKLSAgICAgICAgICAgIGlmIChydW4uaXNSb290SW5saW5l
Qm94KCkpCisgICAgaWYgKCFtX2ZpcnN0Qm94SW5kZXhDYWNoZSkgeworICAgICAgICBtX2ZpcnN0
Qm94SW5kZXhDYWNoZSA9IG1ha2VVbmlxdWU8Rmlyc3RCb3hJbmRleENhY2hlPigpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJveGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBhdXRvJiBib3ggPSBib3hlc1tpXTsKKyAgICAgICAgICAgIGlmIChib3guaXNSb290SW5saW5l
Qm94KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX2ZpcnN0UnVu
SW5kZXhDYWNoZS0+YWRkKHJ1bi5sYXlvdXRCb3goKSwgaSk7CisgICAgICAgICAgICBtX2ZpcnN0
Qm94SW5kZXhDYWNoZS0+YWRkKGJveC5sYXlvdXRCb3goKSwgaSk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBhdXRvIGl0ID0gbV9maXJzdFJ1bkluZGV4Q2FjaGUtPmZpbmQobGF5b3V0Qm94KTsK
LSAgICBpZiAoaXQgPT0gbV9maXJzdFJ1bkluZGV4Q2FjaGUtPmVuZCgpKQorICAgIGF1dG8gaXQg
PSBtX2ZpcnN0Qm94SW5kZXhDYWNoZS0+ZmluZChsYXlvdXRCb3gpOworICAgIGlmIChpdCA9PSBt
X2ZpcnN0Qm94SW5kZXhDYWNoZS0+ZW5kKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBy
ZXR1cm4gaXQtPnZhbHVlOwpAQCAtMTI3LDExICsxMjcsMTEgQEAgY29uc3QgVmVjdG9yPHNpemVf
dD4mIElubGluZUNvbnRlbnQ6Om5vblJvb3RJbmxpbmVCb3hJbmRleGVzRm9yTGF5b3V0Qm94KGNv
bnN0IEwKIAogICAgIGlmICghbV9pbmxpbmVCb3hJbmRleENhY2hlKSB7CiAgICAgICAgIG1faW5s
aW5lQm94SW5kZXhDYWNoZSA9IG1ha2VVbmlxdWU8SW5saW5lQm94SW5kZXhDYWNoZT4oKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBydW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBhdXRvJiBydW4gPSBydW5zW2ldOwotICAgICAgICAgICAgaWYgKCFydW4uaXNOb25Sb290
SW5saW5lQm94KCkpCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYm94ZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIGF1dG8mIGJveCA9IGJveGVzW2ldOworICAgICAgICAgICAg
aWYgKCFib3guaXNOb25Sb290SW5saW5lQm94KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBtX2lubGluZUJveEluZGV4Q2FjaGUtPmVuc3VyZShydW4ubGF5b3V0Qm94
KCksIFsmXSB7CisgICAgICAgICAgICBtX2lubGluZUJveEluZGV4Q2FjaGUtPmVuc3VyZShib3gu
bGF5b3V0Qm94KCksIFsmXSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxzaXplX3Q+
IHsgfTsKICAgICAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoaSk7CiAgICAgICAg
IH0KQEAgLTE1MCwxMyArMTUwLDEzIEBAIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBJbmxpbmVDb250
ZW50Ojpub25Sb290SW5saW5lQm94SW5kZXhlc0ZvckxheW91dEJveChjb25zdCBMCiAKIHZvaWQg
SW5saW5lQ29udGVudDo6cmVsZWFzZUNhY2hlcygpCiB7Ci0gICAgbV9maXJzdFJ1bkluZGV4Q2Fj
aGUgPSB7IH07CisgICAgbV9maXJzdEJveEluZGV4Q2FjaGUgPSB7IH07CiAgICAgbV9pbmxpbmVC
b3hJbmRleENhY2hlID0geyB9OwogfQogCiB2b2lkIElubGluZUNvbnRlbnQ6OnNocmlua1RvRml0
KCkKIHsKLSAgICBydW5zLnNocmlua1RvRml0KCk7CisgICAgYm94ZXMuc2hyaW5rVG9GaXQoKTsK
ICAgICBsaW5lcy5zaHJpbmtUb0ZpdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVD
b250ZW50LmgKaW5kZXggOWZjMGYwZmE5Y2EzYjMxMDcyYTc5ZWQxZTQ3YzA0Y2M3MmY0MGVjNy4u
MmNmY2YyYjY0OTdmMjVkOTIwOWE1NGNkNWNlNzA3MjQ5Nzk5YTJjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29u
dGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbklubGluZUNvbnRlbnQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJJbmxpbmVMaW5lUnVuLmgiCisj
aW5jbHVkZSAiSW5saW5lRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9u
TGluZS5oIgogI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNDMsNiArNDMsMTAgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBCb3g7
CiB9CiAKK25hbWVzcGFjZSBJbmxpbmVEaXNwbGF5IHsKK3N0cnVjdCBCb3g7Cit9IAorCiBuYW1l
c3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCiBjbGFzcyBMaW5lTGF5b3V0OwpAQCAtNTEsMzAg
KzU1LDMwIEBAIHN0cnVjdCBJbmxpbmVDb250ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW5saW5l
Q29udGVudD4gewogICAgIHN0YXRpYyBSZWY8SW5saW5lQ29udGVudD4gY3JlYXRlKGNvbnN0IExp
bmVMYXlvdXQmIGxpbmVMYXlvdXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5saW5lQ29udGVu
dChsaW5lTGF5b3V0KSk7IH0KICAgICB+SW5saW5lQ29udGVudCgpOwogCi0gICAgdXNpbmcgUnVu
cyA9IFZlY3RvcjxMYXlvdXQ6OlJ1bj47CisgICAgdXNpbmcgQm94ZXMgPSBWZWN0b3I8SW5saW5l
RGlzcGxheTo6Qm94PjsKICAgICB1c2luZyBMaW5lcyA9IFZlY3RvcjxMaW5lPjsKIAotICAgIFJ1
bnMgcnVuczsKKyAgICBCb3hlcyBib3hlczsKICAgICBMaW5lcyBsaW5lczsKIAogICAgIGZsb2F0
IGNsZWFyR2FwQWZ0ZXJMYXN0TGluZSB7IDAgfTsKIAogICAgIGJvb2wgaGFzQ29udGVudCgpIGNv
bnN0OwogICAgIAotICAgIGNvbnN0IExpbmUmIGxpbmVGb3JSdW4oY29uc3QgTGF5b3V0OjpSdW4m
IHJ1bikgY29uc3QgeyByZXR1cm4gbGluZXNbcnVuLmxpbmVJbmRleCgpXTsgfQotICAgIFdURjo6
SXRlcmF0b3JSYW5nZTxjb25zdCBMYXlvdXQ6OlJ1bio+IHJ1bnNGb3JSZWN0KGNvbnN0IExheW91
dFJlY3QmKSBjb25zdDsKKyAgICBjb25zdCBMaW5lJiBsaW5lRm9yQm94KGNvbnN0IElubGluZURp
c3BsYXk6OkJveCYgYm94KSBjb25zdCB7IHJldHVybiBsaW5lc1tib3gubGluZUluZGV4KCldOyB9
CisgICAgV1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IElubGluZURpc3BsYXk6OkJveCo+IGJveGVz
Rm9yUmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgp
OwogCiAgICAgY29uc3QgTGluZUxheW91dCYgbGluZUxheW91dCgpIGNvbnN0OwogICAgIGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmKSBj
b25zdDsKICAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0
OwogCi0gICAgc2l6ZV90IGluZGV4Rm9yUnVuKGNvbnN0IExheW91dDo6UnVuJikgY29uc3Q7Cisg
ICAgc2l6ZV90IGluZGV4Rm9yQm94KGNvbnN0IElubGluZURpc3BsYXk6OkJveCYpIGNvbnN0Owog
Ci0gICAgY29uc3QgTGF5b3V0OjpSdW4qIGZpcnN0UnVuRm9yTGF5b3V0Qm94KGNvbnN0IExheW91
dDo6Qm94JikgY29uc3Q7CisgICAgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94KiBmaXJzdEJveEZv
ckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0aW9uPiB2b2lkIHRyYXZlcnNlTm9uUm9vdElubGluZUJveGVzKGNvbnN0IExheW91
dDo6Qm94JiwgRnVuY3Rpb24mJik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZmlyc3RS
dW5JbmRleEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OworICAgIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBmaXJzdEJveEluZGV4Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6
Qm94JikgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPHNpemVfdD4mIG5vblJvb3RJbmxpbmVCb3hJ
bmRleGVzRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CiAKICAgICB2b2lk
IHJlbGVhc2VDYWNoZXMoKTsKQEAgLTg0LDggKzg4LDggQEAgcHJpdmF0ZToKIAogICAgIFdlYWtQ
dHI8Y29uc3QgTGluZUxheW91dD4gbV9saW5lTGF5b3V0OwogCi0gICAgdXNpbmcgRmlyc3RSdW5J
bmRleENhY2hlID0gV2Vha0hhc2hNYXA8TGF5b3V0OjpCb3gsIHNpemVfdD47Ci0gICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8Rmlyc3RSdW5JbmRleENhY2hlPiBtX2ZpcnN0UnVuSW5kZXhDYWNo
ZTsKKyAgICB1c2luZyBGaXJzdEJveEluZGV4Q2FjaGUgPSBXZWFrSGFzaE1hcDxMYXlvdXQ6OkJv
eCwgc2l6ZV90PjsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxGaXJzdEJveEluZGV4Q2Fj
aGU+IG1fZmlyc3RCb3hJbmRleENhY2hlOwogCiAgICAgdXNpbmcgSW5saW5lQm94SW5kZXhDYWNo
ZSA9IFdlYWtIYXNoTWFwPExheW91dDo6Qm94LCBWZWN0b3I8c2l6ZV90Pj47CiAgICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lQm94SW5kZXhDYWNoZT4gbV9pbmxpbmVCb3hJbmRleENh
Y2hlOwpAQCAtOTQsNyArOTgsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rp
b24+IHZvaWQgSW5saW5lQ29udGVudDo6dHJhdmVyc2VOb25Sb290SW5saW5lQm94ZXMoY29uc3Qg
TGF5b3V0OjpCb3gmIGxheW91dEJveCwgRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBmb3Ig
KGF1dG8gaW5kZXggOiBub25Sb290SW5saW5lQm94SW5kZXhlc0ZvckxheW91dEJveChsYXlvdXRC
b3gpKQotICAgICAgICBmdW5jdGlvbihydW5zW2luZGV4XSk7CisgICAgICAgIGZ1bmN0aW9uKGJv
eGVzW2luZGV4XSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNv
bnRlbnRCdWlsZGVyLmNwcAppbmRleCA1ZmE5NzQ1YTQ0NGI4NWFhYzNkYzUzOTEzNDAwMjQzN2Q1
NjY1YWMwLi4zMTMzZDNiZGRlNTMyYjc3ODE2Y2NjNzE0NTI2NGQ0MmI5MzE3ODg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25J
bmxpbmVDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCkBAIC0yOCw4
ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2lu
Y2x1ZGUgIklubGluZURpc3BsYXlCb3guaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3Rh
dGUuaCIKLSNpbmNsdWRlICJJbmxpbmVMaW5lUnVuLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2Vv
bWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCIKICNpbmNsdWRl
ICJMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaCIKQEAgLTY1LDE2ICs2NSwxNiBAQCBJ
bmxpbmVDb250ZW50QnVpbGRlcjo6SW5saW5lQ29udGVudEJ1aWxkZXIoY29uc3QgUmVuZGVyQmxv
Y2tGbG93JiBibG9ja0Zsb3csIGNvbgogCiB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpidWls
ZChMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgaW5saW5lRm9ybWF0dGluZ1N0YXRlLCBJ
bmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50KSBjb25zdAogewotICAgIC8vIEZJWE1FOiBUaGlz
IG1pZ2h0IG5lZWQgYSBkaWZmZXJlbnQgYXBwcm9hY2ggd2l0aCBwYXJ0aWFsIGxheW91dCB3aGVy
ZSB0aGUgbGF5b3V0IGNvZGUgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgcnVucy4KLSAgICBpbmxp
bmVDb250ZW50LnJ1bnMgPSBXVEZNb3ZlKGlubGluZUZvcm1hdHRpbmdTdGF0ZS5ydW5zKCkpOwor
ICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0IG5lZWQgYSBkaWZmZXJlbnQgYXBwcm9hY2ggd2l0aCBw
YXJ0aWFsIGxheW91dCB3aGVyZSB0aGUgbGF5b3V0IGNvZGUgbmVlZHMgdG8ga25vdyBhYm91dCB0
aGUgYm94ZXMuCisgICAgaW5saW5lQ29udGVudC5ib3hlcyA9IFdURk1vdmUoaW5saW5lRm9ybWF0
dGluZ1N0YXRlLmJveGVzKCkpOwogICAgIGNyZWF0ZURpc3BsYXlMaW5lcyhpbmxpbmVGb3JtYXR0
aW5nU3RhdGUsIGlubGluZUNvbnRlbnQpOwogfQogCiB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVy
OjpjcmVhdGVEaXNwbGF5TGluZXMoTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZSwgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCkgY29uc3QKIHsK
ICAgICBhdXRvJiBsaW5lcyA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpOwotICAgIGF1
dG8mIHJ1bnMgPSBpbmxpbmVDb250ZW50LnJ1bnM7Ci0gICAgc2l6ZV90IHJ1bkluZGV4ID0gMDsK
KyAgICBhdXRvJiBib3hlcyA9IGlubGluZUNvbnRlbnQuYm94ZXM7CisgICAgc2l6ZV90IGJveElu
ZGV4ID0gMDsKICAgICBpbmxpbmVDb250ZW50LmxpbmVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bGluZXMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBsaW5lSW5kZXggPSAwOyBsaW5lSW5kZXgg
PCBsaW5lcy5zaXplKCk7ICsrbGluZUluZGV4KSB7CiAgICAgICAgIGF1dG8mIGxpbmUgPSBsaW5l
c1tsaW5lSW5kZXhdOwpAQCAtODIsMzIgKzgyLDMyIEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxk
ZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyhMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgaW5s
CiAgICAgICAgIGlmIChhdXRvIG92ZXJmbG93V2lkdGggPSBsaW5lT3ZlcmZsb3dXaWR0aChtX2Js
b2NrRmxvdywgbGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkpOyBvdmVyZmxvd1dpZHRoID4gc2Ny
b2xsYWJsZU92ZXJmbG93UmVjdC53aWR0aCgpKQogICAgICAgICAgICAgc2Nyb2xsYWJsZU92ZXJm
bG93UmVjdC5zZXRXaWR0aChvdmVyZmxvd1dpZHRoKTsKIAotICAgICAgICBhdXRvIGZpcnN0UnVu
SW5kZXggPSBydW5JbmRleDsKKyAgICAgICAgYXV0byBmaXJzdEJveEluZGV4ID0gYm94SW5kZXg7
CiAgICAgICAgIGF1dG8gbGluZUlua092ZXJmbG93UmVjdCA9IHNjcm9sbGFibGVPdmVyZmxvd1Jl
Y3Q7Ci0gICAgICAgIC8vIENvbGxlY3Qgb3ZlcmZsb3cgZnJvbSBydW5zLgotICAgICAgICBmb3Ig
KDsgcnVuSW5kZXggPCBydW5zLnNpemUoKSAmJiBydW5zW3J1bkluZGV4XS5saW5lSW5kZXgoKSA9
PSBsaW5lSW5kZXg7ICsrcnVuSW5kZXgpIHsKLSAgICAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNb
cnVuSW5kZXhdOworICAgICAgICAvLyBDb2xsZWN0IG92ZXJmbG93IGZyb20gYm94ZXMuCisgICAg
ICAgIGZvciAoOyBib3hJbmRleCA8IGJveGVzLnNpemUoKSAmJiBib3hlc1tib3hJbmRleF0ubGlu
ZUluZGV4KCkgPT0gbGluZUluZGV4OyArK2JveEluZGV4KSB7CisgICAgICAgICAgICBhdXRvJiBi
b3ggPSBib3hlc1tib3hJbmRleF07CiAKLSAgICAgICAgICAgIGxpbmVJbmtPdmVyZmxvd1JlY3Qu
dW5pdGUocnVuLmlua092ZXJmbG93KCkpOworICAgICAgICAgICAgbGluZUlua092ZXJmbG93UmVj
dC51bml0ZShib3guaW5rT3ZlcmZsb3coKSk7CiAKLSAgICAgICAgICAgIGF1dG8mIGxheW91dEJv
eCA9IHJ1bi5sYXlvdXRCb3goKTsKKyAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGJveC5s
YXlvdXRCb3goKTsKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNSZXBsYWNlZEJveCgpKSB7
CiAgICAgICAgICAgICAgICAgLy8gU2ltaWxhciB0byBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRS
ZXBsYWNlZENoaWxkT3ZlcmZsb3cuCi0gICAgICAgICAgICAgICAgYXV0byYgYm94ID0gZG93bmNh
c3Q8UmVuZGVyQm94PihtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3gobGF5b3V0Qm94KSk7
Ci0gICAgICAgICAgICAgICAgYXV0byBydW5Mb2dpY2FsUmVjdCA9IHJ1bi5sb2dpY2FsUmVjdCgp
OwotICAgICAgICAgICAgICAgIGlmICghYm94Lmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byBjaGlsZElua092ZXJmbG93ID0gYm94LmxvZ2ljYWxWaXN1
YWxPdmVyZmxvd1JlY3RGb3JQcm9wYWdhdGlvbigmYm94LnBhcmVudCgpLT5zdHlsZSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgY2hpbGRJbmtPdmVyZmxvdy5tb3ZlKHJ1bkxvZ2ljYWxSZWN0Lmxl
ZnQoKSwgcnVuTG9naWNhbFJlY3QudG9wKCkpOworICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRl
cmVyID0gZG93bmNhc3Q8UmVuZGVyQm94PihtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KSk7CisgICAgICAgICAgICAgICAgYXV0byBib3hMb2dpY2FsUmVjdCA9IGJveC5s
b2dpY2FsUmVjdCgpOworICAgICAgICAgICAgICAgIGlmICghcmVuZGVyZXIuaGFzU2VsZlBhaW50
aW5nTGF5ZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGNoaWxkSW5rT3ZlcmZsb3cg
PSByZW5kZXJlci5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24oJnJlbmRl
cmVyLnBhcmVudCgpLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRJbmtPdmVy
Zmxvdy5tb3ZlKGJveExvZ2ljYWxSZWN0LmxlZnQoKSwgYm94TG9naWNhbFJlY3QudG9wKCkpOwog
ICAgICAgICAgICAgICAgICAgICBsaW5lSW5rT3ZlcmZsb3dSZWN0LnVuaXRlKGNoaWxkSW5rT3Zl
cmZsb3cpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhdXRvIGNoaWxkU2Ny
b2xsYWJsZU92ZXJmbG93ID0gYm94LmxvZ2ljYWxMYXlvdXRPdmVyZmxvd1JlY3RGb3JQcm9wYWdh
dGlvbigmYm94LnBhcmVudCgpLT5zdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBjaGlsZFNjcm9s
bGFibGVPdmVyZmxvdy5tb3ZlKHJ1bkxvZ2ljYWxSZWN0LmxlZnQoKSwgcnVuTG9naWNhbFJlY3Qu
dG9wKCkpOworICAgICAgICAgICAgICAgIGF1dG8gY2hpbGRTY3JvbGxhYmxlT3ZlcmZsb3cgPSBy
ZW5kZXJlci5sb2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24oJnJlbmRlcmVy
LnBhcmVudCgpLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBjaGlsZFNjcm9sbGFibGVPdmVy
Zmxvdy5tb3ZlKGJveExvZ2ljYWxSZWN0LmxlZnQoKSwgYm94TG9naWNhbFJlY3QudG9wKCkpOwog
ICAgICAgICAgICAgICAgIHNjcm9sbGFibGVPdmVyZmxvd1JlY3QudW5pdGUoY2hpbGRTY3JvbGxh
YmxlT3ZlcmZsb3cpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGF1dG8gbGlu
ZUJveExvZ2ljYWxSZWN0ID0gRmxvYXRSZWN0IHsgbGluZS5saW5lQm94TG9naWNhbFJlY3QoKSB9
OwotICAgICAgICBhdXRvIHJ1bkNvdW50ID0gcnVuSW5kZXggLSBmaXJzdFJ1bkluZGV4OwotICAg
ICAgICBpbmxpbmVDb250ZW50LmxpbmVzLmFwcGVuZCh7IGZpcnN0UnVuSW5kZXgsIHJ1bkNvdW50
LCBsaW5lQm94TG9naWNhbFJlY3QsIGxpbmUuZW5jbG9zaW5nVG9wQW5kQm90dG9tKCkudG9wLCBs
aW5lLmVuY2xvc2luZ1RvcEFuZEJvdHRvbSgpLmJvdHRvbSwgc2Nyb2xsYWJsZU92ZXJmbG93UmVj
dCwgbGluZUlua092ZXJmbG93UmVjdCwgbGluZS5iYXNlbGluZSgpLCBsaW5lLmNvbnRlbnRMb2dp
Y2FsTGVmdCgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSB9KTsKKyAgICAgICAgYXV0byBi
b3hDb3VudCA9IGJveEluZGV4IC0gZmlyc3RCb3hJbmRleDsKKyAgICAgICAgaW5saW5lQ29udGVu
dC5saW5lcy5hcHBlbmQoeyBmaXJzdEJveEluZGV4LCBib3hDb3VudCwgbGluZUJveExvZ2ljYWxS
ZWN0LCBsaW5lLmVuY2xvc2luZ1RvcEFuZEJvdHRvbSgpLnRvcCwgbGluZS5lbmNsb3NpbmdUb3BB
bmRCb3R0b20oKS5ib3R0b20sIHNjcm9sbGFibGVPdmVyZmxvd1JlY3QsIGxpbmVJbmtPdmVyZmxv
d1JlY3QsIGxpbmUuYmFzZWxpbmUoKSwgbGluZS5jb250ZW50TG9naWNhbExlZnQoKSwgbGluZS5j
b250ZW50TG9naWNhbFdpZHRoKCkgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lLmgKaW5k
ZXggMzkyNjczZTllZDMxYzc3YzE4MDIzMjYyZmNlODkwOTBlMmY1Zjc4ZC4uNmRmZTZiYzkzZjEx
ZTMwMWNmYTllZTc1MTZmMDMzNzQxOGE2ZjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmUuaApAQCAtMzYs
OSArMzYsOSBAQCBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogY2xhc3MgTGluZSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTGluZShzaXplX3QgZmly
c3RSdW5JbmRleCwgc2l6ZV90IHJ1bkNvdW50LCBjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hSZWN0
LCBmbG9hdCBlbmNsb3NpbmdDb250ZW50VG9wLCBmbG9hdCBlbmNsb3NpbmdDb250ZW50Qm90dG9t
LCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgY29uc3QgRmxvYXRSZWN0JiBp
bmtPdmVyZmxvdywgZmxvYXQgYmFzZWxpbmUsIGZsb2F0IGNvbnRlbnRMZWZ0LCBmbG9hdCBjb250
ZW50V2lkdGgpCi0gICAgICAgIDogbV9maXJzdFJ1bkluZGV4KGZpcnN0UnVuSW5kZXgpCi0gICAg
ICAgICwgbV9ydW5Db3VudChydW5Db3VudCkKKyAgICBMaW5lKHNpemVfdCBmaXJzdEJveEluZGV4
LCBzaXplX3QgYm94Q291bnQsIGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveFJlY3QsIGZsb2F0IGVu
Y2xvc2luZ0NvbnRlbnRUb3AsIGZsb2F0IGVuY2xvc2luZ0NvbnRlbnRCb3R0b20sIGNvbnN0IEZs
b2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93
LCBmbG9hdCBiYXNlbGluZSwgZmxvYXQgY29udGVudExlZnQsIGZsb2F0IGNvbnRlbnRXaWR0aCkK
KyAgICAgICAgOiBtX2ZpcnN0Qm94SW5kZXgoZmlyc3RCb3hJbmRleCkKKyAgICAgICAgLCBtX2Jv
eENvdW50KGJveENvdW50KQogICAgICAgICAsIG1fbGluZUJveFJlY3QobGluZUJveFJlY3QpCiAg
ICAgICAgICwgbV9lbmNsb3NpbmdDb250ZW50VG9wKGVuY2xvc2luZ0NvbnRlbnRUb3ApCiAgICAg
ICAgICwgbV9lbmNsb3NpbmdDb250ZW50Qm90dG9tKGVuY2xvc2luZ0NvbnRlbnRCb3R0b20pCkBA
IC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgc2l6ZV90IGZpcnN0
UnVuSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UnVuSW5kZXg7IH0KLSAgICBzaXplX3Qg
cnVuQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3J1bkNvdW50OyB9CisgICAgc2l6ZV90IGZpcnN0
Qm94SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Qm94SW5kZXg7IH0KKyAgICBzaXplX3Qg
Ym94Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2JveENvdW50OyB9CiAKICAgICBmbG9hdCBsaW5l
Qm94VG9wKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94UmVjdC55KCk7IH0KICAgICBmbG9hdCBs
aW5lQm94Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94UmVjdC5tYXhZKCk7IH0KQEAg
LTcwLDggKzcwLDggQEAgcHVibGljOgogICAgIGZsb2F0IGNvbnRlbnRXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudFdpZHRoOyB9CiAKIHByaXZhdGU6Ci0gICAgc2l6ZV90IG1fZmlyc3RS
dW5JbmRleCB7IDAgfTsKLSAgICBzaXplX3QgbV9ydW5Db3VudCB7IDAgfTsKKyAgICBzaXplX3Qg
bV9maXJzdEJveEluZGV4IHsgMCB9OworICAgIHNpemVfdCBtX2JveENvdW50IHsgMCB9OwogICAg
IC8vIFRoaXMgaXMgbGluZSBib3ggZ2VvbWV0cnkgKHNlZSBodHRwczovL3d3dy53My5vcmcvVFIv
Y3NzLWlubGluZS0zLyNsaW5lLWJveCkuCiAgICAgRmxvYXRSZWN0IG1fbGluZUJveFJlY3Q7CiAg
ICAgLy8gRW5jbG9zaW5nIHRvcCBhbmQgYm90dG9tIGluY2x1ZGVzIGFsbCBpbmxpbmUgbGV2ZWwg
Ym94ZXMgKGJvcmRlciBib3gpIHZlcnRpY2FsbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggNGRkZDRhYTRlOWYzMWNkOWIzZTc2ODcw
MDQ4ODc0ZjY3NjFmNWQ0My4uMjgyYzI4MzEyODhjNGVjMDMzMjgwNWM3OGEzMDQ4MTVhZjQ3ZDFi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGgu
aApAQCAtOTgsMjEgKzk4LDIxIEBAIHB1YmxpYzoKIAogICAgIFJ1bkl0ZXJhdG9yTW9kZXJuUGF0
aCBmaXJzdFJ1bigpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWxpbmUoKS5ydW5Db3VudCgp
KQorICAgICAgICBpZiAoIWxpbmUoKS5ib3hDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHsg
Km1faW5saW5lQ29udGVudCB9OwotICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gUnVuSXRlcmF0
b3JNb2Rlcm5QYXRoIHsgKm1faW5saW5lQ29udGVudCwgbGluZSgpLmZpcnN0UnVuSW5kZXgoKSB9
OwotICAgICAgICBpZiAocnVuSXRlcmF0b3IucnVuKCkuaXNJbmxpbmVCb3goKSkKKyAgICAgICAg
YXV0byBydW5JdGVyYXRvciA9IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRl
bnQsIGxpbmUoKS5maXJzdEJveEluZGV4KCkgfTsKKyAgICAgICAgaWYgKHJ1bkl0ZXJhdG9yLmJv
eCgpLmlzSW5saW5lQm94KCkpCiAgICAgICAgICAgICBydW5JdGVyYXRvci50cmF2ZXJzZU5leHRM
ZWFmKCk7CiAgICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsKICAgICB9CiAKICAgICBSdW5JdGVy
YXRvck1vZGVyblBhdGggbGFzdFJ1bigpIGNvbnN0CiAgICAgewotICAgICAgICBhdXRvIHJ1bkNv
dW50ID0gbGluZSgpLnJ1bkNvdW50KCk7Ci0gICAgICAgIGlmICghcnVuQ291bnQpCisgICAgICAg
IGF1dG8gYm94Q291bnQgPSBsaW5lKCkuYm94Q291bnQoKTsKKyAgICAgICAgaWYgKCFib3hDb3Vu
dCkKICAgICAgICAgICAgIHJldHVybiB7ICptX2lubGluZUNvbnRlbnQgfTsKLSAgICAgICAgYXV0
byBydW5JdGVyYXRvciA9IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRlbnQs
IGxpbmUoKS5maXJzdFJ1bkluZGV4KCkgKyBydW5Db3VudCAtIDEgfTsKLSAgICAgICAgaWYgKHJ1
bkl0ZXJhdG9yLnJ1bigpLmlzSW5saW5lQm94KCkpCisgICAgICAgIGF1dG8gcnVuSXRlcmF0b3Ig
PSBSdW5JdGVyYXRvck1vZGVyblBhdGggeyAqbV9pbmxpbmVDb250ZW50LCBsaW5lKCkuZmlyc3RC
b3hJbmRleCgpICsgYm94Q291bnQgLSAxIH07CisgICAgICAgIGlmIChydW5JdGVyYXRvci5ib3go
KS5pc0lubGluZUJveCgpKQogICAgICAgICAgICAgcnVuSXRlcmF0b3IudHJhdmVyc2VQcmV2aW91
c0xlYWYoKTsKICAgICAgICAgcmV0dXJuIHJ1bkl0ZXJhdG9yOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggMTBjNWUxNTAxYzIwMmQ5ZGJhNjRmMmFmMjBkYWY0
MjM5MGZjZDI3YS4uOGY3YzAwN2ExNWJkYmQ1MzNlODY4MjJiNDU4NDdmOGY1OWRjYTFkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lk
IExpbmVMYXlvdXQ6OmxheW91dCgpCiAgICAgdXBkYXRlRm9ybWF0dGluZ1Jvb3RHZW9tZXRyeUFu
ZEludmFsaWRhdGUoKTsKICAgICBwcmVwYXJlRmxvYXRpbmdTdGF0ZSgpOwogCi0gICAgLy8gRklY
TUU6IERvIG5vdCBjbGVhciB0aGUgbGluZXMgYW5kIHJ1bnMgaGVyZSB1bmNvbmRpdGlvbmFsbHks
IGJ1dCBjb25zdWx0IHdpdGggdGhlIGRhbWFnZSBvYmplY3QgaW5zdGVhZC4KKyAgICAvLyBGSVhN
RTogRG8gbm90IGNsZWFyIHRoZSBsaW5lcyBhbmQgYm94ZXMgaGVyZSB1bmNvbmRpdGlvbmFsbHks
IGJ1dCBjb25zdWx0IHdpdGggdGhlIGRhbWFnZSBvYmplY3QgaW5zdGVhZC4KICAgICBtX2lubGlu
ZUNvbnRlbnQgPSBudWxscHRyOwogICAgIGF1dG8mIHJvb3RHZW9tZXRyeSA9IG1fbGF5b3V0U3Rh
dGUuZ2VvbWV0cnlGb3JCb3gocm9vdExheW91dEJveCk7CiAgICAgYXV0byBpbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCA9IExheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQgeyByb290TGF5b3V0
Qm94LCBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZSwgbV9saW5lRGFtYWdlLmdldCgpIH07CkBAIC0z
ODcsNyArMzg3LDcgQEAgVGV4dFJ1bkl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRSdW5zRm9yKGNv
bnN0IFJlbmRlclRleHQmIHJlbmRlclRleHQpIGNvbnN0CiAgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICBhdXRvJiBsYXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVu
ZGVyVGV4dCk7Ci0gICAgYXV0byBmaXJzdEluZGV4ID0gbV9pbmxpbmVDb250ZW50LT5maXJzdFJ1
bkluZGV4Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byBmaXJzdEluZGV4ID0gbV9p
bmxpbmVDb250ZW50LT5maXJzdEJveEluZGV4Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAg
aWYgKCFmaXJzdEluZGV4KQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC00MDAsNyArNDAwLDcg
QEAgUnVuSXRlcmF0b3IgTGluZUxheW91dDo6cnVuRm9yKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJl
bmRlckVsZW1lbnQpIGNvbnN0CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvJiBsYXlv
dXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyRWxlbWVudCk7Ci0g
ICAgYXV0byBmaXJzdEluZGV4ID0gbV9pbmxpbmVDb250ZW50LT5maXJzdFJ1bkluZGV4Rm9yTGF5
b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byBmaXJzdEluZGV4ID0gbV9pbmxpbmVDb250ZW50
LT5maXJzdEJveEluZGV4Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgaWYgKCFmaXJzdElu
ZGV4KQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC00MjcsOCArNDI3LDggQEAgTGF5b3V0UmVj
dCBMaW5lTGF5b3V0OjpmaXJzdElubGluZUJveFJlY3QoY29uc3QgUmVuZGVySW5saW5lJiByZW5k
ZXJJbmxpbmUpIGNvbnMKIHsKICAgICBhdXRvJiBsYXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0
Qm94Rm9yUmVuZGVyZXIocmVuZGVySW5saW5lKTsKIAotICAgIGlmIChhdXRvKiBydW4gPSBtX2lu
bGluZUNvbnRlbnQtPmZpcnN0UnVuRm9yTGF5b3V0Qm94KGxheW91dEJveCkpCi0gICAgICAgIHJl
dHVybiBMYXlvdXQ6OnRvTGF5b3V0UmVjdChydW4tPmxvZ2ljYWxSZWN0KCkpOworICAgIGlmIChh
dXRvKiBib3ggPSBtX2lubGluZUNvbnRlbnQtPmZpcnN0Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJv
eCkpCisgICAgICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0UmVjdChib3gtPmxvZ2ljYWxSZWN0
KCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTQ5OCwxNCArNDk4LDE0IEBAIHZvaWQgTGlu
ZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKICAgICBhdXRvIHBhaW50UmVjdCA9IHBhaW50SW5mby5yZWN0OwogICAgIHBh
aW50UmVjdC5tb3ZlQnkoLXBhaW50T2Zmc2V0KTsKIAotICAgIGZvciAoYXV0byYgcnVuIDogbV9p
bmxpbmVDb250ZW50LT5ydW5zRm9yUmVjdChwYWludFJlY3QpKSB7Ci0gICAgICAgIGlmIChydW4u
aXNJbmxpbmVCb3goKSkKKyAgICBmb3IgKGF1dG8mIGJveCA6IG1faW5saW5lQ29udGVudC0+Ym94
ZXNGb3JSZWN0KHBhaW50UmVjdCkpIHsKKyAgICAgICAgaWYgKGJveC5pc0lubGluZUJveCgpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChydW4udGV4dCgpKSB7Ci0gICAgICAg
ICAgICBwYWludFRleHRSdW5Vc2luZ1BoeXNpY2FsQ29vcmRpbmF0ZXMocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCwgcnVuKTsKKyAgICAgICAgaWYgKGJveC50ZXh0KCkpIHsKKyAgICAgICAgICAgIHBh
aW50VGV4dEJveFVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhwYWludEluZm8sIHBhaW50T2Zmc2V0
LCBib3gpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1
dG8mIHJlbmRlcmVyID0gbV9ib3hUcmVlLnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1bi5sYXlvdXRC
b3goKSk7IGlzPFJlbmRlckJveD4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLmlzUmVwbGFjZWQoKSkg
eworICAgICAgICBpZiAoYXV0byYgcmVuZGVyZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlv
dXRCb3goYm94LmxheW91dEJveCgpKTsgaXM8UmVuZGVyQm94PihyZW5kZXJlcikgJiYgcmVuZGVy
ZXIuaXNSZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2Fz
dDxSZW5kZXJCb3g+KHJlbmRlcmVyKTsKICAgICAgICAgICAgIGlmICghcmVuZGVyQm94Lmhhc1Nl
bGZQYWludGluZ0xheWVyKCkgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5k
ZXJCb3gpKQogICAgICAgICAgICAgICAgIHJlbmRlckJveC5wYWludEFzSW5saW5lQmxvY2socGFp
bnRJbmZvLCBwYWludE9mZnNldCk7CkBAIC01MjMsMjMgKzUyMywyMyBAQCBib29sIExpbmVMYXlv
dXQ6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCwgYwogCiAgICAgYXV0byYgaW5saW5lQ29udGVudCA9ICptX2lubGluZUNvbnRlbnQ7
CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZG8gc29tZXRoaW5nIGVmZmljaWVudCB0byBm
aW5kIHRoZSBydW4gcmFuZ2UuCi0gICAgZm9yIChhdXRvJiBydW4gOiBXVEY6Om1ha2VSZXZlcnNl
ZFJhbmdlKGlubGluZUNvbnRlbnQucnVucykpIHsKLSAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBt
X2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgZG8gc29tZXRoaW5nIGVmZmljaWVudCB0byBmaW5kIHRoZSBib3gg
cmFuZ2UuCisgICAgZm9yIChhdXRvJiBib3ggOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKGlubGlu
ZUNvbnRlbnQuYm94ZXMpKSB7CisgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9ib3hUcmVlLnJl
bmRlcmVyRm9yTGF5b3V0Qm94KGJveC5sYXlvdXRCb3goKSk7CiAKLSAgICAgICAgaWYgKCFydW4u
aXNSb290SW5saW5lQm94KCkgJiYgaXM8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVyZXIp
ICYmIGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlcmVyKS5oYXNTZWxmUGFp
bnRpbmdMYXllcigpKQorICAgICAgICBpZiAoIWJveC5pc1Jvb3RJbmxpbmVCb3goKSAmJiBpczxS
ZW5kZXJMYXllck1vZGVsT2JqZWN0PihyZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyTGF5ZXJN
b2RlbE9iamVjdD4ocmVuZGVyZXIpLmhhc1NlbGZQYWludGluZ0xheWVyKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBpZiAocnVuLmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkg
eworICAgICAgICBpZiAoYm94LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgewogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyLmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFp
bmVyLCBhY2N1bXVsYXRlZE9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gcnVuUmVjdCA9
IExheW91dDo6dG9MYXlvdXRSZWN0KHJ1bi5sb2dpY2FsUmVjdCgpKTsKLSAgICAgICAgcnVuUmVj
dC5tb3ZlQnkoYWNjdW11bGF0ZWRPZmZzZXQpOworICAgICAgICBhdXRvIGJveFJlY3QgPSBMYXlv
dXQ6OnRvTGF5b3V0UmVjdChib3gubG9naWNhbFJlY3QoKSk7CisgICAgICAgIGJveFJlY3QubW92
ZUJ5KGFjY3VtdWxhdGVkT2Zmc2V0KTsKIAotICAgICAgICBpZiAoIWxvY2F0aW9uSW5Db250YWlu
ZXIuaW50ZXJzZWN0cyhydW5SZWN0KSkKKyAgICAgICAgaWYgKCFsb2NhdGlvbkluQ29udGFpbmVy
LmludGVyc2VjdHMoYm94UmVjdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBh
dXRvJiBlbGVtZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikgPyBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikgOiAqcmVuZGVyZXIucGFyZW50KCk7CkBAIC01
NDcsNyArNTQ3LDcgQEAgYm9vbCBMaW5lTGF5b3V0OjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGMKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAKICAgICAgICAgcmVuZGVyZXIudXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1
bHQsIGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRl
ZE9mZnNldCkpOwotICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1
bHQocmVuZGVyZXIubm9kZUZvckhpdFRlc3QoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5l
ciwgcnVuUmVjdCkgPT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQorICAgICAgICBpZiAocmVzdWx0
LmFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQocmVuZGVyZXIubm9kZUZvckhpdFRlc3QoKSwg
cmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm94UmVjdCkgPT0gSGl0VGVzdFByb2dyZXNz
OjpTdG9wKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC01NzIsMTMgKzU3
MiwxMyBAQCB2b2lkIExpbmVMYXlvdXQ6OnJlbGVhc2VDYWNoZXMoKQogICAgICAgICBtX2lubGlu
ZUNvbnRlbnQtPnJlbGVhc2VDYWNoZXMoKTsKIH0KIAotdm9pZCBMaW5lTGF5b3V0OjpwYWludFRl
eHRSdW5Vc2luZ1BoeXNpY2FsQ29vcmRpbmF0ZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0OjpSdW4mIHJ1bikKK3ZvaWQg
TGluZUxheW91dDo6cGFpbnRUZXh0Qm94VXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IElubGlu
ZURpc3BsYXk6OkJveCYgdGV4dEJveCkKIHsKLSAgICBhdXRvJiBzdHlsZSA9IHJ1bi5zdHlsZSgp
OwotICAgIGlmIChydW4uc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKKyAgICBhdXRvJiBzdHlsZSA9IHRleHRCb3guc3R5bGUoKTsKKyAgICBpZiAodGV4dEJveC5z
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvJiB0ZXh0Q29udGVudCA9ICpydW4udGV4dCgpOworICAgIGF1dG8mIHRl
eHRDb250ZW50ID0gKnRleHRCb3gudGV4dCgpOwogICAgIGlmICghdGV4dENvbnRlbnQubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgTGluZUxheW91
dDo6cGFpbnRUZXh0UnVuVXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zCiAgICAgYXV0byBwaHlzaWNhbFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQ7CiAg
ICAgaWYgKCFibG9ja0lzSG9yaXpvbnRhbFdyaXRpbmcpIHsKICAgICAgICAgLy8gRklYTUU6IEZp
Z3VyZSBvdXQgd2h5IHRoaXMgdHJhbnNsYXRlIGlzIHJlcXVpcmVkLgotICAgICAgICBwaHlzaWNh
bFBhaW50T2Zmc2V0Lm1vdmUoeyAwLCAtcnVuLmxvZ2ljYWxSZWN0KCkuaGVpZ2h0KCkgfSk7Cisg
ICAgICAgIHBoeXNpY2FsUGFpbnRPZmZzZXQubW92ZSh7IDAsIC10ZXh0Qm94LmxvZ2ljYWxSZWN0
KCkuaGVpZ2h0KCkgfSk7CiAgICAgfQogCiAgICAgYXV0byBwaHlzaWNhbFJlY3QgPSBbJl0oY29u
c3QgYXV0byYgcmVjdCkgLT4gRmxvYXRSZWN0IHsKQEAgLTU5OSwxNCArNTk5LDE0IEBAIHZvaWQg
TGluZUxheW91dDo6cGFpbnRUZXh0UnVuVXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zCiAgICAgICAgIHJldHVybiByZWN0OwogICAgIH07CiAKLSAgICBh
dXRvIHZpc3VhbE92ZXJmbG93UmVjdCA9IHBoeXNpY2FsUmVjdChydW4uaW5rT3ZlcmZsb3coKSk7
CisgICAgYXV0byB2aXN1YWxPdmVyZmxvd1JlY3QgPSBwaHlzaWNhbFJlY3QodGV4dEJveC5pbmtP
dmVyZmxvdygpKTsKIAogICAgIGF1dG8gZGFtYWdlZFJlY3QgPSBwYWludEluZm8ucmVjdDsKICAg
ICBkYW1hZ2VkUmVjdC5tb3ZlQnkoLXBoeXNpY2FsUGFpbnRPZmZzZXQpOwogICAgIGlmIChkYW1h
Z2VkUmVjdC55KCkgPiB2aXN1YWxPdmVyZmxvd1JlY3QubWF4WSgpIHx8IGRhbWFnZWRSZWN0Lm1h
eFkoKSA8IHZpc3VhbE92ZXJmbG93UmVjdC55KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRl
eHRCb3hQYWludGVyIHBhaW50ZXIoKm1faW5saW5lQ29udGVudCwgcnVuLCBwYWludEluZm8sIHBh
aW50T2Zmc2V0KTsKKyAgICBUZXh0Qm94UGFpbnRlciBwYWludGVyKCptX2lubGluZUNvbnRlbnQs
IHRleHRCb3gsIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgIHBhaW50ZXIucGFpbnQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCmluZGV4IGU2NTY1NTVmMTY3MjM0MTgx
ZjRiODU4Y2VmNzA4YjVmYjFmNDE2Y2UuLmNiNzZiNTJmYWQxODNlN2M1ZjBkZjBiZTBkZjA4MzA2
YmYyMzcwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKQEAgLTEyMyw3ICsxMjMs
NyBAQCBwcml2YXRlOgogICAgIElubGluZUNvbnRlbnQmIGVuc3VyZUlubGluZUNvbnRlbnQoKTsK
ICAgICB2b2lkIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94Jik7CiAK
LSAgICB2b2lkIHBhaW50VGV4dFJ1blVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dDo6UnVuJik7Cisg
ICAgdm9pZCBwYWludFRleHRCb3hVc2luZ1BoeXNpY2FsQ29vcmRpbmF0ZXMoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gm
KTsKIAogICAgIExheW91dDo6SW5saW5lRGFtYWdlJiBlbnN1cmVMaW5lRGFtYWdlKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvblBhZ2luYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHAKaW5kZXggOTQzNWM1MDA0NmFmM2M1ZDYxYzM4
Y2VhOTNhY2I1Mjc0Nzk1ZTllYy4uOTI0ODhhMmJjZTdmY2EzODBhZTcyODIzODhhYmUwODRmZGYw
MWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHAKQEAgLTEyNyw4ICsxMjcs
OCBAQCBzdGF0aWMgUmVmPElubGluZUNvbnRlbnQ+IG1ha2VBZGp1c3RlZENvbnRlbnQoY29uc3Qg
SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudAogICAgIGF1dG8gYWRqdXN0ZWRMaW5lID0gWyZd
KGNvbnN0IExpbmUmIGxpbmUsIGZsb2F0IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBM
aW5lIHsKLSAgICAgICAgICAgIGxpbmUuZmlyc3RSdW5JbmRleCgpLAotICAgICAgICAgICAgbGlu
ZS5ydW5Db3VudCgpLAorICAgICAgICAgICAgbGluZS5maXJzdEJveEluZGV4KCksCisgICAgICAg
ICAgICBsaW5lLmJveENvdW50KCksCiAgICAgICAgICAgICBtb3ZlVmVydGljYWxseSh7IEZsb2F0
UG9pbnQgeyBsaW5lLmxpbmVCb3hMZWZ0KCksIGxpbmUubGluZUJveFRvcCgpIH0sIEZsb2F0UG9p
bnQgeyBsaW5lLmxpbmVCb3hSaWdodCgpLCBsaW5lLmxpbmVCb3hCb3R0b20oKSB9IH0sIG9mZnNl
dCksCiAgICAgICAgICAgICBsaW5lLmVuY2xvc2luZ0NvbnRlbnRUb3AoKSArIG9mZnNldCwKICAg
ICAgICAgICAgIGxpbmUuZW5jbG9zaW5nQ29udGVudEJvdHRvbSgpICsgb2Zmc2V0LApAQCAtMTQw
LDE2ICsxNDAsMTYgQEAgc3RhdGljIFJlZjxJbmxpbmVDb250ZW50PiBtYWtlQWRqdXN0ZWRDb250
ZW50KGNvbnN0IElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQKICAgICAgICAgfTsKICAgICB9
OwogCi0gICAgYXV0byBhZGp1c3RlZFJ1biA9IFsmXShjb25zdCBMYXlvdXQ6OlJ1biYgcnVuLCBm
bG9hdCBvZmZzZXQpCisgICAgYXV0byBhZGp1c3RlZEJveCA9IFsmXShjb25zdCBJbmxpbmVEaXNw
bGF5OjpCb3gmIGJveCwgZmxvYXQgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIExheW91
dDo6UnVuIHsKLSAgICAgICAgICAgIHJ1bi5saW5lSW5kZXgoKSwKLSAgICAgICAgICAgIHJ1bi50
eXBlKCksCi0gICAgICAgICAgICBydW4ubGF5b3V0Qm94KCksCi0gICAgICAgICAgICBtb3ZlVmVy
dGljYWxseShydW4ubG9naWNhbFJlY3QoKSwgb2Zmc2V0KSwKLSAgICAgICAgICAgIG1vdmVWZXJ0
aWNhbGx5KHJ1bi5pbmtPdmVyZmxvdygpLCBvZmZzZXQpLAotICAgICAgICAgICAgcnVuLmV4cGFu
c2lvbigpLAotICAgICAgICAgICAgcnVuLnRleHQoKQorICAgICAgICByZXR1cm4gSW5saW5lRGlz
cGxheTo6Qm94IHsKKyAgICAgICAgICAgIGJveC5saW5lSW5kZXgoKSwKKyAgICAgICAgICAgIGJv
eC50eXBlKCksCisgICAgICAgICAgICBib3gubGF5b3V0Qm94KCksCisgICAgICAgICAgICBtb3Zl
VmVydGljYWxseShib3gubG9naWNhbFJlY3QoKSwgb2Zmc2V0KSwKKyAgICAgICAgICAgIG1vdmVW
ZXJ0aWNhbGx5KGJveC5pbmtPdmVyZmxvdygpLCBvZmZzZXQpLAorICAgICAgICAgICAgYm94LmV4
cGFuc2lvbigpLAorICAgICAgICAgICAgYm94LnRleHQoKQogICAgICAgICB9OwogICAgIH07CiAK
QEAgLTE1OCw4ICsxNTgsOCBAQCBzdGF0aWMgUmVmPElubGluZUNvbnRlbnQ+IG1ha2VBZGp1c3Rl
ZENvbnRlbnQoY29uc3QgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudAogICAgIGZvciAoc2l6
ZV90IGxpbmVJbmRleCA9IDA7IGxpbmVJbmRleCA8IGlubGluZUNvbnRlbnQubGluZXMuc2l6ZSgp
OyArK2xpbmVJbmRleCkKICAgICAgICAgYWRqdXN0ZWRDb250ZW50LT5saW5lcy5hcHBlbmQoYWRq
dXN0ZWRMaW5lKGlubGluZUNvbnRlbnQubGluZXNbbGluZUluZGV4XSwgYWRqdXN0bWVudHNbbGlu
ZUluZGV4XSkpOwogCi0gICAgZm9yIChhdXRvJiBydW4gOiBpbmxpbmVDb250ZW50LnJ1bnMpCi0g
ICAgICAgIGFkanVzdGVkQ29udGVudC0+cnVucy5hcHBlbmQoYWRqdXN0ZWRSdW4ocnVuLCBhZGp1
c3RtZW50c1tydW4ubGluZUluZGV4KCldKSk7CisgICAgZm9yIChhdXRvJiBib3ggOiBpbmxpbmVD
b250ZW50LmJveGVzKQorICAgICAgICBhZGp1c3RlZENvbnRlbnQtPmJveGVzLmFwcGVuZChhZGp1
c3RlZEJveChib3gsIGFkanVzdG1lbnRzW2JveC5saW5lSW5kZXgoKV0pKTsKIAogICAgIHJldHVy
biBhZGp1c3RlZENvbnRlbnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAK
aW5kZXggOTBjNDIzMDY5OGJhZjJmMDA3MTk5ZmY1ZGQ0ZDc5N2Y3NzRiOTg3MC4uNjAxYzkwNGMz
YmUxZGQ2ZjUwNjk0YzNjN2ViZTRiMmIyZWMyYTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yLmNwcApAQCAtODYsNyArODYsNyBAQCBMaW5lSXRlcmF0b3IgUGF0aFJ1bjo6bGlu
ZSgpIGNvbnN0CiAgICAgfQogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
ICAgICwgW10oY29uc3QgUnVuSXRlcmF0b3JNb2Rlcm5QYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJl
dHVybiBMaW5lSXRlcmF0b3IoTGluZUl0ZXJhdG9yTW9kZXJuUGF0aCgqcGF0aC5tX2lubGluZUNv
bnRlbnQsIHBhdGgucnVuKCkubGluZUluZGV4KCkpKTsKKyAgICAgICAgcmV0dXJuIExpbmVJdGVy
YXRvcihMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKCpwYXRoLm1faW5saW5lQ29udGVudCwgcGF0aC5i
b3goKS5saW5lSW5kZXgoKSkpOwogICAgIH0KICNlbmRpZgogICAgICk7CkBAIC0yNTYsMTUgKzI1
NiwxNSBAQCBUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBMZWdhY3lJbmxpbmVUZXh0
Qm94KiBsZWdhY3lJbmxpbmVUZXh0Qm94KQogfQogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCi1UZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBJbmxpbmVDb250
ZW50JiBjb250ZW50LCBjb25zdCBMYXlvdXQ6OlJ1biYgcnVuKQorVGV4dFJ1bkl0ZXJhdG9yIHRl
eHRSdW5Gb3IoY29uc3QgSW5saW5lQ29udGVudCYgY29udGVudCwgY29uc3QgSW5saW5lRGlzcGxh
eTo6Qm94JiBib3gpCiB7Ci0gICAgcmV0dXJuIHRleHRSdW5Gb3IoY29udGVudCwgY29udGVudC5p
bmRleEZvclJ1bihydW4pKTsKKyAgICByZXR1cm4gdGV4dFJ1bkZvcihjb250ZW50LCBjb250ZW50
LmluZGV4Rm9yQm94KGJveCkpOwogfQogCi1UZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bkZvcihjb25z
dCBJbmxpbmVDb250ZW50JiBjb250ZW50LCBzaXplX3QgcnVuSW5kZXgpCitUZXh0UnVuSXRlcmF0
b3IgdGV4dFJ1bkZvcihjb25zdCBJbmxpbmVDb250ZW50JiBjb250ZW50LCBzaXplX3QgYm94SW5k
ZXgpCiB7Ci0gICAgQVNTRVJUKGNvbnRlbnQucnVuc1tydW5JbmRleF0udGV4dCgpKTsKLSAgICBy
ZXR1cm4geyBSdW5JdGVyYXRvck1vZGVyblBhdGggeyBjb250ZW50LCBydW5JbmRleCB9IH07Cisg
ICAgQVNTRVJUKGNvbnRlbnQuYm94ZXNbYm94SW5kZXhdLnRleHQoKSk7CisgICAgcmV0dXJuIHsg
UnVuSXRlcmF0b3JNb2Rlcm5QYXRoIHsgY29udGVudCwgYm94SW5kZXggfSB9OwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCmluZGV4IGU5ODk3MDkwZTNiOWY2NjVi
MjY0NzY4NjQ2YWQ3NjliMDI3Yjk5ODkuLjQxMjFmZGIzNTQ5YmE4NGZjNTQ2YmJhMTZmMzQ4NzIz
ODRjOWM5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaApAQCAtODgsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgLy8gRm9yIGludGVybWVkaWF0ZSBwb3J0aW5nIHN0ZXBzIG9ubHku
CiAgICAgY29uc3QgTGVnYWN5SW5saW5lQm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdDsKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLSAgICBjb25zdCBMYXlvdXQ6OlJ1
biogaW5saW5lQm94KCkgY29uc3Q7CisgICAgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94KiBpbmxp
bmVCb3goKSBjb25zdDsKICNlbmRpZgogICAgIFJ1bkl0ZXJhdG9yIG5leHRPbkxpbmUoKSBjb25z
dDsKICAgICBSdW5JdGVyYXRvciBwcmV2aW91c09uTGluZSgpIGNvbnN0OwpAQCAtMjEyLDcgKzIx
Miw3IEBAIFRleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5Gb3IoY29uc3QgUmVuZGVyVGV4dCYp
OwogVGV4dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRl
clRleHQmKTsKIFRleHRSdW5JdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IExlZ2FjeUlubGluZVRl
eHRCb3gqKTsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLVRleHRSdW5J
dGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IElubGluZUNvbnRlbnQmLCBjb25zdCBMYXlvdXQ6OlJ1
biYpOworVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgSW5saW5lQ29udGVudCYsIGNv
bnN0IElubGluZURpc3BsYXk6OkJveCYpOwogVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5Gb3IoY29u
c3QgSW5saW5lQ29udGVudCYsIHNpemVfdCBydW5JbmRleCk7CiAjZW5kaWYKIFRleHRSdW5SYW5n
ZSB0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0Jik7CkBAIC0zMDAsMTEgKzMwMCwxMSBAQCBp
bmxpbmUgY29uc3QgTGVnYWN5SW5saW5lQm94KiBQYXRoUnVuOjpsZWdhY3lJbmxpbmVCb3goKSBj
b25zdAogfQogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi1pbmxpbmUg
Y29uc3QgTGF5b3V0OjpSdW4qIFBhdGhSdW46OmlubGluZUJveCgpIGNvbnN0CitpbmxpbmUgY29u
c3QgSW5saW5lRGlzcGxheTo6Qm94KiBQYXRoUnVuOjppbmxpbmVCb3goKSBjb25zdAogewogICAg
IGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSdW5JdGVyYXRvck1vZGVyblBhdGg+KG1fcGF0
aFZhcmlhbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJldURjo6Z2V0
PFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aD4obV9wYXRoVmFyaWFudCkucnVuKCk7CisgICAgcmV0dXJu
ICZXVEY6OmdldDxSdW5JdGVyYXRvck1vZGVyblBhdGg+KG1fcGF0aFZhcmlhbnQpLmJveCgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5Q
YXRoLmgKaW5kZXggMjMyMzNiMDllYWMyYzM5NTUzYTY3NjIzMmJkNWYyNzUyYTkxZGVjNC4uMmYz
YWUxNzlmOGFkZDBmMzVjYzRiNTNhZmVmMTljMWRlYjc2MWRlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JN
b2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKQEAgLTQ0LDI4ICs0NCwyOCBAQCBw
dWJsaWM6CiAgICAgfQogICAgIFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aChjb25zdCBJbmxpbmVDb250
ZW50JiBpbmxpbmVDb250ZW50LCBzaXplX3Qgc3RhcnRJbmRleCkKICAgICAgICAgOiBtX2lubGlu
ZUNvbnRlbnQoJmlubGluZUNvbnRlbnQpCi0gICAgICAgICwgbV9ydW5JbmRleChzdGFydEluZGV4
KQorICAgICAgICAsIG1fYm94SW5kZXgoc3RhcnRJbmRleCkKICAgICB7CiAgICAgfQogCi0gICAg
Ym9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiAhIXJ1bigpLnRleHQoKTsgfQorICAgIGJvb2wg
aXNUZXh0KCkgY29uc3QgeyByZXR1cm4gISFib3goKS50ZXh0KCk7IH0KIAotICAgIEZsb2F0UmVj
dCByZWN0KCkgY29uc3QgeyByZXR1cm4gcnVuKCkubG9naWNhbFJlY3QoKTsgfQorICAgIEZsb2F0
UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gYm94KCkubG9naWNhbFJlY3QoKTsgfQogCiAgICAg
Ym9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBkaXJP
dmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0xpbmVCcmVhaygp
IGNvbnN0IHsgcmV0dXJuIHJ1bigpLmlzTGluZUJyZWFrKCk7IH0KKyAgICBib29sIGlzTGluZUJy
ZWFrKCkgY29uc3QgeyByZXR1cm4gYm94KCkuaXNMaW5lQnJlYWsoKTsgfQogCiAgICAgdW5zaWdu
ZWQgbWluaW11bUNhcmV0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gaXNUZXh0KCkgPyBzdGFydCgp
IDogMDsgfQogICAgIHVuc2lnbmVkIG1heGltdW1DYXJldE9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IGlzVGV4dCgpID8gZW5kKCkgOiAxOyB9CiAKICAgICB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbCgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIGJvb2wgaGFzSHlwaGVuKCkgY29uc3QgeyByZXR1
cm4gcnVuKCkudGV4dCgpLT5oYXNIeXBoZW4oKTsgfQotICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIHJ1bigpLnRleHQoKS0+b3JpZ2luYWxDb250ZW50KCk7IH0KLSAgICB1bnNp
Z25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRleHQoKS0+c3RhcnQoKTsgfQotICAg
IHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRleHQoKS0+ZW5kKCk7IH0KLSAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBydW4oKS50ZXh0KCktPmxlbmd0aCgp
OyB9CisgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdCB7IHJldHVybiBib3goKS50ZXh0KCktPmhh
c0h5cGhlbigpOyB9CisgICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gYm94KCku
dGV4dCgpLT5vcmlnaW5hbENvbnRlbnQoKTsgfQorICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3Qg
eyByZXR1cm4gYm94KCkudGV4dCgpLT5zdGFydCgpOyB9CisgICAgdW5zaWduZWQgZW5kKCkgY29u
c3QgeyByZXR1cm4gYm94KCkudGV4dCgpLT5lbmQoKTsgfQorICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIGJveCgpLnRleHQoKS0+bGVuZ3RoKCk7IH0KIAogICAgIC8vIEZJWE1F
OiBNYWtlIGEgc2hhcmVkIGdlbmVyaWMgdmVyc2lvbiBvZiB0aGlzLgogICAgIGlubGluZSB1bnNp
Z25lZCBvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCB4KSBjb25zdApAQCAtODAsNyArODAsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBib29sIGluY2x1ZGVQYXJ0
aWFsR2x5cGhzID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHJ1bigpLnN0eWxlKCkuZm9udENhc2Nh
ZGUoKS5vZmZzZXRGb3JQb3NpdGlvbihjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGU6Oklnbm9yZSks
IGxvY2FsWCwgaW5jbHVkZVBhcnRpYWxHbHlwaHMpOworICAgICAgICByZXR1cm4gYm94KCkuc3R5
bGUoKS5mb250Q2FzY2FkZSgpLm9mZnNldEZvclBvc2l0aW9uKGNyZWF0ZVRleHRSdW4oSHlwaGVu
TW9kZTo6SWdub3JlKSwgbG9jYWxYLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiAgICAgfQogCiAg
ICAgLy8gRklYTUU6IE1ha2UgYSBzaGFyZWQgZ2VuZXJpYyB2ZXJzaW9uIG9mIHRoaXMuCkBAIC05
Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3Qg
PSBMYXlvdXRSZWN0KHJlY3QoKS54KCksIDAsIDAsIDApOwogICAgICAgICBUZXh0UnVuIHRleHRS
dW4gPSBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGU6Oklnbm9yZSk7Ci0gICAgICAgIHJ1bigpLnN0
eWxlKCkuZm9udENhc2NhZGUoKS5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBz
ZWxlY3Rpb25SZWN0LCAwLCBlbmRPZmZzZXQpOworICAgICAgICBib3goKS5zdHlsZSgpLmZvbnRD
YXNjYWRlKCkuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQodGV4dFJ1biwgc2VsZWN0aW9uUmVj
dCwgMCwgZW5kT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNX
aXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSkubWF4WCgpOwogICAgIH0KIApAQCAt
MTA1LDggKzEwNSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgIHN0
YXJ0KCksCiAgICAgICAgICAgICBsZW5ndGgoKSwKLSAgICAgICAgICAgIHJ1bigpLnRleHQoKS0+
aGFzSHlwaGVuKCkgPyBydW4oKS5zdHlsZSgpLmh5cGhlblN0cmluZygpLmxlbmd0aCgpIDogMCwK
LSAgICAgICAgICAgIHJ1bigpLmlzTGluZUJyZWFrKCkKKyAgICAgICAgICAgIGJveCgpLnRleHQo
KS0+aGFzSHlwaGVuKCkgPyBib3goKS5zdHlsZSgpLmh5cGhlblN0cmluZygpLmxlbmd0aCgpIDog
MCwKKyAgICAgICAgICAgIGJveCgpLmlzTGluZUJyZWFrKCkKICAgICAgICAgfTsKICAgICB9CiAK
QEAgLTExNywyMiArMTE3LDIyIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5saW5lQ29udGVudC0+
cmVuZGVyZXJGb3JMYXlvdXRCb3gocnVuKCkubGF5b3V0Qm94KCkpOworICAgICAgICByZXR1cm4g
bV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChib3goKS5sYXlvdXRCb3goKSk7
CiAgICAgfQogCiAgICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0UnVuKCkKICAgICB7CiAgICAgICAg
IEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgICAgIEFTU0VSVChydW4oKS50ZXh0KCkpOworICAgICAg
ICBBU1NFUlQoYm94KCkudGV4dCgpKTsKIAotICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBydW4o
KS5sYXlvdXRCb3goKTsKKyAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gYm94KCkubGF5b3V0Qm94
KCk7CiAKICAgICAgICAgdHJhdmVyc2VOZXh0TGVhZigpOwogCi0gICAgICAgIGlmICghYXRFbmQo
KSAmJiAmbGF5b3V0Qm94ICE9ICZydW4oKS5sYXlvdXRCb3goKSkKKyAgICAgICAgaWYgKCFhdEVu
ZCgpICYmICZsYXlvdXRCb3ggIT0gJmJveCgpLmxheW91dEJveCgpKQogICAgICAgICAgICAgc2V0
QXRFbmQoKTsKIAotICAgICAgICBBU1NFUlQoYXRFbmQoKSB8fCBydW4oKS50ZXh0KCkpOworICAg
ICAgICBBU1NFUlQoYXRFbmQoKSB8fCBib3goKS50ZXh0KCkpOwogICAgIH0KIAogICAgIHZvaWQg
dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCkKQEAgLTE0NSwxMSArMTQ1LDExIEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7CiAKLSAgICAgICAgYXV0byBv
bGRMaW5lSW5kZXggPSBydW4oKS5saW5lSW5kZXgoKTsKKyAgICAgICAgYXV0byBvbGRMaW5lSW5k
ZXggPSBib3goKS5saW5lSW5kZXgoKTsKIAogICAgICAgICB0cmF2ZXJzZU5leHRMZWFmKCk7CiAK
LSAgICAgICAgaWYgKCFhdEVuZCgpICYmIG9sZExpbmVJbmRleCAhPSBydW4oKS5saW5lSW5kZXgo
KSkKKyAgICAgICAgaWYgKCFhdEVuZCgpICYmIG9sZExpbmVJbmRleCAhPSBib3goKS5saW5lSW5k
ZXgoKSkKICAgICAgICAgICAgIHNldEF0RW5kKCk7CiAgICAgfQogCkBAIC0xNTcsMTEgKzE1Nywx
MSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOwogCi0gICAgICAg
IGF1dG8gb2xkTGluZUluZGV4ID0gcnVuKCkubGluZUluZGV4KCk7CisgICAgICAgIGF1dG8gb2xk
TGluZUluZGV4ID0gYm94KCkubGluZUluZGV4KCk7CiAKICAgICAgICAgdHJhdmVyc2VQcmV2aW91
c0xlYWYoKTsKIAotICAgICAgICBpZiAoIWF0RW5kKCkgJiYgb2xkTGluZUluZGV4ICE9IHJ1bigp
LmxpbmVJbmRleCgpKQorICAgICAgICBpZiAoIWF0RW5kKCkgJiYgb2xkTGluZUluZGV4ICE9IGJv
eCgpLmxpbmVJbmRleCgpKQogICAgICAgICAgICAgc2V0QXRFbmQoKTsKICAgICB9CiAKQEAgLTE3
NSwxMCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgdHJhdmVyc2VQcmV2aW91c09uTGluZSgp
OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSdW5JdGVyYXRvck1vZGVyblBh
dGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxp
bmVDb250ZW50ICYmIG1fcnVuSW5kZXggPT0gb3RoZXIubV9ydW5JbmRleDsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBSdW5JdGVyYXRvck1vZGVyblBhdGgmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50ICYmIG1fYm94SW5k
ZXggPT0gb3RoZXIubV9ib3hJbmRleDsgfQogCi0gICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcnVuSW5kZXggPT0gcnVucygpLnNpemUoKTsgfQotICAgIGNvbnN0IExheW91dDo6UnVu
JiBydW4oKSBjb25zdCB7IHJldHVybiBydW5zKClbbV9ydW5JbmRleF07IH0KKyAgICBib29sIGF0
RW5kKCkgY29uc3QgeyByZXR1cm4gbV9ib3hJbmRleCA9PSBib3hlcygpLnNpemUoKTsgfQorICAg
IGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgYm94KCkgY29uc3QgeyByZXR1cm4gYm94ZXMoKVtt
X2JveEluZGV4XTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMaW5lSXRlcmF0b3JN
b2Rlcm5QYXRoOwpAQCAtMTg5LDI4ICsxODksMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IEFTU0VSVCghYXRFbmQoKSk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICsrbV9ydW5JbmRl
eDsKLSAgICAgICAgfSB3aGlsZSAoIWF0RW5kKCkgJiYgcnVuKCkuaXNJbmxpbmVCb3goKSk7Cisg
ICAgICAgICAgICArK21fYm94SW5kZXg7CisgICAgICAgIH0gd2hpbGUgKCFhdEVuZCgpICYmIGJv
eCgpLmlzSW5saW5lQm94KCkpOwogICAgIH0KIAogICAgIHZvaWQgdHJhdmVyc2VQcmV2aW91c0xl
YWYoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKICAgICAgICAgZG8gewotICAg
ICAgICAgICAgbV9ydW5JbmRleCA9IG1fcnVuSW5kZXggPyBtX3J1bkluZGV4IC0gMSA6IHJ1bnMo
KS5zaXplKCk7Ci0gICAgICAgIH0gd2hpbGUgKCFhdEVuZCgpICYmIHJ1bigpLmlzSW5saW5lQm94
KCkpOworICAgICAgICAgICAgbV9ib3hJbmRleCA9IG1fYm94SW5kZXggPyBtX2JveEluZGV4IC0g
MSA6IGJveGVzKCkuc2l6ZSgpOworICAgICAgICB9IHdoaWxlICghYXRFbmQoKSAmJiBib3goKS5p
c0lubGluZUJveCgpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldEF0RW5kKCkgeyBtX3J1bkluZGV4
ID0gcnVucygpLnNpemUoKTsgfQorICAgIHZvaWQgc2V0QXRFbmQoKSB7IG1fYm94SW5kZXggPSBi
b3hlcygpLnNpemUoKTsgfQogCi0gICAgY29uc3QgSW5saW5lQ29udGVudDo6UnVucyYgcnVucygp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+cnVuczsgfQotICAgIGNvbnN0IExpbmUm
IGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmxpbmVGb3JSdW4ocnVuKCkp
OyB9CisgICAgY29uc3QgSW5saW5lQ29udGVudDo6Qm94ZXMmIGJveGVzKCkgY29uc3QgeyByZXR1
cm4gbV9pbmxpbmVDb250ZW50LT5ib3hlczsgfQorICAgIGNvbnN0IExpbmUmIGxpbmUoKSBjb25z
dCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmxpbmVGb3JCb3goYm94KCkpOyB9CiAKICAgICBl
bnVtIGNsYXNzIEh5cGhlbk1vZGUgeyBJbmNsdWRlLCBJZ25vcmUgfTsKICAgICBUZXh0UnVuIGNy
ZWF0ZVRleHRSdW4oSHlwaGVuTW9kZSBoeXBoZW5Nb2RlKSBjb25zdAogICAgIHsKLSAgICAgICAg
YXV0byYgc3R5bGUgPSBydW4oKS5zdHlsZSgpOwotICAgICAgICBhdXRvIGV4cGFuc2lvbiA9IHJ1
bigpLmV4cGFuc2lvbigpOworICAgICAgICBhdXRvJiBzdHlsZSA9IGJveCgpLnN0eWxlKCk7Cisg
ICAgICAgIGF1dG8gZXhwYW5zaW9uID0gYm94KCkuZXhwYW5zaW9uKCk7CiAgICAgICAgIGF1dG8g
cmVjdCA9IHRoaXMtPnJlY3QoKTsKICAgICAgICAgYXV0byB4UG9zID0gcmVjdC54KCkgLSAobGlu
ZSgpLmxpbmVCb3hMZWZ0KCkgKyBsaW5lKCkuY29udGVudExlZnQoKSk7CiAKQEAgLTIyNyw3ICsy
MjcsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBSZWZQdHI8Y29uc3QgSW5saW5lQ29udGVu
dD4gbV9pbmxpbmVDb250ZW50OwotICAgIHNpemVfdCBtX3J1bkluZGV4IHsgMCB9OworICAgIHNp
emVfdCBtX2JveEluZGV4IHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDQyYjczMjJi
NDhkNTQ3OTQyNTVhZjRhOGRmOGRlMzE1MWI3NDA3OTYuLjVhY2I3YjM3Yzk1NzkzZDQ5OTdjZDQz
NTRmZmNlZWM2YzBkNWVhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IHNob3dJbmxpbmVUcmVlQW5kUnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgYwogewogICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9
IGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvcklubGluZUZvcm1hdHRpbmdDb250ZXh0KGlu
bGluZUZvcm1hdHRpbmdSb290KTsKICAgICBhdXRvJiBsaW5lcyA9IGlubGluZUZvcm1hdHRpbmdT
dGF0ZS5saW5lcygpOwotICAgIGF1dG8mIHJ1bnMgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUucnVu
cygpOworICAgIGF1dG8mIGJveGVzID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmJveGVzKCk7CiAK
ICAgICBmb3IgKHNpemVfdCBsaW5lSW5kZXggPSAwOyBsaW5lSW5kZXggPCBsaW5lcy5zaXplKCk7
ICsrbGluZUluZGV4KSB7CiAgICAgICAgIGF1dG8gYWRkU3BhY2luZyA9IFsmXSB7CkBAIC00MDYs
MTEgKzQwNiwxMSBAQCB2b2lkIHNob3dJbmxpbmVUcmVlQW5kUnVucyhUZXh0U3RyZWFtJiBzdHJl
YW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgYwogICAgICAgICBzdHJlYW0gPDwg
IiAgSW5saW5lIGxldmVsIGJveGVzOiI7CiAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwogCi0g
ICAgICAgIGF1dG8gb3V0cHV0SW5saW5lTGV2ZWxCb3ggPSBbJl0oY29uc3QgYXV0byYgaW5saW5l
TGV2ZWxCb3hSdW4pIHsKKyAgICAgICAgYXV0byBvdXRwdXRJbmxpbmVMZXZlbEJveCA9IFsmXShj
b25zdCBhdXRvJiBpbmxpbmVMZXZlbEJveCkgewogICAgICAgICAgICAgYWRkU3BhY2luZygpOwog
ICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgIjsKLSAgICAgICAgICAgIGF1dG8gbG9naWNhbFJl
Y3QgPSBpbmxpbmVMZXZlbEJveFJ1bi5sb2dpY2FsUmVjdCgpOwotICAgICAgICAgICAgYXV0byYg
bGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3hSdW4ubGF5b3V0Qm94KCk7CisgICAgICAgICAgICBh
dXRvIGxvZ2ljYWxSZWN0ID0gaW5saW5lTGV2ZWxCb3gubG9naWNhbFJlY3QoKTsKKyAgICAgICAg
ICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVsQm94LmxheW91dEJveCgpOwogICAgICAg
ICAgICAgaWYgKGxheW91dEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkpCiAgICAgICAgICAg
ICAgICAgc3RyZWFtIDw8ICJBdG9taWMgaW5saW5lIGxldmVsIGJveCI7CiAgICAgICAgICAgICBl
bHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSkKQEAgLTQyNCwyOSArNDI0LDI5IEBA
IHZvaWQgc2hvd0lubGluZVRyZWVBbmRSdW5zKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjCiAgICAgICAgICAgICAgICAgPDwgIiBzaXplICgiIDw8
IGxvZ2ljYWxSZWN0LndpZHRoKCkgPDwgIngiIDw8IGxvZ2ljYWxSZWN0LmhlaWdodCgpIDw8ICIp
IjsKICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwogICAgICAgICB9OwotICAgICAgICBm
b3IgKGF1dG8mIHJ1biA6IHJ1bnMpIHsKLSAgICAgICAgICAgIGlmIChydW4ubGluZUluZGV4KCkg
IT0gbGluZUluZGV4KQorICAgICAgICBmb3IgKGF1dG8mIGJveCA6IGJveGVzKSB7CisgICAgICAg
ICAgICBpZiAoYm94LmxpbmVJbmRleCgpICE9IGxpbmVJbmRleCkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmICghcnVuLmxheW91dEJveCgpLmlzSW5saW5lTGV2ZWxC
b3goKSkKKyAgICAgICAgICAgIGlmICghYm94LmxheW91dEJveCgpLmlzSW5saW5lTGV2ZWxCb3go
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG91dHB1dElubGluZUxl
dmVsQm94KHJ1bik7CisgICAgICAgICAgICBvdXRwdXRJbmxpbmVMZXZlbEJveChib3gpOwogICAg
ICAgICB9CiAKICAgICAgICAgYWRkU3BhY2luZygpOwogICAgICAgICBzdHJlYW0gPDwgIiAgUnVu
czoiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBydW4g
OiBydW5zKSB7Ci0gICAgICAgICAgICBpZiAocnVuLmxpbmVJbmRleCgpICE9IGxpbmVJbmRleCkK
KyAgICAgICAgZm9yIChhdXRvJiBib3ggOiBib3hlcykgeworICAgICAgICAgICAgaWYgKGJveC5s
aW5lSW5kZXgoKSAhPSBsaW5lSW5kZXgpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBhZGRTcGFjaW5nKCk7CiAgICAgICAgICAgICBzdHJlYW0gPDwgIiAgICAiOwotICAg
ICAgICAgICAgaWYgKHJ1bi50ZXh0KCkpCi0gICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0
IHJ1biI7CisgICAgICAgICAgICBpZiAoYm94LnRleHQoKSkKKyAgICAgICAgICAgICAgICBzdHJl
YW0gPDwgInRleHQgYm94IjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdHJl
YW0gPDwgImJveCBydW4iOwotICAgICAgICAgICAgc3RyZWFtIDw8ICIgYXQgKCIgPDwgcnVuLmxv
Z2ljYWxMZWZ0KCkgPDwgIiwiIDw8IHJ1bi5sb2dpY2FsVG9wKCkgPDwgIikgc2l6ZSAiIDw8IHJ1
bi5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgcnVuLmxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAg
ICAgIGlmIChydW4udGV4dCgpKQotICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiIHJ1bigiIDw8
IHJ1bi50ZXh0KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBydW4udGV4dCgpLT5lbmQoKSA8PCAiKSI7
CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJib3ggYm94IjsKKyAgICAgICAgICAgIHN0cmVh
bSA8PCAiIGF0ICgiIDw8IGJveC5sb2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBib3gubG9naWNhbFRv
cCgpIDw8ICIpIHNpemUgIiA8PCBib3gubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGJveC5sb2dp
Y2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBpZiAoYm94LnRleHQoKSkKKyAgICAgICAgICAgICAg
ICBzdHJlYW0gPDwgIiBib3goIiA8PCBib3gudGV4dCgpLT5zdGFydCgpIDw8ICIsICIgPDwgYm94
LnRleHQoKS0+ZW5kKCkgPDwgIikiOwogICAgICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQ
YWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAK
aW5kZXggMWE3YTkxZDRiODZhNTVmM2YzY2ZkMjlkOGE5Zjg5Mjk2MGU1NjU1Zi4uOWJhYTE2ZDY2
Yjc3NzhiODQ3NjA2ZWY1YzYyM2U4YjVlYjI3ZTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC01MCw4ICs1MCw4IEBAIFRleHRCb3hQYWludGVy
OjpUZXh0Qm94UGFpbnRlcihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBQYWlu
dEluZm8mIHBhCiB9CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLVRl
eHRCb3hQYWludGVyOjpUZXh0Qm94UGFpbnRlcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5s
aW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgY29uc3QgTGF5b3V0OjpSdW4mIHJ1biwgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKLSAgICA6IFRl
eHRCb3hQYWludGVyKExheW91dEludGVncmF0aW9uOjp0ZXh0UnVuRm9yKGlubGluZUNvbnRlbnQs
IHJ1biksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpCitUZXh0Qm94UGFpbnRlcjo6VGV4dEJveFBh
aW50ZXIoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmIGlubGluZUNvbnRl
bnQsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgYm94LCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQorICAgIDogVGV4dEJveFBhaW50ZXIoTGF5
b3V0SW50ZWdyYXRpb246OnRleHRSdW5Gb3IoaW5saW5lQ29udGVudCwgYm94KSwgcGFpbnRJbmZv
LCBwYWludE9mZnNldCkKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEJveFBhaW50ZXIuaAppbmRleCAxMmFhMjA2NjkxMTE2ODAxNjg2MWZlZWVhYjljMjFkMWYzNGE5
ZTAwLi40NzAxZWZjNTRhYjgyMGYxOTZmNWU1OGNlODQ1YjVmMDUwZDBhZDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFz
cyBUZXh0Qm94UGFpbnRlciB7CiBwdWJsaWM6CiAgICAgVGV4dEJveFBhaW50ZXIoY29uc3QgTGVn
YWN5SW5saW5lVGV4dEJveCYsIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCk7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0gICAgVGV4dEJv
eFBhaW50ZXIoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBjb25zdCBM
YXlvdXQ6OlJ1biYsIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCk7
CisgICAgVGV4dEJveFBhaW50ZXIoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRl
bnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpOwogI2VuZGlmCiAgICAgflRleHRCb3hQYWludGVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IDgxYWE4ZGE3MDYxZDUw
MWYzYTFlZTNkZDkzZWIzZGVmYjJkYWJkOTUuLjQ5ZGJiYTBmZDc3Yzk3NTJmYmYyNDEyNzU5OGI1
NDQxMGIwMDQxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFp
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApA
QCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OmNsZWFyR2x5cGhEaXNwbGF5TGlz
dHMoKQogICAgIEdseXBoRGlzcGxheUxpc3RDYWNoZTxMZWdhY3lJbmxpbmVUZXh0Qm94Pjo6c2lu
Z2xldG9uKCkuY2xlYXIoKTsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRG
b3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCgpKQotICAgICAgICBHbHlwaERpc3Bs
YXlMaXN0Q2FjaGU8TGF5b3V0OjpSdW4+OjpzaW5nbGV0b24oKS5jbGVhcigpOworICAgICAgICBH
bHlwaERpc3BsYXlMaXN0Q2FjaGU8SW5saW5lRGlzcGxheTo6Qm94Pjo6c2luZ2xldG9uKCkuY2xl
YXIoKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439041</attachid>
            <date>2021-09-23 07:42:55 -0700</date>
            <delta_ts>2021-09-23 08:40:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230643-20210923074254.patch</filename>
            <type>text/plain</type>
            <size>122603</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyOTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTU5YmQzMmIyNGRlYjRj
ZGEyYmIyN2QyYjQ5MDYzZDZiZjE4OWZkOC4uZmI1ODVmNjE1YmU4YzA5ODZhOTVhMWQxMGU5MWY5
NjU0NzJhOGFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAyMS0wOS0yMyAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIExh
eW91dDo6UnVuIHVuZGVyIElubGluZURpc3BsYXkgYW5kIHJlbmFtZSBpdCB0byBCb3gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFRoZXNlIGZyYWdtZW50
cyBvZiBpbmxpbmUgY29udGVudCBzaG91bGQgYmUgY29uc2lkZXJlZCBydW5zIG9ubHkgdXAgdG8g
dGhlIHBvaW50IHdoZXJlIHdlIGZpbmlzaGVkIGJyZWFraW5nIHRoZSBsaW5lLiBTb29uIGFmdGVy
IHRoZXkgZ2FpbiBob3Jpem9udGFsIChhbmQgbGF0ZXIgdmVydGljYWwpIGdlb21ldHJpZXMsIHdl
CisgICAgICAgIHNob3VsZCBjYWxsIHRoZW0gYm94ZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmJ1aWxk
SW5saW5lRGlzcGxheVRyZWUpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveEZhY3Rvcnk6OmRpc3BsYXlC
b3hGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFj
dG9yeS5oOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OlRleHRCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6bV90ZXh0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VGV4dEJveDo6ZXhwYW5zaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OnRleHQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9WZXJpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpv
dXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlQm94ZXNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRl
R2VvbWV0cnlGb3JMaW5lQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21l
dHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5lQm94ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxv
d0ZvcklubGluZUJveFJ1bnMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZs
b3dDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVGb3JtYXR0aW5nU3Rh
dGUpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nU3RhdGU6OmxpbmVCb3hlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdTdGF0ZTo6YWRkTGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6Ym94ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmJveGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRCb3hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJMaW5lQW5kQm94ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNocmlu
a1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRl
OjpydW5zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ1N0YXRlOjpydW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRSdW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpjbGVhckxpbmVBbmRSdW5zKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6ZXhwYW5zaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjpzZXRFeHBhbnNp
b24pOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lTGluZVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94Ojps
b2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6
Omlua092ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJv
eDo6bG9naWNhbFRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpC
b3g6OmxvZ2ljYWxCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRGlzcGxh
eTo6Qm94Ojpsb2dpY2FsTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVEaXNw
bGF5OjpCb3g6OmxvZ2ljYWxSaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVE
aXNwbGF5OjpCb3g6OmxvZ2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVEaXNwbGF5OjpCb3g6OmxvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRGlzcGxheTo6Qm94Ojptb3ZlVmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVEaXNwbGF5OjpCb3g6OmFkanVzdElua092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6bGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZURpc3Bs
YXk6OkJveDo6VGV4dDo6VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4
dDo6c3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OlRleHQ6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6VGV4dDo6bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UnVuOjpUZXh0OjpvcmlnaW5hbENvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSdW46OlRleHQ6OnJlbmRlcmVkQ29udGVudCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4dDo6aGFzSHlwaGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppc1RleHQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmlzU29mdExpbmVCcmVh
ayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNMaW5l
QnJlYWtCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OmlzTGluZUJyZWFrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
UnVuOjppc0F0b21pY0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6UnVuOjppc0lubGluZUJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNOb25Sb290SW5saW5lQm94IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppc1Jvb3RJbmxpbmVCb3ggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmlzR2VuZXJpY0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
Ojppc0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6UnVuOjppc05vblJvb3RJbmxpbmVMZXZlbEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6dHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aGFzQ29udGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFJlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46Omlua092ZXJmbG93IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsVG9wIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsQm90dG9tIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsTGVmdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFJp
Z2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpsb2dp
Y2FsV2lkdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
OmxvZ2ljYWxIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpSdW46Om1vdmVWZXJ0aWNhbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UnVuOjphZGp1c3RJbmtPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlJ1bjo6dGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6dGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6
ZXhwYW5zaW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
OjpsYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OnN0eWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
OjpsaW5lSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OlJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6VGV4dDo6
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJs
ZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yQ2VsbHMpOgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6Omhh
c0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dDo6fklubGluZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OklubGluZUNvbnRlbnQ6OmluZGV4Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpmaXJzdEJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudDo6
Zmlyc3RCb3hJbmRleEZvckxheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudDo6bm9uUm9vdElubGluZUJveEluZGV4ZXNGb3JM
YXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Oklu
bGluZUNvbnRlbnQ6OnJlbGVhc2VDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjppbmRleEZvclJ1biBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dDo6Zmlyc3RSdW5Gb3JMYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OmZpcnN0UnVuSW5kZXhGb3JMYXlv
dXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpsaW5lRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50Ojp0cmF2ZXJzZU5vblJvb3RJ
bmxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudDo6bGluZUZvclJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnRCdWlsZGVyOjpi
dWlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmU6OkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmU6OmZpcnN0Qm94SW5kZXggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmU6OmJveENvdW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lOjpmaXJzdFJ1bkluZGV4IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lOjpydW5D
b3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmZpcnN0UnVuIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JNb2Rl
cm5QYXRoOjpsYXN0UnVuIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnRleHRSdW5zRm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpydW5Gb3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmZpcnN0SW5saW5l
Qm94UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUxheW91dDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVMYXlvdXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OnBhaW50VGV4dEJveFVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnRUZXh0UnVu
VXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6bWFrZUFkanVzdGVkQ29udGVudCk6CisgICAgICAg
ICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46OmxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5Gb3IpOgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aFJ1bjo6aW5saW5lQm94
IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvck1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpp
c1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aDo6cmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjppc0xpbmVCcmVhayBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRo
OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpzdGFydCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRo
OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6Om9mZnNldEZvclBvc2l0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1v
ZGVyblBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnNlbGVjdGFibGVSYW5nZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JN
b2Rlcm5QYXRoOjpyZW5kZXJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6
OnRyYXZlcnNlTmV4dE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aDo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6Ym94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnRy
YXZlcnNlTmV4dExlYWYpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VQcmV2aW91c0xlYWYpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6c2V0QXRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aDo6Ym94ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpjcmVhdGVUZXh0UnVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1v
ZGVyblBhdGg6OnJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpydW5zIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OnNob3dJbmxpbmVUcmVlQW5kUnVucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQ
YWludGVyOjpUZXh0Qm94UGFpbnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRCb3hQYWlu
dGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKToKKwogMjAyMS0wOS0y
MyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRmFjdG9yIExl
Z2FjeUlubGluZUZsb3dCb3ggcGFpbnRpbmcgaW50byBhIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpp
bmRleCBmZTJiYjViNmU0NWY1MDlkNzg1Y2UyMjE3YTE3MDFkYjQwMDRlOWQwLi5mMjhkZGE2NzE5
YWI1OWZjMGI1Njg0OGZlODRiNWQyNGFkNTI1NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTc4
NCw3ICs3ODQsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
bGF5b3V0L0xheW91dFVuaXRzLmgKICAgICBsYXlvdXQvTWFyZ2luVHlwZXMuaAogCi0gICAgbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVMaW5lUnVuLmgKKyAg
ICBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlC
b3guaAogICAgIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVJlY3QuaAog
CiAgICAgbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMDAxMTVkNjkxYzI0NTg4ZjE5OGVhOGYwNTc0MjdkYzkxMWYwZWIzMy4uZDVhNTUzMzcy
ZmFjMmY4ZmU0YWQ5Y2FjYjA1YWI5NWZiMTkyZDk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIxNCw3ICsyMjE0LDcgQEAK
IAkJNkZCNUUyMTQyMjFGMjQ1MzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNUUyMTIyMjFG
MjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQjdEMkREMjUwRkQ4MjgwMDAyMDdB
QSAvKiBGbGV4Rm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjdEMkQ5MjUwRkQ3RkMwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0
dGluZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2RkI3RDJERTI1MEZEODJFMDAwMjA3QUEgLyogRmxleEZvcm1hdHRpbmdTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCN0QyREEy
NTBGRDdGQzAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RkMzRjk0NzI1MTY3NTY3MDBBNDlC
RUEgLyogSW5saW5lTGluZVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8qIElubGluZUxpbmVSdW4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2RkMzRjk0
NzI1MTY3NTY3MDBBNDlCRUEgLyogSW5saW5lRGlzcGxheUJveC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8q
IElubGluZURpc3BsYXlCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2RkNCREI5NzI2NURGMkM4MDAyMUVBN0IgLyogTGF5b3V0Q29udGFpbmlu
Z0Jsb2NrQ2hhaW5JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkZDQkRCOTUyNjVERjJDNzAwMjFFQTdCIC8qIExheW91dENvbnRhaW5pbmdC
bG9ja0NoYWluSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2RkQwOTU0MzI1MTExNTIyMDA5ODg3N0QgLyogTGF5b3V0R2VvbWV0cnlS
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkQw
OTU0MTI1MTExNTIyMDA5ODg3N0QgLyogTGF5b3V0R2VvbWV0cnlSZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZFMTk4MTcyMTc4Mzk3QzAw
NDQ2RjA4IC8qIElubGluZUNvbnRlbnRCcmVha2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkUxOTgxNTIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5l
Q29udGVudEJyZWFrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTAyMTQsNyArMTAyMTQsNyBAQAogCQk2RkI3RDJEOTI1MEZEN0ZDMDAwMjA3
QUEgLyogRmxleEZvcm1hdHRpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZsZXhGb3JtYXR0aW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RkI3RDJEQTI1MEZEN0ZDMDAwMjA3QUEgLyogRmxleEZvcm1hdHRpbmdTdGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbGV4Rm9ybWF0dGluZ1N0YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQkI4NjA1MjBCNDY0QjYwMERBRDkzOCAvKiBG
b3JtYXR0aW5nR2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0dGluZ0dlb21l
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkZDM0Y5NDUyNTE2NzU2NjAw
QTQ5QkVBIC8qIElubGluZUxpbmVSdW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5saW5lTGluZVJ1bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RkMzRjk0
NTI1MTY3NTY2MDBBNDlCRUEgLyogSW5saW5lRGlzcGxheUJveC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmxpbmVEaXNwbGF5Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGQzUzQUVCMjRBRjdBOEUwMDYwNTlGRSAvKiBUYWJsZUZvcm1hdHRpbmdRdWly
a3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZDNUNBOTIyMkUzNTk5MzAwQjEzRTExIC8qIFRh
YmxlRm9ybWF0dGluZ1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRhYmxlRm9ybWF0dGlu
Z1N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZDNUNBOTQyMkUzNTk5
NDAwQjEzRTExIC8qIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODMxMCw4ICsxODMxMCw4IEBACiAJCTExQTFFNkZCMjZGQkI2Q0UwMDQzNUQzNiAvKiBk
aXNwbGF5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2
RkMzRjk0NTI1MTY3NTY2MDBBNDlCRUEgLyogSW5saW5lRGlzcGxheUJveC5oICovLAogCQkJCTZG
OTE0MjBGMjUxNTIxMzcwMDRFNEZFQSAvKiBJbmxpbmVEaXNwbGF5TGluZS5oICovLAotCQkJCTZG
QzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGRpc3BsYXk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzI5MDgsNiAr
MzI5MDgsNyBAQAogCQkJCUUzMDU5MjY0MUUyN0EzQUQwMEQ1N0M5OCAvKiBJbmxpbmVDbGFzc2lj
U2NyaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkUxOTgxNzIxNzgzOTdDMDA0NDZGMDggLyog
SW5saW5lQ29udGVudEJyZWFrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTExMUZBMUM4MjZGMEYz
MEYwMDNCOEYxNiAvKiBJbmxpbmVEYW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGQzNGOTQ3
MjUxNjc1NjcwMEE0OUJFQSAvKiBJbmxpbmVEaXNwbGF5Qm94LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxMTUxM0QwMzI2RDk4MUU4MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjkxNDIxMTI1MTUyMTM4MDA0RTRGRUEgLyogSW5saW5l
RGlzcGxheUxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGN0NBM0NBMjA4QzJCMkUwMDJGMjlB
QiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjkyMyw3
ICszMjkyNCw2IEBACiAJCQkJMTFDMzIyN0QyNkQ5NThDRTAwMzI4RjREIC8qIElubGluZUxpbmVC
b3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjZFRTc0MzI2RDQ0RUUzMDAzNzRDREEg
LyogSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYy
NkVCNDgyMzQwMDRBNTAwNjkwNkUyIC8qIElubGluZUxpbmVCdWlsZGVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk2RkMzRjk0NzI1MTY3NTY3MDBBNDlCRUEgLyogSW5saW5lTGluZVJ1bi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjQ1Nzc1Q0UyNDE0MzdENTAwMkRGMUEwIC8qIElubGluZVBhdGhEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjQwREE4MjI1MTMwMzNBMDBFQzA0QjcgLyogSW5saW5l
UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTREMzNGM0IyNTJBRUVDRDAwODM3RDA1IC8qIElu
bGluZVJ1bkFuZE9mZnNldC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKaW5kZXggYTVlODhlMjQxZTkzYjY1NjkyMzAxNjg2
YmM3N2UwNGM1MmViYjg2NC4uYzdlZmQ2OGRkYjhkMGIzMDQ2YTlmNDQ5ZTY5ZjBiYWVlZGVjNzkz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcApA
QCAtMzA1LDMxICszMDUsMzEgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRJbmxpbmVEaXNwbGF5
VHJlZShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwKIHsKICAgICBhdXRv
JiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nUm9vdCk7CiAKLSAgICBmb3Ig
KGF1dG8mIHJ1biA6IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5ydW5zKCkpIHsKLSAgICAgICAgaWYg
KHJ1bi5pc1Jvb3RJbmxpbmVCb3goKSkgeworICAgIGZvciAoYXV0byYgYm94IDogaW5saW5lRm9y
bWF0dGluZ1N0YXRlLmJveGVzKCkpIHsKKyAgICAgICAgaWYgKGJveC5pc1Jvb3RJbmxpbmVCb3go
KSkgewogICAgICAgICAgICAgLy8gTm90IHN1cHBvcnRlZCB5ZXQuCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChydW4udGV4dCgpKSB7Ci0gICAgICAgICAg
ICBhdXRvJiBsaW5lR2VvbWV0cnkgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKS5hdChy
dW4ubGluZUluZGV4KCkpOwotICAgICAgICAgICAgYXV0byB0ZXh0Qm94ID0gbV9ib3hGYWN0b3J5
LmRpc3BsYXlCb3hGb3JUZXh0UnVuKHJ1biwgbGluZUdlb21ldHJ5LCBwb3NpdGlvbmluZ0NvbnRl
eHQoKS5pbkZsb3dDb250YWluaW5nQmxvY2tDb250ZXh0KCkpOworICAgICAgICBpZiAoYm94LnRl
eHQoKSkgeworICAgICAgICAgICAgYXV0byYgbGluZUdlb21ldHJ5ID0gaW5saW5lRm9ybWF0dGlu
Z1N0YXRlLmxpbmVzKCkuYXQoYm94LmxpbmVJbmRleCgpKTsKKyAgICAgICAgICAgIGF1dG8gdGV4
dEJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94Rm9yVGV4dFJ1bihib3gsIGxpbmVHZW9tZXRy
eSwgcG9zaXRpb25pbmdDb250ZXh0KCkuaW5GbG93Q29udGFpbmluZ0Jsb2NrQ29udGV4dCgpKTsK
ICAgICAgICAgICAgIGluc2VydChXVEZNb3ZlKHRleHRCb3gpLCBpbnNlcnRpb25Qb3NpdGlvbik7
CiAgICAgICAgICAgICBhY2NvdW50Rm9yQm94UGFpbnRpbmdFeHRlbnQoKmluc2VydGlvblBvc2l0
aW9uLmN1cnJlbnRDaGlsZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChpczxMYXlvdXQ6OkNvbnRhaW5lckJveD4ocnVuLmxheW91dEJveCgpKSkgewot
ICAgICAgICAgICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgcnVuLmxh
eW91dEJveCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7CisgICAgICAgIGlmIChpczxMYXlvdXQ6OkNv
bnRhaW5lckJveD4oYm94LmxheW91dEJveCgpKSkgeworICAgICAgICAgICAgcmVjdXJzaXZlQnVp
bGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgYm94LmxheW91dEJveCgpLCBpbnNlcnRpb25Qb3Np
dGlvbik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJ
WE1FOiBXb3JrYXJvdW5kIGZvciB3ZWJraXQub3JnYi9iLzIxOTMzNS4KLSAgICAgICAgaWYgKHJ1
bi5sYXlvdXRCb3goKS5pc0xpbmVCcmVha0JveCgpICYmIHJ1bi5sYXlvdXRCb3goKS5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKGJveC5sYXlvdXRCb3goKS5pc0xpbmVCcmVh
a0JveCgpICYmIGJveC5sYXlvdXRCb3goKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gZ2VvbWV0cnkgPSBsYXlvdXRTdGF0ZS5n
ZW9tZXRyeUZvckJveChydW4ubGF5b3V0Qm94KCkpOwotICAgICAgICBhdXRvIGRpc3BsYXlCb3gg
PSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCksIGdl
b21ldHJ5LCBwb3NpdGlvbmluZ0NvbnRleHQoKS5pbkZsb3dDb250YWluaW5nQmxvY2tDb250ZXh0
KCkpOworICAgICAgICBhdXRvIGdlb21ldHJ5ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3go
Ym94LmxheW91dEJveCgpKTsKKyAgICAgICAgYXV0byBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0b3J5
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goYm94LmxheW91dEJveCgpLCBnZW9tZXRyeSwgcG9zaXRp
b25pbmdDb250ZXh0KCkuaW5GbG93Q29udGFpbmluZ0Jsb2NrQ29udGV4dCgpKTsKICAgICAgICAg
aW5zZXJ0SW50b1RyZWUoV1RGTW92ZShkaXNwbGF5Qm94KSwgaW5zZXJ0aW9uUG9zaXRpb24sIFdp
bGxUcmF2ZXJzZURlc2NlbmRhbnRzOjpObyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCmluZGV4IGU2NWRlODAzNTI4MDBm
OTMyNzdjNTYwOTk5NWQ2YTZjOWQwYjg3ZDguLmQ1ZDJjMWRiYjFlNDc1Mjk3OTZkZDU4Mjg3M2U1
MDgwZTRlZDU5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlCb3hGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
Qm94RmFjdG9yeS5jcHAKQEAgLTE0MywxNiArMTQzLDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+
IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxh
eW91CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94PihtX3RyZWVCdWlsZGVyLnRyZWUoKSwgcGl4
ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCwgV1RGTW92ZShzdHlsZSksIGZsYWdzKTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclRleHRSdW4oY29uc3Qg
TGF5b3V0OjpSdW4mIHJ1biwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYgbGluZSwgY29uc3Qg
Q29udGFpbmluZ0Jsb2NrQ29udGV4dCYgY29udGFpbmluZ0Jsb2NrQ29udGV4dCkgY29uc3QKK3N0
ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JUZXh0UnVuKGNvbnN0
IElubGluZURpc3BsYXk6OkJveCYgYm94LCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJiBsaW5l
LCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWluaW5nQmxvY2tDb250ZXh0KSBj
b25zdAogewogICAgIFVOVVNFRF9QQVJBTShsaW5lKTsKLSAgICBBU1NFUlQocnVuLnRleHQoKSk7
CisgICAgQVNTRVJUKGJveC50ZXh0KCkpOwogCi0gICAgYXV0byBydW5SZWN0ID0gTGF5b3V0UmVj
dCB7IHJ1bi5sb2dpY2FsTGVmdCgpLCBydW4ubG9naWNhbFRvcCgpLCBydW4ubG9naWNhbFdpZHRo
KCksIHJ1bi5sb2dpY2FsSGVpZ2h0KCkgfTsKLSAgICBydW5SZWN0Lm1vdmUoY29udGFpbmluZ0Js
b2NrQ29udGV4dC5vZmZzZXRGcm9tUm9vdCk7CisgICAgYXV0byBib3hSZWN0ID0gTGF5b3V0UmVj
dCB7IGJveC5sb2dpY2FsTGVmdCgpLCBib3gubG9naWNhbFRvcCgpLCBib3gubG9naWNhbFdpZHRo
KCksIGJveC5sb2dpY2FsSGVpZ2h0KCkgfTsKKyAgICBib3hSZWN0Lm1vdmUoY29udGFpbmluZ0Js
b2NrQ29udGV4dC5vZmZzZXRGcm9tUm9vdCk7CiAKLSAgICBhdXRvIHN0eWxlID0gU3R5bGUgeyBy
dW4ubGF5b3V0Qm94KCkuc3R5bGUoKSB9OwotICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRCb3g+
KG1fdHJlZUJ1aWxkZXIudHJlZSgpLCBVbmFkanVzdGVkQWJzb2x1dGVGbG9hdFJlY3QgeyBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKHJ1blJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3RvcikgfSwgV1RG
TW92ZShzdHlsZSksIHJ1bik7CisgICAgYXV0byBzdHlsZSA9IFN0eWxlIHsgYm94LmxheW91dEJv
eCgpLnN0eWxlKCkgfTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Qm94PihtX3RyZWVCdWls
ZGVyLnRyZWUoKSwgVW5hZGp1c3RlZEFic29sdXRlRmxvYXRSZWN0IHsgc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhib3hSZWN0LCBtX3BpeGVsU25hcHBpbmdGYWN0b3IpIH0sIFdURk1vdmUoc3R5bGUp
LCBib3gpOwogfQogCiB2b2lkIEJveEZhY3Rvcnk6OnNldHVwQm94R2VvbWV0cnkoQm94TW9kZWxC
b3gmIGJveCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBs
YXlvdXRHZW9tZXRyeSwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYgY29udGFpbmluZ0Js
b2NrQ29udGV4dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlCb3hGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
Qm94RmFjdG9yeS5oCmluZGV4IDgwYzIwYTM3ZjNkNTIxZjlmY2U4ZmJkOWUzOTM2NTZhZDNiNzNh
N2IuLjAyMDNiYWRmZjMyMzZiMzRiYWJiOGQ2NzdiYzk5ZDE1OGE3ZGRjODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaApAQCAtNDQsNiArNDQs
NyBAQCBzdHJ1Y3QgUnVuOwogfQogCiBuYW1lc3BhY2UgSW5saW5lRGlzcGxheSB7CitzdHJ1Y3Qg
Qm94OwogY2xhc3MgTGluZTsKIH0KIApAQCAtNzcsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckJvZHlCb3goY29uc3QgTGF5b3V0OjpCb3gm
LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4
dCYsIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24pIGNvbnN0OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBM
YXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYpIGNvbnN0
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvclRleHRSdW4oY29uc3Qg
TGF5b3V0OjpSdW4mLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJiwgY29uc3QgQ29udGFpbmlu
Z0Jsb2NrQ29udGV4dCYpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlC
b3hGb3JUZXh0UnVuKGNvbnN0IElubGluZURpc3BsYXk6OkJveCYsIGNvbnN0IElubGluZURpc3Bs
YXk6OkxpbmUmLCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JikgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckxheW91dEJveChjb25z
dCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25zdCBDb250YWlu
aW5nQmxvY2tDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlRm9yQmFja2dyb3VuZCwg
U3R5bGUmJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5VGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4
dEJveC5jcHAKaW5kZXggZGIyMzE0ZGI0NzQzMDA4ZWI2MDZmMmZmMTI3OGQ0NjE1MTI4YWYwYS4u
ZTU4MGMzNGI4ODFlYTQ4MTJhMjUyYzEwNjUzOGQzMjk1MTIyMDQyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcApAQCAtMzYsMTAgKzM2LDEwIEBA
IG5hbWVzcGFjZSBEaXNwbGF5IHsKIAogREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJ
RklFUihUZXh0Qm94KTsKIAotVGV4dEJveDo6VGV4dEJveChUcmVlJiB0cmVlLCBVbmFkanVzdGVk
QWJzb2x1dGVGbG9hdFJlY3QgYm9yZGVyQm94LCBTdHlsZSYmIGRpc3BsYXlTdHlsZSwgY29uc3Qg
TGF5b3V0OjpSdW4mIGxpbmVSdW4pCitUZXh0Qm94OjpUZXh0Qm94KFRyZWUmIHRyZWUsIFVuYWRq
dXN0ZWRBYnNvbHV0ZUZsb2F0UmVjdCBib3JkZXJCb3gsIFN0eWxlJiYgZGlzcGxheVN0eWxlLCBj
b25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmIGJveCkKICAgICA6IEJveCh0cmVlLCBib3JkZXJCb3gs
IFdURk1vdmUoZGlzcGxheVN0eWxlKSwgeyBUeXBlRmxhZ3M6OlRleHRCb3ggfSkKLSAgICAsIG1f
ZXhwYW5zaW9uKGxpbmVSdW4uZXhwYW5zaW9uKCkpCi0gICAgLCBtX3RleHQobGluZVJ1bi50ZXh0
KCkudmFsdWUoKSkKKyAgICAsIG1fZXhwYW5zaW9uKGJveC5leHBhbnNpb24oKSkKKyAgICAsIG1f
dGV4dChib3gudGV4dCgpLnZhbHVlKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L2Nzcy9EaXNwbGF5VGV4dEJveC5oCmluZGV4IGM1MTgyZTg2OWI3MTY0ODMzM2RjMTQ0Njg2ZWQx
MjBhYTcxYjJlMjcuLmU2YzJlM2RkYTZkODQ4MDI5MjliOTAzNWFjM2I1YzI1YmZiYjQ2MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guaApAQCAtMjgsNyAr
MjgsNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVk
ZSAiRGlzcGxheUJveC5oIgotI2luY2x1ZGUgIklubGluZUxpbmVSdW4uaCIKKyNpbmNsdWRlICJJ
bmxpbmVEaXNwbGF5Qm94LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5IHsKQEAgLTM4LDE3ICszOCwxNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURF
TlRJRklFUihUZXh0Qm94KTsKIGNsYXNzIFRleHRCb3ggOiBwdWJsaWMgQm94IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihUZXh0Qm94KTsKIHB1Ymxp
YzoKLSAgICBUZXh0Qm94KFRyZWUmLCBVbmFkanVzdGVkQWJzb2x1dGVGbG9hdFJlY3QgYm9yZGVy
Qm94LCBTdHlsZSYmLCBjb25zdCBMYXlvdXQ6OlJ1biYpOworICAgIFRleHRCb3goVHJlZSYsIFVu
YWRqdXN0ZWRBYnNvbHV0ZUZsb2F0UmVjdCBib3JkZXJCb3gsIFN0eWxlJiYsIGNvbnN0IElubGlu
ZURpc3BsYXk6OkJveCYpOwogCi0gICAgTGF5b3V0OjpSdW46OkV4cGFuc2lvbiBleHBhbnNpb24o
KSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQotICAgIGNvbnN0IExheW91dDo6UnVuOjpU
ZXh0JiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CisgICAgSW5saW5lRGlzcGxheTo6
Qm94OjpFeHBhbnNpb24gZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0K
KyAgICBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3g6OlRleHQmIHRleHQoKSBjb25zdCB7IHJldHVy
biBtX3RleHQ7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBib3hOYW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICAK
LSAgICBMYXlvdXQ6OlJ1bjo6RXhwYW5zaW9uIG1fZXhwYW5zaW9uOwotICAgIExheW91dDo6UnVu
OjpUZXh0IG1fdGV4dDsKKyAgICBJbmxpbmVEaXNwbGF5OjpCb3g6OkV4cGFuc2lvbiBtX2V4cGFu
c2lvbjsKKyAgICBJbmxpbmVEaXNwbGF5OjpCb3g6OlRleHQgbV90ZXh0OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgRGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zlcmlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRl
eCA5MjlmMTA5N2M2YjIzZjFiNGNkOTU5NTJmOGYyMDBiMzIzZjFlMzU0Li5iOTIwMDY5MWFlZDc5
YjFkYzE1MWU4MjE3NzIzZDIxODY1MjIxMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZp
Y2F0aW9uLmNwcApAQCAtNzAsMjQgKzcwLDI0IEBAIHN0YXRpYyBib29sIGFyZUVzc2VudGlhbGx5
RXF1YWwoTGF5b3V0UmVjdCBhLCBMYXlvdXRSZWN0IGIpCiAgICAgICAgICYmIGFyZUVzc2VudGlh
bGx5RXF1YWwoYS5oZWlnaHQoKSwgYi5oZWlnaHQoKSk7CiB9CiAKLXN0YXRpYyBib29sIGNoZWNr
Rm9yTWF0Y2hpbmdOb25UZXh0UnVucyhjb25zdCBSdW4mIHJ1biwgY29uc3QgV2ViQ29yZTo6TGVn
YWN5SW5saW5lQm94JiBpbmxpbmVCb3gpCitzdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nTm9u
VGV4dFJ1bnMoY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gsIGNvbnN0IFdlYkNvcmU6Okxl
Z2FjeUlubGluZUJveCYgaW5saW5lQm94KQogewotICAgIHJldHVybiBhcmVFc3NlbnRpYWxseUVx
dWFsKGlubGluZUJveC5sZWZ0KCksIHJ1bi5sb2dpY2FsTGVmdCgpKQotICAgICAgICAmJiBhcmVF
c3NlbnRpYWxseUVxdWFsKGlubGluZUJveC5yaWdodCgpLCBydW4ubG9naWNhbFJpZ2h0KCkpCi0g
ICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LnRvcCgpLCBydW4ubG9naWNh
bFRvcCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC5ib3R0b20o
KSwgcnVuLmxvZ2ljYWxCb3R0b20oKSk7CisgICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwo
aW5saW5lQm94LmxlZnQoKSwgYm94LmxvZ2ljYWxMZWZ0KCkpCisgICAgICAgICYmIGFyZUVzc2Vu
dGlhbGx5RXF1YWwoaW5saW5lQm94LnJpZ2h0KCksIGJveC5sb2dpY2FsUmlnaHQoKSkKKyAgICAg
ICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gudG9wKCksIGJveC5sb2dpY2FsVG9w
KCkpCisgICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LmJvdHRvbSgpLCBi
b3gubG9naWNhbEJvdHRvbSgpKTsKIH0KIAogCi1zdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5n
VGV4dFJ1bnMoY29uc3QgUnVuJiBydW4sIGNvbnN0IFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3gmIGlubGluZVRleHRCb3gpCitzdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMo
SW5saW5lRGlzcGxheTo6Qm94JiBib3gsIGNvbnN0IFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3gmIGlubGluZVRleHRCb3gpCiB7Ci0gICAgaWYgKCFydW4udGV4dCgpKQorICAgIGlmICghYm94
LnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBhcmVFc3NlbnRpYWxs
eUVxdWFsKGlubGluZVRleHRCb3gubGVmdCgpLCBydW4ubG9naWNhbExlZnQoKSkKLSAgICAgICAg
JiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LnJpZ2h0KCksIHJ1bi5sb2dpY2Fs
UmlnaHQoKSkKLSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LnRv
cCgpLCBydW4ubG9naWNhbFRvcCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlu
bGluZVRleHRCb3guYm90dG9tKCksIHJ1bi5sb2dpY2FsQm90dG9tKCkpCi0gICAgICAgICYmIChp
bmxpbmVUZXh0Qm94LmlzTGluZUJyZWFrKCkgfHwgKGlubGluZVRleHRCb3guc3RhcnQoKSA9PSBy
dW4udGV4dCgpLT5zdGFydCgpICYmIGlubGluZVRleHRCb3guZW5kKCkgPT0gcnVuLnRleHQoKS0+
ZW5kKCkpKTsKKyAgICByZXR1cm4gYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94Lmxl
ZnQoKSwgYm94LmxvZ2ljYWxMZWZ0KCkpCisgICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwo
aW5saW5lVGV4dEJveC5yaWdodCgpLCBib3gubG9naWNhbFJpZ2h0KCkpCisgICAgICAgICYmIGFy
ZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC50b3AoKSwgYm94LmxvZ2ljYWxUb3AoKSkK
KyAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LmJvdHRvbSgpLCBi
b3gubG9naWNhbEJvdHRvbSgpKQorICAgICAgICAmJiAoaW5saW5lVGV4dEJveC5pc0xpbmVCcmVh
aygpIHx8IChpbmxpbmVUZXh0Qm94LnN0YXJ0KCkgPT0gYm94LnRleHQoKS0+c3RhcnQoKSAmJiBp
bmxpbmVUZXh0Qm94LmVuZCgpID09IGJveC50ZXh0KCktPmVuZCgpKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGNvbGxlY3RGbG93Qm94U3VidHJlZShjb25zdCBMZWdhY3lJbmxpbmVGbG93Qm94JiBmbG93
Ym94LCBWZWN0b3I8V2ViQ29yZTo6TGVnYWN5SW5saW5lQm94Kj4mIGlubGluZUJveGVzKQpAQCAt
MTE4LDQ4ICsxMTgsNDggQEAgc3RhdGljIHZvaWQgY29sbGVjdElubGluZUJveGVzKGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgcm9vdCwgVmVjdG9yPFdlYkNvcmU6OkxlZ2EKIHN0YXRpYyBib29sIG91
dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0m
IHN0cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBSZW5kZXJCbG9j
a0Zsb3cmIGJsb2NrRmxvdywgY29uc3QgQ29udGFpbmVyQm94JiBpbmxpbmVGb3JtYXR0aW5nUm9v
dCkKIHsKICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5mb3Jt
YXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nUm9vdCk7Ci0g
ICAgYXV0byYgcnVucyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9y
bWF0dGluZ1N0YXRlKS5ydW5zKCk7CisgICAgYXV0byYgYm94ZXMgPSBkb3duY2FzdDxJbmxpbmVG
b3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkuYm94ZXMoKTsKICAgICAvLyBD
b2xsZWN0IGlubGluZWJveGVzLgogICAgIFZlY3RvcjxXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gq
PiBpbmxpbmVCb3hlczsKICAgICBjb2xsZWN0SW5saW5lQm94ZXMoYmxvY2tGbG93LCBpbmxpbmVC
b3hlcyk7CiAKICAgICBhdXRvIG1pc21hdGNoZWQgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBydW5J
bmRleCA9IDA7CisgICAgdW5zaWduZWQgYm94SW5kZXggPSAwOwogCi0gICAgaWYgKGlubGluZUJv
eGVzLnNpemUoKSAhPSBydW5zLnNpemUoKSkgewotICAgICAgICBzdHJlYW0gPDwgIldhcm5pbmc6
IG1pc21hdGNoaW5nIG51bWJlciBvZiBydW5zOiBpbmxpbmVib3hlcygiIDw8IGlubGluZUJveGVz
LnNpemUoKSA8PCAiKSB2cy4gaW5saW5lIHJ1bnMoIiA8PCBydW5zLnNpemUoKSA8PCAiKSI7Cisg
ICAgaWYgKGlubGluZUJveGVzLnNpemUoKSAhPSBib3hlcy5zaXplKCkpIHsKKyAgICAgICAgc3Ry
ZWFtIDw8ICJXYXJuaW5nOiBtaXNtYXRjaGluZyBudW1iZXIgb2YgYm94ZXM6IGlubGluZWJveGVz
KCIgPDwgaW5saW5lQm94ZXMuc2l6ZSgpIDw8ICIpIHZzLiBpbmxpbmUgYm94ZXMoIiA8PCBib3hl
cy5zaXplKCkgPDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICB9CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIGlubGluZUJveEluZGV4ID0gMDsgaW5saW5lQm94SW5kZXggPCBpbmxp
bmVCb3hlcy5zaXplKCkgJiYgcnVuSW5kZXggPCBydW5zLnNpemUoKTsgKytpbmxpbmVCb3hJbmRl
eCkgewotICAgICAgICBhdXRvJiBydW4gPSBydW5zW3J1bkluZGV4XTsKKyAgICBmb3IgKHVuc2ln
bmVkIGlubGluZUJveEluZGV4ID0gMDsgaW5saW5lQm94SW5kZXggPCBpbmxpbmVCb3hlcy5zaXpl
KCkgJiYgYm94SW5kZXggPCBib3hlcy5zaXplKCk7ICsraW5saW5lQm94SW5kZXgpIHsKKyAgICAg
ICAgYXV0byYgYm94ID0gYm94ZXNbYm94SW5kZXhdOwogICAgICAgICBhdXRvKiBpbmxpbmVCb3gg
PSBpbmxpbmVCb3hlc1tpbmxpbmVCb3hJbmRleF07CiAgICAgICAgIGF1dG8qIGlubGluZVRleHRC
b3ggPSBpczxXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpID8gZG93bmNh
c3Q8V2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveD4oaW5saW5lQm94KSA6IG51bGxwdHI7Ci0g
ICAgICAgIGJvb2wgbWF0Y2hpbmdSdW5zID0gaW5saW5lVGV4dEJveCA/IGNoZWNrRm9yTWF0Y2hp
bmdUZXh0UnVucyhydW4sICppbmxpbmVUZXh0Qm94KSA6IGNoZWNrRm9yTWF0Y2hpbmdOb25UZXh0
UnVucyhydW4sICppbmxpbmVCb3gpOworICAgICAgICBib29sIG1hdGNoaW5nUnVucyA9IGlubGlu
ZVRleHRCb3ggPyBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMoYm94LCAqaW5saW5lVGV4dEJveCkg
OiBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMoYm94LCAqaW5saW5lQm94KTsKIAogICAgICAg
ICBpZiAoIW1hdGNoaW5nUnVucykgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaXM8
UmVuZGVyTGluZUJyZWFrPihpbmxpbmVCb3gtPnJlbmRlcmVyKCkpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gPGJyPiBwb3NpdGlvbmluZyBpcyB3ZWlyZCBhdCB0aGlzIHBvaW50LiBJdCBuZWVkcyBw
cm9wZXIgYmFzZWxpbmUuCiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdSdW5zID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICArK3J1bkluZGV4OworICAgICAgICAgICAgICAgICsrYm94SW5kZXg7CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHN0
cmVhbSA8PCAiTWlzbWF0Y2hpbmc6IHJ1biI7CisgICAgICAgICAgICBzdHJlYW0gPDwgIk1pc21h
dGNoaW5nOiBib3giOwogCiAgICAgICAgICAgICBpZiAoaW5saW5lVGV4dEJveCkKICAgICAgICAg
ICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBpbmxpbmVUZXh0Qm94LT5zdGFydCgpIDw8ICIsICIg
PDwgaW5saW5lVGV4dEJveC0+ZW5kKCkgPDwgIikiOwogICAgICAgICAgICAgc3RyZWFtIDw8ICIg
KCIgPDwgaW5saW5lQm94LT5sb2dpY2FsTGVmdCgpIDw8ICIsICIgPDwgaW5saW5lQm94LT5sb2dp
Y2FsVG9wKCkgPDwgIikgKCIgPDwgaW5saW5lQm94LT5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwg
aW5saW5lQm94LT5sb2dpY2FsSGVpZ2h0KCkgPDwgIikiOwogCi0gICAgICAgICAgICBzdHJlYW0g
PDwgIiBpbmxpbmUgcnVuIjsKLSAgICAgICAgICAgIGlmIChydW4udGV4dCgpKQotICAgICAgICAg
ICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IHJ1bi50ZXh0KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBy
dW4udGV4dCgpLT5lbmQoKSA8PCAiKSI7Ci0gICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBy
dW4ubG9naWNhbExlZnQoKSA8PCAiLCAiIDw8IHJ1bi5sb2dpY2FsVG9wKCkgPDwgIikgKCIgPDwg
cnVuLmxvZ2ljYWxXaWR0aCgpIDw8ICJ4IiA8PCBydW4ubG9naWNhbEhlaWdodCgpIDw8ICIpIjsK
KyAgICAgICAgICAgIHN0cmVhbSA8PCAiIGlubGluZSBib3giOworICAgICAgICAgICAgaWYgKGJv
eC50ZXh0KCkpCisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgYm94LnRleHQoKS0+
c3RhcnQoKSA8PCAiLCAiIDw8IGJveC50ZXh0KCktPmVuZCgpIDw8ICIpIjsKKyAgICAgICAgICAg
IHN0cmVhbSA8PCAiICgiIDw8IGJveC5sb2dpY2FsTGVmdCgpIDw8ICIsICIgPDwgYm94LmxvZ2lj
YWxUb3AoKSA8PCAiKSAoIiA8PCBib3gubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGJveC5sb2dp
Y2FsSGVpZ2h0KCkgPDwgIikiOwogICAgICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAg
ICAgICAgICBtaXNtYXRjaGVkID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICArK3J1bkluZGV4
OworICAgICAgICArK2JveEluZGV4OwogICAgIH0KICAgICByZXR1cm4gbWlzbWF0Y2hlZDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIu
Y3BwCmluZGV4IDg5YTExMTA3M2U4Y2FlY2MzODgxNjcyN2UzZjhjOGRlM2Q4YmMxZDkuLmM2ZjA0
MmU5OGYyNjk1YzEyZDBlMWYwMzk2ZjdhM2NhNDVlMmI2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250
ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtNDIsMjYgKzQy
LDI2IEBAIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6SW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyKGNvbnN0IENvbnRhaW5lckJveCYgZm9yCiB7CiB9CiAKLUlubGluZVJ1bnMgSW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRl
bnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVMYXlv
dXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4KQor
RGlzcGxheUJveGVzIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YnVpbGQoY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJv
eCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qg
c2l6ZV90IGxpbmVJbmRleCkKIHsKLSAgICBJbmxpbmVSdW5zIHJ1bnM7Ci0gICAgcnVucy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxpbmVDb250ZW50LnJ1bnMuc2l6ZSgpICsgbGluZUJveC5ub25S
b290SW5saW5lTGV2ZWxCb3hlcygpLnNpemUoKSArIDEpOworICAgIERpc3BsYXlCb3hlcyBib3hl
czsKKyAgICBib3hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpbmVDb250ZW50LnJ1bnMuc2l6
ZSgpICsgbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpLnNpemUoKSArIDEpOwogCi0g
ICAgLy8gRXZlcnkgbGluZSBzdGFydHMgd2l0aCBhIHJvb3QgcnVuLCBldmVuIHRoZSBlbXB0eSBv
bmVzLgorICAgIC8vIEV2ZXJ5IGxpbmUgc3RhcnRzIHdpdGggYSByb290IGJveCwgZXZlbiB0aGUg
ZW1wdHkgb25lcy4KICAgICBhdXRvIHJvb3RJbmxpbmVCb3hSZWN0ID0gbGluZUJveC5sb2dpY2Fs
UmVjdEZvclJvb3RJbmxpbmVCb3goKTsKICAgICByb290SW5saW5lQm94UmVjdC5tb3ZlQnkobGlu
ZUJveExvZ2ljYWxUb3BMZWZ0KTsKLSAgICBydW5zLmFwcGVuZCh7IGxpbmVJbmRleCwgUnVuOjpU
eXBlOjpSb290SW5saW5lQm94LCByb290KCksIHJvb3RJbmxpbmVCb3hSZWN0LCByb290SW5saW5l
Qm94UmVjdCwgeyB9LCB7IH0sICBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50KCl9
KTsKKyAgICBib3hlcy5hcHBlbmQoeyBsaW5lSW5kZXgsIElubGluZURpc3BsYXk6OkJveDo6VHlw
ZTo6Um9vdElubGluZUJveCwgcm9vdCgpLCByb290SW5saW5lQm94UmVjdCwgcm9vdElubGluZUJv
eFJlY3QsIHsgfSwgeyB9LCAgbGluZUJveC5yb290SW5saW5lQm94KCkuaGFzQ29udGVudCgpfSk7
CiAKLSAgICBjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxpbmVC
b3hlcyhsaW5lQm94LCBsaW5lQm94TG9naWNhbFRvcExlZnQsIGxpbmVJbmRleCwgcnVucyk7Ci0g
ICAgY3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQobGluZUNvbnRlbnQs
IGxpbmVCb3gsIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgbGluZUluZGV4LCBydW5zKTsKLSAgICBj
b2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hSdW5zKGxpbmVCb3gsIHJ1bnMpOwotICAgIHJl
dHVybiBydW5zOworICAgIGNyZWF0ZUJveGVzQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5p
bmdJbmxpbmVCb3hlcyhsaW5lQm94LCBsaW5lQm94TG9naWNhbFRvcExlZnQsIGxpbmVJbmRleCwg
Ym94ZXMpOworICAgIGNyZWF0ZUJveGVzQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChs
aW5lQ29udGVudCwgbGluZUJveCwgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBsaW5lSW5kZXgsIGJv
eGVzKTsKKyAgICBjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hlcyhsaW5lQm94LCBib3hl
cyk7CisgICAgcmV0dXJuIGJveGVzOwogfQogCi12b2lkIElubGluZURpc3BsYXlDb250ZW50QnVp
bGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJv
eCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qg
c2l6ZV90IGxpbmVJbmRleCwgSW5saW5lUnVucyYgcnVucykKK3ZvaWQgSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyOjpjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQo
Y29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJv
eCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVm
dCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgRGlzcGxheUJveGVzJiBib3hlcykKIHsKICAgICBh
dXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICAvLyBD
cmVhdGUgdGhlIGlubGluZSBydW5zIG9uIHRoZSBjdXJyZW50IGxpbmUuIFRoaXMgaXMgbW9zdGx5
IHRleHQgYW5kIGF0b21pYyBpbmxpbmUgcnVucy4KKyAgICAvLyBDcmVhdGUgdGhlIGlubGluZSBi
b3hlcyBvbiB0aGUgY3VycmVudCBsaW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMg
aW5saW5lIGJveGVzLgogICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250ZW50LnJ1bnMp
IHsKICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKICAgICAg
ICAgc3dpdGNoIChsaW5lUnVuLnR5cGUoKSkgewpAQCAtOTAsMTMgKzkwLDEzIEBAIHZvaWQgSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JM
aW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBhdXRvIGFkanVzdGVkQ29udGVudFRvUmVuZGVy
ID0gWyZdIHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC0+bmVlZHNIeXBoZW4gPyBtYWtl
U3RyaW5nKGNvbnRlbnQuc3Vic3RyaW5nKHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgpLCBzdHls
ZS5oeXBoZW5TdHJpbmcoKSkgOiBTdHJpbmcoKTsKICAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICBydW5zLmFwcGVuZCh7IGxpbmVJbmRleAotICAgICAgICAgICAgICAgICwgUnVuOjpUeXBlOjpU
ZXh0CisgICAgICAgICAgICBib3hlcy5hcHBlbmQoeyBsaW5lSW5kZXgKKyAgICAgICAgICAgICAg
ICAsIElubGluZURpc3BsYXk6OkJveDo6VHlwZTo6VGV4dAogICAgICAgICAgICAgICAgICwgbGF5
b3V0Qm94CiAgICAgICAgICAgICAgICAgLCB0ZXh0UnVuUmVjdAogICAgICAgICAgICAgICAgICwg
aW5rT3ZlcmZsb3coKQogICAgICAgICAgICAgICAgICwgbGluZVJ1bi5leHBhbnNpb24oKQotICAg
ICAgICAgICAgICAgICwgUnVuOjpUZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgY29u
dGVudCwgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIoKSwgdGV4dC0+bmVlZHNIeXBoZW4gfSB9KTsK
KyAgICAgICAgICAgICAgICAsIElubGluZURpc3BsYXk6OkJveDo6VGV4dCB7IHRleHQtPnN0YXJ0
LCB0ZXh0LT5sZW5ndGgsIGNvbnRlbnQsIGFkanVzdGVkQ29udGVudFRvUmVuZGVyKCksIHRleHQt
Pm5lZWRzSHlwaGVuIH0gfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIElubGluZUl0ZW06OlR5cGU6OlNvZnRMaW5lQnJlYWs6IHsKQEAgLTEwNSwyMCArMTA1
LDIwIEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBk
YXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAKICAgICAgICAgICAgIEFTU0VSVChsaW5l
UnVuLnRleHRDb250ZW50KCkgJiYgaXM8SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KSk7CiAgICAg
ICAgICAgICBhdXRvJiB0ZXh0ID0gbGluZVJ1bi50ZXh0Q29udGVudCgpOwotICAgICAgICAgICAg
cnVucy5hcHBlbmQoeyBsaW5lSW5kZXgKLSAgICAgICAgICAgICAgICAsIFJ1bjo6VHlwZTo6U29m
dExpbmVCcmVhaworICAgICAgICAgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4CisgICAgICAg
ICAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OlNvZnRMaW5lQnJlYWsKICAgICAg
ICAgICAgICAgICAsIGxheW91dEJveAogICAgICAgICAgICAgICAgICwgc29mdExpbmVCcmVha1J1
blJlY3QKICAgICAgICAgICAgICAgICAsIHNvZnRMaW5lQnJlYWtSdW5SZWN0CiAgICAgICAgICAg
ICAgICAgLCBsaW5lUnVuLmV4cGFuc2lvbigpCi0gICAgICAgICAgICAgICAgLCBSdW46OlRleHQg
eyB0ZXh0LT5zdGFydCwgdGV4dC0+bGVuZ3RoLCBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlv
dXRCb3gpLmNvbnRlbnQoKSB9IH0pOworICAgICAgICAgICAgICAgICwgSW5saW5lRGlzcGxheTo6
Qm94OjpUZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgZG93bmNhc3Q8SW5saW5lVGV4
dEJveD4obGF5b3V0Qm94KS5jb250ZW50KCkgfSB9KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhazogewog
ICAgICAgICAgICAgLy8gT25seSBoYXJkIGxpbmVicmVha3MgaGF2ZSBhc3NvY2lhdGVkIGxheW91
dCBib3hlcy4KICAgICAgICAgICAgIGF1dG8gbGluZUJyZWFrQm94UmVjdCA9IGxpbmVCb3gubG9n
aWNhbFJlY3RGb3JMaW5lQnJlYWtCb3gobGF5b3V0Qm94KTsKICAgICAgICAgICAgIGxpbmVCcmVh
a0JveFJlY3QubW92ZUJ5KGxpbmVCb3hMb2dpY2FsVG9wTGVmdCk7Ci0gICAgICAgICAgICBydW5z
LmFwcGVuZCh7IGxpbmVJbmRleCwgUnVuOjpUeXBlOjpMaW5lQnJlYWtCb3gsIGxheW91dEJveCwg
bGluZUJyZWFrQm94UmVjdCwgbGluZUJyZWFrQm94UmVjdCwgbGluZVJ1bi5leHBhbnNpb24oKSwg
eyB9IH0pOworICAgICAgICAgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4LCBJbmxpbmVEaXNw
bGF5OjpCb3g6OlR5cGU6OkxpbmVCcmVha0JveCwgbGF5b3V0Qm94LCBsaW5lQnJlYWtCb3hSZWN0
LCBsaW5lQnJlYWtCb3hSZWN0LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7IH0gfSk7CiAKICAgICAg
ICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxh
eW91dEJveCk7CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xh
eW91dFBvaW50KGxpbmVCcmVha0JveFJlY3QudG9wTGVmdCgpKSk7CkBAIC0xMzEsNyArMTMxLDcg
QEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVH
ZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKICAgICAgICAgICAgIGF1dG8gbG9naWNhbEJvcmRl
ckJveCA9IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVsQm94KGxh
eW91dEJveCwgYm94R2VvbWV0cnkpOwogICAgICAgICAgICAgbG9naWNhbEJvcmRlckJveC5tb3Zl
QnkobGluZUJveExvZ2ljYWxUb3BMZWZ0KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgaW5r
IG92ZXJmbG93IHN1cHBvcnQgZm9yIGF0b21pYyBpbmxpbmUgbGV2ZWwgYm94ZXMgKGUuZy4gYm94
IHNoYWRvdykuCi0gICAgICAgICAgICBydW5zLmFwcGVuZCh7IGxpbmVJbmRleCwgUnVuOjpUeXBl
OjpBdG9taWNJbmxpbmVMZXZlbEJveCwgbGF5b3V0Qm94LCBsb2dpY2FsQm9yZGVyQm94LCBsb2dp
Y2FsQm9yZGVyQm94LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7IH0gfSk7CisgICAgICAgICAgICBi
b3hlcy5hcHBlbmQoeyBsaW5lSW5kZXgsIElubGluZURpc3BsYXk6OkJveDo6VHlwZTo6QXRvbWlj
SW5saW5lTGV2ZWxCb3gsIGxheW91dEJveCwgbG9naWNhbEJvcmRlckJveCwgbG9naWNhbEJvcmRl
ckJveCwgbGluZVJ1bi5leHBhbnNpb24oKSwgeyB9IH0pOwogCiAgICAgICAgICAgICBhdXRvIGJv
cmRlckJveExvZ2ljYWxUb3BMZWZ0ID0gbG9naWNhbEJvcmRlckJveC50b3BMZWZ0KCk7CiAgICAg
ICAgICAgICAvLyBOb3RlIHRoYXQgaW5saW5lIGJveGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgbGlu
ZSBhbmQgdGhlaXIgdG9wIHBvc2l0aW9uIGNhbiBiZSBuZWdhdGl2ZS4KQEAgLTE0MSwxMSArMTQx
LDExIEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBk
YXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBhdXRvIGFkanVzdFBh
cmVudElubGluZUJveElua092ZXJmbG93ID0gWyZdIHsKICAgICAgICAgICAgICAgICBhdXRvJiBw
YXJlbnRJbmxpbmVCb3ggPSBsYXlvdXRCb3gucGFyZW50KCk7CiAgICAgICAgICAgICAgICAgaWYg
KCZwYXJlbnRJbmxpbmVCb3ggPT0gJnJvb3QoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBkb24ndCBjb2xsZWN0IGluayBvdmVyZmxvdyBmb3IgdGhlIHJvb3QgaW5saW5lIGJveCBydW4u
CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGNvbGxlY3QgaW5rIG92ZXJmbG93IGZv
ciB0aGUgcm9vdCBpbmxpbmUgYm94LgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5saW5lQm94
UnVuSW5kZXhNYXAuY29udGFpbnMoJnBhcmVudElubGluZUJveCkpOwotICAgICAgICAgICAgICAg
IHJ1bnNbbV9pbmxpbmVCb3hSdW5JbmRleE1hcC5nZXQoJnBhcmVudElubGluZUJveCldLmFkanVz
dElua092ZXJmbG93KGxvZ2ljYWxCb3JkZXJCb3gpOworICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1faW5saW5lQm94SW5kZXhNYXAuY29udGFpbnMoJnBhcmVudElubGluZUJveCkpOwor
ICAgICAgICAgICAgICAgIGJveGVzW21faW5saW5lQm94SW5kZXhNYXAuZ2V0KCZwYXJlbnRJbmxp
bmVCb3gpXS5hZGp1c3RJbmtPdmVyZmxvdyhsb2dpY2FsQm9yZGVyQm94KTsKICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICBhZGp1c3RQYXJlbnRJbmxpbmVCb3hJbmtPdmVyZmxvdygpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNTYsOSArMTU2LDkgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNv
bnMKICAgICAgICAgICAgIGF1dG8gaW5saW5lQm94Qm9yZGVyQm94ID0gbGluZUJveC5sb2dpY2Fs
Qm9yZGVyQm94Rm9ySW5saW5lQm94KGxheW91dEJveCwgYm94R2VvbWV0cnkpOwogICAgICAgICAg
ICAgaW5saW5lQm94Qm9yZGVyQm94Lm1vdmVCeShsaW5lQm94TG9naWNhbFRvcExlZnQpOwogICAg
ICAgICAgICAgaWYgKGxpbmVCb3guaGFzQ29udGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
RklYTUU6IEl0J3MgZXhwZWN0ZWQgdG8gbm90IGhhdmUgYW55IHJ1bnMgb24gZW1wdHkgbGluZXMu
IFdlIHNob3VsZCByZWNvbnNpZGVyIHRoaXMuCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVCb3hS
dW5JbmRleE1hcC5hZGQoJmxheW91dEJveCwgcnVucy5zaXplKCkpOwotICAgICAgICAgICAgICAg
IHJ1bnMuYXBwZW5kKHsgbGluZUluZGV4LCBSdW46OlR5cGU6Ok5vblJvb3RJbmxpbmVCb3gsIGxh
eW91dEJveCwgaW5saW5lQm94Qm9yZGVyQm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIHsgfSwgeyB9
LCBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuaGFzQ29udGVu
dCgpIH0pOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIGV4cGVjdGVkIHRvIG5vdCBo
YXZlIGFueSBib3hlcyBvbiBlbXB0eSBsaW5lcy4gV2Ugc2hvdWxkIHJlY29uc2lkZXIgdGhpcy4K
KyAgICAgICAgICAgICAgICBtX2lubGluZUJveEluZGV4TWFwLmFkZCgmbGF5b3V0Qm94LCBib3hl
cy5zaXplKCkpOworICAgICAgICAgICAgICAgIGJveGVzLmFwcGVuZCh7IGxpbmVJbmRleCwgSW5s
aW5lRGlzcGxheTo6Qm94OjpUeXBlOjpOb25Sb290SW5saW5lQm94LCBsYXlvdXRCb3gsIGlubGlu
ZUJveEJvcmRlckJveCwgaW5saW5lQm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgbGluZUJveC5pbmxp
bmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmhhc0NvbnRlbnQoKSB9KTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hTaXplID0gTGF5b3V0U2l6ZSB7
IExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwoaW5saW5lQm94Qm9yZGVyQm94LndpZHRoKCkpLCBM
YXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC5oZWlnaHQoKSkgfTsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3Jl
YXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogICAgIH0KIH0KIAot
dm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9t
ZXRyeUZvckxpbmVTcGFubmluZ0lubGluZUJveGVzKGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNv
bnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVf
dCBsaW5lSW5kZXgsIElubGluZVJ1bnMmIHJ1bnMpCit2b2lkIElubGluZURpc3BsYXlDb250ZW50
QnVpbGRlcjo6Y3JlYXRlQm94ZXNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFubmluZ0lubGlu
ZUJveGVzKGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBs
aW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIERpc3BsYXlCb3hl
cyYgYm94ZXMpCiB7CiAgICAgaWYgKCFsaW5lQm94Lmhhc0NvbnRlbnQoKSkgewogICAgICAgICAv
LyBXaGVuIGEgc3Bhbm5pbmcgaW5saW5lIGJveCAoZS5nLiA8ZGl2PnRleHQ8c3Bhbj48YnI+PC9z
cGFuPjwvZGl2PikgbGFuZHMgb24gYW4gZW1wdHkgbGluZQpAQCAtMTkyLDEyICsxOTIsMTIgQEAg
dm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9t
ZXRyeUZvckxpbmVTcGFubmluZ0lubGkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKTsKICAgICAgICAgYXV0
byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsK
LSAgICAgICAgLy8gSW5saW5lIGJveGVzIG1heSBvciBtYXkgbm90IGJlIHdyYXBwZWQgYW5kIGhh
dmUgcnVucyBvbiBtdWx0aXBsZSBsaW5lcyAoZS5nLiA8c3Bhbj5maXJzdCBsaW5lPGJyPnNlY29u
ZCBsaW5lPGJyPnRoaXJkIGxpbmU8L3NwYW4+KQorICAgICAgICAvLyBJbmxpbmUgYm94ZXMgbWF5
IG9yIG1heSBub3QgYmUgd3JhcHBlZCBhbmQgaGF2ZSBib3hlcyBvbiBtdWx0aXBsZSBsaW5lcyAo
ZS5nLiA8c3Bhbj5maXJzdCBsaW5lPGJyPnNlY29uZCBsaW5lPGJyPnRoaXJkIGxpbmU8L3NwYW4+
KQogICAgICAgICBhdXRvIGlubGluZUJveEJvcmRlckJveCA9IGxpbmVCb3gubG9naWNhbEJvcmRl
ckJveEZvcklubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsKICAgICAgICAgaW5saW5l
Qm94Qm9yZGVyQm94Lm1vdmVCeShsaW5lQm94TG9naWNhbFRvcExlZnQpOwogCi0gICAgICAgIG1f
aW5saW5lQm94UnVuSW5kZXhNYXAuYWRkKCZsYXlvdXRCb3gsIHJ1bnMuc2l6ZSgpKTsKLSAgICAg
ICAgcnVucy5hcHBlbmQoeyBsaW5lSW5kZXgsIFJ1bjo6VHlwZTo6Tm9uUm9vdElubGluZUJveCwg
bGF5b3V0Qm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIGlubGluZUJveEJvcmRlckJveCwgeyB9LCB7
IH0sIGlubGluZUxldmVsQm94Lmhhc0NvbnRlbnQoKSB9KTsKKyAgICAgICAgbV9pbmxpbmVCb3hJ
bmRleE1hcC5hZGQoJmxheW91dEJveCwgYm94ZXMuc2l6ZSgpKTsKKyAgICAgICAgYm94ZXMuYXBw
ZW5kKHsgbGluZUluZGV4LCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6Ok5vblJvb3RJbmxpbmVC
b3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9yZGVyQm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIHsg
fSwgeyB9LCBpbmxpbmVMZXZlbEJveC5oYXNDb250ZW50KCkgfSk7CiAKICAgICAgICAgYXV0byBp
bmxpbmVCb3hTaXplID0gTGF5b3V0U2l6ZSB7IExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwoaW5s
aW5lQm94Qm9yZGVyQm94LndpZHRoKCkpLCBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlubGlu
ZUJveEJvcmRlckJveC5oZWlnaHQoKSkgfTsKICAgICAgICAgYXV0byBsb2dpY2FsUmVjdCA9IFJl
Y3QgeyBMYXlvdXRQb2ludCB7IGlubGluZUJveEJvcmRlckJveC50b3BMZWZ0KCkgfSwgaW5saW5l
Qm94U2l6ZSB9OwpAQCAtMjExLDkgKzIxMSw5IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxpCiAg
ICAgfQogfQogCi12b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y29sbGVjdElua092
ZXJmbG93Rm9ySW5saW5lQm94UnVucyhjb25zdCBMaW5lQm94JiBsaW5lQm94LCBJbmxpbmVSdW5z
JiBydW5zKQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVy
Zmxvd0ZvcklubGluZUJveGVzKGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIERpc3BsYXlCb3hlcyYg
Ym94ZXMpCiB7Ci0gICAgaWYgKG1faW5saW5lQm94UnVuSW5kZXhNYXAuaXNFbXB0eSgpIHx8ICFs
aW5lQm94Lmhhc0NvbnRlbnQoKSkgeworICAgIGlmIChtX2lubGluZUJveEluZGV4TWFwLmlzRW1w
dHkoKSB8fCAhbGluZUJveC5oYXNDb250ZW50KCkpIHsKICAgICAgICAgLy8gVGhpcyBsaW5lIGhh
cyBubyBpbmxpbmUgYm94IChvbmx5IHJvb3QsIGJ1dCB3ZSBkb24ndCBjb2xsZWN0IGluayBvdmVy
ZmxvdyBmb3IgdGhlIHJvb3QgaW5saW5lIGJveCBhdG0pCiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yMjgsMTAgKzIyOCwxMCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
Y29sbGVjdElua092ZXJmbG93Rm9ySW5saW5lQm94UnVucyhjb25zdCBMaW5lQgogICAgICAgICBh
dXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxpbmVCb3gucGFyZW50KCk7CiAgICAgICAgIGlmICgm
cGFyZW50SW5saW5lQm94ID09ICZyb290KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9pbmxpbmVCb3hSdW5JbmRleE1hcC5jb250YWlucygmaW5saW5l
Qm94KSAmJiBtX2lubGluZUJveFJ1bkluZGV4TWFwLmNvbnRhaW5zKCZwYXJlbnRJbmxpbmVCb3gp
KTsKLSAgICAgICAgYXV0byYgaW5rT3ZlcmZsb3cgPSBydW5zW21faW5saW5lQm94UnVuSW5kZXhN
YXAuZ2V0KCZpbmxpbmVCb3gpXS5pbmtPdmVyZmxvdygpOwotICAgICAgICBhdXRvJiBwYXJlbnRJ
bmxpbmVCb3hSdW4gPSBydW5zW21faW5saW5lQm94UnVuSW5kZXhNYXAuZ2V0KCZwYXJlbnRJbmxp
bmVCb3gpXTsKLSAgICAgICAgcGFyZW50SW5saW5lQm94UnVuLmFkanVzdElua092ZXJmbG93KGlu
a092ZXJmbG93KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9pbmxpbmVCb3hJbmRleE1hcC5j
b250YWlucygmaW5saW5lQm94KSAmJiBtX2lubGluZUJveEluZGV4TWFwLmNvbnRhaW5zKCZwYXJl
bnRJbmxpbmVCb3gpKTsKKyAgICAgICAgYXV0byYgaW5rT3ZlcmZsb3cgPSBib3hlc1ttX2lubGlu
ZUJveEluZGV4TWFwLmdldCgmaW5saW5lQm94KV0uaW5rT3ZlcmZsb3coKTsKKyAgICAgICAgYXV0
byYgcGFyZW50RGlzcGxheUJveCA9IGJveGVzW21faW5saW5lQm94SW5kZXhNYXAuZ2V0KCZwYXJl
bnRJbmxpbmVCb3gpXTsKKyAgICAgICAgcGFyZW50RGlzcGxheUJveC5hZGp1c3RJbmtPdmVyZmxv
dyhpbmtPdmVyZmxvdyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCmluZGV4IGJjZjUwOTU1ZjZhZTdkOWU5YWU3MmE1
OTcwOTJhOTA4N2FkNGJmZWIuLjZkYmYyMWQzZGEyNThjZjAyMzA0ZDdkZjhhNzgzNmNiNjhjNTkw
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVp
bGRlci5oCkBAIC00MSwxOSArNDEsMTkgQEAgY2xhc3MgSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyIHsKIHB1YmxpYzoKICAgICBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIoY29uc3QgQ29u
dGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYp
OwogCi0gICAgSW5saW5lUnVucyBidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQm
LCBjb25zdCBMaW5lQm94JiwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2Fs
VG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCk7CisgICAgRGlzcGxheUJveGVzIGJ1aWxk
KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJ
bmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGlu
ZUluZGV4KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRy
eUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExp
bmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBj
b25zdCBzaXplX3QgbGluZUluZGV4LCBJbmxpbmVSdW5zJik7Ci0gICAgdm9pZCBjcmVhdGVSdW5z
QW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxpbmVCb3hlcyhjb25zdCBMaW5lQm94
JiwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qg
c2l6ZV90IGxpbmVJbmRleCwgSW5saW5lUnVucyYpOwotICAgIHZvaWQgY29sbGVjdElua092ZXJm
bG93Rm9ySW5saW5lQm94UnVucyhjb25zdCBMaW5lQm94JiwgSW5saW5lUnVucyYpOworICAgIHZv
aWQgY3JlYXRlQm94ZXNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVC
dWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQ
b2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBEaXNw
bGF5Qm94ZXMmKTsKKyAgICB2b2lkIGNyZWF0ZUJveGVzQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5l
U3Bhbm5pbmdJbmxpbmVCb3hlcyhjb25zdCBMaW5lQm94JiwgY29uc3QgSW5saW5lTGF5b3V0UG9p
bnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgRGlzcGxh
eUJveGVzJik7CisgICAgdm9pZCBjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hlcyhjb25z
dCBMaW5lQm94JiwgRGlzcGxheUJveGVzJik7CiAKICAgICBjb25zdCBDb250YWluZXJCb3gmIHJv
b3QoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsgfQogICAgIElubGlu
ZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9mb3Jt
YXR0aW5nU3RhdGU7IH0gCiAKICAgICBjb25zdCBDb250YWluZXJCb3gmIG1fZm9ybWF0dGluZ0Nv
bnRleHRSb290OwogICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgbV9mb3JtYXR0aW5nU3RhdGU7
Ci0gICAgSGFzaE1hcDxjb25zdCBCb3gqLCBzaXplX3Q+IG1faW5saW5lQm94UnVuSW5kZXhNYXA7
CisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBzaXplX3Q+IG1faW5saW5lQm94SW5kZXhNYXA7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggZTU4MjAxNTBlZmJjZDAxMTM0YTRlMGFiNTQ2Y2NjZmE2N2NjMmQ5My4uZDBhN2Ji
Y2ViZDBlOWQ5MTUxMzE1Y2QyMTI0ZmRjMDkyZmI2N2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzEsMTEgKzMxLDExIEBACiAj
aW5jbHVkZSAiRmxvYXRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNp
bmNsdWRlICJJbmxpbmVEYW1hZ2UuaCIKKyNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Qm94LmgiCiAj
aW5jbHVkZSAiSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSW5saW5l
Rm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUJveC5oIgogI2luY2x1ZGUg
IklubGluZUxpbmVCb3hCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW5saW5lTGluZVJ1bi5oIgogI2lu
Y2x1ZGUgIklubGluZVRleHRJdGVtLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVk
ZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChjb25zdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnQKICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aCh7
IH0pOwogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0VmVydGljYWxNYXJnaW4oeyB9KTsKICAg
ICAgICAgfSBlbHNlIGlmIChsYXlvdXRCb3gtPmlzSW5saW5lQm94KCkpIHsKLSAgICAgICAgICAg
IC8vIFRleHQgd3JhcHBlciBib3hlcyAoYW5vbnltb3VzIGlubGluZSBsZXZlbCBib3hlcykgZG9u
J3QgaGF2ZSBib3ggZ2VvbWV0cmllcyAodGhleSBvbmx5IGdlbmVyYXRlIHJ1bnMpLgorICAgICAg
ICAgICAgLy8gVGV4dCB3cmFwcGVyIGJveGVzIChhbm9ueW1vdXMgaW5saW5lIGxldmVsIGJveGVz
KSBkb24ndCBoYXZlIGJveCBnZW9tZXRyaWVzICh0aGV5IG9ubHkgZ2VuZXJhdGUgYm94ZXMpLgog
ICAgICAgICAgICAgaWYgKCFsYXlvdXRCb3gtPmlzSW5saW5lVGV4dEJveCgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gSW5saW5lIGJveGVzICg8c3Bhbj4pIGNhbid0IGdldCBzaXplZC9wb3NpdGlv
bmVkIHlldC4gQXQgdGhpcyBwb2ludCB3ZSBjYW4gb25seSBjb21wdXRlIHRoZWlyIG1hcmdpbnMs
IGJvcmRlcnMgYW5kIHBhZGRpbmcuCiAgICAgICAgICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBh
ZGRpbmcoKmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKQEAgLTE4Miw3ICsx
ODIsNyBAQCBMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVudEhl
aWdodCgpIGNvbnN0CiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElu
bGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSBuZWVk
c0xheW91dFJhbmdlLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFp
bnRzKQogewogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0
ZSgpOwotICAgIGZvcm1hdHRpbmdTdGF0ZS5ydW5zKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShm
b3JtYXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKS5zaXplKCkpOworICAgIGZvcm1hdHRpbmdTdGF0
ZS5ib3hlcygpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0
ZW1zKCkuc2l6ZSgpKTsKICAgICBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsVG9wID0gY29u
c3RyYWludHMubG9naWNhbFRvcCgpOwogICAgIHN0cnVjdCBQcmV2aW91c0xpbmUgewogICAgICAg
ICBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlIHJhbmdlOwpAQCAtMjY3LDcgKzI2Nyw3IEBA
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91
dE9mRmxvd0NvbnRlbnQoY29uc3QgRm9yCiAgICAgLy8gcGxhY2UgdGhlIG91dC1vZi1mbG93IGJv
eCBhdCB0aGUgbG9naWNhbCByaWdodCBwb3NpdGlvbi4KICAgICBhdXRvJiBmb3JtYXR0aW5nU3Rh
dGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKICAgICBhdXRvJiBsaW5lcyA9IGZvcm1hdHRp
bmdTdGF0ZS5saW5lcygpOwotICAgIGF1dG8mIHJ1bnMgPSBmb3JtYXR0aW5nU3RhdGUucnVucygp
OworICAgIGF1dG8mIGJveGVzID0gZm9ybWF0dGluZ1N0YXRlLmJveGVzKCk7CiAKICAgICBmb3Ig
KGF1dG8mIG91dE9mRmxvd0JveCA6IG91dE9mRmxvd0JveGVzKSB7CiAgICAgICAgIGF1dG8mIG91
dE9mRmxvd0dlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KCpvdXRPZkZsb3dC
b3gpOwpAQCAtMjg1LDEwICsyODUsMTAgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBGb3IKICAgICAg
ICAgfSgpOwogCiAgICAgICAgIGlmICghcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHMpIHsK
LSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IChub24tZmxvYXQpY2hpbGQuIExldCdz
IHBsYWNlIGl0IHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBydW4uCisgICAgICAgICAgICAvLyBU
aGlzIGlzIHRoZSBmaXJzdCAobm9uLWZsb2F0KWNoaWxkLiBMZXQncyBwbGFjZSBpdCB0byB0aGUg
bGVmdCBvZiB0aGUgZmlyc3QgYm94LgogICAgICAgICAgICAgLy8gPGRpdj48aW1nIHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGUiPnRleHQgY29udGVudDwvZGl2PgotICAgICAgICAgICAgQVNTRVJU
KHJ1bnMuc2l6ZSgpKTsKLSAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExvZ2ljYWxU
b3BMZWZ0KHsgcnVuc1swXS5sb2dpY2FsTGVmdCgpLCBsaW5lc1swXS5saW5lQm94TG9naWNhbFJl
Y3QoKS50b3AoKSB9KTsKKyAgICAgICAgICAgIEFTU0VSVChib3hlcy5zaXplKCkpOworICAgICAg
ICAgICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBib3hlc1swXS5sb2dp
Y2FsTGVmdCgpLCBsaW5lc1swXS5saW5lQm94TG9naWNhbFJlY3QoKS50b3AoKSB9KTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTMwMiwyNCArMzAyLDI0IEBAIHZvaWQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9mRmxv
d0NvbnRlbnQoY29uc3QgRm9yCiAgICAgICAgIEFTU0VSVChwcmV2aW91c0NvbnRlbnRTa2lwcGlu
Z0Zsb2F0cy0+aXNJbkZsb3coKSk7CiAgICAgICAgIGF1dG8gcGxhY2VPdXRPZkZsb3dCb3hBZnRl
clByZXZpb3VzSW5GbG93Qm94ID0gWyZdIHsKICAgICAgICAgICAgIC8vIFRoZSBvdXQtb2YtZmxv
dyBib3ggc2hvdWxkIGJlIHBsYWNlZCBhZnRlciB0aGlzIGluZmxvdyBib3guCi0gICAgICAgICAg
ICAvLyBTa2lwIHRvIHRoZSBsYXN0IHJ1biBvZiB0aGlzIGxheW91dCBib3guIFRoZSBsYXN0IHJ1
bidzIGdlb21ldHJ5IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgb3V0LW9mLWZsb3cgYm94J3Mgc3Rh
dGljIHBvc2l0aW9uLgotICAgICAgICAgICAgc2l6ZV90IGxhc3RSdW5JbmRleE9uUHJldmlvdXNM
YXlvdXRCb3ggPSAwOwotICAgICAgICAgICAgZm9yICg7IGxhc3RSdW5JbmRleE9uUHJldmlvdXNM
YXlvdXRCb3ggPCBydW5zLnNpemUoKSAmJiAmcnVuc1tsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5
b3V0Qm94XS5sYXlvdXRCb3goKSAhPSBwcmV2aW91c0NvbnRlbnRTa2lwcGluZ0Zsb2F0czsgKyts
YXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94KSB7IH0KLSAgICAgICAgICAgIGlmIChsYXN0
UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94ID09IHJ1bnMuc2l6ZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gRklYTUU6IEluIHZlcnkgcmFyZSBjYXNlcywgdGhlIHByZXZpb3VzIGJveCdzIGNv
bnRlbnQgbWlnaHQgaGF2ZSBiZWVuIGNvbXBsZXRlbHkgY29sbGFwc2VkIGFuZCBsZWZ0IHVzIHdp
dGggbm8gcnVuLgorICAgICAgICAgICAgLy8gU2tpcCB0byB0aGUgbGFzdCBib3ggb2YgdGhpcyBs
YXlvdXQgYm94LiBUaGUgbGFzdCBib3gncyBnZW9tZXRyeSBpcyB1c2VkIHRvIGNvbXB1dGUgdGhl
IG91dC1vZi1mbG93IGJveCdzIHN0YXRpYyBwb3NpdGlvbi4KKyAgICAgICAgICAgIHNpemVfdCBs
YXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94ID0gMDsKKyAgICAgICAgICAgIGZvciAoOyBs
YXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94IDwgYm94ZXMuc2l6ZSgpICYmICZib3hlc1ts
YXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94XS5sYXlvdXRCb3goKSAhPSBwcmV2aW91c0Nv
bnRlbnRTa2lwcGluZ0Zsb2F0czsgKytsYXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94KSB7
IH0KKyAgICAgICAgICAgIGlmIChsYXN0Qm94SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94ID09IGJv
eGVzLnNpemUoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJbiB2ZXJ5IHJhcmUgY2Fz
ZXMsIHRoZSBwcmV2aW91cyBib3gncyBjb250ZW50IG1pZ2h0IGhhdmUgYmVlbiBjb21wbGV0ZWx5
IGNvbGxhcHNlZCBhbmQgbGVmdCB1cyB3aXRoIG5vIGJveC4KICAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoOyBsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0
Qm94IDwgcnVucy5zaXplKCkgJiYgJnJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJv
eF0ubGF5b3V0Qm94KCkgPT0gcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHM7ICsrbGFzdFJ1
bkluZGV4T25QcmV2aW91c0xheW91dEJveCkgeyB9Ci0gICAgICAgICAgICAgICAgLS1sYXN0UnVu
SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94OwotICAgICAgICAgICAgLy8gTGV0J3MgY2hlY2sgaWYg
dGhlIHByZXZpb3VzIHJ1biBpcyB0aGUgbGFzdCBydW4gb24gdGhlIGN1cnJlbnQgbGluZSBhbmQg
dXNlIHRoZSBuZXh0IHJ1bidzIGxlZnQgaW5zdGVhZC4KLSAgICAgICAgICAgIGF1dG8mIHByZXZp
b3VzUnVuID0gcnVuc1tsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94XTsKLSAgICAgICAg
ICAgIGF1dG8qIG5leHRSdW4gPSBsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94ICsgMSA8
IHJ1bnMuc2l6ZSgpID8gJnJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCArIDFd
IDogbnVsbHB0cjsKLQotICAgICAgICAgICAgaWYgKG5leHRSdW4gJiYgbmV4dFJ1bi0+bGluZUlu
ZGV4KCkgPT0gcHJldmlvdXNSdW4ubGluZUluZGV4KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBQ
cmV2aW91cyBhbmQgbmV4dCBydW5zIGFyZSBvbiB0aGUgc2FtZSBsaW5lLiBUaGUgb3V0LW9mLWZs
b3cgYm94IGlzIHJpZ2h0IGF0IHRoZSBwcmV2aW91cyBydW4ncyBsb2dpY2FsIHJpZ2h0LgorICAg
ICAgICAgICAgZm9yICg7IGxhc3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggPCBib3hlcy5z
aXplKCkgJiYgJmJveGVzW2xhc3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3hdLmxheW91dEJv
eCgpID09IHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzOyArK2xhc3RCb3hJbmRleE9uUHJl
dmlvdXNMYXlvdXRCb3gpIHsgfQorICAgICAgICAgICAgICAgIC0tbGFzdEJveEluZGV4T25QcmV2
aW91c0xheW91dEJveDsKKyAgICAgICAgICAgIC8vIExldCdzIGNoZWNrIGlmIHRoZSBwcmV2aW91
cyBib3ggaXMgdGhlIGxhc3QgYm94IG9uIHRoZSBjdXJyZW50IGxpbmUgYW5kIHVzZSB0aGUgbmV4
dCBib3gncyBsZWZ0IGluc3RlYWQuCisgICAgICAgICAgICBhdXRvJiBwcmV2aW91c0JveCA9IGJv
eGVzW2xhc3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3hdOworICAgICAgICAgICAgYXV0byog
bmV4dEJveCA9IGxhc3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggKyAxIDwgYm94ZXMuc2l6
ZSgpID8gJmJveGVzW2xhc3RCb3hJbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggKyAxXSA6IG51bGxw
dHI7CisKKyAgICAgICAgICAgIGlmIChuZXh0Qm94ICYmIG5leHRCb3gtPmxpbmVJbmRleCgpID09
IHByZXZpb3VzQm94LmxpbmVJbmRleCgpKSB7CisgICAgICAgICAgICAgICAgLy8gUHJldmlvdXMg
YW5kIG5leHQgYm94ZXMgYXJlIG9uIHRoZSBzYW1lIGxpbmUuIFRoZSBvdXQtb2YtZmxvdyBib3gg
aXMgcmlnaHQgYXQgdGhlIHByZXZpb3VzIGJveCdzIGxvZ2ljYWwgcmlnaHQuCiAgICAgICAgICAg
ICAgICAgLy8gPGRpdj50ZXh0PGltZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj5jb250ZW50
PC9kaXY+Ci0gICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsTGVmdCA9IHByZXZpb3VzUnVuLmxv
Z2ljYWxSaWdodCgpOworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbExlZnQgPSBwcmV2aW91
c0JveC5sb2dpY2FsUmlnaHQoKTsKICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNDb250ZW50
U2tpcHBpbmdGbG9hdHMtPmlzSW5saW5lQm94KCkgJiYgIXByZXZpb3VzQ29udGVudFNraXBwaW5n
RmxvYXRzLT5pc0Fub255bW91cygpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIDxkaXY+dGV4
dDxzcGFuPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+Y29udGVudDwvc3Bhbj48L2Rp
dj4KICAgICAgICAgICAgICAgICAgICAgLy8gb3IKQEAgLTMyOSwyNyArMzI5LDI3IEBAIHZvaWQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9mRmxv
d0NvbnRlbnQoY29uc3QgRm9yCiAgICAgICAgICAgICAgICAgICAgICAgICA/IEJveEdlb21ldHJ5
Ojpib3JkZXJCb3hMZWZ0KGlubGluZUJveEJveEdlb21ldHJ5KSArIGlubGluZUJveEJveEdlb21l
dHJ5LmNvbnRlbnRCb3hMZWZ0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogQm94R2VvbWV0
cnk6OmJvcmRlckJveFJlY3QoaW5saW5lQm94Qm94R2VvbWV0cnkpLnJpZ2h0KCk7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExvZ2ljYWxU
b3BMZWZ0KHsgbG9naWNhbExlZnQsIGxpbmVzW3ByZXZpb3VzUnVuLmxpbmVJbmRleCgpXS5saW5l
Qm94TG9naWNhbFJlY3QoKS50b3AoKSB9KTsKKyAgICAgICAgICAgICAgICBvdXRPZkZsb3dHZW9t
ZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IGxvZ2ljYWxMZWZ0LCBsaW5lc1twcmV2aW91c0JveC5s
aW5lSW5kZXgoKV0ubGluZUJveExvZ2ljYWxSZWN0KCkudG9wKCkgfSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobmV4dFJ1bikgewot
ICAgICAgICAgICAgICAgIC8vIFRoZSBvdXQgb2YgZmxvdyBib3ggaXMgcGxhY2VkIGF0IHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIG5leHQgbGluZSAod2hlcmUgdGhlIGZpcnN0IHJ1biBvbiB0aGUgbGlu
ZSBpcykuCisgICAgICAgICAgICBpZiAobmV4dEJveCkgeworICAgICAgICAgICAgICAgIC8vIFRo
ZSBvdXQgb2YgZmxvdyBib3ggaXMgcGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQg
bGluZSAod2hlcmUgdGhlIGZpcnN0IGJveCBvbiB0aGUgbGluZSBpcykuCiAgICAgICAgICAgICAg
ICAgLy8gPGRpdj50ZXh0PGJyPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PGltZyBz
dHlsZT0icG9zaXRpb246IGFic29sdXRlIj5jb250ZW50PC9kaXY+Ci0gICAgICAgICAgICAgICAg
b3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBuZXh0UnVuLT5sb2dpY2FsTGVm
dCgpLCBsaW5lc1tuZXh0UnVuLT5saW5lSW5kZXgoKV0ubGluZUJveExvZ2ljYWxSZWN0KCkudG9w
KCkgfSk7CisgICAgICAgICAgICAgICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExl
ZnQoeyBuZXh0Qm94LT5sb2dpY2FsTGVmdCgpLCBsaW5lc1tuZXh0Qm94LT5saW5lSW5kZXgoKV0u
bGluZUJveExvZ2ljYWxSZWN0KCkudG9wKCkgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvJiBsYXN0TGluZUxvZ2ljYWxSZWN0ID0g
bGluZXNbcHJldmlvdXNSdW4ubGluZUluZGV4KCldLmxpbmVCb3hMb2dpY2FsUmVjdCgpOworICAg
ICAgICAgICAgYXV0byYgbGFzdExpbmVMb2dpY2FsUmVjdCA9IGxpbmVzW3ByZXZpb3VzQm94Lmxp
bmVJbmRleCgpXS5saW5lQm94TG9naWNhbFJlY3QoKTsKICAgICAgICAgICAgIC8vIFRoaXMgb3V0
LW9mLWZsb3cgYm94IGlzIHRoZSBsYXN0IGJveC4KICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2Ug
aXNMaW5lQnJlYWsgaW5zdGVhZCB0byBjb3ZlciBwcmVzZXJ2ZWQgbmV3IGxpbmVzIHRvby4KLSAg
ICAgICAgICAgIGlmIChwcmV2aW91c1J1bi5sYXlvdXRCb3goKS5pc0xpbmVCcmVha0JveCgpKSB7
CisgICAgICAgICAgICBpZiAocHJldmlvdXNCb3gubGF5b3V0Qm94KCkuaXNMaW5lQnJlYWtCb3go
KSkgewogICAgICAgICAgICAgICAgIC8vIDxkaXY+dGV4dDxicj48aW1nIHN0eWxlPSJwb3NpdGlv
bjogYWJzb2x1dGUiPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PC9kaXY+CiAgICAg
ICAgICAgICAgICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBsYXN0TGlu
ZUxvZ2ljYWxSZWN0LmxlZnQoKSwgbGFzdExpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSB9KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhN
RTogV2UgbWF5IG5lZWQgdG8gY2hlY2sgaWYgdGhpcyBib3ggYWN0dWFsbHkgZml0cyB0aGUgbGFz
dCBsaW5lIGFuZCBtb3ZlIGl0IG92ZXIgdG8gdGhlICJuZXh0IiBsaW5lLgotICAgICAgICAgICAg
b3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBwcmV2aW91c1J1bi5sb2dpY2Fs
UmlnaHQoKSwgbGFzdExpbmVMb2dpY2FsUmVjdC50b3AoKSB9KTsKKyAgICAgICAgICAgIG91dE9m
Rmxvd0dlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgcHJldmlvdXNCb3gubG9naWNhbFJpZ2h0
KCksIGxhc3RMaW5lTG9naWNhbFJlY3QudG9wKCkgfSk7CiAgICAgICAgIH07CiAgICAgICAgIHBs
YWNlT3V0T2ZGbG93Qm94QWZ0ZXJQcmV2aW91c0luRmxvd0JveCgpOwogICAgIH0KQEAgLTU3Nyw3
ICs1NzcsNyBAQCBJbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlR2Vv
bWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbAogCiAgICAgYXV0byBpbmxpbmVDb250
ZW50QnVpbGRlciA9IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlciB7IHJvb3QoKSwgZm9ybWF0
dGluZ1N0YXRlIH07CiAgICAgYXV0byBjdXJyZW50TGluZUluZGV4ID0gZm9ybWF0dGluZ1N0YXRl
LmxpbmVzKCkuc2l6ZSgpOwotICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRSdW5zKGlubGluZUNvbnRl
bnRCdWlsZGVyLmJ1aWxkKGxpbmVDb250ZW50LCBsaW5lQW5kTGluZUJveC5saW5lQm94LCBsaW5l
Qm94TG9naWNhbFJlY3QudG9wTGVmdCgpLCBjdXJyZW50TGluZUluZGV4KSk7CisgICAgZm9ybWF0
dGluZ1N0YXRlLmFkZEJveGVzKGlubGluZUNvbnRlbnRCdWlsZGVyLmJ1aWxkKGxpbmVDb250ZW50
LCBsaW5lQW5kTGluZUJveC5saW5lQm94LCBsaW5lQm94TG9naWNhbFJlY3QudG9wTGVmdCgpLCBj
dXJyZW50TGluZUluZGV4KSk7CiAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVCb3goV1RGTW92
ZShsaW5lQW5kTGluZUJveC5saW5lQm94KSk7CiAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmUo
bGluZUFuZExpbmVCb3gubGluZSk7CiAKQEAgLTU4OSwxNiArNTg5LDE2IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoKQogICAgIGlmICgh
bV9saW5lRGFtYWdlKSB7CiAgICAgICAgIC8vIE5vbi1lbXB0eSBmb3JtYXR0aW5nIHN0YXRlIHdp
dGggbm8gZGFtYWdlIG1lYW5zIHdlIGFyZSB0cnlpbmcgdG8gbGF5b3V0IGEgY2xlYW4gdHJlZS4K
ICAgICAgICAgLy8gRklYTUU6IEFkZCBBU1NFUlQoZm9ybWF0dGluZ1N0YXRlKCkuaW5saW5lSXRl
bXMoKS5pc0VtcHR5KCkpIHdoZW4gYWxsIHRoZSBjb2RlcGF0aHMgYXJlIGNvdmVyZWQuCi0gICAg
ICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmNsZWFyTGluZUFuZFJ1bnMoKTsKKyAgICAgICAgZm9ybWF0
dGluZ1N0YXRlKCkuY2xlYXJMaW5lQW5kQm94ZXMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAvLyBGSVhNRTogTGluZXMgYW5kIHJ1bnMgYXJlIG1vdmVkIG91dCB0byB1bmRlciBJbnRl
Z3JhdGlvbjo6SW5saW5lQ29udGVudCBpbiB0aGUgaW50ZWdyYXRpb24gY29kZXBhdGgsIHNvIGNs
ZWFyTGluZUFuZFJ1bnMgaXMgbm8tb3AuCisgICAgLy8gRklYTUU6IExpbmVzIGFuZCBib3hlcyBh
cmUgbW92ZWQgb3V0IHRvIHVuZGVyIEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50IGluIHRoZSBp
bnRlZ3JhdGlvbiBjb2RlcGF0aCwgc28gY2xlYXJMaW5lQW5kQm94ZXMgaXMgbm8tb3AuCiAgICAg
c3dpdGNoIChtX2xpbmVEYW1hZ2UtPnR5cGUoKSkgewogICAgIGNhc2UgSW5saW5lRGFtYWdlOjpU
eXBlOjpOZWVkc0NvbnRlbnRVcGRhdGVBbmRMaW5lTGF5b3V0OgogICAgICAgICBmb3JtYXR0aW5n
U3RhdGUoKS5jbGVhcklubGluZUl0ZW1zKCk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNh
c2UgSW5saW5lRGFtYWdlOjpUeXBlOjpOZWVkc0xpbmVMYXlvdXQ6Ci0gICAgICAgIGZvcm1hdHRp
bmdTdGF0ZSgpLmNsZWFyTGluZUFuZFJ1bnMoKTsKKyAgICAgICAgZm9ybWF0dGluZ1N0YXRlKCku
Y2xlYXJMaW5lQW5kQm94ZXMoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmxpbmVEYW1h
Z2U6OlR5cGU6Ok5lZWRzVmVydGljYWxBZGp1c3RtZW50OgogICAgIGNhc2UgSW5saW5lRGFtYWdl
OjpUeXBlOjpOZWVkc0hvcml6b250YWxBZGp1c3RtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBlMmIwZTg4MWJjY2VkNmVmZmNmODg4MzA2MDc4
NTUwYWI1OTI0M2VkLi45NjVlMDEyZGZmOGJlMjVlZTNhZjY2MGY3YmZiOTcyMWFhNTZhZDczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApAQCAtMjgsMTkg
KzI4LDE5IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNs
dWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Qm94LmgiCiAj
aW5jbHVkZSAiSW5saW5lRGlzcGxheUxpbmUuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVtLmgiCiAj
aW5jbHVkZSAiSW5saW5lTGluZUJveC5oIgotI2luY2x1ZGUgIklubGluZUxpbmVSdW4uaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBMYXlvdXQgewogCiB1c2luZyBJbmxpbmVJdGVtcyA9IFZlY3RvcjxJbmxpbmVJdGVtPjsKLXVz
aW5nIERpc3BsYXlMaW5lcyA9IFZlY3RvcjxJbmxpbmVEaXNwbGF5OjpMaW5lPjsKIHVzaW5nIElu
bGluZUxpbmVCb3hlcyA9IFZlY3RvcjxMaW5lQm94PjsKLXVzaW5nIElubGluZVJ1bnMgPSBWZWN0
b3I8UnVuPjsKK3VzaW5nIERpc3BsYXlMaW5lcyA9IFZlY3RvcjxJbmxpbmVEaXNwbGF5OjpMaW5l
PjsKK3VzaW5nIERpc3BsYXlCb3hlcyA9IFZlY3RvcjxJbmxpbmVEaXNwbGF5OjpCb3g+OwogCiAv
LyBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgaG9sZHMgdGhlIHN0YXRlIGZvciBhIHBhcnRpY3VsYXIg
aW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCB0cmVlLgogY2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0
YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7CkBAIC01MywzMCArNTMsMzAgQEAgcHVibGlj
OgogICAgIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5saW5lSXRlbXM7IH0KICAgICB2b2lkIGFkZElubGluZUl0ZW0oSW5saW5lSXRlbSYmIGlubGlu
ZUl0ZW0pIHsgbV9pbmxpbmVJdGVtcy5hcHBlbmQoV1RGTW92ZShpbmxpbmVJdGVtKSk7IH0KIAor
ICAgIGNvbnN0IElubGluZUxpbmVCb3hlcyYgbGluZUJveGVzKCkgY29uc3QgeyByZXR1cm4gbV9s
aW5lQm94ZXM7IH0KKyAgICB2b2lkIGFkZExpbmVCb3goTGluZUJveCYmIGxpbmVCb3gpIHsgbV9s
aW5lQm94ZXMuYXBwZW5kKFdURk1vdmUobGluZUJveCkpOyB9CisKICAgICBjb25zdCBEaXNwbGF5
TGluZXMmIGxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGluZXM7IH0KICAgICBEaXNw
bGF5TGluZXMmIGxpbmVzKCkgeyByZXR1cm4gbV9kaXNwbGF5TGluZXM7IH0KICAgICB2b2lkIGFk
ZExpbmUoY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYgbGluZSkgeyBtX2Rpc3BsYXlMaW5lcy5h
cHBlbmQobGluZSk7IH0KIAotICAgIGNvbnN0IElubGluZUxpbmVCb3hlcyYgbGluZUJveGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXM7IH0KLSAgICB2b2lkIGFkZExpbmVCb3goTGluZUJv
eCYmIGxpbmVCb3gpIHsgbV9saW5lQm94ZXMuYXBwZW5kKFdURk1vdmUobGluZUJveCkpOyB9Ci0K
LSAgICBjb25zdCBJbmxpbmVSdW5zJiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9ydW5zOyB9Ci0g
ICAgSW5saW5lUnVucyYgcnVucygpIHsgcmV0dXJuIG1fcnVuczsgfQotICAgIHZvaWQgYWRkUnVu
cyhJbmxpbmVSdW5zJiYgcnVucykgeyBtX3J1bnMuYXBwZW5kVmVjdG9yKFdURk1vdmUocnVucykp
OyB9CisgICAgY29uc3QgRGlzcGxheUJveGVzJiBib3hlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
cGxheUJveGVzOyB9CisgICAgRGlzcGxheUJveGVzJiBib3hlcygpIHsgcmV0dXJuIG1fZGlzcGxh
eUJveGVzOyB9CisgICAgdm9pZCBhZGRCb3hlcyhEaXNwbGF5Qm94ZXMmJiBib3hlcykgeyBtX2Rp
c3BsYXlCb3hlcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShib3hlcykpOyB9CiAKICAgICB2b2lkIHNl
dENsZWFyR2FwQWZ0ZXJMYXN0TGluZShJbmxpbmVMYXlvdXRVbml0IHZlcnRpY2FsR2FwKTsKICAg
ICBJbmxpbmVMYXlvdXRVbml0IGNsZWFyR2FwQWZ0ZXJMYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xlYXJHYXBBZnRlckxhc3RMaW5lOyB9CiAKICAgICB2b2lkIGNsZWFySW5saW5lSXRlbXMo
KSB7IG1faW5saW5lSXRlbXMuY2xlYXIoKTsgfQotICAgIHZvaWQgY2xlYXJMaW5lQW5kUnVucygp
OworICAgIHZvaWQgY2xlYXJMaW5lQW5kQm94ZXMoKTsKICAgICB2b2lkIHNocmlua1RvRml0KCk7
CiAKIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVhYmxlIGlucHV0IHRvIGxpbmUgbGF5b3V0LgogICAg
IElubGluZUl0ZW1zIG1faW5saW5lSXRlbXM7Ci0gICAgRGlzcGxheUxpbmVzIG1fZGlzcGxheUxp
bmVzOwogICAgIElubGluZUxpbmVCb3hlcyBtX2xpbmVCb3hlczsKLSAgICBJbmxpbmVSdW5zIG1f
cnVuczsKKyAgICBEaXNwbGF5TGluZXMgbV9kaXNwbGF5TGluZXM7CisgICAgRGlzcGxheUJveGVz
IG1fZGlzcGxheUJveGVzOwogICAgIElubGluZUxheW91dFVuaXQgbV9jbGVhckdhcEFmdGVyTGFz
dExpbmUgeyAwIH07CiB9OwogCkBAIC04NiwxMSArODYsMTEgQEAgaW5saW5lIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ1N0YXRlOjpzZXRDbGVhckdhcEFmdGVyTGFzdExpbmUoSW5saW5lTGF5b3V0VW5p
dCB2ZXIKICAgICBtX2NsZWFyR2FwQWZ0ZXJMYXN0TGluZSA9IHZlcnRpY2FsR2FwOwogfQogCi1p
bmxpbmUgdm9pZCBJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmNsZWFyTGluZUFuZFJ1bnMoKQoraW5s
aW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjpjbGVhckxpbmVBbmRCb3hlcygpCiB7Ci0g
ICAgbV9kaXNwbGF5TGluZXMuY2xlYXIoKTsKICAgICBtX2xpbmVCb3hlcy5jbGVhcigpOwotICAg
IG1fcnVucy5jbGVhcigpOworICAgIG1fZGlzcGxheUJveGVzLmNsZWFyKCk7CisgICAgbV9kaXNw
bGF5TGluZXMuY2xlYXIoKTsKICAgICBtX2NsZWFyR2FwQWZ0ZXJMYXN0TGluZSA9IHsgfTsKIH0K
IApAQCAtOTksNyArOTksNyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNo
cmlua1RvRml0KCkKICAgICBtX2lubGluZUl0ZW1zLnNocmlua1RvRml0KCk7CiAgICAgbV9kaXNw
bGF5TGluZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX2xpbmVCb3hlcy5zaHJpbmtUb0ZpdCgpOwot
ICAgIG1fcnVucy5zaHJpbmtUb0ZpdCgpOworICAgIG1fZGlzcGxheUJveGVzLnNocmlua1RvRml0
KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAppbmRleCBiYmJlZTM0YmU4MTFiMzc4
ZWVhZGIwYjIzZjE5YzEzZTE4MDg0YmExLi5lYTgxMjU0OGRjZDZjOWEwM2NiOGNmZmNlMmQ1NmVh
YzVjNmMyMTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCkBAIC0yNyw4ICsyNyw4IEBACiAK
ICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUgIklubGlu
ZURpc3BsYXlCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVtLmgiCi0jaW5jbHVkZSAiSW5saW5l
TGluZVJ1bi5oIgogI2luY2x1ZGUgIklubGluZVRleHRJdGVtLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsTGVmdDsgfQogICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxMZWZ0
KCkgKyBsb2dpY2FsV2lkdGgoKTsgfQogCi0gICAgICAgIGNvbnN0IDo6V2ViQ29yZTo6TGF5b3V0
OjpSdW46OkV4cGFuc2lvbiYgZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247
IH0KKyAgICAgICAgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94OjpFeHBhbnNpb24mIGV4cGFuc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9CiAKICAgICAgICAgYm9vbCBoYXNUcmFp
bGluZ1doaXRlc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3RyYWlsaW5nV2hpdGVzcGFjZVR5cGUg
IT0gVHJhaWxpbmdXaGl0ZXNwYWNlOjpOb25lOyB9CiAgICAgICAgIElubGluZUxheW91dFVuaXQg
dHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3RyYWlsaW5nV2hpdGVz
cGFjZVdpZHRoOyB9CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBleHBh
bmQoY29uc3QgSW5saW5lVGV4dEl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7
CiAgICAgICAgIHZvaWQgbW92ZUhvcml6b250YWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkg
eyBtX2xvZ2ljYWxMZWZ0ICs9IG9mZnNldDsgfQogICAgICAgICB2b2lkIHNocmlua0hvcml6b250
YWxseShJbmxpbmVMYXlvdXRVbml0IHdpZHRoKSB7IG1fbG9naWNhbFdpZHRoIC09IHdpZHRoOyB9
Ci0gICAgICAgIHZvaWQgc2V0RXhwYW5zaW9uKDo6V2ViQ29yZTo6TGF5b3V0OjpSdW46OkV4cGFu
c2lvbiBleHBhbnNpb24pIHsgbV9leHBhbnNpb24gPSBleHBhbnNpb247IH0KKyAgICAgICAgdm9p
ZCBzZXRFeHBhbnNpb24oSW5saW5lRGlzcGxheTo6Qm94OjpFeHBhbnNpb24gZXhwYW5zaW9uKSB7
IG1fZXhwYW5zaW9uID0gZXhwYW5zaW9uOyB9CiAgICAgICAgIHZvaWQgc2V0TmVlZHNIeXBoZW4o
SW5saW5lTGF5b3V0VW5pdCBoeXBoZW5Mb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIGVudW0gY2xh
c3MgVHJhaWxpbmdXaGl0ZXNwYWNlIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFRyYWlsaW5nV2hpdGVzcGFjZSBtX3RyYWlsaW5nV2hpdGVzcGFjZVR5cGUgeyBUcmFpbGlu
Z1doaXRlc3BhY2U6Ok5vbmUgfTsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX3RyYWlsaW5n
V2hpdGVzcGFjZVdpZHRoIHsgMCB9OwogICAgICAgICBzdGQ6Om9wdGlvbmFsPFRleHQ+IG1fdGV4
dENvbnRlbnQ7Ci0gICAgICAgIDo6V2ViQ29yZTo6TGF5b3V0OjpSdW46OkV4cGFuc2lvbiBtX2V4
cGFuc2lvbjsKKyAgICAgICAgSW5saW5lRGlzcGxheTo6Qm94OjpFeHBhbnNpb24gbV9leHBhbnNp
b247CiAgICAgfTsKICAgICB1c2luZyBSdW5MaXN0ID0gVmVjdG9yPFJ1biwgMTA+OwogICAgIGNv
bnN0IFJ1bkxpc3QmIHJ1bnMoKSBjb25zdCB7IHJldHVybiBtX3J1bnM7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdjOTA0
NTY5ODNmZmIzM2Y1ODZlYzAwMzVjM2JjZWZjNDViN2Y3NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUJveC5oCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUg
IklubGluZVJlY3QuaCIKKyNpbmNsdWRlICJMYXlvdXRCb3guaCIKKyNpbmNsdWRlICJUZXh0Rmxh
Z3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElubGluZURpc3BsYXkgewor
CitzdHJ1Y3QgQm94IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAg
c3RydWN0IFRleHQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgcHVibGljOgorICAgICAgICBUZXh0KHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbENvbnRlbnQsIFN0cmluZyBhZGp1c3RlZENvbnRlbnRUb1Jl
bmRlciA9IFN0cmluZygpLCBib29sIGhhc0h5cGhlbiA9IGZhbHNlKTsKKworICAgICAgICBzaXpl
X3Qgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CisgICAgICAgIHNpemVfdCBlbmQo
KSBjb25zdCB7IHJldHVybiBzdGFydCgpICsgbGVuZ3RoKCk7IH0KKyAgICAgICAgc2l6ZV90IGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIFN0cmluZ1ZpZXcgb3Jp
Z2luYWxDb250ZW50KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nVmlldyhtX29yaWdpbmFsQ29udGVu
dCkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuZ3RoKTsgfQorICAgICAgICBTdHJpbmdWaWV3IHJl
bmRlcmVkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIu
aXNOdWxsKCkgPyBvcmlnaW5hbENvbnRlbnQoKSA6IG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXI7
IH0KKworICAgICAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzSHlwaGVu
OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBzaXplX3QgbV9zdGFydCB7IDAgfTsKKyAgICAg
ICAgc2l6ZV90IG1fbGVuZ3RoIHsgMCB9OworICAgICAgICBib29sIG1faGFzSHlwaGVuIHsgZmFs
c2UgfTsKKyAgICAgICAgU3RyaW5nIG1fb3JpZ2luYWxDb250ZW50OworICAgICAgICBTdHJpbmcg
bV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlcjsKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBUeXBl
IHsKKyAgICAgICAgVGV4dCwKKyAgICAgICAgU29mdExpbmVCcmVhaywKKyAgICAgICAgTGluZUJy
ZWFrQm94LAorICAgICAgICBBdG9taWNJbmxpbmVMZXZlbEJveCwKKyAgICAgICAgTm9uUm9vdElu
bGluZUJveCwKKyAgICAgICAgUm9vdElubGluZUJveCwKKyAgICAgICAgR2VuZXJpY0lubGluZUxl
dmVsQm94CisgICAgfTsKKyAgICBzdHJ1Y3QgRXhwYW5zaW9uOworICAgIEJveChzaXplX3QgbGlu
ZUluZGV4LCBUeXBlLCBjb25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6SW5saW5lUmVj
dCYsIGNvbnN0IExheW91dDo6SW5saW5lUmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lvbiwgc3Rk
OjpvcHRpb25hbDxUZXh0PiA9IHN0ZDo6bnVsbG9wdCwgYm9vbCBoYXNDb250ZW50ID0gdHJ1ZSk7
CisKKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpUZXh0
OyB9CisgICAgYm9vbCBpc1NvZnRMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
VHlwZTo6U29mdExpbmVCcmVhazsgfQorICAgIGJvb2wgaXNMaW5lQnJlYWtCb3goKSBjb25zdCB7
IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TGluZUJyZWFrQm94OyB9CisgICAgYm9vbCBpc0xpbmVC
cmVhaygpIGNvbnN0IHsgcmV0dXJuIGlzU29mdExpbmVCcmVhaygpIHx8IGlzTGluZUJyZWFrQm94
KCk7IH0KKyAgICBib29sIGlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZTo6QXRvbWljSW5saW5lTGV2ZWxCb3g7IH0KKyAgICBib29sIGlzSW5saW5l
Qm94KCkgY29uc3QgeyByZXR1cm4gaXNOb25Sb290SW5saW5lQm94KCkgfHwgaXNSb290SW5saW5l
Qm94KCk7IH0KKyAgICBib29sIGlzTm9uUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBUeXBlOjpOb25Sb290SW5saW5lQm94OyB9CisgICAgYm9vbCBpc1Jvb3RJbmxpbmVC
b3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsgfQorICAg
IGJvb2wgaXNHZW5lcmljSW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
VHlwZTo6R2VuZXJpY0lubGluZUxldmVsQm94OyB9CisgICAgYm9vbCBpc0lubGluZUxldmVsQm94
KCkgY29uc3QgeyByZXR1cm4gaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIHx8IGlzTGluZUJyZWFr
Qm94KCkgfHwgaXNJbmxpbmVCb3goKSB8fCBpc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgpOyB9Cisg
ICAgYm9vbCBpc05vblJvb3RJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5saW5l
TGV2ZWxCb3goKSAmJiAhaXNSb290SW5saW5lQm94KCk7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ29udGVudDsgfQorCisgICAgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBsb2dp
Y2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3Q7IH0KKyAgICBjb25zdCBMYXlv
dXQ6OklubGluZVJlY3QmIGlua092ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9pbmtPdmVyZmxv
dzsgfQorCisgICAgTGF5b3V0OjpJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7
IHJldHVybiBsb2dpY2FsUmVjdCgpLnRvcCgpOyB9CisgICAgTGF5b3V0OjpJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmJvdHRvbSgp
OyB9CisgICAgTGF5b3V0OjpJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gbG9naWNhbFJlY3QoKS5sZWZ0KCk7IH0KKyAgICBMYXlvdXQ6OklubGluZUxheW91dFVu
aXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5yaWdodCgpOyB9
CisKKyAgICBMYXlvdXQ6OklubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbG9naWNhbFJlY3QoKS53aWR0aCgpOyB9CisgICAgTGF5b3V0OjpJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmhlaWdodCgp
OyB9CisKKyAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KExheW91dDo6SW5saW5lTGF5b3V0VW5pdCBv
ZmZzZXQpIHsgbV9sb2dpY2FsUmVjdC5tb3ZlVmVydGljYWxseShvZmZzZXQpOyB9CisgICAgdm9p
ZCBhZGp1c3RJbmtPdmVyZmxvdyhjb25zdCBMYXlvdXQ6OklubGluZVJlY3QmIGNoaWxkQm9yZGVy
Qm94KSB7IHJldHVybiBtX2lua092ZXJmbG93LmV4cGFuZFRvQ29udGFpbihjaGlsZEJvcmRlckJv
eCk7IH0KKworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHQoKSB7IHJldHVybiBtX3RleHQ7
IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0OyB9CisKKyAgICBzdHJ1Y3QgRXhwYW5zaW9uIHsKKyAgICAgICAgRXhwYW5zaW9uQmVo
YXZpb3IgYmVoYXZpb3IgeyBEZWZhdWx0RXhwYW5zaW9uIH07CisgICAgICAgIExheW91dDo6SW5s
aW5lTGF5b3V0VW5pdCBob3Jpem9udGFsRXhwYW5zaW9uIHsgMCB9OworICAgIH07CisgICAgRXhw
YW5zaW9uIGV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9CisKKyAgICBj
b25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94
OyB9CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbGF5b3V0
Qm94KCkuc3R5bGUoKTsgfQorCisgICAgc2l6ZV90IGxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGluZUluZGV4OyB9CisKK3ByaXZhdGU6CisgICAgY29uc3Qgc2l6ZV90IG1fbGluZUluZGV4
IHsgMCB9OworICAgIGNvbnN0IFR5cGUgbV90eXBlIHsgVHlwZTo6R2VuZXJpY0lubGluZUxldmVs
Qm94IH07CisgICAgV2Vha1B0cjxjb25zdCBMYXlvdXQ6OkJveD4gbV9sYXlvdXRCb3g7CisgICAg
TGF5b3V0OjpJbmxpbmVSZWN0IG1fbG9naWNhbFJlY3Q7CisgICAgTGF5b3V0OjpJbmxpbmVSZWN0
IG1faW5rT3ZlcmZsb3c7CisgICAgYm9vbCBtX2hhc0NvbnRlbnQgeyB0cnVlIH07CisgICAgRXhw
YW5zaW9uIG1fZXhwYW5zaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dD4gbV90ZXh0OworfTsK
KworaW5saW5lIEJveDo6Qm94KHNpemVfdCBsaW5lSW5kZXgsIFR5cGUgdHlwZSwgY29uc3QgTGF5
b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBsb2dpY2FsUmVj
dCwgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFu
c2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0PiB0ZXh0LCBib29sIGhhc0NvbnRlbnQpCisgICAgOiBt
X2xpbmVJbmRleChsaW5lSW5kZXgpCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fbGF5b3V0
Qm94KG1ha2VXZWFrUHRyKGxheW91dEJveCkpCisgICAgLCBtX2xvZ2ljYWxSZWN0KGxvZ2ljYWxS
ZWN0KQorICAgICwgbV9pbmtPdmVyZmxvdyhpbmtPdmVyZmxvdykKKyAgICAsIG1faGFzQ29udGVu
dChoYXNDb250ZW50KQorICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQorICAgICwgbV90ZXh0
KHRleHQpCit7Cit9CisKK2lubGluZSBCb3g6OlRleHQ6OlRleHQoc2l6ZV90IHN0YXJ0LCBzaXpl
X3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3RyaW5nIGFkanVzdGVk
Q29udGVudFRvUmVuZGVyLCBib29sIGhhc0h5cGhlbikKKyAgICA6IG1fc3RhcnQoc3RhcnQpCisg
ICAgLCBtX2xlbmd0aChsZW5ndGgpCisgICAgLCBtX2hhc0h5cGhlbihoYXNIeXBoZW4pCisgICAg
LCBtX29yaWdpbmFsQ29udGVudChvcmlnaW5hbENvbnRlbnQpCisgICAgLCBtX2FkanVzdGVkQ29u
dGVudFRvUmVuZGVyKGFkanVzdGVkQ29udGVudFRvUmVuZGVyKQoreworfQorCit9Cit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lTGluZVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVMaW5lUnVuLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OWFhMjAzNjQ2YzU5ZWQwNDIzODk3MmEwN2Q3OGJjOGIy
NTM2ZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVMaW5lUnVuLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0K
LSNpbmNsdWRlICJJbmxpbmVSZWN0LmgiCi0jaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5jbHVk
ZSAiVGV4dEZsYWdzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMYXlvdXQg
ewotCi1zdHJ1Y3QgUnVuIHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgc3RydWN0IFRleHQgewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
Ci0gICAgcHVibGljOgotICAgICAgICBUZXh0KHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IGxlbmd0
aCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbENvbnRlbnQsIFN0cmluZyBhZGp1c3RlZENvbnRlbnRU
b1JlbmRlciA9IFN0cmluZygpLCBib29sIGhhc0h5cGhlbiA9IGZhbHNlKTsKLQotICAgICAgICBz
aXplX3Qgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9Ci0gICAgICAgIHNpemVfdCBl
bmQoKSBjb25zdCB7IHJldHVybiBzdGFydCgpICsgbGVuZ3RoKCk7IH0KLSAgICAgICAgc2l6ZV90
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgICAgIFN0cmluZ1ZpZXcg
b3JpZ2luYWxDb250ZW50KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nVmlldyhtX29yaWdpbmFsQ29u
dGVudCkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuZ3RoKTsgfQotICAgICAgICBTdHJpbmdWaWV3
IHJlbmRlcmVkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5k
ZXIuaXNOdWxsKCkgPyBvcmlnaW5hbENvbnRlbnQoKSA6IG1fYWRqdXN0ZWRDb250ZW50VG9SZW5k
ZXI7IH0KLQotICAgICAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzSHlw
aGVuOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBzaXplX3QgbV9zdGFydCB7IDAgfTsKLSAg
ICAgICAgc2l6ZV90IG1fbGVuZ3RoIHsgMCB9OwotICAgICAgICBib29sIG1faGFzSHlwaGVuIHsg
ZmFsc2UgfTsKLSAgICAgICAgU3RyaW5nIG1fb3JpZ2luYWxDb250ZW50OwotICAgICAgICBTdHJp
bmcgbV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlcjsKLSAgICB9OwotCi0gICAgZW51bSBjbGFzcyBU
eXBlIHsKLSAgICAgICAgVGV4dCwKLSAgICAgICAgU29mdExpbmVCcmVhaywKLSAgICAgICAgTGlu
ZUJyZWFrQm94LAotICAgICAgICBBdG9taWNJbmxpbmVMZXZlbEJveCwKLSAgICAgICAgTm9uUm9v
dElubGluZUJveCwKLSAgICAgICAgUm9vdElubGluZUJveCwKLSAgICAgICAgR2VuZXJpY0lubGlu
ZUxldmVsQm94Ci0gICAgfTsKLSAgICBzdHJ1Y3QgRXhwYW5zaW9uOwotICAgIFJ1bihzaXplX3Qg
bGluZUluZGV4LCBUeXBlLCBjb25zdCBCb3gmLCBjb25zdCBJbmxpbmVSZWN0JiwgY29uc3QgSW5s
aW5lUmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0PiA9IHN0
ZDo6bnVsbG9wdCwgYm9vbCBoYXNDb250ZW50ID0gdHJ1ZSk7Ci0KLSAgICBib29sIGlzVGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpUZXh0OyB9Ci0gICAgYm9vbCBpc1NvZnRM
aW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6U29mdExpbmVCcmVhazsg
fQotICAgIGJvb2wgaXNMaW5lQnJlYWtCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlw
ZTo6TGluZUJyZWFrQm94OyB9Ci0gICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJu
IGlzU29mdExpbmVCcmVhaygpIHx8IGlzTGluZUJyZWFrQm94KCk7IH0KLSAgICBib29sIGlzQXRv
bWljSW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QXRvbWlj
SW5saW5lTGV2ZWxCb3g7IH0KLSAgICBib29sIGlzSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
aXNOb25Sb290SW5saW5lQm94KCkgfHwgaXNSb290SW5saW5lQm94KCk7IH0KLSAgICBib29sIGlz
Tm9uUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpOb25Sb290
SW5saW5lQm94OyB9Ci0gICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsgfQotICAgIGJvb2wgaXNHZW5lcmljSW5saW5l
TGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6R2VuZXJpY0lubGluZUxl
dmVsQm94OyB9Ci0gICAgYm9vbCBpc0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gaXNB
dG9taWNJbmxpbmVMZXZlbEJveCgpIHx8IGlzTGluZUJyZWFrQm94KCkgfHwgaXNJbmxpbmVCb3go
KSB8fCBpc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgpOyB9Ci0gICAgYm9vbCBpc05vblJvb3RJbmxp
bmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5saW5lTGV2ZWxCb3goKSAmJiAhaXNSb290
SW5saW5lQm94KCk7IH0KLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
LQotICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29udGVudDsgfQot
Ci0gICAgY29uc3QgSW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xv
Z2ljYWxSZWN0OyB9Ci0gICAgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZsb3coKSBjb25zdCB7
IHJldHVybiBtX2lua092ZXJmbG93OyB9Ci0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxU
b3AoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLnRvcCgpOyB9Ci0gICAgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5ib3R0
b20oKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVy
biBsb2dpY2FsUmVjdCgpLmxlZnQoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFJp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5yaWdodCgpOyB9Ci0KLSAgICBJbmxp
bmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCku
d2lkdGgoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIGxvZ2ljYWxSZWN0KCkuaGVpZ2h0KCk7IH0KLQotICAgIHZvaWQgbW92ZVZlcnRpY2Fs
bHkoSW5saW5lTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV9sb2dpY2FsUmVjdC5tb3ZlVmVydGljYWxs
eShvZmZzZXQpOyB9Ci0gICAgdm9pZCBhZGp1c3RJbmtPdmVyZmxvdyhjb25zdCBJbmxpbmVSZWN0
JiBjaGlsZEJvcmRlckJveCkgeyByZXR1cm4gbV9pbmtPdmVyZmxvdy5leHBhbmRUb0NvbnRhaW4o
Y2hpbGRCb3JkZXJCb3gpOyB9Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgeyBy
ZXR1cm4gbV90ZXh0OyB9Ci0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxUZXh0PiYgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dDsgfQotCi0gICAgc3RydWN0IEV4cGFuc2lvbiB7Ci0gICAgICAg
IEV4cGFuc2lvbkJlaGF2aW9yIGJlaGF2aW9yIHsgRGVmYXVsdEV4cGFuc2lvbiB9OwotICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxFeHBhbnNpb24geyAwIH07Ci0gICAgfTsKLSAg
ICBFeHBhbnNpb24gZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0KLQot
ICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9
Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbGF5b3V0Qm94
KCkuc3R5bGUoKTsgfQotCi0gICAgc2l6ZV90IGxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGluZUluZGV4OyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3Qgc2l6ZV90IG1fbGluZUluZGV4IHsg
MCB9OwotICAgIGNvbnN0IFR5cGUgbV90eXBlIHsgVHlwZTo6R2VuZXJpY0lubGluZUxldmVsQm94
IH07Ci0gICAgV2Vha1B0cjxjb25zdCBMYXlvdXQ6OkJveD4gbV9sYXlvdXRCb3g7Ci0gICAgSW5s
aW5lUmVjdCBtX2xvZ2ljYWxSZWN0OwotICAgIElubGluZVJlY3QgbV9pbmtPdmVyZmxvdzsKLSAg
ICBib29sIG1faGFzQ29udGVudCB7IHRydWUgfTsKLSAgICBFeHBhbnNpb24gbV9leHBhbnNpb247
Ci0gICAgc3RkOjpvcHRpb25hbDxUZXh0PiBtX3RleHQ7Ci19OwotCi1pbmxpbmUgUnVuOjpSdW4o
c2l6ZV90IGxpbmVJbmRleCwgVHlwZSB0eXBlLCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94
LCBjb25zdCBJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCwgY29uc3QgSW5saW5lUmVjdCYgaW5rT3Zl
cmZsb3csIEV4cGFuc2lvbiBleHBhbnNpb24sIHN0ZDo6b3B0aW9uYWw8VGV4dD4gdGV4dCwgYm9v
bCBoYXNDb250ZW50KQotICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQotICAgICwgbV90eXBl
KHR5cGUpCi0gICAgLCBtX2xheW91dEJveChtYWtlV2Vha1B0cihsYXlvdXRCb3gpKQotICAgICwg
bV9sb2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKLSAgICAsIG1faW5rT3ZlcmZsb3coaW5rT3ZlcmZs
b3cpCi0gICAgLCBtX2hhc0NvbnRlbnQoaGFzQ29udGVudCkKLSAgICAsIG1fZXhwYW5zaW9uKGV4
cGFuc2lvbikKLSAgICAsIG1fdGV4dCh0ZXh0KQotewotfQotCi1pbmxpbmUgUnVuOjpUZXh0OjpU
ZXh0KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbENv
bnRlbnQsIFN0cmluZyBhZGp1c3RlZENvbnRlbnRUb1JlbmRlciwgYm9vbCBoYXNIeXBoZW4pCi0g
ICAgOiBtX3N0YXJ0KHN0YXJ0KQotICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICwgbV9oYXNI
eXBoZW4oaGFzSHlwaGVuKQotICAgICwgbV9vcmlnaW5hbENvbnRlbnQob3JpZ2luYWxDb250ZW50
KQotICAgICwgbV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlcihhZGp1c3RlZENvbnRlbnRUb1JlbmRl
cikKLXsKLX0KLQotfQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCBlZTNlYTlmZWQyNzgxMmVkNjk4Y2Q2YjBiM2JkMmY5MmRl
NTRjOTkzLi44OWY2OGEyZjkwYjFiOTU3MWQyOGJiNGNhZWQ5ZDUxZDNlNjU3ZmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE2Miw4ICsx
NjIsOCBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNl
bGxzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbgogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChjZWxsQm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0
dGluZ1N0YXRlZSA9IGxheW91dFN0YXRlKCkuZm9ybWF0dGluZ1N0YXRlRm9ySW5saW5lRm9ybWF0
dGluZ0NvbnRleHQoY2VsbEJveCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IHJ1biA6IGlubGluZUZvcm1hdHRpbmdTdGF0ZWUucnVucygpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bi5tb3ZlVmVydGljYWxseShpbnRyaW5zaWNQYWRkaW5nVG9wKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byYgYm94IDogaW5saW5lRm9ybWF0dGluZ1N0YXRl
ZS5ib3hlcygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC5tb3ZlVmVydGljYWxs
eShpbnRyaW5zaWNQYWRkaW5nVG9wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgbGluZSA6IGlubGluZUZvcm1hdHRpbmdTdGF0ZWUubGluZXMoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5lLm1vdmVWZXJ0aWNhbGx5KGludHJpbnNpY1BhZGRpbmdUb3ApOwog
ICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQu
Y3BwCmluZGV4IDczNmNkMDVkYWU4OTVkNzQ0YjgyNTAyYTRiNDI3M2M5ZGY1MWE4YzAuLjk4Mjlj
MzYyODE2YjRkNWM4YTNjN2Y1OTgxMDY4NGFmNWNjM2FlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnQuY3BwCkBAIC00MywyMyArNDMsMjMgQEAgSW5saW5lQ29udGVudDo6
SW5saW5lQ29udGVudChjb25zdCBMaW5lTGF5b3V0JiBsaW5lTGF5b3V0KQogCiBib29sIElubGlu
ZUNvbnRlbnQ6Omhhc0NvbnRlbnQoKSBjb25zdAogewotICAgIEFTU0VSVChydW5zLmlzRW1wdHko
KSB8fCBydW5zWzBdLmlzUm9vdElubGluZUJveCgpKTsKLSAgICByZXR1cm4gcnVucy5zaXplKCkg
PiAxOworICAgIEFTU0VSVChib3hlcy5pc0VtcHR5KCkgfHwgYm94ZXNbMF0uaXNSb290SW5saW5l
Qm94KCkpOworICAgIHJldHVybiBib3hlcy5zaXplKCkgPiAxOwogfTsKIAotV1RGOjpJdGVyYXRv
clJhbmdlPGNvbnN0IExheW91dDo6UnVuKj4gSW5saW5lQ29udGVudDo6cnVuc0ZvclJlY3QoY29u
c3QgTGF5b3V0UmVjdCYpIGNvbnN0CitXVEY6Okl0ZXJhdG9yUmFuZ2U8Y29uc3QgSW5saW5lRGlz
cGxheTo6Qm94Kj4gSW5saW5lQ29udGVudDo6Ym94ZXNGb3JSZWN0KGNvbnN0IExheW91dFJlY3Qm
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgZWZmaWNpZW50IGUuZy4gdXNp
bmcgbGluZSBib3hlcy4KLSAgICBpZiAocnVucy5pc0VtcHR5KCkpCisgICAgaWYgKGJveGVzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIHJldHVy
biB7ICZydW5zLmZpcnN0KCksICZydW5zLmxhc3QoKSArIDEgfTsKKyAgICByZXR1cm4geyAmYm94
ZXMuZmlyc3QoKSwgJmJveGVzLmxhc3QoKSArIDEgfTsKIH0KIAogSW5saW5lQ29udGVudDo6fklu
bGluZUNvbnRlbnQoKQogewogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkKCkpIHsK
LSAgICAgICAgZm9yIChhdXRvJiBydW4gOiBydW5zKQotICAgICAgICAgICAgVGV4dFBhaW50ZXI6
OnJlbW92ZUdseXBoRGlzcGxheUxpc3QocnVuKTsKKyAgICAgICAgZm9yIChhdXRvJiBib3ggOiBi
b3hlcykKKyAgICAgICAgICAgIFRleHRQYWludGVyOjpyZW1vdmVHbHlwaERpc3BsYXlMaXN0KGJv
eCk7CiAgICAgfQogfQogCkBAIC03OCw0NCArNzgsNDQgQEAgY29uc3QgUmVuZGVyQmxvY2tGbG93
JiBJbmxpbmVDb250ZW50Ojpjb250YWluaW5nQmxvY2soKSBjb25zdAogICAgIHJldHVybiBtX2xp
bmVMYXlvdXQtPmZsb3coKTsKIH0KIAotc2l6ZV90IElubGluZUNvbnRlbnQ6OmluZGV4Rm9yUnVu
KGNvbnN0IExheW91dDo6UnVuJiBydW4pIGNvbnN0CitzaXplX3QgSW5saW5lQ29udGVudDo6aW5k
ZXhGb3JCb3goY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gpIGNvbnN0CiB7Ci0gICAgYXV0
byBpbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oJnJ1biAtIHJ1bnMuYmVnaW4oKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoaW5kZXggPCBydW5zLnNpemUoKSk7CisgICAgYXV0byBpbmRleCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oJmJveCAtIGJveGVzLmJlZ2luKCkpOworICAgIFJFTEVBU0VfQVNT
RVJUKGluZGV4IDwgYm94ZXMuc2l6ZSgpKTsKICAgICByZXR1cm4gaW5kZXg7CiB9CiAKLWNvbnN0
IExheW91dDo6UnVuKiBJbmxpbmVDb250ZW50OjpmaXJzdFJ1bkZvckxheW91dEJveChjb25zdCBM
YXlvdXQ6OkJveCYgbGF5b3V0Qm94KSBjb25zdAorY29uc3QgSW5saW5lRGlzcGxheTo6Qm94KiBJ
bmxpbmVDb250ZW50OjpmaXJzdEJveEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5
b3V0Qm94KSBjb25zdAogewotICAgIGF1dG8gaW5kZXggPSBmaXJzdFJ1bkluZGV4Rm9yTGF5b3V0
Qm94KGxheW91dEJveCk7Ci0gICAgcmV0dXJuIGluZGV4ID8gJnJ1bnNbKmluZGV4XSA6IG51bGxw
dHI7CisgICAgYXV0byBpbmRleCA9IGZpcnN0Qm94SW5kZXhGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKKyAgICByZXR1cm4gaW5kZXggPyAmYm94ZXNbKmluZGV4XSA6IG51bGxwdHI7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBJbmxpbmVDb250ZW50OjpmaXJzdFJ1bkluZGV4Rm9yTGF5b3V0
Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gSW5saW5lQ29udGVudDo6Zmlyc3RCb3hJbmRleEZvckxheW91dEJveChjb25zdCBMYXlv
dXQ6OkJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIGNvbnN0ZXhwciBhdXRvIGNhY2hlVGhy
ZXNob2xkID0gMTY7CiAKLSAgICBpZiAocnVucy5zaXplKCkgPCBjYWNoZVRocmVzaG9sZCkgewot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJ1bnMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbaV07Ci0gICAgICAgICAgICBpZiAoJnJ1bi5sYXlvdXRC
b3goKSA9PSAmbGF5b3V0Qm94KQorICAgIGlmIChib3hlcy5zaXplKCkgPCBjYWNoZVRocmVzaG9s
ZCkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJveGVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBhdXRvJiBib3ggPSBib3hlc1tpXTsKKyAgICAgICAgICAgIGlmICgmYm94
LmxheW91dEJveCgpID09ICZsYXlvdXRCb3gpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2Zp
cnN0UnVuSW5kZXhDYWNoZSkgewotICAgICAgICBtX2ZpcnN0UnVuSW5kZXhDYWNoZSA9IG1ha2VV
bmlxdWU8Rmlyc3RSdW5JbmRleENhY2hlPigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJ1bnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbaV07
Ci0gICAgICAgICAgICBpZiAocnVuLmlzUm9vdElubGluZUJveCgpKQorICAgIGlmICghbV9maXJz
dEJveEluZGV4Q2FjaGUpIHsKKyAgICAgICAgbV9maXJzdEJveEluZGV4Q2FjaGUgPSBtYWtlVW5p
cXVlPEZpcnN0Qm94SW5kZXhDYWNoZT4oKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBib3hlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYXV0byYgYm94ID0gYm94ZXNbaV07
CisgICAgICAgICAgICBpZiAoYm94LmlzUm9vdElubGluZUJveCgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgbV9maXJzdFJ1bkluZGV4Q2FjaGUtPmFkZChydW4ubGF5
b3V0Qm94KCksIGkpOworICAgICAgICAgICAgbV9maXJzdEJveEluZGV4Q2FjaGUtPmFkZChib3gu
bGF5b3V0Qm94KCksIGkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBpdCA9IG1fZmly
c3RSdW5JbmRleENhY2hlLT5maW5kKGxheW91dEJveCk7Ci0gICAgaWYgKGl0ID09IG1fZmlyc3RS
dW5JbmRleENhY2hlLT5lbmQoKSkKKyAgICBhdXRvIGl0ID0gbV9maXJzdEJveEluZGV4Q2FjaGUt
PmZpbmQobGF5b3V0Qm94KTsKKyAgICBpZiAoaXQgPT0gbV9maXJzdEJveEluZGV4Q2FjaGUtPmVu
ZCgpKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIGl0LT52YWx1ZTsKQEAgLTEy
NywxMSArMTI3LDExIEBAIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBJbmxpbmVDb250ZW50Ojpub25S
b290SW5saW5lQm94SW5kZXhlc0ZvckxheW91dEJveChjb25zdCBMCiAKICAgICBpZiAoIW1faW5s
aW5lQm94SW5kZXhDYWNoZSkgewogICAgICAgICBtX2lubGluZUJveEluZGV4Q2FjaGUgPSBtYWtl
VW5pcXVlPElubGluZUJveEluZGV4Q2FjaGU+KCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcnVucy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgcnVuID0gcnVuc1tp
XTsKLSAgICAgICAgICAgIGlmICghcnVuLmlzTm9uUm9vdElubGluZUJveCgpKQorICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGJveGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBh
dXRvJiBib3ggPSBib3hlc1tpXTsKKyAgICAgICAgICAgIGlmICghYm94LmlzTm9uUm9vdElubGlu
ZUJveCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbV9pbmxpbmVC
b3hJbmRleENhY2hlLT5lbnN1cmUocnVuLmxheW91dEJveCgpLCBbJl0geworICAgICAgICAgICAg
bV9pbmxpbmVCb3hJbmRleENhY2hlLT5lbnN1cmUoYm94LmxheW91dEJveCgpLCBbJl0gewogICAg
ICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8c2l6ZV90PiB7IH07CiAgICAgICAgICAgICB9KS5p
dGVyYXRvci0+dmFsdWUuYXBwZW5kKGkpOwogICAgICAgICB9CkBAIC0xNTAsMTMgKzE1MCwxMyBA
QCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgSW5saW5lQ29udGVudDo6bm9uUm9vdElubGluZUJveElu
ZGV4ZXNGb3JMYXlvdXRCb3goY29uc3QgTAogCiB2b2lkIElubGluZUNvbnRlbnQ6OnJlbGVhc2VD
YWNoZXMoKQogewotICAgIG1fZmlyc3RSdW5JbmRleENhY2hlID0geyB9OworICAgIG1fZmlyc3RC
b3hJbmRleENhY2hlID0geyB9OwogICAgIG1faW5saW5lQm94SW5kZXhDYWNoZSA9IHsgfTsKIH0K
IAogdm9pZCBJbmxpbmVDb250ZW50OjpzaHJpbmtUb0ZpdCgpCiB7Ci0gICAgcnVucy5zaHJpbmtU
b0ZpdCgpOworICAgIGJveGVzLnNocmlua1RvRml0KCk7CiAgICAgbGluZXMuc2hyaW5rVG9GaXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oCmluZGV4IDlmYzBmMGZh
OWNhM2IzMTA3MmE3OWVkMWU0N2MwNGNjNzJmNDBlYzcuLjJjZmNmMmI2NDk3ZjI1ZDkyMDlhNTRj
ZDVjZTcwNzI0OTc5OWEyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgK
QEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQogCi0jaW5jbHVkZSAiSW5saW5lTGluZVJ1bi5oIgorI2luY2x1ZGUgIklubGluZURpc3BsYXlC
b3guaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmUuaCIKICNpbmNsdWRlIDx3dGYv
SXRlcmF0b3JSYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQzLDYgKzQzLDEw
IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogY2xhc3MgQm94OwogfQogCituYW1lc3BhY2UgSW5saW5l
RGlzcGxheSB7CitzdHJ1Y3QgQm94OworfSAKKwogbmFtZXNwYWNlIExheW91dEludGVncmF0aW9u
IHsKIAogY2xhc3MgTGluZUxheW91dDsKQEAgLTUxLDMwICs1NSwzMCBAQCBzdHJ1Y3QgSW5saW5l
Q29udGVudCA6IHB1YmxpYyBSZWZDb3VudGVkPElubGluZUNvbnRlbnQ+IHsKICAgICBzdGF0aWMg
UmVmPElubGluZUNvbnRlbnQ+IGNyZWF0ZShjb25zdCBMaW5lTGF5b3V0JiBsaW5lTGF5b3V0KSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IElubGluZUNvbnRlbnQobGluZUxheW91dCkpOyB9CiAgICAg
fklubGluZUNvbnRlbnQoKTsKIAotICAgIHVzaW5nIFJ1bnMgPSBWZWN0b3I8TGF5b3V0OjpSdW4+
OworICAgIHVzaW5nIEJveGVzID0gVmVjdG9yPElubGluZURpc3BsYXk6OkJveD47CiAgICAgdXNp
bmcgTGluZXMgPSBWZWN0b3I8TGluZT47CiAKLSAgICBSdW5zIHJ1bnM7CisgICAgQm94ZXMgYm94
ZXM7CiAgICAgTGluZXMgbGluZXM7CiAKICAgICBmbG9hdCBjbGVhckdhcEFmdGVyTGFzdExpbmUg
eyAwIH07CiAKICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdDsKICAgICAKLSAgICBjb25zdCBM
aW5lJiBsaW5lRm9yUnVuKGNvbnN0IExheW91dDo6UnVuJiBydW4pIGNvbnN0IHsgcmV0dXJuIGxp
bmVzW3J1bi5saW5lSW5kZXgoKV07IH0KLSAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8Y29uc3QgTGF5
b3V0OjpSdW4qPiBydW5zRm9yUmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CisgICAgY29u
c3QgTGluZSYgbGluZUZvckJveChjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmIGJveCkgY29uc3Qg
eyByZXR1cm4gbGluZXNbYm94LmxpbmVJbmRleCgpXTsgfQorICAgIFdURjo6SXRlcmF0b3JSYW5n
ZTxjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gqPiBib3hlc0ZvclJlY3QoY29uc3QgTGF5b3V0UmVj
dCYpIGNvbnN0OwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIGNvbnN0IExpbmVMYXlv
dXQmIGxpbmVMYXlvdXQoKSBjb25zdDsKICAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CiAgICAgY29uc3QgUmVuZGVy
QmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25zdDsKIAotICAgIHNpemVfdCBpbmRleEZv
clJ1bihjb25zdCBMYXlvdXQ6OlJ1biYpIGNvbnN0OworICAgIHNpemVfdCBpbmRleEZvckJveChj
b25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmKSBjb25zdDsKIAotICAgIGNvbnN0IExheW91dDo6UnVu
KiBmaXJzdFJ1bkZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OworICAgIGNv
bnN0IElubGluZURpc3BsYXk6OkJveCogZmlyc3RCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0
OjpCb3gmKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCB0cmF2
ZXJzZU5vblJvb3RJbmxpbmVCb3hlcyhjb25zdCBMYXlvdXQ6OkJveCYsIEZ1bmN0aW9uJiYpOwog
Ci0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpcnN0UnVuSW5kZXhGb3JMYXlvdXRCb3goY29u
c3QgTGF5b3V0OjpCb3gmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZmlyc3RC
b3hJbmRleEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OwogICAgIGNvbnN0
IFZlY3RvcjxzaXplX3Q+JiBub25Sb290SW5saW5lQm94SW5kZXhlc0ZvckxheW91dEJveChjb25z
dCBMYXlvdXQ6OkJveCYpIGNvbnN0OwogCiAgICAgdm9pZCByZWxlYXNlQ2FjaGVzKCk7CkBAIC04
NCw4ICs4OCw4IEBAIHByaXZhdGU6CiAKICAgICBXZWFrUHRyPGNvbnN0IExpbmVMYXlvdXQ+IG1f
bGluZUxheW91dDsKIAotICAgIHVzaW5nIEZpcnN0UnVuSW5kZXhDYWNoZSA9IFdlYWtIYXNoTWFw
PExheW91dDo6Qm94LCBzaXplX3Q+OwotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEZpcnN0
UnVuSW5kZXhDYWNoZT4gbV9maXJzdFJ1bkluZGV4Q2FjaGU7CisgICAgdXNpbmcgRmlyc3RCb3hJ
bmRleENhY2hlID0gV2Vha0hhc2hNYXA8TGF5b3V0OjpCb3gsIHNpemVfdD47CisgICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8Rmlyc3RCb3hJbmRleENhY2hlPiBtX2ZpcnN0Qm94SW5kZXhDYWNo
ZTsKIAogICAgIHVzaW5nIElubGluZUJveEluZGV4Q2FjaGUgPSBXZWFrSGFzaE1hcDxMYXlvdXQ6
OkJveCwgVmVjdG9yPHNpemVfdD4+OwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPElubGlu
ZUJveEluZGV4Q2FjaGU+IG1faW5saW5lQm94SW5kZXhDYWNoZTsKQEAgLTk0LDcgKzk4LDcgQEAg
cHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPiB2b2lkIElubGluZUNvbnRlbnQ6
OnRyYXZlcnNlTm9uUm9vdElubGluZUJveGVzKGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gs
IEZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgZm9yIChhdXRvIGluZGV4IDogbm9uUm9vdElu
bGluZUJveEluZGV4ZXNGb3JMYXlvdXRCb3gobGF5b3V0Qm94KSkKLSAgICAgICAgZnVuY3Rpb24o
cnVuc1tpbmRleF0pOworICAgICAgICBmdW5jdGlvbihib3hlc1tpbmRleF0pOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKaW5kZXgg
NWZhOTc0NWE0NDRiODVhYWMzZGM1MzkxMzQwMDI0MzdkNTY2NWFjMC4uMzEzM2QzYmRkZTUzMmI3
NzgxNmNjYzcxNDUyNjRkNDJiOTMxNzg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bklubGluZUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Qm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCi0jaW5jbHVkZSAiSW5saW5l
TGluZVJ1bi5oIgogI2luY2x1ZGUgIkxheW91dEJveEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5
b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25Jbmxp
bmVDb250ZW50LmgiCkBAIC02NSwxNiArNjUsMTYgQEAgSW5saW5lQ29udGVudEJ1aWxkZXI6Oklu
bGluZUNvbnRlbnRCdWlsZGVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93LCBjb24K
IAogdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6YnVpbGQoTGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nU3RhdGUmIGlubGluZUZvcm1hdHRpbmdTdGF0ZSwgSW5saW5lQ29udGVudCYgaW5saW5lQ29u
dGVudCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBuZWVkIGEgZGlmZmVyZW50
IGFwcHJvYWNoIHdpdGggcGFydGlhbCBsYXlvdXQgd2hlcmUgdGhlIGxheW91dCBjb2RlIG5lZWRz
IHRvIGtub3cgYWJvdXQgdGhlIHJ1bnMuCi0gICAgaW5saW5lQ29udGVudC5ydW5zID0gV1RGTW92
ZShpbmxpbmVGb3JtYXR0aW5nU3RhdGUucnVucygpKTsKKyAgICAvLyBGSVhNRTogVGhpcyBtaWdo
dCBuZWVkIGEgZGlmZmVyZW50IGFwcHJvYWNoIHdpdGggcGFydGlhbCBsYXlvdXQgd2hlcmUgdGhl
IGxheW91dCBjb2RlIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGJveGVzLgorICAgIGlubGluZUNv
bnRlbnQuYm94ZXMgPSBXVEZNb3ZlKGlubGluZUZvcm1hdHRpbmdTdGF0ZS5ib3hlcygpKTsKICAg
ICBjcmVhdGVEaXNwbGF5TGluZXMoaW5saW5lRm9ybWF0dGluZ1N0YXRlLCBpbmxpbmVDb250ZW50
KTsKIH0KIAogdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVzKExh
eW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUsIElubGlu
ZUNvbnRlbnQmIGlubGluZUNvbnRlbnQpIGNvbnN0CiB7CiAgICAgYXV0byYgbGluZXMgPSBpbmxp
bmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKTsKLSAgICBhdXRvJiBydW5zID0gaW5saW5lQ29udGVu
dC5ydW5zOwotICAgIHNpemVfdCBydW5JbmRleCA9IDA7CisgICAgYXV0byYgYm94ZXMgPSBpbmxp
bmVDb250ZW50LmJveGVzOworICAgIHNpemVfdCBib3hJbmRleCA9IDA7CiAgICAgaW5saW5lQ29u
dGVudC5saW5lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpbmVzLnNpemUoKSk7CiAgICAgZm9y
IChzaXplX3QgbGluZUluZGV4ID0gMDsgbGluZUluZGV4IDwgbGluZXMuc2l6ZSgpOyArK2xpbmVJ
bmRleCkgewogICAgICAgICBhdXRvJiBsaW5lID0gbGluZXNbbGluZUluZGV4XTsKQEAgLTgyLDMy
ICs4MiwzMiBAQCB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZXMo
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGlubAogICAgICAgICBpZiAoYXV0byBvdmVy
Zmxvd1dpZHRoID0gbGluZU92ZXJmbG93V2lkdGgobV9ibG9ja0Zsb3csIGxpbmUuY29udGVudExv
Z2ljYWxXaWR0aCgpKTsgb3ZlcmZsb3dXaWR0aCA+IHNjcm9sbGFibGVPdmVyZmxvd1JlY3Qud2lk
dGgoKSkKICAgICAgICAgICAgIHNjcm9sbGFibGVPdmVyZmxvd1JlY3Quc2V0V2lkdGgob3ZlcmZs
b3dXaWR0aCk7CiAKLSAgICAgICAgYXV0byBmaXJzdFJ1bkluZGV4ID0gcnVuSW5kZXg7CisgICAg
ICAgIGF1dG8gZmlyc3RCb3hJbmRleCA9IGJveEluZGV4OwogICAgICAgICBhdXRvIGxpbmVJbmtP
dmVyZmxvd1JlY3QgPSBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0OwotICAgICAgICAvLyBDb2xsZWN0
IG92ZXJmbG93IGZyb20gcnVucy4KLSAgICAgICAgZm9yICg7IHJ1bkluZGV4IDwgcnVucy5zaXpl
KCkgJiYgcnVuc1tydW5JbmRleF0ubGluZUluZGV4KCkgPT0gbGluZUluZGV4OyArK3J1bkluZGV4
KSB7Ci0gICAgICAgICAgICBhdXRvJiBydW4gPSBydW5zW3J1bkluZGV4XTsKKyAgICAgICAgLy8g
Q29sbGVjdCBvdmVyZmxvdyBmcm9tIGJveGVzLgorICAgICAgICBmb3IgKDsgYm94SW5kZXggPCBi
b3hlcy5zaXplKCkgJiYgYm94ZXNbYm94SW5kZXhdLmxpbmVJbmRleCgpID09IGxpbmVJbmRleDsg
Kytib3hJbmRleCkgeworICAgICAgICAgICAgYXV0byYgYm94ID0gYm94ZXNbYm94SW5kZXhdOwog
Ci0gICAgICAgICAgICBsaW5lSW5rT3ZlcmZsb3dSZWN0LnVuaXRlKHJ1bi5pbmtPdmVyZmxvdygp
KTsKKyAgICAgICAgICAgIGxpbmVJbmtPdmVyZmxvd1JlY3QudW5pdGUoYm94Lmlua092ZXJmbG93
KCkpOwogCi0gICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBydW4ubGF5b3V0Qm94KCk7Cisg
ICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBib3gubGF5b3V0Qm94KCk7CiAgICAgICAgICAg
ICBpZiAobGF5b3V0Qm94LmlzUmVwbGFjZWRCb3goKSkgewogICAgICAgICAgICAgICAgIC8vIFNp
bWlsYXIgdG8gTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkUmVwbGFjZWRDaGlsZE92ZXJmbG93Lgot
ICAgICAgICAgICAgICAgIGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4obV9ib3hUcmVl
LnJlbmRlcmVyRm9yTGF5b3V0Qm94KGxheW91dEJveCkpOwotICAgICAgICAgICAgICAgIGF1dG8g
cnVuTG9naWNhbFJlY3QgPSBydW4ubG9naWNhbFJlY3QoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IWJveC5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8g
Y2hpbGRJbmtPdmVyZmxvdyA9IGJveC5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0Rm9yUHJvcGFn
YXRpb24oJmJveC5wYXJlbnQoKS0+c3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxk
SW5rT3ZlcmZsb3cubW92ZShydW5Mb2dpY2FsUmVjdC5sZWZ0KCksIHJ1bkxvZ2ljYWxSZWN0LnRv
cCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJv
eD4obV9ib3hUcmVlLnJlbmRlcmVyRm9yTGF5b3V0Qm94KGxheW91dEJveCkpOworICAgICAgICAg
ICAgICAgIGF1dG8gYm94TG9naWNhbFJlY3QgPSBib3gubG9naWNhbFJlY3QoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIXJlbmRlcmVyLmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBjaGlsZElua092ZXJmbG93ID0gcmVuZGVyZXIubG9naWNhbFZpc3Vh
bE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9uKCZyZW5kZXJlci5wYXJlbnQoKS0+c3R5bGUoKSk7
CisgICAgICAgICAgICAgICAgICAgIGNoaWxkSW5rT3ZlcmZsb3cubW92ZShib3hMb2dpY2FsUmVj
dC5sZWZ0KCksIGJveExvZ2ljYWxSZWN0LnRvcCgpKTsKICAgICAgICAgICAgICAgICAgICAgbGlu
ZUlua092ZXJmbG93UmVjdC51bml0ZShjaGlsZElua092ZXJmbG93KTsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgYXV0byBjaGlsZFNjcm9sbGFibGVPdmVyZmxvdyA9IGJveC5s
b2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24oJmJveC5wYXJlbnQoKS0+c3R5
bGUoKSk7Ci0gICAgICAgICAgICAgICAgY2hpbGRTY3JvbGxhYmxlT3ZlcmZsb3cubW92ZShydW5M
b2dpY2FsUmVjdC5sZWZ0KCksIHJ1bkxvZ2ljYWxSZWN0LnRvcCgpKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGNoaWxkU2Nyb2xsYWJsZU92ZXJmbG93ID0gcmVuZGVyZXIubG9naWNhbExheW91dE92
ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9uKCZyZW5kZXJlci5wYXJlbnQoKS0+c3R5bGUoKSk7Cisg
ICAgICAgICAgICAgICAgY2hpbGRTY3JvbGxhYmxlT3ZlcmZsb3cubW92ZShib3hMb2dpY2FsUmVj
dC5sZWZ0KCksIGJveExvZ2ljYWxSZWN0LnRvcCgpKTsKICAgICAgICAgICAgICAgICBzY3JvbGxh
YmxlT3ZlcmZsb3dSZWN0LnVuaXRlKGNoaWxkU2Nyb2xsYWJsZU92ZXJmbG93KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBhdXRvIGxpbmVCb3hMb2dpY2FsUmVjdCA9IEZsb2F0
UmVjdCB7IGxpbmUubGluZUJveExvZ2ljYWxSZWN0KCkgfTsKLSAgICAgICAgYXV0byBydW5Db3Vu
dCA9IHJ1bkluZGV4IC0gZmlyc3RSdW5JbmRleDsKLSAgICAgICAgaW5saW5lQ29udGVudC5saW5l
cy5hcHBlbmQoeyBmaXJzdFJ1bkluZGV4LCBydW5Db3VudCwgbGluZUJveExvZ2ljYWxSZWN0LCBs
aW5lLmVuY2xvc2luZ1RvcEFuZEJvdHRvbSgpLnRvcCwgbGluZS5lbmNsb3NpbmdUb3BBbmRCb3R0
b20oKS5ib3R0b20sIHNjcm9sbGFibGVPdmVyZmxvd1JlY3QsIGxpbmVJbmtPdmVyZmxvd1JlY3Qs
IGxpbmUuYmFzZWxpbmUoKSwgbGluZS5jb250ZW50TG9naWNhbExlZnQoKSwgbGluZS5jb250ZW50
TG9naWNhbFdpZHRoKCkgfSk7CisgICAgICAgIGF1dG8gYm94Q291bnQgPSBib3hJbmRleCAtIGZp
cnN0Qm94SW5kZXg7CisgICAgICAgIGlubGluZUNvbnRlbnQubGluZXMuYXBwZW5kKHsgZmlyc3RC
b3hJbmRleCwgYm94Q291bnQsIGxpbmVCb3hMb2dpY2FsUmVjdCwgbGluZS5lbmNsb3NpbmdUb3BB
bmRCb3R0b20oKS50b3AsIGxpbmUuZW5jbG9zaW5nVG9wQW5kQm90dG9tKCkuYm90dG9tLCBzY3Jv
bGxhYmxlT3ZlcmZsb3dSZWN0LCBsaW5lSW5rT3ZlcmZsb3dSZWN0LCBsaW5lLmJhc2VsaW5lKCks
IGxpbmUuY29udGVudExvZ2ljYWxMZWZ0KCksIGxpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpIH0p
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oCmluZGV4IDM5MjY3M2U5ZWQzMWM3N2MxODAy
MzI2MmZjZTg5MDkwZTJmNWY3OGQuLjZkZmU2YmM5M2YxMWUzMDFjZmE5ZWU3NTE2ZjAzMzc0MThh
NmY2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25MaW5lLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIExh
eW91dEludGVncmF0aW9uIHsKIGNsYXNzIExpbmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIExpbmUoc2l6ZV90IGZpcnN0UnVuSW5kZXgsIHNpemVfdCBydW5D
b3VudCwgY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94UmVjdCwgZmxvYXQgZW5jbG9zaW5nQ29udGVu
dFRvcCwgZmxvYXQgZW5jbG9zaW5nQ29udGVudEJvdHRvbSwgY29uc3QgRmxvYXRSZWN0JiBzY3Jv
bGxhYmxlT3ZlcmZsb3csIGNvbnN0IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3csIGZsb2F0IGJhc2Vs
aW5lLCBmbG9hdCBjb250ZW50TGVmdCwgZmxvYXQgY29udGVudFdpZHRoKQotICAgICAgICA6IG1f
Zmlyc3RSdW5JbmRleChmaXJzdFJ1bkluZGV4KQotICAgICAgICAsIG1fcnVuQ291bnQocnVuQ291
bnQpCisgICAgTGluZShzaXplX3QgZmlyc3RCb3hJbmRleCwgc2l6ZV90IGJveENvdW50LCBjb25z
dCBGbG9hdFJlY3QmIGxpbmVCb3hSZWN0LCBmbG9hdCBlbmNsb3NpbmdDb250ZW50VG9wLCBmbG9h
dCBlbmNsb3NpbmdDb250ZW50Qm90dG9tLCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVPdmVy
ZmxvdywgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgZmxvYXQgYmFzZWxpbmUsIGZsb2F0
IGNvbnRlbnRMZWZ0LCBmbG9hdCBjb250ZW50V2lkdGgpCisgICAgICAgIDogbV9maXJzdEJveElu
ZGV4KGZpcnN0Qm94SW5kZXgpCisgICAgICAgICwgbV9ib3hDb3VudChib3hDb3VudCkKICAgICAg
ICAgLCBtX2xpbmVCb3hSZWN0KGxpbmVCb3hSZWN0KQogICAgICAgICAsIG1fZW5jbG9zaW5nQ29u
dGVudFRvcChlbmNsb3NpbmdDb250ZW50VG9wKQogICAgICAgICAsIG1fZW5jbG9zaW5nQ29udGVu
dEJvdHRvbShlbmNsb3NpbmdDb250ZW50Qm90dG9tKQpAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIHNpemVfdCBmaXJzdFJ1bkluZGV4KCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdFJ1bkluZGV4OyB9Ci0gICAgc2l6ZV90IHJ1bkNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9ydW5Db3VudDsgfQorICAgIHNpemVfdCBmaXJzdEJveEluZGV4KCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdEJveEluZGV4OyB9CisgICAgc2l6ZV90IGJveENvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9ib3hDb3VudDsgfQogCiAgICAgZmxvYXQgbGluZUJveFRvcCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGluZUJveFJlY3QueSgpOyB9CiAgICAgZmxvYXQgbGluZUJveEJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZUJveFJlY3QubWF4WSgpOyB9CkBAIC03MCw4ICs3MCw4IEBAIHB1YmxpYzoK
ICAgICBmbG9hdCBjb250ZW50V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRXaWR0aDsg
fQogCiBwcml2YXRlOgotICAgIHNpemVfdCBtX2ZpcnN0UnVuSW5kZXggeyAwIH07Ci0gICAgc2l6
ZV90IG1fcnVuQ291bnQgeyAwIH07CisgICAgc2l6ZV90IG1fZmlyc3RCb3hJbmRleCB7IDAgfTsK
KyAgICBzaXplX3QgbV9ib3hDb3VudCB7IDAgfTsKICAgICAvLyBUaGlzIGlzIGxpbmUgYm94IGdl
b21ldHJ5IChzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1pbmxpbmUtMy8jbGluZS1ib3gp
LgogICAgIEZsb2F0UmVjdCBtX2xpbmVCb3hSZWN0OwogICAgIC8vIEVuY2xvc2luZyB0b3AgYW5k
IGJvdHRvbSBpbmNsdWRlcyBhbGwgaW5saW5lIGxldmVsIGJveGVzIChib3JkZXIgYm94KSB2ZXJ0
aWNhbGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0
aC5oCmluZGV4IDRkZGQ0YWE0ZTlmMzFjZDliM2U3Njg3MDA0ODg3NGY2NzYxZjVkNDMuLjI4MmMy
ODMxMjg4YzRlYzAzMzI4MDVjNzhhMzA0ODE1YWY0N2QxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1v
ZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKQEAgLTk4LDIxICs5OCwyMSBAQCBw
dWJsaWM6CiAKICAgICBSdW5JdGVyYXRvck1vZGVyblBhdGggZmlyc3RSdW4oKSBjb25zdAogICAg
IHsKLSAgICAgICAgaWYgKCFsaW5lKCkucnVuQ291bnQoKSkKKyAgICAgICAgaWYgKCFsaW5lKCku
Ym94Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiB7ICptX2lubGluZUNvbnRlbnQgfTsKLSAg
ICAgICAgYXV0byBydW5JdGVyYXRvciA9IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCB7ICptX2lubGlu
ZUNvbnRlbnQsIGxpbmUoKS5maXJzdFJ1bkluZGV4KCkgfTsKLSAgICAgICAgaWYgKHJ1bkl0ZXJh
dG9yLnJ1bigpLmlzSW5saW5lQm94KCkpCisgICAgICAgIGF1dG8gcnVuSXRlcmF0b3IgPSBSdW5J
dGVyYXRvck1vZGVyblBhdGggeyAqbV9pbmxpbmVDb250ZW50LCBsaW5lKCkuZmlyc3RCb3hJbmRl
eCgpIH07CisgICAgICAgIGlmIChydW5JdGVyYXRvci5ib3goKS5pc0lubGluZUJveCgpKQogICAg
ICAgICAgICAgcnVuSXRlcmF0b3IudHJhdmVyc2VOZXh0TGVhZigpOwogICAgICAgICByZXR1cm4g
cnVuSXRlcmF0b3I7CiAgICAgfQogCiAgICAgUnVuSXRlcmF0b3JNb2Rlcm5QYXRoIGxhc3RSdW4o
KSBjb25zdAogICAgIHsKLSAgICAgICAgYXV0byBydW5Db3VudCA9IGxpbmUoKS5ydW5Db3VudCgp
OwotICAgICAgICBpZiAoIXJ1bkNvdW50KQorICAgICAgICBhdXRvIGJveENvdW50ID0gbGluZSgp
LmJveENvdW50KCk7CisgICAgICAgIGlmICghYm94Q291bnQpCiAgICAgICAgICAgICByZXR1cm4g
eyAqbV9pbmxpbmVDb250ZW50IH07Ci0gICAgICAgIGF1dG8gcnVuSXRlcmF0b3IgPSBSdW5JdGVy
YXRvck1vZGVyblBhdGggeyAqbV9pbmxpbmVDb250ZW50LCBsaW5lKCkuZmlyc3RSdW5JbmRleCgp
ICsgcnVuQ291bnQgLSAxIH07Ci0gICAgICAgIGlmIChydW5JdGVyYXRvci5ydW4oKS5pc0lubGlu
ZUJveCgpKQorICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gUnVuSXRlcmF0b3JNb2Rlcm5QYXRo
IHsgKm1faW5saW5lQ29udGVudCwgbGluZSgpLmZpcnN0Qm94SW5kZXgoKSArIGJveENvdW50IC0g
MSB9OworICAgICAgICBpZiAocnVuSXRlcmF0b3IuYm94KCkuaXNJbmxpbmVCb3goKSkKICAgICAg
ICAgICAgIHJ1bkl0ZXJhdG9yLnRyYXZlcnNlUHJldmlvdXNMZWFmKCk7CiAgICAgICAgIHJldHVy
biBydW5JdGVyYXRvcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmlu
ZGV4IDEwYzVlMTUwMWMyMDJkOWRiYTY0ZjJhZjIwZGFmNDIzOTBmY2QyN2EuLjhmN2MwMDdhMTVi
ZGJkNTMzZTg2ODIyYjQ1ODQ3ZjhmNTlkY2ExZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpsYXlvdXQoKQog
ICAgIHVwZGF0ZUZvcm1hdHRpbmdSb290R2VvbWV0cnlBbmRJbnZhbGlkYXRlKCk7CiAgICAgcHJl
cGFyZUZsb2F0aW5nU3RhdGUoKTsKIAotICAgIC8vIEZJWE1FOiBEbyBub3QgY2xlYXIgdGhlIGxp
bmVzIGFuZCBydW5zIGhlcmUgdW5jb25kaXRpb25hbGx5LCBidXQgY29uc3VsdCB3aXRoIHRoZSBk
YW1hZ2Ugb2JqZWN0IGluc3RlYWQuCisgICAgLy8gRklYTUU6IERvIG5vdCBjbGVhciB0aGUgbGlu
ZXMgYW5kIGJveGVzIGhlcmUgdW5jb25kaXRpb25hbGx5LCBidXQgY29uc3VsdCB3aXRoIHRoZSBk
YW1hZ2Ugb2JqZWN0IGluc3RlYWQuCiAgICAgbV9pbmxpbmVDb250ZW50ID0gbnVsbHB0cjsKICAg
ICBhdXRvJiByb290R2VvbWV0cnkgPSBtX2xheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KHJvb3RM
YXlvdXRCb3gpOwogICAgIGF1dG8gaW5saW5lRm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0IHsgcm9vdExheW91dEJveCwgbV9pbmxpbmVGb3JtYXR0aW5n
U3RhdGUsIG1fbGluZURhbWFnZS5nZXQoKSB9OwpAQCAtMzg3LDcgKzM4Nyw3IEBAIFRleHRSdW5J
dGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJU
ZXh0KSBjb25zdAogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byYgbGF5b3V0Qm94ID0g
bV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRlcmVyKHJlbmRlclRleHQpOwotICAgIGF1dG8gZmly
c3RJbmRleCA9IG1faW5saW5lQ29udGVudC0+Zmlyc3RSdW5JbmRleEZvckxheW91dEJveChsYXlv
dXRCb3gpOworICAgIGF1dG8gZmlyc3RJbmRleCA9IG1faW5saW5lQ29udGVudC0+Zmlyc3RCb3hJ
bmRleEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGlmICghZmlyc3RJbmRleCkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIApAQCAtNDAwLDcgKzQwMCw3IEBAIFJ1bkl0ZXJhdG9yIExpbmVMYXlv
dXQ6OnJ1bkZvcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KSBjb25zdAogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byYgbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91
dEJveEZvclJlbmRlcmVyKHJlbmRlckVsZW1lbnQpOwotICAgIGF1dG8gZmlyc3RJbmRleCA9IG1f
aW5saW5lQ29udGVudC0+Zmlyc3RSdW5JbmRleEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAg
IGF1dG8gZmlyc3RJbmRleCA9IG1faW5saW5lQ29udGVudC0+Zmlyc3RCb3hJbmRleEZvckxheW91
dEJveChsYXlvdXRCb3gpOwogICAgIGlmICghZmlyc3RJbmRleCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIApAQCAtNDI3LDggKzQyNyw4IEBAIExheW91dFJlY3QgTGluZUxheW91dDo6Zmlyc3RJbmxp
bmVCb3hSZWN0KGNvbnN0IFJlbmRlcklubGluZSYgcmVuZGVySW5saW5lKSBjb25zCiB7CiAgICAg
YXV0byYgbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRlcmVyKHJlbmRlcklu
bGluZSk7CiAKLSAgICBpZiAoYXV0byogcnVuID0gbV9pbmxpbmVDb250ZW50LT5maXJzdFJ1bkZv
ckxheW91dEJveChsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gTGF5b3V0Ojp0b0xheW91dFJl
Y3QocnVuLT5sb2dpY2FsUmVjdCgpKTsKKyAgICBpZiAoYXV0byogYm94ID0gbV9pbmxpbmVDb250
ZW50LT5maXJzdEJveEZvckxheW91dEJveChsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gTGF5
b3V0Ojp0b0xheW91dFJlY3QoYm94LT5sb2dpY2FsUmVjdCgpKTsKIAogICAgIHJldHVybiB7IH07
CiB9CkBAIC00OTgsMTQgKzQ5OCwxNCBAQCB2b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgYXV0byBw
YWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKICAgICBwYWludFJlY3QubW92ZUJ5KC1wYWludE9m
ZnNldCk7CiAKLSAgICBmb3IgKGF1dG8mIHJ1biA6IG1faW5saW5lQ29udGVudC0+cnVuc0ZvclJl
Y3QocGFpbnRSZWN0KSkgewotICAgICAgICBpZiAocnVuLmlzSW5saW5lQm94KCkpCisgICAgZm9y
IChhdXRvJiBib3ggOiBtX2lubGluZUNvbnRlbnQtPmJveGVzRm9yUmVjdChwYWludFJlY3QpKSB7
CisgICAgICAgIGlmIChib3guaXNJbmxpbmVCb3goKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAocnVuLnRleHQoKSkgewotICAgICAgICAgICAgcGFpbnRUZXh0UnVuVXNpbmdQ
aHlzaWNhbENvb3JkaW5hdGVzKHBhaW50SW5mbywgcGFpbnRPZmZzZXQsIHJ1bik7CisgICAgICAg
IGlmIChib3gudGV4dCgpKSB7CisgICAgICAgICAgICBwYWludFRleHRCb3hVc2luZ1BoeXNpY2Fs
Q29vcmRpbmF0ZXMocGFpbnRJbmZvLCBwYWludE9mZnNldCwgYm94KTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChhdXRvJiByZW5kZXJlciA9IG1fYm94VHJl
ZS5yZW5kZXJlckZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkpOyBpczxSZW5kZXJCb3g+KHJl
bmRlcmVyKSAmJiByZW5kZXJlci5pc1JlcGxhY2VkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8mIHJl
bmRlcmVyID0gbV9ib3hUcmVlLnJlbmRlcmVyRm9yTGF5b3V0Qm94KGJveC5sYXlvdXRCb3goKSk7
IGlzPFJlbmRlckJveD4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLmlzUmVwbGFjZWQoKSkgewogICAg
ICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcik7
CiAgICAgICAgICAgICBpZiAoIXJlbmRlckJveC5oYXNTZWxmUGFpbnRpbmdMYXllcigpICYmIHBh
aW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyQm94KSkKICAgICAgICAgICAgICAg
ICByZW5kZXJCb3gucGFpbnRBc0lubGluZUJsb2NrKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwpA
QCAtNTIzLDIzICs1MjMsMjMgQEAgYm9vbCBMaW5lTGF5b3V0OjpoaXRUZXN0KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGMKIAogICAgIGF1dG8m
IGlubGluZUNvbnRlbnQgPSAqbV9pbmxpbmVDb250ZW50OwogCi0gICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGRvIHNvbWV0aGluZyBlZmZpY2llbnQgdG8gZmluZCB0aGUgcnVuIHJhbmdlLgotICAg
IGZvciAoYXV0byYgcnVuIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShpbmxpbmVDb250ZW50LnJ1
bnMpKSB7Ci0gICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9ib3hUcmVlLnJlbmRlcmVyRm9yTGF5
b3V0Qm94KHJ1bi5sYXlvdXRCb3goKSk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGRvIHNv
bWV0aGluZyBlZmZpY2llbnQgdG8gZmluZCB0aGUgYm94IHJhbmdlLgorICAgIGZvciAoYXV0byYg
Ym94IDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShpbmxpbmVDb250ZW50LmJveGVzKSkgeworICAg
ICAgICBhdXRvJiByZW5kZXJlciA9IG1fYm94VHJlZS5yZW5kZXJlckZvckxheW91dEJveChib3gu
bGF5b3V0Qm94KCkpOwogCi0gICAgICAgIGlmICghcnVuLmlzUm9vdElubGluZUJveCgpICYmIGlz
PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJMYXll
ck1vZGVsT2JqZWN0PihyZW5kZXJlcikuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkKKyAgICAgICAg
aWYgKCFib3guaXNSb290SW5saW5lQm94KCkgJiYgaXM8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4o
cmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlcmVyKS5o
YXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
aWYgKHJ1bi5pc0F0b21pY0lubGluZUxldmVsQm94KCkpIHsKKyAgICAgICAgaWYgKGJveC5pc0F0
b21pY0lubGluZUxldmVsQm94KCkpIHsKICAgICAgICAgICAgIGlmIChyZW5kZXJlci5oaXRUZXN0
KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBhdXRvIHJ1blJlY3QgPSBMYXlvdXQ6OnRvTGF5b3V0UmVjdChy
dW4ubG9naWNhbFJlY3QoKSk7Ci0gICAgICAgIHJ1blJlY3QubW92ZUJ5KGFjY3VtdWxhdGVkT2Zm
c2V0KTsKKyAgICAgICAgYXV0byBib3hSZWN0ID0gTGF5b3V0Ojp0b0xheW91dFJlY3QoYm94Lmxv
Z2ljYWxSZWN0KCkpOworICAgICAgICBib3hSZWN0Lm1vdmVCeShhY2N1bXVsYXRlZE9mZnNldCk7
CiAKLSAgICAgICAgaWYgKCFsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMocnVuUmVjdCkp
CisgICAgICAgIGlmICghbG9jYXRpb25JbkNvbnRhaW5lci5pbnRlcnNlY3RzKGJveFJlY3QpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgZWxlbWVudFJlbmRlcmVyID0g
aXM8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVu
ZGVyZXIpIDogKnJlbmRlcmVyLnBhcmVudCgpOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIGJvb2wgTGlu
ZUxheW91dDo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBjCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAg
IHJlbmRlcmVyLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVy
LnBvaW50KCkgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKLSAgICAgICAgaWYg
KHJlc3VsdC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KHJlbmRlcmVyLm5vZGVGb3JIaXRU
ZXN0KCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIHJ1blJlY3QpID09IEhpdFRlc3RQ
cm9ncmVzczo6U3RvcCkKKyAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0
UmVzdWx0KHJlbmRlcmVyLm5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250
YWluZXIsIGJveFJlY3QpID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtNTcyLDEzICs1NzIsMTMgQEAgdm9pZCBMaW5lTGF5b3V0
OjpyZWxlYXNlQ2FjaGVzKCkKICAgICAgICAgbV9pbmxpbmVDb250ZW50LT5yZWxlYXNlQ2FjaGVz
KCk7CiB9CiAKLXZvaWQgTGluZUxheW91dDo6cGFpbnRUZXh0UnVuVXNpbmdQaHlzaWNhbENvb3Jk
aW5hdGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIGNvbnN0IExheW91dDo6UnVuJiBydW4pCit2b2lkIExpbmVMYXlvdXQ6OnBhaW50VGV4dEJv
eFVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmIHRleHRCb3gp
CiB7Ci0gICAgYXV0byYgc3R5bGUgPSBydW4uc3R5bGUoKTsKLSAgICBpZiAocnVuLnN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCisgICAgYXV0byYgc3R5bGUgPSB0
ZXh0Qm94LnN0eWxlKCk7CisgICAgaWYgKHRleHRCb3guc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgdGV4dENv
bnRlbnQgPSAqcnVuLnRleHQoKTsKKyAgICBhdXRvJiB0ZXh0Q29udGVudCA9ICp0ZXh0Qm94LnRl
eHQoKTsKICAgICBpZiAoIXRleHRDb250ZW50Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CiAK
QEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OnBhaW50VGV4dFJ1blVzaW5nUGh5
c2ljYWxDb29yZGluYXRlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29ucwogICAgIGF1dG8gcGh5
c2ljYWxQYWludE9mZnNldCA9IHBhaW50T2Zmc2V0OwogICAgIGlmICghYmxvY2tJc0hvcml6b250
YWxXcml0aW5nKSB7CiAgICAgICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoeSB0aGlzIHRyYW5z
bGF0ZSBpcyByZXF1aXJlZC4KLSAgICAgICAgcGh5c2ljYWxQYWludE9mZnNldC5tb3ZlKHsgMCwg
LXJ1bi5sb2dpY2FsUmVjdCgpLmhlaWdodCgpIH0pOworICAgICAgICBwaHlzaWNhbFBhaW50T2Zm
c2V0Lm1vdmUoeyAwLCAtdGV4dEJveC5sb2dpY2FsUmVjdCgpLmhlaWdodCgpIH0pOwogICAgIH0K
IAogICAgIGF1dG8gcGh5c2ljYWxSZWN0ID0gWyZdKGNvbnN0IGF1dG8mIHJlY3QpIC0+IEZsb2F0
UmVjdCB7CkBAIC01OTksMTQgKzU5OSwxNCBAQCB2b2lkIExpbmVMYXlvdXQ6OnBhaW50VGV4dFJ1
blVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29ucwogICAg
ICAgICByZXR1cm4gcmVjdDsKICAgICB9OwogCi0gICAgYXV0byB2aXN1YWxPdmVyZmxvd1JlY3Qg
PSBwaHlzaWNhbFJlY3QocnVuLmlua092ZXJmbG93KCkpOworICAgIGF1dG8gdmlzdWFsT3ZlcmZs
b3dSZWN0ID0gcGh5c2ljYWxSZWN0KHRleHRCb3guaW5rT3ZlcmZsb3coKSk7CiAKICAgICBhdXRv
IGRhbWFnZWRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CiAgICAgZGFtYWdlZFJlY3QubW92ZUJ5KC1w
aHlzaWNhbFBhaW50T2Zmc2V0KTsKICAgICBpZiAoZGFtYWdlZFJlY3QueSgpID4gdmlzdWFsT3Zl
cmZsb3dSZWN0Lm1heFkoKSB8fCBkYW1hZ2VkUmVjdC5tYXhZKCkgPCB2aXN1YWxPdmVyZmxvd1Jl
Y3QueSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBUZXh0Qm94UGFpbnRlciBwYWludGVyKCpt
X2lubGluZUNvbnRlbnQsIHJ1biwgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgVGV4dEJv
eFBhaW50ZXIgcGFpbnRlcigqbV9pbmxpbmVDb250ZW50LCB0ZXh0Qm94LCBwYWludEluZm8sIHBh
aW50T2Zmc2V0KTsKICAgICBwYWludGVyLnBhaW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuaAppbmRleCBlNjU2NTU1ZjE2NzIzNDE4MWY0Yjg1OGNlZjcwOGI1ZmIxZjQxNmNl
Li5jYjc2YjUyZmFkMTgzZTdjNWYwZGYwYmUwZGYwODMwNmJmMjM3MGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICBJbmxp
bmVDb250ZW50JiBlbnN1cmVJbmxpbmVDb250ZW50KCk7CiAgICAgdm9pZCB1cGRhdGVMYXlvdXRC
b3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYpOwogCi0gICAgdm9pZCBwYWludFRleHRSdW5V
c2luZ1BoeXNpY2FsQ29vcmRpbmF0ZXMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBjb25zdCBMYXlvdXQ6OlJ1biYpOworICAgIHZvaWQgcGFpbnRUZXh0Qm94VXNp
bmdQaHlzaWNhbENvb3JkaW5hdGVzKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94Jik7CiAKICAgICBMYXlvdXQ6OklubGlu
ZURhbWFnZSYgZW5zdXJlTGluZURhbWFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRp
b24uY3BwCmluZGV4IDk0MzVjNTAwNDZhZjNjNWQ2MWMzOGNlYTkzYWNiNTI3NDc5NWU5ZWMuLjky
NDg4YTJiY2U3ZmNhMzgwYWU3MjgyMzg4YWJlMDg0ZmRmMDFlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvblBhZ2luYXRpb24uY3BwCkBAIC0xMjcsOCArMTI3LDggQEAgc3RhdGljIFJlZjxJbmxpbmVD
b250ZW50PiBtYWtlQWRqdXN0ZWRDb250ZW50KGNvbnN0IElubGluZUNvbnRlbnQmIGlubGluZUNv
bnRlbnQKICAgICBhdXRvIGFkanVzdGVkTGluZSA9IFsmXShjb25zdCBMaW5lJiBsaW5lLCBmbG9h
dCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gTGluZSB7Ci0gICAgICAgICAgICBsaW5l
LmZpcnN0UnVuSW5kZXgoKSwKLSAgICAgICAgICAgIGxpbmUucnVuQ291bnQoKSwKKyAgICAgICAg
ICAgIGxpbmUuZmlyc3RCb3hJbmRleCgpLAorICAgICAgICAgICAgbGluZS5ib3hDb3VudCgpLAog
ICAgICAgICAgICAgbW92ZVZlcnRpY2FsbHkoeyBGbG9hdFBvaW50IHsgbGluZS5saW5lQm94TGVm
dCgpLCBsaW5lLmxpbmVCb3hUb3AoKSB9LCBGbG9hdFBvaW50IHsgbGluZS5saW5lQm94UmlnaHQo
KSwgbGluZS5saW5lQm94Qm90dG9tKCkgfSB9LCBvZmZzZXQpLAogICAgICAgICAgICAgbGluZS5l
bmNsb3NpbmdDb250ZW50VG9wKCkgKyBvZmZzZXQsCiAgICAgICAgICAgICBsaW5lLmVuY2xvc2lu
Z0NvbnRlbnRCb3R0b20oKSArIG9mZnNldCwKQEAgLTE0MCwxNiArMTQwLDE2IEBAIHN0YXRpYyBS
ZWY8SW5saW5lQ29udGVudD4gbWFrZUFkanVzdGVkQ29udGVudChjb25zdCBJbmxpbmVDb250ZW50
JiBpbmxpbmVDb250ZW50CiAgICAgICAgIH07CiAgICAgfTsKIAotICAgIGF1dG8gYWRqdXN0ZWRS
dW4gPSBbJl0oY29uc3QgTGF5b3V0OjpSdW4mIHJ1biwgZmxvYXQgb2Zmc2V0KQorICAgIGF1dG8g
YWRqdXN0ZWRCb3ggPSBbJl0oY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gsIGZsb2F0IG9m
ZnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBMYXlvdXQ6OlJ1biB7Ci0gICAgICAgICAgICBy
dW4ubGluZUluZGV4KCksCi0gICAgICAgICAgICBydW4udHlwZSgpLAotICAgICAgICAgICAgcnVu
LmxheW91dEJveCgpLAotICAgICAgICAgICAgbW92ZVZlcnRpY2FsbHkocnVuLmxvZ2ljYWxSZWN0
KCksIG9mZnNldCksCi0gICAgICAgICAgICBtb3ZlVmVydGljYWxseShydW4uaW5rT3ZlcmZsb3co
KSwgb2Zmc2V0KSwKLSAgICAgICAgICAgIHJ1bi5leHBhbnNpb24oKSwKLSAgICAgICAgICAgIHJ1
bi50ZXh0KCkKKyAgICAgICAgcmV0dXJuIElubGluZURpc3BsYXk6OkJveCB7CisgICAgICAgICAg
ICBib3gubGluZUluZGV4KCksCisgICAgICAgICAgICBib3gudHlwZSgpLAorICAgICAgICAgICAg
Ym94LmxheW91dEJveCgpLAorICAgICAgICAgICAgbW92ZVZlcnRpY2FsbHkoYm94LmxvZ2ljYWxS
ZWN0KCksIG9mZnNldCksCisgICAgICAgICAgICBtb3ZlVmVydGljYWxseShib3guaW5rT3ZlcmZs
b3coKSwgb2Zmc2V0KSwKKyAgICAgICAgICAgIGJveC5leHBhbnNpb24oKSwKKyAgICAgICAgICAg
IGJveC50ZXh0KCkKICAgICAgICAgfTsKICAgICB9OwogCkBAIC0xNTgsOCArMTU4LDggQEAgc3Rh
dGljIFJlZjxJbmxpbmVDb250ZW50PiBtYWtlQWRqdXN0ZWRDb250ZW50KGNvbnN0IElubGluZUNv
bnRlbnQmIGlubGluZUNvbnRlbnQKICAgICBmb3IgKHNpemVfdCBsaW5lSW5kZXggPSAwOyBsaW5l
SW5kZXggPCBpbmxpbmVDb250ZW50LmxpbmVzLnNpemUoKTsgKytsaW5lSW5kZXgpCiAgICAgICAg
IGFkanVzdGVkQ29udGVudC0+bGluZXMuYXBwZW5kKGFkanVzdGVkTGluZShpbmxpbmVDb250ZW50
LmxpbmVzW2xpbmVJbmRleF0sIGFkanVzdG1lbnRzW2xpbmVJbmRleF0pKTsKIAotICAgIGZvciAo
YXV0byYgcnVuIDogaW5saW5lQ29udGVudC5ydW5zKQotICAgICAgICBhZGp1c3RlZENvbnRlbnQt
PnJ1bnMuYXBwZW5kKGFkanVzdGVkUnVuKHJ1biwgYWRqdXN0bWVudHNbcnVuLmxpbmVJbmRleCgp
XSkpOworICAgIGZvciAoYXV0byYgYm94IDogaW5saW5lQ29udGVudC5ib3hlcykKKyAgICAgICAg
YWRqdXN0ZWRDb250ZW50LT5ib3hlcy5hcHBlbmQoYWRqdXN0ZWRCb3goYm94LCBhZGp1c3RtZW50
c1tib3gubGluZUluZGV4KCldKSk7CiAKICAgICByZXR1cm4gYWRqdXN0ZWRDb250ZW50OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUnVuSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCmluZGV4IDkwYzQyMzA2OThiYWYyZjAw
NzE5OWZmNWRkNGQ3OTdmNzc0Yjk4NzAuLjYwMWM5MDRjM2JlMWRkNmY1MDY5NGMzYzdlYmU0YjJi
MmVjMmE3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKQEAgLTg2LDcg
Kzg2LDcgQEAgTGluZUl0ZXJhdG9yIFBhdGhSdW46OmxpbmUoKSBjb25zdAogICAgIH0KICNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICAsIFtdKGNvbnN0IFJ1bkl0ZXJh
dG9yTW9kZXJuUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gTGluZUl0ZXJhdG9yKExpbmVJ
dGVyYXRvck1vZGVyblBhdGgoKnBhdGgubV9pbmxpbmVDb250ZW50LCBwYXRoLnJ1bigpLmxpbmVJ
bmRleCgpKSk7CisgICAgICAgIHJldHVybiBMaW5lSXRlcmF0b3IoTGluZUl0ZXJhdG9yTW9kZXJu
UGF0aCgqcGF0aC5tX2lubGluZUNvbnRlbnQsIHBhdGguYm94KCkubGluZUluZGV4KCkpKTsKICAg
ICB9CiAjZW5kaWYKICAgICApOwpAQCAtMjU2LDE1ICsyNTYsMTUgQEAgVGV4dFJ1bkl0ZXJhdG9y
IHRleHRSdW5Gb3IoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogbGVnYWN5SW5saW5lVGV4dEJv
eCkKIH0KIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotVGV4dFJ1bkl0
ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgSW5saW5lQ29udGVudCYgY29udGVudCwgY29uc3QgTGF5
b3V0OjpSdW4mIHJ1bikKK1RleHRSdW5JdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IElubGluZUNv
bnRlbnQmIGNvbnRlbnQsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgYm94KQogewotICAgIHJl
dHVybiB0ZXh0UnVuRm9yKGNvbnRlbnQsIGNvbnRlbnQuaW5kZXhGb3JSdW4ocnVuKSk7CisgICAg
cmV0dXJuIHRleHRSdW5Gb3IoY29udGVudCwgY29udGVudC5pbmRleEZvckJveChib3gpKTsKIH0K
IAotVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgSW5saW5lQ29udGVudCYgY29udGVu
dCwgc2l6ZV90IHJ1bkluZGV4KQorVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgSW5s
aW5lQ29udGVudCYgY29udGVudCwgc2l6ZV90IGJveEluZGV4KQogewotICAgIEFTU0VSVChjb250
ZW50LnJ1bnNbcnVuSW5kZXhdLnRleHQoKSk7Ci0gICAgcmV0dXJuIHsgUnVuSXRlcmF0b3JNb2Rl
cm5QYXRoIHsgY29udGVudCwgcnVuSW5kZXggfSB9OworICAgIEFTU0VSVChjb250ZW50LmJveGVz
W2JveEluZGV4XS50ZXh0KCkpOworICAgIHJldHVybiB7IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCB7
IGNvbnRlbnQsIGJveEluZGV4IH0gfTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3IuaAppbmRleCBlOTg5NzA5MGUzYjlmNjY1YjI2NDc2ODY0NmFkNzY5YjAyN2I5OTg5
Li40MTIxZmRiMzU0OWJhODRmYzU0NmJiYTE2ZjM0ODcyMzg0YzljOTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIC8vIEZv
ciBpbnRlcm1lZGlhdGUgcG9ydGluZyBzdGVwcyBvbmx5LgogICAgIGNvbnN0IExlZ2FjeUlubGlu
ZUJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3Q7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCi0gICAgY29uc3QgTGF5b3V0OjpSdW4qIGlubGluZUJveCgpIGNvbnN0Owor
ICAgIGNvbnN0IElubGluZURpc3BsYXk6OkJveCogaW5saW5lQm94KCkgY29uc3Q7CiAjZW5kaWYK
ICAgICBSdW5JdGVyYXRvciBuZXh0T25MaW5lKCkgY29uc3Q7CiAgICAgUnVuSXRlcmF0b3IgcHJl
dmlvdXNPbkxpbmUoKSBjb25zdDsKQEAgLTIxMiw3ICsyMTIsNyBAQCBUZXh0UnVuSXRlcmF0b3Ig
Zmlyc3RUZXh0UnVuRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKIFRleHRSdW5JdGVyYXRvciBmaXJz
dFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0Jik7CiBUZXh0UnVuSXRlcmF0
b3IgdGV4dFJ1bkZvcihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94Kik7CiAjaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi1UZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bkZvcihjb25z
dCBJbmxpbmVDb250ZW50JiwgY29uc3QgTGF5b3V0OjpSdW4mKTsKK1RleHRSdW5JdGVyYXRvciB0
ZXh0UnVuRm9yKGNvbnN0IElubGluZUNvbnRlbnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gm
KTsKIFRleHRSdW5JdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IElubGluZUNvbnRlbnQmLCBzaXpl
X3QgcnVuSW5kZXgpOwogI2VuZGlmCiBUZXh0UnVuUmFuZ2UgdGV4dFJ1bnNGb3IoY29uc3QgUmVu
ZGVyVGV4dCYpOwpAQCAtMzAwLDExICszMDAsMTEgQEAgaW5saW5lIGNvbnN0IExlZ2FjeUlubGlu
ZUJveCogUGF0aFJ1bjo6bGVnYWN5SW5saW5lQm94KCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQotaW5saW5lIGNvbnN0IExheW91dDo6UnVuKiBQYXRo
UnVuOjppbmxpbmVCb3goKSBjb25zdAoraW5saW5lIGNvbnN0IElubGluZURpc3BsYXk6OkJveCog
UGF0aFJ1bjo6aW5saW5lQm94KCkgY29uc3QKIHsKICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8UnVuSXRlcmF0b3JNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZXVEY6OmdldDxSdW5JdGVyYXRvck1vZGVyblBhdGg+
KG1fcGF0aFZhcmlhbnQpLnJ1bigpOworICAgIHJldHVybiAmV1RGOjpnZXQ8UnVuSXRlcmF0b3JN
b2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KS5ib3goKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCmluZGV4IDIzMjMzYjA5ZWFj
MmMzOTU1M2E2NzYyMzJiZDVmMjc1MmE5MWRlYzQuLjJmM2FlMTc5ZjhhZGQwZjM1Y2M0YjUzYWZl
ZjE5YzFkZWI3NjFkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
TW9kZXJuUGF0aC5oCkBAIC00NCwyOCArNDQsMjggQEAgcHVibGljOgogICAgIH0KICAgICBSdW5J
dGVyYXRvck1vZGVyblBhdGgoY29uc3QgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6
ZV90IHN0YXJ0SW5kZXgpCiAgICAgICAgIDogbV9pbmxpbmVDb250ZW50KCZpbmxpbmVDb250ZW50
KQotICAgICAgICAsIG1fcnVuSW5kZXgoc3RhcnRJbmRleCkKKyAgICAgICAgLCBtX2JveEluZGV4
KHN0YXJ0SW5kZXgpCiAgICAgewogICAgIH0KIAotICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyBy
ZXR1cm4gISFydW4oKS50ZXh0KCk7IH0KKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJu
ICEhYm94KCkudGV4dCgpOyB9CiAKLSAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJu
IHJ1bigpLmxvZ2ljYWxSZWN0KCk7IH0KKyAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIGJveCgpLmxvZ2ljYWxSZWN0KCk7IH0KIAogICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgZGlyT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBydW4oKS5p
c0xpbmVCcmVhaygpOyB9CisgICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGJv
eCgpLmlzTGluZUJyZWFrKCk7IH0KIAogICAgIHVuc2lnbmVkIG1pbmltdW1DYXJldE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIGlzVGV4dCgpID8gc3RhcnQoKSA6IDA7IH0KICAgICB1bnNpZ25lZCBt
YXhpbXVtQ2FyZXRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBpc1RleHQoKSA/IGVuZCgpIDogMTsg
fQogCiAgICAgdW5zaWduZWQgY2hhciBiaWRpTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAK
LSAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRleHQoKS0+aGFzSHlw
aGVuKCk7IH0KLSAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdCB7IHJldHVybiBydW4oKS50ZXh0
KCktPm9yaWdpbmFsQ29udGVudCgpOyB9Ci0gICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdCB7IHJl
dHVybiBydW4oKS50ZXh0KCktPnN0YXJ0KCk7IH0KLSAgICB1bnNpZ25lZCBlbmQoKSBjb25zdCB7
IHJldHVybiBydW4oKS50ZXh0KCktPmVuZCgpOyB9Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gcnVuKCkudGV4dCgpLT5sZW5ndGgoKTsgfQorICAgIGJvb2wgaGFzSHlwaGVu
KCkgY29uc3QgeyByZXR1cm4gYm94KCkudGV4dCgpLT5oYXNIeXBoZW4oKTsgfQorICAgIFN0cmlu
Z1ZpZXcgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIGJveCgpLnRleHQoKS0+b3JpZ2luYWxDb250ZW50
KCk7IH0KKyAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIGJveCgpLnRleHQoKS0+
c3RhcnQoKTsgfQorICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGJveCgpLnRleHQo
KS0+ZW5kKCk7IH0KKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBib3goKS50
ZXh0KCktPmxlbmd0aCgpOyB9CiAKICAgICAvLyBGSVhNRTogTWFrZSBhIHNoYXJlZCBnZW5lcmlj
IHZlcnNpb24gb2YgdGhpcy4KICAgICBpbmxpbmUgdW5zaWduZWQgb2Zmc2V0Rm9yUG9zaXRpb24o
ZmxvYXQgeCkgY29uc3QKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICAgICAgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocyA9IHRydWU7Ci0gICAg
ICAgIHJldHVybiBydW4oKS5zdHlsZSgpLmZvbnRDYXNjYWRlKCkub2Zmc2V0Rm9yUG9zaXRpb24o
Y3JlYXRlVGV4dFJ1bihIeXBoZW5Nb2RlOjpJZ25vcmUpLCBsb2NhbFgsIGluY2x1ZGVQYXJ0aWFs
R2x5cGhzKTsKKyAgICAgICAgcmV0dXJuIGJveCgpLnN0eWxlKCkuZm9udENhc2NhZGUoKS5vZmZz
ZXRGb3JQb3NpdGlvbihjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGU6Oklnbm9yZSksIGxvY2FsWCwg
aW5jbHVkZVBhcnRpYWxHbHlwaHMpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBNYWtlIGEgc2hh
cmVkIGdlbmVyaWMgdmVyc2lvbiBvZiB0aGlzLgpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChyZWN0KCkueCgp
LCAwLCAwLCAwKTsKICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bihIeXBo
ZW5Nb2RlOjpJZ25vcmUpOwotICAgICAgICBydW4oKS5zdHlsZSgpLmZvbnRDYXNjYWRlKCkuYWRq
dXN0U2VsZWN0aW9uUmVjdEZvclRleHQodGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgZW5kT2Zm
c2V0KTsKKyAgICAgICAgYm94KCkuc3R5bGUoKS5mb250Q2FzY2FkZSgpLmFkanVzdFNlbGVjdGlv
blJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIDAsIGVuZE9mZnNldCk7CiAgICAg
ICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2Vs
ZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHRl
eHRSdW4ubHRyKCkpLm1heFgoKTsKICAgICB9CiAKQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICBzdGFydCgpLAogICAgICAgICAgICAgbGVu
Z3RoKCksCi0gICAgICAgICAgICBydW4oKS50ZXh0KCktPmhhc0h5cGhlbigpID8gcnVuKCkuc3R5
bGUoKS5oeXBoZW5TdHJpbmcoKS5sZW5ndGgoKSA6IDAsCi0gICAgICAgICAgICBydW4oKS5pc0xp
bmVCcmVhaygpCisgICAgICAgICAgICBib3goKS50ZXh0KCktPmhhc0h5cGhlbigpID8gYm94KCku
c3R5bGUoKS5oeXBoZW5TdHJpbmcoKS5sZW5ndGgoKSA6IDAsCisgICAgICAgICAgICBib3goKS5p
c0xpbmVCcmVhaygpCiAgICAgICAgIH07CiAgICAgfQogCkBAIC0xMTcsMjIgKzExNywyMiBAQCBw
dWJsaWM6CiAKICAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1
bigpLmxheW91dEJveCgpKTsKKyAgICAgICAgcmV0dXJuIG1faW5saW5lQ29udGVudC0+cmVuZGVy
ZXJGb3JMYXlvdXRCb3goYm94KCkubGF5b3V0Qm94KCkpOwogICAgIH0KIAogICAgIHZvaWQgdHJh
dmVyc2VOZXh0VGV4dFJ1bigpCiAgICAgewogICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOwotICAg
ICAgICBBU1NFUlQocnVuKCkudGV4dCgpKTsKKyAgICAgICAgQVNTRVJUKGJveCgpLnRleHQoKSk7
CiAKLSAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gcnVuKCkubGF5b3V0Qm94KCk7CisgICAgICAg
IGF1dG8mIGxheW91dEJveCA9IGJveCgpLmxheW91dEJveCgpOwogCiAgICAgICAgIHRyYXZlcnNl
TmV4dExlYWYoKTsKIAotICAgICAgICBpZiAoIWF0RW5kKCkgJiYgJmxheW91dEJveCAhPSAmcnVu
KCkubGF5b3V0Qm94KCkpCisgICAgICAgIGlmICghYXRFbmQoKSAmJiAmbGF5b3V0Qm94ICE9ICZi
b3goKS5sYXlvdXRCb3goKSkKICAgICAgICAgICAgIHNldEF0RW5kKCk7CiAKLSAgICAgICAgQVNT
RVJUKGF0RW5kKCkgfHwgcnVuKCkudGV4dCgpKTsKKyAgICAgICAgQVNTRVJUKGF0RW5kKCkgfHwg
Ym94KCkudGV4dCgpKTsKICAgICB9CiAKICAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW5JblRl
eHRPcmRlcigpCkBAIC0xNDUsMTEgKzE0NSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBB
U1NFUlQoIWF0RW5kKCkpOwogCi0gICAgICAgIGF1dG8gb2xkTGluZUluZGV4ID0gcnVuKCkubGlu
ZUluZGV4KCk7CisgICAgICAgIGF1dG8gb2xkTGluZUluZGV4ID0gYm94KCkubGluZUluZGV4KCk7
CiAKICAgICAgICAgdHJhdmVyc2VOZXh0TGVhZigpOwogCi0gICAgICAgIGlmICghYXRFbmQoKSAm
JiBvbGRMaW5lSW5kZXggIT0gcnVuKCkubGluZUluZGV4KCkpCisgICAgICAgIGlmICghYXRFbmQo
KSAmJiBvbGRMaW5lSW5kZXggIT0gYm94KCkubGluZUluZGV4KCkpCiAgICAgICAgICAgICBzZXRB
dEVuZCgpOwogICAgIH0KIApAQCAtMTU3LDExICsxNTcsMTEgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKIAotICAgICAgICBhdXRvIG9sZExpbmVJbmRleCA9IHJ1
bigpLmxpbmVJbmRleCgpOworICAgICAgICBhdXRvIG9sZExpbmVJbmRleCA9IGJveCgpLmxpbmVJ
bmRleCgpOwogCiAgICAgICAgIHRyYXZlcnNlUHJldmlvdXNMZWFmKCk7CiAKLSAgICAgICAgaWYg
KCFhdEVuZCgpICYmIG9sZExpbmVJbmRleCAhPSBydW4oKS5saW5lSW5kZXgoKSkKKyAgICAgICAg
aWYgKCFhdEVuZCgpICYmIG9sZExpbmVJbmRleCAhPSBib3goKS5saW5lSW5kZXgoKSkKICAgICAg
ICAgICAgIHNldEF0RW5kKCk7CiAgICAgfQogCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAgICB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUnVuSXRlcmF0b3JNb2Rlcm5QYXRoJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBtX3J1bkluZGV4
ID09IG90aGVyLm1fcnVuSW5kZXg7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUnVuSXRl
cmF0b3JNb2Rlcm5QYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50ID09
IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBtX2JveEluZGV4ID09IG90aGVyLm1fYm94SW5kZXg7
IH0KIAotICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX3J1bkluZGV4ID09IHJ1bnMo
KS5zaXplKCk7IH0KLSAgICBjb25zdCBMYXlvdXQ6OlJ1biYgcnVuKCkgY29uc3QgeyByZXR1cm4g
cnVucygpW21fcnVuSW5kZXhdOyB9CisgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym94SW5kZXggPT0gYm94ZXMoKS5zaXplKCk7IH0KKyAgICBjb25zdCBJbmxpbmVEaXNwbGF5OjpC
b3gmIGJveCgpIGNvbnN0IHsgcmV0dXJuIGJveGVzKClbbV9ib3hJbmRleF07IH0KIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTGluZUl0ZXJhdG9yTW9kZXJuUGF0aDsKQEAgLTE4OSwyOCAr
MTg5LDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOwogICAg
ICAgICBkbyB7Ci0gICAgICAgICAgICArK21fcnVuSW5kZXg7Ci0gICAgICAgIH0gd2hpbGUgKCFh
dEVuZCgpICYmIHJ1bigpLmlzSW5saW5lQm94KCkpOworICAgICAgICAgICAgKyttX2JveEluZGV4
OworICAgICAgICB9IHdoaWxlICghYXRFbmQoKSAmJiBib3goKS5pc0lubGluZUJveCgpKTsKICAg
ICB9CiAKICAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNMZWFmKCkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghYXRFbmQoKSk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIG1fcnVuSW5kZXggPSBt
X3J1bkluZGV4ID8gbV9ydW5JbmRleCAtIDEgOiBydW5zKCkuc2l6ZSgpOwotICAgICAgICB9IHdo
aWxlICghYXRFbmQoKSAmJiBydW4oKS5pc0lubGluZUJveCgpKTsKKyAgICAgICAgICAgIG1fYm94
SW5kZXggPSBtX2JveEluZGV4ID8gbV9ib3hJbmRleCAtIDEgOiBib3hlcygpLnNpemUoKTsKKyAg
ICAgICAgfSB3aGlsZSAoIWF0RW5kKCkgJiYgYm94KCkuaXNJbmxpbmVCb3goKSk7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXRBdEVuZCgpIHsgbV9ydW5JbmRleCA9IHJ1bnMoKS5zaXplKCk7IH0KKyAg
ICB2b2lkIHNldEF0RW5kKCkgeyBtX2JveEluZGV4ID0gYm94ZXMoKS5zaXplKCk7IH0KIAotICAg
IGNvbnN0IElubGluZUNvbnRlbnQ6OlJ1bnMmIHJ1bnMoKSBjb25zdCB7IHJldHVybiBtX2lubGlu
ZUNvbnRlbnQtPnJ1bnM7IH0KLSAgICBjb25zdCBMaW5lJiBsaW5lKCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVDb250ZW50LT5saW5lRm9yUnVuKHJ1bigpKTsgfQorICAgIGNvbnN0IElubGluZUNv
bnRlbnQ6OkJveGVzJiBib3hlcygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+Ym94
ZXM7IH0KKyAgICBjb25zdCBMaW5lJiBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250
ZW50LT5saW5lRm9yQm94KGJveCgpKTsgfQogCiAgICAgZW51bSBjbGFzcyBIeXBoZW5Nb2RlIHsg
SW5jbHVkZSwgSWdub3JlIH07CiAgICAgVGV4dFJ1biBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGUg
aHlwaGVuTW9kZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8mIHN0eWxlID0gcnVuKCkuc3R5
bGUoKTsKLSAgICAgICAgYXV0byBleHBhbnNpb24gPSBydW4oKS5leHBhbnNpb24oKTsKKyAgICAg
ICAgYXV0byYgc3R5bGUgPSBib3goKS5zdHlsZSgpOworICAgICAgICBhdXRvIGV4cGFuc2lvbiA9
IGJveCgpLmV4cGFuc2lvbigpOwogICAgICAgICBhdXRvIHJlY3QgPSB0aGlzLT5yZWN0KCk7CiAg
ICAgICAgIGF1dG8geFBvcyA9IHJlY3QueCgpIC0gKGxpbmUoKS5saW5lQm94TGVmdCgpICsgbGlu
ZSgpLmNvbnRlbnRMZWZ0KCkpOwogCkBAIC0yMjcsNyArMjI3LDcgQEAgcHJpdmF0ZToKICAgICB9
OwogCiAgICAgUmVmUHRyPGNvbnN0IElubGluZUNvbnRlbnQ+IG1faW5saW5lQ29udGVudDsKLSAg
ICBzaXplX3QgbV9ydW5JbmRleCB7IDAgfTsKKyAgICBzaXplX3QgbV9ib3hJbmRleCB7IDAgfTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCA0MmI3MzIyYjQ4ZDU0Nzk0MjU1YWY0YThkZjhkZTMx
NTFiNzQwNzk2Li41YWNiN2IzN2M5NTc5M2Q0OTk3Y2Q0MzU0ZmZjZWVjNmMwZDVlYWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBzaG93SW5saW5lVHJlZUFuZFJ1bnMo
VGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGMKIHsK
ICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5mb3JtYXR0aW5n
U3RhdGVGb3JJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nUm9vdCk7CiAg
ICAgYXV0byYgbGluZXMgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKTsKLSAgICBhdXRv
JiBydW5zID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLnJ1bnMoKTsKKyAgICBhdXRvJiBib3hlcyA9
IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5ib3hlcygpOwogCiAgICAgZm9yIChzaXplX3QgbGluZUlu
ZGV4ID0gMDsgbGluZUluZGV4IDwgbGluZXMuc2l6ZSgpOyArK2xpbmVJbmRleCkgewogICAgICAg
ICBhdXRvIGFkZFNwYWNpbmcgPSBbJl0gewpAQCAtNDA2LDExICs0MDYsMTEgQEAgdm9pZCBzaG93
SW5saW5lVHJlZUFuZFJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGMKICAgICAgICAgc3RyZWFtIDw8ICIgIElubGluZSBsZXZlbCBib3hlczoi
OwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKIAotICAgICAgICBhdXRvIG91dHB1dElubGlu
ZUxldmVsQm94ID0gWyZdKGNvbnN0IGF1dG8mIGlubGluZUxldmVsQm94UnVuKSB7CisgICAgICAg
IGF1dG8gb3V0cHV0SW5saW5lTGV2ZWxCb3ggPSBbJl0oY29uc3QgYXV0byYgaW5saW5lTGV2ZWxC
b3gpIHsKICAgICAgICAgICAgIGFkZFNwYWNpbmcoKTsKICAgICAgICAgICAgIHN0cmVhbSA8PCAi
ICAgICI7Ci0gICAgICAgICAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gaW5saW5lTGV2ZWxCb3hSdW4u
bG9naWNhbFJlY3QoKTsKLSAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVs
Qm94UnVuLmxheW91dEJveCgpOworICAgICAgICAgICAgYXV0byBsb2dpY2FsUmVjdCA9IGlubGlu
ZUxldmVsQm94LmxvZ2ljYWxSZWN0KCk7CisgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBp
bmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNB
dG9taWNJbmxpbmVMZXZlbEJveCgpKQogICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiQXRvbWlj
IGlubGluZSBsZXZlbCBib3giOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzTGlu
ZUJyZWFrQm94KCkpCkBAIC00MjQsMjkgKzQyNCwyOSBAQCB2b2lkIHNob3dJbmxpbmVUcmVlQW5k
UnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
YwogICAgICAgICAgICAgICAgIDw8ICIgc2l6ZSAoIiA8PCBsb2dpY2FsUmVjdC53aWR0aCgpIDw8
ICJ4IiA8PCBsb2dpY2FsUmVjdC5oZWlnaHQoKSA8PCAiKSI7CiAgICAgICAgICAgICBzdHJlYW0u
bmV4dExpbmUoKTsKICAgICAgICAgfTsKLSAgICAgICAgZm9yIChhdXRvJiBydW4gOiBydW5zKSB7
Ci0gICAgICAgICAgICBpZiAocnVuLmxpbmVJbmRleCgpICE9IGxpbmVJbmRleCkKKyAgICAgICAg
Zm9yIChhdXRvJiBib3ggOiBib3hlcykgeworICAgICAgICAgICAgaWYgKGJveC5saW5lSW5kZXgo
KSAhPSBsaW5lSW5kZXgpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBp
ZiAoIXJ1bi5sYXlvdXRCb3goKS5pc0lubGluZUxldmVsQm94KCkpCisgICAgICAgICAgICBpZiAo
IWJveC5sYXlvdXRCb3goKS5pc0lubGluZUxldmVsQm94KCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBvdXRwdXRJbmxpbmVMZXZlbEJveChydW4pOworICAgICAgICAg
ICAgb3V0cHV0SW5saW5lTGV2ZWxCb3goYm94KTsKICAgICAgICAgfQogCiAgICAgICAgIGFkZFNw
YWNpbmcoKTsKICAgICAgICAgc3RyZWFtIDw8ICIgIFJ1bnM6IjsKICAgICAgICAgc3RyZWFtLm5l
eHRMaW5lKCk7Ci0gICAgICAgIGZvciAoYXV0byYgcnVuIDogcnVucykgewotICAgICAgICAgICAg
aWYgKHJ1bi5saW5lSW5kZXgoKSAhPSBsaW5lSW5kZXgpCisgICAgICAgIGZvciAoYXV0byYgYm94
IDogYm94ZXMpIHsKKyAgICAgICAgICAgIGlmIChib3gubGluZUluZGV4KCkgIT0gbGluZUluZGV4
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgYWRkU3BhY2luZygpOwog
ICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgIjsKLSAgICAgICAgICAgIGlmIChydW4udGV4dCgp
KQotICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAidGV4dCBydW4iOworICAgICAgICAgICAgaWYg
KGJveC50ZXh0KCkpCisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0IGJveCI7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJib3ggcnVuIjsKLSAgICAg
ICAgICAgIHN0cmVhbSA8PCAiIGF0ICgiIDw8IHJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBy
dW4ubG9naWNhbFRvcCgpIDw8ICIpIHNpemUgIiA8PCBydW4ubG9naWNhbFdpZHRoKCkgPDwgIngi
IDw8IHJ1bi5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBpZiAocnVuLnRleHQoKSkKLSAg
ICAgICAgICAgICAgICBzdHJlYW0gPDwgIiBydW4oIiA8PCBydW4udGV4dCgpLT5zdGFydCgpIDw8
ICIsICIgPDwgcnVuLnRleHQoKS0+ZW5kKCkgPDwgIikiOworICAgICAgICAgICAgICAgIHN0cmVh
bSA8PCAiYm94IGJveCI7CisgICAgICAgICAgICBzdHJlYW0gPDwgIiBhdCAoIiA8PCBib3gubG9n
aWNhbExlZnQoKSA8PCAiLCIgPDwgYm94LmxvZ2ljYWxUb3AoKSA8PCAiKSBzaXplICIgPDwgYm94
LmxvZ2ljYWxXaWR0aCgpIDw8ICJ4IiA8PCBib3gubG9naWNhbEhlaWdodCgpOworICAgICAgICAg
ICAgaWYgKGJveC50ZXh0KCkpCisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgYm94KCIgPDwg
Ym94LnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGJveC50ZXh0KCktPmVuZCgpIDw8ICIpIjsK
ICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IDFhN2E5MWQ0Yjg2YTU1ZjNm
M2NmZDI5ZDhhOWY4OTI5NjBlNTY1NWYuLjliYWExNmQ2NmI3Nzc4Yjg0NzYwNmVmNWM2MjNlOGI1
ZWIyN2U1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFp
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNw
cApAQCAtNTAsOCArNTAsOCBAQCBUZXh0Qm94UGFpbnRlcjo6VGV4dEJveFBhaW50ZXIoY29uc3Qg
TGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCwgUGFpbnRJbmZvJiBwYQogfQogCiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi1UZXh0Qm94UGFpbnRlcjo6VGV4dEJveFBh
aW50ZXIoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmIGlubGluZUNvbnRl
bnQsIGNvbnN0IExheW91dDo6UnVuJiBydW4sIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCi0gICAgOiBUZXh0Qm94UGFpbnRlcihMYXlvdXRJbnRl
Z3JhdGlvbjo6dGV4dFJ1bkZvcihpbmxpbmVDb250ZW50LCBydW4pLCBwYWludEluZm8sIHBhaW50
T2Zmc2V0KQorVGV4dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVyKGNvbnN0IExheW91dEludGVn
cmF0aW9uOjpJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50LCBjb25zdCBJbmxpbmVEaXNwbGF5
OjpCb3gmIGJveCwgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCkKKyAgICA6IFRleHRCb3hQYWludGVyKExheW91dEludGVncmF0aW9uOjp0ZXh0UnVu
Rm9yKGlubGluZUNvbnRlbnQsIGJveCksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpCiB7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmgKaW5kZXggMTJh
YTIwNjY5MTExNjgwMTY4NjFmZWVlYWI5YzIxZDFmMzRhOWUwMC4uNDcwMWVmYzU0YWI4MjBmMTk2
ZjVlNThjZTg0NWI1ZjA1MGQwYWQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRCb3hQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRC
b3hQYWludGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgVGV4dEJveFBhaW50ZXIgewogcHVi
bGljOgogICAgIFRleHRCb3hQYWludGVyKGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gmLCBQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpOwogI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQotICAgIFRleHRCb3hQYWludGVyKGNvbnN0IExheW91dElu
dGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiwgY29uc3QgTGF5b3V0OjpSdW4mLCBQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpOworICAgIFRleHRCb3hQYWludGVyKGNv
bnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxh
eTo6Qm94JiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KTsKICNl
bmRpZgogICAgIH5UZXh0Qm94UGFpbnRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcAppbmRleCA4MWFhOGRhNzA2MWQ1MDFmM2ExZWUzZGQ5M2ViM2RlZmIyZGFi
ZDk1Li40OWRiYmEwZmQ3N2M5NzUyZmJmMjQxMjc1OThiNTQ0MTBiMDA0MWE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lk
IFRleHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKCkKICAgICBHbHlwaERpc3BsYXlM
aXN0Q2FjaGU8TGVnYWN5SW5saW5lVGV4dEJveD46OnNpbmdsZXRvbigpLmNsZWFyKCk7CiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3Jh
dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgR2x5cGhEaXNwbGF5TGlzdENhY2hlPExheW91dDo6UnVu
Pjo6c2luZ2xldG9uKCkuY2xlYXIoKTsKKyAgICAgICAgR2x5cGhEaXNwbGF5TGlzdENhY2hlPElu
bGluZURpc3BsYXk6OkJveD46OnNpbmdsZXRvbigpLmNsZWFyKCk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>