<?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>214973</bug_id>
          
          <creation_ts>2020-07-30 09:11:01 -0700</creation_ts>
          <short_desc>Add support for MediaRecorder bitrate options</short_desc>
          <delta_ts>2020-08-25 08:48:36 -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>WebRTC</component>
          <version>WebKit Local 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>
          
          <blocked>85851</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1676405</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-30 09:11:01 -0700</bug_when>
    <thetext>Add support for MediaRecorder bitrate options</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677285</commentid>
    <comment_count>1</comment_count>
      <attachid>405827</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-03 07:37:32 -0700</bug_when>
    <thetext>Created attachment 405827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677336</commentid>
    <comment_count>2</comment_count>
      <attachid>405847</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-03 10:09:39 -0700</bug_when>
    <thetext>Created attachment 405847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677362</commentid>
    <comment_count>3</comment_count>
      <attachid>405847</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-08-03 11:59:34 -0700</bug_when>
    <thetext>Comment on attachment 405847
Patch

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

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:70
&gt; +    m_outputBitRate = bitRate;

Shouldn&apos;t we limit this to the bitrates we support, or at least log an error if passed open we don&apos;t support?

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:196
&gt; +    converterCleanup.release();

Is this manual release necessary?

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:452
&gt; +            // FIXME: Maybe we should error the media recorder if we are not able to get a correct converter.

We should at least log and error, to the JS console if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677609</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-04 05:33:28 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #3)
&gt; Comment on attachment 405847 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405847&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:70
&gt; &gt; +    m_outputBitRate = bitRate;
&gt; 
&gt; Shouldn&apos;t we limit this to the bitrates we support, or at least log an error
&gt; if passed open we don&apos;t support?

I added clamping and release logging.
I think we should add JS logs as well but this might be best done when adding the options getters.

&gt; 
&gt; &gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:196
&gt; &gt; +    converterCleanup.release();
&gt; 
&gt; Is this manual release necessary?

Yes, I&apos;ll rename converterCleanup to make it clearer.

&gt; &gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:452
&gt; &gt; +            // FIXME: Maybe we should error the media recorder if we are not able to get a correct converter.
&gt; 
&gt; We should at least log and error, to the JS console if possible.

Difficult as is, as this is platform code but will do when implementing getters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677610</commentid>
    <comment_count>5</comment_count>
      <attachid>405915</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-04 05:34:21 -0700</bug_when>
    <thetext>Created attachment 405915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677633</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-04 08:55:50 -0700</bug_when>
    <thetext>win test failure unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678069</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-05 13:57:42 -0700</bug_when>
    <thetext>ping review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678080</commentid>
    <comment_count>8</comment_count>
      <attachid>405915</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-08-05 14:13:27 -0700</bug_when>
    <thetext>Comment on attachment 405915
Patch

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

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:102
&gt; +    m_outputBitRate = bitRate;

It seems like we should log here if we don&apos;t support bitrate as well as in outputBitRate(), since this is called directly with the value in the options dictionary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678221</commentid>
    <comment_count>9</comment_count>
      <attachid>406079</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-06 02:23:52 -0700</bug_when>
    <thetext>Created attachment 406079
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678251</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-06 08:25:44 -0700</bug_when>
    <thetext>Committed r265328: &lt;https://trac.webkit.org/changeset/265328&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406079.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678252</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-06 08:26:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/66627900&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678289</commentid>
    <comment_count>12</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-08-06 10:32:24 -0700</bug_when>
    <thetext>Reverted r265328 for reason:

Broke 17 MediaRecorder tests.

Committed r265335: &lt;https://trac.webkit.org/changeset/265335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682320</commentid>
    <comment_count>13</comment_count>
      <attachid>407102</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-24 07:35:18 -0700</bug_when>
    <thetext>Created attachment 407102
Fixing nullptr crashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682412</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-24 11:40:34 -0700</bug_when>
    <thetext>commit-queue failed to commit attachment 407102 to WebKit repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682656</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-25 08:48:35 -0700</bug_when>
    <thetext>Committed r266116: &lt;https://trac.webkit.org/changeset/266116&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407102.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405827</attachid>
            <date>2020-08-03 07:37:32 -0700</date>
            <delta_ts>2020-08-03 10:09:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214973-20200803163730.patch</filename>
            <type>text/plain</type>
            <size>68447</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQyZTI3NjlhNmQ2Nzlk
