<?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>278527</bug_id>
          
          <creation_ts>2024-08-22 09:56:57 -0700</creation_ts>
          <short_desc>[Cleanup] Use AtomicInlineBox consistently across inline layout</short_desc>
          <delta_ts>2024-08-22 12:18:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>bfulgham</cc>
    
    <cc>koivisto</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>2054731</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2024-08-22 09:56:57 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2054733</commentid>
    <comment_count>1</comment_count>
      <attachid>472267</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-08-22 10:03:28 -0700</bug_when>
    <thetext>Created attachment 472267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2054737</commentid>
    <comment_count>2</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2024-08-22 10:20:25 -0700</bug_when>
    <thetext>@Alan - commit message has incorrect spelling for `[Cleanup]`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2054738</commentid>
    <comment_count>3</comment_count>
      <attachid>472268</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-08-22 10:21:36 -0700</bug_when>
    <thetext>Created attachment 472268
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2054760</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-08-22 12:17:22 -0700</bug_when>
    <thetext>Committed 282629@main (746c3647737f): &lt;https://commits.webkit.org/282629@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 472268.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2054761</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-08-22 12:18:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/134518353&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472267</attachid>
            <date>2024-08-22 10:03:28 -0700</date>
            <delta_ts>2024-08-22 10:21:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-278527-20240822100327.patch</filename>
            <type>text/plain</type>
            <size>63197</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAzNGZkYTQwZWIxNGQxMjBiMGFjZGI1NzRhNTc0MTdmYTgxZmQ4MjQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMjIgQXVnIDIwMjQgMDk6NTc6MDYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbQ2xlYW51
