<?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>224981</bug_id>
          
          <creation_ts>2021-04-23 09:08:56 -0700</creation_ts>
          <short_desc>Refactor ValueRange from enum to enum class</short_desc>
          <delta_ts>2021-04-24 10:11:58 -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>CSS</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="Tyler Wilcock">twilco.o</reporter>
          <assigned_to name="Tyler Wilcock">twilco.o</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1753601</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">twilco.o</who>
    <bug_when>2021-04-23 09:08:56 -0700</bug_when>
    <thetext>ValueRange looks like this:

enum ValueRange {
    ValueRangeAll,
    ValueRangeNonNegative
}

It should be an `enum class : uint8_t`.  This would make it smaller (one byte versus four) and harder to misuse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753607</commentid>
    <comment_count>1</comment_count>
      <attachid>426915</attachid>
    <who name="Tyler Wilcock">twilco.o</who>
    <bug_when>2021-04-23 09:19:42 -0700</bug_when>
    <thetext>Created attachment 426915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753815</commentid>
    <comment_count>2</comment_count>
    <who name="Tyler Wilcock">twilco.o</who>
    <bug_when>2021-04-23 17:50:57 -0700</bug_when>
    <thetext>Darin, here&apos;s one follow-up from https://bugs.webkit.org/show_bug.cgi?id=224718#c24 (parsing @counter-style descriptors).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753853</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-24 09:02:16 -0700</bug_when>
    <thetext>Committed r276550 (236990@main): &lt;https://commits.webkit.org/236990@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426915.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753854</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-24 09:03:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/77106648&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753861</commentid>
    <comment_count>5</comment_count>
      <attachid>426915</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-24 10:11:58 -0700</bug_when>
    <thetext>Comment on attachment 426915
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426915&amp;action=review

&gt; Source/WebCore/ChangeLog:23
&gt; +        making it smaller (one byte versus four) and harder to misuse (no
&gt; +        auto-coercion to number types).

Seems like a great change.

For future reference, adding the underlying type of uint8_t is independent of changing from enum to enum class. Both are good ideas.

I believe that for two-value enumerations, bool is an even better underlying type than uint8_t, and on the modern compilers we are compiling with both will use a single byte for storage.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426915</attachid>
            <date>2021-04-23 09:19:42 -0700</date>
            <delta_ts>2021-04-24 09:02:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224981-20210423111940.patch</filename>
            <type>text/plain</type>
            <size>80150</size>
            <attacher name="Tyler Wilcock">twilco.o</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhjNWJlNDg5ZWYxZmM5