NDNjNDI5OTIxZTNiODJkNjAyMGQ3OTk3OC4uMWQxMDIwNjI3ZGNkOGI4NGYzMjdjMWRjZDY1MDhi
M2IxYzAxODg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA4LTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
TWVkaWFSZWNvcmRlciBiaXRyYXRlIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgb3B0aW9ucyB0byBNZWRpYVJlY29yZGVyUHJpdmF0
ZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgRm9yIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24sIHBh
c3MgaXQgZG93biB0byBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYW5kIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci4KKyAgICAgICAgRm9yIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciwgd2UgZG8gbm90IGhhbmRsZSB3ZWxsIHNvbWUgYml0IHJhdGVzLCBzbyBmb3Igbm93LCB3ZSBs
aW1pdCB0byBzcGVjaWZpYyB2YWx1ZXMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLmh0bWwK
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpNZWRpYVJlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0Qml0
c1BlclNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6Om91dHB1dEJpdFJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlw
dGlvbik6CisgICAgICAgIERvIG5vdCBleGl0IHdoZW4gbm90IGFibGUgdG8gc2V0IGJpdHJhdGUg
YXMgd2Ugc3RpbGwgd2FudCB0byBzZXQgbV9tYXhPdXRwdXRQYWNrZXRTaXplLgorICAgICAgICBJ
biBjYXNlIG9mIGVycm9yIGluIHNldHRpbmcgdXAgdGhlIGNvbnZlcnRlciwgY2xlYW4gaXQgdXAg
c28gdGhhdCB3ZSBkbyBub3QgdXNlIGEgcGFydGlhbGx5IHNldCB1cCBjb252ZXJ0ZXIuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0T3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0
Qml0c1BlclNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Q
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmluaXRDb21wcmVzc2lvblNlc3Npb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlY29yZGVyTW9ja1NvdXJjZSk6CisKIDIwMjAt
MDgtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBz
b21lIG1lbWJlciBmdW5jdGlvbnMgb2YgUmFuZ2UgYW5kIG1hbnkgY2FsbHMgdG8gY3JlYXRlTGl2
ZVJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDBmZGE4MjdiMThhNjAxNTQzZGQ4Yzg0MjAwZmM4Nzc5ZWIyMWM0
NWQuLjllYWUxMzk0MzNlMmZhZDg3ZmZiMWFiNWNjNjhjNjQxNDk0NjIxYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMjAtMDgtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYVJlY29yZGVyIGJpdHJhdGUgb3B0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vy
aWFsaXplIG9wdGlvbnMgd2hlbiBjcmVhdGluZyByZW1vdGUgbWVkaWEgcmVjb3JkZXIuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6Y3JlYXRlUmVjb3JkZXIpOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFSZWNvcmRlclByaXZhdGU6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFSZWNvcmRlclByaXZhdGU6OnN0YXJ0
UmVjb3JkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpj
cmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5oOgorCiAyMDIwLTA4LTAyICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSBtZW1iZXIgZnVuY3Rpb25z
IG9mIFJhbmdlIGFuZCBtYW55IGNhbGxzIHRvIGNyZWF0ZUxpdmVSYW5nZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmlu
ZGV4IGU2ZjJmZmY1NmI5MmFhNTdmYTIxYWI3NjkyOWVhMTU5YTMzMjdlODAuLjIzMWE2NjcwNGE3
Yzk0YTQ2NjQ5MTYwZTUwZGNlNzFmZGEwZDlmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTQ4LDkgKzQ4
LDEwIEBAIE1lZGlhUmVjb3JkZXI6OkNyZWF0b3JGdW5jdGlvbiBNZWRpYVJlY29yZGVyOjptX2N1
c3RvbUNyZWF0b3IgPSBudWxscHRyOwogCiBFeGNlcHRpb25PcjxSZWY8TWVkaWFSZWNvcmRlcj4+
IE1lZGlhUmVjb3JkZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYVN0cmVh
bT4mJiBzdHJlYW0sIE9wdGlvbnMmJiBvcHRpb25zKQogewotICAgIGF1dG8gcHJpdmF0ZUluc3Rh
bmNlID0gTWVkaWFSZWNvcmRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoZG9jdW1lbnQs
IHN0cmVhbS0+cHJpdmF0ZVN0cmVhbSgpKTsKLSAgICBpZiAoIXByaXZhdGVJbnN0YW5jZSkKLSAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIE1lZGlhUmVj
b3JkZXIgaXMgdW5zdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSJfcyB9OworICAgIGF1dG8gcmVz
dWx0ID0gTWVkaWFSZWNvcmRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoZG9jdW1lbnQs
IHN0cmVhbS0+cHJpdmF0ZVN0cmVhbSgpLCBvcHRpb25zKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKwog
ICAgIGF1dG8gcmVjb3JkZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXIoZG9jdW1lbnQs
IFdURk1vdmUoc3RyZWFtKSwgV1RGTW92ZShvcHRpb25zKSkpOwogICAgIHJlY29yZGVyLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcmVjb3JkZXI7CkBAIC02MSwyNyArNjIsMjcgQEAg
dm9pZCBNZWRpYVJlY29yZGVyOjpzZXRDdXN0b21Qcml2YXRlUmVjb3JkZXJDcmVhdG9yKENyZWF0
b3JGdW5jdGlvbiBjcmVhdG9yKQogICAgIG1fY3VzdG9tQ3JlYXRvciA9IGNyZWF0b3I7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlcjo6Y3Jl
YXRlTWVkaWFSZWNvcmRlclByaXZhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVBy
aXZhdGUmIHN0cmVhbSkKK0V4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZT4+IE1lZGlhUmVjb3JkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0sIGNvbnN0IE9wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgaWYgKG1fY3VzdG9tQ3JlYXRvcikKLSAgICAgICAgcmV0dXJuIG1f
Y3VzdG9tQ3JlYXRvcihzdHJlYW0pOworICAgICAgICByZXR1cm4gbV9jdXN0b21DcmVhdG9yKHN0
cmVhbSwgb3B0aW9ucyk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvKiBwYWdlID0g
ZG9jdW1lbnQucGFnZSgpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAg
cmV0dXJuIHBhZ2UtPm1lZGlhUmVjb3JkZXJQcm92aWRlcigpLmNyZWF0ZU1lZGlhUmVjb3JkZXJQ
cml2YXRlKHN0cmVhbSk7CisgICAgcmV0dXJuIHBhZ2UtPm1lZGlhUmVjb3JkZXJQcm92aWRlcigp
LmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKHN0cmVhbSwgb3B0aW9ucyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKHN0cmVhbSk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCAiVGhlIE1lZGlhUmVjb3JkZXIgaXMgdW5zdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSJfcyB9
OwogI2VuZGlmCiB9CiAKLU1lZGlhUmVjb3JkZXI6Ok1lZGlhUmVjb3JkZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8TWVkaWFTdHJlYW0+JiYgc3RyZWFtLCBPcHRpb25zJiYgb3B0aW9uKQorTWVk
aWFSZWNvcmRlcjo6TWVkaWFSZWNvcmRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYVN0
cmVhbT4mJiBzdHJlYW0sIE9wdGlvbnMmJiBvcHRpb25zKQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KGRvY3VtZW50KQotICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9uKSkKKyAgICAsIG1fb3B0
aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV9zdHJlYW0oV1RGTW92ZShzdHJlYW0pKQog
ICAgICwgbV90aW1lU2xpY2VUaW1lcihbdGhpc10geyByZXF1ZXN0RGF0YSgpOyB9KQogewpAQCAt
MTM1LDExICsxMzYsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNvcmRlcjo6c3RhcnRS
ZWNvcmRpbmcoT3B0aW9uYWw8dW5zaWduZWQ+IHRpbWVTbGljZSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiVGhlIE1lZGlhUmVjb3JkZXIncyBzdGF0ZSBt
dXN0IGJlIGluYWN0aXZlIGluIG9yZGVyIHRvIHN0YXJ0IHJlY29yZGluZyJfcyB9OwogCiAgICAg
QVNTRVJUKCFtX3ByaXZhdGUpOwotICAgIG1fcHJpdmF0ZSA9IGNyZWF0ZU1lZGlhUmVjb3JkZXJQ
cml2YXRlKCpkb2N1bWVudCgpLCBtX3N0cmVhbS0+cHJpdmF0ZVN0cmVhbSgpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IGNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKCpkb2N1bWVudCgpLCBtX3N0cmVh
bS0+cHJpdmF0ZVN0cmVhbSgpLCBtX29wdGlvbnMpOwogCi0gICAgaWYgKCFtX3ByaXZhdGUpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBNZWRpYVJl
Y29yZGVyIGlzIHVuc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iX3MgfTsKKyAgICBBU1NFUlQo
IXJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKKyAgICBtX3ByaXZh
dGUgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgbV9wcml2YXRlLT5zdGFydFJl
Y29yZGluZyhbdGhpcywgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyldKGF1dG8mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoIW1faXNBY3RpdmUp
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAppbmRleCA0Mjk5ZTg4YTNhYmYzZjk0YTQzY2Q3
M2NiZTMxZDk3YWYzZDMwZmEwLi41MDI1MDZmNjE1MDVlMDBhYTE2Y2Q4NTA5MmI1ZTViMTc5ZjU2
N2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaCIKICNpbmNsdWRlICJN
ZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKQEAgLTQ5LDE4ICs1MSwxMiBAQCBjbGFzcyBNZWRpYVJlY29yZGVyIGZp
bmFsCiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBSZWNvcmRpbmdTdGF0ZSB7IEluYWN0aXZlLCBS
ZWNvcmRpbmcsIFBhdXNlZCB9OwogICAgIAotICAgIHN0cnVjdCBPcHRpb25zIHsKLSAgICAgICAg
U3RyaW5nIG1pbWVUeXBlOwotICAgICAgICB1bnNpZ25lZCBhdWRpb0JpdHNQZXJTZWNvbmQ7Ci0g
ICAgICAgIHVuc2lnbmVkIHZpZGVvQml0c1BlclNlY29uZDsKLSAgICAgICAgdW5zaWduZWQgYml0
c1BlclNlY29uZDsKLSAgICB9OwotICAgIAogICAgIH5NZWRpYVJlY29yZGVyKCk7CiAgICAgCisg
ICAgdXNpbmcgT3B0aW9ucyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKICAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPE1lZGlhUmVjb3JkZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8
TWVkaWFTdHJlYW0+JiYsIE9wdGlvbnMmJiA9IHsgfSk7CiAgICAgCi0gICAgdXNpbmcgQ3JlYXRv
ckZ1bmN0aW9uID0gc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPigqKShNZWRp
YVN0cmVhbVByaXZhdGUmKTsKKyAgICB1c2luZyBDcmVhdG9yRnVuY3Rpb24gPSBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+PiAoKikoTWVkaWFTdHJlYW1Q
cml2YXRlJiwgY29uc3QgT3B0aW9ucyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0Q3VzdG9tUHJpdmF0ZVJlY29yZGVyQ3JlYXRvcihDcmVhdG9yRnVuY3Rpb24pOwogICAg
IApAQCAtNzYsOSArNzIsOSBAQCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW0mIHN0cmVhbSgpIHsg
cmV0dXJuIG1fc3RyZWFtLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFSZWNvcmRlcihE
b2N1bWVudCYsIFJlZjxNZWRpYVN0cmVhbT4mJiwgT3B0aW9ucyYmID0geyB9KTsKKyAgICBNZWRp
YVJlY29yZGVyKERvY3VtZW50JiwgUmVmPE1lZGlhU3RyZWFtPiYmLCBPcHRpb25zJiYpOwogCi0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gY3JlYXRlTWVk
aWFSZWNvcmRlclByaXZhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVhbVByaXZhdGUmKTsKKyAgICBz
dGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPj4g
Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVhbVByaXZhdGUm
LCBjb25zdCBPcHRpb25zJik7CiAgICAgCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7
CiAKQEAgLTExMSw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hh
bmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfTsKIAogICAgIHN0YXRpYyBD
cmVhdG9yRnVuY3Rpb24gbV9jdXN0b21DcmVhdG9yOwotICAgIAorCiAgICAgT3B0aW9ucyBtX29w
dGlvbnM7CiAgICAgUmVmPE1lZGlhU3RyZWFtPiBtX3N0cmVhbTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IG1fcHJpdmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRl
ci5jcHAKaW5kZXggODg0YTQwNzkwYTQ2YTgzMjYyNmUwZmEwZWViYjljOWQ5ZjQ0Y2FiMi4uY2Zm
MzZiYmRhZjY5ZDhiNTI1NTAyMjFhZTQ2Y2NlMWE2Y2QyNTI0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cm92aWRlci5jcHAKQEAgLTMyLDEyICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3Zp
ZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVh
bSkKK3N0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclBy
b3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0
cmVhbSwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogewogI2lm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQotICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGw6OmNyZWF0ZShzdHJlYW0pOworICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGw6OmNyZWF0ZShzdHJlYW0sIG9wdGlvbnMpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oc3RyZWFtKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAppbmRleCAxMWJhYWRjZWE4
NjllN2EyOTE5NjYyYWIyZDhjZWY1NDcwYzJlZGJkLi4zYTNiZDE5YTczMDcwMzQ2ZTk4OWZlYmY3
MzgwMzg3MDRlYmU5MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oCkBAIC0yOSw2ICsyOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFSZWNvcmRlclByaXZhdGU7CiBj
bGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CitzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRp
b25zOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJvdmlkZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMzcsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+TWVkaWFSZWNvcmRlclByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IGNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKE1l
ZGlhU3RyZWFtUHJpdmF0ZSYpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZh
dGUmLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmKTsKICNlbmRpZgogCiAgICAg
dm9pZCBzZXRVc2VHUFVQcm9jZXNzKGJvb2wgdmFsdWUpIHsgbV91c2VHUFVQcm9jZXNzID0gdmFs
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBkMThiYmE3ZTY0ZTBmMmExNjZmYWMyMmYwNzgwNjI2MDA0ZGUwY2Y3Li40NTg4
ODI3ZmI1NTJiMmM4MzlmNzNkNTJlMDAzNzQ4N2E4YTdhYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDUyLDYgKzEwNTIs
NyBAQAogCQk0MTNFMDA3OTFEQjBFNEYyMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTAwNzgxREIwRTRE
RTAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFT
ZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE0NDYwQTAyNDEyOTk0MTAwODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklkZW50aWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTQ1OThDMjIzQzhEMTc3MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1OThD
MTIzQzhBRDc5MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gKi87
IH07CisJCTQxNEI3RkFEMjREODFDQzEwMDMzRDQ0MiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NEI3RkFCMjREODFDOEYwMDMzRDQ0MiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTRCODIw
NTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyog
U3RydWN0dXJlZENsb25lLmggKi87IH07CiAJCTQxNERFREU3MUY5RkU5MUUwMDQ3QzQwRCAvKiBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTRERURFNTFGOUZFOTE1MDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MDcxNTYxNjg1MDY3MzAw
QzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggKi87IH07CkBAIC03NDY1LDYgKzc0NjYsNyBAQAog
CQk0MTRBRDQwMDIxNDk4RDMxMDA1MjE2NzYgLyogUlRDUnRwRGVjb2RpbmdQYXJhbWV0ZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJUQ1J0cERlY29kaW5nUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTRBRDQwMTIxNDk4RDMxMDA1MjE2NzYgLyogUlRDUnRwRGVjb2Rp
bmdQYXJhbWV0ZXJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBEZWNvZGluZ1BhcmFtZXRlcnMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTRBRDQwMjIxNDk4RDMyMDA1MjE2NzYgLyogUlRD
UnRwQ29kaW5nUGFyYW1ldGVycy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwQ29kaW5nUGFyYW1ldGVycy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNEI3RkFCMjREODFDOEYwMDMzRDQ0MiAv
KiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNEI4MjAyMUQ2REYwRDkwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlZENsb25l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0QjgyMDMxRDZERjBEOTAwNzdF
QkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJ1Y3R1cmVkQ2xvbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0REVE
RTUxRjlGRTkxNTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1MjIsNiArMTk1MjQsNyBAQAogCQkJCTRENzNGOTQ0
MjE4QkM1RkEwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCAqLywKIAkJ
CQk0RDlGNkI2NTIxODI1MzJCMDA5MkE5QzUgLyogTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNw
cCAqLywKIAkJCQk0RDlGNkI2NDIxODI1MzJCMDA5MkE5QzUgLyogTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmggKi8sCisJCQkJNDE0QjdGQUIyNEQ4MUM4RjAwMzNENDQyIC8qIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlT3B0aW9ucy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBtZWRpYXJlY29yZGVyOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMyNTA2LDYgKzMyNTA5LDcgQEAKIAkJCQk0
REI3MTMwRDIxNkVDQjREMDA5NkE0REQgLyogTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTREM0I1MDE2MjE3RTU4QjcwMDY2NURCMSAvKiBNZWRpYVJlY29yZGVy
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEQ3M0Y5NDYyMThCQzVGQTAwM0EzRUQ2IC8q
IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE0QjdG
QUQyNEQ4MUNDMTAwMzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEQ3M0Y5NEUyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNzZFODk2MjNDMzUzN0Iw
MDNFODNGRSAvKiBNZWRpYVJlY29yZGVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5
MDg0M0QwMUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xzLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMGMxNGFlNjkw
Y2QzZjQ2YTYzYmFlNjE2MDg1NGYxYTAzYjgxMWI0MS4uYTNiYzgxN2IxODMzZTBjODQ3NzU1MDMy
N2YxNTEzMzhhZWYyMWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
QEAgLTU4OCw3ICs1ODgsNyBAQCBwdWJsaWM6CiAgICAgRW1wdHlNZWRpYVJlY29yZGVyUHJvdmlk
ZXIoKSA9IGRlZmF1bHQ7CiBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBM
QVRGT1JNKENPQ09BKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4g
Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJikgZmluYWwgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0
ZT4gY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiwgY29uc3Qg
TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJikgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggMDRiYTZiMDg0YWQyM2Y0
MzMyZWQ0ZmVlNTQ1ZmVmODE0NWQ0YTRhNi4uNTY3NDkzMjE4ZmIyNDlkN2U0YzFhOTM2NTI2YjU3
M2FjN2YyMjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZh
dGVPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNw
cAppbmRleCA4ODU2YjE1N2RmNDg0OGNlM2Y4ZDEzZTc3MjdkMTMyMTA4MDU3M2ExLi44NDRhOTY5
ZjUzZDRhZWY3OWNkMjZiYjFiZWM0Mjc5NGZiZDRkZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJl
YW0pCitzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwg
Y29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEZJ
WE1FOiB3ZSB3aWxsIG5lZWQgdG8gaW1wbGVtZW50IHN1cHBvcnQgZm9yIG11bHRpcGxlIGF1ZGlv
L3ZpZGVvIHRyYWNrcwogICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGNob29zZSB0aGUgZmlyc3Qg
dHJhY2sgYXMgdGhlIHJlY29yZGVkIHRyYWNrLgpAQCAtNDUsMTEgKzQ1LDExIEBAIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbDo6Y3JlYXRlCiAKICAgICBhdXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRl
clByaXZhdGU6OnNlbGVjdFRyYWNrcyhzdHJlYW0pOwogCi0gICAgYXV0byB3cml0ZXIgPSBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKCEhc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFj
aywgISFzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrKTsKKyAgICBhdXRvIHdyaXRlciA9IE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoISFzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNr
LCAhIXNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2ssIG9wdGlvbnMpOwogICAgIGlmICghd3JpdGVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcmVjb3JkZXIgPSBtYWtlVW5p
cXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4od3JpdGVyLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIGF1dG8gcmVjb3JkZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsPihuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsKHdyaXRlci5yZWxlYXNl
Tm9uTnVsbCgpKSk7CiAgICAgaWYgKHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2spCiAgICAgICAg
IHJlY29yZGVyLT5zZXRBdWRpb1NvdXJjZSgmc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjay0+c291
cmNlKCkpOwogICAgIGlmIChzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKaW5kZXggMWQ4NDUwMDlkMzFjN2E5OTg2ZGY3ZmUzMGQ1
YTI2ZjJiNGFiYzhmYi4uNTQ1NDEwYjJhZWQwY2MzNjA3MThlM2UzMTRiY2Y0NDhiNDlhNGU3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCkBAIC0zNywxMiArMzcsMTIg
QEAgY2xhc3MgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsIGZpbmFsCiAgICAgOiBwdWJsaWMg
TWVkaWFSZWNvcmRlclByaXZhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsPiBjcmVhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJik7Ci0KLSAgICBleHBsaWNpdCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiYmKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4g
Y3JlYXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9ucyYpOwogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwoKTsKIAogcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyPiYmKTsKKwogICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpIGZpbmFsOwogICAgIHZvaWQg
ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY1ZTZkZWZlYjEyYWE1M2M5ZTQyZTZiYWM2
MTE1MTY4ODVhMTI5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmgKQEAgLTAsMCArMSw3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMgeworICAgIFN0cmluZyBtaW1lVHlw
ZTsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gYXVkaW9CaXRzUGVyU2Vjb25kOworICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiB2aWRlb0JpdHNQZXJTZWNvbmQ7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+
IGJpdHNQZXJTZWNvbmQ7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKK307
CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+CitpbmxpbmUgdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZU9wdGlvbnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29k
ZXIgPDwgbWltZVR5cGU7CisgICAgZW5jb2RlciA8PCBhdWRpb0JpdHNQZXJTZWNvbmQ7CisgICAg
ZW5jb2RlciA8PCB2aWRlb0JpdHNQZXJTZWNvbmQ7CisgICAgZW5jb2RlciA8PCBiaXRzUGVyU2Vj
b25kOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgoraW5saW5lIE9wdGlvbmFsPE1lZGlh
UmVjb3JkZXJQcml2YXRlT3B0aW9ucz4gTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiBhdWRpb0JpdHNQZXJTZWNvbmQ7
CisgICAgZGVjb2RlciA+PiBhdWRpb0JpdHNQZXJTZWNvbmQ7CisgICAgaWYgKCFhdWRpb0JpdHNQ
ZXJTZWNvbmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9u
YWw8T3B0aW9uYWw8dW5zaWduZWQ+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CisgICAgZGVjb2RlciA+
PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CisgICAgaWYgKCF2aWRlb0JpdHNQZXJTZWNvbmQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5z
aWduZWQ+PiBiaXRzUGVyU2Vjb25kOworICAgIGRlY29kZXIgPj4gYml0c1BlclNlY29uZDsKKyAg
ICBpZiAoIWJpdHNQZXJTZWNvbmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zIHsgV1RGTW92ZShtaW1lVHlwZSks
ICphdWRpb0JpdHNQZXJTZWNvbmQsICp2aWRlb0JpdHNQZXJTZWNvbmQsICpiaXRzUGVyU2Vjb25k
IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aAppbmRleCA2NTI4NjZkZGRiOWY5ZjA0OGFhMGY2N2M4NjkxMzIxOTI5YWIxMTI0Li5lZWUyOTM3
Y2IwNjc0ODQwYWFlZjBmYzRmNjY4ZmRiYjA4ZDQ1MzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBj
cmVhdGUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3Qp
OwogICAgIH5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKIAorICAgIHZvaWQgc2V0Qml0
c1BlclNlY29uZCh1bnNpZ25lZCk7CiAgICAgdm9pZCBmaW5pc2goKTsKICAgICB2b2lkIGFkZFNh
bXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgZ2V0
T3V0cHV0U2FtcGxlQnVmZmVyKCk7CkBAIC00Nyw2ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CiAgICAgYm9vbCBpbml0aWFsaXpl
KENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKyAg
ICBVSW50MzIgb3V0cHV0Qml0UmF0ZSgpIGNvbnN0OwogCiAgICAgc3RhdGljIE9TU3RhdHVzIGF1
ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQz
MiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9p
ZCopOwogCkBAIC04NSw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc2FtcGxlQmxv
Y2tCdWZmZXJTaXplIHsgMCB9OwogICAgIHNpemVfdCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJs
b2NrQnVmZmVyIHsgMCB9OwogICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5cGUgeyBr
QXVkaW9Gb3JtYXRNUEVHNEFBQyB9OworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291dHB1dEJp
dFJhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tCmluZGV4IDZkMDRkOGMzYjc4MWI2ZjM4N2I3N2Q4ZjllMTVmMmNkNDI5YTU5ODQu
LjA1NTU0YzgwYjI4NTQ0NGQ1MDM1YmYwZWVmMGQ1ZWVkNTYxZjllMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CiAjaW5jbHVkZSA8QXVk
aW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+CiAjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAKICNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xi
b3hTb2Z0TGluay5oPgogCkBAIC02NCw2ICs2NSwxMSBAQCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQogICAgIH0KIH0KIAordm9pZCBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNldEJpdHNQZXJTZWNvbmQodW5zaWduZWQgYml0
UmF0ZSkKK3sKKyAgICBtX291dHB1dEJpdFJhdGUgPSBiaXRSYXRlOworfQorCiBib29sIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNh
bGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKIHsKICAgICBDTUJ1ZmZlclF1
ZXVlUmVmIGlucHV0QnVmZmVyUXVldWU7CkBAIC05NSw2ICsxMDEsMjEgQEAgdm9pZCBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCiAgICAgfSk7CiB9CiAKK1VJbnQzMiBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6Om91dHB1dEJpdFJhdGUoKSBjb25zdAoreworICAgIGlm
IChtX291dHB1dEJpdFJhdGUpIHsKKyAgICAgICAgLy8gRklYTUU6IHdlIGhhdmUgc29tZSBpc3N1
ZXMgd2hlbiBzZXR0aW5nIHVwIHNvbWUgYml0IHJhdGVzLCBhbGxvdyBzb21lIHRoYXQgd29yayBm
b3IgdGhlIG1vbWVudC4KKyAgICAgICAgaWYgKCptX291dHB1dEJpdFJhdGUgPT0gMTI4MDAwIHx8
ICptX291dHB1dEJpdFJhdGUgPT0gMTkyMDAwIHx8ICptX291dHB1dEJpdFJhdGUgPT0gMjU2MDAw
KQorICAgICAgICAgICAgcmV0dXJuICptX291dHB1dEJpdFJhdGU7CisgICAgfQorCisgICAgaWYg
KG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPj0gNDQxMDApCisgICAgICAgIHJldHVy
biAxOTIwMDA7CisgICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPCAyMjAw
MCkKKyAgICAgICAgcmV0dXJuIDMyMDAwOworICAgIHJldHVybiA2NDAwMDsKK30KKwogYm9vbCBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZv
cm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24s
IEF1ZGlvRm9ybWF0SUQgb3V0cHV0Rm9ybWF0SUQpCiB7CiAgICAgY29uc3QgYXV0byAqYXVkaW9G
b3JtYXRMaXN0SXRlbSA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFi
bGVGb3JtYXQoZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTE4LDYgKzEzOSwxMSBAQCBib29sIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9y
bWF0RGVzY3JpcHRpb24oQwogICAgIH0KICAgICBtX2NvbnZlcnRlciA9IGNvbnZlcnRlcjsKIAor
ICAgIGF1dG8gY29udmVydGVyQ2xlYW51cCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAg
QXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fY29udmVydGVyKTsKKyAgICAgICAgbV9jb252ZXJ0ZXIg
PSBudWxscHRyOworICAgIH0pOworCiAgICAgc2l6ZV90IGNvb2tpZVNpemUgPSAwOwogICAgIGNv
bnN0IHZvaWQgKmNvb2tpZSA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2ll
KGZvcm1hdERlc2NyaXB0aW9uLCAmY29va2llU2l6ZSk7CiAgICAgaWYgKGNvb2tpZVNpemUpIHsK
QEAgLTE0NSwxOCArMTcxLDEwIEBAIGJvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbihDCiAgICAgfQogCiAg
ICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdE1QRUc0
QUFDKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTZXQgb3V0cHV0Qml0UmF0ZSBhY2NvcmRpbmcgTWVk
aWFSZWNvcmRlck9wdGlvbnMuYXVkaW9CaXRzUGVyU2Vjb25kLgotICAgICAgICBVSW50MzIgb3V0
cHV0Qml0UmF0ZSA9IDY0MDAwOwotICAgICAgICBpZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tU2Ft
cGxlUmF0ZSA+PSA0NDEwMCkKLSAgICAgICAgICAgIG91dHB1dEJpdFJhdGUgPSAxOTIwMDA7Ci0g
ICAgICAgIGVsc2UgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPCAyMjAwMCkK
LSAgICAgICAgICAgIG91dHB1dEJpdFJhdGUgPSAzMjAwMDsKLQorICAgICAgICBhdXRvIG91dHB1
dEJpdFJhdGUgPSB0aGlzLT5vdXRwdXRCaXRSYXRlKCk7CiAgICAgICAgIHNpemUgPSBzaXplb2Yo
b3V0cHV0Qml0UmF0ZSk7Ci0gICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJT
ZXRQcm9wZXJ0eShtX2NvbnZlcnRlciwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSwgc2l6
ZSwgJm91dHB1dEJpdFJhdGUpKSB7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252
ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlciwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0
ZSwgc2l6ZSwgJm91dHB1dEJpdFJhdGUpKQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9D
b252ZXJ0ZXJFbmNvZGVCaXRSYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFtX2Rlc3RpbmF0
aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkgewpAQCAtMTc1LDYgKzE5Myw4IEBAIGJvb2wgQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3Jt
YXREZXNjcmlwdGlvbihDCiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBh
Y2tldCkKICAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9ucy5yZXNpemUobV9k
ZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gbV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKIAor
ICAgIGNvbnZlcnRlckNsZWFudXAucmVsZWFzZSgpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTQyOCw4ICs0NDgsMTAgQEAgdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnBy
b2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoQ01UaW1lIGwKICAgICAgICAgbV9j
dXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRw
dXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKIAogICAgICAgICBhdXRvIGZvcm1hdERl
c2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOwot
ICAgICAgICBpZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9u
KGZvcm1hdERlc2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAgIGlmICghaW5p
dEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRp
b24sIG1fb3V0cHV0Q29kZWNUeXBlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdl
IHNob3VsZCBlcnJvciB0aGUgbWVkaWEgcmVjb3JkZXIgaWYgd2UgYXJlIG5vdCBhYmxlIHRvIGdl
dCBhIGNvcnJlY3QgY29udmVydGVyLgogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01U
SU1FX0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0
aW9uKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IGY4MzA5NjdiZWFlMGFmOTYx
YWNmYjRjMjdjN2IwNDNlMTYwZjFkMzAuLmI1NzIwYTA0MmFhOWE4NmU5OGQwNGRiMjE3ODgxNTIx
ZWQ5MjYyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCkBAIC01OSwxMCArNTksMTEgQEAgY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRp
b0RhdGE7CiBjbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CitzdHJ1Y3QgTWVkaWFS
ZWNvcmRlclByaXZhdGVPcHRpb25zOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV2Vha1B0ckZhY3RvcnlJ
bml0aWFsaXphdGlvbjo6RWFnZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRl
byk7CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRl
KGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9ucyYpOwogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpOwogCiAgICAgdm9p
ZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CkBAIC03OCw2ICs3
OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgYm9vbCBpbml0aWFsaXpl
KCk7CisgICAgdm9pZCBzZXRPcHRpb25zKGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9u
cyYpOwogCiAgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJh
Y2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOwogICAgIHN0YXRpYyB2b2lkIGNv
bXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVlVHJp
Z2dlclRva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQppbmRleCBkYTFmYTJmZWZiYzIxYmM5MWY0MDgwZmUxMTg4ZTM2Yjk0NTNi
ZDdkLi5hOGE1Njk2N2FkY2NlNTNhNGY1ZTg5MGQ1NGQ3NWNlMzc0Njg0MjZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCkBAIC0xMTQsMTEgKzExNSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKLVJlZlB0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNy
ZWF0ZShib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKQorUmVmUHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFz
QXVkaW8sIGJvb2wgaGFzVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIoaGFzQXVkaW8sIGhhc1ZpZGVvKSk7CiAgICAgaWYgKCF3cml0ZXItPmlu
aXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgd3JpdGVyLT5zZXRPcHRp
b25zKG9wdGlvbnMpOwogICAgIHJldHVybiB3cml0ZXI7CiB9CiAKQEAgLTE3Niw2ICsxNzgsMTQg
QEAgYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSgpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldE9wdGlv
bnMoY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlm
IChvcHRpb25zLmF1ZGlvQml0c1BlclNlY29uZCAmJiBtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAg
ICAgbV9hdWRpb0NvbXByZXNzb3ItPnNldEJpdHNQZXJTZWNvbmQoKm9wdGlvbnMuYXVkaW9CaXRz
UGVyU2Vjb25kKTsKKyAgICBpZiAob3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQgJiYgbV92aWRl
b0NvbXByZXNzb3IpCisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yLT5zZXRCaXRzUGVyU2Vjb25k
KCpvcHRpb25zLnZpZGVvQml0c1BlclNlY29uZCk7Cit9CisKIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCkKIHsK
ICAgICBBU1NFUlQobV9oYXNWaWRlbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaAppbmRleCAwZWI2N2FlZjQ3Yjg1MTYzN2Q4ZmYwOTk1ZDliMzRkNDU3
ZDVjZWY0Li45ZDE2MzUyOTRjOWRhYjlhMjk3YzBkNjk5MzQ0MjlmNjlmMDI4MTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTQwLDYgKzQw
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yPiBjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOwogICAgIH5WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IoKTsKIAorICAgIHZvaWQgc2V0Qml0c1BlclNlY29uZCh1bnNpZ25lZCk7CiAg
ICAgdm9pZCBmaW5pc2goKTsKICAgICB2b2lkIGFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZl
clJlZik7CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgZ2V0T3V0cHV0U2FtcGxlQnVmZmVyKCk7CkBA
IC02NCw2ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9
OwogICAgIGZsb2F0IG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uIHsgMi4wIH07CiAgICAg
dW5zaWduZWQgbV9leHBlY3RlZEZyYW1lUmF0ZSB7IDMwIH07CisgICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IG1fb3V0cHV0Qml0UmF0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggODlhMmE3ODc2NTJlMTcyMDcxZGIwMmRmYTRh
NmIyMmUyNjZjM2VjOS4uM2FhYmE2OThkZjdmYmU0NTdiMzJiYjQyMjNkNDFlYTJlZjExNDYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAg
LTc2LDYgKzc2LDExIEBAIGJvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFs
aXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vjb25k
KHVuc2lnbmVkIGJpdFJhdGUpCit7CisgICAgbV9vdXRwdXRCaXRSYXRlID0gYml0UmF0ZTsKK30K
Kwogdm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCiB7CiAgICAgZGlz
cGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CkBAIC0xMDEsNiArMTA2LDE1IEBA
IHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJh
Y2sodm9pZCAqcmVmQ29uLCB2b2lkKiwKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwg
TWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVu
cXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT1NTdGF0
dXMgc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkoVlRDb21wcmVzc2lvblNlc3Npb25SZWYg
dnRTZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIHVpbnQzMl90IHZhbHVlKQoreworICAgIGludDY0
X3QgdmFsdWU2NCA9IHZhbHVlOworICAgIENGTnVtYmVyUmVmIGNmVmFsdWUgPSBDRk51bWJlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmdmFsdWU2NCk7
CisgICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHkodnRTZXNzaW9uLCBr
ZXksIGNmVmFsdWUpOworICAgIENGUmVsZWFzZShjZlZhbHVlKTsKKyAgICByZXR1cm4gc3RhdHVz
OworfQorCiBib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9u
U2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiB7
CiAgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlw
dGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTIwLDEyICsxMzQsMTYg
QEAgYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Np
b24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW8KIAogICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJv
cGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRp
bWUsIGtDRkJvb2xlYW5UcnVlKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVy
dHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKLSAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgp
LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwg
KF9fYnJpZGdlIENGVHlwZVJlZilAKG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKSk7Cisg
ICAgZXJyb3IgPSBzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQo
KSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24s
IG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNz
aW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVy
dmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgZXJyb3IgPSBWVFNlc3Np
b25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fZXhwZWN0ZWRGcmFt
ZVJhdGUpKTsKKyAgICBlcnJvciA9IHNldENvbXByZXNzaW9uU2Vzc2lvblByb3BlcnR5KG1fdnRT
ZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRl
LCBtX2V4cGVjdGVkRnJhbWVSYXRlKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwg
TWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJv
cGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKIAotICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8gY29tcHJlc3Npb24g
cmF0ZS4KKyAgICBpZiAobV9vdXRwdXRCaXRSYXRlKSB7CisgICAgICAgIGVycm9yID0gc2V0Q29t
cHJlc3Npb25TZXNzaW9uUHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9u
UHJvcGVydHlLZXlfQXZlcmFnZUJpdFJhdGUsICptX291dHB1dEJpdFJhdGUpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9BdmVyYWdlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICB9CisKICAgICBl
cnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzKG1fdnRTZXNz
aW9uLmdldCgpKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0s
ICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJl
VG9FbmNvZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYjIwZjMwZDNkMWFmMTAyYjg0Nzg5NGUzOWQ2OGUyOTRk
MDhiMTFlLi45ZTJkYTlhOTY0NTFiNjk4NzhmNzBlYjMwODU1ZjA4MjZlMWZiOGNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNjkxLDE3ICsxNjkxLDE2IEBAIHZvaWQg
SW50ZXJuYWxzOjpzZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24oYm9vbCBl
bmFibGVkKQogICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhQ2FwdHVyZVJlcXVpcmVz
U2VjdXJlQ29ubmVjdGlvbihlbmFibGVkKTsKIH0KIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZT4gY3JlYXRlUmVjb3JkZXJNb2NrU291cmNlKE1lZGlhU3RyZWFt
UHJpdmF0ZSYgc3RyZWFtKQorc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVJlY29yZGVyUHJpdmF0ZT4+IGNyZWF0ZVJlY29yZGVyTW9ja1NvdXJjZShNZWRpYVN0cmVhbVBy
aXZhdGUmIHN0cmVhbSwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJikKIHsKLSAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jaz4obmV3IE1l
ZGlhUmVjb3JkZXJQcml2YXRlTW9jayhzdHJlYW0pKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPihuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrKHN0
cmVhbSkpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0Q3VzdG9tUHJpdmF0ZVJlY29yZGVyQ3Jl
YXRvcigpCiB7CiAgICAgV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6c2V0Q3VzdG9tUHJpdmF0ZVJl
Y29yZGVyQ3JlYXRvcihjcmVhdGVSZWNvcmRlck1vY2tTb3VyY2UpOwogfQotCi0jZW5kaWYKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiBFeGNlcHRpb25PcjxSZWY8RE9NUmVjdD4+
IEludGVybmFsczo6YWJzb2x1dGVDYXJldEJvdW5kcygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBi
MTI4NGE0N2UyMzM2MjIzNzdiYjY5N2Y4ZmM1OWJiMTI1NDc0NjhkLi4wZjgzOGE5MTJiMjNjODNk
ZGNlYzUwODk5ZmJkN2IwMjZjMzhlNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTM4LDkgKzM4LDkg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBSZW1vdGVNZWRpYVJlY29yZGVyOjpjcmVh
dGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9v
bCByZWNvcmRWaWRlbykKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBSZW1v
dGVNZWRpYVJlY29yZGVyOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcywgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Ym9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgY29uc3QgTWVkaWFSZWNvcmRlclBy
aXZhdGVPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmNyZWF0ZShyZWNvcmRBdWRpbywgcmVjb3JkVmlkZW8pOworICAgIGF1
dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShyZWNvcmRBdWRp
bywgcmVjb3JkVmlkZW8sIG9wdGlvbnMpOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3Jk
ZXI+KG5ldyBSZW1vdGVNZWRpYVJlY29yZGVyIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
aWRlbnRpZmllciwgd3JpdGVyLnJlbGVhc2VOb25OdWxsKCksIHJlY29yZEF1ZGlvIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuaAppbmRleCBlZjZlZTM4OTUwYTM3MTVhNDA3MDRjMGZlNWU4YTYwYmUyZjBiNzg2Li40ZTVi
N2IwNzhmMGRkNzg4NzVhNWRlOWU5MzM0MGRiNzM4YmNmNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtNDQs
NiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQVJpbmdCdWZmZXI7CiBjbGFz
cyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwogY2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7CitzdHJ1
Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTU0LDcgKzU1LDcgQEAgY2xhc3MgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U7CiBjbGFzcyBS
ZW1vdGVNZWRpYVJlY29yZGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJlY29y
ZFZpZGVvKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+
IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVkaWFSZWNvcmRlcklkZW50aWZp
ZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYpOwogICAgIH5SZW1vdGVNZWRpYVJlY29yZGVyKCk7
CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAppbmRleCAwYmE2ZmQ3ZDBl
Zjk2NjhmMDE5OGJmZWYwMDBmNWM4NDhhMjI2ZDJkLi5mNDgxNTI1MzgyM2FlNTk1N2I3Mjc5NDBl
NzJlNGFhZGZkMjFiZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtNTEsMTAg
KzUxLDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmRpZFJlY2VpdmVSZW1v
dGVNZWRpYVJlY29yZGVyTWVzc2FnZShJUEM6OkNvbm5lCiAgICAgICAgIHJlY29yZGVyLT5kaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlcjo6Y3JlYXRlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmNyZWF0ZVJlY29yZGVyKE1l
ZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wg
cmVjb3JkVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVjb3JkZXJzLmNvbnRhaW5zKGlkZW50
aWZpZXIpKTsKLSAgICBhdXRvIHJlY29yZGVyID0gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRl
KG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgcmVjb3JkQXVkaW8sIHJl
Y29yZFZpZGVvKTsKKyAgICBhdXRvIHJlY29yZGVyID0gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3Jl
YXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgcmVjb3JkQXVkaW8s
IHJlY29yZFZpZGVvLCBvcHRpb25zKTsKICAgICBpZiAoIXJlY29yZGVyKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uRGF0YSB7IE5vdFN1cHBvcnRlZEVycm9yLCAi
VW5hYmxlIHRvIGNyZWF0ZSBhIHJlY29yZGVyIHdpdGggdGhlIHByb3ZpZGVkIHN0cmVhbSJfcyB9
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCmluZGV4IDhlNmY5MThhMDE2NzkxOGEwZDAyNWQz
YjZjNTIxNTYzOGFjOWU1NjIuLjc1MzkwYTg1YTNmYTQwZTI3YTc4NDY3ODkxOGRjODU0Y2U0MTFj
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgRGVj
b2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1
Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVy
SWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7Cisg
ICAgdm9pZCBjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmllciwgYm9vbCByZWNv
cmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgY29uc3QgV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVjb3JkZXIoTWVkaWFSZWNv
cmRlcklkZW50aWZpZXIpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVz
c2FnZXMuaW4KaW5kZXggYTJmMTg4ZDc4OTMwZmM5NzE1NjQ3YTBmNjQxMGQyMWEyNjk1YzYzNy4u
MjU3YmY5NjYzMjc4ODVmZmRjZmZiMGU3M2M2ODFhODc5MWFjNmRlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZVJlY29yZGVyKFdl
YktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFz
VmlkZW8pIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVycm9y
KSBBc3luYworICAgIENyZWF0ZVJlY29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZp
ZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIHN0cnVjdCBXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMgb3B0aW9ucykgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+IGNyZWF0aW9uRXJyb3IpIEFzeW5jCiAgICAgUmVsZWFzZVJlY29yZGVyKFdl
YktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcAppbmRleCA0ZDQ3ODZiZTk1NTJlNjQyYTBmN2M2ODVmOTFlODc2MzY5MTk0YjAwLi5jN2U5
YTlmZDJkMjQyODE5NTIyMmVmYmQ3YzEyN2JiZDUwYmFlNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwCkBAIC00MywxMCArNDMsMTEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLU1lZGlhUmVjb3JkZXJQcml2YXRlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKK01lZGlhUmVjb3JkZXJQcml2YXRlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgTWVk
aWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogICAgIDogbV9pZGVudGlmaWVyKE1l
ZGlhUmVjb3JkZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogICAgICwgbV9zdHJlYW0obWFrZVJl
ZihzdHJlYW0pKQogICAgICwgbV9jb25uZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKQorICAgICwgbV9vcHRpb25z
KG9wdGlvbnMpCiB7CiB9CiAKQEAgLTU5LDcgKzYwLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZTo6c3RhcnRSZWNvcmRpbmcoRXJyb3JDYWxsYmFjayYmIGVycm9yQ2FsbGJhY2spCiAgICAg
aWYgKHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2spCiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1h
a2VVbmlxdWU8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlPih0aGlzKSk7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OkNyZWF0ZVJlY29yZGVyIHsgbV9pZGVu
dGlmaWVyLCAhIXNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2ssICEhc2VsZWN0ZWRUcmFja3Mudmlk
ZW9UcmFjayB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYXVkaW9UcmFj
ayA9IG1ha2VSZWZQdHIoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjayksIHZpZGVvVHJhY2sgPSBt
YWtlUmVmUHRyKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RG
TW92ZShlcnJvckNhbGxiYWNrKV0oYXV0byYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9j
b25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyOjpDcmVhdGVSZWNvcmRlciB7IG1faWRlbnRpZmllciwgISFzZWxlY3RlZFRyYWNr
cy5hdWRpb1RyYWNrLCAhIXNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2ssIG1fb3B0aW9ucyB9LCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYXVkaW9UcmFjayA9IG1ha2VSZWZQ
dHIoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjayksIHZpZGVvVHJhY2sgPSBtYWtlUmVmUHRyKHNl
bGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNh
bGxiYWNrKV0oYXV0byYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1Ro
aXMpIHsKICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soeyB9KTsKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDViNGE0OTJmYmI1ZGYwY2UxYTNmYTMyNDg5ODQ0
MjM1YTFiMzBlMWQuLmQ3NjU4NzU5YjRmYWE1MzY2YmE0NmJhZDM2YWRkODU1YjZiNGY3OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBNZWRpYVJlY29yZGVy
UHJpdmF0ZSBmaW5hbAogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgTWVkaWFSZWNvcmRlclByaXZhdGUoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlJik7
CisgICAgTWVkaWFSZWNvcmRlclByaXZhdGUoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlJiwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAgICAgfk1lZGlh
UmVjb3JkZXJQcml2YXRlKCk7CiAKIHByaXZhdGU6CkBAIC03MSw2ICs3MSw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVy
OwogICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uIHsg
fTsKICAgICBpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CisgICAgV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVPcHRpb25zIG1fb3B0aW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJvdmlkZXIuY3BwCmluZGV4IDVmNTA3NWYxNjM3YjQ1OWRmNTVhN2QyNTM0ZDViN2JmM2I1OTQw
MGUuLjQwNDcxYmQ3MWU1NTc5OGMyNjQwZjU4NWE4YTRiZTkwNWQ2NmNmZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByb3ZpZGVyLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNv
cmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCitzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3Jl
YXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0sIGNvbnN0
IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIGlmIChtX3VzZUdQ
VVByb2Nlc3MpCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRl
PihzdHJlYW0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0
ZT4oc3RyZWFtLCBvcHRpb25zKTsKICNlbmRpZgotICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKHN0cmVhbSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRl
clByaXZhdGUoc3RyZWFtLCBvcHRpb25zKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaApp
bmRleCBlOTZiOGZmMzY0ZGU1OTg4NjhmZDlkZjA1ZWE5MjViNDBkODNhYWM4Li40NjM5M2FlNDgz
ZjY5ZTdkYzhjMzUzZTA4NTFhZTZlYWUyNGY0Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaApA
QCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShXZWJDb3JlOjpN
ZWRpYVN0cmVhbVByaXZhdGUmKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByaXZhdGU+IGNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9ucyYpIGZpbmFsOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzVhYjVhMWE3OTE1MjI1MTU4MGRjNDVhMDcwZmU2
MzEzMDc3YzBkNS4uYWY1YWZmNWEyYmEwNTBhNTUwYzI1MjQwODE4ZjYxOWVlMTE2Mzc1YiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM5IEBACisyMDIwLTA4LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgorCisgICAgICAgIEltcHJvdmUgdGhlIGNoZWNrLWZvci1kdXBsaWNhdGVkLXBsYXRmb3JtLXRl
c3QtcmVzdWx0cyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorICAg
ICAgICAKKyAgICAgICAgY2hlY2stZm9yLWR1cGxpY2F0ZWQtcGxhdGZvcm0tdGVzdC1yZXN1bHRz
IGhhZCBzb21lIHByb2JsZW1zLgorICAgICAgICAKKyAgICAgICAgRmlyc3QsIGl0IGRlZmF1bHRl
ZCB0byAtd2sxIHJlc3VsdHMgZGlyZWN0b3JpZXMsIGFuZCBkaWRuJ3QgY2hlY2sgLXdrMiBkaXJl
Y3Rvcmllcywgc28KKyAgICAgICAgcnVuIHRoZSBsb2dpYyB0d2ljZSwgd2l0aCBvcHRpb25zLndl
YmtpdF90ZXN0X3J1bm5lciBUcnVlIGFuZCBGYWxzZS4KKyAgICAgICAgU2Vjb25kLCBpdCBvbmx5
IGxvb2tlZCBmb3IgcmVzdWx0cyBpbiB0aGUgbW9zdCBzcGVjaWZpYyBmYWxsYmFjayBkaXJlY3Rv
cnksIHNvCisgICAgICAgIHdpdGggYSBmYWxsYmFjayBwYXRoIGxpa2UgJ21hYy1tb2phdmUtd2sx
IC0+IG1hYy1tb2phdmUgLT4gbWFjLXdrMSAtPiBtYWMgLT4gZ2VuZXJpYycKKyAgICAgICAgaXQg
d291bGQgb25seSByZW1vdmUgcmVzdWx0cyBpbiBtYWMtbW9qYXZlLXdrMSwgbm90IGluICdtYWMt
bW9qYXZlJy4KKyAgICAgICAgQWxzbyBhZGQgc29tZSBsb2dnaW5nIHRvIHRoZSBzY3JpcHQuCisK
KyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLWZvci1kdXBsaWNhdGVkLXBsYXRmb3JtLXRlc3QtcmVz
dWx0czoKKyAgICAgICAgKHJlbW92ZV9sYXlvdXRfdGVzdF9wYXRoX3ByZWZpeCk6CisgICAgICAg
IChjaGVja19kdXBsaWNhdGUuc2hhMSk6CisgICAgICAgIChjaGVja19kdXBsaWNhdGUpOgorICAg
ICAgICAocGxhdGZvcm1fbGlzdCk6CisgICAgICAgIChmaW5kX2R1cGxpY2F0ZXNfaW5fcGF0aCk6
CisgICAgICAgIChmaW5kX2R1cGxpY2F0ZXNfaW5fcGF0aC5maW5kX2R1cGxpY2F0ZXMpOgorICAg
ICAgICAoY2hlY2tfcGxhdGZvcm0pOgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnN1cHBvcnRzX2xheW91dF90
ZXN0cyk6IFNvbWUgcG9ydHMgKGlPUyBhbmQgd2F0Y2ggZGV2aWNlIHBvcnRzKSBkb24ndCBzdXBw
b3J0CisgICAgICAgIHRlc3Rpbmcgd2l0aCBubyBhc3NvY2lhdGVkIGRldmljZS4gTmVlZCB0byBm
aXggZXJyb3JzIHRocm93biBmcm9tIGRlZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgoKS4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZS5weToKKyAgICAgICAgKElP
U0RldmljZVBvcnQuc3VwcG9ydHNfbGF5b3V0X3Rlc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvd2F0Y2hfZGV2aWNlLnB5OgorICAgICAgICAoV2F0Y2hEZXZpY2VQb3J0LnN1
cHBvcnRzX2xheW91dF90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dp
bi5weTogc2VsZi5fb3NfdmVyc2lvbiBpcyBOb25lIHdoZW4gcnVuIG9uIGFub3RoZXIgcGxhdGZv
cm0uCisgICAgICAgIChXaW5Qb3J0LmRlZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgpOgorICAg
ICAgICAoV2luQ2Fpcm9Qb3J0Ll9zZWFyY2hfcGF0aHMpOgorCiAyMDIwLTA4LTAyICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFRhYmxlIGRhdGEgaXMg
aW5jb3JyZWN0bHkgdHJhbnNsYXRlZCBpbiBzb21lIGFydGljbGVzIG9uIGVuLndpa2lwZWRpYS5v
cmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWR1cGxpY2F0ZWQtcGxhdGZv
cm0tdGVzdC1yZXN1bHRzIGIvVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZHVwbGljYXRlZC1wbGF0
Zm9ybS10ZXN0LXJlc3VsdHMKaW5kZXggMDRiYWIyMDlhNzJmYjE0ZjQ3NzljODNiNzI1OTZmMmIw
MWQxNzlhOS4uZTg1NWI1Y2Y0YTllOTc3NzQxZDFlYTMzZTRhOTljZDA2NzYwMjYxZSAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZHVwbGljYXRlZC1wbGF0Zm9ybS10ZXN0LXJl
c3VsdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZHVwbGljYXRlZC1wbGF0Zm9ybS10
ZXN0LXJlc3VsdHMKQEAgLTE4LDkgKzE4LDE0IEBACiAjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgogCiBpbXBvcnQgaGFzaGxpYgoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQog
aW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBI
b3N0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3Vy
ZV9sb2dnaW5nCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogaG9zdCA9
IEhvc3QoKQogaG9zdC5pbml0aWFsaXplX3NjbSgpCkBAIC0yOCwxMiArMzMsMjIgQEAgY2hlY2tv
dXRfcm9vdCA9IGhvc3Quc2NtKCkuY2hlY2tvdXRfcm9vdAogbGF5b3V0X3Rlc3RzX2RpcmVjdG9y
eSA9IG9zLnBhdGguam9pbihjaGVja291dF9yb290LCAnTGF5b3V0VGVzdHMnKQogcGxhdGZvcm1f
ZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKGxheW91dF90ZXN0c19kaXJlY3RvcnksICdwbGF0Zm9y
bScpCiAKK0lHTk9SRURfRklMRV9OQU1FUyA9IHsKKyAgICAnVGVzdEV4cGVjdGF0aW9ucycsCisg
ICAgJy5EU19TdG9yZScKK30KKworCitkZWYgcmVtb3ZlX2xheW91dF90ZXN0X3BhdGhfcHJlZml4
KGZ1bGxfcGF0aCk6CisgICAgcmV0dXJuIG9zLnBhdGgucmVscGF0aChmdWxsX3BhdGgsIGxheW91
dF90ZXN0c19kaXJlY3RvcnkpCiAKIGRlZiBjaGVja19kdXBsaWNhdGUocGxhdGZvcm0sIGJhc2Vs
aW5lX3NlYXJjaF9wYXRoLCBwbGF0Zm9ybV90ZXN0X3Jlc3VsdCk6CiAgICAgZGVmIHNoYTEocGF0
aCk6CiAgICAgICAgIHdpdGggZmlsZShwYXRoLCAncmInKSBhcyBmOgogICAgICAgICAgICAgcmV0
dXJuIGhhc2hsaWIuc2hhMShmLnJlYWQoKSkuaGV4ZGlnZXN0KCkKIAorICAgIF9sb2cuZGVidWco
JyAgIExvb2tpbmcgZm9yIGR1cGxpY2F0ZXMgb2YgezB9IGluIHsxfScuZm9ybWF0KHJlbW92ZV9s
YXlvdXRfdGVzdF9wYXRoX3ByZWZpeChwbGF0Zm9ybV90ZXN0X3Jlc3VsdCksIHN0cihiYXNlbGlu
ZV9zZWFyY2hfcGF0aCkpKQorCiAgICAgcHJlZml4X2xlbiA9IGxlbihvcy5wYXRoLmpvaW4ocGxh
dGZvcm1fZGlyZWN0b3J5LCBwbGF0Zm9ybSkpICsgMQogICAgIHRlc3RfcmVzdWx0X2ZpbGVuYW1l
ID0gcGxhdGZvcm1fdGVzdF9yZXN1bHRbcHJlZml4X2xlbjpdCiAgICAgcGxhdGZvcm1fdGVzdF9y
ZXN1bHRfc2l6ZSA9IE5vbmUKQEAgLTQzLDIxICs1OCwyOCBAQCBkZWYgY2hlY2tfZHVwbGljYXRl
KHBsYXRmb3JtLCBiYXNlbGluZV9zZWFyY2hfcGF0aCwgcGxhdGZvcm1fdGVzdF9yZXN1bHQpOgog
ICAgIGZvciBiYXNlbGluZV9wYXRoIGluIGJhc2VsaW5lX3NlYXJjaF9wYXRoOgogICAgICAgICBi
YXNlbGluZV90ZXN0X3Jlc3VsdCA9IG9zLnBhdGguam9pbihiYXNlbGluZV9wYXRoLCB0ZXN0X3Jl
c3VsdF9maWxlbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGJhc2VsaW5lX3Rl
c3RfcmVzdWx0KToKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJyAgICBObyByZXN1bHQgYXQgezB9
Jy5mb3JtYXQocmVtb3ZlX2xheW91dF90ZXN0X3BhdGhfcHJlZml4KGJhc2VsaW5lX3Rlc3RfcmVz
dWx0KSkpCiAgICAgICAgICAgICBjb250aW51ZQogCisgICAgICAgIF9sb2cuZGVidWcoJyAgICBD
b21wYXJpbmcgd2l0aCB7MH0nLmZvcm1hdChyZW1vdmVfbGF5b3V0X3Rlc3RfcGF0aF9wcmVmaXgo
YmFzZWxpbmVfdGVzdF9yZXN1bHQpKSkKKwogICAgICAgICBiYXNlbGluZV9mb3VuZCA9IFRydWUK
ICAgICAgICAgaWYgcGxhdGZvcm1fdGVzdF9yZXN1bHRfc2l6ZSBpcyBOb25lOgogICAgICAgICAg
ICAgcGxhdGZvcm1fdGVzdF9yZXN1bHRfc2l6ZSA9IG9zLnBhdGguZ2V0c2l6ZShwbGF0Zm9ybV90
ZXN0X3Jlc3VsdCkKICAgICAgICAgYmFzZWxpbmVfdGVzdF9yZXN1bHRfc2l6ZSA9IG9zLnBhdGgu
Z2V0c2l6ZShiYXNlbGluZV90ZXN0X3Jlc3VsdCkKICAgICAgICAgaWYgcGxhdGZvcm1fdGVzdF9y
ZXN1bHRfc2l6ZSAhPSBiYXNlbGluZV90ZXN0X3Jlc3VsdF9zaXplOgorICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygnICAgIEZpbGUgc2l6ZSBpcyBkaWZmZXJlbnQnKQogICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCiAKICAgICAgICAgaWYgcGxhdGZvcm1fdGVzdF9yZXN1bHRfc2hhMSBpcyBOb25lOgog
ICAgICAgICAgICAgcGxhdGZvcm1fdGVzdF9yZXN1bHRfc2hhMSA9IHNoYTEocGxhdGZvcm1fdGVz
dF9yZXN1bHQpCiAgICAgICAgIGJhc2VsaW5lX3Rlc3RfcmVzdWx0X3NoYTEgPSBzaGExKGJhc2Vs
aW5lX3Rlc3RfcmVzdWx0KQogICAgICAgICBpZiBwbGF0Zm9ybV90ZXN0X3Jlc3VsdF9zaGExICE9
IGJhc2VsaW5lX3Rlc3RfcmVzdWx0X3NoYTE6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCcgICAg
RmlsZSBoYXNoIGlzIGRpZmZlcmVudCcpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorICAg
ICAgICBfbG9nLmRlYnVnKCcgICBEdXBsaWNhdGUgZm91bmQ6IHswfSBhbmQgezF9Jy5mb3JtYXQo
cmVtb3ZlX2xheW91dF90ZXN0X3BhdGhfcHJlZml4KHBsYXRmb3JtX3Rlc3RfcmVzdWx0KSwgcmVt
b3ZlX2xheW91dF90ZXN0X3BhdGhfcHJlZml4KGJhc2VsaW5lX3Rlc3RfcmVzdWx0KSkpCisKICAg
ICByZXR1cm4gYmFzZWxpbmVfZm91bmQKIAogCkBAIC02OCw1MCArOTAsMTA0IEBAIGRlZiBwbGF0
Zm9ybV9saXN0KHBsYXRmb3JtKToKICAgICAgICAgcmV0dXJuIFtwbGF0Zm9ybV0KICAgICByZXR1
cm4gW10KIAorZGVmIGZpbmRfZHVwbGljYXRlc19pbl9wYXRoKGJhc2VsaW5lX3NlYXJjaF9wYXRo
KToKKyAgICBkdXBsaWNhdGVzID0gW10KKyAgICByZW1haW5pbmdfcGF0aHMgPSBiYXNlbGluZV9z
ZWFyY2hfcGF0aAogCi1vcHRpb25fcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdl
PSd1c2FnZTogJXByb2cgW29wdGlvbnNdJykKLW9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignLXAn
LCAnLS1wbGF0Zm9ybScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScs
IGRlc3Q9J3BsYXRmb3JtJywgZGVmYXVsdD0nYWxsJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdQbGF0Zm9ybSB0byBjaGVjayBmb3IgZHVwbGljYXRlZCByZXN1bHRzLiBCeSB0aGUg
ZGVmYXVsdCBhbGwgcGxhdGZvcm0gYXJlIGNoZWNrZWQnKQotb3B0aW9uX3BhcnNlci5hZGRfb3B0
aW9uKCctbicsICctLW5vLWRlbGV0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PSdzdG9yZV90cnVlJywgZGVzdD0nbm9fZGVsZXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdEbyBub3QgZGVsZXRlIHRoZSBkdXBsaWNhdGVkIHJlc3VsdHMgZm91bmQgZnJvbSB0
aGUgcmVwb3NpdG9yeSwgbGlzdCB0aGVtIGluc3RlYWQnKQotb3B0aW9ucywgYXJncyA9IG9wdGlv
bl9wYXJzZXIucGFyc2VfYXJncygpCi0KLXRvdGFsID0gMAotYmFzZWxpbmVfc2VhcmNoX3BhdGhz
X2NoZWNrZWQgPSBzZXQoKQotZm9yIHBsYXRmb3JtIGluIHBsYXRmb3JtX2xpc3Qob3B0aW9ucy5w
bGF0Zm9ybSk6Ci0gICAgdHJ5OgotICAgICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0
KHBsYXRmb3JtKQotICAgICAgICBiYXNlbGluZV9zZWFyY2hfcGF0aCA9IHR1cGxlKFtwIGZvciBw
IGluIHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKSBpZiBvcy5wYXRoLmlzZGlyKHApXSArIFts
YXlvdXRfdGVzdHNfZGlyZWN0b3J5XSkKLSAgICBleGNlcHQ6Ci0gICAgICAgIGNvbnRpbnVlCi0K
LSAgICBpZiBiYXNlbGluZV9zZWFyY2hfcGF0aCBpbiBiYXNlbGluZV9zZWFyY2hfcGF0aHNfY2hl
Y2tlZDoKLSAgICAgICAgY29udGludWUKLSAgICBiYXNlbGluZV9zZWFyY2hfcGF0aHNfY2hlY2tl
ZC5hZGQoYmFzZWxpbmVfc2VhcmNoX3BhdGgpCisgICAgZGVmIGZpbmRfZHVwbGljYXRlcygpOgor
ICAgICAgICBfbG9nLmRlYnVnKCcgY29tcGFyaW5nIGZpbGVzIGluIHswfSBhbmQgezF9Jy5mb3Jt
YXQocmVtb3ZlX2xheW91dF90ZXN0X3BhdGhfcHJlZml4KHJlbWFpbmluZ19wYXRoc1swXSksIHJl
bW92ZV9sYXlvdXRfdGVzdF9wYXRoX3ByZWZpeChyZW1haW5pbmdfcGF0aHNbMV0pKSkKKyAgICAg
ICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocmVtYWluaW5nX3BhdGhzWzBdKToK
KyAgICAgICAgICAgIGZvciBmaWxlX25hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgaWYg
ZmlsZV9uYW1lIGluIElHTk9SRURfRklMRV9OQU1FUzoKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKIAotICAgIGR1cGxpY2F0ZXMgPSBbXQotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBp
biBvcy53YWxrKGJhc2VsaW5lX3NlYXJjaF9wYXRoWzBdKToKLSAgICAgICAgZm9yIGZpbGVfbmFt
ZSBpbiBmaWxlczoKLSAgICAgICAgICAgIHBsYXRmb3JtX3Rlc3RfcmVzdWx0ID0gb3MucGF0aC5q
b2luKHJvb3QsIGZpbGVfbmFtZSkKLSAgICAgICAgICAgIGlmIGNoZWNrX2R1cGxpY2F0ZShiYXNl
bGluZV9zZWFyY2hfcGF0aFswXSwgYmFzZWxpbmVfc2VhcmNoX3BhdGhbMTpdLCBwbGF0Zm9ybV90
ZXN0X3Jlc3VsdCk6Ci0gICAgICAgICAgICAgICAgZHVwbGljYXRlcy5hcHBlbmQocGxhdGZvcm1f
dGVzdF9yZXN1bHQpCi0KLSAgICBpZiBub3QgZHVwbGljYXRlczoKLSAgICAgICAgY29udGludWUK
LSAgICBpZiBvcHRpb25zLm5vX2RlbGV0ZToKLSAgICAgICAgcHJpbnQgIlxuIi5qb2luKGR1cGxp
Y2F0ZXMpCi0gICAgZWxzZToKLSAgICAgICAgaG9zdC5zY20oKS5kZWxldGVfbGlzdChkdXBsaWNh
dGVzKQorICAgICAgICAgICAgICAgIHBsYXRmb3JtX3Rlc3RfcmVzdWx0ID0gb3MucGF0aC5qb2lu
KHJvb3QsIGZpbGVfbmFtZSkKKyAgICAgICAgICAgICAgICBpZiBjaGVja19kdXBsaWNhdGUocmVt
YWluaW5nX3BhdGhzWzBdLCByZW1haW5pbmdfcGF0aHNbMTpdLCBwbGF0Zm9ybV90ZXN0X3Jlc3Vs
dCk6CisgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXMuYXBwZW5kKHBsYXRmb3JtX3Rlc3Rf
cmVzdWx0KQorCisgICAgd2hpbGUgbGVuKHJlbWFpbmluZ19wYXRocykgPiAxOgorICAgICAgICBm
aW5kX2R1cGxpY2F0ZXMoKQorICAgICAgICByZW1haW5pbmdfcGF0aHMgPSByZW1haW5pbmdfcGF0
aHNbMTpdCiAKLSAgICBkdXBsaWNhdGVzX2xlbiA9IGxlbihkdXBsaWNhdGVzKQotICAgIHRvdGFs
ICs9IGR1cGxpY2F0ZXNfbGVuCi0gICAgcHJpbnQgJyVkIGZvdW5kIGluICVzIC0+IGdlbmVyaWMn
ICUgKGR1cGxpY2F0ZXNfbGVuLCAnIC0+ICcuam9pbihbb3MucGF0aC5iYXNlbmFtZShwKSBmb3Ig
cCBpbiBiYXNlbGluZV9zZWFyY2hfcGF0aFs6LTFdXSkpCisgICAgcmV0dXJuIGR1cGxpY2F0ZXMK
IAotaWYgdG90YWw6Ci0gICAgaWYgbm90IG9wdGlvbnMubm9fZGVsZXRlOgotICAgICAgICBwcmlu
dCAnJWQgZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcmVwb3NpdG9yeSwgY2hlY2sg
dGhlIHN0YXR1cyBhbmQgY29tbWl0IGlmIGV2ZXJ5dGhpbmcgaXMgY29ycmVjdCcgJSAodG90YWwp
Ci1lbHNlOgotICAgIHByaW50ICdObyBkdXBsaWNhdGVkIHJlc3VsdHMgZm91bmQnCiAKK2RlZiBj
aGVja19wbGF0Zm9ybShvcHRpb25zLCBiYXNlbGluZV9zZWFyY2hfcGF0aHNfY2hlY2tlZCk6Cisg
ICAgdG90YWwgPSAwCisKKyAgICBmb3IgcGxhdGZvcm0gaW4gcGxhdGZvcm1fbGlzdChvcHRpb25z
LnBsYXRmb3JtKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygnVHJ5aW5n
IHRvIGNyZWF0ZSBwb3J0IGZvciBwbGF0Zm9ybSB7MH0nLmZvcm1hdChwbGF0Zm9ybSkpCisgICAg
ICAgICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBsYXRmb3JtLCBvcHRpb25zKQor
ICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCdGYWlsZWQgdG8gY3JlYXRl
IHBvcnQgb2JqZWN0IGZvciB7MH0nLmZvcm1hdChwbGF0Zm9ybSkpCisgICAgICAgICAgICBjb250
aW51ZQorCisgICAgICAgIGlmIG5vdCBwb3J0LnN1cHBvcnRzX2xheW91dF90ZXN0cygpOgorICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBiYXNlbGluZV9z
ZWFyY2hfcGF0aCA9IHR1cGxlKFtwIGZvciBwIGluIHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgo
KSBpZiBvcy5wYXRoLmlzZGlyKHApXSArIFtsYXlvdXRfdGVzdHNfZGlyZWN0b3J5XSkKKyAgICAg
ICAgZXhjZXB0OgorICAgICAgICAgICAgX2xvZy53YXJuKCdFcnJvciBjb21wdXRpbmcgYmFzZWxp
bmUgc2VhcmNoIHBhdGhzIGZyb20gezB9Jy5mb3JtYXQocG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0
aCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgX2xvZy5pbmZvKCdDaGVja2lu
ZyBzZWFyY2ggcGF0aHMgW3swfV0nLmZvcm1hdCgnLCAnLmpvaW4ocmVtb3ZlX2xheW91dF90ZXN0
X3BhdGhfcHJlZml4KHApIGZvciBwIGluIGJhc2VsaW5lX3NlYXJjaF9wYXRoWzotMV0pKSkKKwor
ICAgICAgICBpZiBiYXNlbGluZV9zZWFyY2hfcGF0aCBpbiBiYXNlbGluZV9zZWFyY2hfcGF0aHNf
Y2hlY2tlZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgYmFzZWxpbmVfc2VhcmNo
X3BhdGhzX2NoZWNrZWQuYWRkKGJhc2VsaW5lX3NlYXJjaF9wYXRoKQorCisgICAgICAgIGR1cGxp
Y2F0ZXMgPSBmaW5kX2R1cGxpY2F0ZXNfaW5fcGF0aChiYXNlbGluZV9zZWFyY2hfcGF0aCkKKyAg
ICAgICAgaWYgbm90IGR1cGxpY2F0ZXM6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg
IGlmIG9wdGlvbnMubm9fZGVsZXRlOgorICAgICAgICAgICAgX2xvZy5pbmZvKCdGb3VuZCB0aGUg
Zm9sbG93aW5nIGR1cGxpY2F0ZSByZXN1bHRzOicpCisgICAgICAgICAgICBfbG9nLmluZm8oJ1xu
Jy5qb2luKHJlbW92ZV9sYXlvdXRfdGVzdF9wYXRoX3ByZWZpeChwKSBmb3IgcCBpbiBkdXBsaWNh
dGVzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGhvc3Quc2NtKCkuZGVsZXRlX2xpc3Qo
ZHVwbGljYXRlcykKKworICAgICAgICBkdXBsaWNhdGVzX2xlbiA9IGxlbihkdXBsaWNhdGVzKQor
ICAgICAgICB0b3RhbCArPSBkdXBsaWNhdGVzX2xlbgorICAgICAgICBfbG9nLmluZm8oJ3swfSBm
b3VuZCBpbiB7MX0gLT4gZ2VuZXJpY1xuJy5mb3JtYXQoZHVwbGljYXRlc19sZW4sICcgLT4gJy5q
b2luKFtvcy5wYXRoLmJhc2VuYW1lKHApIGZvciBwIGluIGJhc2VsaW5lX3NlYXJjaF9wYXRoWzot
MV1dKSkpCisgICAgCisgICAgcmV0dXJuIHRvdGFsCisKK2RlZiBtYWluKCk6CisgICAgb3B0aW9u
X3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRp
b25zXScpCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBsYXRmb3JtJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScsIGRlc3Q9J3BsYXRm
b3JtJywgZGVmYXVsdD0nYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0n
UGxhdGZvcm0gdG8gY2hlY2sgZm9yIGR1cGxpY2F0ZWQgcmVzdWx0cy4gQnkgdGhlIGRlZmF1bHQg
YWxsIHBsYXRmb3JtIGFyZSBjaGVja2VkJykKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24o
Jy1uJywgJy0tbm8tZGVsZXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PSdzdG9yZV90cnVlJywgZGVzdD0nbm9fZGVsZXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0nRG8gbm90IGRlbGV0ZSB0aGUgZHVwbGljYXRlZCByZXN1bHRzIGZvdW5kIGZy
b20gdGhlIHJlcG9zaXRvcnksIGxpc3QgdGhlbSBpbnN0ZWFkJykKKyAgICBvcHRpb25fcGFyc2Vy
LmFkZF9vcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1
bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0VuYWJsZSB2ZXJi
b3NlIHByaW50aW5nJyksCisKKyAgICBvcHRpb25zLCBhcmdzID0gb3B0aW9uX3BhcnNlci5wYXJz
ZV9hcmdzKCkKKworICAgIGNvbmZpZ3VyZV9sb2dnaW5nKGxvZ2dlcj1fbG9nKQorICAgIF9sb2cu
c2V0TGV2ZWwobG9nZ2luZy5ERUJVRyBpZiBvcHRpb25zLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklO
Rk8pCisKKyAgICB0b3RhbCA9IDAKKyAgICBiYXNlbGluZV9zZWFyY2hfcGF0aHNfY2hlY2tlZCA9
IHNldCgpCisKKyAgICBvcHRpb25zLndlYmtpdF90ZXN0X3J1bm5lciA9IEZhbHNlCisgICAgdG90
YWwgKz0gY2hlY2tfcGxhdGZvcm0ob3B0aW9ucywgYmFzZWxpbmVfc2VhcmNoX3BhdGhzX2NoZWNr
ZWQpCisKKyAgICBvcHRpb25zLndlYmtpdF90ZXN0X3J1bm5lciA9IFRydWUKKyAgICB0b3RhbCAr
PSBjaGVja19wbGF0Zm9ybShvcHRpb25zLCBiYXNlbGluZV9zZWFyY2hfcGF0aHNfY2hlY2tlZCkK
KworICAgIGlmIHRvdGFsOgorICAgICAgICBpZiBvcHRpb25zLm5vX2RlbGV0ZToKKyAgICAgICAg
ICAgICMgRklYTUU6IFdpdGhvdXQgZGVsZXRpb24gdGhlIHRvdGFsIGlzbid0IGFjY3VyYXRlLCBi
ZWNhdXNlIGRpcmVjdG9yaWVzIHdoaWNoIGFyZSBwYXJlbnRzIG9mIHdrMSBhbmQgd2syIGRpcnMg
d2lsbCBiZSB0ZXN0ZWQgdHdpY2UuCisgICAgICAgICAgICBfbG9nLmluZm8oJ0ZvdW5kIHswfSBk
dXBsaWNhdGUgcmVzdWx0cy4nLmZvcm1hdCh0b3RhbCkpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBfbG9nLmluZm8oJ3swfSBmaWxlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSByZXBv
c2l0b3J5LiBDaGVjayB0aGUgc3RhdHVzIGFuZCBjb21taXQgaWYgZXZlcnl0aGluZyBpcyBjb3Jy
ZWN0Jy5mb3JtYXQodG90YWwpKQorICAgIGVsc2U6CisgICAgICAgIF9sb2cuaW5mbygnTm8gZHVw
bGljYXRlZCByZXN1bHRzIGZvdW5kLicpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cisg
ICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCBm
ZGRiMTQwNWIzMmE4MTY4ZTQ4MmI3NzRlZTFiMmRiMjg5MTUyNmYwLi4wYzBjOWNkZDI1ZGRjZGQx
ZjJhMjkwZjE4OTk1MjZmMDYyMGY3MzA4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5w
eQpAQCAtMTUzLDYgKzE1Myw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICBkZWYgc3VwcG9y
dHNfcGVyX3Rlc3RfdGltZW91dChzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRl
ZiBzdXBwb3J0c19sYXlvdXRfdGVzdHMoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKICAg
ICBkZWYgZGVmYXVsdF9waXhlbF90ZXN0cyhzZWxmKToKICAgICAgICAgIyBGSVhNRTogRGlzYWJs
ZSB1bnRpbCB0aGV5IGFyZSBydW4gYnkgZGVmYXVsdCBvbiBidWlsZC53ZWJraXQub3JnLgogICAg
ICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9pb3NfZGV2aWNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19kZXZpY2Uu
cHkKaW5kZXggMDRkN2JjYTE4YTE1YTNlNjg5MmE0YTNhZDlhZjY1ZTcyNDRkZmQ0NC4uMjE3MWU0
OWUyOTllNzVjZDgyZWUxZTg1MmRiNDhlOTA2MzdlY2UzOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2lvc19kZXZpY2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2lvc19kZXZpY2UucHkKQEAgLTgyLDYgKzgyLDkgQEAgY2xhc3MgSU9TRGV2aWNl
UG9ydChJT1NQb3J0KToKICAgICAgICAgICAgICAgICByZXR1cm4gKHN0ZGVyciwgY3Jhc2hsb2cp
CiAgICAgICAgIHJldHVybiAoc3RkZXJyLCBOb25lKQogCisgICAgZGVmIHN1cHBvcnRzX2xheW91
dF90ZXN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuREVWSUNFX01BTkFHRVIgaXMgbm90
IE5vbmUKKwogICAgIEBtZW1vaXplZAogICAgIGRlZiBkZXZpY2VfdmVyc2lvbihzZWxmKToKICAg
ICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd2ZXJzaW9uJyk6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2hfZGV2aWNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3dhdGNoX2RldmljZS5weQppbmRleCAyNzNmNTJlM2QxMjYyM2I1OTVmODBkYTVl
YTM5NTUwYzc2ZGNiZGRlLi5hZDgyODk1M2RjMjcwMjk3ZmI4NGJjZTI3ZDFiZGE4ZmRjNmY2ZTk0
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2hfZGV2aWNlLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93YXRjaF9kZXZpY2UucHkKQEAgLTgw
LDYgKzgwLDkgQEAgY2xhc3MgV2F0Y2hEZXZpY2VQb3J0KFdhdGNoUG9ydCk6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIChzdGRlcnIsIGNyYXNobG9nKQogICAgICAgICByZXR1cm4gKHN0ZGVyciwg
Tm9uZSkKIAorICAgIGRlZiBzdXBwb3J0c19sYXlvdXRfdGVzdHMoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLkRFVklDRV9NQU5BR0VSIGlzIG5vdCBOb25lCisKICAgICBAbWVtb2l6ZWQKICAg
ICBkZWYgZGV2aWNlX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbign
dmVyc2lvbicpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKaW5kZXggMjhlY2U0MDUyMzE5
MjcyMmRiYmQyZTRmYmI1YjExZTk4NTNlODA0MC4uNzAzOWNiNTJjM2QxZWY3M2FlYWRmMmQxMzI2
YTMyZmU1ZWI0N2EyMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dp
bi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CkBAIC0xMTksMTAg
KzExOSwxMSBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgZGVmIGRlZmF1bHRfYmFz
ZWxpbmVfc2VhcmNoX3BhdGgoc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICB2ZXJzaW9uX25hbWVf
bWFwID0gVmVyc2lvbk5hbWVNYXAubWFwKHNlbGYuaG9zdC5wbGF0Zm9ybSkKICAgICAgICAgaWYg
c2VsZi5fb3NfdmVyc2lvbiA8IHNlbGYuVkVSU0lPTl9NSU4gb3Igc2VsZi5fb3NfdmVyc2lvbiA+
IHNlbGYuVkVSU0lPTl9NQVg6Ci0gICAgICAgICAgICBmYWxsYmFja192ZXJzaW9ucyA9IFtzZWxm
Ll9vc192ZXJzaW9uXQorICAgICAgICAgICAgZmFsbGJhY2tfdmVyc2lvbnMgPSBbc2VsZi5fb3Nf
dmVyc2lvbl0gaWYgc2VsZi5fb3NfdmVyc2lvbiBlbHNlIFtdCiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICBzb3J0ZWRfdmVyc2lvbnMgPSBzb3J0ZWQodmVyc2lvbl9uYW1lX21hcC5tYXBwaW5n
X2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybT1zZWxmLnBvcnRfbmFtZSkudmFsdWVzKCkpCiAgICAgICAg
ICAgICBmYWxsYmFja192ZXJzaW9ucyA9IHNvcnRlZF92ZXJzaW9uc1tzb3J0ZWRfdmVyc2lvbnMu
aW5kZXgoc2VsZi5fb3NfdmVyc2lvbik6XQorCiAgICAgICAgIGZhbGxiYWNrX25hbWVzID0gWyd3
aW4tJyArIHZlcnNpb25fbmFtZV9tYXAudG9fbmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1zZWxmLnBv
cnRfbmFtZSkubG93ZXIoKS5yZXBsYWNlKCcgJywgJycpIGZvciB2ZXJzaW9uIGluIGZhbGxiYWNr
X3ZlcnNpb25zXQogICAgICAgICBmYWxsYmFja19uYW1lcy5hcHBlbmQoJ3dpbicpCiAKQEAgLTQ3
NSw3ICs0NzYsNyBAQCBjbGFzcyBXaW5DYWlyb1BvcnQoV2luUG9ydCk6CiAgICAgICAgIHBhdGhz
ID0gW10KICAgICAgICAgdmVyc2lvbl9uYW1lX21hcCA9IFZlcnNpb25OYW1lTWFwLm1hcChzZWxm
Lmhvc3QucGxhdGZvcm0pCiAgICAgICAgIGlmIHNlbGYuX29zX3ZlcnNpb24gPCBzZWxmLlZFUlNJ
T05fTUlOIG9yIHNlbGYuX29zX3ZlcnNpb24gPiBzZWxmLlZFUlNJT05fTUFYOgotICAgICAgICAg
ICAgdmVyc2lvbnMgPSBbc2VsZi5fb3NfdmVyc2lvbl0KKyAgICAgICAgICAgIHZlcnNpb25zID0g
W3NlbGYuX29zX3ZlcnNpb25dIGlmIHNlbGYuX29zX3ZlcnNpb24gZWxzZSBbXQogICAgICAgICBl
bHNlOgogICAgICAgICAgICAgc29ydGVkX3ZlcnNpb25zID0gc29ydGVkKHZlcnNpb25fbmFtZV9t
YXAubWFwcGluZ19mb3JfcGxhdGZvcm0ocGxhdGZvcm09c2VsZi5wb3J0X25hbWUpLnZhbHVlcygp
KQogICAgICAgICAgICAgdmVyc2lvbnMgPSBzb3J0ZWRfdmVyc2lvbnNbc29ydGVkX3ZlcnNpb25z
LmluZGV4KHNlbGYuX29zX3ZlcnNpb24pOl0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZjllMTI1MWFjNGQzODAwZDg4ZTFj
YzY1OGVkYTU0NzQ4MDk0ZWQwLi4zZGIyMDE0M2YxN2Y5ZmE4YmJiN2QyMGUyY2Y0MzEzYzRlNmRi
Y2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDMgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYVJlY29yZGVy
IGJpdHJhdGUgb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8tYml0
cmF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLXZpZGVvLWJpdHJhdGUuaHRtbDogQWRkZWQuCisKIDIwMjAtMDgtMDIgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdyaXRlIGEgc2NyaXB0IHRvIGZpbmQgZHVw
bGljYXRlIGZpbGVzIGFuZCBkZWxldGUgc29tZSBkdXBsaWNhdGUgdGVzdHMgaW4gTGF5b3V0VGVz
dHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci1hdWRpby1iaXRyYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YTM5NTQ3OThmNjZiZjNiNTdkYmY0ZjEwYWEwM2U0MzU1MDI2MzIzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLWF1ZGlvLWJpdHJhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNT
IFZhcmlvdXMgYXVkaW8gYml0cmF0ZXMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8tYml0cmF0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjlhMmE5ZDI0ZTZjMDliY2I4MDQ0YWJiMGZlNmFhYjcwM2VjZmZi
YjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXItYXVkaW8tYml0cmF0ZS5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhZG9j
dHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+TWVkaWFSZWNvcmRlciBhdWRp
byBiaXRyYXRlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGFzeW5j
IGZ1bmN0aW9uIHJlY29yZChzdHJlYW0sIGJpdFJhdGUpCisgICAgeworICAgICAgICBjb25zdCBy
ZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSwgeyBhdWRpb0JpdHNQZXJTZWNvbmQg
OiBiaXRSYXRlIH0pOworICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgcmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0g
KGUpID0+IHJlc29sdmUoZS5kYXRhKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQocmVqZWN0LCA1
MDAwKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJlY29yZGVyLnN0YXJ0KCk7CisgICAgICAgIHNl
dFRpbWVvdXQoKCkgPT4gcmVjb3JkZXIuc3RvcCgpLCAyNTAwKTsKKyAgICAgICAgcmV0dXJuIHBy
b21pc2U7CisgICAgfQorCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgICAg
IGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHsgYXVkaW8gOiB0cnVlIH0pOworICAgICAgICBjb25zdCBiaXRSYXRlcyA9IFsxMjgwMDAsIDE5
MjAwMCwgMjU2MDAwXTsKKyAgICAgICAgbGV0IHByb21pc2VzID0gW107CisgICAgICAgIGJpdFJh
dGVzLmZvckVhY2goYml0UmF0ZSA9PiB7CisgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHJlY29y
ZChzdHJlYW0sIGJpdFJhdGUpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IGJsb2JzID0g
WzAsIDAsIDBdOworICAgICAgICBwcm9taXNlcy5mb3JFYWNoKGFzeW5jIChwcm9taXNlLCBpbmRl
eCkgPT4geworICAgICAgICAgICAgYmxvYnNbaW5kZXhdID0gYXdhaXQgcHJvbWlzZTsKKyAgICAg
ICAgfSk7CisgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTsKKyAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoYmxvYnNbMF0uc2l6ZSwgMCk7CisgICAgICAgIGFzc2VydF9ncmVhdGVy
X3RoYW4oYmxvYnNbMl0uc2l6ZSwgYmxvYnNbMF0uc2l6ZSk7CisgICAgfSwgIlZhcmlvdXMgYXVk
aW8gYml0cmF0ZXMiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWJp
dHJhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLXZpZGVvLWJpdHJhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2NzBh
NGI2NzMxZGQ0ZTVjYWQ4YzBmODEzMDI1NmUyMjYwMTgzYzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8tYml0
cmF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgVmFyaW91cyB2aWRlbyBi
aXRyYXRlcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLXZpZGVvLWJpdHJhdGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDUyMTgzYjA3OWNjMWIyMDJmNGU5NzJhOTNkZjEzZDg2YjM1NzhjZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12
aWRlby1iaXRyYXRlLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDx0aXRsZT5NZWRpYVJlY29yZGVyIHZpZGVvIGJpdHJhdGU8L3RpdGxl
PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgYXN5bmMgZnVuY3Rpb24gcmVjb3Jk
KGJpdFJhdGUpCisgICAgeworICAgICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvIDogeyB3aWR0aCA6IDEwMjQgfSB9KTsK
KyAgICAgICAgY29uc3QgcmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0sIHsgdmlk
ZW9CaXRzUGVyU2Vjb25kIDogYml0UmF0ZSB9KTsKKyAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGxldCBjb3VudCA9
IDA7CisgICAgICAgICAgICBsZXQgYmxvYnMgPSBbXTsKKyAgICAgICAgICAgIHJlY29yZGVyLm9u
ZGF0YWF2YWlsYWJsZSA9IChlKSA9PiByZXNvbHZlKGUuZGF0YSk7CisgICAgICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHJlamVjdCgiZGF0YXZhaWxhYmxlIGV2ZW50IHRpbWVkIG91dCIpLCAxNTAw
MCk7CisgICAgICAgIH0pOworICAgICAgICByZWNvcmRlci5zdGFydCgpOworICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHJlY29yZGVyLnN0b3AoKSwgMTAwMCk7CisgICAgICAgIHJldHVybiBwcm9t
aXNlOworICAgIH0KKworICAgIHByb21pc2VfdGVzdChhc3luYyAodCkgPT4geworICAgICAgICBs
ZXQgYmxvYnMgPSBbMCwgMF07CisgICAgICAgIGJsb2JzWzBdID0gYXdhaXQgcmVjb3JkKDUwMDAw
KTsKKyAgICAgICAgYmxvYnNbMV0gPSBhd2FpdCByZWNvcmQoNTAwMDAwMCk7CisKKyAgICAgICAg
Ly8gV2UgYXJlIHRha2luZyB0aGUgc2Vjb25kIGJsb2Igc2luY2UgaXQgbWlnaHQgYmUgbW9yZSBh
Y2N1cmF0ZSB0aGFuIHRoZSBmaXJzdCBvbmUuCisgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4o
YmxvYnNbMF0uc2l6ZSwgMCwgImJsb2IwIik7CisgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4o
YmxvYnNbMV0uc2l6ZSwgYmxvYnNbMF0uc2l6ZSwgImJsb2IyIik7CisgICAgfSwgIlZhcmlvdXMg
dmlkZW8gYml0cmF0ZXMiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405847</attachid>
            <date>2020-08-03 10:09:39 -0700</date>
            <delta_ts>2020-08-04 05:34:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214973-20200803190937.patch</filename>
            <type>text/plain</type>
            <size>53729</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM1ZjY5NWRlMTA1ZGU4