XSBVc2UgQXRvbWljSW5saW5lQm94IGNvbnNpc3RlbnRseSBhY3Jvc3MgaW5saW5lCiBsYXlvdXQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODUyNwoKUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCgpVc2UgIkF0b21pY0lubGluZUJveCIgc3RhcnRpbmcgZnJvbSBJ
bmxpbmVJdGVtcyBhbGwgdGhlIHdheSB0byBkaXNwbGF5IGJveGVzIHdoZW4gYXBwbGljYWJsZS4K
KGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtZGlzcGxheS0zLyNhdG9taWMtaW5saW5lKQoKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250
ZW50QWxpZ25lci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmNvbXB1dGVkRXhwYW5zaW9ucyk6Ciog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29u
dGVudEJyZWFrZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6
cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6YXBwZW5kKToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpyZXNl
dEdlb21ldHJ5Rm9yQ2xhbXBlZENvbnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHA6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGlu
ZUJveCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6aXNB
dFNvZnRXcmFwT3Bwb3J0dW5pdHkgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nVXRpbHM6Om5leHRXcmFwT3Bwb3J0dW5pdHkgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaDoKKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lSXRlbTo6aXNBdG9taWNJbmxpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVJdGVtOjppc0JveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lSXRlbXNCdWlsZGVyOjpidWlsZCk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKToKKFdlYkNv
cmU6OkxheW91dDo6YnVpbGRCaWRpUGFyYWdyYXBoKToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
SXRlbXNCdWlsZGVyOjpoYW5kbGVJbmxpbmVMZXZlbEJveCk6CiogU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaDoKKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6Omhhc1RleHRFbXBoYXNpcyBjb25zdCk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUxldmVsQm94Ojppc0F0b21pY0lubGluZUJveCBjb25zdCk6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94Ojppc0xpc3RNYXJrZXIgY29uc3QpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6aXNBdG9taWNJbmxpbmVMZXZlbEJveCBjb25zdCk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGV2ZWxCb3hJbmxpbmVzLmg6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVs
Qm94OjpjcmVhdGVBdG9taWNJbmxpbmVCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZl
bEJveDo6bWF5U3RyZXRjaExpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVM
ZXZlbEJveDo6Y3JlYXRlQXRvbWljSW5saW5lTGV2ZWxCb3gpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwOgoo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpyZXNldEJpZGlMZXZlbEZvclRyYWlsaW5nV2hpdGVzcGFj
ZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZCk6CihXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OmFwcGVuZFRleHRDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kQXRv
bWljSW5saW5lQm94KToKKFdlYkNvcmU6OkxheW91dDo6dG9MaW5lUnVuVHlwZSk6CihXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmU6OmFwcGVuZEdlbmVyaWNJbmxpbmVMZXZlbEJveCk6IERlbGV0ZWQuCiog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmlzQXRvbWljSW5saW5lQm94IGNvbnN0
KToKKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjppc0NvbnRlbnRmdWwgY29uc3QpOgooV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmlzQm94IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbEJvcmRlckJveEZvckF0b21pY0lu
bGluZUJveCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxCb3JkZXJC
b3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oOgooV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQm94OjpoYXNOb25JbmxpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94OjpoYXNBdG9taWNJbmxpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQm94OjpoYXNBdG9taWNJbmxpbmVMZXZlbEJveCBjb25zdCk6IERlbGV0ZWQuCiog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6c2V0VmVy
dGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyk6CihXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphZGp1c3RJZGVvZ3JhcGhpY0Jhc2VsaW5lSWZBcHBsaWNh
YmxlKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJv
eFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHRBbmRBbGlnbiBjb25zdCk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFkanVzdEZvckFubm90YXRp
b25JZk5lZWRlZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0Ojppc0Nv
bnRlbnRmdWxPckhhc0RlY29yYXRpb24pOgooV2ViQ29yZTo6TGF5b3V0OjpoYXNUcmFpbGluZ1Nv
ZnRXcmFwT3Bwb3J0dW5pdHkpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQ2FuZGlkYXRlOjpJbmxp
bmVDb250ZW50OjphcHBlbmRJbmxpbmVJdGVtKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OmFkanVzdGVkTGluZVJlY3RXaXRoQ2FuZGlkYXRlSW5saW5lQ29udGVudCBjb25zdCk6Ciog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lUXVp
cmtzLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lUXVpcmtzOjpsaW5lQnJlYWtCb3hBZmZl
Y3RzUGFyZW50SW5saW5lQm94KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0
OjpJbnRyaW5zaWNXaWR0aEhhbmRsZXI6OnNpbXBsaWZpZWRNaW5pbXVtV2lkdGggY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUJveC5oOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94Ojppc0F0b21p
Y0lubGluZUJveCBjb25zdCk6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6OmlzSW5saW5l
TGV2ZWxCb3ggY29uc3QpOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94Ojppc0F0b21pY0lu
bGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBw
ZW5kQXRvbWljSW5saW5lTGV2ZWxEaXNwbGF5Qm94KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyOjppbnNlcnRSdWJ5QW5ub3RhdGlvbkJveCk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250
ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjphZGp1
c3RWaXN1YWxHZW9tZXRyeUZvckRpc3BsYXlCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudCk6CihXZWJDb3JlOjpMYXlv
dXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y29sbGVjdElua092ZXJmbG93Rm9ySW5s
aW5lQm94ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpjb2xsZWN0RW5jbG9zaW5nTGluZUdlb21ldHJ5
IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Cb3hUcmVlLmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpzaG93SW5saW5l
Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlv
dXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpJbmxpbmVDb250ZW50QnVpbGRlcjo6YWRqdXN0RGlzcGxheUxpbmVzIGNvbnN0
KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxh
eW91dDo6dXBkYXRlUmVuZGVyVHJlZVBvc2l0aW9ucyk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TGluZUxheW91dDo6aGl0VGVzdCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
TGluZUxheW91dDo6c2hpZnRMaW5lc0J5KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzQXRvbWljSW5saW5l
Qm94IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0xheW91dENvbnRhaW5tZW50Qm94
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc1NpemVDb250YWlubWVudEJveCBjb25z
dCk6CihXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNBdG9taWNJbmxpbmVMZXZlbEJveCBjb25zdCk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94Lmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0OjpzaG93SW5saW5lVHJlZUFuZFJ1bnMpOgooV2ViQ29yZTo6TGF5
b3V0OjpvdXRwdXRMYXlvdXRCb3gpOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lQ29udGVudEFsaWdu
ZXIuY3BwICAgICAgICAgICB8ICA0ICsrLS0KIC4uLi9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFr
ZXIuY3BwICAgICAgICAgICB8ICA4ICsrKy0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdV
dGlscy5jcHAgICAgICAgICAgfCAxMCArKysrLS0tLS0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUl0ZW0uaCAgICB8ICA0ICsrLS0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNC
dWlsZGVyLmNwcCAgICAgICAgICAgICB8IDEwICsrKystLS0tLQogLi4uL2lubGluZS9JbmxpbmVM
ZXZlbEJveC5oICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKy0tLS0tCiAuLi4vaW5saW5lL0lu
bGluZUxldmVsQm94SW5saW5lcy5oICAgICAgICAgICAgfCAgNiArKy0tLQogLi4uL2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAgIHwgMTQgKysrKysrLS0tLS0tCiAuLi4v
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmggICAgfCAgOCArKystLS0tCiAu
Li4vaW5saW5lL0lubGluZUxpbmVCb3guY3BwICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiAu
Li4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmggfCAgNiArKy0tLQog
Li4uL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAgICAgICAgICAgIHwgMjIgKysrKysr
KysrLS0tLS0tLS0tLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNw
cCAgIHwgIDYgKystLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAg
ICAgICB8IDE0ICsrKysrKy0tLS0tLQogLi4uL2lubGluZS9JbmxpbmVRdWlya3MuY3BwICAgICAg
ICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNw
cCAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5o
ICAgICAgICAgfCAgNiArKy0tLQogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmNwcCAgIHwgMjIgKysrKysrKysrLS0tLS0tLS0tLQogLi4uL2Rpc3BsYXkvSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyLmNwcCAgICAgIHwgIDYgKystLS0KIC4uLi9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwICB8ICAyICstCiAuLi4vTGF5b3V0SW50ZWdyYXRpb25J
bmxpbmVDb250ZW50QnVpbGRlci5jcHAgfCAgMiArLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuY3BwICAgIHwgIDYgKystLS0KIC4uLi9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5jcHAgICB8ICA2ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRCb3guaCAgfCAgMiArLQogLi4uL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcCAgIHwgIDggKysrLS0tLQogMjYgZmlsZXMgY2hhbmdlZCwgOTYg
aW5zZXJ0aW9ucygrKSwgOTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lQ29udGVudEFsaWduZXIuY3BwCmluZGV4IGM5ODEzZjMyYjY5My4uOWMxODFjNDE4N2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QWxpZ25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuY3BwCkBAIC0yMTEs
MTQgKzIxMSwxNCBAQCBzdGF0aWMgdm9pZCBjb21wdXRlZEV4cGFuc2lvbnMoY29uc3QgTGluZTo6
UnVuTGlzdCYgcnVucywgV1RGOjpSYW5nZTxzaXplX3Q+IHJ1bgogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBzdGQ6OnRpZShleHBhbnNpb25PcHBvcnR1bml0aWVzSW5SdW4sIHJ1
bklzQWZ0ZXJFeHBhbnNpb24pID0gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnQoU3RyaW5nVmlldyhkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihydW4ubGF5b3V0Qm94KCkpLmNv
bnRlbnQoKSkuc3Vic3RyaW5nKHRleHRDb250ZW50LnN0YXJ0LCBsZW5ndGgpLCBydW4uaW5saW5l
RGlyZWN0aW9uKCksIGV4cGFuc2lvbkJlaGF2aW9yKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlIGlmIChydW4uaXNCb3goKSkKKyAgICAgICAgfSBlbHNlIGlmIChydW4uaXNBdG9taWNJ
bmxpbmVCb3goKSkKICAgICAgICAgICAgIHJ1bklzQWZ0ZXJFeHBhbnNpb24gPSBmYWxzZTsKIAog
ICAgICAgICBleHBhbnNpb25JbmZvLmJlaGF2aW9yTGlzdFtpbmRleF0gPSBleHBhbnNpb25CZWhh
dmlvcjsKICAgICAgICAgZXhwYW5zaW9uSW5mby5vcHBvcnR1bml0eUxpc3RbaW5kZXhdID0gZXhw
YW5zaW9uT3Bwb3J0dW5pdGllc0luUnVuOwogICAgICAgICBleHBhbnNpb25JbmZvLm9wcG9ydHVu
aXR5Q291bnQgKz0gZXhwYW5zaW9uT3Bwb3J0dW5pdGllc0luUnVuOwogCi0gICAgICAgIGlmIChy
dW4uaXNUZXh0KCkgfHwgcnVuLmlzQm94KCkpCisgICAgICAgIGlmIChydW4uaXNUZXh0KCkgfHwg
cnVuLmlzQXRvbWljSW5saW5lQm94KCkpCiAgICAgICAgICAgICBsYXN0RXhwYW5zaW9uSW5kZXhX
aXRoQ29udGVudCA9IGluZGV4OwogICAgIH0KICAgICAvLyBGb3JiaWQgcmlnaHQgZXhwYW5zaW9u
IGluIHRoZSBsYXN0IHJ1biB0byBwcmV2ZW50IHRyYWlsaW5nIGV4cGFuc2lvbiBhdCB0aGUgZW5k
IG9mIHRoZSBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIu
Y3BwCmluZGV4IDJkZjBmNzcxYzZjZC4uZjhmMjQ1NWU3ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJl
YWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgSW5saW5l
Q29udGVudEJyZWFrZXI6OlJlc3VsdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092ZXJm
bG93aW5nQ29udGVudChjb24KICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB2YXJp
b3VzIGNvbnRlbnQuCiAgICAgICAgIGF1dG8mIHJ1bnMgPSBjb250aW51b3VzQ29udGVudC5ydW5z
KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcnVucy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgaWYgKHJ1bnNbaV0uaW5saW5lSXRlbS5pc0JveCgpKSB7CisgICAgICAgICAg
ICBpZiAocnVuc1tpXS5pbmxpbmVJdGVtLmlzQXRvbWljSW5saW5lQm94KCkpIHsKICAgICAgICAg
ICAgICAgICBvdmVyZmxvd2luZ1J1bkluZGV4ID0gaTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KQEAgLTg1NSwxMSArODU1LDExIEBAIHZvaWQgSW5saW5lQ29udGVudEJy
ZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpyZXNldFRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgp
CiAKIHZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjphcHBlbmQo
Y29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKLSAgICBBU1NFUlQoaW5saW5lSXRlbS5p
c0JveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJ
bmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpOworICAgIEFTU0VSVChpbmxp
bmVJdGVtLmlzQXRvbWljSW5saW5lQm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0
KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUo
KSk7CiAgICAgbV9pc1RleHRPbmx5Q29udGVudCA9IGZhbHNlOwotICAgIG1faGFzVHJhaWxpbmdX
b3JkU2VwYXJhdG9yID0gbV9oYXNUcmFpbGluZ1dvcmRTZXBhcmF0b3IgJiYgIWlubGluZUl0ZW0u
aXNCb3goKTsKKyAgICBtX2hhc1RyYWlsaW5nV29yZFNlcGFyYXRvciA9IG1faGFzVHJhaWxpbmdX
b3JkU2VwYXJhdG9yICYmICFpbmxpbmVJdGVtLmlzQXRvbWljSW5saW5lQm94KCk7CiAgICAgYXBw
ZW5kVG9SdW5MaXN0KGlubGluZUl0ZW0sIHN0eWxlLCB7IH0sIGxvZ2ljYWxXaWR0aCk7Ci0gICAg
aWYgKGlubGluZUl0ZW0uaXNCb3goKSkgeworICAgIGlmIChpbmxpbmVJdGVtLmlzQXRvbWljSW5s
aW5lQm94KCkpIHsKICAgICAgICAgLy8gSW5saW5lIGJveGVzICh3aGl0ZXNwYWNlLT4gPHNwYW4+
PC9zcGFuPikgZG8gbm90IHByZXZlbnQgdGhlIHRyYWlsaW5nIGNvbnRlbnQgZnJvbSBnZXR0aW5n
IHRyaW1tZWQvaHVuZwogICAgICAgICAvLyBidXQgYXRvbWljIGlubGluZSBsZXZlbCBib3hlcyBk
by4KICAgICAgICAgcmVzZXRUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAxOGQ4Yjg5NzIw
MzcuLmY4NGJlYmI2MjQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcApAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OnJlc2V0R2VvbWV0cnlGb3JDbGFtcGVkQ29udGVudChjb25zdCBJbmxpbmVJdGVt
UmFuCiAgICAgYXV0byYgaW5saW5lSXRlbUxpc3QgPSBpbmxpbmVDb250ZW50Q2FjaGUoKS5pbmxp
bmVJdGVtcygpLmNvbnRlbnQoKTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IG5lZWRzRGlzcGxh
eUNvbnRlbnRSYW5nZS5zdGFydEluZGV4KCk7IGluZGV4IDwgbmVlZHNEaXNwbGF5Q29udGVudFJh
bmdlLmVuZEluZGV4KCk7ICsraW5kZXgpIHsKICAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IGlu
bGluZUl0ZW1MaXN0W2luZGV4XTsKLSAgICAgICAgYXV0byBoYXNCb3hHZW9tZXRyeSA9IGlubGlu
ZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzRmxvYXQoKSB8fCBpbmxpbmVJdGVtLmlzSGFy
ZExpbmVCcmVhaygpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpOworICAgICAgICBh
dXRvIGhhc0JveEdlb21ldHJ5ID0gaW5saW5lSXRlbS5pc0F0b21pY0lubGluZUJveCgpIHx8IGlu
bGluZUl0ZW0uaXNGbG9hdCgpIHx8IGlubGluZUl0ZW0uaXNIYXJkTGluZUJyZWFrKCkgfHwgaW5s
aW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCk7CiAgICAgICAgIGlmICghaGFzQm94R2VvbWV0cnkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBnZW9t
ZXRyeUZvckJveChpbmxpbmVJdGVtLmxheW91dEJveCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdV
dGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwCmluZGV4IDcxYjlkODg5NDI2MC4uM2QwYjRiYjI5
ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAK
QEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIElubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lTGV2
ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSkKICAgICAgICAg
cmV0dXJuIGxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkgPyB0cnVlIDogZm9ybWF0dGlu
Z0NvbnRleHQoKS5xdWlya3MoKS5pbmxpbmVCb3hBZmZlY3RzTGluZUJveChpbmxpbmVMZXZlbEJv
eCk7Ci0gICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkKKyAg
ICBpZiAoaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVCb3goKSkKICAgICAgICAgcmV0dXJu
ICFpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKS5pc1J1YnlBbm5vdGF0aW9uQm94KCk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpAQCAtNDA2LDggKzQwNiw4IEBAIGJvb2wgSW5saW5lRm9ybWF0dGlu
Z1V0aWxzOjppc0F0U29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiBwcmV2aW91
cywKICAgICAvLyBlLmcuIFtpbmxpbmUgYm94IHN0YXJ0XVtwcmlvcl9jb250aW51b3VzX2NvbnRl
bnRdW2lubGluZSBib3ggZW5kXSAoPHNwYW4+cHJpb3JfY29udGludW91c19jb250ZW50PC9zcGFu
PikKICAgICAvLyBBbiBpbmNvbWluZyA8aW1nPiBib3ggd291bGQgZW5hYmxlIHVzIHRvIGNvbW1p
dCB0aGUgIjxzcGFuPnByaW9yX2NvbnRpbnVvdXNfY29udGVudDwvc3Bhbj4iIGNvbnRlbnQKICAg
ICAvLyBidXQgYW4gaW5jb21pbmcgdGV4dCBjb250ZW50IHdvdWxkIG5vdCBuZWNlc3NhcmlseS4K
LSAgICBBU1NFUlQocHJldmlvdXMuaXNUZXh0KCkgfHwgcHJldmlvdXMuaXNCb3goKSB8fCBwcmV2
aW91cy5sYXlvdXRCb3goKS5pc1J1YnlJbmxpbmVCb3goKSk7Ci0gICAgQVNTRVJUKG5leHQuaXNU
ZXh0KCkgfHwgbmV4dC5pc0JveCgpIHx8IG5leHQubGF5b3V0Qm94KCkuaXNSdWJ5SW5saW5lQm94
KCkpOworICAgIEFTU0VSVChwcmV2aW91cy5pc1RleHQoKSB8fCBwcmV2aW91cy5pc0F0b21pY0lu
bGluZUJveCgpIHx8IHByZXZpb3VzLmxheW91dEJveCgpLmlzUnVieUlubGluZUJveCgpKTsKKyAg
ICBBU1NFUlQobmV4dC5pc1RleHQoKSB8fCBuZXh0LmlzQXRvbWljSW5saW5lQm94KCkgfHwgbmV4
dC5sYXlvdXRCb3goKS5pc1J1YnlJbmxpbmVCb3goKSk7CiAKICAgICBpZiAocHJldmlvdXMubGF5
b3V0Qm94KCkuaXNSdWJ5SW5saW5lQm94KCkgfHwgbmV4dC5sYXlvdXRCb3goKS5pc1J1YnlJbmxp
bmVCb3goKSkKICAgICAgICAgcmV0dXJuIFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6aXNBdFNvZnRX
cmFwT3Bwb3J0dW5pdHkocHJldmlvdXMsIG5leHQpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIGJvb2wg
SW5saW5lRm9ybWF0dGluZ1V0aWxzOjppc0F0U29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxp
bmVJdGVtJiBwcmV2aW91cywKICAgICAgICAgLy8gRklYTUU6IFNIb3VsZCB0aGlzIGV2ZXIgYmUg
dGhlIGNhc2U/CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAocHJldmlvdXMu
aXNCb3goKSB8fCBuZXh0LmlzQm94KCkpIHsKKyAgICBpZiAocHJldmlvdXMuaXNBdG9taWNJbmxp
bmVCb3goKSB8fCBuZXh0LmlzQXRvbWljSW5saW5lQm94KCkpIHsKICAgICAgICAgLy8gW3RleHRd
W2lubGluZSBib3ggc3RhcnRdW2lubGluZSBib3ggZW5kXVtpbmxpbmUgYm94XSAodGV4dDxzcGFu
Pjwvc3Bhbj48aW1nPikgOiB0aGVyZSdzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5IGJldHdlZW4g
dGhlIFt0ZXh0XSBhbmQgW2ltZ10uCiAgICAgICAgIC8vIFRoZSBsaW5lIGJyZWFraW5nIGJlaGF2
aW9yIG9mIGEgcmVwbGFjZWQgZWxlbWVudCBvciBvdGhlciBhdG9taWMgaW5saW5lIGlzIGVxdWl2
YWxlbnQgdG8gYW4gaWRlb2dyYXBoaWMgY2hhcmFjdGVyLgogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTQ5Nyw3ICs0OTcsNyBAQCBzaXplX3QgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpuZXh0V3Jh
cE9wcG9ydHVuaXR5KHNpemVfdCBzdGFydEluZGV4LCBjb25zdCBJbmxpbgogICAgICAgICAgICAg
Ly8gVGhpcyBpdGVtIGlzIGludmlzaWJsZSB0byBsaW5lIGJyZWFraW5nLiBOZWVkIHRvIHByZXRl
bmQgaXQncyBub3QgaGVyZS4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAg
ICAgIEFTU0VSVChjdXJyZW50SXRlbS5pc1RleHQoKSB8fCBjdXJyZW50SXRlbS5pc0JveCgpIHx8
IGN1cnJlbnRJdGVtLmlzRmxvYXQoKSB8fCBjdXJyZW50SXRlbS5sYXlvdXRCb3goKS5pc1J1YnlJ
bmxpbmVCb3goKSk7CisgICAgICAgIEFTU0VSVChjdXJyZW50SXRlbS5pc1RleHQoKSB8fCBjdXJy
ZW50SXRlbS5pc0F0b21pY0lubGluZUJveCgpIHx8IGN1cnJlbnRJdGVtLmlzRmxvYXQoKSB8fCBj
dXJyZW50SXRlbS5sYXlvdXRCb3goKS5pc1J1YnlJbmxpbmVCb3goKSk7CiAgICAgICAgIGlmIChj
dXJyZW50SXRlbS5pc0Zsb2F0KCkpIHsKICAgICAgICAgICAgIC8vIFdoaWxlIGZsb2F0cyBhcmUg
bm90IHBhcnQgb2YgdGhlIGlubGluZSBjb250ZW50IGFuZCB0aGV5IGFyZSBub3Qgc3VwcG9zZWQg
dG8gaW50cm9kdWNlIHNvZnQgd3JhcCBvcHBvcnR1bml0aWVzLAogICAgICAgICAgICAgLy8gZS5n
LiBbdGV4dF1bZmxvYXQgYm94XVtmbG9hdCBib3hdW3RleHRdW2Zsb2F0IGJveF1bdGV4dF0gaXMg
ZXNzZW50aWFsbHkganVzdCBbdGV4dF1bdGV4dF1bdGV4dF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0u
aAppbmRleCA2MWI2ZmMxNGQ3ZDEuLjNlMTUyOTAzYTgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0
ZW0uaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhcmRMaW5lQnJlYWssCiAg
ICAgICAgIFNvZnRMaW5lQnJlYWssCiAgICAgICAgIFdvcmRCcmVha09wcG9ydHVuaXR5LAotICAg
ICAgICBCb3gsCisgICAgICAgIEF0b21pY0lubGluZUJveCwKICAgICAgICAgSW5saW5lQm94U3Rh
cnQsCiAgICAgICAgIElubGluZUJveEVuZCwKICAgICAgICAgRmxvYXQsCkBAIC01Nyw3ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgZmlyc3RMaW5lU3R5bGUoKSBjb25z
dCB7IHJldHVybiBsYXlvdXRCb3goKS5maXJzdExpbmVTdHlsZSgpOyB9CiAKICAgICBib29sIGlz
VGV4dCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBUeXBlOjpUZXh0OyB9Ci0gICAgYm9vbCBp
c0JveCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBUeXBlOjpCb3g7IH0KKyAgICBib29sIGlz
QXRvbWljSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFR5cGU6OkF0b21pY0lu
bGluZUJveDsgfQogICAgIGJvb2wgaXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBU
eXBlOjpGbG9hdDsgfQogICAgIGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBpc1Nv
ZnRMaW5lQnJlYWsoKSB8fCBpc0hhcmRMaW5lQnJlYWsoKTsgfQogICAgIGJvb2wgaXNXb3JkQnJl
YWtPcHBvcnR1bml0eSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBUeXBlOjpXb3JkQnJlYWtP
cHBvcnR1bml0eTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAK
aW5kZXggODc0Nzg2NjZiMTQyLi5mMTllOTY2MWRlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lSXRlbXNCdWlsZGVyLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgSW5saW5lSXRl
bXNCdWlsZGVyOjpidWlsZChJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbikKICAgICAg
ICAgZWxzZSBpZiAoaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKQogICAgICAgICAgICAgKytp
bmxpbmVCb3hFbmQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byBoYXNUb0JlVW5p
cXVlTGF5b3V0Qm94ID0gaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNGbG9hdCgp
IHx8IGlubGluZUl0ZW0uaXNIYXJkTGluZUJyZWFrKCk7CisgICAgICAgICAgICBhdXRvIGhhc1Rv
QmVVbmlxdWVMYXlvdXRCb3ggPSBpbmxpbmVJdGVtLmlzQXRvbWljSW5saW5lQm94KCkgfHwgaW5s
aW5lSXRlbS5pc0Zsb2F0KCkgfHwgaW5saW5lSXRlbS5pc0hhcmRMaW5lQnJlYWsoKTsKICAgICAg
ICAgICAgIGlmIChoYXNUb0JlVW5pcXVlTGF5b3V0Qm94KQogICAgICAgICAgICAgICAgIEFTU0VS
VChpbmxpbmVMZXZlbEl0ZW1zLmFkZCgmaW5saW5lSXRlbS5sYXlvdXRCb3goKSkuaXNOZXdFbnRy
eSk7CiAgICAgICAgIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIElubGluZUl0ZW1zQnVpbGRl
cjo6Y29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1MaXN0JiBpbmxpbmVJdGVtTGlzdCwgSW5s
aQogICAgICAgICAgICAgICAgIGlubGluZUl0ZW1MaXN0LmFwcGVuZCh7IGxheW91dEJveCwgSW5s
aW5lSXRlbTo6VHlwZTo6T3BhcXVlIH0pOwogICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBp
bmxpbmVUZXh0Qm94ID0gZHluYW1pY0Rvd25jYXN0PElubGluZVRleHRCb3g+KGxheW91dEJveC5n
ZXQoKSkpCiAgICAgICAgICAgICAgICAgaGFuZGxlVGV4dENvbnRlbnQoKmlubGluZVRleHRCb3gs
IGlubGluZUl0ZW1MaXN0LCBwYXJ0aWFsQ29udGVudE9mZnNldCgqaW5saW5lVGV4dEJveCkpOwot
ICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LT5pc0F0b21pY0lubGluZUxldmVsQm94KCkg
fHwgbGF5b3V0Qm94LT5pc0xpbmVCcmVha0JveCgpKQorICAgICAgICAgICAgZWxzZSBpZiAobGF5
b3V0Qm94LT5pc0F0b21pY0lubGluZUJveCgpIHx8IGxheW91dEJveC0+aXNMaW5lQnJlYWtCb3go
KSkKICAgICAgICAgICAgICAgICBoYW5kbGVJbmxpbmVMZXZlbEJveChsYXlvdXRCb3gsIGlubGlu
ZUl0ZW1MaXN0KTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC0+aXNJbmxpbmVCb3go
KSkKICAgICAgICAgICAgICAgICBoYW5kbGVJbmxpbmVCb3hFbmQobGF5b3V0Qm94LCBpbmxpbmVJ
dGVtTGlzdCk7CkBAIC00OTAsNyArNDkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJ1aWxkQmlk
aVBhcmFncmFwaChjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlLCBjb25zdCBJbmxpbmUKICAg
ICAgICAgICAgICAgICBoYW5kbGVCaWRpUGFyYWdyYXBoU3RhcnQocGFyYWdyYXBoQ29udGVudEJ1
aWxkZXIsIGlubGluZUl0ZW1PZmZzZXRMaXN0LCBiaWRpQ29udGV4dFN0YWNrKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
fSBlbHNlIGlmIChpbmxpbmVJdGVtLmlzQm94KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpbmxp
bmVJdGVtLmlzQXRvbWljSW5saW5lQm94KCkpIHsKICAgICAgICAgICAgIGlubGluZUl0ZW1PZmZz
ZXRMaXN0LmFwcGVuZCh7IHBhcmFncmFwaENvbnRlbnRCdWlsZGVyLmxlbmd0aCgpIH0pOwogICAg
ICAgICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIuYXBwZW5kKG9iamVjdFJlcGxhY2VtZW50
Q2hhcmFjdGVyKTsKICAgICAgICAgfSBlbHNlIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3Rh
cnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpIHsKQEAgLTg3MSw5ICs4NzEsOSBA
QCB2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6aGFuZGxlSW5saW5lTGV2ZWxCb3goY29uc3QgQm94
JiBsYXlvdXRCb3gsIElubGluZUl0ZW1MaQogICAgIGlmIChsYXlvdXRCb3guaXNSdWJ5QW5ub3Rh
dGlvbkJveCgpKQogICAgICAgICByZXR1cm4gaW5saW5lSXRlbUxpc3QuYXBwZW5kKHsgbGF5b3V0
Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpPcGFxdWUgfSk7CiAKLSAgICBpZiAobGF5b3V0Qm94Lmlz
QXRvbWljSW5saW5lTGV2ZWxCb3goKSkgeworICAgIGlmIChsYXlvdXRCb3guaXNBdG9taWNJbmxp
bmVCb3goKSkgewogICAgICAgICBtX2lzVGV4dEFuZEZvcmNlZExpbmVCcmVha09ubHlDb250ZW50
ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBpbmxpbmVJdGVtTGlzdC5hcHBlbmQoeyBsYXlvdXRC
b3gsIElubGluZUl0ZW06OlR5cGU6OkJveCB9KTsKKyAgICAgICAgcmV0dXJuIGlubGluZUl0ZW1M
aXN0LmFwcGVuZCh7IGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6QXRvbWljSW5saW5lQm94
IH0pOwogICAgIH0KIAogICAgIGlmIChsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGV2ZWxCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKaW5kZXggZDAxZjMzMjkwNjc0Li5kOTMzYjBmOGNj
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxldmVsQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaApAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBMaW5lU3Bhbm5pbmdJbmxpbmVCb3ggOiBib29sIHsgTm8s
IFllcyB9OwogICAgIHN0YXRpYyBpbmxpbmUgSW5saW5lTGV2ZWxCb3ggY3JlYXRlSW5saW5lQm94
KGNvbnN0IEJveCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExpbmVTcGFubmluZ0lubGluZUJv
eCA9IExpbmVTcGFubmluZ0lubGluZUJveDo6Tm8pOwogICAgIHN0YXRpYyBpbmxpbmUgSW5saW5l
TGV2ZWxCb3ggY3JlYXRlUm9vdElubGluZUJveChjb25zdCBCb3gmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgbG9naWNh
bFdpZHRoKTsKLSAgICBzdGF0aWMgaW5saW5lIElubGluZUxldmVsQm94IGNyZWF0ZUF0b21pY0lu
bGluZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOworICAgIHN0
YXRpYyBpbmxpbmUgSW5saW5lTGV2ZWxCb3ggY3JlYXRlQXRvbWljSW5saW5lQm94KGNvbnN0IEJv
eCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwogICAgIHN0YXRpYyBpbmxpbmUgSW5saW5lTGV2
ZWxCb3ggY3JlYXRlTGluZUJyZWFrQm94KGNvbnN0IEJveCYsIGNvbnN0IFJlbmRlclN0eWxlJiwg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7CiAgICAgc3RhdGljIGlubGluZSBJbmxpbmVM
ZXZlbEJveCBjcmVhdGVHZW5lcmljSW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KTsKIApAQCAtODUsMjIgKzg1
LDIyIEBAIHB1YmxpYzoKICAgICBUZXh0RWRnZSBsaW5lRml0RWRnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGUubGluZUZpdEVkZ2U7IH0KICAgICBJbmxpbmVMYXlvdXRVbml0IGlubGluZUJveENv
bnRlbnRPZmZzZXRGb3JUZXh0Qm94VHJpbSgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94Q29u
dGVudE9mZnNldEZvclRleHRCb3hUcmltOyB9CiAKLSAgICBib29sIGhhc1RleHRFbXBoYXNpcygp
IGNvbnN0IHsgcmV0dXJuIChoYXNDb250ZW50KCkgfHwgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgp
KSAmJiBtX3RleHRFbXBoYXNpcy5oYXNfdmFsdWUoKTsgfTsKKyAgICBib29sIGhhc1RleHRFbXBo
YXNpcygpIGNvbnN0IHsgcmV0dXJuIChoYXNDb250ZW50KCkgfHwgaXNBdG9taWNJbmxpbmVCb3go
KSkgJiYgbV90ZXh0RW1waGFzaXMuaGFzX3ZhbHVlKCk7IH07CiAgICAgc3RkOjpvcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0PiB0ZXh0RW1waGFzaXNBYm92ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1Rl
eHRFbXBoYXNpcygpID8gc3RkOjpvcHRpb25hbCB7IG1fdGV4dEVtcGhhc2lzLT5hYm92ZSB9IDog
c3RkOjpudWxsb3B0OyB9CiAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB0ZXh0
RW1waGFzaXNCZWxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1RleHRFbXBoYXNpcygpID8gc3RkOjpv
cHRpb25hbCB7IG1fdGV4dEVtcGhhc2lzLT5iZWxvdyB9IDogc3RkOjpudWxsb3B0OyB9CiAKICAg
ICBib29sIGlzSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OklubGlu
ZUJveCB8fCBpc1Jvb3RJbmxpbmVCb3goKSB8fCBpc0xpbmVTcGFubmluZ0lubGluZUJveCgpOyB9
CiAgICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlw
ZTo6Um9vdElubGluZUJveDsgfQogICAgIGJvb2wgaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3goKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TGluZVNwYW5uaW5nSW5saW5lQm94OyB9Ci0g
ICAgYm9vbCBpc0F0b21pY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IFR5cGU6OkF0b21pY0lubGluZUxldmVsQm94OyB9Ci0gICAgYm9vbCBpc0xpc3RNYXJrZXIoKSBj
b25zdCB7IHJldHVybiBpc0F0b21pY0lubGluZUxldmVsQm94KCkgJiYgbGF5b3V0Qm94KCkuaXNM
aXN0TWFya2VyQm94KCk7IH0KKyAgICBib29sIGlzQXRvbWljSW5saW5lQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFR5cGU6OkF0b21pY0lubGluZUJveDsgfQorICAgIGJvb2wgaXNMaXN0
TWFya2VyKCkgY29uc3QgeyByZXR1cm4gaXNBdG9taWNJbmxpbmVCb3goKSAmJiBsYXlvdXRCb3go
KS5pc0xpc3RNYXJrZXJCb3goKTsgfQogICAgIGJvb2wgaXNMaW5lQnJlYWtCb3goKSBjb25zdCB7
IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TGluZUJyZWFrQm94OyB9CiAKICAgICBlbnVtIGNsYXNz
IFR5cGUgOiB1aW50OF90IHsKICAgICAgICAgSW5saW5lQm94ICAgICAgICAgICAgID0gMSA8PCAw
LAogICAgICAgICBMaW5lU3Bhbm5pbmdJbmxpbmVCb3ggPSAxIDw8IDEsCiAgICAgICAgIFJvb3RJ
bmxpbmVCb3ggICAgICAgICA9IDEgPDwgMiwKLSAgICAgICAgQXRvbWljSW5saW5lTGV2ZWxCb3gg
ID0gMSA8PCAzLAorICAgICAgICBBdG9taWNJbmxpbmVCb3ggICAgICAgPSAxIDw8IDMsCiAgICAg
ICAgIExpbmVCcmVha0JveCAgICAgICAgICA9IDEgPDwgNCwKICAgICAgICAgR2VuZXJpY0lubGlu
ZUxldmVsQm94ID0gMSA8PCA1CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94SW5saW5lcy5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2
ZWxCb3hJbmxpbmVzLmgKaW5kZXggY2VjZDkxOGJiMDQ5Li5lYTcxYjYzYzhlMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxldmVsQm94SW5saW5lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94SW5saW5lcy5oCkBAIC00NSw5ICs0NSw5IEBA
IGlubGluZSBJbmxpbmVMZXZlbEJveDo6SW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgICAgIG1fc3R5bGUudmVydGljYWxBbGlnbm1l
bnQuYmFzZWxpbmVPZmZzZXQgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxp
Z25MZW5ndGgoKSwgcHJlZmVycmVkTGluZUhlaWdodCgpKTsKIH0KIAotaW5saW5lIElubGluZUxl
dmVsQm94IElubGluZUxldmVsQm94OjpjcmVhdGVBdG9taWNJbmxpbmVMZXZlbEJveChjb25zdCBC
b3gmIGxheW91dEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKK2lubGluZSBJbmxp
bmVMZXZlbEJveCBJbmxpbmVMZXZlbEJveDo6Y3JlYXRlQXRvbWljSW5saW5lQm94KGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElubGluZUxheW91dFVuaXQg
bG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKQogewotICAgIHJldHVy
biB7IGxheW91dEJveCwgc3R5bGUsIGxvZ2ljYWxMZWZ0LCB7IGxvZ2ljYWxXaWR0aCwgeyB9IH0s
IFR5cGU6OkF0b21pY0lubGluZUxldmVsQm94IH07CisgICAgcmV0dXJuIHsgbGF5b3V0Qm94LCBz
dHlsZSwgbG9naWNhbExlZnQsIHsgbG9naWNhbFdpZHRoLCB7IH0gfSwgVHlwZTo6QXRvbWljSW5s
aW5lQm94IH07CiB9CiAKIGlubGluZSBJbmxpbmVMZXZlbEJveCBJbmxpbmVMZXZlbEJveDo6Y3Jl
YXRlR2VuZXJpY0lubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQpCkBAIC03NSw3ICs3
NSw3IEBAIGlubGluZSBib29sIElubGluZUxldmVsQm94OjptYXlTdHJldGNoTGluZUJveCgpIGNv
bnN0CiAgICAgaWYgKGlzUm9vdElubGluZUJveCgpKQogICAgICAgICByZXR1cm4gbV9zdHlsZS5s
aW5lQm94Q29udGFpbi5jb250YWluc0FueSh7IExpbmVCb3hDb250YWluOjpCbG9jaywgTGluZUJv
eENvbnRhaW46OklubGluZSB9KSB8fCAoaGFzQ29udGVudCgpICYmIG1fc3R5bGUubGluZUJveENv
bnRhaW4uY29udGFpbnNBbnkoeyBMaW5lQm94Q29udGFpbjo6SW5pdGlhbExldHRlciwgTGluZUJv
eENvbnRhaW46OkZvbnQsIExpbmVCb3hDb250YWluOjpHbHlwaHMgfSkpOwogCi0gICAgaWYgKGlz
QXRvbWljSW5saW5lTGV2ZWxCb3goKSkKKyAgICBpZiAoaXNBdG9taWNJbmxpbmVCb3goKSkKICAg
ICAgICAgcmV0dXJuIG1fc3R5bGUubGluZUJveENvbnRhaW4uY29udGFpbnMoTGluZUJveENvbnRh
aW46OlJlcGxhY2VkKTsKIAogICAgIGlmIChpc0lubGluZUJveCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmUuY3BwCmluZGV4IDY1MDNjODgzNjliZC4uMDlmZTliNmU3MmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgTGluZTo6cmVzZXRC
aWRpTGV2ZWxGb3JUcmFpbGluZ1doaXRlc3BhY2UoVUJpRGlMZXZlbCByb290QmlkaUxldmVsKQog
ICAgIGF1dG8gdHJhaWxpbmdOb25XaGl0ZXNwYWNlT25seVJ1bkluZGV4ID0gc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHsgfTsKICAgICBmb3IgKGF1dG8gaW5kZXggPSBtX3J1bnMuc2l6ZSgpOyBpbmRl
eC0tOykgewogICAgICAgICBhdXRvJiBydW4gPSBtX3J1bnNbaW5kZXhdOwotICAgICAgICBpZiAo
cnVuLmlzQm94KCkgfHwgcnVuLmlzTGluZUJyZWFrKCkgfHwgKHJ1bi5pc1RleHQoKSAmJiAhcnVu
Lmhhc1RyYWlsaW5nV2hpdGVzcGFjZSgpKSkKKyAgICAgICAgaWYgKHJ1bi5pc0F0b21pY0lubGlu
ZUJveCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpIHx8IChydW4uaXNUZXh0KCkgJiYgIXJ1bi5oYXNU
cmFpbGluZ1doaXRlc3BhY2UoKSkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAo
IXJ1bi5oYXNUcmFpbGluZ1doaXRlc3BhY2UoKSkgewpAQCAtMjc5LDggKzI3OSw4IEBAIHZvaWQg
TGluZTo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgSW5saW5lCiAgICAgICAgIGFwcGVuZElubGluZUJveFN0YXJ0KGlubGluZUl0
ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwogICAgIGVsc2UgaWYgKGlubGluZUl0ZW0uaXNJbmxp
bmVCb3hFbmQoKSkKICAgICAgICAgYXBwZW5kSW5saW5lQm94RW5kKGlubGluZUl0ZW0sIHN0eWxl
LCBsb2dpY2FsV2lkdGgpOwotICAgIGVsc2UgaWYgKGlubGluZUl0ZW0uaXNCb3goKSkKLSAgICAg
ICAgYXBwZW5kR2VuZXJpY0lubGluZUxldmVsQm94KGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2Fs
V2lkdGgpOworICAgIGVsc2UgaWYgKGlubGluZUl0ZW0uaXNBdG9taWNJbmxpbmVCb3goKSkKKyAg
ICAgICAgYXBwZW5kQXRvbWljSW5saW5lQm94KGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lk
dGgpOwogICAgIGVsc2UgaWYgKGlubGluZUl0ZW0uaXNPcGFxdWUoKSkgewogICAgICAgICBBU1NF
UlQoIWxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGFwcGVuZE9wYXF1ZUJveChpbmxpbmVJdGVtLCBz
dHlsZSk7CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChj
b25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lVGV4dEl0ZW0sIGNvbnN0IFJlbmRlclMKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgLy8gVGhpcyBjb250ZW50IGlzIGNvbGxhcHNp
YmxlLiBMZXQncyBjaGVjayBpZiB0aGUgbGFzdCBpdGVtIGlzIGNvbGxhcHNlZC4KICAgICAgICAg
Zm9yIChhdXRvJiBydW4gOiBtYWtlUmV2ZXJzZWRSYW5nZShtX3J1bnMpKSB7Ci0gICAgICAgICAg
ICBpZiAocnVuLmlzQm94KCkpCisgICAgICAgICAgICBpZiAocnVuLmlzQXRvbWljSW5saW5lQm94
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgLy8gaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LTMvI3doaXRlLXNwYWNlLXBoYXNlLTEKICAgICAg
ICAgICAgIC8vIEFueSBjb2xsYXBzaWJsZSBzcGFjZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgYW5v
dGhlciBjb2xsYXBzaWJsZSBzcGFjZeKAlGV2ZW4gb25lIG91dHNpZGUgdGhlIGJvdW5kYXJ5IG9m
IHRoZSBpbmxpbmUgY29udGFpbmluZyB0aGF0IHNwYWNlLApAQCAtNTU0LDcgKzU1NCw3IEBAIHZv
aWQgTGluZTo6YXBwZW5kVGV4dEZhc3QoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZVRleHRJ
dGVtLCBjb25zdCBSZW5kZXJTdHlsCiAgICAgICAgIG1fdHJhaWxpbmdTb2Z0SHlwaGVuV2lkdGgg
PSBzdHlsZS5mb250Q2FzY2FkZSgpLndpZHRoKFRleHRSdW4geyBTdHJpbmdWaWV3IHsgc3R5bGUu
aHlwaGVuU3RyaW5nKCkgfSB9KTsKIH0KIAotdm9pZCBMaW5lOjphcHBlbmRHZW5lcmljSW5saW5l
TGV2ZWxCb3goY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IG1hcmdpbkJveExvZ2ljYWxXaWR0aCkKK3ZvaWQgTGlu
ZTo6YXBwZW5kQXRvbWljSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0VW5pdCBtYXJnaW5Cb3hMb2dpY2Fs
V2lkdGgpCiB7CiAgICAgcmVzZXRUcmFpbGluZ0NvbnRlbnQoKTsKICAgICAvLyBEbyBub3QgbGV0
IG5lZ2F0aXZlIG1hcmdpbiBtYWtlIHRoZSBjb250ZW50IHNob3J0ZXIgdGhhbiBpdCBhbHJlYWR5
IGlzLgpAQCAtNzUyLDEwICs3NTIsMTAgQEAgaW5saW5lIHN0YXRpYyBMaW5lOjpSdW46OlR5cGUg
dG9MaW5lUnVuVHlwZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogICAgICAgICByZXR1
cm4gTGluZTo6UnVuOjpUeXBlOjpIYXJkTGluZUJyZWFrOwogICAgIGNhc2UgSW5saW5lSXRlbTo6
VHlwZTo6V29yZEJyZWFrT3Bwb3J0dW5pdHk6CiAgICAgICAgIHJldHVybiBMaW5lOjpSdW46OlR5
cGU6OldvcmRCcmVha09wcG9ydHVuaXR5OwotICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6Qm94
OgorICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6QXRvbWljSW5saW5lQm94OgogICAgICAgICBp
ZiAoaW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc0xpc3RNYXJrZXJCb3goKSkKICAgICAgICAgICAg
IHJldHVybiBkb3duY2FzdDxFbGVtZW50Qm94PihpbmxpbmVJdGVtLmxheW91dEJveCgpKS5pc0xp
c3RNYXJrZXJPdXRzaWRlKCkgPyBMaW5lOjpSdW46OlR5cGU6Okxpc3RNYXJrZXJPdXRzaWRlIDog
TGluZTo6UnVuOjpUeXBlOjpMaXN0TWFya2VySW5zaWRlOwotICAgICAgICByZXR1cm4gTGluZTo6
UnVuOjpUeXBlOjpHZW5lcmljSW5saW5lTGV2ZWxCb3g7CisgICAgICAgIHJldHVybiBMaW5lOjpS
dW46OlR5cGU6OkF0b21pY0lubGluZUJveDsKICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6Oklu
bGluZUJveFN0YXJ0OgogICAgICAgICByZXR1cm4gTGluZTo6UnVuOjpUeXBlOjpJbmxpbmVCb3hT
dGFydDsKICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OklubGluZUJveEVuZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmUuaAppbmRleCAxYTNiODYxNjBkM2IuLjIwNGVhN2NjMTUzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmUuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBI
YXJkTGluZUJyZWFrLAogICAgICAgICAgICAgU29mdExpbmVCcmVhaywKICAgICAgICAgICAgIFdv
cmRCcmVha09wcG9ydHVuaXR5LAotICAgICAgICAgICAgR2VuZXJpY0lubGluZUxldmVsQm94LAor
ICAgICAgICAgICAgQXRvbWljSW5saW5lQm94LAogICAgICAgICAgICAgTGlzdE1hcmtlckluc2lk
ZSwKICAgICAgICAgICAgIExpc3RNYXJrZXJPdXRzaWRlLAogICAgICAgICAgICAgSW5saW5lQm94
U3RhcnQsCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1RleHQoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6VGV4dCB8fCBpc1dvcmRTZXBhcmF0b3IoKSB8
fCBpc05vbkJyZWFraW5nU3BhY2UoKTsgfQogICAgICAgICBib29sIGlzTm9uQnJlYWtpbmdTcGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpOb25CcmVha2luZ1NwYWNlOyB9CiAg
ICAgICAgIGJvb2wgaXNXb3JkU2VwYXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5
cGU6OldvcmRTZXBhcmF0b3I7IH0KLSAgICAgICAgYm9vbCBpc0JveCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBUeXBlOjpHZW5lcmljSW5saW5lTGV2ZWxCb3g7IH0KKyAgICAgICAgYm9vbCBp
c0F0b21pY0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpBdG9taWNJ
bmxpbmVCb3g7IH0KICAgICAgICAgYm9vbCBpc0xpc3RNYXJrZXIoKSBjb25zdCB7IHJldHVybiBp
c0xpc3RNYXJrZXJJbnNpZGUoKSB8fCBpc0xpc3RNYXJrZXJPdXRzaWRlKCk7IH0KICAgICAgICAg
Ym9vbCBpc0xpc3RNYXJrZXJJbnNpZGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6
TGlzdE1hcmtlckluc2lkZTsgfQogICAgICAgICBib29sIGlzTGlzdE1hcmtlck91dHNpZGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TGlzdE1hcmtlck91dHNpZGU7IH0KQEAgLTEx
Miw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNJbmxpbmVCb3hFbmQoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6SW5saW5lQm94RW5kOyB9CiAgICAgICAgIGJvb2wg
aXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6T3BhcXVlOyB9CiAKLSAg
ICAgICAgYm9vbCBpc0NvbnRlbnRmdWwoKSBjb25zdCB7IHJldHVybiAoaXNUZXh0KCkgJiYgdGV4
dENvbnRlbnQoKS0+bGVuZ3RoKSB8fCBpc0JveCgpIHx8IGlzTGluZUJyZWFrKCkgfHwgaXNMaXN0
TWFya2VyKCk7IH0KKyAgICAgICAgYm9vbCBpc0NvbnRlbnRmdWwoKSBjb25zdCB7IHJldHVybiAo
aXNUZXh0KCkgJiYgdGV4dENvbnRlbnQoKS0+bGVuZ3RoKSB8fCBpc0F0b21pY0lubGluZUJveCgp
IHx8IGlzTGluZUJyZWFrKCkgfHwgaXNMaXN0TWFya2VyKCk7IH0KICAgICAgICAgYm9vbCBpc0dl
bmVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGlzTGlzdE1hcmtlcigpOyB9CiAgICAgICAgIHN0YXRp
YyBib29sIGlzQ29udGVudGZ1bE9ySGFzRGVjb3JhdGlvbihjb25zdCBSdW4mLCBjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYpOwogCkBAIC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0ZToKICAg
ICBJbmxpbmVMYXlvdXRVbml0IGxhc3RSdW5Mb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3J1bnMuaXNFbXB0eSgpID8gMC4wZiA6IG1fcnVucy5sYXN0KCkubG9naWNhbFJpZ2h0KCk7IH0K
IAogICAgIHZvaWQgYXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mLCBjb25z
dCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKLSAgICB2b2lk
IGFwcGVuZEdlbmVyaWNJbmxpbmVMZXZlbEJveChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IG1hcmdpbkJveExvZ2ljYWxXaWR0aCk7CisgICAg
dm9pZCBhcHBlbmRBdG9taWNJbmxpbmVCb3goY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IFJlbmRl
clN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBtYXJnaW5Cb3hMb2dpY2FsV2lkdGgpOwogICAgIHZv
aWQgYXBwZW5kSW5saW5lQm94U3RhcnQoY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0
eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwogICAgIHZvaWQgYXBwZW5kSW5s
aW5lQm94RW5kKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICB2b2lkIGFwcGVuZExpbmVCcmVhayhjb25zdCBJ
bmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveC5jcHAKaW5kZXggYTU4NTBmZTEwMDJjLi5mYzA4YmQwMTEzMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3guY3BwCkBAIC0xMDYsOSArMTA2LDkgQEAgSW5saW5lUmVjdCBMaW5l
Qm94Ojpsb2dpY2FsUmVjdEZvcklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBj
b25zdAogICAgIHJldHVybiBJbmxpbmVSZWN0IHsgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcCgq
aW5saW5lQm94KSwgaW5saW5lQm94TG9naWNhbFJlY3QubGVmdCgpLCBpbmxpbmVCb3hMb2dpY2Fs
UmVjdC53aWR0aCgpLCBpbmxpbmVCb3hMb2dpY2FsUmVjdC5oZWlnaHQoKSB9OwogfQogCi1Jbmxp
bmVSZWN0IExpbmVCb3g6OmxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveChj
b25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94R2VvbWV0cnkmIGJveEdlb21ldHJ5KSBjb25z
dAorSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsQm9yZGVyQm94Rm9yQXRvbWljSW5saW5lQm94
KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBCb3hHZW9tZXRyeSYgYm94R2VvbWV0cnkpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkpOwor
ICAgIEFTU0VSVChsYXlvdXRCb3guaXNBdG9taWNJbmxpbmVCb3goKSk7CiAgICAgYXV0byBsb2dp
Y2FsUmVjdCA9IGxvZ2ljYWxSZWN0Rm9ySW5saW5lTGV2ZWxCb3gobGF5b3V0Qm94KTsKICAgICAv
LyBJbmxpbmUgbGV2ZWwgYm94ZXMgdXNlIHRoZWlyIG1hcmdpbiBib3ggZm9yIHZlcnRpY2FsIGFs
aWdubWVudC4gTGV0J3MgY292ZXJ0IHRoZW0gdG8gYm9yZGVyIGJveGVzLgogICAgIGxvZ2ljYWxS
ZWN0Lm1vdmVWZXJ0aWNhbGx5KGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3guaAppbmRleCAyYjQxMzlhZDBkZTAuLjdiMjVkMzM0MzAwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaApAQCAtNjQsMTMgKzY0LDEzIEBAIHB1YmxpYzoK
ICAgICAvLyBOb3RlIHRoYXQgdGhlIGxpbmUgY2FuIGhhdmUgbWFueSBpbmxpbmUgYm94ZXMgYW5k
IGJlICJlbXB0eSIgdGhlIHNhbWUgdGltZSBlLmcuIDxkaXY+PHNwYW4+PC9zcGFuPjxzcGFuPjwv
c3Bhbj48L2Rpdj4KICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc0Nv
bnRlbnQ7IH0KICAgICBib29sIGhhc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94VHlw
ZXMuY29udGFpbnMoSW5saW5lTGV2ZWxCb3g6OlR5cGU6OklubGluZUJveCk7IH0KLSAgICBib29s
IGhhc05vbklubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94VHlwZXMuY29udGFpbnNBbnko
eyBJbmxpbmVMZXZlbEJveDo6VHlwZTo6QXRvbWljSW5saW5lTGV2ZWxCb3gsIElubGluZUxldmVs
Qm94OjpUeXBlOjpMaW5lQnJlYWtCb3gsIElubGluZUxldmVsQm94OjpUeXBlOjpHZW5lcmljSW5s
aW5lTGV2ZWxCb3ggfSk7IH0KLSAgICBib29sIGhhc0F0b21pY0lubGluZUxldmVsQm94KCkgY29u
c3QgeyByZXR1cm4gbV9ib3hUeXBlcy5jb250YWlucyhJbmxpbmVMZXZlbEJveDo6VHlwZTo6QXRv
bWljSW5saW5lTGV2ZWxCb3gpOyB9CisgICAgYm9vbCBoYXNOb25JbmxpbmVCb3goKSBjb25zdCB7
IHJldHVybiBtX2JveFR5cGVzLmNvbnRhaW5zQW55KHsgSW5saW5lTGV2ZWxCb3g6OlR5cGU6OkF0
b21pY0lubGluZUJveCwgSW5saW5lTGV2ZWxCb3g6OlR5cGU6OkxpbmVCcmVha0JveCwgSW5saW5l
TGV2ZWxCb3g6OlR5cGU6OkdlbmVyaWNJbmxpbmVMZXZlbEJveCB9KTsgfQorICAgIGJvb2wgaGFz
QXRvbWljSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9ib3hUeXBlcy5jb250YWlucyhJbmxp
bmVMZXZlbEJveDo6VHlwZTo6QXRvbWljSW5saW5lQm94KTsgfQogCiAgICAgSW5saW5lUmVjdCBs
b2dpY2FsUmVjdEZvclRleHRSdW4oY29uc3QgTGluZTo6UnVuJikgY29uc3Q7CiAgICAgSW5saW5l
UmVjdCBsb2dpY2FsUmVjdEZvckxpbmVCcmVha0JveChjb25zdCBCb3gmKSBjb25zdDsKICAgICBJ
bmxpbmVSZWN0IGxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdElubGluZUJveC5sb2dpY2FsUmVjdCgpOyB9Ci0gICAgSW5saW5lUmVjdCBsb2dpY2FsQm9y
ZGVyQm94Rm9yQXRvbWljSW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgQm94R2VvbWV0
cnkmKSBjb25zdDsKKyAgICBJbmxpbmVSZWN0IGxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJbmxp
bmVCb3goY29uc3QgQm94JiwgY29uc3QgQm94R2VvbWV0cnkmKSBjb25zdDsKICAgICBJbmxpbmVS
ZWN0IGxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3goY29uc3QgQm94JiwgY29uc3QgQm94R2Vv
bWV0cnkmKSBjb25zdDsKIAogICAgIGNvbnN0IElubGluZUxldmVsQm94KiBpbmxpbmVMZXZlbEJv
eEZvcihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxMaW5l
Qm94Jj4oKnRoaXMpLmlubGluZUxldmVsQm94Rm9yKGxheW91dEJveCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAppbmRleCBiMjQ3OWMxYWVlNzguLjQz
NTMxY2I1MjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVy
LmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2Fs
UHJvcGVydGllc0ZvcklubGluZUxldmVsQm94KGNvbnN0IExpbmVCb3gmIGxpbmVCCiAgICAgICAg
IHNldFZlcnRpY2FsUHJvcGVydGllcyh7IG1hcmdpbkJveEhlaWdodCwgeyB9IH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUxl
dmVsQm94KCkpIHsKKyAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVCb3goKSkg
ewogICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKTsK
ICAgICAgICAgYXV0byYgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0
KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAgYXV0byBtYXJnaW5Cb3hIZWln
aHQgPSBpbmxpbmVMZXZlbEJveEdlb21ldHJ5Lm1hcmdpbkJveEhlaWdodCgpOwpAQCAtMzc5LDEy
ICszNzksMTIgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hl
cyhMaW5lQm94JiBsaW5lQm94KQogICAgICAgICAgICAgICAgIGxpbmVCb3gucGFyZW50SW5saW5l
Qm94KHJ1bikuc2V0SGFzQ29udGVudCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKHJ1bi5pc0JveCgpKSB7CisgICAgICAgIGlmIChydW4uaXNBdG9taWNJ
bmxpbmVCb3goKSkgewogICAgICAgICAgICAgYXV0byYgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeSA9
IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgICAgICAg
ICBsb2dpY2FsTGVmdCArPSBzdGQ6Om1heCgwX2x1LCBpbmxpbmVMZXZlbEJveEdlb21ldHJ5Lm1h
cmdpblN0YXJ0KCkpOwotICAgICAgICAgICAgYXV0byBhdG9taWNJbmxpbmVMZXZlbEJveCA9IElu
bGluZUxldmVsQm94OjpjcmVhdGVBdG9taWNJbmxpbmVMZXZlbEJveChsYXlvdXRCb3gsIHN0eWxl
LCBsb2dpY2FsTGVmdCwgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5ib3JkZXJCb3hXaWR0aCgpKTsK
LSAgICAgICAgICAgIHNldFZlcnRpY2FsUHJvcGVydGllc0ZvcklubGluZUxldmVsQm94KGxpbmVC
b3gsIGF0b21pY0lubGluZUxldmVsQm94KTsKLSAgICAgICAgICAgIGxpbmVCb3guYWRkSW5saW5l
TGV2ZWxCb3goV1RGTW92ZShhdG9taWNJbmxpbmVMZXZlbEJveCkpOworICAgICAgICAgICAgYXV0
byBhdG9taWNJbmxpbmVCb3ggPSBJbmxpbmVMZXZlbEJveDo6Y3JlYXRlQXRvbWljSW5saW5lQm94
KGxheW91dEJveCwgc3R5bGUsIGxvZ2ljYWxMZWZ0LCBpbmxpbmVMZXZlbEJveEdlb21ldHJ5LmJv
cmRlckJveFdpZHRoKCkpOworICAgICAgICAgICAgc2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5s
aW5lTGV2ZWxCb3gobGluZUJveCwgYXRvbWljSW5saW5lQm94KTsKKyAgICAgICAgICAgIGxpbmVC
b3guYWRkSW5saW5lTGV2ZWxCb3goV1RGTW92ZShhdG9taWNJbmxpbmVCb3gpKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChydW4uaXNJbmxpbmVCb3hTdGFy
dCgpIHx8IHJ1bi5pc0xpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0KCkpIHsKQEAgLTQzNyw5ICs0
MzcsOSBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExp
bmVCb3gmIGxpbmVCb3gpCiAgICAgICAgICAgICBpZiAocnVuLmlzTGlzdE1hcmtlck91dHNpZGUo
KSkKICAgICAgICAgICAgICAgICBtX291dHNpZGVMaXN0TWFya2Vycy5hcHBlbmQoaW5kZXgpOwog
Ci0gICAgICAgICAgICBhdXRvIGF0b21pY0lubGluZUxldmVsQm94ID0gSW5saW5lTGV2ZWxCb3g6
OmNyZWF0ZUF0b21pY0lubGluZUxldmVsQm94KGxpc3RNYXJrZXJCb3gsIHN0eWxlLCBsb2dpY2Fs
TGVmdCwgZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGlzdE1hcmtlckJveCkuYm9y
ZGVyQm94V2lkdGgoKSk7Ci0gICAgICAgICAgICBzZXRWZXJ0aWNhbFByb3BlcnRpZXNGb3JJbmxp
bmVMZXZlbEJveChsaW5lQm94LCBhdG9taWNJbmxpbmVMZXZlbEJveCk7Ci0gICAgICAgICAgICBs
aW5lQm94LmFkZElubGluZUxldmVsQm94KFdURk1vdmUoYXRvbWljSW5saW5lTGV2ZWxCb3gpKTsK
KyAgICAgICAgICAgIGF1dG8gYXRvbWljSW5saW5lQm94ID0gSW5saW5lTGV2ZWxCb3g6OmNyZWF0
ZUF0b21pY0lubGluZUJveChsaXN0TWFya2VyQm94LCBzdHlsZSwgbG9naWNhbExlZnQsIGZvcm1h
dHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxpc3RNYXJrZXJCb3gpLmJvcmRlckJveFdpZHRo
KCkpOworICAgICAgICAgICAgc2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3go
bGluZUJveCwgYXRvbWljSW5saW5lQm94KTsKKyAgICAgICAgICAgIGxpbmVCb3guYWRkSW5saW5l
TGV2ZWxCb3goV1RGTW92ZShhdG9taWNJbmxpbmVCb3gpKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAgICAgICAgIGlmIChydW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKSB7
CkBAIC01ODYsMTMgKzU4NiwxMyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjphZGp1c3RJZGVvZ3Jh
cGhpY0Jhc2VsaW5lSWZBcHBsaWNhYmxlKExpbmVCb3gmIGxpbmVCb3gpCiAgICAgbGluZUJveC5z
ZXRCYXNlbGluZVR5cGUoSWRlb2dyYXBoaWNCYXNlbGluZSk7CiAKICAgICBhdXRvIGFkanVzdExh
eW91dEJvdW5kc1dpdGhJZGVvZ3JhcGhpY0Jhc2VsaW5lID0gWyZdIChhdXRvJiBpbmxpbmVMZXZl
bEJveCkgewotICAgICAgICBhdXRvIGluaXRpYXRlc0xheW91dEJvdW5kc0NoYW5nZSA9IGlubGlu
ZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVM
ZXZlbEJveCgpIHx8IGlubGluZUxldmVsQm94LmlzTGluZUJyZWFrQm94KCk7CisgICAgICAgIGF1
dG8gaW5pdGlhdGVzTGF5b3V0Qm91bmRzQ2hhbmdlID0gaW5saW5lTGV2ZWxCb3guaXNJbmxpbmVC
b3goKSB8fCBpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUJveCgpIHx8IGlubGluZUxldmVs
Qm94LmlzTGluZUJyZWFrQm94KCk7CiAgICAgICAgIGlmICghaW5pdGlhdGVzTGF5b3V0Qm91bmRz
Q2hhbmdlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChpbmxpbmVMZXZlbEJv
eC5pc0lubGluZUJveCgpIHx8IGlubGluZUxldmVsQm94LmlzTGluZUJyZWFrQm94KCkgfHwgKGlu
bGluZUxldmVsQm94LmlzTGlzdE1hcmtlcigpICYmICFkb3duY2FzdDxFbGVtZW50Qm94Pihpbmxp
bmVMZXZlbEJveC5sYXlvdXRCb3goKSkuaXNMaXN0TWFya2VySW1hZ2UoKSkpCiAgICAgICAgICAg
ICBzZXRWZXJ0aWNhbFByb3BlcnRpZXNGb3JJbmxpbmVMZXZlbEJveChsaW5lQm94LCBpbmxpbmVM
ZXZlbEJveCk7Ci0gICAgICAgIGVsc2UgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5l
TGV2ZWxCb3goKSkgeworICAgICAgICBlbHNlIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lu
bGluZUJveCgpKSB7CiAgICAgICAgICAgICBhdXRvIGlubGluZUxldmVsQm94SGVpZ2h0ID0gaW5s
aW5lTGV2ZWxCb3gubG9naWNhbEhlaWdodCgpOwogICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBpZGVvZ3JhcGhpY0Jhc2VsaW5lID0gcm91bmRUb0ludChpbmxpbmVMZXZlbEJveEhlaWdodCAv
IDIpOwogICAgICAgICAgICAgLy8gTW92ZSB0aGUgYmFzZWxpbmUgcG9zaXRpb24gYnV0IGtlZXAg
dGhlIHNhbWUgbG9naWNhbCBoZWlnaHQuCkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6YWRqdXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGljYWJsZShMaW5lQm94JiBs
aW5lQm94KQogCiAgICAgYWRqdXN0TGF5b3V0Qm91bmRzV2l0aElkZW9ncmFwaGljQmFzZWxpbmUo
cm9vdElubGluZUJveCk7CiAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gu
bm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgewotICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3gu
aXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSB7CisgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5p
c0F0b21pY0lubGluZUJveCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxp
bmVMZXZlbEJveC5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxp
bmVUYWJsZUJveCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgaW50ZWdyYXRp
b24gY29kZXBhdGggd2hlcmUgaW5saW5lIHRhYmxlIGJveGVzIGFyZSByZXByZXNlbnRlZCBhcyBh
dG9taWMgaW5saW5lIGJveGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94VmVydGljYWxBbGlnbmVyLmNwcAppbmRleCBkNTI0MjVjN2E4M2MuLjVjMWI4ZTA0ODc5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2Fs
QWxpZ25lci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94VmVy
dGljYWxBbGlnbmVyOjpjb21wdXRlTG9naWNhbEhlaWdodEFuZEFsaWduKExpbmVCb3gmIGwKICAg
ICAgICAgICAgICAgICBpZiAoJmxheW91dEJveC5wYXJlbnQoKSAhPSAmcm9vdElubGluZUJveC5s
YXlvdXRCb3goKSB8fCBpbmxpbmVMZXZlbEJveC52ZXJ0aWNhbEFsaWduKCkudHlwZSAhPSBWZXJ0
aWNhbEFsaWduOjpCYXNlbGluZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgICAgICAgICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lTGV2ZWxC
b3goKSkgeworICAgICAgICAgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGlu
ZUJveCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGlubGluZUxldmVsQm94R2VvbWV0
cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAhaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5tYXJnaW5CZWZv
cmUoKSAmJiAhaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpICYmIGlubGluZUxl
dmVsQm94R2VvbWV0cnkubWFyZ2luQm94SGVpZ2h0KCkgPD0gcm9vdElubGluZUJveC5sYXlvdXRC
b3VuZHMoKS5hc2NlbnQ7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDg1LDcgKzQ4NSw3IEBAIElu
bGluZUxheW91dFVuaXQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6YWRqdXN0Rm9yQW5ub3RhdGlv
bklmTmVlZGVkKExpbmVCb3gmIGxpCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGEgcHJv
cGVybHkgYWxpZ25lZCBzZXQgb2YgaW5saW5lIGxldmVsIGJveGVzLiBMZXQncyBmaW5kIG91dCBp
ZiBhbm5vdGF0aW9uIG1hcmtzIGhhdmUgZW5vdWdoIHNwYWNlLgogICAgIGF1dG8gYWRqdXN0TGlu
ZUJveEhlaWdodElmTmVlZGVkID0gWyZdIHsKICAgICAgICAgYXV0byBhZGp1c3RMaW5lQm94VG9w
QW5kQm90dG9tRm9ySW5saW5lQm94ID0gWyZdKGNvbnN0IElubGluZUxldmVsQm94JiBpbmxpbmVM
ZXZlbEJveCkgewotICAgICAgICAgICAgQVNTRVJUKGlubGluZUxldmVsQm94LmlzSW5saW5lQm94
KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVChpbmxpbmVMZXZlbEJveC5pc0lubGluZUJveCgpIHx8IGlubGluZUxldmVsQm94
LmlzQXRvbWljSW5saW5lQm94KCkpOwogICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hUb3AgPSBs
aW5lQm94LmlubGluZUxldmVsQm94QWJzb2x1dGVUb3AoaW5saW5lTGV2ZWxCb3gpOwogICAgICAg
ICAgICAgYXV0byBpbmxpbmVCb3hCb3R0b20gPSBpbmxpbmVCb3hUb3AgKyBpbmxpbmVMZXZlbEJv
eC5sb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTUxOCw3ICs1MTgsNyBAQCBJbmxpbmVMYXlvdXRVbml0
IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFkanVzdEZvckFubm90YXRpb25JZk5lZWRlZChMaW5l
Qm94JiBsaQogCiAgICAgICAgIGFkanVzdExpbmVCb3hUb3BBbmRCb3R0b21Gb3JJbmxpbmVCb3go
bGluZUJveC5yb290SW5saW5lQm94KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVs
Qm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7Ci0gICAgICAgICAgICBp
ZiAoaW5saW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSB8fCBpbmxpbmVMZXZlbEJveC5pc0F0b21p
Y0lubGluZUxldmVsQm94KCkpCisgICAgICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNJbmxp
bmVCb3goKSB8fCBpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUJveCgpKQogICAgICAgICAg
ICAgICAgIGFkanVzdExpbmVCb3hUb3BBbmRCb3R0b21Gb3JJbmxpbmVCb3goaW5saW5lTGV2ZWxC
b3gpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cAppbmRleCA2ZGZhM2Y2NGEzNDMuLjQzYmNkYjdiNGQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgYm9vbCBpc0Nv
bnRlbnRmdWxPckhhc0RlY29yYXRpb24oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29u
c3QgSW5saQogICAgICAgICByZXR1cm4gISFmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJv
eChpbmxpbmVJdGVtLmxheW91dEJveCgpKS5tYXJnaW5Cb3JkZXJBbmRQYWRkaW5nU3RhcnQoKTsK
ICAgICBpZiAoaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKQogICAgICAgICByZXR1cm4gISFm
b3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChpbmxpbmVJdGVtLmxheW91dEJveCgpKS5t
YXJnaW5Cb3JkZXJBbmRQYWRkaW5nRW5kKCk7Ci0gICAgcmV0dXJuIGlubGluZUl0ZW0uaXNCb3go
KSB8fCBpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCk7CisgICAgcmV0dXJuIGlubGluZUl0ZW0uaXNB
dG9taWNJbmxpbmVCb3goKSB8fCBpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCk7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgU3RyaW5nQnVpbGRlciB0b1N0cmluZyhjb25zdCBMaW5lOjpSdW5MaXN0JiBydW5z
KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGhhc1RyYWlsaW5nU29mdFdyYXBPcHBv
cnR1bml0eShzaXplX3Qgc29mdFdyYXBPcHBvcnR1bml0eUluZGV4LCBzaXplCiAgICAgICAgIC8v
IFdoaWxlIHdlIHN0b3AgYXQgZmxvYXRzLCB0aGV5IGFyZSBub3QgY29uc2lkZXJlZCByZWFsIHNv
ZnQgd3JhcCBvcHBvcnR1bml0aWVzLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGlmICh0cmFpbGluZ0lubGluZUl0ZW0uaXNCb3goKSB8fCB0cmFpbGluZ0lubGluZUl0ZW0uaXNM
aW5lQnJlYWsoKSB8fCB0cmFpbGluZ0lubGluZUl0ZW0uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgp
IHx8IHRyYWlsaW5nSW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKSB7CisgICAgaWYgKHRyYWls
aW5nSW5saW5lSXRlbS5pc0F0b21pY0lubGluZUJveCgpIHx8IHRyYWlsaW5nSW5saW5lSXRlbS5p
c0xpbmVCcmVhaygpIHx8IHRyYWlsaW5nSW5saW5lSXRlbS5pc1dvcmRCcmVha09wcG9ydHVuaXR5
KCkgfHwgdHJhaWxpbmdJbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpIHsKICAgICAgICAgLy8g
Rm9yIFdlYi1jb21wYXRpYmlsaXR5IHRoZXJlIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5IGJl
Zm9yZSBhbmQgYWZ0ZXIgZWFjaCByZXBsYWNlZCBlbGVtZW50IG9yIG90aGVyIGF0b21pYyBpbmxp
bmUuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIxOSw5ICsyMTksOSBAQCBzdHJ1
Y3QgTGluZUNhbmRpZGF0ZSB7CiAKIGlubGluZSB2b2lkIExpbmVDYW5kaWRhdGU6OklubGluZUNv
bnRlbnQ6OmFwcGVuZElubGluZUl0ZW0oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsK
LSAgICBBU1NFUlQoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkgfHwg
aW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVu
ZCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUoKSk7CisgICAgQVNTRVJUKGlubGluZUl0ZW0uaXNU
ZXh0KCkgfHwgaW5saW5lSXRlbS5pc0F0b21pY0lubGluZUJveCgpIHx8IGlubGluZUl0ZW0uaXNJ
bmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJ
dGVtLmlzT3BhcXVlKCkpOwogCi0gICAgaWYgKGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJ
dGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgfHwg
aW5saW5lSXRlbS5pc09wYXF1ZSgpKQorICAgIGlmIChpbmxpbmVJdGVtLmlzQXRvbWljSW5saW5l
Qm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lu
bGluZUJveEVuZCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJuIG1f
Y29udGludW91c0NvbnRlbnQuYXBwZW5kKGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgp
OwogCiAgICAgaWYgKGF1dG8qIGlubGluZVRleHRJdGVtID0gZHluYW1pY0Rvd25jYXN0PElubGlu
ZVRleHRJdGVtPihpbmxpbmVJdGVtKSkKQEAgLTY1OCw3ICs2NTgsNyBAQCB2b2lkIExpbmVCdWls
ZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRl
LCBzaXplX3QgYwogICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gbV9pbmxpbmVJdGVtTGlzdFtp
bmRleF07CiAgICAgICAgIGF1dG8mIHN0eWxlID0gaXNGaXJzdEZvcm1hdHRlZExpbmUoKSA/IGlu
bGluZUl0ZW0uZmlyc3RMaW5lU3R5bGUoKSA6IGlubGluZUl0ZW0uc3R5bGUoKTsKIAotICAgICAg
ICBpZiAoaW5saW5lSXRlbS5pc0Zsb2F0KCkgfHwgaW5saW5lSXRlbS5pc0JveCgpIHx8IChpbmxp
bmVJdGVtLmlzT3BhcXVlKCkgJiYgaW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc1J1YnlBbm5vdGF0
aW9uQm94KCkpKQorICAgICAgICBpZiAoaW5saW5lSXRlbS5pc0Zsb2F0KCkgfHwgaW5saW5lSXRl
bS5pc0F0b21pY0lubGluZUJveCgpIHx8IChpbmxpbmVJdGVtLmlzT3BhcXVlKCkgJiYgaW5saW5l
SXRlbS5sYXlvdXRCb3goKS5pc1J1YnlBbm5vdGF0aW9uQm94KCkpKQogICAgICAgICAgICAgZm9y
bWF0dGluZ0NvbnRleHQoKS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goZG93bmNh
c3Q8RWxlbWVudEJveD4oaW5saW5lSXRlbS5sYXlvdXRCb3goKSkpOwogCiAgICAgICAgIGlmIChp
bmxpbmVJdGVtLmlzRmxvYXQoKSkgewpAQCAtNjk4LDcgKzY5OCw3IEBAIHZvaWQgTGluZUJ1aWxk
ZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUs
IHNpemVfdCBjCiAgICAgICAgICAgICBjdXJyZW50TG9naWNhbFJpZ2h0ICs9IGxvZ2ljYWxXaWR0
aDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpbmxpbmVJ
dGVtLmlzQm94KCkpIHsKKyAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNBdG9taWNJbmxpbmVCb3go
KSkgewogICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBmb3JtYXR0aW5nQ29udGV4dCgp
LmZvcm1hdHRpbmdVdGlscygpLmlubGluZUl0ZW1XaWR0aChpbmxpbmVJdGVtLCBjdXJyZW50TG9n
aWNhbFJpZ2h0LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBXaGlsZSB0aGUgbGluZSBicmVha2luZyByZWxhdGVkIHByb3BlcnRpZXMgZm9yIGF0b21pYyBs
ZXZlbCBib3hlcyBkbyBub3QgZGVwZW5kIG9uIHRoZSBsaW5lIGluZGV4IChmaXJzdCBsaW5lIHN0
eWxlKSBpdCdkIGJlIGdyZWF0IHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3Qgc3R5bGUgdG8gcGFz
cyBpbi4KICAgICAgICAgICAgIGxpbmVDYW5kaWRhdGUuaW5saW5lQ29udGVudC5hcHBlbmRJbmxp
bmVJdGVtKGlubGluZUl0ZW0sIGlubGluZUl0ZW0ubGF5b3V0Qm94KCkucGFyZW50KCkuc3R5bGUo
KSwgbG9naWNhbFdpZHRoKTsKQEAgLTgxMCw3ICs4MTAsNyBAQCBMaW5lQnVpbGRlcjo6UmVjdEFu
ZEZsb2F0Q29uc3RyYWludHMgTGluZUJ1aWxkZXI6OmFkanVzdGVkTGluZVJlY3RXaXRoQ2FuZGlk
YXRlSQogICAgICAgICBpZiAoaW5saW5lSXRlbS5pc1RleHQoKSkgewogICAgICAgICAgICAgYXV0
byYgc3R5bGVUb1VzZSA9IGlzRmlyc3RGb3JtYXR0ZWRMaW5lKCkgPyBpbmxpbmVJdGVtLmZpcnN0
TGluZVN0eWxlKCkgOiBpbmxpbmVJdGVtLnN0eWxlKCk7CiAgICAgICAgICAgICBjYW5kaWRhdGVD
b250ZW50SGVpZ2h0ID0gc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4oY2FuZGlkYXRlQ29udGVu
dEhlaWdodCwgc3R5bGVUb1VzZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoaW5saW5lSXRlbS5pc0JveCgpICYmIGxpbmVCb3hDb250YWluLmNvbnRhaW5zKExpbmVC
b3hDb250YWluOjpSZXBsYWNlZCkpCisgICAgICAgIH0gZWxzZSBpZiAoaW5saW5lSXRlbS5pc0F0
b21pY0lubGluZUJveCgpICYmIGxpbmVCb3hDb250YWluLmNvbnRhaW5zKExpbmVCb3hDb250YWlu
OjpSZXBsYWNlZCkpCiAgICAgICAgICAgICBjYW5kaWRhdGVDb250ZW50SGVpZ2h0ID0gc3RkOjpt
YXgoY2FuZGlkYXRlQ29udGVudEhlaWdodCwgSW5saW5lTGF5b3V0VW5pdCB7IGZvcm1hdHRpbmdD
b250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSkubWFyZ2luQm94
SGVpZ2h0KCkgfSk7CiAgICAgfQogICAgIGlmIChjYW5kaWRhdGVDb250ZW50SGVpZ2h0IDw9IG1f
bGluZUxvZ2ljYWxSZWN0LmhlaWdodCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lUXVpcmtzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVF1aXJrcy5jcHAK
aW5kZXggODJiZTY5ODRhNTM2Li41YWRmMzNiYzZkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVF1aXJrcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
UXVpcmtzLmNwcApAQCAtNjEsNyArNjEsNyBAQCBib29sIElubGluZVF1aXJrczo6bGluZUJyZWFr
Qm94QWZmZWN0c1BhcmVudElubGluZUJveChjb25zdCBMaW5lQm94JiBsaW5lQm94KQogICAgIC8v
IDMuIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGlubGluZSBib3ggd2l0aCBjb250ZW50IGUuZy4gPGRp
dj48c3Bhbj5jb250ZW50PC9zcGFuPjxicj48L2Rpdj4KICAgICBpZiAobGluZUJveC5yb290SW5s
aW5lQm94KCkuaGFzQ29udGVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGxp
bmVCb3guaGFzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkKKyAgICBpZiAobGluZUJveC5oYXNBdG9t
aWNJbmxpbmVCb3goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIEF0IHRoaXMgcG9p
bnQgd2UgZWl0aGVyIGhhdmUgb25seSB0aGUgPGJyPiBvbiB0aGUgbGluZSBvciBpbmxpbmUgYm94
ZXMgd2l0aCBvciB3aXRob3V0IGNvbnRlbnQuCiAgICAgYXV0byYgaW5saW5lTGV2ZWxCb3hlcyA9
IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0ludHJpbnNpY1dpZHRoSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwCmluZGV4IDdiMzRjNTI2ZDc0Yi4uY2U0MWRkMzVk
ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0ludHJpbnNpY1dpZHRoSGFuZGxlci5jcHAK
QEAgLTI1NCw3ICsyNTQsNyBAQCBJbmxpbmVMYXlvdXRVbml0IEludHJpbnNpY1dpZHRoSGFuZGxl
cjo6c2ltcGxpZmllZE1pbmltdW1XaWR0aChjb25zdCBFbGVtZW50Qm94JgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNoaWxkLT5p
c0F0b21pY0lubGluZUxldmVsQm94KCkgfHwgY2hpbGQtPmlzUmVwbGFjZWRCb3goKSkgeworICAg
ICAgICBpZiAoY2hpbGQtPmlzQXRvbWljSW5saW5lQm94KCkgfHwgY2hpbGQtPmlzUmVwbGFjZWRC
b3goKSkgewogICAgICAgICAgICAgbWF4aW11bVdpZHRoID0gc3RkOjptYXg8SW5saW5lTGF5b3V0
VW5pdD4obWF4aW11bVdpZHRoLCBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCpj
aGlsZCkubWFyZ2luQm94V2lkdGgoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaAppbmRl
eCA4ZTQ1ZmQ0OTBkOTMuLmQxNjY3ZWEzNjY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmgKQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IEJveCB7
CiAgICAgICAgIEVsbGlwc2lzLAogICAgICAgICBTb2Z0TGluZUJyZWFrLAogICAgICAgICBMaW5l
QnJlYWtCb3gsCi0gICAgICAgIEF0b21pY0lubGluZUxldmVsQm94LAorICAgICAgICBBdG9taWNJ
bmxpbmVCb3gsCiAgICAgICAgIE5vblJvb3RJbmxpbmVCb3gsCiAgICAgICAgIFJvb3RJbmxpbmVC
b3gsCiAgICAgICAgIEdlbmVyaWNJbmxpbmVMZXZlbEJveApAQCAtOTMsMTIgKzkzLDEyIEBAIHN0
cnVjdCBCb3ggewogICAgIGJvb2wgaXNUZXh0T3JTb2Z0TGluZUJyZWFrKCkgY29uc3QgeyByZXR1
cm4gaXNUZXh0KCkgfHwgaXNTb2Z0TGluZUJyZWFrKCk7IH0KICAgICBib29sIGlzTGluZUJyZWFr
Qm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkxpbmVCcmVha0JveDsgfQogICAg
IGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBpc1NvZnRMaW5lQnJlYWsoKSB8fCBp
c0xpbmVCcmVha0JveCgpOyB9Ci0gICAgYm9vbCBpc0F0b21pY0lubGluZUxldmVsQm94KCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkF0b21pY0lubGluZUxldmVsQm94OyB9CisgICAg
Ym9vbCBpc0F0b21pY0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpB
dG9taWNJbmxpbmVCb3g7IH0KICAgICBib29sIGlzSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
aXNOb25Sb290SW5saW5lQm94KCkgfHwgaXNSb290SW5saW5lQm94KCk7IH0KICAgICBib29sIGlz
Tm9uUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpOb25Sb290
SW5saW5lQm94OyB9CiAgICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsgfQogICAgIGJvb2wgaXNHZW5lcmljSW5saW5l
TGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6R2VuZXJpY0lubGluZUxl
dmVsQm94OyB9Ci0gICAgYm9vbCBpc0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gaXNB
dG9taWNJbmxpbmVMZXZlbEJveCgpIHx8IGlzTGluZUJyZWFrQm94KCkgfHwgaXNJbmxpbmVCb3go
KSB8fCBpc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgpOyB9CisgICAgYm9vbCBpc0lubGluZUxldmVs
Qm94KCkgY29uc3QgeyByZXR1cm4gaXNBdG9taWNJbmxpbmVCb3goKSB8fCBpc0xpbmVCcmVha0Jv
eCgpIHx8IGlzSW5saW5lQm94KCkgfHwgaXNHZW5lcmljSW5saW5lTGV2ZWxCb3goKTsgfQogICAg
IGJvb2wgaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBpc0lubGluZUxl
dmVsQm94KCkgJiYgIWlzUm9vdElubGluZUJveCgpOyB9CiAKICAgICBVQmlEaUxldmVsIGJpZGlM
ZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmlkaUxldmVsOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAK
aW5kZXggMjFlN2Y4MGIzOTQ3Li5jMDM0ZWM0NmM0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAK
QEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBw
ZW5kSGFyZExpbmVCcmVha0Rpc3BsYXlCb3goY29uc3QgTGluZTo6UnVuJgogCiB2b2lkIElubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kQXRvbWljSW5saW5lTGV2ZWxEaXNwbGF5Qm94
KGNvbnN0IExpbmU6OlJ1biYgbGluZVJ1biwgY29uc3QgSW5saW5lUmVjdCYgYm9yZGVyQm94UmVj
dCwgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVzKQogewotICAgIEFTU0VSVChsaW5lUnVuLmxh
eW91dEJveCgpLmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSk7CisgICAgQVNTRVJUKGxpbmVSdW4u
bGF5b3V0Qm94KCkuaXNBdG9taWNJbmxpbmVCb3goKSk7CiAgICAgYXV0byYgbGF5b3V0Qm94ID0g
bGluZVJ1bi5sYXlvdXRCb3goKTsKIAogICAgIGF1dG8gaXNDb250ZW50ZnVsID0gdHJ1ZTsKQEAg
LTMwMiw3ICszMDIsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5k
QXRvbWljSW5saW5lTGV2ZWxEaXNwbGF5Qm94KGNvbnN0IExpbmU6OgogICAgIH07CiAKICAgICBi
b3hlcy5hcHBlbmQoeyBsaW5lSW5kZXgoKQotICAgICAgICAsIElubGluZURpc3BsYXk6OkJveDo6
VHlwZTo6QXRvbWljSW5saW5lTGV2ZWxCb3gKKyAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6
OlR5cGU6OkF0b21pY0lubGluZUJveAogICAgICAgICAsIGxheW91dEJveAogICAgICAgICAsIGxp
bmVSdW4uYmlkaUxldmVsKCkKICAgICAgICAgLCBib3JkZXJCb3hSZWN0CkBAIC0zODAsNyArMzgw
LDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZElubGluZURpc3Bs
YXlCb3hBdEJpZGlCb3VuZGFyeShjb25zdCBCb3gKIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjppbnNlcnRSdWJ5QW5ub3RhdGlvbkJveChjb25zdCBCb3gmIGFubm90YXRpb25Cb3gs
IHNpemVfdCBpbnNlcnRpb25Qb3NpdGlvbiwgY29uc3QgSW5saW5lUmVjdCYgYm9yZGVyQm94UmVj
dCwgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVzKQogewogICAgIGJveGVzLmluc2VydChpbnNl
cnRpb25Qb3NpdGlvbiwgeyBsaW5lSW5kZXgoKQotICAgICAgICAsIElubGluZURpc3BsYXk6OkJv
eDo6VHlwZTo6QXRvbWljSW5saW5lTGV2ZWxCb3gKKyAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpC
b3g6OlR5cGU6OkF0b21pY0lubGluZUJveAogICAgICAgICAsIGFubm90YXRpb25Cb3gKICAgICAg
ICAgLCBVQklESV9ERUZBVUxUX0xUUgogICAgICAgICAsIGJvcmRlckJveFJlY3QKQEAgLTQyOSw4
ICs0MjksOCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJp
ZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGxpbmVCb3gubG9naWNhbFJlY3RGb3JMaW5lQnJlYWtCb3gobGF5b3V0Qm94KTsKIAogICAgICAg
ICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9y
Qm94KGxheW91dEJveCk7Ci0gICAgICAgICAgICBpZiAobGluZVJ1bi5pc0JveCgpIHx8IGxpbmVS
dW4uaXNMaXN0TWFya2VyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVCb3gubG9naWNh
bEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVsQm94KGxheW91dEJveCwgYm94R2VvbWV0cnkp
OworICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNBdG9taWNJbmxpbmVCb3goKSB8fCBsaW5lUnVu
LmlzTGlzdE1hcmtlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiBsaW5lQm94LmxvZ2ljYWxC
b3JkZXJCb3hGb3JBdG9taWNJbmxpbmVCb3gobGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7CiAgICAg
ICAgICAgICBpZiAobGluZVJ1bi5pc0lubGluZUJveFN0YXJ0KCkgfHwgbGluZVJ1bi5pc0xpbmVT
cGFubmluZ0lubGluZUJveFN0YXJ0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVCb3gu
bG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQg
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQoY29uc3Qg
TGluZUxheW91dFJlc3VsdCYKICAgICAgICAgICAgICAgICBhcHBlbmRTb2Z0TGluZUJyZWFrRGlz
cGxheUJveChsaW5lUnVuLCB2aXN1YWxSZWN0UmVsYXRpdmVUb1Jvb3QsIGJveGVzKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKGxpbmVSdW4uaXNIYXJkTGluZUJyZWFrKCkpCiAgICAgICAgICAgICAg
ICAgYXBwZW5kSGFyZExpbmVCcmVha0Rpc3BsYXlCb3gobGluZVJ1biwgdmlzdWFsUmVjdFJlbGF0
aXZlVG9Sb290LCBib3hlcyk7Ci0gICAgICAgICAgICBlbHNlIGlmIChsaW5lUnVuLmlzQm94KCkg
fHwgbGluZVJ1bi5pc0xpc3RNYXJrZXIoKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGxpbmVSdW4u
aXNBdG9taWNJbmxpbmVCb3goKSB8fCBsaW5lUnVuLmlzTGlzdE1hcmtlcigpKQogICAgICAgICAg
ICAgICAgIGFwcGVuZEF0b21pY0lubGluZUxldmVsRGlzcGxheUJveChsaW5lUnVuLCB2aXN1YWxS
ZWN0UmVsYXRpdmVUb1Jvb3QsIGJveGVzKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxpbmVSdW4u
aXNJbmxpbmVCb3hTdGFydCgpIHx8IGxpbmVSdW4uaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFy
dCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGdlbmVyYXRlIGRpc3BsYXkgYm94ZXMg
Zm9yIGlubGluZSBib3hlcyBvbiBub24tY29udGVudGZ1bCBsaW5lcyAoZS5nLiA8c3Bhbj48L3Nw
YW4+KQpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
OjphZGp1c3RWaXN1YWxHZW9tZXRyeUZvckRpc3BsYXlCb3goc2l6ZV90IGRpc3BsCiAgICAgYXV0
byYgbGF5b3V0Qm94ID0gZGlzcGxheUJveC5sYXlvdXRCb3goKTsKIAogICAgIGlmICghZGlzcGxh
eUJveC5pc05vblJvb3RJbmxpbmVCb3goKSkgewotICAgICAgICBpZiAoZGlzcGxheUJveC5pc0F0
b21pY0lubGluZUxldmVsQm94KCkgfHwgZGlzcGxheUJveC5pc0dlbmVyaWNJbmxpbmVMZXZlbEJv
eCgpKSB7CisgICAgICAgIGlmIChkaXNwbGF5Qm94LmlzQXRvbWljSW5saW5lQm94KCkgfHwgZGlz
cGxheUJveC5pc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgpKSB7CiAgICAgICAgICAgICBhdXRvIGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsYXlvdXRCb3gucGFyZW50KCkuc3R5bGUoKS5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1h
dHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAgICAgIGF1
dG8gYm94TWFyZ2luTGVmdCA9IG1hcmdpbkxlZnRJbklubGluZURpcmVjdGlvbihib3hHZW9tZXRy
eSwgaXNMZWZ0VG9SaWdodERpcmVjdGlvbik7CkBAIC03MDcsOCArNzA3LDggQEAgdm9pZCBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudChjb25zdCBMaW5lTGF5
b3V0UmVzdWx0JiBsaW4KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyB9LCB7IH0gfTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBm
b3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGxpbmVSdW4uaXNCb3goKSB8fCBsaW5lUnVuLmlzTGlzdE1hcmtlcigpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9yQXRvbWlj
SW5saW5lTGV2ZWxCb3gobGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7CisgICAgICAgICAgICAgICAg
aWYgKGxpbmVSdW4uaXNBdG9taWNJbmxpbmVCb3goKSB8fCBsaW5lUnVuLmlzTGlzdE1hcmtlcigp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9y
QXRvbWljSW5saW5lQm94KGxheW91dEJveCwgYm94R2VvbWV0cnkpOwogICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgICAgICB9KCk7CkBAIC03NTAsNyArNzUwLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudChjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiBsaW4K
ICAgICAgICAgICAgICAgICBkaXNwbGF5Qm94VHJlZS5hcHBlbmQocGFyZW50RGlzcGxheUJveE5v
ZGVJbmRleCwgYm94ZXMuc2l6ZSgpIC0gMSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobGluZVJ1bi5pc0JveCgpIHx8IGxpbmVSdW4u
aXNMaXN0TWFya2VyKCkpIHsKKyAgICAgICAgICAgIGlmIChsaW5lUnVuLmlzQXRvbWljSW5saW5l
Qm94KCkgfHwgbGluZVJ1bi5pc0xpc3RNYXJrZXIoKSkgewogICAgICAgICAgICAgICAgIGF1dG8g
aXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IGxheW91dEJveC5wYXJlbnQoKS5zdHlsZSgpLmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9
IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAg
ICAgICAgICBhdXRvIGJveE1hcmdpbkxlZnQgPSBtYXJnaW5MZWZ0SW5JbmxpbmVEaXJlY3Rpb24o
Ym94R2VvbWV0cnksIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pOwpAQCAtODc2LDcgKzg3Niw3IEBA
IHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJ
bmxpbmVCb3hlcyhJbmxpbmVEaXNwbGF5CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSBib3hlcy5z
aXplKCk7IGluZGV4LS07KSB7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBib3hlc1tpbmRl
eF07CiAKLSAgICAgICAgYXV0byBtYXlIYXZlSW5rT3ZlcmZsb3cgPSBkaXNwbGF5Qm94LmlzVGV4
dCgpIHx8IGRpc3BsYXlCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIHx8IGRpc3BsYXlCb3gu
aXNHZW5lcmljSW5saW5lTGV2ZWxCb3goKSB8fCBkaXNwbGF5Qm94LmlzTm9uUm9vdElubGluZUJv
eCgpOworICAgICAgICBhdXRvIG1heUhhdmVJbmtPdmVyZmxvdyA9IGRpc3BsYXlCb3guaXNUZXh0
KCkgfHwgZGlzcGxheUJveC5pc0F0b21pY0lubGluZUJveCgpIHx8IGRpc3BsYXlCb3guaXNHZW5l
cmljSW5saW5lTGV2ZWxCb3goKSB8fCBkaXNwbGF5Qm94LmlzTm9uUm9vdElubGluZUJveCgpOwog
ICAgICAgICBpZiAoIW1heUhhdmVJbmtPdmVyZmxvdykKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBpZiAoZGlzcGxheUJveC5pc05vblJvb3RJbmxpbmVCb3goKSAmJiAhYWNjdW11bGF0
ZWRJbmtPdmVyZmxvd1JlY3QuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCmluZGV4IDkyNTNhNDYx
M2UwMC4uZDBkNjg2MDNhNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCkBAIC04NSwxNCArODUsMTQgQEAg
SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpFbmNsb3NpbmdMaW5lR2VvbWV0cnkgSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyOjpjb2xsZWMKICAgICAgICAgcmV0dXJuIHJlY3Q7CiAgICAgfSgpOwog
ICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZl
bEJveGVzKCkpIHsKLSAgICAgICAgaWYgKCFpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUxl
dmVsQm94KCkgJiYgIWlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgJiYgIWlubGluZUxldmVs
Qm94LmlzTGluZUJyZWFrQm94KCkpCisgICAgICAgIGlmICghaW5saW5lTGV2ZWxCb3guaXNBdG9t
aWNJbmxpbmVCb3goKSAmJiAhaW5saW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSAmJiAhaW5saW5l
TGV2ZWxCb3guaXNMaW5lQnJlYWtCb3goKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVsQm94LmxheW91dEJveCgpOwogICAgICAg
ICBhdXRvIGJvcmRlckJveCA9IElubGluZVJlY3QgeyB9OwogCi0gICAgICAgIGlmIChpbmxpbmVM
ZXZlbEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkpIHsKLSAgICAgICAgICAgIGJvcmRlckJv
eCA9IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVsQm94KGxheW91
dEJveCwgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpKTsKKyAg
ICAgICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lQm94KCkpIHsKKyAgICAgICAg
ICAgIGJvcmRlckJveCA9IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUJv
eChsYXlvdXRCb3gsIGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
KSk7CiAgICAgICAgICAgICBib3JkZXJCb3gubW92ZUJ5KGxpbmVCb3hSZWN0LnRvcExlZnQoKSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoaW5saW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSkgewogICAg
ICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5
Rm9yQm94KGxheW91dEJveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCmluZGV4IDAwMzlh
OWRkYjI4YS4uMjJjY2QwOTQyOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcApAQCAt
NDgxLDcgKzQ4MSw3IEBAIHZvaWQgc2hvd0lubGluZUNvbnRlbnQoVGV4dFN0cmVhbSYgc3RyZWFt
LCBjb25zdCBJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50LCBzCiAgICAgICAgICAgICAgICAg
ICAgIHJ1blN0cmVhbSA8PCAiV29yZCBzZXBhcmF0b3IiOwogICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGJveC5pc0xpbmVCcmVhaygpKQogICAgICAgICAgICAgICAgICAgICBydW5TdHJlYW0gPDwg
IkxpbmUgYnJlYWsiOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJveC5pc0F0b21pY0lubGlu
ZUxldmVsQm94KCkpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYm94LmlzQXRvbWljSW5saW5l
Qm94KCkpCiAgICAgICAgICAgICAgICAgICAgIHJ1blN0cmVhbSA8PCAiQXRvbWljIGJveCI7CiAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoYm94LmlzR2VuZXJpY0lubGluZUxldmVsQm94KCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJ1blN0cmVhbSA8PCAiR2VuZXJpYyBpbmxpbmUgbGV2ZWwgYm94
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUv
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dEJ1aWxkZXIuY3BwCmluZGV4IGFjNWEyZTNjOGU1YS4uNDE3NDBhNjc1MGExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0
aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5j
cHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjphZGp1c3RE
aXNwbGF5TGluZXMoSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoYm94Lmlz
QXRvbWljSW5saW5lTGV2ZWxCb3goKSkgeworICAgICAgICAgICAgaWYgKGJveC5pc0F0b21pY0lu
bGluZUJveCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJCb3g+KCpib3gubGF5b3V0Qm94KCkucmVuZGVyZXJGb3JJbnRlZ3JhdGlvbigpKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgYXV0byBjaGlsZElua092ZXJmbG93ID0gcmVuZGVyZXIubG9naWNh
bFZpc3VhbE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9uKCZyZW5kZXJlci5wYXJlbnQoKS0+c3R5
bGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5s
aW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5k
ZXggYzEyZWI0OTJlMzA5Li42MDUyYjRkNWRmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIExpbmVMYXlv
dXQ6OnVwZGF0ZVJlbmRlclRyZWVQb3NpdGlvbnMoY29uc3QgVmVjdG9yPExpbmVBZGp1c3RtZW50
PiYgbGluZUFkagogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgbGF5b3V0
Qm94ID0gYm94LmxheW91dEJveCgpOwotICAgICAgICBpZiAoIWxheW91dEJveC5pc0F0b21pY0lu
bGluZUxldmVsQm94KCkpCisgICAgICAgIGlmICghbGF5b3V0Qm94LmlzQXRvbWljSW5saW5lQm94
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZW5kZXJlciA9IGRv
d25jYXN0PFJlbmRlckJveD4oKmJveC5sYXlvdXRCb3goKS5yZW5kZXJlckZvckludGVncmF0aW9u
KCkpOwpAQCAtMTAxNSw3ICsxMDE1LDcgQEAgYm9vbCBMaW5lTGF5b3V0OjpoaXRUZXN0KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGMKICAgICAg
ICAgaWYgKCFsYXllclBhaW50U2NvcGUuaW5jbHVkZXMoYm94KSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGlmIChib3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSB7CisgICAg
ICAgIGlmIChib3guaXNBdG9taWNJbmxpbmVCb3goKSkgewogICAgICAgICAgICAgaWYgKHJlbmRl
cmVyLmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBmbGlwcGVk
Q29udGVudE9mZnNldElmTmVlZGVkKGZsb3coKSwgZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
ciksIGFjY3VtdWxhdGVkT2Zmc2V0KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTEwNjAsNyArMTA2MCw3IEBAIHZvaWQgTGluZUxheW91
dDo6c2hpZnRMaW5lc0J5KExheW91dFVuaXQgYmxvY2tTaGlmdCkKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgYm94Lm1vdmVIb3Jpem9udGFsbHkoYmxvY2tTaGlmdCk7CiAKLSAgICAgICAgaWYg
KGJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkpIHsKKyAgICAgICAgaWYgKGJveC5pc0F0b21p
Y0lubGluZUJveCgpKSB7CiAgICAgICAgICAgICBDaGVja2VkUmVmIHJlbmRlcmVyID0gZG93bmNh
c3Q8UmVuZGVyQm94PigqYm94LmxheW91dEJveCgpLnJlbmRlcmVyRm9ySW50ZWdyYXRpb24oKSk7
CiAgICAgICAgICAgICByZW5kZXJlci0+bW92ZShkZWx0YVgsIGRlbHRhWSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4
IGViNWYwZWM4OWJlMi4uYjg4YjI5MGMwM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCBib29sIEJveDo6
aXNJbmxpbmVCb3goKSBjb25zdAogICAgIHJldHVybiAoZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6
SW5saW5lIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlJ1YnkgfHwgZGlzcGxheSA9PSBEaXNw
bGF5VHlwZTo6UnVieUJhc2UpICYmICFpc1JlcGxhY2VkQm94KCk7CiB9CiAKLWJvb2wgQm94Ojpp
c0F0b21pY0lubGluZUxldmVsQm94KCkgY29uc3QKK2Jvb2wgQm94Ojppc0F0b21pY0lubGluZUJv
eCgpIGNvbnN0CiB7CiAgICAgLy8gSW5saW5lLWxldmVsIGJveGVzIHRoYXQgYXJlIG5vdCBpbmxp
bmUgYm94ZXMgKHN1Y2ggYXMgcmVwbGFjZWQgaW5saW5lLWxldmVsIGVsZW1lbnRzLCBpbmxpbmUt
YmxvY2sgZWxlbWVudHMsIGFuZCBpbmxpbmUtdGFibGUgZWxlbWVudHMpCiAgICAgLy8gYXJlIGNh
bGxlZCBhdG9taWMgaW5saW5lLWxldmVsIGJveGVzIGJlY2F1c2UgdGhleSBwYXJ0aWNpcGF0ZSBp
biB0aGVpciBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IGFzIGEgc2luZ2xlIG9wYXF1ZSBib3gu
CkBAIC0zMDEsNyArMzAxLDcgQEAgYm9vbCBCb3g6OmlzTGF5b3V0Q29udGFpbm1lbnRCb3goKSBj
b25zdAogICAgICAgICBpZiAoaXNJbnRlcm5hbFJ1YnlCb3goKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgaWYgKGlzSW5saW5lTGV2ZWxCb3goKSkKLSAgICAgICAgICAgIHJl
dHVybiBpc0F0b21pY0lubGluZUxldmVsQm94KCk7CisgICAgICAgICAgICByZXR1cm4gaXNBdG9t
aWNJbmxpbmVCb3goKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKICAgICByZXR1cm4g
bV9zdHlsZS51c2VkQ29udGFpbigpLmNvbnRhaW5zKENvbnRhaW5tZW50OjpMYXlvdXQpICYmIHN1
cHBvcnRzTGF5b3V0Q29udGFpbm1lbnQoKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIEJveDo6
aXNTaXplQ29udGFpbm1lbnRCb3goKSBjb25zdAogICAgICAgICBpZiAoaXNJbnRlcm5hbFJ1YnlC
b3goKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGlzSW5saW5lTGV2
ZWxCb3goKSkKLSAgICAgICAgICAgIHJldHVybiBpc0F0b21pY0lubGluZUxldmVsQm94KCk7Cisg
ICAgICAgICAgICByZXR1cm4gaXNBdG9taWNJbmxpbmVCb3goKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfTsKICAgICByZXR1cm4gbV9zdHlsZS51c2VkQ29udGFpbigpLmNvbnRhaW5zKENv
bnRhaW5tZW50OjpTaXplKSAmJiBzdXBwb3J0c1NpemVDb250YWlubWVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAppbmRleCA1ZGQ1MGY1ZmI0ZDMu
LmNhYzNjYTdmZmY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Jsb2NrQ29u
dGFpbmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc0lubGluZUxldmVsQm94KCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0lubGluZUJveCgpIGNvbnN0OwotICAgIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZlbEJv
eCgpIGNvbnN0OworICAgIGJvb2wgaXNBdG9taWNJbmxpbmVCb3goKSBjb25zdDsKICAgICBib29s
IGlzSW5saW5lQmxvY2tCb3goKSBjb25zdDsKICAgICBib29sIGlzSW5saW5lVGFibGVCb3goKSBj
b25zdDsKICAgICBib29sIGlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJu
IGJhc2VUeXBlRmxhZ3MoKS5jb250YWlucyhJbml0aWFsQ29udGFpbmluZ0Jsb2NrRmxhZyk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmNwcAppbmRleCA4ODZkMzJjYjJiYWMuLjczNDM2Yjk2ODdlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cApAQCAtNDA1LDggKzQwNSw4IEBAIHZvaWQgc2hvd0lubGluZVRyZWVBbmRSdW5zKFRleHRTdHJl
YW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjCiAgICAgICAgICAg
ICBzdHJlYW0gPDwgIiAgICAiOwogICAgICAgICAgICAgYXV0byByZWN0ID0gaW5saW5lTGV2ZWxC
b3gudmlzdWFsUmVjdElnbm9yaW5nQmxvY2tEaXJlY3Rpb24oKTsKICAgICAgICAgICAgIGF1dG8m
IGxheW91dEJveCA9IGlubGluZUxldmVsQm94LmxheW91dEJveCgpOwotICAgICAgICAgICAgaWYg
KGxheW91dEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkpCi0gICAgICAgICAgICAgICAgc3Ry
ZWFtIDw8ICJBdG9taWMgaW5saW5lIGxldmVsIGJveCI7CisgICAgICAgICAgICBpZiAobGF5b3V0
Qm94LmlzQXRvbWljSW5saW5lQm94KCkpCisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJBdG9t
aWMgaW5saW5lIGJveCI7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJl
YWtCb3goKSkKICAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIkxpbmUgYnJlYWsgYm94IjsKICAg
ICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZUJveCgpKQpAQCAtNDkzLDggKzQ5
Myw4IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBCb3hHCiAgICAgICAgICAgICBzdHJlYW0gPDwgImlu
bGluZS1ibG9jayBib3giOwogICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJlYWtC
b3goKSkKICAgICAgICAgICAgIHN0cmVhbSA8PCAobGF5b3V0Qm94LmlzV29yZEJyZWFrT3Bwb3J0
dW5pdHkoKSA/ICJ3b3JkIGJyZWFrIG9wcG9ydHVuaXR5IiA6ICJsaW5lIGJyZWFrIik7Ci0gICAg
ICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkpCi0gICAgICAg
ICAgICBzdHJlYW0gPDwgImF0b21pYyBpbmxpbmUgbGV2ZWwgYm94IjsKKyAgICAgICAgZWxzZSBp
ZiAobGF5b3V0Qm94LmlzQXRvbWljSW5saW5lQm94KCkpCisgICAgICAgICAgICBzdHJlYW0gPDwg
ImF0b21pYyBpbmxpbmUgYm94IjsKICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzUmVwbGFj
ZWRCb3goKSkKICAgICAgICAgICAgIHN0cmVhbSA8PCAicmVwbGFjZWQgaW5saW5lIGJveCI7CiAg
ICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZUJveCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472268</attachid>
            <date>2024-08-22 10:21:36 -0700</date>
            <delta_ts>2024-08-22 12:17:23 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-278527-20240822102136.patch</filename>
            <type>text/plain</type>
            <size>63198</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBhZDIyYzI1NWYzNWY4ZmVmNDU0ZWI2NzJlZTBlMTYwZDRkNzc5NDU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMjIgQXVnIDIwMjQgMDk6NTc6MDYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbQ2xlYW51
