<?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>204727</bug_id>
          
          <creation_ts>2019-12-01 07:54:53 -0800</creation_ts>
          <short_desc>[LFC][Render tree] Support LFC in LineLayoutTraversal</short_desc>
          <delta_ts>2019-12-02 01:30:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</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>1594417</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-01 07:54:53 -0800</bug_when>
    <thetext>This allows render tree dumps, TextIterator etc. work with LFC inline layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594418</commentid>
    <comment_count>1</comment_count>
      <attachid>384572</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-01 07:58:44 -0800</bug_when>
    <thetext>Created attachment 384572
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594436</commentid>
    <comment_count>2</comment_count>
      <attachid>384578</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-01 12:21:36 -0800</bug_when>
    <thetext>Created attachment 384578
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594440</commentid>
    <comment_count>3</comment_count>
      <attachid>384578</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-12-01 12:57:20 -0800</bug_when>
    <thetext>Comment on attachment 384578
patch

Let&apos;s fix some of the naming in a separate patch. Will try to figure out something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594494</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-12-01 20:55:37 -0800</bug_when>
    <thetext>How about if we manage to move LineBox over to Display namespace the &quot;results&quot; could simply be something like Display::InlineContent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594508</commentid>
    <comment_count>5</comment_count>
      <attachid>384595</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-02 00:07:35 -0800</bug_when>
    <thetext>Created attachment 384595
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594509</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-02 00:08:28 -0800</bug_when>
    <thetext>(In reply to zalan from comment #4)
&gt; How about if we manage to move LineBox over to Display namespace the
&gt; &quot;results&quot; could simply be something like Display::InlineContent

I made it Display::InlineContent. LineBox still needs moving.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594521</commentid>
    <comment_count>7</comment_count>
      <attachid>384595</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-02 01:29:06 -0800</bug_when>
    <thetext>Comment on attachment 384595
patch

Clearing flags on attachment: 384595

Committed r252979: &lt;https://trac.webkit.org/changeset/252979&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594522</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-02 01:29:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594523</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-02 01:30:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/57552905&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384572</attachid>
            <date>2019-12-01 07:58:44 -0800</date>
            <delta_ts>2019-12-01 12:21:36 -0800</delta_ts>
            <desc>wip</desc>
            <filename>linelayouttraversal-lfc.patch</filename>
            <type>text/plain</type>
            <size>47097</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNDBlNzQ3ZTUxMi4uN2RlOGFjNTJhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAxOS0xMi0wMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bUmVuZGVyIHRyZWVdIFN1cHBvcnQgTEZDIGluIExpbmVMYXlvdXRU
cmF2ZXJzYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNDcyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9G
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0Nv
bnRleHRSb290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxh
eW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVM
YXlvdXQ6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlbmRlckJsb2NrRmxv
d0xpbmVMYXlvdXQ6OmlubGluZVJlc3VsdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Ojp0ZXh0Qm94ZXNGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjplbGVtZW50Qm94Rm9y
KToKKyAgICAgICAgKiBsYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oOgorICAgICAg
ICAqIGxheW91dC9WZXJpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpv
dXRwdXRNaXNtYXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9u
SWZOZWVkZWQpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFy
Z2luKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaCBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OnBhaW50SW5saW5lQ29udGVudCk6CisgICAgICAgICogbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlSdW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6bGF5
b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6c3R5bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpSdW4pOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlC
b3hlc0ZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6aW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZSk6CisgICAgICAgICogbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5l
RGVzY2VudE5lZWRzQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6cmVzdWx0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJSZXN1bHRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjplbnN1cmVSZXN1bHRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpkaXNw
bGF5UnVucyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdTdGF0ZTo6ZGlzcGxheVJ1bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmxpbmVCb3hlcyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6bGlu
ZUJveGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ1N0YXRlOjphZGRMaW5lQm94KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpsaW5lQm94Rm9yUnVuIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGREaXNw
bGF5UnVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ1N0YXRlOjpyZXNldERpc3BsYXlSdW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdo
dCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUmVzdWx0cy5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91
dC5oLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSZXN1bHRzOjpsaW5lQm94Rm9y
UnVuIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dElubGluZVJ1bnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRl
cmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0
Qm94Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4
dEJveEluVGV4dE9yZGVyRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJz
YWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
bGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsTEZDUGF0aC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OmxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpMRkNQYXRoOjpMRkNQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkxGQ1BhdGg6OnJlY3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6TEZDUGF0aDo6bG9naWNhbFJlY3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6TEZDUGF0aDo6aXNMZWZ0
VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJh
dmVyc2FsOjpMRkNQYXRoOjpkaXJPdmVycmlkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lTGF5b3V0VHJhdmVyc2FsOjpMRkNQYXRoOjppc0xpbmVCcmVhayBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpMRkNQYXRoOjpoYXNIeXBoZW4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6TEZDUGF0aDo6dGV4dCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpMRkNQYXRoOjps
b2NhbFN0YXJ0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2
ZXJzYWw6OkxGQ1BhdGg6OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkxGQ1BhdGg6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpMRkNQYXRoOjppc0xhc3RPbkxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6TEZDUGF0aDo6aXNMYXN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkxGQ1BhdGg6
OnRyYXZlcnNlTmV4dFRleHRCb3hJblZpc3VhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
bmVMYXlvdXRUcmF2ZXJzYWw6OkxGQ1BhdGg6OnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpMRkNQYXRoOjpvcGVy
YXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkxG
Q1BhdGg6OmF0RW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJz
YWw6OkxGQ1BhdGg6OmRpc3BsYXlSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRUcmF2ZXJzYWw6OkxGQ1BhdGg6OmZpcnN0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkxGQ1BhdGg6OnJ1biBjb25zdCk6CisKIDIwMTktMTEt
MzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFu
aW1hdGlvbnNdIEltcGxlbWVudCBBbmltYXRpb24uY29tbWl0U3R5bGVzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZjA4YTNi
ZDZjMi4uZTRmMGI1NDMxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNDIsNyArMjA0Miw3IEBACiAJCTZGOTk1QTNBMUE3
MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTk1QTMwMUE3MDgzMzcwMEE3MzVG
NCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCAqLzsgfTsKIAkJNkZBNDQ1NEU4OThGMkZD
MTY4QkMzOEMxIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RTA0QTI3QkVEMkY4MUY5OEU5MDIyQiAvKiBKU0Jl
Zm9yZVVubG9hZEV2ZW50LmggKi87IH07CiAJCTZGQjExQjVDMjE3ODNGRDAwMEUyQTU3NCAvKiBU
ZXh0VXRpbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkZCNDdFNjMyMjc3NDI1QTAwQzdCQ0Iw
IC8qIElubGluZUxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBJbmxpbmVMaW5lQm94LmggKi87
IH07CisJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBJbmxpbmVMaW5lQm94LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkI0N0U2MTIyNzc0MjVB
MDBDN0JDQjAgLyogSW5saW5lTGluZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTZGQjVFMjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50
Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkNF
MUExQTIyNjE4QUJEMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZDRTFBMTgyMjYxOEFCMzAwNEYwMzQzIC8qIERp
c3BsYXlSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RkQ5Q0Q1NDIyN0UyMUM4MDBFNTM5NTcgLyogRGlzcGxheVJlY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRDlDRDUyMjI3RTIxQzgwMEU1
Mzk1NyAvKiBEaXNwbGF5UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC00ODE4LDYgKzQ4MTgsMTAgQEAKIAkJRTQ0NjE0NTIwQ0Q2OEEzNTAw
RkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEI0MUUzNDBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDRCNEJC
NDE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRCNEJCMjE0MTY1MEQ3MDAyQjFEOEIgLyog
U2VsZWN0b3JDaGVja2VyLmggKi87IH07CiAJCUU0NEZBMTg1MUJDQTZCNUEwMDkxQjZFRiAvKiBD
b21wb3NlZFRyZWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ0RkExODQxQkNBNkI1QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJh
dG9yLmggKi87IH07CisJCUU0NTFDNjI4MjM5MjkzRUMwMDk5MzE5MCAvKiBMaW5lTGF5b3V0VHJh
dmVyc2FsTEZDUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTQ1MUM2MjcyMzkyOTNFQjAwOTkzMTkwIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxMRkNQ
YXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RTQ1MUM2MzEyMzk0MDI3OTAwOTkzMTkwIC8qIExheW91dFVuaXRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjczOTE4QzIxMDZDRUREMDA2QUYyNjIg
LyogTGF5b3V0VW5pdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFNDUxQzYzMjIzOTQwMzFBMDA5OTMxOTAgLyogTWFyZ2luVHlwZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRTdBQTI2MjFDMzdC
NjMwMDI5NkRDRCAvKiBNYXJnaW5UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBJbmxpbmVS
ZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDUxQzYzMzIzOTQwNThFMDA5OTMxOTAgLyogSW5saW5lUmVzdWx0cy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NTMyMkFDMTQwQ0UyNjcwMDVB
MEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDUzMjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5o
ICovOyB9OwogCQlFNDVCQTZBQTIzNzQ5MjZDMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9u
c0NhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDVCQTZBODIzNzQ5MjZCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi87
IH07CiAJCUU0NUJBNkI2MjM3NjIyQTMwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVCQTZCNTIzNzYyMjlG
MDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5oICovOyB9OwpAQCAtMTUxNDksNiArMTUxNTMsOCBA
QAogCQlFNDRFRTNBNzE3NTc2RTU1MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250R2VuZXJpY0ZhbWlsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0NEZBMTg0MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wb3NlZFRyZWVJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDRGQTE4NjFCQ0E5MTU2MDA5MUI2
RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29tcG9zZWRUcmVlSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFNDUxQzYyNzIzOTI5M0VCMDA5OTMxOTAgLyogTGluZUxheW91dFRyYXZlcnNh
bExGQ1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUxheW91dFRy
YXZlcnNhbExGQ1BhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ1MUM2MzMy
Mzk0MDU4RTAwOTkzMTkwIC8qIElubGluZVJlc3VsdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5saW5lUmVzdWx0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDUzMjJBOTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3RvclF1ZXJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9y
UXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0b3JRdWVyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDUzOTAxOTBFQUZDQUNBMDAzNjk1Qzgg
LyogUGFzdGVib2FyZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFBhc3RlYm9hcmRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjcw
MSw2ICsxNjcwNyw3IEBACiAJCQkJNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxp
bmVCcmVha2VyLmggKi8sCiAJCQkJNkYwQ0Q2OTIyMjlFRDMxOTAwQzU5OTRFIC8qIElubGluZUxp
bmVCdWlsZGVyLmNwcCAqLywKIAkJCQk2RjBDRDY5NDIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5l
TGluZUJ1aWxkZXIuaCAqLywKKwkJCQlFNDUxQzYzMzIzOTQwNThFMDA5OTMxOTAgLyogSW5saW5l
UmVzdWx0cy5oICovLAogCQkJCTZGMUNDMURDMjI1RjhCNDEwMDcyMEFEMiAvKiBJbmxpbmVUZXh0
SXRlbS5jcHAgKi8sCiAJCQkJNkYxQ0MxREQyMjVGOEI0MjAwNzIwQUQyIC8qIElubGluZVRleHRJ
dGVtLmggKi8sCiAJCQkJNkYyNUIyMDAyMjBBODVBQjAwMDAwMTFCIC8qIExpbmVMYXlvdXRDb250
ZXh0LmNwcCAqLywKQEAgLTI4NzMzLDYgKzI4NzQwLDcgQEAKIAkJCQlFNDg0QTMzQjIzMDU1MzAz
MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oICovLAogCQkJCUU0MzQzRDIxMjM5Mjc3
ODMwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsU2ltcGxlUGF0aC5oICovLAogCQkJCUU0
MzQzRDI0MjM5Mjc3OEYwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGgu
aCAqLywKKwkJCQlFNDUxQzYyNzIzOTI5M0VCMDA5OTMxOTAgLyogTGluZUxheW91dFRyYXZlcnNh
bExGQ1BhdGguaCAqLywKIAkJCQlGRkRCQzA0NjE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRo
LmNwcCAqLywKIAkJCQlGRkRCQzA0NTE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggKi8s
CiAJCQkJRkZBQzMwRkQxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgKi8s
CkBAIC0zMDA0MCw2ICszMDA0OCw3IEBACiAJCQkJQTg3MURCMkIwQTE1MEJENjAwQjEyQTY4IC8q
IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREIyQTBB
MTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4NzFEQjJGMEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVDb2xFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQlFNDUxQzYyODIzOTI5M0VDMDA5OTMxOTAgLyogTGluZUxheW91dFRy
YXZlcnNhbExGQ1BhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFEQjI3MEExNTBCRDYwMEIx
MkE2OCAvKiBIVE1MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREIyQzBB
MTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlUGFydEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4NzFEQjMxMEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVSb3dFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTMwMTUxLDYgKzMwMTYwLDcgQEAKIAkJCQlCQzdGNDRBODBCOUUzMjRF
MDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzEx
NTI1MjVEMDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTQ1MUM2MzIyMzk0MDMxQTAwOTkzMTkwIC8qIE1hcmdpblR5cGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNTFBMkYzRjE3RDdEM0FFMDA3MjUxN0EgLyogSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDkyOTFFNEIxMzQxNzJDODAwRTc1
M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QyN0FFNTAy
MkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBpbiBIZWFkZXJzICov
LApAQCAtMzI0ODYsNiArMzI0OTYsNyBAQAogCQkJCUIyMjI3QURBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdUcmFuc2Zvcm1hYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FERDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QURGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmggaW4gSGVhZGVycyAq
LywKKwkJCQlFNDUxQzYzMTIzOTQwMjc5MDA5OTMxOTAgLyogTGF5b3V0VW5pdHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDRTU4RDU4MUREN0Q5NkQwMDEyODU1MiAvKiBTVkdUcmFuc2Zvcm1WYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RS
ZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FFNTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHVFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyODE1LDYgKzMyODI2LDcg
QEAKIAkJCQk0OUM3QjlFMDEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0YzRDM2QTFBNjlCN0I5MDA1OUZDMkIgLyogV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY5OTVBMjIxQTcwNzhC
MTAwQTczNUY0IC8qIFdlYkdMU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1MUM2MzQy
Mzk0MDU4RjAwOTkzMTkwIC8qIElubGluZVJlc3VsdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5
QzdCOUUzMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFNoYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTA3RDMzNTgxNTJCNjMyRDAwMUI2MzkzIC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwMUQzQ0Y4NzE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xT
aGFyZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDZjNjZlMWEzYTQ5Li41ZWFl
NjRkMDJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dEdlb21ldHJ5LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIExheW91dFVuaXQgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290
KGNvCiAgICAgYXV0byBib3R0b20gPSBib3JkZXJBbmRQYWRkaW5nVG9wOwogICAgIGF1dG8mIGZv
cm1hdHRpbmdSb290Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwog
ICAgIGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRp
bmdDb250ZXh0KCkpIHsKLSAgICAgICAgYXV0byYgbGluZUJveGVzID0gZG93bmNhc3Q8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShm
b3JtYXR0aW5nUm9vdENvbnRhaW5lcikpLmxpbmVCb3hlcygpOworICAgICAgICBhdXRvJiBsaW5l
Qm94ZXMgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFi
bGlzaGVkRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdSb290Q29udGFpbmVyKSkucmVzdWx0cygp
LT5saW5lQm94ZXM7CiAgICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFpbmVycyBnZW5lcmF0ZSBv
bmUgbGluZS4gCiAgICAgICAgIEFTU0VSVCghbGluZUJveGVzLmlzRW1wdHkoKSk7CiAgICAgICAg
IHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLmxvZ2ljYWxUb3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcAppbmRleCA4MWQwOGRj
MzI2Yy4uYjQ0M2ZjMTI0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9SZW5k
ZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVu
ZGVyQmxvY2tGbG93TGluZUxheW91dC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJM
YXlvdXRUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0Lmgi
CiAKQEAgLTc4LDcgKzc5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjpsYXlv
dXQoKQogICAgIGF1dG8gaW52YWxpZGF0aW9uU3RhdGUgPSBJbnZhbGlkYXRpb25TdGF0ZSB7IH07
CiAgICAgbGF5b3V0Q29udGV4dC5sYXlvdXQobV9mbG93LmNvbnRlbnRTaXplKCksIGludmFsaWRh
dGlvblN0YXRlKTsKIAotICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRvd25jYXN0PElubGluZUZvcm1h
dHRpbmdTdGF0ZT4obV9sYXlvdXRTdGF0ZS0+ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUocm9v
dENvbnRhaW5lcikpLmxpbmVCb3hlcygpOworICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRvd25jYXN0
PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obV9sYXlvdXRTdGF0ZS0+ZXN0YWJsaXNoZWRGb3JtYXR0
aW5nU3RhdGUocm9vdENvbnRhaW5lcikpLnJlc3VsdHMoKS0+bGluZUJveGVzOwogICAgIGF1dG8g
aGVpZ2h0ID0gbGluZUJveGVzLmxhc3QoKS5sb2dpY2FsQm90dG9tKCk7CiAKICAgICBhdXRvJiBk
aXNwbGF5Qm94ID0gbV9sYXlvdXRTdGF0ZS0+ZGlzcGxheUJveEZvckxheW91dEJveChyb290Q29u
dGFpbmVyKTsKQEAgLTkwLDYgKzkxLDExIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93TGlu
ZUxheW91dDo6Y29udGVudEJveEhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5b3V0U3Rh
dGUgPyBtX2xheW91dFN0YXRlLT5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KG1fbGF5b3V0U3RhdGUt
PnJvb3QoKSkuY29udGVudEJveEhlaWdodCgpIDogMF9sdTsKIH0KIAorY29uc3QgSW5saW5lUmVz
dWx0cyogUmVuZGVyQmxvY2tGbG93TGluZUxheW91dDo6aW5saW5lUmVzdWx0cygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obV9sYXlvdXRTdGF0
ZS0+ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobV90cmVlQ29udGVudC0+cm9vdExheW91dEJv
eCgpKSkucmVzdWx0cygpOworfQorCiB2b2lkIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiB7CiAgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKQEAg
LTEwMiw2ICsxMDgsNDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHAKICAgICBncmFwaGljc0Nv
bnRleHQucmVzdG9yZSgpOwogfQogCitMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94SXRlcmF0
b3IgUmVuZGVyQmxvY2tGbG93TGluZUxheW91dDo6dGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRl
eHQmIHJlbmRlclRleHQpCit7CisgICAgYXV0byogcmVzdWx0cyA9IGlubGluZVJlc3VsdHMoKTsK
KyAgICBpZiAoIXJlc3VsdHMpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byogbGF5b3V0
Qm94ID0gbV90cmVlQ29udGVudC0+bGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyVGV4dCk7Cisg
ICAgQVNTRVJUKGxheW91dEJveCk7CisKKyAgICBPcHRpb25hbDxzaXplX3Q+IGZpcnN0SW5kZXgg
PSAwOworICAgIHNpemVfdCBsYXN0SW5kZXggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVzdWx0cy0+ZGlzcGxheVJ1bnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgcnVu
ID0gIHJlc3VsdHMtPmRpc3BsYXlSdW5zW2ldOworICAgICAgICBpZiAoJnJ1bi5sYXlvdXRCb3go
KSA9PSBsYXlvdXRCb3gpIHsKKyAgICAgICAgICAgIGlmICghZmlyc3RJbmRleCkKKyAgICAgICAg
ICAgICAgICBmaXJzdEluZGV4ID0gaTsKKyAgICAgICAgICAgIGxhc3RJbmRleCA9IGk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgaWYgKCFmaXJzdEluZGV4KQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgcmV0dXJuIHsgTGluZUxheW91dFRyYXZlcnNhbDo6TEZDUGF0aCgqcmVzdWx0cywgKmZp
cnN0SW5kZXgsIGxhc3RJbmRleCArIDEpIH07Cit9CisKK0xpbmVMYXlvdXRUcmF2ZXJzYWw6OkVs
ZW1lbnRCb3hJdGVyYXRvciBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjplbGVtZW50Qm94Rm9y
KGNvbnN0IFJlbmRlckxpbmVCcmVhayYgcmVuZGVyTGluZUJyZWFrKQoreworICAgIGF1dG8qIHJl
c3VsdHMgPSBpbmxpbmVSZXN1bHRzKCk7CisgICAgaWYgKCFyZXN1bHRzKQorICAgICAgICByZXR1
cm4geyB9OworICAgIGF1dG8qIGxheW91dEJveCA9IG1fdHJlZUNvbnRlbnQtPmxheW91dEJveEZv
clJlbmRlcmVyKHJlbmRlckxpbmVCcmVhayk7CisgICAgQVNTRVJUKGxheW91dEJveCk7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdHMtPmRpc3BsYXlSdW5zLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGF1dG8mIHJ1biA9ICByZXN1bHRzLT5kaXNwbGF5UnVuc1tpXTsKKyAgICAg
ICAgaWYgKCZydW4ubGF5b3V0Qm94KCkgPT0gbGF5b3V0Qm94KQorICAgICAgICAgICAgcmV0dXJu
IHsgTGluZUxheW91dFRyYXZlcnNhbDo6TEZDUGF0aCgqcmVzdWx0cywgaSwgaSArIDEpIH07Cisg
ICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L1JlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuaAppbmRleCBjOTcwNDE2ZDQwZS4u
Y2Q1Y2JkZjRjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9SZW5kZXJCbG9j
a0Zsb3dMaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1JlbmRlckJsb2Nr
Rmxvd0xpbmVMYXlvdXQuaApAQCAtMjgsMTcgKzI4LDIwIEBACiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUg
IkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3c7CitjbGFzcyBSZW5kZXJMaW5l
QnJlYWs7CiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3Mg
TGF5b3V0VHJlZUNvbnRlbnQ7CiBjbGFzcyBMYXlvdXRTdGF0ZTsKK3N0cnVjdCBJbmxpbmVSZXN1
bHRzOwogCiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTQ5LDExICs1MiwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgY2FuVXNlRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOwogCiAgICAgdm9pZCBsYXlvdXQo
KTsKLSAgICAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQoKSBjb25zdDsKKyAgICBj
b25zdCBJbmxpbmVSZXN1bHRzKiBpbmxpbmVSZXN1bHRzKCkgY29uc3Q7CiAKICAgICB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCk7CiAKKyAgICBM
aW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94SXRlcmF0b3IgdGV4dEJveGVzRm9yKGNvbnN0IFJl
bmRlclRleHQmKTsKKyAgICBMaW5lTGF5b3V0VHJhdmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3Ig
ZWxlbWVudEJveEZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmKTsKKwogcHJpdmF0ZToKICAgICBj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIG1fZmxvdzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0
VHJlZUNvbnRlbnQ+IG1fdHJlZUNvbnRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwCmluZGV4IGFiYTBhOWU0OTdkLi4xNmE0ZGJmNDk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTc2LDggKzc2LDEzIEBAIHN0YXRpYyBib29sIG91dHB1
dE1pc21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3Ry
ZWFtLCBjCiAgICAgfQogCiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0
U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwot
ICAgIEFTU0VSVChpczxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0
ZSkpOwotICAgIGF1dG8mIGRpc3BsYXlSdW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmRpc3BsYXlSdW5zKCk7CisgICAgYXV0byogaW5s
aW5lUmVzdWx0cyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0
dGluZ1N0YXRlKS5yZXN1bHRzKCk7CisgICAgaWYgKCFpbmxpbmVSZXN1bHRzKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBhdXRvJiBkaXNwbGF5UnVucyA9IGlubGluZVJlc3VsdHMtPmRpc3BsYXlSdW5zOwogCiAgICAg
aWYgKGRpc3BsYXlSdW5zLnNpemUoKSAhPSBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKSkgewog
ICAgICAgICBzdHJlYW0gPDwgIk1pc21hdGNoaW5nIG51bWJlciBvZiBydW5zOiBzaW1wbGUgcnVu
cygiIDw8IGxpbmVMYXlvdXREYXRhLT5ydW5Db3VudCgpIDw8ICIpIGlubGluZSBydW5zKCIgPDwg
ZGlzcGxheVJ1bnMuc2l6ZSgpIDw8ICIpIjsKQEAgLTE1Nyw4ICsxNjIsMTMgQEAgc3RhdGljIHZv
aWQgY29sbGVjdElubGluZUJveGVzKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcm9vdCwgVmVjdG9y
PFdlYkNvcmU6OklubGkKIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJ
bmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdywgY29uc3QgQ29u
dGFpbmVyJiBpbmxpbmVGb3JtYXR0aW5nUm9vdCkKIHsKICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0
aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShpbmxpbmVG
b3JtYXR0aW5nUm9vdCk7Ci0gICAgQVNTRVJUKGlzPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5s
aW5lRm9ybWF0dGluZ1N0YXRlKSk7Ci0gICAgYXV0byYgZGlzcGxheVJ1bnMgPSBkb3duY2FzdDxJ
bmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkuZGlzcGxheVJ1bnMo
KTsKKworICAgIGF1dG8qIGlubGluZVJlc3VsdHMgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5n
U3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkucmVzdWx0cygpOworICAgIGlmICghaW5saW5l
UmVzdWx0cykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIGF1dG8mIGRpc3BsYXlSdW5zID0gaW5saW5lUmVzdWx0cy0+ZGlz
cGxheVJ1bnM7CiAKICAgICAvLyBDb2xsZWN0IGlubGluZWJveGVzLgogICAgIFZlY3RvcjxXZWJD
b3JlOjpJbmxpbmVCb3gqPiBpbmxpbmVCb3hlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBlYzhkMWFkYThkZS4uMjI4MDljNjQ0YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHQKICAgICAgICAgLy8gMS4gdGhlIGJvdHRvbSBl
ZGdlIG9mIHRoZSBsYXN0IGxpbmUgYm94LCBpZiB0aGUgYm94IGVzdGFibGlzaGVzIGEgaW5saW5l
IGZvcm1hdHRpbmcgY29udGV4dCB3aXRoIG9uZSBvciBtb3JlIGxpbmVzCiAgICAgICAgIGF1dG8m
IGxheW91dENvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KTsKICAgICAg
ICAgaWYgKGxheW91dENvbnRhaW5lci5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0
KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRvd25jYXN0PElubGluZUZvcm1h
dHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlv
dXRDb250YWluZXIpKS5saW5lQm94ZXMoKTsKKyAgICAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hl
ZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpKS5yZXN1bHRzKCktPmxpbmVCb3hlczsK
ICAgICAgICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFpbmVycyBnZW5lcmF0ZSBvbmUgbGluZS4g
CiAgICAgICAgICAgICBBU1NFUlQoIWxpbmVCb3hlcy5pc0VtcHR5KCkpOwogICAgICAgICAgICAg
cmV0dXJuIHsgbGluZUJveGVzLmxhc3QoKS5sb2dpY2FsQm90dG9tKCkgLSBib3JkZXJBbmRQYWRk
aW5nVG9wLCBub25Db2xsYXBzZWRNYXJnaW4gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmlu
ZGV4IGJiYTI1ZTRjZmRlLi41NTNjOTA5M2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
CkBAIC0zOTUsNyArMzk1LDcgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBCb3gmIGwKIAogICAgICAgICAg
ICAgYXV0byBpc0NvbnNpZGVyZWRFbXB0eSA9IFsmXSB7CiAgICAgICAgICAgICAgICAgYXV0byYg
Zm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRT
dGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpKTsKLSAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmVCb3ggOiBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVz
KCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmVCb3ggOiBmb3JtYXR0aW5nU3Rh
dGUucmVzdWx0cygpLT5saW5lQm94ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5l
Qm94LmlzQ29uc2lkZXJlZEVtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKaW5kZXggMDk4MThkMTI2MjguLjExMzUy
YjgxOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UGFpbnRlci5jcHAKQEAgLTExMiw3ICsxMTIsMTEgQEAgc3RhdGljIHZvaWQgcGFpbnRC
b3hEZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQm94JiBhYnNvbHV0
ZURpc3AKIAogc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVDb250ZW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgQm94JiByb290QWJzb2x1dGVEaXNwbGF5Qm94LCBjb25zdCBMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQogewotICAgIGF1dG8mIGRp
c3BsYXlSdW5zID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlSdW5zKCk7CisgICAgYXV0byogcmVz
dWx0cyA9IGZvcm1hdHRpbmdTdGF0ZS5yZXN1bHRzKCk7CisgICAgaWYgKCFyZXN1bHRzKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkaXNwbGF5UnVucyA9IHJlc3VsdHMtPmRpc3BsYXlS
dW5zOwogICAgIGlmIChkaXNwbGF5UnVucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTI0LDcgKzEyOCw3IEBAIHN0YXRpYyB2b2lkIHBhaW50SW5saW5lQ29udGVudChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEJveCYgcm9vdEFic29sdXRlCiAKICAgICAgICAgICAg
IGF1dG8gbG9naWNhbExlZnQgPSByb290QWJzb2x1dGVEaXNwbGF5Qm94LmxlZnQoKSArIHJ1bi5s
b2dpY2FsTGVmdCgpOwogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBub24tYmFzZWxpbmUgYWxp
Z24gcGFpbnRpbmcKLSAgICAgICAgICAgIGF1dG8mIGxpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUu
bGluZUJveEZvclJ1bihydW4pOworICAgICAgICAgICAgYXV0byYgbGluZUJveCA9IHJlc3VsdHMt
PmxpbmVCb3hGb3JSdW4ocnVuKTsKICAgICAgICAgICAgIGF1dG8gYmFzZWxpbmVPZmZzZXQgPSBy
b290QWJzb2x1dGVEaXNwbGF5Qm94LnRvcCgpICsgbGluZUJveC5sb2dpY2FsVG9wKCkgKyBsaW5l
Qm94LmJhc2VsaW5lT2Zmc2V0KCk7CiAgICAgICAgICAgICBpZiAoYXV0byBleHBhbnNpb25Db250
ZXh0ID0gdGV4dENvbnRleHQtPmV4cGFuc2lvbigpKQogICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd1RleHQoc3R5bGUuZm9udENhc2NhZGUoKSwgVGV4dFJ1biB7IHRleHRDb250ZXh0LT5jb250
ZW50KCksIGxvZ2ljYWxMZWZ0LCBleHBhbnNpb25Db250ZXh0LT5ob3Jpem9udGFsRXhwYW5zaW9u
LCBleHBhbnNpb25Db250ZXh0LT5iZWhhdmlvciB9LCB7IGxvZ2ljYWxMZWZ0LCBiYXNlbGluZU9m
ZnNldCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1
bi5oCmluZGV4IGI2NTc5MTA0OTlkLi4zNzc0YjZkYmE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJEaXNwbGF5UmVj
dC5oIgorI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgpAQCAtNjcsNyAr
NjgsNyBAQCBzdHJ1Y3QgUnVuIHsKICAgICAgICAgT3B0aW9uYWw8RXhwYW5zaW9uQ29udGV4dD4g
bV9leHBhbnNpb25Db250ZXh0OwogICAgIH07CiAKLSAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZWN0JiBsb2dpY2FsUmVjdCwgT3B0aW9uYWw8VGV4
dENvbnRleHQ+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29u
c3QgTGF5b3V0OjpCb3gmLCBjb25zdCBSZWN0JiBsb2dpY2FsUmVjdCwgT3B0aW9uYWw8VGV4dENv
bnRleHQ+ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIHNpemVfdCBsaW5lSW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2xpbmVJbmRleDsgfQogCkBAIC05NywyMCArOTgsMjEgQEAgc3RydWN0IFJ1biB7
CiAgICAgdm9pZCBzZXRJbWFnZShDYWNoZWRJbWFnZSYgaW1hZ2UpIHsgbV9jYWNoZWRJbWFnZSA9
ICZpbWFnZTsgfQogICAgIENhY2hlZEltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fj
aGVkSW1hZ2U7IH0KIAotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGU7IH0KKyAgICBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94KCkgY29uc3Qg
eyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3gtPnN0eWxlKCk7IH0KIAogcHJpdmF0ZToKICAgICAv
LyBGSVhNRTogRmluZCBvdXQgdGhlIERpc3BsYXk6OlJ1biA8LT4gcGFpbnQgc3R5bGUgc2V0dXAu
CiAgICAgY29uc3Qgc2l6ZV90IG1fbGluZUluZGV4OwotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBt
X3N0eWxlOworICAgIFdlYWtQdHI8Y29uc3QgTGF5b3V0OjpCb3g+IG1fbGF5b3V0Qm94OwogICAg
IENhY2hlZEltYWdlKiBtX2NhY2hlZEltYWdlIHsgbnVsbHB0ciB9OwogICAgIFJlY3QgbV9sb2dp
Y2FsUmVjdDsKICAgICBPcHRpb25hbDxUZXh0Q29udGV4dD4gbV90ZXh0Q29udGV4dDsKIH07CiAK
LWlubGluZSBSdW46OlJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IFJlY3QmIGxvZ2ljYWxSZWN0LCBPcHRpb25hbDxUZXh0Q29udGV4dD4gdGV4dENv
bnRleHQpCitpbmxpbmUgUnVuOjpSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGF5b3V0OjpC
b3gmIGxheW91dEJveCwgY29uc3QgUmVjdCYgbG9naWNhbFJlY3QsIE9wdGlvbmFsPFRleHRDb250
ZXh0PiB0ZXh0Q29udGV4dCkKICAgICA6IG1fbGluZUluZGV4KGxpbmVJbmRleCkKLSAgICAsIG1f
c3R5bGUoc3R5bGUpCisgICAgLCBtX2xheW91dEJveChtYWtlV2Vha1B0cihsYXlvdXRCb3gpKQog
ICAgICwgbV9sb2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKICAgICAsIG1fdGV4dENvbnRleHQodGV4
dENvbnRleHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNjVh
Yjk0MDA1YzAuLjVjODFkNjVmODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCkBAIC00MjYsOCArNDI2LDEwIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNl
dERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBhdXRvIGxpbmVJbmRleCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94
ZXMoKS5zaXplKCk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVCb3goTGluZUJveCB7IGxp
bmVDb250ZW50LmxpbmVCb3ggfSk7CisgICAgYXV0byYgaW5saW5lUmVzdWx0cyA9IGZvcm1hdHRp
bmdTdGF0ZS5lbnN1cmVSZXN1bHRzKCk7CisKKyAgICBhdXRvIGxpbmVJbmRleCA9IGlubGluZVJl
c3VsdHMubGluZUJveGVzLnNpemUoKTsKKyAgICBpbmxpbmVSZXN1bHRzLmxpbmVCb3hlcy5hcHBl
bmQoTGluZUJveCB7IGxpbmVDb250ZW50LmxpbmVCb3ggfSk7CiAKICAgICAvLyBDb21wdXRlIGJv
eCBmaW5hbCBnZW9tZXRyeS4KICAgICBhdXRvJiBsaW5lUnVucyA9IGxpbmVDb250ZW50LnJ1bkxp
c3Q7CkBAIC00NDEsNyArNDQzLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0
RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAg
Ly8gSW5saW5lIGxldmVsIGNvbnRhaW5lcnMgKDxzcGFuPikgZG9uJ3QgZ2VuZXJhdGUgZGlzcGxh
eSBydW5zIGFuZCBuZWl0aGVyIGRvIGNvbXBsZXRlbHkgY29sbGFwc2VkIHJ1bnMuCiAgICAgICAg
IGF1dG8gaW5pdGlhdGVzSW5saW5lUnVuID0gIWxpbmVSdW4uaXNDb250YWluZXJTdGFydCgpICYm
ICFsaW5lUnVuLmlzQ29udGFpbmVyRW5kKCkgJiYgIWxpbmVSdW4uaXNDb2xsYXBzZWRUb1Zpc3Vh
bGx5RW1wdHkoKTsKICAgICAgICAgaWYgKGluaXRpYXRlc0lubGluZVJ1bikKLSAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGREaXNwbGF5UnVuKHsgbGluZUluZGV4LCBsaW5lUnVuLmxheW91
dEJveCgpLnN0eWxlKCksIGxpbmVSdW4ubG9naWNhbFJlY3QoKSwgbGluZVJ1bi50ZXh0Q29udGV4
dCgpIH0pOworICAgICAgICAgICAgaW5saW5lUmVzdWx0cy5kaXNwbGF5UnVucy5hcHBlbmQoeyBs
aW5lSW5kZXgsIGxpbmVSdW4ubGF5b3V0Qm94KCksIGxpbmVSdW4ubG9naWNhbFJlY3QoKSwgbGlu
ZVJ1bi50ZXh0Q29udGV4dCgpIH0pOwogCiAgICAgICAgIGlmIChsaW5lUnVuLmlzRm9yY2VkTGlu
ZUJyZWFrKCkpIHsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChsb2dpY2FsUmVj
dC50b3BMZWZ0KCkpOwpAQCAtNTAxLDcgKzUwMyw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUm
CiB7CiAgICAgLy8gRmluZCBvdXQgd2hhdCB3ZSBuZWVkIHRvIGludmFsaWRhdGUuIFRoaXMgaXMg
d2hlcmUgd2UgYWRkIHNvbWUgc21hcnRzIHRvIGRvIHBhcnRpYWwgbGluZSBsYXlvdXQuCiAgICAg
Ly8gRm9yIG5vdyBsZXQncyBqdXN0IGNsZWFyIHRoZSBydW5zLgotICAgIGZvcm1hdHRpbmdTdGF0
ZSgpLnJlc2V0RGlzcGxheVJ1bnMoKTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5jbGVhclJlc3Vs
dHMoKTsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhbHNvIHdoZXJlIHdlIHdvdWxkIGRlbGV0ZSBp
bmxpbmUgaXRlbXMgaWYgdGhlaXIgY29udGVudCBjaGFuZ2VkLgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggZGE2MDY0YjY0MzUuLmRmNjkw
YzJmNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3Bw
CkBAIC02Myw4ICs2Myw4IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcoY29uc3QgTGluZUJ1aWxkCiAgICAgICAgIGlmIChy
dW4uaXNCb3goKSkgewogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94
KCkgJiYgbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewog
ICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZv
cm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoZG93
bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFm
b3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkubGFz
dCgpLmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUu
cmVzdWx0cygpLT5saW5lQm94ZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlu
bGluZUJsb2NrQmFzZWxpbmUgPSBmb3JtYXR0aW5nU3RhdGUucmVzdWx0cygpLT5saW5lQm94ZXMu
bGFzdCgpLmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUJsb2NrQmFzZWxp
bmUuZGVzY2VudCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDA4ZjlkODk3Y2NjLi41NGYy
MWQ2YWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTMxLDggKzMxLDggQEAK
ICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVtLmgiCiAj
aW5jbHVkZSAiSW5saW5lTGluZUJveC5oIgorI2luY2x1ZGUgIklubGluZVJlc3VsdHMuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKQEAgLTUwLDQwICs1MCwyMiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmxpbmVJdGVtczsgfQogICAgIHZvaWQgYWRkSW5saW5lSXRlbShzdGQ6OnVuaXF1
ZV9wdHI8SW5saW5lSXRlbT4mJiBpbmxpbmVJdGVtKSB7IG1faW5saW5lSXRlbXMuYXBwZW5kKFdU
Rk1vdmUoaW5saW5lSXRlbSkpOyB9CiAKLSAgICB1c2luZyBEaXNwbGF5UnVucyA9IFZlY3RvcjxE
aXNwbGF5OjpSdW4sIDEwPjsKLSAgICB1c2luZyBMaW5lQm94ZXMgPSBWZWN0b3I8TGluZUJveCwg
NT47Ci0KLSAgICBjb25zdCBEaXNwbGF5UnVucyYgZGlzcGxheVJ1bnMoKSBjb25zdCB7IHJldHVy
biBtX2Rpc3BsYXlSdW5zOyB9Ci0gICAgRGlzcGxheVJ1bnMmIGRpc3BsYXlSdW5zKCkgeyByZXR1
cm4gbV9kaXNwbGF5UnVuczsgfQotICAgIHZvaWQgYWRkRGlzcGxheVJ1bihEaXNwbGF5OjpSdW4m
Jik7Ci0gICAgdm9pZCByZXNldERpc3BsYXlSdW5zKCk7Ci0KLSAgICBjb25zdCBMaW5lQm94ZXMm
IGxpbmVCb3hlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzOyB9Ci0gICAgTGluZUJveGVz
JiBsaW5lQm94ZXMoKSB7IHJldHVybiBtX2xpbmVCb3hlczsgfQotICAgIHZvaWQgYWRkTGluZUJv
eChMaW5lQm94JiYgbGluZUJveCkgeyBtX2xpbmVCb3hlcy5hcHBlbmQobGluZUJveCk7IH0KLQot
ICAgIGNvbnN0IExpbmVCb3gmIGxpbmVCb3hGb3JSdW4oY29uc3QgRGlzcGxheTo6UnVuJiBkaXNw
bGF5UnVuKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlc1tkaXNwbGF5UnVuLmxpbmVJbmRleCgp
XTsgfQorICAgIGNvbnN0IElubGluZVJlc3VsdHMqIHJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3VsdHMuZ2V0KCk7IH0KKyAgICBJbmxpbmVSZXN1bHRzJiBlbnN1cmVSZXN1bHRzKCk7Cisg
ICAgdm9pZCBjbGVhclJlc3VsdHMoKSB7IG1fcmVzdWx0cyA9IG51bGxwdHI7IH0KIAogcHJpdmF0
ZToKICAgICAvLyBDYWNoZWFibGUgaW5wdXQgdG8gbGluZSBsYXlvdXQuCiAgICAgSW5saW5lSXRl
bXMgbV9pbmxpbmVJdGVtczsKIAotICAgIC8vIExpbmUgbGF5b3V0IHJlc3VsdHMKLSAgICBEaXNw
bGF5UnVucyBtX2Rpc3BsYXlSdW5zOwotICAgIExpbmVCb3hlcyBtX2xpbmVCb3hlczsKKyAgICBS
ZWZQdHI8SW5saW5lUmVzdWx0cz4gbV9yZXN1bHRzOwogfTsKIAotaW5saW5lIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ1N0YXRlOjphZGREaXNwbGF5UnVuKERpc3BsYXk6OlJ1biYmIGRpc3BsYXlSdW4p
CitpbmxpbmUgSW5saW5lUmVzdWx0cyYgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjplbnN1cmVSZXN1
bHRzKCkKIHsKLSAgICBtX2Rpc3BsYXlSdW5zLmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlSdW4pKTsK
LX0KLQotaW5saW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjpyZXNldERpc3BsYXlSdW5z
KCkKLXsKLSAgICBtX2Rpc3BsYXlSdW5zLmNsZWFyKCk7Ci0gICAgLy8gUmVzZXR0aW5nIHRoZSBy
dW5zIG1lYW5zIG5vIG1vcmUgbGluZSBib3hlcyBlaXRoZXIuCi0gICAgbV9saW5lQm94ZXMuY2xl
YXIoKTsKLQorICAgIGlmICghbV9yZXN1bHRzKQorICAgICAgICBtX3Jlc3VsdHMgPSBhZG9wdFJl
ZigqbmV3IElubGluZVJlc3VsdHMpOworICAgIHJldHVybiAqbV9yZXN1bHRzOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggY2ZjYWQ1ZjUxZTIuLjRkMDdiNjgxZDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0yNjEsOCArMjYxLDggQEAgdm9pZCBMaW5lQnVpbGRl
cjo6YWxpZ25Db250ZW50VmVydGljYWxseShSdW5MaXN0JiBydW5MaXN0KQogICAgICAgICAgICAg
fSBlbHNlIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91dEJveC5lc3Rh
Ymxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICBhdXRv
JiBmb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91
dFN0YXRlKCkuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyPihs
YXlvdXRCb3gpKSk7CiAgICAgICAgICAgICAgICAgLy8gU3BlYyBtYWtlcyB1cyBnZW5lcmF0ZSBh
dCBsZWFzdCBvbmUgbGluZSAtZXZlbiBpZiBpdCBpcyBlbXB0eS4KLSAgICAgICAgICAgICAgICBB
U1NFUlQoIWZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5pc0VtcHR5KCkpOwotICAgICAgICAg
ICAgICAgIGF1dG8gaW5saW5lQmxvY2tCYXNlbGluZU9mZnNldCA9IGZvcm1hdHRpbmdTdGF0ZS5s
aW5lQm94ZXMoKS5sYXN0KCkuYmFzZWxpbmVPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoIWZvcm1hdHRpbmdTdGF0ZS5yZXN1bHRzKCktPmxpbmVCb3hlcy5pc0VtcHR5KCkpOworICAg
ICAgICAgICAgICAgIGF1dG8gaW5saW5lQmxvY2tCYXNlbGluZU9mZnNldCA9IGZvcm1hdHRpbmdT
dGF0ZS5yZXN1bHRzKCktPmxpbmVCb3hlcy5sYXN0KCkuYmFzZWxpbmVPZmZzZXQoKTsKICAgICAg
ICAgICAgICAgICAvLyBUaGUgaW5saW5lLWJsb2NrJ3MgYmFzZWxpbmUgb2Zmc2V0IGlzIHJlbGF0
aXZlIHRvIGl0cyBjb250ZW50IGJveC4gTGV0J3MgY29udmVydCBpdCByZWxhdGl2ZSB0byB0aGUg
bWFyZ2luIGJveC4KICAgICAgICAgICAgICAgICAvLyAgIGlubGluZS1ibG9jawogICAgICAgICAg
ICAgICAgIC8vICAgICAgICAgICAgICBcCkBAIC01OTQsOCArNTk0LDggQEAgdm9pZCBMaW5lQnVp
bGRlcjo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVuKQogICAgICAg
ICAgICAgICAgIC8vIElubGluZS1ibG9ja3Mgd2l0aCBpbmxpbmUgY29udGVudCBhbHdheXMgaGF2
ZSBiYXNlbGluZXMuCiAgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93
bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkRm9y
bWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSkpOwogICAgICAgICAg
ICAgICAgIC8vIFNwZWMgbWFrZXMgdXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4g
aWYgaXQgaXMgZW1wdHkuCi0gICAgICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUu
bGluZUJveGVzKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBhdXRvJiBsYXN0TGluZUJv
eCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUucmVzdWx0cygpLT5saW5lQm94ZXMuaXNFbXB0eSgpKTsK
KyAgICAgICAgICAgICAgICBhdXRvJiBsYXN0TGluZUJveCA9IGZvcm1hdHRpbmdTdGF0ZS5yZXN1
bHRzKCktPmxpbmVCb3hlcy5sYXN0KCk7CiAgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9j
a0Jhc2VsaW5lID0gbGFzdExpbmVCb3guYmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBhdXRv
IGJlZm9yZUhlaWdodCA9IGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpICsgYm94R2VvbWV0cnku
Ym9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUmVz
dWx0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUmVz
dWx0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yZDdmZDJlNGU4
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZVJlc3VsdHMuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1
ZGUgIkRpc3BsYXlSdW4uaCIKKyNpbmNsdWRlICJJbmxpbmVMaW5lQm94LmgiCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsK
Kworc3RydWN0IElubGluZVJlc3VsdHMgOiBwdWJsaWMgUmVmQ291bnRlZDxJbmxpbmVSZXN1bHRz
PiB7CisgICAgdXNpbmcgRGlzcGxheVJ1bnMgPSBWZWN0b3I8RGlzcGxheTo6UnVuLCAxMD47Cisg
ICAgdXNpbmcgTGluZUJveGVzID0gVmVjdG9yPExpbmVCb3gsIDU+OworCisgICAgRGlzcGxheVJ1
bnMgZGlzcGxheVJ1bnM7CisgICAgTGluZUJveGVzIGxpbmVCb3hlczsKKworICAgIGNvbnN0IExp
bmVCb3gmIGxpbmVCb3hGb3JSdW4oY29uc3QgRGlzcGxheTo6UnVuJiBkaXNwbGF5UnVuKSBjb25z
dCB7IHJldHVybiBsaW5lQm94ZXNbZGlzcGxheVJ1bi5saW5lSW5kZXgoKV07IH0KK307CisKK30K
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggYTY4MDllMGJlOWIuLjdkNDM3ZGYzZTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJl
ZUJ1aWxkZXIuY3BwCkBAIC0zMTEsOCArMzExLDEyIEBAIHZvaWQgVHJlZUJ1aWxkZXI6OmJ1aWxk
U3ViVHJlZShjb25zdCBSZW5kZXJFbGVtZW50JiByb290UmVuZGVyZXIsIENvbnRhaW5lciYgcm9v
CiBzdGF0aWMgdm9pZCBvdXRwdXRJbmxpbmVSdW5zKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBDb250YWluZXImIGlubGluZUZvcm1hdHRp
bmdSb290LCB1bnNpZ25lZCBkZXB0aCkKIHsKICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3Rh
dGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlz
aGVkRm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KSk7Ci0gICAgYXV0byYgZGlz
cGxheVJ1bnMgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuZGlzcGxheVJ1bnMoKTsKLSAgICBhdXRv
JiBsaW5lQm94ZXMgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCk7CisgICAgYXV0
byogcmVzdWx0cyA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5yZXN1bHRzKCk7CisgICAgaWYgKCFy
ZXN1bHRzKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkaXNwbGF5UnVucyA9IHJlc3Vs
dHMtPmRpc3BsYXlSdW5zOworICAgIGF1dG8mIGxpbmVCb3hlcyA9IHJlc3VsdHMtPmxpbmVCb3hl
czsKIAogICAgIHVuc2lnbmVkIHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAgICB3aGlsZSAoKytw
cmludGVkQ2hhcmFjdGVycyA8PSBkZXB0aCAqIDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCmluZGV4IDc2NWI5Nzg3MmY3
Li42ZDJlZjEwOTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUxheW91dFRyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHAKQEAgLTI2LDIyICsyNiwxNCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKIAorI2luY2x1ZGUg
IlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExpbmVMYXlvdXRUcmF2ZXJzYWwg
ewogCi1UZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94
KiBpbmxpbmVUZXh0Qm94KQotICAgIDogbV90ZXh0Qm94KENvbXBsZXhQYXRoIHsgaW5saW5lVGV4
dEJveCwgeyB9IH0pCi17Ci19Ci1UZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihWZWN0
b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+JiYgc29ydGVkLCBzaXplX3QgaW5kZXgpCi0gICAgOiBt
X3RleHRCb3goQ29tcGxleFBhdGggeyBpbmRleCA8IHNvcnRlZC5zaXplKCkgPyBzb3J0ZWRbaW5k
ZXhdIDogbnVsbHB0ciwgV1RGTW92ZShzb3J0ZWQpLCBpbmRleCB9KQotewotfQotCi1UZXh0Qm94
SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6
SXRlcmF0b3IgaXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRv
ciBlbmQpCi0gICAgOiBtX3RleHRCb3goU2ltcGxlUGF0aCB7IGl0ZXJhdG9yLCBlbmQgfSkKK1Rl
eHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFy
aWFudCkKKyAgICA6IG1fdGV4dEJveChXVEZNb3ZlKHBhdGhWYXJpYW50KSkKIHsKIH0KIApAQCAt
ODAsMTIgKzcyLDE3IEBAIGJvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiAKIFRl
eHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIHsK
LSAgICBpZiAoYXV0byogc2ltcGxlTGluZUxheW91dCA9IHRleHQuc2ltcGxlTGluZUxheW91dCgp
KSB7CisgICAgYXV0byYgZmxvdyA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnRleHQuY29u
dGFpbmluZ0Jsb2NrRm9yT2JqZWN0SW5GbG93KCkpOworCisgICAgaWYgKGF1dG8qIHNpbXBsZUxp
bmVMYXlvdXQgPSBmbG93LnNpbXBsZUxpbmVMYXlvdXQoKSkgewogICAgICAgICBhdXRvIHJhbmdl
ID0gc2ltcGxlTGluZUxheW91dC0+cnVuUmVzb2x2ZXIoKS5yYW5nZUZvclJlbmRlcmVyKHRleHQp
OwotICAgICAgICByZXR1cm4geyByYW5nZS5iZWdpbigpLCByYW5nZS5lbmQoKSB9OworICAgICAg
ICByZXR1cm4geyBTaW1wbGVQYXRoIHsgcmFuZ2UuYmVnaW4oKSwgcmFuZ2UuZW5kKCkgfSB9Owog
ICAgIH0KIAotICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IgeyB0ZXh0LmZpcnN0VGV4dEJveCgp
IH07CisgICAgaWYgKGF1dG8qIGxmY0xpbmVMYXlvdXQgPSBmbG93LmxmY0xpbmVMYXlvdXQoKSkK
KyAgICAgICAgcmV0dXJuIGxmY0xpbmVMYXlvdXQtPnRleHRCb3hlc0Zvcih0ZXh0KTsKKworICAg
IHJldHVybiB7IENvbXBsZXhQYXRoIHsgdGV4dC5maXJzdFRleHRCb3goKSB9IH07CiB9CiAKIFRl
eHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0
JiB0ZXh0KQpAQCAtOTUsNyArOTIsOCBAQCBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5U
ZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKICAgICAgICAgZm9yIChhdXRvKiB0
ZXh0Qm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsgdGV4dEJveDsgdGV4dEJveCA9IHRleHRCb3gt
Pm5leHRUZXh0Qm94KCkpCiAgICAgICAgICAgICBzb3J0ZWRUZXh0Qm94ZXMuYXBwZW5kKHRleHRC
b3gpOwogICAgICAgICBzdGQ6OnNvcnQoc29ydGVkVGV4dEJveGVzLmJlZ2luKCksIHNvcnRlZFRl
eHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6Y29tcGFyZUJ5U3RhcnQpOwotICAgICAgICBy
ZXR1cm4gVGV4dEJveEl0ZXJhdG9yIHsgV1RGTW92ZShzb3J0ZWRUZXh0Qm94ZXMpLCAwIH07Cisg
ICAgICAgIGF1dG8qIGZpcnN0ID0gc29ydGVkVGV4dEJveGVzWzBdOworICAgICAgICByZXR1cm4g
eyBDb21wbGV4UGF0aCB7IGZpcnN0LCBXVEZNb3ZlKHNvcnRlZFRleHRCb3hlcyksIDAgfSB9Owog
ICAgIH0KIAogICAgIHJldHVybiBmaXJzdFRleHRCb3hGb3IodGV4dCk7CkBAIC0xMDYsMTIgKzEw
NCw4IEBAIFRleHRCb3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkK
ICAgICByZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCkgfTsKIH0KIAotRWxlbWVudEJveEl0
ZXJhdG9yOjpFbGVtZW50Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lRWxlbWVudEJveCogaW5saW5l
RWxlbWVudEJveCkKLSAgICA6IG1fYm94KENvbXBsZXhQYXRoIHsgaW5saW5lRWxlbWVudEJveCwg
eyB9IH0pCi17Ci19Ci1FbGVtZW50Qm94SXRlcmF0b3I6OkVsZW1lbnRCb3hJdGVyYXRvcihTaW1w
bGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRlcmF0b3IsIFNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQpCi0gICAgOiBtX2JveChTaW1wbGVQYXRo
IHsgaXRlcmF0b3IsIGVuZCB9KQorRWxlbWVudEJveEl0ZXJhdG9yOjpFbGVtZW50Qm94SXRlcmF0
b3IoQm94OjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQorICAgIDogbV9ib3goV1RGTW92ZShw
YXRoVmFyaWFudCkpCiB7CiB9CiAKQEAgLTEyNCwxNCArMTE4LDIxIEBAIGJvb2wgRWxlbWVudEJv
eEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiAKIEVsZW1lbnRCb3hJdGVyYXRvciBlbGVtZW50Qm94
Rm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYgcmVuZGVyRWxlbWVudCkKIHsKLSAgICBpZiAoYXV0
byYgcGFyZW50ID0gKnJlbmRlckVsZW1lbnQucGFyZW50KCk7IGlzPFJlbmRlckJsb2NrRmxvdz4o
cGFyZW50KSkgewotICAgICAgICBpZiAoYXV0byogc2ltcGxlTGluZUxheW91dCA9IGRvd25jYXN0
PFJlbmRlckJsb2NrRmxvdz4ocGFyZW50KS5zaW1wbGVMaW5lTGF5b3V0KCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gcmFuZ2UgPSBzaW1wbGVMaW5lTGF5b3V0LT5ydW5SZXNvbHZlcigpLnJhbmdlRm9y
UmVuZGVyZXIocmVuZGVyRWxlbWVudCk7Ci0gICAgICAgICAgICByZXR1cm4geyByYW5nZS5iZWdp
bigpLCByYW5nZS5lbmQoKSB9OwotICAgICAgICB9CisgICAgYXV0byogY29udGFpbmluZ0Jsb2Nr
ID0gcmVuZGVyRWxlbWVudC5jb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIWlzPFJlbmRlckJs
b2NrRmxvdz4oY29udGFpbmluZ0Jsb2NrKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1
dG8mIGZsb3cgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjb250YWluaW5nQmxvY2spOwor
CisgICAgaWYgKGF1dG8qIHNpbXBsZUxpbmVMYXlvdXQgPSBmbG93LnNpbXBsZUxpbmVMYXlvdXQo
KSkgeworICAgICAgICBhdXRvIHJhbmdlID0gc2ltcGxlTGluZUxheW91dC0+cnVuUmVzb2x2ZXIo
KS5yYW5nZUZvclJlbmRlcmVyKHJlbmRlckVsZW1lbnQpOworICAgICAgICByZXR1cm4geyBTaW1w
bGVQYXRoKHJhbmdlLmJlZ2luKCksIHJhbmdlLmVuZCgpKSB9OwogICAgIH0KIAotICAgIHJldHVy
biBFbGVtZW50Qm94SXRlcmF0b3IgeyByZW5kZXJFbGVtZW50LmlubGluZUJveFdyYXBwZXIoKSB9
OworICAgIGlmIChhdXRvKiBsZmNMaW5lTGF5b3V0ID0gZmxvdy5sZmNMaW5lTGF5b3V0KCkpCisg
ICAgICAgIHJldHVybiBsZmNMaW5lTGF5b3V0LT5lbGVtZW50Qm94Rm9yKHJlbmRlckVsZW1lbnQp
OworCisgICAgcmV0dXJuIHsgQ29tcGxleFBhdGgocmVuZGVyRWxlbWVudC5pbmxpbmVCb3hXcmFw
cGVyKCkpIH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVMYXlvdXRUcmF2ZXJzYWwuaAppbmRleCAxMzRmNDIwYjUwZi4uMDZhNzJjM2UzMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJz
YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVy
c2FsLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIK
ICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCIKKyNpbmNsdWRlICJM
aW5lTGF5b3V0VHJhdmVyc2FsTEZDUGF0aC5oIgogI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJz
YWxTaW1wbGVQYXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC00Nyw3ICs0OCwxMyBAQCBzdHJ1Y3QgRW5kSXRlcmF0b3IgeyB9OwogCiBj
bGFzcyBCb3ggewogcHVibGljOgotICAgIHVzaW5nIFBhdGhWYXJpYW50ID0gVmFyaWFudDxTaW1w
bGVQYXRoLCBDb21wbGV4UGF0aD47CisgICAgdXNpbmcgUGF0aFZhcmlhbnQgPSBWYXJpYW50PAor
ICAgICAgICBTaW1wbGVQYXRoLAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQorICAgICAgICBMRkNQYXRoLAorI2VuZGlmCisgICAgICAgIENvbXBsZXhQYXRoCisgICAgPjsK
IAogICAgIEJveChQYXRoVmFyaWFudCYmKTsKIApAQCAtODQsMTAgKzkxLDcgQEAgcHVibGljOgog
Y2xhc3MgVGV4dEJveEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBUZXh0Qm94SXRlcmF0b3IoKSA6
IG1fdGV4dEJveChDb21wbGV4UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07Ci0KLSAgICBleHBs
aWNpdCBUZXh0Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4dEJveCopOwotICAgIFRleHRCb3hJ
dGVyYXRvcihWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+JiYgc29ydGVkLCBzaXplX3QgaW5k
ZXgpOwotICAgIFRleHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6
SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQpOwor
ICAgIFRleHRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOwogCiAgICAgVGV4dEJveEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigp
OyB9CiAgICAgVGV4dEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7CkBA
IC0xMTMsOSArMTE3LDcgQEAgcHJpdmF0ZToKIGNsYXNzIEVsZW1lbnRCb3hJdGVyYXRvciB7CiBw
dWJsaWM6CiAgICAgRWxlbWVudEJveEl0ZXJhdG9yKCkgOiBtX2JveChDb21wbGV4UGF0aCB7IG51
bGxwdHIsIHsgfSB9KSB7IH07Ci0KLSAgICBleHBsaWNpdCBFbGVtZW50Qm94SXRlcmF0b3IoY29u
c3QgSW5saW5lRWxlbWVudEJveCopOwotICAgIEVsZW1lbnRCb3hJdGVyYXRvcihTaW1wbGVMaW5l
TGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29s
dmVyOjpJdGVyYXRvciBlbmQpOworICAgIEVsZW1lbnRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJp
YW50JiYpOwogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFh
dEVuZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVMYXlvdXRUcmF2ZXJzYWxMRkNQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9MaW5lTGF5b3V0VHJhdmVyc2FsTEZDUGF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5kMGUwNjkzZmE4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxMRkNQYXRoLmgKQEAgLTAsMCAr
MSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiSW5saW5lUmVzdWx0cy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2FsIHsKKworc3Rh
dGljIEZsb2F0UG9pbnQgbGluZVBvc2l0aW9uKGZsb2F0IGxvZ2ljYWxMZWZ0LCBmbG9hdCBsb2dp
Y2FsVG9wKQoreworICAgIHJldHVybiBGbG9hdFBvaW50KGxvZ2ljYWxMZWZ0LCByb3VuZGYobG9n
aWNhbFRvcCkpOworfQorCitjbGFzcyBMRkNQYXRoIHsKK3B1YmxpYzoKKyAgICBMRkNQYXRoKGNv
bnN0IExheW91dDo6SW5saW5lUmVzdWx0cyYgaW5saW5lUmVzdWx0cywgc2l6ZV90IHJ1bkluZGV4
LCBzaXplX3QgZW5kSW5kZXgpCisgICAgICAgIDogbV9pbmxpbmVSZXN1bHRzKCZpbmxpbmVSZXN1
bHRzKQorICAgICAgICAsIG1fcnVuSW5kZXgocnVuSW5kZXgpCisgICAgICAgICwgbV9lbmRJbmRl
eChlbmRJbmRleCkKKyAgICB7IH0KKyAgICBMRkNQYXRoKExGQ1BhdGgmJikgPSBkZWZhdWx0Owor
ICAgIExGQ1BhdGgoY29uc3QgTEZDUGF0aCYpID0gZGVmYXVsdDsKKyAgICBMRkNQYXRoJiBvcGVy
YXRvcj0oY29uc3QgTEZDUGF0aCYpID0gZGVmYXVsdDsKKyAgICBMRkNQYXRoJiBvcGVyYXRvcj0o
TEZDUGF0aCYmKSA9IGRlZmF1bHQ7CisKKyAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIGxvZ2ljYWxSZWN0KCk7IH0KKyAgICBGbG9hdFJlY3QgbG9naWNhbFJlY3QoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgYXV0byBsb2dpY2FsUmVjdCA9IHJ1bigpLmxvZ2ljYWxSZWN0KCk7Cisg
ICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBsaW5lUG9zaXRpb24obG9naWNhbFJlY3QubGVm
dCgpLCBsb2dpY2FsUmVjdC50b3AoKSk7CisgICAgICAgIHJldHVybiB7IHBvc2l0aW9uLCBsb2dp
Y2FsUmVjdC5zaXplKCkgfTsKKyAgICB9CisKKyAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBkaXJPdmVycmlkZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9IC8vIEZJWE1FOiBJbXBsZW1lbnQuCisKKyAgICBib29sIGhhc0h5cGhlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9IC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgU3RyaW5nVmll
dyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dENvbnRleHQoKS0+Y29udGVudCgpOyB9
CisgICAgdW5zaWduZWQgbG9jYWxTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRl
eHRDb250ZXh0KCktPnN0YXJ0KCkgLSBmaXJzdFJ1bigpLnRleHRDb250ZXh0KCktPnN0YXJ0KCk7
IH0KKyAgICB1bnNpZ25lZCBsb2NhbEVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRl
eHRDb250ZXh0KCktPmVuZCgpIC0gZmlyc3RSdW4oKS50ZXh0Q29udGV4dCgpLT5zdGFydCgpOyB9
CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dENvbnRleHQo
KS0+ZW5kKCkgLSBydW4oKS50ZXh0Q29udGV4dCgpLT5zdGFydCgpOyB9CisKKyAgICBib29sIGlz
TGFzdE9uTGluZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNMYXN0KCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYXV0byYgbmV4dCA9IGRpc3BsYXlSdW5zKClbbV9y
dW5JbmRleCArIDFdOworICAgICAgICByZXR1cm4gcnVuKCkubGluZUluZGV4KCkgIT0gbmV4dC5s
aW5lSW5kZXgoKTsKKyAgICB9CisgICAgYm9vbCBpc0xhc3QoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fcnVuSW5kZXggKyAxID09IG1fZW5kSW5kZXg7CisgICAgfTsKKworICAgIHZv
aWQgdHJhdmVyc2VOZXh0VGV4dEJveEluVmlzdWFsT3JkZXIoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFhdEVuZCgpKTsKKyAgICAgICAgKyttX3J1bkluZGV4OworICAgICAgICB3aGlsZSAoIWF0
RW5kKCkgJiYgIXJ1bigpLnRleHRDb250ZXh0KCkpCisgICAgICAgICAgICArK21fcnVuSW5kZXg7
CisgICAgfQorICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCkgeyAgdHJh
dmVyc2VOZXh0VGV4dEJveEluVmlzdWFsT3JkZXIoKTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IExGQ1BhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZVJlc3VsdHMgPT0g
b3RoZXIubV9pbmxpbmVSZXN1bHRzICYmIG1fcnVuSW5kZXggPT0gb3RoZXIubV9ydW5JbmRleDsg
fQorICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX3J1bkluZGV4ID09IG1fZW5kSW5k
ZXg7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBMYXlvdXQ6OklubGluZVJlc3VsdHM6OkRpc3Bs
YXlSdW5zJiBkaXNwbGF5UnVucygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lUmVzdWx0cy0+ZGlz
cGxheVJ1bnM7IH0KKyAgICBjb25zdCBEaXNwbGF5OjpSdW4mIGZpcnN0UnVuKCkgY29uc3QgeyBy
ZXR1cm4gZGlzcGxheVJ1bnMoKVswXTsgfQorICAgIGNvbnN0IERpc3BsYXk6OlJ1biYgcnVuKCkg
Y29uc3QgeyByZXR1cm4gZGlzcGxheVJ1bnMoKVttX3J1bkluZGV4XTsgfQorCisgICAgUmVmUHRy
PGNvbnN0IExheW91dDo6SW5saW5lUmVzdWx0cz4gbV9pbmxpbmVSZXN1bHRzOworICAgIHNpemVf
dCBtX3J1bkluZGV4IHsgMCB9OworICAgIHNpemVfdCBtX2VuZEluZGV4IHsgMCB9OworfTsKKwor
fQorfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384578</attachid>
            <date>2019-12-01 12:21:36 -0800</date>
            <delta_ts>2019-12-02 00:07:35 -0800</delta_ts>
            <desc>patch</desc>
            <filename>linelayouttraversal-lfc-2.patch</filename>
            <type>text/plain</type>
            <size>49111</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NTFjOTFmOTViNi4uMGJmZGIzYmI4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTktMTItMDEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIFtMRkNdW1JlbmRlciB0cmVlXSBTdXBwb3J0IExGQyBpbiBMaW5lTGF5b3V0
VHJhdmVyc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDQ3MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgdHJhdmVyc2luZyBMRkMgaW5saW5lIGxheW91dCB0byBUZXh0Qm94
SXRlcmF0b3IgYW5kIEVsZW1lbnRCb3hJdGVyYXRvci4KKyAgICAgICAgVGhpcyBtYWtlcyByZW5k
ZXIgdHJlZSBkdW1wcyBhbmQgVGV4dEl0ZXJhdG9yIHdvcmsgd2l0aCBMRkMgbGF5b3V0LgorCisg
ICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UmVuZGVyQmxvY2tGbG93TGluZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6UmVuZGVyQmxvY2tGbG93TGluZUxheW91dDo6aW5saW5lUmVzdWx0
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVM
YXlvdXQ6OnRleHRCb3hlc0ZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJl
bmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OmVsZW1lbnRCb3hGb3IgY29uc3QpOgorICAgICAgICAq
IGxheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Lmg6CisgICAgICAgICogbGF5b3V0L1Zl
cmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNo
aW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6Cisg
ICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAg
ICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxh
cHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlz
cGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
cGFpbnRJbmxpbmVDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpsYXlvdXRCb3ggY29uc3Qp
OgorCisgICAgICAgIFJlcGxhY2Ugc3R5bGUgd2l0aCBsYXlvdXQgYm94IHdlYWsgcG9pbnRlci4g
VGhpcyBhbGxvd3MgZmluZGluZyBydW5zIGZvciBhIGdpdmVuIGJveC4KKworICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6UnVuOjpzdHlsZSBjb25zdCk6CisKKyAgICAgICAgR2V0IHN0eWxlIGZy
b20gdGhlIGxheW91dCBib3guCisKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6UnVu
KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpzZXREaXNwbGF5Qm94ZXNGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUpOgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OlF1aXJrczo6bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcgY29uc3QpOgorICAgICAgICAq
IGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnJlc3VsdHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmNsZWFy
UmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0
ZTo6ZW5zdXJlUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdTdGF0ZTo6ZGlzcGxheVJ1bnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmRpc3BsYXlSdW5zKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpsaW5lQm94
ZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU6OmxpbmVCb3hlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6YWRkTGluZUJveCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6bGluZUJveEZvclJ1biBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdTdGF0ZTo6YWRkRGlzcGxheVJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6cmVzZXREaXNwbGF5UnVucyk6IERlbGV0ZWQuCisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YWxpZ25Db250ZW50VmVydGlj
YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphZGp1c3RCYXNl
bGluZUFuZExpbmVIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVJlc3VsdHMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L1JlbmRlckJs
b2NrRmxvd0xpbmVMYXlvdXQuaC4KKworICAgICAgICBGYWN0b3IgaW50byBhIHN0cnVjdC4gTWFr
ZSBpdCByZWZjb3VudGVkIGZvciBzYWZlIGFjY2VzcyBmcm9tIGxpbmUgbGF5b3V0IGl0ZXJhdG9y
cy4KKworICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSZXN1bHRzOjpsaW5lQm94Rm9y
UnVuIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dElubGluZVJ1bnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRl
cmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Zmxvd0ZvclRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94
Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJv
eEluVGV4dE9yZGVyRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6
OkVsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IpOgorICAgICAgICAqIHJlbmRl
cmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGlu
ZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RGlzcGxheVJ1blBhdGg6OkRpc3BsYXlSdW5QYXRo
KToKKworICAgICAgICBOZXcgcGF0aCBmb3IgdHJhdmVyc2luZyBkaXNwbGF5IHJ1bnMuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjpyZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlS
dW5QYXRoOjpsb2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0
VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6
ZGlyT3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNh
bDo6RGlzcGxheVJ1blBhdGg6OmlzTGluZUJyZWFrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjpoYXNIeXBoZW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RGlzcGxheVJ1blBhdGg6OnRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RGlzcGxh
eVJ1blBhdGg6OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGlu
ZUxheW91dFRyYXZlcnNhbDo6RGlzcGxheVJ1blBhdGg6OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjps
ZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RGlz
cGxheVJ1blBhdGg6OmlzTGFzdE9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6aXNMYXN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjp0cmF2ZXJzZU5l
eHRUZXh0Qm94SW5WaXN1YWxPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJh
dmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6dHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6
OkRpc3BsYXlSdW5QYXRoOjphdEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6ZGlzcGxheVJ1bnMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RGlzcGxheVJ1blBhdGg6OmZpcnN0UnVu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlS
dW5QYXRoOjpydW4gY29uc3QpOgorCiAyMDE5LTEyLTAxICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uIChyMjUyODkzKTogbG9hZGVyL3N0YXRl
b2JqZWN0cy9wdXNoc3RhdGUtc2l6ZS5odG1sIGlzIGNyYXNoaW5nIG9uIG1hYyBkZWJ1ZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKaW5kZXggNjc0NGM4ZThlMzMuLmExNTBhMzczODIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTEzMjEsNiArMTMyMSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKIAogICAgIHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaAogICAg
IHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oCisgICAgcmVu
ZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgKICAgICByZW5k
ZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsU2ltcGxlUGF0aC5oCiAgICAgcmVuZGVyaW5n
L2xpbmUvTGluZVdpZHRoLmgKICAgICByZW5kZXJpbmcvbGluZS9UcmFpbGluZ09iamVjdHMuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDBmMDhhM2JkNmMyLi41YzQ2YmE2MDdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA0Miw3ICsyMDQyLDcgQEAKIAkJ
NkY5OTVBM0ExQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5OTVBMzAxQTcw
ODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oICovOyB9OwogCQk2RkE0
NDU0RTg5OEYyRkMxNjhCQzM4QzEgLyogSlNCZWZvcmVVbmxvYWRFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlFMDRBMjdCRUQyRjgxRjk4RTkw
MjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCAqLzsgfTsKIAkJNkZCMTFCNUMyMTc4M0ZEMDAw
RTJBNTc0IC8qIFRleHRVdGlsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RkIxMUI1OTIxNzgzRkNGMDBFMkE1NzQgLyogVGV4dFV0aWwuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RkI0N0U2MzIyNzc0
MjVBMDBDN0JDQjAgLyogSW5saW5lTGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNDdFNjEyMjc3NDI1QTAwQzdCQ0IwIC8qIElubGluZUxp
bmVCb3guaCAqLzsgfTsKKwkJNkZCNDdFNjMyMjc3NDI1QTAwQzdCQ0IwIC8qIElubGluZUxpbmVC
b3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjQ3
RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBJbmxpbmVMaW5lQm94LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZCNUUyMTQyMjFGMjQ1MzAwMzk4OUNG
IC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkZCNUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFu
Z2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBEaXNwbGF5UnVuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkNFMUExODIyNjE4QUIzMDA0
RjAzNDMgLyogRGlzcGxheVJ1bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTZGRDlDRDU0MjI3RTIxQzgwMEU1Mzk1NyAvKiBEaXNwbGF5UmVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZEOUNENTIy
MjdFMjFDODAwRTUzOTU3IC8qIERpc3BsYXlSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4MTgsNiArNDgxOCwxMCBAQAogCQlFNDQ2MTQ1
MjBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQxRTM0MENCRkI2MDkwMEFGMkVDRSAvKiBSZW5k
ZXJWaWRlby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUU0NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEI0QkIyMTQxNjUwRDcw
MDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCAqLzsgfTsKIAkJRTQ0RkExODUxQkNBNkI1QTAw
OTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9z
ZWRUcmVlSXRlcmF0b3IuaCAqLzsgfTsKKwkJRTQ1MUM2MjgyMzkyOTNFQzAwOTkzMTkwIC8qIExp
bmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MUM2MjcyMzkyOTNFQjAwOTkzMTkwIC8qIExpbmVM
YXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0NTFDNjMxMjM5NDAyNzkwMDk5MzE5MCAvKiBMYXlv
dXRVbml0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkY3MzkxOEMyMTA2Q0VERDAwNkFGMjYyIC8qIExheW91dFVuaXRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTQ1MUM2MzIyMzk0MDMxQTAwOTkz
MTkwIC8qIE1hcmdpblR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RkU3QUEyNjIxQzM3QjYzMDAyOTZEQ0QgLyogTWFyZ2luVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNDUxQzYzNDIz
OTQwNThGMDA5OTMxOTAgLyogSW5saW5lUmVzdWx0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MUM2MzMyMzk0MDU4RTAwOTkzMTkwIC8qIElubGlu
ZVJlc3VsdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2NzAw
NUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0OTI2QzAwNERG
QzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1hdGNo
ZWREZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcg
LyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCAqLzsg
fTsKQEAgLTE1MTQ5LDYgKzE1MTUzLDggQEAKIAkJRTQ0RUUzQTcxNzU3NkU1NTAwRUVFOENGIC8q
IEZvbnRHZW5lcmljRmFtaWxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEdlbmVyaWNGYW1pbGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2
RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tcG9zZWRUcmVlSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTQ0RkExODYxQkNBOTE1NjAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBvc2VkVHJlZUl0ZXJhdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ1MUM2MjcyMzkyOTNFQjAwOTkz
MTkwIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ1MUM2MzMyMzk0MDU4RTAwOTkzMTkwIC8q
IElubGluZVJlc3VsdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5l
UmVzdWx0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDUzMjJBOTE0MENFMjY3
MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTZWxlY3RvclF1ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNDUzOTAxOTBFQUZDQUNBMDAzNjk1QzggLyogUGFzdGVib2FyZElPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlYm9hcmRJT1Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjcwMSw2ICsxNjcwNyw3IEBACiAJ
CQkJNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmggKi8sCiAJ
CQkJNkYwQ0Q2OTIyMjlFRDMxOTAwQzU5OTRFIC8qIElubGluZUxpbmVCdWlsZGVyLmNwcCAqLywK
IAkJCQk2RjBDRDY5NDIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5lTGluZUJ1aWxkZXIuaCAqLywK
KwkJCQlFNDUxQzYzMzIzOTQwNThFMDA5OTMxOTAgLyogSW5saW5lUmVzdWx0cy5oICovLAogCQkJ
CTZGMUNDMURDMjI1RjhCNDEwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5jcHAgKi8sCiAJCQkJ
NkYxQ0MxREQyMjVGOEI0MjAwNzIwQUQyIC8qIElubGluZVRleHRJdGVtLmggKi8sCiAJCQkJNkYy
NUIyMDAyMjBBODVBQjAwMDAwMTFCIC8qIExpbmVMYXlvdXRDb250ZXh0LmNwcCAqLywKQEAgLTI4
NzMxLDggKzI4NzM4LDkgQEAKIAkJCQlGRkVGQUIyOTE4MzgwREEwMDA1MTQ1MzQgLyogTGluZUxh
eW91dFN0YXRlLmggKi8sCiAJCQkJRTQ4NEEzM0QyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlv
dXRUcmF2ZXJzYWwuY3BwICovLAogCQkJCUU0ODRBMzNCMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5l
TGF5b3V0VHJhdmVyc2FsLmggKi8sCi0JCQkJRTQzNDNEMjEyMzkyNzc4MzAwRUJCQjY2IC8qIExp
bmVMYXlvdXRUcmF2ZXJzYWxTaW1wbGVQYXRoLmggKi8sCiAJCQkJRTQzNDNEMjQyMzkyNzc4RjAw
RUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oICovLAorCQkJCUU0NTFD
NjI3MjM5MjkzRUIwMDk5MzE5MCAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGgu
aCAqLywKKwkJCQlFNDM0M0QyMTIzOTI3NzgzMDBFQkJCNjYgLyogTGluZUxheW91dFRyYXZlcnNh
bFNpbXBsZVBhdGguaCAqLywKIAkJCQlGRkRCQzA0NjE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdp
ZHRoLmNwcCAqLywKIAkJCQlGRkRCQzA0NTE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmgg
Ki8sCiAJCQkJRkZBQzMwRkQxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAg
Ki8sCkBAIC0zMDA0MCw2ICszMDA0OCw3IEBACiAJCQkJQTg3MURCMkIwQTE1MEJENjAwQjEyQTY4
IC8qIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREIy
QTBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4NzFEQjJGMEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVDb2xFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNDUxQzYyODIzOTI5M0VDMDA5OTMxOTAgLyogTGluZUxheW91
dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREIyNzBB
MTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTg3MURCMkMwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZVBhcnRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODcxREIzMTBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlUm93RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDE1MSw2ICszMDE2MCw3IEBACiAJCQkJQkM3RjQ0
QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENUE1OTMxMTUyNTI1RDAwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJn
aW5UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8q
IEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0
MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEMjdBRTUwMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4g
SGVhZGVycyAqLywKQEAgLTMyNDg2LDYgKzMyNDk2LDcgQEAKIAkJCQlCMjIyN0FEQTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
REQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0FERjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTQ1MUM2MzEyMzk0MDI3OTAwOTkzMTkwIC8qIExheW91dFVuaXRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U1OEQ1ODFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJh
bnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUUyMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdUUmVmRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTUwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1RTcGFuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjgxNSw2
ICszMjgyNiw3IEBACiAJCQkJNDlDN0I5RTAxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMUmVuZGVy
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNGM0QzNkExQTY5QjdCOTAwNTlGQzJC
IC8qIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGOTk1
QTIyMUE3MDc4QjEwMEE3MzVGNCAvKiBXZWJHTFNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBJbmxpbmVSZXN1bHRzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUM3QjlFMzEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xTaGFkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUEwN0QzMzU4MTUyQjYzMkQwMDFCNjM5MyAvKiBXZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDFEM0NGODcxNEJEMEEzMDAwRkU5OTcw
IC8qIFdlYkdMU2hhcmVkT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA2YzY2ZTFh
M2E0OS4uNWVhZTY0ZDAyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBMYXlvdXRVbml0
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29udGVudEhlaWdodEZvckZvcm1hdHRpbmdD
b250ZXh0Um9vdChjbwogICAgIGF1dG8gYm90dG9tID0gYm9yZGVyQW5kUGFkZGluZ1RvcDsKICAg
ICBhdXRvJiBmb3JtYXR0aW5nUm9vdENvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5
b3V0Qm94KTsKICAgICBpZiAoZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuZXN0YWJsaXNoZXNJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRvd25j
YXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0
aW5nU3RhdGUoZm9ybWF0dGluZ1Jvb3RDb250YWluZXIpKS5saW5lQm94ZXMoKTsKKyAgICAgICAg
YXV0byYgbGluZUJveGVzID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRT
dGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nUm9vdENvbnRhaW5lcikp
LnJlc3VsdHMoKS0+bGluZUJveGVzOwogICAgICAgICAvLyBFdmVuIGVtcHR5IGNvbnRhaW5lcnMg
Z2VuZXJhdGUgb25lIGxpbmUuIAogICAgICAgICBBU1NFUlQoIWxpbmVCb3hlcy5pc0VtcHR5KCkp
OwogICAgICAgICB0b3AgPSBsaW5lQm94ZXMuZmlyc3QoKS5sb2dpY2FsVG9wKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5jcHAKaW5k
ZXggODFkMDhkYzMyNmMuLjY3YWQ2YzVmZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L1JlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiTGF5b3V0VHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNp
bmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGlu
ZUxheW91dC5oIgogCkBAIC03OCw3ICs3OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93TGluZUxh
eW91dDo6bGF5b3V0KCkKICAgICBhdXRvIGludmFsaWRhdGlvblN0YXRlID0gSW52YWxpZGF0aW9u
U3RhdGUgeyB9OwogICAgIGxheW91dENvbnRleHQubGF5b3V0KG1fZmxvdy5jb250ZW50U2l6ZSgp
LCBpbnZhbGlkYXRpb25TdGF0ZSk7CiAKLSAgICBhdXRvJiBsaW5lQm94ZXMgPSBkb3duY2FzdDxJ
bmxpbmVGb3JtYXR0aW5nU3RhdGU+KG1fbGF5b3V0U3RhdGUtPmVzdGFibGlzaGVkRm9ybWF0dGlu
Z1N0YXRlKHJvb3RDb250YWluZXIpKS5saW5lQm94ZXMoKTsKKyAgICBhdXRvJiBsaW5lQm94ZXMg
PSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KG1fbGF5b3V0U3RhdGUtPmVzdGFibGlz
aGVkRm9ybWF0dGluZ1N0YXRlKHJvb3RDb250YWluZXIpKS5yZXN1bHRzKCktPmxpbmVCb3hlczsK
ICAgICBhdXRvIGhlaWdodCA9IGxpbmVCb3hlcy5sYXN0KCkubG9naWNhbEJvdHRvbSgpOwogCiAg
ICAgYXV0byYgZGlzcGxheUJveCA9IG1fbGF5b3V0U3RhdGUtPmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3gocm9vdENvbnRhaW5lcik7CkBAIC05MCw2ICs5MSwxMSBAQCBMYXlvdXRVbml0IFJlbmRlckJs
b2NrRmxvd0xpbmVMYXlvdXQ6OmNvbnRlbnRCb3hIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBt
X2xheW91dFN0YXRlID8gbV9sYXlvdXRTdGF0ZS0+ZGlzcGxheUJveEZvckxheW91dEJveChtX2xh
eW91dFN0YXRlLT5yb290KCkpLmNvbnRlbnRCb3hIZWlnaHQoKSA6IDBfbHU7CiB9CiAKK2NvbnN0
IElubGluZVJlc3VsdHMqIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OmlubGluZVJlc3VsdHMo
KSBjb25zdAoreworICAgIHJldHVybiBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KG1f
bGF5b3V0U3RhdGUtPmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKG1fdHJlZUNvbnRlbnQtPnJv
b3RMYXlvdXRCb3goKSkpLnJlc3VsdHMoKTsKK30KKwogdm9pZCBSZW5kZXJCbG9ja0Zsb3dMaW5l
TGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogewogICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250
ZXh0KCk7CkBAIC0xMDIsNiArMTA4LDQ3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93TGluZUxheW91
dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwCiAgICAg
Z3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKIH0KIAorTGluZUxheW91dFRyYXZlcnNhbDo6VGV4
dEJveEl0ZXJhdG9yIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OnRleHRCb3hlc0Zvcihjb25z
dCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdAoreworICAgIGF1dG8qIHJlc3VsdHMgPSBp
bmxpbmVSZXN1bHRzKCk7CisgICAgaWYgKCFyZXN1bHRzKQorICAgICAgICByZXR1cm4geyB9Owor
ICAgIGF1dG8qIGxheW91dEJveCA9IG1fdHJlZUNvbnRlbnQtPmxheW91dEJveEZvclJlbmRlcmVy
KHJlbmRlclRleHQpOworICAgIEFTU0VSVChsYXlvdXRCb3gpOworCisgICAgT3B0aW9uYWw8c2l6
ZV90PiBmaXJzdEluZGV4ID0gMDsKKyAgICBzaXplX3QgbGFzdEluZGV4ID0gMDsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdHMtPmRpc3BsYXlSdW5zLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGF1dG8mIHJ1biA9ICByZXN1bHRzLT5kaXNwbGF5UnVuc1tpXTsKKyAgICAgICAgaWYg
KCZydW4ubGF5b3V0Qm94KCkgPT0gbGF5b3V0Qm94KSB7CisgICAgICAgICAgICBpZiAoIWZpcnN0
SW5kZXgpCisgICAgICAgICAgICAgICAgZmlyc3RJbmRleCA9IGk7CisgICAgICAgICAgICBsYXN0
SW5kZXggPSBpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghZmlyc3RJbmRleCkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiB7IExpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3Bs
YXlSdW5QYXRoKCpyZXN1bHRzLCAqZmlyc3RJbmRleCwgbGFzdEluZGV4ICsgMSkgfTsKK30KKwor
TGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yIFJlbmRlckJsb2NrRmxvd0xp
bmVMYXlvdXQ6OmVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJMaW5l
QnJlYWspIGNvbnN0Cit7CisgICAgYXV0byogcmVzdWx0cyA9IGlubGluZVJlc3VsdHMoKTsKKyAg
ICBpZiAoIXJlc3VsdHMpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byogbGF5b3V0Qm94
ID0gbV90cmVlQ29udGVudC0+bGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyTGluZUJyZWFrKTsK
KyAgICBBU1NFUlQobGF5b3V0Qm94KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVz
dWx0cy0+ZGlzcGxheVJ1bnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgcnVuID0gIHJl
c3VsdHMtPmRpc3BsYXlSdW5zW2ldOworICAgICAgICBpZiAoJnJ1bi5sYXlvdXRCb3goKSA9PSBs
YXlvdXRCb3gpCisgICAgICAgICAgICByZXR1cm4geyBMaW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNw
bGF5UnVuUGF0aCgqcmVzdWx0cywgaSwgaSArIDEpIH07CisgICAgfQorCisgICAgcmV0dXJuIHsg
fTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVy
QmxvY2tGbG93TGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1JlbmRlckJsb2Nr
Rmxvd0xpbmVMYXlvdXQuaAppbmRleCBjOTcwNDE2ZDQwZS4uOTNlNmM5OWI3OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1JlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuaApAQCAt
MjgsMTcgKzI4LDIwIEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAK
ICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBSZW5kZXJCbG9ja0Zsb3c7CitjbGFzcyBSZW5kZXJMaW5lQnJlYWs7CiBzdHJ1Y3QgUGFpbnRJ
bmZvOwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgTGF5b3V0VHJlZUNvbnRlbnQ7CiBj
bGFzcyBMYXlvdXRTdGF0ZTsKK3N0cnVjdCBJbmxpbmVSZXN1bHRzOwogCiBjbGFzcyBSZW5kZXJC
bG9ja0Zsb3dMaW5lTGF5b3V0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ5
LDExICs1MiwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY2FuVXNlRm9yKGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYpOwogCiAgICAgdm9pZCBsYXlvdXQoKTsKLSAgICAKICAgICBMYXlvdXRV
bml0IGNvbnRlbnRCb3hIZWlnaHQoKSBjb25zdDsKKyAgICBjb25zdCBJbmxpbmVSZXN1bHRzKiBp
bmxpbmVSZXN1bHRzKCkgY29uc3Q7CiAKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCk7CiAKKyAgICBMaW5lTGF5b3V0VHJhdmVyc2FsOjpU
ZXh0Qm94SXRlcmF0b3IgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRleHQmKSBjb25zdDsKKyAg
ICBMaW5lTGF5b3V0VHJhdmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3IgZWxlbWVudEJveEZvcihj
b25zdCBSZW5kZXJMaW5lQnJlYWsmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIG1fZmxvdzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0VHJlZUNvbnRl
bnQ+IG1fdHJlZUNvbnRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCmlu
ZGV4IGFiYTBhOWU0OTdkLi4xNmE0ZGJmNDk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zlcmlm
aWNhdGlvbi5jcHAKQEAgLTc2LDggKzc2LDEzIEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNo
aW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjCiAg
ICAgfQogCiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0
YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwotICAgIEFTU0VS
VChpczxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkpOwotICAg
IGF1dG8mIGRpc3BsYXlSdW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxp
bmVGb3JtYXR0aW5nU3RhdGUpLmRpc3BsYXlSdW5zKCk7CisgICAgYXV0byogaW5saW5lUmVzdWx0
cyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRl
KS5yZXN1bHRzKCk7CisgICAgaWYgKCFpbmxpbmVSZXN1bHRzKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBhdXRvJiBk
aXNwbGF5UnVucyA9IGlubGluZVJlc3VsdHMtPmRpc3BsYXlSdW5zOwogCiAgICAgaWYgKGRpc3Bs
YXlSdW5zLnNpemUoKSAhPSBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKSkgewogICAgICAgICBz
dHJlYW0gPDwgIk1pc21hdGNoaW5nIG51bWJlciBvZiBydW5zOiBzaW1wbGUgcnVucygiIDw8IGxp
bmVMYXlvdXREYXRhLT5ydW5Db3VudCgpIDw8ICIpIGlubGluZSBydW5zKCIgPDwgZGlzcGxheVJ1
bnMuc2l6ZSgpIDw8ICIpIjsKQEAgLTE1Nyw4ICsxNjIsMTMgQEAgc3RhdGljIHZvaWQgY29sbGVj
dElubGluZUJveGVzKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcm9vdCwgVmVjdG9yPFdlYkNvcmU6
OklubGkKIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlv
bklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdywgY29uc3QgQ29udGFpbmVyJiBp
bmxpbmVGb3JtYXR0aW5nUm9vdCkKIHsKICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUg
PSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShpbmxpbmVGb3JtYXR0aW5n
Um9vdCk7Ci0gICAgQVNTRVJUKGlzPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0
dGluZ1N0YXRlKSk7Ci0gICAgYXV0byYgZGlzcGxheVJ1bnMgPSBkb3duY2FzdDxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkuZGlzcGxheVJ1bnMoKTsKKworICAg
IGF1dG8qIGlubGluZVJlc3VsdHMgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlu
bGluZUZvcm1hdHRpbmdTdGF0ZSkucmVzdWx0cygpOworICAgIGlmICghaW5saW5lUmVzdWx0cykg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIGF1dG8mIGRpc3BsYXlSdW5zID0gaW5saW5lUmVzdWx0cy0+ZGlzcGxheVJ1bnM7
CiAKICAgICAvLyBDb2xsZWN0IGlubGluZWJveGVzLgogICAgIFZlY3RvcjxXZWJDb3JlOjpJbmxp
bmVCb3gqPiBpbmxpbmVCb3hlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcAppbmRleCBlYzhkMWFkYThkZS4uMjI4MDljNjQ0YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgQ29u
dGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5G
bG93Tm9uUmVwbGFjZWRIZWlnaHQKICAgICAgICAgLy8gMS4gdGhlIGJvdHRvbSBlZGdlIG9mIHRo
ZSBsYXN0IGxpbmUgYm94LCBpZiB0aGUgYm94IGVzdGFibGlzaGVzIGEgaW5saW5lIGZvcm1hdHRp
bmcgY29udGV4dCB3aXRoIG9uZSBvciBtb3JlIGxpbmVzCiAgICAgICAgIGF1dG8mIGxheW91dENv
bnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KTsKICAgICAgICAgaWYgKGxh
eW91dENvbnRhaW5lci5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAg
ICAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0
ZT4obGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWlu
ZXIpKS5saW5lQm94ZXMoKTsKKyAgICAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRvd25jYXN0
PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZEZvcm1hdHRp
bmdTdGF0ZShsYXlvdXRDb250YWluZXIpKS5yZXN1bHRzKCktPmxpbmVCb3hlczsKICAgICAgICAg
ICAgIC8vIEV2ZW4gZW1wdHkgY29udGFpbmVycyBnZW5lcmF0ZSBvbmUgbGluZS4gCiAgICAgICAg
ICAgICBBU1NFUlQoIWxpbmVCb3hlcy5pc0VtcHR5KCkpOwogICAgICAgICAgICAgcmV0dXJuIHsg
bGluZUJveGVzLmxhc3QoKS5sb2dpY2FsQm90dG9tKCkgLSBib3JkZXJBbmRQYWRkaW5nVG9wLCBu
b25Db2xsYXBzZWRNYXJnaW4gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IGJiYTI1
ZTRjZmRlLi41NTNjOTA5M2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCkBAIC0zOTUs
NyArMzk1LDcgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6
bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBCb3gmIGwKIAogICAgICAgICAgICAgYXV0byBp
c0NvbnNpZGVyZWRFbXB0eSA9IFsmXSB7CiAgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGlu
Z1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5lc3Rh
Ymxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpKTsKLSAgICAgICAgICAgICAg
ICBmb3IgKGF1dG8mIGxpbmVCb3ggOiBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkpIHsKKyAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmVCb3ggOiBmb3JtYXR0aW5nU3RhdGUucmVzdWx0
cygpLT5saW5lQm94ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5lQm94LmlzQ29u
c2lkZXJlZEVtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKaW5kZXggMDk4MThkMTI2MjguLjExMzUyYjgxOTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFp
bnRlci5jcHAKQEAgLTExMiw3ICsxMTIsMTEgQEAgc3RhdGljIHZvaWQgcGFpbnRCb3hEZWNvcmF0
aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQm94JiBhYnNvbHV0ZURpc3AKIAog
c3RhdGljIHZvaWQgcGFpbnRJbmxpbmVDb250ZW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgQm94JiByb290QWJzb2x1dGVEaXNwbGF5Qm94LCBjb25zdCBMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQogewotICAgIGF1dG8mIGRpc3BsYXlSdW5z
ID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlSdW5zKCk7CisgICAgYXV0byogcmVzdWx0cyA9IGZv
cm1hdHRpbmdTdGF0ZS5yZXN1bHRzKCk7CisgICAgaWYgKCFyZXN1bHRzKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvJiBkaXNwbGF5UnVucyA9IHJlc3VsdHMtPmRpc3BsYXlSdW5zOwogICAg
IGlmIChkaXNwbGF5UnVucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTI0LDcg
KzEyOCw3IEBAIHN0YXRpYyB2b2lkIHBhaW50SW5saW5lQ29udGVudChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEJveCYgcm9vdEFic29sdXRlCiAKICAgICAgICAgICAgIGF1dG8gbG9n
aWNhbExlZnQgPSByb290QWJzb2x1dGVEaXNwbGF5Qm94LmxlZnQoKSArIHJ1bi5sb2dpY2FsTGVm
dCgpOwogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBub24tYmFzZWxpbmUgYWxpZ24gcGFpbnRp
bmcKLSAgICAgICAgICAgIGF1dG8mIGxpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveEZv
clJ1bihydW4pOworICAgICAgICAgICAgYXV0byYgbGluZUJveCA9IHJlc3VsdHMtPmxpbmVCb3hG
b3JSdW4ocnVuKTsKICAgICAgICAgICAgIGF1dG8gYmFzZWxpbmVPZmZzZXQgPSByb290QWJzb2x1
dGVEaXNwbGF5Qm94LnRvcCgpICsgbGluZUJveC5sb2dpY2FsVG9wKCkgKyBsaW5lQm94LmJhc2Vs
aW5lT2Zmc2V0KCk7CiAgICAgICAgICAgICBpZiAoYXV0byBleHBhbnNpb25Db250ZXh0ID0gdGV4
dENvbnRleHQtPmV4cGFuc2lvbigpKQogICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQo
c3R5bGUuZm9udENhc2NhZGUoKSwgVGV4dFJ1biB7IHRleHRDb250ZXh0LT5jb250ZW50KCksIGxv
Z2ljYWxMZWZ0LCBleHBhbnNpb25Db250ZXh0LT5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNp
b25Db250ZXh0LT5iZWhhdmlvciB9LCB7IGxvZ2ljYWxMZWZ0LCBiYXNlbGluZU9mZnNldCB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVu
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCmluZGV4
IGI2NTc5MTA0OTlkLi4zNzc0YjZkYmE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJEaXNwbGF5UmVjdC5oIgorI2lu
Y2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNpbmNsdWRlICJS
ZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgpAQCAtNjcsNyArNjgsNyBAQCBz
dHJ1Y3QgUnVuIHsKICAgICAgICAgT3B0aW9uYWw8RXhwYW5zaW9uQ29udGV4dD4gbV9leHBhbnNp
b25Db250ZXh0OwogICAgIH07CiAKLSAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBjb25zdCBSZWN0JiBsb2dpY2FsUmVjdCwgT3B0aW9uYWw8VGV4dENvbnRleHQ+
ID0gV1RGOjpudWxsb3B0KTsKKyAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGF5b3V0
OjpCb3gmLCBjb25zdCBSZWN0JiBsb2dpY2FsUmVjdCwgT3B0aW9uYWw8VGV4dENvbnRleHQ+ID0g
V1RGOjpudWxsb3B0KTsKIAogICAgIHNpemVfdCBsaW5lSW5kZXgoKSBjb25zdCB7IHJldHVybiBt
X2xpbmVJbmRleDsgfQogCkBAIC05NywyMCArOTgsMjEgQEAgc3RydWN0IFJ1biB7CiAgICAgdm9p
ZCBzZXRJbWFnZShDYWNoZWRJbWFnZSYgaW1hZ2UpIHsgbV9jYWNoZWRJbWFnZSA9ICZpbWFnZTsg
fQogICAgIENhY2hlZEltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2U7
IH0KIAotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5
bGU7IH0KKyAgICBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4g
Km1fbGF5b3V0Qm94OyB9CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXlvdXRCb3gtPnN0eWxlKCk7IH0KIAogcHJpdmF0ZToKICAgICAvLyBGSVhNRTog
RmluZCBvdXQgdGhlIERpc3BsYXk6OlJ1biA8LT4gcGFpbnQgc3R5bGUgc2V0dXAuCiAgICAgY29u
c3Qgc2l6ZV90IG1fbGluZUluZGV4OwotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBtX3N0eWxlOwor
ICAgIFdlYWtQdHI8Y29uc3QgTGF5b3V0OjpCb3g+IG1fbGF5b3V0Qm94OwogICAgIENhY2hlZElt
YWdlKiBtX2NhY2hlZEltYWdlIHsgbnVsbHB0ciB9OwogICAgIFJlY3QgbV9sb2dpY2FsUmVjdDsK
ICAgICBPcHRpb25hbDxUZXh0Q29udGV4dD4gbV90ZXh0Q29udGV4dDsKIH07CiAKLWlubGluZSBS
dW46OlJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0
IFJlY3QmIGxvZ2ljYWxSZWN0LCBPcHRpb25hbDxUZXh0Q29udGV4dD4gdGV4dENvbnRleHQpCitp
bmxpbmUgUnVuOjpSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91
dEJveCwgY29uc3QgUmVjdCYgbG9naWNhbFJlY3QsIE9wdGlvbmFsPFRleHRDb250ZXh0PiB0ZXh0
Q29udGV4dCkKICAgICA6IG1fbGluZUluZGV4KGxpbmVJbmRleCkKLSAgICAsIG1fc3R5bGUoc3R5
bGUpCisgICAgLCBtX2xheW91dEJveChtYWtlV2Vha1B0cihsYXlvdXRCb3gpKQogICAgICwgbV9s
b2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKICAgICAsIG1fdGV4dENvbnRleHQodGV4dENvbnRleHQp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNjVhYjk0MDA1YzAu
LjVjODFkNjVmODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00
MjYsOCArNDI2LDEwIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlC
b3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBhdXRvIGxpbmVJbmRleCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5zaXpl
KCk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVCb3goTGluZUJveCB7IGxpbmVDb250ZW50
LmxpbmVCb3ggfSk7CisgICAgYXV0byYgaW5saW5lUmVzdWx0cyA9IGZvcm1hdHRpbmdTdGF0ZS5l
bnN1cmVSZXN1bHRzKCk7CisKKyAgICBhdXRvIGxpbmVJbmRleCA9IGlubGluZVJlc3VsdHMubGlu
ZUJveGVzLnNpemUoKTsKKyAgICBpbmxpbmVSZXN1bHRzLmxpbmVCb3hlcy5hcHBlbmQoTGluZUJv
eCB7IGxpbmVDb250ZW50LmxpbmVCb3ggfSk7CiAKICAgICAvLyBDb21wdXRlIGJveCBmaW5hbCBn
ZW9tZXRyeS4KICAgICBhdXRvJiBsaW5lUnVucyA9IGxpbmVDb250ZW50LnJ1bkxpc3Q7CkBAIC00
NDEsNyArNDQzLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJv
eGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAgLy8gSW5saW5l
IGxldmVsIGNvbnRhaW5lcnMgKDxzcGFuPikgZG9uJ3QgZ2VuZXJhdGUgZGlzcGxheSBydW5zIGFu
ZCBuZWl0aGVyIGRvIGNvbXBsZXRlbHkgY29sbGFwc2VkIHJ1bnMuCiAgICAgICAgIGF1dG8gaW5p
dGlhdGVzSW5saW5lUnVuID0gIWxpbmVSdW4uaXNDb250YWluZXJTdGFydCgpICYmICFsaW5lUnVu
LmlzQ29udGFpbmVyRW5kKCkgJiYgIWxpbmVSdW4uaXNDb2xsYXBzZWRUb1Zpc3VhbGx5RW1wdHko
KTsKICAgICAgICAgaWYgKGluaXRpYXRlc0lubGluZVJ1bikKLSAgICAgICAgICAgIGZvcm1hdHRp
bmdTdGF0ZS5hZGREaXNwbGF5UnVuKHsgbGluZUluZGV4LCBsaW5lUnVuLmxheW91dEJveCgpLnN0
eWxlKCksIGxpbmVSdW4ubG9naWNhbFJlY3QoKSwgbGluZVJ1bi50ZXh0Q29udGV4dCgpIH0pOwor
ICAgICAgICAgICAgaW5saW5lUmVzdWx0cy5kaXNwbGF5UnVucy5hcHBlbmQoeyBsaW5lSW5kZXgs
IGxpbmVSdW4ubGF5b3V0Qm94KCksIGxpbmVSdW4ubG9naWNhbFJlY3QoKSwgbGluZVJ1bi50ZXh0
Q29udGV4dCgpIH0pOwogCiAgICAgICAgIGlmIChsaW5lUnVuLmlzRm9yY2VkTGluZUJyZWFrKCkp
IHsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChsb2dpY2FsUmVjdC50b3BMZWZ0
KCkpOwpAQCAtNTAxLDcgKzUwMyw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omlu
dmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmCiB7CiAgICAg
Ly8gRmluZCBvdXQgd2hhdCB3ZSBuZWVkIHRvIGludmFsaWRhdGUuIFRoaXMgaXMgd2hlcmUgd2Ug
YWRkIHNvbWUgc21hcnRzIHRvIGRvIHBhcnRpYWwgbGluZSBsYXlvdXQuCiAgICAgLy8gRm9yIG5v
dyBsZXQncyBqdXN0IGNsZWFyIHRoZSBydW5zLgotICAgIGZvcm1hdHRpbmdTdGF0ZSgpLnJlc2V0
RGlzcGxheVJ1bnMoKTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5jbGVhclJlc3VsdHMoKTsKICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBhbHNvIHdoZXJlIHdlIHdvdWxkIGRlbGV0ZSBpbmxpbmUgaXRl
bXMgaWYgdGhlaXIgY29udGVudCBjaGFuZ2VkLgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJr
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggZGE2MDY0YjY0MzUuLmRmNjkwYzJmNDIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC02Myw4
ICs2Myw4IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluZURlc2Nl
bnROZWVkc0NvbGxhcHNpbmcoY29uc3QgTGluZUJ1aWxkCiAgICAgICAgIGlmIChydW4uaXNCb3go
KSkgewogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkgJiYgbGF5
b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICAg
ICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdT
dGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29u
dGFpbmVyPihsYXlvdXRCb3gpKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5n
U3RhdGUubGluZUJveGVzKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGlubGlu
ZUJsb2NrQmFzZWxpbmUgPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkubGFzdCgpLmJhc2Vs
aW5lKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUucmVzdWx0cygp
LT5saW5lQm94ZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2Nr
QmFzZWxpbmUgPSBmb3JtYXR0aW5nU3RhdGUucmVzdWx0cygpLT5saW5lQm94ZXMubGFzdCgpLmJh
c2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUJsb2NrQmFzZWxpbmUuZGVzY2Vu
dCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDA4ZjlkODk3Y2NjLi41NGYyMWQ2YWUyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRl
ICJGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVtLmgiCiAjaW5jbHVkZSAi
SW5saW5lTGluZUJveC5oIgorI2luY2x1ZGUgIklubGluZVJlc3VsdHMuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKQEAgLTUwLDQwICs1MCwyMiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9p
bmxpbmVJdGVtczsgfQogICAgIHZvaWQgYWRkSW5saW5lSXRlbShzdGQ6OnVuaXF1ZV9wdHI8SW5s
aW5lSXRlbT4mJiBpbmxpbmVJdGVtKSB7IG1faW5saW5lSXRlbXMuYXBwZW5kKFdURk1vdmUoaW5s
aW5lSXRlbSkpOyB9CiAKLSAgICB1c2luZyBEaXNwbGF5UnVucyA9IFZlY3RvcjxEaXNwbGF5OjpS
dW4sIDEwPjsKLSAgICB1c2luZyBMaW5lQm94ZXMgPSBWZWN0b3I8TGluZUJveCwgNT47Ci0KLSAg
ICBjb25zdCBEaXNwbGF5UnVucyYgZGlzcGxheVJ1bnMoKSBjb25zdCB7IHJldHVybiBtX2Rpc3Bs
YXlSdW5zOyB9Ci0gICAgRGlzcGxheVJ1bnMmIGRpc3BsYXlSdW5zKCkgeyByZXR1cm4gbV9kaXNw
bGF5UnVuczsgfQotICAgIHZvaWQgYWRkRGlzcGxheVJ1bihEaXNwbGF5OjpSdW4mJik7Ci0gICAg
dm9pZCByZXNldERpc3BsYXlSdW5zKCk7Ci0KLSAgICBjb25zdCBMaW5lQm94ZXMmIGxpbmVCb3hl
cygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzOyB9Ci0gICAgTGluZUJveGVzJiBsaW5lQm94
ZXMoKSB7IHJldHVybiBtX2xpbmVCb3hlczsgfQotICAgIHZvaWQgYWRkTGluZUJveChMaW5lQm94
JiYgbGluZUJveCkgeyBtX2xpbmVCb3hlcy5hcHBlbmQobGluZUJveCk7IH0KLQotICAgIGNvbnN0
IExpbmVCb3gmIGxpbmVCb3hGb3JSdW4oY29uc3QgRGlzcGxheTo6UnVuJiBkaXNwbGF5UnVuKSBj
b25zdCB7IHJldHVybiBtX2xpbmVCb3hlc1tkaXNwbGF5UnVuLmxpbmVJbmRleCgpXTsgfQorICAg
IGNvbnN0IElubGluZVJlc3VsdHMqIHJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdHMu
Z2V0KCk7IH0KKyAgICBJbmxpbmVSZXN1bHRzJiBlbnN1cmVSZXN1bHRzKCk7CisgICAgdm9pZCBj
bGVhclJlc3VsdHMoKSB7IG1fcmVzdWx0cyA9IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICAv
LyBDYWNoZWFibGUgaW5wdXQgdG8gbGluZSBsYXlvdXQuCiAgICAgSW5saW5lSXRlbXMgbV9pbmxp
bmVJdGVtczsKIAotICAgIC8vIExpbmUgbGF5b3V0IHJlc3VsdHMKLSAgICBEaXNwbGF5UnVucyBt
X2Rpc3BsYXlSdW5zOwotICAgIExpbmVCb3hlcyBtX2xpbmVCb3hlczsKKyAgICBSZWZQdHI8SW5s
aW5lUmVzdWx0cz4gbV9yZXN1bHRzOwogfTsKIAotaW5saW5lIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z1N0YXRlOjphZGREaXNwbGF5UnVuKERpc3BsYXk6OlJ1biYmIGRpc3BsYXlSdW4pCitpbmxpbmUg
SW5saW5lUmVzdWx0cyYgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjplbnN1cmVSZXN1bHRzKCkKIHsK
LSAgICBtX2Rpc3BsYXlSdW5zLmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlSdW4pKTsKLX0KLQotaW5s
aW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjpyZXNldERpc3BsYXlSdW5zKCkKLXsKLSAg
ICBtX2Rpc3BsYXlSdW5zLmNsZWFyKCk7Ci0gICAgLy8gUmVzZXR0aW5nIHRoZSBydW5zIG1lYW5z
IG5vIG1vcmUgbGluZSBib3hlcyBlaXRoZXIuCi0gICAgbV9saW5lQm94ZXMuY2xlYXIoKTsKLQor
ICAgIGlmICghbV9yZXN1bHRzKQorICAgICAgICBtX3Jlc3VsdHMgPSBhZG9wdFJlZigqbmV3IElu
bGluZVJlc3VsdHMpOworICAgIHJldHVybiAqbV9yZXN1bHRzOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnVpbGRlci5jcHAKaW5kZXggNzQ0YzExMmU3MjguLmI0ZTY3Nzk3MGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJ1aWxkZXIuY3BwCkBAIC0yNjEsOCArMjYxLDggQEAgdm9pZCBMaW5lQnVpbGRlcjo6YWxpZ25D
b250ZW50VmVydGljYWxseShSdW5MaXN0JiBydW5MaXN0KQogICAgICAgICAgICAgfSBlbHNlIGlm
IChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlKCku
ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gp
KSk7CiAgICAgICAgICAgICAgICAgLy8gU3BlYyBtYWtlcyB1cyBnZW5lcmF0ZSBhdCBsZWFzdCBv
bmUgbGluZSAtZXZlbiBpZiBpdCBpcyBlbXB0eS4KLSAgICAgICAgICAgICAgICBBU1NFUlQoIWZv
cm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIGF1
dG8gaW5saW5lQmxvY2tCYXNlbGluZU9mZnNldCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMo
KS5sYXN0KCkuYmFzZWxpbmVPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWZvcm1h
dHRpbmdTdGF0ZS5yZXN1bHRzKCktPmxpbmVCb3hlcy5pc0VtcHR5KCkpOworICAgICAgICAgICAg
ICAgIGF1dG8gaW5saW5lQmxvY2tCYXNlbGluZU9mZnNldCA9IGZvcm1hdHRpbmdTdGF0ZS5yZXN1
bHRzKCktPmxpbmVCb3hlcy5sYXN0KCkuYmFzZWxpbmVPZmZzZXQoKTsKICAgICAgICAgICAgICAg
ICAvLyBUaGUgaW5saW5lLWJsb2NrJ3MgYmFzZWxpbmUgb2Zmc2V0IGlzIHJlbGF0aXZlIHRvIGl0
cyBjb250ZW50IGJveC4gTGV0J3MgY29udmVydCBpdCByZWxhdGl2ZSB0byB0aGUgbWFyZ2luIGJv
eC4KICAgICAgICAgICAgICAgICAvLyAgIGlubGluZS1ibG9jawogICAgICAgICAgICAgICAgIC8v
ICAgICAgICAgICAgICBcCkBAIC01OTQsOCArNTk0LDggQEAgdm9pZCBMaW5lQnVpbGRlcjo6YWRq
dXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVuKQogICAgICAgICAgICAgICAg
IC8vIElubGluZS1ibG9ja3Mgd2l0aCBpbmxpbmUgY29udGVudCBhbHdheXMgaGF2ZSBiYXNlbGlu
ZXMuCiAgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5s
aW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0
YXRlKGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSkpOwogICAgICAgICAgICAgICAgIC8v
IFNwZWMgbWFrZXMgdXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMg
ZW1wdHkuCi0gICAgICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUubGluZUJveGVz
KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBhdXRvJiBsYXN0TGluZUJveCA9IGZvcm1h
dHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFm
b3JtYXR0aW5nU3RhdGUucmVzdWx0cygpLT5saW5lQm94ZXMuaXNFbXB0eSgpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvJiBsYXN0TGluZUJveCA9IGZvcm1hdHRpbmdTdGF0ZS5yZXN1bHRzKCktPmxp
bmVCb3hlcy5sYXN0KCk7CiAgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5l
ID0gbGFzdExpbmVCb3guYmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBhdXRvIGJlZm9yZUhl
aWdodCA9IGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyVG9w
KCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUmVzdWx0cy5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUmVzdWx0cy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yZDdmZDJlNGU4YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZVJlc3VsdHMuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkRpc3Bs
YXlSdW4uaCIKKyNpbmNsdWRlICJJbmxpbmVMaW5lQm94LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworc3RydWN0
IElubGluZVJlc3VsdHMgOiBwdWJsaWMgUmVmQ291bnRlZDxJbmxpbmVSZXN1bHRzPiB7CisgICAg
dXNpbmcgRGlzcGxheVJ1bnMgPSBWZWN0b3I8RGlzcGxheTo6UnVuLCAxMD47CisgICAgdXNpbmcg
TGluZUJveGVzID0gVmVjdG9yPExpbmVCb3gsIDU+OworCisgICAgRGlzcGxheVJ1bnMgZGlzcGxh
eVJ1bnM7CisgICAgTGluZUJveGVzIGxpbmVCb3hlczsKKworICAgIGNvbnN0IExpbmVCb3gmIGxp
bmVCb3hGb3JSdW4oY29uc3QgRGlzcGxheTo6UnVuJiBkaXNwbGF5UnVuKSBjb25zdCB7IHJldHVy
biBsaW5lQm94ZXNbZGlzcGxheVJ1bi5saW5lSW5kZXgoKV07IH0KK307CisKK30KK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAKaW5kZXggYTY4MDllMGJlOWIuLjdkNDM3ZGYzZTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwCkBAIC0zMTEsOCArMzExLDEyIEBAIHZvaWQgVHJlZUJ1aWxkZXI6OmJ1aWxkU3ViVHJlZShj
b25zdCBSZW5kZXJFbGVtZW50JiByb290UmVuZGVyZXIsIENvbnRhaW5lciYgcm9vCiBzdGF0aWMg
dm9pZCBvdXRwdXRJbmxpbmVSdW5zKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBDb250YWluZXImIGlubGluZUZvcm1hdHRpbmdSb290LCB1
bnNpZ25lZCBkZXB0aCkKIHsKICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBkb3du
Y2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0
dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KSk7Ci0gICAgYXV0byYgZGlzcGxheVJ1bnMg
PSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuZGlzcGxheVJ1bnMoKTsKLSAgICBhdXRvJiBsaW5lQm94
ZXMgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCk7CisgICAgYXV0byogcmVzdWx0
cyA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5yZXN1bHRzKCk7CisgICAgaWYgKCFyZXN1bHRzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkaXNwbGF5UnVucyA9IHJlc3VsdHMtPmRpc3Bs
YXlSdW5zOworICAgIGF1dG8mIGxpbmVCb3hlcyA9IHJlc3VsdHMtPmxpbmVCb3hlczsKIAogICAg
IHVuc2lnbmVkIHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAgICB3aGlsZSAoKytwcmludGVkQ2hh
cmFjdGVycyA8PSBkZXB0aCAqIDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCmluZGV4IDc2NWI5Nzg3MmY3Li4yYjMwZWMy
ZDc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dFRyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dFRyYXZlcnNhbC5jcHAKQEAgLTI2LDIyICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKIAorI2luY2x1ZGUgIlJlbmRlckJs
b2NrRmxvd0xpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExpbmVMYXlvdXRUcmF2ZXJzYWwgewogCi1UZXh0
Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVU
ZXh0Qm94KQotICAgIDogbV90ZXh0Qm94KENvbXBsZXhQYXRoIHsgaW5saW5lVGV4dEJveCwgeyB9
IH0pCi17Ci19Ci1UZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihWZWN0b3I8Y29uc3Qg
SW5saW5lVGV4dEJveCo+JiYgc29ydGVkLCBzaXplX3QgaW5kZXgpCi0gICAgOiBtX3RleHRCb3go
Q29tcGxleFBhdGggeyBpbmRleCA8IHNvcnRlZC5zaXplKCkgPyBzb3J0ZWRbaW5kZXhdIDogbnVs
bHB0ciwgV1RGTW92ZShzb3J0ZWQpLCBpbmRleCB9KQotewotfQotCi1UZXh0Qm94SXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Ig
aXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQpCi0g
ICAgOiBtX3RleHRCb3goU2ltcGxlUGF0aCB7IGl0ZXJhdG9yLCBlbmQgfSkKK1RleHRCb3hJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAg
ICA6IG1fdGV4dEJveChXVEZNb3ZlKHBhdGhWYXJpYW50KSkKIHsKIH0KIApAQCAtNzgsMjQgKzcw
LDM3IEBAIGJvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiAgICAgfSk7CiB9CiAK
K3N0YXRpYyBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3dGb3JUZXh0KGNvbnN0IFJlbmRlclRl
eHQmIHRleHQpCit7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnRleHQu
Y29udGFpbmluZ0Jsb2NrRm9yT2JqZWN0SW5GbG93KCkpOworfQorCiBUZXh0Qm94SXRlcmF0b3Ig
Zmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiB7Ci0gICAgaWYgKGF1dG8q
IHNpbXBsZUxpbmVMYXlvdXQgPSB0ZXh0LnNpbXBsZUxpbmVMYXlvdXQoKSkgeworICAgIGF1dG8m
IGZsb3cgPSBmbG93Rm9yVGV4dCh0ZXh0KTsKKworICAgIGlmIChhdXRvKiBzaW1wbGVMaW5lTGF5
b3V0ID0gZmxvdy5zaW1wbGVMaW5lTGF5b3V0KCkpIHsKICAgICAgICAgYXV0byByYW5nZSA9IHNp
bXBsZUxpbmVMYXlvdXQtPnJ1blJlc29sdmVyKCkucmFuZ2VGb3JSZW5kZXJlcih0ZXh0KTsKLSAg
ICAgICAgcmV0dXJuIHsgcmFuZ2UuYmVnaW4oKSwgcmFuZ2UuZW5kKCkgfTsKKyAgICAgICAgcmV0
dXJuIHsgU2ltcGxlUGF0aCB7IHJhbmdlLmJlZ2luKCksIHJhbmdlLmVuZCgpIH0gfTsKICAgICB9
CiAKLSAgICByZXR1cm4gVGV4dEJveEl0ZXJhdG9yIHsgdGV4dC5maXJzdFRleHRCb3goKSB9Owor
ICAgIGlmIChhdXRvKiBsZmNMaW5lTGF5b3V0ID0gZmxvdy5sZmNMaW5lTGF5b3V0KCkpCisgICAg
ICAgIHJldHVybiBsZmNMaW5lTGF5b3V0LT50ZXh0Qm94ZXNGb3IodGV4dCk7CisKKyAgICByZXR1
cm4geyBDb21wbGV4UGF0aCB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfSB9OwogfQogCiBUZXh0Qm94
SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4
dCkKIHsKLSAgICBpZiAoIXRleHQuc2ltcGxlTGluZUxheW91dCgpICYmIHRleHQuY29udGFpbnNS
ZXZlcnNlZFRleHQoKSkgeworICAgIGF1dG8mIGZsb3cgPSBmbG93Rm9yVGV4dCh0ZXh0KTsKKwor
ICAgIGlmIChmbG93LmNvbXBsZXhMaW5lTGF5b3V0KCkgJiYgdGV4dC5jb250YWluc1JldmVyc2Vk
VGV4dCgpICYmIHRleHQuZmlyc3RUZXh0Qm94KCkpIHsKICAgICAgICAgVmVjdG9yPGNvbnN0IElu
bGluZVRleHRCb3gqPiBzb3J0ZWRUZXh0Qm94ZXM7CiAgICAgICAgIGZvciAoYXV0byogdGV4dEJv
eCA9IHRleHQuZmlyc3RUZXh0Qm94KCk7IHRleHRCb3g7IHRleHRCb3ggPSB0ZXh0Qm94LT5uZXh0
VGV4dEJveCgpKQogICAgICAgICAgICAgc29ydGVkVGV4dEJveGVzLmFwcGVuZCh0ZXh0Qm94KTsK
ICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFRleHRCb3hlcy5iZWdpbigpLCBzb3J0ZWRUZXh0Qm94
ZXMuZW5kKCksIElubGluZVRleHRCb3g6OmNvbXBhcmVCeVN0YXJ0KTsKLSAgICAgICAgcmV0dXJu
IFRleHRCb3hJdGVyYXRvciB7IFdURk1vdmUoc29ydGVkVGV4dEJveGVzKSwgMCB9OworICAgICAg
ICBhdXRvKiBmaXJzdCA9IHNvcnRlZFRleHRCb3hlc1swXTsKKyAgICAgICAgcmV0dXJuIHsgQ29t
cGxleFBhdGggeyBmaXJzdCwgV1RGTW92ZShzb3J0ZWRUZXh0Qm94ZXMpLCAwIH0gfTsKICAgICB9
CiAKICAgICByZXR1cm4gZmlyc3RUZXh0Qm94Rm9yKHRleHQpOwpAQCAtMTA2LDEyICsxMTEsOCBA
QCBUZXh0Qm94UmFuZ2UgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiAgICAg
cmV0dXJuIHsgZmlyc3RUZXh0Qm94Rm9yKHRleHQpIH07CiB9CiAKLUVsZW1lbnRCb3hJdGVyYXRv
cjo6RWxlbWVudEJveEl0ZXJhdG9yKGNvbnN0IElubGluZUVsZW1lbnRCb3gqIGlubGluZUVsZW1l
bnRCb3gpCi0gICAgOiBtX2JveChDb21wbGV4UGF0aCB7IGlubGluZUVsZW1lbnRCb3gsIHsgfSB9
KQotewotfQotRWxlbWVudEJveEl0ZXJhdG9yOjpFbGVtZW50Qm94SXRlcmF0b3IoU2ltcGxlTGlu
ZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGl0ZXJhdG9yLCBTaW1wbGVMaW5lTGF5b3V0
OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgZW5kKQotICAgIDogbV9ib3goU2ltcGxlUGF0aCB7IGl0
ZXJhdG9yLCBlbmQgfSkKK0VsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJhdG9yKEJv
eDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAgICA6IG1fYm94KFdURk1vdmUocGF0aFZh
cmlhbnQpKQogewogfQogCkBAIC0xMjQsMTQgKzEyNSwyMSBAQCBib29sIEVsZW1lbnRCb3hJdGVy
YXRvcjo6YXRFbmQoKSBjb25zdAogCiBFbGVtZW50Qm94SXRlcmF0b3IgZWxlbWVudEJveEZvcihj
b25zdCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlckVsZW1lbnQpCiB7Ci0gICAgaWYgKGF1dG8mIHBh
cmVudCA9ICpyZW5kZXJFbGVtZW50LnBhcmVudCgpOyBpczxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVu
dCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHNpbXBsZUxpbmVMYXlvdXQgPSBkb3duY2FzdDxSZW5k
ZXJCbG9ja0Zsb3c+KHBhcmVudCkuc2ltcGxlTGluZUxheW91dCgpKSB7Ci0gICAgICAgICAgICBh
dXRvIHJhbmdlID0gc2ltcGxlTGluZUxheW91dC0+cnVuUmVzb2x2ZXIoKS5yYW5nZUZvclJlbmRl
cmVyKHJlbmRlckVsZW1lbnQpOwotICAgICAgICAgICAgcmV0dXJuIHsgcmFuZ2UuYmVnaW4oKSwg
cmFuZ2UuZW5kKCkgfTsKLSAgICAgICAgfQorICAgIGF1dG8qIGNvbnRhaW5pbmdCbG9jayA9IHJl
bmRlckVsZW1lbnQuY29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKCFpczxSZW5kZXJCbG9ja0Zs
b3c+KGNvbnRhaW5pbmdCbG9jaykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvJiBm
bG93ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY29udGFpbmluZ0Jsb2NrKTsKKworICAg
IGlmIChhdXRvKiBzaW1wbGVMaW5lTGF5b3V0ID0gZmxvdy5zaW1wbGVMaW5lTGF5b3V0KCkpIHsK
KyAgICAgICAgYXV0byByYW5nZSA9IHNpbXBsZUxpbmVMYXlvdXQtPnJ1blJlc29sdmVyKCkucmFu
Z2VGb3JSZW5kZXJlcihyZW5kZXJFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHsgU2ltcGxlUGF0
aChyYW5nZS5iZWdpbigpLCByYW5nZS5lbmQoKSkgfTsKICAgICB9CiAKLSAgICByZXR1cm4gRWxl
bWVudEJveEl0ZXJhdG9yIHsgcmVuZGVyRWxlbWVudC5pbmxpbmVCb3hXcmFwcGVyKCkgfTsKKyAg
ICBpZiAoYXV0byogbGZjTGluZUxheW91dCA9IGZsb3cubGZjTGluZUxheW91dCgpKQorICAgICAg
ICByZXR1cm4gbGZjTGluZUxheW91dC0+ZWxlbWVudEJveEZvcihyZW5kZXJFbGVtZW50KTsKKwor
ICAgIHJldHVybiB7IENvbXBsZXhQYXRoKHJlbmRlckVsZW1lbnQuaW5saW5lQm94V3JhcHBlcigp
KSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lTGF5b3V0VHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
TGF5b3V0VHJhdmVyc2FsLmgKaW5kZXggMTM0ZjQyMGI1MGYuLmU5MWJlNTJmZmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5j
bHVkZSAiTGluZUxheW91dFRyYXZlcnNhbENvbXBsZXhQYXRoLmgiCisjaW5jbHVkZSAiTGluZUxh
eW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZl
cnNhbFNpbXBsZVBhdGguaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTQ3LDcgKzQ4LDEzIEBAIHN0cnVjdCBFbmRJdGVyYXRvciB7IH07CiAK
IGNsYXNzIEJveCB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgUGF0aFZhcmlhbnQgPSBWYXJpYW50PFNp
bXBsZVBhdGgsIENvbXBsZXhQYXRoPjsKKyAgICB1c2luZyBQYXRoVmFyaWFudCA9IFZhcmlhbnQ8
CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgICAgIERpc3BsYXlS
dW5QYXRoLAorI2VuZGlmCisgICAgICAgIENvbXBsZXhQYXRoLAorICAgICAgICBTaW1wbGVQYXRo
CisgICAgPjsKIAogICAgIEJveChQYXRoVmFyaWFudCYmKTsKIApAQCAtODQsMTAgKzkxLDcgQEAg
cHVibGljOgogY2xhc3MgVGV4dEJveEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBUZXh0Qm94SXRl
cmF0b3IoKSA6IG1fdGV4dEJveChDb21wbGV4UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07Ci0K
LSAgICBleHBsaWNpdCBUZXh0Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4dEJveCopOwotICAg
IFRleHRCb3hJdGVyYXRvcihWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+JiYgc29ydGVkLCBz
aXplX3QgaW5kZXgpOwotICAgIFRleHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5S
ZXNvbHZlcjo6SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRv
ciBlbmQpOworICAgIFRleHRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOwogCiAgICAg
VGV4dEJveEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0SW5WaXN1
YWxPcmRlcigpOyB9CiAgICAgVGV4dEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblZpc3VhbE9y
ZGVyKCk7CkBAIC0xMTMsOSArMTE3LDcgQEAgcHJpdmF0ZToKIGNsYXNzIEVsZW1lbnRCb3hJdGVy
YXRvciB7CiBwdWJsaWM6CiAgICAgRWxlbWVudEJveEl0ZXJhdG9yKCkgOiBtX2JveChDb21wbGV4
UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07Ci0KLSAgICBleHBsaWNpdCBFbGVtZW50Qm94SXRl
cmF0b3IoY29uc3QgSW5saW5lRWxlbWVudEJveCopOwotICAgIEVsZW1lbnRCb3hJdGVyYXRvcihT
aW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6
OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQpOworICAgIEVsZW1lbnRCb3hJdGVyYXRvcihCb3g6
OlBhdGhWYXJpYW50JiYpOwogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuICFhdEVuZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY4YmVlMWJlNGExCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5j
bHVkZSAiSW5saW5lUmVzdWx0cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBMaW5lTGF5b3V0VHJhdmVyc2FsIHsKKworc3RhdGljIEZsb2F0UG9pbnQgbGluZVBvc2l0aW9u
KGZsb2F0IGxvZ2ljYWxMZWZ0LCBmbG9hdCBsb2dpY2FsVG9wKQoreworICAgIHJldHVybiBGbG9h
dFBvaW50KGxvZ2ljYWxMZWZ0LCByb3VuZGYobG9naWNhbFRvcCkpOworfQorCitjbGFzcyBEaXNw
bGF5UnVuUGF0aCB7CitwdWJsaWM6CisgICAgRGlzcGxheVJ1blBhdGgoY29uc3QgTGF5b3V0OjpJ
bmxpbmVSZXN1bHRzJiBpbmxpbmVSZXN1bHRzLCBzaXplX3Qgc3RhcnRJbmRleCwgc2l6ZV90IGVu
ZEluZGV4KQorICAgICAgICA6IG1faW5saW5lUmVzdWx0cygmaW5saW5lUmVzdWx0cykKKyAgICAg
ICAgLCBtX3N0YXJ0SW5kZXgoc3RhcnRJbmRleCkKKyAgICAgICAgLCBtX2VuZEluZGV4KGVuZElu
ZGV4KQorICAgICAgICAsIG1fcnVuSW5kZXgoc3RhcnRJbmRleCkKKyAgICB7IH0KKyAgICBEaXNw
bGF5UnVuUGF0aChEaXNwbGF5UnVuUGF0aCYmKSA9IGRlZmF1bHQ7CisgICAgRGlzcGxheVJ1blBh
dGgoY29uc3QgRGlzcGxheVJ1blBhdGgmKSA9IGRlZmF1bHQ7CisgICAgRGlzcGxheVJ1blBhdGgm
IG9wZXJhdG9yPShjb25zdCBEaXNwbGF5UnVuUGF0aCYpID0gZGVmYXVsdDsKKyAgICBEaXNwbGF5
UnVuUGF0aCYgb3BlcmF0b3I9KERpc3BsYXlSdW5QYXRoJiYpID0gZGVmYXVsdDsKKworICAgIEZs
b2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKTsgfQorICAgIEZsb2F0
UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0CisgICAgeworICAgICAgICBhdXRvIGxvZ2ljYWxSZWN0
ID0gcnVuKCkubG9naWNhbFJlY3QoKTsKKyAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IGxp
bmVQb3NpdGlvbihsb2dpY2FsUmVjdC5sZWZ0KCksIGxvZ2ljYWxSZWN0LnRvcCgpKTsKKyAgICAg
ICAgcmV0dXJuIHsgcG9zaXRpb24sIGxvZ2ljYWxSZWN0LnNpemUoKSB9OworICAgIH0KKworICAg
IGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBib29sIGRpck92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gLy8gRklYTUU6IEltcGxlbWVudC4K
KworICAgIGJvb2wgaGFzSHlwaGVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gLy8gRklYTUU6
IEltcGxlbWVudC4KKyAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdCB7IHJldHVybiBydW4oKS50
ZXh0Q29udGV4dCgpLT5jb250ZW50KCk7IH0KKyAgICB1bnNpZ25lZCBsb2NhbFN0YXJ0T2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dENvbnRleHQoKS0+c3RhcnQoKSAtIGZpcnN0UnVu
KCkudGV4dENvbnRleHQoKS0+c3RhcnQoKTsgfQorICAgIHVuc2lnbmVkIGxvY2FsRW5kT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dENvbnRleHQoKS0+ZW5kKCkgLSBmaXJzdFJ1bigp
LnRleHRDb250ZXh0KCktPnN0YXJ0KCk7IH0KKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBydW4oKS50ZXh0Q29udGV4dCgpLT5lbmQoKSAtIHJ1bigpLnRleHRDb250ZXh0KCkt
PnN0YXJ0KCk7IH0KKworICAgIGJvb2wgaXNMYXN0T25MaW5lKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChpc0xhc3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBhdXRv
JiBuZXh0ID0gZGlzcGxheVJ1bnMoKVttX3J1bkluZGV4ICsgMV07CisgICAgICAgIHJldHVybiBy
dW4oKS5saW5lSW5kZXgoKSAhPSBuZXh0LmxpbmVJbmRleCgpOworICAgIH0KKyAgICBib29sIGlz
TGFzdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ydW5JbmRleCArIDEgPT0gbV9l
bmRJbmRleDsKKyAgICB9OworCisgICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0Qm94SW5WaXN1YWxP
cmRlcigpCisgICAgeworICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgICAgICArK21fcnVu
SW5kZXg7CisgICAgICAgIHdoaWxlICghYXRFbmQoKSAmJiAhcnVuKCkudGV4dENvbnRleHQoKSkK
KyAgICAgICAgICAgICsrbV9ydW5JbmRleDsKKyAgICB9CisgICAgdm9pZCB0cmF2ZXJzZU5leHRU
ZXh0Qm94SW5UZXh0T3JkZXIoKSB7ICB0cmF2ZXJzZU5leHRUZXh0Qm94SW5WaXN1YWxPcmRlcigp
OyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGlzcGxheVJ1blBhdGgmIG90aGVyKSBj
b25zdCB7IHJldHVybiBtX2lubGluZVJlc3VsdHMgPT0gb3RoZXIubV9pbmxpbmVSZXN1bHRzICYm
IG1fcnVuSW5kZXggPT0gb3RoZXIubV9ydW5JbmRleDsgfQorICAgIGJvb2wgYXRFbmQoKSBjb25z
dCB7IHJldHVybiBtX3J1bkluZGV4ID09IG1fZW5kSW5kZXg7IH0KKworcHJpdmF0ZToKKyAgICBj
b25zdCBMYXlvdXQ6OklubGluZVJlc3VsdHM6OkRpc3BsYXlSdW5zJiBkaXNwbGF5UnVucygpIGNv
bnN0IHsgcmV0dXJuIG1faW5saW5lUmVzdWx0cy0+ZGlzcGxheVJ1bnM7IH0KKyAgICBjb25zdCBE
aXNwbGF5OjpSdW4mIGZpcnN0UnVuKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheVJ1bnMoKVttX3N0
YXJ0SW5kZXhdOyB9CisgICAgY29uc3QgRGlzcGxheTo6UnVuJiBydW4oKSBjb25zdCB7IHJldHVy
biBkaXNwbGF5UnVucygpW21fcnVuSW5kZXhdOyB9CisKKyAgICBSZWZQdHI8Y29uc3QgTGF5b3V0
OjpJbmxpbmVSZXN1bHRzPiBtX2lubGluZVJlc3VsdHM7CisgICAgc2l6ZV90IG1fc3RhcnRJbmRl
eCB7IDAgfTsKKyAgICBzaXplX3QgbV9lbmRJbmRleCB7IDAgfTsKKyAgICBzaXplX3QgbV9ydW5J
bmRleCB7IDAgfTsKK307CisKK30KK30KKworI2VuZGlmCg==
</data>
<flag name="review"
          id="400373"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384595</attachid>
            <date>2019-12-02 00:07:35 -0800</date>
            <delta_ts>2019-12-02 01:29:06 -0800</delta_ts>
            <desc>patch</desc>
            <filename>linelayouttraversal-lfc-3.patch</filename>
            <type>text/plain</type>
            <size>49412</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NTFjOTFmOTViNi4uMTg1ZTI3NjRhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTktMTItMDEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIFtMRkNdW1JlbmRlciB0cmVlXSBTdXBwb3J0IExGQyBpbiBMaW5lTGF5b3V0
VHJhdmVyc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDQ3MjcKKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIHRyYXZlcnNpbmcgTEZDIGlubGluZSBsYXlvdXQgdG8gVGV4dEJveEl0
ZXJhdG9yIGFuZCBFbGVtZW50Qm94SXRlcmF0b3IuCisgICAgICAgIFRoaXMgbWFrZXMgcmVuZGVy
IHRyZWUgZHVtcHMgYW5kIFRleHRJdGVyYXRvciB3b3JrIHdpdGggTEZDIGxheW91dC4KKworICAg
ICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAg
KiBsYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OmxheW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OmlubGluZVJlc3VsdHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5
b3V0Ojp0ZXh0Qm94ZXNGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZW5k
ZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjplbGVtZW50Qm94Rm9yIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oOgorICAgICAgICAqIGxheW91dC9WZXJp
ZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGlu
Z1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6b3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAg
KiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBz
ZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBh
aW50SW5saW5lQ29udGVudCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlS
dW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6bGF5b3V0Qm94IGNvbnN0KToK
KworICAgICAgICBSZXBsYWNlIHN0eWxlIHdpdGggbGF5b3V0IGJveCB3ZWFrIHBvaW50ZXIuIFRo
aXMgYWxsb3dzIGZpbmRpbmcgcnVucyBmb3IgYSBnaXZlbiBib3guCisKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OlJ1bjo6c3R5bGUgY29uc3QpOgorCisgICAgICAgIEdldCBzdHlsZSBmcm9t
IHRoZSBsYXlvdXQgYm94LgorCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OlJ1bik6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjppbnZhbGlkYXRlRm9ybWF0dGluZ1N0YXRlKToKKyAgICAg
ICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJr
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpRdWlya3M6OmxpbmVEZXNjZW50TmVlZHNDb2xsYXBzaW5nIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpyZXN1bHRzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpjbGVhclJl
c3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6
OmVuc3VyZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nU3RhdGU6OmRpc3BsYXlSdW5zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpkaXNwbGF5UnVucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6bGluZUJveGVz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ1N0YXRlOjpsaW5lQm94ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmFkZExpbmVCb3gpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmxpbmVCb3hGb3JSdW4gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
U3RhdGU6OmFkZERpc3BsYXlSdW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnJlc2V0RGlzcGxheVJ1bnMpOiBEZWxldGVkLgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFsaWduQ29udGVudFZlcnRpY2Fs
bHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YWRqdXN0QmFzZWxp
bmVBbmRMaW5lSGVpZ2h0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlu
bGluZUNvbnRlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L1JlbmRlckJs
b2NrRmxvd0xpbmVMYXlvdXQuaC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OklubGluZUNv
bnRlbnQ6OmxpbmVCb3hGb3JSdW4gY29uc3QpOgorCisgICAgICAgIEZhY3RvciBpbnRvIGEgc3Ry
dWN0LiBNYWtlIGl0IHJlZmNvdW50ZWQgZm9yIHNhZmUgYWNjZXNzIGZyb20gbGluZSBsYXlvdXQg
aXRlcmF0b3JzLgorCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dElubGluZVJ1bnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0
Qm94SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Zmxv
d0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RU
ZXh0Qm94Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0
VGV4dEJveEluVGV4dE9yZGVyRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2
ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJhdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpsaW5lUG9zaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RGlzcGxheVJ1blBhdGg6OkRpc3BsYXlS
dW5QYXRoKToKKworICAgICAgICBOZXcgcGF0aCBmb3IgdHJhdmVyc2luZyBkaXNwbGF5IHJ1bnMu
CisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRo
OjpyZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRp
c3BsYXlSdW5QYXRoOjpsb2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVu
UGF0aDo6ZGlyT3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRy
YXZlcnNhbDo6RGlzcGxheVJ1blBhdGg6OmlzTGluZUJyZWFrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjpoYXNIeXBoZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RGlzcGxheVJ1blBh
dGg6OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6
RGlzcGxheVJ1blBhdGg6OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RGlzcGxheVJ1blBhdGg6OmxvY2FsRW5kT2Zmc2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5Q
YXRoOjpsZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNh
bDo6RGlzcGxheVJ1blBhdGg6OmlzTGFzdE9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6aXNMYXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjp0cmF2
ZXJzZU5leHRUZXh0Qm94SW5WaXN1YWxPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6dHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9y
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5Q
YXRoOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2
ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjphdEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6ZGlzcGxheVJ1bnMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RGlzcGxheVJ1blBhdGg6OmZp
cnN0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRp
c3BsYXlSdW5QYXRoOjpydW4gY29uc3QpOgorCiAyMDE5LTEyLTAxICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uIChyMjUyODkzKTogbG9hZGVy
L3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtc2l6ZS5odG1sIGlzIGNyYXNoaW5nIG9uIG1hYyBkZWJ1
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNjc0NGM4ZThlMzMuLmExNTBhMzczODIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTEzMjEsNiArMTMyMSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKIAogICAgIHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwu
aAogICAgIHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oCisg
ICAgcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgKICAg
ICByZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsU2ltcGxlUGF0aC5oCiAgICAgcmVu
ZGVyaW5nL2xpbmUvTGluZVdpZHRoLmgKICAgICByZW5kZXJpbmcvbGluZS9UcmFpbGluZ09iamVj
dHMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDBmMDhhM2JkNmMyLi42YTQ3ODViZmNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA0Miw3ICsyMDQyLDcg
QEAKIAkJNkY5OTVBM0ExQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5OTVB
MzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oICovOyB9Owog
CQk2RkE0NDU0RTg5OEYyRkMxNjhCQzM4QzEgLyogSlNCZWZvcmVVbmxvYWRFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlFMDRBMjdCRUQyRjgx
Rjk4RTkwMjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCAqLzsgfTsKIAkJNkZCMTFCNUMyMTc4
M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RkIxMUI1OTIxNzgzRkNGMDBFMkE1NzQgLyogVGV4dFV0aWwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RkI0N0U2
MzIyNzc0MjVBMDBDN0JDQjAgLyogSW5saW5lTGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNDdFNjEyMjc3NDI1QTAwQzdCQ0IwIC8qIElu
bGluZUxpbmVCb3guaCAqLzsgfTsKKwkJNkZCNDdFNjMyMjc3NDI1QTAwQzdCQ0IwIC8qIElubGlu
ZUxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBJbmxpbmVMaW5lQm94LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZCNUUyMTQyMjFGMjQ1MzAw
Mzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRl
bnRDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBEaXNwbGF5UnVuLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkNFMUExODIyNjE4
QUIzMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTZGRDlDRDU0MjI3RTIxQzgwMEU1Mzk1NyAvKiBEaXNwbGF5
UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZE
OUNENTIyMjdFMjFDODAwRTUzOTU3IC8qIERpc3BsYXlSZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4MTgsNiArNDgxOCwxMCBAQAogCQlF
NDQ2MTQ1MjBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQxRTM0MENCRkI2MDkwMEFGMkVDRSAv
KiBSZW5kZXJWaWRlby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUU0NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEI0QkIyMTQx
NjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCAqLzsgfTsKIAkJRTQ0RkExODUxQkNB
NkI1QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2RUYgLyog
Q29tcG9zZWRUcmVlSXRlcmF0b3IuaCAqLzsgfTsKKwkJRTQ1MUM2MjgyMzkyOTNFQzAwOTkzMTkw
IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MUM2MjcyMzkyOTNFQjAwOTkzMTkwIC8q
IExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0NTFDNjMxMjM5NDAyNzkwMDk5MzE5MCAv
KiBMYXlvdXRVbml0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkY3MzkxOEMyMTA2Q0VERDAwNkFGMjYyIC8qIExheW91dFVuaXRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTQ1MUM2MzIyMzk0MDMx
QTAwOTkzMTkwIC8qIE1hcmdpblR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RkU3QUEyNjIxQzM3QjYzMDAyOTZEQ0QgLyogTWFyZ2luVHlwZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNDUx
QzYzNDIzOTQwNThGMDA5OTMxOTAgLyogRGlzcGxheUlubGluZUNvbnRlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTFDNjMzMjM5NDA1OEUwMDk5
MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxl
Y3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNDUzMjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovOyB9OwogCQlF
NDVCQTZBQTIzNzQ5MjZDMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVCQTZBODIzNzQ5
MjZCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi87IH07CiAJCUU0NUJB
NkI2MjM3NjIyQTMwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVCQTZCNTIzNzYyMjlGMDA0REZDMDcgLyog
U3R5bGVBZGp1c3Rlci5oICovOyB9OwpAQCAtMTUxNDksNiArMTUxNTMsOCBAQAogCQlFNDRFRTNB
NzE3NTc2RTU1MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb250R2VuZXJpY0ZhbWlsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
NEZBMTg0MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wb3NlZFRyZWVJdGVyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNDRGQTE4NjFCQ0E5MTU2MDA5MUI2RUYgLyogQ29tcG9z
ZWRUcmVlSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29tcG9zZWRUcmVlSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
NDUxQzYyNzIzOTI5M0VCMDA5OTMxOTAgLyogTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5Q
YXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVMYXlvdXRUcmF2ZXJz
YWxEaXNwbGF5UnVuUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDUxQzYz
MzIzOTQwNThFMDA5OTMxOTAgLyogRGlzcGxheUlubGluZUNvbnRlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUlubGluZUNvbnRlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzIyQTkxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVl
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0b3JRdWVy
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NTMyMkFBMTQwQ0UyNjcwMDVB
MEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlbGVjdG9yUXVlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwMTkw
RUFGQ0FDQTAwMzY5NUM4IC8qIFBhc3RlYm9hcmRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0ZWJvYXJkSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTY3MTQsNiArMTY3MjAsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMTE5
OUZBNUEyMDhFM0M3RjAwMjM1OENDIC8qIERpc3BsYXlCb3guY3BwICovLAogCQkJCTExOTlGQTU5
MjA4RTNDN0YwMDIzNThDQyAvKiBEaXNwbGF5Qm94LmggKi8sCisJCQkJRTQ1MUM2MzMyMzk0MDU4
RTAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggKi8sCiAJCQkJNkY3Nzg2ODUyMzQ5
MUFDNjAwNEQ5NjM2IC8qIERpc3BsYXlQYWludGVyLmNwcCAqLywKIAkJCQk2Rjc3ODY4NzIzNDkx
QUQ3MDA0RDk2MzYgLyogRGlzcGxheVBhaW50ZXIuaCAqLywKIAkJCQk2RkQ5Q0Q1MjIyN0UyMUM4
MDBFNTM5NTcgLyogRGlzcGxheVJlY3QuaCAqLywKQEAgLTI4NzMxLDggKzI4NzM4LDkgQEAKIAkJ
CQlGRkVGQUIyOTE4MzgwREEwMDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggKi8sCiAJCQkJ
RTQ4NEEzM0QyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwICovLAog
CQkJCUU0ODRBMzNCMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmggKi8s
Ci0JCQkJRTQzNDNEMjEyMzkyNzc4MzAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxTaW1w
bGVQYXRoLmggKi8sCiAJCQkJRTQzNDNEMjQyMzkyNzc4RjAwRUJCQjY2IC8qIExpbmVMYXlvdXRU
cmF2ZXJzYWxDb21wbGV4UGF0aC5oICovLAorCQkJCUU0NTFDNjI3MjM5MjkzRUIwMDk5MzE5MCAv
KiBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaCAqLywKKwkJCQlFNDM0M0QyMTIz
OTI3NzgzMDBFQkJCNjYgLyogTGluZUxheW91dFRyYXZlcnNhbFNpbXBsZVBhdGguaCAqLywKIAkJ
CQlGRkRCQzA0NjE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmNwcCAqLywKIAkJCQlGRkRC
QzA0NTE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggKi8sCiAJCQkJRkZBQzMwRkQxODRG
QjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgKi8sCkBAIC0zMDA0MCw2ICszMDA0
OCw3IEBACiAJCQkJQTg3MURCMkIwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZUNhcHRpb25F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREIyQTBBMTUwQkQ2MDBCMTJBNjggLyog
SFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFEQjJGMEExNTBC
RDYwMEIxMkE2OCAvKiBIVE1MVGFibGVDb2xFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlF
NDUxQzYyODIzOTI5M0VDMDA5OTMxOTAgLyogTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5Q
YXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREIyNzBBMTUwQkQ2MDBCMTJBNjggLyogSFRN
TFRhYmxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURCMkMwQTE1MEJENjAwQjEy
QTY4IC8qIEhUTUxUYWJsZVBhcnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREIz
MTBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlUm93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMDE1MSw2ICszMDE2MCw3IEBACiAJCQkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8q
IEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUE1OTMxMTUyNTI1RDAwMDM2
RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjI4M0YwRTIz
MEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJnaW5UeXBlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFn
ZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMjdBRTUwMjJBOTg2ODcwMDk0
N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDg2
LDYgKzMyNDk2LDcgQEAKIAkJCQlCMjIyN0FEQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNm
b3JtYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBREQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1RyYW5zZm9ybURpc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FERjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1
MUM2MzEyMzk0MDI3OTAwOTkzMTkwIC8qIExheW91dFVuaXRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3Q0U1OEQ1ODFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3QUUyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RTcGFu
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjgxNSw2ICszMjgyNiw3IEBACiAJCQkJNDlD
N0I5RTAxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRDNGM0QzNkExQTY5QjdCOTAwNTlGQzJCIC8qIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGOTk1QTIyMUE3MDc4QjEwMEE3MzVGNCAv
KiBXZWJHTFNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NTFDNjM0MjM5NDA1OEYwMDk5
MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5
RTMxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMU2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MDdEMzM1ODE1MkI2MzJEMDAxQjYzOTMgLyogV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTAxRDNDRjg3MTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTFNoYXJl
ZE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggNmM2NmUxYTNhNDkuLjY2NTdjNzgy
N2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY28K
ICAgICBhdXRvIGJvdHRvbSA9IGJvcmRlckFuZFBhZGRpbmdUb3A7CiAgICAgYXV0byYgZm9ybWF0
dGluZ1Jvb3RDb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CiAgICAg
aWYgKGZvcm1hdHRpbmdSb290Q29udGFpbmVyLmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSkgewotICAgICAgICBhdXRvJiBsaW5lQm94ZXMgPSBkb3duY2FzdDxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGZvcm1h
dHRpbmdSb290Q29udGFpbmVyKSkubGluZUJveGVzKCk7CisgICAgICAgIGF1dG8mIGxpbmVCb3hl
cyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNo
ZWRGb3JtYXR0aW5nU3RhdGUoZm9ybWF0dGluZ1Jvb3RDb250YWluZXIpKS5kaXNwbGF5SW5saW5l
Q29udGVudCgpLT5saW5lQm94ZXM7CiAgICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFpbmVycyBn
ZW5lcmF0ZSBvbmUgbGluZS4gCiAgICAgICAgIEFTU0VSVCghbGluZUJveGVzLmlzRW1wdHkoKSk7
CiAgICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLmxvZ2ljYWxUb3AoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcAppbmRl
eCA4MWQwOGRjMzI2Yy4uZWE1MTQ0ZjhlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJMYXlvdXRUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5l
TGF5b3V0LmgiCiAKQEAgLTc4LDcgKzc5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5
b3V0OjpsYXlvdXQoKQogICAgIGF1dG8gaW52YWxpZGF0aW9uU3RhdGUgPSBJbnZhbGlkYXRpb25T
dGF0ZSB7IH07CiAgICAgbGF5b3V0Q29udGV4dC5sYXlvdXQobV9mbG93LmNvbnRlbnRTaXplKCks
IGludmFsaWRhdGlvblN0YXRlKTsKIAotICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRvd25jYXN0PElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4obV9sYXlvdXRTdGF0ZS0+ZXN0YWJsaXNoZWRGb3JtYXR0aW5n
U3RhdGUocm9vdENvbnRhaW5lcikpLmxpbmVCb3hlcygpOworICAgIGF1dG8mIGxpbmVCb3hlcyA9
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obV9sYXlvdXRTdGF0ZS0+ZXN0YWJsaXNo
ZWRGb3JtYXR0aW5nU3RhdGUocm9vdENvbnRhaW5lcikpLmRpc3BsYXlJbmxpbmVDb250ZW50KCkt
PmxpbmVCb3hlczsKICAgICBhdXRvIGhlaWdodCA9IGxpbmVCb3hlcy5sYXN0KCkubG9naWNhbEJv
dHRvbSgpOwogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IG1fbGF5b3V0U3RhdGUtPmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3gocm9vdENvbnRhaW5lcik7CkBAIC05MCw2ICs5MSwxMSBAQCBMYXlvdXRV
bml0IFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OmNvbnRlbnRCb3hIZWlnaHQoKSBjb25zdAog
ICAgIHJldHVybiBtX2xheW91dFN0YXRlID8gbV9sYXlvdXRTdGF0ZS0+ZGlzcGxheUJveEZvckxh
eW91dEJveChtX2xheW91dFN0YXRlLT5yb290KCkpLmNvbnRlbnRCb3hIZWlnaHQoKSA6IDBfbHU7
CiB9CiAKK2NvbnN0IERpc3BsYXk6OklubGluZUNvbnRlbnQqIFJlbmRlckJsb2NrRmxvd0xpbmVM
YXlvdXQ6OmRpc3BsYXlJbmxpbmVDb250ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG93bmNh
c3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihtX2xheW91dFN0YXRlLT5lc3RhYmxpc2hlZEZvcm1h
dHRpbmdTdGF0ZShtX3RyZWVDb250ZW50LT5yb290TGF5b3V0Qm94KCkpKS5kaXNwbGF5SW5saW5l
Q29udGVudCgpOworfQorCiB2b2lkIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAg
ICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKQEAgLTEwMiw2
ICsxMDgsNDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHAKICAgICBncmFwaGljc0NvbnRleHQu
cmVzdG9yZSgpOwogfQogCitMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94SXRlcmF0b3IgUmVu
ZGVyQmxvY2tGbG93TGluZUxheW91dDo6dGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRleHQmIHJl
bmRlclRleHQpIGNvbnN0Cit7CisgICAgYXV0byogaW5saW5lQ29udGVudCA9IGRpc3BsYXlJbmxp
bmVDb250ZW50KCk7CisgICAgaWYgKCFpbmxpbmVDb250ZW50KQorICAgICAgICByZXR1cm4geyB9
OworICAgIGF1dG8qIGxheW91dEJveCA9IG1fdHJlZUNvbnRlbnQtPmxheW91dEJveEZvclJlbmRl
cmVyKHJlbmRlclRleHQpOworICAgIEFTU0VSVChsYXlvdXRCb3gpOworCisgICAgT3B0aW9uYWw8
c2l6ZV90PiBmaXJzdEluZGV4ID0gMDsKKyAgICBzaXplX3QgbGFzdEluZGV4ID0gMDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNvbnRlbnQtPnJ1bnMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgYXV0byYgcnVuID0gIGlubGluZUNvbnRlbnQtPnJ1bnNbaV07CisgICAgICAgIGlm
ICgmcnVuLmxheW91dEJveCgpID09IGxheW91dEJveCkgeworICAgICAgICAgICAgaWYgKCFmaXJz
dEluZGV4KQorICAgICAgICAgICAgICAgIGZpcnN0SW5kZXggPSBpOworICAgICAgICAgICAgbGFz
dEluZGV4ID0gaTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWZpcnN0SW5kZXgpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4geyBMaW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNw
bGF5UnVuUGF0aCgqaW5saW5lQ29udGVudCwgKmZpcnN0SW5kZXgsIGxhc3RJbmRleCArIDEpIH07
Cit9CisKK0xpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvciBSZW5kZXJCbG9j
a0Zsb3dMaW5lTGF5b3V0OjplbGVtZW50Qm94Rm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYgcmVu
ZGVyTGluZUJyZWFrKSBjb25zdAoreworICAgIGF1dG8qIGlubGluZUNvbnRlbnQgPSBkaXNwbGF5
SW5saW5lQ29udGVudCgpOworICAgIGlmICghaW5saW5lQ29udGVudCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICBhdXRvKiBsYXlvdXRCb3ggPSBtX3RyZWVDb250ZW50LT5sYXlvdXRCb3hGb3JS
ZW5kZXJlcihyZW5kZXJMaW5lQnJlYWspOworICAgIEFTU0VSVChsYXlvdXRCb3gpOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmxpbmVDb250ZW50LT5ydW5zLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGF1dG8mIHJ1biA9ICBpbmxpbmVDb250ZW50LT5ydW5zW2ldOworICAgICAgICBp
ZiAoJnJ1bi5sYXlvdXRCb3goKSA9PSBsYXlvdXRCb3gpCisgICAgICAgICAgICByZXR1cm4geyBM
aW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aCgqaW5saW5lQ29udGVudCwgaSwgaSAr
IDEpIH07CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwogfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L1JlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuaAppbmRleCBjOTcw
NDE2ZDQwZS4uMTQxZjExMjM3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9S
ZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Jl
bmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuaApAQCAtMjgsMTMgKzI4LDE5IEBACiAjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgor
I2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3c7CitjbGFzcyBS
ZW5kZXJMaW5lQnJlYWs7CiBzdHJ1Y3QgUGFpbnRJbmZvOwogCituYW1lc3BhY2UgRGlzcGxheSB7
CitzdHJ1Y3QgSW5saW5lQ29udGVudDsKK30KKwogbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNz
IExheW91dFRyZWVDb250ZW50OwpAQCAtNDksMTEgKzU1LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiAKICAgICB2b2lkIGxh
eW91dCgpOwotICAgIAogICAgIExheW91dFVuaXQgY29udGVudEJveEhlaWdodCgpIGNvbnN0Owor
ICAgIGNvbnN0IERpc3BsYXk6OklubGluZUNvbnRlbnQqIGRpc3BsYXlJbmxpbmVDb250ZW50KCkg
Y29uc3Q7CiAKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCk7CiAKKyAgICBMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94SXRlcmF0b3Ig
dGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRleHQmKSBjb25zdDsKKyAgICBMaW5lTGF5b3V0VHJh
dmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3IgZWxlbWVudEJveEZvcihjb25zdCBSZW5kZXJMaW5l
QnJlYWsmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIG1f
ZmxvdzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0VHJlZUNvbnRlbnQ+IG1fdHJlZUNvbnRl
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCmluZGV4IGFiYTBhOWU0OTdk
Li41OGM3ZWJmNDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAg
LTc2LDggKzc2LDEzIEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nU2ltcGxlTGluZUlu
Zm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjCiAgICAgfQogCiAgICAgYXV0
byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0
aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwotICAgIEFTU0VSVChpczxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkpOwotICAgIGF1dG8mIGRpc3BsYXlS
dW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3Rh
dGUpLmRpc3BsYXlSdW5zKCk7CisgICAgYXV0byogZGlzcGxheUlubGluZUNvbnRlbnQgPSBkb3du
Y2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkuZGlzcGxh
eUlubGluZUNvbnRlbnQoKTsKKyAgICBpZiAoIWRpc3BsYXlJbmxpbmVDb250ZW50KSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBhdXRvJiBkaXNwbGF5UnVucyA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5ydW5zOwogCiAg
ICAgaWYgKGRpc3BsYXlSdW5zLnNpemUoKSAhPSBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKSkg
ewogICAgICAgICBzdHJlYW0gPDwgIk1pc21hdGNoaW5nIG51bWJlciBvZiBydW5zOiBzaW1wbGUg
cnVucygiIDw8IGxpbmVMYXlvdXREYXRhLT5ydW5Db3VudCgpIDw8ICIpIGlubGluZSBydW5zKCIg
PDwgZGlzcGxheVJ1bnMuc2l6ZSgpIDw8ICIpIjsKQEAgLTE1Nyw4ICsxNjIsMTMgQEAgc3RhdGlj
IHZvaWQgY29sbGVjdElubGluZUJveGVzKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcm9vdCwgVmVj
dG9yPFdlYkNvcmU6OklubGkKIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExp
bmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdywgY29uc3Qg
Q29udGFpbmVyJiBpbmxpbmVGb3JtYXR0aW5nUm9vdCkKIHsKICAgICBhdXRvJiBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShpbmxp
bmVGb3JtYXR0aW5nUm9vdCk7Ci0gICAgQVNTRVJUKGlzPElubGluZUZvcm1hdHRpbmdTdGF0ZT4o
aW5saW5lRm9ybWF0dGluZ1N0YXRlKSk7Ci0gICAgYXV0byYgZGlzcGxheVJ1bnMgPSBkb3duY2Fz
dDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkuZGlzcGxheVJ1
bnMoKTsKKworICAgIGF1dG8qIGRpc3BsYXlJbmxpbmVDb250ZW50ID0gZG93bmNhc3Q8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmRpc3BsYXlJbmxpbmVDb250
ZW50KCk7CisgICAgaWYgKCFkaXNwbGF5SW5saW5lQ29udGVudCkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGF1dG8mIGRp
c3BsYXlSdW5zID0gZGlzcGxheUlubGluZUNvbnRlbnQtPnJ1bnM7CiAKICAgICAvLyBDb2xsZWN0
IGlubGluZWJveGVzLgogICAgIFZlY3RvcjxXZWJDb3JlOjpJbmxpbmVCb3gqPiBpbmxpbmVCb3hl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBl
YzhkMWFkYThkZS4uYjQ0NDQyMzQyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdp
biBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWln
aHQKICAgICAgICAgLy8gMS4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsYXN0IGxpbmUgYm94LCBp
ZiB0aGUgYm94IGVzdGFibGlzaGVzIGEgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCB3aXRoIG9u
ZSBvciBtb3JlIGxpbmVzCiAgICAgICAgIGF1dG8mIGxheW91dENvbnRhaW5lciA9IGRvd25jYXN0
PENvbnRhaW5lcj4obGF5b3V0Qm94KTsKICAgICAgICAgaWYgKGxheW91dENvbnRhaW5lci5lc3Rh
Ymxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGxp
bmVCb3hlcyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUoKS5l
c3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpKS5saW5lQm94ZXMoKTsK
KyAgICAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdT
dGF0ZT4obGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250
YWluZXIpKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7CiAgICAgICAgICAgICAv
LyBFdmVuIGVtcHR5IGNvbnRhaW5lcnMgZ2VuZXJhdGUgb25lIGxpbmUuIAogICAgICAgICAgICAg
QVNTRVJUKCFsaW5lQm94ZXMuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIHJldHVybiB7IGxpbmVC
b3hlcy5sYXN0KCkubG9naWNhbEJvdHRvbSgpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29s
bGFwc2VkTWFyZ2luIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCBiYmEyNWU0Y2Zk
ZS4uODQ0YjBhNmE0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtMzk1LDcgKzM5
NSw3IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdp
bnNDb2xsYXBzZVRocm91Z2goY29uc3QgQm94JiBsCiAKICAgICAgICAgICAgIGF1dG8gaXNDb25z
aWRlcmVkRW1wdHkgPSBbJl0gewogICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNo
ZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Q29udGFpbmVyKSk7Ci0gICAgICAgICAgICAgICAgZm9y
IChhdXRvJiBsaW5lQm94IDogZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpKSB7CisgICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiBsaW5lQm94IDogZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxp
bmVDb250ZW50KCktPmxpbmVCb3hlcykgewogICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmVC
b3guaXNDb25zaWRlcmVkRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNGZjM2VmYWUyOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oCkBA
IC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiRGlzcGxheVJ1bi5oIgorI2lu
Y2x1ZGUgIklubGluZUxpbmVCb3guaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5IHsKKworc3RydWN0IElubGluZUNvbnRl
bnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbmxpbmVDb250ZW50PiB7CisgICAgdXNpbmcgUnVucyA9
IFZlY3RvcjxSdW4sIDEwPjsKKyAgICB1c2luZyBMaW5lQm94ZXMgPSBWZWN0b3I8TGF5b3V0OjpM
aW5lQm94LCA1PjsKKworICAgIFJ1bnMgcnVuczsKKyAgICBMaW5lQm94ZXMgbGluZUJveGVzOwor
CisgICAgY29uc3QgTGF5b3V0OjpMaW5lQm94JiBsaW5lQm94Rm9yUnVuKGNvbnN0IFJ1biYgcnVu
KSBjb25zdCB7IHJldHVybiBsaW5lQm94ZXNbcnVuLmxpbmVJbmRleCgpXTsgfQorfTsKKworfQor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJl
ZS9EaXNwbGF5UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheVBhaW50ZXIuY3BwCmluZGV4IDA5ODE4ZDEyNjI4Li4zMDZhYjhlMDgyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIu
Y3BwCkBAIC0xMTIsNyArMTEyLDExIEBAIHN0YXRpYyB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEJveCYgYWJzb2x1dGVEaXNwCiAKIHN0YXRp
YyB2b2lkIHBhaW50SW5saW5lQ29udGVudChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEJveCYgcm9vdEFic29sdXRlRGlzcGxheUJveCwgY29uc3QgTGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKIHsKLSAgICBhdXRvJiBkaXNwbGF5UnVucyA9IGZv
cm1hdHRpbmdTdGF0ZS5kaXNwbGF5UnVucygpOworICAgIGF1dG8qIGRpc3BsYXlJbmxpbmVDb250
ZW50ID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCk7CisgICAgaWYgKCFk
aXNwbGF5SW5saW5lQ29udGVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGlzcGxh
eVJ1bnMgPSBkaXNwbGF5SW5saW5lQ29udGVudC0+cnVuczsKICAgICBpZiAoZGlzcGxheVJ1bnMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEyNCw3ICsxMjgsNyBAQCBzdGF0aWMg
dm9pZCBwYWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBC
b3gmIHJvb3RBYnNvbHV0ZQogCiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxMZWZ0ID0gcm9vdEFi
c29sdXRlRGlzcGxheUJveC5sZWZ0KCkgKyBydW4ubG9naWNhbExlZnQoKTsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBBZGQgbm9uLWJhc2VsaW5lIGFsaWduIHBhaW50aW5nCi0gICAgICAgICAgICBh
dXRvJiBsaW5lQm94ID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hGb3JSdW4ocnVuKTsKKyAgICAg
ICAgICAgIGF1dG8mIGxpbmVCb3ggPSBkaXNwbGF5SW5saW5lQ29udGVudC0+bGluZUJveEZvclJ1
bihydW4pOwogICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldCA9IHJvb3RBYnNvbHV0ZURp
c3BsYXlCb3gudG9wKCkgKyBsaW5lQm94LmxvZ2ljYWxUb3AoKSArIGxpbmVCb3guYmFzZWxpbmVP
ZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChhdXRvIGV4cGFuc2lvbkNvbnRleHQgPSB0ZXh0Q29u
dGV4dC0+ZXhwYW5zaW9uKCkpCiAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdHls
ZS5mb250Q2FzY2FkZSgpLCBUZXh0UnVuIHsgdGV4dENvbnRleHQtPmNvbnRlbnQoKSwgbG9naWNh
bExlZnQsIGV4cGFuc2lvbkNvbnRleHQtPmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbkNv
bnRleHQtPmJlaGF2aW9yIH0sIHsgbG9naWNhbExlZnQsIGJhc2VsaW5lT2Zmc2V0IH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKaW5kZXggYjY1
NzkxMDQ5OWQuLjM3NzRiNmRiYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UnVuLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkRpc3BsYXlSZWN0LmgiCisjaW5jbHVk
ZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCkBAIC02Nyw3ICs2OCw3IEBAIHN0cnVj
dCBSdW4gewogICAgICAgICBPcHRpb25hbDxFeHBhbnNpb25Db250ZXh0PiBtX2V4cGFuc2lvbkNv
bnRleHQ7CiAgICAgfTsKIAotICAgIFJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFJlY3QmIGxvZ2ljYWxSZWN0LCBPcHRpb25hbDxUZXh0Q29udGV4dD4gPSBX
VEY6Om51bGxvcHQpOworICAgIFJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBMYXlvdXQ6OkJv
eCYsIGNvbnN0IFJlY3QmIGxvZ2ljYWxSZWN0LCBPcHRpb25hbDxUZXh0Q29udGV4dD4gPSBXVEY6
Om51bGxvcHQpOwogCiAgICAgc2l6ZV90IGxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZUluZGV4OyB9CiAKQEAgLTk3LDIwICs5OCwyMSBAQCBzdHJ1Y3QgUnVuIHsKICAgICB2b2lkIHNl
dEltYWdlKENhY2hlZEltYWdlJiBpbWFnZSkgeyBtX2NhY2hlZEltYWdlID0gJmltYWdlOyB9CiAg
ICAgQ2FjaGVkSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZTsgfQog
Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZTsg
fQorICAgIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAqbV9s
YXlvdXRCb3g7IH0KKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25zdCB7IHJldHVy
biBtX2xheW91dEJveC0+c3R5bGUoKTsgfQogCiBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBGaW5k
IG91dCB0aGUgRGlzcGxheTo6UnVuIDwtPiBwYWludCBzdHlsZSBzZXR1cC4KICAgICBjb25zdCBz
aXplX3QgbV9saW5lSW5kZXg7Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUmIG1fc3R5bGU7CisgICAg
V2Vha1B0cjxjb25zdCBMYXlvdXQ6OkJveD4gbV9sYXlvdXRCb3g7CiAgICAgQ2FjaGVkSW1hZ2Uq
IG1fY2FjaGVkSW1hZ2UgeyBudWxscHRyIH07CiAgICAgUmVjdCBtX2xvZ2ljYWxSZWN0OwogICAg
IE9wdGlvbmFsPFRleHRDb250ZXh0PiBtX3RleHRDb250ZXh0OwogfTsKIAotaW5saW5lIFJ1bjo6
UnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVj
dCYgbG9naWNhbFJlY3QsIE9wdGlvbmFsPFRleHRDb250ZXh0PiB0ZXh0Q29udGV4dCkKK2lubGlu
ZSBSdW46OlJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94
LCBjb25zdCBSZWN0JiBsb2dpY2FsUmVjdCwgT3B0aW9uYWw8VGV4dENvbnRleHQ+IHRleHRDb250
ZXh0KQogICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQotICAgICwgbV9zdHlsZShzdHlsZSkK
KyAgICAsIG1fbGF5b3V0Qm94KG1ha2VXZWFrUHRyKGxheW91dEJveCkpCiAgICAgLCBtX2xvZ2lj
YWxSZWN0KGxvZ2ljYWxSZWN0KQogICAgICwgbV90ZXh0Q29udGV4dCh0ZXh0Q29udGV4dCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA2NWFiOTQwMDVjMC4uZTAz
ZDEyMTQ1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTQyNiw4
ICs0MjYsMTAgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVz
Rm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGF1dG8gbGluZUluZGV4ID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLnNpemUoKTsK
LSAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZUJveChMaW5lQm94IHsgbGluZUNvbnRlbnQubGlu
ZUJveCB9KTsKKyAgICBhdXRvJiBpbmxpbmVDb250ZW50ID0gZm9ybWF0dGluZ1N0YXRlLmVuc3Vy
ZURpc3BsYXlJbmxpbmVDb250ZW50KCk7CisKKyAgICBhdXRvIGxpbmVJbmRleCA9IGlubGluZUNv
bnRlbnQubGluZUJveGVzLnNpemUoKTsKKyAgICBpbmxpbmVDb250ZW50LmxpbmVCb3hlcy5hcHBl
bmQoTGluZUJveCB7IGxpbmVDb250ZW50LmxpbmVCb3ggfSk7CiAKICAgICAvLyBDb21wdXRlIGJv
eCBmaW5hbCBnZW9tZXRyeS4KICAgICBhdXRvJiBsaW5lUnVucyA9IGxpbmVDb250ZW50LnJ1bkxp
c3Q7CkBAIC00NDEsNyArNDQzLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0
RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAg
Ly8gSW5saW5lIGxldmVsIGNvbnRhaW5lcnMgKDxzcGFuPikgZG9uJ3QgZ2VuZXJhdGUgZGlzcGxh
eSBydW5zIGFuZCBuZWl0aGVyIGRvIGNvbXBsZXRlbHkgY29sbGFwc2VkIHJ1bnMuCiAgICAgICAg
IGF1dG8gaW5pdGlhdGVzSW5saW5lUnVuID0gIWxpbmVSdW4uaXNDb250YWluZXJTdGFydCgpICYm
ICFsaW5lUnVuLmlzQ29udGFpbmVyRW5kKCkgJiYgIWxpbmVSdW4uaXNDb2xsYXBzZWRUb1Zpc3Vh
bGx5RW1wdHkoKTsKICAgICAgICAgaWYgKGluaXRpYXRlc0lubGluZVJ1bikKLSAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGREaXNwbGF5UnVuKHsgbGluZUluZGV4LCBsaW5lUnVuLmxheW91
dEJveCgpLnN0eWxlKCksIGxpbmVSdW4ubG9naWNhbFJlY3QoKSwgbGluZVJ1bi50ZXh0Q29udGV4
dCgpIH0pOworICAgICAgICAgICAgaW5saW5lQ29udGVudC5ydW5zLmFwcGVuZCh7IGxpbmVJbmRl
eCwgbGluZVJ1bi5sYXlvdXRCb3goKSwgbGluZVJ1bi5sb2dpY2FsUmVjdCgpLCBsaW5lUnVuLnRl
eHRDb250ZXh0KCkgfSk7CiAKICAgICAgICAgaWYgKGxpbmVSdW4uaXNGb3JjZWRMaW5lQnJlYWso
KSkgewogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExl
ZnQoKSk7CkBAIC01MDEsNyArNTAzLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
aW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBJbnZhbGlkYXRpb25TdGF0ZSYKIHsKICAg
ICAvLyBGaW5kIG91dCB3aGF0IHdlIG5lZWQgdG8gaW52YWxpZGF0ZS4gVGhpcyBpcyB3aGVyZSB3
ZSBhZGQgc29tZSBzbWFydHMgdG8gZG8gcGFydGlhbCBsaW5lIGxheW91dC4KICAgICAvLyBGb3Ig
bm93IGxldCdzIGp1c3QgY2xlYXIgdGhlIHJ1bnMuCi0gICAgZm9ybWF0dGluZ1N0YXRlKCkucmVz
ZXREaXNwbGF5UnVucygpOworICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmNsZWFyRGlzcGxheUlubGlu
ZUNvbnRlbnQoKTsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhbHNvIHdoZXJlIHdlIHdvdWxkIGRl
bGV0ZSBpbmxpbmUgaXRlbXMgaWYgdGhlaXIgY29udGVudCBjaGFuZ2VkLgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggZGE2MDY0YjY0MzUu
LjczYzM0MmVkZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWly
a3MuY3BwCkBAIC02Myw4ICs2Myw3IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1
aXJrczo6bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcoY29uc3QgTGluZUJ1aWxkCiAgICAgICAg
IGlmIChydW4uaXNCb3goKSkgewogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJs
b2NrQm94KCkgJiYgbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQo
KSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3Rh
dGUoZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKSk7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKCFmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgICAg
ICAgICBhdXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVz
KCkubGFzdCgpLmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jh
c2VsaW5lID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hl
cy5sYXN0KCkuYmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQmxvY2tCYXNl
bGluZS5kZXNjZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggMDhmOWQ4OTdjY2MuLjc3
MTBjN2MyODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApAQCAtMjcsMTIgKzI3LDEy
IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUg
IkRpc3BsYXlJbmxpbmVDb250ZW50LmgiCiAjaW5jbHVkZSAiRGlzcGxheVJ1bi5oIgogI2luY2x1
ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUl0ZW0uaCIKICNpbmNsdWRl
ICJJbmxpbmVMaW5lQm94LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgotI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91
dCB7CkBAIC01MCw0MCArNTAsMjIgQEAgcHVibGljOgogICAgIGNvbnN0IElubGluZUl0ZW1zJiBp
bmxpbmVJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbXM7IH0KICAgICB2b2lkIGFk
ZElubGluZUl0ZW0oc3RkOjp1bmlxdWVfcHRyPElubGluZUl0ZW0+JiYgaW5saW5lSXRlbSkgeyBt
X2lubGluZUl0ZW1zLmFwcGVuZChXVEZNb3ZlKGlubGluZUl0ZW0pKTsgfQogCi0gICAgdXNpbmcg
RGlzcGxheVJ1bnMgPSBWZWN0b3I8RGlzcGxheTo6UnVuLCAxMD47Ci0gICAgdXNpbmcgTGluZUJv
eGVzID0gVmVjdG9yPExpbmVCb3gsIDU+OwotCi0gICAgY29uc3QgRGlzcGxheVJ1bnMmIGRpc3Bs
YXlSdW5zKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5UnVuczsgfQotICAgIERpc3BsYXlSdW5z
JiBkaXNwbGF5UnVucygpIHsgcmV0dXJuIG1fZGlzcGxheVJ1bnM7IH0KLSAgICB2b2lkIGFkZERp
c3BsYXlSdW4oRGlzcGxheTo6UnVuJiYpOwotICAgIHZvaWQgcmVzZXREaXNwbGF5UnVucygpOwot
Ci0gICAgY29uc3QgTGluZUJveGVzJiBsaW5lQm94ZXMoKSBjb25zdCB7IHJldHVybiBtX2xpbmVC
b3hlczsgfQotICAgIExpbmVCb3hlcyYgbGluZUJveGVzKCkgeyByZXR1cm4gbV9saW5lQm94ZXM7
IH0KLSAgICB2b2lkIGFkZExpbmVCb3goTGluZUJveCYmIGxpbmVCb3gpIHsgbV9saW5lQm94ZXMu
YXBwZW5kKGxpbmVCb3gpOyB9Ci0KLSAgICBjb25zdCBMaW5lQm94JiBsaW5lQm94Rm9yUnVuKGNv
bnN0IERpc3BsYXk6OlJ1biYgZGlzcGxheVJ1bikgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXNb
ZGlzcGxheVJ1bi5saW5lSW5kZXgoKV07IH0KKyAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVDb250
ZW50KiBkaXNwbGF5SW5saW5lQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlubGlu
ZUNvbnRlbnQuZ2V0KCk7IH0KKyAgICBEaXNwbGF5OjpJbmxpbmVDb250ZW50JiBlbnN1cmVEaXNw
bGF5SW5saW5lQ29udGVudCgpOworICAgIHZvaWQgY2xlYXJEaXNwbGF5SW5saW5lQ29udGVudCgp
IHsgbV9kaXNwbGF5SW5saW5lQ29udGVudCA9IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICAv
LyBDYWNoZWFibGUgaW5wdXQgdG8gbGluZSBsYXlvdXQuCiAgICAgSW5saW5lSXRlbXMgbV9pbmxp
bmVJdGVtczsKIAotICAgIC8vIExpbmUgbGF5b3V0IHJlc3VsdHMKLSAgICBEaXNwbGF5UnVucyBt
X2Rpc3BsYXlSdW5zOwotICAgIExpbmVCb3hlcyBtX2xpbmVCb3hlczsKKyAgICBSZWZQdHI8RGlz
cGxheTo6SW5saW5lQ29udGVudD4gbV9kaXNwbGF5SW5saW5lQ29udGVudDsKIH07CiAKLWlubGlu
ZSB2b2lkIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6YWRkRGlzcGxheVJ1bihEaXNwbGF5OjpSdW4m
JiBkaXNwbGF5UnVuKQoraW5saW5lIERpc3BsYXk6OklubGluZUNvbnRlbnQmIElubGluZUZvcm1h
dHRpbmdTdGF0ZTo6ZW5zdXJlRGlzcGxheUlubGluZUNvbnRlbnQoKQogewotICAgIG1fZGlzcGxh
eVJ1bnMuYXBwZW5kKFdURk1vdmUoZGlzcGxheVJ1bikpOwotfQotCi1pbmxpbmUgdm9pZCBJbmxp
bmVGb3JtYXR0aW5nU3RhdGU6OnJlc2V0RGlzcGxheVJ1bnMoKQotewotICAgIG1fZGlzcGxheVJ1
bnMuY2xlYXIoKTsKLSAgICAvLyBSZXNldHRpbmcgdGhlIHJ1bnMgbWVhbnMgbm8gbW9yZSBsaW5l
IGJveGVzIGVpdGhlci4KLSAgICBtX2xpbmVCb3hlcy5jbGVhcigpOwotCisgICAgaWYgKCFtX2Rp
c3BsYXlJbmxpbmVDb250ZW50KQorICAgICAgICBtX2Rpc3BsYXlJbmxpbmVDb250ZW50ID0gYWRv
cHRSZWYoKm5ldyBEaXNwbGF5OjpJbmxpbmVDb250ZW50KTsKKyAgICByZXR1cm4gKm1fZGlzcGxh
eUlubGluZUNvbnRlbnQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA3NDRj
MTEyZTcyOC4uZTg4YzZkMDQxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTI2MSw4
ICsyNjEsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KFJ1bkxp
c3QmIHJ1bkxpc3QpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZUJs
b2NrQm94KCkgJiYgbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQo
KSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdT
dGF0ZShkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkpKTsKICAgICAgICAgICAgICAgICAv
LyBTcGVjIG1ha2VzIHVzIGdlbmVyYXRlIGF0IGxlYXN0IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlz
IGVtcHR5LgotICAgICAgICAgICAgICAgIEFTU0VSVCghZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hl
cygpLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5l
T2Zmc2V0ID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmxhc3QoKS5iYXNlbGluZU9mZnNl
dCgpOworICAgICAgICAgICAgICAgIGF1dG8gaW5saW5lQmxvY2tCYXNlbGluZU9mZnNldCA9IGZv
cm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXMubGFzdCgpLmJh
c2VsaW5lT2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGlubGluZS1ibG9jaydzIGJh
c2VsaW5lIG9mZnNldCBpcyByZWxhdGl2ZSB0byBpdHMgY29udGVudCBib3guIExldCdzIGNvbnZl
cnQgaXQgcmVsYXRpdmUgdG8gdGhlIG1hcmdpbiBib3guCiAgICAgICAgICAgICAgICAgLy8gICBp
bmxpbmUtYmxvY2sKICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgXApAQCAtNTk0LDgg
KzU5Myw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChj
b25zdCBSdW4mIHJ1bikKICAgICAgICAgICAgICAgICAvLyBJbmxpbmUtYmxvY2tzIHdpdGggaW5s
aW5lIGNvbnRlbnQgYWx3YXlzIGhhdmUgYmFzZWxpbmVzLgogICAgICAgICAgICAgICAgIGF1dG8m
IGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0
U3RhdGUoKS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCkpKTsKICAgICAgICAgICAgICAgICAvLyBTcGVjIG1ha2VzIHVzIGdlbmVyYXRlIGF0
IGxlYXN0IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlzIGVtcHR5LgotICAgICAgICAgICAgICAgIEFT
U0VSVCghZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmlzRW1wdHkoKSk7Ci0gICAgICAgICAg
ICAgICAgYXV0byYgbGFzdExpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkubGFz
dCgpOworICAgICAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5lQm94ID0gZm9ybWF0dGluZ1N0YXRl
LmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlcy5sYXN0KCk7CiAgICAgICAgICAgICAg
ICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gbGFzdExpbmVCb3guYmFzZWxpbmUoKTsKICAg
ICAgICAgICAgICAgICBhdXRvIGJlZm9yZUhlaWdodCA9IGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9y
ZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCku
dmFsdWVPcigwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGE2ODA5ZTBiZTliLi40OTI3MmI3ODdlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcApAQCAtMzExLDggKzMxMSwxMiBAQCB2b2lkIFRyZWVCdWlsZGVyOjpidWls
ZFN1YlRyZWUoY29uc3QgUmVuZGVyRWxlbWVudCYgcm9vdFJlbmRlcmVyLCBDb250YWluZXImIHJv
bwogc3RhdGljIHZvaWQgb3V0cHV0SW5saW5lUnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQ29udGFpbmVyJiBpbmxpbmVGb3JtYXR0
aW5nUm9vdCwgdW5zaWduZWQgZGVwdGgpCiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0
YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5lc3RhYmxp
c2hlZEZvcm1hdHRpbmdTdGF0ZShpbmxpbmVGb3JtYXR0aW5nUm9vdCkpOwotICAgIGF1dG8mIGRp
c3BsYXlSdW5zID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlSdW5zKCk7Ci0gICAgYXV0
byYgbGluZUJveGVzID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpOworICAgIGF1
dG8qIGRpc3BsYXlJbmxpbmVDb250ZW50ID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJ
bmxpbmVDb250ZW50KCk7CisgICAgaWYgKCFkaXNwbGF5SW5saW5lQ29udGVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgZGlzcGxheVJ1bnMgPSBkaXNwbGF5SW5saW5lQ29udGVudC0+
cnVuczsKKyAgICBhdXRvJiBsaW5lQm94ZXMgPSBkaXNwbGF5SW5saW5lQ29udGVudC0+bGluZUJv
eGVzOwogCiAgICAgdW5zaWduZWQgcHJpbnRlZENoYXJhY3RlcnMgPSAwOwogICAgIHdoaWxlICgr
K3ByaW50ZWRDaGFyYWN0ZXJzIDw9IGRlcHRoICogMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHAKaW5kZXggNzY1Yjk3ODcy
ZjcuLjUwNTIwYzlmMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcApAQCAtMjYsMjIgKzI2LDE0IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgogCisjaW5jbHVk
ZSAiUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oIgogI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVh
ay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGluZUxheW91dFRyYXZlcnNh
bCB7CiAKLVRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKGNvbnN0IElubGluZVRleHRC
b3gqIGlubGluZVRleHRCb3gpCi0gICAgOiBtX3RleHRCb3goQ29tcGxleFBhdGggeyBpbmxpbmVU
ZXh0Qm94LCB7IH0gfSkKLXsKLX0KLVRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKFZl
Y3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4mJiBzb3J0ZWQsIHNpemVfdCBpbmRleCkKLSAgICA6
IG1fdGV4dEJveChDb21wbGV4UGF0aCB7IGluZGV4IDwgc29ydGVkLnNpemUoKSA/IHNvcnRlZFtp
bmRleF0gOiBudWxscHRyLCBXVEZNb3ZlKHNvcnRlZCksIGluZGV4IH0pCi17Ci19Ci0KLVRleHRC
b3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVy
OjpJdGVyYXRvciBpdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJh
dG9yIGVuZCkKLSAgICA6IG1fdGV4dEJveChTaW1wbGVQYXRoIHsgaXRlcmF0b3IsIGVuZCB9KQor
VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmIHBhdGhW
YXJpYW50KQorICAgIDogbV90ZXh0Qm94KFdURk1vdmUocGF0aFZhcmlhbnQpKQogewogfQogCkBA
IC03OCwyNCArNzAsMzkgQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKICAg
ICB9KTsKIH0KIAorc3RhdGljIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvd0ZvclRleHQoY29u
c3QgUmVuZGVyVGV4dCYgdGV4dCkKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PigqdGV4dC5jb250YWluaW5nQmxvY2tGb3JPYmplY3RJbkZsb3coKSk7Cit9CisKIFRleHRC
b3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIHsKLSAg
ICBpZiAoYXV0byogc2ltcGxlTGluZUxheW91dCA9IHRleHQuc2ltcGxlTGluZUxheW91dCgpKSB7
CisgICAgYXV0byYgZmxvdyA9IGZsb3dGb3JUZXh0KHRleHQpOworCisgICAgaWYgKGF1dG8qIHNp
bXBsZUxpbmVMYXlvdXQgPSBmbG93LnNpbXBsZUxpbmVMYXlvdXQoKSkgewogICAgICAgICBhdXRv
IHJhbmdlID0gc2ltcGxlTGluZUxheW91dC0+cnVuUmVzb2x2ZXIoKS5yYW5nZUZvclJlbmRlcmVy
KHRleHQpOwotICAgICAgICByZXR1cm4geyByYW5nZS5iZWdpbigpLCByYW5nZS5lbmQoKSB9Owor
ICAgICAgICByZXR1cm4geyBTaW1wbGVQYXRoIHsgcmFuZ2UuYmVnaW4oKSwgcmFuZ2UuZW5kKCkg
fSB9OwogICAgIH0KIAotICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IgeyB0ZXh0LmZpcnN0VGV4
dEJveCgpIH07CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgaWYg
KGF1dG8qIGxmY0xpbmVMYXlvdXQgPSBmbG93LmxmY0xpbmVMYXlvdXQoKSkKKyAgICAgICAgcmV0
dXJuIGxmY0xpbmVMYXlvdXQtPnRleHRCb3hlc0Zvcih0ZXh0KTsKKyNlbmRpZgorCisgICAgcmV0
dXJuIHsgQ29tcGxleFBhdGggeyB0ZXh0LmZpcnN0VGV4dEJveCgpIH0gfTsKIH0KIAogVGV4dEJv
eEl0ZXJhdG9yIGZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRl
eHQpCiB7Ci0gICAgaWYgKCF0ZXh0LnNpbXBsZUxpbmVMYXlvdXQoKSAmJiB0ZXh0LmNvbnRhaW5z
UmV2ZXJzZWRUZXh0KCkpIHsKKyAgICBhdXRvJiBmbG93ID0gZmxvd0ZvclRleHQodGV4dCk7CisK
KyAgICBpZiAoZmxvdy5jb21wbGV4TGluZUxheW91dCgpICYmIHRleHQuY29udGFpbnNSZXZlcnNl
ZFRleHQoKSAmJiB0ZXh0LmZpcnN0VGV4dEJveCgpKSB7CiAgICAgICAgIFZlY3Rvcjxjb25zdCBJ
bmxpbmVUZXh0Qm94Kj4gc29ydGVkVGV4dEJveGVzOwogICAgICAgICBmb3IgKGF1dG8qIHRleHRC
b3ggPSB0ZXh0LmZpcnN0VGV4dEJveCgpOyB0ZXh0Qm94OyB0ZXh0Qm94ID0gdGV4dEJveC0+bmV4
dFRleHRCb3goKSkKICAgICAgICAgICAgIHNvcnRlZFRleHRCb3hlcy5hcHBlbmQodGV4dEJveCk7
CiAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRUZXh0Qm94ZXMuYmVnaW4oKSwgc29ydGVkVGV4dEJv
eGVzLmVuZCgpLCBJbmxpbmVUZXh0Qm94Ojpjb21wYXJlQnlTdGFydCk7Ci0gICAgICAgIHJldHVy
biBUZXh0Qm94SXRlcmF0b3IgeyBXVEZNb3ZlKHNvcnRlZFRleHRCb3hlcyksIDAgfTsKKyAgICAg
ICAgYXV0byogZmlyc3QgPSBzb3J0ZWRUZXh0Qm94ZXNbMF07CisgICAgICAgIHJldHVybiB7IENv
bXBsZXhQYXRoIHsgZmlyc3QsIFdURk1vdmUoc29ydGVkVGV4dEJveGVzKSwgMCB9IH07CiAgICAg
fQogCiAgICAgcmV0dXJuIGZpcnN0VGV4dEJveEZvcih0ZXh0KTsKQEAgLTEwNiwxMiArMTEzLDgg
QEAgVGV4dEJveFJhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogICAg
IHJldHVybiB7IGZpcnN0VGV4dEJveEZvcih0ZXh0KSB9OwogfQogCi1FbGVtZW50Qm94SXRlcmF0
b3I6OkVsZW1lbnRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVFbGVtZW50Qm94KiBpbmxpbmVFbGVt
ZW50Qm94KQotICAgIDogbV9ib3goQ29tcGxleFBhdGggeyBpbmxpbmVFbGVtZW50Qm94LCB7IH0g
fSkKLXsKLX0KLUVsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJhdG9yKFNpbXBsZUxp
bmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBpdGVyYXRvciwgU2ltcGxlTGluZUxheW91
dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZCkKLSAgICA6IG1fYm94KFNpbXBsZVBhdGggeyBp
dGVyYXRvciwgZW5kIH0pCitFbGVtZW50Qm94SXRlcmF0b3I6OkVsZW1lbnRCb3hJdGVyYXRvcihC
b3g6OlBhdGhWYXJpYW50JiYgcGF0aFZhcmlhbnQpCisgICAgOiBtX2JveChXVEZNb3ZlKHBhdGhW
YXJpYW50KSkKIHsKIH0KIApAQCAtMTI0LDE0ICsxMjcsMjMgQEAgYm9vbCBFbGVtZW50Qm94SXRl
cmF0b3I6OmF0RW5kKCkgY29uc3QKIAogRWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRCb3hGb3Io
Y29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJFbGVtZW50KQogewotICAgIGlmIChhdXRvJiBw
YXJlbnQgPSAqcmVuZGVyRWxlbWVudC5wYXJlbnQoKTsgaXM8UmVuZGVyQmxvY2tGbG93PihwYXJl
bnQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzaW1wbGVMaW5lTGF5b3V0ID0gZG93bmNhc3Q8UmVu
ZGVyQmxvY2tGbG93PihwYXJlbnQpLnNpbXBsZUxpbmVMYXlvdXQoKSkgewotICAgICAgICAgICAg
YXV0byByYW5nZSA9IHNpbXBsZUxpbmVMYXlvdXQtPnJ1blJlc29sdmVyKCkucmFuZ2VGb3JSZW5k
ZXJlcihyZW5kZXJFbGVtZW50KTsKLSAgICAgICAgICAgIHJldHVybiB7IHJhbmdlLmJlZ2luKCks
IHJhbmdlLmVuZCgpIH07Ci0gICAgICAgIH0KKyAgICBhdXRvKiBjb250YWluaW5nQmxvY2sgPSBy
ZW5kZXJFbGVtZW50LmNvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghaXM8UmVuZGVyQmxvY2tG
bG93Pihjb250YWluaW5nQmxvY2spKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byYg
ZmxvdyA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKmNvbnRhaW5pbmdCbG9jayk7CisKKyAg
ICBpZiAoYXV0byogc2ltcGxlTGluZUxheW91dCA9IGZsb3cuc2ltcGxlTGluZUxheW91dCgpKSB7
CisgICAgICAgIGF1dG8gcmFuZ2UgPSBzaW1wbGVMaW5lTGF5b3V0LT5ydW5SZXNvbHZlcigpLnJh
bmdlRm9yUmVuZGVyZXIocmVuZGVyRWxlbWVudCk7CisgICAgICAgIHJldHVybiB7IFNpbXBsZVBh
dGgocmFuZ2UuYmVnaW4oKSwgcmFuZ2UuZW5kKCkpIH07CiAgICAgfQogCi0gICAgcmV0dXJuIEVs
ZW1lbnRCb3hJdGVyYXRvciB7IHJlbmRlckVsZW1lbnQuaW5saW5lQm94V3JhcHBlcigpIH07Cisj
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgaWYgKGF1dG8qIGxmY0xp
bmVMYXlvdXQgPSBmbG93LmxmY0xpbmVMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJuIGxmY0xpbmVM
YXlvdXQtPmVsZW1lbnRCb3hGb3IocmVuZGVyRWxlbWVudCk7CisjZW5kaWYKKworICAgIHJldHVy
biB7IENvbXBsZXhQYXRoKHJlbmRlckVsZW1lbnQuaW5saW5lQm94V3JhcHBlcigpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0
VHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJh
dmVyc2FsLmgKaW5kZXggMTM0ZjQyMGI1MGYuLmU5MWJlNTJmZmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiTGlu
ZUxheW91dFRyYXZlcnNhbENvbXBsZXhQYXRoLmgiCisjaW5jbHVkZSAiTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbFNpbXBs
ZVBhdGguaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTQ3LDcgKzQ4LDEzIEBAIHN0cnVjdCBFbmRJdGVyYXRvciB7IH07CiAKIGNsYXNzIEJv
eCB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgUGF0aFZhcmlhbnQgPSBWYXJpYW50PFNpbXBsZVBhdGgs
IENvbXBsZXhQYXRoPjsKKyAgICB1c2luZyBQYXRoVmFyaWFudCA9IFZhcmlhbnQ8CisjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgICAgIERpc3BsYXlSdW5QYXRoLAor
I2VuZGlmCisgICAgICAgIENvbXBsZXhQYXRoLAorICAgICAgICBTaW1wbGVQYXRoCisgICAgPjsK
IAogICAgIEJveChQYXRoVmFyaWFudCYmKTsKIApAQCAtODQsMTAgKzkxLDcgQEAgcHVibGljOgog
Y2xhc3MgVGV4dEJveEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBUZXh0Qm94SXRlcmF0b3IoKSA6
IG1fdGV4dEJveChDb21wbGV4UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07Ci0KLSAgICBleHBs
aWNpdCBUZXh0Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4dEJveCopOwotICAgIFRleHRCb3hJ
dGVyYXRvcihWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+JiYgc29ydGVkLCBzaXplX3QgaW5k
ZXgpOwotICAgIFRleHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6
SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQpOwor
ICAgIFRleHRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOwogCiAgICAgVGV4dEJveEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigp
OyB9CiAgICAgVGV4dEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7CkBA
IC0xMTMsOSArMTE3LDcgQEAgcHJpdmF0ZToKIGNsYXNzIEVsZW1lbnRCb3hJdGVyYXRvciB7CiBw
dWJsaWM6CiAgICAgRWxlbWVudEJveEl0ZXJhdG9yKCkgOiBtX2JveChDb21wbGV4UGF0aCB7IG51
bGxwdHIsIHsgfSB9KSB7IH07Ci0KLSAgICBleHBsaWNpdCBFbGVtZW50Qm94SXRlcmF0b3IoY29u
c3QgSW5saW5lRWxlbWVudEJveCopOwotICAgIEVsZW1lbnRCb3hJdGVyYXRvcihTaW1wbGVMaW5l
TGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29s
dmVyOjpJdGVyYXRvciBlbmQpOworICAgIEVsZW1lbnRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJp
YW50JiYpOwogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFh
dEVuZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjljODE3ODcwYjgzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3Bs
YXlSdW5QYXRoLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiRGlz
cGxheUlubGluZUNvbnRlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
TGluZUxheW91dFRyYXZlcnNhbCB7CisKK3N0YXRpYyBGbG9hdFBvaW50IGxpbmVQb3NpdGlvbihm
bG9hdCBsb2dpY2FsTGVmdCwgZmxvYXQgbG9naWNhbFRvcCkKK3sKKyAgICByZXR1cm4gRmxvYXRQ
b2ludChsb2dpY2FsTGVmdCwgcm91bmRmKGxvZ2ljYWxUb3ApKTsKK30KKworY2xhc3MgRGlzcGxh
eVJ1blBhdGggeworcHVibGljOgorICAgIERpc3BsYXlSdW5QYXRoKGNvbnN0IERpc3BsYXk6Oklu
bGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIHNpemVfdCBzdGFydEluZGV4LCBzaXplX3QgZW5k
SW5kZXgpCisgICAgICAgIDogbV9pbmxpbmVDb250ZW50KCZpbmxpbmVDb250ZW50KQorICAgICAg
ICAsIG1fc3RhcnRJbmRleChzdGFydEluZGV4KQorICAgICAgICAsIG1fZW5kSW5kZXgoZW5kSW5k
ZXgpCisgICAgICAgICwgbV9ydW5JbmRleChzdGFydEluZGV4KQorICAgIHsgfQorICAgIERpc3Bs
YXlSdW5QYXRoKERpc3BsYXlSdW5QYXRoJiYpID0gZGVmYXVsdDsKKyAgICBEaXNwbGF5UnVuUGF0
aChjb25zdCBEaXNwbGF5UnVuUGF0aCYpID0gZGVmYXVsdDsKKyAgICBEaXNwbGF5UnVuUGF0aCYg
b3BlcmF0b3I9KGNvbnN0IERpc3BsYXlSdW5QYXRoJikgPSBkZWZhdWx0OworICAgIERpc3BsYXlS
dW5QYXRoJiBvcGVyYXRvcj0oRGlzcGxheVJ1blBhdGgmJikgPSBkZWZhdWx0OworCisgICAgRmxv
YXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpOyB9CisgICAgRmxvYXRS
ZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIGF1dG8gbG9naWNhbFJlY3Qg
PSBydW4oKS5sb2dpY2FsUmVjdCgpOworICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gbGlu
ZVBvc2l0aW9uKGxvZ2ljYWxSZWN0LmxlZnQoKSwgbG9naWNhbFJlY3QudG9wKCkpOworICAgICAg
ICByZXR1cm4geyBwb3NpdGlvbiwgbG9naWNhbFJlY3Quc2l6ZSgpIH07CisgICAgfQorCisgICAg
Ym9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgZGlyT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNM
aW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAvLyBGSVhNRTogSW1wbGVtZW50Lgor
CisgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAvLyBGSVhNRTog
SW1wbGVtZW50LgorICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRl
eHRDb250ZXh0KCktPmNvbnRlbnQoKTsgfQorICAgIHVuc2lnbmVkIGxvY2FsU3RhcnRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBydW4oKS50ZXh0Q29udGV4dCgpLT5zdGFydCgpIC0gZmlyc3RSdW4o
KS50ZXh0Q29udGV4dCgpLT5zdGFydCgpOyB9CisgICAgdW5zaWduZWQgbG9jYWxFbmRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBydW4oKS50ZXh0Q29udGV4dCgpLT5lbmQoKSAtIGZpcnN0UnVuKCku
dGV4dENvbnRleHQoKS0+c3RhcnQoKTsgfQorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIHJ1bigpLnRleHRDb250ZXh0KCktPmVuZCgpIC0gcnVuKCkudGV4dENvbnRleHQoKS0+
c3RhcnQoKTsgfQorCisgICAgYm9vbCBpc0xhc3RPbkxpbmUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKGlzTGFzdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGF1dG8m
IG5leHQgPSBydW5zKClbbV9ydW5JbmRleCArIDFdOworICAgICAgICByZXR1cm4gcnVuKCkubGlu
ZUluZGV4KCkgIT0gbmV4dC5saW5lSW5kZXgoKTsKKyAgICB9CisgICAgYm9vbCBpc0xhc3QoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcnVuSW5kZXggKyAxID09IG1fZW5kSW5kZXg7
CisgICAgfTsKKworICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dEJveEluVmlzdWFsT3JkZXIoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICAgICAgKyttX3J1bkluZGV4Owor
ICAgICAgICB3aGlsZSAoIWF0RW5kKCkgJiYgIXJ1bigpLnRleHRDb250ZXh0KCkpCisgICAgICAg
ICAgICArK21fcnVuSW5kZXg7CisgICAgfQorICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dEJveElu
VGV4dE9yZGVyKCkgeyAgdHJhdmVyc2VOZXh0VGV4dEJveEluVmlzdWFsT3JkZXIoKTsgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERpc3BsYXlSdW5QYXRoJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBtX3J1bklu
ZGV4ID09IG90aGVyLm1fcnVuSW5kZXg7IH0KKyAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1
cm4gbV9ydW5JbmRleCA9PSBtX2VuZEluZGV4OyB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgRGlz
cGxheTo6SW5saW5lQ29udGVudDo6UnVucyYgcnVucygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5l
Q29udGVudC0+cnVuczsgfQorICAgIGNvbnN0IERpc3BsYXk6OlJ1biYgZmlyc3RSdW4oKSBjb25z
dCB7IHJldHVybiBydW5zKClbbV9zdGFydEluZGV4XTsgfQorICAgIGNvbnN0IERpc3BsYXk6OlJ1
biYgcnVuKCkgY29uc3QgeyByZXR1cm4gcnVucygpW21fcnVuSW5kZXhdOyB9CisKKyAgICBSZWZQ
dHI8Y29uc3QgRGlzcGxheTo6SW5saW5lQ29udGVudD4gbV9pbmxpbmVDb250ZW50OworICAgIHNp
emVfdCBtX3N0YXJ0SW5kZXggeyAwIH07CisgICAgc2l6ZV90IG1fZW5kSW5kZXggeyAwIH07Cisg
ICAgc2l6ZV90IG1fcnVuSW5kZXggeyAwIH07Cit9OworCit9Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>