Yzk4MGU5MjUwNGJlM2Q1YzJlYTZiMGIxYi4uNjNjNGE1NGJiODdlMDM2ZDhjMmJkYWFhN2QxZGEy
NjNmZGU4NjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA4LTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
TWVkaWFSZWNvcmRlciBiaXRyYXRlIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgb3B0aW9ucyB0byBNZWRpYVJlY29yZGVyUHJpdmF0
ZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgRm9yIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24sIHBh
c3MgaXQgZG93biB0byBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYW5kIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci4KKyAgICAgICAgRm9yIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciwgd2UgZG8gbm90IGhhbmRsZSB3ZWxsIHNvbWUgYml0IHJhdGVzLCBzbyBmb3Igbm93LCB3ZSBs
aW1pdCB0byBzcGVjaWZpYyB2YWx1ZXMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLmh0bWwK
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpNZWRpYVJlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0Qml0
c1BlclNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6Om91dHB1dEJpdFJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlw
dGlvbik6CisgICAgICAgIERvIG5vdCBleGl0IHdoZW4gbm90IGFibGUgdG8gc2V0IGJpdHJhdGUg
YXMgd2Ugc3RpbGwgd2FudCB0byBzZXQgbV9tYXhPdXRwdXRQYWNrZXRTaXplLgorICAgICAgICBJ
biBjYXNlIG9mIGVycm9yIGluIHNldHRpbmcgdXAgdGhlIGNvbnZlcnRlciwgY2xlYW4gaXQgdXAg
c28gdGhhdCB3ZSBkbyBub3QgdXNlIGEgcGFydGlhbGx5IHNldCB1cCBjb252ZXJ0ZXIuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0T3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0
Qml0c1BlclNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Q
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmluaXRDb21wcmVzc2lvblNlc3Npb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlY29yZGVyTW9ja1NvdXJjZSk6CisKIDIwMjAt
MDgtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyIHNob3VsZCBlbnN1cmUgaXRzIHdyaXRlciBpbnB1dCBpcyBy
ZWFkeSBmb3IgbW9yZSBkYXRhIGJlZm9yZSBhcHBlbmRpbmcgbmV3IHNhbXBsZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMGZkYTgyN2IxOGE2MDE1NDNkZDhjODQyMDBmYzg3NzllYjIxYzQ1ZC4uOWVhZTEzOTQzM2Uy
ZmFkODdmZmIxYWI1Y2M2OGM2NDE0OTQ2MjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAyMC0wOC0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIE1lZGlhUmVjb3JkZXIgYml0cmF0ZSBvcHRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ5NzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXJpYWxpemUgb3B0aW9ucyB3
aGVuIGNyZWF0aW5nIHJlbW90ZSBtZWRpYSByZWNvcmRlci4KKworICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlY29yZGVyOjpjcmVhdGUpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyOjpjcmVhdGVSZWNvcmRlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVJlY29yZGVyUHJpdmF0ZTo6TWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RhcnRSZWNvcmRpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3Jk
ZXJQcml2YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmg6CisKIDIwMjAtMDgtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSBzb21lIG1lbWJlciBmdW5jdGlvbnMgb2YgUmFuZ2UgYW5kIG1h
bnkgY2FsbHMgdG8gY3JlYXRlTGl2ZVJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggZTZmMmZmZjU2Yjky
YWE1N2ZhMjFhYjc2OTI5ZWExNTlhMzMyN2U4MC4uMjMxYTY2NzA0YTdjOTRhNDY2NDkxNjBlNTBk
Y2U3MWZkYTBkOWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtNDgsOSArNDgsMTAgQEAgTWVkaWFSZWNv
cmRlcjo6Q3JlYXRvckZ1bmN0aW9uIE1lZGlhUmVjb3JkZXI6Om1fY3VzdG9tQ3JlYXRvciA9IG51
bGxwdHI7CiAKIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVJlY29yZGVyPj4gTWVkaWFSZWNvcmRlcjo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSwgT3B0
aW9ucyYmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBNZWRpYVJlY29y
ZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShkb2N1bWVudCwgc3RyZWFtLT5wcml2YXRl
U3RyZWFtKCkpOwotICAgIGlmICghcHJpdmF0ZUluc3RhbmNlKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgTWVkaWFSZWNvcmRlciBpcyB1bnN1cHBv
cnRlZCBvbiB0aGlzIHBsYXRmb3JtIl9zIH07CisgICAgYXV0byByZXN1bHQgPSBNZWRpYVJlY29y
ZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShkb2N1bWVudCwgc3RyZWFtLT5wcml2YXRl
U3RyZWFtKCksIG9wdGlvbnMpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCiAgICAgYXV0byByZWNvcmRl
ciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlcihkb2N1bWVudCwgV1RGTW92ZShzdHJlYW0p
LCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiAgICAgcmVjb3JkZXItPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiByZWNvcmRlcjsKQEAgLTYxLDI3ICs2MiwyNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXI6OnNldEN1c3RvbVByaXZhdGVSZWNvcmRlckNyZWF0b3IoQ3JlYXRvckZ1bmN0aW9uIGNyZWF0
b3IpCiAgICAgbV9jdXN0b21DcmVhdG9yID0gY3JlYXRvcjsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQor
RXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPj4gTWVkaWFS
ZWNvcmRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBN
ZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAobV9jdXN0b21DcmVhdG9yKQotICAgICAgICByZXR1cm4gbV9jdXN0b21DcmVhdG9yKHN0
cmVhbSk7CisgICAgICAgIHJldHVybiBtX2N1c3RvbUNyZWF0b3Ioc3RyZWFtLCBvcHRpb25zKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gcGFnZS0+bWVk
aWFSZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoc3RyZWFtKTsK
KyAgICByZXR1cm4gcGFnZS0+bWVkaWFSZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVkaWFSZWNv
cmRlclByaXZhdGUoc3RyZWFtLCBvcHRpb25zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRv
Y3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0oc3RyZWFtKTsKLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgTWVkaWFSZWNv
cmRlciBpcyB1bnN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIl9zIH07CiAjZW5kaWYKIH0KIAot
TWVkaWFSZWNvcmRlcjo6TWVkaWFSZWNvcmRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRp
YVN0cmVhbT4mJiBzdHJlYW0sIE9wdGlvbnMmJiBvcHRpb24pCitNZWRpYVJlY29yZGVyOjpNZWRp
YVJlY29yZGVyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSwg
T3B0aW9ucyYmIG9wdGlvbnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCi0gICAg
LCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb24pKQorICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0
aW9ucykpCiAgICAgLCBtX3N0cmVhbShXVEZNb3ZlKHN0cmVhbSkpCiAgICAgLCBtX3RpbWVTbGlj
ZVRpbWVyKFt0aGlzXSB7IHJlcXVlc3REYXRhKCk7IH0pCiB7CkBAIC0xMzUsMTEgKzEzNiwxMyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhPcHRpb25h
bDx1bnNpZ25lZD4gdGltZVNsaWNlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJUaGUgTWVkaWFSZWNvcmRlcidzIHN0YXRlIG11c3QgYmUgaW5hY3RpdmUg
aW4gb3JkZXIgdG8gc3RhcnQgcmVjb3JkaW5nIl9zIH07CiAKICAgICBBU1NFUlQoIW1fcHJpdmF0
ZSk7Ci0gICAgbV9wcml2YXRlID0gY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoKmRvY3VtZW50
KCksIG1fc3RyZWFtLT5wcml2YXRlU3RyZWFtKCkpOworICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRl
TWVkaWFSZWNvcmRlclByaXZhdGUoKmRvY3VtZW50KCksIG1fc3RyZWFtLT5wcml2YXRlU3RyZWFt
KCksIG1fb3B0aW9ucyk7CiAKLSAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIE1lZGlhUmVjb3JkZXIgaXMgdW5zdXBw
b3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSJfcyB9OworICAgIEFTU0VSVCghcmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAorICAgIG1fcHJpdmF0ZSA9IHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKICAgICBtX3ByaXZhdGUtPnN0YXJ0UmVjb3JkaW5nKFt0aGlzLCBw
ZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oYXV0byYmIGV4Y2Vw
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5oCmluZGV4IDQyOTllODhhM2FiZjNmOTRhNDNjZDczY2JlMzFkOTdhZjNkMzBm
YTAuLjUwMjUwNmY2MTUwNWUwMGFhMTZjZDg1MDkyYjVlNWIxNzlmNTY3YmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApA
QCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIk1l
ZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgpA
QCAtNDksMTggKzUxLDEyIEBAIGNsYXNzIE1lZGlhUmVjb3JkZXIgZmluYWwKIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIFJlY29yZGluZ1N0YXRlIHsgSW5hY3RpdmUsIFJlY29yZGluZywgUGF1c2Vk
IH07CiAgICAgCi0gICAgc3RydWN0IE9wdGlvbnMgewotICAgICAgICBTdHJpbmcgbWltZVR5cGU7
Ci0gICAgICAgIHVuc2lnbmVkIGF1ZGlvQml0c1BlclNlY29uZDsKLSAgICAgICAgdW5zaWduZWQg
dmlkZW9CaXRzUGVyU2Vjb25kOwotICAgICAgICB1bnNpZ25lZCBiaXRzUGVyU2Vjb25kOwotICAg
IH07Ci0gICAgCiAgICAgfk1lZGlhUmVjb3JkZXIoKTsKICAgICAKKyAgICB1c2luZyBPcHRpb25z
ID0gTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxS
ZWY8TWVkaWFSZWNvcmRlcj4+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxNZWRpYVN0cmVhbT4mJiwg
T3B0aW9ucyYmID0geyB9KTsKICAgICAKLSAgICB1c2luZyBDcmVhdG9yRnVuY3Rpb24gPSBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+KCopKE1lZGlhU3RyZWFtUHJpdmF0ZSYp
OworICAgIHVzaW5nIENyZWF0b3JGdW5jdGlvbiA9IEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4+ICgqKShNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBP
cHRpb25zJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRDdXN0b21Qcml2
YXRlUmVjb3JkZXJDcmVhdG9yKENyZWF0b3JGdW5jdGlvbik7CiAgICAgCkBAIC03Niw5ICs3Miw5
IEBAIHB1YmxpYzoKICAgICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0u
Z2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYVJlY29yZGVyKERvY3VtZW50JiwgUmVmPE1l
ZGlhU3RyZWFtPiYmLCBPcHRpb25zJiYgPSB7IH0pOworICAgIE1lZGlhUmVjb3JkZXIoRG9jdW1l
bnQmLCBSZWY8TWVkaWFTdHJlYW0+JiYsIE9wdGlvbnMmJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0
ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFtUHJpdmF0ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+PiBjcmVhdGVNZWRpYVJlY29y
ZGVyUHJpdmF0ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE9wdGlvbnMm
KTsKICAgICAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIApAQCAtMTExLDcgKzEw
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJikgZmluYWwgeyB9OwogCiAgICAgc3RhdGljIENyZWF0b3JGdW5jdGlvbiBt
X2N1c3RvbUNyZWF0b3I7Ci0gICAgCisKICAgICBPcHRpb25zIG1fb3B0aW9uczsKICAgICBSZWY8
TWVkaWFTdHJlYW0+IG1fc3RyZWFtOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZT4gbV9wcml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCA4ODRh
NDA3OTBhNDZhODMyNjI2ZTBmYTBlZWJiOWM5ZDlmNDRjYWIyLi5jZmYzNmJiZGFmNjlkOGI1MjU1
MDIyMWFlNDZjY2UxYTZjZDI1MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAt
MzIsMTIgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlh
UmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQorc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1l
ZGlhUmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRp
YVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCi0gICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3Jl
YXRlKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3Jl
YXRlKHN0cmVhbSwgb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOwor
ICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcm92aWRlci5oCmluZGV4IDExYmFhZGNlYTg2OWU3YTI5MTk2NjJhYjJk
OGNlZjU0NzBjMmVkYmQuLjNhM2JkMTlhNzMwNzAzNDZlOTg5ZmViZjczODAzODcwNGViZTkzM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFt
UHJpdmF0ZTsKK3N0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiAKIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVJl
Y29yZGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZT4gY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRl
Jik7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IGNy
ZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE1lZGlh
UmVjb3JkZXJQcml2YXRlT3B0aW9ucyYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFVzZUdQVVBy
b2Nlc3MoYm9vbCB2YWx1ZSkgeyBtX3VzZUdQVVByb2Nlc3MgPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQxOGJi
YTdlNjRlMGYyYTE2NmZhYzIyZjA3ODA2MjYwMDRkZTBjZjcuLjQ1ODg4MjdmYjU1MmIyYzgzOWY3
M2Q1MmUwMDM3NDg3YThhN2FiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNTIsNiArMTA1Miw3IEBACiAJCTQxM0UwMDc5
MURCMEU0RjIwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFMDA3ODFEQjBFNERFMDAyMzQxRDIgLyogTWVt
b3J5UmVsZWFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxNDQ2MEEyMjQxMjk5NDUwMDgxNEJFNyAvKiBNZWRpYVNlc3Npb25JZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ0NjBB
MDI0MTI5OTQxMDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNDU5OEMyMjNDOEQxNzcw
MDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDU5OEMxMjNDOEFENzkwMDJCOUND
OCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSAqLzsgfTsKKwkJNDE0QjdGQUQy
NEQ4MUNDMTAwMzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0QjdGQUIyNEQ4MUM4RjAw
MzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJF
MyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNEI4MjAzMUQ2REYwRDkwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUu
aCAqLzsgfTsKIAkJNDE0REVERTcxRjlGRTkxRTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NERFREU1MUY5RkU5MTUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1MDcxNTgxNjg1
MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUwNzE1NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0
b3JGaWx0ZXIuaCAqLzsgfTsKQEAgLTc0NjUsNiArNzQ2Niw3IEBACiAJCTQxNEFENDAwMjE0OThE
MzEwMDUyMTY3NiAvKiBSVENSdHBEZWNvZGluZ1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UlRDUnRwRGVjb2RpbmdQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNEFENDAxMjE0OThEMzEwMDUyMTY3NiAvKiBSVENSdHBEZWNvZGluZ1BhcmFtZXRlcnMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFJUQ1J0cERlY29kaW5nUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxNEFENDAyMjE0OThEMzIwMDUyMTY3NiAvKiBSVENSdHBDb2RpbmdQYXJhbWV0
ZXJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSVENSdHBDb2RpbmdQYXJhbWV0ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE0QjdGQUIyNEQ4MUM4RjAwMzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQ
cml2YXRlT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0
QjgyMDIxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVkQ2xvbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJl
ZENsb25lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZWRDbG9u
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTRERURFNTFGOUZFOTE1MDA0N0M0
MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xOTUyMiw2ICsxOTUyNCw3IEBACiAJCQkJNEQ3M0Y5NDQyMThCQzVGQTAwM0EzRUQ2
IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oICovLAogCQkJCTREOUY2QjY1MjE4MjUz
MkIwMDkyQTlDNSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwICovLAogCQkJCTREOUY2
QjY0MjE4MjUzMkIwMDkyQTlDNSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaCAqLywKKwkJ
CQk0MTRCN0ZBQjI0RDgxQzhGMDAzM0Q0NDIgLyogTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25z
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1lZGlhcmVjb3JkZXI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMzI1MDYsNiArMzI1MDksNyBAQAogCQkJCTREQjcxMzBEMjE2RUNCNEQw
MDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NEQzQjUwMTYyMTdFNThCNzAwNjY1REIxIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0RDczRjk0NjIxOEJDNUZBMDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTRCN0ZBRDI0RDgxQ0MxMDAzM0Q0
NDIgLyogTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
RDczRjk0RTIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3NkU4OTYyM0MzNTM3QjAwM0U4M0ZFIC8qIE1lZGlh
UmVjb3JkZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwODQzRDAxQjE4RTQ3RDAw
QjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAwYzE0YWU2OTBjZDNmNDZhNjNiYWU2MTYw
ODU0ZjFhMDNiODExYjQxLi5hM2JjODE3YjE4MzNlMGM4NDc3NTUwMzI3ZjE1MTMzOGFlZjIxZWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTg4LDcgKzU4OCw3
IEBAIHB1YmxpYzoKICAgICBFbXB0eU1lZGlhUmVjb3JkZXJQcm92aWRlcigpID0gZGVmYXVsdDsK
IHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29y
ZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJl
Y29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBNZWRpYVJlY29yZGVyUHJp
dmF0ZU9wdGlvbnMmKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAwNGJhNmIwODRhZDIzZjQzMzJlZDRmZWU1NDVmZWY4
MTQ1ZDRhNGE2Li41Njc0OTMyMThmYjI0OWQ3ZTRjMWE5MzY1MjZiNTczYWM3ZjIyOTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlICJF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaCIKICNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDg4NTZiMTU3
ZGY0ODQ4Y2UzZjhkMTNlNzcyN2QxMzIxMDgwNTczYTEuLjg0NGE5NjlmNTNkNGFlZjc5Y2QyNmJi
MWJlYzQyNzk0ZmJkNGRlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGw6OmNyZWF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKK3N0ZDo6dW5pcXVl
X3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbDo6Y3JlYXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVl
ZCB0byBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgYXVkaW8vdmlkZW8gdHJhY2tzCiAg
ICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgY2hvb3NlIHRoZSBmaXJzdCB0cmFjayBhcyB0aGUgcmVj
b3JkZWQgdHJhY2suCkBAIC00NSwxMSArNDUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUK
IAogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0
VHJhY2tzKHN0cmVhbSk7CiAKLSAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpjcmVhdGUoISFzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLCAhIXNlbGVjdGVkVHJh
Y2tzLnZpZGVvVHJhY2spOworICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNyZWF0ZSghIXNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2ssICEhc2VsZWN0ZWRUcmFj
a3MudmlkZW9UcmFjaywgb3B0aW9ucyk7CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgYXV0byByZWNvcmRlciA9IG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byByZWNv
cmRlciA9IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KG5ldyBN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwod3JpdGVyLnJlbGVhc2VOb25OdWxsKCkpKTsKICAg
ICBpZiAoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaykKICAgICAgICAgcmVjb3JkZXItPnNldEF1
ZGlvU291cmNlKCZzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLT5zb3VyY2UoKSk7CiAgICAgaWYg
KHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwuaAppbmRleCAxZDg0NTAwOWQzMWM3YTk5ODZkZjdmZTMwZDVhMjZmMmI0YWJjOGZiLi41
NDU0MTBiMmFlZDBjYzM2MDcxOGUzZTMxNGJjZjQ0OGI0OWE0ZTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTM3LDEyICszNywxMiBAQCBjbGFzcyBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwgZmluYWwKICAgICA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJp
dmF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IGNyZWF0ZShNZWRp
YVN0cmVhbVByaXZhdGUmKTsKLQotICAgIGV4cGxpY2l0IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBjcmVhdGUoTWVkaWFTdHJl
YW1Qcml2YXRlJiwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAgICAgfk1l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbCgpOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IE1l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+
JiYpOworCiAgICAgLy8gTWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKE1lZGlhU2FtcGxlJikgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NjVlNmRlZmViMTJhYTUzYzllNDJlNmJhYzYxMTUxNjg4NWExMjlmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1lZGlhUmVj
b3JkZXJQcml2YXRlT3B0aW9ucyB7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBhdWRpb0JpdHNQZXJTZWNvbmQ7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHZp
ZGVvQml0c1BlclNlY29uZDsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gYml0c1BlclNlY29uZDsK
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK2lubGluZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtaW1lVHlwZTsK
KyAgICBlbmNvZGVyIDw8IGF1ZGlvQml0c1BlclNlY29uZDsKKyAgICBlbmNvZGVyIDw8IHZpZGVv
Qml0c1BlclNlY29uZDsKKyAgICBlbmNvZGVyIDw8IGJpdHNQZXJTZWNvbmQ7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitpbmxpbmUgT3B0aW9uYWw8TWVkaWFSZWNvcmRlclByaXZhdGVP
cHRpb25zPiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1p
bWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25h
bDxPcHRpb25hbDx1bnNpZ25lZD4+IGF1ZGlvQml0c1BlclNlY29uZDsKKyAgICBkZWNvZGVyID4+
IGF1ZGlvQml0c1BlclNlY29uZDsKKyAgICBpZiAoIWF1ZGlvQml0c1BlclNlY29uZCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNp
Z25lZD4+IHZpZGVvQml0c1BlclNlY29uZDsKKyAgICBkZWNvZGVyID4+IHZpZGVvQml0c1BlclNl
Y29uZDsKKyAgICBpZiAoIXZpZGVvQml0c1BlclNlY29uZCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IGJpdHNQZXJT
ZWNvbmQ7CisgICAgZGVjb2RlciA+PiBiaXRzUGVyU2Vjb25kOworICAgIGlmICghYml0c1BlclNl
Y29uZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU9wdGlvbnMgeyBXVEZNb3ZlKG1pbWVUeXBlKSwgKmF1ZGlvQml0c1BlclNl
Y29uZCwgKnZpZGVvQml0c1BlclNlY29uZCwgKmJpdHNQZXJTZWNvbmQgfTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IDY1Mjg2NmRk
ZGI5ZjlmMDQ4YWEwZjY3Yzg2OTEzMjE5MjlhYjExMjQuLmVlZTI5MzdjYjA2NzQ4NDBhYWVmMGZj
NGY2NjhmZGJiMDhkNDUzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaApAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShDTUJ1ZmZlclF1
ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CiAgICAgfkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvcigpOwogCisgICAgdm9pZCBzZXRCaXRzUGVyU2Vjb25kKHVuc2ln
bmVkKTsKICAgICB2b2lkIGZpbmlzaCgpOwogICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmKTsKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZm
ZXIoKTsKQEAgLTQ3LDYgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IoKTsKICAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRy
aWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworICAgIFVJbnQzMiBvdXRwdXRC
aXRSYXRlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgT1NTdGF0dXMgYXVkaW9Db252ZXJ0ZXJDb21w
bGV4SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZlcnRlclJlZiwgVUludDMyKiwgQXVkaW9CdWZmZXJM
aXN0KiwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqLCB2b2lkKik7CiAKQEAgLTg1LDYg
Kzg3LDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgeyAw
IH07CiAgICAgc2l6ZV90IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgeyAwIH07
CiAgICAgQXVkaW9Gb3JtYXRJRCBtX291dHB1dENvZGVjVHlwZSB7IGtBdWRpb0Zvcm1hdE1QRUc0
QUFDIH07CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fb3V0cHV0Qml0UmF0ZTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXgg
NmQwNGQ4YzNiNzgxYjZmMzg3Yjc3ZDhmOWUxNWYyY2Q0MjlhNTk4NC4uMDU1NTRjODBiMjg1NDQ0
ZDUwMzViZjBlZWYwZDVlZWQ1NjFmOWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxBdWRp
b1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9G
b3JtYXQuaD4KICNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KIAogI2ltcG9ydCA8cGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg+CiAK
QEAgLTY0LDYgKzY1LDExIEBAIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvcigpCiAgICAgfQogfQogCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6c2V0Qml0c1BlclNlY29uZCh1bnNpZ25lZCBiaXRSYXRlKQoreworICAgIG1f
b3V0cHV0Qml0UmF0ZSA9IGJpdFJhdGU7Cit9CisKIGJvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ss
IHZvaWQqIGNhbGxiYWNrT2JqZWN0KQogewogICAgIENNQnVmZmVyUXVldWVSZWYgaW5wdXRCdWZm
ZXJRdWV1ZTsKQEAgLTk1LDYgKzEwMSwyMSBAQCB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKCkKICAgICB9KTsKIH0KIAorVUludDMyIEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6b3V0cHV0Qml0UmF0ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fb3V0cHV0Qml0UmF0
ZSkgeworICAgICAgICAvLyBGSVhNRTogd2UgaGF2ZSBzb21lIGlzc3VlcyB3aGVuIHNldHRpbmcg
dXAgc29tZSBiaXQgcmF0ZXMsIGFsbG93IHNvbWUgdGhhdCB3b3JrIGZvciB0aGUgbW9tZW50Lgor
ICAgICAgICBpZiAoKm1fb3V0cHV0Qml0UmF0ZSA9PSAxMjgwMDAgfHwgKm1fb3V0cHV0Qml0UmF0
ZSA9PSAxOTIwMDAgfHwgKm1fb3V0cHV0Qml0UmF0ZSA9PSAyNTYwMDApCisgICAgICAgICAgICBy
ZXR1cm4gKm1fb3V0cHV0Qml0UmF0ZTsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZv
cm1hdC5tU2FtcGxlUmF0ZSA+PSA0NDEwMCkKKyAgICAgICAgcmV0dXJuIDE5MjAwMDsKKyAgICBp
ZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQorICAgICAgICByZXR1
cm4gMzIwMDA7CisgICAgcmV0dXJuIDY0MDAwOworfQorCiBib29sIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24o
Q01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiwgQXVkaW9Gb3JtYXRJRCBv
dXRwdXRGb3JtYXRJRCkKIHsKICAgICBjb25zdCBhdXRvICphdWRpb0Zvcm1hdExpc3RJdGVtID0g
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdChmb3JtYXRE
ZXNjcmlwdGlvbik7CkBAIC0xMTgsNiArMTM5LDExIEBAIGJvb2wgQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbihD
CiAgICAgfQogICAgIG1fY29udmVydGVyID0gY29udmVydGVyOwogCisgICAgYXV0byBjb252ZXJ0
ZXJDbGVhbnVwID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBBdWRpb0NvbnZlcnRlckRp
c3Bvc2UobV9jb252ZXJ0ZXIpOworICAgICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7CisgICAg
fSk7CisKICAgICBzaXplX3QgY29va2llU2l6ZSA9IDA7CiAgICAgY29uc3Qgdm9pZCAqY29va2ll
ID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRp
b24sICZjb29raWVTaXplKTsKICAgICBpZiAoY29va2llU2l6ZSkgewpAQCAtMTQ1LDE4ICsxNzEs
MTAgQEAgYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRl
ckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKEMKICAgICB9CiAKICAgICBpZiAobV9kZXN0aW5h
dGlvbkZvcm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKLSAgICAgICAg
Ly8gRklYTUU6IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGluZyBNZWRpYVJlY29yZGVyT3B0aW9u
cy5hdWRpb0JpdHNQZXJTZWNvbmQuCi0gICAgICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlID0gNjQw
MDA7Ci0gICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID49IDQ0MTAw
KQotICAgICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDE5MjAwMDsKLSAgICAgICAgZWxzZSBpZiAo
bV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQotICAgICAgICAgICAgb3V0
cHV0Qml0UmF0ZSA9IDMyMDAwOwotCisgICAgICAgIGF1dG8gb3V0cHV0Qml0UmF0ZSA9IHRoaXMt
Pm91dHB1dEJpdFJhdGUoKTsKICAgICAgICAgc2l6ZSA9IHNpemVvZihvdXRwdXRCaXRSYXRlKTsK
LSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29u
dmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0
ZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5
KG1fY29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0
Qml0UmF0ZSkpCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckVuY29kZUJp
dFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVz
UGVyUGFja2V0KSB7CkBAIC0xNzUsNiArMTkzLDggQEAgYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKEMK
ICAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0KQogICAgICAgICBt
X2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLnJlc2l6ZShtX2Rlc3RpbmF0aW9uQnVmZmVy
LmNhcGFjaXR5KCkgLyBtX21heE91dHB1dFBhY2tldFNpemUpOwogCisgICAgY29udmVydGVyQ2xl
YW51cC5yZWxlYXNlKCk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDI4LDggKzQ0OCwx
MCBAQCB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZl
cnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbAogICAgICAgICBtX2N1cnJlbnRPdXRwdXRQcmVz
ZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFByZXNlbnRhdGlvblRp
bWVTdGFtcChidWZmZXIpOwogCiAgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBDTVNh
bXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcik7Ci0gICAgICAgIGlmICghaW5p
dEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRp
b24sIG1fb3V0cHV0Q29kZWNUeXBlKSkKKyAgICAgICAgaWYgKCFpbml0QXVkaW9Db252ZXJ0ZXJG
b3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbiwgbV9vdXRwdXRDb2Rl
Y1R5cGUpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGVycm9yIHRo
ZSBtZWRpYSByZWNvcmRlciBpZiB3ZSBhcmUgbm90IGFibGUgdG8gZ2V0IGEgY29ycmVjdCBjb252
ZXJ0ZXIuCiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKICAgICB3aGls
ZSAoQ01USU1FX0lTX0lOVkFMSUQobG93V2F0ZXJUaW1lKSB8fCBDTVRJTUVfQ09NUEFSRV9JTkxJ
TkUobG93V2F0ZXJUaW1lLCA8LCBDTUJ1ZmZlclF1ZXVlR2V0RHVyYXRpb24obV9pbnB1dEJ1ZmZl
clF1ZXVlLmdldCgpKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjQ0YzU3ODA0OGM5NTk1ZGJkZGUwZGUwNGU3YjNjOTFm
MTc0NDdmYy4uNGYyMmI4MTUxNTg1MWNkYTI1ZWI4Yjk5ZWI0NzczNjA4ZTY5NmU2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAg
LTU5LDEwICs1OSwxMSBAQCBjbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogY2xhc3MgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKIGNsYXNzIFZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcjsKK3N0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnM7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpF
YWdlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI+IGNyZWF0ZShib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKTsKKyAgICBzdGF0aWMg
UmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywg
Ym9vbCBoYXNWaWRlbywgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAgICAg
fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCk7CiAKICAgICB2b2lkIGFwcGVuZFZpZGVvU2Ft
cGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKQEAgLTc4LDYgKzc5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBib29sIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHNl
dE9wdGlvbnMoY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAKICAgICBzdGF0
aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZm
ZXJRdWV1ZVRyaWdnZXJUb2tlbik7CiAgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZEF1ZGlvT3V0
cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmlu
ZGV4IDU0MmUzNmVhNWI0ZDQ0YmNjNzAxYThlMjZmMTdhZmQzMTQyNmQwZGEuLjc5ZmVlZTE4Mjg5
MTUyOGVjYTRhNTE0ODk3MzY2NzY2YWE4NzE5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUu
aCIKICNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJX
ZWJBdWRpb0J1ZmZlckxpc3QuaCIKQEAgLTExNCwxMSArMTE1LDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVk
aW8sIGJvb2wgaGFzVmlkZW8pCitSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNW
aWRlbywgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciho
YXNBdWRpbywgaGFzVmlkZW8pKTsKICAgICBpZiAoIXdyaXRlci0+aW5pdGlhbGl6ZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB3cml0ZXItPnNldE9wdGlvbnMob3B0aW9ucyk7CiAg
ICAgcmV0dXJuIHdyaXRlcjsKIH0KIApAQCAtMTc2LDYgKzE3OCwxNCBAQCBib29sIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0T3B0aW9ucyhjb25zdCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMuYXVkaW9C
aXRzUGVyU2Vjb25kICYmIG1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1ZGlvQ29tcHJl
c3Nvci0+c2V0Qml0c1BlclNlY29uZCgqb3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQpOworICAg
IGlmIChvcHRpb25zLnZpZGVvQml0c1BlclNlY29uZCAmJiBtX3ZpZGVvQ29tcHJlc3NvcikKKyAg
ICAgICAgbV92aWRlb0NvbXByZXNzb3ItPnNldEJpdHNQZXJTZWNvbmQoKm9wdGlvbnMudmlkZW9C
aXRzUGVyU2Vjb25kKTsKK30KKwogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJv
Y2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKQogewogICAgIEFTU0VSVChtX2hh
c1ZpZGVvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
CmluZGV4IDBlYjY3YWVmNDdiODUxNjM3ZDhmZjA5OTVkOWIzNGQ0NTdkNWNlZjQuLjlkMTYzNTI5
NGM5ZGFiOWEyOTdjMGQ2OTkzNDQyOWY2OWYwMjgxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNy
ZWF0ZShDTVZpZGVvQ29kZWNUeXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lk
KiBjYWxsYmFja09iamVjdCk7CiAgICAgflZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOwog
CisgICAgdm9pZCBzZXRCaXRzUGVyU2Vjb25kKHVuc2lnbmVkKTsKICAgICB2b2lkIGZpbmlzaCgp
OwogICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICBDTVNh
bXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKQEAgLTY0LDYgKzY1LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CiAgICAgZmxvYXQgbV9t
YXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24geyAyLjAgfTsKICAgICB1bnNpZ25lZCBtX2V4cGVj
dGVkRnJhbWVSYXRlIHsgMzAgfTsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRwdXRCaXRS
YXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQppbmRleCA4OWEyYTc4NzY1MmUxNzIwNzFkYjAyZGZhNGE2YjIyZTI2NmMzZWM5Li4z
YWFiYTY5OGRmN2ZiZTQ1N2IzMmJiNDIyM2Q0MWVhMmVmMTE0NjA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtNzYsNiArNzYsMTEgQEAg
Ym9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1
ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNldEJpdHNQZXJTZWNvbmQodW5zaWduZWQgYml0UmF0
ZSkKK3sKKyAgICBtX291dHB1dEJpdFJhdGUgPSBiaXRSYXRlOworfQorCiB2b2lkIFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsKICAgICBkaXNwYXRjaF9zeW5jKG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSwgXnsKQEAgLTEwMSw2ICsxMDYsMTUgQEAgdm9pZCBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24s
IHZvaWQqLAogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKIH0KIAorc3RhdGljIGlubGluZSBPU1N0YXR1cyBzZXRDb21wcmVzc2lv
blNlc3Npb25Qcm9wZXJ0eShWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb24sIENGU3Ry
aW5nUmVmIGtleSwgdWludDMyX3QgdmFsdWUpCit7CisgICAgaW50NjRfdCB2YWx1ZTY0ID0gdmFs
dWU7CisgICAgQ0ZOdW1iZXJSZWYgY2ZWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZTY0KTsKKyAgICBPU1N0YXR1cyBz
dGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eSh2dFNlc3Npb24sIGtleSwgY2ZWYWx1ZSk7Cisg
ICAgQ0ZSZWxlYXNlKGNmVmFsdWUpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKIGJvb2wgVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9G
b3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKIHsKICAgICBDTVZpZGVvRGlt
ZW5zaW9ucyBkaW1lbnNpb25zID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9u
cyhmb3JtYXREZXNjcmlwdGlvbik7CkBAIC0xMjAsMTIgKzEzNCwxNiBAQCBib29sIFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0
RGVzY3JpcHRpbwogCiAgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lv
bi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwga0NGQm9vbGVhblRy
dWUpOwogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lv
blByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgIGVycm9y
ID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9u
UHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAoX19icmlkZ2UgQ0ZUeXBl
UmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKKyAgICBlcnJvciA9IHNldENv
bXByZXNzaW9uU2Vzc2lvblByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lv
blByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgbV9tYXhLZXlGcmFtZUlu
dGVydmFsRHVyYXRpb24pOwogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0
cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBr
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1f
dnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVS
YXRlLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKUAobV9leHBlY3RlZEZyYW1lUmF0ZSkpOworICAgIGVy
cm9yID0gc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtW
VENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUsIG1fZXhwZWN0ZWRGcmFt
ZVJhdGUpOwogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVz
c2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OwogCi0gICAgLy8gRklYTUU6IFNldCB2aWRlbyBjb21wcmVzc2lvbiByYXRlLgorICAgIGlmICht
X291dHB1dEJpdFJhdGUpIHsKKyAgICAgICAgZXJyb3IgPSBzZXRDb21wcmVzc2lvblNlc3Npb25Q
cm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9BdmVy
YWdlQml0UmF0ZSwgKm1fb3V0cHV0Qml0UmF0ZSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNl
c3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0F2ZXJhZ2VCaXRSYXRl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgIH0KKwogICAgIGVycm9yID0gVlRDb21wcmVz
c2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCkpOwogICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IGFiMjBmMzBkM2QxYWYxMDJiODQ3ODk0ZTM5ZDY4ZTI5NGQwOGIxMWUuLjllMmRhOWE5
NjQ1MWI2OTg3OGY3MGViMzA4NTVmMDgyNmUxZmI4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTE2OTEsMTcgKzE2OTEsMTYgQEAgdm9pZCBJbnRlcm5hbHM6OnNldE1l
ZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihib29sIGVuYWJsZWQpCiAgICAgICAg
IHBhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9u
KGVuYWJsZWQpOwogfQogCi1zdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2
YXRlPiBjcmVhdGVSZWNvcmRlck1vY2tTb3VyY2UoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0p
CitzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRl
Pj4gY3JlYXRlUmVjb3JkZXJNb2NrU291cmNlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBj
b25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmKQogewotICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrPihuZXcgTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrKHN0cmVhbSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRl
clByaXZhdGU+KG5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2soc3RyZWFtKSk7CiB9CiAKIHZv
aWQgSW50ZXJuYWxzOjpzZXRDdXN0b21Qcml2YXRlUmVjb3JkZXJDcmVhdG9yKCkKIHsKICAgICBX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpzZXRDdXN0b21Qcml2YXRlUmVjb3JkZXJDcmVhdG9yKGNy
ZWF0ZVJlY29yZGVyTW9ja1NvdXJjZSk7CiB9Ci0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKIEV4Y2VwdGlvbk9yPFJlZjxET01SZWN0Pj4gSW50ZXJuYWxzOjphYnNv
bHV0ZUNhcmV0Qm91bmRzKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGIxMjg0YTQ3ZTIzMzYyMjM3
N2JiNjk3ZjhmYzU5YmIxMjU0NzQ2OGQuLjBmODM4YTkxMmIyM2M4M2RkY2VjNTA4OTlmYmQ3YjAy
NmMzOGU0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMzgsOSArMzgsOSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZU1lZGlhUmVjb3JkZXI+IFJlbW90ZU1lZGlhUmVjb3JkZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBNZWRpYVJlY29yZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVvKQor
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+IFJlbW90ZU1lZGlhUmVjb3JkZXI6
OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlv
LCBib29sIHJlY29yZFZpZGVvLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9w
dGlvbnMpCiB7Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
Y3JlYXRlKHJlY29yZEF1ZGlvLCByZWNvcmRWaWRlbyk7CisgICAgYXV0byB3cml0ZXIgPSBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKHJlY29yZEF1ZGlvLCByZWNvcmRWaWRlbywg
b3B0aW9ucyk7CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlcj4obmV3IFJlbW90ZU1l
ZGlhUmVjb3JkZXIgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCB3cml0
ZXIucmVsZWFzZU5vbk51bGwoKSwgcmVjb3JkQXVkaW8gfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IGVmNmVl
Mzg5NTBhMzcxNWE0MDcwNGMwZmU1ZThhNjBiZTJmMGI3ODYuLjRlNWI3YjA3OGYwZGQ3ODg3NWE1
ZGU5ZTkzMzQwZGI3MzhiY2Y3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENBUmluZ0J1ZmZlcjsKIGNsYXNzIEltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQ7CiBjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKK3N0cnVjdCBNZWRpYVJlY29yZGVy
UHJpdmF0ZU9wdGlvbnM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTUsNyBA
QCBjbGFzcyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTsKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3Jk
ZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlh
UmVjb3JkZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVkaWFSZWNvcmRl
cklkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8pOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlcj4gY3JlYXRlKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBNZWRpYVJlY29yZGVySWRlbnRpZmllciwgYm9vbCByZWNvcmRB
dWRpbywgYm9vbCByZWNvcmRWaWRlbywgY29uc3QgV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVPcHRpb25zJik7CiAgICAgflJlbW90ZU1lZGlhUmVjb3JkZXIoKTsKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCmluZGV4IDBiYTZmZDdkMGVmOTY2OGYwMTk4YmZlZjAw
MGY1Yzg0OGEyMjZkMmQuLmY0ODE1MjUzODIzYWU1OTU3YjcyNzk0MGU3MmU0YWFkZmQyMWJmODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgdm9pZCBS
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJN
ZXNzYWdlKElQQzo6Q29ubmUKICAgICAgICAgcmVjb3JkZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
OjpjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29s
IHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6Y3JlYXRlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgY29u
c3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghbV9yZWNvcmRlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIGF1
dG8gcmVjb3JkZXIgPSBSZW1vdGVNZWRpYVJlY29yZGVyOjpjcmVhdGUobV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCByZWNvcmRBdWRpbywgcmVjb3JkVmlkZW8pOworICAg
IGF1dG8gcmVjb3JkZXIgPSBSZW1vdGVNZWRpYVJlY29yZGVyOjpjcmVhdGUobV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCByZWNvcmRBdWRpbywgcmVjb3JkVmlkZW8sIG9w
dGlvbnMpOwogICAgIGlmICghcmVjb3JkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihFeGNlcHRpb25EYXRhIHsgTm90U3VwcG9ydGVkRXJyb3IsICJVbmFibGUgdG8gY3JlYXRl
IGEgcmVjb3JkZXIgd2l0aCB0aGUgcHJvdmlkZWQgc3RyZWFtIl9zIH0pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLmgKaW5kZXggOGU2ZjkxOGEwMTY3OTE4YTBkMDI1ZDNiNmM1MjE1NjM4YWM5ZTU2
Mi4uNzUzOTBhODVhM2ZhNDBlMjdhNzg0Njc4OTE4ZGM4NTRjZTQxMWM4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKK3N0cnVjdCBNZWRpYVJlY29yZGVy
UHJpdmF0ZU9wdGlvbnM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjAsNyArNjEsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKLSAgICB2b2lkIGNyZWF0ZVJlY29yZGVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLCBib29s
IHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVJl
Y29yZGVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJl
Y29yZFZpZGVvLCBjb25zdCBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYp
PiYmKTsKICAgICB2b2lkIHJlbGVhc2VSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmllcik7
CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBh
MmYxODhkNzg5MzBmYzk3MTU2NDdhMGY2NDEwZDIxYTI2OTVjNjM3Li4yNTdiZjk2NjMyNzg4NWZm
ZGNmZmIwZTczYzY4MWE4NzkxYWM2ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNT
RVRXUklURVJERUxFR0FURSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlUmVjb3JkZXIoV2ViS2l0OjpNZWRpYVJlY29y
ZGVySWRlbnRpZmllciBpZCwgYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbykgLT4gKE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGNyZWF0aW9uRXJyb3IpIEFzeW5jCisgICAgQ3Jl
YXRlUmVjb3JkZXIoV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZCwgYm9vbCBoYXNB
dWRpbywgYm9vbCBoYXNWaWRlbywgc3RydWN0IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9ucyBvcHRpb25zKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gY3Jl
YXRpb25FcnJvcikgQXN5bmMKICAgICBSZWxlYXNlUmVjb3JkZXIoV2ViS2l0OjpNZWRpYVJlY29y
ZGVySWRlbnRpZmllciBpZCkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IDRkNDc4
NmJlOTU1MmU2NDJhMGY3YzY4NWY5MWU4NzYzNjkxOTRiMDAuLmM3ZTlhOWZkMmQyNDI4MTk1MjIy
ZWZiZDdjMTI3YmJkNTBiYWU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTQzLDEw
ICs0MywxMSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotTWVkaWFSZWNvcmRlclByaXZhdGU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFt
UHJpdmF0ZSYgc3RyZWFtKQorTWVkaWFSZWNvcmRlclByaXZhdGU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0
ZU9wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBtX2lkZW50aWZpZXIoTWVkaWFSZWNvcmRlcklkZW50
aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX3N0cmVhbShtYWtlUmVmKHN0cmVhbSkpCiAgICAg
LCBtX2Nvbm5lY3Rpb24oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKIH0K
IApAQCAtNTksNyArNjAsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdGFydFJlY29y
ZGluZyhFcnJvckNhbGxiYWNrJiYgZXJyb3JDYWxsYmFjaykKICAgICBpZiAoc2VsZWN0ZWRUcmFj
a3MuYXVkaW9UcmFjaykKICAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdC
dWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHRoaXMpKTsKIAot
ICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlcjo6Q3JlYXRlUmVjb3JkZXIgeyBtX2lkZW50aWZpZXIsICEhc2VsZWN0
ZWRUcmFja3MuYXVkaW9UcmFjaywgISFzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrIH0sIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhdWRpb1RyYWNrID0gbWFrZVJlZlB0cihz
ZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrKSwgdmlkZW9UcmFjayA9IG1ha2VSZWZQdHIoc2VsZWN0
ZWRUcmFja3MudmlkZW9UcmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spXShhdXRvJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OkNyZWF0
ZVJlY29yZGVyIHsgbV9pZGVudGlmaWVyLCAhIXNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2ssICEh
c2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjaywgbV9vcHRpb25zIH0sIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCBhdWRpb1RyYWNrID0gbWFrZVJlZlB0cihzZWxlY3RlZFRyYWNr
cy5hdWRpb1RyYWNrKSwgdmlkZW9UcmFjayA9IG1ha2VSZWZQdHIoc2VsZWN0ZWRUcmFja3Mudmlk
ZW9UcmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShhdXRvJiYg
ZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAg
ICAgZXJyb3JDYWxsYmFjayh7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmgKaW5kZXggNWI0YTQ5MmZiYjVkZjBjZTFhM2ZhMzI0ODk4NDQyMzVhMWIzMGUxZC4uZDc2
NTg3NTliNGZhYTUzNjZiYTQ2YmFkMzZhZGQ4NTViNmI0Zjc4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlIGZpbmFsCiAg
ICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZShXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGUmKTsKKyAgICBNZWRpYVJlY29y
ZGVyUHJpdmF0ZShXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmKTsKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGUo
KTsKIAogcHJpdmF0ZToKQEAgLTcxLDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CiAgICAgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fZGVzY3JpcHRpb24geyB9OwogICAgIGludDY0X3Qg
bV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKKyAgICBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZU9wdGlvbnMgbV9vcHRpb25zOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKaW5k
ZXggNWY1MDc1ZjE2MzdiNDU5ZGY1NWE3ZDI1MzRkNWI3YmYzYjU5NDAwZS4uNDA0NzFiZDcxZTU1
Nzk4YzI2NDBmNTg1YThhNGJlOTA1ZDY2Y2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3Bw
CkBAIC0zNCwxMyArMzQsMTMgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRp
YVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKK3N0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgTWVkaWFSZWNvcmRlclBy
aXZhdGVPcHRpb25zJiBvcHRpb25zKQogewogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKG1fdXNlR1BVUHJvY2VzcykKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGU+KHN0cmVhbSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlPihzdHJlYW0sIG9wdGlv
bnMpOwogI2VuZGlmCi0gICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6
Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoc3RyZWFtKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShzdHJlYW0s
IG9wdGlvbnMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5oCmluZGV4IGU5NmI4ZmYzNjRk
ZTU5ODg2OGZkOWRmMDVlYTkyNWI0MGQ4M2FhYzguLjQ2MzkzYWU0ODNmNjllN2RjOGMzNTNlMDg1
MWFlNmVhZTI0ZjQ2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9S
TShDT0NPQSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGU+IGNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0
ZSYpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZT4gY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2
YXRlJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJikgZmluYWw7
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZjllMTI1MWFjNGQzODAwZDg4ZTFjYzY1OGVkYTU0NzQ4
MDk0ZWQwLi4zZGIyMDE0M2YxN2Y5ZmE4YmJiN2QyMGUyY2Y0MzEzYzRlNmRiY2EyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYVJlY29yZGVyIGJpdHJhdGUgb3B0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8tYml0cmF0ZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlci1hdWRpby1iaXRyYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWJp
dHJhdGUuaHRtbDogQWRkZWQuCisKIDIwMjAtMDgtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFdyaXRlIGEgc2NyaXB0IHRvIGZpbmQgZHVwbGljYXRlIGZpbGVz
IGFuZCBkZWxldGUgc29tZSBkdXBsaWNhdGUgdGVzdHMgaW4gTGF5b3V0VGVzdHMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRp
by1iaXRyYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YTM5NTQ3OThmNjZiZjNiNTdkYmY0ZjEwYWEwM2U0MzU1MDI2MzIzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLWF1ZGlv
LWJpdHJhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFZhcmlvdXMgYXVk
aW8gYml0cmF0ZXMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8tYml0cmF0ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlhMmE5ZDI0ZTZjMDliY2I4MDQ0YWJiMGZlNmFhYjcwM2VjZmZiYjMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXItYXVkaW8tYml0cmF0ZS5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+TWVkaWFSZWNvcmRlciBhdWRpbyBiaXRyYXRlPC90
aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGFzeW5jIGZ1bmN0aW9uIHJl
Y29yZChzdHJlYW0sIGJpdFJhdGUpCisgICAgeworICAgICAgICBjb25zdCByZWNvcmRlciA9IG5l
dyBNZWRpYVJlY29yZGVyKHN0cmVhbSwgeyBhdWRpb0JpdHNQZXJTZWNvbmQgOiBiaXRSYXRlIH0p
OworICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4geworICAgICAgICAgICAgcmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gKGUpID0+IHJlc29s
dmUoZS5kYXRhKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQocmVqZWN0LCA1MDAwKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJlY29yZGVyLnN0YXJ0KCk7CisgICAgICAgIHNldFRpbWVvdXQoKCkg
PT4gcmVjb3JkZXIuc3RvcCgpLCAyNTAwKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAg
fQorCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgICAgIGNvbnN0IHN0cmVh
bSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW8gOiB0
cnVlIH0pOworICAgICAgICBjb25zdCBiaXRSYXRlcyA9IFsxMjgwMDAsIDE5MjAwMCwgMjU2MDAw
XTsKKyAgICAgICAgbGV0IHByb21pc2VzID0gW107CisgICAgICAgIGJpdFJhdGVzLmZvckVhY2go
Yml0UmF0ZSA9PiB7CisgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHJlY29yZChzdHJlYW0sIGJp
dFJhdGUpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IGJsb2JzID0gWzAsIDAsIDBdOwor
ICAgICAgICBwcm9taXNlcy5mb3JFYWNoKGFzeW5jIChwcm9taXNlLCBpbmRleCkgPT4geworICAg
ICAgICAgICAgYmxvYnNbaW5kZXhdID0gYXdhaXQgcHJvbWlzZTsKKyAgICAgICAgfSk7CisgICAg
ICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVh
bHMoYmxvYnNbMF0uc2l6ZSwgMCk7CisgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYmxvYnNb
Ml0uc2l6ZSwgYmxvYnNbMF0uc2l6ZSk7CisgICAgfSwgIlZhcmlvdXMgYXVkaW8gYml0cmF0ZXMi
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWJpdHJhdGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LXZpZGVvLWJpdHJhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2NzBhNGI2NzMxZGQ0ZTVj
YWQ4YzBmODEzMDI1NmUyMjYwMTgzYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8tYml0cmF0ZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgVmFyaW91cyB2aWRlbyBiaXRyYXRlcyAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLXZpZGVvLWJpdHJhdGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUyMTgzYjA3
OWNjMWIyMDJmNGU5NzJhOTNkZjEzZDg2YjM1NzhjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRl
Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDx0aXRsZT5NZWRpYVJlY29yZGVyIHZpZGVvIGJpdHJhdGU8L3RpdGxlPgorICAgIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgYXN5bmMgZnVuY3Rpb24gcmVjb3JkKGJpdFJhdGUpCisg
ICAgeworICAgICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7IHZpZGVvIDogeyB3aWR0aCA6IDEwMjQgfSB9KTsKKyAgICAgICAgY29u
c3QgcmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0sIHsgdmlkZW9CaXRzUGVyU2Vj
b25kIDogYml0UmF0ZSB9KTsKKyAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGxldCBjb3VudCA9IDA7CisgICAgICAg
ICAgICBsZXQgYmxvYnMgPSBbXTsKKyAgICAgICAgICAgIHJlY29yZGVyLm9uZGF0YWF2YWlsYWJs
ZSA9IChlKSA9PiByZXNvbHZlKGUuZGF0YSk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHJlamVjdCgiZGF0YXZhaWxhYmxlIGV2ZW50IHRpbWVkIG91dCIpLCAxNTAwMCk7CisgICAgICAg
IH0pOworICAgICAgICByZWNvcmRlci5zdGFydCgpOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHJlY29yZGVyLnN0b3AoKSwgMTAwMCk7CisgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0K
KworICAgIHByb21pc2VfdGVzdChhc3luYyAodCkgPT4geworICAgICAgICBsZXQgYmxvYnMgPSBb
MCwgMF07CisgICAgICAgIGJsb2JzWzBdID0gYXdhaXQgcmVjb3JkKDUwMDAwKTsKKyAgICAgICAg
YmxvYnNbMV0gPSBhd2FpdCByZWNvcmQoNTAwMDAwMCk7CisKKyAgICAgICAgLy8gV2UgYXJlIHRh
a2luZyB0aGUgc2Vjb25kIGJsb2Igc2luY2UgaXQgbWlnaHQgYmUgbW9yZSBhY2N1cmF0ZSB0aGFu
IHRoZSBmaXJzdCBvbmUuCisgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYmxvYnNbMF0uc2l6
ZSwgMCwgImJsb2IwIik7CisgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYmxvYnNbMV0uc2l6
ZSwgYmxvYnNbMF0uc2l6ZSwgImJsb2IyIik7CisgICAgfSwgIlZhcmlvdXMgdmlkZW8gYml0cmF0
ZXMiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405915</attachid>
            <date>2020-08-04 05:34:21 -0700</date>
            <delta_ts>2020-08-06 02:23:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214973-20200804143420.patch</filename>
            <type>text/plain</type>
            <size>53775</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNiZGY1NjQxYmVhMzZj