cF0gVXNlIEF0b21pY0lubGluZUJveCBjb25zaXN0ZW50bHkgYWNyb3NzIGlubGluZQogbGF5b3V0
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzg1MjcKClJldmlld2Vk
IGJ5IEFudHRpIEtvaXZpc3RvLgoKVXNlICJBdG9taWNJbmxpbmVCb3giIHN0YXJ0aW5nIGZyb20g
SW5saW5lSXRlbXMgYWxsIHRoZSB3YXkgdG8gZGlzcGxheSBib3hlcyB3aGVuIGFwcGxpY2FibGUu
CihodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWRpc3BsYXktMy8jYXRvbWljLWlubGluZSkKCiog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29u
dGVudEFsaWduZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0Ojpjb21wdXRlZEV4cGFuc2lvbnMpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNv
bnRlbnRCcmVha2VyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6
OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OmFwcGVuZCk6CiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cmVz
ZXRHZW9tZXRyeUZvckNsYW1wZWRDb250ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmlubGluZUxldmVsQm94QWZmZWN0c0xp
bmVCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6Omlz
QXRTb2Z0V3JhcE9wcG9ydHVuaXR5IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ1V0aWxzOjpuZXh0V3JhcE9wcG9ydHVuaXR5IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtLmg6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUl0ZW06OmlzQXRvbWljSW5saW5lQm94IGNvbnN0KToKKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lSXRlbTo6aXNCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyk6CihXZWJD
b3JlOjpMYXlvdXQ6OmJ1aWxkQmlkaVBhcmFncmFwaCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUl0ZW1zQnVpbGRlcjo6aGFuZGxlSW5saW5lTGV2ZWxCb3gpOgoqIFNvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmg6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpoYXNUZXh0RW1waGFzaXMgY29uc3QpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6aXNBdG9taWNJbmxpbmVCb3ggY29uc3QpOgooV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6aXNMaXN0TWFya2VyIGNvbnN0KToKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmlzQXRvbWljSW5saW5lTGV2ZWxCb3ggY29uc3Qp
OiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxldmVsQm94SW5saW5lcy5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZl
bEJveDo6Y3JlYXRlQXRvbWljSW5saW5lQm94KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2
ZWxCb3g6Om1heVN0cmV0Y2hMaW5lQm94IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
TGV2ZWxCb3g6OmNyZWF0ZUF0b21pY0lubGluZUxldmVsQm94KTogRGVsZXRlZC4KKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcDoK
KFdlYkNvcmU6OkxheW91dDo6TGluZTo6cmVzZXRCaWRpTGV2ZWxGb3JUcmFpbGluZ1doaXRlc3Bh
Y2UpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmQpOgooV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjphcHBlbmRUZXh0Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZEF0
b21pY0lubGluZUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OnRvTGluZVJ1blR5cGUpOgooV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRHZW5lcmljSW5saW5lTGV2ZWxCb3gpOiBEZWxldGVkLgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmUuaDoKKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjppc0F0b21pY0lubGluZUJveCBjb25z
dCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6aXNDb250ZW50ZnVsIGNvbnN0KToKKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjppc0JveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5j
cHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJ
bmxpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsQm9yZGVy
Qm94Rm9yQXRvbWljSW5saW5lTGV2ZWxCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaDoKKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6aGFzTm9uSW5saW5lQm94IGNvbnN0KToKKFdlYkNvcmU6
OkxheW91dDo6TGluZUJveDo6aGFzQXRvbWljSW5saW5lQm94IGNvbnN0KToKKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveDo6aGFzQXRvbWljSW5saW5lTGV2ZWxCb3ggY29uc3QpOiBEZWxldGVkLgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3hCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OnNldFZl
cnRpY2FsUHJvcGVydGllc0ZvcklubGluZUxldmVsQm94IGNvbnN0KToKKFdlYkNvcmU6OkxheW91
dDo6TGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMpOgooV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRqdXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGlj
YWJsZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
b3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0QW5kQWxpZ24gY29uc3QpOgoo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVyOjphZGp1c3RGb3JBbm5vdGF0
aW9uSWZOZWVkZWQgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6aXND
b250ZW50ZnVsT3JIYXNEZWNvcmF0aW9uKToKKFdlYkNvcmU6OkxheW91dDo6aGFzVHJhaWxpbmdT
b2Z0V3JhcE9wcG9ydHVuaXR5KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUNhbmRpZGF0ZTo6SW5s
aW5lQ29udGVudDo6YXBwZW5kSW5saW5lSXRlbSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjphZGp1c3RlZExpbmVSZWN0V2l0aENhbmRpZGF0ZUlubGluZUNvbnRlbnQgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVF1
aXJrcy5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZVF1aXJrczo6bGluZUJyZWFrQm94QWZm
ZWN0c1BhcmVudElubGluZUJveCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNwcDoKKFdlYkNvcmU6OkxheW91
dDo6SW50cmluc2ljV2lkdGhIYW5kbGVyOjpzaW1wbGlmaWVkTWluaW11bVdpZHRoIGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5
L0lubGluZURpc3BsYXlCb3guaDoKKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJveDo6aXNBdG9t
aWNJbmxpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94Ojppc0lubGlu
ZUxldmVsQm94IGNvbnN0KToKKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJveDo6aXNBdG9taWNJ
bmxpbmVMZXZlbEJveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFw
cGVuZEF0b21pY0lubGluZUxldmVsRGlzcGxheUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlcjo6aW5zZXJ0UnVieUFubm90YXRpb25Cb3gpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NOb25CaWRpQ29u
dGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YWRq
dXN0VmlzdWFsR2VvbWV0cnlGb3JEaXNwbGF5Qm94KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzQmlkaUNvbnRlbnQpOgooV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0Zvcklu
bGluZUJveGVzKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlv
dXQ6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6Y29sbGVjdEVuY2xvc2luZ0xpbmVHZW9tZXRy
eSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQm94VHJlZS5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6c2hvd0lubGlu
ZUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmFkanVzdERpc3BsYXlMaW5lcyBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVM
YXlvdXQ6OnVwZGF0ZVJlbmRlclRyZWVQb3NpdGlvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OkxpbmVMYXlvdXQ6OmhpdFRlc3QpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OnNoaWZ0TGluZXNCeSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Qm94LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0F0b21pY0lubGlu
ZUJveCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNMYXlvdXRDb250YWlubWVudEJv
eCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNTaXplQ29udGFpbm1lbnRCb3ggY29u
c3QpOgooV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzQXRvbWljSW5saW5lTGV2ZWxCb3ggY29uc3Qp
OiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5o
OgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6c2hvd0lubGluZVRyZWVBbmRSdW5zKToKKFdlYkNvcmU6Okxh
eW91dDo6b3V0cHV0TGF5b3V0Qm94KToKLS0tCiAuLi4vaW5saW5lL0lubGluZUNvbnRlbnRBbGln
bmVyLmNwcCAgICAgICAgICAgfCAgNCArKy0tCiAuLi4vaW5saW5lL0lubGluZUNvbnRlbnRCcmVh
a2VyLmNwcCAgICAgICAgICAgfCAgOCArKystLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcCAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
VXRpbHMuY3BwICAgICAgICAgIHwgMTAgKysrKy0tLS0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVJdGVtLmggICAgfCAgNCArKy0tCiAuLi4vaW5saW5lL0lubGluZUl0ZW1z
QnVpbGRlci5jcHAgICAgICAgICAgICAgfCAxMCArKysrLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5l
TGV2ZWxCb3guaCAgICAgICAgICAgICAgICAgICB8IDEwICsrKystLS0tLQogLi4uL2lubGluZS9J
bmxpbmVMZXZlbEJveElubGluZXMuaCAgICAgICAgICAgIHwgIDYgKystLS0KIC4uLi9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwICB8IDE0ICsrKysrKy0tLS0tLQogLi4u
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oICAgIHwgIDggKysrLS0tLQog
Li4uL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcCAgICAgICAgICAgICAgICAgIHwgIDQgKystLQog
Li4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oIHwgIDYgKystLS0K
IC4uLi9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwICAgICAgICAgICB8IDIyICsrKysr
KysrKy0tLS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5j
cHAgICB8ICA2ICsrLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAgICAgICAg
ICAgICAgfCAxNCArKysrKystLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lUXVpcmtzLmNwcCAgICAg
ICAgICAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL0ludHJpbnNpY1dpZHRoSGFuZGxlci5j
cHAgICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3gu
aCAgICAgICAgIHwgIDYgKystLS0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVp
bGRlci5jcHAgICB8IDIyICsrKysrKysrKy0tLS0tLS0tLS0KIC4uLi9kaXNwbGF5L0lubGluZURp
c3BsYXlMaW5lQnVpbGRlci5jcHAgICAgICB8ICA2ICsrLS0tCiAuLi4vaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCAgfCAgMiArLQogLi4uL0xheW91dEludGVncmF0aW9u
SW5saW5lQ29udGVudEJ1aWxkZXIuY3BwIHwgIDIgKy0KIC4uLi9pbmxpbmUvTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmNwcCAgICB8ICA2ICsrLS0tCiAuLi4vV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guY3BwICAgfCAgNiArKy0tLQogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94LmggIHwgIDIgKy0KIC4uLi9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAgICB8ICA4ICsrKy0tLS0KIDI2IGZpbGVzIGNoYW5nZWQsIDk2
IGluc2VydGlvbnMoKyksIDk2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGlnbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUNvbnRlbnRBbGlnbmVyLmNwcAppbmRleCBjOTgxM2YzMmI2OTMuLjljMTgxYzQxODdmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lQ29udGVudEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGlnbmVyLmNwcApAQCAtMjEx
LDE0ICsyMTEsMTQgQEAgc3RhdGljIHZvaWQgY29tcHV0ZWRFeHBhbnNpb25zKGNvbnN0IExpbmU6
OlJ1bkxpc3QmIHJ1bnMsIFdURjo6UmFuZ2U8c2l6ZV90PiBydW4KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgc3RkOjp0aWUoZXhwYW5zaW9uT3Bwb3J0dW5pdGllc0luUnVuLCBy
dW5Jc0FmdGVyRXhwYW5zaW9uKSA9IEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNv
dW50KFN0cmluZ1ZpZXcoZG93bmNhc3Q8SW5saW5lVGV4dEJveD4ocnVuLmxheW91dEJveCgpKS5j
b250ZW50KCkpLnN1YnN0cmluZyh0ZXh0Q29udGVudC5zdGFydCwgbGVuZ3RoKSwgcnVuLmlubGlu
ZURpcmVjdGlvbigpLCBleHBhbnNpb25CZWhhdmlvcik7CiAgICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSBpZiAocnVuLmlzQm94KCkpCisgICAgICAgIH0gZWxzZSBpZiAocnVuLmlzQXRvbWlj
SW5saW5lQm94KCkpCiAgICAgICAgICAgICBydW5Jc0FmdGVyRXhwYW5zaW9uID0gZmFsc2U7CiAK
ICAgICAgICAgZXhwYW5zaW9uSW5mby5iZWhhdmlvckxpc3RbaW5kZXhdID0gZXhwYW5zaW9uQmVo
YXZpb3I7CiAgICAgICAgIGV4cGFuc2lvbkluZm8ub3Bwb3J0dW5pdHlMaXN0W2luZGV4XSA9IGV4
cGFuc2lvbk9wcG9ydHVuaXRpZXNJblJ1bjsKICAgICAgICAgZXhwYW5zaW9uSW5mby5vcHBvcnR1
bml0eUNvdW50ICs9IGV4cGFuc2lvbk9wcG9ydHVuaXRpZXNJblJ1bjsKIAotICAgICAgICBpZiAo
cnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0JveCgpKQorICAgICAgICBpZiAocnVuLmlzVGV4dCgpIHx8
IHJ1bi5pc0F0b21pY0lubGluZUJveCgpKQogICAgICAgICAgICAgbGFzdEV4cGFuc2lvbkluZGV4
V2l0aENvbnRlbnQgPSBpbmRleDsKICAgICB9CiAgICAgLy8gRm9yYmlkIHJpZ2h0IGV4cGFuc2lv
biBpbiB0aGUgbGFzdCBydW4gdG8gcHJldmVudCB0cmFpbGluZyBleHBhbnNpb24gYXQgdGhlIGVu
ZCBvZiB0aGUgbGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2Vy
LmNwcAppbmRleCAyZGYwZjc3MWM2Y2QuLmY4ZjI0NTVlN2U0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJy
ZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIElubGlu
ZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVy
Zmxvd2luZ0NvbnRlbnQoY29uCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdmFy
aW91cyBjb250ZW50LgogICAgICAgICBhdXRvJiBydW5zID0gY29udGludW91c0NvbnRlbnQucnVu
cygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJ1bnMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgIGlmIChydW5zW2ldLmlubGluZUl0ZW0uaXNCb3goKSkgeworICAgICAgICAg
ICAgaWYgKHJ1bnNbaV0uaW5saW5lSXRlbS5pc0F0b21pY0lubGluZUJveCgpKSB7CiAgICAgICAg
ICAgICAgICAgb3ZlcmZsb3dpbmdSdW5JbmRleCA9IGk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC04NTUsMTEgKzg1NSwxMSBAQCB2b2lkIElubGluZUNvbnRlbnRC
cmVha2VyOjpDb250aW51b3VzQ29udGVudDo6cmVzZXRUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQo
KQogCiB2b2lkIElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6YXBwZW5k
KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiB7Ci0gICAgQVNTRVJUKGlubGluZUl0ZW0u
aXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlz
SW5saW5lQm94RW5kKCkgfHwgaW5saW5lSXRlbS5pc09wYXF1ZSgpKTsKKyAgICBBU1NFUlQoaW5s
aW5lSXRlbS5pc0F0b21pY0lubGluZUJveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFy
dCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVl
KCkpOwogICAgIG1faXNUZXh0T25seUNvbnRlbnQgPSBmYWxzZTsKLSAgICBtX2hhc1RyYWlsaW5n
V29yZFNlcGFyYXRvciA9IG1faGFzVHJhaWxpbmdXb3JkU2VwYXJhdG9yICYmICFpbmxpbmVJdGVt
LmlzQm94KCk7CisgICAgbV9oYXNUcmFpbGluZ1dvcmRTZXBhcmF0b3IgPSBtX2hhc1RyYWlsaW5n
V29yZFNlcGFyYXRvciAmJiAhaW5saW5lSXRlbS5pc0F0b21pY0lubGluZUJveCgpOwogICAgIGFw
cGVuZFRvUnVuTGlzdChpbmxpbmVJdGVtLCBzdHlsZSwgeyB9LCBsb2dpY2FsV2lkdGgpOwotICAg
IGlmIChpbmxpbmVJdGVtLmlzQm94KCkpIHsKKyAgICBpZiAoaW5saW5lSXRlbS5pc0F0b21pY0lu
bGluZUJveCgpKSB7CiAgICAgICAgIC8vIElubGluZSBib3hlcyAod2hpdGVzcGFjZS0+IDxzcGFu
Pjwvc3Bhbj4pIGRvIG5vdCBwcmV2ZW50IHRoZSB0cmFpbGluZyBjb250ZW50IGZyb20gZ2V0dGlu
ZyB0cmltbWVkL2h1bmcKICAgICAgICAgLy8gYnV0IGF0b21pYyBpbmxpbmUgbGV2ZWwgYm94ZXMg
ZG8uCiAgICAgICAgIHJlc2V0VHJhaWxpbmdUcmltbWFibGVDb250ZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMThkOGI4OTcy
MDM3Li5mODRiZWJiNjI0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpyZXNldEdlb21ldHJ5Rm9yQ2xhbXBlZENvbnRlbnQoY29uc3QgSW5saW5lSXRl
bVJhbgogICAgIGF1dG8mIGlubGluZUl0ZW1MaXN0ID0gaW5saW5lQ29udGVudENhY2hlKCkuaW5s
aW5lSXRlbXMoKS5jb250ZW50KCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSBuZWVkc0Rpc3Bs
YXlDb250ZW50UmFuZ2Uuc3RhcnRJbmRleCgpOyBpbmRleCA8IG5lZWRzRGlzcGxheUNvbnRlbnRS
YW5nZS5lbmRJbmRleCgpOyArK2luZGV4KSB7CiAgICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBp
bmxpbmVJdGVtTGlzdFtpbmRleF07Ci0gICAgICAgIGF1dG8gaGFzQm94R2VvbWV0cnkgPSBpbmxp
bmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0Zsb2F0KCkgfHwgaW5saW5lSXRlbS5pc0hh
cmRMaW5lQnJlYWsoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKTsKKyAgICAgICAg
YXV0byBoYXNCb3hHZW9tZXRyeSA9IGlubGluZUl0ZW0uaXNBdG9taWNJbmxpbmVCb3goKSB8fCBp
bmxpbmVJdGVtLmlzRmxvYXQoKSB8fCBpbmxpbmVJdGVtLmlzSGFyZExpbmVCcmVhaygpIHx8IGlu
bGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpOwogICAgICAgICBpZiAoIWhhc0JveEdlb21ldHJ5
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZ2Vv
bWV0cnlGb3JCb3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
VXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcAppbmRleCA3MWI5ZDg4OTQyNjAuLjNkMGI0YmIy
OTgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3Bw
CkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmlubGluZUxl
dmVsQm94QWZmZWN0c0xpbmVCb3goY29uc3QgSW5saW5lTGV2ZWxCb3gmIGkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgaWYgKGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkpCiAgICAgICAg
IHJldHVybiBsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpID8gdHJ1ZSA6IGZvcm1hdHRp
bmdDb250ZXh0KCkucXVpcmtzKCkuaW5saW5lQm94QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2ZWxC
b3gpOwotICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkpCisg
ICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lQm94KCkpCiAgICAgICAgIHJldHVy
biAhaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuaXNSdWJ5QW5ub3RhdGlvbkJveCgpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTQwNiw4ICs0MDYsOCBAQCBib29sIElubGluZUZvcm1hdHRp
bmdVdGlsczo6aXNBdFNvZnRXcmFwT3Bwb3J0dW5pdHkoY29uc3QgSW5saW5lSXRlbSYgcHJldmlv
dXMsCiAgICAgLy8gZS5nLiBbaW5saW5lIGJveCBzdGFydF1bcHJpb3JfY29udGludW91c19jb250
ZW50XVtpbmxpbmUgYm94IGVuZF0gKDxzcGFuPnByaW9yX2NvbnRpbnVvdXNfY29udGVudDwvc3Bh
bj4pCiAgICAgLy8gQW4gaW5jb21pbmcgPGltZz4gYm94IHdvdWxkIGVuYWJsZSB1cyB0byBjb21t
aXQgdGhlICI8c3Bhbj5wcmlvcl9jb250aW51b3VzX2NvbnRlbnQ8L3NwYW4+IiBjb250ZW50CiAg
ICAgLy8gYnV0IGFuIGluY29taW5nIHRleHQgY29udGVudCB3b3VsZCBub3QgbmVjZXNzYXJpbHku
Ci0gICAgQVNTRVJUKHByZXZpb3VzLmlzVGV4dCgpIHx8IHByZXZpb3VzLmlzQm94KCkgfHwgcHJl
dmlvdXMubGF5b3V0Qm94KCkuaXNSdWJ5SW5saW5lQm94KCkpOwotICAgIEFTU0VSVChuZXh0Lmlz
VGV4dCgpIHx8IG5leHQuaXNCb3goKSB8fCBuZXh0LmxheW91dEJveCgpLmlzUnVieUlubGluZUJv
eCgpKTsKKyAgICBBU1NFUlQocHJldmlvdXMuaXNUZXh0KCkgfHwgcHJldmlvdXMuaXNBdG9taWNJ
bmxpbmVCb3goKSB8fCBwcmV2aW91cy5sYXlvdXRCb3goKS5pc1J1YnlJbmxpbmVCb3goKSk7Cisg
ICAgQVNTRVJUKG5leHQuaXNUZXh0KCkgfHwgbmV4dC5pc0F0b21pY0lubGluZUJveCgpIHx8IG5l
eHQubGF5b3V0Qm94KCkuaXNSdWJ5SW5saW5lQm94KCkpOwogCiAgICAgaWYgKHByZXZpb3VzLmxh
eW91dEJveCgpLmlzUnVieUlubGluZUJveCgpIHx8IG5leHQubGF5b3V0Qm94KCkuaXNSdWJ5SW5s
aW5lQm94KCkpCiAgICAgICAgIHJldHVybiBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmlzQXRTb2Z0
V3JhcE9wcG9ydHVuaXR5KHByZXZpb3VzLCBuZXh0KTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBib29s
IElubGluZUZvcm1hdHRpbmdVdGlsczo6aXNBdFNvZnRXcmFwT3Bwb3J0dW5pdHkoY29uc3QgSW5s
aW5lSXRlbSYgcHJldmlvdXMsCiAgICAgICAgIC8vIEZJWE1FOiBTSG91bGQgdGhpcyBldmVyIGJl
IHRoZSBjYXNlPwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKHByZXZpb3Vz
LmlzQm94KCkgfHwgbmV4dC5pc0JveCgpKSB7CisgICAgaWYgKHByZXZpb3VzLmlzQXRvbWljSW5s
aW5lQm94KCkgfHwgbmV4dC5pc0F0b21pY0lubGluZUJveCgpKSB7CiAgICAgICAgIC8vIFt0ZXh0
XVtpbmxpbmUgYm94IHN0YXJ0XVtpbmxpbmUgYm94IGVuZF1baW5saW5lIGJveF0gKHRleHQ8c3Bh
bj48L3NwYW4+PGltZz4pIDogdGhlcmUncyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBiZXR3ZWVu
IHRoZSBbdGV4dF0gYW5kIFtpbWddLgogICAgICAgICAvLyBUaGUgbGluZSBicmVha2luZyBiZWhh
dmlvciBvZiBhIHJlcGxhY2VkIGVsZW1lbnQgb3Igb3RoZXIgYXRvbWljIGlubGluZSBpcyBlcXVp
dmFsZW50IHRvIGFuIGlkZW9ncmFwaGljIGNoYXJhY3Rlci4KICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC00OTcsNyArNDk3LDcgQEAgc2l6ZV90IElubGluZUZvcm1hdHRpbmdVdGlsczo6bmV4dFdy
YXBPcHBvcnR1bml0eShzaXplX3Qgc3RhcnRJbmRleCwgY29uc3QgSW5saW4KICAgICAgICAgICAg
IC8vIFRoaXMgaXRlbSBpcyBpbnZpc2libGUgdG8gbGluZSBicmVha2luZy4gTmVlZCB0byBwcmV0
ZW5kIGl0J3Mgbm90IGhlcmUuCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAg
ICAgICBBU1NFUlQoY3VycmVudEl0ZW0uaXNUZXh0KCkgfHwgY3VycmVudEl0ZW0uaXNCb3goKSB8
fCBjdXJyZW50SXRlbS5pc0Zsb2F0KCkgfHwgY3VycmVudEl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5
SW5saW5lQm94KCkpOworICAgICAgICBBU1NFUlQoY3VycmVudEl0ZW0uaXNUZXh0KCkgfHwgY3Vy
cmVudEl0ZW0uaXNBdG9taWNJbmxpbmVCb3goKSB8fCBjdXJyZW50SXRlbS5pc0Zsb2F0KCkgfHwg
Y3VycmVudEl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5SW5saW5lQm94KCkpOwogICAgICAgICBpZiAo
Y3VycmVudEl0ZW0uaXNGbG9hdCgpKSB7CiAgICAgICAgICAgICAvLyBXaGlsZSBmbG9hdHMgYXJl
IG5vdCBwYXJ0IG9mIHRoZSBpbmxpbmUgY29udGVudCBhbmQgdGhleSBhcmUgbm90IHN1cHBvc2Vk
IHRvIGludHJvZHVjZSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGllcywKICAgICAgICAgICAgIC8vIGUu
Zy4gW3RleHRdW2Zsb2F0IGJveF1bZmxvYXQgYm94XVt0ZXh0XVtmbG9hdCBib3hdW3RleHRdIGlz
IGVzc2VudGlhbGx5IGp1c3QgW3RleHRdW3RleHRdW3RleHRdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVt
LmgKaW5kZXggNjFiNmZjMTRkN2QxLi4zZTE1MjkwM2E4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJ
dGVtLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgICAgICBIYXJkTGluZUJyZWFrLAog
ICAgICAgICBTb2Z0TGluZUJyZWFrLAogICAgICAgICBXb3JkQnJlYWtPcHBvcnR1bml0eSwKLSAg
ICAgICAgQm94LAorICAgICAgICBBdG9taWNJbmxpbmVCb3gsCiAgICAgICAgIElubGluZUJveFN0
YXJ0LAogICAgICAgICBJbmxpbmVCb3hFbmQsCiAgICAgICAgIEZsb2F0LApAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGZpcnN0TGluZVN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbGF5b3V0Qm94KCkuZmlyc3RMaW5lU3R5bGUoKTsgfQogCiAgICAgYm9vbCBp
c1RleHQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6VGV4dDsgfQotICAgIGJvb2wg
aXNCb3goKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6Qm94OyB9CisgICAgYm9vbCBp
c0F0b21pY0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBUeXBlOjpBdG9taWNJ
bmxpbmVCb3g7IH0KICAgICBib29sIGlzRmxvYXQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0g
VHlwZTo6RmxvYXQ7IH0KICAgICBib29sIGlzTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gaXNT
b2Z0TGluZUJyZWFrKCkgfHwgaXNIYXJkTGluZUJyZWFrKCk7IH0KICAgICBib29sIGlzV29yZEJy
ZWFrT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6V29yZEJyZWFr
T3Bwb3J0dW5pdHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3Bw
CmluZGV4IDg3NDc4NjY2YjE0Mi4uZjE5ZTk2NjFkZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUl0ZW1zQnVpbGRlci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIElubGluZUl0
ZW1zQnVpbGRlcjo6YnVpbGQoSW5saW5lSXRlbVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24pCiAgICAg
ICAgIGVsc2UgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKICAgICAgICAgICAgICsr
aW5saW5lQm94RW5kOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gaGFzVG9CZVVu
aXF1ZUxheW91dEJveCA9IGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzRmxvYXQo
KSB8fCBpbmxpbmVJdGVtLmlzSGFyZExpbmVCcmVhaygpOworICAgICAgICAgICAgYXV0byBoYXNU
b0JlVW5pcXVlTGF5b3V0Qm94ID0gaW5saW5lSXRlbS5pc0F0b21pY0lubGluZUJveCgpIHx8IGlu
bGluZUl0ZW0uaXNGbG9hdCgpIHx8IGlubGluZUl0ZW0uaXNIYXJkTGluZUJyZWFrKCk7CiAgICAg
ICAgICAgICBpZiAoaGFzVG9CZVVuaXF1ZUxheW91dEJveCkKICAgICAgICAgICAgICAgICBBU1NF
UlQoaW5saW5lTGV2ZWxJdGVtcy5hZGQoJmlubGluZUl0ZW0ubGF5b3V0Qm94KCkpLmlzTmV3RW50
cnkpOwogICAgICAgICB9CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBJbmxpbmVJdGVtc0J1aWxk
ZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyhJbmxpbmVJdGVtTGlzdCYgaW5saW5lSXRlbUxpc3QsIElu
bGkKICAgICAgICAgICAgICAgICBpbmxpbmVJdGVtTGlzdC5hcHBlbmQoeyBsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6Ok9wYXF1ZSB9KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byog
aW5saW5lVGV4dEJveCA9IGR5bmFtaWNEb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gu
Z2V0KCkpKQogICAgICAgICAgICAgICAgIGhhbmRsZVRleHRDb250ZW50KCppbmxpbmVUZXh0Qm94
LCBpbmxpbmVJdGVtTGlzdCwgcGFydGlhbENvbnRlbnRPZmZzZXQoKmlubGluZVRleHRCb3gpKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC0+aXNBdG9taWNJbmxpbmVMZXZlbEJveCgp
IHx8IGxheW91dEJveC0+aXNMaW5lQnJlYWtCb3goKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGxh
eW91dEJveC0+aXNBdG9taWNJbmxpbmVCb3goKSB8fCBsYXlvdXRCb3gtPmlzTGluZUJyZWFrQm94
KCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlSW5saW5lTGV2ZWxCb3gobGF5b3V0Qm94LCBpbmxp
bmVJdGVtTGlzdCk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3gtPmlzSW5saW5lQm94
KCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlSW5saW5lQm94RW5kKGxheW91dEJveCwgaW5saW5l
SXRlbUxpc3QpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBidWlsZEJp
ZGlQYXJhZ3JhcGgoY29uc3QgUmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgY29uc3QgSW5saW5lCiAg
ICAgICAgICAgICAgICAgaGFuZGxlQmlkaVBhcmFncmFwaFN0YXJ0KHBhcmFncmFwaENvbnRlbnRC
dWlsZGVyLCBpbmxpbmVJdGVtT2Zmc2V0TGlzdCwgYmlkaUNvbnRleHRTdGFjayk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoaW5saW5lSXRlbS5pc0JveCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaW5s
aW5lSXRlbS5pc0F0b21pY0lubGluZUJveCgpKSB7CiAgICAgICAgICAgICBpbmxpbmVJdGVtT2Zm
c2V0TGlzdC5hcHBlbmQoeyBwYXJhZ3JhcGhDb250ZW50QnVpbGRlci5sZW5ndGgoKSB9KTsKICAg
ICAgICAgICAgIHBhcmFncmFwaENvbnRlbnRCdWlsZGVyLmFwcGVuZChvYmplY3RSZXBsYWNlbWVu
dENoYXJhY3Rlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoaW5saW5lSXRlbS5pc0lubGluZUJveFN0
YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKSB7CkBAIC04NzEsOSArODcxLDkg
QEAgdm9pZCBJbmxpbmVJdGVtc0J1aWxkZXI6OmhhbmRsZUlubGluZUxldmVsQm94KGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBJbmxpbmVJdGVtTGkKICAgICBpZiAobGF5b3V0Qm94LmlzUnVieUFubm90
YXRpb25Cb3goKSkKICAgICAgICAgcmV0dXJuIGlubGluZUl0ZW1MaXN0LmFwcGVuZCh7IGxheW91
dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6T3BhcXVlIH0pOwogCi0gICAgaWYgKGxheW91dEJveC5p
c0F0b21pY0lubGluZUxldmVsQm94KCkpIHsKKyAgICBpZiAobGF5b3V0Qm94LmlzQXRvbWljSW5s
aW5lQm94KCkpIHsKICAgICAgICAgbV9pc1RleHRBbmRGb3JjZWRMaW5lQnJlYWtPbmx5Q29udGVu
dCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gaW5saW5lSXRlbUxpc3QuYXBwZW5kKHsgbGF5b3V0
Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpCb3ggfSk7CisgICAgICAgIHJldHVybiBpbmxpbmVJdGVt
TGlzdC5hcHBlbmQoeyBsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkF0b21pY0lubGluZUJv
eCB9KTsKICAgICB9CiAKICAgICBpZiAobGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxldmVsQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCmluZGV4IGQwMWYzMzI5MDY3NC4uZDkzM2IwZjhj
YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMZXZlbEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
cHVibGljOgogICAgIGVudW0gY2xhc3MgTGluZVNwYW5uaW5nSW5saW5lQm94IDogYm9vbCB7IE5v
LCBZZXMgfTsKICAgICBzdGF0aWMgaW5saW5lIElubGluZUxldmVsQm94IGNyZWF0ZUlubGluZUJv
eChjb25zdCBCb3gmLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNh
bExlZnQsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMaW5lU3Bhbm5pbmdJbmxpbmVC
b3ggPSBMaW5lU3Bhbm5pbmdJbmxpbmVCb3g6Ok5vKTsKICAgICBzdGF0aWMgaW5saW5lIElubGlu
ZUxldmVsQm94IGNyZWF0ZVJvb3RJbmxpbmVCb3goY29uc3QgQm94JiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxXaWR0aCk7Ci0gICAgc3RhdGljIGlubGluZSBJbmxpbmVMZXZlbEJveCBjcmVhdGVBdG9taWNJ
bmxpbmVMZXZlbEJveChjb25zdCBCb3gmLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91
dFVuaXQgbG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKKyAgICBz
dGF0aWMgaW5saW5lIElubGluZUxldmVsQm94IGNyZWF0ZUF0b21pY0lubGluZUJveChjb25zdCBC
b3gmLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQsIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICBzdGF0aWMgaW5saW5lIElubGluZUxl
dmVsQm94IGNyZWF0ZUxpbmVCcmVha0JveChjb25zdCBCb3gmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQpOwogICAgIHN0YXRpYyBpbmxpbmUgSW5saW5l
TGV2ZWxCb3ggY3JlYXRlR2VuZXJpY0lubGluZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IFJl
bmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7CiAKQEAgLTg1LDIyICs4
NSwyMiBAQCBwdWJsaWM6CiAgICAgVGV4dEVkZ2UgbGluZUZpdEVkZ2UoKSBjb25zdCB7IHJldHVy
biBtX3N0eWxlLmxpbmVGaXRFZGdlOyB9CiAgICAgSW5saW5lTGF5b3V0VW5pdCBpbmxpbmVCb3hD
b250ZW50T2Zmc2V0Rm9yVGV4dEJveFRyaW0oKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveENv
bnRlbnRPZmZzZXRGb3JUZXh0Qm94VHJpbTsgfQogCi0gICAgYm9vbCBoYXNUZXh0RW1waGFzaXMo
KSBjb25zdCB7IHJldHVybiAoaGFzQ29udGVudCgpIHx8IGlzQXRvbWljSW5saW5lTGV2ZWxCb3go
KSkgJiYgbV90ZXh0RW1waGFzaXMuaGFzX3ZhbHVlKCk7IH07CisgICAgYm9vbCBoYXNUZXh0RW1w
aGFzaXMoKSBjb25zdCB7IHJldHVybiAoaGFzQ29udGVudCgpIHx8IGlzQXRvbWljSW5saW5lQm94
KCkpICYmIG1fdGV4dEVtcGhhc2lzLmhhc192YWx1ZSgpOyB9OwogICAgIHN0ZDo6b3B0aW9uYWw8
SW5saW5lTGF5b3V0VW5pdD4gdGV4dEVtcGhhc2lzQWJvdmUoKSBjb25zdCB7IHJldHVybiBoYXNU
ZXh0RW1waGFzaXMoKSA/IHN0ZDo6b3B0aW9uYWwgeyBtX3RleHRFbXBoYXNpcy0+YWJvdmUgfSA6
IHN0ZDo6bnVsbG9wdDsgfQogICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gdGV4
dEVtcGhhc2lzQmVsb3coKSBjb25zdCB7IHJldHVybiBoYXNUZXh0RW1waGFzaXMoKSA/IHN0ZDo6
b3B0aW9uYWwgeyBtX3RleHRFbXBoYXNpcy0+YmVsb3cgfSA6IHN0ZDo6bnVsbG9wdDsgfQogCiAg
ICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpJbmxp
bmVCb3ggfHwgaXNSb290SW5saW5lQm94KCkgfHwgaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3goKTsg
fQogICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5
cGU6OlJvb3RJbmxpbmVCb3g7IH0KICAgICBib29sIGlzTGluZVNwYW5uaW5nSW5saW5lQm94KCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkxpbmVTcGFubmluZ0lubGluZUJveDsgfQot
ICAgIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJveDsgfQotICAgIGJvb2wgaXNMaXN0TWFya2VyKCkg
Y29uc3QgeyByZXR1cm4gaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpICYmIGxheW91dEJveCgpLmlz
TGlzdE1hcmtlckJveCgpOyB9CisgICAgYm9vbCBpc0F0b21pY0lubGluZUJveCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpBdG9taWNJbmxpbmVCb3g7IH0KKyAgICBib29sIGlzTGlz
dE1hcmtlcigpIGNvbnN0IHsgcmV0dXJuIGlzQXRvbWljSW5saW5lQm94KCkgJiYgbGF5b3V0Qm94
KCkuaXNMaXN0TWFya2VyQm94KCk7IH0KICAgICBib29sIGlzTGluZUJyZWFrQm94KCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IFR5cGU6OkxpbmVCcmVha0JveDsgfQogCiAgICAgZW51bSBjbGFz
cyBUeXBlIDogdWludDhfdCB7CiAgICAgICAgIElubGluZUJveCAgICAgICAgICAgICA9IDEgPDwg
MCwKICAgICAgICAgTGluZVNwYW5uaW5nSW5saW5lQm94ID0gMSA8PCAxLAogICAgICAgICBSb290
SW5saW5lQm94ICAgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEF0b21pY0lubGluZUxldmVsQm94
ICA9IDEgPDwgMywKKyAgICAgICAgQXRvbWljSW5saW5lQm94ICAgICAgID0gMSA8PCAzLAogICAg
ICAgICBMaW5lQnJlYWtCb3ggICAgICAgICAgPSAxIDw8IDQsCiAgICAgICAgIEdlbmVyaWNJbmxp
bmVMZXZlbEJveCA9IDEgPDwgNQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveElubGluZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxl
dmVsQm94SW5saW5lcy5oCmluZGV4IGNlY2Q5MThiYjA0OS4uZWE3MWI2M2M4ZTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMZXZlbEJveElubGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveElubGluZXMuaApAQCAtNDUsOSArNDUsOSBA
QCBpbmxpbmUgSW5saW5lTGV2ZWxCb3g6OklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjb25zdCBSZW5kZXJTdHlsZSYgcwogICAgICAgICBtX3N0eWxlLnZlcnRpY2FsQWxpZ25t
ZW50LmJhc2VsaW5lT2Zmc2V0ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS52ZXJ0aWNhbEFs
aWduTGVuZ3RoKCksIHByZWZlcnJlZExpbmVIZWlnaHQoKSk7CiB9CiAKLWlubGluZSBJbmxpbmVM
ZXZlbEJveCBJbmxpbmVMZXZlbEJveDo6Y3JlYXRlQXRvbWljSW5saW5lTGV2ZWxCb3goY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCitpbmxpbmUgSW5s
aW5lTGV2ZWxCb3ggSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUF0b21pY0lubGluZUJveChjb25zdCBC
b3gmIGxheW91dEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKLSAgICByZXR1
cm4geyBsYXlvdXRCb3gsIHN0eWxlLCBsb2dpY2FsTGVmdCwgeyBsb2dpY2FsV2lkdGgsIHsgfSB9
LCBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJveCB9OworICAgIHJldHVybiB7IGxheW91dEJveCwg
c3R5bGUsIGxvZ2ljYWxMZWZ0LCB7IGxvZ2ljYWxXaWR0aCwgeyB9IH0sIFR5cGU6OkF0b21pY0lu
bGluZUJveCB9OwogfQogCiBpbmxpbmUgSW5saW5lTGV2ZWxCb3ggSW5saW5lTGV2ZWxCb3g6OmNy
ZWF0ZUdlbmVyaWNJbmxpbmVMZXZlbEJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KQpAQCAtNzUsNyAr
NzUsNyBAQCBpbmxpbmUgYm9vbCBJbmxpbmVMZXZlbEJveDo6bWF5U3RyZXRjaExpbmVCb3goKSBj
b25zdAogICAgIGlmIChpc1Jvb3RJbmxpbmVCb3goKSkKICAgICAgICAgcmV0dXJuIG1fc3R5bGUu
bGluZUJveENvbnRhaW4uY29udGFpbnNBbnkoeyBMaW5lQm94Q29udGFpbjo6QmxvY2ssIExpbmVC
b3hDb250YWluOjpJbmxpbmUgfSkgfHwgKGhhc0NvbnRlbnQoKSAmJiBtX3N0eWxlLmxpbmVCb3hD
b250YWluLmNvbnRhaW5zQW55KHsgTGluZUJveENvbnRhaW46OkluaXRpYWxMZXR0ZXIsIExpbmVC
b3hDb250YWluOjpGb250LCBMaW5lQm94Q29udGFpbjo6R2x5cGhzIH0pKTsKIAotICAgIGlmIChp
c0F0b21pY0lubGluZUxldmVsQm94KCkpCisgICAgaWYgKGlzQXRvbWljSW5saW5lQm94KCkpCiAg
ICAgICAgIHJldHVybiBtX3N0eWxlLmxpbmVCb3hDb250YWluLmNvbnRhaW5zKExpbmVCb3hDb250
YWluOjpSZXBsYWNlZCk7CiAKICAgICBpZiAoaXNJbmxpbmVCb3goKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lLmNwcAppbmRleCA2NTAzYzg4MzY5YmQuLjA5ZmU5YjZlNzJkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIExpbmU6OnJlc2V0
QmlkaUxldmVsRm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2ZWwgcm9vdEJpZGlMZXZlbCkK
ICAgICBhdXRvIHRyYWlsaW5nTm9uV2hpdGVzcGFjZU9ubHlSdW5JbmRleCA9IHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiB7IH07CiAgICAgZm9yIChhdXRvIGluZGV4ID0gbV9ydW5zLnNpemUoKTsgaW5k
ZXgtLTspIHsKICAgICAgICAgYXV0byYgcnVuID0gbV9ydW5zW2luZGV4XTsKLSAgICAgICAgaWYg
KHJ1bi5pc0JveCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpIHx8IChydW4uaXNUZXh0KCkgJiYgIXJ1
bi5oYXNUcmFpbGluZ1doaXRlc3BhY2UoKSkpCisgICAgICAgIGlmIChydW4uaXNBdG9taWNJbmxp
bmVCb3goKSB8fCBydW4uaXNMaW5lQnJlYWsoKSB8fCAocnVuLmlzVGV4dCgpICYmICFydW4uaGFz
VHJhaWxpbmdXaGl0ZXNwYWNlKCkpKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYg
KCFydW4uaGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCkpIHsKQEAgLTI3OSw4ICsyNzksOCBAQCB2b2lk
IExpbmU6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIElubGluZQogICAgICAgICBhcHBlbmRJbmxpbmVCb3hTdGFydChpbmxpbmVJ
dGVtLCBzdHlsZSwgbG9naWNhbFdpZHRoKTsKICAgICBlbHNlIGlmIChpbmxpbmVJdGVtLmlzSW5s
aW5lQm94RW5kKCkpCiAgICAgICAgIGFwcGVuZElubGluZUJveEVuZChpbmxpbmVJdGVtLCBzdHls
ZSwgbG9naWNhbFdpZHRoKTsKLSAgICBlbHNlIGlmIChpbmxpbmVJdGVtLmlzQm94KCkpCi0gICAg
ICAgIGFwcGVuZEdlbmVyaWNJbmxpbmVMZXZlbEJveChpbmxpbmVJdGVtLCBzdHlsZSwgbG9naWNh
bFdpZHRoKTsKKyAgICBlbHNlIGlmIChpbmxpbmVJdGVtLmlzQXRvbWljSW5saW5lQm94KCkpCisg
ICAgICAgIGFwcGVuZEF0b21pY0lubGluZUJveChpbmxpbmVJdGVtLCBzdHlsZSwgbG9naWNhbFdp
ZHRoKTsKICAgICBlbHNlIGlmIChpbmxpbmVJdGVtLmlzT3BhcXVlKCkpIHsKICAgICAgICAgQVNT
RVJUKCFsb2dpY2FsV2lkdGgpOwogICAgICAgICBhcHBlbmRPcGFxdWVCb3goaW5saW5lSXRlbSwg
c3R5bGUpOwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQo
Y29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZVRleHRJdGVtLCBjb25zdCBSZW5kZXJTCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIC8vIFRoaXMgY29udGVudCBpcyBjb2xsYXBz
aWJsZS4gTGV0J3MgY2hlY2sgaWYgdGhlIGxhc3QgaXRlbSBpcyBjb2xsYXBzZWQuCiAgICAgICAg
IGZvciAoYXV0byYgcnVuIDogbWFrZVJldmVyc2VkUmFuZ2UobV9ydW5zKSkgewotICAgICAgICAg
ICAgaWYgKHJ1bi5pc0JveCgpKQorICAgICAgICAgICAgaWYgKHJ1bi5pc0F0b21pY0lubGluZUJv
eCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdGV4dC0zLyN3aGl0ZS1zcGFjZS1waGFzZS0xCiAgICAg
ICAgICAgICAvLyBBbnkgY29sbGFwc2libGUgc3BhY2UgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFu
b3RoZXIgY29sbGFwc2libGUgc3BhY2XigJRldmVuIG9uZSBvdXRzaWRlIHRoZSBib3VuZGFyeSBv
ZiB0aGUgaW5saW5lIGNvbnRhaW5pbmcgdGhhdCBzcGFjZSwKQEAgLTU1NCw3ICs1NTQsNyBAQCB2
b2lkIExpbmU6OmFwcGVuZFRleHRGYXN0KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0
SXRlbSwgY29uc3QgUmVuZGVyU3R5bAogICAgICAgICBtX3RyYWlsaW5nU29mdEh5cGhlbldpZHRo
ID0gc3R5bGUuZm9udENhc2NhZGUoKS53aWR0aChUZXh0UnVuIHsgU3RyaW5nVmlldyB7IHN0eWxl
Lmh5cGhlblN0cmluZygpIH0gfSk7CiB9CiAKLXZvaWQgTGluZTo6YXBwZW5kR2VuZXJpY0lubGlu
ZUxldmVsQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgSW5saW5lTGF5b3V0VW5pdCBtYXJnaW5Cb3hMb2dpY2FsV2lkdGgpCit2b2lkIExp
bmU6OmFwcGVuZEF0b21pY0lubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElubGluZUxheW91dFVuaXQgbWFyZ2luQm94TG9naWNh
bFdpZHRoKQogewogICAgIHJlc2V0VHJhaWxpbmdDb250ZW50KCk7CiAgICAgLy8gRG8gbm90IGxl
dCBuZWdhdGl2ZSBtYXJnaW4gbWFrZSB0aGUgY29udGVudCBzaG9ydGVyIHRoYW4gaXQgYWxyZWFk
eSBpcy4KQEAgLTc1MiwxMCArNzUyLDEwIEBAIGlubGluZSBzdGF0aWMgTGluZTo6UnVuOjpUeXBl
IHRvTGluZVJ1blR5cGUoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICAgICAgcmV0
dXJuIExpbmU6OlJ1bjo6VHlwZTo6SGFyZExpbmVCcmVhazsKICAgICBjYXNlIElubGluZUl0ZW06
OlR5cGU6OldvcmRCcmVha09wcG9ydHVuaXR5OgogICAgICAgICByZXR1cm4gTGluZTo6UnVuOjpU
eXBlOjpXb3JkQnJlYWtPcHBvcnR1bml0eTsKLSAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OkJv
eDoKKyAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OkF0b21pY0lubGluZUJveDoKICAgICAgICAg
aWYgKGlubGluZUl0ZW0ubGF5b3V0Qm94KCkuaXNMaXN0TWFya2VyQm94KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudEJveD4oaW5saW5lSXRlbS5sYXlvdXRCb3goKSkuaXNM
aXN0TWFya2VyT3V0c2lkZSgpID8gTGluZTo6UnVuOjpUeXBlOjpMaXN0TWFya2VyT3V0c2lkZSA6
IExpbmU6OlJ1bjo6VHlwZTo6TGlzdE1hcmtlckluc2lkZTsKLSAgICAgICAgcmV0dXJuIExpbmU6
OlJ1bjo6VHlwZTo6R2VuZXJpY0lubGluZUxldmVsQm94OworICAgICAgICByZXR1cm4gTGluZTo6
UnVuOjpUeXBlOjpBdG9taWNJbmxpbmVCb3g7CiAgICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpJ
bmxpbmVCb3hTdGFydDoKICAgICAgICAgcmV0dXJuIExpbmU6OlJ1bjo6VHlwZTo6SW5saW5lQm94
U3RhcnQ7CiAgICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpJbmxpbmVCb3hFbmQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lLmgKaW5kZXggMWEzYjg2MTYwZDNiLi4yMDRlYTdjYzE1MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
SGFyZExpbmVCcmVhaywKICAgICAgICAgICAgIFNvZnRMaW5lQnJlYWssCiAgICAgICAgICAgICBX
b3JkQnJlYWtPcHBvcnR1bml0eSwKLSAgICAgICAgICAgIEdlbmVyaWNJbmxpbmVMZXZlbEJveCwK
KyAgICAgICAgICAgIEF0b21pY0lubGluZUJveCwKICAgICAgICAgICAgIExpc3RNYXJrZXJJbnNp
ZGUsCiAgICAgICAgICAgICBMaXN0TWFya2VyT3V0c2lkZSwKICAgICAgICAgICAgIElubGluZUJv
eFN0YXJ0LApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNUZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlRleHQgfHwgaXNXb3JkU2VwYXJhdG9yKCkg
fHwgaXNOb25CcmVha2luZ1NwYWNlKCk7IH0KICAgICAgICAgYm9vbCBpc05vbkJyZWFraW5nU3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Tm9uQnJlYWtpbmdTcGFjZTsgfQog
ICAgICAgICBib29sIGlzV29yZFNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBU
eXBlOjpXb3JkU2VwYXJhdG9yOyB9Ci0gICAgICAgIGJvb2wgaXNCb3goKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gVHlwZTo6R2VuZXJpY0lubGluZUxldmVsQm94OyB9CisgICAgICAgIGJvb2wg
aXNBdG9taWNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QXRvbWlj
SW5saW5lQm94OyB9CiAgICAgICAgIGJvb2wgaXNMaXN0TWFya2VyKCkgY29uc3QgeyByZXR1cm4g
aXNMaXN0TWFya2VySW5zaWRlKCkgfHwgaXNMaXN0TWFya2VyT3V0c2lkZSgpOyB9CiAgICAgICAg
IGJvb2wgaXNMaXN0TWFya2VySW5zaWRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6
Okxpc3RNYXJrZXJJbnNpZGU7IH0KICAgICAgICAgYm9vbCBpc0xpc3RNYXJrZXJPdXRzaWRlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6Okxpc3RNYXJrZXJPdXRzaWRlOyB9CkBAIC0x
MTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgICAgICBib29sIGlzSW5saW5lQm94RW5kKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OklubGluZUJveEVuZDsgfQogICAgICAgICBib29s
IGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6Ok9wYXF1ZTsgfQogCi0g
ICAgICAgIGJvb2wgaXNDb250ZW50ZnVsKCkgY29uc3QgeyByZXR1cm4gKGlzVGV4dCgpICYmIHRl
eHRDb250ZW50KCktPmxlbmd0aCkgfHwgaXNCb3goKSB8fCBpc0xpbmVCcmVhaygpIHx8IGlzTGlz
dE1hcmtlcigpOyB9CisgICAgICAgIGJvb2wgaXNDb250ZW50ZnVsKCkgY29uc3QgeyByZXR1cm4g
KGlzVGV4dCgpICYmIHRleHRDb250ZW50KCktPmxlbmd0aCkgfHwgaXNBdG9taWNJbmxpbmVCb3go
KSB8fCBpc0xpbmVCcmVhaygpIHx8IGlzTGlzdE1hcmtlcigpOyB9CiAgICAgICAgIGJvb2wgaXNH
ZW5lcmF0ZWQoKSBjb25zdCB7IHJldHVybiBpc0xpc3RNYXJrZXIoKTsgfQogICAgICAgICBzdGF0
aWMgYm9vbCBpc0NvbnRlbnRmdWxPckhhc0RlY29yYXRpb24oY29uc3QgUnVuJiwgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKIApAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBsYXN0UnVuTG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV9ydW5zLmlzRW1wdHkoKSA/IDAuMGYgOiBtX3J1bnMubGFzdCgpLmxvZ2ljYWxSaWdodCgpOyB9
CiAKICAgICB2b2lkIGFwcGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiwgY29u
c3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7Ci0gICAgdm9p
ZCBhcHBlbmRHZW5lcmljSW5saW5lTGV2ZWxCb3goY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IFJl
bmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBtYXJnaW5Cb3hMb2dpY2FsV2lkdGgpOworICAg
IHZvaWQgYXBwZW5kQXRvbWljSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbWFyZ2luQm94TG9naWNhbFdpZHRoKTsKICAgICB2
b2lkIGFwcGVuZElubGluZUJveFN0YXJ0KGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5kZXJT
dHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICB2b2lkIGFwcGVuZElu
bGluZUJveEVuZChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCBhcHBlbmRMaW5lQnJlYWsoY29uc3Qg
SW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3guY3BwCmluZGV4IGE1ODUwZmUxMDAyYy4uZmMwOGJkMDExMzJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQm94LmNwcApAQCAtMTA2LDkgKzEwNiw5IEBAIElubGluZVJlY3QgTGlu
ZUJveDo6bG9naWNhbFJlY3RGb3JJbmxpbmVMZXZlbEJveChjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKICAgICByZXR1cm4gSW5saW5lUmVjdCB7IGlubGluZUxldmVsQm94QWJzb2x1dGVUb3Ao
KmlubGluZUJveCksIGlubGluZUJveExvZ2ljYWxSZWN0LmxlZnQoKSwgaW5saW5lQm94TG9naWNh
bFJlY3Qud2lkdGgoKSwgaW5saW5lQm94TG9naWNhbFJlY3QuaGVpZ2h0KCkgfTsKIH0KIAotSW5s
aW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsQm9yZGVyQm94Rm9yQXRvbWljSW5saW5lTGV2ZWxCb3go
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEJveEdlb21ldHJ5JiBib3hHZW9tZXRyeSkgY29u
c3QKK0lubGluZVJlY3QgTGluZUJveDo6bG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUJv
eChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94R2VvbWV0cnkmIGJveEdlb21ldHJ5KSBj
b25zdAogewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKTsK
KyAgICBBU1NFUlQobGF5b3V0Qm94LmlzQXRvbWljSW5saW5lQm94KCkpOwogICAgIGF1dG8gbG9n
aWNhbFJlY3QgPSBsb2dpY2FsUmVjdEZvcklubGluZUxldmVsQm94KGxheW91dEJveCk7CiAgICAg
Ly8gSW5saW5lIGxldmVsIGJveGVzIHVzZSB0aGVpciBtYXJnaW4gYm94IGZvciB2ZXJ0aWNhbCBh
bGlnbm1lbnQuIExldCdzIGNvdmVydCB0aGVtIHRvIGJvcmRlciBib3hlcy4KICAgICBsb2dpY2Fs
UmVjdC5tb3ZlVmVydGljYWxseShib3hHZW9tZXRyeS5tYXJnaW5CZWZvcmUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQm94LmgKaW5kZXggMmI0MTM5YWQwZGUwLi43YjI1ZDMzNDMwMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmgKQEAgLTY0LDEzICs2NCwxMyBAQCBwdWJsaWM6
CiAgICAgLy8gTm90ZSB0aGF0IHRoZSBsaW5lIGNhbiBoYXZlIG1hbnkgaW5saW5lIGJveGVzIGFu
ZCBiZSAiZW1wdHkiIHRoZSBzYW1lIHRpbWUgZS5nLiA8ZGl2PjxzcGFuPjwvc3Bhbj48c3Bhbj48
L3NwYW4+PC9kaXY+CiAgICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXND
b250ZW50OyB9CiAgICAgYm9vbCBoYXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2JveFR5
cGVzLmNvbnRhaW5zKElubGluZUxldmVsQm94OjpUeXBlOjpJbmxpbmVCb3gpOyB9Ci0gICAgYm9v
bCBoYXNOb25JbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2JveFR5cGVzLmNvbnRhaW5zQW55
KHsgSW5saW5lTGV2ZWxCb3g6OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94LCBJbmxpbmVMZXZl
bEJveDo6VHlwZTo6TGluZUJyZWFrQm94LCBJbmxpbmVMZXZlbEJveDo6VHlwZTo6R2VuZXJpY0lu
bGluZUxldmVsQm94IH0pOyB9Ci0gICAgYm9vbCBoYXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fYm94VHlwZXMuY29udGFpbnMoSW5saW5lTGV2ZWxCb3g6OlR5cGU6OkF0
b21pY0lubGluZUxldmVsQm94KTsgfQorICAgIGJvb2wgaGFzTm9uSW5saW5lQm94KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3hUeXBlcy5jb250YWluc0FueSh7IElubGluZUxldmVsQm94OjpUeXBlOjpB
dG9taWNJbmxpbmVCb3gsIElubGluZUxldmVsQm94OjpUeXBlOjpMaW5lQnJlYWtCb3gsIElubGlu
ZUxldmVsQm94OjpUeXBlOjpHZW5lcmljSW5saW5lTGV2ZWxCb3ggfSk7IH0KKyAgICBib29sIGhh
c0F0b21pY0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94VHlwZXMuY29udGFpbnMoSW5s
aW5lTGV2ZWxCb3g6OlR5cGU6OkF0b21pY0lubGluZUJveCk7IH0KIAogICAgIElubGluZVJlY3Qg
bG9naWNhbFJlY3RGb3JUZXh0UnVuKGNvbnN0IExpbmU6OlJ1biYpIGNvbnN0OwogICAgIElubGlu
ZVJlY3QgbG9naWNhbFJlY3RGb3JMaW5lQnJlYWtCb3goY29uc3QgQm94JikgY29uc3Q7CiAgICAg
SW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBt
X3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKTsgfQotICAgIElubGluZVJlY3QgbG9naWNhbEJv
cmRlckJveEZvckF0b21pY0lubGluZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdlb21l
dHJ5JikgY29uc3Q7CisgICAgSW5saW5lUmVjdCBsb2dpY2FsQm9yZGVyQm94Rm9yQXRvbWljSW5s
aW5lQm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7CiAgICAgSW5saW5l
UmVjdCBsb2dpY2FsQm9yZGVyQm94Rm9ySW5saW5lQm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdl
b21ldHJ5JikgY29uc3Q7CiAKICAgICBjb25zdCBJbmxpbmVMZXZlbEJveCogaW5saW5lTGV2ZWxC
b3hGb3IoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TGlu
ZUJveCY+KCp0aGlzKS5pbmxpbmVMZXZlbEJveEZvcihsYXlvdXRCb3gpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKaW5kZXggYjI0NzljMWFlZTc4Li40
MzUzMWNiNTI1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRl
ci5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNh
bFByb3BlcnRpZXNGb3JJbmxpbmVMZXZlbEJveChjb25zdCBMaW5lQm94JiBsaW5lQgogICAgICAg
ICBzZXRWZXJ0aWNhbFByb3BlcnRpZXMoeyBtYXJnaW5Cb3hIZWlnaHQsIHsgfSB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVM
ZXZlbEJveCgpKSB7CisgICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lQm94KCkp
IHsKICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCk7
CiAgICAgICAgIGF1dG8mIGlubGluZUxldmVsQm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4
dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgICAgIGF1dG8gbWFyZ2luQm94SGVp
Z2h0ID0gaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKTsKQEAgLTM3OSwx
MiArMzc5LDEyIEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94
ZXMoTGluZUJveCYgbGluZUJveCkKICAgICAgICAgICAgICAgICBsaW5lQm94LnBhcmVudElubGlu
ZUJveChydW4pLnNldEhhc0NvbnRlbnQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChydW4uaXNCb3goKSkgeworICAgICAgICBpZiAocnVuLmlzQXRvbWlj
SW5saW5lQm94KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGlubGluZUxldmVsQm94R2VvbWV0cnkg
PSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAgICAgICAg
ICAgbG9naWNhbExlZnQgKz0gc3RkOjptYXgoMF9sdSwgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5t
YXJnaW5TdGFydCgpKTsKLSAgICAgICAgICAgIGF1dG8gYXRvbWljSW5saW5lTGV2ZWxCb3ggPSBJ
bmxpbmVMZXZlbEJveDo6Y3JlYXRlQXRvbWljSW5saW5lTGV2ZWxCb3gobGF5b3V0Qm94LCBzdHls
ZSwgbG9naWNhbExlZnQsIGlubGluZUxldmVsQm94R2VvbWV0cnkuYm9yZGVyQm94V2lkdGgoKSk7
Ci0gICAgICAgICAgICBzZXRWZXJ0aWNhbFByb3BlcnRpZXNGb3JJbmxpbmVMZXZlbEJveChsaW5l
Qm94LCBhdG9taWNJbmxpbmVMZXZlbEJveCk7Ci0gICAgICAgICAgICBsaW5lQm94LmFkZElubGlu
ZUxldmVsQm94KFdURk1vdmUoYXRvbWljSW5saW5lTGV2ZWxCb3gpKTsKKyAgICAgICAgICAgIGF1
dG8gYXRvbWljSW5saW5lQm94ID0gSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUF0b21pY0lubGluZUJv
eChsYXlvdXRCb3gsIHN0eWxlLCBsb2dpY2FsTGVmdCwgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5i
b3JkZXJCb3hXaWR0aCgpKTsKKyAgICAgICAgICAgIHNldFZlcnRpY2FsUHJvcGVydGllc0Zvcklu
bGluZUxldmVsQm94KGxpbmVCb3gsIGF0b21pY0lubGluZUJveCk7CisgICAgICAgICAgICBsaW5l
Qm94LmFkZElubGluZUxldmVsQm94KFdURk1vdmUoYXRvbWljSW5saW5lQm94KSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAocnVuLmlzSW5saW5lQm94U3Rh
cnQoKSB8fCBydW4uaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpKSB7CkBAIC00MzcsOSAr
NDM3LDkgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhM
aW5lQm94JiBsaW5lQm94KQogICAgICAgICAgICAgaWYgKHJ1bi5pc0xpc3RNYXJrZXJPdXRzaWRl
KCkpCiAgICAgICAgICAgICAgICAgbV9vdXRzaWRlTGlzdE1hcmtlcnMuYXBwZW5kKGluZGV4KTsK
IAotICAgICAgICAgICAgYXV0byBhdG9taWNJbmxpbmVMZXZlbEJveCA9IElubGluZUxldmVsQm94
OjpjcmVhdGVBdG9taWNJbmxpbmVMZXZlbEJveChsaXN0TWFya2VyQm94LCBzdHlsZSwgbG9naWNh
bExlZnQsIGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxpc3RNYXJrZXJCb3gpLmJv
cmRlckJveFdpZHRoKCkpOwotICAgICAgICAgICAgc2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5s
aW5lTGV2ZWxCb3gobGluZUJveCwgYXRvbWljSW5saW5lTGV2ZWxCb3gpOwotICAgICAgICAgICAg
bGluZUJveC5hZGRJbmxpbmVMZXZlbEJveChXVEZNb3ZlKGF0b21pY0lubGluZUxldmVsQm94KSk7
CisgICAgICAgICAgICBhdXRvIGF0b21pY0lubGluZUJveCA9IElubGluZUxldmVsQm94OjpjcmVh
dGVBdG9taWNJbmxpbmVCb3gobGlzdE1hcmtlckJveCwgc3R5bGUsIGxvZ2ljYWxMZWZ0LCBmb3Jt
YXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsaXN0TWFya2VyQm94KS5ib3JkZXJCb3hXaWR0
aCgpKTsKKyAgICAgICAgICAgIHNldFZlcnRpY2FsUHJvcGVydGllc0ZvcklubGluZUxldmVsQm94
KGxpbmVCb3gsIGF0b21pY0lubGluZUJveCk7CisgICAgICAgICAgICBsaW5lQm94LmFkZElubGlu
ZUxldmVsQm94KFdURk1vdmUoYXRvbWljSW5saW5lQm94KSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBpZiAocnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSkg
ewpAQCAtNTg2LDEzICs1ODYsMTMgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6YWRqdXN0SWRlb2dy
YXBoaWNCYXNlbGluZUlmQXBwbGljYWJsZShMaW5lQm94JiBsaW5lQm94KQogICAgIGxpbmVCb3gu
c2V0QmFzZWxpbmVUeXBlKElkZW9ncmFwaGljQmFzZWxpbmUpOwogCiAgICAgYXV0byBhZGp1c3RM
YXlvdXRCb3VuZHNXaXRoSWRlb2dyYXBoaWNCYXNlbGluZSA9IFsmXSAoYXV0byYgaW5saW5lTGV2
ZWxCb3gpIHsKLSAgICAgICAgYXV0byBpbml0aWF0ZXNMYXlvdXRCb3VuZHNDaGFuZ2UgPSBpbmxp
bmVMZXZlbEJveC5pc0lubGluZUJveCgpIHx8IGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5l
TGV2ZWxCb3goKSB8fCBpbmxpbmVMZXZlbEJveC5pc0xpbmVCcmVha0JveCgpOworICAgICAgICBh
dXRvIGluaXRpYXRlc0xheW91dEJvdW5kc0NoYW5nZSA9IGlubGluZUxldmVsQm94LmlzSW5saW5l
Qm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVCb3goKSB8fCBpbmxpbmVMZXZl
bEJveC5pc0xpbmVCcmVha0JveCgpOwogICAgICAgICBpZiAoIWluaXRpYXRlc0xheW91dEJvdW5k
c0NoYW5nZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoaW5saW5lTGV2ZWxC
b3guaXNJbmxpbmVCb3goKSB8fCBpbmxpbmVMZXZlbEJveC5pc0xpbmVCcmVha0JveCgpIHx8IChp
bmxpbmVMZXZlbEJveC5pc0xpc3RNYXJrZXIoKSAmJiAhZG93bmNhc3Q8RWxlbWVudEJveD4oaW5s
aW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkpLmlzTGlzdE1hcmtlckltYWdlKCkpKQogICAgICAgICAg
ICAgc2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3gobGluZUJveCwgaW5saW5l
TGV2ZWxCb3gpOwotICAgICAgICBlbHNlIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGlu
ZUxldmVsQm94KCkpIHsKKyAgICAgICAgZWxzZSBpZiAoaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJ
bmxpbmVCb3goKSkgewogICAgICAgICAgICAgYXV0byBpbmxpbmVMZXZlbEJveEhlaWdodCA9IGlu
bGluZUxldmVsQm94LmxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAgIElubGluZUxheW91dFVu
aXQgaWRlb2dyYXBoaWNCYXNlbGluZSA9IHJvdW5kVG9JbnQoaW5saW5lTGV2ZWxCb3hIZWlnaHQg
LyAyKTsKICAgICAgICAgICAgIC8vIE1vdmUgdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGJ1dCBrZWVw
IHRoZSBzYW1lIGxvZ2ljYWwgaGVpZ2h0LgpAQCAtNjEyLDcgKzYxMiw3IEBAIHZvaWQgTGluZUJv
eEJ1aWxkZXI6OmFkanVzdElkZW9ncmFwaGljQmFzZWxpbmVJZkFwcGxpY2FibGUoTGluZUJveCYg
bGluZUJveCkKIAogICAgIGFkanVzdExheW91dEJvdW5kc1dpdGhJZGVvZ3JhcGhpY0Jhc2VsaW5l
KHJvb3RJbmxpbmVCb3gpOwogICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94
Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKLSAgICAgICAgaWYgKGlubGluZUxldmVsQm94
LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgeworICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3gu
aXNBdG9taWNJbmxpbmVCb3goKSkgewogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5s
aW5lTGV2ZWxCb3gubGF5b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5s
aW5lVGFibGVCb3goKSkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGludGVncmF0
aW9uIGNvZGVwYXRoIHdoZXJlIGlubGluZSB0YWJsZSBib3hlcyBhcmUgcmVwcmVzZW50ZWQgYXMg
YXRvbWljIGlubGluZSBib3hlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKaW5kZXggZDUyNDI1YzdhODNjLi41YzFiOGUwNDg3
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNh
bEFsaWduZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIElubGluZUxheW91dFVuaXQgTGluZUJveFZl
cnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHRBbmRBbGlnbihMaW5lQm94JiBsCiAg
ICAgICAgICAgICAgICAgaWYgKCZsYXlvdXRCb3gucGFyZW50KCkgIT0gJnJvb3RJbmxpbmVCb3gu
bGF5b3V0Qm94KCkgfHwgaW5saW5lTGV2ZWxCb3gudmVydGljYWxBbGlnbigpLnR5cGUgIT0gVmVy
dGljYWxBbGlnbjo6QmFzZWxpbmUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICAgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUxldmVs
Qm94KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxp
bmVCb3goKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVMZXZlbEJveEdlb21l
dHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gIWlubGluZUxldmVsQm94R2VvbWV0cnkubWFyZ2luQmVm
b3JlKCkgJiYgIWlubGluZUxldmVsQm94R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKSAmJiBpbmxpbmVM
ZXZlbEJveEdlb21ldHJ5Lm1hcmdpbkJveEhlaWdodCgpIDw9IHJvb3RJbmxpbmVCb3gubGF5b3V0
Qm91bmRzKCkuYXNjZW50OwogICAgICAgICAgICAgICAgIH0KQEAgLTQ4NSw3ICs0ODUsNyBAQCBJ
bmxpbmVMYXlvdXRVbml0IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFkanVzdEZvckFubm90YXRp
b25JZk5lZWRlZChMaW5lQm94JiBsaQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhIHBy
b3Blcmx5IGFsaWduZWQgc2V0IG9mIGlubGluZSBsZXZlbCBib3hlcy4gTGV0J3MgZmluZCBvdXQg
aWYgYW5ub3RhdGlvbiBtYXJrcyBoYXZlIGVub3VnaCBzcGFjZS4KICAgICBhdXRvIGFkanVzdExp
bmVCb3hIZWlnaHRJZk5lZWRlZCA9IFsmXSB7CiAgICAgICAgIGF1dG8gYWRqdXN0TGluZUJveFRv
cEFuZEJvdHRvbUZvcklubGluZUJveCA9IFsmXShjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5l
TGV2ZWxCb3gpIHsKLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVMZXZlbEJveC5pc0lubGluZUJv
eCgpIHx8IGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSk7CisgICAgICAg
ICAgICBBU1NFUlQoaW5saW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSB8fCBpbmxpbmVMZXZlbEJv
eC5pc0F0b21pY0lubGluZUJveCgpKTsKICAgICAgICAgICAgIGF1dG8gaW5saW5lQm94VG9wID0g
bGluZUJveC5pbmxpbmVMZXZlbEJveEFic29sdXRlVG9wKGlubGluZUxldmVsQm94KTsKICAgICAg
ICAgICAgIGF1dG8gaW5saW5lQm94Qm90dG9tID0gaW5saW5lQm94VG9wICsgaW5saW5lTGV2ZWxC
b3gubG9naWNhbEhlaWdodCgpOwogCkBAIC01MTgsNyArNTE4LDcgQEAgSW5saW5lTGF5b3V0VW5p
dCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjphZGp1c3RGb3JBbm5vdGF0aW9uSWZOZWVkZWQoTGlu
ZUJveCYgbGkKIAogICAgICAgICBhZGp1c3RMaW5lQm94VG9wQW5kQm90dG9tRm9ySW5saW5lQm94
KGxpbmVCb3gucm9vdElubGluZUJveCgpKTsKICAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZl
bEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgewotICAgICAgICAgICAg
aWYgKGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNBdG9t
aWNJbmxpbmVMZXZlbEJveCgpKQorICAgICAgICAgICAgaWYgKGlubGluZUxldmVsQm94LmlzSW5s
aW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVCb3goKSkKICAgICAgICAg
ICAgICAgICBhZGp1c3RMaW5lQm94VG9wQW5kQm90dG9tRm9ySW5saW5lQm94KGlubGluZUxldmVs
Qm94KTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAKaW5kZXggNmRmYTNmNjRhMzQzLi40M2JjZGI3YjRkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIGJvb2wgaXND
b250ZW50ZnVsT3JIYXNEZWNvcmF0aW9uKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNv
bnN0IElubGkKICAgICAgICAgcmV0dXJuICEhZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JC
b3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSkubWFyZ2luQm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCk7
CiAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKICAgICAgICAgcmV0dXJuICEh
Zm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSku
bWFyZ2luQm9yZGVyQW5kUGFkZGluZ0VuZCgpOwotICAgIHJldHVybiBpbmxpbmVJdGVtLmlzQm94
KCkgfHwgaW5saW5lSXRlbS5pc0xpbmVCcmVhaygpOworICAgIHJldHVybiBpbmxpbmVJdGVtLmlz
QXRvbWljSW5saW5lQm94KCkgfHwgaW5saW5lSXRlbS5pc0xpbmVCcmVhaygpOwogfQogCiBzdGF0
aWMgaW5saW5lIFN0cmluZ0J1aWxkZXIgdG9TdHJpbmcoY29uc3QgTGluZTo6UnVuTGlzdCYgcnVu
cykKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBoYXNUcmFpbGluZ1NvZnRXcmFwT3Bw
b3J0dW5pdHkoc2l6ZV90IHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCwgc2l6ZQogICAgICAgICAv
LyBXaGlsZSB3ZSBzdG9wIGF0IGZsb2F0cywgdGhleSBhcmUgbm90IGNvbnNpZGVyZWQgcmVhbCBz
b2Z0IHdyYXAgb3Bwb3J0dW5pdGllcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBpZiAodHJhaWxpbmdJbmxpbmVJdGVtLmlzQm94KCkgfHwgdHJhaWxpbmdJbmxpbmVJdGVtLmlz
TGluZUJyZWFrKCkgfHwgdHJhaWxpbmdJbmxpbmVJdGVtLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHko
KSB8fCB0cmFpbGluZ0lubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkgeworICAgIGlmICh0cmFp
bGluZ0lubGluZUl0ZW0uaXNBdG9taWNJbmxpbmVCb3goKSB8fCB0cmFpbGluZ0lubGluZUl0ZW0u
aXNMaW5lQnJlYWsoKSB8fCB0cmFpbGluZ0lubGluZUl0ZW0uaXNXb3JkQnJlYWtPcHBvcnR1bml0
eSgpIHx8IHRyYWlsaW5nSW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKSB7CiAgICAgICAgIC8v
IEZvciBXZWItY29tcGF0aWJpbGl0eSB0aGVyZSBpcyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBi
ZWZvcmUgYW5kIGFmdGVyIGVhY2ggcmVwbGFjZWQgZWxlbWVudCBvciBvdGhlciBhdG9taWMgaW5s
aW5lLgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMTksOSArMjE5LDkgQEAgc3Ry
dWN0IExpbmVDYW5kaWRhdGUgewogCiBpbmxpbmUgdm9pZCBMaW5lQ2FuZGlkYXRlOjpJbmxpbmVD
b250ZW50OjphcHBlbmRJbmxpbmVJdGVtKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiB7
Ci0gICAgQVNTRVJUKGlubGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5saW5lSXRlbS5pc0JveCgpIHx8
IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hF
bmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpOworICAgIEFTU0VSVChpbmxpbmVJdGVtLmlz
VGV4dCgpIHx8IGlubGluZUl0ZW0uaXNBdG9taWNJbmxpbmVCb3goKSB8fCBpbmxpbmVJdGVtLmlz
SW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgfHwgaW5saW5l
SXRlbS5pc09wYXF1ZSgpKTsKIAotICAgIGlmIChpbmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5l
SXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8
IGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKKyAgICBpZiAoaW5saW5lSXRlbS5pc0F0b21pY0lubGlu
ZUJveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJ
bmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAgICAgIHJldHVybiBt
X2NvbnRpbnVvdXNDb250ZW50LmFwcGVuZChpbmxpbmVJdGVtLCBzdHlsZSwgbG9naWNhbFdpZHRo
KTsKIAogICAgIGlmIChhdXRvKiBpbmxpbmVUZXh0SXRlbSA9IGR5bmFtaWNEb3duY2FzdDxJbmxp
bmVUZXh0SXRlbT4oaW5saW5lSXRlbSkpCkBAIC02NTgsNyArNjU4LDcgQEAgdm9pZCBMaW5lQnVp
bGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0
ZSwgc2l6ZV90IGMKICAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IG1faW5saW5lSXRlbUxpc3Rb
aW5kZXhdOwogICAgICAgICBhdXRvJiBzdHlsZSA9IGlzRmlyc3RGb3JtYXR0ZWRMaW5lKCkgPyBp
bmxpbmVJdGVtLmZpcnN0TGluZVN0eWxlKCkgOiBpbmxpbmVJdGVtLnN0eWxlKCk7CiAKLSAgICAg
ICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpIHx8IGlubGluZUl0ZW0uaXNCb3goKSB8fCAoaW5s
aW5lSXRlbS5pc09wYXF1ZSgpICYmIGlubGluZUl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5QW5ub3Rh
dGlvbkJveCgpKSkKKyAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpIHx8IGlubGluZUl0
ZW0uaXNBdG9taWNJbmxpbmVCb3goKSB8fCAoaW5saW5lSXRlbS5pc09wYXF1ZSgpICYmIGlubGlu
ZUl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5QW5ub3RhdGlvbkJveCgpKSkKICAgICAgICAgICAgIGZv
cm1hdHRpbmdDb250ZXh0KCkubGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGRvd25j
YXN0PEVsZW1lbnRCb3g+KGlubGluZUl0ZW0ubGF5b3V0Qm94KCkpKTsKIAogICAgICAgICBpZiAo
aW5saW5lSXRlbS5pc0Zsb2F0KCkpIHsKQEAgLTY5OCw3ICs2OTgsNyBAQCB2b2lkIExpbmVCdWls
ZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRl
LCBzaXplX3QgYwogICAgICAgICAgICAgY3VycmVudExvZ2ljYWxSaWdodCArPSBsb2dpY2FsV2lk
dGg7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoaW5saW5l
SXRlbS5pc0JveCgpKSB7CisgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzQXRvbWljSW5saW5lQm94
KCkpIHsKICAgICAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gZm9ybWF0dGluZ0NvbnRleHQo
KS5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExv
Z2ljYWxSaWdodCwgaXNGaXJzdEZvcm1hdHRlZExpbmUoKSk7CiAgICAgICAgICAgICAvLyBGSVhN
RTogV2hpbGUgdGhlIGxpbmUgYnJlYWtpbmcgcmVsYXRlZCBwcm9wZXJ0aWVzIGZvciBhdG9taWMg
bGV2ZWwgYm94ZXMgZG8gbm90IGRlcGVuZCBvbiB0aGUgbGluZSBpbmRleCAoZmlyc3QgbGluZSBz
dHlsZSkgaXQnZCBiZSBncmVhdCB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IHN0eWxlIHRvIHBh
c3MgaW4uCiAgICAgICAgICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5s
aW5lSXRlbShpbmxpbmVJdGVtLCBpbmxpbmVJdGVtLmxheW91dEJveCgpLnBhcmVudCgpLnN0eWxl
KCksIGxvZ2ljYWxXaWR0aCk7CkBAIC04MTAsNyArODEwLDcgQEAgTGluZUJ1aWxkZXI6OlJlY3RB
bmRGbG9hdENvbnN0cmFpbnRzIExpbmVCdWlsZGVyOjphZGp1c3RlZExpbmVSZWN0V2l0aENhbmRp
ZGF0ZUkKICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNUZXh0KCkpIHsKICAgICAgICAgICAgIGF1
dG8mIHN0eWxlVG9Vc2UgPSBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpID8gaW5saW5lSXRlbS5maXJz
dExpbmVTdHlsZSgpIDogaW5saW5lSXRlbS5zdHlsZSgpOwogICAgICAgICAgICAgY2FuZGlkYXRl
Q29udGVudEhlaWdodCA9IHN0ZDo6bWF4PElubGluZUxheW91dFVuaXQ+KGNhbmRpZGF0ZUNvbnRl
bnRIZWlnaHQsIHN0eWxlVG9Vc2UuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpOwotICAgICAgICB9IGVs
c2UgaWYgKGlubGluZUl0ZW0uaXNCb3goKSAmJiBsaW5lQm94Q29udGFpbi5jb250YWlucyhMaW5l
Qm94Q29udGFpbjo6UmVwbGFjZWQpKQorICAgICAgICB9IGVsc2UgaWYgKGlubGluZUl0ZW0uaXNB
dG9taWNJbmxpbmVCb3goKSAmJiBsaW5lQm94Q29udGFpbi5jb250YWlucyhMaW5lQm94Q29udGFp
bjo6UmVwbGFjZWQpKQogICAgICAgICAgICAgY2FuZGlkYXRlQ29udGVudEhlaWdodCA9IHN0ZDo6
bWF4KGNhbmRpZGF0ZUNvbnRlbnRIZWlnaHQsIElubGluZUxheW91dFVuaXQgeyBmb3JtYXR0aW5n
Q29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGlubGluZUl0ZW0ubGF5b3V0Qm94KCkpLm1hcmdpbkJv
eEhlaWdodCgpIH0pOwogICAgIH0KICAgICBpZiAoY2FuZGlkYXRlQ29udGVudEhlaWdodCA8PSBt
X2xpbmVMb2dpY2FsUmVjdC5oZWlnaHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVF1aXJrcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVRdWlya3MuY3Bw
CmluZGV4IDgyYmU2OTg0YTUzNi4uNWFkZjMzYmM2ZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVRdWlya3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZVF1aXJrcy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBJbmxpbmVRdWlya3M6OmxpbmVCcmVh
a0JveEFmZmVjdHNQYXJlbnRJbmxpbmVCb3goY29uc3QgTGluZUJveCYgbGluZUJveCkKICAgICAv
LyAzLiB0aGVyZSdzIGF0IGxlYXN0IG9uZSBpbmxpbmUgYm94IHdpdGggY29udGVudCBlLmcuIDxk
aXY+PHNwYW4+Y29udGVudDwvc3Bhbj48YnI+PC9kaXY+CiAgICAgaWYgKGxpbmVCb3gucm9vdElu
bGluZUJveCgpLmhhc0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChs
aW5lQm94Lmhhc0F0b21pY0lubGluZUxldmVsQm94KCkpCisgICAgaWYgKGxpbmVCb3guaGFzQXRv
bWljSW5saW5lQm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBBdCB0aGlzIHBv
aW50IHdlIGVpdGhlciBoYXZlIG9ubHkgdGhlIDxicj4gb24gdGhlIGxpbmUgb3IgaW5saW5lIGJv
eGVzIHdpdGggb3Igd2l0aG91dCBjb250ZW50LgogICAgIGF1dG8mIGlubGluZUxldmVsQm94ZXMg
PSBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbnRyaW5zaWNXaWR0aEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNwcAppbmRleCA3YjM0YzUyNmQ3NGIuLmNlNDFkZDM1
ZDg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3Bw
CkBAIC0yNTQsNyArMjU0LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBJbnRyaW5zaWNXaWR0aEhhbmRs
ZXI6OnNpbXBsaWZpZWRNaW5pbXVtV2lkdGgoY29uc3QgRWxlbWVudEJveCYKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjaGlsZC0+
aXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIHx8IGNoaWxkLT5pc1JlcGxhY2VkQm94KCkpIHsKKyAg
ICAgICAgaWYgKGNoaWxkLT5pc0F0b21pY0lubGluZUJveCgpIHx8IGNoaWxkLT5pc1JlcGxhY2Vk
Qm94KCkpIHsKICAgICAgICAgICAgIG1heGltdW1XaWR0aCA9IHN0ZDo6bWF4PElubGluZUxheW91
dFVuaXQ+KG1heGltdW1XaWR0aCwgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveCgq
Y2hpbGQpLm1hcmdpbkJveFdpZHRoKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmgKaW5k
ZXggOGU0NWZkNDkwZDkzLi5kMTY2N2VhMzY2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oCkBAIC03Myw3ICs3Myw3IEBAIHN0cnVjdCBCb3gg
ewogICAgICAgICBFbGxpcHNpcywKICAgICAgICAgU29mdExpbmVCcmVhaywKICAgICAgICAgTGlu
ZUJyZWFrQm94LAotICAgICAgICBBdG9taWNJbmxpbmVMZXZlbEJveCwKKyAgICAgICAgQXRvbWlj
SW5saW5lQm94LAogICAgICAgICBOb25Sb290SW5saW5lQm94LAogICAgICAgICBSb290SW5saW5l
Qm94LAogICAgICAgICBHZW5lcmljSW5saW5lTGV2ZWxCb3gKQEAgLTkzLDEyICs5MywxMiBAQCBz
dHJ1Y3QgQm94IHsKICAgICBib29sIGlzVGV4dE9yU29mdExpbmVCcmVhaygpIGNvbnN0IHsgcmV0
dXJuIGlzVGV4dCgpIHx8IGlzU29mdExpbmVCcmVhaygpOyB9CiAgICAgYm9vbCBpc0xpbmVCcmVh
a0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpMaW5lQnJlYWtCb3g7IH0KICAg
ICBib29sIGlzTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gaXNTb2Z0TGluZUJyZWFrKCkgfHwg
aXNMaW5lQnJlYWtCb3goKTsgfQotICAgIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJveDsgfQorICAg
IGJvb2wgaXNBdG9taWNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6
QXRvbWljSW5saW5lQm94OyB9CiAgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJu
IGlzTm9uUm9vdElubGluZUJveCgpIHx8IGlzUm9vdElubGluZUJveCgpOyB9CiAgICAgYm9vbCBp
c05vblJvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Tm9uUm9v
dElubGluZUJveDsgfQogICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0KICAgICBib29sIGlzR2VuZXJpY0lubGlu
ZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkdlbmVyaWNJbmxpbmVM
ZXZlbEJveDsgfQotICAgIGJvb2wgaXNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIGlz
QXRvbWljSW5saW5lTGV2ZWxCb3goKSB8fCBpc0xpbmVCcmVha0JveCgpIHx8IGlzSW5saW5lQm94
KCkgfHwgaXNHZW5lcmljSW5saW5lTGV2ZWxCb3goKTsgfQorICAgIGJvb2wgaXNJbmxpbmVMZXZl
bEJveCgpIGNvbnN0IHsgcmV0dXJuIGlzQXRvbWljSW5saW5lQm94KCkgfHwgaXNMaW5lQnJlYWtC
b3goKSB8fCBpc0lubGluZUJveCgpIHx8IGlzR2VuZXJpY0lubGluZUxldmVsQm94KCk7IH0KICAg
ICBib29sIGlzTm9uUm9vdElubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gaXNJbmxpbmVM
ZXZlbEJveCgpICYmICFpc1Jvb3RJbmxpbmVCb3goKTsgfQogCiAgICAgVUJpRGlMZXZlbCBiaWRp
TGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2JpZGlMZXZlbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3Bw
CmluZGV4IDIxZTdmODBiMzk0Ny4uYzAzNGVjNDZjNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3Bw
CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFw
cGVuZEhhcmRMaW5lQnJlYWtEaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYKIAogdm9pZCBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZEF0b21pY0lubGluZUxldmVsRGlzcGxheUJv
eChjb25zdCBMaW5lOjpSdW4mIGxpbmVSdW4sIGNvbnN0IElubGluZVJlY3QmIGJvcmRlckJveFJl
Y3QsIElubGluZURpc3BsYXk6OkJveGVzJiBib3hlcykKIHsKLSAgICBBU1NFUlQobGluZVJ1bi5s
YXlvdXRCb3goKS5pc0F0b21pY0lubGluZUxldmVsQm94KCkpOworICAgIEFTU0VSVChsaW5lUnVu
LmxheW91dEJveCgpLmlzQXRvbWljSW5saW5lQm94KCkpOwogICAgIGF1dG8mIGxheW91dEJveCA9
IGxpbmVSdW4ubGF5b3V0Qm94KCk7CiAKICAgICBhdXRvIGlzQ29udGVudGZ1bCA9IHRydWU7CkBA
IC0zMDIsNyArMzAyLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVu
ZEF0b21pY0lubGluZUxldmVsRGlzcGxheUJveChjb25zdCBMaW5lOjoKICAgICB9OwogCiAgICAg
Ym94ZXMuYXBwZW5kKHsgbGluZUluZGV4KCkKLSAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6
OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94CisgICAgICAgICwgSW5saW5lRGlzcGxheTo6Qm94
OjpUeXBlOjpBdG9taWNJbmxpbmVCb3gKICAgICAgICAgLCBsYXlvdXRCb3gKICAgICAgICAgLCBs
aW5lUnVuLmJpZGlMZXZlbCgpCiAgICAgICAgICwgYm9yZGVyQm94UmVjdApAQCAtMzgwLDcgKzM4
MCw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjphcHBlbmRJbmxpbmVEaXNw
bGF5Qm94QXRCaWRpQm91bmRhcnkoY29uc3QgQm94CiB2b2lkIElubGluZURpc3BsYXlDb250ZW50
QnVpbGRlcjo6aW5zZXJ0UnVieUFubm90YXRpb25Cb3goY29uc3QgQm94JiBhbm5vdGF0aW9uQm94
LCBzaXplX3QgaW5zZXJ0aW9uUG9zaXRpb24sIGNvbnN0IElubGluZVJlY3QmIGJvcmRlckJveFJl
Y3QsIElubGluZURpc3BsYXk6OkJveGVzJiBib3hlcykKIHsKICAgICBib3hlcy5pbnNlcnQoaW5z
ZXJ0aW9uUG9zaXRpb24sIHsgbGluZUluZGV4KCkKLSAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpC
b3g6OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94CisgICAgICAgICwgSW5saW5lRGlzcGxheTo6
Qm94OjpUeXBlOjpBdG9taWNJbmxpbmVCb3gKICAgICAgICAgLCBhbm5vdGF0aW9uQm94CiAgICAg
ICAgICwgVUJJRElfREVGQVVMVF9MVFIKICAgICAgICAgLCBib3JkZXJCb3hSZWN0CkBAIC00Mjks
OCArNDI5LDggQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NOb25C
aWRpQ29udGVudChjb25zdCBMaW5lTGF5b3V0UmVzdWx0JgogICAgICAgICAgICAgICAgIHJldHVy
biBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yTGluZUJyZWFrQm94KGxheW91dEJveCk7CiAKICAgICAg
ICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZv
ckJveChsYXlvdXRCb3gpOwotICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNCb3goKSB8fCBsaW5l
UnVuLmlzTGlzdE1hcmtlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lQm94LmxvZ2lj
YWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5
KTsKKyAgICAgICAgICAgIGlmIChsaW5lUnVuLmlzQXRvbWljSW5saW5lQm94KCkgfHwgbGluZVJ1
bi5pc0xpc3RNYXJrZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbGluZUJveC5sb2dpY2Fs
Qm9yZGVyQm94Rm9yQXRvbWljSW5saW5lQm94KGxheW91dEJveCwgYm94R2VvbWV0cnkpOwogICAg
ICAgICAgICAgaWYgKGxpbmVSdW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGxpbmVSdW4uaXNMaW5l
U3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBsaW5lQm94
LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lk
IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0
IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgICAgICAgICAgICAgYXBwZW5kU29mdExpbmVCcmVha0Rp
c3BsYXlCb3gobGluZVJ1biwgdmlzdWFsUmVjdFJlbGF0aXZlVG9Sb290LCBib3hlcyk7CiAgICAg
ICAgICAgICBlbHNlIGlmIChsaW5lUnVuLmlzSGFyZExpbmVCcmVhaygpKQogICAgICAgICAgICAg
ICAgIGFwcGVuZEhhcmRMaW5lQnJlYWtEaXNwbGF5Qm94KGxpbmVSdW4sIHZpc3VhbFJlY3RSZWxh
dGl2ZVRvUm9vdCwgYm94ZXMpOwotICAgICAgICAgICAgZWxzZSBpZiAobGluZVJ1bi5pc0JveCgp
IHx8IGxpbmVSdW4uaXNMaXN0TWFya2VyKCkpCisgICAgICAgICAgICBlbHNlIGlmIChsaW5lUnVu
LmlzQXRvbWljSW5saW5lQm94KCkgfHwgbGluZVJ1bi5pc0xpc3RNYXJrZXIoKSkKICAgICAgICAg
ICAgICAgICBhcHBlbmRBdG9taWNJbmxpbmVMZXZlbERpc3BsYXlCb3gobGluZVJ1biwgdmlzdWFs
UmVjdFJlbGF0aXZlVG9Sb290LCBib3hlcyk7CiAgICAgICAgICAgICBlbHNlIGlmIChsaW5lUnVu
LmlzSW5saW5lQm94U3RhcnQoKSB8fCBsaW5lUnVuLmlzTGluZVNwYW5uaW5nSW5saW5lQm94U3Rh
cnQoKSkgewogICAgICAgICAgICAgICAgIC8vIERvIG5vdCBnZW5lcmF0ZSBkaXNwbGF5IGJveGVz
IGZvciBpbmxpbmUgYm94ZXMgb24gbm9uLWNvbnRlbnRmdWwgbGluZXMgKGUuZy4gPHNwYW4+PC9z
cGFuPikKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6YWRqdXN0VmlzdWFsR2VvbWV0cnlGb3JEaXNwbGF5Qm94KHNpemVfdCBkaXNwbAogICAgIGF1
dG8mIGxheW91dEJveCA9IGRpc3BsYXlCb3gubGF5b3V0Qm94KCk7CiAKICAgICBpZiAoIWRpc3Bs
YXlCb3guaXNOb25Sb290SW5saW5lQm94KCkpIHsKLSAgICAgICAgaWYgKGRpc3BsYXlCb3guaXNB
dG9taWNJbmxpbmVMZXZlbEJveCgpIHx8IGRpc3BsYXlCb3guaXNHZW5lcmljSW5saW5lTGV2ZWxC
b3goKSkgeworICAgICAgICBpZiAoZGlzcGxheUJveC5pc0F0b21pY0lubGluZUJveCgpIHx8IGRp
c3BsYXlCb3guaXNHZW5lcmljSW5saW5lTGV2ZWxCb3goKSkgewogICAgICAgICAgICAgYXV0byBp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gbGF5b3V0Qm94LnBhcmVudCgpLnN0eWxlKCkuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpOwogICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3Jt
YXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgICAgICAgICBh
dXRvIGJveE1hcmdpbkxlZnQgPSBtYXJnaW5MZWZ0SW5JbmxpbmVEaXJlY3Rpb24oYm94R2VvbWV0
cnksIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pOwpAQCAtNzA3LDggKzcwNyw4IEBAIHZvaWQgSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzQmlkaUNvbnRlbnQoY29uc3QgTGluZUxh
eW91dFJlc3VsdCYgbGluCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHsgfSwgeyB9IH07
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgICAgICAg
ICAgICAgIGlmIChsaW5lUnVuLmlzQm94KCkgfHwgbGluZVJ1bi5pc0xpc3RNYXJrZXIoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvckF0b21p
Y0lubGluZUxldmVsQm94KGxheW91dEJveCwgYm94R2VvbWV0cnkpOworICAgICAgICAgICAgICAg
IGlmIChsaW5lUnVuLmlzQXRvbWljSW5saW5lQm94KCkgfHwgbGluZVJ1bi5pc0xpc3RNYXJrZXIo
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZv
ckF0b21pY0lubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsKICAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAg
ICAgICAgICAgfSgpOwpAQCAtNzUwLDcgKzc1MCw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyOjpwcm9jZXNzQmlkaUNvbnRlbnQoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGlu
CiAgICAgICAgICAgICAgICAgZGlzcGxheUJveFRyZWUuYXBwZW5kKHBhcmVudERpc3BsYXlCb3hO
b2RlSW5kZXgsIGJveGVzLnNpemUoKSAtIDEpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNCb3goKSB8fCBsaW5lUnVu
LmlzTGlzdE1hcmtlcigpKSB7CisgICAgICAgICAgICBpZiAobGluZVJ1bi5pc0F0b21pY0lubGlu
ZUJveCgpIHx8IGxpbmVSdW4uaXNMaXN0TWFya2VyKCkpIHsKICAgICAgICAgICAgICAgICBhdXRv
IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsYXlvdXRCb3gucGFyZW50KCkuc3R5bGUoKS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkg
PSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgICAg
ICAgICAgICAgYXV0byBib3hNYXJnaW5MZWZ0ID0gbWFyZ2luTGVmdEluSW5saW5lRGlyZWN0aW9u
KGJveEdlb21ldHJ5LCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKTsKQEAgLTg3Niw3ICs4NzYsNyBA
QCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y29sbGVjdElua092ZXJmbG93Rm9y
SW5saW5lQm94ZXMoSW5saW5lRGlzcGxheQogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gYm94ZXMu
c2l6ZSgpOyBpbmRleC0tOykgewogICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gYm94ZXNbaW5k
ZXhdOwogCi0gICAgICAgIGF1dG8gbWF5SGF2ZUlua092ZXJmbG93ID0gZGlzcGxheUJveC5pc1Rl
eHQoKSB8fCBkaXNwbGF5Qm94LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSB8fCBkaXNwbGF5Qm94
LmlzR2VuZXJpY0lubGluZUxldmVsQm94KCkgfHwgZGlzcGxheUJveC5pc05vblJvb3RJbmxpbmVC
b3goKTsKKyAgICAgICAgYXV0byBtYXlIYXZlSW5rT3ZlcmZsb3cgPSBkaXNwbGF5Qm94LmlzVGV4
dCgpIHx8IGRpc3BsYXlCb3guaXNBdG9taWNJbmxpbmVCb3goKSB8fCBkaXNwbGF5Qm94LmlzR2Vu
ZXJpY0lubGluZUxldmVsQm94KCkgfHwgZGlzcGxheUJveC5pc05vblJvb3RJbmxpbmVCb3goKTsK
ICAgICAgICAgaWYgKCFtYXlIYXZlSW5rT3ZlcmZsb3cpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKGRpc3BsYXlCb3guaXNOb25Sb290SW5saW5lQm94KCkgJiYgIWFjY3VtdWxh
dGVkSW5rT3ZlcmZsb3dSZWN0LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcAppbmRleCA5MjUzYTQ2
MTNlMDAuLmQwZDY4NjAzYTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcApAQCAtODUsMTQgKzg1LDE0IEBA
IElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6RW5jbG9zaW5nTGluZUdlb21ldHJ5IElubGluZURp
c3BsYXlMaW5lQnVpbGRlcjo6Y29sbGVjCiAgICAgICAgIHJldHVybiByZWN0OwogICAgIH0oKTsK
ICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2
ZWxCb3hlcygpKSB7Ci0gICAgICAgIGlmICghaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVM
ZXZlbEJveCgpICYmICFpbmxpbmVMZXZlbEJveC5pc0lubGluZUJveCgpICYmICFpbmxpbmVMZXZl
bEJveC5pc0xpbmVCcmVha0JveCgpKQorICAgICAgICBpZiAoIWlubGluZUxldmVsQm94LmlzQXRv
bWljSW5saW5lQm94KCkgJiYgIWlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgJiYgIWlubGlu
ZUxldmVsQm94LmlzTGluZUJyZWFrQm94KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKTsKICAgICAg
ICAgYXV0byBib3JkZXJCb3ggPSBJbmxpbmVSZWN0IHsgfTsKIAotICAgICAgICBpZiAoaW5saW5l
TGV2ZWxCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSB7Ci0gICAgICAgICAgICBib3JkZXJC
b3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveChsYXlv
dXRCb3gsIGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KSk7Cisg
ICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUJveCgpKSB7CisgICAgICAg
ICAgICBib3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVC
b3gobGF5b3V0Qm94LCBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJv
eCkpOwogICAgICAgICAgICAgYm9yZGVyQm94Lm1vdmVCeShsaW5lQm94UmVjdC50b3BMZWZ0KCkp
OwogICAgICAgICB9IGVsc2UgaWYgKGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkpIHsKICAg
ICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRy
eUZvckJveChsYXlvdXRCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAppbmRleCAwMDM5
YTlkZGIyOGEuLjIyY2NkMDk0Mjk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAKQEAg
LTQ4MSw3ICs0ODEsNyBAQCB2b2lkIHNob3dJbmxpbmVDb250ZW50KFRleHRTdHJlYW0mIHN0cmVh
bSwgY29uc3QgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgcwogICAgICAgICAgICAgICAg
ICAgICBydW5TdHJlYW0gPDwgIldvcmQgc2VwYXJhdG9yIjsKICAgICAgICAgICAgICAgICBlbHNl
IGlmIChib3guaXNMaW5lQnJlYWsoKSkKICAgICAgICAgICAgICAgICAgICAgcnVuU3RyZWFtIDw8
ICJMaW5lIGJyZWFrIjsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChib3guaXNBdG9taWNJbmxp
bmVMZXZlbEJveCgpKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJveC5pc0F0b21pY0lubGlu
ZUJveCgpKQogICAgICAgICAgICAgICAgICAgICBydW5TdHJlYW0gPDwgIkF0b21pYyBib3giOwog
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJveC5pc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgpKQog
ICAgICAgICAgICAgICAgICAgICBydW5TdHJlYW0gPDwgIkdlbmVyaWMgaW5saW5lIGxldmVsIGJv
eCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5l
L0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRl
bnRCdWlsZGVyLmNwcAppbmRleCBhYzVhMmUzYzhlNWEuLjQxNzQwYTY3NTBhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIu
Y3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6YWRqdXN0
RGlzcGxheUxpbmVzKElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIHNpemUKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGJveC5p
c0F0b21pY0lubGluZUxldmVsQm94KCkpIHsKKyAgICAgICAgICAgIGlmIChib3guaXNBdG9taWNJ
bmxpbmVCb3goKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8
UmVuZGVyQm94PigqYm94LmxheW91dEJveCgpLnJlbmRlcmVyRm9ySW50ZWdyYXRpb24oKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gY2hpbGRJbmtPdmVyZmxvdyA9IHJlbmRlcmVyLmxvZ2lj
YWxWaXN1YWxPdmVyZmxvd1JlY3RGb3JQcm9wYWdhdGlvbigmcmVuZGVyZXIucGFyZW50KCktPnN0
eWxlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lu
bGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmlu
ZGV4IGMxMmViNDkyZTMwOS4uNjA1MmI0ZDVkZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBMaW5lTGF5
b3V0Ojp1cGRhdGVSZW5kZXJUcmVlUG9zaXRpb25zKGNvbnN0IFZlY3RvcjxMaW5lQWRqdXN0bWVu
dD4mIGxpbmVBZGoKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIGxheW91
dEJveCA9IGJveC5sYXlvdXRCb3goKTsKLSAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNBdG9taWNJ
bmxpbmVMZXZlbEJveCgpKQorICAgICAgICBpZiAoIWxheW91dEJveC5pc0F0b21pY0lubGluZUJv
eCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBk
b3duY2FzdDxSZW5kZXJCb3g+KCpib3gubGF5b3V0Qm94KCkucmVuZGVyZXJGb3JJbnRlZ3JhdGlv
bigpKTsKQEAgLTEwMTUsNyArMTAxNSw3IEBAIGJvb2wgTGluZUxheW91dDo6aGl0VGVzdChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjCiAgICAg
ICAgIGlmICghbGF5ZXJQYWludFNjb3BlLmluY2x1ZGVzKGJveCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBpZiAoYm94LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgeworICAg
ICAgICBpZiAoYm94LmlzQXRvbWljSW5saW5lQm94KCkpIHsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlci5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgZmxpcHBl
ZENvbnRlbnRPZmZzZXRJZk5lZWRlZChmbG93KCksIGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVy
ZXIpLCBhY2N1bXVsYXRlZE9mZnNldCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0xMDYwLDcgKzEwNjAsNyBAQCB2b2lkIExpbmVMYXlv
dXQ6OnNoaWZ0TGluZXNCeShMYXlvdXRVbml0IGJsb2NrU2hpZnQpCiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGJveC5tb3ZlSG9yaXpvbnRhbGx5KGJsb2NrU2hpZnQpOwogCi0gICAgICAgIGlm
IChib3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSB7CisgICAgICAgIGlmIChib3guaXNBdG9t
aWNJbmxpbmVCb3goKSkgewogICAgICAgICAgICAgQ2hlY2tlZFJlZiByZW5kZXJlciA9IGRvd25j
YXN0PFJlbmRlckJveD4oKmJveC5sYXlvdXRCb3goKS5yZW5kZXJlckZvckludGVncmF0aW9uKCkp
OwogICAgICAgICAgICAgcmVuZGVyZXItPm1vdmUoZGVsdGFYLCBkZWx0YVkpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRl
eCBlYjVmMGVjODliZTIuLmI4OGIyOTBjMDNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgYm9vbCBCb3g6
OmlzSW5saW5lQm94KCkgY29uc3QKICAgICByZXR1cm4gKGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6
OklubGluZSB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpSdWJ5IHx8IGRpc3BsYXkgPT0gRGlz
cGxheVR5cGU6OlJ1YnlCYXNlKSAmJiAhaXNSZXBsYWNlZEJveCgpOwogfQogCi1ib29sIEJveDo6
aXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIGNvbnN0Citib29sIEJveDo6aXNBdG9taWNJbmxpbmVC
b3goKSBjb25zdAogewogICAgIC8vIElubGluZS1sZXZlbCBib3hlcyB0aGF0IGFyZSBub3QgaW5s
aW5lIGJveGVzIChzdWNoIGFzIHJlcGxhY2VkIGlubGluZS1sZXZlbCBlbGVtZW50cywgaW5saW5l
LWJsb2NrIGVsZW1lbnRzLCBhbmQgaW5saW5lLXRhYmxlIGVsZW1lbnRzKQogICAgIC8vIGFyZSBj
YWxsZWQgYXRvbWljIGlubGluZS1sZXZlbCBib3hlcyBiZWNhdXNlIHRoZXkgcGFydGljaXBhdGUg
aW4gdGhlaXIgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCBhcyBhIHNpbmdsZSBvcGFxdWUgYm94
LgpAQCAtMzAxLDcgKzMwMSw3IEBAIGJvb2wgQm94Ojppc0xheW91dENvbnRhaW5tZW50Qm94KCkg
Y29uc3QKICAgICAgICAgaWYgKGlzSW50ZXJuYWxSdWJ5Qm94KCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGlmIChpc0lubGluZUxldmVsQm94KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpOworICAgICAgICAgICAgcmV0dXJuIGlzQXRv
bWljSW5saW5lQm94KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CiAgICAgcmV0dXJu
IG1fc3R5bGUudXNlZENvbnRhaW4oKS5jb250YWlucyhDb250YWlubWVudDo6TGF5b3V0KSAmJiBz
dXBwb3J0c0xheW91dENvbnRhaW5tZW50KCk7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBCb3g6
OmlzU2l6ZUNvbnRhaW5tZW50Qm94KCkgY29uc3QKICAgICAgICAgaWYgKGlzSW50ZXJuYWxSdWJ5
Qm94KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChpc0lubGluZUxl
dmVsQm94KCkpCi0gICAgICAgICAgICByZXR1cm4gaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpOwor
ICAgICAgICAgICAgcmV0dXJuIGlzQXRvbWljSW5saW5lQm94KCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH07CiAgICAgcmV0dXJuIG1fc3R5bGUudXNlZENvbnRhaW4oKS5jb250YWlucyhD
b250YWlubWVudDo6U2l6ZSkgJiYgc3VwcG9ydHNTaXplQ29udGFpbm1lbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggNWRkNTBmNWZiNGQz
Li5jYWMzY2E3ZmZmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNCbG9ja0Nv
bnRhaW5lcigpIGNvbnN0OwogICAgIGJvb2wgaXNJbmxpbmVMZXZlbEJveCgpIGNvbnN0OwogICAg
IGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdDsKLSAgICBib29sIGlzQXRvbWljSW5saW5lTGV2ZWxC
b3goKSBjb25zdDsKKyAgICBib29sIGlzQXRvbWljSW5saW5lQm94KCkgY29uc3Q7CiAgICAgYm9v
bCBpc0lubGluZUJsb2NrQm94KCkgY29uc3Q7CiAgICAgYm9vbCBpc0lubGluZVRhYmxlQm94KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0luaXRpYWxDb250YWluaW5nQmxvY2soKSBjb25zdCB7IHJldHVy
biBiYXNlVHlwZUZsYWdzKCkuY29udGFpbnMoSW5pdGlhbENvbnRhaW5pbmdCbG9ja0ZsYWcpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVl
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVl
QnVpbGRlci5jcHAKaW5kZXggODg2ZDMyY2IyYmFjLi43MzQzNmI5Njg3ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHAKQEAgLTQwNSw4ICs0MDUsOCBAQCB2b2lkIHNob3dJbmxpbmVUcmVlQW5kUnVucyhUZXh0U3Ry
ZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgYwogICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgICAgIjsKICAgICAgICAgICAgIGF1dG8gcmVjdCA9IGlubGluZUxldmVs
Qm94LnZpc3VhbFJlY3RJZ25vcmluZ0Jsb2NrRGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBhdXRv
JiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKTsKLSAgICAgICAgICAgIGlm
IChsYXlvdXRCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKQotICAgICAgICAgICAgICAgIHN0
cmVhbSA8PCAiQXRvbWljIGlubGluZSBsZXZlbCBib3giOworICAgICAgICAgICAgaWYgKGxheW91
dEJveC5pc0F0b21pY0lubGluZUJveCgpKQorICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiQXRv
bWljIGlubGluZSBib3giOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzTGluZUJy
ZWFrQm94KCkpCiAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJMaW5lIGJyZWFrIGJveCI7CiAg
ICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCb3goKSkKQEAgLTQ5Myw4ICs0
OTMsOCBAQCBzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94RwogICAgICAgICAgICAgc3RyZWFtIDw8ICJp
bmxpbmUtYmxvY2sgYm94IjsKICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzTGluZUJyZWFr
Qm94KCkpCiAgICAgICAgICAgICBzdHJlYW0gPDwgKGxheW91dEJveC5pc1dvcmRCcmVha09wcG9y
dHVuaXR5KCkgPyAid29yZCBicmVhayBvcHBvcnR1bml0eSIgOiAibGluZSBicmVhayIpOwotICAg
ICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKQotICAgICAg
ICAgICAgc3RyZWFtIDw8ICJhdG9taWMgaW5saW5lIGxldmVsIGJveCI7CisgICAgICAgIGVsc2Ug
aWYgKGxheW91dEJveC5pc0F0b21pY0lubGluZUJveCgpKQorICAgICAgICAgICAgc3RyZWFtIDw8
ICJhdG9taWMgaW5saW5lIGJveCI7CiAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc1JlcGxh
Y2VkQm94KCkpCiAgICAgICAgICAgICBzdHJlYW0gPDwgInJlcGxhY2VkIGlubGluZSBib3giOwog
ICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCb3goKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>