NWZlNzhlMDEwYjU3OGFmNjg3OTNlMDNkMi4uOTk2YjM2ZmJkYmYzMWY2ZmQ0ZTEwZDVjMGMxOTYw
NGMyMTEyOTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OSBAQAorMjAyMS0wNC0yMyAgVHls
ZXIgV2lsY29jayAgPHR3aWxjby5vQHByb3Rvbm1haWwuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IFZhbHVlUmFuZ2UgZnJvbSBlbnVtIHRvIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDk4MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIFZhbHVlUmFuZ2UgZnJvbToKKwor
ICAgICAgICBlbnVtIFZhbHVlUmFuZ2UgeworICAgICAgICAgICAgVmFsdWVSYW5nZUFsbCwKKyAg
ICAgICAgICAgIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZQorICAgICAgICB9CisKKyAgICAgICAgdG86
CisKKyAgICAgICAgZW51bSBWYWx1ZVJhbmdlIDogdWludDhfdCB7CisgICAgICAgICAgICBBbGws
CisgICAgICAgICAgICBOb25OZWdhdGl2ZQorICAgICAgICB9CisKKyAgICAgICAgbWFraW5nIGl0
IHNtYWxsZXIgKG9uZSBieXRlIHZlcnN1cyBmb3VyKSBhbmQgaGFyZGVyIHRvIG1pc3VzZSAobm8K
KyAgICAgICAgYXV0by1jb2VyY2lvbiB0byBudW1iZXIgdHlwZXMpLgorCisgICAgICAgICogYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5k
RnVuYyk6CisgICAgICAgIFJlZmFjdG9yIFZhbHVlUmFuZ2VBbGwgYW5kIFZhbHVlUmFuZ2VOb25O
ZWdhdGl2ZSB0byBWYWx1ZVJhbmdlOjpBbGwKKyAgICAgICAgYW5kIFZhbHVlUmFuZ2U6Ok5vbk5l
Z2F0aXZlLgorCisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVlOjpjcmVhdGUpOgorICAgICAgICBSZWZhY3RvciBWYWx1
ZVJhbmdlQWxsIGFuZCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgdG8gVmFsdWVSYW5nZTo6QWxsCisg
ICAgICAgIGFuZCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZS4KKworICAgICAgICAqIGNzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjVmFsdWU6OmNyZWF0
ZUNhbGN1bGF0aW9uVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVl
OjpzZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKToKKyAgICAgICAgUmVmYWN0b3IgVmFsdWVSYW5nZUFs
bCBhbmQgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlIHRvIFZhbHVlUmFuZ2U6OkFsbAorICAgICAgICBh
bmQgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUuCisKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4
cHJlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUZpcnN0VmFsdWUpOgorICAg
ICAgICBSZWZhY3RvciBWYWx1ZVJhbmdlQWxsIGFuZCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgdG8g
VmFsdWVSYW5nZTo6QWxsCisgICAgICAgIGFuZCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZS4KKwor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVUcmFuc2Zvcm1PcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6Y29uc3VtZUxldHRlclNwYWNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3VtZVdvcmRTcGFjaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVUYWJTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN1bWVUZXh0U2l6ZUFkanVzdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdW1lRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUxpbmVIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3VtZVRleHRJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNjcm9sbFBhZGRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZU1heFdpZHRoT3JIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3VtZVdpZHRoT3JIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3Vt
ZU1hcmdpbk9yT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVDbGlwQ29tcG9uZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVMaW5lQ2xhbXApOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZUh5cGhlbmF0ZUxpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVDb2x1
bW5XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lR2FwTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN1bWVab29tKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVBbmltYXRp
b25JdGVyYXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQW5pbWF0aW9uVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUxpbmVXaWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lVHJhbnNsYXRlM2QpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZU51bWJl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVBlcnNwZWN0aXZlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN1bWVUcmFuc2Zvcm1WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1l
VHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVTY2FsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lUm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVQb3NpdGlv
bkxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVGbGV4QmFzaXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29uc3VtZUtlcm5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVN0
cm9rZURhc2hhcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFzZWxpbmVTaGlmdCk6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lUnhPclJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVCb3JkZXJSYWRpdXNDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVRleHRV
bmRlcmxpbmVPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVRleHREZWNvcmF0aW9u
VGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVWZXJ0aWNhbEFsaWduKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN1bWVTaGFwZVJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpj
b25zdW1lQmFzaWNTaGFwZVBvbHlnb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVJhZGlp
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNpY1NoYXBlSW5zZXQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3VtZUJvcmRlckltYWdlU2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3VtZUJvcmRlckltYWdlT3V0c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCb3JkZXJJ
bWFnZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVSZWZsZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN1bWVCYWNrZ3JvdW5kU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb25z
dW1lRml0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lR3JpZEJyZWFkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUluaXRpYWxMZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3VtZVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVX
ZWJraXRNYXJxdWVlU3BlZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUFzcGVjdFJhdGlv
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQm9yZGVyU3Bh
Y2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUZsZXgp
OgorICAgICAgICBSZWZhY3RvciBWYWx1ZVJhbmdlQWxsIGFuZCBWYWx1ZVJhbmdlTm9uTmVnYXRp
dmUgdG8gVmFsdWVSYW5nZTo6QWxsCisgICAgICAgIGFuZCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2
ZS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU51bWJl
ck9yUGVyY2VudERpdmlkZWRCeTEwMFJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OkNhbGNQYXJzZXI6OkNhbGNQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTnVtYmVyUmF3KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUZvbnRXZWlnaHROdW1i
ZXJSYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25z
dW1lTGVuZ3RoUmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZVBlcmNlbnRSYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpjb25zdW1lQW5nbGVSYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQW5nbGVXb3JrZXJTYWZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUG9zaXRpb25Db21wb25lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVw
cmVjYXRlZEdyYWRpZW50UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNh
dGVkUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpjb25zdW1lUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRmlsdGVyRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lU2luZ2xlU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUZvbnRTaXpl
UmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3Vt
ZUxpbmVIZWlnaHRSYXcpOgorICAgICAgICBSZWZhY3RvciBWYWx1ZVJhbmdlQWxsIGFuZCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUgdG8gVmFsdWVSYW5nZTo6QWxsCisgICAgICAgIGFuZCBWYWx1ZVJh
bmdlOjpOb25OZWdhdGl2ZS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzLmg6CisgICAgICAgIFJlZmFjdG9yIFZhbHVlUmFuZ2VBbGwgYW5kIFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSB0byBWYWx1ZVJhbmdlOjpBbGwKKyAgICAgICAgYW5kIFZhbHVlUmFuZ2U6
Ok5vbk5lZ2F0aXZlLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldv
cmtlclNhZmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
V29ya2VyU2FmZTo6Y29uc3VtZUZvbnRTdHJldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VySGVscGVyc1dvcmtlclNhZmU6OmNvbnN1bWVGb250U3RyZXRjaFJhbmdlKToK
KyAgICAgICAgUmVmYWN0b3IgVmFsdWVSYW5nZUFsbCBhbmQgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
IHRvIFZhbHVlUmFuZ2U6OkFsbAorICAgICAgICBhbmQgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUu
CisKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlUm9vdE1hcmdpbik6CisgICAgICAgIFJlZmFjdG9yIFZhbHVlUmFuZ2VBbGwg
YW5kIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSB0byBWYWx1ZVJhbmdlOjpBbGwKKyAgICAgICAgYW5k
IFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlLgorCisgICAgICAgICogcGxhdGZvcm0vQ2FsY3VsYXRp
b25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRp
b25WYWx1ZSk6CisgICAgICAgIFJlZmFjdG9yIFZhbHVlUmFuZ2VBbGwgYW5kIFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSB0byBWYWx1ZVJhbmdlOjpBbGwKKyAgICAgICAgYW5kIFZhbHVlUmFuZ2U6Ok5v
bk5lZ2F0aXZlLgorCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpibGVuZE1peGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOgorICAgICAgICBS
ZWZhY3RvciBWYWx1ZVJhbmdlQWxsIGFuZCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgdG8gVmFsdWVS
YW5nZTo6QWxsCisgICAgICAgIGFuZCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorICAgICAgICBSZWZhY3RvciBlbnVtIFZhbHVlUmFuZ2Ug
dG8gZW51bSBjbGFzcyBWYWx1ZVJhbmdlLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgUmVmYWN0b3IgVmFsdWVS
YW5nZUFsbCBhbmQgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlIHRvIFZhbHVlUmFuZ2U6OkFsbAorICAg
ICAgICBhbmQgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUuCisKKwogMjAyMS0wNC0yMyAgTWljaGFl
bCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAgICBJbXByb3ZlIEhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSBvZiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRl
eCA2MGRmMjlmOGQ0ZDZiZDNhZmRjMzBmMWQ0OWMwMDA3NThlYTY3OTgyLi5mNmZhYzAxZWI2MmI4
MjBiYjBkMDNhNmVmMDY1MzI4YmE2ODA1MTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0
aWMgaW5saW5lIENvbG9yIGJsZW5kRnVuYyhjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3Im
IHRvLCBjb25zdCBDU1NQcm9wZQogICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgY29udGV4dCk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgTGVuZ3RoIGJsZW5kRnVuYyhjb25zdCBMZW5ndGgmIGZyb20s
IGNvbnN0IExlbmd0aCYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250
ZXh0LCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlQWxsKQorc3RhdGljIGlubGlu
ZSBMZW5ndGggYmxlbmRGdW5jKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywg
Y29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQsIFZhbHVlUmFuZ2UgdmFs
dWVSYW5nZSA9IFZhbHVlUmFuZ2U6OkFsbCkKIHsKICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8s
IGNvbnRleHQsIHZhbHVlUmFuZ2UpOwogfQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBpbmxp
bmUgR2FwTGVuZ3RoIGJsZW5kRnVuYyhjb25zdCBHYXBMZW5ndGgmIGZyb20sIGNvbnN0IEdhcExl
bmd0aCYgdG8sIGNvCiB7CiAgICAgaWYgKGZyb20uaXNOb3JtYWwoKSB8fCB0by5pc05vcm1hbCgp
KQogICAgICAgICByZXR1cm4gY29udGV4dC5wcm9ncmVzcyA8IDAuNSA/IGZyb20gOiB0bzsKLSAg
ICByZXR1cm4gYmxlbmQoZnJvbS5sZW5ndGgoKSwgdG8ubGVuZ3RoKCksIGNvbnRleHQsIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgcmV0dXJuIGJsZW5kKGZyb20ubGVuZ3RoKCksIHRvLmxl
bmd0aCgpLCBjb250ZXh0LCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgVGFiU2l6ZSBibGVuZEZ1bmMoY29uc3QgVGFiU2l6ZSYgZnJvbSwgY29uc3QgVGFiU2l6
ZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQpAQCAtMTIx
LDggKzEyMSw4IEBAIHN0YXRpYyBpbmxpbmUgVGFiU2l6ZSBibGVuZEZ1bmMoY29uc3QgVGFiU2l6
ZSYgZnJvbSwgY29uc3QgVGFiU2l6ZSYgdG8sIGNvbnN0IENTCiAKIHN0YXRpYyBpbmxpbmUgTGVu
Z3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6
ZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAg
IHJldHVybiB7IGJsZW5kRnVuYyhmcm9tLndpZHRoLCB0by53aWR0aCwgY29udGV4dCwgVmFsdWVS
YW5nZU5vbk5lZ2F0aXZlKSwKLSAgICAgICAgICAgICBibGVuZEZ1bmMoZnJvbS5oZWlnaHQsIHRv
LmhlaWdodCwgY29udGV4dCwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKSB9OworICAgIHJldHVybiB7
IGJsZW5kRnVuYyhmcm9tLndpZHRoLCB0by53aWR0aCwgY29udGV4dCwgVmFsdWVSYW5nZTo6Tm9u
TmVnYXRpdmUpLAorICAgICAgICBibGVuZEZ1bmMoZnJvbS5oZWlnaHQsIHRvLmhlaWdodCwgY29u
dGV4dCwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgTGVu
Z3RoUG9pbnQgYmxlbmRGdW5jKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBjb25zdCBMZW5ndGhQ
b2ludCYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQpAQCAt
NDAzLDcgKzQwMyw3IEBAIHN0YXRpYyBpbmxpbmUgVGV4dERlY29yYXRpb25UaGlja25lc3MgYmxl
bmRGdW5jKGNvbnN0IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzJiBmCiAgICAgcmV0dXJuIFRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpOwogfQogCi1zdGF0aWMgaW5saW5l
IExlbmd0aEJveCBibGVuZEZ1bmMoY29uc3QgTGVuZ3RoQm94JiBmcm9tLCBjb25zdCBMZW5ndGhC
b3gmIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCwgVmFsdWVS
YW5nZSB2YWx1ZVJhbmdlID0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKQorc3RhdGljIGlubGluZSBM
ZW5ndGhCb3ggYmxlbmRGdW5jKGNvbnN0IExlbmd0aEJveCYgZnJvbSwgY29uc3QgTGVuZ3RoQm94
JiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQsIFZhbHVlUmFu
Z2UgdmFsdWVSYW5nZSA9IFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKQogewogICAgIExlbmd0aEJv
eCByZXN1bHQoYmxlbmRGdW5jKGZyb20udG9wKCksIHRvLnRvcCgpLCBjb250ZXh0LCB2YWx1ZVJh
bmdlKSwKICAgICAgICAgICAgICAgICAgICAgIGJsZW5kRnVuYyhmcm9tLnJpZ2h0KCksIHRvLnJp
Z2h0KCksIGNvbnRleHQsIHZhbHVlUmFuZ2UpLApAQCAtNzkxLDcgKzc5MSw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZvaWQgYmxlbmQoUmVuZGVyU3R5bGUmIGRlc3RpbmF0aW9uLCBjb25zdCBSZW5k
ZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJs
ZW5kaW5nQ29udGV4dCYgY29udGV4dCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGF1
dG8gdmFsdWVSYW5nZSA9IG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6Ok5lZ2F0aXZlTGVuZ3Roc0Fy
ZUludmFsaWQpID8gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlIDogVmFsdWVSYW5nZUFsbDsKKyAgICAg
ICAgYXV0byB2YWx1ZVJhbmdlID0gbV9mbGFncy5jb250YWlucyhGbGFnczo6TmVnYXRpdmVMZW5n
dGhzQXJlSW52YWxpZCkgPyBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSA6IFZhbHVlUmFuZ2U6OkFs
bDsKICAgICAgICAgKGRlc3RpbmF0aW9uLiptX3NldHRlcikoYmxlbmRGdW5jKHZhbHVlKGZyb20p
LCB2YWx1ZSh0byksIGNvbnRleHQsIHZhbHVlUmFuZ2UpKTsKICAgICB9CiAKQEAgLTg5OCw3ICs4
OTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgKGRlc3RpbmF0aW9uLiptX3NldHRlcikoY29u
dGV4dC5wcm9ncmVzcyA/IExlbmd0aEJveCh2YWx1ZSh0bykpIDogTGVuZ3RoQm94KHZhbHVlKGZy
b20pKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYXV0byB2YWx1
ZVJhbmdlID0gbV9mbGFncy5jb250YWlucyhGbGFnczo6QWxsb3dzTmVnYXRpdmVWYWx1ZXMpID8g
VmFsdWVSYW5nZUFsbCA6IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZTsKKyAgICAgICAgYXV0byB2YWx1
ZVJhbmdlID0gbV9mbGFncy5jb250YWlucyhGbGFnczo6QWxsb3dzTmVnYXRpdmVWYWx1ZXMpID8g
VmFsdWVSYW5nZTo6QWxsIDogVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmU7CiAgICAgICAgIChkZXN0
aW5hdGlvbi4qbV9zZXR0ZXIpKGJsZW5kRnVuYyh2YWx1ZShmcm9tKSwgdmFsdWUodG8pLCBjb250
ZXh0LCB2YWx1ZVJhbmdlKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAKaW5kZXggYjI3ZjM3MDQxMjJmYTY0MjUzN2FkMjYzOWQ0NTE4YTExOWY0
NDU4MC4uOWNmNjI5MmU0Mzg5ZWMyMzljZTAxOGU1NTI2NTRmYzBkZTIzNWExOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMjE0Niw3ICsyMTQ2LDcg
QEAgUmVmUHRyPENTU0NhbGNWYWx1ZT4gQ1NTQ2FsY1ZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVJRCBm
dW5jdGlvbiwgY29uc3QgQ1NTUGFyc2VyVG8KICAgICBhdXRvIGV4cHJlc3Npb24gPSBwYXJzZXIu
cGFyc2VDYWxjKHRva2VucywgZnVuY3Rpb24pOwogICAgIGlmICghZXhwcmVzc2lvbikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZihuZXcgQ1NTQ2Fs
Y1ZhbHVlKGV4cHJlc3Npb24ucmVsZWFzZU5vbk51bGwoKSwgcmFuZ2UgIT0gVmFsdWVSYW5nZUFs
bCkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3IENTU0NhbGNWYWx1ZShleHByZXNz
aW9uLnJlbGVhc2VOb25OdWxsKCksIHJhbmdlICE9IFZhbHVlUmFuZ2U6OkFsbCkpOwogICAgIExP
R19XSVRIX1NUUkVBTShDYWxjLCBzdHJlYW0gPDwgIkNTU0NhbGNWYWx1ZTo6Y3JlYXRlICIgPDwg
KnJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5oCmluZGV4IDc4ODhjZDA4MWQ3N2E4M2U5NmViYWM3MmQxM2I2NzE4ODFm
Y2RjYmQuLjJhYjA5YjM0NWY2MDA0NTAzOTE3ODZkNjQxYWNlMjY1NzlhMjQzMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaApAQCAtMTIyLDEyICsxMjIsMTIgQEAg
aW5saW5lIENTU0NhbGNWYWx1ZTo6Q1NTQ2FsY1ZhbHVlKFJlZjxDU1NDYWxjRXhwcmVzc2lvbk5v
ZGU+JiYgZXhwcmVzc2lvbiwgYm9vbAogaW5saW5lIFJlZjxDYWxjdWxhdGlvblZhbHVlPiBDU1ND
YWxjVmFsdWU6OmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYgY29udmVyc2lvbkRhdGEpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENhbGN1bGF0aW9u
VmFsdWU6OmNyZWF0ZShtX2V4cHJlc3Npb24tPmNyZWF0ZUNhbGNFeHByZXNzaW9uKGNvbnZlcnNp
b25EYXRhKSwKLSAgICAgICAgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUgPyBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUgOiBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgbV9zaG91bGRDbGFtcFRvTm9u
TmVnYXRpdmUgPyBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSA6IFZhbHVlUmFuZ2U6OkFsbCk7CiB9
CiAKIGlubGluZSB2b2lkIENTU0NhbGNWYWx1ZTo6c2V0UGVybWl0dGVkVmFsdWVSYW5nZShWYWx1
ZVJhbmdlIHJhbmdlKQogewotICAgIG1fc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlID0gcmFuZ2Ug
IT0gVmFsdWVSYW5nZUFsbDsKKyAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSA9IHJhbmdl
ICE9IFZhbHVlUmFuZ2U6OkFsbDsKIH0KIAogaW5saW5lIHZvaWQgQ1NTQ2FsY1ZhbHVlOjpjb2xs
ZWN0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+
JiB2YWx1ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV4cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9u
LmNwcAppbmRleCBmZmVlYzg2ZDM0MDk1MTlhNTQ1MjNkZmZkY2EwYTBjMTBkNDUyZGMyLi43OTNj
MDFiNWY3MWEyNzg4YjdjNGMzMWU3ZWM2ZTk0NzBlNGI2ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAKQEAgLTE4NiwxMSArMTg2LDExIEBAIGlubGlu
ZSBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVGaXJzdFZhbHVlKGNvbnN0IFN0cmlu
ZyYgbWVkaWFGZWF0dXJlLCBDCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAgIGlmICghZmVh
dHVyZUV4cGVjdGluZ1Bvc2l0aXZlSW50ZWdlcihtZWRpYUZlYXR1cmUpICYmICFpc0FzcGVjdFJh
dGlvRmVhdHVyZShtZWRpYUZlYXR1cmUpKSB7Ci0gICAgICAgIGlmIChhdXRvIHZhbHVlID0gQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpKQorICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IENTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6Y29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpKQogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAotICAgIGlmIChhdXRvIHZhbHVlID0gQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRN
b2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpKQorICAgIGlmIChhdXRvIHZhbHVlID0gQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2Rl
LCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSkpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAg
IGlmIChhdXRvIHZhbHVlID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUmVzb2x1
dGlvbihyYW5nZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwCmluZGV4IDQ1NGRiMTY1ZTJmYzcwYjJjZjFkNzg2ZGEwYzQ3YTIzM2RlYmY1YmYu
LjJjYmI4MDJkNGMwMWEyZTRiMDcxYWUxMjhhMTI5YjUxOTZkZDZmNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0zNTYsNyArMzU2
LDcgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZVRyYW5zZm9ybU9yaWdpbihib29s
IGltcG9ydGFudCkKICAgICBpZiAoYXV0byByZXN1bHRYWSA9IGNvbnN1bWVPbmVPclR3b1ZhbHVl
ZFBvc2l0aW9uQ29vcmRpbmF0ZXMobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVp
cms6OkZvcmJpZCkpIHsKICAgICAgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwogICAg
ICAgICBib29sIGF0RW5kID0gbV9yYW5nZS5hdEVuZCgpOwotICAgICAgICBhdXRvIHJlc3VsdFog
PSBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICAgICAgYXV0byByZXN1bHRaID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICAgICAgYm9vbCBoYXNaID0gcmVzdWx0WjsKICAg
ICAgICAgaWYgKCFoYXNaICYmICFhdEVuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTk3Niw3ICs5NzYsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lTGV0dGVyU3Bh
Y2luZyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFycwogICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVu
dChyYW5nZSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICByZXR1cm4g
Y29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsLCBVbml0
bGVzc1F1aXJrOjpBbGxvdyk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVX
b3JkU3BhY2luZyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQpAQCAtOTg0LDE1ICs5ODQsMTUgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZVdvcmRTcGFjaW5nKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXIK
ICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHJl
dHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogICAgIAotICAgIHJldHVybiBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1
aXJrOjpBbGxvdyk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwogfQog
ICAgIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRhYlNpemUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKLSAgICBhdXRv
IHRhYlNpemUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwor
ICAgIGF1dG8gdGFiU2l6ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2U6Ok5vbk5l
Z2F0aXZlKTsKICAgICBpZiAodGFiU2l6ZSkKICAgICAgICAgcmV0dXJuIHRhYlNpemU7Ci0gICAg
cmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25O
ZWdhdGl2ZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKIH0KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJ
TkcpCkBAIC0xMDAyLDcgKzEwMDIsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
VGV4dFNpemVBZGp1c3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcgogICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKLSAg
ICByZXR1cm4gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cisg
ICAgcmV0dXJuIGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7
CiB9CiAjZW5kaWYKIApAQCAtMTAxMCw3ICsxMDEwLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUZvbnRTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2QKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPj0gQ1NTVmFsdWVYeFNtYWxsICYmIHJh
bmdlLnBlZWsoKS5pZCgpIDw9IENTU1ZhbHVlTGFyZ2VyKQogICAgICAgICByZXR1cm4gY29uc3Vt
ZUlkZW50KHJhbmdlKTsKLSAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7CisgICAgcmV0
dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFu
Z2U6Ok5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVMaW5lSGVpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCkBAIC0xMDE4LDEwICsxMDE4LDEwIEBAIHN0YXRp
YyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMaW5lSGVpZ2h0KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDCiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
Tm9ybWFsKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKIAotICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdodCA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5l
SGVpZ2h0ID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwog
ICAgIGlmIChsaW5lSGVpZ2h0KQogICAgICAgICByZXR1cm4gbGluZUhlaWdodDsKLSAgICByZXR1
cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmdzPgpAQCAtMTA2Myw4ICsxMDYzLDggQEAgc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGNvbnN1bWVTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2QKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAoUmVmUHRyPENT
U1ZhbHVlPiB3aWR0aCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSkpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBoZWlnaHQgPSBj
b25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUp
OworICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IHdpZHRoID0gY29uc3VtZUxlbmd0aChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpKSB7CisgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZT4gaGVpZ2h0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogICAgICAgICByZXN1bHQtPmFwcGVuZCh3aWR0aC5y
ZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKGhlaWdodCkKICAgICAgICAgICAgIHJlc3Vs
dC0+YXBwZW5kKGhlaWdodC5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTEwOTQsNyArMTA5NCw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0SW5kZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNCiAKICAgICBkbyB7CiAgICAgICAgIGlmICghbGVuZ3Ro
T3JQZXJjZW50YWdlKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiB0ZXh0SW5k
ZW50ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpKSB7CisgICAgICAgICAgICBpZiAoUmVmUHRy
PENTU1ZhbHVlPiB0ZXh0SW5kZW50ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdykpIHsKICAg
ICAgICAgICAgICAgICBsZW5ndGhPclBlcmNlbnRhZ2UgPSB0ZXh0SW5kZW50OwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgc3Rh
dGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVNjcm9sbFBhZGRpbmcoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnMKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKLSAgICByZXR1
cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogfQogCiBzdGF0aWMgYm9v
bCB2YWxpZFdpZHRoT3JIZWlnaHRLZXl3b3JkKENTU1ZhbHVlSUQgaWQsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIC8qY29udGV4dCovKQpAQCAtMTE0NiwyOCArMTE0NiwyOCBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lTWF4V2lkdGhPckhlaWdodChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgY29ucwogewogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5v
bmUgfHwgdmFsaWRXaWR0aE9ySGVpZ2h0S2V5d29yZChyYW5nZS5wZWVrKCkuaWQoKSwgY29udGV4
dCkpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIHJldHVybiBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSwgdW5pdGxlc3MpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdl
LCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7CiB9CiAK
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVXaWR0aE9ySGVpZ2h0KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBVbml0bGVz
c1F1aXJrIHVuaXRsZXNzID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKQogewogICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsaWRXaWR0aE9ySGVpZ2h0S2V5d29y
ZChyYW5nZS5wZWVrKCkuaWQoKSwgY29udGV4dCkpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOwotICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250
ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgdW5pdGxlc3MpOworICAgIHJldHVybiBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5v
bk5lZ2F0aXZlLCB1bml0bGVzcyk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVNYXJnaW5Pck9mZnNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQogewogICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOwotICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCB1bml0bGVzcyk7CisgICAgcmV0dXJuIGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFsbCwgdW5p
dGxlc3MpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQ2xp
cENvbXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQogewogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8p
CiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIHJldHVybiBjb25zdW1l
TGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJr
OjpBbGxvdyk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2U6OkFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwogfQogCiBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lQ2xpcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRvdWNoQWN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQogCiBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTGluZUNsYW1w
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewotICAgIGlmIChhdXRvIGNsYW1wVmFsdWUg
PSBjb25zdW1lUGVyY2VudChyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKSkKKyAgICBpZiAo
YXV0byBjbGFtcFZhbHVlID0gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2U6Ok5vbk5l
Z2F0aXZlKSkKICAgICAgICAgcmV0dXJuIGNsYW1wVmFsdWU7CiAgICAgLy8gV2hlbiBzcGVjaWZ5
aW5nIG51bWJlciBvZiBsaW5lcywgZG9uJ3QgYWxsb3cgMCBhcyBhIHZhbGlkIHZhbHVlLgogICAg
IHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJhbmdlKTsKQEAgLTEyNDIsNyArMTI0Miw3
IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVIeXBoZW5hdGVMaW1pdChDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgp
ID09IHZhbHVlSUQpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIHJl
dHVybiBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIHJl
dHVybiBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiB9CiAK
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb2x1bW5XaWR0aChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFs
dWU+IGNvbnN1bWVDb2x1bW5XaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CiAgICAgLy8gQWx3YXlzIHBhcnNlIGxlbmd0
aHMgaW4gc3RyaWN0IG1vZGUgaGVyZSwgc2luY2UgaXQgd291bGQgYmUgYW1iaWd1b3VzIG90aGVy
d2lzZSB3aGVuIHVzZWQgaW4KICAgICAvLyB0aGUgJ2NvbHVtbnMnIHNob3J0aGFuZCBwcm9wZXJ0
eS4KLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbHVtbldpZHRoID0gY29uc3VtZUxl
bmd0aChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbHVtbldpZHRoID0gY29uc3VtZUxlbmd0aChy
YW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogICAgIGlm
ICghY29sdW1uV2lkdGggfHwgY29sdW1uV2lkdGgtPmlzWmVybygpLnZhbHVlT3IoZmFsc2UpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTI2OSw3ICsxMjY5LDcgQEAgc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUdhcExlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW8KIHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVO
b3JtYWwpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIHJldHVybiBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8
Q1NTVmFsdWU+IGNvbnN1bWVDb2x1bW5TcGFuKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpA
QCAtMTI4NCw5ICsxMjg0LDkgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVpvb20o
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckMKICAgICBpZiAodG9r
ZW4udHlwZSgpID09IElkZW50VG9rZW4pCiAgICAgICAgIHpvb20gPSBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVOb3JtYWwsIENTU1ZhbHVlUmVzZXQsIENTU1ZhbHVlRG9jdW1lbnQ+KHJhbmdlKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgem9vbSA9IGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUpOworICAgICAgICB6b29tID0gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVl
UmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKICAgICAgICAgaWYgKCF6b29tKQotICAgICAgICAgICAgem9v
bSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAg
ICAgICB6b29tID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUp
OwogICAgIH0KICAgICByZXR1cm4gem9vbTsKIH0KQEAgLTEyOTUsNyArMTI5NSw3IEBAIHN0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVBbmltYXRpb25JdGVyYXRpb25Db3VudChDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlSW5maW5pdGUpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIHJl
dHVybiBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIHJl
dHVybiBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiB9CiAK
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVBbmltYXRpb25OYW1lKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQpAQCAtMTUwMSwxMiArMTUwMSwxMiBAQCBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lQW5pbWF0aW9uVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NT
UGFyc2VyVAogICAgIHN3aXRjaCAocHJvcGVydHkpIHsKICAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uRGVsYXk6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKLSAgICAg
ICAgcmV0dXJuIGNvbnN1bWVUaW1lKHJhbmdlLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VBbGws
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgIHJldHVybiBjb25zdW1lVGltZShyYW5n
ZSwgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRpcmVjdGlvbjoKICAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVBbHRlcm5hdGUsIENTU1ZhbHVl
UmV2ZXJzZSwgQ1NTVmFsdWVBbHRlcm5hdGVSZXZlcnNlPihyYW5nZSk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9u
RHVyYXRpb246Ci0gICAgICAgIHJldHVybiBjb25zdW1lVGltZShyYW5nZSwgY29udGV4dC5tb2Rl
LCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAg
IHJldHVybiBjb25zdW1lVGltZShyYW5nZSwgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25O
ZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKICAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uRmlsbE1vZGU6CiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVOb25l
LCBDU1NWYWx1ZUZvcndhcmRzLCBDU1NWYWx1ZUJhY2t3YXJkcywgQ1NTVmFsdWVCb3RoPihyYW5n
ZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgpAQCAtMTcz
MCw3ICsxNzMwLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUxp
bmVXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1MKICAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmlkKCk7CiAgICAgaWYgKGlkID09IENTU1ZhbHVlVGhpbiB8fCBpZCA9
PSBDU1NWYWx1ZU1lZGl1bSB8fCBpZCA9PSBDU1NWYWx1ZVRoaWNrKQogICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKLSAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7CisgICAgcmV0dXJu
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0
aXZlLCB1bml0bGVzcyk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNv
bnN1bWVCb3JkZXJXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQpAQCAtMTc1MywxNCArMTc1
MywxNCBAQCBzdGF0aWMgYm9vbCBjb25zdW1lVHJhbnNsYXRlM2QoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZQogICAgIHVuc2lnbmVkIG51bWJlck9mQXJn
dW1lbnRzID0gMjsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlOwogICAgIGRvIHsK
LSAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAg
ICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOwogICAgICAgICBpZiAoIWNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfSB3aGlsZSAoLS1udW1iZXJPZkFyZ3VtZW50cyk7Ci0gICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lTGVuZ3RoKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlOjpBbGwpOwogICAgIGlmICghcGFyc2VkVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CkBAIC0xNzcwLDcg
KzE3NzAsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lVHJhbnNsYXRlM2QoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZQogc3RhdGljIGJvb2wgY29uc3VtZU51
bWJlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgUmVmUHRyPENTU0Z1bmN0aW9uVmFsdWU+
JiB0cmFuc2Zvcm1WYWx1ZSwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMpCiB7CiAgICAgZG8g
ewotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlID0gY29uc3Vt
ZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZTo6QWxs
KTsKICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChwYXJzZWRWYWx1ZS5yZWxlYXNlTm9uTnVs
bCgpKTsKQEAgLTE3ODIsNyArMTc4Miw3IEBAIHN0YXRpYyBib29sIGNvbnN1bWVOdW1iZXJzKENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIFJlZlB0cjxDU1NGdW5jdGlvblZhbHVlPiYKIAogc3Rh
dGljIGJvb2wgY29uc3VtZVBlcnNwZWN0aXZlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgUmVmUHRyPENTU0Z1bmN0aW9uVmFsdWU+JiB0cmFu
c2Zvcm1WYWx1ZSkKIHsKLSAgICBpZiAoYXV0byBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgo
YXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKSkgeworICAgIGlmIChh
dXRvIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlOjpOb25OZWdhdGl2ZSkpIHsKICAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChw
YXJzZWRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTgyNywxMiArMTgyNywxMiBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
VHJhbnNmb3JtVmFsdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcgogICAgIGNh
c2UgQ1NTVmFsdWVTY2FsZVk6CiAgICAgY2FzZSBDU1NWYWx1ZVNjYWxlWjoKICAgICBjYXNlIENT
U1ZhbHVlU2NhbGU6Ci0gICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBW
YWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3Ms
IFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVTY2Fs
ZSAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CiAgICAgICAgICAg
ICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7Ci0gICAgICAgICAgICBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZTo6QWxsKTsKICAg
ICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KQEAgLTE4NDQsMTggKzE4NDQsMTggQEAgc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXIKICAgICBjYXNlIENTU1ZhbHVlVHJhbnNsYXRlWDoKICAgICBjYXNlIENTU1ZhbHVlVHJh
bnNsYXRlWToKICAgICBjYXNlIENTU1ZhbHVlVHJhbnNsYXRlOgotICAgICAgICBwYXJzZWRWYWx1
ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5n
ZUFsbCk7CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdz
LCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOwogICAgICAgICBpZiAoIXBhcnNlZFZh
bHVlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmIChmdW5jdGlvbklk
ID09IENTU1ZhbHVlVHJhbnNsYXRlICYmIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
YXJncykpIHsKICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVl
KTsKLSAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdz
LCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
OjpBbGwpOwogICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Zh
bHVlVHJhbnNsYXRlWjoKLSAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoKGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVMZW5ndGgoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZU1hdHJpeDoKICAgICBjYXNlIENTU1ZhbHVlTWF0
cml4M2Q6CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lVHJhbnNsYXRlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwogICAg
IC8vIHZhbHVlIGlzIG1pc3NpbmcsIGl0IGRlZmF1bHRzIHRvIDBweC4gSWYgdGhyZWUgdmFsdWVz
IGFyZSBnaXZlbiwgdGhpcyBzcGVjaWZpZXMgYSAzZCB0cmFuc2xhdGlvbiwgZXF1aXZhbGVudCB0
byB0aGUKICAgICAvLyB0cmFuc2xhdGUzZCgpIGZ1bmN0aW9uLgogCi0gICAgUmVmUHRyPENTU1Zh
bHVlPiB4ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZUFsbCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB4ID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICBpZiAoIXgp
CiAgICAgICAgIHJldHVybiBsaXN0OwogCkBAIC0xOTI1LDcgKzE5MjUsNyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lVHJhbnNsYXRlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNbwogICAgIGxpc3QtPmFwcGVuZCgqeCk7CiAKICAgICByYW5nZS5jb25zdW1l
V2hpdGVzcGFjZSgpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4geSA9IGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIFJlZlB0cjxD
U1NWYWx1ZT4geSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgaWYgKCF5KQogICAgICAgICByZXR1cm4gbGlzdDsKIApA
QCAtMTkzOCw3ICsxOTM4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRyYW5z
bGF0ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW8KICAgICB9CiAKICAg
ICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4geiA9IGNv
bnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4geiA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZh
bHVlUmFuZ2U6OkFsbCk7CiAKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHopKSB7CiAg
ICAgICAgIGF1dG8mIHpQcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pigqeik7CkBAIC0xOTcwLDEzICsxOTcwLDEzIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNv
bnN1bWVTY2FsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSkKIAog
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHggPSBjb25zdW1lTnVtYmVyKHJh
bmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHggPSBjb25zdW1lTnVt
YmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpBbGwpOwogICAgIGlmICgheCkKICAgICAgICAgcmV0dXJu
IGxpc3Q7CiAgICAgbGlzdC0+YXBwZW5kKCp4KTsKICAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFj
ZSgpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiB5ID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFs
dWVSYW5nZUFsbCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB5ID0gY29uc3VtZU51bWJlcihyYW5n
ZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICBpZiAoIXkpCiAgICAgICAgIHJldHVybiBsaXN0Owog
CkBAIC0xOTg1LDcgKzE5ODUsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU2Nh
bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUpCiAgICAgICAgIGxp
c3QtPmFwcGVuZCgqeSk7CiAgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKIAotICAgIFJl
ZlB0cjxDU1NWYWx1ZT4geiA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4geiA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2U6
OkFsbCk7CiAgICAgaWYgKCF6KQogICAgICAgICByZXR1cm4gbGlzdDsKICAgICBpZiAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp6KS5mbG9hdFZhbHVlKCkgIT0gMS4wKSB7CkBAIC0yMDIz
LDcgKzIwMjMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUm90YXRlKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlCiAKICAgICB3aGlsZSAoIXJhbmdl
LmF0RW5kKCkpIHsKICAgICAgICAgLy8gRmlyc3QsIGF0dGVtcHQgdG8gcGFyc2UgYSBudW1iZXIs
IHdoaWNoIG1pZ2h0IGJlIGluIGEgc2VyaWVzIG9mIDMgc3BlY2lmeWluZyB0aGUgcm90YXRpb24g
YXhpcy4KLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1i
ZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNl
ZFZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICAgICAg
aWYgKHBhcnNlZFZhbHVlKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBlbmNvdW50ZXJlZCBh
biBheGlzIGlkZW50aWZpZXIsIHRoZW4gdGhpcyB2YWx1cyBpcyBpbnZhbGlkLgogICAgICAgICAg
ICAgaWYgKGF4aXNJZGVudGlmaWVyKQpAQCAtMjExMiw3ICsyMTEyLDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aW9uTG9uZ2hhbmQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmEKICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsK
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocGVyY2VudCwgQ1NTVW5p
dFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIHJldHVy
biBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
OjpBbGwpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9z
aXRpb25YKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCkBAIC0yMjIwLDcgKzIyMjAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lRmxleEJhc2lzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwogICAg
IC8vIEZJWE1FOiBTdXBwb3J0IGludHJpbnNpYyBkaW1lbnNpb25zIHRvby4KICAgICBpZiAocmFu
Z2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gY29uc3VtZUlk
ZW50KHJhbmdlKTsKLSAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICByZXR1cm4gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRp
dmUpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lS2VybmluZyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBtb2RlKQpAQCAtMjIyOCw3ICsyMjI4
LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUtlcm5pbmcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3Vs
dCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9ybWFsPihyYW5nZSk7CiAg
ICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gY29uc3Vt
ZUxlbmd0aChyYW5nZSwgbW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cp
OworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBtb2RlLCBWYWx1ZVJhbmdlOjpBbGws
IFVuaXRsZXNzUXVpcms6OkFsbG93KTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZVN0cm9rZURhc2hhcnJheShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTIyMzks
NyArMjIzOSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTdHJva2VEYXNoYXJy
YXkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBkYXNoZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZG8g
ewotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGRhc2ggPSBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUp
OworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGRhc2ggPSBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2
ZSk7CiAgICAgICAgIGlmICghZGFzaCB8fCAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShyYW5nZSkgJiYgcmFuZ2UuYXRFbmQoKSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgZGFzaGVzLT5hcHBlbmQoZGFzaC5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTIyNTIs
MTQgKzIyNTIsMTQgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUJh
c2VsaW5lU2hpZnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UKICAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmlkKCk7CiAgICAgaWYgKGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwg
aWQgPT0gQ1NTVmFsdWVTdWIgfHwgaWQgPT0gQ1NTVmFsdWVTdXBlcikKICAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7Ci0gICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
cmFuZ2UsIFNWR0F0dHJpYnV0ZU1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIHJldHVybiBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlOjpB
bGwpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUnhPclJ5
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUp
CiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7Ci0gICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxl
c3NRdWlyazo6Rm9yYmlkKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6
OkZvcmJpZCk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDdXJzb3IoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
IGJvb2wgaW5RdWlya3NNb2RlKQpAQCAtMjM4OCw3ICsyMzg4LDcgQEAgc3RhdGljIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBlcnNwZWN0aXZlKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLAogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogCi0gICAgaWYgKGF1dG8gcGFyc2VkVmFs
dWUgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKSkg
eworICAgIGlmIChhdXRvIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsKSkgewogICAgICAgICBpZiAoIXBhcnNlZFZhbHVlLT5p
c05lZ2F0aXZlKCkudmFsdWVPcihmYWxzZSkpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VkVmFs
dWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ2MSwxMCArMjQ2MSwxMCBAQCBzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lT3ZlcnNjcm9sbEJlaGF2aW9yKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQm9yZGVy
UmFkaXVzQ29ybmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCiB7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1
ZTEgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFs
dWUxID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZTo6Tm9uTmVnYXRpdmUpOwogICAgIGlmICghcGFyc2VkVmFsdWUxKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlMiA9
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTIg
PSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
OjpOb25OZWdhdGl2ZSk7CiAgICAgaWYgKCFwYXJzZWRWYWx1ZTIpCiAgICAgICAgIHBhcnNlZFZh
bHVlMiA9IHBhcnNlZFZhbHVlMTsKICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWly
KHBhcnNlZFZhbHVlMS5yZWxlYXNlTm9uTnVsbCgpLCBwYXJzZWRWYWx1ZTIucmVsZWFzZU5vbk51
bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOwpAQCAtMjQ3NCwy
MSArMjQ3NCwyMSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVGV4dFVuZGVybGlu
ZU9mZnNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQwogewogICAgIGlmIChhdXRvIHZh
bHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bz4ocmFuZ2UpKQogICAgICAgICByZXR1cm4g
dmFsdWU7Ci0gICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZh
bHVlUmFuZ2VBbGwpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJN
b2RlLCBWYWx1ZVJhbmdlOjpBbGwpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lVGV4dERlY29yYXRpb25UaGlja25lc3MoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICBpZiAoYXV0byB2YWx1ZSA9IGNvbnN1
bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlRnJvbUZvbnQ+KHJhbmdlKSkKICAgICAgICAg
cmV0dXJuIHZhbHVlOwotICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJN
b2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZVZlcnRpY2FsQWxpZ24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHBhcnNlZFZhbHVlID0gY29uc3VtZUlkZW50UmFuZ2UocmFuZ2UsIENTU1ZhbHVl
QmFzZWxpbmUsIENTU1ZhbHVlV2Via2l0QmFzZWxpbmVNaWRkbGUpOwogICAgIGlmICghcGFyc2Vk
VmFsdWUpCi0gICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwor
ICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwogICAgIHJl
dHVybiBwYXJzZWRWYWx1ZTsKIH0KIApAQCAtMjQ5Niw3ICsyNDk2LDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVNoYXBlUmFkaXVzKENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MsIEMKIHsKICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ2xvc2VzdFNpZGUs
IENTU1ZhbHVlRmFydGhlc3RTaWRlPihhcmdzLnBlZWsoKS5pZCgpKSkKICAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChhcmdzKTsKLSAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChh
cmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIHJldHVybiBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6Ok5v
bk5lZ2F0aXZlKTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlQ2lyY2xlPiBjb25z
dW1lQmFzaWNTaGFwZUNpcmNsZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQpAQCAtMjU0OCwxMCArMjU0OCwxMCBAQCBzdGF0aWMgUmVm
UHRyPENTU0Jhc2ljU2hhcGVQb2x5Z29uPiBjb25zdW1lQmFzaWNTaGFwZVBvbHlnb24oQ1NTUGFy
c2VyVG9rZW5SYW5nZQogICAgIH0KIAogICAgIGRvIHsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB4TGVuZ3RoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0
Lm1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHhMZW5ndGggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFs
dWVSYW5nZTo6QWxsKTsKICAgICAgICAgaWYgKCF4TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geUxlbmd0aCA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5TGVuZ3RoID0gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgICAg
IGlmICgheUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBzaGFw
ZS0+YXBwZW5kUG9pbnQoeExlbmd0aC5yZWxlYXNlTm9uTnVsbCgpLCB5TGVuZ3RoLnJlbGVhc2VO
b25OdWxsKCkpOwpAQCAtMjU5Nyw3ICsyNTk3LDcgQEAgc3RhdGljIGJvb2wgY29uc3VtZVJhZGlp
KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaG9yaXpvbnRhbFJhZGlpWzRdLCBSZWZQdHI8Q1MK
IHsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IDQgJiYgIXJhbmdlLmF0RW5k
KCkgJiYgcmFuZ2UucGVlaygpLnR5cGUoKSAhPSBEZWxpbWl0ZXJUb2tlbjsgKytpKSB7Ci0gICAg
ICAgIGhvcml6b250YWxSYWRpaVtpXSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGhvcml6b250YWxS
YWRpaVtpXSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZh
bHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKICAgICAgICAgaWYgKCFob3Jpem9udGFsUmFkaWlbaV0p
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjYxOCw3ICsyNjE4LDcgQEAg
c3RhdGljIGJvb2wgY29uc3VtZVJhZGlpKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaG9yaXpv
bnRhbFJhZGlpWzRdLCBSZWZQdHI8Q1MKICAgICAgICAgaWYgKCFjb25zdW1lU2xhc2hJbmNsdWRp
bmdXaGl0ZXNwYWNlKHJhbmdlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
Zm9yIChpID0gMDsgaSA8IDQgJiYgIXJhbmdlLmF0RW5kKCk7ICsraSkgewotICAgICAgICAgICAg
dmVydGljYWxSYWRpaVtpXSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICB2ZXJ0aWNhbFJhZGlp
W2ldID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZTo6Tm9uTmVnYXRpdmUpOwogICAgICAgICAgICAgaWYgKCF2ZXJ0aWNhbFJhZGlpW2ldKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMjYzMywxNiArMjYz
MywxNiBAQCBzdGF0aWMgYm9vbCBjb25zdW1lUmFkaWkoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBob3Jpem9udGFsUmFkaWlbNF0sIFJlZlB0cjxDUwogc3RhdGljIFJlZlB0cjxDU1NCYXNpY1No
YXBlSW5zZXQ+IGNvbnN1bWVCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJn
cywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZWZQdHI8Q1NTQmFz
aWNTaGFwZUluc2V0PiBzaGFwZSA9IENTU0Jhc2ljU2hhcGVJbnNldDo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB0b3AgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFy
Z3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB0b3AgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwg
VmFsdWVSYW5nZTo6QWxsKTsKICAgICBpZiAoIXRvcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByaWdodCA9IGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHJpZ2h0ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250
ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBib3R0b207CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsZWZ0OwogICAgIGlmIChy
aWdodCkgewotICAgICAgICBib3R0b20gPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNv
bnRleHQubW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGJvdHRvbSA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOwogICAgICAg
ICBpZiAoYm90dG9tKQotICAgICAgICAgICAgbGVmdCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
YXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgICAgIGxlZnQgPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxs
KTsKICAgICB9CiAgICAgaWYgKGxlZnQpCiAgICAgICAgIHNoYXBlLT51cGRhdGVTaGFwZVNpemU0
VmFsdWVzKHRvcC5yZWxlYXNlTm9uTnVsbCgpLCByaWdodC5yZWxlYXNlTm9uTnVsbCgpLCBib3R0
b20ucmVsZWFzZU5vbk51bGwoKSwgbGVmdC5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTI4NjcsOSAr
Mjg2Nyw5IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCb3JkZXJJbWFnZVNsaWNl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBzbGljZXNbNF0gPSB7IDAgfTsKIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCA0OyArK2luZGV4KSB7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
dmFsdWUgPSBjb25zdW1lUGVyY2VudChyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSA9IGNvbnN1bWVQZXJjZW50KHJh
bmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgICAgIGlmICghdmFsdWUpCi0gICAg
ICAgICAgICB2YWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2U6
Ok5vbk5lZ2F0aXZlKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBzbGljZXNbaW5kZXhdID0gdmFsdWU7CkBAIC0yOTA1LDkgKzI5MDUsOSBAQCBzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQm9yZGVySW1hZ2VPdXRzZXQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlOwog
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCA0OyArK2luZGV4KSB7Ci0gICAgICAg
IHZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICAgICAgdmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2
ZSk7CiAgICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVMZW5n
dGgocmFuZ2UsIEhUTUxTdGFuZGFyZE1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAg
ICAgICAgICB2YWx1ZSA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIEhUTUxTdGFuZGFyZE1vZGUsIFZh
bHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBvdXRzZXRzW2luZGV4XSA9IHZhbHVlOwpAQCAtMjkzMiw5ICsyOTMy
LDkgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUJvcmRlckltYWdlV2lkdGgoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCA0OyArK2luZGV4KSB7
Ci0gICAgICAgIHZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlKTsKKyAgICAgICAgdmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpO
b25OZWdhdGl2ZSk7CiAgICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICB2YWx1ZSA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIEhUTUxTdGFuZGFyZE1vZGUsIFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgICAgIHZhbHVlID0g
Y29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5n
ZTo6Tm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiAgICAgICAgIGlmICghdmFs
dWUpCiAgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8+KHJhbmdl
KTsKICAgICAgICAgaWYgKCF2YWx1ZSkKQEAgLTMwMTgsNyArMzAxOCw3IEBAIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVSZWZsZWN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBj
b25zdCBDU1NQYXJzCiAgICAgaWYgKHJhbmdlLmF0RW5kKCkpCiAgICAgICAgIG9mZnNldCA9IENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoMCwgQ1NTVW5pdFR5cGU6OkNTU19Q
WCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG9mZnNldCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
cmFuZ2UsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlk
KTsKKyAgICAgICAgb2Zmc2V0ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY29udGV4
dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiAgICAgICAg
IGlmICghb2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMzA4
NiwxNCArMzA4NiwxNCBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1l
QmFja2dyb3VuZFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQwogICAgIC8vIHRlc3RzIGFz
c3VtZSB0aGF0LiBPdGhlciBicm93c2VyIGVuZ2luZXMgZG9uJ3QgYWxsb3cgaXQgdGhvdWdoLgog
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaG9yaXpvbnRhbCA9IGNvbnN1bWVJZGVudDxD
U1NWYWx1ZUF1dG8+KHJhbmdlKTsKICAgICBpZiAoIWhvcml6b250YWwpCi0gICAgICAgIGhvcml6
b250YWwgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICAgICAgaG9yaXpv
bnRhbCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2U6Ok5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CiAKICAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHZlcnRpY2FsOwogICAgIGlmICghcmFuZ2UuYXRFbmQoKSkgewog
ICAgICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKSAvLyBgYXV0bycg
aXMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZlcnRpY2FsID0gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBV
bml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgICAgICAgICB2ZXJ0aWNhbCA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZl
LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CiAgICAgfSBlbHNlIGlmICghdmVydGljYWwgJiYgcHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSkgewogICAgICAgICAvLyBM
ZWdhY3kgc3ludGF4OiAiLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDEwcHgiIGlzIGVxdWl2YWxl
bnQgdG8gImJhY2tncm91bmQtc2l6ZTogMTBweCAxMHB4Ii4KICAgICAgICAgdmVydGljYWwgPSBo
b3Jpem9udGFsOwpAQCAtMzI0OSw3ICszMjQ5LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZUZpdENvbnRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck0K
IHsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOwogICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOwotICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVuZ3RoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChh
cmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6
OkFsbG93KTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRp
dmUsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKICAgICBpZiAoIWxlbmd0aCB8fCAhYXJncy5hdEVu
ZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByYW5nZSA9IHJhbmdlQ29weTsKQEAg
LTM0NDIsNyArMzQ0Miw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1
bWVHcmlkQnJlYWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShy
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NVbml0
VHlwZTo6Q1NTX0ZSKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
cmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWly
azo6QWxsb3cpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cp
OwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lR3JpZFRyYWNrU2l6ZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpAQCAt
MzY3NiwxMyArMzY3NiwxMyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lSW5pdGlh
bExldHRlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBpZiAoaWRlbnQpCiAgICAg
ICAgIHJldHVybiBpZGVudDsKICAgICAKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhl
aWdodCA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBoZWlnaHQgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBW
YWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgaWYgKCFoZWlnaHQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcG9zaXRpb247
CiAgICAgaWYgKCFyYW5nZS5hdEVuZCgpKSB7Ci0gICAgICAgIHBvc2l0aW9uID0gY29uc3VtZU51
bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgcG9zaXRpb24gPSBj
b25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgICAgIGlm
ICghcG9zaXRpb24gfHwgIXJhbmdlLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9IGVsc2UKQEAgLTM3ODIsMTcgKzM3ODIsMTcgQEAgc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZUhhbmdpbmdQdW5jdHVhdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVdlYmtpdE1hcnF1ZWVJbmNyZW1l
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKIHsKLSAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIHJldHVybiBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpB
bGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQogewotICAgIHJldHVybiBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRp
dmUpOworICAgIHJldHVybiBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdh
dGl2ZSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVXZWJraXRNYXJxdWVl
U3BlZWQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSkKIHsKLSAgICByZXR1cm4gY29uc3VtZVRpbWUocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIHJldHVybiBj
b25zdW1lVGltZShyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUs
IFVuaXRsZXNzUXVpcms6OkFsbG93KTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZUFsdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCkKQEAgLTM4MTUsMTMgKzM4MTUsMTMgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUFzcGVjdFJhdGlvKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIGlm
IChyYW5nZS5hdEVuZCgpKQogICAgICAgICByZXR1cm4gUmVmUHRyPENTU1ZhbHVlPihXVEZNb3Zl
KGF1dG9WYWx1ZSkpOwogCi0gICAgYXV0byBsZWZ0VmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdl
LCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGF1dG8gbGVmdFZhbHVlID0gY29uc3VtZU51
bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogICAgIGlmICghbGVmdFZhbHVl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJvb2wgc2xhc2hTZWVuID0gY29uc3Vt
ZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSk7CiAKLSAgICBhdXRvIHJpZ2h0VmFsdWUg
PSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGF1dG8g
cmlnaHRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZl
KTsKICAgICBpZiAoKHJpZ2h0VmFsdWUgJiYgIXNsYXNoU2VlbikgfHwgKCFyaWdodFZhbHVlICYm
IHNsYXNoU2VlbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghc2xhc2hTZWVu
ICYmICFyaWdodFZhbHVlKSAvLyBBIG1pc3NpbmcgcmlnaHQtaGFuZCBpcyB0cmVhdGVkIGFzIDEu
CkBAIC00MDM3LDcgKzQwMzcsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTUwogICAgICAgICBy
ZXR1cm4gY29uc3VtZUxpbmVIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZzoKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOgotICAgICAgICByZXR1cm4gY29u
c3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUs
IFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlcklu
Y3JlbWVudDoKICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlclJlc2V0OgogICAgICAgICByZXR1
cm4gY29uc3VtZUNvdW50ZXIobV9yYW5nZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlDb3VudGVy
SW5jcmVtZW50ID8gMSA6IDApOwpAQCAtNDA4NSwxMiArNDA4NSwxMiBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHksIENTUwogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0
OgotICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7Cisg
ICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5t
b2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lU3RhcnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVBhZGRpbmdJbmxpbmVFbmQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdCbG9ja1N0YXJ0
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tFbmQ6Ci0gICAgICAgIHJldHVybiBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgIHJldHVybiBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpO
b25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
U2Nyb2xsTWFyZ2luQm90dG9tOgogICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW5MZWZ0
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW5SaWdodDoKQEAgLTQwOTksNyArNDA5
OSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9s
bE1hcmdpbklubGluZUVuZDoKICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2tT
dGFydDoKICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2tFbmQ6Ci0gICAgICAg
IHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdC
b3R0b206CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdMZWZ0OgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nUmlnaHQ6CkBAIC00MTM1LDcgKzQxMzUsNyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIENTUwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6
CiAgICAgICAgIHJldHVybiBjb25zdW1lTGluZUNsYW1wKG1fcmFuZ2UpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOgotICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0
aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6
QWxsb3cpOworICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSwgVmFsdWVSYW5nZTo6QWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TG9jYWxlOgogICAgICAgICByZXR1cm4gY29uc3VtZUF1dG9PclN0cmluZyhtX3Jhbmdl
KTsKQEAgLTQxNzAsOSArNDE3MCw5IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoKICAgICAgICAgcmV0dXJuIGNv
bnN1bWVBbmltYXRpb25Qcm9wZXJ0eUxpc3QocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luOgotICAgICAgICByZXR1cm4gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwg
bV9jb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKICAgICBjYXNlIENTU1By
b3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZDoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXIo
bV9yYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtYmVyKG1f
cmFuZ2UsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9y
ZGluYWxHcm91cDoKICAgICBjYXNlIENTU1Byb3BlcnR5T3JwaGFuczoKICAgICBjYXNlIENTU1By
b3BlcnR5V2lkb3dzOgpAQCAtNDI1MCw3ICs0MjUwLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQ
cm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBD
U1MKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgogICAgICAgICByZXR1cm4gY29u
c3VtZU91dGxpbmVDb2xvcihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU91dGxpbmVPZmZzZXQ6Ci0gICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aDoKICAgICAgICAgcmV0dXJuIGNvbnN1bWVMaW5l
V2lkdGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybToKQEAgLTQyNjQsNyArNDI2NCw3IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2lu
WToKICAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvblkobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aOgotICAgICAgICByZXR1
cm4gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgVmFsdWVSYW5nZUFsbCk7
CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBW
YWx1ZVJhbmdlOjpBbGwpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2xhdGU6CiAgICAgICAg
IGlmICghbV9jb250ZXh0LmluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDI5NCw3ICs0Mjk0LDcgQEAgUmVmUHRyPENT
U1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBDU1MKICAgICAgICAgcmV0dXJuIGNvbnN1bWVGbGV4QmFzaXMobV9yYW5nZSwg
bV9jb250ZXh0Lm1vZGUpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4R3JvdzoKICAgICBjYXNl
IENTU1Byb3BlcnR5RmxleFNocmluazoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXIobV9y
YW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1i
ZXIobV9yYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlTdHJva2VEYXNoYXJyYXk6CiAgICAgICAgIHJldHVybiBjb25zdW1lU3Ryb2tlRGFzaGFycmF5
KG1fcmFuZ2UpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5SdWxlV2lkdGg6CkBAIC00MzA0
LDI2ICs0MzA0LDI2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNl
U2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVN0b3BPcGFjaXR5OgogICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9vZE9wYWNpdHk6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6Ci0gICAgICAgIGlmIChhdXRvIHBhcnNlZFZhbHVlID0g
Y29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlQWxsKSkKKyAgICAgICAgaWYgKGF1dG8g
cGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2U6OkFsbCkpCiAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWU7Ci0gICAgICAgIHJldHVybiBjb25zdW1lUGVy
Y2VudChtX3JhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQZXJj
ZW50KG1fcmFuZ2UsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveEZsZXg6Ci0gICAgICAgIHJldHVybiBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFu
Z2VBbGwpOworICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdl
OjpBbGwpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0OgogICAgICAgICByZXR1
cm4gY29uc3VtZUJhc2VsaW5lU2hpZnQobV9yYW5nZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUtl
cm5pbmc6CiAgICAgICAgIHJldHVybiBjb25zdW1lS2VybmluZyhtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQ6Ci0gICAgICAgIHJl
dHVybiBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAg
ICAgIHJldHVybiBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZl
KTsKICAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVN0cm9rZURhc2hvZmZzZXQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUN4OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlDeToKICAgICBjYXNlIENTU1Byb3BlcnR5WDoKICAgICBjYXNlIENTU1Byb3BlcnR5
WToKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgU1ZHQXR0
cmlidXRlTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgU1ZHQXR0cmlidXRlTW9k
ZSwgVmFsdWVSYW5nZTo6QWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlSOgotICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpG
b3JiaWQpOworICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkZv
cmJpZCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVJ4OgogICAgIGNhc2UgQ1NTUHJvcGVydHlSeToK
ICAgICAgICAgcmV0dXJuIGNvbnN1bWVSeE9yUnkobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOwpA
QCAtNTAxOCwxMiArNTAxOCwxMiBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lRm9u
dFZhcmlhbnRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAKIGJvb2wgQ1NTUHJvcGVydHlQYXJz
ZXI6OmNvbnN1bWVCb3JkZXJTcGFjaW5nKGJvb2wgaW1wb3J0YW50KQogewotICAgIFJlZlB0cjxD
U1NWYWx1ZT4gaG9yaXpvbnRhbFNwYWNpbmcgPSBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsK
KyAgICBSZWZQdHI8Q1NTVmFsdWU+IGhvcml6b250YWxTcGFjaW5nID0gY29uc3VtZUxlbmd0aCht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUsIFVuaXRsZXNz
UXVpcms6OkFsbG93KTsKICAgICBpZiAoIWhvcml6b250YWxTcGFjaW5nKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2ZXJ0aWNhbFNwYWNpbmcgPSBob3Jpem9u
dGFsU3BhY2luZzsKICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgdmVydGljYWxT
cGFjaW5nID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgICAgIHZlcnRpY2FsU3Bh
Y2luZyA9IGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6
Ok5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CiAgICAgaWYgKCF2ZXJ0aWNhbFNw
YWNpbmcgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1By
b3BlcnR5Qm9yZGVyU3BhY2luZywgaG9yaXpvbnRhbFNwYWNpbmcucmVsZWFzZU5vbk51bGwoKSwg
aW1wb3J0YW50KTsKQEAgLTUxMzMsNyArNTEzMyw3IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6
OmNvbnN1bWVGbGV4KGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgICAgIGlmIChtX3Jhbmdl
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgICAgICAgICAgICAgZmxleEJh
c2lzID0gY29uc3VtZUlkZW50KG1fcmFuZ2UpOwogICAgICAgICAgICAgICAgIGlmICghZmxleEJh
c2lzKQotICAgICAgICAgICAgICAgICAgICBmbGV4QmFzaXMgPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
ICAgICAgICAgICAgICAgICBmbGV4QmFzaXMgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGluZGV4ID09IDIgJiYgIW1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCmluZGV4IDU3MDY2
ODRmN2Q2NmM3MWU3OTQxODE2N2YwZTc5N2U5MGE1NGQ1NDkuLjEyODY5ZGFhNGVlZmY1OGJhNTVm
N2M2ZWQyMjdlYjVjZDQ5NjdmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgQ1NT
UGFyc2VyVG9rZW5SYW5nZSBjb25zdW1lRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCiAgICAgcmV0dXJuIGNvbnRlbnRzOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBj
b25zdW1lTnVtYmVyT3JQZXJjZW50RGl2aWRlZEJ5MTAwUmF3KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlQWxsKQorc3RhdGljIE9w
dGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlck9yUGVyY2VudERpdmlkZWRCeTEwMFJhdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlID0gVmFsdWVSYW5n
ZTo6QWxsKQogewogICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2VudFJhdyhyYW5n
ZSwgdmFsdWVSYW5nZSkpCiAgICAgICAgIHJldHVybiAqcGVyY2VudCAvIDEwMC4wOwpAQCAtOTcs
NyArOTcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyT3JQZXJjZW50
RGl2aWRlZEJ5MTAwUmF3KENTU1BhcnNlclRva2VuUmFuZwogLy8gRklYTUU6IGNvbnNpZGVyIHB1
bGxpbmcgaW4gdGhlIHBhcnNpbmcgbG9naWMgZnJvbSBDU1NDYWxjdWxhdGlvblZhbHVlLmNwcC4K
IGNsYXNzIENhbGNQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IENhbGNQYXJzZXIoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENhbGN1bGF0aW9uQ2F0ZWdvcnkgZGVzdGluYXRpb25D
YXRlZ29yeSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlID0gVmFsdWVSYW5nZUFsbCwgQ1NTVmFsdWVQ
b29sJiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpKQorICAgIGV4cGxp
Y2l0IENhbGNQYXJzZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENhbGN1bGF0aW9uQ2F0
ZWdvcnkgZGVzdGluYXRpb25DYXRlZ29yeSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlID0gVmFsdWVS
YW5nZTo6QWxsLCBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkpCiAgICAgICAgIDogbV9zb3VyY2VSYW5nZShyYW5nZSkKICAgICAgICAgLCBtX3Jh
bmdlKHJhbmdlKQogICAgICAgICAsIG1fdmFsdWVQb29sKGNzc1ZhbHVlUG9vbCkKQEAgLTI1Myw3
ICsyNTMsNyBAQCBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYQogewogICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IE51
bWJlclRva2VuKSB7Ci0gICAgICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgIGlmICh2YWx1ZVJhbmdl
ID09IFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkK
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpOwogICAgIH0KQEAgLTMw
Niw3ICszMDYsNyBAQCBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCiAgICAgLy8gIltGb3IgY2FsYygpXSwgdGhlIHVzZWQgdmFsdWUgcmVzdWx0aW5nIGZyb20g
YW4gZXhwcmVzc2lvbiBtdXN0IGJlIGNsYW1wZWQgdG8gdGhlIHJhbmdlIGFsbG93ZWQgaW4gdGhl
IHRhcmdldCBjb250ZXh0LiIKLSAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIENhbGN1
bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlciwgVmFsdWVSYW5nZUFsbCk7CisgICAgQ2FsY1BhcnNlciBj
YWxjUGFyc2VyKHJhbmdlLCBDYWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXIsIFZhbHVlUmFuZ2U6
OkFsbCk7CiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY2FsY1BhcnNlci5jb25zdW1lTnVtYmVyUmF3
KCk7IHJlc3VsdAogI2lmICFFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICAmJiAqcmVz
dWx0ID4gMCAmJiAqcmVzdWx0IDwgMTAwMCAmJiBkaXZpc2libGVCeTEwMCgqcmVzdWx0KQpAQCAt
MzcyLDEzICszNzIsMTMgQEAgT3B0aW9uYWw8TGVuZ3RoUmF3PiBjb25zdW1lTGVuZ3RoUmF3KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGMKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKCh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmlj
VmFsdWUoKSA8IDApIHx8IHN0ZDo6aXNpbmYodG9rZW4ubnVtZXJpY1ZhbHVlKCkpKQorICAgICAg
ICBpZiAoKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVt
ZXJpY1ZhbHVlKCkgPCAwKSB8fCBzdGQ6OmlzaW5mKHRva2VuLm51bWVyaWNWYWx1ZSgpKSkKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IHsgdG9rZW4u
dW5pdFR5cGUoKSwgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFs
dWUoKSB9IH07CiAgICAgfQogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsK
ICAgICAgICAgaWYgKCFzaG91bGRBY2NlcHRVbml0bGVzc1ZhbHVlKHRva2VuLm51bWVyaWNWYWx1
ZSgpLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KQot
ICAgICAgICAgICAgfHwgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRv
a2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkpCisgICAgICAgICAgICB8fCAodmFsdWVSYW5nZSA9PSBW
YWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApKQogICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYodG9r
ZW4ubnVtZXJpY1ZhbHVlKCkpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAg
LTQxMSw3ICs0MTEsNyBAQCBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVQZXJjZW50UmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUgogewogICAgIGNvbnN0IENT
U1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgp
ID09IFBlcmNlbnRhZ2VUb2tlbikgewotICAgICAgICBpZiAoc3RkOjppc2luZih0b2tlbi5udW1l
cmljVmFsdWUoKSkgfHwgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRv
a2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkpCisgICAgICAgIGlmIChzdGQ6OmlzaW5mKHRva2VuLm51
bWVyaWNWYWx1ZSgpKSB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSAm
JiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgcmV0dXJuIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
bnVtZXJpY1ZhbHVlKCk7CiAgICAgfQpAQCAtNTI5LDcgKzUyOSw3IEBAIE9wdGlvbmFsPEFuZ2xl
UmF3PiBjb25zdW1lQW5nbGVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
ck1vZGUgY3NzCiAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBGdW5jdGlvblRva2VuKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdl
LCBDYWxjdWxhdGlvbkNhdGVnb3J5OjpBbmdsZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgQ2FsY1Bh
cnNlciBjYWxjUGFyc2VyKHJhbmdlLCBDYWxjdWxhdGlvbkNhdGVnb3J5OjpBbmdsZSwgVmFsdWVS
YW5nZTo6QWxsKTsKICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lQW5nbGVSYXcoKTsKIH0K
IApAQCAtNTQyLDcgKzU0Miw3IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUFu
Z2xlV29ya2VyU2FmZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTCiB7CiAgICAgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlmICh0b2tlbi50
eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbikgewotICAgICAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIo
cmFuZ2UsIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OkFuZ2xlLCBWYWx1ZVJhbmdlQWxsLCBjc3NWYWx1
ZVBvb2wpOworICAgICAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIENhbGN1bGF0aW9u
Q2F0ZWdvcnk6OkFuZ2xlLCBWYWx1ZVJhbmdlOjpBbGwsIGNzc1ZhbHVlUG9vbCk7CiAgICAgICAg
IGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgp
KSB7CiAgICAgICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgPT0gQ2FsY3VsYXRp
b25DYXRlZ29yeTo6QW5nbGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29u
c3VtZVZhbHVlKCk7CkBAIC02MDEsNyArNjAxLDcgQEAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lVGltZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZQog
ICAgIGlmIChhY2NlcHRVbml0bGVzcykKICAgICAgICAgdW5pdCA9IENTU1VuaXRUeXBlOjpDU1Nf
TVM7CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiB8fCBhY2NlcHRVbml0
bGVzcykgewotICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUg
JiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQorICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBW
YWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKHVuaXQgPT0gQ1NTVW5pdFR5cGU6
OkNTU19NUyB8fCB1bml0ID09IENTU1VuaXRUeXBlOjpDU1NfUykKICAgICAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHJhbmdlLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHVuaXQpOwpAQCAtMTk3MCw3ICsxOTcw
LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aW9uQ29t
cG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHIKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSA9PSBJZGVudFRva2VuKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVl
TGVmdCwgQ1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1
ZUNlbnRlcj4ocmFuZ2UpOwotICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdl
LCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCB1bml0bGVzcyk7CisgICAgcmV0dXJuIGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFs
bCwgdW5pdGxlc3MpOwogfQogCiBzdGF0aWMgYm9vbCBpc0hvcml6b250YWxQb3NpdGlvbktleXdv
cmRPbmx5KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKQEAgLTIxODIsOSArMjE4Miw5
IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkR3Jh
ZGllbnRQb2ludChDU1NQYXJzZXJUb2tlblJhCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSg1MC4sIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VO
VEFHRSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHJlc3VsdCA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwp
OworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gY29uc3VtZVBlcmNlbnQo
YXJncywgVmFsdWVSYW5nZTo6QWxsKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0
ID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlOjpBbGwpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTIyNDgsNyArMjI0OCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVEZXByZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uCiAKICAg
ICAvLyBGb3IgcmFkaWFsIGdyYWRpZW50cyBvbmx5LCB3ZSBub3cgZXhwZWN0IGEgbnVtZXJpYyBy
YWRpdXMuCiAgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KSB7Ci0gICAgICAgIGF1
dG8gcmFkaXVzID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwor
ICAgICAgICBhdXRvIHJhZGl1cyA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZTo6Tm9u
TmVnYXRpdmUpOwogICAgICAgICBpZiAoIXJhZGl1cyB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5n
V2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBk
b3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPihyZXN1bHQuZ2V0KCkpLT5zZXRGaXJzdFJh
ZGl1cyhXVEZNb3ZlKHJhZGl1cykpOwpAQCAtMjI2Nyw3ICsyMjY3LDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBjb24KICAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpIHsKICAgICAg
ICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8gcmFkaXVzID0gY29uc3VtZU51bWJlcihh
cmdzLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBhdXRvIHJhZGl1cyA9IGNvbnN1
bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogICAgICAgICBpZiAoIXJh
ZGl1cykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBkb3duY2FzdDxDU1NS
YWRpYWxHcmFkaWVudFZhbHVlPihyZXN1bHQuZ2V0KCkpLT5zZXRTZWNvbmRSYWRpdXMoV1RGTW92
ZShyYWRpdXMpKTsKQEAgLTIyOTAsOCArMjI5MCw4IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFk
aWVudENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
CiAgICAgCiAgICAgYXV0byBjb25zdW1lU3RvcFBvc2l0aW9uID0gWyZdIHsKICAgICAgICAgcmV0
dXJuIGdyYWRpZW50LmdyYWRpZW50VHlwZSgpID09IENTU0NvbmljR3JhZGllbnQKLSAgICAgICAg
ICAgID8gY29uc3VtZUFuZ2xlT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFu
Z2VBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KQot
ICAgICAgICAgICAgOiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUs
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgPyBjb25zdW1lQW5nbGVPclBlcmNlbnQocmFu
Z2UsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQs
IFVuaXRsZXNzWmVyb1F1aXJrOjpBbGxvdykKKyAgICAgICAgICAgIDogY29uc3VtZUxlbmd0aE9y
UGVyY2VudChyYW5nZSwgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOwogICAgIH07CiAK
ICAgICAvLyBUaGUgZmlyc3QgY29sb3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBoaW50LgpAQCAt
MjM0MywxMCArMjM0MywxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVj
YXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZwogCiAgICAgLy8gT3Is
IHR3byBsZW5ndGhzIG9yIHBlcmNlbnRhZ2VzCiAgICAgaWYgKCFzaGFwZSAmJiAhc2l6ZUtleXdv
cmQpIHsKLSAgICAgICAgYXV0byBob3Jpem9udGFsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBh
dXRvIGhvcml6b250YWxTaXplID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0
Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB2ZXJ0aWNhbFNpemU7CiAgICAgICAgIGlmIChob3Jpem9udGFsU2l6ZSkgewot
ICAgICAgICAgICAgdmVydGljYWxTaXplID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBj
b250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICB2ZXJ0aWNh
bFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVS
YW5nZTo6Tm9uTmVnYXRpdmUpOwogICAgICAgICAgICAgaWYgKCF2ZXJ0aWNhbFNpemUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOwpAQCAtMjQwMCwxMyArMjQwMCwxMyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgY29uc3QgQwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBjZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQ
ZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAg
ICAgICAgIGF1dG8gY2VudGVyID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0
Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKICAgICAgICAgICAgIGlmICghY2VudGVy
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKGhvcml6b250YWxTaXpl
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaG9yaXpvbnRh
bFNpemUgPSBjZW50ZXI7Ci0gICAgICAgICAgICBjZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAg
ICAgIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBW
YWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgICAgICAgICBpZiAoY2VudGVyKSB7CiAgICAg
ICAgICAgICAgICAgdmVydGljYWxTaXplID0gY2VudGVyOwogICAgICAgICAgICAgICAgICsraTsK
QEAgLTI4MDEsMTEgKzI4MDEsMTEgQEAgc3RhdGljIFJlZlB0cjxDU1NGdW5jdGlvblZhbHVlPiBj
b25zdW1lRmlsdGVyRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UKICAgICAgICAg
aWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVIdWVSb3RhdGUpCiAgICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZv
cmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KTsKICAgICAgICAgZWxzZSBpZiAoZmlsdGVy
VHlwZSA9PSBDU1NWYWx1ZUJsdXIpCi0gICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVM
ZW5ndGgoYXJncywgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChhcmdzLCBIVE1MU3RhbmRhcmRN
b2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlTm9uTmVnYXRp
dmUpOworICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1
ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQotICAg
ICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUpOworICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJl
cihhcmdzLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgICAgICAgICBpZiAocGFyc2Vk
VmFsdWUgJiYgIWFsbG93c1ZhbHVlc0dyZWF0ZXJUaGFuT25lKGZpbHRlclR5cGUpKSB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBpc1BlcmNlbnRhZ2UgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oKnBhcnNlZFZhbHVlKS5pc1BlcmNlbnRhZ2UoKTsKICAgICAgICAgICAgICAgICBkb3VibGUg
bWF4QWxsb3dlZCA9IGlzUGVyY2VudGFnZSA/IDEwMC4wIDogMS4wOwpAQCAtMjg3OSwyMyArMjg3
OSwyMyBAQCBSZWZQdHI8Q1NTU2hhZG93VmFsdWU+IGNvbnN1bWVTaW5nbGVTaGFkb3coQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTUwogICAgICAgICAgICAgLy8gSWYgd2UndmUg
YWxyZWFkeSBwYXJzZWQgdGhlc2UgbGVuZ3RocywgdGhlIGdpdmVuIHZhbHVlIGlzIGludmFsaWQg
YXMgdGhlcmUgY2Fubm90IGJlIHR3byBsZW5ndGhzIGNvbXBvbmVudHMgaW4gYSBzaW5nbGUgPHNo
YWRvdz4gdmFsdWUuCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAg
ICAgICBob3Jpem9udGFsT2Zmc2V0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY29udGV4dC5tb2Rl
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaG9yaXpvbnRhbE9mZnNldCA9IGNvbnN1bWVMZW5n
dGgocmFuZ2UsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICAgICAgaWYgKCFo
b3Jpem9udGFsT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHZl
cnRpY2FsT2Zmc2V0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY29udGV4dC5tb2RlLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICAgICAgdmVydGljYWxPZmZzZXQgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBj
b250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgICAgIGlmICghdmVydGljYWxPZmZz
ZXQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgICAgIC8vIFRoZSBleHBsaWNpdCBj
aGVjayBmb3IgY2FsYygpIGlzIHVuZm9ydHVuYXRlLiBUaGlzIGlzIGVuc3VyaW5nIHRoYXQgd2Ug
b25seSBmYWlsIHBhcnNpbmcgaWYgdGhlcmUgaXMgYSBsZW5ndGgsIGJ1dCBpdCBmYWlscyB0aGUg
cmFuZ2UgY2hlY2suCiAgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4g
fHwgdG9rZW4udHlwZSgpID09IE51bWJlclRva2VuIHx8ICh0b2tlbi50eXBlKCkgPT0gRnVuY3Rp
b25Ub2tlbiAmJiBDU1NDYWxjVmFsdWU6OmlzQ2FsY0Z1bmN0aW9uKHRva2VuLmZ1bmN0aW9uSWQo
KSkpKSB7Ci0gICAgICAgICAgICBibHVyUmFkaXVzID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY29u
dGV4dC5tb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICAgICAgYmx1clJhZGl1
cyA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVn
YXRpdmUpOwogICAgICAgICAgICAgaWYgKCFibHVyUmFkaXVzKQogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJsdXJSYWRpdXMgJiYgYWxs
b3dTcHJlYWQpCi0gICAgICAgICAgICBzcHJlYWREaXN0YW5jZSA9IGNvbnN1bWVMZW5ndGgocmFu
Z2UsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBzcHJlYWREaXN0
YW5jZSA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxs
KTsKICAgICB9CiAgICAgCiAgICAgLy8gSW4gb3JkZXIgZm9yIHRoaXMgdG8gYmUgYSB2YWxpZCA8
c2hhZG93PiwgYXQgbGVhc3QgdGhlc2UgbGVuZ3RocyBtdXN0IGJlIHByZXNlbnQuCkBAIC0zMDc5
LDcgKzMwNzksNyBAQCBPcHRpb25hbDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH0KIAotICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnRSYXcocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwg
dW5pdGxlc3MpKQorICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnRS
YXcocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlLCB1bml0bGVz
cykpCiAgICAgICAgIHJldHVybiB7ICpyZXN1bHQgfTsKIAogICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CkBAIC0zMDkzLDEwICszMDkzLDEwIEBAIE9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1
bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgaWYgKGF1dG8gbnVtYmVyID0g
Y29uc3VtZU51bWJlclJhdyhyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKSkKKyAgICBpZiAo
YXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdh
dGl2ZSkpCiAgICAgICAgIHJldHVybiB7ICpudW1iZXIgfTsKIAotICAgIGlmIChhdXRvIGxlbmd0
aE9yUGVyY2VudCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnRSYXcocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSkpCisgICAgaWYgKGF1dG8gbGVuZ3RoT3JQZXJjZW50
ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudFJhdyhyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZTo6Tm9uTmVnYXRpdmUpKQogICAgICAgICByZXR1cm4geyAqbGVuZ3RoT3JQZXJjZW50IH07
CiAKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgKaW5kZXggNWJjNjgwYmU0NGQwOTJi
MDY0MGU2M2UwZjY2ODhlYTEzMGYwYzgyOS4uOWFiYTNkYzkwOTdlZDI1YWU1NTU4YzE4NmM1MzIw
OGZlMDAyY2I5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5oCkBAIC03OCwxNCArNzgsMTQgQEAgT3B0aW9uYWw8aW50PiBj
b25zdW1lSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgZG91YmxlIG1pbmltdW1WYWx1
ZSA9IC1zdGQKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUludGVnZXIoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYsIGRvdWJsZSBtaW5pbXVtVmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSk7CiBPcHRpb25hbDx1bnNpZ25lZD4gY29uc3VtZVBvc2l0aXZlSW50
ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotT3B0aW9uYWw8
ZG91YmxlPiBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdl
ID0gVmFsdWVSYW5nZUFsbCk7CitPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVOdW1iZXJSYXcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlOjpBbGwpOwogUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBW
YWx1ZVJhbmdlKTsKIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZUZvbnRXZWlnaHROdW1iZXJSYXco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1l
Rm9udFdlaWdodE51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJik7CiBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyV29ya2VyU2FmZShDU1NQYXJzZXJUb2tl
blJhbmdlJiwgQ1NTVmFsdWVQb29sJik7CiBPcHRpb25hbDxMZW5ndGhSYXc+IGNvbnN1bWVMZW5n
dGhSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UsIFVu
aXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwogUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjb25zdW1lTGVuZ3RoKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKLU9w
dGlvbmFsPGRvdWJsZT4gY29uc3VtZVBlcmNlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZh
bHVlUmFuZ2UgPSBWYWx1ZVJhbmdlQWxsKTsKK09wdGlvbmFsPGRvdWJsZT4gY29uc3VtZVBlcmNl
bnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlOjpBbGwp
OwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUGVyY2VudChDU1NQYXJzZXJUb2tl
blJhbmdlJiwgVmFsdWVSYW5nZSk7CiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQ
ZXJjZW50V29ya2VyU2FmZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSwgQ1NTVmFs
dWVQb29sJik7CiBPcHRpb25hbDxMZW5ndGhPclBlcmNlbnRSYXc+IGNvbnN1bWVMZW5ndGhPclBl
cmNlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFZhbHVlUmFuZ2Us
IFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3Bw
CmluZGV4IDU2MjZmODI3MTZlNTU5ZTEzMmJhOTdlMGNkMzUxYzk0Yzg0YTYxOTcuLmI4MGI2Nzhh
MmFjN2U3Yjk2NTk2NTUzNjFmZmJhOTljYzFkN2QyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5jcHAKQEAg
LTM2Niw3ICszNjYsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVGb250U3Ry
ZXRjaChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdQogICAgIGlmIChhdXRvIHJl
c3VsdCA9IGNvbnN1bWVGb250U3RyZXRjaEtleXdvcmRWYWx1ZShyYW5nZSwgcG9vbCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKLSAgICBpZiAo
YXV0byBwZXJjZW50ID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUGVyY2VudFdv
cmtlclNhZmUocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgcG9vbCkpCisgICAgaWYgKGF1
dG8gcGVyY2VudCA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBlcmNlbnRXb3Jr
ZXJTYWZlKHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSwgcG9vbCkpCiAgICAgICAgIHJl
dHVybiBmb250U3RyZXRjaElzV2l0aGluUmFuZ2UocGVyY2VudC0+dmFsdWU8ZmxvYXQ+KCkpID8g
cGVyY2VudCA6IG51bGxwdHI7CiAjZW5kaWYKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM3Nywx
MiArMzc3LDEyIEBAIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUZvbnRTdHJldGNoUmFuZ2UoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVlUG9vCiB7CiAgICAgaWYgKGF1dG8gcmVz
dWx0ID0gY29uc3VtZUZvbnRTdHJldGNoS2V5d29yZFZhbHVlKHJhbmdlLCBwb29sKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICBhdXRvIGZpcnN0UGVyY2VudCA9IENTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Y29uc3VtZVBlcmNlbnRXb3JrZXJTYWZlKHJhbmdlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUsIHBvb2wpOworICAgIGF1dG8gZmlyc3RQZXJjZW50ID0gQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpjb25zdW1lUGVyY2VudFdvcmtlclNhZmUocmFuZ2UsIFZhbHVlUmFuZ2U6Ok5v
bk5lZ2F0aXZlLCBwb29sKTsKICAgICBpZiAoIWZpcnN0UGVyY2VudCB8fCAhZm9udFN0cmV0Y2hJ
c1dpdGhpblJhbmdlKGZpcnN0UGVyY2VudC0+dmFsdWU8ZmxvYXQ+KCkpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBpZiAocmFuZ2UuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZpcnN0
UGVyY2VudDsKLSAgICBhdXRvIHNlY29uZFBlcmNlbnQgPSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNvbnN1bWVQZXJjZW50V29ya2VyU2FmZShyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
LCBwb29sKTsKKyAgICBhdXRvIHNlY29uZFBlcmNlbnQgPSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNvbnN1bWVQZXJjZW50V29ya2VyU2FmZShyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRp
dmUsIHBvb2wpOwogICAgIGlmICghc2Vjb25kUGVyY2VudCB8fCAhZm9udFN0cmV0Y2hJc1dpdGhp
blJhbmdlKHNlY29uZFBlcmNlbnQtPnZhbHVlPGZsb2F0PigpKSB8fCBmaXJzdFBlcmNlbnQtPmZs
b2F0VmFsdWUoKSA+IHNlY29uZFBlcmNlbnQtPmZsb2F0VmFsdWUoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgYXV0byByZXN1bHQgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9i
c2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3Bw
CmluZGV4IDU5YTE2YThiZWUxNDZkMjMwNzY1MjQxY2FiOTlhMWIyNzljZWQzYzIuLjA0NWVmYTEy
Zjk4ZmRkMjFmZGQwNmJjOTI2NGQ2OGFiYzg2N2M0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBFeGNl
cHRpb25PcjxMZW5ndGhCb3g+IHBhcnNlUm9vdE1hcmdpbihTdHJpbmcmIHJvb3RNYXJnaW4pCiAg
ICAgd2hpbGUgKCF0b2tlblJhbmdlLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKG1hcmdpbnMuc2l6
ZSgpID09IDQpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJG
YWlsZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25PYnNlcnZlcic6IEV4dHJhIHRleHQgZm91
bmQgYXQgdGhlIGVuZCBvZiByb290TWFyZ2luLiIgfTsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3Vt
ZUxlbmd0aE9yUGVyY2VudCh0b2tlblJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZSA9IENT
U1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUxlbmd0aE9yUGVyY2VudCh0b2tlblJhbmdl
LCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOwogICAgICAgICBpZiAoIXBhcnNl
ZFZhbHVlIHx8IHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2Vj
dGlvbk9ic2VydmVyJzogcm9vdE1hcmdpbiBtdXN0IGJlIHNwZWNpZmllZCBpbiBwaXhlbHMgb3Ig
cGVyY2VudC4iIH07CiAgICAgICAgIGlmIChwYXJzZWRWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKaW5kZXggOGE4ZDhhNjFj
YzNlM2VhYWU4NTkzYzBjZjViNzRhMTNhMjFiNWFiYi4uNTFiNDJkNTI1OGZiOGUzZTM4YjBkOTY2
N2JhOTczZGJhN2ViYzVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2Fs
Y3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9u
VmFsdWUuaApAQCAtMjIxLDcgKzIyMSw3IEBAIGlubGluZSBDYWxjRXhwcmVzc2lvbk5vZGU6OkNh
bGNFeHByZXNzaW9uTm9kZShDYWxjRXhwcmVzc2lvbk5vZGVUeXBlIHR5cGUpCiAKIGlubGluZSBD
YWxjdWxhdGlvblZhbHVlOjpDYWxjdWxhdGlvblZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhw
cmVzc2lvbk5vZGU+IGV4cHJlc3Npb24sIFZhbHVlUmFuZ2UgcmFuZ2UpCiAgICAgOiBtX2V4cHJl
c3Npb24oV1RGTW92ZShleHByZXNzaW9uKSkKLSAgICAsIG1fc2hvdWxkQ2xhbXBUb05vbk5lZ2F0
aXZlKHJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSkKKyAgICAsIG1fc2hvdWxkQ2xhbXBU
b05vbk5lZ2F0aXZlKHJhbmdlID09IFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCAxMTljMjZlZmVjNGFjZGFkYTYyZjRhNDU1
OWQwYTIyM2UxNzY4MmQ3Li45MWE3MTM5OTI1NTYxOWFjMjdiYjFlM2RhNTVjYzk5NzVmYTY0OTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBMZW5n
dGggY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQog
ICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5n
dGg+KExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpKSk7CiAgICAgbGVuZ3Rocy51bmNo
ZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7CiAg
ICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUo
bGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwotICAgIHJldHVybiBMZW5ndGgoQ2Fs
Y3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CisgICAg
cmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVl
UmFuZ2U6OkFsbCkpOwogfQogCiBzdGF0aWMgTGVuZ3RoIGJsZW5kTWl4ZWRUeXBlcyhjb25zdCBM
ZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29u
dGV4dCkKQEAgLTMwNCw3ICszMDQsNyBAQCBzdGF0aWMgTGVuZ3RoIGJsZW5kTWl4ZWRUeXBlcyhj
b25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGNvbnN0IEJsZW5kaQogICAgICAg
ICByZXR1cm4gYmxlbmQoZnJvbSwgTGVuZ3RoKDAsIGZyb20udHlwZSgpKSwgY29udGV4dCk7CiAK
ICAgICBhdXRvIGJsZW5kID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihm
cm9tLCB0bywgY29udGV4dC5wcm9ncmVzcyk7Ci0gICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlv
blZhbHVlOjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFuZ2VBbGwpKTsKKyAgICByZXR1
cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKGJsZW5kKSwgVmFsdWVS
YW5nZTo6QWxsKSk7CiB9CiAKIExlbmd0aCBibGVuZChjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0
IExlbmd0aCYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKQEAgLTMzOSw3ICsz
MzksNyBAQCBMZW5ndGggYmxlbmQoY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25zdCBMZW5ndGgmIHRv
LCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleAogTGVuZ3RoIGJsZW5kKGNvbnN0IExlbmd0
aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
LCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCiB7CiAgICAgYXV0byBibGVuZGVkID0gYmxlbmQoZnJv
bSwgdG8sIGNvbnRleHQpOwotICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSAmJiBibGVuZGVkLmlzTmVnYXRpdmUoKSkKKyAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1
ZVJhbmdlOjpOb25OZWdhdGl2ZSAmJiBibGVuZGVkLmlzTmVnYXRpdmUoKSkKICAgICAgICAgcmV0
dXJuIHsgMCwgZnJvbS5pc1plcm8gKCkgPyB0by50eXBlKCkgOiBmcm9tLnR5cGUoKSB9OwogICAg
IHJldHVybiBibGVuZGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRleCA0NTE4Nzk0
OTBhYmNmYTU5YjE5ZWQ3ZDc1NzcyNGYzOGUyZTVjZTAxLi44YWU5M2ViMWZkYmU2NTY2M2EwNjU2
MDZkMDI5MDhiMjA1NWExNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApAQCAtNDQsOSAr
NDQsOSBAQCBlbnVtIGNsYXNzIExlbmd0aFR5cGUgOiB1aW50OF90IHsKICAgICBVbmRlZmluZWQK
IH07CiAKLWVudW0gVmFsdWVSYW5nZSB7Ci0gICAgVmFsdWVSYW5nZUFsbCwKLSAgICBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUKK2VudW0gY2xhc3MgVmFsdWVSYW5nZSA6IHVpbnQ4X3QgeworICAgIEFs
bCwKKyAgICBOb25OZWdhdGl2ZQogfTsKIAogc3RydWN0IEJsZW5kaW5nQ29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNTNmNzhiODhm
Mzk4NGZjOTkxZWZkODE1MjdhY2UwM2U3Yzk1ZjExZS4uNGZmZmEyYjA4MTNmNGI5ZDU2ZTYzMGI3
ZjJmYjBlMDk1YjM5ODQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmgKQEAgLTM1MSw3ICszNTEsNyBAQCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgmIGxlbgog
ICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5n
dGg+KExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpKSk7CiAgICAgbGVuZ3Rocy51bmNo
ZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7CiAg
ICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUo
bGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwotICAgIHJldHVybiBMZW5ndGgoQ2Fs
Y3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CisgICAg
cmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVl
UmFuZ2U6OkFsbCkpOwogfQogCiBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRQb3NpdGlvbkNvbXBvbmVudFgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBjNTgxZGVhMjc4YTE2MDFlOTJkZmIzZjliOWFkMzZhOTQ2MmFkODRkLi42MGYz
ODk2ZTE4NjRiMzA2NzNjMmI0ZjI3M2E0MjliNDAwNmYyNDZkIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDQt
MjMgIFR5bGVyIFdpbGNvY2sgIDx0d2lsY28ub0Bwcm90b25tYWlsLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciBWYWx1ZVJhbmdlIGZyb20gZW51bSB0byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ5ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWYWx1ZVJhbmdlIGhhcyBiZWVuIHJl
ZmFjdG9yZWQgZnJvbSBlbnVtIHRvIGVudW0gY2xhc3MgOiB1aW50OF90IHRvCisgICAgICAgIG1h
a2UgaXQgc21hbGxlciBhbmQgaGFyZGVyIHRvIG1pc3VzZS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmNyZWF0ZVRlc3RWYWx1ZSk6CisgICAgICAgIFJlZmFjdG9yIFZhbHVlUmFuZ2VB
bGwgYW5kIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSB0byBWYWx1ZVJhbmdlOjpBbGwKKyAgICAgICAg
YW5kIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlLgorCiAyMDIxLTA0LTIyICBUeWxlciBXaWxjb2Nr
ICA8dHdpbGNvLm9AcHJvdG9ubWFpbC5jb20+CiAKICAgICAgICAgW2Nzcy1jb3VudGVyLXN0eWxl
c10gUGFyc2UgQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvcnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBkY2E0
NjM2MDJlOTZkNjBhMDQ1MTM4MTIxY2JiZGNlZmJlZTllNWMyLi4yMjE0Y2RiMjFmMTVjOGNhM2My
MDliOTY5MTFkNmNiZTk3OWE5ZTBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiBzdGF0aWMgUmVmPFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZVRlc3RW
YWx1ZSgpCiB7CiAgICAgYXV0byBub2RlID0gbWFrZVVuaXF1ZTxDYWxjdWxhdGlvbkRlbGV0aW9u
VGVzdE5vZGU+KCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0
ZShXVEZNb3ZlKG5vZGUpLCBXZWJDb3JlOjpWYWx1ZVJhbmdlQWxsKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUobm9kZSksIFdlYkNvcmU6OlZh
bHVlUmFuZ2U6OkFsbCk7CiB9CiAKIFRFU1QoQ2FsY3VsYXRpb25WYWx1ZSwgTGVuZ3RoQ29uc3Ry
dWN0aW9uKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>