MzVhMjA1MjA4YzNlNjgwOThiMzAzM2NkZC4uMzQwYWVmOWZiZDZkN2YzMDhlODljZjYzZmVkNTYw
NDcxNjZhZGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA4LTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
TWVkaWFSZWNvcmRlciBiaXRyYXRlIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgb3B0aW9ucyB0byBNZWRpYVJlY29yZGVyUHJpdmF0
ZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgRm9yIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24sIHBh
c3MgaXQgZG93biB0byBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYW5kIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci4KKyAgICAgICAgRm9yIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciwgd2UgZG8gbm90IGhhbmRsZSB3ZWxsIHNvbWUgYml0IHJhdGVzLCBzbyBmb3Igbm93LCB3ZSBs
aW1pdCB0byBzcGVjaWZpYyB2YWx1ZXMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLmh0bWwK
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpNZWRpYVJlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0Qml0
c1BlclNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6Om91dHB1dEJpdFJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlw
dGlvbik6CisgICAgICAgIERvIG5vdCBleGl0IHdoZW4gbm90IGFibGUgdG8gc2V0IGJpdHJhdGUg
YXMgd2Ugc3RpbGwgd2FudCB0byBzZXQgbV9tYXhPdXRwdXRQYWNrZXRTaXplLgorICAgICAgICBJ
biBjYXNlIG9mIGVycm9yIGluIHNldHRpbmcgdXAgdGhlIGNvbnZlcnRlciwgY2xlYW4gaXQgdXAg
c28gdGhhdCB3ZSBkbyBub3QgdXNlIGEgcGFydGlhbGx5IHNldCB1cCBjb252ZXJ0ZXIuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0T3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0
Qml0c1BlclNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Q
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmluaXRDb21wcmVzc2lvblNlc3Npb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlY29yZGVyTW9ja1NvdXJjZSk6CisKIDIwMjAt
MDgtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UgY2FuIHNwaW4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MGZkYTgyN2IxOGE2MDE1NDNkZDhjODQyMDBmYzg3NzllYjIxYzQ1ZC4uYmNkZjM1MDQ3NzU2ZThj
MTMxZGMxZjBkZTU5YzRiYWUwNzc4ODI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAy
MC0wOC0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIE1lZGlhUmVjb3JkZXIgYml0cmF0ZSBvcHRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ5NzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXJpYWxpemUgb3B0aW9ucyB3aGVu
IGNyZWF0aW5nIHJlbW90ZSBtZWRpYSByZWNvcmRlci4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVJlY29yZGVyOjpjcmVhdGUpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyOjpjcmVhdGVSZWNvcmRlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVJlY29yZGVyUHJpdmF0ZTo6TWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RhcnRSZWNvcmRpbmcpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQ
cml2YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
b3ZpZGVyLmg6CisKIDIwMjAtMDgtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBzb21lIG1lbWJlciBmdW5jdGlvbnMgb2YgUmFuZ2UgYW5kIG1hbnkg
Y2FsbHMgdG8gY3JlYXRlTGl2ZVJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggZTZmMmZmZjU2YjkyYWE1
N2ZhMjFhYjc2OTI5ZWExNTlhMzMyN2U4MC4uMjMxYTY2NzA0YTdjOTRhNDY2NDkxNjBlNTBkY2U3
MWZkYTBkOWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtNDgsOSArNDgsMTAgQEAgTWVkaWFSZWNvcmRl
cjo6Q3JlYXRvckZ1bmN0aW9uIE1lZGlhUmVjb3JkZXI6Om1fY3VzdG9tQ3JlYXRvciA9IG51bGxw
dHI7CiAKIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVJlY29yZGVyPj4gTWVkaWFSZWNvcmRlcjo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSwgT3B0aW9u
cyYmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBNZWRpYVJlY29yZGVy
OjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShkb2N1bWVudCwgc3RyZWFtLT5wcml2YXRlU3Ry
ZWFtKCkpOwotICAgIGlmICghcHJpdmF0ZUluc3RhbmNlKQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgTWVkaWFSZWNvcmRlciBpcyB1bnN1cHBvcnRl
ZCBvbiB0aGlzIHBsYXRmb3JtIl9zIH07CisgICAgYXV0byByZXN1bHQgPSBNZWRpYVJlY29yZGVy
OjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShkb2N1bWVudCwgc3RyZWFtLT5wcml2YXRlU3Ry
ZWFtKCksIG9wdGlvbnMpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCiAgICAgYXV0byByZWNvcmRlciA9
IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlcihkb2N1bWVudCwgV1RGTW92ZShzdHJlYW0pLCBX
VEZNb3ZlKG9wdGlvbnMpKSk7CiAgICAgcmVjb3JkZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAg
IHJldHVybiByZWNvcmRlcjsKQEAgLTYxLDI3ICs2MiwyNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXI6
OnNldEN1c3RvbVByaXZhdGVSZWNvcmRlckNyZWF0b3IoQ3JlYXRvckZ1bmN0aW9uIGNyZWF0b3Ip
CiAgICAgbV9jdXN0b21DcmVhdG9yID0gY3JlYXRvcjsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJp
dmF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQorRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPj4gTWVkaWFSZWNv
cmRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRp
YVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBp
ZiAobV9jdXN0b21DcmVhdG9yKQotICAgICAgICByZXR1cm4gbV9jdXN0b21DcmVhdG9yKHN0cmVh
bSk7CisgICAgICAgIHJldHVybiBtX2N1c3RvbUNyZWF0b3Ioc3RyZWFtLCBvcHRpb25zKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CiAg
ICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gcGFnZS0+bWVkaWFS
ZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoc3RyZWFtKTsKKyAg
ICByZXR1cm4gcGFnZS0+bWVkaWFSZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVkaWFSZWNvcmRl
clByaXZhdGUoc3RyZWFtLCBvcHRpb25zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3Vt
ZW50KTsKICAgICBVTlVTRURfUEFSQU0oc3RyZWFtKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgTWVkaWFSZWNvcmRl
ciBpcyB1bnN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIl9zIH07CiAjZW5kaWYKIH0KIAotTWVk
aWFSZWNvcmRlcjo6TWVkaWFSZWNvcmRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYVN0
cmVhbT4mJiBzdHJlYW0sIE9wdGlvbnMmJiBvcHRpb24pCitNZWRpYVJlY29yZGVyOjpNZWRpYVJl
Y29yZGVyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSwgT3B0
aW9ucyYmIG9wdGlvbnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCi0gICAgLCBt
X29wdGlvbnMoV1RGTW92ZShvcHRpb24pKQorICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9u
cykpCiAgICAgLCBtX3N0cmVhbShXVEZNb3ZlKHN0cmVhbSkpCiAgICAgLCBtX3RpbWVTbGljZVRp
bWVyKFt0aGlzXSB7IHJlcXVlc3REYXRhKCk7IH0pCiB7CkBAIC0xMzUsMTEgKzEzNiwxMyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhPcHRpb25hbDx1
bnNpZ25lZD4gdGltZVNsaWNlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJUaGUgTWVkaWFSZWNvcmRlcidzIHN0YXRlIG11c3QgYmUgaW5hY3RpdmUgaW4g
b3JkZXIgdG8gc3RhcnQgcmVjb3JkaW5nIl9zIH07CiAKICAgICBBU1NFUlQoIW1fcHJpdmF0ZSk7
Ci0gICAgbV9wcml2YXRlID0gY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoKmRvY3VtZW50KCks
IG1fc3RyZWFtLT5wcml2YXRlU3RyZWFtKCkpOworICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlTWVk
aWFSZWNvcmRlclByaXZhdGUoKmRvY3VtZW50KCksIG1fc3RyZWFtLT5wcml2YXRlU3RyZWFtKCks
IG1fb3B0aW9ucyk7CiAKLSAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIE1lZGlhUmVjb3JkZXIgaXMgdW5zdXBwb3J0
ZWQgb24gdGhpcyBwbGF0Zm9ybSJfcyB9OworICAgIEFTU0VSVCghcmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAorICAgIG1fcHJpdmF0ZSA9IHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKICAgICBtX3ByaXZhdGUtPnN0YXJ0UmVjb3JkaW5nKFt0aGlzLCBwZW5k
aW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oYXV0byYmIGV4Y2VwdGlv
bikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5oCmluZGV4IDQyOTllODhhM2FiZjNmOTRhNDNjZDczY2JlMzFkOTdhZjNkMzBmYTAu
LjUwMjUwNmY2MTUwNWUwMGFhMTZjZDg1MDkyYjVlNWIxNzlmNTY3YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAt
MjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIk1lZGlh
UmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5j
bHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAt
NDksMTggKzUxLDEyIEBAIGNsYXNzIE1lZGlhUmVjb3JkZXIgZmluYWwKIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIFJlY29yZGluZ1N0YXRlIHsgSW5hY3RpdmUsIFJlY29yZGluZywgUGF1c2VkIH07
CiAgICAgCi0gICAgc3RydWN0IE9wdGlvbnMgewotICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0g
ICAgICAgIHVuc2lnbmVkIGF1ZGlvQml0c1BlclNlY29uZDsKLSAgICAgICAgdW5zaWduZWQgdmlk
ZW9CaXRzUGVyU2Vjb25kOwotICAgICAgICB1bnNpZ25lZCBiaXRzUGVyU2Vjb25kOwotICAgIH07
Ci0gICAgCiAgICAgfk1lZGlhUmVjb3JkZXIoKTsKICAgICAKKyAgICB1c2luZyBPcHRpb25zID0g
TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
TWVkaWFSZWNvcmRlcj4+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxNZWRpYVN0cmVhbT4mJiwgT3B0
aW9ucyYmID0geyB9KTsKICAgICAKLSAgICB1c2luZyBDcmVhdG9yRnVuY3Rpb24gPSBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+KCopKE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwor
ICAgIHVzaW5nIENyZWF0b3JGdW5jdGlvbiA9IEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZT4+ICgqKShNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBPcHRp
b25zJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRDdXN0b21Qcml2YXRl
UmVjb3JkZXJDcmVhdG9yKENyZWF0b3JGdW5jdGlvbik7CiAgICAgCkBAIC03Niw5ICs3Miw5IEBA
IHB1YmxpYzoKICAgICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0uZ2V0
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYVJlY29yZGVyKERvY3VtZW50JiwgUmVmPE1lZGlh
U3RyZWFtPiYmLCBPcHRpb25zJiYgPSB7IH0pOworICAgIE1lZGlhUmVjb3JkZXIoRG9jdW1lbnQm
LCBSZWY8TWVkaWFTdHJlYW0+JiYsIE9wdGlvbnMmJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShE
b2N1bWVudCYsIE1lZGlhU3RyZWFtUHJpdmF0ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25Pcjxz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+PiBjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE9wdGlvbnMmKTsK
ICAgICAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIApAQCAtMTExLDcgKzEwNyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJikgZmluYWwgeyB9OwogCiAgICAgc3RhdGljIENyZWF0b3JGdW5jdGlvbiBtX2N1
c3RvbUNyZWF0b3I7Ci0gICAgCisKICAgICBPcHRpb25zIG1fb3B0aW9uczsKICAgICBSZWY8TWVk
aWFTdHJlYW0+IG1fc3RyZWFtOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJp
dmF0ZT4gbV9wcml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCA4ODRhNDA3
OTBhNDZhODMyNjI2ZTBmYTBlZWJiOWM5ZDlmNDRjYWIyLi5jZmYzNmJiZGFmNjlkOGI1MjU1MDIy
MWFlNDZjY2UxYTZjZDI1MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzIs
MTIgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVj
b3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQorc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlh
UmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCi0gICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRl
KHN0cmVhbSk7CisgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRl
KHN0cmVhbSwgb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAg
IFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcm92aWRlci5oCmluZGV4IDExYmFhZGNlYTg2OWU3YTI5MTk2NjJhYjJkOGNl
ZjU0NzBjMmVkYmQuLjNhM2JkMTlhNzMwNzAzNDZlOTg5ZmViZjczODAzODcwNGViZTkzM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJp
dmF0ZTsKK3N0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVJlY29y
ZGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQ
TEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZT4gY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJik7
CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IGNyZWF0
ZU1lZGlhUmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE1lZGlhUmVj
b3JkZXJQcml2YXRlT3B0aW9ucyYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFVzZUdQVVByb2Nl
c3MoYm9vbCB2YWx1ZSkgeyBtX3VzZUdQVVByb2Nlc3MgPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQxOGJiYTdl
NjRlMGYyYTE2NmZhYzIyZjA3ODA2MjYwMDRkZTBjZjcuLjQ1ODg4MjdmYjU1MmIyYzgzOWY3M2Q1
MmUwMDM3NDg3YThhN2FiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNTIsNiArMTA1Miw3IEBACiAJCTQxM0UwMDc5MURC
MEU0RjIwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFMDA3ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5
UmVsZWFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxNDQ2MEEyMjQxMjk5NDUwMDgxNEJFNyAvKiBNZWRpYVNlc3Npb25JZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ0NjBBMDI0
MTI5OTQxMDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNDU5OEMyMjNDOEQxNzcwMDJC
OUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDU5OEMxMjNDOEFENzkwMDJCOUNDOCAv
KiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSAqLzsgfTsKKwkJNDE0QjdGQUQyNEQ4
MUNDMTAwMzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0QjdGQUIyNEQ4MUM4RjAwMzNE
NDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAv
KiBTdHJ1Y3R1cmVkQ2xvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNEI4MjAzMUQ2REYwRDkwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCAq
LzsgfTsKIAkJNDE0REVERTcxRjlGRTkxRTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNERF
REU1MUY5RkU5MTUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1MDcxNTgxNjg1MDY3
MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUwNzE1NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JG
aWx0ZXIuaCAqLzsgfTsKQEAgLTc0NjUsNiArNzQ2Niw3IEBACiAJCTQxNEFENDAwMjE0OThEMzEw
MDUyMTY3NiAvKiBSVENSdHBEZWNvZGluZ1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRD
UnRwRGVjb2RpbmdQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NEFENDAxMjE0OThEMzEwMDUyMTY3NiAvKiBSVENSdHBEZWNvZGluZ1BhcmFtZXRlcnMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJUQ1J0cERlY29kaW5nUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNEFENDAyMjE0OThEMzIwMDUyMTY3NiAvKiBSVENSdHBDb2RpbmdQYXJhbWV0ZXJz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSVENSdHBDb2RpbmdQYXJhbWV0ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE0QjdGQUIyNEQ4MUM4RjAwMzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0Qjgy
MDIxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVkQ2xvbmUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENs
b25lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZWRDbG9uZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTRERURFNTFGOUZFOTE1MDA0N0M0MEQg
LyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xOTUyMiw2ICsxOTUyNCw3IEBACiAJCQkJNEQ3M0Y5NDQyMThCQzVGQTAwM0EzRUQ2IC8q
IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oICovLAogCQkJCTREOUY2QjY1MjE4MjUzMkIw
MDkyQTlDNSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwICovLAogCQkJCTREOUY2QjY0
MjE4MjUzMkIwMDkyQTlDNSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaCAqLywKKwkJCQk0
MTRCN0ZBQjI0RDgxQzhGMDAzM0Q0NDIgLyogTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IG1lZGlhcmVjb3JkZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMzI1MDYsNiArMzI1MDksNyBAQAogCQkJCTREQjcxMzBEMjE2RUNCNEQwMDk2
QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEQz
QjUwMTYyMTdFNThCNzAwNjY1REIxIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0RDczRjk0NjIxOEJDNUZBMDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTRCN0ZBRDI0RDgxQ0MxMDAzM0Q0NDIg
LyogTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RDcz
Rjk0RTIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3NkU4OTYyM0MzNTM3QjAwM0U4M0ZFIC8qIE1lZGlhUmVj
b3JkZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwODQzRDAxQjE4RTQ3RDAwQjY4
NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAwYzE0YWU2OTBjZDNmNDZhNjNiYWU2MTYwODU0
ZjFhMDNiODExYjQxLi5hM2JjODE3YjE4MzNlMGM4NDc3NTUwMzI3ZjE1MTMzOGFlZjIxZWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTg4LDcgKzU4OCw3IEBA
IHB1YmxpYzoKICAgICBFbXB0eU1lZGlhUmVjb3JkZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAg
c3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29y
ZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0
ZU9wdGlvbnMmKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGUuaAppbmRleCAwNGJhNmIwODRhZDIzZjQzMzJlZDRmZWU1NDVmZWY4MTQ1
ZDRhNGE2Li41Njc0OTMyMThmYjI0OWQ3ZTRjMWE5MzY1MjZiNTczYWM3ZjIyOTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlICJFeGNl
cHRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaCIKICNpbmNs
dWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDg4NTZiMTU3ZGY0
ODQ4Y2UzZjhkMTNlNzcyN2QxMzIxMDgwNTczYTEuLjg0NGE5NjlmNTNkNGFlZjc5Y2QyNmJiMWJl
YzQyNzk0ZmJkNGRlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGw6OmNyZWF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKK3N0ZDo6dW5pcXVlX3B0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bDo6Y3JlYXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJlY29yZGVy
UHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0
byBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgYXVkaW8vdmlkZW8gdHJhY2tzCiAgICAg
Ly8gQ3VycmVudGx5IHdlIG9ubHkgY2hvb3NlIHRoZSBmaXJzdCB0cmFjayBhcyB0aGUgcmVjb3Jk
ZWQgdHJhY2suCkBAIC00NSwxMSArNDUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKIAog
ICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0VHJh
Y2tzKHN0cmVhbSk7CiAKLSAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpjcmVhdGUoISFzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLCAhIXNlbGVjdGVkVHJhY2tz
LnZpZGVvVHJhY2spOworICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmNyZWF0ZSghIXNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2ssICEhc2VsZWN0ZWRUcmFja3Mu
dmlkZW9UcmFjaywgb3B0aW9ucyk7CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgYXV0byByZWNvcmRlciA9IG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byByZWNvcmRl
ciA9IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KG5ldyBNZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwod3JpdGVyLnJlbGVhc2VOb25OdWxsKCkpKTsKICAgICBp
ZiAoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaykKICAgICAgICAgcmVjb3JkZXItPnNldEF1ZGlv
U291cmNlKCZzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLT5zb3VyY2UoKSk7CiAgICAgaWYgKHNl
bGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGwuaAppbmRleCAxZDg0NTAwOWQzMWM3YTk5ODZkZjdmZTMwZDVhMjZmMmI0YWJjOGZiLi41NDU0
MTBiMmFlZDBjYzM2MDcxOGUzZTMxNGJjZjQ0OGI0OWE0ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTM3LDEyICszNywxMiBAQCBjbGFzcyBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwgZmluYWwKICAgICA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJpdmF0
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IGNyZWF0ZShNZWRpYVN0
cmVhbVByaXZhdGUmKTsKLQotICAgIGV4cGxpY2l0IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBjcmVhdGUoTWVkaWFTdHJlYW1Q
cml2YXRlJiwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAgICAgfk1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbCgpOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYp
OworCiAgICAgLy8gTWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxlQXZh
aWxhYmxlKE1lZGlhU2FtcGxlJikgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRh
Q2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMWViZDY4YzJkYzRiMjZjMzhmOTY2MTQwMGM3ZTZkZGI5ZTkwNDY1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1lZGlhUmVjb3Jk
ZXJQcml2YXRlT3B0aW9ucyB7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBhdWRpb0JpdHNQZXJTZWNvbmQ7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHZpZGVv
Qml0c1BlclNlY29uZDsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gYml0c1BlclNlY29uZDsKKwor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFSZWNvcmRl
clByaXZhdGVPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK2lubGluZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtaW1lVHlwZTsKKyAg
ICBlbmNvZGVyIDw8IGF1ZGlvQml0c1BlclNlY29uZDsKKyAgICBlbmNvZGVyIDw8IHZpZGVvQml0
c1BlclNlY29uZDsKKyAgICBlbmNvZGVyIDw8IGJpdHNQZXJTZWNvbmQ7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitpbmxpbmUgT3B0aW9uYWw8TWVkaWFSZWNvcmRlclByaXZhdGVPcHRp
b25zPiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVU
eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPE9wdGlv
bmFsPHVuc2lnbmVkPj4gYXVkaW9CaXRzUGVyU2Vjb25kOworICAgIGRlY29kZXIgPj4gYXVkaW9C
aXRzUGVyU2Vjb25kOworICAgIGlmICghYXVkaW9CaXRzUGVyU2Vjb25kKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiB2aWRl
b0JpdHNQZXJTZWNvbmQ7CisgICAgZGVjb2RlciA+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CisgICAg
aWYgKCF2aWRlb0JpdHNQZXJTZWNvbmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IGJpdHNQZXJTZWNvbmQ7CisgICAgZGVj
b2RlciA+PiBiaXRzUGVyU2Vjb25kOworICAgIGlmICghYml0c1BlclNlY29uZCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnMgeyBXVEZNb3ZlKG1pbWVUeXBlKSwgKmF1ZGlvQml0c1BlclNlY29uZCwgKnZpZGVvQml0
c1BlclNlY29uZCwgKmJpdHNQZXJTZWNvbmQgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IDY1Mjg2NmRkZGI5ZjlmMDQ4YWEwZjY3
Yzg2OTEzMjE5MjlhYjExMjQuLmVlZTI5MzdjYjA2NzQ4NDBhYWVmMGZjNGY2NjhmZGJiMDhkNDUz
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApA
QCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxi
YWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CiAgICAgfkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcigpOwogCisgICAgdm9pZCBzZXRCaXRzUGVyU2Vjb25kKHVuc2lnbmVkKTsKICAgICB2b2lk
IGZpbmlzaCgpOwogICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsK
ICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKQEAgLTQ3LDYg
KzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IoKTsKICAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywg
dm9pZCogY2FsbGJhY2tPYmplY3QpOworICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlKCkgY29uc3Q7
CiAKICAgICBzdGF0aWMgT1NTdGF0dXMgYXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJv
YyhBdWRpb0NvbnZlcnRlclJlZiwgVUludDMyKiwgQXVkaW9CdWZmZXJMaXN0KiwgQXVkaW9TdHJl
YW1QYWNrZXREZXNjcmlwdGlvbioqLCB2b2lkKik7CiAKQEAgLTg1LDYgKzg3LDcgQEAgcHJpdmF0
ZToKICAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgeyAwIH07CiAgICAgc2l6ZV90
IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgeyAwIH07CiAgICAgQXVkaW9Gb3Jt
YXRJRCBtX291dHB1dENvZGVjVHlwZSB7IGtBdWRpb0Zvcm1hdE1QRUc0QUFDIH07CisgICAgT3B0
aW9uYWw8dW5zaWduZWQ+IG1fb3V0cHV0Qml0UmF0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggNmQwNGQ4YzNiNzgxYjZm
Mzg3Yjc3ZDhmOWUxNWYyY2Q0MjlhNTk4NC4uN2ZmZDQwNDdkZDAyMzBlMmViZTgxZjdhMDJlMjVl
NThhNWRjNDhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0KQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9D
b252ZXJ0ZXIuaD4KICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KICNpbmNs
dWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8d3RmL1Njb3BlLmg+CiAKICNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGlu
ay5oPgogCkBAIC05NSw2ICs5NywyOCBAQCB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6ZmluaXNoKCkKICAgICB9KTsKIH0KIAordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OnNldEJpdHNQZXJTZWNvbmQodW5zaWduZWQgYml0UmF0ZSkKK3sKKyAgICBtX291dHB1dEJp
dFJhdGUgPSBiaXRSYXRlOworfQorCitVSW50MzIgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpvdXRwdXRCaXRSYXRlKCkgY29uc3QKK3sKKyAgICBpZiAobV9vdXRwdXRCaXRSYXRlKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiB3ZSBoYXZlIHNvbWUgaXNzdWVzIHdoZW4gc2V0dGluZyB1cCBzb21l
IGJpdCByYXRlcywgb25seSBhbGxvdyBzb21lIHRoYXQgd29yayBmb3IgdGhlIG1vbWVudC4KKyAg
ICAgICAgYXV0byBjbGFtcGVkVmFsdWUgPSBzdGQ6OmNsYW1wKCptX291dHB1dEJpdFJhdGUsIDEy
ODAwMHUsIDI1NjAwMHUpOworICAgICAgICBpZiAoY2xhbXBlZFZhbHVlID09IDEyODAwMCB8fCBj
bGFtcGVkVmFsdWUgPT0gMTkyMDAwIHx8IGNsYW1wZWRWYWx1ZSA9PSAyNTYwMDApCisgICAgICAg
ICAgICByZXR1cm4gY2xhbXBlZFZhbHVlOworICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFdlYlJU
QywgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6b3V0cHV0Qml0UmF0ZSBkaWQgbm90IHNl
bGVjdCBvdXRwdXQgYml0IHJhdGUgcHJvdmlkZWQgYXMgaW5wdXQgYXMgaXQgaXMgbm90IGEgc3Vw
cG9ydGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1T
YW1wbGVSYXRlID49IDQ0MTAwKQorICAgICAgICByZXR1cm4gMTkyMDAwOworICAgIGlmIChtX2Rl
c3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlIDwgMjIwMDApCisgICAgICAgIHJldHVybiAzMjAw
MDsKKyAgICByZXR1cm4gNjQwMDA7Cit9CisKIGJvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbihDTUZvcm1h
dERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uLCBBdWRpb0Zvcm1hdElEIG91dHB1dEZv
cm1hdElEKQogewogICAgIGNvbnN0IGF1dG8gKmF1ZGlvRm9ybWF0TGlzdEl0ZW0gPSBDTUF1ZGlv
Rm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0KGZvcm1hdERlc2NyaXB0
aW9uKTsKQEAgLTExOCw2ICsxNDIsMTEgQEAgYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKEMKICAgICB9
CiAgICAgbV9jb252ZXJ0ZXIgPSBjb252ZXJ0ZXI7CiAKKyAgICBhdXRvIGNsZWFudXBJbkNhc2VP
ZkVycm9yID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBBdWRpb0NvbnZlcnRlckRpc3Bv
c2UobV9jb252ZXJ0ZXIpOworICAgICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7CisgICAgfSk7
CisKICAgICBzaXplX3QgY29va2llU2l6ZSA9IDA7CiAgICAgY29uc3Qgdm9pZCAqY29va2llID0g
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24s
ICZjb29raWVTaXplKTsKICAgICBpZiAoY29va2llU2l6ZSkgewpAQCAtMTQ1LDE4ICsxNzQsMTAg
QEAgYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRlckZv
clNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKEMKICAgICB9CiAKICAgICBpZiAobV9kZXN0aW5hdGlv
bkZvcm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKLSAgICAgICAgLy8g
RklYTUU6IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGluZyBNZWRpYVJlY29yZGVyT3B0aW9ucy5h
dWRpb0JpdHNQZXJTZWNvbmQuCi0gICAgICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlID0gNjQwMDA7
Ci0gICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID49IDQ0MTAwKQot
ICAgICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDE5MjAwMDsKLSAgICAgICAgZWxzZSBpZiAobV9k
ZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQotICAgICAgICAgICAgb3V0cHV0
Qml0UmF0ZSA9IDMyMDAwOwotCisgICAgICAgIGF1dG8gb3V0cHV0Qml0UmF0ZSA9IHRoaXMtPm91
dHB1dEJpdFJhdGUoKTsKICAgICAgICAgc2l6ZSA9IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKLSAg
ICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVy
dGVyLCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkp
IHsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1f
Y29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0
UmF0ZSkpCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckVuY29kZUJpdFJh
dGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVy
UGFja2V0KSB7CkBAIC0xNjksNiArMTkwLDggQEAgYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKEMKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGNsZWFudXBJbkNhc2VPZkVycm9yLnJlbGVhc2UoKTsKKwog
ICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemVGb3JBdWRp
b0Zvcm1hdChtX2Rlc3RpbmF0aW9uRm9ybWF0LCBtX21heE91dHB1dFBhY2tldFNpemUsIExPV19X
QVRFUl9USU1FX0lOX1NFQ09ORFMpOwogICAgIGlmIChtX2Rlc3RpbmF0aW9uQnVmZmVyLnNpemUo
KSA8IGRlc3RpbmF0aW9uQnVmZmVyU2l6ZSkKICAgICAgICAgbV9kZXN0aW5hdGlvbkJ1ZmZlci5y
ZXNpemUoZGVzdGluYXRpb25CdWZmZXJTaXplKTsKQEAgLTQyOCw4ICs0NTEsMTAgQEAgdm9pZCBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dX
YXRlclRpbWUoQ01UaW1lIGwKICAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGlt
ZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVm
ZmVyKTsKIAogICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJH
ZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOwotICAgICAgICBpZiAoIWluaXRBdWRpb0NvbnZl
cnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uLCBtX291dHB1
dENvZGVjVHlwZSkpCisgICAgICAgIGlmICghaW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9y
bWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24sIG1fb3V0cHV0Q29kZWNUeXBlKSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBlcnJvciB0aGUgbWVkaWEgcmVj
b3JkZXIgaWYgd2UgYXJlIG5vdCBhYmxlIHRvIGdldCBhIGNvcnJlY3QgY29udmVydGVyLgogICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgd2hpbGUgKENNVElNRV9J
U19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVy
VGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0aW9uKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQo
KSkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oCmluZGV4IDI0NGM1NzgwNDhjOTU5NWRiZGRlMGRlMDRlN2IzYzkxZjE3NDQ3ZmMuLjRm
MjJiODE1MTU4NTFjZGEyNWViOGI5OWViNDc3MzYwOGU2OTZlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC01OSwxMCArNTks
MTEgQEAgY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7CiBjbGFzcyBWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I7CitzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0
cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVh
dGUoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbyk7CisgICAgc3RhdGljIFJlZlB0cjxNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlk
ZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYpOwogICAgIH5NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcigpOwogCiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihD
TVNhbXBsZUJ1ZmZlclJlZik7CkBAIC03OCw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
bGVhcigpOwogCiAgICAgYm9vbCBpbml0aWFsaXplKCk7CisgICAgdm9pZCBzZXRPcHRpb25zKGNv
bnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYpOwogCiAgICAgc3RhdGljIHZvaWQgY29t
cHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmln
Z2VyVG9rZW4pOwogICAgIHN0YXRpYyB2b2lkIGNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNh
bGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA1NDJlMzZl
YTViNGQ0NGJjYzcwMWE4ZTI2ZjE3YWZkMzE0MjZkMGRhLi43OWZlZWUxODI4OTE1MjhlY2E0YTUx
NDg5NzM2Njc2NmFhODcxOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9u
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9ucy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9CdWZm
ZXJMaXN0LmgiCkBAIC0xMTQsMTEgKzExNSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBQQUw7CiAKLVJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4g
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBib29sIGhh
c1ZpZGVvKQorUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIGNvbnN0
IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIHdyaXRl
ciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoaGFzQXVkaW8sIGhh
c1ZpZGVvKSk7CiAgICAgaWYgKCF3cml0ZXItPmluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgd3JpdGVyLT5zZXRPcHRpb25zKG9wdGlvbnMpOwogICAgIHJldHVybiB3
cml0ZXI7CiB9CiAKQEAgLTE3Niw2ICsxNzgsMTQgQEAgYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6aW5pdGlhbGl6ZSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldE9wdGlvbnMoY29uc3QgTWVkaWFSZWNvcmRlclByaXZh
dGVPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmIChvcHRpb25zLmF1ZGlvQml0c1BlclNlY29u
ZCAmJiBtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3ItPnNldEJp
dHNQZXJTZWNvbmQoKm9wdGlvbnMuYXVkaW9CaXRzUGVyU2Vjb25kKTsKKyAgICBpZiAob3B0aW9u
cy52aWRlb0JpdHNQZXJTZWNvbmQgJiYgbV92aWRlb0NvbXByZXNzb3IpCisgICAgICAgIG1fdmlk
ZW9Db21wcmVzc29yLT5zZXRCaXRzUGVyU2Vjb25kKCpvcHRpb25zLnZpZGVvQml0c1BlclNlY29u
ZCk7Cit9CisKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21w
cmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCkKIHsKICAgICBBU1NFUlQobV9oYXNWaWRlbyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCAwZWI2
N2FlZjQ3Yjg1MTYzN2Q4ZmYwOTk1ZDliMzRkNDU3ZDVjZWY0Li45ZDE2MzUyOTRjOWRhYjlhMjk3
YzBkNjk5MzQ0MjlmNjlmMDI4MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01WaWRl
b0NvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tP
YmplY3QpOwogICAgIH5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKIAorICAgIHZvaWQg
c2V0Qml0c1BlclNlY29uZCh1bnNpZ25lZCk7CiAgICAgdm9pZCBmaW5pc2goKTsKICAgICB2b2lk
IGFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CiAgICAgQ01TYW1wbGVCdWZmZXJS
ZWYgZ2V0T3V0cHV0U2FtcGxlQnVmZmVyKCk7CkBAIC02NCw2ICs2NSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9OwogICAgIGZsb2F0IG1fbWF4S2V5RnJhbWVJ
bnRlcnZhbER1cmF0aW9uIHsgMi4wIH07CiAgICAgdW5zaWduZWQgbV9leHBlY3RlZEZyYW1lUmF0
ZSB7IDMwIH07CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fb3V0cHV0Qml0UmF0ZTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5k
ZXggODlhMmE3ODc2NTJlMTcyMDcxZGIwMmRmYTRhNmIyMmUyNjZjM2VjOS4uM2FhYmE2OThkZjdm
YmU0NTdiMzJiYjQyMjNkNDFlYTJlZjExNDYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTc2LDYgKzc2LDExIEBAIGJvb2wgVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2Fs
bGJhY2sgY2FsbGJhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vjb25kKHVuc2lnbmVkIGJpdFJhdGUpCit7CisgICAg
bV9vdXRwdXRCaXRSYXRlID0gYml0UmF0ZTsKK30KKwogdm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmZpbmlzaCgpCiB7CiAgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNo
UXVldWUsIF57CkBAIC0xMDEsNiArMTA2LDE1IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwKICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT1NTdGF0dXMgc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJv
cGVydHkoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgdnRTZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXks
IHVpbnQzMl90IHZhbHVlKQoreworICAgIGludDY0X3QgdmFsdWU2NCA9IHZhbHVlOworICAgIENG
TnVtYmVyUmVmIGNmVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
Q0ZOdW1iZXJTSW50NjRUeXBlLCAmdmFsdWU2NCk7CisgICAgT1NTdGF0dXMgc3RhdHVzID0gVlRT
ZXNzaW9uU2V0UHJvcGVydHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUpOworICAgIENGUmVsZWFz
ZShjZlZhbHVlKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCiBib29sIFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiB7CiAgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGlt
ZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVz
Y3JpcHRpb24pOwpAQCAtMTIwLDEyICsxMzQsMTYgQEAgYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW8K
IAogICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtW
VENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUsIGtDRkJvb2xlYW5UcnVlKTsKICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9SZWFsVGltZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICBlcnJvciA9IFZUU2Vzc2lv
blNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5
X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fbWF4
S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKSk7CisgICAgZXJyb3IgPSBzZXRDb21wcmVzc2lvblNl
c3Npb25Qcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24sIG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0
aW9uKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Np
b25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7Ci0gICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5n
ZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJp
ZGdlIENGVHlwZVJlZilAKG1fZXhwZWN0ZWRGcmFtZVJhdGUpKTsKKyAgICBlcnJvciA9IHNldENv
bXByZXNzaW9uU2Vzc2lvblByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lv
blByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBtX2V4cGVjdGVkRnJhbWVSYXRlKTsKICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0
eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKIAotICAgIC8v
IEZJWE1FOiBTZXQgdmlkZW8gY29tcHJlc3Npb24gcmF0ZS4KKyAgICBpZiAobV9vdXRwdXRCaXRS
YXRlKSB7CisgICAgICAgIGVycm9yID0gc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkobV92
dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfQXZlcmFnZUJpdFJhdGUs
ICptX291dHB1dEJpdFJhdGUpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwg
TWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJv
cGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9BdmVyYWdlQml0UmF0ZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICB9CisKICAgICBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9u
UHJlcGFyZVRvRW5jb2RlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpKTsKICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYjIw
ZjMwZDNkMWFmMTAyYjg0Nzg5NGUzOWQ2OGUyOTRkMDhiMTFlLi45ZTJkYTlhOTY0NTFiNjk4Nzhm
NzBlYjMwODU1ZjA4MjZlMWZiOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0xNjkxLDE3ICsxNjkxLDE2IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYUNhcHR1cmVS
ZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24oYm9vbCBlbmFibGVkKQogICAgICAgICBwYWdlLT5zZXR0
aW5ncygpLnNldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihlbmFibGVkKTsK
IH0KIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gY3JlYXRl
UmVjb3JkZXJNb2NrU291cmNlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQorc3RhdGljIEV4
Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4+IGNyZWF0ZVJl
Y29yZGVyTW9ja1NvdXJjZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgTWVkaWFS
ZWNvcmRlclByaXZhdGVPcHRpb25zJikKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlTW9jaz4obmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jayhzdHJl
YW0pKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPihu
ZXcgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrKHN0cmVhbSkpOwogfQogCiB2b2lkIEludGVybmFs
czo6c2V0Q3VzdG9tUHJpdmF0ZVJlY29yZGVyQ3JlYXRvcigpCiB7CiAgICAgV2ViQ29yZTo6TWVk
aWFSZWNvcmRlcjo6c2V0Q3VzdG9tUHJpdmF0ZVJlY29yZGVyQ3JlYXRvcihjcmVhdGVSZWNvcmRl
ck1vY2tTb3VyY2UpOwogfQotCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQogCiBFeGNlcHRpb25PcjxSZWY8RE9NUmVjdD4+IEludGVybmFsczo6YWJzb2x1dGVDYXJldEJv
dW5kcygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBiMTI4NGE0N2UyMzM2MjIzNzdiYjY5N2Y4ZmM1
OWJiMTI1NDc0NjhkLi4wZjgzOGE5MTJiMjNjODNkZGNlYzUwODk5ZmJkN2IwMjZjMzhlNGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKQEAgLTM4LDkgKzM4LDkgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29y
ZGVyPiBSZW1vdGVNZWRpYVJlY29yZGVyOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbykKK3N0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBSZW1vdGVNZWRpYVJlY29yZGVyOjpjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgTWVkaWFS
ZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNv
cmRWaWRlbywgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShyZWNv
cmRBdWRpbywgcmVjb3JkVmlkZW8pOworICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmNyZWF0ZShyZWNvcmRBdWRpbywgcmVjb3JkVmlkZW8sIG9wdGlvbnMpOwog
ICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+KG5ldyBSZW1vdGVNZWRpYVJlY29yZGVy
IHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgd3JpdGVyLnJlbGVhc2VO
b25OdWxsKCksIHJlY29yZEF1ZGlvIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCBlZjZlZTM4OTUwYTM3MTVh
NDA3MDRjMGZlNWU4YTYwYmUyZjBiNzg2Li40ZTViN2IwNzhmMGRkNzg4NzVhNWRlOWU5MzM0MGRi
NzM4YmNmNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDQVJpbmdCdWZmZXI7CiBjbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwog
Y2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7CitzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRp
b25zOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU1LDcgQEAgY2xhc3MgU2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2U7CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyIDogcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBj
cmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIE1lZGlhUmVjb3JkZXJJZGVudGlmaWVy
LCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVvKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wg
cmVjb3JkVmlkZW8sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYp
OwogICAgIH5SZW1vdGVNZWRpYVJlY29yZGVyKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLmNwcAppbmRleCAwYmE2ZmQ3ZDBlZjk2NjhmMDE5OGJmZWYwMDBmNWM4NDhhMjI2
ZDJkLi5mNDgxNTI1MzgyM2FlNTk1N2I3Mjc5NDBlNzJlNGFhZGZkMjFiZjgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtNTEsMTAgKzUxLDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZShJUEM6
OkNvbm5lCiAgICAgICAgIHJlY29yZGVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6Y3JlYXRlUmVj
b3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRp
bywgYm9vbCByZWNvcmRWaWRlbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNl
cHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXI6OmNyZWF0ZVJlY29yZGVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0IE1lZGlhUmVj
b3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIW1fcmVjb3JkZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBhdXRvIHJlY29yZGVy
ID0gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgaWRlbnRpZmllciwgcmVjb3JkQXVkaW8sIHJlY29yZFZpZGVvKTsKKyAgICBhdXRvIHJlY29y
ZGVyID0gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgaWRlbnRpZmllciwgcmVjb3JkQXVkaW8sIHJlY29yZFZpZGVvLCBvcHRpb25zKTsKICAg
ICBpZiAoIXJlY29yZGVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0
aW9uRGF0YSB7IE5vdFN1cHBvcnRlZEVycm9yLCAiVW5hYmxlIHRvIGNyZWF0ZSBhIHJlY29yZGVy
IHdpdGggdGhlIHByb3ZpZGVkIHN0cmVhbSJfcyB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5o
CmluZGV4IDhlNmY5MThhMDE2NzkxOGEwZDAyNWQzYjZjNTIxNTYzOGFjOWU1NjIuLjc1MzkwYTg1
YTNmYTQwZTI3YTc4NDY3ODkxOGRjODU0Y2U0MTFjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRp
b25zOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9p
ZCBjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRp
bywgYm9vbCByZWNvcmRWaWRlbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVSZWNvcmRlcihNZWRp
YVJlY29yZGVySWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywg
Y29uc3QgV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAg
dm9pZCByZWxlYXNlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIpOwogCiAgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggYTJmMTg4ZDc4OTMw
ZmM5NzE1NjQ3YTBmNjQxMGQyMWEyNjk1YzYzNy4uMjU3YmY5NjYzMjc4ODVmZmRjZmZiMGU3M2M2
ODFhODc5MWFjNmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVM
RUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIE5vdFJlZkNv
dW50ZWQgewotICAgIENyZWF0ZVJlY29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZp
ZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pIC0+IChPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVycm9yKSBBc3luYworICAgIENyZWF0ZVJlY29yZGVy
KFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wg
aGFzVmlkZW8sIHN0cnVjdCBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMgb3B0
aW9ucykgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGNyZWF0aW9uRXJyb3Ip
IEFzeW5jCiAgICAgUmVsZWFzZVJlY29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZp
ZXIgaWQpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCA0ZDQ3ODZiZTk1NTJlNjQy
YTBmN2M2ODVmOTFlODc2MzY5MTk0YjAwLi5jN2U5YTlmZDJkMjQyODE5NTIyMmVmYmQ3YzEyN2Ji
ZDUwYmFlNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC00MywxMCArNDMsMTEgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLU1lZGlhUmVj
b3JkZXJQcml2YXRlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0
cmVhbSkKK01lZGlhUmVjb3JkZXJQcml2YXRlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0
cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBv
cHRpb25zKQogICAgIDogbV9pZGVudGlmaWVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpKQogICAgICwgbV9zdHJlYW0obWFrZVJlZihzdHJlYW0pKQogICAgICwgbV9jb25uZWN0
aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpKQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7CiB9CiAKQEAgLTU5LDcg
KzYwLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RhcnRSZWNvcmRpbmcoRXJyb3JD
YWxsYmFjayYmIGVycm9yQ2FsbGJhY2spCiAgICAgaWYgKHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJh
Y2spCiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPihtYWtl
VW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPih0aGlzKSk7CiAKLSAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXI6OkNyZWF0ZVJlY29yZGVyIHsgbV9pZGVudGlmaWVyLCAhIXNlbGVjdGVkVHJhY2tzLmF1
ZGlvVHJhY2ssICEhc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayB9LCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgYXVkaW9UcmFjayA9IG1ha2VSZWZQdHIoc2VsZWN0ZWRUcmFj
a3MuYXVkaW9UcmFjayksIHZpZGVvVHJhY2sgPSBtYWtlUmVmUHRyKHNlbGVjdGVkVHJhY2tzLnZp
ZGVvVHJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKV0oYXV0byYm
IGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpDcmVhdGVSZWNvcmRlciB7
IG1faWRlbnRpZmllciwgISFzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLCAhIXNlbGVjdGVkVHJh
Y2tzLnZpZGVvVHJhY2ssIG1fb3B0aW9ucyB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgYXVkaW9UcmFjayA9IG1ha2VSZWZQdHIoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFj
ayksIHZpZGVvVHJhY2sgPSBtYWtlUmVmUHRyKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spLCBl
cnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKV0oYXV0byYmIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIGVycm9yQ2Fs
bGJhY2soeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4
IDViNGE0OTJmYmI1ZGYwY2UxYTNmYTMyNDg5ODQ0MjM1YTFiMzBlMWQuLmQ3NjU4NzU5YjRmYWE1
MzY2YmE0NmJhZDM2YWRkODU1YjZiNGY3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTAs
NyArNTAsNyBAQCBjbGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZSBmaW5hbAogICAgICwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTWVkaWFSZWNvcmRlclByaXZhdGUo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlJik7CisgICAgTWVkaWFSZWNvcmRlclByaXZhdGUo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByaXZhdGVPcHRpb25zJik7CiAgICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlKCk7CiAKIHByaXZh
dGU6CkBAIC03MSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwogICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uIHsgfTsKICAgICBpbnQ2NF90IG1fbnVtYmVyT2ZG
cmFtZXMgeyAwIH07CisgICAgV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zIG1f
b3B0aW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmluZGV4IDVmNTA3NWYx
NjM3YjQ1OWRmNTVhN2QyNTM0ZDViN2JmM2I1OTQwMGUuLjQwNDcxYmQ3MWU1NTc5OGMyNjQwZjU4
NWE4YTRiZTkwNWQ2NmNmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsMTMg
KzM0LDEzIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1zdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVj
b3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2
YXRlJiBzdHJlYW0pCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVk
aWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9u
cyYgb3B0aW9ucykKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFdS
SVRFUkRFTEVHQVRFKQogICAgIGlmIChtX3VzZUdQVVByb2Nlc3MpCi0gICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlPihzdHJlYW0pOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZT4oc3RyZWFtLCBvcHRpb25zKTsKICNlbmRp
ZgotICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlh
UmVjb3JkZXJQcml2YXRlKHN0cmVhbSk7CisgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoc3RyZWFtLCBvcHRpb25zKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAppbmRleCBlOTZiOGZmMzY0ZGU1OTg4NjhmZDlk
ZjA1ZWE5MjViNDBkODNhYWM4Li40NjM5M2FlNDgzZjY5ZTdkYzhjMzUzZTA4NTFhZTZlYWUyNGY0
Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVN
ZWRpYVJlY29yZGVyUHJpdmF0ZShXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGUmKSBmaW5hbDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IGNyZWF0
ZU1lZGlhUmVjb3JkZXJQcml2YXRlKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYpIGZpbmFsOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYWY5ZTEyNTFhYzRkMzgwMGQ4OGUxY2M2NThlZGE1NDc0ODA5NGVkMC4uNjU4
YWNmMjg0NGE3N2Y3NTdjNjlkOWIxYzhhYTc5ZjJlODBhNzAzZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTA4LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgTWVkaWFSZWNvcmRlciBiaXRyYXRlIG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDk3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLWF1ZGlvLWJpdHJhdGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8t
Yml0cmF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXItdmlkZW8tYml0cmF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLmh0bWw6
IEFkZGVkLgorCiAyMDIwLTA4LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXcml0ZSBhIHNjcmlwdCB0byBmaW5kIGR1cGxpY2F0ZSBmaWxlcyBhbmQgZGVsZXRl
IHNvbWUgZHVwbGljYXRlIHRlc3RzIGluIExheW91dFRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8tYml0cmF0ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXItYXVkaW8tYml0cmF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEzOTU0Nzk4ZjY2
YmYzYjU3ZGJmNGYxMGFhMDNlNDM1NTAyNjMyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBWYXJpb3VzIGF1ZGlvIGJpdHJhdGVz
IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXItYXVkaW8tYml0cmF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLWF1ZGlvLWJpdHJhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTJh
OWQyNGU2YzA5YmNiODA0NGFiYjBmZTZhYWI3MDNlY2ZmYmIzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLWF1ZGlvLWJp
dHJhdGUuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgICAgPHRpdGxlPk1lZGlhUmVjb3JkZXIgYXVkaW8gYml0cmF0ZTwvdGl0bGU+CisgICAg
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBhc3luYyBmdW5jdGlvbiByZWNvcmQoc3RyZWFt
LCBiaXRSYXRlKQorICAgIHsKKyAgICAgICAgY29uc3QgcmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNv
cmRlcihzdHJlYW0sIHsgYXVkaW9CaXRzUGVyU2Vjb25kIDogYml0UmF0ZSB9KTsKKyAgICAgICAg
Y29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAg
ICAgICAgIHJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IChlKSA9PiByZXNvbHZlKGUuZGF0YSk7
CisgICAgICAgICAgICBzZXRUaW1lb3V0KHJlamVjdCwgNTAwMCk7CisgICAgICAgIH0pOworICAg
ICAgICByZWNvcmRlci5zdGFydCgpOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlY29yZGVy
LnN0b3AoKSwgMjUwMCk7CisgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0KKworICAgIHBy
b21pc2VfdGVzdChhc3luYyAodCkgPT4geworICAgICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvIDogdHJ1ZSB9KTsKKyAg
ICAgICAgY29uc3QgYml0UmF0ZXMgPSBbMTI4MDAwLCAxOTIwMDAsIDI1NjAwMF07CisgICAgICAg
IGxldCBwcm9taXNlcyA9IFtdOworICAgICAgICBiaXRSYXRlcy5mb3JFYWNoKGJpdFJhdGUgPT4g
eworICAgICAgICAgICAgcHJvbWlzZXMucHVzaChyZWNvcmQoc3RyZWFtLCBiaXRSYXRlKSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGxldCBibG9icyA9IFswLCAwLCAwXTsKKyAgICAgICAgcHJv
bWlzZXMuZm9yRWFjaChhc3luYyAocHJvbWlzZSwgaW5kZXgpID0+IHsKKyAgICAgICAgICAgIGJs
b2JzW2luZGV4XSA9IGF3YWl0IHByb21pc2U7CisgICAgICAgIH0pOworICAgICAgICBhd2FpdCBQ
cm9taXNlLmFsbChwcm9taXNlcyk7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGJsb2JzWzBd
LnNpemUsIDApOworICAgICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGJsb2JzWzJdLnNpemUsIGJs
b2JzWzBdLnNpemUpOworICAgIH0sICJWYXJpb3VzIGF1ZGlvIGJpdHJhdGVzIik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRy
YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjcwYTRiNjczMWRkNGU1Y2FkOGMwZjgxMzAy
NTZlMjI2MDE4M2MzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWJpdHJhdGUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorCitQQVNTIFZhcmlvdXMgdmlkZW8gYml0cmF0ZXMgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1i
aXRyYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXItdmlkZW8tYml0cmF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1MjE4M2IwNzljYzFiMjAyZjRl
OTcyYTkzZGYxM2Q4NmIzNTc4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8tYml0cmF0ZS5odG1sCkBAIC0w
LDAgKzEsMzYgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+
TWVkaWFSZWNvcmRlciB2aWRlbyBiaXRyYXRlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0PgorICAgIGFzeW5jIGZ1bmN0aW9uIHJlY29yZChiaXRSYXRlKQorICAgIHsKKyAgICAg
ICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoeyB2aWRlbyA6IHsgd2lkdGggOiAxMDI0IH0gfSk7CisgICAgICAgIGNvbnN0IHJlY29yZGVy
ID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtLCB7IHZpZGVvQml0c1BlclNlY29uZCA6IGJpdFJh
dGUgfSk7CisgICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVq
ZWN0KSA9PiB7CisgICAgICAgICAgICBsZXQgY291bnQgPSAwOworICAgICAgICAgICAgbGV0IGJs
b2JzID0gW107CisgICAgICAgICAgICByZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSAoZSkgPT4g
cmVzb2x2ZShlLmRhdGEpOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoImRh
dGF2YWlsYWJsZSBldmVudCB0aW1lZCBvdXQiKSwgMTUwMDApOworICAgICAgICB9KTsKKyAgICAg
ICAgcmVjb3JkZXIuc3RhcnQoKTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWNvcmRlci5z
dG9wKCksIDEwMDApOworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9CisKKyAgICBwcm9t
aXNlX3Rlc3QoYXN5bmMgKHQpID0+IHsKKyAgICAgICAgbGV0IGJsb2JzID0gWzAsIDBdOworICAg
ICAgICBibG9ic1swXSA9IGF3YWl0IHJlY29yZCg1MDAwMCk7CisgICAgICAgIGJsb2JzWzFdID0g
YXdhaXQgcmVjb3JkKDUwMDAwMDApOworCisgICAgICAgIC8vIFdlIGFyZSB0YWtpbmcgdGhlIHNl
Y29uZCBibG9iIHNpbmNlIGl0IG1pZ2h0IGJlIG1vcmUgYWNjdXJhdGUgdGhhbiB0aGUgZmlyc3Qg
b25lLgorICAgICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGJsb2JzWzBdLnNpemUsIDAsICJibG9i
MCIpOworICAgICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGJsb2JzWzFdLnNpemUsIGJsb2JzWzBd
LnNpemUsICJibG9iMiIpOworICAgIH0sICJWYXJpb3VzIHZpZGVvIGJpdHJhdGVzIik7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406079</attachid>
            <date>2020-08-06 02:23:52 -0700</date>
            <delta_ts>2020-08-24 07:35:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214973-20200806112350.patch</filename>
            <type>text/plain</type>
            <size>54071</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q0ZTllMjE3YmVlNDhm
ZjdkZTgzZjVjZTAyY2U0MTAyMGRhNzJlNC4uOTQ2NTI2ZjhmYTc1OWVmOTExNmY4MmQ2Mjk4MWNl
OWNhZjllZTZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA4LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
TWVkaWFSZWNvcmRlciBiaXRyYXRlIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
Q2FybHNvbi4KKworICAgICAgICBQaXBlIG9wdGlvbnMgdG8gTWVkaWFSZWNvcmRlclByaXZhdGUg
Y29uc3RydWN0b3IuCisgICAgICAgIEZvciB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLCBwYXNz
IGl0IGRvd24gdG8gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGFuZCBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuCisgICAgICAgIEZvciBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Is
IHdlIGRvIG5vdCBoYW5kbGUgd2VsbCBzb21lIGJpdCByYXRlcywgc28gZm9yIG5vdywgd2UgbGlt
aXQgdG8gc3BlY2lmaWMgdmFsdWVzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8tYml0cmF0ZS5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8tYml0cmF0ZS5odG1sCisK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZWNvcmRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlcjo6TWVkaWFSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNldEJpdHNQ
ZXJTZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpvdXRwdXRCaXRSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRp
b24pOgorICAgICAgICBEbyBub3QgZXhpdCB3aGVuIG5vdCBhYmxlIHRvIHNldCBiaXRyYXRlIGFz
IHdlIHN0aWxsIHdhbnQgdG8gc2V0IG1fbWF4T3V0cHV0UGFja2V0U2l6ZS4KKyAgICAgICAgSW4g
Y2FzZSBvZiBlcnJvciBpbiBzZXR0aW5nIHVwIHRoZSBjb252ZXJ0ZXIsIGNsZWFuIGl0IHVwIHNv
IHRoYXQgd2UgZG8gbm90IHVzZSBhIHBhcnRpYWxseSBzZXQgdXAgY29udmVydGVyLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OnNldE9wdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNldEJp
dHNQZXJTZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q29tcHJlc3Npb25TZXNzaW9uUHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0Q29tcHJlc3Npb25TZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWNvcmRlck1vY2tTb3VyY2UpOgorCiAyMDIwLTA4
LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdheXMg
cmVzb2x2ZSBSZWFkYWJsZVN0cmVhbSdzIHRlZSgpJ3MgY2FuY2VsIHByb21pc2UgYWZ0ZXIgdGhl
IHN0cmVhbSBjbG9zZXMgb3IgZXJyb3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU4NjlkZjQ0ZWJhYmViMmQwM2Jj
YzExN2JkZWU1NTUxY2RjOGFhMzEuLjg3ZDIwY2I0YWQ2NTdlZjQ4YTdjNDEyMWJlOGRlOTM0NzRh
NmY3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDgtMDYgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYVJl
Y29yZGVyIGJpdHJhdGUgb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE0OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgIFNlcmlhbGl6ZSBvcHRpb25zIHdoZW4gY3JlYXRpbmcgcmVtb3RlIG1lZGlh
IHJlY29yZGVyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmNyZWF0ZSk6
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmNyZWF0ZVJlY29y
ZGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlOjpzdGFydFJlY29yZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUmVj
b3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaDoKKwogMjAyMC0wOC0w
NCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeCBhZnRlciByMjY1MjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggZTZmMmZmZjU2Yjky
YWE1N2ZhMjFhYjc2OTI5ZWExNTlhMzMyN2U4MC4uMjMxYTY2NzA0YTdjOTRhNDY2NDkxNjBlNTBk
Y2U3MWZkYTBkOWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtNDgsOSArNDgsMTAgQEAgTWVkaWFSZWNv
cmRlcjo6Q3JlYXRvckZ1bmN0aW9uIE1lZGlhUmVjb3JkZXI6Om1fY3VzdG9tQ3JlYXRvciA9IG51
bGxwdHI7CiAKIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVJlY29yZGVyPj4gTWVkaWFSZWNvcmRlcjo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSwgT3B0
aW9ucyYmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBNZWRpYVJlY29y
ZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShkb2N1bWVudCwgc3RyZWFtLT5wcml2YXRl
U3RyZWFtKCkpOwotICAgIGlmICghcHJpdmF0ZUluc3RhbmNlKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgTWVkaWFSZWNvcmRlciBpcyB1bnN1cHBv
cnRlZCBvbiB0aGlzIHBsYXRmb3JtIl9zIH07CisgICAgYXV0byByZXN1bHQgPSBNZWRpYVJlY29y
ZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShkb2N1bWVudCwgc3RyZWFtLT5wcml2YXRl
U3RyZWFtKCksIG9wdGlvbnMpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCiAgICAgYXV0byByZWNvcmRl
ciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlcihkb2N1bWVudCwgV1RGTW92ZShzdHJlYW0p
LCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiAgICAgcmVjb3JkZXItPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiByZWNvcmRlcjsKQEAgLTYxLDI3ICs2MiwyNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXI6OnNldEN1c3RvbVByaXZhdGVSZWNvcmRlckNyZWF0b3IoQ3JlYXRvckZ1bmN0aW9uIGNyZWF0
b3IpCiAgICAgbV9jdXN0b21DcmVhdG9yID0gY3JlYXRvcjsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQor
RXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPj4gTWVkaWFS
ZWNvcmRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBN
ZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAobV9jdXN0b21DcmVhdG9yKQotICAgICAgICByZXR1cm4gbV9jdXN0b21DcmVhdG9yKHN0
cmVhbSk7CisgICAgICAgIHJldHVybiBtX2N1c3RvbUNyZWF0b3Ioc3RyZWFtLCBvcHRpb25zKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gcGFnZS0+bWVk
aWFSZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoc3RyZWFtKTsK
KyAgICByZXR1cm4gcGFnZS0+bWVkaWFSZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVkaWFSZWNv
cmRlclByaXZhdGUoc3RyZWFtLCBvcHRpb25zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRv
Y3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0oc3RyZWFtKTsKLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgTWVkaWFSZWNv
cmRlciBpcyB1bnN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIl9zIH07CiAjZW5kaWYKIH0KIAot
TWVkaWFSZWNvcmRlcjo6TWVkaWFSZWNvcmRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRp
YVN0cmVhbT4mJiBzdHJlYW0sIE9wdGlvbnMmJiBvcHRpb24pCitNZWRpYVJlY29yZGVyOjpNZWRp
YVJlY29yZGVyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSwg
T3B0aW9ucyYmIG9wdGlvbnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCi0gICAg
LCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb24pKQorICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0
aW9ucykpCiAgICAgLCBtX3N0cmVhbShXVEZNb3ZlKHN0cmVhbSkpCiAgICAgLCBtX3RpbWVTbGlj
ZVRpbWVyKFt0aGlzXSB7IHJlcXVlc3REYXRhKCk7IH0pCiB7CkBAIC0xMzUsMTEgKzEzNiwxMyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhPcHRpb25h
bDx1bnNpZ25lZD4gdGltZVNsaWNlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJUaGUgTWVkaWFSZWNvcmRlcidzIHN0YXRlIG11c3QgYmUgaW5hY3RpdmUg
aW4gb3JkZXIgdG8gc3RhcnQgcmVjb3JkaW5nIl9zIH07CiAKICAgICBBU1NFUlQoIW1fcHJpdmF0
ZSk7Ci0gICAgbV9wcml2YXRlID0gY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoKmRvY3VtZW50
KCksIG1fc3RyZWFtLT5wcml2YXRlU3RyZWFtKCkpOworICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRl
TWVkaWFSZWNvcmRlclByaXZhdGUoKmRvY3VtZW50KCksIG1fc3RyZWFtLT5wcml2YXRlU3RyZWFt
KCksIG1fb3B0aW9ucyk7CiAKLSAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIE1lZGlhUmVjb3JkZXIgaXMgdW5zdXBw
b3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSJfcyB9OworICAgIEFTU0VSVCghcmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAorICAgIG1fcHJpdmF0ZSA9IHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKICAgICBtX3ByaXZhdGUtPnN0YXJ0UmVjb3JkaW5nKFt0aGlzLCBw
ZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oYXV0byYmIGV4Y2Vw
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5oCmluZGV4IDQyOTllODhhM2FiZjNmOTRhNDNjZDczY2JlMzFkOTdhZjNkMzBm
YTAuLjUwMjUwNmY2MTUwNWUwMGFhMTZjZDg1MDkyYjVlNWIxNzlmNTY3YmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApA
QCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIk1l
ZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgpA
QCAtNDksMTggKzUxLDEyIEBAIGNsYXNzIE1lZGlhUmVjb3JkZXIgZmluYWwKIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIFJlY29yZGluZ1N0YXRlIHsgSW5hY3RpdmUsIFJlY29yZGluZywgUGF1c2Vk
IH07CiAgICAgCi0gICAgc3RydWN0IE9wdGlvbnMgewotICAgICAgICBTdHJpbmcgbWltZVR5cGU7
Ci0gICAgICAgIHVuc2lnbmVkIGF1ZGlvQml0c1BlclNlY29uZDsKLSAgICAgICAgdW5zaWduZWQg
dmlkZW9CaXRzUGVyU2Vjb25kOwotICAgICAgICB1bnNpZ25lZCBiaXRzUGVyU2Vjb25kOwotICAg
IH07Ci0gICAgCiAgICAgfk1lZGlhUmVjb3JkZXIoKTsKICAgICAKKyAgICB1c2luZyBPcHRpb25z
ID0gTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxS
ZWY8TWVkaWFSZWNvcmRlcj4+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxNZWRpYVN0cmVhbT4mJiwg
T3B0aW9ucyYmID0geyB9KTsKICAgICAKLSAgICB1c2luZyBDcmVhdG9yRnVuY3Rpb24gPSBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+KCopKE1lZGlhU3RyZWFtUHJpdmF0ZSYp
OworICAgIHVzaW5nIENyZWF0b3JGdW5jdGlvbiA9IEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4+ICgqKShNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBP
cHRpb25zJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRDdXN0b21Qcml2
YXRlUmVjb3JkZXJDcmVhdG9yKENyZWF0b3JGdW5jdGlvbik7CiAgICAgCkBAIC03Niw5ICs3Miw5
IEBAIHB1YmxpYzoKICAgICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0u
Z2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYVJlY29yZGVyKERvY3VtZW50JiwgUmVmPE1l
ZGlhU3RyZWFtPiYmLCBPcHRpb25zJiYgPSB7IH0pOworICAgIE1lZGlhUmVjb3JkZXIoRG9jdW1l
bnQmLCBSZWY8TWVkaWFTdHJlYW0+JiYsIE9wdGlvbnMmJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0
ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFtUHJpdmF0ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+PiBjcmVhdGVNZWRpYVJlY29y
ZGVyUHJpdmF0ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE9wdGlvbnMm
KTsKICAgICAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIApAQCAtMTExLDcgKzEw
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJikgZmluYWwgeyB9OwogCiAgICAgc3RhdGljIENyZWF0b3JGdW5jdGlvbiBt
X2N1c3RvbUNyZWF0b3I7Ci0gICAgCisKICAgICBPcHRpb25zIG1fb3B0aW9uczsKICAgICBSZWY8
TWVkaWFTdHJlYW0+IG1fc3RyZWFtOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZT4gbV9wcml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCA4ODRh
NDA3OTBhNDZhODMyNjI2ZTBmYTBlZWJiOWM5ZDlmNDRjYWIyLi5jZmYzNmJiZGFmNjlkOGI1MjU1
MDIyMWFlNDZjY2UxYTZjZDI1MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAt
MzIsMTIgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlh
UmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQorc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1l
ZGlhUmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRp
YVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCi0gICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3Jl
YXRlKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3Jl
YXRlKHN0cmVhbSwgb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOwor
ICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcm92aWRlci5oCmluZGV4IDExYmFhZGNlYTg2OWU3YTI5MTk2NjJhYjJk
OGNlZjU0NzBjMmVkYmQuLjNhM2JkMTlhNzMwNzAzNDZlOTg5ZmViZjczODAzODcwNGViZTkzM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFt
UHJpdmF0ZTsKK3N0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiAKIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVJl
Y29yZGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZT4gY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRl
Jik7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IGNy
ZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE1lZGlh
UmVjb3JkZXJQcml2YXRlT3B0aW9ucyYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFVzZUdQVVBy
b2Nlc3MoYm9vbCB2YWx1ZSkgeyBtX3VzZUdQVVByb2Nlc3MgPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAyZTE4
MDJjNDlmMDk4ZTljY2RlOGNkMzk5YTMzZTA4MjhiY2ExOWYuLmMwYmU3OWQ0MWY2NzBmOTdhNWY2
YzAwOGM1ODYxOWYzMDc5ZjJmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNTIsNiArMTA1Miw3IEBACiAJCTQxM0UwMDc5
MURCMEU0RjIwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFMDA3ODFEQjBFNERFMDAyMzQxRDIgLyogTWVt
b3J5UmVsZWFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxNDQ2MEEyMjQxMjk5NDUwMDgxNEJFNyAvKiBNZWRpYVNlc3Npb25JZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ0NjBB
MDI0MTI5OTQxMDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNDU5OEMyMjNDOEQxNzcw
MDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDU5OEMxMjNDOEFENzkwMDJCOUND
OCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSAqLzsgfTsKKwkJNDE0QjdGQUQy
NEQ4MUNDMTAwMzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0QjdGQUIyNEQ4MUM4RjAw
MzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJF
MyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNEI4MjAzMUQ2REYwRDkwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUu
aCAqLzsgfTsKIAkJNDE0REVERTcxRjlGRTkxRTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NERFREU1MUY5RkU5MTUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1MDcxNTgxNjg1
MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUwNzE1NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0
b3JGaWx0ZXIuaCAqLzsgfTsKQEAgLTc0NzEsNiArNzQ3Miw3IEBACiAJCTQxNEFENDAwMjE0OThE
MzEwMDUyMTY3NiAvKiBSVENSdHBEZWNvZGluZ1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UlRDUnRwRGVjb2RpbmdQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNEFENDAxMjE0OThEMzEwMDUyMTY3NiAvKiBSVENSdHBEZWNvZGluZ1BhcmFtZXRlcnMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFJUQ1J0cERlY29kaW5nUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxNEFENDAyMjE0OThEMzIwMDUyMTY3NiAvKiBSVENSdHBDb2RpbmdQYXJhbWV0
ZXJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSVENSdHBDb2RpbmdQYXJhbWV0ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE0QjdGQUIyNEQ4MUM4RjAwMzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQ
cml2YXRlT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0
QjgyMDIxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVkQ2xvbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJl
ZENsb25lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZWRDbG9u
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTRERURFNTFGOUZFOTE1MDA0N0M0
MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xOTU0Miw2ICsxOTU0NCw3IEBACiAJCQkJNEQ3M0Y5NDQyMThCQzVGQTAwM0EzRUQ2
IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oICovLAogCQkJCTREOUY2QjY1MjE4MjUz
MkIwMDkyQTlDNSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwICovLAogCQkJCTREOUY2
QjY0MjE4MjUzMkIwMDkyQTlDNSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaCAqLywKKwkJ
CQk0MTRCN0ZBQjI0RDgxQzhGMDAzM0Q0NDIgLyogTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25z
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1lZGlhcmVjb3JkZXI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMzI1NDQsNiArMzI1NDcsNyBAQAogCQkJCTREQjcxMzBEMjE2RUNCNEQw
MDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NEQzQjUwMTYyMTdFNThCNzAwNjY1REIxIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0RDczRjk0NjIxOEJDNUZBMDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTRCN0ZBRDI0RDgxQ0MxMDAzM0Q0
NDIgLyogTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
RDczRjk0RTIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3NkU4OTYyM0MzNTM3QjAwM0U4M0ZFIC8qIE1lZGlh
UmVjb3JkZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwODQzRDAxQjE4RTQ3RDAw
QjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAwYzE0YWU2OTBjZDNmNDZhNjNiYWU2MTYw
ODU0ZjFhMDNiODExYjQxLi5hM2JjODE3YjE4MzNlMGM4NDc3NTUwMzI3ZjE1MTMzOGFlZjIxZWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTg4LDcgKzU4OCw3
IEBAIHB1YmxpYzoKICAgICBFbXB0eU1lZGlhUmVjb3JkZXJQcm92aWRlcigpID0gZGVmYXVsdDsK
IHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29y
ZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJl
Y29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBNZWRpYVJlY29yZGVyUHJp
dmF0ZU9wdGlvbnMmKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAwNGJhNmIwODRhZDIzZjQzMzJlZDRmZWU1NDVmZWY4
MTQ1ZDRhNGE2Li41Njc0OTMyMThmYjI0OWQ3ZTRjMWE5MzY1MjZiNTczYWM3ZjIyOTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlICJF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaCIKICNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDg4NTZiMTU3
ZGY0ODQ4Y2UzZjhkMTNlNzcyN2QxMzIxMDgwNTczYTEuLjg0NGE5NjlmNTNkNGFlZjc5Y2QyNmJi
MWJlYzQyNzk0ZmJkNGRlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGw6OmNyZWF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKK3N0ZDo6dW5pcXVl
X3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbDo6Y3JlYXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVl
ZCB0byBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgYXVkaW8vdmlkZW8gdHJhY2tzCiAg
ICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgY2hvb3NlIHRoZSBmaXJzdCB0cmFjayBhcyB0aGUgcmVj
b3JkZWQgdHJhY2suCkBAIC00NSwxMSArNDUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUK
IAogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0
VHJhY2tzKHN0cmVhbSk7CiAKLSAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpjcmVhdGUoISFzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLCAhIXNlbGVjdGVkVHJh
Y2tzLnZpZGVvVHJhY2spOworICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNyZWF0ZSghIXNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2ssICEhc2VsZWN0ZWRUcmFj
a3MudmlkZW9UcmFjaywgb3B0aW9ucyk7CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgYXV0byByZWNvcmRlciA9IG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byByZWNv
cmRlciA9IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KG5ldyBN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwod3JpdGVyLnJlbGVhc2VOb25OdWxsKCkpKTsKICAg
ICBpZiAoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaykKICAgICAgICAgcmVjb3JkZXItPnNldEF1
ZGlvU291cmNlKCZzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLT5zb3VyY2UoKSk7CiAgICAgaWYg
KHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwuaAppbmRleCAxZDg0NTAwOWQzMWM3YTk5ODZkZjdmZTMwZDVhMjZmMmI0YWJjOGZiLi41
NDU0MTBiMmFlZDBjYzM2MDcxOGUzZTMxNGJjZjQ0OGI0OWE0ZTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTM3LDEyICszNywxMiBAQCBjbGFzcyBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwgZmluYWwKICAgICA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJp
dmF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IGNyZWF0ZShNZWRp
YVN0cmVhbVByaXZhdGUmKTsKLQotICAgIGV4cGxpY2l0IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBjcmVhdGUoTWVkaWFTdHJl
YW1Qcml2YXRlJiwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAgICAgfk1l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbCgpOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IE1l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+
JiYpOworCiAgICAgLy8gTWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKE1lZGlhU2FtcGxlJikgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMWViZDY4YzJkYzRiMjZjMzhmOTY2MTQwMGM3ZTZkZGI5ZTkwNDY1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1lZGlhUmVj
b3JkZXJQcml2YXRlT3B0aW9ucyB7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBhdWRpb0JpdHNQZXJTZWNvbmQ7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHZp
ZGVvQml0c1BlclNlY29uZDsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gYml0c1BlclNlY29uZDsK
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK2lubGluZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtaW1lVHlwZTsK
KyAgICBlbmNvZGVyIDw8IGF1ZGlvQml0c1BlclNlY29uZDsKKyAgICBlbmNvZGVyIDw8IHZpZGVv
Qml0c1BlclNlY29uZDsKKyAgICBlbmNvZGVyIDw8IGJpdHNQZXJTZWNvbmQ7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitpbmxpbmUgT3B0aW9uYWw8TWVkaWFSZWNvcmRlclByaXZhdGVP
cHRpb25zPiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1p
bWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPE9w
dGlvbmFsPHVuc2lnbmVkPj4gYXVkaW9CaXRzUGVyU2Vjb25kOworICAgIGRlY29kZXIgPj4gYXVk
aW9CaXRzUGVyU2Vjb25kOworICAgIGlmICghYXVkaW9CaXRzUGVyU2Vjb25kKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiB2
aWRlb0JpdHNQZXJTZWNvbmQ7CisgICAgZGVjb2RlciA+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7Cisg
ICAgaWYgKCF2aWRlb0JpdHNQZXJTZWNvbmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IGJpdHNQZXJTZWNvbmQ7CisgICAg
ZGVjb2RlciA+PiBiaXRzUGVyU2Vjb25kOworICAgIGlmICghYml0c1BlclNlY29uZCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0
ZU9wdGlvbnMgeyBXVEZNb3ZlKG1pbWVUeXBlKSwgKmF1ZGlvQml0c1BlclNlY29uZCwgKnZpZGVv
Qml0c1BlclNlY29uZCwgKmJpdHNQZXJTZWNvbmQgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IDY1Mjg2NmRkZGI5ZjlmMDQ4YWEw
ZjY3Yzg2OTEzMjE5MjlhYjExMjQuLjI4NTgxNjBhMDYzYTU3MzExYTI0ZGU0N2E3Nzk3NzYyOTFm
NTlkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aApAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CiAgICAgfkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvcigpOwogCisgICAgdm9pZCBzZXRCaXRzUGVyU2Vjb25kKHVuc2lnbmVkKTsKICAgICB2
b2lkIGZpbmlzaCgpOwogICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVm
KTsKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKQEAgLTQ3
LDYgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoKTsKICAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFj
aywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlKGNvbnN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYpIGNvbnN0OwogCiAgICAgc3RhdGljIE9TU3Rh
dHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYs
IFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24q
Kiwgdm9pZCopOwogCkBAIC04NSw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc2Ft
cGxlQmxvY2tCdWZmZXJTaXplIHsgMCB9OwogICAgIHNpemVfdCBtX2N1cnJlbnRPZmZzZXRJblNh
bXBsZUJsb2NrQnVmZmVyIHsgMCB9OwogICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5
cGUgeyBrQXVkaW9Gb3JtYXRNUEVHNEFBQyB9OworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291
dHB1dEJpdFJhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tCmluZGV4IDZkMDRkOGMzYjc4MWI2ZjM4N2I3N2Q4ZjllMTVmMmNkNDI5
YTU5ODQuLjJjZWU3OWIwZTljMjg5NDY1ZWRjM2RhMWI3ODUxZDE4ZTk0ZmI5YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0zMiw2ICsz
Miw4IEBACiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CiAjaW5jbHVk
ZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+CiAjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgog
CiAjaW1wb3J0IDxwYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaD4KIApAQCAtOTUsNiArOTcs
MzQgQEAgdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCiAgICAgfSk7
CiB9CiAKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vjb25k
KHVuc2lnbmVkIGJpdFJhdGUpCit7CisgICAgLy8gRklYTUU6IHdlIGhhdmUgc29tZSBpc3N1ZXMg
d2hlbiBzZXR0aW5nIHVwIHNvbWUgYml0IHJhdGVzLCBvbmx5IGFsbG93IHNvbWUgdGhhdCB3b3Jr
IGZvciB0aGUgbW9tZW50LgorICAgIGlmIChiaXRSYXRlIDwgMTI4MDAwKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lORk8oV2ViUlRDLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpvdXRw
dXRCaXRSYXRlIGNsYW1wZWQgdG8gMTI4MDAwLiIpOworICAgICAgICBiaXRSYXRlID0gMTI4MDAw
OworICAgIH0gZWxzZSBpZiAoYml0UmF0ZSA+IDI1NjAwMCkgeworICAgICAgICBSRUxFQVNFX0xP
R19JTkZPKFdlYlJUQywgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6b3V0cHV0Qml0UmF0
ZSBjbGFtcGVkIHRvIDI1NjAwMC4iKTsKKyAgICAgICAgYml0UmF0ZSA9IDI1NjAwMDsKKyAgICB9
IGVsc2UgaWYgKGJpdFJhdGUgIT0gMTI4MDAwICYmIGJpdFJhdGUgIT0gMTkyMDAwICYmIGJpdFJh
dGUgIT0gMjU2MDAwKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oV2ViUlRDLCAiQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpvdXRwdXRCaXRSYXRlIGRpZCBub3Qgc2V0IG91dHB1dCBi
aXQgcmF0ZSBhcyB2YWx1ZSBpcyBub3Qgc3VwcG9ydGVkLiIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fb3V0cHV0Qml0UmF0ZSA9IGJpdFJhdGU7Cit9CisKK1VJbnQzMiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6Om91dHB1dEJpdFJhdGUoY29uc3QgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uJiBkZXN0aW5hdGlvbkZvcm1hdCkgY29uc3QKK3sKKyAgICBpZiAobV9vdXRw
dXRCaXRSYXRlKQorICAgICAgICByZXR1cm4gKm1fb3V0cHV0Qml0UmF0ZTsKKworICAgIGlmIChk
ZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA+PSA0NDEwMCkKKyAgICAgICAgcmV0dXJuIDE5
MjAwMDsKKyAgICBpZiAoZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPCAyMjAwMCkKKyAg
ICAgICAgcmV0dXJuIDMyMDAwOworICAgIHJldHVybiA2NDAwMDsKK30KKwogYm9vbCBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERl
c2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIEF1ZGlv
Rm9ybWF0SUQgb3V0cHV0Rm9ybWF0SUQpCiB7CiAgICAgY29uc3QgYXV0byAqYXVkaW9Gb3JtYXRM
aXN0SXRlbSA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3Jt
YXQoZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTE4LDYgKzE0OCwxMSBAQCBib29sIEF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVz
Y3JpcHRpb24oQwogICAgIH0KICAgICBtX2NvbnZlcnRlciA9IGNvbnZlcnRlcjsKIAorICAgIGF1
dG8gY2xlYW51cEluQ2FzZU9mRXJyb3IgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIEF1
ZGlvQ29udmVydGVyRGlzcG9zZShtX2NvbnZlcnRlcik7CisgICAgICAgIG1fY29udmVydGVyID0g
bnVsbHB0cjsKKyAgICB9KTsKKwogICAgIHNpemVfdCBjb29raWVTaXplID0gMDsKICAgICBjb25z
dCB2b2lkICpjb29raWUgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZShm
b3JtYXREZXNjcmlwdGlvbiwgJmNvb2tpZVNpemUpOwogICAgIGlmIChjb29raWVTaXplKSB7CkBA
IC0xNDUsMTggKzE4MCwxMCBAQCBib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5p
dEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oQwogICAgIH0KIAogICAg
IGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRNUEVHNEFB
QykgewotICAgICAgICAvLyBGSVhNRTogU2V0IG91dHB1dEJpdFJhdGUgYWNjb3JkaW5nIE1lZGlh
UmVjb3JkZXJPcHRpb25zLmF1ZGlvQml0c1BlclNlY29uZC4KLSAgICAgICAgVUludDMyIG91dHB1
dEJpdFJhdGUgPSA2NDAwMDsKLSAgICAgICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBs
ZVJhdGUgPj0gNDQxMDApCi0gICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMTkyMDAwOwotICAg
ICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlIDwgMjIwMDApCi0g
ICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIwMDA7Ci0KKyAgICAgICAgYXV0byBvdXRwdXRC
aXRSYXRlID0gdGhpcy0+b3V0cHV0Qml0UmF0ZShtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKICAgICAg
ICAgc2l6ZSA9IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKLSAgICAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJF
bmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsKKyAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLCBrQXVkaW9Db252
ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpCiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckVuY29kZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICB9CiAKICAg
ICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7CkBAIC0xNjksNiAr
MTk2LDggQEAgYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRBdWRpb0NvbnZl
cnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKEMKICAgICAgICAgfQogICAgIH0KIAorICAg
IGNsZWFudXBJbkNhc2VPZkVycm9yLnJlbGVhc2UoKTsKKwogICAgIGF1dG8gZGVzdGluYXRpb25C
dWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChtX2Rlc3RpbmF0aW9u
Rm9ybWF0LCBtX21heE91dHB1dFBhY2tldFNpemUsIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORFMp
OwogICAgIGlmIChtX2Rlc3RpbmF0aW9uQnVmZmVyLnNpemUoKSA8IGRlc3RpbmF0aW9uQnVmZmVy
U2l6ZSkKICAgICAgICAgbV9kZXN0aW5hdGlvbkJ1ZmZlci5yZXNpemUoZGVzdGluYXRpb25CdWZm
ZXJTaXplKTsKQEAgLTQyOCw4ICs0NTcsMTAgQEAgdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoQ01UaW1lIGwKICAg
ICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZm
ZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKIAogICAgICAgICBhdXRv
IGZvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihi
dWZmZXIpOwotICAgICAgICBpZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERl
c2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAg
IGlmICghaW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0
RGVzY3JpcHRpb24sIG1fb3V0cHV0Q29kZWNUeXBlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IE1heWJlIHdlIHNob3VsZCBlcnJvciB0aGUgbWVkaWEgcmVjb3JkZXIgaWYgd2UgYXJlIG5vdCBh
YmxlIHRvIGdldCBhIGNvcnJlY3QgY29udmVydGVyLgogICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGlt
ZSkgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1
ZUdldER1cmF0aW9uKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDI0NGM1Nzgw
NDhjOTU5NWRiZGRlMGRlMDRlN2IzYzkxZjE3NDQ3ZmMuLjRmMjJiODE1MTU4NTFjZGEyNWViOGI5
OWViNDc3MzYwOGU2OTZlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC01OSwxMCArNTksMTEgQEAgY2xhc3MgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxh
dGZvcm1BdWRpb0RhdGE7CiBjbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CitzdHJ1
Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV2Vha1B0
ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgYm9v
bCBoYXNWaWRlbyk7CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cj4gY3JlYXRlKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3Jk
ZXJQcml2YXRlT3B0aW9ucyYpOwogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpOwog
CiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CkBA
IC03OCw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgYm9vbCBp
bml0aWFsaXplKCk7CisgICAgdm9pZCBzZXRPcHRpb25zKGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9ucyYpOwogCiAgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZFZpZGVvT3V0cHV0QnVm
ZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOwogICAgIHN0YXRp
YyB2b2lkIGNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZl
clF1ZXVlVHJpZ2dlclRva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA1NDJlMzZlYTViNGQ0NGJjYzcwMWE4ZTI2ZjE3
YWZkMzE0MjZkMGRhLi43OWZlZWUxODI4OTE1MjhlY2E0YTUxNDg5NzM2Njc2NmFhODcxOTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aCIKICNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCkBAIC0xMTQsMTEg
KzExNSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAK
LVJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKQorUmVmUHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRl
KGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoaGFzQXVkaW8sIGhhc1ZpZGVvKSk7CiAgICAgaWYgKCF3
cml0ZXItPmluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgd3JpdGVy
LT5zZXRPcHRpb25zKG9wdGlvbnMpOwogICAgIHJldHVybiB3cml0ZXI7CiB9CiAKQEAgLTE3Niw2
ICsxNzgsMTQgQEAgYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSgp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnNldE9wdGlvbnMoY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQor
eworICAgIGlmIChvcHRpb25zLmF1ZGlvQml0c1BlclNlY29uZCAmJiBtX2F1ZGlvQ29tcHJlc3Nv
cikKKyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3ItPnNldEJpdHNQZXJTZWNvbmQoKm9wdGlvbnMu
YXVkaW9CaXRzUGVyU2Vjb25kKTsKKyAgICBpZiAob3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQg
JiYgbV92aWRlb0NvbXByZXNzb3IpCisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yLT5zZXRCaXRz
UGVyU2Vjb25kKCpvcHRpb25zLnZpZGVvQml0c1BlclNlY29uZCk7Cit9CisKIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZm
ZXJzKCkKIHsKICAgICBBU1NFUlQobV9oYXNWaWRlbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCAwZWI2N2FlZjQ3Yjg1MTYzN2Q4ZmYwOTk1
ZDliMzRkNDU3ZDVjZWY0Li45ZDE2MzUyOTRjOWRhYjlhMjk3YzBkNjk5MzQ0MjlmNjlmMDI4MTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAg
LTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSwgQ01CdWZmZXJR
dWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOwogICAgIH5WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKIAorICAgIHZvaWQgc2V0Qml0c1BlclNlY29uZCh1bnNp
Z25lZCk7CiAgICAgdm9pZCBmaW5pc2goKTsKICAgICB2b2lkIGFkZFNhbXBsZUJ1ZmZlcihDTVNh
bXBsZUJ1ZmZlclJlZik7CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgZ2V0T3V0cHV0U2FtcGxlQnVm
ZmVyKCk7CkBAIC02NCw2ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRW5jb2Rpbmcg
eyBmYWxzZSB9OwogICAgIGZsb2F0IG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uIHsgMi4w
IH07CiAgICAgdW5zaWduZWQgbV9leHBlY3RlZEZyYW1lUmF0ZSB7IDMwIH07CisgICAgT3B0aW9u
YWw8dW5zaWduZWQ+IG1fb3V0cHV0Qml0UmF0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggODlhMmE3ODc2NTJlMTcyMDcx
ZGIwMmRmYTRhNmIyMmUyNjZjM2VjOS4uM2FhYmE2OThkZjdmYmU0NTdiMzJiYjQyMjNkNDFlYTJl
ZjExNDYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IubW0KQEAgLTc2LDYgKzc2LDExIEBAIGJvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Ojppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzZXRCaXRz
UGVyU2Vjb25kKHVuc2lnbmVkIGJpdFJhdGUpCit7CisgICAgbV9vdXRwdXRCaXRSYXRlID0gYml0
UmF0ZTsKK30KKwogdm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCiB7
CiAgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CkBAIC0xMDEsNiAr
MTA2LDE1IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp2aWRlb0NvbXByZXNz
aW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwKICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZm
ZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgT1NTdGF0dXMgc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkoVlRDb21wcmVzc2lvblNl
c3Npb25SZWYgdnRTZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIHVpbnQzMl90IHZhbHVlKQorewor
ICAgIGludDY0X3QgdmFsdWU2NCA9IHZhbHVlOworICAgIENGTnVtYmVyUmVmIGNmVmFsdWUgPSBD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAm
dmFsdWU2NCk7CisgICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHkodnRT
ZXNzaW9uLCBrZXksIGNmVmFsdWUpOworICAgIENGUmVsZWFzZShjZlZhbHVlKTsKKyAgICByZXR1
cm4gc3RhdHVzOworfQorCiBib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENv
bXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3Jp
cHRpb24pCiB7CiAgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3Jt
YXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTIwLDEy
ICsxMzQsMTYgQEAgYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVz
c2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW8KIAogICAgIGVycm9yID0gVlRTZXNz
aW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlL
ZXlfUmVhbFRpbWUsIGtDRkJvb2xlYW5UcnVlKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihl
cnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9u
U2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKLSAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNz
aW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxE
dXJhdGlvbiwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0
aW9uKSk7CisgICAgZXJyb3IgPSBzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eShtX3Z0U2Vz
c2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFs
RHVyYXRpb24sIG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKTsKICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlG
cmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgZXJyb3Ig
PSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Q
cm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fZXhw
ZWN0ZWRGcmFtZVJhdGUpKTsKKyAgICBlcnJvciA9IHNldENvbXByZXNzaW9uU2Vzc2lvblByb3Bl
cnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVk
RnJhbWVSYXRlLCBtX2V4cGVjdGVkRnJhbWVSYXRlKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNz
aW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKIAotICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8gY29t
cHJlc3Npb24gcmF0ZS4KKyAgICBpZiAobV9vdXRwdXRCaXRSYXRlKSB7CisgICAgICAgIGVycm9y
ID0gc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfQXZlcmFnZUJpdFJhdGUsICptX291dHB1dEJpdFJhdGUpOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Q
cm9wZXJ0eUtleV9BdmVyYWdlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICB9
CisKICAgICBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVz
KG1fdnRTZXNzaW9uLmdldCgpKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Np
b25QcmVwYXJlVG9FbmNvZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYjIwZjMwZDNkMWFmMTAyYjg0Nzg5NGUz
OWQ2OGUyOTRkMDhiMTFlLi45ZTJkYTlhOTY0NTFiNjk4NzhmNzBlYjMwODU1ZjA4MjZlMWZiOGNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNjkxLDE3ICsxNjkxLDE2
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rp
b24oYm9vbCBlbmFibGVkKQogICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhQ2FwdHVy
ZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihlbmFibGVkKTsKIH0KIAotc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gY3JlYXRlUmVjb3JkZXJNb2NrU291cmNlKE1l
ZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQorc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4+IGNyZWF0ZVJlY29yZGVyTW9ja1NvdXJjZShNZWRp
YVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25z
JikKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlTW9j
az4obmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jayhzdHJlYW0pKTsKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPihuZXcgTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrKHN0cmVhbSkpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0Q3VzdG9tUHJpdmF0ZVJl
Y29yZGVyQ3JlYXRvcigpCiB7CiAgICAgV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6c2V0Q3VzdG9t
UHJpdmF0ZVJlY29yZGVyQ3JlYXRvcihjcmVhdGVSZWNvcmRlck1vY2tTb3VyY2UpOwogfQotCi0j
ZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiBFeGNlcHRpb25PcjxSZWY8
RE9NUmVjdD4+IEludGVybmFsczo6YWJzb2x1dGVDYXJldEJvdW5kcygpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cAppbmRleCBiMTI4NGE0N2UyMzM2MjIzNzdiYjY5N2Y4ZmM1OWJiMTI1NDc0NjhkLi4wZjgzOGE5
MTJiMjNjODNkZGNlYzUwODk5ZmJkN2IwMjZjMzhlNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTM4
LDkgKzM4LDkgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBSZW1vdGVNZWRpYVJlY29y
ZGVyOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZWNvcmRB
dWRpbywgYm9vbCByZWNvcmRWaWRlbykKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29y
ZGVyPiBSZW1vdGVNZWRpYVJlY29yZGVyOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgY29uc3QgTWVkaWFS
ZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gd3JpdGVyID0gTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShyZWNvcmRBdWRpbywgcmVjb3JkVmlkZW8p
OworICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShy
ZWNvcmRBdWRpbywgcmVjb3JkVmlkZW8sIG9wdGlvbnMpOwogICAgIGlmICghd3JpdGVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1l
ZGlhUmVjb3JkZXI+KG5ldyBSZW1vdGVNZWRpYVJlY29yZGVyIHsgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgaWRlbnRpZmllciwgd3JpdGVyLnJlbGVhc2VOb25OdWxsKCksIHJlY29yZEF1ZGlv
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuaAppbmRleCBlZjZlZTM4OTUwYTM3MTVhNDA3MDRjMGZlNWU4YTYwYmUyZjBi
Nzg2Li40ZTViN2IwNzhmMGRkNzg4NzVhNWRlOWU5MzM0MGRiNzM4YmNmNzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
aApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQVJpbmdCdWZm
ZXI7CiBjbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwogY2xhc3MgUmVtb3RlVmlkZW9TYW1w
bGU7CitzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTU0LDcgKzU1LDcgQEAgY2xhc3MgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U7
CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYsIE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBi
b29sIHJlY29yZFZpZGVvKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlh
UmVjb3JkZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVkaWFSZWNvcmRl
cklkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0IFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYpOwogICAgIH5SZW1vdGVNZWRpYVJl
Y29yZGVyKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAppbmRleCAw
YmE2ZmQ3ZDBlZjk2NjhmMDE5OGJmZWYwMDBmNWM4NDhhMjI2ZDJkLi5mNDgxNTI1MzgyM2FlNTk1
N2I3Mjc5NDBlNzJlNGFhZGZkMjFiZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcApA
QCAtNTEsMTAgKzUxLDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmRpZFJl
Y2VpdmVSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZShJUEM6OkNvbm5lCiAgICAgICAgIHJlY29y
ZGVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBS
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6Y3JlYXRlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmNyZWF0ZVJl
Y29yZGVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVk
aW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYg
b3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVjb3JkZXJzLmNvbnRh
aW5zKGlkZW50aWZpZXIpKTsKLSAgICBhdXRvIHJlY29yZGVyID0gUmVtb3RlTWVkaWFSZWNvcmRl
cjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgcmVjb3Jk
QXVkaW8sIHJlY29yZFZpZGVvKTsKKyAgICBhdXRvIHJlY29yZGVyID0gUmVtb3RlTWVkaWFSZWNv
cmRlcjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgcmVj
b3JkQXVkaW8sIHJlY29yZFZpZGVvLCBvcHRpb25zKTsKICAgICBpZiAoIXJlY29yZGVyKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uRGF0YSB7IE5vdFN1cHBvcnRl
ZEVycm9yLCAiVW5hYmxlIHRvIGNyZWF0ZSBhIHJlY29yZGVyIHdpdGggdGhlIHByb3ZpZGVkIHN0
cmVhbSJfcyB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCmluZGV4IDhlNmY5MThhMDE2Nzkx
OGEwZDAyNWQzYjZjNTIxNTYzOGFjOWU1NjIuLjc1MzkwYTg1YTNmYTQwZTI3YTc4NDY3ODkxOGRj
ODU0Y2U0MTFjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKQEAgLTQxLDYgKzQxLDcgQEAg
Y2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEV4Y2VwdGlvbkRh
dGE7CitzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVSZWNvcmRlcihNZWRp
YVJlY29yZGVySWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYm
KT4mJik7CisgICAgdm9pZCBjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmllciwg
Ym9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgY29uc3QgV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVjb3JkZXIo
TWVkaWFSZWNvcmRlcklkZW50aWZpZXIpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIubWVzc2FnZXMuaW4KaW5kZXggYTJmMTg4ZDc4OTMwZmM5NzE1NjQ3YTBmNjQxMGQyMWEy
Njk1YzYzNy4uMjU3YmY5NjYzMjc4ODVmZmRjZmZiMGU3M2M2ODFhODc5MWFjNmRlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBA
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+
IFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZVJl
Y29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8s
IGJvb2wgaGFzVmlkZW8pIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVh
dGlvbkVycm9yKSBBc3luYworICAgIENyZWF0ZVJlY29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRl
cklkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIHN0cnVjdCBXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMgb3B0aW9ucykgLT4gKE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGNyZWF0aW9uRXJyb3IpIEFzeW5jCiAgICAgUmVsZWFzZVJl
Y29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQpCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmNwcAppbmRleCA0ZDQ3ODZiZTk1NTJlNjQyYTBmN2M2ODVmOTFlODc2MzY5MTk0
YjAwLi5jN2U5YTlmZDJkMjQyODE5NTIyMmVmYmQ3YzEyN2JiZDUwYmFlNzAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUuY3BwCkBAIC00MywxMCArNDMsMTEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLU1lZGlhUmVjb3JkZXJQcml2YXRlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKK01lZGlhUmVjb3JkZXJQ
cml2YXRlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwg
Y29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogICAgIDogbV9pZGVu
dGlmaWVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogICAgICwgbV9zdHJl
YW0obWFrZVJlZihzdHJlYW0pKQogICAgICwgbV9jb25uZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKQorICAgICwg
bV9vcHRpb25zKG9wdGlvbnMpCiB7CiB9CiAKQEAgLTU5LDcgKzYwLDcgQEAgdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZTo6c3RhcnRSZWNvcmRpbmcoRXJyb3JDYWxsYmFjayYmIGVycm9yQ2FsbGJh
Y2spCiAgICAgaWYgKHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2spCiAgICAgICAgIG1fcmluZ0J1
ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlPih0aGlzKSk7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OkNyZWF0ZVJlY29yZGVy
IHsgbV9pZGVudGlmaWVyLCAhIXNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2ssICEhc2VsZWN0ZWRU
cmFja3MudmlkZW9UcmFjayB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
YXVkaW9UcmFjayA9IG1ha2VSZWZQdHIoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjayksIHZpZGVv
VHJhY2sgPSBtYWtlUmVmUHRyKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spLCBlcnJvckNhbGxi
YWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKV0oYXV0byYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyOjpDcmVhdGVSZWNvcmRlciB7IG1faWRlbnRpZmllciwgISFzZWxl
Y3RlZFRyYWNrcy5hdWRpb1RyYWNrLCAhIXNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2ssIG1fb3B0
aW9ucyB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYXVkaW9UcmFjayA9
IG1ha2VSZWZQdHIoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjayksIHZpZGVvVHJhY2sgPSBtYWtl
UmVmUHRyKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92
ZShlcnJvckNhbGxiYWNrKV0oYXV0byYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soeyB9KTsKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDViNGE0OTJmYmI1ZGYwY2UxYTNm
YTMyNDg5ODQ0MjM1YTFiMzBlMWQuLmQ3NjU4NzU5YjRmYWE1MzY2YmE0NmJhZDM2YWRkODU1YjZi
NGY3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBNZWRp
YVJlY29yZGVyUHJpdmF0ZSBmaW5hbAogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgTWVkaWFSZWNvcmRlclByaXZhdGUoV2ViQ29yZTo6TWVkaWFTdHJlYW1Q
cml2YXRlJik7CisgICAgTWVkaWFSZWNvcmRlclByaXZhdGUoV2ViQ29yZTo6TWVkaWFTdHJlYW1Q
cml2YXRlJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAg
ICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlKCk7CiAKIHByaXZhdGU6CkBAIC03MSw2ICs3MSw3IEBA
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9y
aW5nQnVmZmVyOwogICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2Rlc2Ny
aXB0aW9uIHsgfTsKICAgICBpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CisgICAgV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zIG1fb3B0aW9uczsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJvdmlkZXIuY3BwCmluZGV4IDVmNTA3NWYxNjM3YjQ1OWRmNTVhN2QyNTM0ZDVi
N2JmM2I1OTQwMGUuLjQwNDcxYmQ3MWU1NTc5OGMyNjQwZjU4NWE4YTRiZTkwNWQ2NmNmZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRl
TWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCitzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92
aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJl
YW0sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIGlm
IChtX3VzZUdQVVByb2Nlc3MpCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlPihzdHJlYW0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29y
ZGVyUHJpdmF0ZT4oc3RyZWFtLCBvcHRpb25zKTsKICNlbmRpZgotICAgIHJldHVybiBXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKHN0cmVh
bSk7CisgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVk
aWFSZWNvcmRlclByaXZhdGUoc3RyZWFtLCBvcHRpb25zKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJv
dmlkZXIuaAppbmRleCBlOTZiOGZmMzY0ZGU1OTg4NjhmZDlkZjA1ZWE5MjViNDBkODNhYWM4Li40
NjM5M2FlNDgzZjY5ZTdkYzhjMzUzZTA4NTFhZTZlYWUyNGY0Njc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJv
dmlkZXIuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShX
ZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGUmKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IGNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRl
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlT3B0aW9ucyYpIGZpbmFsOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjhiOTkwYzQ1
ZjNkOTI1NDA3YzM4YTRlMzFlYjA5NTdiMDYyY2U0Mi4uMjBmODcxY2JjMjczZWRjNDMwMDRmNmIw
ZDQ3YzRkMWNiOTM4ZDc4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA4LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
TWVkaWFSZWNvcmRlciBiaXRyYXRlIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
Q2FybHNvbi4KKworICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci1hdWRpby1iaXRyYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLWF1ZGlvLWJpdHJhdGUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWJpdHJh
dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXItdmlkZW8tYml0cmF0ZS5odG1sOiBBZGRlZC4KKwogMjAyMC0wOC0wNSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU2VydmljZVdvcmtl
ci5wb3N0TWVzc2FnZSgpIGRvZXNuJ3Qgd29yayBmcm9tIGluc2lkZSBpZnJhbWUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRp
by1iaXRyYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YTM5NTQ3OThmNjZiZjNiNTdkYmY0ZjEwYWEwM2U0MzU1MDI2MzIzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLWF1ZGlv
LWJpdHJhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFZhcmlvdXMgYXVk
aW8gYml0cmF0ZXMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8tYml0cmF0ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlhMmE5ZDI0ZTZjMDliY2I4MDQ0YWJiMGZlNmFhYjcwM2VjZmZiYjMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXItYXVkaW8tYml0cmF0ZS5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+TWVkaWFSZWNvcmRlciBhdWRpbyBiaXRyYXRlPC90
aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGFzeW5jIGZ1bmN0aW9uIHJl
Y29yZChzdHJlYW0sIGJpdFJhdGUpCisgICAgeworICAgICAgICBjb25zdCByZWNvcmRlciA9IG5l
dyBNZWRpYVJlY29yZGVyKHN0cmVhbSwgeyBhdWRpb0JpdHNQZXJTZWNvbmQgOiBiaXRSYXRlIH0p
OworICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4geworICAgICAgICAgICAgcmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gKGUpID0+IHJlc29s
dmUoZS5kYXRhKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQocmVqZWN0LCA1MDAwKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJlY29yZGVyLnN0YXJ0KCk7CisgICAgICAgIHNldFRpbWVvdXQoKCkg
PT4gcmVjb3JkZXIuc3RvcCgpLCAyNTAwKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAg
fQorCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgICAgIGNvbnN0IHN0cmVh
bSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW8gOiB0
cnVlIH0pOworICAgICAgICBjb25zdCBiaXRSYXRlcyA9IFsxMjgwMDAsIDE5MjAwMCwgMjU2MDAw
XTsKKyAgICAgICAgbGV0IHByb21pc2VzID0gW107CisgICAgICAgIGJpdFJhdGVzLmZvckVhY2go
Yml0UmF0ZSA9PiB7CisgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHJlY29yZChzdHJlYW0sIGJp
dFJhdGUpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IGJsb2JzID0gWzAsIDAsIDBdOwor
ICAgICAgICBwcm9taXNlcy5mb3JFYWNoKGFzeW5jIChwcm9taXNlLCBpbmRleCkgPT4geworICAg
ICAgICAgICAgYmxvYnNbaW5kZXhdID0gYXdhaXQgcHJvbWlzZTsKKyAgICAgICAgfSk7CisgICAg
ICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVh
bHMoYmxvYnNbMF0uc2l6ZSwgMCk7CisgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYmxvYnNb
Ml0uc2l6ZSwgYmxvYnNbMF0uc2l6ZSk7CisgICAgfSwgIlZhcmlvdXMgYXVkaW8gYml0cmF0ZXMi
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWJpdHJhdGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LXZpZGVvLWJpdHJhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2NzBhNGI2NzMxZGQ0ZTVj
YWQ4YzBmODEzMDI1NmUyMjYwMTgzYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8tYml0cmF0ZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgVmFyaW91cyB2aWRlbyBiaXRyYXRlcyAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLXZpZGVvLWJpdHJhdGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUyMTgzYjA3
OWNjMWIyMDJmNGU5NzJhOTNkZjEzZDg2YjM1NzhjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRl
Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDx0aXRsZT5NZWRpYVJlY29yZGVyIHZpZGVvIGJpdHJhdGU8L3RpdGxlPgorICAgIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgYXN5bmMgZnVuY3Rpb24gcmVjb3JkKGJpdFJhdGUpCisg
ICAgeworICAgICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7IHZpZGVvIDogeyB3aWR0aCA6IDEwMjQgfSB9KTsKKyAgICAgICAgY29u
c3QgcmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0sIHsgdmlkZW9CaXRzUGVyU2Vj
b25kIDogYml0UmF0ZSB9KTsKKyAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGxldCBjb3VudCA9IDA7CisgICAgICAg
ICAgICBsZXQgYmxvYnMgPSBbXTsKKyAgICAgICAgICAgIHJlY29yZGVyLm9uZGF0YWF2YWlsYWJs
ZSA9IChlKSA9PiByZXNvbHZlKGUuZGF0YSk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHJlamVjdCgiZGF0YXZhaWxhYmxlIGV2ZW50IHRpbWVkIG91dCIpLCAxNTAwMCk7CisgICAgICAg
IH0pOworICAgICAgICByZWNvcmRlci5zdGFydCgpOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHJlY29yZGVyLnN0b3AoKSwgMTAwMCk7CisgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0K
KworICAgIHByb21pc2VfdGVzdChhc3luYyAodCkgPT4geworICAgICAgICBsZXQgYmxvYnMgPSBb
MCwgMF07CisgICAgICAgIGJsb2JzWzBdID0gYXdhaXQgcmVjb3JkKDUwMDAwKTsKKyAgICAgICAg
YmxvYnNbMV0gPSBhd2FpdCByZWNvcmQoNTAwMDAwMCk7CisKKyAgICAgICAgLy8gV2UgYXJlIHRh
a2luZyB0aGUgc2Vjb25kIGJsb2Igc2luY2UgaXQgbWlnaHQgYmUgbW9yZSBhY2N1cmF0ZSB0aGFu
IHRoZSBmaXJzdCBvbmUuCisgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYmxvYnNbMF0uc2l6
ZSwgMCwgImJsb2IwIik7CisgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYmxvYnNbMV0uc2l6
ZSwgYmxvYnNbMF0uc2l6ZSwgImJsb2IyIik7CisgICAgfSwgIlZhcmlvdXMgdmlkZW8gYml0cmF0
ZXMiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407102</attachid>
            <date>2020-08-24 07:35:18 -0700</date>
            <delta_ts>2020-08-25 08:48:36 -0700</delta_ts>
            <desc>Fixing nullptr crashes</desc>
            <filename>bug-214973-20200824163516.patch</filename>
            <type>text/plain</type>
            <size>54286</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTA0NjUwYjgyNmMxNGEy
Y2I0MjEzZTljMGRhMjRmMWM4MTUxZDRjYi4uMmU0ZDgxNDhmYzRkN2FlODkzNzc0ZGMwODEyZjA2
ZDQxZTNhMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA4LTI0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
TWVkaWFSZWNvcmRlciBiaXRyYXRlIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
Q2FybHNvbi4KKworICAgICAgICBQaXBlIG9wdGlvbnMgdG8gTWVkaWFSZWNvcmRlclByaXZhdGUg
Y29uc3RydWN0b3IuCisgICAgICAgIEZvciB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLCBwYXNz
IGl0IGRvd24gdG8gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGFuZCBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuCisgICAgICAgIEZvciBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Is
IHdlIGRvIG5vdCBoYW5kbGUgd2VsbCBzb21lIGJpdCByYXRlcywgc28gZm9yIG5vdywgd2UgbGlt
aXQgdG8gc3BlY2lmaWMgdmFsdWVzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8tYml0cmF0ZS5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8tYml0cmF0ZS5odG1sCisK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZWNvcmRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlcjo6TWVkaWFSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNldEJpdHNQ
ZXJTZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpvdXRwdXRCaXRSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRp
b24pOgorICAgICAgICBEbyBub3QgZXhpdCB3aGVuIG5vdCBhYmxlIHRvIHNldCBiaXRyYXRlIGFz
IHdlIHN0aWxsIHdhbnQgdG8gc2V0IG1fbWF4T3V0cHV0UGFja2V0U2l6ZS4KKyAgICAgICAgSW4g
Y2FzZSBvZiBlcnJvciBpbiBzZXR0aW5nIHVwIHRoZSBjb252ZXJ0ZXIsIGNsZWFuIGl0IHVwIHNv
IHRoYXQgd2UgZG8gbm90IHVzZSBhIHBhcnRpYWxseSBzZXQgdXAgY29udmVydGVyLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OnNldE9wdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNldEJp
dHNQZXJTZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q29tcHJlc3Npb25TZXNzaW9uUHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0Q29tcHJlc3Npb25TZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWNvcmRlck1vY2tTb3VyY2UpOgorCiAyMDIwLTA4
LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBHZW5lcmF0
ZWQgYmluZGluZ3MgZm9yIGRlcml2ZWQgZGljdGlvbmFyaWVzIGFyZSBub3QgcmVnZW5lcmF0ZWQg
d2hlbiB0aGUgYmFzZSBkaWN0aW9uYXJ5IGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggN2EzODM5OGZjNzYz
NWMxZGNmZDJjZTFlMmY5NTA3MmI3ZjFhMGU2MS4uNmQ3NDk4M2YzODRkMjQ0MTFkY2ZjYTM4ZGIz
ZmIwMTk0Njk5ZTgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wOC0yNCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IE1lZGlhUmVjb3JkZXIgYml0cmF0ZSBvcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgU2VyaWFsaXplIG9wdGlvbnMgd2hlbiBjcmVhdGluZyByZW1v
dGUgbWVkaWEgcmVjb3JkZXIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6Y3Jl
YXRlUmVjb3JkZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFSZWNv
cmRlclByaXZhdGU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFSZWNvcmRlclByaXZhdGU6OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5oOgorCiAy
MDIwLTA4LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBD
b2NvYSBXZWJTb2NrZXRUYXNrIHNob3VsZCBleHBvc2UgV2ViU29ja2V0IHNlcnZlciBleHRlbnNp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5jcHAKaW5kZXggZTZmMmZmZjU2YjkyYWE1N2ZhMjFhYjc2OTI5ZWExNTlhMzMy
N2U4MC4uYWEyYmMyODFiNThkYTVjYzlmYTllM2RiYjM1MzczZGZlM2FhNTVhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LmNwcApAQCAtNDgsOSArNDgsMTAgQEAgTWVkaWFSZWNvcmRlcjo6Q3JlYXRvckZ1bmN0aW9uIE1l
ZGlhUmVjb3JkZXI6Om1fY3VzdG9tQ3JlYXRvciA9IG51bGxwdHI7CiAKIEV4Y2VwdGlvbk9yPFJl
ZjxNZWRpYVJlY29yZGVyPj4gTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSwgT3B0aW9ucyYmIG9wdGlvbnMpCiB7Ci0gICAg
YXV0byBwcml2YXRlSW5zdGFuY2UgPSBNZWRpYVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShkb2N1bWVudCwgc3RyZWFtLT5wcml2YXRlU3RyZWFtKCkpOwotICAgIGlmICghcHJp
dmF0ZUluc3RhbmNlKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IsICJUaGUgTWVkaWFSZWNvcmRlciBpcyB1bnN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIl9z
IH07CisgICAgYXV0byByZXN1bHQgPSBNZWRpYVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShkb2N1bWVudCwgc3RyZWFtLT5wcml2YXRlU3RyZWFtKCksIG9wdGlvbnMpOworICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpOworCiAgICAgYXV0byByZWNvcmRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFS
ZWNvcmRlcihkb2N1bWVudCwgV1RGTW92ZShzdHJlYW0pLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiAg
ICAgcmVjb3JkZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiByZWNvcmRlcjsKQEAg
LTYxLDI3ICs2MiwzMiBAQCB2b2lkIE1lZGlhUmVjb3JkZXI6OnNldEN1c3RvbVByaXZhdGVSZWNv
cmRlckNyZWF0b3IoQ3JlYXRvckZ1bmN0aW9uIGNyZWF0b3IpCiAgICAgbV9jdXN0b21DcmVhdG9y
ID0gY3JlYXRvcjsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBN
ZWRpYVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQorRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVf
cHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPj4gTWVkaWFSZWNvcmRlcjo6Y3JlYXRlTWVkaWFSZWNv
cmRlclByaXZhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVh
bSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKIHsKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAg
VU5VU0VEX1BBUkFNKHN0cmVhbSk7CisjZW5kaWYKKwogICAgIGlmIChtX2N1c3RvbUNyZWF0b3Ip
Ci0gICAgICAgIHJldHVybiBtX2N1c3RvbUNyZWF0b3Ioc3RyZWFtKTsKKyAgICAgICAgcmV0dXJu
IG1fY3VzdG9tQ3JlYXRvcihzdHJlYW0sIG9wdGlvbnMpOwogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKIAotICAgIHJldHVybiBwYWdlLT5tZWRpYVJlY29yZGVyUHJvdmlkZXIoKS5j
cmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShzdHJlYW0pOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGF1dG8gcmVzdWx0ID0gcGFnZS0+bWVkaWFSZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVk
aWFSZWNvcmRlclByaXZhdGUoc3RyZWFtLCBvcHRpb25zKTsKICNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGRvY3VtZW50KTsKLSAgICBVTlVTRURfUEFSQU0oc3RyZWFtKTsKLSAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IHJlc3VsdDsK
ICNlbmRpZgorICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IsICJUaGUgTWVkaWFSZWNvcmRlciBpcyB1bnN1cHBvcnRlZCBvbiB0aGlz
IHBsYXRmb3JtIl9zIH07CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotTWVkaWFSZWNvcmRlcjo6
TWVkaWFSZWNvcmRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYVN0cmVhbT4mJiBzdHJl
YW0sIE9wdGlvbnMmJiBvcHRpb24pCitNZWRpYVJlY29yZGVyOjpNZWRpYVJlY29yZGVyKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSwgT3B0aW9ucyYmIG9wdGlv
bnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCi0gICAgLCBtX29wdGlvbnMoV1RG
TW92ZShvcHRpb24pKQorICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBt
X3N0cmVhbShXVEZNb3ZlKHN0cmVhbSkpCiAgICAgLCBtX3RpbWVTbGljZVRpbWVyKFt0aGlzXSB7
IHJlcXVlc3REYXRhKCk7IH0pCiB7CkBAIC0xMzUsMTEgKzE0MSwxMyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhPcHRpb25hbDx1bnNpZ25lZD4gdGlt
ZVNsaWNlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJU
aGUgTWVkaWFSZWNvcmRlcidzIHN0YXRlIG11c3QgYmUgaW5hY3RpdmUgaW4gb3JkZXIgdG8gc3Rh
cnQgcmVjb3JkaW5nIl9zIH07CiAKICAgICBBU1NFUlQoIW1fcHJpdmF0ZSk7Ci0gICAgbV9wcml2
YXRlID0gY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoKmRvY3VtZW50KCksIG1fc3RyZWFtLT5w
cml2YXRlU3RyZWFtKCkpOworICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlTWVkaWFSZWNvcmRlclBy
aXZhdGUoKmRvY3VtZW50KCksIG1fc3RyZWFtLT5wcml2YXRlU3RyZWFtKCksIG1fb3B0aW9ucyk7
CiAKLSAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yLCAiVGhlIE1lZGlhUmVjb3JkZXIgaXMgdW5zdXBwb3J0ZWQgb24gdGhpcyBw
bGF0Zm9ybSJfcyB9OworICAgIEFTU0VSVCghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKTsKIAorICAgIG1fcHJpdmF0ZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKICAgICBtX3ByaXZhdGUtPnN0YXJ0UmVjb3JkaW5nKFt0aGlzLCBwZW5kaW5nQWN0aXZpdHkg
PSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oYXV0byYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmlu
ZGV4IDQyOTllODhhM2FiZjNmOTRhNDNjZDczY2JlMzFkOTdhZjNkMzBmYTAuLjUwMjUwNmY2MTUw
NWUwMGFhMTZjZDg1MDkyYjVlNWIxNzlmNTY3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAtMjgsNiArMjgsOCBA
QAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQu
aCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9ucy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtNDksMTggKzUxLDEy
IEBAIGNsYXNzIE1lZGlhUmVjb3JkZXIgZmluYWwKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFJl
Y29yZGluZ1N0YXRlIHsgSW5hY3RpdmUsIFJlY29yZGluZywgUGF1c2VkIH07CiAgICAgCi0gICAg
c3RydWN0IE9wdGlvbnMgewotICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIHVuc2ln
bmVkIGF1ZGlvQml0c1BlclNlY29uZDsKLSAgICAgICAgdW5zaWduZWQgdmlkZW9CaXRzUGVyU2Vj
b25kOwotICAgICAgICB1bnNpZ25lZCBiaXRzUGVyU2Vjb25kOwotICAgIH07Ci0gICAgCiAgICAg
fk1lZGlhUmVjb3JkZXIoKTsKICAgICAKKyAgICB1c2luZyBPcHRpb25zID0gTWVkaWFSZWNvcmRl
clByaXZhdGVPcHRpb25zOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8TWVkaWFSZWNvcmRl
cj4+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxNZWRpYVN0cmVhbT4mJiwgT3B0aW9ucyYmID0geyB9
KTsKICAgICAKLSAgICB1c2luZyBDcmVhdG9yRnVuY3Rpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFSZWNvcmRlclByaXZhdGU+KCopKE1lZGlhU3RyZWFtUHJpdmF0ZSYpOworICAgIHVzaW5nIENy
ZWF0b3JGdW5jdGlvbiA9IEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZT4+ICgqKShNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBPcHRpb25zJik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRDdXN0b21Qcml2YXRlUmVjb3JkZXJDcmVh
dG9yKENyZWF0b3JGdW5jdGlvbik7CiAgICAgCkBAIC03Niw5ICs3Miw5IEBAIHB1YmxpYzoKICAg
ICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0uZ2V0KCk7IH0KIAogcHJp
dmF0ZToKLSAgICBNZWRpYVJlY29yZGVyKERvY3VtZW50JiwgUmVmPE1lZGlhU3RyZWFtPiYmLCBP
cHRpb25zJiYgPSB7IH0pOworICAgIE1lZGlhUmVjb3JkZXIoRG9jdW1lbnQmLCBSZWY8TWVkaWFT
dHJlYW0+JiYsIE9wdGlvbnMmJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShEb2N1bWVudCYsIE1l
ZGlhU3RyZWFtUHJpdmF0ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFSZWNvcmRlclByaXZhdGU+PiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShEb2N1
bWVudCYsIE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE9wdGlvbnMmKTsKICAgICAKICAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIApAQCAtMTExLDcgKzEwNyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikg
ZmluYWwgeyB9OwogCiAgICAgc3RhdGljIENyZWF0b3JGdW5jdGlvbiBtX2N1c3RvbUNyZWF0b3I7
Ci0gICAgCisKICAgICBPcHRpb25zIG1fb3B0aW9uczsKICAgICBSZWY8TWVkaWFTdHJlYW0+IG1f
c3RyZWFtOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gbV9wcml2
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCA4ODRhNDA3OTBhNDZhODMyNjI2
ZTBmYTBlZWJiOWM5ZDlmNDRjYWIyLi5jZmYzNmJiZGFmNjlkOGI1MjU1MDIyMWFlNDZjY2UxYTZj
ZDI1MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzIsMTIgKzMyLDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRl
KE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQorc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2
YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0
ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCi0g
ICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKHN0cmVhbSk7Cisg
ICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKHN0cmVhbSwgb3B0
aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIFVOVVNFRF9QQVJB
TShvcHRpb25zKTsKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cm92aWRlci5oCmluZGV4IDExYmFhZGNlYTg2OWU3YTI5MTk2NjJhYjJkOGNlZjU0NzBjMmVkYmQu
LjNhM2JkMTlhNzMwNzAzNDZlOTg5ZmViZjczODAzODcwNGViZTkzM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBNZWRpYVJlY29yZGVyUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKK3N0cnVj
dCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhUmVjb3JkZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0z
Nyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVJlY29yZGVyUHJvdmlkZXIo
KSA9IGRlZmF1bHQ7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NP
QSkKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gY3Jl
YXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJik7CisgICAgdmlydHVh
bCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IGNyZWF0ZU1lZGlhUmVjb3Jk
ZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9ucyYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3MoYm9vbCB2YWx1
ZSkgeyBtX3VzZUdQVVByb2Nlc3MgPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyMzcyZjFkYTg2MjY2MzNmMDBm
NWQwNjQ1NmMxMzA1NDRmZmU4YTIuLmJmZWI3OWRiZWVmNGUyMmI2ZTM4Y2Q5Nzg5NDI3NDNkYmM2
ZmEwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEwNTIsNiArMTA1Miw3IEBACiAJCTQxM0UwMDc5MURCMEU0RjIwMDIzNDFE
MiAvKiBNZW1vcnlSZWxlYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTNFMDA3ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNDQ2MEEy
MjQxMjk5NDUwMDgxNEJFNyAvKiBNZWRpYVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ0NjBBMDI0MTI5OTQxMDA4MTRC
RTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNDU5OEMyMjNDOEQxNzcwMDJCOUNDOCAvKiBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDU5OEMxMjNDOEFENzkwMDJCOUNDOCAvKiBMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tbSAqLzsgfTsKKwkJNDE0QjdGQUQyNEQ4MUNDMTAwMzNENDQy
IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0QjdGQUIyNEQ4MUM4RjAwMzNENDQyIC8qIE1lZGlh
UmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVk
Q2xvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NEI4MjAzMUQ2REYwRDkwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCAqLzsgfTsKIAkJNDE0
REVERTcxRjlGRTkxRTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNERFREU1MUY5RkU5MTUw
MDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1MDcxNTgxNjg1MDY3MzAwQzNDN0IzIC8q
IFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTUwNzE1NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCAqLzsg
fTsKQEAgLTc0ODUsNiArNzQ4Niw3IEBACiAJCTQxNEFENDAwMjE0OThEMzEwMDUyMTY3NiAvKiBS
VENSdHBEZWNvZGluZ1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwRGVjb2RpbmdQ
YXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNEFENDAxMjE0OThE
MzEwMDUyMTY3NiAvKiBSVENSdHBEZWNvZGluZ1BhcmFtZXRlcnMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cERl
Y29kaW5nUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNEFE
NDAyMjE0OThEMzIwMDUyMTY3NiAvKiBSVENSdHBDb2RpbmdQYXJhbWV0ZXJzLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
VENSdHBDb2RpbmdQYXJhbWV0ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE0QjdGQUIyNEQ4MUM4RjAwMzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0QjgyMDIxRDZERjBEOTAw
NzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHJ1Y3R1cmVkQ2xvbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZWRDbG9uZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTRERURFNTFGOUZFOTE1MDA0N0M0MEQgLyogRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTU5Nyw2
ICsxOTU5OSw3IEBACiAJCQkJNEQ3M0Y5NDQyMThCQzVGQTAwM0EzRUQ2IC8qIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5oICovLAogCQkJCTREOUY2QjY1MjE4MjUzMkIwMDkyQTlDNSAvKiBN
ZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwICovLAogCQkJCTREOUY2QjY0MjE4MjUzMkIwMDky
QTlDNSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaCAqLywKKwkJCQk0MTRCN0ZBQjI0RDgx
QzhGMDAzM0Q0NDIgLyogTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IG1lZGlhcmVjb3JkZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MzI2NDUsNiArMzI2NDgsNyBAQAogCQkJCTREQjcxMzBEMjE2RUNCNEQwMDk2QTRERCAvKiBNZWRp
YVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEQzQjUwMTYyMTdFNThC
NzAwNjY1REIxIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
RDczRjk0NjIxOEJDNUZBMDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MTRCN0ZBRDI0RDgxQ0MxMDAzM0Q0NDIgLyogTWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RDczRjk0RTIxOEM0QTg3
MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE3NkU4OTYyM0MzNTM3QjAwM0U4M0ZFIC8qIE1lZGlhUmVjb3JkZXJQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwODQzRDAxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlh
UmVtb3RlQ29udHJvbHMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAppbmRleCAwYzE0YWU2OTBjZDNmNDZhNjNiYWU2MTYwODU0ZjFhMDNiODExYjQx
Li5hM2JjODE3YjE4MzNlMGM4NDc3NTUwMzI3ZjE1MTMzOGFlZjIxZWNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTg4LDcgKzU4OCw3IEBAIHB1YmxpYzoKICAg
ICBFbXB0eU1lZGlhUmVjb3JkZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIHByaXZhdGU6CiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRp
YVN0cmVhbVByaXZhdGUmKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShN
ZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmKSBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGUuaAppbmRleCAwNGJhNmIwODRhZDIzZjQzMzJlZDRmZWU1NDVmZWY4MTQ1ZDRhNGE2Li41Njc0
OTMyMThmYjI0OWQ3ZTRjMWE5MzY1MjZiNTczYWM3ZjIyOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaCIKICNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlLmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDg4NTZiMTU3ZGY0ODQ4Y2UzZjhkMTNl
NzcyN2QxMzIxMDgwNTczYTEuLjg0NGE5NjlmNTNkNGFlZjc5Y2QyNmJiMWJlYzQyNzk0ZmJkNGRl
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8TWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0
ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKK3N0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKE1l
ZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBpbXBsZW1lbnQg
c3VwcG9ydCBmb3IgbXVsdGlwbGUgYXVkaW8vdmlkZW8gdHJhY2tzCiAgICAgLy8gQ3VycmVudGx5
IHdlIG9ubHkgY2hvb3NlIHRoZSBmaXJzdCB0cmFjayBhcyB0aGUgcmVjb3JkZWQgdHJhY2suCkBA
IC00NSwxMSArNDUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKIAogICAgIGF1dG8gc2Vs
ZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0VHJhY2tzKHN0cmVhbSk7
CiAKLSAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUo
ISFzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLCAhIXNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sp
OworICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSgh
IXNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2ssICEhc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjaywg
b3B0aW9ucyk7CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byByZWNvcmRlciA9IG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
Pih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byByZWNvcmRlciA9IHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KG5ldyBNZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGwod3JpdGVyLnJlbGVhc2VOb25OdWxsKCkpKTsKICAgICBpZiAoc2VsZWN0ZWRU
cmFja3MuYXVkaW9UcmFjaykKICAgICAgICAgcmVjb3JkZXItPnNldEF1ZGlvU291cmNlKCZzZWxl
Y3RlZFRyYWNrcy5hdWRpb1RyYWNrLT5zb3VyY2UoKSk7CiAgICAgaWYgKHNlbGVjdGVkVHJhY2tz
LnZpZGVvVHJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAppbmRleCAx
ZDg0NTAwOWQzMWM3YTk5ODZkZjdmZTMwZDVhMjZmMmI0YWJjOGZiLi41NDU0MTBiMmFlZDBjYzM2
MDcxOGUzZTMxNGJjZjQ0OGI0OWE0ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVB
VkZJbXBsLmgKQEAgLTM3LDEyICszNywxMiBAQCBjbGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwgZmluYWwKICAgICA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJpdmF0ZSB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IGNyZWF0ZShNZWRpYVN0cmVhbVByaXZhdGUm
KTsKLQotICAgIGV4cGxpY2l0IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI+JiYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBjcmVhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiwgY29u
c3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAgICAgfk1lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbCgpOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYpOworCiAgICAgLy8g
TWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJikgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MWViZDY4YzJkYzRiMjZjMzhmOTY2MTQwMGM3ZTZkZGI5ZTkwNDY1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZU9wdGlvbnMuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9ucyB7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBhdWRp
b0JpdHNQZXJTZWNvbmQ7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHZpZGVvQml0c1BlclNlY29u
ZDsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gYml0c1BlclNlY29uZDsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFSZWNvcmRlclByaXZhdGVPcHRp
b25zPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK2lu
bGluZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtaW1lVHlwZTsKKyAgICBlbmNvZGVyIDw8
IGF1ZGlvQml0c1BlclNlY29uZDsKKyAgICBlbmNvZGVyIDw8IHZpZGVvQml0c1BlclNlY29uZDsK
KyAgICBlbmNvZGVyIDw8IGJpdHNQZXJTZWNvbmQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitpbmxpbmUgT3B0aW9uYWw8TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU9wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0
cmluZyBtaW1lVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVuc2lnbmVk
Pj4gYXVkaW9CaXRzUGVyU2Vjb25kOworICAgIGRlY29kZXIgPj4gYXVkaW9CaXRzUGVyU2Vjb25k
OworICAgIGlmICghYXVkaW9CaXRzUGVyU2Vjb25kKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiB2aWRlb0JpdHNQZXJTZWNv
bmQ7CisgICAgZGVjb2RlciA+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CisgICAgaWYgKCF2aWRlb0Jp
dHNQZXJTZWNvbmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxPcHRpb25hbDx1bnNpZ25lZD4+IGJpdHNQZXJTZWNvbmQ7CisgICAgZGVjb2RlciA+PiBiaXRz
UGVyU2Vjb25kOworICAgIGlmICghYml0c1BlclNlY29uZCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMgeyBXVEZN
b3ZlKG1pbWVUeXBlKSwgKmF1ZGlvQml0c1BlclNlY29uZCwgKnZpZGVvQml0c1BlclNlY29uZCwg
KmJpdHNQZXJTZWNvbmQgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5oCmluZGV4IDY1Mjg2NmRkZGI5ZjlmMDQ4YWEwZjY3Yzg2OTEzMjE5Mjlh
YjExMjQuLjI4NTgxNjBhMDYzYTU3MzExYTI0ZGU0N2E3Nzk3NzYyOTFmNTlkMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMzksNiArMzks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I+IGNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBj
YWxsYmFja09iamVjdCk7CiAgICAgfkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOwogCisg
ICAgdm9pZCBzZXRCaXRzUGVyU2Vjb25kKHVuc2lnbmVkKTsKICAgICB2b2lkIGZpbmlzaCgpOwog
ICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKQEAgLTQ3LDYgKzQ4LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKICAgICBi
b29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tPYmplY3QpOworICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlKGNvbnN0IEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiYpIGNvbnN0OwogCiAgICAgc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVy
dGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlv
QnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCopOwogCkBA
IC04NSw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc2FtcGxlQmxvY2tCdWZmZXJT
aXplIHsgMCB9OwogICAgIHNpemVfdCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
IHsgMCB9OwogICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5cGUgeyBrQXVkaW9Gb3Jt
YXRNUEVHNEFBQyB9OworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291dHB1dEJpdFJhdGU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
CmluZGV4IDZkMDRkOGMzYjc4MWI2ZjM4N2I3N2Q4ZjllMTVmMmNkNDI5YTU5ODQuLjJjZWU3OWIw
ZTljMjg5NDY1ZWRjM2RhMWI3ODUxZDE4ZTk0ZmI5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVk
ZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94
L0F1ZGlvRm9ybWF0Lmg+CiAjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW5j
bHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiAjaW1wb3J0IDxwYWwv
Y2YvQXVkaW9Ub29sYm94U29mdExpbmsuaD4KIApAQCAtOTUsNiArOTcsMzQgQEAgdm9pZCBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCiAgICAgfSk7CiB9CiAKK3ZvaWQgQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vjb25kKHVuc2lnbmVkIGJpdFJh
dGUpCit7CisgICAgLy8gRklYTUU6IHdlIGhhdmUgc29tZSBpc3N1ZXMgd2hlbiBzZXR0aW5nIHVw
IHNvbWUgYml0IHJhdGVzLCBvbmx5IGFsbG93IHNvbWUgdGhhdCB3b3JrIGZvciB0aGUgbW9tZW50
LgorICAgIGlmIChiaXRSYXRlIDwgMTI4MDAwKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lORk8o
V2ViUlRDLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpvdXRwdXRCaXRSYXRlIGNsYW1w
ZWQgdG8gMTI4MDAwLiIpOworICAgICAgICBiaXRSYXRlID0gMTI4MDAwOworICAgIH0gZWxzZSBp
ZiAoYml0UmF0ZSA+IDI1NjAwMCkgeworICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFdlYlJUQywg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6b3V0cHV0Qml0UmF0ZSBjbGFtcGVkIHRvIDI1
NjAwMC4iKTsKKyAgICAgICAgYml0UmF0ZSA9IDI1NjAwMDsKKyAgICB9IGVsc2UgaWYgKGJpdFJh
dGUgIT0gMTI4MDAwICYmIGJpdFJhdGUgIT0gMTkyMDAwICYmIGJpdFJhdGUgIT0gMjU2MDAwKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oV2ViUlRDLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpvdXRwdXRCaXRSYXRlIGRpZCBub3Qgc2V0IG91dHB1dCBiaXQgcmF0ZSBhcyB2YWx1
ZSBpcyBub3Qgc3VwcG9ydGVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fb3V0
cHV0Qml0UmF0ZSA9IGJpdFJhdGU7Cit9CisKK1VJbnQzMiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6Om91dHB1dEJpdFJhdGUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBk
ZXN0aW5hdGlvbkZvcm1hdCkgY29uc3QKK3sKKyAgICBpZiAobV9vdXRwdXRCaXRSYXRlKQorICAg
ICAgICByZXR1cm4gKm1fb3V0cHV0Qml0UmF0ZTsKKworICAgIGlmIChkZXN0aW5hdGlvbkZvcm1h
dC5tU2FtcGxlUmF0ZSA+PSA0NDEwMCkKKyAgICAgICAgcmV0dXJuIDE5MjAwMDsKKyAgICBpZiAo
ZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPCAyMjAwMCkKKyAgICAgICAgcmV0dXJuIDMy
MDAwOworICAgIHJldHVybiA2NDAwMDsKK30KKwogYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9y
bWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIEF1ZGlvRm9ybWF0SUQgb3V0cHV0
Rm9ybWF0SUQpCiB7CiAgICAgY29uc3QgYXV0byAqYXVkaW9Gb3JtYXRMaXN0SXRlbSA9IENNQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQoZm9ybWF0RGVzY3Jp
cHRpb24pOwpAQCAtMTE4LDYgKzE0OCwxMSBAQCBib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oQwogICAg
IH0KICAgICBtX2NvbnZlcnRlciA9IGNvbnZlcnRlcjsKIAorICAgIGF1dG8gY2xlYW51cEluQ2Fz
ZU9mRXJyb3IgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIEF1ZGlvQ29udmVydGVyRGlz
cG9zZShtX2NvbnZlcnRlcik7CisgICAgICAgIG1fY29udmVydGVyID0gbnVsbHB0cjsKKyAgICB9
KTsKKwogICAgIHNpemVfdCBjb29raWVTaXplID0gMDsKICAgICBjb25zdCB2b2lkICpjb29raWUg
PSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZShmb3JtYXREZXNjcmlwdGlv
biwgJmNvb2tpZVNpemUpOwogICAgIGlmIChjb29raWVTaXplKSB7CkBAIC0xNDUsMTggKzE4MCwx
MCBAQCBib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVy
Rm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oQwogICAgIH0KIAogICAgIGlmIChtX2Rlc3RpbmF0
aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRNUEVHNEFBQykgewotICAgICAgICAv
LyBGSVhNRTogU2V0IG91dHB1dEJpdFJhdGUgYWNjb3JkaW5nIE1lZGlhUmVjb3JkZXJPcHRpb25z
LmF1ZGlvQml0c1BlclNlY29uZC4KLSAgICAgICAgVUludDMyIG91dHB1dEJpdFJhdGUgPSA2NDAw
MDsKLSAgICAgICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPj0gNDQxMDAp
Ci0gICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMTkyMDAwOwotICAgICAgICBlbHNlIGlmICht
X2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlIDwgMjIwMDApCi0gICAgICAgICAgICBvdXRw
dXRCaXRSYXRlID0gMzIwMDA7Ci0KKyAgICAgICAgYXV0byBvdXRwdXRCaXRSYXRlID0gdGhpcy0+
b3V0cHV0Qml0UmF0ZShtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKICAgICAgICAgc2l6ZSA9IHNpemVv
ZihvdXRwdXRCaXRSYXRlKTsKLSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRl
clNldFByb3BlcnR5KG1fY29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBz
aXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Nv
bnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRS
YXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRp
b0NvbnZlcnRlckVuY29kZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIW1fZGVzdGlu
YXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7CkBAIC0xNjksNiArMTk2LDggQEAgYm9vbCBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZv
cm1hdERlc2NyaXB0aW9uKEMKICAgICAgICAgfQogICAgIH0KIAorICAgIGNsZWFudXBJbkNhc2VP
ZkVycm9yLnJlbGVhc2UoKTsKKwogICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXJTaXplID0gY29t
cHV0ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChtX2Rlc3RpbmF0aW9uRm9ybWF0LCBtX21heE91
dHB1dFBhY2tldFNpemUsIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORFMpOwogICAgIGlmIChtX2Rl
c3RpbmF0aW9uQnVmZmVyLnNpemUoKSA8IGRlc3RpbmF0aW9uQnVmZmVyU2l6ZSkKICAgICAgICAg
bV9kZXN0aW5hdGlvbkJ1ZmZlci5yZXNpemUoZGVzdGluYXRpb25CdWZmZXJTaXplKTsKQEAgLTQy
OCw4ICs0NTcsMTAgQEAgdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NT
YW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoQ01UaW1lIGwKICAgICAgICAgbV9jdXJyZW50
T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVz
ZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKIAogICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0
aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOwotICAgICAg
ICBpZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1h
dERlc2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAgIGlmICghaW5pdEF1ZGlv
Q29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24sIG1f
b3V0cHV0Q29kZWNUeXBlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3Vs
ZCBlcnJvciB0aGUgbWVkaWEgcmVjb3JkZXIgaWYgd2UgYXJlIG5vdCBhYmxlIHRvIGdldCBhIGNv
cnJlY3QgY29udmVydGVyLgogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQog
CiAgICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01USU1FX0NP
TVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0aW9uKG1f
aW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDI0NGM1NzgwNDhjOTU5NWRiZGRlMGRl
MDRlN2IzYzkxZjE3NDQ3ZmMuLjRmMjJiODE1MTU4NTFjZGEyNWViOGI5OWViNDc3MzYwOGU2OTZl
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oCkBAIC01OSwxMCArNTksMTEgQEAgY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsK
IGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7
CiBjbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CitzdHJ1Y3QgTWVkaWFSZWNvcmRl
clByaXZhdGVPcHRpb25zOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFs
aXphdGlvbjo6RWFnZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbyk7Cisg
ICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGJvb2wg
aGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9u
cyYpOwogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpOwogCiAgICAgdm9pZCBhcHBl
bmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CkBAIC03OCw2ICs3OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgYm9vbCBpbml0aWFsaXplKCk7Cisg
ICAgdm9pZCBzZXRPcHRpb25zKGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYpOwog
CiAgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9p
ZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOwogICAgIHN0YXRpYyB2b2lkIGNvbXByZXNz
ZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRv
a2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQppbmRleCA1NDJlMzZlYTViNGQ0NGJjYzcwMWE4ZTI2ZjE3YWZkMzE0MjZkMGRhLi43
OWZlZWUxODI4OTE1MjhlY2E0YTUxNDg5NzM2Njc2NmFhODcxOTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCiAj
aW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCkBAIC0xMTQsMTEgKzExNSwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKLVJlZlB0cjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShi
b29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKQorUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8s
IGJvb2wgaGFzVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoaGFzQXVkaW8sIGhhc1ZpZGVvKSk7CiAgICAgaWYgKCF3cml0ZXItPmluaXRpYWxp
emUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgd3JpdGVyLT5zZXRPcHRpb25zKG9w
dGlvbnMpOwogICAgIHJldHVybiB3cml0ZXI7CiB9CiAKQEAgLTE3Niw2ICsxNzgsMTQgQEAgYm9v
bCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldE9wdGlvbnMoY29u
c3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmIChvcHRp
b25zLmF1ZGlvQml0c1BlclNlY29uZCAmJiBtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgbV9h
dWRpb0NvbXByZXNzb3ItPnNldEJpdHNQZXJTZWNvbmQoKm9wdGlvbnMuYXVkaW9CaXRzUGVyU2Vj
b25kKTsKKyAgICBpZiAob3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQgJiYgbV92aWRlb0NvbXBy
ZXNzb3IpCisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yLT5zZXRCaXRzUGVyU2Vjb25kKCpvcHRp
b25zLnZpZGVvQml0c1BlclNlY29uZCk7Cit9CisKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCkKIHsKICAgICBB
U1NFUlQobV9oYXNWaWRlbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaAppbmRleCAwZWI2N2FlZjQ3Yjg1MTYzN2Q4ZmYwOTk1ZDliMzRkNDU3ZDVjZWY0
Li45ZDE2MzUyOTRjOWRhYjlhMjk3YzBkNjk5MzQ0MjlmNjlmMDI4MTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTQwLDYgKzQwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yPiBjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOwogICAgIH5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoKTsKIAorICAgIHZvaWQgc2V0Qml0c1BlclNlY29uZCh1bnNpZ25lZCk7CiAgICAgdm9p
ZCBmaW5pc2goKTsKICAgICB2b2lkIGFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7
CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgZ2V0T3V0cHV0U2FtcGxlQnVmZmVyKCk7CkBAIC02NCw2
ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9OwogICAg
IGZsb2F0IG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uIHsgMi4wIH07CiAgICAgdW5zaWdu
ZWQgbV9leHBlY3RlZEZyYW1lUmF0ZSB7IDMwIH07CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1f
b3V0cHV0Qml0UmF0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IubW0KaW5kZXggODlhMmE3ODc2NTJlMTcyMDcxZGIwMmRmYTRhNmIyMmUy
NjZjM2VjOS4uM2FhYmE2OThkZjdmYmU0NTdiMzJiYjQyMjNkNDFlYTJlZjExNDYwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTc2LDYg
Kzc2LDExIEBAIGJvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vjb25kKHVuc2ln
bmVkIGJpdFJhdGUpCit7CisgICAgbV9vdXRwdXRCaXRSYXRlID0gYml0UmF0ZTsKK30KKwogdm9p
ZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCiB7CiAgICAgZGlzcGF0Y2hf
c3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CkBAIC0xMDEsNiArMTA2LDE1IEBAIHZvaWQg
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9p
ZCAqcmVmQ29uLCB2b2lkKiwKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT1NTdGF0dXMgc2V0
Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgdnRTZXNz
aW9uLCBDRlN0cmluZ1JlZiBrZXksIHVpbnQzMl90IHZhbHVlKQoreworICAgIGludDY0X3QgdmFs
dWU2NCA9IHZhbHVlOworICAgIENGTnVtYmVyUmVmIGNmVmFsdWUgPSBDRk51bWJlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmdmFsdWU2NCk7CisgICAg
T1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHkodnRTZXNzaW9uLCBrZXksIGNm
VmFsdWUpOworICAgIENGUmVsZWFzZShjZlZhbHVlKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQor
CiBib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lv
bihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiB7CiAgICAg
Q01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdl
dERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTIwLDEyICsxMzQsMTYgQEAgYm9v
bCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01W
aWRlb0Zvcm1hdERlc2NyaXB0aW8KIAogICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHko
bV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUsIGtD
RkJvb2xlYW5UcnVlKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJl
YW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZU
Q29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
LSAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRD
b21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgKF9fYnJp
ZGdlIENGVHlwZVJlZilAKG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKSk7CisgICAgZXJy
b3IgPSBzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZU
Q29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24sIG1fbWF4
S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0
UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVy
YXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQ
cm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBl
Y3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fZXhwZWN0ZWRGcmFtZVJhdGUp
KTsKKyAgICBlcnJvciA9IHNldENvbXByZXNzaW9uU2Vzc2lvblByb3BlcnR5KG1fdnRTZXNzaW9u
LmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBtX2V4
cGVjdGVkRnJhbWVSYXRlKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkg
a1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKIAotICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8gY29tcHJlc3Npb24gcmF0ZS4K
KyAgICBpZiAobV9vdXRwdXRCaXRSYXRlKSB7CisgICAgICAgIGVycm9yID0gc2V0Q29tcHJlc3Np
b25TZXNzaW9uUHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVy
dHlLZXlfQXZlcmFnZUJpdFJhdGUsICptX291dHB1dEJpdFJhdGUpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9BdmVy
YWdlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICB9CisKICAgICBlcnJvciA9
IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzKG1fdnRTZXNzaW9uLmdl
dCgpKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNv
ZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCA5MGM5ZDk4YWNmYTFhMjFhN2Y0YjQ0ZGQxMjhkOThiMDEyM2Q0OGMy
Li5mMmEzNjQ2MTE1NGMwYzgzN2RiZDRmZGQ2NmFiMDNkMGQxNDE1OWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNjkxLDE3ICsxNjkxLDE2IEBAIHZvaWQgSW50ZXJu
YWxzOjpzZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24oYm9vbCBlbmFibGVk
KQogICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJl
Q29ubmVjdGlvbihlbmFibGVkKTsKIH0KIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZT4gY3JlYXRlUmVjb3JkZXJNb2NrU291cmNlKE1lZGlhU3RyZWFtUHJpdmF0
ZSYgc3RyZWFtKQorc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZT4+IGNyZWF0ZVJlY29yZGVyTW9ja1NvdXJjZShNZWRpYVN0cmVhbVByaXZhdGUm
IHN0cmVhbSwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJikKIHsKLSAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jaz4obmV3IE1lZGlhUmVj
b3JkZXJQcml2YXRlTW9jayhzdHJlYW0pKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlPihuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrKHN0cmVhbSkp
OwogfQogCiB2b2lkIEludGVybmFsczo6c2V0Q3VzdG9tUHJpdmF0ZVJlY29yZGVyQ3JlYXRvcigp
CiB7CiAgICAgV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6c2V0Q3VzdG9tUHJpdmF0ZVJlY29yZGVy
Q3JlYXRvcihjcmVhdGVSZWNvcmRlck1vY2tTb3VyY2UpOwogfQotCi0jZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiBFeGNlcHRpb25PcjxSZWY8RE9NUmVjdD4+IEludGVy
bmFsczo6YWJzb2x1dGVDYXJldEJvdW5kcygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA0YzUwNjkz
M2ZlMDFkODkyMWFkMmNkMTcwMTliMzMyYTU4OTk3NzY2Li5jNDZlZDNmYTQ2NDFkYzcwNmY0M2Zl
MzIwM2M3YzRiOGFmY2E3ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTM4LDkgKzM4LDkgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBSZW1vdGVNZWRpYVJlY29yZGVyOjpjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgTWVkaWFS
ZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNv
cmRWaWRlbykKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBSZW1vdGVNZWRp
YVJlY29yZGVyOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBy
ZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVP
cHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmNyZWF0ZShyZWNvcmRBdWRpbywgcmVjb3JkVmlkZW8pOworICAgIGF1dG8gd3Jp
dGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShyZWNvcmRBdWRpbywgcmVj
b3JkVmlkZW8sIG9wdGlvbnMpOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+KG5l
dyBSZW1vdGVNZWRpYVJlY29yZGVyIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRp
Zmllciwgd3JpdGVyLnJlbGVhc2VOb25OdWxsKCksIHJlY29yZEF1ZGlvIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApp
bmRleCA3OTEzNTk3Y2M5N2U0MTBlM2Q5NjFhZDdlODI3NjY1ZDIxODI4Y2U1Li41MzY2ODBkNGQ1
MzI2OWQ0MGIwMTdlMmVjNWJiOGM3MWRkOWNlZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtNDQsNiArNDQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQVJpbmdCdWZmZXI7CiBjbGFzcyBJbWFn
ZVRyYW5zZmVyU2Vzc2lvblZUOwogY2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7CitzdHJ1Y3QgTWVk
aWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0
LDcgKzU1LDcgQEAgY2xhc3MgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U7CiBjbGFzcyBSZW1vdGVN
ZWRpYVJlY29yZGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVNZWRpYVJlY29yZGVyPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIE1l
ZGlhUmVjb3JkZXJJZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVv
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+IGNyZWF0
ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIsIGJv
b2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlT3B0aW9ucyYpOwogICAgIH5SZW1vdGVNZWRpYVJlY29yZGVyKCk7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAppbmRleCAwYmE2ZmQ3ZDBlZjk2Njhm
MDE5OGJmZWYwMDBmNWM4NDhhMjI2ZDJkLi5mNDgxNTI1MzgyM2FlNTk1N2I3Mjc5NDBlNzJlNGFh
ZGZkMjFiZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtNTEsMTAgKzUxLDEw
IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVNZWRp
YVJlY29yZGVyTWVzc2FnZShJUEM6OkNvbm5lCiAgICAgICAgIHJlY29yZGVyLT5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlcjo6Y3JlYXRlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmNyZWF0ZVJlY29yZGVyKE1lZGlhUmVj
b3JkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3Jk
VmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVjb3JkZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKLSAgICBhdXRvIHJlY29yZGVyID0gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgcmVjb3JkQXVkaW8sIHJlY29yZFZp
ZGVvKTsKKyAgICBhdXRvIHJlY29yZGVyID0gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgcmVjb3JkQXVkaW8sIHJlY29y
ZFZpZGVvLCBvcHRpb25zKTsKICAgICBpZiAoIXJlY29yZGVyKQogICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uRGF0YSB7IE5vdFN1cHBvcnRlZEVycm9yLCAiVW5hYmxl
IHRvIGNyZWF0ZSBhIHJlY29yZGVyIHdpdGggdGhlIHByb3ZpZGVkIHN0cmVhbSJfcyB9KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5oCmluZGV4IDhlNmY5MThhMDE2NzkxOGEwZDAyNWQzYjZjNTIx
NTYzOGFjOWU1NjIuLjc1MzkwYTg1YTNmYTQwZTI3YTc4NDY3ODkxOGRjODU0Y2U0MTFjOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgRGVjb2RlcjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgTWVk
aWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYw
LDcgKzYxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRp
ZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9p
ZCBjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRp
bywgYm9vbCByZWNvcmRWaWRlbywgY29uc3QgV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVP
cHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EYXRhPiYmKT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklk
ZW50aWZpZXIpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMu
aW4KaW5kZXggYTJmMTg4ZDc4OTMwZmM5NzE1NjQ3YTBmNjQxMGQyMWEyNjk1YzYzNy4uMjU3YmY5
NjYzMjc4ODVmZmRjZmZiMGU3M2M2ODFhODc5MWFjNmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZVJlY29yZGVyKFdlYktpdDo6
TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8p
IC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVycm9yKSBBc3lu
YworICAgIENyZWF0ZVJlY29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQs
IGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIHN0cnVjdCBXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnMgb3B0aW9ucykgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+IGNyZWF0aW9uRXJyb3IpIEFzeW5jCiAgICAgUmVsZWFzZVJlY29yZGVyKFdlYktpdDo6
TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApp
bmRleCBkOTRiZWJjZDBjYjBiMjgzM2UxMTZjMjdlZWJjMzhhOWVjMWViNjRkLi42MmJmNjUwMmIy
OGE3ODY4ZDQwZjUxNWU5MjBhODkzY2NiMWJjNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
CkBAIC00MywxMCArNDMsMTEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLU1lZGlhUmVjb3JkZXJQcml2YXRlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZShN
ZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKK01lZGlhUmVjb3JkZXJQcml2YXRlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgTWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogICAgIDogbV9pZGVudGlmaWVyKE1lZGlhUmVj
b3JkZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogICAgICwgbV9zdHJlYW0obWFrZVJlZihzdHJl
YW0pKQogICAgICwgbV9jb25uZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKQorICAgICwgbV9vcHRpb25zKG9wdGlv
bnMpCiB7CiB9CiAKQEAgLTU5LDcgKzYwLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6
c3RhcnRSZWNvcmRpbmcoRXJyb3JDYWxsYmFjayYmIGVycm9yQ2FsbGJhY2spCiAgICAgaWYgKHNl
bGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2spCiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlx
dWU8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPih0
aGlzKSk7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OkNyZWF0ZVJlY29yZGVyIHsgbV9pZGVudGlmaWVy
LCAhIXNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2ssICEhc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFj
ayB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYXVkaW9UcmFjayA9IG1h
a2VSZWZQdHIoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjayksIHZpZGVvVHJhY2sgPSBtYWtlUmVm
UHRyKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShl
cnJvckNhbGxiYWNrKV0oYXV0byYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyOjpDcmVhdGVSZWNvcmRlciB7IG1faWRlbnRpZmllciwgISFzZWxlY3RlZFRyYWNrcy5hdWRp
b1RyYWNrLCAhIXNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2ssIG1fb3B0aW9ucyB9LCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYXVkaW9UcmFjayA9IG1ha2VSZWZQdHIoc2Vs
ZWN0ZWRUcmFja3MuYXVkaW9UcmFjayksIHZpZGVvVHJhY2sgPSBtYWtlUmVmUHRyKHNlbGVjdGVk
VHJhY2tzLnZpZGVvVHJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNr
KV0oYXV0byYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsK
ICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oCmluZGV4IDViNGE0OTJmYmI1ZGYwY2UxYTNmYTMyNDg5ODQ0MjM1YTFi
MzBlMWQuLmQ3NjU4NzU5YjRmYWE1MzY2YmE0NmJhZDM2YWRkODU1YjZiNGY3OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0
ZSBmaW5hbAogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRl
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
TWVkaWFSZWNvcmRlclByaXZhdGUoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlJik7CisgICAg
TWVkaWFSZWNvcmRlclByaXZhdGUoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlJiwgY29uc3Qg
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAgICAgfk1lZGlhUmVjb3Jk
ZXJQcml2YXRlKCk7CiAKIHByaXZhdGU6CkBAIC03MSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwogICAg
IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uIHsgfTsKICAg
ICBpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CisgICAgV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zIG1fb3B0aW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlk
ZXIuY3BwCmluZGV4IDVmNTA3NWYxNjM3YjQ1OWRmNTVhN2QyNTM0ZDViN2JmM2I1OTQwMGUuLjQw
NDcxYmQ3MWU1NTc5OGMyNjQwZjU4NWE4YTRiZTkwNWQ2NmNmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
b3ZpZGVyLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclBy
aXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVk
aWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0sIGNvbnN0IE1lZGlh
UmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIGlmIChtX3VzZUdQVVByb2Nl
c3MpCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlPihzdHJl
YW0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZT4oc3Ry
ZWFtLCBvcHRpb25zKTsKICNlbmRpZgotICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKHN0cmVhbSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZh
dGUoc3RyZWFtLCBvcHRpb25zKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAppbmRleCBl
OTZiOGZmMzY0ZGU1OTg4NjhmZDlkZjA1ZWE5MjViNDBkODNhYWM4Li40NjM5M2FlNDgzZjY5ZTdk
YzhjMzUzZTA4NTFhZTZlYWUyNGY0Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaApAQCAtMzUs
NyArMzUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShXZWJDb3JlOjpNZWRpYVN0
cmVhbVByaXZhdGUmKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGU+IGNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtUHJpdmF0ZSYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9u
cyYpIGZpbmFsOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDA4N2QxNzhjNzMwMDI3MDM5MWIyMDRl
OTU2ZGY1ZDc0MWJiYjEyZC4uNDViMmJkZDZmMWY5NTZkNTBkMjA0NTZhZDExMzZlNDdhODA1ZmU3
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA4LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWVkaWFSZWNvcmRlciBi
aXRyYXRlIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAg
ICAgICAqIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLWF1ZGlvLWJpdHJhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93
cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWJpdHJhdGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIt
dmlkZW8tYml0cmF0ZS5odG1sOiBBZGRlZC4KKwogMjAyMC0wOC0yNCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29jb2EgV2ViU29ja2V0VGFzayBzaG91bGQg
ZXhwb3NlIFdlYlNvY2tldCBzZXJ2ZXIgZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLWF1ZGlvLWJpdHJhdGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLWF1ZGlvLWJpdHJhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMzk1NDc5OGY2NmJm
M2I1N2RiZjRmMTBhYTAzZTQzNTUwMjYzMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItYXVkaW8tYml0cmF0ZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgVmFyaW91cyBhdWRpbyBiaXRyYXRlcyAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLWF1ZGlvLWJpdHJhdGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRyYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEyYTlk
MjRlNmMwOWJjYjgwNDRhYmIwZmU2YWFiNzAzZWNmZmJiMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1hdWRpby1iaXRy
YXRlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDx0aXRsZT5NZWRpYVJlY29yZGVyIGF1ZGlvIGJpdHJhdGU8L3RpdGxlPgorICAgIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgYXN5bmMgZnVuY3Rpb24gcmVjb3JkKHN0cmVhbSwg
Yml0UmF0ZSkKKyAgICB7CisgICAgICAgIGNvbnN0IHJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3Jk
ZXIoc3RyZWFtLCB7IGF1ZGlvQml0c1BlclNlY29uZCA6IGJpdFJhdGUgfSk7CisgICAgICAgIGNv
bnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
ICAgICByZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSAoZSkgPT4gcmVzb2x2ZShlLmRhdGEpOwor
ICAgICAgICAgICAgc2V0VGltZW91dChyZWplY3QsIDUwMDApOworICAgICAgICB9KTsKKyAgICAg
ICAgcmVjb3JkZXIuc3RhcnQoKTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWNvcmRlci5z
dG9wKCksIDI1MDApOworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9CisKKyAgICBwcm9t
aXNlX3Rlc3QoYXN5bmMgKHQpID0+IHsKKyAgICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbyA6IHRydWUgfSk7CisgICAg
ICAgIGNvbnN0IGJpdFJhdGVzID0gWzEyODAwMCwgMTkyMDAwLCAyNTYwMDBdOworICAgICAgICBs
ZXQgcHJvbWlzZXMgPSBbXTsKKyAgICAgICAgYml0UmF0ZXMuZm9yRWFjaChiaXRSYXRlID0+IHsK
KyAgICAgICAgICAgIHByb21pc2VzLnB1c2gocmVjb3JkKHN0cmVhbSwgYml0UmF0ZSkpOworICAg
ICAgICB9KTsKKworICAgICAgICBsZXQgYmxvYnMgPSBbMCwgMCwgMF07CisgICAgICAgIHByb21p
c2VzLmZvckVhY2goYXN5bmMgKHByb21pc2UsIGluZGV4KSA9PiB7CisgICAgICAgICAgICBibG9i
c1tpbmRleF0gPSBhd2FpdCBwcm9taXNlOworICAgICAgICB9KTsKKyAgICAgICAgYXdhaXQgUHJv
bWlzZS5hbGwocHJvbWlzZXMpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhibG9ic1swXS5z
aXplLCAwKTsKKyAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihibG9ic1syXS5zaXplLCBibG9i
c1swXS5zaXplKTsKKyAgICB9LCAiVmFyaW91cyBhdWRpbyBiaXRyYXRlcyIpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8tYml0cmF0ZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8tYml0cmF0
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY3MGE0YjY3MzFkZDRlNWNhZDhjMGY4MTMwMjU2
ZTIyNjAxODNjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1iaXRyYXRlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKKworUEFTUyBWYXJpb3VzIHZpZGVvIGJpdHJhdGVzIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8tYml0
cmF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLXZpZGVvLWJpdHJhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTIxODNiMDc5Y2MxYjIwMmY0ZTk3
MmE5M2RmMTNkODZiMzU3OGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWJpdHJhdGUuaHRtbApAQCAtMCww
ICsxLDM2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPk1l
ZGlhUmVjb3JkZXIgdmlkZW8gYml0cmF0ZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdD4KKyAgICBhc3luYyBmdW5jdGlvbiByZWNvcmQoYml0UmF0ZSkKKyAgICB7CisgICAgICAg
IGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHsgdmlkZW8gOiB7IHdpZHRoIDogMTAyNCB9IH0pOworICAgICAgICBjb25zdCByZWNvcmRlciA9
IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSwgeyB2aWRlb0JpdHNQZXJTZWNvbmQgOiBiaXRSYXRl
IH0pOworICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4geworICAgICAgICAgICAgbGV0IGNvdW50ID0gMDsKKyAgICAgICAgICAgIGxldCBibG9i
cyA9IFtdOworICAgICAgICAgICAgcmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gKGUpID0+IHJl
c29sdmUoZS5kYXRhKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJkYXRh
dmFpbGFibGUgZXZlbnQgdGltZWQgb3V0IiksIDE1MDAwKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJlY29yZGVyLnN0YXJ0KCk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVjb3JkZXIuc3Rv
cCgpLCAxMDAwKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorCisgICAgcHJvbWlz
ZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgICAgIGxldCBibG9icyA9IFswLCAwXTsKKyAgICAg
ICAgYmxvYnNbMF0gPSBhd2FpdCByZWNvcmQoNTAwMDApOworICAgICAgICBibG9ic1sxXSA9IGF3
YWl0IHJlY29yZCg1MDAwMDAwKTsKKworICAgICAgICAvLyBXZSBhcmUgdGFraW5nIHRoZSBzZWNv
bmQgYmxvYiBzaW5jZSBpdCBtaWdodCBiZSBtb3JlIGFjY3VyYXRlIHRoYW4gdGhlIGZpcnN0IG9u
ZS4KKyAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihibG9ic1swXS5zaXplLCAwLCAiYmxvYjAi
KTsKKyAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihibG9ic1sxXS5zaXplLCBibG9ic1swXS5z
aXplLCAiYmxvYjIiKTsKKyAgICB9LCAiVmFyaW91cyB2aWRlbyBiaXRyYXRlcyIpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>