<?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>233422</bug_id>
          
          <creation_ts>2021-11-22 06:54:06 -0800</creation_ts>
          <short_desc>Allow AudioSampleDataSource to increase/decrease buffered data progressively</short_desc>
          <delta_ts>2021-12-16 14:04:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817283</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-22 06:54:06 -0800</bug_when>
    <thetext>Allow AudioSampleDataSource to increase/decrease buffered data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817285</commentid>
    <comment_count>1</comment_count>
      <attachid>444964</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-22 07:04:04 -0800</bug_when>
    <thetext>Created attachment 444964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818197</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-29 06:55:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/85814914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818228</commentid>
    <comment_count>3</comment_count>
      <attachid>444964</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-11-29 08:45:50 -0800</bug_when>
    <thetext>Comment on attachment 444964
Patch

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

r=me

&gt; Source/WebCore/platform/audio/cocoa/AudioSampleDataSource.mm:85
&gt; +    if (m_lowConverter) {
&gt; +        PAL::AudioConverterDispose(m_lowConverter);
&gt; +        m_lowConverter = nullptr;
&gt; +    }

Nit: It might be worth creating a simple AudioConverter class to handle allocation, deallocation, and setup so you can cut down on the amount of boiler plate in the destructor and here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819164</commentid>
    <comment_count>4</comment_count>
      <attachid>445544</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-01 03:13:02 -0800</bug_when>
    <thetext>Created attachment 445544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824377</commentid>
    <comment_count>5</comment_count>
      <attachid>447239</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-15 09:01:54 -0800</bug_when>
    <thetext>Created attachment 447239
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824419</commentid>
    <comment_count>6</comment_count>
      <attachid>447239</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-12-15 10:17:13 -0800</bug_when>
    <thetext>Comment on attachment 447239
Rebasing

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

&gt; Source/WebCore/platform/audio/cocoa/AudioSampleDataConverter.mm:87
&gt; +        return 0;

s/0/noErr/

&gt; Source/WebCore/platform/audio/cocoa/AudioSampleDataSource.mm:93
&gt; +        return 0;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824736</commentid>
    <comment_count>7</comment_count>
      <attachid>447351</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-16 06:34:01 -0800</bug_when>
    <thetext>Created attachment 447351
Updated according review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824762</commentid>
    <comment_count>8</comment_count>
      <attachid>447357</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-16 08:01:42 -0800</bug_when>
    <thetext>Created attachment 447357
Use &gt; instead of == when comparing sample count</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824876</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-16 14:04:11 -0800</bug_when>
    <thetext>Committed r287157 (245334@main): &lt;https://commits.webkit.org/245334@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447357.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444964</attachid>
            <date>2021-11-22 07:04:04 -0800</date>
            <delta_ts>2021-12-01 03:12:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233422-20211122160402.patch</filename>
            <type>text/plain</type>
            <size>15311</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTViNGYwNDI1MjMwZjc3
YWQ4MjdkMTI1NmQzMmQ1YjQ3NGFiMTUzOC4uZjhhMGNlNjU2ZDJjYTc2ZTQxZWNiZmViNGY2ODc1
Mjg0MmE2NzkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTExLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBBdWRpb1NhbXBs
ZURhdGFTb3VyY2UgdG8gaW5jcmVhc2UvZGVjcmVhc2UgYnVmZmVyZWQgZGF0YSBwcm9ncmVzc2l2
ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdWRp
b1NhbXBsZURhdGFTb3VyY2UgZG9lcyB0aGUgbGluayBiZXR3ZWVuIHB1c2ggYXVkaW8gc291cmNl
cyBhbmQgcHVsbCBhdWRpbyBzaW5rcy4KKyAgICAgICAgQXMgc3VjaCBpdCBuZWVkcyB0byBkbyBi
dWZmZXJpbmcuIElmIGJ1ZmZlcmluZyBpcyB0b28gc21hbGwsIGRhdGEgbWF5IGJlIG1pc3Npbmcg
YW5kIGF1ZGlvIGdsaXRjaGVzIHdpbGwgYmUgaGVhcmQuCisgICAgICAgIElmIGJ1ZmZlcmluZyBp
cyB0b28gbGFyZ2UsIGxhdGVuY3kgd2lsbCBiZSBhZGRlZCB3aGljaCBtaWdodCBiZSB1bmRlc2ly
YWJsZSwgZXNwZWNpYWxseSBpZiBhdWRpbyBpcyBiZWluZyBwbGF5ZWQgd2l0aCB2aWRlby4KKyAg
ICAgICAgV2UgZ2VuZXJhbGx5IHdhbnQgYnVmZmVyZWQgYXVkaW8gdG8gc3RheSB3aXRoaW4gYSBj
ZXJ0YWluIHJhbmdlLgorICAgICAgICBUbyBtYWtlIHRoaXMgaGFwcGVuLCB3aGVuIGJ1ZmZlcmlu
ZyBpcyB0b28gaGlnaCwgd2UgY29udmVydCB0aGUgZGF0YSB3aXRoIGEgc2xpZ2h0bHkgbG93ZXIg
c2FtcGxlIHJhdGUgdG8gcHVzaCBsZXNzIHNhbXBsZXMsIHVudGlsIHdlIGFyZSBiYWNrIHRvIG5v
cm1hbCBidWZmZXJpbmcuCisgICAgICAgIENvbnZlcnNlbHksIHdoZW4gYnVmZmVyaW5nIGlzIHRv
byBsb3csIHdlIGNvbnZlcnQgdGhlIGRhdGEgd2l0aCBhIHNsaWdodGx5IGhpZ2hlciBzYW1wbGUg
cmF0ZSB0byBwdXNoIG1vcmUgc2FtcGxlcywgdW50aWwgd2UgYXJlIGJhY2sgdG8gbm9ybWFsIGJ1
ZmZlcmluZy4KKyAgICAgICAgV2UgZG8gdGhpcyB3aXRoIDMgY29udmVydGVycyB0aGF0IHdlIHNl
bGVjdCBiYXNlZCBvbiBhbW91bnQgb2YgYnVmZmVyZWQgZGF0YS4KKworCisgICAgICAgIE1hbnVh
bGx5IHRlc3RlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1
ZGlvU2hhcmVkVW5pdC5tbToKKyAgICAgICAgVXNlIEludGVyYWN0aXZlIFFPUyB0byBiZSBjbG9z
ZXIgdG8gYWN0dWFsIHNvdXJjZS4KKwogMjAyMS0xMS0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTGV0IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdCBzd2l0Y2ggdG8gVlBJTyB1bml0IGlmIFZQ
SU8gaXMgcnVubmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAppbmRleCAyY2QyMGQ1OGViYmYzN2Ri
NjVlYzJiZGM4M2RkZDY3Njg2ZTNlYTE5Li5mMzhjOTgxNTE3OWMyMDRmYWY4M2Q0NzU2ZDMwNzg2
NzY5YjAxZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaApAQCAtMTAzLDEyICsxMDMsMjQgQEAg
cHJpdmF0ZToKICAgICB1aW50NjRfdCBtX2xhc3RQdXNoZWRTYW1wbGVDb3VudCB7IDAgfTsKICAg
ICBzaXplX3QgbV93YWl0VG9TdGFydEZvclB1c2hDb3VudCB7IDIgfTsKICAgICBNZWRpYVRpbWUg
bV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lIHsgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
IH07Ci0gICAgYm9vbCBtX2lzRmlyc3RQdWxsIHsgdHJ1ZSB9OworICAgIHVpbnQ2NF90IG1fZXhw
ZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZVZhbHVlIHsgMCB9OwogCi0gICAgTWVkaWFUaW1lIG1f
aW5wdXRTYW1wbGVPZmZzZXQ7CisgICAgaW50NjRfdCBtX2NvbnZlcnRlcklucHV0T2Zmc2V0IHsg
MCB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gbV9pbnB1dFNhbXBsZU9mZnNldDsKICAg
ICBpbnQ2NF90IG1fb3V0cHV0U2FtcGxlT2Zmc2V0IHsgMCB9OworICAgIHVpbnQ2NF90IG1fbGFz
dEJ1ZmZlcmVkQW1vdW50IHsgMCB9OworCisgICAgc2l6ZV90IG1faGlnaEJ1ZmZlclNpemUgeyAw
IH07CisgICAgc2l6ZV90IG1fcmVndWxhckhpZ2hCdWZmZXJTaXplIHsgMCB9OworICAgIHNpemVf
dCBtX3JlZ3VsYXJMb3dCdWZmZXJTaXplIHsgMCB9OworICAgIHNpemVfdCBtX2xvd0J1ZmZlclNp
emUgeyAwIH07CisKKyAgICAvLyBXZSBzaG91bGQgdXNlIGEgc2luZ2xlIGNvbnZlcnRlciBvYmpl
Y3QgdGhhdCB3b3VsZCBzbW9vdGggb3V0IGF1ZGlvIHdoZW4gaW5jcmVhc2luZy9kZWNyZWFzaW5n
IGF1ZGlvIHNwZWVkLgorICAgIEF1ZGlvQ29udmVydGVyUmVmIG1fbG93Q29udmVydGVyIHsgbnVs
bHB0ciB9OworICAgIEF1ZGlvQ29udmVydGVyUmVmIG1fcmVndWxhckNvbnZlcnRlciB7IG51bGxw
dHIgfTsKKyAgICBBdWRpb0NvbnZlcnRlclJlZiBtX2hpZ2hDb252ZXJ0ZXIgeyBudWxscHRyIH07
CisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgbV9zZWxlY3RlZENvbnZlcnRlciB7IG51bGxwdHIgfTsK
IAotICAgIEF1ZGlvQ29udmVydGVyUmVmIG1fY29udmVydGVyOwogICAgIFJlZlB0cjxBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3Q+IG1fc2NyYXRjaEJ1ZmZlcjsKIAogICAgIFVuaXF1ZVJlZjxDQVJpbmdC
dWZmZXI+IG1fcmluZ0J1ZmZlcjsKQEAgLTEyMCw3ICsxMzIsNiBAQCBwcml2YXRlOgogICAgIHVp
bnQ2NF90IG1fZW5kRnJhbWVXaGVuTm90RW5vdWdoRGF0YSB7IDAgfTsKIAogICAgIGJvb2wgbV9p
c0luTmVlZE9mTW9yZURhdGEgeyBmYWxzZSB9OwotCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJ
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCmluZGV4IGYwMTBkM2NjY2JlYTU1NzU1
ODJjYWQ0NGMzZmQyYTIxNGFjNjJmMmMuLjI1NjA3YTBjOTFlYzMyOTA1MzZlMjczNjU1YTQ0Zjg4
OTA5NTdkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTUxLDcgKzUxLDYgQEAgUmVm
PEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6
ZV90IG1heGltdW1TYW1wbGVDb3UKIAogQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBs
ZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGVscGVyJiBsb2dn
ZXJIZWxwZXIsIHNpemVfdCB3YWl0VG9TdGFydEZvclB1c2hDb3VudCkKICAgICA6IG1fd2FpdFRv
U3RhcnRGb3JQdXNoQ291bnQod2FpdFRvU3RhcnRGb3JQdXNoQ291bnQpCi0gICAgLCBtX2lucHV0
U2FtcGxlT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fcmluZ0J1ZmZl
cihtYWtlVW5pcXVlUmVmPENBUmluZ0J1ZmZlcj4oKSkKICAgICAsIG1fbWF4aW11bVNhbXBsZUNv
dW50KG1heGltdW1TYW1wbGVDb3VudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTY2
LDMxICs2NSw2MyBAQCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZShzaXplX3QgbWF4aW11bVNhbXBsZUNvdW50LCBMb2dnZXJIZQogCiBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6On5BdWRpb1NhbXBsZURhdGFTb3VyY2UoKQogewotICAgIGlmIChtX2NvbnZlcnRlcikK
LSAgICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9jb252ZXJ0ZXIpOworICAgIGlm
IChtX2xvd0NvbnZlcnRlcikKKyAgICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9s
b3dDb252ZXJ0ZXIpOworICAgIGlmIChtX3JlZ3VsYXJDb252ZXJ0ZXIpCisgICAgICAgIFBBTDo6
QXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fcmVndWxhckNvbnZlcnRlcik7CisgICAgaWYgKG1faGln
aENvbnZlcnRlcikKKyAgICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9oaWdoQ29u
dmVydGVyKTsKIH0KIAogT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXR1cENvbnZl
cnRlcigpCiB7CiAgICAgQVNTRVJUKG1faW5wdXREZXNjcmlwdGlvbiAmJiBtX291dHB1dERlc2Ny
aXB0aW9uKTsKKyAgICBtX2NvbnZlcnRlcklucHV0T2Zmc2V0ID0gMDsKKyAgICBtX3NlbGVjdGVk
Q29udmVydGVyID0gbnVsbHB0cjsKIAotICAgIGlmIChtX2NvbnZlcnRlcikgewotICAgICAgICBQ
QUw6OkF1ZGlvQ29udmVydGVyRGlzcG9zZShtX2NvbnZlcnRlcik7Ci0gICAgICAgIG1fY29udmVy
dGVyID0gbnVsbHB0cjsKKyAgICBpZiAobV9sb3dDb252ZXJ0ZXIpIHsKKyAgICAgICAgUEFMOjpB
dWRpb0NvbnZlcnRlckRpc3Bvc2UobV9sb3dDb252ZXJ0ZXIpOworICAgICAgICBtX2xvd0NvbnZl
cnRlciA9IG51bGxwdHI7CisgICAgfQorICAgIGlmIChtX3JlZ3VsYXJDb252ZXJ0ZXIpIHsKKyAg
ICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9yZWd1bGFyQ29udmVydGVyKTsKKyAg
ICAgICAgbV9yZWd1bGFyQ29udmVydGVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKG1faGln
aENvbnZlcnRlcikgeworICAgICAgICBQQUw6OkF1ZGlvQ29udmVydGVyRGlzcG9zZShtX2hpZ2hD
b252ZXJ0ZXIpOworICAgICAgICBtX2hpZ2hDb252ZXJ0ZXIgPSBudWxscHRyOworICAgIH0KKwor
ICAgIGF1dG8gb3V0cHV0RGVzY3JpcHRpb24gPSBtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1E
ZXNjcmlwdGlvbigpOworICAgIG91dHB1dERlc2NyaXB0aW9uLm1TYW1wbGVSYXRlID0gMS4wNSAq
IG91dHB1dERlc2NyaXB0aW9uLm1TYW1wbGVSYXRlOworICAgIE9TU3RhdHVzIGVyciA9IFBBTDo6
QXVkaW9Db252ZXJ0ZXJOZXcoJm1faW5wdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24o
KSwgJm91dHB1dERlc2NyaXB0aW9uLCAmbV9sb3dDb252ZXJ0ZXIpOworICAgIGlmIChlcnIpIHsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgZXJyXSB7CisgICAgICAgICAgICBFUlJPUl9MT0coIkF1ZGlvQ29udmVy
dGVyTmV3IHJldHVybmVkIGVycm9yICIsIGVycik7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IG91dHB1dERlc2NyaXB0aW9uID0gbV9vdXRwdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRp
b24oKTsKKyAgICBvdXRwdXREZXNjcmlwdGlvbi5tU2FtcGxlUmF0ZSA9IDAuOTUgKiBvdXRwdXRE
ZXNjcmlwdGlvbi5tU2FtcGxlUmF0ZTsKKyAgICBlcnIgPSBQQUw6OkF1ZGlvQ29udmVydGVyTmV3
KCZtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksICZvdXRwdXREZXNjcmlw
dGlvbiwgJm1faGlnaENvbnZlcnRlcik7CisgICAgaWYgKGVycikgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBl
cnJdIHsKKyAgICAgICAgICAgIEVSUk9SX0xPRygiQXVkaW9Db252ZXJ0ZXJOZXcgcmV0dXJuZWQg
ZXJyb3IgIiwgZXJyKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgaWYgKCptX2lucHV0RGVz
Y3JpcHRpb24gPT0gKm1fb3V0cHV0RGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgT1NTdGF0dXMgZXJyID0gUEFMOjpBdWRpb0NvbnZlcnRlck5ldygmbV9pbnB1dERlc2NyaXB0
aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCAmbV9vdXRwdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVz
Y3JpcHRpb24oKSwgJm1fY29udmVydGVyKTsKKyAgICBlcnIgPSBQQUw6OkF1ZGlvQ29udmVydGVy
TmV3KCZtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksICZtX291dHB1dERl
c2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCAmbV9yZWd1bGFyQ29udmVydGVyKTsKICAg
ICBpZiAoZXJyKSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGVycl0gewogICAgICAgICAgICAgRVJST1JfTE9H
KCJBdWRpb0NvbnZlcnRlck5ldyByZXR1cm5lZCBlcnJvciAiLCBlcnIpOwogICAgICAgICB9KTsK
ICAgICB9CiAKKyAgICBtX3NlbGVjdGVkQ29udmVydGVyID0gbV9yZWd1bGFyQ29udmVydGVyOwog
ICAgIHJldHVybiBlcnI7Ci0KIH0KIAogT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpz
ZXRJbnB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCkKQEAg
LTExOSw2ICsxNTAsMTEgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRPdXRw
dXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJgogICAgICAgICBtX3NjcmF0
Y2hCdWZmZXIgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZShtX291dHB1dERlc2NyaXB0
aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX21heGltdW1TYW1wbGVDb3VudCk7CiAgICAgfQog
CisgICAgbV9oaWdoQnVmZmVyU2l6ZSA9IG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUo
KSAqIDEwMCAvIDEwMDA7CisgICAgbV9yZWd1bGFySGlnaEJ1ZmZlclNpemUgPSBtX291dHB1dERl
c2NyaXB0aW9uLT5zYW1wbGVSYXRlKCkgKiA0MCAvIDEwMDA7CisgICAgbV9yZWd1bGFyTG93QnVm
ZmVyU2l6ZSA9IG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKSAqIDIwIC8gMTAwMDsK
KyAgICBtX2xvd0J1ZmZlclNpemUgPSBtX291dHB1dERlc2NyaXB0aW9uLT5zYW1wbGVSYXRlKCkg
KiAxMCAvIDEwMDA7CisKICAgICByZXR1cm4gc2V0dXBDb252ZXJ0ZXIoKTsKIH0KIApAQCAtMTQw
LDM0ICsxNzYsMzYgQEAgTWVkaWFUaW1lIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6aG9zdFRpbWUo
KSBjb25zdAogCiB2b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXNJbnRlcm5h
bChjb25zdCBBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpc3QsIGNvbnN0IE1lZGlhVGltZSYgcHJl
c2VudGF0aW9uVGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQogewotICAgIE1lZGlhVGltZSBzYW1w
bGVUaW1lID0gcHJlc2VudGF0aW9uVGltZTsKKyAgICBpbnQ2NF90IHJpbmdCdWZmZXJJbmRleFRv
V3JpdGUgPSBwcmVzZW50YXRpb25UaW1lLnRpbWVWYWx1ZSgpOwogCisgICAgaW50NjRfdCBvZmZz
ZXQgPSAwOwogICAgIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCogc2FtcGxlQnVmZmVyTGlzdDsKLSAg
ICBpZiAobV9jb252ZXJ0ZXIpIHsKKyAgICBpZiAobV9zZWxlY3RlZENvbnZlcnRlcikgewogICAg
ICAgICBtX3NjcmF0Y2hCdWZmZXItPnJlc2V0KCk7Ci0gICAgICAgIE9TU3RhdHVzIGVyciA9IG1f
c2NyYXRjaEJ1ZmZlci0+Y29weUZyb20oYnVmZmVyTGlzdCwgc2FtcGxlQ291bnQsIG1fY29udmVy
dGVyKTsKKyAgICAgICAgT1NTdGF0dXMgZXJyID0gbV9zY3JhdGNoQnVmZmVyLT5jb3B5RnJvbShi
dWZmZXJMaXN0LCBzYW1wbGVDb3VudCwgbV9zZWxlY3RlZENvbnZlcnRlcik7CiAgICAgICAgIGlm
IChlcnIpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgb2Zmc2V0ID0gbV9zY3JhdGNo
QnVmZmVyLT5zYW1wbGVDb3VudCgpIC0gc2FtcGxlQ291bnQ7CiAgICAgICAgIHNhbXBsZUJ1ZmZl
ckxpc3QgPSBtX3NjcmF0Y2hCdWZmZXItPmJ1ZmZlckxpc3QoKS5saXN0KCk7CiAgICAgICAgIHNh
bXBsZUNvdW50ID0gbV9zY3JhdGNoQnVmZmVyLT5zYW1wbGVDb3VudCgpOwotICAgICAgICBzYW1w
bGVUaW1lID0gcHJlc2VudGF0aW9uVGltZS50b1RpbWVTY2FsZShtX291dHB1dERlc2NyaXB0aW9u
LT5zYW1wbGVSYXRlKCksIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybyk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIHNhbXBsZUJ1ZmZlckxpc3QgPSAmYnVmZmVyTGlzdDsKIAotICAg
IGlmIChtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUuaXNWYWxpZCgpICYmIGFicyhtX2V4
cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUgLSBzYW1wbGVUaW1lKS50aW1lVmFsdWUoKSA9PSAx
KQotICAgICAgICBzYW1wbGVUaW1lID0gbV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lOwot
ICAgIG1fZXhwZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZSA9IHNhbXBsZVRpbWUgKyBNZWRpYVRp
bWUoc2FtcGxlQ291bnQsIHNhbXBsZVRpbWUudGltZVNjYWxlKCkpOwogCi0gICAgaWYgKG1faW5w
dXRTYW1wbGVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQotICAgICAgICBtX2lu
cHV0U2FtcGxlT2Zmc2V0ID0gTWVkaWFUaW1lKDEgLSBzYW1wbGVUaW1lLnRpbWVWYWx1ZSgpLCBz
YW1wbGVUaW1lLnRpbWVTY2FsZSgpKTsKLSAgICBzYW1wbGVUaW1lICs9IG1faW5wdXRTYW1wbGVP
ZmZzZXQ7CisgICAgaWYgKCFtX2lucHV0U2FtcGxlT2Zmc2V0KSB7CisgICAgICAgIG1faW5wdXRT
YW1wbGVPZmZzZXQgPSAxIC0gcmluZ0J1ZmZlckluZGV4VG9Xcml0ZTsKKyAgICAgICAgcmluZ0J1
ZmZlckluZGV4VG9Xcml0ZSA9IDE7CisgICAgfSBlbHNlCisgICAgICAgIHJpbmdCdWZmZXJJbmRl
eFRvV3JpdGUgKz0gKm1faW5wdXRTYW1wbGVPZmZzZXQ7CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0g
ICAgdWludDY0X3Qgc3RhcnRGcmFtZTEgPSAwOwotICAgIHVpbnQ2NF90IGVuZEZyYW1lMSA9IDA7
Ci0gICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZTEsIGVu
ZEZyYW1lMSk7Ci0jZW5kaWYKKyAgICBpZiAobV9jb252ZXJ0ZXJJbnB1dE9mZnNldCkKKyAgICAg
ICAgcmluZ0J1ZmZlckluZGV4VG9Xcml0ZSArPSBtX2NvbnZlcnRlcklucHV0T2Zmc2V0OworCisg
ICAgaWYgKG1fZXhwZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZVZhbHVlICYmIGFicygoZmxvYXQp
bV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lVmFsdWUgLSAoZmxvYXQpcmluZ0J1ZmZlcklu
ZGV4VG9Xcml0ZSkgPD0gMSkKKyAgICAgICAgcmluZ0J1ZmZlckluZGV4VG9Xcml0ZSA9IG1fZXhw
ZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZVZhbHVlOworCisgICAgbV9leHBlY3RlZE5leHRQdXNo
ZWRTYW1wbGVUaW1lVmFsdWUgPSByaW5nQnVmZmVySW5kZXhUb1dyaXRlICsgc2FtcGxlQ291bnQ7
CiAKICAgICBpZiAobV9pc0luTmVlZE9mTW9yZURhdGEpIHsKICAgICAgICAgbV9pc0luTmVlZE9m
TW9yZURhdGEgPSBmYWxzZTsKQEAgLTE3Niw3ICsyMTQsMTAgQEAgdm9pZCBBdWRpb1NhbXBsZURh
dGFTb3VyY2U6OnB1c2hTYW1wbGVzSW50ZXJuYWwoY29uc3QgQXVkaW9CdWZmZXJMaXN0JiBidWZm
ZXJMaXMKICAgICAgICAgICAgIEFMV0FZU19MT0cobG9nSWRlbnRpZmllciwgIm5lZWRlZCBtb3Jl
IGRhdGEsIHB1c2hpbmcgIiwgc2FtcGxlQ291bnQsICIgc2FtcGxlcyIpOwogICAgICAgICB9KTsK
ICAgICB9Ci0gICAgbV9yaW5nQnVmZmVyLT5zdG9yZShzYW1wbGVCdWZmZXJMaXN0LCBzYW1wbGVD
b3VudCwgc2FtcGxlVGltZS50aW1lVmFsdWUoKSk7CisKKyAgICBtX3JpbmdCdWZmZXItPnN0b3Jl
KHNhbXBsZUJ1ZmZlckxpc3QsIHNhbXBsZUNvdW50LCByaW5nQnVmZmVySW5kZXhUb1dyaXRlKTsK
KworICAgIG1fY29udmVydGVySW5wdXRPZmZzZXQgKz0gb2Zmc2V0OwogICAgIG1fbGFzdFB1c2hl
ZFNhbXBsZUNvdW50ID0gc2FtcGxlQ291bnQ7CiB9CiAKQEAgLTIyMCw3ICsyNjEsNyBAQCBib29s
IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXMoQXVkaW9CdWZmZXJMaXN0JiBidWZm
ZXIsIHNpemVfdCBzYW1wbGVDbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
aWYgKG1fbXV0ZWQgfHwgbV9pbnB1dFNhbXBsZU9mZnNldCA9PSBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCkpIHsKKyAgICBpZiAobV9tdXRlZCB8fCAhbV9pbnB1dFNhbXBsZU9mZnNldCkgewogICAg
ICAgICBpZiAobW9kZSAhPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6Ok1peCkKICAgICAgICAgICAg
IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIGJ5dGVDb3VudCk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMCwzMiArMjcxLDIwIEBAIGJvb2wgQXVkaW9TYW1wbGVE
YXRhU291cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNh
bXBsZUNvCiAgICAgdWludDY0X3QgZW5kRnJhbWUgPSAwOwogICAgIG1fcmluZ0J1ZmZlci0+Z2V0
Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1lKTsKIAotICAgIGlmIChtX3No
b3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQpIHsKLSAgICAgICAgdWludDY0X3QgYnVmZmVy
ZWQgPSBlbmRGcmFtZSAtIHN0YXJ0RnJhbWU7Ci0gICAgICAgIGlmIChtX2lzRmlyc3RQdWxsKSB7
Ci0gICAgICAgICAgICBhdXRvIG1pbmltdW1CdWZmZXIgPSBtX3dhaXRUb1N0YXJ0Rm9yUHVzaENv
dW50ICogbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQ7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyZWQg
Pj0gbWluaW11bUJ1ZmZlcikgewotICAgICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0
ID0gc3RhcnRGcmFtZSAtIHRpbWVTdGFtcDsKLSAgICAgICAgICAgICAgICBtX3Nob3VsZENvbXB1
dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtX2VuZEZyYW1l
V2hlbk5vdEVub3VnaERhdGEgPSAwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBXZSB3YWl0IGZvciBvbmUgY2h1bmsgb2YgdmFsdWUgYmVmb3JlIHN0YXJ0aW5nIHRv
IHBsYXkuCi0gICAgICAgICAgICAgICAgaWYgKG1vZGUgIT0gQXVkaW9TYW1wbGVEYXRhU291cmNl
OjpNaXgpCi0gICAgICAgICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FC
TChidWZmZXIsIGJ5dGVDb3VudCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGJ1ZmZlcmVkIDwg
c2FtcGxlQ291bnQgKiAyIHx8IChtX2VuZEZyYW1lV2hlbk5vdEVub3VnaERhdGEgJiYgbV9lbmRG
cmFtZVdoZW5Ob3RFbm91Z2hEYXRhID09IGVuZEZyYW1lKSkgewotICAgICAgICAgICAgICAgIGlm
IChtb2RlICE9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6TWl4KQotICAgICAgICAgICAgICAgICAg
ICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoYnVmZmVyLCBieXRlQ291bnQpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KKyAgICBBU1NFUlQobV93
YWl0VG9TdGFydEZvclB1c2hDb3VudCk7CiAKKyAgICB1aW50NjRfdCBidWZmZXJlZCA9IGVuZEZy
YW1lIC0gc3RhcnRGcmFtZTsKKyAgICBpZiAobV9zaG91bGRDb21wdXRlT3V0cHV0U2FtcGxlT2Zm
c2V0KSB7CisgICAgICAgIGF1dG8gbWluaW11bUJ1ZmZlciA9IG1fd2FpdFRvU3RhcnRGb3JQdXNo
Q291bnQgKiBtX2xhc3RQdXNoZWRTYW1wbGVDb3VudDsKKyAgICAgICAgaWYgKGJ1ZmZlcmVkID49
IG1pbmltdW1CdWZmZXIpIHsKKyAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gc3Rh
cnRGcmFtZSAtIHRpbWVTdGFtcDsKICAgICAgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNh
bXBsZU9mZnNldCA9IGZhbHNlOwogICAgICAgICAgICAgbV9lbmRGcmFtZVdoZW5Ob3RFbm91Z2hE
YXRhID0gMDsKLQotICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgPSAoZW5kRnJhbWUg
LSBzYW1wbGVDb3VudCkgLSB0aW1lU3RhbXA7Ci0gICAgICAgICAgICBtX291dHB1dFNhbXBsZU9m
ZnNldCAtPSBjb21wdXRlT2Zmc2V0RGVsYXkobV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0
ZSgpLCBtX2xhc3RQdXNoZWRTYW1wbGVDb3VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBXZSB3YWl0IGZvciBvbmUgY2h1bmsgb2YgdmFsdWUgYmVmb3JlIHN0YXJ0aW5nIHRv
IHBsYXkuCisgICAgICAgICAgICBpZiAobW9kZSAhPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6Ok1p
eCkKKyAgICAgICAgICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoYnVmZmVy
LCBieXRlQ291bnQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0yODQsNyArMzEzLDE5IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxs
U2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX2lzRmlyc3RQdWxsID0gZmFsc2U7CisgICAg
c2l6ZV90IGN1cnJlbnRseUJ1ZmZlcmVkID0gZW5kRnJhbWUgLSB0aW1lU3RhbXAgLSBzYW1wbGVD
b3VudDsKKyAgICBzaXplX3QgYnVmZmVyZWRBbW91bnRBdmVyYWdlID0gKG1fbGFzdEJ1ZmZlcmVk
QW1vdW50ICsgY3VycmVudGx5QnVmZmVyZWQpIC8gMjsKKyAgICBtX2xhc3RCdWZmZXJlZEFtb3Vu
dCA9IGN1cnJlbnRseUJ1ZmZlcmVkOworICAgIGlmIChtX3NlbGVjdGVkQ29udmVydGVyID09IG1f
cmVndWxhckNvbnZlcnRlcikgeworICAgICAgICBpZiAoYnVmZmVyZWRBbW91bnRBdmVyYWdlIDw9
IG1fbG93QnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRDb252ZXJ0ZXIgPSBtX2xv
d0NvbnZlcnRlcjsKKyAgICAgICAgZWxzZSBpZiAoYnVmZmVyZWRBbW91bnRBdmVyYWdlID49IG1f
aGlnaEJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX3NlbGVjdGVkQ29udmVydGVyID0gbV9oaWdo
Q29udmVydGVyOworICAgIH0gZWxzZSBpZiAobV9zZWxlY3RlZENvbnZlcnRlciA9PSBtX2hpZ2hD
b252ZXJ0ZXIpIHsKKyAgICAgICAgaWYgKGJ1ZmZlcmVkQW1vdW50QXZlcmFnZSA8IG1fcmVndWxh
ckxvd0J1ZmZlclNpemUpCisgICAgICAgICAgICBtX3NlbGVjdGVkQ29udmVydGVyID0gbV9yZWd1
bGFyQ29udmVydGVyOworICAgIH0gZWxzZSBpZiAoYnVmZmVyZWRBbW91bnRBdmVyYWdlID4gbV9y
ZWd1bGFySGlnaEJ1ZmZlclNpemUpCisgICAgICAgIG1fc2VsZWN0ZWRDb252ZXJ0ZXIgPSBtX3Jl
Z3VsYXJDb252ZXJ0ZXI7CiAKICAgICByZXR1cm4gcHVsbFNhbXBsZXNJbnRlcm5hbChidWZmZXIs
IHNhbXBsZUNvdW50LCB0aW1lU3RhbXAsIG1vZGUpOwogfQpAQCAtMzIwLDEyICszNjEsMTIgQEAg
Ym9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVDaHVuayhBdWRp
b0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2kKICAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZmZXJzICE9
IG1fcmluZ0J1ZmZlci0+Y2hhbm5lbENvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChtX211dGVkKQorICAgIGlmIChtX211dGVkIHx8ICFtX2lucHV0U2FtcGxlT2Zmc2V0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9zaG91bGRDb21wdXRlT3V0cHV0
U2FtcGxlT2Zmc2V0KSB7CiAgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNl
dCA9IGZhbHNlOwotICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IG1faW5wdXRTYW1wbGVP
ZmZzZXQudGltZVZhbHVlKCkgKiBtX291dHB1dERlc2NyaXB0aW9uLT5zYW1wbGVSYXRlKCkgLyBt
X2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVTY2FsZSgpOworICAgICAgICBtX291dHB1dFNhbXBsZU9m
ZnNldCA9ICptX2lucHV0U2FtcGxlT2Zmc2V0OwogICAgIH0KIAogICAgIHRpbWVTdGFtcCArPSBt
X291dHB1dFNhbXBsZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQubW0KaW5kZXggNjI3
MmE1MzYwMGIwN2JkNDVkMmZkYmVkOTQxODFiNjBhMmYyMzllYS4uZjYxZDZmYzNmOTVmNzAxMmVi
ZmUyMTI5NzliNmYwMmEzNjM4ZGU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQubW0KQEAg
LTEwMiw3ICsxMDIsNyBAQCBNb2NrQXVkaW9TaGFyZWRVbml0JiBNb2NrQXVkaW9TaGFyZWRVbml0
OjpzaW5nbGV0b24oKQogCiBNb2NrQXVkaW9TaGFyZWRVbml0OjpNb2NrQXVkaW9TaGFyZWRVbml0
KCkKICAgICA6IG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTW9ja0F1ZGlvU2hh
cmVkVW5pdDo6dGljaykKLSAgICAsIG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJNb2Nr
QXVkaW9TaGFyZWRVbml0IENhcHR1cmUgUXVldWUiKSkKKyAgICAsIG1fd29ya1F1ZXVlKFdvcmtR
dWV1ZTo6Y3JlYXRlKCJNb2NrQXVkaW9TaGFyZWRVbml0IENhcHR1cmUgUXVldWUiLCBXb3JrUXVl
dWU6OlFPUzo6VXNlckludGVyYWN0aXZlKSkKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445544</attachid>
            <date>2021-12-01 03:13:02 -0800</date>
            <delta_ts>2021-12-15 09:01:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233422-20211201121300.patch</filename>
            <type>text/plain</type>
            <size>37955</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0Y2Y4MmVlYjg4NTgz
Njg5NTM3YjY1NmU4OTcwODRiNzEyYWI5Yy4uOGI2Y2MyMzVkNjIzOWIzOTIwODE5NjMwMDJkNTA4
NDcxYTg4YTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTExLTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBBdWRpb1NhbXBs
ZURhdGFTb3VyY2UgdG8gaW5jcmVhc2UvZGVjcmVhc2UgYnVmZmVyZWQgZGF0YSBwcm9ncmVzc2l2
ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0
MjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg1ODE0OTE0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBdWRpb1NhbXBsZURhdGFTb3VyY2UgZG9lcyB0
aGUgbGluayBiZXR3ZWVuIHB1c2ggYXVkaW8gc291cmNlcyBhbmQgcHVsbCBhdWRpbyBzaW5rcy4K
KyAgICAgICAgQXMgc3VjaCBpdCBuZWVkcyB0byBkbyBidWZmZXJpbmcuIElmIGJ1ZmZlcmluZyBp
cyB0b28gc21hbGwsIGRhdGEgbWF5IGJlIG1pc3NpbmcgYW5kIGF1ZGlvIGdsaXRjaGVzIHdpbGwg
YmUgaGVhcmQuCisgICAgICAgIElmIGJ1ZmZlcmluZyBpcyB0b28gbGFyZ2UsIGxhdGVuY3kgd2ls
bCBiZSBhZGRlZCB3aGljaCBtaWdodCBiZSB1bmRlc2lyYWJsZSwgZXNwZWNpYWxseSBpZiBhdWRp
byBpcyBiZWluZyBwbGF5ZWQgd2l0aCB2aWRlby4KKyAgICAgICAgV2UgZ2VuZXJhbGx5IHdhbnQg
YnVmZmVyZWQgYXVkaW8gdG8gc3RheSB3aXRoaW4gYSBjZXJ0YWluIHJhbmdlLgorCisgICAgICAg
IFRvIG1ha2UgdGhpcyBoYXBwZW4sIHdoZW4gYnVmZmVyaW5nIGlzIHRvbyBoaWdoLCB3ZSBjb252
ZXJ0IHRoZSBkYXRhIHdpdGggYSBzbGlnaHRseSBsb3dlciBzYW1wbGUgcmF0ZSB0byBwdXNoIGxl
c3Mgc2FtcGxlcywgdW50aWwgd2UgYXJlIGJhY2sgdG8gbm9ybWFsIGJ1ZmZlcmluZy4KKyAgICAg
ICAgQ29udmVyc2VseSwgd2hlbiBidWZmZXJpbmcgaXMgdG9vIGxvdywgd2UgY29udmVydCB0aGUg
ZGF0YSB3aXRoIGEgc2xpZ2h0bHkgaGlnaGVyIHNhbXBsZSByYXRlIHRvIHB1c2ggbW9yZSBzYW1w
bGVzLCB1bnRpbCB3ZSBhcmUgYmFjayB0byBub3JtYWwgYnVmZmVyaW5nLgorICAgICAgICBXZSBk
byB0aGlzIHdpdGggMyBjb252ZXJ0ZXJzIHRoYXQgd2Ugc2VsZWN0IGJhc2VkIG9uIGFtb3VudCBv
ZiBidWZmZXJlZCBkYXRhLgorICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIGVuY2Fwc3VsYXRlZCBp
biBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuCisKKyAgICAgICAgV2Ugc2ltcGxpZnkgQXVkaW9T
YW1wbGVEYXRhU291cmNlIGltcGxlbWVudGF0aW9uIGJ5IGFsd2F5cyByZWNvbXB1dGluZyB0aGUg
c2FtcGxlIG9mZnNldCB3aGVuIHRoZXJlIGlzIG5vdCBlbm91Z2ggZGF0YS4KKyAgICAgICAgUmVj
b21wdXRpbmcgdGhlIHNhbXBsZSBvZmZzZXQgYnkgZW5zdXJpbmcgdGhhdCBhdCBsZWFzdCA1MCBt
cyBpcyBidWZmZXJlZCwgd2hpY2ggaXMgdGhlIGF2ZXJhZ2UgYnVmZmVyIHdlIGV4cGVjdCB0byBo
YXZlLgorCisgICAgICAgIFVwZGF0ZSBNb2NrQXVkaW9TaGFyZWRVbml0IHRvIGJlIGNsb3NlciB0
byBhIHJlYWwgc291cmNlIGJ5IGluY3JlYXNpbmcgdGhlIHF1ZXVlIHByaW9yaXR5IGFuZCBzY2hl
ZHVsZSByZW5kZXJpbmcgdGFza3MgZnJvbSB0aGUgcXVldWUgaW5zdGVhZCBvZiByZWx5aW5nIG9u
CisgICAgICAgIGEgbWFpbiB0aHJlYWQgdGltZXIgd2hpY2ggY2FuIGhhdmUgaGljY3Vwcy4KKwor
ICAgICAgICBNYW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLm1t
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFT
b3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFT
b3VyY2UubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9u
ZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9M
b2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbToKKwogMjAyMS0xMS0zMCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV1c2UgbmF2aWdhdGlvbiBw
cmVsb2FkIGlmIHNlcnZpY2Ugd29ya2VyIGlzIGZldGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIG5h
dmlnYXRpb24gcmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZGJkNTgxYTAzNmNk
ODUxMTUxNjk5MTU3NTk3NmRmYjVkMmQ1MjlmNi4uNzdkMTdiNDA4MTRlYzE5N2ZiZmQzOWQ4MTY0
YWQwZDYwMDc4Yjk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMjMsNiArMjIzLDcg
QEAgcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAogcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmNwcAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVE
YXRhQ29udmVydGVyLm1tCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3Vy
Y2UubW0KIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAK
IHBsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTMxMywxNCArMzE0LDE0
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1By
aXZhdGVBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTWFjLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIEBuby11bmlmeQog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0gQG5vLXVuaWZ5CiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODQ0ZjUyODI1ZjRmMGUwNzA1MmI2
NWVmMDMyZmUyZDUyMDFkNzI2ZS4uNGYzMjRkNmEwZTYwNGQ1ODEzNGFmMWQ0MTNlZjc4ZDY0MGUw
MGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTIyNiw2ICsxMjI2LDkgQEAKIAkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3
IC8qIERPTUNhY2hlRW5naW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUZBQkQyQjFGNERGRTQyMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUZDRDZC
OTIzQ0UwMTU1MDBDNjI1NjcgLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1OThCRTIzQzhBQUI4MDAy
QjlDQzggLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFGQ0Q2QkIyM0NFMDI3NzAwQzYyNTY3IC8q
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1OThDMDIzQzhBRDc4MDAyQjlDQzggLyogTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0MUZGRDJDMzI3NTYzRTBEMDA1MDFCQkYgLyogQXVkaW9TYW1w
bGVEYXRhQ29udmVydGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZGRDJDMDI3NTYzREZGMDA1MDFCQkYgLyogQXVkaW9TYW1wbGVEYXRhQ29udmVy
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NDFGRkQyQzQyNzU2NTcwRjAwNTAxQkJGIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMThEMUM1NDU5
MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gKi87IH07CisJCTQxRkZEMkM2
Mjc1NjU3M0UwMDUwMUJCRiAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY5QUZENzEx
M0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Ki87IH07CiAJCTQyN0RBNzFEMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDI3REE3MUIxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAg
Ki87IH07CiAJCTQyN0RBNzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQy
N0RBNzFDMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAqLzsg
fTsKIAkJNDMxMDdCRTIxOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMxMDdCRTEx
OENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oICovOyB9OwpAQCAtODkx
MSw2ICs4OTE0LDggQEAKIAkJNDFGQ0I3NUYyMTQ4NjZGRjAwMzhBREM2IC8qIFJUQ1J0cENvZGVj
UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBDb2RlY1BhcmFtZXRlcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQ0I3NjAyMTQ4NjcwMDAwMzhBREM2IC8qIFJU
Q1J0cFJ0eFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwUnR4UGFyYW1ldGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZDQjc2MTIxNDg2NzAwMDAzOEFEQzYg
LyogUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cEVuY29k
aW5nUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZGRDJDMDI3
NTYzREZGMDA1MDFCQkYgLyogQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUZGRDJDMjI3NTYzRTAwMDA1MDFCQkYgLyogQXVkaW9T
YW1wbGVEYXRhQ29udmVydGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MjdEQTcxQjEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJu
YWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdv
cmtlckludGVybmFscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQyN0RBNzFD
MTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzMTA3QkUxMThDQzE5REUwMENDMThFOCAvKiBTZWxl
Y3RvclBzZXVkb1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vs
ZWN0b3JQc2V1ZG9UeXBlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTkx
OCw2ICsyOTkyMyw4IEBACiAJCQkJMURCNjZEMzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4NTlEMDA3MUMwRUMgLyogQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2MzFFNDM4NTlEMDA3MUMwRUMg
LyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCisJCQkJNDFGRkQyQzAyNzU2M0RGRjAwNTAx
QkJGIC8qIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5oICovLAorCQkJCTQxRkZEMkMyMjc1NjNF
MDAwMDUwMUJCRiAvKiBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIubW0gKi8sCiAJCQkJMDczQjg3
NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLAogCQkJCTA3
M0I4NzY0MUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UubW0gKi8sCiAJ
CQkJMDczQjg3NTcxRTQwRENGRDAwNzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5j
cHAgKi8sCkBAIC0zMzE0OSw2ICszMzE1Niw3IEBACiAJCQkJRkQzMTYwODYxMkIwMjZGNzAwQzFB
MzU5IC8qIEF1ZGlvUmVzYW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4ODEyQjAy
NkY3MDBDMUEzNTkgLyogQXVkaW9SZXNhbXBsZXJLZXJuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3M0I4NzY3MUU0Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQxRkZEMkMzMjc1NjNFMEQwMDUwMUJCRiAvKiBBdWRpb1NhbXBsZURh
dGFDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0I4NzY5MUU0Mzg1QUMwMDcxQzBF
QyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEOEM0NkVD
MTU0NjA4RTcwMEE1OTEwQyAvKiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQTc5ODJBMTcwQTNEMDAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtMzgyMjEsNiArMzgyMjksNyBAQAogCQkJCTJEOUJGNzQzMURCRkRDM0Uw
MDdBN0Q5OSAvKiBNZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
QUNDMDc5ODI1QzcyNjc3MDBEQzYzODYgLyogTWVkaWFLZXlTeXN0ZW1Db250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTlBQ0MwNzk2MjVDNzI1RUUwMERDNjM4NiAvKiBNZWRpYUtleVN5
c3RlbVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGRkQyQzYyNzU2NTczRTAwNTAx
QkJGIC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDREM4QjVBMjE4MDQ2MzQ3MDAxNkU2ODUgLyogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAw
OTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3
NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0zODg1MCw2ICszODg1OSw3IEBACiAJCQkJN0NFNjgzNDQxOTIxNDNBODAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1l
c3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAwNDZFRTM4IC8q
IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDFG
RkQyQzQyNzU2NTcwRjAwNTAxQkJGIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTI2RjlBODM4MThBMDQ2QUMwMEFFQjg4QSAvKiBWaWV3cG9ydENvbmZpZ3Vy
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFRDFDM0MyNENEMzA1NzAwOTM0RTEyIC8q
IFZQOVV0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0ODMyQjExODdGNjFF
MTAwREE2M0E2IC8qIFdBS0FwcEtpdFN0dWJzLm0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNvbnZl
cnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVE
YXRhQ29udmVydGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc4ZGJhMDMxOTI4YTM4MjUwMWZiMWQyY2M3ZWFj
MTU4ZjUzZmNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KwordHlwZWRlZiBzdHJ1Y3QgQXVkaW9CdWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsKK3R5cGVk
ZWYgc3RydWN0IE9wYXF1ZUF1ZGlvQ29udmVydGVyKiBBdWRpb0NvbnZlcnRlclJlZjsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q7CitjbGFzcyBD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CitjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKKworY2xh
c3MgQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIoKSA9IGRlZmF1bHQ7Cisg
ICAgfkF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcigpOworCisgICAgT1NTdGF0dXMgc2V0Rm9ybWF0
cyhjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGlucHV0RGVzY3JpcHRpb24sIGNvbnN0
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3V0cHV0RGVzY3JpcHRpb24pOworICAgIGJvb2wg
dXBkYXRlQnVmZmVyZWRBbW91bnQoc2l6ZV90IGN1cnJlbnRCdWZmZXJlZEFtb3VudCk7CisgICAg
T1NTdGF0dXMgY29udmVydChjb25zdCBBdWRpb0J1ZmZlckxpc3QmLCBBdWRpb1NhbXBsZUJ1ZmZl
ckxpc3QmLCBzaXplX3Qgc2FtcGxlQ291bnQpOworICAgIHNpemVfdCByZWd1bGFyQnVmZmVyU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVndWxhckJ1ZmZlclNpemU7IH0KKworcHJpdmF0ZToKKyAg
ICBzaXplX3QgbV9oaWdoQnVmZmVyU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9yZWd1bGFySGln
aEJ1ZmZlclNpemUgeyAwIH07CisgICAgc2l6ZV90IG1fcmVndWxhckJ1ZmZlclNpemUgeyAwIH07
CisgICAgc2l6ZV90IG1fcmVndWxhckxvd0J1ZmZlclNpemUgeyAwIH07CisgICAgc2l6ZV90IG1f
bG93QnVmZmVyU2l6ZSB7IDAgfTsKKworICAgIEF1ZGlvQ29udmVydGVyUmVmIG1fbG93Q29udmVy
dGVyIHsgbnVsbHB0ciB9OworICAgIEF1ZGlvQ29udmVydGVyUmVmIG1fcmVndWxhckNvbnZlcnRl
ciB7IG51bGxwdHIgfTsKKyAgICBBdWRpb0NvbnZlcnRlclJlZiBtX2hpZ2hDb252ZXJ0ZXIgeyBu
dWxscHRyIH07CisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgbV9zZWxlY3RlZENvbnZlcnRlciB7IG51
bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNv
bnZlcnRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTVlNTc1MzMzNjRmZDk1ZTI4MzdmMGJjMzgxYzgwNTcw
Y2U0ZDdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLm1tCkBAIC0wLDAgKzEsMTIwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCIKKworI2ltcG9ydCAiQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmgiCisjaW1wb3J0IDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0
ZXIuaD4KKyNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6fkF1ZGlvU2FtcGxlRGF0
YUNvbnZlcnRlcigpCit7CisgICAgaWYgKG1fbG93Q29udmVydGVyKQorICAgICAgICBQQUw6OkF1
ZGlvQ29udmVydGVyRGlzcG9zZShtX2xvd0NvbnZlcnRlcik7CisgICAgaWYgKG1fcmVndWxhckNv
bnZlcnRlcikKKyAgICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9yZWd1bGFyQ29u
dmVydGVyKTsKKyAgICBpZiAobV9oaWdoQ29udmVydGVyKQorICAgICAgICBQQUw6OkF1ZGlvQ29u
dmVydGVyRGlzcG9zZShtX2hpZ2hDb252ZXJ0ZXIpOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBs
ZURhdGFDb252ZXJ0ZXI6OnNldEZvcm1hdHMoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBpbnB1dERlc2NyaXB0aW9uLCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG91dHB1
dERlc2NyaXB0aW9uKQoreworICAgIGNvbnN0ZXhwciBkb3VibGUgYnVmZmVyMTAwbXMgPSAwLjEw
MDsKKyAgICBjb25zdGV4cHIgZG91YmxlIGJ1ZmZlcjYwbXMgPSAwLjA2MDsKKyAgICBjb25zdGV4
cHIgZG91YmxlIGJ1ZmZlcjUwbXMgPSAwLjA1MDsKKyAgICBjb25zdGV4cHIgZG91YmxlIGJ1ZmZl
cjQwbXMgPSAwLjA0MDsKKyAgICBjb25zdGV4cHIgZG91YmxlIGJ1ZmZlcjIwbXMgPSAwLjAyMDsK
KyAgICBtX2hpZ2hCdWZmZXJTaXplID0gb3V0cHV0RGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICog
YnVmZmVyMTAwbXM7CisgICAgbV9yZWd1bGFySGlnaEJ1ZmZlclNpemUgPSBvdXRwdXREZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCkgKiBidWZmZXI2MG1zOworICAgIG1fcmVndWxhckJ1ZmZlclNpemUg
PSBvdXRwdXREZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiBidWZmZXI1MG1zOworICAgIG1fcmVn
dWxhckxvd0J1ZmZlclNpemUgPSBvdXRwdXREZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiBidWZm
ZXI0MG1zOworICAgIG1fbG93QnVmZmVyU2l6ZSA9IG91dHB1dERlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKSAqIGJ1ZmZlcjIwbXM7CisKKyAgICBtX3NlbGVjdGVkQ29udmVydGVyID0gbnVsbHB0cjsK
KworICAgIGlmIChtX2xvd0NvbnZlcnRlcikgeworICAgICAgICBQQUw6OkF1ZGlvQ29udmVydGVy
RGlzcG9zZShtX2xvd0NvbnZlcnRlcik7CisgICAgICAgIG1fbG93Q29udmVydGVyID0gbnVsbHB0
cjsKKyAgICB9CisgICAgaWYgKG1fcmVndWxhckNvbnZlcnRlcikgeworICAgICAgICBQQUw6OkF1
ZGlvQ29udmVydGVyRGlzcG9zZShtX3JlZ3VsYXJDb252ZXJ0ZXIpOworICAgICAgICBtX3JlZ3Vs
YXJDb252ZXJ0ZXIgPSBudWxscHRyOworICAgIH0KKyAgICBpZiAobV9oaWdoQ29udmVydGVyKSB7
CisgICAgICAgIFBBTDo6QXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1faGlnaENvbnZlcnRlcik7Cisg
ICAgICAgIG1faGlnaENvbnZlcnRlciA9IG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBjb252
ZXJ0ZXJPdXRwdXREZXNjcmlwdGlvbiA9IG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0
aW9uKCk7CisgICAgY29uc3RleHByIGRvdWJsZSBzbGlnaHRseUhpZ2hlclBpdGNoID0gMS4wNTsK
KyAgICBjb252ZXJ0ZXJPdXRwdXREZXNjcmlwdGlvbi5tU2FtcGxlUmF0ZSA9IHNsaWdodGx5SGln
aGVyUGl0Y2ggKiBvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLm1TYW1wbGVS
YXRlOworICAgIGF1dG8gZXJyID0gUEFMOjpBdWRpb0NvbnZlcnRlck5ldygmaW5wdXREZXNjcmlw
dGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmY29udmVydGVyT3V0cHV0RGVzY3JpcHRpb24sICZt
X2xvd0NvbnZlcnRlcik7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIGVycjsKKworICAg
IGNvbnN0ZXhwciBkb3VibGUgc2xpZ2h0bHlMb3dlclBpdGNoID0gMC45NTsKKyAgICBjb252ZXJ0
ZXJPdXRwdXREZXNjcmlwdGlvbi5tU2FtcGxlUmF0ZSA9IHNsaWdodGx5TG93ZXJQaXRjaCAqIG91
dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkubVNhbXBsZVJhdGU7CisgICAgZXJy
ID0gUEFMOjpBdWRpb0NvbnZlcnRlck5ldygmaW5wdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlw
dGlvbigpLCAmY29udmVydGVyT3V0cHV0RGVzY3JpcHRpb24sICZtX2hpZ2hDb252ZXJ0ZXIpOwor
ICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBlcnI7CisKKyAgICBpZiAoaW5wdXREZXNjcmlw
dGlvbiA9PSBvdXRwdXREZXNjcmlwdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBlcnIg
PSBQQUw6OkF1ZGlvQ29udmVydGVyTmV3KCZpbnB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0
aW9uKCksICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmbV9yZWd1bGFy
Q29udmVydGVyKTsKKyAgICBpZiAoZXJyKQorICAgICAgICByZXR1cm4gZXJyOworCisgICAgbV9z
ZWxlY3RlZENvbnZlcnRlciA9IG1fcmVndWxhckNvbnZlcnRlcjsKKyAgICByZXR1cm4gZXJyOwor
fQorCitib29sIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6dXBkYXRlQnVmZmVyZWRBbW91bnQo
c2l6ZV90IGN1cnJlbnRCdWZmZXJlZEFtb3VudCkKK3sKKyAgICBpZiAoY3VycmVudEJ1ZmZlcmVk
QW1vdW50KSB7CisgICAgICAgIGlmIChtX3NlbGVjdGVkQ29udmVydGVyID09IG1fcmVndWxhckNv
bnZlcnRlcikgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRCdWZmZXJlZEFtb3VudCA8PSBtX2xv
d0J1ZmZlclNpemUpCisgICAgICAgICAgICAgICAgbV9zZWxlY3RlZENvbnZlcnRlciA9IG1fbG93
Q29udmVydGVyOworICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudEJ1ZmZlcmVkQW1vdW50ID49
IG1faGlnaEJ1ZmZlclNpemUpCisgICAgICAgICAgICAgICAgbV9zZWxlY3RlZENvbnZlcnRlciA9
IG1faGlnaENvbnZlcnRlcjsKKyAgICAgICAgfSBlbHNlIGlmIChtX3NlbGVjdGVkQ29udmVydGVy
ID09IG1faGlnaENvbnZlcnRlcikgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRCdWZmZXJlZEFt
b3VudCA8IG1fcmVndWxhckxvd0J1ZmZlclNpemUpCisgICAgICAgICAgICAgICAgbV9zZWxlY3Rl
ZENvbnZlcnRlciA9IG1fcmVndWxhckNvbnZlcnRlcjsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJy
ZW50QnVmZmVyZWRBbW91bnQgPiBtX3JlZ3VsYXJIaWdoQnVmZmVyU2l6ZSkKKyAgICAgICAgICAg
IG1fc2VsZWN0ZWRDb252ZXJ0ZXIgPSBtX3JlZ3VsYXJDb252ZXJ0ZXI7CisgICAgfQorICAgIHJl
dHVybiAhIW1fc2VsZWN0ZWRDb252ZXJ0ZXI7Cit9CisKK09TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0
YUNvbnZlcnRlcjo6Y29udmVydChjb25zdCBBdWRpb0J1ZmZlckxpc3QmIGlucHV0QnVmZmVyLCBB
dWRpb1NhbXBsZUJ1ZmZlckxpc3QmIG91dHB1dEJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50KQor
eworICAgIG91dHB1dEJ1ZmZlci5yZXNldCgpOworICAgIHJldHVybiBvdXRwdXRCdWZmZXIuY29w
eUZyb20oaW5wdXRCdWZmZXIsIHNhbXBsZUNvdW50LCBtX3NlbGVjdGVkQ29udmVydGVyKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAppbmRleCAyY2Qy
MGQ1OGViYmYzN2RiNjVlYzJiZGM4M2RkZDY3Njg2ZTNlYTE5Li4zZDU4MTRlMDhjNTMzMDVhOTAx
YTY0YzRjMDQ5ZTJlODQ3MmVkM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaApAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YUNvbnZl
cnRlci5oIgogI2luY2x1ZGUgIkNBUmluZ0J1ZmZlci5oIgogI2luY2x1ZGUgPENvcmVBdWRpby9D
b3JlQXVkaW9UeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTEwMywx
MiArMTA0LDE1IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9sYXN0UHVzaGVkU2FtcGxlQ291
bnQgeyAwIH07CiAgICAgc2l6ZV90IG1fd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQgeyAyIH07CiAg
ICAgTWVkaWFUaW1lIG1fZXhwZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZSB7IE1lZGlhVGltZTo6
aW52YWxpZFRpbWUoKSB9OwotICAgIGJvb2wgbV9pc0ZpcnN0UHVsbCB7IHRydWUgfTsKKyAgICB1
aW50NjRfdCBtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSB7IDAgfTsKIAotICAg
IE1lZGlhVGltZSBtX2lucHV0U2FtcGxlT2Zmc2V0OworICAgIGludDY0X3QgbV9jb252ZXJ0ZXJJ
bnB1dE9mZnNldCB7IDAgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1faW5wdXRTYW1w
bGVPZmZzZXQ7CiAgICAgaW50NjRfdCBtX291dHB1dFNhbXBsZU9mZnNldCB7IDAgfTsKKyAgICB1
aW50NjRfdCBtX2xhc3RCdWZmZXJlZEFtb3VudCB7IDAgfTsKKworICAgIEF1ZGlvU2FtcGxlRGF0
YUNvbnZlcnRlciBtX2NvbnZlcnRlcjsKIAotICAgIEF1ZGlvQ29udmVydGVyUmVmIG1fY29udmVy
dGVyOwogICAgIFJlZlB0cjxBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q+IG1fc2NyYXRjaEJ1ZmZlcjsK
IAogICAgIFVuaXF1ZVJlZjxDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKQEAgLTExNywxMCAr
MTIxLDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZvbHVtZSB7IDEuMCB9OwogICAgIGJvb2wg
bV9tdXRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVP
ZmZzZXQgeyB0cnVlIH07Ci0gICAgdWludDY0X3QgbV9lbmRGcmFtZVdoZW5Ob3RFbm91Z2hEYXRh
IHsgMCB9OwogCiAgICAgYm9vbCBtX2lzSW5OZWVkT2ZNb3JlRGF0YSB7IGZhbHNlIH07Ci0KICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsK
ICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0K
aW5kZXggZjAxMGQzY2NjYmVhNTU3NTU4MmNhZDQ0YzNmZDJhMjE0YWM2MmYyYy4uZWViODdjNmQy
NWEyMTUzNDdjMDEwY2FmNmNmYTdjZTYxNTczNmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01MSw3ICs1MSw2IEBAIFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6Y3JlYXRlKHNpemVfdCBtYXhpbXVtU2FtcGxlQ291CiAKIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlKHNpemVfdCBtYXhpbXVtU2FtcGxlQ291bnQs
IExvZ2dlckhlbHBlciYgbG9nZ2VySGVscGVyLCBzaXplX3Qgd2FpdFRvU3RhcnRGb3JQdXNoQ291
bnQpCiAgICAgOiBtX3dhaXRUb1N0YXJ0Rm9yUHVzaENvdW50KHdhaXRUb1N0YXJ0Rm9yUHVzaENv
dW50KQotICAgICwgbV9pbnB1dFNhbXBsZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkp
CiAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxDQVJpbmdCdWZmZXI+KCkpCiAgICAg
LCBtX21heGltdW1TYW1wbGVDb3VudChtYXhpbXVtU2FtcGxlQ291bnQpCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECkBAIC02NiwzMSArNjUsMTIgQEAgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpB
dWRpb1NhbXBsZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGUK
IAogQXVkaW9TYW1wbGVEYXRhU291cmNlOjp+QXVkaW9TYW1wbGVEYXRhU291cmNlKCkKIHsKLSAg
ICBpZiAobV9jb252ZXJ0ZXIpCi0gICAgICAgIFBBTDo6QXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1f
Y29udmVydGVyKTsKIH0KIAogT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXR1cENv
bnZlcnRlcigpCiB7CiAgICAgQVNTRVJUKG1faW5wdXREZXNjcmlwdGlvbiAmJiBtX291dHB1dERl
c2NyaXB0aW9uKTsKLQotICAgIGlmIChtX2NvbnZlcnRlcikgewotICAgICAgICBQQUw6OkF1ZGlv
Q29udmVydGVyRGlzcG9zZShtX2NvbnZlcnRlcik7Ci0gICAgICAgIG1fY29udmVydGVyID0gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoKm1faW5wdXREZXNjcmlwdGlvbiA9PSAqbV9vdXRwdXRE
ZXNjcmlwdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBPU1N0YXR1cyBlcnIgPSBQQUw6
OkF1ZGlvQ29udmVydGVyTmV3KCZtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9u
KCksICZtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCAmbV9jb252ZXJ0
ZXIpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZXJyXSB7Ci0gICAgICAgICAgICBF
UlJPUl9MT0coIkF1ZGlvQ29udmVydGVyTmV3IHJldHVybmVkIGVycm9yICIsIGVycik7Ci0gICAg
ICAgIH0pOwotICAgIH0KLQotICAgIHJldHVybiBlcnI7Ci0KKyAgICByZXR1cm4gbV9jb252ZXJ0
ZXIuc2V0Rm9ybWF0cygqbV9pbnB1dERlc2NyaXB0aW9uLCAqbV9vdXRwdXREZXNjcmlwdGlvbik7
CiB9CiAKIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0SW5wdXRGb3JtYXQoY29u
c3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQpCkBAIC0xMDksNiArODksOSBAQCBP
U1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mCiAgICAgQVNTRVJUKG1faW5wdXREZXNjcmlwdGlvbik7CiAg
ICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKKyAgICBpZiAobV9vdXRwdXRE
ZXNjcmlwdGlvbiAmJiAqbV9vdXRwdXREZXNjcmlwdGlvbiA9PSBmb3JtYXQpCisgICAgICAgIHJl
dHVybiAwOworCiAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiB7IGZvcm1hdCB9OwogCiAgICAgewpAQCAtMTE3LDYgKzEwMCw3IEBAIE9TU3RhdHVzIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYKICAgICAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRU
aHJlYWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zOwogICAgICAgICBtX3JpbmdCdWZm
ZXItPmFsbG9jYXRlKGZvcm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVD
b3VudCkpOwogICAgICAgICBtX3NjcmF0Y2hCdWZmZXIgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6
OmNyZWF0ZShtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX21heGlt
dW1TYW1wbGVDb3VudCk7CisgICAgICAgIG1fY29udmVydGVySW5wdXRPZmZzZXQgPSAwOwogICAg
IH0KIAogICAgIHJldHVybiBzZXR1cENvbnZlcnRlcigpOwpAQCAtMTQwLDM0ICsxMjQsMzQgQEAg
TWVkaWFUaW1lIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6aG9zdFRpbWUoKSBjb25zdAogCiB2b2lk
IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXNJbnRlcm5hbChjb25zdCBBdWRpb0J1
ZmZlckxpc3QmIGJ1ZmZlckxpc3QsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
c2l6ZV90IHNhbXBsZUNvdW50KQogewotICAgIE1lZGlhVGltZSBzYW1wbGVUaW1lID0gcHJlc2Vu
dGF0aW9uVGltZTsKKyAgICBpbnQ2NF90IHJpbmdCdWZmZXJJbmRleFRvV3JpdGUgPSBwcmVzZW50
YXRpb25UaW1lLnRpbWVWYWx1ZSgpOwogCisgICAgaW50NjRfdCBvZmZzZXQgPSAwOwogICAgIGNv
bnN0IEF1ZGlvQnVmZmVyTGlzdCogc2FtcGxlQnVmZmVyTGlzdDsKLSAgICBpZiAobV9jb252ZXJ0
ZXIpIHsKLSAgICAgICAgbV9zY3JhdGNoQnVmZmVyLT5yZXNldCgpOwotICAgICAgICBPU1N0YXR1
cyBlcnIgPSBtX3NjcmF0Y2hCdWZmZXItPmNvcHlGcm9tKGJ1ZmZlckxpc3QsIHNhbXBsZUNvdW50
LCBtX2NvbnZlcnRlcik7CisKKyAgICBpZiAobV9jb252ZXJ0ZXIudXBkYXRlQnVmZmVyZWRBbW91
bnQobV9sYXN0QnVmZmVyZWRBbW91bnQpKSB7CisgICAgICAgIE9TU3RhdHVzIGVyciA9IG1fY29u
dmVydGVyLmNvbnZlcnQoYnVmZmVyTGlzdCwgKm1fc2NyYXRjaEJ1ZmZlciwgc2FtcGxlQ291bnQp
OwogICAgICAgICBpZiAoZXJyKQogICAgICAgICAgICAgcmV0dXJuOwotCisgICAgICAgIG9mZnNl
dCA9IG1fc2NyYXRjaEJ1ZmZlci0+c2FtcGxlQ291bnQoKSAtIHNhbXBsZUNvdW50OwogICAgICAg
ICBzYW1wbGVCdWZmZXJMaXN0ID0gbV9zY3JhdGNoQnVmZmVyLT5idWZmZXJMaXN0KCkubGlzdCgp
OwogICAgICAgICBzYW1wbGVDb3VudCA9IG1fc2NyYXRjaEJ1ZmZlci0+c2FtcGxlQ291bnQoKTsK
LSAgICAgICAgc2FtcGxlVGltZSA9IHByZXNlbnRhdGlvblRpbWUudG9UaW1lU2NhbGUobV9vdXRw
dXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZFplcm8pOwogICAgIH0gZWxzZQogICAgICAgICBzYW1wbGVCdWZmZXJMaXN0ID0gJmJ1ZmZl
ckxpc3Q7CiAKLSAgICBpZiAobV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lLmlzVmFsaWQo
KSAmJiBhYnMobV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lIC0gc2FtcGxlVGltZSkudGlt
ZVZhbHVlKCkgPT0gMSkKLSAgICAgICAgc2FtcGxlVGltZSA9IG1fZXhwZWN0ZWROZXh0UHVzaGVk
U2FtcGxlVGltZTsKLSAgICBtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUgPSBzYW1wbGVU
aW1lICsgTWVkaWFUaW1lKHNhbXBsZUNvdW50LCBzYW1wbGVUaW1lLnRpbWVTY2FsZSgpKTsKKyAg
ICBpZiAoIW1faW5wdXRTYW1wbGVPZmZzZXQpIHsKKyAgICAgICAgbV9pbnB1dFNhbXBsZU9mZnNl
dCA9IDEgLSByaW5nQnVmZmVySW5kZXhUb1dyaXRlOworICAgICAgICByaW5nQnVmZmVySW5kZXhU
b1dyaXRlID0gMTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmluZ0J1ZmZlckluZGV4VG9Xcml0ZSAr
PSAqbV9pbnB1dFNhbXBsZU9mZnNldDsKKworICAgIGlmIChtX2NvbnZlcnRlcklucHV0T2Zmc2V0
KQorICAgICAgICByaW5nQnVmZmVySW5kZXhUb1dyaXRlICs9IG1fY29udmVydGVySW5wdXRPZmZz
ZXQ7CiAKLSAgICBpZiAobV9pbnB1dFNhbXBsZU9mZnNldCA9PSBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCkpCi0gICAgICAgIG1faW5wdXRTYW1wbGVPZmZzZXQgPSBNZWRpYVRpbWUoMSAtIHNhbXBs
ZVRpbWUudGltZVZhbHVlKCksIHNhbXBsZVRpbWUudGltZVNjYWxlKCkpOwotICAgIHNhbXBsZVRp
bWUgKz0gbV9pbnB1dFNhbXBsZU9mZnNldDsKKyAgICBpZiAobV9leHBlY3RlZE5leHRQdXNoZWRT
YW1wbGVUaW1lVmFsdWUgJiYgYWJzKChmbG9hdCltX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRp
bWVWYWx1ZSAtIChmbG9hdClyaW5nQnVmZmVySW5kZXhUb1dyaXRlKSA8PSAxKQorICAgICAgICBy
aW5nQnVmZmVySW5kZXhUb1dyaXRlID0gbV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lVmFs
dWU7CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgdWludDY0X3Qgc3RhcnRGcmFtZTEgPSAwOwot
ICAgIHVpbnQ2NF90IGVuZEZyYW1lMSA9IDA7Ci0gICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50
RnJhbWVCb3VuZHMoc3RhcnRGcmFtZTEsIGVuZEZyYW1lMSk7Ci0jZW5kaWYKKyAgICBtX2V4cGVj
dGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSA9IHJpbmdCdWZmZXJJbmRleFRvV3JpdGUgKyBz
YW1wbGVDb3VudDsKIAogICAgIGlmIChtX2lzSW5OZWVkT2ZNb3JlRGF0YSkgewogICAgICAgICBt
X2lzSW5OZWVkT2ZNb3JlRGF0YSA9IGZhbHNlOwpAQCAtMTc2LDcgKzE2MCwxMCBAQCB2b2lkIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXNJbnRlcm5hbChjb25zdCBBdWRpb0J1ZmZl
ckxpc3QmIGJ1ZmZlckxpcwogICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlmaWVyLCAi
bmVlZGVkIG1vcmUgZGF0YSwgcHVzaGluZyAiLCBzYW1wbGVDb3VudCwgIiBzYW1wbGVzIik7CiAg
ICAgICAgIH0pOwogICAgIH0KLSAgICBtX3JpbmdCdWZmZXItPnN0b3JlKHNhbXBsZUJ1ZmZlckxp
c3QsIHNhbXBsZUNvdW50LCBzYW1wbGVUaW1lLnRpbWVWYWx1ZSgpKTsKKworICAgIG1fcmluZ0J1
ZmZlci0+c3RvcmUoc2FtcGxlQnVmZmVyTGlzdCwgc2FtcGxlQ291bnQsIHJpbmdCdWZmZXJJbmRl
eFRvV3JpdGUpOworCisgICAgbV9jb252ZXJ0ZXJJbnB1dE9mZnNldCArPSBvZmZzZXQ7CiAgICAg
bV9sYXN0UHVzaGVkU2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsKIH0KIApAQCAtMTk0LDIxICsx
ODEsNiBAQCB2b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXMoY29uc3QgTWVk
aWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQbGF0ZgogICAgIHB1c2hTYW1wbGVzSW50ZXJuYWwo
KmRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRhKS5saXN0KCksIHNhbXBsZVRp
bWUsIHNhbXBsZUNvdW50KTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQ2NF90IGNvbXB1dGVPZmZz
ZXREZWxheShkb3VibGUgc2FtcGxlUmF0ZSwgdWludDY0X3QgbGFzdFB1c2hlZFNhbXBsZUNvdW50
KQotewotICAgIGNvbnN0IGRvdWJsZSB0d2VudHlNUyA9IC4wMjsKLSAgICBjb25zdCBkb3VibGUg
dGVuTVMgPSAuMDE7Ci0gICAgY29uc3QgZG91YmxlIGZpdmVNUyA9IC4wMDU7Ci0KLSAgICBpZiAo
bGFzdFB1c2hlZFNhbXBsZUNvdW50ID4gc2FtcGxlUmF0ZSAqIHR3ZW50eU1TKQotICAgICAgICBy
ZXR1cm4gc2FtcGxlUmF0ZSAqIHR3ZW50eU1TOwotICAgIGlmIChsYXN0UHVzaGVkU2FtcGxlQ291
bnQgPiBzYW1wbGVSYXRlICogdGVuTVMpCi0gICAgICAgIHJldHVybiBzYW1wbGVSYXRlICogdGVu
TVM7Ci0gICAgaWYgKGxhc3RQdXNoZWRTYW1wbGVDb3VudCA+IHNhbXBsZVJhdGUgKiBmaXZlTVMp
Ci0gICAgICAgIHJldHVybiBzYW1wbGVSYXRlICogZml2ZU1TOwotICAgIHJldHVybiAwOwotfQot
CiBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXMoQXVkaW9CdWZmZXJMaXN0
JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDb3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBkb3VibGUg
Lypob3N0VGltZSovLCBQdWxsTW9kZSBtb2RlKQogewogICAgIHNpemVfdCBieXRlQ291bnQgPSBz
YW1wbGVDb3VudCAqIG1fb3V0cHV0RGVzY3JpcHRpb24tPmJ5dGVzUGVyRnJhbWUoKTsKQEAgLTIy
MCw3ICsxOTIsNyBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXMoQXVk
aW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDbwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKG1fbXV0ZWQgfHwgbV9pbnB1dFNhbXBsZU9mZnNldCA9PSBN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpIHsKKyAgICBpZiAobV9tdXRlZCB8fCAhbV9pbnB1dFNh
bXBsZU9mZnNldCkgewogICAgICAgICBpZiAobW9kZSAhPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6
Ok1peCkKICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIs
IGJ5dGVDb3VudCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMCwzMyArMjAyLDE5IEBA
IGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZlckxpc3Qm
IGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvCiAgICAgdWludDY0X3QgZW5kRnJhbWUgPSAwOwogICAg
IG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1l
KTsKIAorICAgIEFTU0VSVChtX3dhaXRUb1N0YXJ0Rm9yUHVzaENvdW50KTsKKworICAgIHVpbnQ2
NF90IGJ1ZmZlcmVkID0gZW5kRnJhbWUgLSBzdGFydEZyYW1lOwogICAgIGlmIChtX3Nob3VsZENv
bXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQpIHsKLSAgICAgICAgdWludDY0X3QgYnVmZmVyZWQgPSBl
bmRGcmFtZSAtIHN0YXJ0RnJhbWU7Ci0gICAgICAgIGlmIChtX2lzRmlyc3RQdWxsKSB7Ci0gICAg
ICAgICAgICBhdXRvIG1pbmltdW1CdWZmZXIgPSBtX3dhaXRUb1N0YXJ0Rm9yUHVzaENvdW50ICog
bV9sYXN0UHVzaGVkU2FtcGxlQ291bnQ7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyZWQgPj0gbWlu
aW11bUJ1ZmZlcikgewotICAgICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gc3Rh
cnRGcmFtZSAtIHRpbWVTdGFtcDsKLSAgICAgICAgICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRw
dXRTYW1wbGVPZmZzZXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtX2VuZEZyYW1lV2hlbk5v
dEVub3VnaERhdGEgPSAwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAv
LyBXZSB3YWl0IGZvciBvbmUgY2h1bmsgb2YgdmFsdWUgYmVmb3JlIHN0YXJ0aW5nIHRvIHBsYXku
Ci0gICAgICAgICAgICAgICAgaWYgKG1vZGUgIT0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpNaXgp
Ci0gICAgICAgICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZm
ZXIsIGJ5dGVDb3VudCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGJ1ZmZlcmVkIDwgc2FtcGxl
Q291bnQgKiAyIHx8IChtX2VuZEZyYW1lV2hlbk5vdEVub3VnaERhdGEgJiYgbV9lbmRGcmFtZVdo
ZW5Ob3RFbm91Z2hEYXRhID09IGVuZEZyYW1lKSkgewotICAgICAgICAgICAgICAgIGlmIChtb2Rl
ICE9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6TWl4KQotICAgICAgICAgICAgICAgICAgICBBdWRp
b1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoYnVmZmVyLCBieXRlQ291bnQpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9zaG91
bGRDb21wdXRlT3V0cHV0U2FtcGxlT2Zmc2V0ID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2VuZEZy
YW1lV2hlbk5vdEVub3VnaERhdGEgPSAwOwotCi0gICAgICAgICAgICBtX291dHB1dFNhbXBsZU9m
ZnNldCA9IChlbmRGcmFtZSAtIHNhbXBsZUNvdW50KSAtIHRpbWVTdGFtcDsKLSAgICAgICAgICAg
IG1fb3V0cHV0U2FtcGxlT2Zmc2V0IC09IGNvbXB1dGVPZmZzZXREZWxheShtX291dHB1dERlc2Ny
aXB0aW9uLT5zYW1wbGVSYXRlKCksIG1fbGFzdFB1c2hlZFNhbXBsZUNvdW50KTsKKyAgICAgICAg
YXV0byBtaW5pbXVtQnVmZmVyID0gc3RkOjptYXg8c2l6ZV90PihtX3dhaXRUb1N0YXJ0Rm9yUHVz
aENvdW50ICogbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQsIG1fY29udmVydGVyLnJlZ3VsYXJCdWZm
ZXJTaXplKCkpOworICAgICAgICBpZiAoYnVmZmVyZWQgPCBtaW5pbXVtQnVmZmVyKSB7CisgICAg
ICAgICAgICAvLyBXZSB3YWl0IGZvciBvbmUgY2h1bmsgb2YgdmFsdWUgYmVmb3JlIHN0YXJ0aW5n
IHRvIHBsYXkuCisgICAgICAgICAgICBpZiAobW9kZSAhPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6
Ok1peCkKKyAgICAgICAgICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoYnVm
ZmVyLCBieXRlQ291bnQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Cisg
ICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gZW5kRnJhbWUgLSB0aW1lU3RhbXAgLSBtaW5p
bXVtQnVmZmVyOworICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSBm
YWxzZTsKICAgICB9CiAKICAgICB0aW1lU3RhbXAgKz0gbV9vdXRwdXRTYW1wbGVPZmZzZXQ7CkBA
IC0yNjksMjMgKzIyNywxMyBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBs
ZXMoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDbwogICAgICAgICAgICAg
ICAgIEVSUk9SX0xPRyhsb2dJZGVudGlmaWVyLCAibmVlZCBtb3JlIGRhdGEsIHNhbXBsZSAiLCB0
aW1lU3RhbXAsICIgd2l0aCBvZmZzZXQgIiwgb3V0cHV0U2FtcGxlT2Zmc2V0LCAiLCB0cnlpbmcg
dG8gZ2V0ICIsIHNhbXBsZUNvdW50LCAiIHNhbXBsZXMsIGJ1dCBub3QgY29tcGxldGVseSBpbiBy
YW5nZSBbIiwgc3RhcnRGcmFtZSwgIiAuLiAiLCBlbmRGcmFtZSwgIl0iKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9Ci0gICAgICAgIGlmICh0aW1lU3RhbXAgPCBzdGFydEZyYW1lIHx8IHRp
bWVTdGFtcCA+PSBlbmRGcmFtZSkgewotICAgICAgICAgICAgLy8gV2UgYXJlIG91dCBvZiB0aGUg
d2luZG93LCBsZXQncyByZXN0YXJ0IHRoZSBvZmZzZXQgY29tcHV0YXRpb24uCi0gICAgICAgICAg
ICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSB0cnVlOwotCi0gICAgICAgICAg
ICBpZiAodGltZVN0YW1wID49IGVuZEZyYW1lKQotICAgICAgICAgICAgICAgIG1fZW5kRnJhbWVX
aGVuTm90RW5vdWdoRGF0YSA9IGVuZEZyYW1lOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gV2UgYXJlIHRvbyBjbG9zZSBmcm9tIGVuZEZyYW1lLCBsZXQncyB3YWl0IGZvciBtb3Jl
IGRhdGEgdG8gYmUgcHVzaGVkLgotICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgLT0g
c2FtcGxlQ291bnQ7Ci0gICAgICAgIH0KKyAgICAgICAgbV9zaG91bGRDb21wdXRlT3V0cHV0U2Ft
cGxlT2Zmc2V0ID0gdHJ1ZTsKICAgICAgICAgaWYgKG1vZGUgIT0gQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpNaXgpCiAgICAgICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoYnVm
ZmVyLCBieXRlQ291bnQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9p
c0ZpcnN0UHVsbCA9IGZhbHNlOwotCisgICAgbV9sYXN0QnVmZmVyZWRBbW91bnQgPSBlbmRGcmFt
ZSAtIHRpbWVTdGFtcCAtIHNhbXBsZUNvdW50OwogICAgIHJldHVybiBwdWxsU2FtcGxlc0ludGVy
bmFsKGJ1ZmZlciwgc2FtcGxlQ291bnQsIHRpbWVTdGFtcCwgbW9kZSk7CiB9CiAKQEAgLTMyMCwx
MiArMjY4LDEyIEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsQXZhaWxhYmxlU2Ft
cGxlQ2h1bmsoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpCiAgICAgaWYgKGJ1ZmZlci5tTnVt
YmVyQnVmZmVycyAhPSBtX3JpbmdCdWZmZXItPmNoYW5uZWxDb3VudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAobV9tdXRlZCkKKyAgICBpZiAobV9tdXRlZCB8fCAhbV9pbnB1
dFNhbXBsZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fc2hvdWxk
Q29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCkgewogICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRw
dXRTYW1wbGVPZmZzZXQgPSBmYWxzZTsKLSAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBt
X2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVWYWx1ZSgpICogbV9vdXRwdXREZXNjcmlwdGlvbi0+c2Ft
cGxlUmF0ZSgpIC8gbV9pbnB1dFNhbXBsZU9mZnNldC50aW1lU2NhbGUoKTsKKyAgICAgICAgbV9v
dXRwdXRTYW1wbGVPZmZzZXQgPSAqbV9pbnB1dFNhbXBsZU9mZnNldDsKICAgICB9CiAKICAgICB0
aW1lU3RhbXAgKz0gbV9vdXRwdXRTYW1wbGVPZmZzZXQ7CkBAIC0zNTQsNiArMzAyLDEwIEBAIGJv
b2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsQXZhaWxhYmxlU2FtcGxlc0FzQ2h1bmtzKEF1
ZGlvQnVmZmVyTGlzdCYgYnVmZmVyCiAKICAgICBzdGFydEZyYW1lID0gdGltZVN0YW1wOwogCisg
ICAgQVNTRVJUKGVuZEZyYW1lID49IHN0YXJ0RnJhbWUpOworICAgIGlmIChlbmRGcmFtZSA8IHN0
YXJ0RnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChtX211dGVkKSB7CiAg
ICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIHNhbXBsZUNvdW50
UGVyQ2h1bmsgKiBtX291dHB1dERlc2NyaXB0aW9uLT5ieXRlc1BlckZyYW1lKCkpOwogICAgICAg
ICB3aGlsZSAoZW5kRnJhbWUgLSBzdGFydEZyYW1lID49IHNhbXBsZUNvdW50UGVyQ2h1bmspIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
RUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBw
bGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAxM2E4ZDZiZDlkMTU0ZTYwYzQ5Li44
NDM1NGMwMmZmNGJjODkwZmY4MDNkMmU0MGQ2M2EzZWEyOTFiNGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2Zl
ckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAKICNpbXBvcnQgIkZFQ29tcG9uZW50
VHJhbnNmZXIuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCmluZGV4IDFmMGMwOWYxZDU0
NTMwODc1NTdjMWUyMGIxYThhNTBkZjk5MTBjYWQuLjQyMzQxMTY5ZWRkMGUzZTc0OGU3NzI4OTA1
NTM0MTIzODdjZjZjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9M
b2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaApAQCAtMjUsNiArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJl
ZFVuaXQuaAppbmRleCBhMDU2ODRjNzMyMGJmYmJjYzZkNjFhOWJiZGE2YzFmNjc5NDI2ZmVmLi4x
YTg5NmFiNzM4NTI4NTRiYTc3N2JjNGQxNjZmOWNhMmU1ZGEyYWY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9T
aGFyZWRVbml0LmgKQEAgLTYyLDE1ICs2MiwxNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkZWxh
eVNhbXBsZXMoU2Vjb25kcykgZmluYWw7CiAKKyAgICB2b2lkIHN0YXJ0KCk7CiAgICAgQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZSBzYW1wbGVSYXRlQ2FwYWNpdGllcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoNDQxMDAsIDQ4MDAwKTsgfQogCiAgICAgdm9pZCB0
aWNrKCk7CiAKLSAgICB2b2lkIHJlbmRlcihTZWNvbmRzKTsKKyAgICB2b2lkIHJlbmRlcihNb25v
dG9uaWNUaW1lKTsKICAgICB2b2lkIGVtaXRTYW1wbGVCdWZmZXJzKHVpbnQzMl90IGZyYW1lQ291
bnQpOwogICAgIHZvaWQgcmVjb25maWd1cmUoKTsKIAotICAgIHN0YXRpYyBTZWNvbmRzIHJlbmRl
ckludGVydmFsKCkgeyByZXR1cm4gNjBfbXM7IH0KKyAgICBzdGF0aWMgU2Vjb25kcyByZW5kZXJJ
bnRlcnZhbCgpIHsgcmV0dXJuIDIwX21zOyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQXVk
aW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsKIApAQCAtODMsNiArODQsNyBAQCBwcml2
YXRlOgogCiAgICAgVmVjdG9yPGZsb2F0PiBtX2JpcEJvcEJ1ZmZlcjsKICAgICBib29sIG1faGFz
QXVkaW9Vbml0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2Ug
fTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPE1vY2tBdWRpb1NoYXJlZFVuaXQ+IG1fdGltZXI7CiAg
ICAgTW9ub3RvbmljVGltZSBtX2xhc3RSZW5kZXJUaW1lIHsgTW9ub3RvbmljVGltZTo6bmFuKCkg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrQXVkaW9TaGFyZWRVbml0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQubW0KaW5kZXggNjI3MmE1MzYwMGIwN2JkNDVkMmZk
YmVkOTQxODFiNjBhMmYyMzllYS4uMGRkM2Q3MWNhZTdhNjNiNjM3MjA4ZjI4MzgyMjBlNjU5ZTQy
MTNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tBdWRpb1NoYXJlZFVuaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQubW0KQEAgLTEwMSw4ICsxMDEsOCBAQCBN
b2NrQXVkaW9TaGFyZWRVbml0JiBNb2NrQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKQogfQog
CiBNb2NrQXVkaW9TaGFyZWRVbml0OjpNb2NrQXVkaW9TaGFyZWRVbml0KCkKLSAgICA6IG1fdGlt
ZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTW9ja0F1ZGlvU2hhcmVkVW5pdDo6dGljaykK
LSAgICAsIG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJNb2NrQXVkaW9TaGFyZWRVbml0
IENhcHR1cmUgUXVldWUiKSkKKyAgICA6IG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmTW9ja0F1ZGlvU2hhcmVkVW5pdDo6c3RhcnQpCisgICAgLCBtX3dvcmtRdWV1ZShXb3JrUXVl
dWU6OmNyZWF0ZSgiTW9ja0F1ZGlvU2hhcmVkVW5pdCBDYXB0dXJlIFF1ZXVlIiwgV29ya1F1ZXVl
OjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCiB7CiB9CiAKQEAgLTEyNywxMyArMTI3LDExIEBAIE9T
U3RhdHVzIE1vY2tBdWRpb1NoYXJlZFVuaXQ6OnJlY29uZmlndXJlQXVkaW9Vbml0KCkKICAgICBp
ZiAoIWhhc0F1ZGlvVW5pdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIG1fdGltZXIuc3Rv
cCgpOwogICAgIG1fbGFzdFJlbmRlclRpbWUgPSBNb25vdG9uaWNUaW1lOjpuYW4oKTsKICAgICBt
X3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKICAgICAgICAgcmVjb25maWd1cmUoKTsKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10gewotICAgICAgICAgICAgbV9sYXN0UmVuZGVy
VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICAgICAgbV90aW1lci5zdGFydFJl
cGVhdGluZyhyZW5kZXJJbnRlcnZhbCgpKTsKKyAgICAgICAgICAgIHN0YXJ0SW50ZXJuYWwoKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIDA7CkBAIC0xNDIsNTcgKzE0MCw0NSBA
QCBPU1N0YXR1cyBNb2NrQXVkaW9TaGFyZWRVbml0OjpyZWNvbmZpZ3VyZUF1ZGlvVW5pdCgpCiB2
b2lkIE1vY2tBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXQoKQogewogICAgIG1faGFz
QXVkaW9Vbml0ID0gZmFsc2U7Ci0gICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9pc1Byb2R1Y2lu
Z0RhdGEgPSBmYWxzZTsKICAgICBtX2xhc3RSZW5kZXJUaW1lID0gTW9ub3RvbmljVGltZTo6bmFu
KCk7CiB9CiAKIE9TU3RhdHVzIE1vY2tBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0SW50ZXJuYWwoKQor
eworICAgIHN0YXJ0KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTW9ja0F1ZGlvU2hhcmVk
VW5pdDo6c3RhcnQoKQogewogICAgIGlmICghbV9oYXNBdWRpb1VuaXQpCiAgICAgICAgIG1faGFz
QXVkaW9Vbml0ID0gdHJ1ZTsKIAogICAgIG1fbGFzdFJlbmRlclRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKLSAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHJlbmRlckludGVydmFsKCkpOwot
ICAgIHJldHVybiAwOworICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKKyAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHJlbmRlclRpbWUgPSBtX2xhc3RSZW5kZXJUaW1lXSB7Cisg
ICAgICAgIHJlbmRlcihyZW5kZXJUaW1lKTsKKyAgICB9KTsKIH0KIAogdm9pZCBNb2NrQXVkaW9T
aGFyZWRVbml0OjpzdG9wSW50ZXJuYWwoKQogeworICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFs
c2U7CiAgICAgaWYgKCFtX2hhc0F1ZGlvVW5pdCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fdGlt
ZXIuc3RvcCgpOwogICAgIG1fbGFzdFJlbmRlclRpbWUgPSBNb25vdG9uaWNUaW1lOjpuYW4oKTsK
IH0KIAogYm9vbCBNb2NrQXVkaW9TaGFyZWRVbml0Ojppc1Byb2R1Y2luZ0RhdGEoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3RpbWVyLmlzQWN0aXZlKCk7Ci19Ci0KLXZvaWQgTW9ja0F1ZGlvU2hh
cmVkVW5pdDo6dGljaygpCi17Ci0gICAgaWYgKHN0ZDo6aXNuYW4obV9sYXN0UmVuZGVyVGltZSkp
Ci0gICAgICAgIG1fbGFzdFJlbmRlclRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLQotICAg
IE1vbm90b25pY1RpbWUgbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0KLSAgICBpZiAobV9k
ZWxheVVudGlsKSB7Ci0gICAgICAgIGlmIChtX2RlbGF5VW50aWwgPCBub3cpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fZGVsYXlVbnRpbCA9IE1vbm90b25pY1RpbWUoKTsKLSAgICB9
Ci0KLSAgICBTZWNvbmRzIGRlbHRhID0gbm93IC0gbV9sYXN0UmVuZGVyVGltZTsKLSAgICBtX2xh
c3RSZW5kZXJUaW1lID0gbm93OwotCi0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBk
ZWx0YV0gewotICAgICAgICByZW5kZXIoZGVsdGEpOwotICAgIH0pOworICAgIHJldHVybiBtX2lz
UHJvZHVjaW5nRGF0YTsKIH0KIAogdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0OjpkZWxheVNhbXBs
ZXMoU2Vjb25kcyBkZWx0YSkKIHsKLSAgICBtX2RlbGF5VW50aWwgPSBNb25vdG9uaWNUaW1lOjpu
b3coKSArIGRlbHRhOworICAgIHN0b3BJbnRlcm5hbCgpOworICAgIG1fdGltZXIuc3RhcnRPbmVT
aG90KGRlbHRhKTsKIH0KIAogdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0OjpyZWNvbmZpZ3VyZSgp
CkBAIC0yNDQsOSArMjMwLDI0IEBAIHZvaWQgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6ZW1pdFNhbXBs
ZUJ1ZmZlcnModWludDMyX3QgZnJhbWVDb3VudCkKICAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUo
UEFMOjp0b01lZGlhVGltZShzdGFydFRpbWUpLCAqbV9hdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbihtX3N0cmVhbUZvcm1hdCksIGZyYW1lQ291bnQpOwogfQogCi12b2lk
IE1vY2tBdWRpb1NoYXJlZFVuaXQ6OnJlbmRlcihTZWNvbmRzIGRlbHRhKQordm9pZCBNb2NrQXVk
aW9TaGFyZWRVbml0OjpyZW5kZXIoTW9ub3RvbmljVGltZSByZW5kZXJUaW1lKQogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghaXNQcm9kdWNpbmdEYXRhKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gZGVsdGEgPSByZW5kZXJJbnRlcnZhbCgpOworICAgIGF1
dG8gY3VycmVudFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBhdXRvIG5leHRSZW5k
ZXJUaW1lID0gcmVuZGVyVGltZSArIGRlbHRhOworICAgIFNlY29uZHMgbmV4dFJlbmRlckRlbGF5
ID0gbmV4dFJlbmRlclRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKSAtIGN1cnJlbnRUaW1lLnNlY29u
ZHNTaW5jZUVwb2NoKCk7CisgICAgaWYgKG5leHRSZW5kZXJEZWxheS5zZWNvbmRzKCkgPCAwKSB7
CisgICAgICAgIG5leHRSZW5kZXJUaW1lID0gY3VycmVudFRpbWU7CisgICAgICAgIG5leHRSZW5k
ZXJEZWxheSA9IDBfczsKKyAgICB9CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoQWZ0ZXIobmV4
dFJlbmRlckRlbGF5LCBbdGhpcywgbmV4dFJlbmRlclRpbWVdIHsKKyAgICAgICAgcmVuZGVyKG5l
eHRSZW5kZXJUaW1lKTsKKyAgICB9KTsKKwogICAgIGlmICghbV9hdWRpb0J1ZmZlckxpc3QgfHwg
IW1fYmlwQm9wQnVmZmVyLnNpemUoKSkKICAgICAgICAgcmVjb25maWd1cmUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447239</attachid>
            <date>2021-12-15 09:01:54 -0800</date>
            <delta_ts>2021-12-16 06:33:56 -0800</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-233422-20211215180149.patch</filename>
            <type>text/plain</type>
            <size>39060</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI3OWEzYmRkYTJlMmM1
YWFiYWRjNDQ2ODY5ZjY1OWUwNTA4OWJkZi4uMjBmZTJiMTYxZDE5M2VmNWViMGVkOTVkMzJiZDQ4
NmViZDE0ZDQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTEyLTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBBdWRpb1NhbXBs
ZURhdGFTb3VyY2UgdG8gaW5jcmVhc2UvZGVjcmVhc2UgYnVmZmVyZWQgZGF0YSBwcm9ncmVzc2l2
ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQXVkaW9T
YW1wbGVEYXRhU291cmNlIGRvZXMgdGhlIGxpbmsgYmV0d2VlbiBwdXNoIGF1ZGlvIHNvdXJjZXMg
YW5kIHB1bGwgYXVkaW8gc2lua3MuCisgICAgICAgIEFzIHN1Y2gsIGl0IG5lZWRzIHRvIGRvIGJ1
ZmZlcmluZy4gSWYgYnVmZmVyaW5nIGlzIHRvbyBzbWFsbCwgZGF0YSBtYXkgYmUgbWlzc2luZyBh
bmQgYXVkaW8gZ2xpdGNoZXMgd2lsbCBiZSBoZWFyZC4KKyAgICAgICAgSWYgYnVmZmVyaW5nIGlz
IHRvbyBsYXJnZSwgbGF0ZW5jeSB3aWxsIGJlIGFkZGVkIHdoaWNoIG1pZ2h0IGJlIHVuZGVzaXJh
YmxlLCBlc3BlY2lhbGx5IGlmIGF1ZGlvIGlzIGJlaW5nIHBsYXllZCB3aXRoIHZpZGVvLgorICAg
ICAgICBXZSBnZW5lcmFsbHkgd2FudCBidWZmZXJlZCBhdWRpbyB0byBzdGF5IHdpdGhpbiBhIGNl
cnRhaW4gcmFuZ2UuCisKKyAgICAgICAgVG8gbWFrZSB0aGlzIGhhcHBlbiwgd2hlbiBidWZmZXJp
bmcgaXMgdG9vIGhpZ2gsIHdlIGNvbnZlcnQgdGhlIGRhdGEgd2l0aCBhIHNsaWdodGx5IGxvd2Vy
IHNhbXBsZSByYXRlIHRvIHB1c2ggbGVzcyBzYW1wbGVzLCB1bnRpbCB3ZSBhcmUgYmFjayB0byBu
b3JtYWwgYnVmZmVyaW5nLgorICAgICAgICBDb252ZXJzZWx5LCB3aGVuIGJ1ZmZlcmluZyBpcyB0
b28gbG93LCB3ZSBjb252ZXJ0IHRoZSBkYXRhIHdpdGggYSBzbGlnaHRseSBoaWdoZXIgc2FtcGxl
IHJhdGUgdG8gcHVzaCBtb3JlIHNhbXBsZXMsIHVudGlsIHdlIGFyZSBiYWNrIHRvIG5vcm1hbCBi
dWZmZXJpbmcuCisgICAgICAgIFdlIGRvIHRoaXMgd2l0aCAzIGNvbnZlcnRlcnMgdGhhdCB3ZSBz
ZWxlY3QgYmFzZWQgb24gYW1vdW50IG9mIGJ1ZmZlcmVkIGRhdGEuCisgICAgICAgIFRoaXMgYmVo
YXZpb3IgaXMgZW5jYXBzdWxhdGVkIGluIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci4KKworICAg
ICAgICBXZSBzaW1wbGlmeSBBdWRpb1NhbXBsZURhdGFTb3VyY2UgaW1wbGVtZW50YXRpb24gYnkg
YWx3YXlzIHJlY29tcHV0aW5nIHRoZSBzYW1wbGUgb2Zmc2V0IHdoZW4gdGhlcmUgaXMgbm90IGVu
b3VnaCBkYXRhLgorICAgICAgICBJbiB0aGF0IGNhc2UsIHdlIHdhaXQgZm9yIDUwbXMgb2YgYnVm
ZmVyZWQgZGF0YSwgd2hpY2ggaXMgdGhlIGF2ZXJhZ2UgYnVmZmVyIHdlIGV4cGVjdCwgdG8gcmVz
dGFydCBwdWxsaW5nIGRhdGEuCisgICAgICAgIEFsbCB2YWx1ZXMgb3duZWQgYnkgQXVkaW9TYW1w
bGVEYXRhU291cmNlIChtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSwgbV9jb252
ZXJ0ZXJJbnB1dE9mZnNldCwgbV9jb252ZXJ0ZXJJbnB1dE9mZnNldCwgbV9vdXRwdXRTYW1wbGVP
ZmZzZXQsIG1fbGFzdEJ1ZmZlcmVkQW1vdW50KQorICAgICAgICBhcmUgYWxsIGluIHRoZSBvdXRn
b2luZyB0aW1lbGluZS9zYW1wbGVSYXRlLgorCisgICAgICAgIFdlIGRpc2FibGUgdGhpcyBhZGFw
dGF0aW9uIGZvciBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYSBzaW5jZSBpdCBpcyBk
b2luZyBpdHMgb3duIGFkYXB0YXRpb24uCisgICAgICAgIFdlIG1pZ2h0IHdhbnQgdG8gZHJvcCB0
aGF0IGFkYXB0YXRpb24gaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAgICAgV2UgYWxzbyBm
aXggYSBwb3RlbnRpYWwgYnVzeSBsb29wIGluIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbEF2
YWlsYWJsZVNhbXBsZXNBc0NodW5rcyBpbiBjYXNlIGVuZEZyYW1lIGlzIGxvd2VyIHRoYW4gc3Rh
cnRGcmFtZSwgd2hpY2ggaXMgY29tcHV0ZWQgZnJvbSB0aW1lU3RhbXAgaW5wdXQgcGFyYW1ldGVy
LgorCisgICAgICAgIFVwZGF0ZSBNb2NrQXVkaW9TaGFyZWRVbml0IHRvIGJlIGNsb3NlciB0byBh
IHJlYWwgc291cmNlIGJ5IGluY3JlYXNpbmcgdGhlIHF1ZXVlIHByaW9yaXR5IGFuZCBzY2hlZHVs
ZSByZW5kZXJpbmcgdGFza3MgZnJvbSB0aGUgcXVldWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uCisg
ICAgICAgIGEgbWFpbiB0aHJlYWQgdGltZXIgd2hpY2ggY2FuIGhhdmUgaGljY3Vwcy4KKworICAg
ICAgICBNYW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLm1tOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3Vy
Y2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJl
ZFVuaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hh
cmVkVW5pdC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwOgorCiAyMDIxLTEyLTE1ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgdG8gc3RhcnQgYSByZWFs
dGltZSBvdXRnb2luZyBzb3VyY2UgaW4gY2FzZSBpdCBpcyB0YWtlbiB0byBhbm90aGVyIHNlbmRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMGE0MGRhNTkyMGY4N2U0ZDkxMDRlNWU5OTFh
ZGQ3NDczN2Q2M2QzYS4uMDQ1NjVhYWI0N2IxODk4MWFkNDY1MWY4MWZlOTcwZjhlOGEzMmIwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMjQsNiArMjI0LDcgQEAgcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1
dFVuaXRBZGFwdG9yLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJM
aXN0LmNwcAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLm1t
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTMxNSwxNCArMzE2LDE0IEBAIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQ
cml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCi1wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIEBu
by11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9MYXllck1hbmFnZXJPYmpDLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNDczYjc4OWI0NDNlMjgwOGZlZWMzYjExMWIyZTZiMWU0Njdi
NDM0ZS4uZTE3ZmYxN2NhZWFmNTFiN2JiOTY0YzFkYzQ1Y2QwOTRmZDkwNzUzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIy
OSw2ICsxMjI5LDkgQEAKIAkJNDFGQ0NDM0IyNzQ2Njc1NjAwODkyQUQ2IC8qIENvcmVBdWRpb0Nh
cHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDNGM0JCNTgzMUU3MDlFRTQwMEM3MDFGMiAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFGQ0Q2
QjkyM0NFMDE1NTAwQzYyNTY3IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NTk4QkUyM0M4QUFCODAw
MkI5Q0M4IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRkNENkJCMjNDRTAyNzcwMEM2MjU2NyAv
KiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NTk4QzAyM0M4QUQ3ODAwMkI5Q0M4IC8qIExvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFGRkQyQzMyNzU2M0UwRDAwNTAxQkJGIC8qIEF1ZGlvU2Ft
cGxlRGF0YUNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGRkQyQzAyNzU2M0RGRjAwNTAxQkJGIC8qIEF1ZGlvU2FtcGxlRGF0YUNvbnZl
cnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQxRkZEMkM0Mjc1NjU3MEYwMDUwMUJCRiAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1
OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OworCQk0MUZGRDJD
NjI3NTY1NzNFMDA1MDFCQkYgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGOUFGRDcx
MTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
ICovOyB9OwogCQk0MjdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQyN0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
ICovOyB9OwogCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MjdEQTcxQzEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggKi87
IH07CiAJCTQzMTA3QkUyMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBzZXVkb1R5cGVNYXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzMTA3QkUx
MThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCAqLzsgfTsKQEAgLTg5
NDIsNiArODk0NSw4IEBACiAJCTQxRkNCNzVGMjE0ODY2RkYwMDM4QURDNiAvKiBSVENSdHBDb2Rl
Y1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwQ29kZWNQYXJhbWV0ZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkNCNzYwMjE0ODY3MDAwMDM4QURDNiAvKiBS
VENSdHBSdHhQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFJ0eFBhcmFtZXRlcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQ0I3NjEyMTQ4NjcwMDAwMzhBREM2
IC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBFbmNv
ZGluZ1BhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGRkQyQzAy
NzU2M0RGRjAwNTAxQkJGIC8qIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGRkQyQzIyNzU2M0UwMDAwNTAxQkJGIC8qIEF1ZGlv
U2FtcGxlRGF0YUNvbnZlcnRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDI3REE3MUIxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVy
bmFscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MjdEQTcx
QzEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckludGVybmFscy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzEwN0JFMTE4Q0MxOURFMDBDQzE4RTggLyogU2Vs
ZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNl
bGVjdG9yUHNldWRvVHlwZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAw
NTQsNiArMzAwNTksOCBAQAogCQkJCTFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmggKi8sCiAJCQkJMDczQjg3NjIxRTQzODU5RDAwNzFDMEVDIC8qIEF1
ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAgKi8sCiAJCQkJMDczQjg3NjMxRTQzODU5RDAwNzFDMEVD
IC8qIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oICovLAorCQkJCTQxRkZEMkMwMjc1NjNERkYwMDUw
MUJCRiAvKiBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCAqLywKKwkJCQk0MUZGRDJDMjI3NTYz
RTAwMDA1MDFCQkYgLyogQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLm1tICovLAogCQkJCTA3M0I4
NzY1MUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCAqLywKIAkJCQkw
NzNCODc2NDFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tICovLAog
CQkJCTA3M0I4NzU3MUU0MERDRkQwMDcxQzBFQyAvKiBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
Y3BwICovLApAQCAtMzMzMTEsNiArMzMzMTgsNyBAQAogCQkJCUZEMzE2MDg2MTJCMDI2RjcwMEMx
QTM1OSAvKiBBdWRpb1Jlc2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODgxMkIw
MjZGNzAwQzFBMzU5IC8qIEF1ZGlvUmVzYW1wbGVyS2VybmVsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNCODc2NzFFNDM4NUFDMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MUZGRDJDMzI3NTYzRTBEMDA1MDFCQkYgLyogQXVkaW9TYW1wbGVE
YXRhQ29udmVydGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzNCODc2OTFFNDM4NUFDMDA3MUMw
RUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDhDNDZF
QzE1NDYwOEU3MDBBNTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDREE3OTgyQTE3MEEzRDAwMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTM4NDEwLDYgKzM4NDE4LDcgQEAKIAkJCQkyRDlCRjc0MzFEQkZEQzNF
MDA3QTdEOTkgLyogTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OUFDQzA3OTgyNUM3MjY3NzAwREM2Mzg2IC8qIE1lZGlhS2V5U3lzdGVtQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5QUNDMDc5NjI1QzcyNUVFMDBEQzYzODYgLyogTWVkaWFLZXlT
eXN0ZW1SZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxRkZEMkM2Mjc1NjU3M0UwMDUw
MUJCRiAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RDOEI1QTIxODA0NjM0NzAwMTZFNjg1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk1OTM1MjQxMjNDQjgw
MDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
NzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBT
b3VyY2VzICovLApAQCAtMzkwMzksNiArMzkwNDgsNyBAQAogCQkJCTdDRTY4MzQ0MTkyMTQzQTgw
MEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAv
KiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQx
RkZEMkM0Mjc1NjU3MEYwMDUwMUJCRiAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkyNkY5QTgzODE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUQxQzNDMjRDRDMwNTcwMDkzNEUxMiAv
KiBWUDlVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkIxMTg3RjYx
RTEwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252
ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxl
RGF0YUNvbnZlcnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMTg1MTdmYThlN2FjZTNjMTg1NTBlMWIzMzRm
MWFiYzdjN2UwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaApAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKK3R5cGVkZWYgc3RydWN0IEF1ZGlvQnVmZmVyTGlzdCBBdWRpb0J1ZmZlckxpc3Q7Cit0eXBl
ZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OworY2xhc3Mg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7CisKK2Ns
YXNzIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyKCkgPSBkZWZhdWx0Owor
ICAgIH5BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIoKTsKKworICAgIE9TU3RhdHVzIHNldEZvcm1h
dHMoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBpbnB1dERlc2NyaXB0aW9uLCBjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG91dHB1dERlc2NyaXB0aW9uKTsKKyAgICBib29s
IHVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHNpemVfdCBjdXJyZW50QnVmZmVyZWRBbW91bnQpOworICAg
IE9TU3RhdHVzIGNvbnZlcnQoY29uc3QgQXVkaW9CdWZmZXJMaXN0JiwgQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0Jiwgc2l6ZV90IHNhbXBsZUNvdW50KTsKKyAgICBzaXplX3QgcmVndWxhckJ1ZmZlclNp
emUoKSBjb25zdCB7IHJldHVybiBtX3JlZ3VsYXJCdWZmZXJTaXplOyB9CisKKyAgICB2b2lkIHNl
dFNob3VsZFVwZGF0ZUludGVybmFsQ29udmVydGVyKGJvb2wgc2hvdWxkVXBkYXRlKSB7IG1fc2hv
dWxkVXBkYXRlSW50ZXJuYWxDb252ZXJ0ZXIgPSBzaG91bGRVcGRhdGU7IH0KKworcHJpdmF0ZToK
KyAgICBzaXplX3QgbV9oaWdoQnVmZmVyU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9yZWd1bGFy
SGlnaEJ1ZmZlclNpemUgeyAwIH07CisgICAgc2l6ZV90IG1fcmVndWxhckJ1ZmZlclNpemUgeyAw
IH07CisgICAgc2l6ZV90IG1fcmVndWxhckxvd0J1ZmZlclNpemUgeyAwIH07CisgICAgc2l6ZV90
IG1fbG93QnVmZmVyU2l6ZSB7IDAgfTsKKworICAgIGJvb2wgbV9zaG91bGRVcGRhdGVJbnRlcm5h
bENvbnZlcnRlciB7IHRydWUgfTsKKworICAgIEF1ZGlvQ29udmVydGVyUmVmIG1fbG93Q29udmVy
dGVyIHsgbnVsbHB0ciB9OworICAgIEF1ZGlvQ29udmVydGVyUmVmIG1fcmVndWxhckNvbnZlcnRl
ciB7IG51bGxwdHIgfTsKKyAgICBBdWRpb0NvbnZlcnRlclJlZiBtX2hpZ2hDb252ZXJ0ZXIgeyBu
dWxscHRyIH07CisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgbV9zZWxlY3RlZENvbnZlcnRlciB7IG51
bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNv
bnZlcnRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDM1OTdhMDZmZjA4YWIxYzJjYmZjM2I5OTBiM2JlM2Vm
NTY1Mjk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLm1tCkBAIC0wLDAgKzEsMTIxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCIKKworI2ltcG9ydCAiQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmgiCisjaW1wb3J0IDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0
ZXIuaD4KKyNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6fkF1ZGlvU2FtcGxlRGF0
YUNvbnZlcnRlcigpCit7CisgICAgaWYgKG1fbG93Q29udmVydGVyKQorICAgICAgICBQQUw6OkF1
ZGlvQ29udmVydGVyRGlzcG9zZShtX2xvd0NvbnZlcnRlcik7CisgICAgaWYgKG1fcmVndWxhckNv
bnZlcnRlcikKKyAgICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9yZWd1bGFyQ29u
dmVydGVyKTsKKyAgICBpZiAobV9oaWdoQ29udmVydGVyKQorICAgICAgICBQQUw6OkF1ZGlvQ29u
dmVydGVyRGlzcG9zZShtX2hpZ2hDb252ZXJ0ZXIpOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBs
ZURhdGFDb252ZXJ0ZXI6OnNldEZvcm1hdHMoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBpbnB1dERlc2NyaXB0aW9uLCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG91dHB1
dERlc2NyaXB0aW9uKQoreworICAgIGNvbnN0ZXhwciBkb3VibGUgYnVmZmVyMTAwbXMgPSAwLjEw
MDsKKyAgICBjb25zdGV4cHIgZG91YmxlIGJ1ZmZlcjYwbXMgPSAwLjA2MDsKKyAgICBjb25zdGV4
cHIgZG91YmxlIGJ1ZmZlcjUwbXMgPSAwLjA1MDsKKyAgICBjb25zdGV4cHIgZG91YmxlIGJ1ZmZl
cjQwbXMgPSAwLjA0MDsKKyAgICBjb25zdGV4cHIgZG91YmxlIGJ1ZmZlcjIwbXMgPSAwLjAyMDsK
KyAgICBtX2hpZ2hCdWZmZXJTaXplID0gb3V0cHV0RGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICog
YnVmZmVyMTAwbXM7CisgICAgbV9yZWd1bGFySGlnaEJ1ZmZlclNpemUgPSBvdXRwdXREZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCkgKiBidWZmZXI2MG1zOworICAgIG1fcmVndWxhckJ1ZmZlclNpemUg
PSBvdXRwdXREZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiBidWZmZXI1MG1zOworICAgIG1fcmVn
dWxhckxvd0J1ZmZlclNpemUgPSBvdXRwdXREZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiBidWZm
ZXI0MG1zOworICAgIG1fbG93QnVmZmVyU2l6ZSA9IG91dHB1dERlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKSAqIGJ1ZmZlcjIwbXM7CisKKyAgICBtX3NlbGVjdGVkQ29udmVydGVyID0gbnVsbHB0cjsK
KworICAgIGlmIChtX2xvd0NvbnZlcnRlcikgeworICAgICAgICBQQUw6OkF1ZGlvQ29udmVydGVy
RGlzcG9zZShtX2xvd0NvbnZlcnRlcik7CisgICAgICAgIG1fbG93Q29udmVydGVyID0gbnVsbHB0
cjsKKyAgICB9CisgICAgaWYgKG1fcmVndWxhckNvbnZlcnRlcikgeworICAgICAgICBQQUw6OkF1
ZGlvQ29udmVydGVyRGlzcG9zZShtX3JlZ3VsYXJDb252ZXJ0ZXIpOworICAgICAgICBtX3JlZ3Vs
YXJDb252ZXJ0ZXIgPSBudWxscHRyOworICAgIH0KKyAgICBpZiAobV9oaWdoQ29udmVydGVyKSB7
CisgICAgICAgIFBBTDo6QXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1faGlnaENvbnZlcnRlcik7Cisg
ICAgICAgIG1faGlnaENvbnZlcnRlciA9IG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBjb252
ZXJ0ZXJPdXRwdXREZXNjcmlwdGlvbiA9IG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0
aW9uKCk7CisgICAgY29uc3RleHByIGRvdWJsZSBzbGlnaHRseUhpZ2hlclBpdGNoID0gMS4wNTsK
KyAgICBjb252ZXJ0ZXJPdXRwdXREZXNjcmlwdGlvbi5tU2FtcGxlUmF0ZSA9IHNsaWdodGx5SGln
aGVyUGl0Y2ggKiBvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLm1TYW1wbGVS
YXRlOworICAgIGF1dG8gZXJyID0gUEFMOjpBdWRpb0NvbnZlcnRlck5ldygmaW5wdXREZXNjcmlw
dGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmY29udmVydGVyT3V0cHV0RGVzY3JpcHRpb24sICZt
X2xvd0NvbnZlcnRlcik7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIGVycjsKKworICAg
IGNvbnN0ZXhwciBkb3VibGUgc2xpZ2h0bHlMb3dlclBpdGNoID0gMC45NTsKKyAgICBjb252ZXJ0
ZXJPdXRwdXREZXNjcmlwdGlvbi5tU2FtcGxlUmF0ZSA9IHNsaWdodGx5TG93ZXJQaXRjaCAqIG91
dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkubVNhbXBsZVJhdGU7CisgICAgZXJy
ID0gUEFMOjpBdWRpb0NvbnZlcnRlck5ldygmaW5wdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlw
dGlvbigpLCAmY29udmVydGVyT3V0cHV0RGVzY3JpcHRpb24sICZtX2hpZ2hDb252ZXJ0ZXIpOwor
ICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBlcnI7CisKKyAgICBpZiAoaW5wdXREZXNjcmlw
dGlvbiA9PSBvdXRwdXREZXNjcmlwdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBlcnIg
PSBQQUw6OkF1ZGlvQ29udmVydGVyTmV3KCZpbnB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0
aW9uKCksICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmbV9yZWd1bGFy
Q29udmVydGVyKTsKKyAgICBpZiAoZXJyKQorICAgICAgICByZXR1cm4gZXJyOworCisgICAgbV9z
ZWxlY3RlZENvbnZlcnRlciA9IG1fcmVndWxhckNvbnZlcnRlcjsKKyAgICByZXR1cm4gZXJyOwor
fQorCitib29sIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6dXBkYXRlQnVmZmVyZWRBbW91bnQo
c2l6ZV90IGN1cnJlbnRCdWZmZXJlZEFtb3VudCkKK3sKKyAgICBpZiAoY3VycmVudEJ1ZmZlcmVk
QW1vdW50ICYmIG1fc2hvdWxkVXBkYXRlSW50ZXJuYWxDb252ZXJ0ZXIpIHsKKyAgICAgICAgaWYg
KG1fc2VsZWN0ZWRDb252ZXJ0ZXIgPT0gbV9yZWd1bGFyQ29udmVydGVyKSB7CisgICAgICAgICAg
ICBpZiAoY3VycmVudEJ1ZmZlcmVkQW1vdW50IDw9IG1fbG93QnVmZmVyU2l6ZSkKKyAgICAgICAg
ICAgICAgICBtX3NlbGVjdGVkQ29udmVydGVyID0gbV9sb3dDb252ZXJ0ZXI7CisgICAgICAgICAg
ICBlbHNlIGlmIChjdXJyZW50QnVmZmVyZWRBbW91bnQgPj0gbV9oaWdoQnVmZmVyU2l6ZSkKKyAg
ICAgICAgICAgICAgICBtX3NlbGVjdGVkQ29udmVydGVyID0gbV9oaWdoQ29udmVydGVyOworICAg
ICAgICB9IGVsc2UgaWYgKG1fc2VsZWN0ZWRDb252ZXJ0ZXIgPT0gbV9oaWdoQ29udmVydGVyKSB7
CisgICAgICAgICAgICBpZiAoY3VycmVudEJ1ZmZlcmVkQW1vdW50IDwgbV9yZWd1bGFyTG93QnVm
ZmVyU2l6ZSkKKyAgICAgICAgICAgICAgICBtX3NlbGVjdGVkQ29udmVydGVyID0gbV9yZWd1bGFy
Q29udmVydGVyOworICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRCdWZmZXJlZEFtb3VudCA+IG1f
cmVndWxhckhpZ2hCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9zZWxlY3RlZENvbnZlcnRlciA9
IG1fcmVndWxhckNvbnZlcnRlcjsKKyAgICB9CisgICAgcmV0dXJuICEhbV9zZWxlY3RlZENvbnZl
cnRlcjsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyOjpjb252ZXJ0KGNv
bnN0IEF1ZGlvQnVmZmVyTGlzdCYgaW5wdXRCdWZmZXIsIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYg
b3V0cHV0QnVmZmVyLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgQVNTRVJUKG1fc2hvdWxk
VXBkYXRlSW50ZXJuYWxDb252ZXJ0ZXIgfHwgbV9zZWxlY3RlZENvbnZlcnRlciA9PSBtX3JlZ3Vs
YXJDb252ZXJ0ZXIpOworICAgIG91dHB1dEJ1ZmZlci5yZXNldCgpOworICAgIHJldHVybiBvdXRw
dXRCdWZmZXIuY29weUZyb20oaW5wdXRCdWZmZXIsIHNhbXBsZUNvdW50LCBtX3NlbGVjdGVkQ29u
dmVydGVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2Uu
aAppbmRleCAyY2QyMGQ1OGViYmYzN2RiNjVlYzJiZGM4M2RkZDY3Njg2ZTNlYTE5Li43YWNmODlh
NjhlZWMyYjE3YTM5YTNhODQ3ZWI4ZjdmODQ3NzE3NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2Uu
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkF1ZGlvU2Ft
cGxlRGF0YUNvbnZlcnRlci5oIgogI2luY2x1ZGUgIkNBUmluZ0J1ZmZlci5oIgogI2luY2x1ZGUg
PENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIu
aD4KQEAgLTgyLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dCBFcXVpdmFsZW50VG9NYXhWb2x1bWUgPSAwLjk1OwogCisgICAgdm9pZCBkaXNhYmxlQ29udmVy
dGVyQWRhcHRhdGlvbigpIHsgbV9jb252ZXJ0ZXIuc2V0U2hvdWxkVXBkYXRlSW50ZXJuYWxDb252
ZXJ0ZXIoZmFsc2UpOyB9CisKIHByaXZhdGU6CiAgICAgQXVkaW9TYW1wbGVEYXRhU291cmNlKHNp
emVfdCwgTG9nZ2VySGVscGVyJiwgc2l6ZV90IHdhaXRUb1N0YXJ0Rm9yUHVzaENvdW50KTsKIApA
QCAtMTAzLDEyICsxMDYsMTUgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX2xhc3RQdXNoZWRT
YW1wbGVDb3VudCB7IDAgfTsKICAgICBzaXplX3QgbV93YWl0VG9TdGFydEZvclB1c2hDb3VudCB7
IDIgfTsKICAgICBNZWRpYVRpbWUgbV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lIHsgTWVk
aWFUaW1lOjppbnZhbGlkVGltZSgpIH07Ci0gICAgYm9vbCBtX2lzRmlyc3RQdWxsIHsgdHJ1ZSB9
OworICAgIHVpbnQ2NF90IG1fZXhwZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZVZhbHVlIHsgMCB9
OwogCi0gICAgTWVkaWFUaW1lIG1faW5wdXRTYW1wbGVPZmZzZXQ7CisgICAgaW50NjRfdCBtX2Nv
bnZlcnRlcklucHV0T2Zmc2V0IHsgMCB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gbV9p
bnB1dFNhbXBsZU9mZnNldDsKICAgICBpbnQ2NF90IG1fb3V0cHV0U2FtcGxlT2Zmc2V0IHsgMCB9
OworICAgIHVpbnQ2NF90IG1fbGFzdEJ1ZmZlcmVkQW1vdW50IHsgMCB9OworCisgICAgQXVkaW9T
YW1wbGVEYXRhQ29udmVydGVyIG1fY29udmVydGVyOwogCi0gICAgQXVkaW9Db252ZXJ0ZXJSZWYg
bV9jb252ZXJ0ZXI7CiAgICAgUmVmUHRyPEF1ZGlvU2FtcGxlQnVmZmVyTGlzdD4gbV9zY3JhdGNo
QnVmZmVyOwogCiAgICAgVW5pcXVlUmVmPENBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwpAQCAt
MTE3LDEwICsxMjMsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fdm9sdW1lIHsgMS4wIH07CiAg
ICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkQ29tcHV0ZU91dHB1
dFNhbXBsZU9mZnNldCB7IHRydWUgfTsKLSAgICB1aW50NjRfdCBtX2VuZEZyYW1lV2hlbk5vdEVu
b3VnaERhdGEgeyAwIH07CiAKICAgICBib29sIG1faXNJbk5lZWRPZk1vcmVEYXRhIHsgZmFsc2Ug
fTsKLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1f
bG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNv
dXJjZS5tbQppbmRleCBmMDEwZDNjY2NiZWE1NTc1NTgyY2FkNDRjM2ZkMmEyMTRhYzYyZjJjLi44
YzBjMWJhMmNjN2RiMTBmYzAxY2Y1ZjU1N2E0YWE5NWU2MzdhN2IyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRh
U291cmNlLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTUxLDcgKzUxLDYgQEAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9T
YW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6ZV90IG1heGltdW1TYW1wbGVDb3UKIAogQXVkaW9T
YW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1w
bGVDb3VudCwgTG9nZ2VySGVscGVyJiBsb2dnZXJIZWxwZXIsIHNpemVfdCB3YWl0VG9TdGFydEZv
clB1c2hDb3VudCkKICAgICA6IG1fd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQod2FpdFRvU3RhcnRG
b3JQdXNoQ291bnQpCi0gICAgLCBtX2lucHV0U2FtcGxlT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKSkKICAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5pcXVlUmVmPENBUmluZ0J1ZmZlcj4o
KSkKICAgICAsIG1fbWF4aW11bVNhbXBsZUNvdW50KG1heGltdW1TYW1wbGVDb3VudCkKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTY2LDMxICs2NSwxMiBAQCBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZShzaXplX3QgbWF4aW11bVNhbXBsZUNvdW50LCBM
b2dnZXJIZQogCiBBdWRpb1NhbXBsZURhdGFTb3VyY2U6On5BdWRpb1NhbXBsZURhdGFTb3VyY2Uo
KQogewotICAgIGlmIChtX2NvbnZlcnRlcikKLSAgICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlckRp
c3Bvc2UobV9jb252ZXJ0ZXIpOwogfQogCiBPU1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6
OnNldHVwQ29udmVydGVyKCkKIHsKICAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0aW9uICYmIG1f
b3V0cHV0RGVzY3JpcHRpb24pOwotCi0gICAgaWYgKG1fY29udmVydGVyKSB7Ci0gICAgICAgIFBB
TDo6QXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fY29udmVydGVyKTsKLSAgICAgICAgbV9jb252ZXJ0
ZXIgPSBudWxscHRyOwotICAgIH0KLQotICAgIGlmICgqbV9pbnB1dERlc2NyaXB0aW9uID09ICpt
X291dHB1dERlc2NyaXB0aW9uKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIE9TU3RhdHVzIGVy
ciA9IFBBTDo6QXVkaW9Db252ZXJ0ZXJOZXcoJm1faW5wdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVz
Y3JpcHRpb24oKSwgJm1fb3V0cHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksICZt
X2NvbnZlcnRlcik7Ci0gICAgaWYgKGVycikgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBlcnJdIHsKLSAgICAg
ICAgICAgIEVSUk9SX0xPRygiQXVkaW9Db252ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgIiwgZXJy
KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVycjsKLQorICAgIHJldHVybiBt
X2NvbnZlcnRlci5zZXRGb3JtYXRzKCptX2lucHV0RGVzY3JpcHRpb24sICptX291dHB1dERlc2Ny
aXB0aW9uKTsKIH0KIAogT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZv
cm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCkKQEAgLTEwOSw2ICs4
OSw5IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYKICAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0
aW9uKTsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAorICAgIGlmICht
X291dHB1dERlc2NyaXB0aW9uICYmICptX291dHB1dERlc2NyaXB0aW9uID09IGZvcm1hdCkKKyAg
ICAgICAgcmV0dXJuIDA7CisKICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uIHsgZm9ybWF0IH07CiAKICAgICB7CkBAIC0xMTcsNiArMTAwLDcgQEAgT1NT
dGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRPdXRwdXRGb3JtYXQoY29uc3QgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJgogICAgICAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9y
Q3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVNYWxsb2NSZXN0cmljdGlvbnM7CiAgICAgICAgIG1f
cmluZ0J1ZmZlci0+YWxsb2NhdGUoZm9ybWF0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbWF4aW11
bVNhbXBsZUNvdW50KSk7CiAgICAgICAgIG1fc2NyYXRjaEJ1ZmZlciA9IEF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdDo6Y3JlYXRlKG1fb3V0cHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCks
IG1fbWF4aW11bVNhbXBsZUNvdW50KTsKKyAgICAgICAgbV9jb252ZXJ0ZXJJbnB1dE9mZnNldCA9
IDA7CiAgICAgfQogCiAgICAgcmV0dXJuIHNldHVwQ29udmVydGVyKCk7CkBAIC0xNDAsMzQgKzEy
NCwzNCBAQCBNZWRpYVRpbWUgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpob3N0VGltZSgpIGNvbnN0
CiAKIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdXNoU2FtcGxlc0ludGVybmFsKGNvbnN0
IEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzdCwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRp
b25UaW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0gICAgTWVkaWFUaW1lIHNhbXBsZVRpbWUg
PSBwcmVzZW50YXRpb25UaW1lOworICAgIGludDY0X3QgcmluZ0J1ZmZlckluZGV4VG9Xcml0ZSA9
IHByZXNlbnRhdGlvblRpbWUudG9UaW1lU2NhbGUobV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxl
UmF0ZSgpKS50aW1lVmFsdWUoKTsKIAorICAgIGludDY0X3Qgb2Zmc2V0ID0gMDsKICAgICBjb25z
dCBBdWRpb0J1ZmZlckxpc3QqIHNhbXBsZUJ1ZmZlckxpc3Q7Ci0gICAgaWYgKG1fY29udmVydGVy
KSB7Ci0gICAgICAgIG1fc2NyYXRjaEJ1ZmZlci0+cmVzZXQoKTsKLSAgICAgICAgT1NTdGF0dXMg
ZXJyID0gbV9zY3JhdGNoQnVmZmVyLT5jb3B5RnJvbShidWZmZXJMaXN0LCBzYW1wbGVDb3VudCwg
bV9jb252ZXJ0ZXIpOworCisgICAgaWYgKG1fY29udmVydGVyLnVwZGF0ZUJ1ZmZlcmVkQW1vdW50
KG1fbGFzdEJ1ZmZlcmVkQW1vdW50KSkgeworICAgICAgICBPU1N0YXR1cyBlcnIgPSBtX2NvbnZl
cnRlci5jb252ZXJ0KGJ1ZmZlckxpc3QsICptX3NjcmF0Y2hCdWZmZXIsIHNhbXBsZUNvdW50KTsK
ICAgICAgICAgaWYgKGVycikKICAgICAgICAgICAgIHJldHVybjsKLQorICAgICAgICBvZmZzZXQg
PSBtX3NjcmF0Y2hCdWZmZXItPnNhbXBsZUNvdW50KCkgLSAoc2FtcGxlQ291bnQgKiBtX291dHB1
dERlc2NyaXB0aW9uLT5zYW1wbGVSYXRlKCkgLyBtX2lucHV0RGVzY3JpcHRpb24tPnNhbXBsZVJh
dGUoKSk7CiAgICAgICAgIHNhbXBsZUJ1ZmZlckxpc3QgPSBtX3NjcmF0Y2hCdWZmZXItPmJ1ZmZl
ckxpc3QoKS5saXN0KCk7CiAgICAgICAgIHNhbXBsZUNvdW50ID0gbV9zY3JhdGNoQnVmZmVyLT5z
YW1wbGVDb3VudCgpOwotICAgICAgICBzYW1wbGVUaW1lID0gcHJlc2VudGF0aW9uVGltZS50b1Rp
bWVTY2FsZShtX291dHB1dERlc2NyaXB0aW9uLT5zYW1wbGVSYXRlKCksIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkWmVybyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNhbXBsZUJ1ZmZl
ckxpc3QgPSAmYnVmZmVyTGlzdDsKIAotICAgIGlmIChtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBs
ZVRpbWUuaXNWYWxpZCgpICYmIGFicyhtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUgLSBz
YW1wbGVUaW1lKS50aW1lVmFsdWUoKSA9PSAxKQotICAgICAgICBzYW1wbGVUaW1lID0gbV9leHBl
Y3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lOwotICAgIG1fZXhwZWN0ZWROZXh0UHVzaGVkU2FtcGxl
VGltZSA9IHNhbXBsZVRpbWUgKyBNZWRpYVRpbWUoc2FtcGxlQ291bnQsIHNhbXBsZVRpbWUudGlt
ZVNjYWxlKCkpOworICAgIGlmICghbV9pbnB1dFNhbXBsZU9mZnNldCkgeworICAgICAgICBtX2lu
cHV0U2FtcGxlT2Zmc2V0ID0gMSAtIHJpbmdCdWZmZXJJbmRleFRvV3JpdGU7CisgICAgICAgIHJp
bmdCdWZmZXJJbmRleFRvV3JpdGUgPSAxOworICAgIH0gZWxzZQorICAgICAgICByaW5nQnVmZmVy
SW5kZXhUb1dyaXRlICs9ICptX2lucHV0U2FtcGxlT2Zmc2V0OworCisgICAgaWYgKG1fY29udmVy
dGVySW5wdXRPZmZzZXQpCisgICAgICAgIHJpbmdCdWZmZXJJbmRleFRvV3JpdGUgKz0gbV9jb252
ZXJ0ZXJJbnB1dE9mZnNldDsKIAotICAgIGlmIChtX2lucHV0U2FtcGxlT2Zmc2V0ID09IE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSkKLSAgICAgICAgbV9pbnB1dFNhbXBsZU9mZnNldCA9IE1lZGlh
VGltZSgxIC0gc2FtcGxlVGltZS50aW1lVmFsdWUoKSwgc2FtcGxlVGltZS50aW1lU2NhbGUoKSk7
Ci0gICAgc2FtcGxlVGltZSArPSBtX2lucHV0U2FtcGxlT2Zmc2V0OworICAgIGlmIChtX2V4cGVj
dGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSAmJiBhYnMoKGZsb2F0KW1fZXhwZWN0ZWROZXh0
UHVzaGVkU2FtcGxlVGltZVZhbHVlIC0gKGZsb2F0KXJpbmdCdWZmZXJJbmRleFRvV3JpdGUpIDw9
IDEpCisgICAgICAgIHJpbmdCdWZmZXJJbmRleFRvV3JpdGUgPSBtX2V4cGVjdGVkTmV4dFB1c2hl
ZFNhbXBsZVRpbWVWYWx1ZTsKIAotI2lmICFMT0dfRElTQUJMRUQKLSAgICB1aW50NjRfdCBzdGFy
dEZyYW1lMSA9IDA7Ci0gICAgdWludDY0X3QgZW5kRnJhbWUxID0gMDsKLSAgICBtX3JpbmdCdWZm
ZXItPmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lMSwgZW5kRnJhbWUxKTsKLSNlbmRp
ZgorICAgIG1fZXhwZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZVZhbHVlID0gcmluZ0J1ZmZlcklu
ZGV4VG9Xcml0ZSArIHNhbXBsZUNvdW50OwogCiAgICAgaWYgKG1faXNJbk5lZWRPZk1vcmVEYXRh
KSB7CiAgICAgICAgIG1faXNJbk5lZWRPZk1vcmVEYXRhID0gZmFsc2U7CkBAIC0xNzYsNyArMTYw
LDEwIEBAIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdXNoU2FtcGxlc0ludGVybmFsKGNv
bnN0IEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzCiAgICAgICAgICAgICBBTFdBWVNfTE9HKGxv
Z0lkZW50aWZpZXIsICJuZWVkZWQgbW9yZSBkYXRhLCBwdXNoaW5nICIsIHNhbXBsZUNvdW50LCAi
IHNhbXBsZXMiKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIG1fcmluZ0J1ZmZlci0+c3RvcmUo
c2FtcGxlQnVmZmVyTGlzdCwgc2FtcGxlQ291bnQsIHNhbXBsZVRpbWUudGltZVZhbHVlKCkpOwor
CisgICAgbV9yaW5nQnVmZmVyLT5zdG9yZShzYW1wbGVCdWZmZXJMaXN0LCBzYW1wbGVDb3VudCwg
cmluZ0J1ZmZlckluZGV4VG9Xcml0ZSk7CisKKyAgICBtX2NvbnZlcnRlcklucHV0T2Zmc2V0ICs9
IG9mZnNldDsKICAgICBtX2xhc3RQdXNoZWRTYW1wbGVDb3VudCA9IHNhbXBsZUNvdW50OwogfQog
CkBAIC0xOTQsMjEgKzE4MSw2IEBAIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdXNoU2Ft
cGxlcyhjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IFBsYXRmCiAgICAgcHVzaFNh
bXBsZXNJbnRlcm5hbCgqZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpLmxp
c3QoKSwgc2FtcGxlVGltZSwgc2FtcGxlQ291bnQpOwogfQogCi1zdGF0aWMgaW5saW5lIGludDY0
X3QgY29tcHV0ZU9mZnNldERlbGF5KGRvdWJsZSBzYW1wbGVSYXRlLCB1aW50NjRfdCBsYXN0UHVz
aGVkU2FtcGxlQ291bnQpCi17Ci0gICAgY29uc3QgZG91YmxlIHR3ZW50eU1TID0gLjAyOwotICAg
IGNvbnN0IGRvdWJsZSB0ZW5NUyA9IC4wMTsKLSAgICBjb25zdCBkb3VibGUgZml2ZU1TID0gLjAw
NTsKLQotICAgIGlmIChsYXN0UHVzaGVkU2FtcGxlQ291bnQgPiBzYW1wbGVSYXRlICogdHdlbnR5
TVMpCi0gICAgICAgIHJldHVybiBzYW1wbGVSYXRlICogdHdlbnR5TVM7Ci0gICAgaWYgKGxhc3RQ
dXNoZWRTYW1wbGVDb3VudCA+IHNhbXBsZVJhdGUgKiB0ZW5NUykKLSAgICAgICAgcmV0dXJuIHNh
bXBsZVJhdGUgKiB0ZW5NUzsKLSAgICBpZiAobGFzdFB1c2hlZFNhbXBsZUNvdW50ID4gc2FtcGxl
UmF0ZSAqIGZpdmVNUykKLSAgICAgICAgcmV0dXJuIHNhbXBsZVJhdGUgKiBmaXZlTVM7Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlcyhB
dWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50LCB1aW50NjRfdCB0aW1l
U3RhbXAsIGRvdWJsZSAvKmhvc3RUaW1lKi8sIFB1bGxNb2RlIG1vZGUpCiB7CiAgICAgc2l6ZV90
IGJ5dGVDb3VudCA9IHNhbXBsZUNvdW50ICogbV9vdXRwdXREZXNjcmlwdGlvbi0+Ynl0ZXNQZXJG
cmFtZSgpOwpAQCAtMjIwLDcgKzE5Miw3IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpw
dWxsU2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobV9tdXRlZCB8fCBtX2lucHV0U2Ft
cGxlT2Zmc2V0ID09IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkgeworICAgIGlmIChtX211dGVk
IHx8ICFtX2lucHV0U2FtcGxlT2Zmc2V0KSB7CiAgICAgICAgIGlmIChtb2RlICE9IEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZTo6TWl4KQogICAgICAgICAgICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6
ZXJvQUJMKGJ1ZmZlciwgYnl0ZUNvdW50KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMw
LDMzICsyMDIsMTkgQEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzKEF1
ZGlvQnVmZmVyTGlzdCYgYnVmZmVyLCBzaXplX3Qgc2FtcGxlQ28KICAgICB1aW50NjRfdCBlbmRG
cmFtZSA9IDA7CiAgICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRG
cmFtZSwgZW5kRnJhbWUpOwogCisgICAgQVNTRVJUKG1fd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQp
OworCisgICAgdWludDY0X3QgYnVmZmVyZWQgPSBlbmRGcmFtZSAtIHN0YXJ0RnJhbWU7CiAgICAg
aWYgKG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCkgewotICAgICAgICB1aW50NjRf
dCBidWZmZXJlZCA9IGVuZEZyYW1lIC0gc3RhcnRGcmFtZTsKLSAgICAgICAgaWYgKG1faXNGaXJz
dFB1bGwpIHsKLSAgICAgICAgICAgIGF1dG8gbWluaW11bUJ1ZmZlciA9IG1fd2FpdFRvU3RhcnRG
b3JQdXNoQ291bnQgKiBtX2xhc3RQdXNoZWRTYW1wbGVDb3VudDsKLSAgICAgICAgICAgIGlmIChi
dWZmZXJlZCA+PSBtaW5pbXVtQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgbV9vdXRwdXRTYW1w
bGVPZmZzZXQgPSBzdGFydEZyYW1lIC0gdGltZVN0YW1wOwotICAgICAgICAgICAgICAgIG1fc2hv
dWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1f
ZW5kRnJhbWVXaGVuTm90RW5vdWdoRGF0YSA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIC8vIFdlIHdhaXQgZm9yIG9uZSBjaHVuayBvZiB2YWx1ZSBiZWZvcmUgc3Rh
cnRpbmcgdG8gcGxheS4KLSAgICAgICAgICAgICAgICBpZiAobW9kZSAhPSBBdWRpb1NhbXBsZURh
dGFTb3VyY2U6Ok1peCkKLSAgICAgICAgICAgICAgICAgICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0
Ojp6ZXJvQUJMKGJ1ZmZlciwgYnl0ZUNvdW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoYnVm
ZmVyZWQgPCBzYW1wbGVDb3VudCAqIDIgfHwgKG1fZW5kRnJhbWVXaGVuTm90RW5vdWdoRGF0YSAm
JiBtX2VuZEZyYW1lV2hlbk5vdEVub3VnaERhdGEgPT0gZW5kRnJhbWUpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1vZGUgIT0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpNaXgpCi0gICAgICAgICAg
ICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIGJ5dGVDb3Vu
dCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSBmYWxzZTsKLSAgICAg
ICAgICAgIG1fZW5kRnJhbWVXaGVuTm90RW5vdWdoRGF0YSA9IDA7Ci0KLSAgICAgICAgICAgIG1f
b3V0cHV0U2FtcGxlT2Zmc2V0ID0gKGVuZEZyYW1lIC0gc2FtcGxlQ291bnQpIC0gdGltZVN0YW1w
OwotICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgLT0gY29tcHV0ZU9mZnNldERlbGF5
KG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKSwgbV9sYXN0UHVzaGVkU2FtcGxlQ291
bnQpOworICAgICAgICBhdXRvIG1pbmltdW1CdWZmZXIgPSBzdGQ6Om1heDxzaXplX3Q+KG1fd2Fp
dFRvU3RhcnRGb3JQdXNoQ291bnQgKiBtX2xhc3RQdXNoZWRTYW1wbGVDb3VudCwgbV9jb252ZXJ0
ZXIucmVndWxhckJ1ZmZlclNpemUoKSk7CisgICAgICAgIGlmIChidWZmZXJlZCA8IG1pbmltdW1C
dWZmZXIpIHsKKyAgICAgICAgICAgIC8vIFdlIHdhaXQgZm9yIG9uZSBjaHVuayBvZiB2YWx1ZSBi
ZWZvcmUgc3RhcnRpbmcgdG8gcGxheS4KKyAgICAgICAgICAgIGlmIChtb2RlICE9IEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZTo6TWl4KQorICAgICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6emVyb0FCTChidWZmZXIsIGJ5dGVDb3VudCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KKyAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBlbmRGcmFtZSAtIHRp
bWVTdGFtcCAtIG1pbmltdW1CdWZmZXI7CisgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNh
bXBsZU9mZnNldCA9IGZhbHNlOwogICAgIH0KIAogICAgIHRpbWVTdGFtcCArPSBtX291dHB1dFNh
bXBsZU9mZnNldDsKQEAgLTI2OSwyMyArMjI3LDEzIEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNv
CiAgICAgICAgICAgICAgICAgRVJST1JfTE9HKGxvZ0lkZW50aWZpZXIsICJuZWVkIG1vcmUgZGF0
YSwgc2FtcGxlICIsIHRpbWVTdGFtcCwgIiB3aXRoIG9mZnNldCAiLCBvdXRwdXRTYW1wbGVPZmZz
ZXQsICIsIHRyeWluZyB0byBnZXQgIiwgc2FtcGxlQ291bnQsICIgc2FtcGxlcywgYnV0IG5vdCBj
b21wbGV0ZWx5IGluIHJhbmdlIFsiLCBzdGFydEZyYW1lLCAiIC4uICIsIGVuZEZyYW1lLCAiXSIp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHRpbWVTdGFtcCA8IHN0
YXJ0RnJhbWUgfHwgdGltZVN0YW1wID49IGVuZEZyYW1lKSB7Ci0gICAgICAgICAgICAvLyBXZSBh
cmUgb3V0IG9mIHRoZSB3aW5kb3csIGxldCdzIHJlc3RhcnQgdGhlIG9mZnNldCBjb21wdXRhdGlv
bi4KLSAgICAgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCA9IHRydWU7
Ci0KLSAgICAgICAgICAgIGlmICh0aW1lU3RhbXAgPj0gZW5kRnJhbWUpCi0gICAgICAgICAgICAg
ICAgbV9lbmRGcmFtZVdoZW5Ob3RFbm91Z2hEYXRhID0gZW5kRnJhbWU7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBXZSBhcmUgdG9vIGNsb3NlIGZyb20gZW5kRnJhbWUsIGxldCdz
IHdhaXQgZm9yIG1vcmUgZGF0YSB0byBiZSBwdXNoZWQuCi0gICAgICAgICAgICBtX291dHB1dFNh
bXBsZU9mZnNldCAtPSBzYW1wbGVDb3VudDsKLSAgICAgICAgfQorICAgICAgICBtX3Nob3VsZENv
bXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSB0cnVlOwogICAgICAgICBpZiAobW9kZSAhPSBBdWRp
b1NhbXBsZURhdGFTb3VyY2U6Ok1peCkKICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6emVyb0FCTChidWZmZXIsIGJ5dGVDb3VudCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBtX2lzRmlyc3RQdWxsID0gZmFsc2U7Ci0KKyAgICBtX2xhc3RCdWZmZXJlZEFt
b3VudCA9IGVuZEZyYW1lIC0gdGltZVN0YW1wIC0gc2FtcGxlQ291bnQ7CiAgICAgcmV0dXJuIHB1
bGxTYW1wbGVzSW50ZXJuYWwoYnVmZmVyLCBzYW1wbGVDb3VudCwgdGltZVN0YW1wLCBtb2RlKTsK
IH0KIApAQCAtMzIwLDEyICsyNjgsMTIgQEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1
bGxBdmFpbGFibGVTYW1wbGVDaHVuayhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2kKICAgICBp
ZiAoYnVmZmVyLm1OdW1iZXJCdWZmZXJzICE9IG1fcmluZ0J1ZmZlci0+Y2hhbm5lbENvdW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtX211dGVkKQorICAgIGlmIChtX211
dGVkIHx8ICFtX2lucHV0U2FtcGxlT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAobV9zaG91bGRDb21wdXRlT3V0cHV0U2FtcGxlT2Zmc2V0KSB7CiAgICAgICAgIG1fc2hv
dWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCA9IGZhbHNlOwotICAgICAgICBtX291dHB1dFNh
bXBsZU9mZnNldCA9IG1faW5wdXRTYW1wbGVPZmZzZXQudGltZVZhbHVlKCkgKiBtX291dHB1dERl
c2NyaXB0aW9uLT5zYW1wbGVSYXRlKCkgLyBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVTY2FsZSgp
OworICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9ICptX2lucHV0U2FtcGxlT2Zmc2V0Owog
ICAgIH0KIAogICAgIHRpbWVTdGFtcCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKQEAgLTM1NCw2
ICszMDIsMTAgQEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1w
bGVzQXNDaHVua3MoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIKIAogICAgIHN0YXJ0RnJhbWUgPSB0
aW1lU3RhbXA7CiAKKyAgICBBU1NFUlQoZW5kRnJhbWUgPj0gc3RhcnRGcmFtZSk7CisgICAgaWYg
KGVuZEZyYW1lIDwgc3RhcnRGcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYg
KG1fbXV0ZWQpIHsKICAgICAgICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKGJ1ZmZl
ciwgc2FtcGxlQ291bnRQZXJDaHVuayAqIG1fb3V0cHV0RGVzY3JpcHRpb24tPmJ5dGVzUGVyRnJh
bWUoKSk7CiAgICAgICAgIHdoaWxlIChlbmRGcmFtZSAtIHN0YXJ0RnJhbWUgPj0gc2FtcGxlQ291
bnRQZXJDaHVuaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0LmgKaW5kZXggYTA1Njg0YzczMjBi
ZmJiY2M2ZDYxYTliYmRhNmMxZjY3OTQyNmZlZi4uMWE4OTZhYjczODUyODU0YmE3NzdiYzRkMTY2
ZjljYTJlNWRhMmFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5oCkBAIC02MiwxNSArNjIs
MTYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVsYXlTYW1wbGVzKFNlY29uZHMpIGZpbmFsOwog
CisgICAgdm9pZCBzdGFydCgpOwogICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Ugc2FtcGxlUmF0
ZUNhcGFjaXRpZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
KDQ0MTAwLCA0ODAwMCk7IH0KIAogICAgIHZvaWQgdGljaygpOwogCi0gICAgdm9pZCByZW5kZXIo
U2Vjb25kcyk7CisgICAgdm9pZCByZW5kZXIoTW9ub3RvbmljVGltZSk7CiAgICAgdm9pZCBlbWl0
U2FtcGxlQnVmZmVycyh1aW50MzJfdCBmcmFtZUNvdW50KTsKICAgICB2b2lkIHJlY29uZmlndXJl
KCk7CiAKLSAgICBzdGF0aWMgU2Vjb25kcyByZW5kZXJJbnRlcnZhbCgpIHsgcmV0dXJuIDYwX21z
OyB9CisgICAgc3RhdGljIFNlY29uZHMgcmVuZGVySW50ZXJ2YWwoKSB7IHJldHVybiAyMF9tczsg
fQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZl
ckxpc3Q7CiAKQEAgLTgzLDYgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxmbG9hdD4g
bV9iaXBCb3BCdWZmZXI7CiAgICAgYm9vbCBtX2hhc0F1ZGlvVW5pdCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiAKICAgICBSdW5Mb29wOjpUaW1lcjxN
b2NrQXVkaW9TaGFyZWRVbml0PiBtX3RpbWVyOwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0UmVu
ZGVyVGltZSB7IE1vbm90b25pY1RpbWU6Om5hbigpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0
Lm1tCmluZGV4IDYyNzJhNTM2MDBiMDdiZDQ1ZDJmZGJlZDk0MTgxYjYwYTJmMjM5ZWEuLjBkZDNk
NzFjYWU3YTYzYjYzNzIwOGYyODM4MjIwZTY1OWU0MjEzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFy
ZWRVbml0Lm1tCkBAIC0xMDEsOCArMTAxLDggQEAgTW9ja0F1ZGlvU2hhcmVkVW5pdCYgTW9ja0F1
ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkKIH0KIAogTW9ja0F1ZGlvU2hhcmVkVW5pdDo6TW9j
a0F1ZGlvU2hhcmVkVW5pdCgpCi0gICAgOiBtX3RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhp
cywgJk1vY2tBdWRpb1NoYXJlZFVuaXQ6OnRpY2spCi0gICAgLCBtX3dvcmtRdWV1ZShXb3JrUXVl
dWU6OmNyZWF0ZSgiTW9ja0F1ZGlvU2hhcmVkVW5pdCBDYXB0dXJlIFF1ZXVlIikpCisgICAgOiBt
X3RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk1vY2tBdWRpb1NoYXJlZFVuaXQ6OnN0
YXJ0KQorICAgICwgbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIk1vY2tBdWRpb1NoYXJl
ZFVuaXQgQ2FwdHVyZSBRdWV1ZSIsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQog
ewogfQogCkBAIC0xMjcsMTMgKzEyNywxMSBAQCBPU1N0YXR1cyBNb2NrQXVkaW9TaGFyZWRVbml0
OjpyZWNvbmZpZ3VyZUF1ZGlvVW5pdCgpCiAgICAgaWYgKCFoYXNBdWRpb1VuaXQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX2xhc3RSZW5kZXJUaW1l
ID0gTW9ub3RvbmljVGltZTo6bmFuKCk7CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlz
XSB7CiAgICAgICAgIHJlY29uZmlndXJlKCk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXNdIHsKLSAgICAgICAgICAgIG1fbGFzdFJlbmRlclRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKLSAgICAgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcocmVuZGVySW50ZXJ2YWwoKSk7
CisgICAgICAgICAgICBzdGFydEludGVybmFsKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogICAg
IHJldHVybiAwOwpAQCAtMTQyLDU3ICsxNDAsNDUgQEAgT1NTdGF0dXMgTW9ja0F1ZGlvU2hhcmVk
VW5pdDo6cmVjb25maWd1cmVBdWRpb1VuaXQoKQogdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0Ojpj
bGVhbnVwQXVkaW9Vbml0KCkKIHsKICAgICBtX2hhc0F1ZGlvVW5pdCA9IGZhbHNlOwotICAgIG1f
dGltZXIuc3RvcCgpOworICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7CiAgICAgbV9sYXN0
UmVuZGVyVGltZSA9IE1vbm90b25pY1RpbWU6Om5hbigpOwogfQogCiBPU1N0YXR1cyBNb2NrQXVk
aW9TaGFyZWRVbml0OjpzdGFydEludGVybmFsKCkKK3sKKyAgICBzdGFydCgpOworICAgIHJldHVy
biAwOworfQorCit2b2lkIE1vY2tBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0KCkKIHsKICAgICBpZiAo
IW1faGFzQXVkaW9Vbml0KQogICAgICAgICBtX2hhc0F1ZGlvVW5pdCA9IHRydWU7CiAKICAgICBt
X2xhc3RSZW5kZXJUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgbV90aW1lci5zdGFy
dFJlcGVhdGluZyhyZW5kZXJJbnRlcnZhbCgpKTsKLSAgICByZXR1cm4gMDsKKyAgICBtX2lzUHJv
ZHVjaW5nRGF0YSA9IHRydWU7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCByZW5k
ZXJUaW1lID0gbV9sYXN0UmVuZGVyVGltZV0geworICAgICAgICByZW5kZXIocmVuZGVyVGltZSk7
CisgICAgfSk7CiB9CiAKIHZvaWQgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6c3RvcEludGVybmFsKCkK
IHsKKyAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIGlmICghbV9oYXNBdWRpb1Vu
aXQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX2xhc3RSZW5k
ZXJUaW1lID0gTW9ub3RvbmljVGltZTo6bmFuKCk7CiB9CiAKIGJvb2wgTW9ja0F1ZGlvU2hhcmVk
VW5pdDo6aXNQcm9kdWNpbmdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90aW1lci5pc0Fj
dGl2ZSgpOwotfQotCi12b2lkIE1vY2tBdWRpb1NoYXJlZFVuaXQ6OnRpY2soKQotewotICAgIGlm
IChzdGQ6OmlzbmFuKG1fbGFzdFJlbmRlclRpbWUpKQotICAgICAgICBtX2xhc3RSZW5kZXJUaW1l
ID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0KLSAgICBNb25vdG9uaWNUaW1lIG5vdyA9IE1vbm90
b25pY1RpbWU6Om5vdygpOwotCi0gICAgaWYgKG1fZGVsYXlVbnRpbCkgewotICAgICAgICBpZiAo
bV9kZWxheVVudGlsIDwgbm93KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2RlbGF5
VW50aWwgPSBNb25vdG9uaWNUaW1lKCk7Ci0gICAgfQotCi0gICAgU2Vjb25kcyBkZWx0YSA9IG5v
dyAtIG1fbGFzdFJlbmRlclRpbWU7Ci0gICAgbV9sYXN0UmVuZGVyVGltZSA9IG5vdzsKLQotICAg
IG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgZGVsdGFdIHsKLSAgICAgICAgcmVuZGVyKGRl
bHRhKTsKLSAgICB9KTsKKyAgICByZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGE7CiB9CiAKIHZvaWQg
TW9ja0F1ZGlvU2hhcmVkVW5pdDo6ZGVsYXlTYW1wbGVzKFNlY29uZHMgZGVsdGEpCiB7Ci0gICAg
bV9kZWxheVVudGlsID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyBkZWx0YTsKKyAgICBzdG9wSW50
ZXJuYWwoKTsKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChkZWx0YSk7CiB9CiAKIHZvaWQgTW9j
a0F1ZGlvU2hhcmVkVW5pdDo6cmVjb25maWd1cmUoKQpAQCAtMjQ0LDkgKzIzMCwyNCBAQCB2b2lk
IE1vY2tBdWRpb1NoYXJlZFVuaXQ6OmVtaXRTYW1wbGVCdWZmZXJzKHVpbnQzMl90IGZyYW1lQ291
bnQpCiAgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRUaW1l
KSwgKm1fYXVkaW9CdWZmZXJMaXN0LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obV9zdHJlYW1G
b3JtYXQpLCBmcmFtZUNvdW50KTsKIH0KIAotdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0OjpyZW5k
ZXIoU2Vjb25kcyBkZWx0YSkKK3ZvaWQgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6cmVuZGVyKE1vbm90
b25pY1RpbWUgcmVuZGVyVGltZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoIWlzUHJvZHVjaW5nRGF0YSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRl
bHRhID0gcmVuZGVySW50ZXJ2YWwoKTsKKyAgICBhdXRvIGN1cnJlbnRUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CisgICAgYXV0byBuZXh0UmVuZGVyVGltZSA9IHJlbmRlclRpbWUgKyBkZWx0
YTsKKyAgICBTZWNvbmRzIG5leHRSZW5kZXJEZWxheSA9IG5leHRSZW5kZXJUaW1lLnNlY29uZHNT
aW5jZUVwb2NoKCkgLSBjdXJyZW50VGltZS5zZWNvbmRzU2luY2VFcG9jaCgpOworICAgIGlmIChu
ZXh0UmVuZGVyRGVsYXkuc2Vjb25kcygpIDwgMCkgeworICAgICAgICBuZXh0UmVuZGVyVGltZSA9
IGN1cnJlbnRUaW1lOworICAgICAgICBuZXh0UmVuZGVyRGVsYXkgPSAwX3M7CisgICAgfQorICAg
IG1fd29ya1F1ZXVlLT5kaXNwYXRjaEFmdGVyKG5leHRSZW5kZXJEZWxheSwgW3RoaXMsIG5leHRS
ZW5kZXJUaW1lXSB7CisgICAgICAgIHJlbmRlcihuZXh0UmVuZGVyVGltZSk7CisgICAgfSk7CisK
ICAgICBpZiAoIW1fYXVkaW9CdWZmZXJMaXN0IHx8ICFtX2JpcEJvcEJ1ZmZlci5zaXplKCkpCiAg
ICAgICAgIHJlY29uZmlndXJlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlQ29jb2EuY3BwCmluZGV4IDE2YTE2ZGNlNmQ1NzExMzg5YmI5OTVmNTY2Mzlj
YWE0YjNiNTExNTUuLjI4NGFkMWVkMzIyOTI3OTZjYTk5YTU4ZWZhNGNjZTgzZWJiZGQyNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApA
QCAtNDgsNiArNDgsOCBAQCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZQogICAgIDogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKQogICAgICwgbV9zYW1wbGVD
b252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3Jt
YXQ6OnNhbXBsZVJhdGUgKiAyLCBzb3VyY2UoKSkpCiB7CisgICAgLy8gV2UgYXJlIGRvaW5nIGJ1
ZmZlciBhZGFwdGF0aW9uIGRpcmVjdGx5IGluIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hIHNvIGRpc2FibGUgdGhlIG9uZSBpbiBtX3NhbXBsZUNvbnZlcnRlci4KKyAgICBtX3NhbXBs
ZUNvbnZlcnRlci0+ZGlzYWJsZUNvbnZlcnRlckFkYXB0YXRpb24oKTsKIH0KIAogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6On5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2Nv
YSgpID0gZGVmYXVsdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447351</attachid>
            <date>2021-12-16 06:34:01 -0800</date>
            <delta_ts>2021-12-16 08:01:37 -0800</delta_ts>
            <desc>Updated according review</desc>
            <filename>bug-233422-20211216153359.patch</filename>
            <type>text/plain</type>
            <size>40701</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI3OWEzYmRkYTJlMmM1
YWFiYWRjNDQ2ODY5ZjY1OWUwNTA4OWJkZi4uYWY3MzY5MWVjYzk5ZjA5NWU3MGVjNDczOTE2OTZm
ZGJiMjlkOTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTEyLTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBBdWRpb1NhbXBs
ZURhdGFTb3VyY2UgdG8gaW5jcmVhc2UvZGVjcmVhc2UgYnVmZmVyZWQgZGF0YSBwcm9ncmVzc2l2
ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQXVkaW9T
YW1wbGVEYXRhU291cmNlIGRvZXMgdGhlIGxpbmsgYmV0d2VlbiBwdXNoIGF1ZGlvIHNvdXJjZXMg
YW5kIHB1bGwgYXVkaW8gc2lua3MuCisgICAgICAgIEFzIHN1Y2gsIGl0IG5lZWRzIHRvIGRvIGJ1
ZmZlcmluZy4gSWYgYnVmZmVyaW5nIGlzIHRvbyBzbWFsbCwgZGF0YSBtYXkgYmUgbWlzc2luZyBh
bmQgYXVkaW8gZ2xpdGNoZXMgd2lsbCBiZSBoZWFyZC4KKyAgICAgICAgSWYgYnVmZmVyaW5nIGlz
IHRvbyBsYXJnZSwgbGF0ZW5jeSB3aWxsIGJlIGFkZGVkIHdoaWNoIG1pZ2h0IGJlIHVuZGVzaXJh
YmxlLCBlc3BlY2lhbGx5IGlmIGF1ZGlvIGlzIGJlaW5nIHBsYXllZCB3aXRoIHZpZGVvLgorICAg
ICAgICBXZSBnZW5lcmFsbHkgd2FudCBidWZmZXJlZCBhdWRpbyB0byBzdGF5IHdpdGhpbiBhIGNl
cnRhaW4gcmFuZ2UuCisKKyAgICAgICAgVG8gbWFrZSB0aGlzIGhhcHBlbiwgd2hlbiBidWZmZXJp
bmcgaXMgdG9vIGhpZ2gsIHdlIGNvbnZlcnQgdGhlIGRhdGEgd2l0aCBhIHNsaWdodGx5IGxvd2Vy
IHNhbXBsZSByYXRlIHRvIHB1c2ggbGVzcyBzYW1wbGVzLCB1bnRpbCB3ZSBhcmUgYmFjayB0byBu
b3JtYWwgYnVmZmVyaW5nLgorICAgICAgICBDb252ZXJzZWx5LCB3aGVuIGJ1ZmZlcmluZyBpcyB0
b28gbG93LCB3ZSBjb252ZXJ0IHRoZSBkYXRhIHdpdGggYSBzbGlnaHRseSBoaWdoZXIgc2FtcGxl
IHJhdGUgdG8gcHVzaCBtb3JlIHNhbXBsZXMsIHVudGlsIHdlIGFyZSBiYWNrIHRvIG5vcm1hbCBi
dWZmZXJpbmcuCisgICAgICAgIFdlIGRvIHRoaXMgd2l0aCAzIGNvbnZlcnRlcnMgdGhhdCB3ZSBz
ZWxlY3QgYmFzZWQgb24gYW1vdW50IG9mIGJ1ZmZlcmVkIGRhdGEuCisgICAgICAgIFRoaXMgYmVo
YXZpb3IgaXMgZW5jYXBzdWxhdGVkIGluIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci4KKworICAg
ICAgICBXZSBzaW1wbGlmeSBBdWRpb1NhbXBsZURhdGFTb3VyY2UgaW1wbGVtZW50YXRpb24gYnkg
YWx3YXlzIHJlY29tcHV0aW5nIHRoZSBzYW1wbGUgb2Zmc2V0IHdoZW4gdGhlcmUgaXMgbm90IGVu
b3VnaCBkYXRhLgorICAgICAgICBJbiB0aGF0IGNhc2UsIHdlIHdhaXQgZm9yIDUwbXMgb2YgYnVm
ZmVyZWQgZGF0YSwgd2hpY2ggaXMgdGhlIGF2ZXJhZ2UgYnVmZmVyIHdlIGV4cGVjdCwgdG8gcmVz
dGFydCBwdWxsaW5nIGRhdGEuCisgICAgICAgIEFsbCB2YWx1ZXMgb3duZWQgYnkgQXVkaW9TYW1w
bGVEYXRhU291cmNlIChtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSwgbV9jb252
ZXJ0ZXJJbnB1dE9mZnNldCwgbV9jb252ZXJ0ZXJJbnB1dE9mZnNldCwgbV9vdXRwdXRTYW1wbGVP
ZmZzZXQsIG1fbGFzdEJ1ZmZlcmVkQW1vdW50KQorICAgICAgICBhcmUgYWxsIGluIHRoZSBvdXRn
b2luZyB0aW1lbGluZS9zYW1wbGVSYXRlLgorCisgICAgICAgIFRoaXMgYWRhcHRhdGlvbiBpcyBv
bmx5IGVuYWJsZWQgd2hlbiBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzIGlzIGNh
bGxlZC4KKyAgICAgICAgRm9yIHB1bGxBdmFpbGFibGVTYW1wbGVzQXNDaHVua3MgYW5kIHB1bGxB
dmFpbGFibGVTYW1wbGVDaHVuaywgdGhlIHB1bGxlciBpcyBzdXBwb3NlZCB0byBiZSBpbiBzeW5j
IHdpdGggdGhlIHB1c2hlci4KKyAgICAgICAgRm9yIHRoYXQgcmVhc29uLCB3ZSBtYWtlIHN1cmUg
dG8gYWx3YXlzIHdyaXRlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXVkaW8gZnJhbWVzIHdoZW4g
cHVsbFNhbXBsZXMgaXMgY2FsbGVkLCBldmVuIGlmIGNvbnZlcnRlciBmYWlscy4KKworICAgICAg
ICBXZSBmaXggYSBwb3RlbnRpYWwgYnVzeSBsb29wIGluIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
cHVsbEF2YWlsYWJsZVNhbXBsZXNBc0NodW5rcyBpbiBjYXNlIGVuZEZyYW1lIGlzIGxvd2VyIHRo
YW4gc3RhcnRGcmFtZSwgd2hpY2ggaXMgY29tcHV0ZWQgZnJvbSB0aW1lU3RhbXAgaW5wdXQgcGFy
YW1ldGVyLgorCisgICAgICAgIFVwZGF0ZSBNb2NrQXVkaW9TaGFyZWRVbml0IHRvIGJlIGNsb3Nl
ciB0byBhIHJlYWwgc291cmNlIGJ5IGluY3JlYXNpbmcgdGhlIHF1ZXVlIHByaW9yaXR5IGFuZCBz
Y2hlZHVsZSByZW5kZXJpbmcgdGFza3MgZnJvbSB0aGUgcXVldWUgaW5zdGVhZCBvZiByZWx5aW5n
IG9uCisgICAgICAgIGEgbWFpbiB0aHJlYWQgdGltZXIgd2hpY2ggY2FuIGhhdmUgaGljY3Vwcy4K
KworICAgICAgICBNYW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhQ29udmVydGVy
Lm1tOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURh
dGFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURh
dGFTb3VyY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRp
b1NoYXJlZFVuaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1
ZGlvU2hhcmVkVW5pdC5tbToKKwogMjAyMS0xMi0xNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRvIHN0YXJ0IGEgcmVhbHRpbWUgb3V0Z29p
bmcgc291cmNlIGluIGNhc2UgaXQgaXMgdGFrZW4gdG8gYW5vdGhlciBzZW5kZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDBhNDBkYTU5MjBmODdlNGQ5MTA0ZTVlOTkxYWRkNzQ3MzdkNjNk
M2EuLjA0NTY1YWFiNDdiMTg5ODFhZDQ2NTFmODFmZTk3MGY4ZThhMzJiMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtMjI0LDYgKzIyNCw3IEBAIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJl
YWRlckNvY29hLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKK3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5tbQogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCiBwbGF0Zm9ybS9hdWRpby9jb2Nv
YS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJp
bmdCdWZmZXIuY3BwCkBAIC0zMTUsMTQgKzMxNiwxNCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBAbm8tdW5p
ZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXll
ck1hbmFnZXJPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDQ3M2I3ODliNDQzZTI4MDhmZWVjM2IxMTFiMmU2YjFlNDY3YjQzNGUuLmUxN2Zm
MTdjYWVhZjUxYjdiYjk2NGMxZGM0NWNkMDk0ZmQ5MDc1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMjksNiArMTIyOSw5
IEBACiAJCTQxRkNDQzNCMjc0NjY3NTYwMDg5MkFENiAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjNCQjU4
MzFFNzA5RUU0MDBDNzAxRjIgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRkNENkI5MjNDRTAxNTUw
MEM2MjU2NyAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDU5OEJFMjNDOEFBQjgwMDJCOUNDOCAvKiBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MUZDRDZCQjIzQ0UwMjc3MDBDNjI1NjcgLyogTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNDU5OEMwMjNDOEFENzgwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQxRkZEMkMzMjc1NjNFMEQwMDUwMUJCRiAvKiBBdWRpb1NhbXBsZURhdGFDb252
ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RkZEMkMwMjc1NjNERkYwMDUwMUJCRiAvKiBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUZGRDJDNDI3
NTY1NzBGMDA1MDFCQkYgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExOEQxQzU0NTkwMzAwREUzNEEz
IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSAqLzsgfTsKKwkJNDFGRkQyQzYyNzU2NTczRTAw
NTAxQkJGIC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjlBRkQ3MTEzRkMzMUQ4MDAx
NUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSAqLzsgfTsKIAkJ
NDI3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjdEQTcxQjEz
NzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCAqLzsgfTsKIAkJ
NDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI3REE3MUMxMzcz
NURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oICovOyB9OwogCQk0MzEw
N0JFMjE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzEwN0JFMTE4Q0MxOURFMDBD
QzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi87IH07CkBAIC04OTQyLDYgKzg5NDUs
OCBAQAogCQk0MUZDQjc1RjIxNDg2NkZGMDAzOEFEQzYgLyogUlRDUnRwQ29kZWNQYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cENvZGVjUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUZDQjc2MDIxNDg2NzAwMDAzOEFEQzYgLyogUlRDUnRwUnR4UGFy
YW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBSdHhQYXJhbWV0ZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkNCNzYxMjE0ODY3MDAwMDM4QURDNiAvKiBSVENSdHBF
bmNvZGluZ1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwRW5jb2RpbmdQYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkZEMkMwMjc1NjNERkYwMDUw
MUJCRiAvKiBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxRkZEMkMyMjc1NjNFMDAwMDUwMUJCRiAvKiBBdWRpb1NhbXBsZURhdGFD
b252ZXJ0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRp
b1NhbXBsZURhdGFDb252ZXJ0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQy
N0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VySW50ZXJu
YWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDI3REE3MUMxMzczNURGQTAw
N0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRv
VHlwZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3RvclBzZXVk
b1R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMDU0LDYgKzMwMDU5
LDggQEAKIAkJCQkxREI2NkQzNzI1MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5oICovLAogCQkJCTA3M0I4NzYyMUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1
ZmZlckxpc3QuY3BwICovLAogCQkJCTA3M0I4NzYzMUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3QuaCAqLywKKwkJCQk0MUZGRDJDMDI3NTYzREZGMDA1MDFCQkYgLyogQXVk
aW9TYW1wbGVEYXRhQ29udmVydGVyLmggKi8sCisJCQkJNDFGRkQyQzIyNzU2M0UwMDAwNTAxQkJG
IC8qIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5tbSAqLywKIAkJCQkwNzNCODc2NTFFNDM4NTlE
MDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggKi8sCiAJCQkJMDczQjg3NjQxRTQz
ODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSAqLywKIAkJCQkwNzNCODc1
NzFFNDBEQ0ZEMDA3MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcCAqLywKQEAg
LTMzMzExLDYgKzMzMzE4LDcgQEAKIAkJCQlGRDMxNjA4NjEyQjAyNkY3MDBDMUEzNTkgLyogQXVk
aW9SZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDg4MTJCMDI2RjcwMEMxQTM1
OSAvKiBBdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQjg3Njcx
RTQzODVBQzAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDFGRkQyQzMyNzU2M0UwRDAwNTAxQkJGIC8qIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQjg3NjkxRTQzODVBQzAwNzFDMEVDIC8qIEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ4QzQ2RUMxNTQ2MDhFNzAw
QTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zODQxMCw2ICszODQxOCw3IEBACiAJCQkJMkQ5QkY3NDMxREJGREMzRTAwN0E3RDk5IC8q
IE1lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBQ0MwNzk4MjVD
NzI2NzcwMERDNjM4NiAvKiBNZWRpYUtleVN5c3RlbUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOUFDQzA3OTYyNUM3MjVFRTAwREM2Mzg2IC8qIE1lZGlhS2V5U3lzdGVtUmVxdWVz
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUZGRDJDNjI3NTY1NzNFMDA1MDFCQkYgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNE
QzhCNUEyMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0
NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywK
QEAgLTM5MDM5LDYgKzM5MDQ4LDcgQEAKIAkJCQk3Q0U2ODM0NDE5MjE0M0E4MDBGNEQ5MjggLyog
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzcz
RkIwNzE5MUVGNDE3MDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzRkJDNEFGMzE4OTg4MTU2MDA0NkVFMzggLyogVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUZGRDJDNDI3NTY1
NzBGMDA1MDFCQkYgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjZGOUE4MzgxOEEwNDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDREVEMUMzQzI0Q0QzMDU3MDA5MzRFMTIgLyogVlA5VXRpbGl0
aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTQ4MzJCMTE4N0Y2MUUxMDBEQTYzQTYg
LyogV0FLQXBwS2l0U3R1YnMubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5j
cHAKaW5kZXggNGU5MDY0ZDBjNmU5MzA4OWFlMGVhYTZmOTk4ZWNkNjUzNzM1ZDFlNy4uYWVkMGE5
NWUxYjY0MTg5ZjllNGI4MjNmNjVmYzdjNTZiM2I5MjkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuY3BwCkBAIC0yOTcsMTcgKzI5NywxMiBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxp
c3Q6OmNvcHlGcm9tKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYgc291cmNlLCBzaXplX3QgZgogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBMT0dfRVJST1IoIkF1ZGlvU2FtcGxlQnVmZmVy
TGlzdDo6Y29weUZyb20oJXApIEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgcmV0dXJu
ZWQgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20o
JXApIEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgcmV0dXJuZWQgZXJyb3IgJWQgKCUu
NHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICBtX3NhbXBsZUNvdW50ID0g
c3RkOjptaW4obV9zYW1wbGVDYXBhY2l0eSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVzQ29u
dmVydGVkKSk7CiAgICAgemVybygpOwogICAgIHJldHVybiBlcnI7CiB9CiAKLU9TU3RhdHVzIEF1
ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3Vy
Y2UsIHNpemVfdCBmcmFtZUNvdW50LCBBdWRpb0NvbnZlcnRlclJlZiBjb252ZXJ0ZXIpCi17Ci0g
ICAgcmV0dXJuIGNvcHlGcm9tKHNvdXJjZS5idWZmZXJMaXN0KCksIGZyYW1lQ291bnQsIGNvbnZl
cnRlcik7Ci19Ci0KIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oQ0FS
aW5nQnVmZmVyJiByaW5nQnVmZmVyLCBzaXplX3Qgc2FtcGxlQ291bnQsIHVpbnQ2NF90IHN0YXJ0
RnJhbWUsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlIG1vZGUpCiB7CiAgICAgcmVzZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxl
QnVmZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmgKaW5kZXggN2UwNmJiMzQ4MWZiNDRlNWQ4ZmVmYzk2ODRhZWU5NzI2
ZjBmOTQwOS4uYWMzZWI1MmY2ZDEwMzI4YTJlZjVlODFjNGE0MTJlNzhmNTU5OGQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogCiAgICAgT1NTdGF0
dXMgY29weUZyb20oY29uc3QgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Jiwgc2l6ZV90IGNvdW50ID0g
U0laRV9NQVgpOwogICAgIE9TU3RhdHVzIGNvcHlGcm9tKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYs
IHNpemVfdCBmcmFtZUNvdW50LCBBdWRpb0NvbnZlcnRlclJlZik7Ci0gICAgT1NTdGF0dXMgY29w
eUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0Jiwgc2l6ZV90IGZyYW1lQ291bnQsIEF1ZGlvQ29u
dmVydGVyUmVmKTsKICAgICBPU1N0YXR1cyBjb3B5RnJvbShDQVJpbmdCdWZmZXImLCBzaXplX3Qg
ZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgQ0FSaW5nQnVmZmVyOjpGZXRjaE1vZGUp
OwogCiAgICAgT1NTdGF0dXMgbWl4RnJvbShjb25zdCBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QmLCBz
aXplX3QgY291bnQgPSBTSVpFX01BWCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ3NzU0MGFiZjkwYTY3MDk5NTZjZjMwNmE0NTE0ZTc3ODFiMTRlNGMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBs
ZURhdGFDb252ZXJ0ZXIuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK3R5cGVkZWYgc3RydWN0IEF1
ZGlvQnVmZmVyTGlzdCBBdWRpb0J1ZmZlckxpc3Q7CitzdHJ1Y3QgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIqIEF1ZGlvQ29u
dmVydGVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdDsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKK2NsYXNzIFBsYXRmb3Jt
QXVkaW9EYXRhOworCitjbGFzcyBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRl
cigpID0gZGVmYXVsdDsKKyAgICB+QXVkaW9TYW1wbGVEYXRhQ29udmVydGVyKCk7CisKKyAgICBP
U1N0YXR1cyBzZXRGb3JtYXRzKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgaW5wdXRE
ZXNjcmlwdGlvbiwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdXRwdXREZXNjcmlw
dGlvbik7CisgICAgYm9vbCB1cGRhdGVCdWZmZXJlZEFtb3VudChzaXplX3QgY3VycmVudEJ1ZmZl
cmVkQW1vdW50KTsKKyAgICBPU1N0YXR1cyBjb252ZXJ0KGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYs
IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYsIHNpemVfdCBzYW1wbGVDb3VudCk7CisgICAgc2l6ZV90
IHJlZ3VsYXJCdWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWd1bGFyQnVmZmVyU2l6ZTsg
fQorICAgIGJvb2wgaXNSZWd1bGFyKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZENvbnZlcnRl
ciA9PSBtX3JlZ3VsYXJDb252ZXJ0ZXI7IH0KKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9oaWdo
QnVmZmVyU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9yZWd1bGFySGlnaEJ1ZmZlclNpemUgeyAw
IH07CisgICAgc2l6ZV90IG1fcmVndWxhckJ1ZmZlclNpemUgeyAwIH07CisgICAgc2l6ZV90IG1f
cmVndWxhckxvd0J1ZmZlclNpemUgeyAwIH07CisgICAgc2l6ZV90IG1fbG93QnVmZmVyU2l6ZSB7
IDAgfTsKKworICAgIGNsYXNzIENvbnZlcnRlciB7CisgICAgcHVibGljOgorICAgICAgICBDb252
ZXJ0ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIH5Db252ZXJ0ZXIoKTsKKworICAgICAgICBPU1N0
YXR1cyBpbml0aWFsaXplKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgaW5wdXRE
ZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBvdXRwdXREZXNj
cmlwdGlvbik7CisgICAgICAgIG9wZXJhdG9yIEF1ZGlvQ29udmVydGVyUmVmKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdWRpb0NvbnZlcnRlcjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXVkaW9D
b252ZXJ0ZXJSZWYgbV9hdWRpb0NvbnZlcnRlciB7IG51bGxwdHIgfTsKKyAgICB9OworCisgICAg
Q29udmVydGVyIG1fbG93Q29udmVydGVyOworICAgIENvbnZlcnRlciBtX3JlZ3VsYXJDb252ZXJ0
ZXI7CisgICAgQ29udmVydGVyIG1faGlnaENvbnZlcnRlcjsKKyAgICBBdWRpb0NvbnZlcnRlclJl
ZiBtX3NlbGVjdGVkQ29udmVydGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVE
YXRhQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9TYW1wbGVEYXRhQ29udmVydGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NDE2MTQ5YTFkZjE1MWU5NWI3
Y2Q2ZGM5NGYwZGQ0Y2ZkOGVjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIubW0KQEAgLTAsMCAr
MSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5oIgor
CisjaW1wb3J0ICJBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCIKKyNpbXBvcnQgPEF1ZGlvVG9vbGJv
eC9BdWRpb0NvbnZlcnRlci5oPgorI2ltcG9ydCA8cGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5r
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyOjp+
QXVkaW9TYW1wbGVEYXRhQ29udmVydGVyKCkKK3sKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVE
YXRhQ29udmVydGVyOjpzZXRGb3JtYXRzKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYg
aW5wdXREZXNjcmlwdGlvbiwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdXRwdXRE
ZXNjcmlwdGlvbikKK3sKKyAgICBjb25zdGV4cHIgZG91YmxlIGJ1ZmZlcjEwMG1zID0gMC4xMDA7
CisgICAgY29uc3RleHByIGRvdWJsZSBidWZmZXI2MG1zID0gMC4wNjA7CisgICAgY29uc3RleHBy
IGRvdWJsZSBidWZmZXI1MG1zID0gMC4wNTA7CisgICAgY29uc3RleHByIGRvdWJsZSBidWZmZXI0
MG1zID0gMC4wNDA7CisgICAgY29uc3RleHByIGRvdWJsZSBidWZmZXIyMG1zID0gMC4wMjA7Cisg
ICAgbV9oaWdoQnVmZmVyU2l6ZSA9IG91dHB1dERlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIGJ1
ZmZlcjEwMG1zOworICAgIG1fcmVndWxhckhpZ2hCdWZmZXJTaXplID0gb3V0cHV0RGVzY3JpcHRp
b24uc2FtcGxlUmF0ZSgpICogYnVmZmVyNjBtczsKKyAgICBtX3JlZ3VsYXJCdWZmZXJTaXplID0g
b3V0cHV0RGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogYnVmZmVyNTBtczsKKyAgICBtX3JlZ3Vs
YXJMb3dCdWZmZXJTaXplID0gb3V0cHV0RGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogYnVmZmVy
NDBtczsKKyAgICBtX2xvd0J1ZmZlclNpemUgPSBvdXRwdXREZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCkgKiBidWZmZXIyMG1zOworCisgICAgbV9zZWxlY3RlZENvbnZlcnRlciA9IG51bGxwdHI7CisK
KyAgICBhdXRvIGNvbnZlcnRlck91dHB1dERlc2NyaXB0aW9uID0gb3V0cHV0RGVzY3JpcHRpb24u
c3RyZWFtRGVzY3JpcHRpb24oKTsKKyAgICBjb25zdGV4cHIgZG91YmxlIHNsaWdodGx5SGlnaGVy
UGl0Y2ggPSAxLjA1OworICAgIGNvbnZlcnRlck91dHB1dERlc2NyaXB0aW9uLm1TYW1wbGVSYXRl
ID0gc2xpZ2h0bHlIaWdoZXJQaXRjaCAqIG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0
aW9uKCkubVNhbXBsZVJhdGU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBtX2xvd0NvbnZlcnRlci5p
bml0aWFsaXplKGlucHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgY29udmVydGVy
T3V0cHV0RGVzY3JpcHRpb24pOyBlcnJvciAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGVycm9y
OworCisgICAgY29uc3RleHByIGRvdWJsZSBzbGlnaHRseUxvd2VyUGl0Y2ggPSAwLjk1OworICAg
IGNvbnZlcnRlck91dHB1dERlc2NyaXB0aW9uLm1TYW1wbGVSYXRlID0gc2xpZ2h0bHlMb3dlclBp
dGNoICogb3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKS5tU2FtcGxlUmF0ZTsK
KyAgICBpZiAoYXV0byBlcnJvciA9IG1faGlnaENvbnZlcnRlci5pbml0aWFsaXplKGlucHV0RGVz
Y3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgY29udmVydGVyT3V0cHV0RGVzY3JpcHRpb24p
OyBlcnJvciAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgaWYgKGlucHV0
RGVzY3JpcHRpb24gPT0gb3V0cHV0RGVzY3JpcHRpb24pCisgICAgICAgIHJldHVybiBub0VycjsK
KworICAgIGlmIChhdXRvIGVycm9yID0gbV9yZWd1bGFyQ29udmVydGVyLmluaXRpYWxpemUoaW5w
dXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCBvdXRwdXREZXNjcmlwdGlvbi5zdHJl
YW1EZXNjcmlwdGlvbigpKTsgZXJyb3IgIT0gbm9FcnIpCisgICAgICAgIHJldHVybiBlcnJvcjsK
KworICAgIG1fc2VsZWN0ZWRDb252ZXJ0ZXIgPSBtX3JlZ3VsYXJDb252ZXJ0ZXI7CisgICAgcmV0
dXJuIG5vRXJyOworfQorCitib29sIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6dXBkYXRlQnVm
ZmVyZWRBbW91bnQoc2l6ZV90IGN1cnJlbnRCdWZmZXJlZEFtb3VudCkKK3sKKyAgICBpZiAoY3Vy
cmVudEJ1ZmZlcmVkQW1vdW50KSB7CisgICAgICAgIGlmIChtX3NlbGVjdGVkQ29udmVydGVyID09
IG1fcmVndWxhckNvbnZlcnRlcikgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRCdWZmZXJlZEFt
b3VudCA8PSBtX2xvd0J1ZmZlclNpemUpCisgICAgICAgICAgICAgICAgbV9zZWxlY3RlZENvbnZl
cnRlciA9IG1fbG93Q29udmVydGVyOworICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudEJ1ZmZl
cmVkQW1vdW50ID49IG1faGlnaEJ1ZmZlclNpemUpCisgICAgICAgICAgICAgICAgbV9zZWxlY3Rl
ZENvbnZlcnRlciA9IG1faGlnaENvbnZlcnRlcjsKKyAgICAgICAgfSBlbHNlIGlmIChtX3NlbGVj
dGVkQ29udmVydGVyID09IG1faGlnaENvbnZlcnRlcikgeworICAgICAgICAgICAgaWYgKGN1cnJl
bnRCdWZmZXJlZEFtb3VudCA8IG1fcmVndWxhckxvd0J1ZmZlclNpemUpCisgICAgICAgICAgICAg
ICAgbV9zZWxlY3RlZENvbnZlcnRlciA9IG1fcmVndWxhckNvbnZlcnRlcjsKKyAgICAgICAgfSBl
bHNlIGlmIChjdXJyZW50QnVmZmVyZWRBbW91bnQgPiBtX3JlZ3VsYXJIaWdoQnVmZmVyU2l6ZSkK
KyAgICAgICAgICAgIG1fc2VsZWN0ZWRDb252ZXJ0ZXIgPSBtX3JlZ3VsYXJDb252ZXJ0ZXI7Cisg
ICAgfQorICAgIHJldHVybiAhIW1fc2VsZWN0ZWRDb252ZXJ0ZXI7Cit9CisKK09TU3RhdHVzIEF1
ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6Y29udmVydChjb25zdCBBdWRpb0J1ZmZlckxpc3QmIGlu
cHV0QnVmZmVyLCBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QmIG91dHB1dEJ1ZmZlciwgc2l6ZV90IHNh
bXBsZUNvdW50KQoreworICAgIG91dHB1dEJ1ZmZlci5yZXNldCgpOworICAgIHJldHVybiBvdXRw
dXRCdWZmZXIuY29weUZyb20oaW5wdXRCdWZmZXIsIHNhbXBsZUNvdW50LCBtX3NlbGVjdGVkQ29u
dmVydGVyKTsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyOjpDb252ZXJ0
ZXI6OmluaXRpYWxpemUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBpbnB1dERl
c2NyaXB0aW9uLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIG91dHB1dERlc2Ny
aXB0aW9uKQoreworICAgIGlmIChtX2F1ZGlvQ29udmVydGVyKSB7CisgICAgICAgIFBBTDo6QXVk
aW9Db252ZXJ0ZXJEaXNwb3NlKG1fYXVkaW9Db252ZXJ0ZXIpOworICAgICAgICBtX2F1ZGlvQ29u
dmVydGVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gUEFMOjpBdWRpb0NvbnZlcnRl
ck5ldygmaW5wdXREZXNjcmlwdGlvbiwgJm91dHB1dERlc2NyaXB0aW9uLCAmbV9hdWRpb0NvbnZl
cnRlcik7Cit9CisKK0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6Q29udmVydGVyOjp+Q29udmVy
dGVyKCkKK3sKKyAgICBpZiAobV9hdWRpb0NvbnZlcnRlcikKKyAgICAgICAgUEFMOjpBdWRpb0Nv
bnZlcnRlckRpc3Bvc2UobV9hdWRpb0NvbnZlcnRlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5kZXggMmNkMjBkNThlYmJmMzdkYjY1ZWMyYmRj
ODNkZGQ2NzY4NmUzZWExOS4uNTg1YTY3MWFkZGNmNjJkZjM1ZTc2YWJkMjg3YTVhOGU1ZDRmOWRk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9T
YW1wbGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJD
QVJpbmdCdWZmZXIuaCIKICNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KICNp
bmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CkBAIC0xMDIsMTMgKzEwMywxNSBAQCBwcml2YXRl
OgogCiAgICAgdWludDY0X3QgbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQgeyAwIH07CiAgICAgc2l6
ZV90IG1fd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQgeyAyIH07Ci0gICAgTWVkaWFUaW1lIG1fZXhw
ZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZSB7IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSB9Owot
ICAgIGJvb2wgbV9pc0ZpcnN0UHVsbCB7IHRydWUgfTsKIAotICAgIE1lZGlhVGltZSBtX2lucHV0
U2FtcGxlT2Zmc2V0OworICAgIGludDY0X3QgbV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1l
VmFsdWUgeyAwIH07CisgICAgaW50NjRfdCBtX2NvbnZlcnRlcklucHV0T2Zmc2V0IHsgMCB9Owor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gbV9pbnB1dFNhbXBsZU9mZnNldDsKICAgICBpbnQ2
NF90IG1fb3V0cHV0U2FtcGxlT2Zmc2V0IHsgMCB9OworICAgIHVpbnQ2NF90IG1fbGFzdEJ1ZmZl
cmVkQW1vdW50IHsgMCB9OworCisgICAgQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyIG1fY29udmVy
dGVyOwogCi0gICAgQXVkaW9Db252ZXJ0ZXJSZWYgbV9jb252ZXJ0ZXI7CiAgICAgUmVmUHRyPEF1
ZGlvU2FtcGxlQnVmZmVyTGlzdD4gbV9zY3JhdGNoQnVmZmVyOwogCiAgICAgVW5pcXVlUmVmPENB
UmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwpAQCAtMTE3LDEwICsxMjAsOCBAQCBwcml2YXRlOgog
ICAgIGZsb2F0IG1fdm9sdW1lIHsgMS4wIH07CiAgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCB7IHRydWUgfTsKLSAg
ICB1aW50NjRfdCBtX2VuZEZyYW1lV2hlbk5vdEVub3VnaERhdGEgeyAwIH07CiAKICAgICBib29s
IG1faXNJbk5lZWRPZk1vcmVEYXRhIHsgZmFsc2UgfTsKLQogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1f
bG9nSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCBmMDEwZDNjY2NiZWE1
NTc1NTgyY2FkNDRjM2ZkMmEyMTRhYzYyZjJjLi5jOWUzYzdiNjFkYTIzYjRiYTRkZTg4NmVhYTNk
NWJmYzhmZTNjZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDcgKzUxLDYgQEAgUmVm
PEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6
ZV90IG1heGltdW1TYW1wbGVDb3UKIAogQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBs
ZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGVscGVyJiBsb2dn
ZXJIZWxwZXIsIHNpemVfdCB3YWl0VG9TdGFydEZvclB1c2hDb3VudCkKICAgICA6IG1fd2FpdFRv
U3RhcnRGb3JQdXNoQ291bnQod2FpdFRvU3RhcnRGb3JQdXNoQ291bnQpCi0gICAgLCBtX2lucHV0
U2FtcGxlT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fcmluZ0J1ZmZl
cihtYWtlVW5pcXVlUmVmPENBUmluZ0J1ZmZlcj4oKSkKICAgICAsIG1fbWF4aW11bVNhbXBsZUNv
dW50KG1heGltdW1TYW1wbGVDb3VudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTY2
LDMxICs2NSwxMiBAQCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZShzaXplX3QgbWF4aW11bVNhbXBsZUNvdW50LCBMb2dnZXJIZQogCiBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6On5BdWRpb1NhbXBsZURhdGFTb3VyY2UoKQogewotICAgIGlmIChtX2NvbnZlcnRlcikK
LSAgICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9jb252ZXJ0ZXIpOwogfQogCiBP
U1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldHVwQ29udmVydGVyKCkKIHsKICAgICBB
U1NFUlQobV9pbnB1dERlc2NyaXB0aW9uICYmIG1fb3V0cHV0RGVzY3JpcHRpb24pOwotCi0gICAg
aWYgKG1fY29udmVydGVyKSB7Ci0gICAgICAgIFBBTDo6QXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1f
Y29udmVydGVyKTsKLSAgICAgICAgbV9jb252ZXJ0ZXIgPSBudWxscHRyOwotICAgIH0KLQotICAg
IGlmICgqbV9pbnB1dERlc2NyaXB0aW9uID09ICptX291dHB1dERlc2NyaXB0aW9uKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIE9TU3RhdHVzIGVyciA9IFBBTDo6QXVkaW9Db252ZXJ0ZXJOZXco
Jm1faW5wdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24oKSwgJm1fb3V0cHV0RGVzY3Jp
cHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksICZtX2NvbnZlcnRlcik7Ci0gICAgaWYgKGVycikg
ewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBlcnJdIHsKLSAgICAgICAgICAgIEVSUk9SX0xPRygiQXVkaW9Db252
ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgIiwgZXJyKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGVycjsKLQorICAgIHJldHVybiBtX2NvbnZlcnRlci5zZXRGb3JtYXRzKCptX2lu
cHV0RGVzY3JpcHRpb24sICptX291dHB1dERlc2NyaXB0aW9uKTsKIH0KIAogT1NTdGF0dXMgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGZvcm1hdCkKQEAgLTEwOSw2ICs4OSw5IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYKICAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoZm9ybWF0LnNh
bXBsZVJhdGUoKSA+PSAwKTsKIAorICAgIGlmIChtX291dHB1dERlc2NyaXB0aW9uICYmICptX291
dHB1dERlc2NyaXB0aW9uID09IGZvcm1hdCkKKyAgICAgICAgcmV0dXJuIG5vRXJyOworCiAgICAg
bV9vdXRwdXREZXNjcmlwdGlvbiA9IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiB7IGZvcm1hdCB9
OwogCiAgICAgewpAQCAtMTE3LDYgKzEwMCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNv
dXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYKICAg
ICAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNh
YmxlTWFsbG9jUmVzdHJpY3Rpb25zOwogICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGZv
cm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVDb3VudCkpOwogICAgICAg
ICBtX3NjcmF0Y2hCdWZmZXIgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZShtX291dHB1
dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX21heGltdW1TYW1wbGVDb3VudCk7
CisgICAgICAgIG1fY29udmVydGVySW5wdXRPZmZzZXQgPSAwOwogICAgIH0KIAogICAgIHJldHVy
biBzZXR1cENvbnZlcnRlcigpOwpAQCAtMTQwLDM0ICsxMjQsNDIgQEAgTWVkaWFUaW1lIEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZTo6aG9zdFRpbWUoKSBjb25zdAogCiB2b2lkIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6cHVzaFNhbXBsZXNJbnRlcm5hbChjb25zdCBBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZl
ckxpc3QsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgc2l6ZV90IHNhbXBsZUNv
dW50KQogewotICAgIE1lZGlhVGltZSBzYW1wbGVUaW1lID0gcHJlc2VudGF0aW9uVGltZTsKKyAg
ICBpbnQ2NF90IHJpbmdCdWZmZXJJbmRleFRvV3JpdGUgPSBwcmVzZW50YXRpb25UaW1lLnRvVGlt
ZVNjYWxlKG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKSkudGltZVZhbHVlKCk7CiAK
KyAgICBpbnQ2NF90IG9mZnNldCA9IDA7CiAgICAgY29uc3QgQXVkaW9CdWZmZXJMaXN0KiBzYW1w
bGVCdWZmZXJMaXN0OwotICAgIGlmIChtX2NvbnZlcnRlcikgewotICAgICAgICBtX3NjcmF0Y2hC
dWZmZXItPnJlc2V0KCk7Ci0gICAgICAgIE9TU3RhdHVzIGVyciA9IG1fc2NyYXRjaEJ1ZmZlci0+
Y29weUZyb20oYnVmZmVyTGlzdCwgc2FtcGxlQ291bnQsIG1fY29udmVydGVyKTsKLSAgICAgICAg
aWYgKGVycikKLSAgICAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2NvbnZlcnRlci51cGRh
dGVCdWZmZXJlZEFtb3VudChtX2xhc3RCdWZmZXJlZEFtb3VudCkpIHsKKyAgICAgICAgbV9zY3Jh
dGNoQnVmZmVyLT5yZXNldCgpOworICAgICAgICBtX2NvbnZlcnRlci5jb252ZXJ0KGJ1ZmZlckxp
c3QsICptX3NjcmF0Y2hCdWZmZXIsIHNhbXBsZUNvdW50KTsKKyAgICAgICAgYXV0byBleHBlY3Rl
ZFNhbXBsZUNvdW50ID0gc2FtcGxlQ291bnQgKiBtX291dHB1dERlc2NyaXB0aW9uLT5zYW1wbGVS
YXRlKCkgLyBtX2lucHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKTsKKyAgICAgICAgaWYgKG1f
Y29udmVydGVyLmlzUmVndWxhcigpICYmIGV4cGVjdGVkU2FtcGxlQ291bnQgIT0gbV9zY3JhdGNo
QnVmZmVyLT5zYW1wbGVDb3VudCgpKSB7CisgICAgICAgICAgICAvLyBTb21ldGltZXMgY29udmVy
dGVyIGlzIG5vdCB3cml0aW5nIGVub3VnaCBkYXRhLCBwcmV0ZW5kIHRoaXMgaXMgdGhlIGNhc2Ug
dG8ga2VlcCBwdXNoZXIgYW5kIHB1bGxlciBpbiBzeW5jLgorICAgICAgICAgICAgb2Zmc2V0ID0g
MDsKKyAgICAgICAgICAgIHNhbXBsZUNvdW50ID0gZXhwZWN0ZWRTYW1wbGVDb3VudDsKKyAgICAg
ICAgICAgIGlmIChtX3NjcmF0Y2hCdWZmZXItPnNhbXBsZUNvdW50KCkgPiBzYW1wbGVDb3VudCkK
KyAgICAgICAgICAgICAgICBtX3NjcmF0Y2hCdWZmZXItPnNldFNhbXBsZUNvdW50KHNhbXBsZUNv
dW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG9mZnNldCA9IG1fc2NyYXRjaEJ1
ZmZlci0+c2FtcGxlQ291bnQoKSAtIGV4cGVjdGVkU2FtcGxlQ291bnQ7CisgICAgICAgICAgICBz
YW1wbGVDb3VudCA9IG1fc2NyYXRjaEJ1ZmZlci0+c2FtcGxlQ291bnQoKTsKKyAgICAgICAgfQog
ICAgICAgICBzYW1wbGVCdWZmZXJMaXN0ID0gbV9zY3JhdGNoQnVmZmVyLT5idWZmZXJMaXN0KCku
bGlzdCgpOwotICAgICAgICBzYW1wbGVDb3VudCA9IG1fc2NyYXRjaEJ1ZmZlci0+c2FtcGxlQ291
bnQoKTsKLSAgICAgICAgc2FtcGxlVGltZSA9IHByZXNlbnRhdGlvblRpbWUudG9UaW1lU2NhbGUo
bV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZFplcm8pOwogICAgIH0gZWxzZQogICAgICAgICBzYW1wbGVCdWZmZXJMaXN0ID0g
JmJ1ZmZlckxpc3Q7CiAKLSAgICBpZiAobV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lLmlz
VmFsaWQoKSAmJiBhYnMobV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lIC0gc2FtcGxlVGlt
ZSkudGltZVZhbHVlKCkgPT0gMSkKLSAgICAgICAgc2FtcGxlVGltZSA9IG1fZXhwZWN0ZWROZXh0
UHVzaGVkU2FtcGxlVGltZTsKLSAgICBtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUgPSBz
YW1wbGVUaW1lICsgTWVkaWFUaW1lKHNhbXBsZUNvdW50LCBzYW1wbGVUaW1lLnRpbWVTY2FsZSgp
KTsKKyAgICBpZiAoIW1faW5wdXRTYW1wbGVPZmZzZXQpIHsKKyAgICAgICAgbV9pbnB1dFNhbXBs
ZU9mZnNldCA9IDEgLSByaW5nQnVmZmVySW5kZXhUb1dyaXRlOworICAgICAgICByaW5nQnVmZmVy
SW5kZXhUb1dyaXRlID0gMTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmluZ0J1ZmZlckluZGV4VG9X
cml0ZSArPSAqbV9pbnB1dFNhbXBsZU9mZnNldDsKIAotICAgIGlmIChtX2lucHV0U2FtcGxlT2Zm
c2V0ID09IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKLSAgICAgICAgbV9pbnB1dFNhbXBsZU9m
ZnNldCA9IE1lZGlhVGltZSgxIC0gc2FtcGxlVGltZS50aW1lVmFsdWUoKSwgc2FtcGxlVGltZS50
aW1lU2NhbGUoKSk7Ci0gICAgc2FtcGxlVGltZSArPSBtX2lucHV0U2FtcGxlT2Zmc2V0OworICAg
IGlmIChtX2NvbnZlcnRlcklucHV0T2Zmc2V0KQorICAgICAgICByaW5nQnVmZmVySW5kZXhUb1dy
aXRlICs9IG1fY29udmVydGVySW5wdXRPZmZzZXQ7CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAg
dWludDY0X3Qgc3RhcnRGcmFtZTEgPSAwOwotICAgIHVpbnQ2NF90IGVuZEZyYW1lMSA9IDA7Ci0g
ICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZTEsIGVuZEZy
YW1lMSk7Ci0jZW5kaWYKKyAgICBpZiAobV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lVmFs
dWUgJiYgYWJzKChmbG9hdCltX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSAtIChm
bG9hdClyaW5nQnVmZmVySW5kZXhUb1dyaXRlKSA8PSAxKQorICAgICAgICByaW5nQnVmZmVySW5k
ZXhUb1dyaXRlID0gbV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lVmFsdWU7CisKKyAgICBt
X2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSA9IHJpbmdCdWZmZXJJbmRleFRvV3Jp
dGUgKyBzYW1wbGVDb3VudDsKIAogICAgIGlmIChtX2lzSW5OZWVkT2ZNb3JlRGF0YSkgewogICAg
ICAgICBtX2lzSW5OZWVkT2ZNb3JlRGF0YSA9IGZhbHNlOwpAQCAtMTc2LDcgKzE2OCwxMCBAQCB2
b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXNJbnRlcm5hbChjb25zdCBBdWRp
b0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlm
aWVyLCAibmVlZGVkIG1vcmUgZGF0YSwgcHVzaGluZyAiLCBzYW1wbGVDb3VudCwgIiBzYW1wbGVz
Iik7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICBtX3JpbmdCdWZmZXItPnN0b3JlKHNhbXBsZUJ1
ZmZlckxpc3QsIHNhbXBsZUNvdW50LCBzYW1wbGVUaW1lLnRpbWVWYWx1ZSgpKTsKKworICAgIG1f
cmluZ0J1ZmZlci0+c3RvcmUoc2FtcGxlQnVmZmVyTGlzdCwgc2FtcGxlQ291bnQsIHJpbmdCdWZm
ZXJJbmRleFRvV3JpdGUpOworCisgICAgbV9jb252ZXJ0ZXJJbnB1dE9mZnNldCArPSBvZmZzZXQ7
CiAgICAgbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsKIH0KIApAQCAtMTk0
LDIxICsxODksNiBAQCB2b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXMoY29u
c3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQbGF0ZgogICAgIHB1c2hTYW1wbGVzSW50
ZXJuYWwoKmRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRhKS5saXN0KCksIHNh
bXBsZVRpbWUsIHNhbXBsZUNvdW50KTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQ2NF90IGNvbXB1
dGVPZmZzZXREZWxheShkb3VibGUgc2FtcGxlUmF0ZSwgdWludDY0X3QgbGFzdFB1c2hlZFNhbXBs
ZUNvdW50KQotewotICAgIGNvbnN0IGRvdWJsZSB0d2VudHlNUyA9IC4wMjsKLSAgICBjb25zdCBk
b3VibGUgdGVuTVMgPSAuMDE7Ci0gICAgY29uc3QgZG91YmxlIGZpdmVNUyA9IC4wMDU7Ci0KLSAg
ICBpZiAobGFzdFB1c2hlZFNhbXBsZUNvdW50ID4gc2FtcGxlUmF0ZSAqIHR3ZW50eU1TKQotICAg
ICAgICByZXR1cm4gc2FtcGxlUmF0ZSAqIHR3ZW50eU1TOwotICAgIGlmIChsYXN0UHVzaGVkU2Ft
cGxlQ291bnQgPiBzYW1wbGVSYXRlICogdGVuTVMpCi0gICAgICAgIHJldHVybiBzYW1wbGVSYXRl
ICogdGVuTVM7Ci0gICAgaWYgKGxhc3RQdXNoZWRTYW1wbGVDb3VudCA+IHNhbXBsZVJhdGUgKiBm
aXZlTVMpCi0gICAgICAgIHJldHVybiBzYW1wbGVSYXRlICogZml2ZU1TOwotICAgIHJldHVybiAw
OwotfQotCiBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXMoQXVkaW9CdWZm
ZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDb3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBk
b3VibGUgLypob3N0VGltZSovLCBQdWxsTW9kZSBtb2RlKQogewogICAgIHNpemVfdCBieXRlQ291
bnQgPSBzYW1wbGVDb3VudCAqIG1fb3V0cHV0RGVzY3JpcHRpb24tPmJ5dGVzUGVyRnJhbWUoKTsK
QEAgLTIyMCw3ICsyMDAsNyBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBs
ZXMoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDbwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1fbXV0ZWQgfHwgbV9pbnB1dFNhbXBsZU9mZnNl
dCA9PSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpIHsKKyAgICBpZiAobV9tdXRlZCB8fCAhbV9p
bnB1dFNhbXBsZU9mZnNldCkgewogICAgICAgICBpZiAobW9kZSAhPSBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6Ok1peCkKICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChi
dWZmZXIsIGJ5dGVDb3VudCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMCwzMyArMjEw
LDE5IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZl
ckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvCiAgICAgdWludDY0X3QgZW5kRnJhbWUgPSAw
OwogICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVu
ZEZyYW1lKTsKIAotICAgIGlmIChtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQpIHsK
LSAgICAgICAgdWludDY0X3QgYnVmZmVyZWQgPSBlbmRGcmFtZSAtIHN0YXJ0RnJhbWU7Ci0gICAg
ICAgIGlmIChtX2lzRmlyc3RQdWxsKSB7Ci0gICAgICAgICAgICBhdXRvIG1pbmltdW1CdWZmZXIg
PSBtX3dhaXRUb1N0YXJ0Rm9yUHVzaENvdW50ICogbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQ7Ci0g
ICAgICAgICAgICBpZiAoYnVmZmVyZWQgPj0gbWluaW11bUJ1ZmZlcikgewotICAgICAgICAgICAg
ICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gc3RhcnRGcmFtZSAtIHRpbWVTdGFtcDsKLSAgICAg
ICAgICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBtX2VuZEZyYW1lV2hlbk5vdEVub3VnaERhdGEgPSAwOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBXZSB3YWl0IGZvciBvbmUgY2h1bmsgb2Yg
dmFsdWUgYmVmb3JlIHN0YXJ0aW5nIHRvIHBsYXkuCi0gICAgICAgICAgICAgICAgaWYgKG1vZGUg
IT0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpNaXgpCi0gICAgICAgICAgICAgICAgICAgIEF1ZGlv
U2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIGJ5dGVDb3VudCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKGJ1ZmZlcmVkIDwgc2FtcGxlQ291bnQgKiAyIHx8IChtX2VuZEZyYW1lV2hl
bk5vdEVub3VnaERhdGEgJiYgbV9lbmRGcmFtZVdoZW5Ob3RFbm91Z2hEYXRhID09IGVuZEZyYW1l
KSkgewotICAgICAgICAgICAgICAgIGlmIChtb2RlICE9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
TWl4KQotICAgICAgICAgICAgICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwo
YnVmZmVyLCBieXRlQ291bnQpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgbV9zaG91bGRDb21wdXRlT3V0cHV0U2FtcGxlT2Zmc2V0
ID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2VuZEZyYW1lV2hlbk5vdEVub3VnaERhdGEgPSAwOwor
ICAgIEFTU0VSVChtX3dhaXRUb1N0YXJ0Rm9yUHVzaENvdW50KTsKIAotICAgICAgICAgICAgbV9v
dXRwdXRTYW1wbGVPZmZzZXQgPSAoZW5kRnJhbWUgLSBzYW1wbGVDb3VudCkgLSB0aW1lU3RhbXA7
Ci0gICAgICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCAtPSBjb21wdXRlT2Zmc2V0RGVsYXko
bV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpLCBtX2xhc3RQdXNoZWRTYW1wbGVDb3Vu
dCk7CisgICAgdWludDY0X3QgYnVmZmVyZWQgPSBlbmRGcmFtZSAtIHN0YXJ0RnJhbWU7CisgICAg
aWYgKG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCkgeworICAgICAgICBhdXRvIG1p
bmltdW1CdWZmZXIgPSBzdGQ6Om1heDxzaXplX3Q+KG1fd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQg
KiBtX2xhc3RQdXNoZWRTYW1wbGVDb3VudCwgbV9jb252ZXJ0ZXIucmVndWxhckJ1ZmZlclNpemUo
KSk7CisgICAgICAgIGlmIChidWZmZXJlZCA8IG1pbmltdW1CdWZmZXIpIHsKKyAgICAgICAgICAg
IC8vIFdlIHdhaXQgZm9yIG9uZSBjaHVuayBvZiB2YWx1ZSBiZWZvcmUgc3RhcnRpbmcgdG8gcGxh
eS4KKyAgICAgICAgICAgIGlmIChtb2RlICE9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6TWl4KQor
ICAgICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIGJ5
dGVDb3VudCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAg
bV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBlbmRGcmFtZSAtIHRpbWVTdGFtcCAtIG1pbmltdW1CdWZm
ZXI7CisgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCA9IGZhbHNlOwog
ICAgIH0KIAogICAgIHRpbWVTdGFtcCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKQEAgLTI2OSwy
MyArMjM1LDEzIEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlcyhBdWRp
b0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvCiAgICAgICAgICAgICAgICAgRVJS
T1JfTE9HKGxvZ0lkZW50aWZpZXIsICJuZWVkIG1vcmUgZGF0YSwgc2FtcGxlICIsIHRpbWVTdGFt
cCwgIiB3aXRoIG9mZnNldCAiLCBvdXRwdXRTYW1wbGVPZmZzZXQsICIsIHRyeWluZyB0byBnZXQg
Iiwgc2FtcGxlQ291bnQsICIgc2FtcGxlcywgYnV0IG5vdCBjb21wbGV0ZWx5IGluIHJhbmdlIFsi
LCBzdGFydEZyYW1lLCAiIC4uICIsIGVuZEZyYW1lLCAiXSIpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKHRpbWVTdGFtcCA8IHN0YXJ0RnJhbWUgfHwgdGltZVN0YW1w
ID49IGVuZEZyYW1lKSB7Ci0gICAgICAgICAgICAvLyBXZSBhcmUgb3V0IG9mIHRoZSB3aW5kb3cs
IGxldCdzIHJlc3RhcnQgdGhlIG9mZnNldCBjb21wdXRhdGlvbi4KLSAgICAgICAgICAgIG1fc2hv
dWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCA9IHRydWU7Ci0KLSAgICAgICAgICAgIGlmICh0
aW1lU3RhbXAgPj0gZW5kRnJhbWUpCi0gICAgICAgICAgICAgICAgbV9lbmRGcmFtZVdoZW5Ob3RF
bm91Z2hEYXRhID0gZW5kRnJhbWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBX
ZSBhcmUgdG9vIGNsb3NlIGZyb20gZW5kRnJhbWUsIGxldCdzIHdhaXQgZm9yIG1vcmUgZGF0YSB0
byBiZSBwdXNoZWQuCi0gICAgICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCAtPSBzYW1wbGVD
b3VudDsKLSAgICAgICAgfQorICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZz
ZXQgPSB0cnVlOwogICAgICAgICBpZiAobW9kZSAhPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6Ok1p
eCkKICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIGJ5
dGVDb3VudCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX2lzRmlyc3RQ
dWxsID0gZmFsc2U7Ci0KKyAgICBtX2xhc3RCdWZmZXJlZEFtb3VudCA9IGVuZEZyYW1lIC0gdGlt
ZVN0YW1wIC0gc2FtcGxlQ291bnQ7CiAgICAgcmV0dXJuIHB1bGxTYW1wbGVzSW50ZXJuYWwoYnVm
ZmVyLCBzYW1wbGVDb3VudCwgdGltZVN0YW1wLCBtb2RlKTsKIH0KIApAQCAtMzIwLDEyICsyNzYs
MTIgQEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVDaHVu
ayhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2kKICAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZm
ZXJzICE9IG1fcmluZ0J1ZmZlci0+Y2hhbm5lbENvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChtX211dGVkKQorICAgIGlmIChtX211dGVkIHx8ICFtX2lucHV0U2FtcGxl
T2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9zaG91bGRDb21wdXRl
T3V0cHV0U2FtcGxlT2Zmc2V0KSB7CiAgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBs
ZU9mZnNldCA9IGZhbHNlOwotICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IG1faW5wdXRT
YW1wbGVPZmZzZXQudGltZVZhbHVlKCkgKiBtX291dHB1dERlc2NyaXB0aW9uLT5zYW1wbGVSYXRl
KCkgLyBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVTY2FsZSgpOworICAgICAgICBtX291dHB1dFNh
bXBsZU9mZnNldCA9ICptX2lucHV0U2FtcGxlT2Zmc2V0OwogICAgIH0KIAogICAgIHRpbWVTdGFt
cCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKQEAgLTM1NCw2ICszMTAsMTAgQEAgYm9vbCBBdWRp
b1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVzQXNDaHVua3MoQXVkaW9CdWZm
ZXJMaXN0JiBidWZmZXIKIAogICAgIHN0YXJ0RnJhbWUgPSB0aW1lU3RhbXA7CiAKKyAgICBBU1NF
UlQoZW5kRnJhbWUgPj0gc3RhcnRGcmFtZSk7CisgICAgaWYgKGVuZEZyYW1lIDwgc3RhcnRGcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKG1fbXV0ZWQpIHsKICAgICAgICAg
QXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKGJ1ZmZlciwgc2FtcGxlQ291bnRQZXJDaHVu
ayAqIG1fb3V0cHV0RGVzY3JpcHRpb24tPmJ5dGVzUGVyRnJhbWUoKSk7CiAgICAgICAgIHdoaWxl
IChlbmRGcmFtZSAtIHN0YXJ0RnJhbWUgPj0gc2FtcGxlQ291bnRQZXJDaHVuaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1No
YXJlZFVuaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
QXVkaW9TaGFyZWRVbml0LmgKaW5kZXggYTA1Njg0YzczMjBiZmJiY2M2ZDYxYTliYmRhNmMxZjY3
OTQyNmZlZi4uMWE4OTZhYjczODUyODU0YmE3NzdiYzRkMTY2ZjljYTJlNWRhMmFmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1No
YXJlZFVuaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TW9ja0F1ZGlvU2hhcmVkVW5pdC5oCkBAIC02MiwxNSArNjIsMTYgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGVsYXlTYW1wbGVzKFNlY29uZHMpIGZpbmFsOwogCisgICAgdm9pZCBzdGFydCgpOwog
ICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Ugc2FtcGxlUmF0ZUNhcGFjaXRpZXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDQ0MTAwLCA0ODAwMCk7IH0KIAog
ICAgIHZvaWQgdGljaygpOwogCi0gICAgdm9pZCByZW5kZXIoU2Vjb25kcyk7CisgICAgdm9pZCBy
ZW5kZXIoTW9ub3RvbmljVGltZSk7CiAgICAgdm9pZCBlbWl0U2FtcGxlQnVmZmVycyh1aW50MzJf
dCBmcmFtZUNvdW50KTsKICAgICB2b2lkIHJlY29uZmlndXJlKCk7CiAKLSAgICBzdGF0aWMgU2Vj
b25kcyByZW5kZXJJbnRlcnZhbCgpIHsgcmV0dXJuIDYwX21zOyB9CisgICAgc3RhdGljIFNlY29u
ZHMgcmVuZGVySW50ZXJ2YWwoKSB7IHJldHVybiAyMF9tczsgfQogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CiAKQEAgLTgzLDYgKzg0
LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxmbG9hdD4gbV9iaXBCb3BCdWZmZXI7CiAgICAg
Ym9vbCBtX2hhc0F1ZGlvVW5pdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0
YSB7IGZhbHNlIH07CiAKICAgICBSdW5Mb29wOjpUaW1lcjxNb2NrQXVkaW9TaGFyZWRVbml0PiBt
X3RpbWVyOwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0UmVuZGVyVGltZSB7IE1vbm90b25pY1Rp
bWU6Om5hbigpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tCmluZGV4IDYyNzJhNTM2MDBi
MDdiZDQ1ZDJmZGJlZDk0MTgxYjYwYTJmMjM5ZWEuLjBkZDNkNzFjYWU3YTYzYjYzNzIwOGYyODM4
MjIwZTY1OWU0MjEzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tCkBAIC0xMDEsOCAr
MTAxLDggQEAgTW9ja0F1ZGlvU2hhcmVkVW5pdCYgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6c2luZ2xl
dG9uKCkKIH0KIAogTW9ja0F1ZGlvU2hhcmVkVW5pdDo6TW9ja0F1ZGlvU2hhcmVkVW5pdCgpCi0g
ICAgOiBtX3RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk1vY2tBdWRpb1NoYXJlZFVu
aXQ6OnRpY2spCi0gICAgLCBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiTW9ja0F1ZGlv
U2hhcmVkVW5pdCBDYXB0dXJlIFF1ZXVlIikpCisgICAgOiBtX3RpbWVyKFJ1bkxvb3A6OmN1cnJl
bnQoKSwgdGhpcywgJk1vY2tBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0KQorICAgICwgbV93b3JrUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIk1vY2tBdWRpb1NoYXJlZFVuaXQgQ2FwdHVyZSBRdWV1ZSIs
IFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQogewogfQogCkBAIC0xMjcsMTMgKzEy
NywxMSBAQCBPU1N0YXR1cyBNb2NrQXVkaW9TaGFyZWRVbml0OjpyZWNvbmZpZ3VyZUF1ZGlvVW5p
dCgpCiAgICAgaWYgKCFoYXNBdWRpb1VuaXQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBt
X3RpbWVyLnN0b3AoKTsKICAgICBtX2xhc3RSZW5kZXJUaW1lID0gTW9ub3RvbmljVGltZTo6bmFu
KCk7CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgIHJlY29uZmln
dXJlKCk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKLSAgICAgICAgICAgIG1f
bGFzdFJlbmRlclRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAgICAgIG1fdGlt
ZXIuc3RhcnRSZXBlYXRpbmcocmVuZGVySW50ZXJ2YWwoKSk7CisgICAgICAgICAgICBzdGFydElu
dGVybmFsKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogICAgIHJldHVybiAwOwpAQCAtMTQyLDU3
ICsxNDAsNDUgQEAgT1NTdGF0dXMgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6cmVjb25maWd1cmVBdWRp
b1VuaXQoKQogdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0OjpjbGVhbnVwQXVkaW9Vbml0KCkKIHsK
ICAgICBtX2hhc0F1ZGlvVW5pdCA9IGZhbHNlOwotICAgIG1fdGltZXIuc3RvcCgpOworICAgIG1f
aXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7CiAgICAgbV9sYXN0UmVuZGVyVGltZSA9IE1vbm90b25p
Y1RpbWU6Om5hbigpOwogfQogCiBPU1N0YXR1cyBNb2NrQXVkaW9TaGFyZWRVbml0OjpzdGFydElu
dGVybmFsKCkKK3sKKyAgICBzdGFydCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE1vY2tB
dWRpb1NoYXJlZFVuaXQ6OnN0YXJ0KCkKIHsKICAgICBpZiAoIW1faGFzQXVkaW9Vbml0KQogICAg
ICAgICBtX2hhc0F1ZGlvVW5pdCA9IHRydWU7CiAKICAgICBtX2xhc3RSZW5kZXJUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCk7Ci0gICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhyZW5kZXJJbnRl
cnZhbCgpKTsKLSAgICByZXR1cm4gMDsKKyAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7Cisg
ICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCByZW5kZXJUaW1lID0gbV9sYXN0UmVuZGVy
VGltZV0geworICAgICAgICByZW5kZXIocmVuZGVyVGltZSk7CisgICAgfSk7CiB9CiAKIHZvaWQg
TW9ja0F1ZGlvU2hhcmVkVW5pdDo6c3RvcEludGVybmFsKCkKIHsKKyAgICBtX2lzUHJvZHVjaW5n
RGF0YSA9IGZhbHNlOwogICAgIGlmICghbV9oYXNBdWRpb1VuaXQpCiAgICAgICAgIHJldHVybjsK
LSAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX2xhc3RSZW5kZXJUaW1lID0gTW9ub3RvbmljVGlt
ZTo6bmFuKCk7CiB9CiAKIGJvb2wgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6aXNQcm9kdWNpbmdEYXRh
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90aW1lci5pc0FjdGl2ZSgpOwotfQotCi12b2lkIE1v
Y2tBdWRpb1NoYXJlZFVuaXQ6OnRpY2soKQotewotICAgIGlmIChzdGQ6OmlzbmFuKG1fbGFzdFJl
bmRlclRpbWUpKQotICAgICAgICBtX2xhc3RSZW5kZXJUaW1lID0gTW9ub3RvbmljVGltZTo6bm93
KCk7Ci0KLSAgICBNb25vdG9uaWNUaW1lIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotCi0g
ICAgaWYgKG1fZGVsYXlVbnRpbCkgewotICAgICAgICBpZiAobV9kZWxheVVudGlsIDwgbm93KQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2RlbGF5VW50aWwgPSBNb25vdG9uaWNUaW1l
KCk7Ci0gICAgfQotCi0gICAgU2Vjb25kcyBkZWx0YSA9IG5vdyAtIG1fbGFzdFJlbmRlclRpbWU7
Ci0gICAgbV9sYXN0UmVuZGVyVGltZSA9IG5vdzsKLQotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgZGVsdGFdIHsKLSAgICAgICAgcmVuZGVyKGRlbHRhKTsKLSAgICB9KTsKKyAgICBy
ZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGE7CiB9CiAKIHZvaWQgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6
ZGVsYXlTYW1wbGVzKFNlY29uZHMgZGVsdGEpCiB7Ci0gICAgbV9kZWxheVVudGlsID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgKyBkZWx0YTsKKyAgICBzdG9wSW50ZXJuYWwoKTsKKyAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdChkZWx0YSk7CiB9CiAKIHZvaWQgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6cmVj
b25maWd1cmUoKQpAQCAtMjQ0LDkgKzIzMCwyNCBAQCB2b2lkIE1vY2tBdWRpb1NoYXJlZFVuaXQ6
OmVtaXRTYW1wbGVCdWZmZXJzKHVpbnQzMl90IGZyYW1lQ291bnQpCiAgICAgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRUaW1lKSwgKm1fYXVkaW9CdWZmZXJMaXN0
LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obV9zdHJlYW1Gb3JtYXQpLCBmcmFtZUNvdW50KTsK
IH0KIAotdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0OjpyZW5kZXIoU2Vjb25kcyBkZWx0YSkKK3Zv
aWQgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6cmVuZGVyKE1vbm90b25pY1RpbWUgcmVuZGVyVGltZSkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWlzUHJvZHVjaW5nRGF0
YSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRlbHRhID0gcmVuZGVySW50ZXJ2YWwo
KTsKKyAgICBhdXRvIGN1cnJlbnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgYXV0
byBuZXh0UmVuZGVyVGltZSA9IHJlbmRlclRpbWUgKyBkZWx0YTsKKyAgICBTZWNvbmRzIG5leHRS
ZW5kZXJEZWxheSA9IG5leHRSZW5kZXJUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkgLSBjdXJyZW50
VGltZS5zZWNvbmRzU2luY2VFcG9jaCgpOworICAgIGlmIChuZXh0UmVuZGVyRGVsYXkuc2Vjb25k
cygpIDwgMCkgeworICAgICAgICBuZXh0UmVuZGVyVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAg
ICBuZXh0UmVuZGVyRGVsYXkgPSAwX3M7CisgICAgfQorICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aEFmdGVyKG5leHRSZW5kZXJEZWxheSwgW3RoaXMsIG5leHRSZW5kZXJUaW1lXSB7CisgICAgICAg
IHJlbmRlcihuZXh0UmVuZGVyVGltZSk7CisgICAgfSk7CisKICAgICBpZiAoIW1fYXVkaW9CdWZm
ZXJMaXN0IHx8ICFtX2JpcEJvcEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJlY29uZmlndXJlKCk7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447357</attachid>
            <date>2021-12-16 08:01:42 -0800</date>
            <delta_ts>2021-12-16 14:04:14 -0800</delta_ts>
            <desc>Use &gt; instead of == when comparing sample count</desc>
            <filename>bug-233422-20211216170140.patch</filename>
            <type>text/plain</type>
            <size>40758</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI3OWEzYmRkYTJlMmM1
YWFiYWRjNDQ2ODY5ZjY1OWUwNTA4OWJkZi4uYWY3MzY5MWVjYzk5ZjA5NWU3MGVjNDczOTE2OTZm
ZGJiMjlkOTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTEyLTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBBdWRpb1NhbXBs
ZURhdGFTb3VyY2UgdG8gaW5jcmVhc2UvZGVjcmVhc2UgYnVmZmVyZWQgZGF0YSBwcm9ncmVzc2l2
ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQXVkaW9T
YW1wbGVEYXRhU291cmNlIGRvZXMgdGhlIGxpbmsgYmV0d2VlbiBwdXNoIGF1ZGlvIHNvdXJjZXMg
YW5kIHB1bGwgYXVkaW8gc2lua3MuCisgICAgICAgIEFzIHN1Y2gsIGl0IG5lZWRzIHRvIGRvIGJ1
ZmZlcmluZy4gSWYgYnVmZmVyaW5nIGlzIHRvbyBzbWFsbCwgZGF0YSBtYXkgYmUgbWlzc2luZyBh
bmQgYXVkaW8gZ2xpdGNoZXMgd2lsbCBiZSBoZWFyZC4KKyAgICAgICAgSWYgYnVmZmVyaW5nIGlz
IHRvbyBsYXJnZSwgbGF0ZW5jeSB3aWxsIGJlIGFkZGVkIHdoaWNoIG1pZ2h0IGJlIHVuZGVzaXJh
YmxlLCBlc3BlY2lhbGx5IGlmIGF1ZGlvIGlzIGJlaW5nIHBsYXllZCB3aXRoIHZpZGVvLgorICAg
ICAgICBXZSBnZW5lcmFsbHkgd2FudCBidWZmZXJlZCBhdWRpbyB0byBzdGF5IHdpdGhpbiBhIGNl
cnRhaW4gcmFuZ2UuCisKKyAgICAgICAgVG8gbWFrZSB0aGlzIGhhcHBlbiwgd2hlbiBidWZmZXJp
bmcgaXMgdG9vIGhpZ2gsIHdlIGNvbnZlcnQgdGhlIGRhdGEgd2l0aCBhIHNsaWdodGx5IGxvd2Vy
IHNhbXBsZSByYXRlIHRvIHB1c2ggbGVzcyBzYW1wbGVzLCB1bnRpbCB3ZSBhcmUgYmFjayB0byBu
b3JtYWwgYnVmZmVyaW5nLgorICAgICAgICBDb252ZXJzZWx5LCB3aGVuIGJ1ZmZlcmluZyBpcyB0
b28gbG93LCB3ZSBjb252ZXJ0IHRoZSBkYXRhIHdpdGggYSBzbGlnaHRseSBoaWdoZXIgc2FtcGxl
IHJhdGUgdG8gcHVzaCBtb3JlIHNhbXBsZXMsIHVudGlsIHdlIGFyZSBiYWNrIHRvIG5vcm1hbCBi
dWZmZXJpbmcuCisgICAgICAgIFdlIGRvIHRoaXMgd2l0aCAzIGNvbnZlcnRlcnMgdGhhdCB3ZSBz
ZWxlY3QgYmFzZWQgb24gYW1vdW50IG9mIGJ1ZmZlcmVkIGRhdGEuCisgICAgICAgIFRoaXMgYmVo
YXZpb3IgaXMgZW5jYXBzdWxhdGVkIGluIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci4KKworICAg
ICAgICBXZSBzaW1wbGlmeSBBdWRpb1NhbXBsZURhdGFTb3VyY2UgaW1wbGVtZW50YXRpb24gYnkg
YWx3YXlzIHJlY29tcHV0aW5nIHRoZSBzYW1wbGUgb2Zmc2V0IHdoZW4gdGhlcmUgaXMgbm90IGVu
b3VnaCBkYXRhLgorICAgICAgICBJbiB0aGF0IGNhc2UsIHdlIHdhaXQgZm9yIDUwbXMgb2YgYnVm
ZmVyZWQgZGF0YSwgd2hpY2ggaXMgdGhlIGF2ZXJhZ2UgYnVmZmVyIHdlIGV4cGVjdCwgdG8gcmVz
dGFydCBwdWxsaW5nIGRhdGEuCisgICAgICAgIEFsbCB2YWx1ZXMgb3duZWQgYnkgQXVkaW9TYW1w
bGVEYXRhU291cmNlIChtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSwgbV9jb252
ZXJ0ZXJJbnB1dE9mZnNldCwgbV9jb252ZXJ0ZXJJbnB1dE9mZnNldCwgbV9vdXRwdXRTYW1wbGVP
ZmZzZXQsIG1fbGFzdEJ1ZmZlcmVkQW1vdW50KQorICAgICAgICBhcmUgYWxsIGluIHRoZSBvdXRn
b2luZyB0aW1lbGluZS9zYW1wbGVSYXRlLgorCisgICAgICAgIFRoaXMgYWRhcHRhdGlvbiBpcyBv
bmx5IGVuYWJsZWQgd2hlbiBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzIGlzIGNh
bGxlZC4KKyAgICAgICAgRm9yIHB1bGxBdmFpbGFibGVTYW1wbGVzQXNDaHVua3MgYW5kIHB1bGxB
dmFpbGFibGVTYW1wbGVDaHVuaywgdGhlIHB1bGxlciBpcyBzdXBwb3NlZCB0byBiZSBpbiBzeW5j
IHdpdGggdGhlIHB1c2hlci4KKyAgICAgICAgRm9yIHRoYXQgcmVhc29uLCB3ZSBtYWtlIHN1cmUg
dG8gYWx3YXlzIHdyaXRlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXVkaW8gZnJhbWVzIHdoZW4g
cHVsbFNhbXBsZXMgaXMgY2FsbGVkLCBldmVuIGlmIGNvbnZlcnRlciBmYWlscy4KKworICAgICAg
ICBXZSBmaXggYSBwb3RlbnRpYWwgYnVzeSBsb29wIGluIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
cHVsbEF2YWlsYWJsZVNhbXBsZXNBc0NodW5rcyBpbiBjYXNlIGVuZEZyYW1lIGlzIGxvd2VyIHRo
YW4gc3RhcnRGcmFtZSwgd2hpY2ggaXMgY29tcHV0ZWQgZnJvbSB0aW1lU3RhbXAgaW5wdXQgcGFy
YW1ldGVyLgorCisgICAgICAgIFVwZGF0ZSBNb2NrQXVkaW9TaGFyZWRVbml0IHRvIGJlIGNsb3Nl
ciB0byBhIHJlYWwgc291cmNlIGJ5IGluY3JlYXNpbmcgdGhlIHF1ZXVlIHByaW9yaXR5IGFuZCBz
Y2hlZHVsZSByZW5kZXJpbmcgdGFza3MgZnJvbSB0aGUgcXVldWUgaW5zdGVhZCBvZiByZWx5aW5n
IG9uCisgICAgICAgIGEgbWFpbiB0aHJlYWQgdGltZXIgd2hpY2ggY2FuIGhhdmUgaGljY3Vwcy4K
KworICAgICAgICBNYW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhQ29udmVydGVy
Lm1tOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURh
dGFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURh
dGFTb3VyY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRp
b1NoYXJlZFVuaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1
ZGlvU2hhcmVkVW5pdC5tbToKKwogMjAyMS0xMi0xNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRvIHN0YXJ0IGEgcmVhbHRpbWUgb3V0Z29p
bmcgc291cmNlIGluIGNhc2UgaXQgaXMgdGFrZW4gdG8gYW5vdGhlciBzZW5kZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDBhNDBkYTU5MjBmODdlNGQ5MTA0ZTVlOTkxYWRkNzQ3MzdkNjNk
M2EuLjA0NTY1YWFiNDdiMTg5ODFhZDQ2NTFmODFmZTk3MGY4ZThhMzJiMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtMjI0LDYgKzIyNCw3IEBAIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJl
YWRlckNvY29hLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKK3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5tbQogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCiBwbGF0Zm9ybS9hdWRpby9jb2Nv
YS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJp
bmdCdWZmZXIuY3BwCkBAIC0zMTUsMTQgKzMxNiwxNCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBAbm8tdW5p
ZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXll
ck1hbmFnZXJPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDQ3M2I3ODliNDQzZTI4MDhmZWVjM2IxMTFiMmU2YjFlNDY3YjQzNGUuLmUxN2Zm
MTdjYWVhZjUxYjdiYjk2NGMxZGM0NWNkMDk0ZmQ5MDc1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMjksNiArMTIyOSw5
IEBACiAJCTQxRkNDQzNCMjc0NjY3NTYwMDg5MkFENiAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjNCQjU4
MzFFNzA5RUU0MDBDNzAxRjIgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRkNENkI5MjNDRTAxNTUw
MEM2MjU2NyAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDU5OEJFMjNDOEFBQjgwMDJCOUNDOCAvKiBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MUZDRDZCQjIzQ0UwMjc3MDBDNjI1NjcgLyogTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNDU5OEMwMjNDOEFENzgwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQxRkZEMkMzMjc1NjNFMEQwMDUwMUJCRiAvKiBBdWRpb1NhbXBsZURhdGFDb252
ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RkZEMkMwMjc1NjNERkYwMDUwMUJCRiAvKiBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUZGRDJDNDI3
NTY1NzBGMDA1MDFCQkYgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExOEQxQzU0NTkwMzAwREUzNEEz
IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSAqLzsgfTsKKwkJNDFGRkQyQzYyNzU2NTczRTAw
NTAxQkJGIC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjlBRkQ3MTEzRkMzMUQ4MDAx
NUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSAqLzsgfTsKIAkJ
NDI3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjdEQTcxQjEz
NzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCAqLzsgfTsKIAkJ
NDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI3REE3MUMxMzcz
NURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oICovOyB9OwogCQk0MzEw
N0JFMjE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzEwN0JFMTE4Q0MxOURFMDBD
QzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi87IH07CkBAIC04OTQyLDYgKzg5NDUs
OCBAQAogCQk0MUZDQjc1RjIxNDg2NkZGMDAzOEFEQzYgLyogUlRDUnRwQ29kZWNQYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cENvZGVjUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUZDQjc2MDIxNDg2NzAwMDAzOEFEQzYgLyogUlRDUnRwUnR4UGFy
YW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBSdHhQYXJhbWV0ZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkNCNzYxMjE0ODY3MDAwMDM4QURDNiAvKiBSVENSdHBF
bmNvZGluZ1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwRW5jb2RpbmdQYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkZEMkMwMjc1NjNERkYwMDUw
MUJCRiAvKiBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxRkZEMkMyMjc1NjNFMDAwMDUwMUJCRiAvKiBBdWRpb1NhbXBsZURhdGFD
b252ZXJ0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRp
b1NhbXBsZURhdGFDb252ZXJ0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQy
N0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VySW50ZXJu
YWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDI3REE3MUMxMzczNURGQTAw
N0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRv
VHlwZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3RvclBzZXVk
b1R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMDU0LDYgKzMwMDU5
LDggQEAKIAkJCQkxREI2NkQzNzI1MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5oICovLAogCQkJCTA3M0I4NzYyMUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1
ZmZlckxpc3QuY3BwICovLAogCQkJCTA3M0I4NzYzMUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3QuaCAqLywKKwkJCQk0MUZGRDJDMDI3NTYzREZGMDA1MDFCQkYgLyogQXVk
aW9TYW1wbGVEYXRhQ29udmVydGVyLmggKi8sCisJCQkJNDFGRkQyQzIyNzU2M0UwMDAwNTAxQkJG
IC8qIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5tbSAqLywKIAkJCQkwNzNCODc2NTFFNDM4NTlE
MDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggKi8sCiAJCQkJMDczQjg3NjQxRTQz
ODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSAqLywKIAkJCQkwNzNCODc1
NzFFNDBEQ0ZEMDA3MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcCAqLywKQEAg
LTMzMzExLDYgKzMzMzE4LDcgQEAKIAkJCQlGRDMxNjA4NjEyQjAyNkY3MDBDMUEzNTkgLyogQXVk
aW9SZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDg4MTJCMDI2RjcwMEMxQTM1
OSAvKiBBdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQjg3Njcx
RTQzODVBQzAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDFGRkQyQzMyNzU2M0UwRDAwNTAxQkJGIC8qIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQjg3NjkxRTQzODVBQzAwNzFDMEVDIC8qIEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ4QzQ2RUMxNTQ2MDhFNzAw
QTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zODQxMCw2ICszODQxOCw3IEBACiAJCQkJMkQ5QkY3NDMxREJGREMzRTAwN0E3RDk5IC8q
IE1lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBQ0MwNzk4MjVD
NzI2NzcwMERDNjM4NiAvKiBNZWRpYUtleVN5c3RlbUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOUFDQzA3OTYyNUM3MjVFRTAwREM2Mzg2IC8qIE1lZGlhS2V5U3lzdGVtUmVxdWVz
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUZGRDJDNjI3NTY1NzNFMDA1MDFCQkYgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNE
QzhCNUEyMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0
NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywK
QEAgLTM5MDM5LDYgKzM5MDQ4LDcgQEAKIAkJCQk3Q0U2ODM0NDE5MjE0M0E4MDBGNEQ5MjggLyog
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzcz
RkIwNzE5MUVGNDE3MDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzRkJDNEFGMzE4OTg4MTU2MDA0NkVFMzggLyogVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUZGRDJDNDI3NTY1
NzBGMDA1MDFCQkYgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjZGOUE4MzgxOEEwNDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDREVEMUMzQzI0Q0QzMDU3MDA5MzRFMTIgLyogVlA5VXRpbGl0
aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTQ4MzJCMTE4N0Y2MUUxMDBEQTYzQTYg
LyogV0FLQXBwS2l0U3R1YnMubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5j
cHAKaW5kZXggNGU5MDY0ZDBjNmU5MzA4OWFlMGVhYTZmOTk4ZWNkNjUzNzM1ZDFlNy4uYWVkMGE5
NWUxYjY0MTg5ZjllNGI4MjNmNjVmYzdjNTZiM2I5MjkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuY3BwCkBAIC0yOTcsMTcgKzI5NywxMiBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxp
c3Q6OmNvcHlGcm9tKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYgc291cmNlLCBzaXplX3QgZgogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBMT0dfRVJST1IoIkF1ZGlvU2FtcGxlQnVmZmVy
TGlzdDo6Y29weUZyb20oJXApIEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgcmV0dXJu
ZWQgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20o
JXApIEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgcmV0dXJuZWQgZXJyb3IgJWQgKCUu
NHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICBtX3NhbXBsZUNvdW50ID0g
c3RkOjptaW4obV9zYW1wbGVDYXBhY2l0eSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVzQ29u
dmVydGVkKSk7CiAgICAgemVybygpOwogICAgIHJldHVybiBlcnI7CiB9CiAKLU9TU3RhdHVzIEF1
ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3Vy
Y2UsIHNpemVfdCBmcmFtZUNvdW50LCBBdWRpb0NvbnZlcnRlclJlZiBjb252ZXJ0ZXIpCi17Ci0g
ICAgcmV0dXJuIGNvcHlGcm9tKHNvdXJjZS5idWZmZXJMaXN0KCksIGZyYW1lQ291bnQsIGNvbnZl
cnRlcik7Ci19Ci0KIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oQ0FS
aW5nQnVmZmVyJiByaW5nQnVmZmVyLCBzaXplX3Qgc2FtcGxlQ291bnQsIHVpbnQ2NF90IHN0YXJ0
RnJhbWUsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlIG1vZGUpCiB7CiAgICAgcmVzZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxl
QnVmZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmgKaW5kZXggN2UwNmJiMzQ4MWZiNDRlNWQ4ZmVmYzk2ODRhZWU5NzI2
ZjBmOTQwOS4uYWMzZWI1MmY2ZDEwMzI4YTJlZjVlODFjNGE0MTJlNzhmNTU5OGQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogCiAgICAgT1NTdGF0
dXMgY29weUZyb20oY29uc3QgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Jiwgc2l6ZV90IGNvdW50ID0g
U0laRV9NQVgpOwogICAgIE9TU3RhdHVzIGNvcHlGcm9tKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYs
IHNpemVfdCBmcmFtZUNvdW50LCBBdWRpb0NvbnZlcnRlclJlZik7Ci0gICAgT1NTdGF0dXMgY29w
eUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0Jiwgc2l6ZV90IGZyYW1lQ291bnQsIEF1ZGlvQ29u
dmVydGVyUmVmKTsKICAgICBPU1N0YXR1cyBjb3B5RnJvbShDQVJpbmdCdWZmZXImLCBzaXplX3Qg
ZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgQ0FSaW5nQnVmZmVyOjpGZXRjaE1vZGUp
OwogCiAgICAgT1NTdGF0dXMgbWl4RnJvbShjb25zdCBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QmLCBz
aXplX3QgY291bnQgPSBTSVpFX01BWCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ3NzU0MGFiZjkwYTY3MDk5NTZjZjMwNmE0NTE0ZTc3ODFiMTRlNGMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBs
ZURhdGFDb252ZXJ0ZXIuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK3R5cGVkZWYgc3RydWN0IEF1
ZGlvQnVmZmVyTGlzdCBBdWRpb0J1ZmZlckxpc3Q7CitzdHJ1Y3QgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIqIEF1ZGlvQ29u
dmVydGVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdDsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKK2NsYXNzIFBsYXRmb3Jt
QXVkaW9EYXRhOworCitjbGFzcyBBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRl
cigpID0gZGVmYXVsdDsKKyAgICB+QXVkaW9TYW1wbGVEYXRhQ29udmVydGVyKCk7CisKKyAgICBP
U1N0YXR1cyBzZXRGb3JtYXRzKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgaW5wdXRE
ZXNjcmlwdGlvbiwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdXRwdXREZXNjcmlw
dGlvbik7CisgICAgYm9vbCB1cGRhdGVCdWZmZXJlZEFtb3VudChzaXplX3QgY3VycmVudEJ1ZmZl
cmVkQW1vdW50KTsKKyAgICBPU1N0YXR1cyBjb252ZXJ0KGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYs
IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYsIHNpemVfdCBzYW1wbGVDb3VudCk7CisgICAgc2l6ZV90
IHJlZ3VsYXJCdWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWd1bGFyQnVmZmVyU2l6ZTsg
fQorICAgIGJvb2wgaXNSZWd1bGFyKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZENvbnZlcnRl
ciA9PSBtX3JlZ3VsYXJDb252ZXJ0ZXI7IH0KKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9oaWdo
QnVmZmVyU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9yZWd1bGFySGlnaEJ1ZmZlclNpemUgeyAw
IH07CisgICAgc2l6ZV90IG1fcmVndWxhckJ1ZmZlclNpemUgeyAwIH07CisgICAgc2l6ZV90IG1f
cmVndWxhckxvd0J1ZmZlclNpemUgeyAwIH07CisgICAgc2l6ZV90IG1fbG93QnVmZmVyU2l6ZSB7
IDAgfTsKKworICAgIGNsYXNzIENvbnZlcnRlciB7CisgICAgcHVibGljOgorICAgICAgICBDb252
ZXJ0ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIH5Db252ZXJ0ZXIoKTsKKworICAgICAgICBPU1N0
YXR1cyBpbml0aWFsaXplKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgaW5wdXRE
ZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBvdXRwdXREZXNj
cmlwdGlvbik7CisgICAgICAgIG9wZXJhdG9yIEF1ZGlvQ29udmVydGVyUmVmKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdWRpb0NvbnZlcnRlcjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXVkaW9D
b252ZXJ0ZXJSZWYgbV9hdWRpb0NvbnZlcnRlciB7IG51bGxwdHIgfTsKKyAgICB9OworCisgICAg
Q29udmVydGVyIG1fbG93Q29udmVydGVyOworICAgIENvbnZlcnRlciBtX3JlZ3VsYXJDb252ZXJ0
ZXI7CisgICAgQ29udmVydGVyIG1faGlnaENvbnZlcnRlcjsKKyAgICBBdWRpb0NvbnZlcnRlclJl
ZiBtX3NlbGVjdGVkQ29udmVydGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVE
YXRhQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9TYW1wbGVEYXRhQ29udmVydGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NDE2MTQ5YTFkZjE1MWU5NWI3
Y2Q2ZGM5NGYwZGQ0Y2ZkOGVjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIubW0KQEAgLTAsMCAr
MSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlci5oIgor
CisjaW1wb3J0ICJBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCIKKyNpbXBvcnQgPEF1ZGlvVG9vbGJv
eC9BdWRpb0NvbnZlcnRlci5oPgorI2ltcG9ydCA8cGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5r
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyOjp+
QXVkaW9TYW1wbGVEYXRhQ29udmVydGVyKCkKK3sKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVE
YXRhQ29udmVydGVyOjpzZXRGb3JtYXRzKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYg
aW5wdXREZXNjcmlwdGlvbiwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdXRwdXRE
ZXNjcmlwdGlvbikKK3sKKyAgICBjb25zdGV4cHIgZG91YmxlIGJ1ZmZlcjEwMG1zID0gMC4xMDA7
CisgICAgY29uc3RleHByIGRvdWJsZSBidWZmZXI2MG1zID0gMC4wNjA7CisgICAgY29uc3RleHBy
IGRvdWJsZSBidWZmZXI1MG1zID0gMC4wNTA7CisgICAgY29uc3RleHByIGRvdWJsZSBidWZmZXI0
MG1zID0gMC4wNDA7CisgICAgY29uc3RleHByIGRvdWJsZSBidWZmZXIyMG1zID0gMC4wMjA7Cisg
ICAgbV9oaWdoQnVmZmVyU2l6ZSA9IG91dHB1dERlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIGJ1
ZmZlcjEwMG1zOworICAgIG1fcmVndWxhckhpZ2hCdWZmZXJTaXplID0gb3V0cHV0RGVzY3JpcHRp
b24uc2FtcGxlUmF0ZSgpICogYnVmZmVyNjBtczsKKyAgICBtX3JlZ3VsYXJCdWZmZXJTaXplID0g
b3V0cHV0RGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogYnVmZmVyNTBtczsKKyAgICBtX3JlZ3Vs
YXJMb3dCdWZmZXJTaXplID0gb3V0cHV0RGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogYnVmZmVy
NDBtczsKKyAgICBtX2xvd0J1ZmZlclNpemUgPSBvdXRwdXREZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCkgKiBidWZmZXIyMG1zOworCisgICAgbV9zZWxlY3RlZENvbnZlcnRlciA9IG51bGxwdHI7CisK
KyAgICBhdXRvIGNvbnZlcnRlck91dHB1dERlc2NyaXB0aW9uID0gb3V0cHV0RGVzY3JpcHRpb24u
c3RyZWFtRGVzY3JpcHRpb24oKTsKKyAgICBjb25zdGV4cHIgZG91YmxlIHNsaWdodGx5SGlnaGVy
UGl0Y2ggPSAxLjA1OworICAgIGNvbnZlcnRlck91dHB1dERlc2NyaXB0aW9uLm1TYW1wbGVSYXRl
ID0gc2xpZ2h0bHlIaWdoZXJQaXRjaCAqIG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0
aW9uKCkubVNhbXBsZVJhdGU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBtX2xvd0NvbnZlcnRlci5p
bml0aWFsaXplKGlucHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgY29udmVydGVy
T3V0cHV0RGVzY3JpcHRpb24pOyBlcnJvciAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGVycm9y
OworCisgICAgY29uc3RleHByIGRvdWJsZSBzbGlnaHRseUxvd2VyUGl0Y2ggPSAwLjk1OworICAg
IGNvbnZlcnRlck91dHB1dERlc2NyaXB0aW9uLm1TYW1wbGVSYXRlID0gc2xpZ2h0bHlMb3dlclBp
dGNoICogb3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKS5tU2FtcGxlUmF0ZTsK
KyAgICBpZiAoYXV0byBlcnJvciA9IG1faGlnaENvbnZlcnRlci5pbml0aWFsaXplKGlucHV0RGVz
Y3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgY29udmVydGVyT3V0cHV0RGVzY3JpcHRpb24p
OyBlcnJvciAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgaWYgKGlucHV0
RGVzY3JpcHRpb24gPT0gb3V0cHV0RGVzY3JpcHRpb24pCisgICAgICAgIHJldHVybiBub0VycjsK
KworICAgIGlmIChhdXRvIGVycm9yID0gbV9yZWd1bGFyQ29udmVydGVyLmluaXRpYWxpemUoaW5w
dXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCBvdXRwdXREZXNjcmlwdGlvbi5zdHJl
YW1EZXNjcmlwdGlvbigpKTsgZXJyb3IgIT0gbm9FcnIpCisgICAgICAgIHJldHVybiBlcnJvcjsK
KworICAgIG1fc2VsZWN0ZWRDb252ZXJ0ZXIgPSBtX3JlZ3VsYXJDb252ZXJ0ZXI7CisgICAgcmV0
dXJuIG5vRXJyOworfQorCitib29sIEF1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6dXBkYXRlQnVm
ZmVyZWRBbW91bnQoc2l6ZV90IGN1cnJlbnRCdWZmZXJlZEFtb3VudCkKK3sKKyAgICBpZiAoY3Vy
cmVudEJ1ZmZlcmVkQW1vdW50KSB7CisgICAgICAgIGlmIChtX3NlbGVjdGVkQ29udmVydGVyID09
IG1fcmVndWxhckNvbnZlcnRlcikgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRCdWZmZXJlZEFt
b3VudCA8PSBtX2xvd0J1ZmZlclNpemUpCisgICAgICAgICAgICAgICAgbV9zZWxlY3RlZENvbnZl
cnRlciA9IG1fbG93Q29udmVydGVyOworICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudEJ1ZmZl
cmVkQW1vdW50ID49IG1faGlnaEJ1ZmZlclNpemUpCisgICAgICAgICAgICAgICAgbV9zZWxlY3Rl
ZENvbnZlcnRlciA9IG1faGlnaENvbnZlcnRlcjsKKyAgICAgICAgfSBlbHNlIGlmIChtX3NlbGVj
dGVkQ29udmVydGVyID09IG1faGlnaENvbnZlcnRlcikgeworICAgICAgICAgICAgaWYgKGN1cnJl
bnRCdWZmZXJlZEFtb3VudCA8IG1fcmVndWxhckxvd0J1ZmZlclNpemUpCisgICAgICAgICAgICAg
ICAgbV9zZWxlY3RlZENvbnZlcnRlciA9IG1fcmVndWxhckNvbnZlcnRlcjsKKyAgICAgICAgfSBl
bHNlIGlmIChjdXJyZW50QnVmZmVyZWRBbW91bnQgPiBtX3JlZ3VsYXJIaWdoQnVmZmVyU2l6ZSkK
KyAgICAgICAgICAgIG1fc2VsZWN0ZWRDb252ZXJ0ZXIgPSBtX3JlZ3VsYXJDb252ZXJ0ZXI7Cisg
ICAgfQorICAgIHJldHVybiAhIW1fc2VsZWN0ZWRDb252ZXJ0ZXI7Cit9CisKK09TU3RhdHVzIEF1
ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6Y29udmVydChjb25zdCBBdWRpb0J1ZmZlckxpc3QmIGlu
cHV0QnVmZmVyLCBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QmIG91dHB1dEJ1ZmZlciwgc2l6ZV90IHNh
bXBsZUNvdW50KQoreworICAgIG91dHB1dEJ1ZmZlci5yZXNldCgpOworICAgIHJldHVybiBvdXRw
dXRCdWZmZXIuY29weUZyb20oaW5wdXRCdWZmZXIsIHNhbXBsZUNvdW50LCBtX3NlbGVjdGVkQ29u
dmVydGVyKTsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyOjpDb252ZXJ0
ZXI6OmluaXRpYWxpemUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBpbnB1dERl
c2NyaXB0aW9uLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIG91dHB1dERlc2Ny
aXB0aW9uKQoreworICAgIGlmIChtX2F1ZGlvQ29udmVydGVyKSB7CisgICAgICAgIFBBTDo6QXVk
aW9Db252ZXJ0ZXJEaXNwb3NlKG1fYXVkaW9Db252ZXJ0ZXIpOworICAgICAgICBtX2F1ZGlvQ29u
dmVydGVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gUEFMOjpBdWRpb0NvbnZlcnRl
ck5ldygmaW5wdXREZXNjcmlwdGlvbiwgJm91dHB1dERlc2NyaXB0aW9uLCAmbV9hdWRpb0NvbnZl
cnRlcik7Cit9CisKK0F1ZGlvU2FtcGxlRGF0YUNvbnZlcnRlcjo6Q29udmVydGVyOjp+Q29udmVy
dGVyKCkKK3sKKyAgICBpZiAobV9hdWRpb0NvbnZlcnRlcikKKyAgICAgICAgUEFMOjpBdWRpb0Nv
bnZlcnRlckRpc3Bvc2UobV9hdWRpb0NvbnZlcnRlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5kZXggMmNkMjBkNThlYmJmMzdkYjY1ZWMyYmRj
ODNkZGQ2NzY4NmUzZWExOS4uNTg1YTY3MWFkZGNmNjJkZjM1ZTc2YWJkMjg3YTVhOGU1ZDRmOWRk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9T
YW1wbGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJD
QVJpbmdCdWZmZXIuaCIKICNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KICNp
bmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CkBAIC0xMDIsMTMgKzEwMywxNSBAQCBwcml2YXRl
OgogCiAgICAgdWludDY0X3QgbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQgeyAwIH07CiAgICAgc2l6
ZV90IG1fd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQgeyAyIH07Ci0gICAgTWVkaWFUaW1lIG1fZXhw
ZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZSB7IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSB9Owot
ICAgIGJvb2wgbV9pc0ZpcnN0UHVsbCB7IHRydWUgfTsKIAotICAgIE1lZGlhVGltZSBtX2lucHV0
U2FtcGxlT2Zmc2V0OworICAgIGludDY0X3QgbV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1l
VmFsdWUgeyAwIH07CisgICAgaW50NjRfdCBtX2NvbnZlcnRlcklucHV0T2Zmc2V0IHsgMCB9Owor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gbV9pbnB1dFNhbXBsZU9mZnNldDsKICAgICBpbnQ2
NF90IG1fb3V0cHV0U2FtcGxlT2Zmc2V0IHsgMCB9OworICAgIHVpbnQ2NF90IG1fbGFzdEJ1ZmZl
cmVkQW1vdW50IHsgMCB9OworCisgICAgQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyIG1fY29udmVy
dGVyOwogCi0gICAgQXVkaW9Db252ZXJ0ZXJSZWYgbV9jb252ZXJ0ZXI7CiAgICAgUmVmUHRyPEF1
ZGlvU2FtcGxlQnVmZmVyTGlzdD4gbV9zY3JhdGNoQnVmZmVyOwogCiAgICAgVW5pcXVlUmVmPENB
UmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwpAQCAtMTE3LDEwICsxMjAsOCBAQCBwcml2YXRlOgog
ICAgIGZsb2F0IG1fdm9sdW1lIHsgMS4wIH07CiAgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCB7IHRydWUgfTsKLSAg
ICB1aW50NjRfdCBtX2VuZEZyYW1lV2hlbk5vdEVub3VnaERhdGEgeyAwIH07CiAKICAgICBib29s
IG1faXNJbk5lZWRPZk1vcmVEYXRhIHsgZmFsc2UgfTsKLQogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1f
bG9nSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCBmMDEwZDNjY2NiZWE1
NTc1NTgyY2FkNDRjM2ZkMmEyMTRhYzYyZjJjLi5mMmI1NDQyYmY3YjE4NmVlZDg3NWY2YmQ5Zjgz
NzU0NDNiMzAzNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDcgKzUxLDYgQEAgUmVm
PEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6
ZV90IG1heGltdW1TYW1wbGVDb3UKIAogQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBs
ZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGVscGVyJiBsb2dn
ZXJIZWxwZXIsIHNpemVfdCB3YWl0VG9TdGFydEZvclB1c2hDb3VudCkKICAgICA6IG1fd2FpdFRv
U3RhcnRGb3JQdXNoQ291bnQod2FpdFRvU3RhcnRGb3JQdXNoQ291bnQpCi0gICAgLCBtX2lucHV0
U2FtcGxlT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fcmluZ0J1ZmZl
cihtYWtlVW5pcXVlUmVmPENBUmluZ0J1ZmZlcj4oKSkKICAgICAsIG1fbWF4aW11bVNhbXBsZUNv
dW50KG1heGltdW1TYW1wbGVDb3VudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTY2
LDMxICs2NSwxMiBAQCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZShzaXplX3QgbWF4aW11bVNhbXBsZUNvdW50LCBMb2dnZXJIZQogCiBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6On5BdWRpb1NhbXBsZURhdGFTb3VyY2UoKQogewotICAgIGlmIChtX2NvbnZlcnRlcikK
LSAgICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9jb252ZXJ0ZXIpOwogfQogCiBP
U1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldHVwQ29udmVydGVyKCkKIHsKICAgICBB
U1NFUlQobV9pbnB1dERlc2NyaXB0aW9uICYmIG1fb3V0cHV0RGVzY3JpcHRpb24pOwotCi0gICAg
aWYgKG1fY29udmVydGVyKSB7Ci0gICAgICAgIFBBTDo6QXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1f
Y29udmVydGVyKTsKLSAgICAgICAgbV9jb252ZXJ0ZXIgPSBudWxscHRyOwotICAgIH0KLQotICAg
IGlmICgqbV9pbnB1dERlc2NyaXB0aW9uID09ICptX291dHB1dERlc2NyaXB0aW9uKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIE9TU3RhdHVzIGVyciA9IFBBTDo6QXVkaW9Db252ZXJ0ZXJOZXco
Jm1faW5wdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24oKSwgJm1fb3V0cHV0RGVzY3Jp
cHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksICZtX2NvbnZlcnRlcik7Ci0gICAgaWYgKGVycikg
ewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBlcnJdIHsKLSAgICAgICAgICAgIEVSUk9SX0xPRygiQXVkaW9Db252
ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgIiwgZXJyKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGVycjsKLQorICAgIHJldHVybiBtX2NvbnZlcnRlci5zZXRGb3JtYXRzKCptX2lu
cHV0RGVzY3JpcHRpb24sICptX291dHB1dERlc2NyaXB0aW9uKTsKIH0KIAogT1NTdGF0dXMgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGZvcm1hdCkKQEAgLTEwOSw2ICs4OSw5IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYKICAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoZm9ybWF0LnNh
bXBsZVJhdGUoKSA+PSAwKTsKIAorICAgIGlmIChtX291dHB1dERlc2NyaXB0aW9uICYmICptX291
dHB1dERlc2NyaXB0aW9uID09IGZvcm1hdCkKKyAgICAgICAgcmV0dXJuIG5vRXJyOworCiAgICAg
bV9vdXRwdXREZXNjcmlwdGlvbiA9IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiB7IGZvcm1hdCB9
OwogCiAgICAgewpAQCAtMTE3LDYgKzEwMCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNv
dXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYKICAg
ICAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNh
YmxlTWFsbG9jUmVzdHJpY3Rpb25zOwogICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGZv
cm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVDb3VudCkpOwogICAgICAg
ICBtX3NjcmF0Y2hCdWZmZXIgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZShtX291dHB1
dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX21heGltdW1TYW1wbGVDb3VudCk7
CisgICAgICAgIG1fY29udmVydGVySW5wdXRPZmZzZXQgPSAwOwogICAgIH0KIAogICAgIHJldHVy
biBzZXR1cENvbnZlcnRlcigpOwpAQCAtMTQwLDM0ICsxMjQsNDQgQEAgTWVkaWFUaW1lIEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZTo6aG9zdFRpbWUoKSBjb25zdAogCiB2b2lkIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6cHVzaFNhbXBsZXNJbnRlcm5hbChjb25zdCBBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZl
ckxpc3QsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgc2l6ZV90IHNhbXBsZUNv
dW50KQogewotICAgIE1lZGlhVGltZSBzYW1wbGVUaW1lID0gcHJlc2VudGF0aW9uVGltZTsKKyAg
ICBpbnQ2NF90IHJpbmdCdWZmZXJJbmRleFRvV3JpdGUgPSBwcmVzZW50YXRpb25UaW1lLnRvVGlt
ZVNjYWxlKG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKSkudGltZVZhbHVlKCk7CiAK
KyAgICBpbnQ2NF90IG9mZnNldCA9IDA7CiAgICAgY29uc3QgQXVkaW9CdWZmZXJMaXN0KiBzYW1w
bGVCdWZmZXJMaXN0OwotICAgIGlmIChtX2NvbnZlcnRlcikgewotICAgICAgICBtX3NjcmF0Y2hC
dWZmZXItPnJlc2V0KCk7Ci0gICAgICAgIE9TU3RhdHVzIGVyciA9IG1fc2NyYXRjaEJ1ZmZlci0+
Y29weUZyb20oYnVmZmVyTGlzdCwgc2FtcGxlQ291bnQsIG1fY29udmVydGVyKTsKLSAgICAgICAg
aWYgKGVycikKLSAgICAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2NvbnZlcnRlci51cGRh
dGVCdWZmZXJlZEFtb3VudChtX2xhc3RCdWZmZXJlZEFtb3VudCkpIHsKKyAgICAgICAgbV9zY3Jh
dGNoQnVmZmVyLT5yZXNldCgpOworICAgICAgICBtX2NvbnZlcnRlci5jb252ZXJ0KGJ1ZmZlckxp
c3QsICptX3NjcmF0Y2hCdWZmZXIsIHNhbXBsZUNvdW50KTsKKyAgICAgICAgYXV0byBleHBlY3Rl
ZFNhbXBsZUNvdW50ID0gc2FtcGxlQ291bnQgKiBtX291dHB1dERlc2NyaXB0aW9uLT5zYW1wbGVS
YXRlKCkgLyBtX2lucHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKTsKKworICAgICAgICBpZiAo
bV9jb252ZXJ0ZXIuaXNSZWd1bGFyKCkgJiYgZXhwZWN0ZWRTYW1wbGVDb3VudCA+IG1fc2NyYXRj
aEJ1ZmZlci0+c2FtcGxlQ291bnQoKSkgeworICAgICAgICAgICAgLy8gU29tZXRpbWVzIGNvbnZl
cnRlciBpcyBub3Qgd3JpdGluZyBlbm91Z2ggZGF0YSwgZm9yIGluc3RhbmNlIG9uIGZpcnN0IGNo
dW5rIGNvbnZlcnNpb24uCisgICAgICAgICAgICAvLyBQcmV0ZW5kIHRoaXMgaXMgdGhlIGNhc2Ug
dG8ga2VlcCBwdXNoZXIgYW5kIHB1bGxlciBpbiBzeW5jLgorICAgICAgICAgICAgb2Zmc2V0ID0g
MDsKKyAgICAgICAgICAgIHNhbXBsZUNvdW50ID0gZXhwZWN0ZWRTYW1wbGVDb3VudDsKKyAgICAg
ICAgICAgIGlmIChtX3NjcmF0Y2hCdWZmZXItPnNhbXBsZUNvdW50KCkgPiBzYW1wbGVDb3VudCkK
KyAgICAgICAgICAgICAgICBtX3NjcmF0Y2hCdWZmZXItPnNldFNhbXBsZUNvdW50KHNhbXBsZUNv
dW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG9mZnNldCA9IG1fc2NyYXRjaEJ1
ZmZlci0+c2FtcGxlQ291bnQoKSAtIGV4cGVjdGVkU2FtcGxlQ291bnQ7CisgICAgICAgICAgICBz
YW1wbGVDb3VudCA9IG1fc2NyYXRjaEJ1ZmZlci0+c2FtcGxlQ291bnQoKTsKKyAgICAgICAgfQog
ICAgICAgICBzYW1wbGVCdWZmZXJMaXN0ID0gbV9zY3JhdGNoQnVmZmVyLT5idWZmZXJMaXN0KCku
bGlzdCgpOwotICAgICAgICBzYW1wbGVDb3VudCA9IG1fc2NyYXRjaEJ1ZmZlci0+c2FtcGxlQ291
bnQoKTsKLSAgICAgICAgc2FtcGxlVGltZSA9IHByZXNlbnRhdGlvblRpbWUudG9UaW1lU2NhbGUo
bV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZFplcm8pOwogICAgIH0gZWxzZQogICAgICAgICBzYW1wbGVCdWZmZXJMaXN0ID0g
JmJ1ZmZlckxpc3Q7CiAKLSAgICBpZiAobV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lLmlz
VmFsaWQoKSAmJiBhYnMobV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lIC0gc2FtcGxlVGlt
ZSkudGltZVZhbHVlKCkgPT0gMSkKLSAgICAgICAgc2FtcGxlVGltZSA9IG1fZXhwZWN0ZWROZXh0
UHVzaGVkU2FtcGxlVGltZTsKLSAgICBtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUgPSBz
YW1wbGVUaW1lICsgTWVkaWFUaW1lKHNhbXBsZUNvdW50LCBzYW1wbGVUaW1lLnRpbWVTY2FsZSgp
KTsKKyAgICBpZiAoIW1faW5wdXRTYW1wbGVPZmZzZXQpIHsKKyAgICAgICAgbV9pbnB1dFNhbXBs
ZU9mZnNldCA9IDAgLSByaW5nQnVmZmVySW5kZXhUb1dyaXRlOworICAgICAgICByaW5nQnVmZmVy
SW5kZXhUb1dyaXRlID0gMDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmluZ0J1ZmZlckluZGV4VG9X
cml0ZSArPSAqbV9pbnB1dFNhbXBsZU9mZnNldDsKIAotICAgIGlmIChtX2lucHV0U2FtcGxlT2Zm
c2V0ID09IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKLSAgICAgICAgbV9pbnB1dFNhbXBsZU9m
ZnNldCA9IE1lZGlhVGltZSgxIC0gc2FtcGxlVGltZS50aW1lVmFsdWUoKSwgc2FtcGxlVGltZS50
aW1lU2NhbGUoKSk7Ci0gICAgc2FtcGxlVGltZSArPSBtX2lucHV0U2FtcGxlT2Zmc2V0OworICAg
IGlmIChtX2NvbnZlcnRlcklucHV0T2Zmc2V0KQorICAgICAgICByaW5nQnVmZmVySW5kZXhUb1dy
aXRlICs9IG1fY29udmVydGVySW5wdXRPZmZzZXQ7CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAg
dWludDY0X3Qgc3RhcnRGcmFtZTEgPSAwOwotICAgIHVpbnQ2NF90IGVuZEZyYW1lMSA9IDA7Ci0g
ICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZTEsIGVuZEZy
YW1lMSk7Ci0jZW5kaWYKKyAgICBpZiAobV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lVmFs
dWUgJiYgYWJzKChmbG9hdCltX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSAtIChm
bG9hdClyaW5nQnVmZmVySW5kZXhUb1dyaXRlKSA8PSAxKQorICAgICAgICByaW5nQnVmZmVySW5k
ZXhUb1dyaXRlID0gbV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1lVmFsdWU7CisKKyAgICBt
X2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWVWYWx1ZSA9IHJpbmdCdWZmZXJJbmRleFRvV3Jp
dGUgKyBzYW1wbGVDb3VudDsKIAogICAgIGlmIChtX2lzSW5OZWVkT2ZNb3JlRGF0YSkgewogICAg
ICAgICBtX2lzSW5OZWVkT2ZNb3JlRGF0YSA9IGZhbHNlOwpAQCAtMTc2LDcgKzE3MCwxMCBAQCB2
b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXNJbnRlcm5hbChjb25zdCBBdWRp
b0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlm
aWVyLCAibmVlZGVkIG1vcmUgZGF0YSwgcHVzaGluZyAiLCBzYW1wbGVDb3VudCwgIiBzYW1wbGVz
Iik7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICBtX3JpbmdCdWZmZXItPnN0b3JlKHNhbXBsZUJ1
ZmZlckxpc3QsIHNhbXBsZUNvdW50LCBzYW1wbGVUaW1lLnRpbWVWYWx1ZSgpKTsKKworICAgIG1f
cmluZ0J1ZmZlci0+c3RvcmUoc2FtcGxlQnVmZmVyTGlzdCwgc2FtcGxlQ291bnQsIHJpbmdCdWZm
ZXJJbmRleFRvV3JpdGUpOworCisgICAgbV9jb252ZXJ0ZXJJbnB1dE9mZnNldCArPSBvZmZzZXQ7
CiAgICAgbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsKIH0KIApAQCAtMTk0
LDIxICsxOTEsNiBAQCB2b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXMoY29u
c3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQbGF0ZgogICAgIHB1c2hTYW1wbGVzSW50
ZXJuYWwoKmRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRhKS5saXN0KCksIHNh
bXBsZVRpbWUsIHNhbXBsZUNvdW50KTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQ2NF90IGNvbXB1
dGVPZmZzZXREZWxheShkb3VibGUgc2FtcGxlUmF0ZSwgdWludDY0X3QgbGFzdFB1c2hlZFNhbXBs
ZUNvdW50KQotewotICAgIGNvbnN0IGRvdWJsZSB0d2VudHlNUyA9IC4wMjsKLSAgICBjb25zdCBk
b3VibGUgdGVuTVMgPSAuMDE7Ci0gICAgY29uc3QgZG91YmxlIGZpdmVNUyA9IC4wMDU7Ci0KLSAg
ICBpZiAobGFzdFB1c2hlZFNhbXBsZUNvdW50ID4gc2FtcGxlUmF0ZSAqIHR3ZW50eU1TKQotICAg
ICAgICByZXR1cm4gc2FtcGxlUmF0ZSAqIHR3ZW50eU1TOwotICAgIGlmIChsYXN0UHVzaGVkU2Ft
cGxlQ291bnQgPiBzYW1wbGVSYXRlICogdGVuTVMpCi0gICAgICAgIHJldHVybiBzYW1wbGVSYXRl
ICogdGVuTVM7Ci0gICAgaWYgKGxhc3RQdXNoZWRTYW1wbGVDb3VudCA+IHNhbXBsZVJhdGUgKiBm
aXZlTVMpCi0gICAgICAgIHJldHVybiBzYW1wbGVSYXRlICogZml2ZU1TOwotICAgIHJldHVybiAw
OwotfQotCiBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXMoQXVkaW9CdWZm
ZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDb3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBk
b3VibGUgLypob3N0VGltZSovLCBQdWxsTW9kZSBtb2RlKQogewogICAgIHNpemVfdCBieXRlQ291
bnQgPSBzYW1wbGVDb3VudCAqIG1fb3V0cHV0RGVzY3JpcHRpb24tPmJ5dGVzUGVyRnJhbWUoKTsK
QEAgLTIyMCw3ICsyMDIsNyBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBs
ZXMoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDbwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1fbXV0ZWQgfHwgbV9pbnB1dFNhbXBsZU9mZnNl
dCA9PSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpIHsKKyAgICBpZiAobV9tdXRlZCB8fCAhbV9p
bnB1dFNhbXBsZU9mZnNldCkgewogICAgICAgICBpZiAobW9kZSAhPSBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6Ok1peCkKICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChi
dWZmZXIsIGJ5dGVDb3VudCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMCwzMyArMjEy
LDE5IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZl
ckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvCiAgICAgdWludDY0X3QgZW5kRnJhbWUgPSAw
OwogICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVu
ZEZyYW1lKTsKIAotICAgIGlmIChtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQpIHsK
LSAgICAgICAgdWludDY0X3QgYnVmZmVyZWQgPSBlbmRGcmFtZSAtIHN0YXJ0RnJhbWU7Ci0gICAg
ICAgIGlmIChtX2lzRmlyc3RQdWxsKSB7Ci0gICAgICAgICAgICBhdXRvIG1pbmltdW1CdWZmZXIg
PSBtX3dhaXRUb1N0YXJ0Rm9yUHVzaENvdW50ICogbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQ7Ci0g
ICAgICAgICAgICBpZiAoYnVmZmVyZWQgPj0gbWluaW11bUJ1ZmZlcikgewotICAgICAgICAgICAg
ICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gc3RhcnRGcmFtZSAtIHRpbWVTdGFtcDsKLSAgICAg
ICAgICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBtX2VuZEZyYW1lV2hlbk5vdEVub3VnaERhdGEgPSAwOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBXZSB3YWl0IGZvciBvbmUgY2h1bmsgb2Yg
dmFsdWUgYmVmb3JlIHN0YXJ0aW5nIHRvIHBsYXkuCi0gICAgICAgICAgICAgICAgaWYgKG1vZGUg
IT0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpNaXgpCi0gICAgICAgICAgICAgICAgICAgIEF1ZGlv
U2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIGJ5dGVDb3VudCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKGJ1ZmZlcmVkIDwgc2FtcGxlQ291bnQgKiAyIHx8IChtX2VuZEZyYW1lV2hl
bk5vdEVub3VnaERhdGEgJiYgbV9lbmRGcmFtZVdoZW5Ob3RFbm91Z2hEYXRhID09IGVuZEZyYW1l
KSkgewotICAgICAgICAgICAgICAgIGlmIChtb2RlICE9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
TWl4KQotICAgICAgICAgICAgICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwo
YnVmZmVyLCBieXRlQ291bnQpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgbV9zaG91bGRDb21wdXRlT3V0cHV0U2FtcGxlT2Zmc2V0
ID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2VuZEZyYW1lV2hlbk5vdEVub3VnaERhdGEgPSAwOwor
ICAgIEFTU0VSVChtX3dhaXRUb1N0YXJ0Rm9yUHVzaENvdW50KTsKIAotICAgICAgICAgICAgbV9v
dXRwdXRTYW1wbGVPZmZzZXQgPSAoZW5kRnJhbWUgLSBzYW1wbGVDb3VudCkgLSB0aW1lU3RhbXA7
Ci0gICAgICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCAtPSBjb21wdXRlT2Zmc2V0RGVsYXko
bV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpLCBtX2xhc3RQdXNoZWRTYW1wbGVDb3Vu
dCk7CisgICAgdWludDY0X3QgYnVmZmVyZWQgPSBlbmRGcmFtZSAtIHN0YXJ0RnJhbWU7CisgICAg
aWYgKG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCkgeworICAgICAgICBhdXRvIG1p
bmltdW1CdWZmZXIgPSBzdGQ6Om1heDxzaXplX3Q+KG1fd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQg
KiBtX2xhc3RQdXNoZWRTYW1wbGVDb3VudCwgbV9jb252ZXJ0ZXIucmVndWxhckJ1ZmZlclNpemUo
KSk7CisgICAgICAgIGlmIChidWZmZXJlZCA8IG1pbmltdW1CdWZmZXIpIHsKKyAgICAgICAgICAg
IC8vIFdlIHdhaXQgZm9yIG9uZSBjaHVuayBvZiB2YWx1ZSBiZWZvcmUgc3RhcnRpbmcgdG8gcGxh
eS4KKyAgICAgICAgICAgIGlmIChtb2RlICE9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6TWl4KQor
ICAgICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIGJ5
dGVDb3VudCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAg
bV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBlbmRGcmFtZSAtIHRpbWVTdGFtcCAtIG1pbmltdW1CdWZm
ZXI7CisgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCA9IGZhbHNlOwog
ICAgIH0KIAogICAgIHRpbWVTdGFtcCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKQEAgLTI2OSwy
MyArMjM3LDEzIEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlcyhBdWRp
b0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvCiAgICAgICAgICAgICAgICAgRVJS
T1JfTE9HKGxvZ0lkZW50aWZpZXIsICJuZWVkIG1vcmUgZGF0YSwgc2FtcGxlICIsIHRpbWVTdGFt
cCwgIiB3aXRoIG9mZnNldCAiLCBvdXRwdXRTYW1wbGVPZmZzZXQsICIsIHRyeWluZyB0byBnZXQg
Iiwgc2FtcGxlQ291bnQsICIgc2FtcGxlcywgYnV0IG5vdCBjb21wbGV0ZWx5IGluIHJhbmdlIFsi
LCBzdGFydEZyYW1lLCAiIC4uICIsIGVuZEZyYW1lLCAiXSIpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKHRpbWVTdGFtcCA8IHN0YXJ0RnJhbWUgfHwgdGltZVN0YW1w
ID49IGVuZEZyYW1lKSB7Ci0gICAgICAgICAgICAvLyBXZSBhcmUgb3V0IG9mIHRoZSB3aW5kb3cs
IGxldCdzIHJlc3RhcnQgdGhlIG9mZnNldCBjb21wdXRhdGlvbi4KLSAgICAgICAgICAgIG1fc2hv
dWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCA9IHRydWU7Ci0KLSAgICAgICAgICAgIGlmICh0
aW1lU3RhbXAgPj0gZW5kRnJhbWUpCi0gICAgICAgICAgICAgICAgbV9lbmRGcmFtZVdoZW5Ob3RF
bm91Z2hEYXRhID0gZW5kRnJhbWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBX
ZSBhcmUgdG9vIGNsb3NlIGZyb20gZW5kRnJhbWUsIGxldCdzIHdhaXQgZm9yIG1vcmUgZGF0YSB0
byBiZSBwdXNoZWQuCi0gICAgICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCAtPSBzYW1wbGVD
b3VudDsKLSAgICAgICAgfQorICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZz
ZXQgPSB0cnVlOwogICAgICAgICBpZiAobW9kZSAhPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6Ok1p
eCkKICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIGJ5
dGVDb3VudCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX2lzRmlyc3RQ
dWxsID0gZmFsc2U7Ci0KKyAgICBtX2xhc3RCdWZmZXJlZEFtb3VudCA9IGVuZEZyYW1lIC0gdGlt
ZVN0YW1wIC0gc2FtcGxlQ291bnQ7CiAgICAgcmV0dXJuIHB1bGxTYW1wbGVzSW50ZXJuYWwoYnVm
ZmVyLCBzYW1wbGVDb3VudCwgdGltZVN0YW1wLCBtb2RlKTsKIH0KIApAQCAtMzIwLDEyICsyNzgs
MTIgQEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVDaHVu
ayhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2kKICAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZm
ZXJzICE9IG1fcmluZ0J1ZmZlci0+Y2hhbm5lbENvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChtX211dGVkKQorICAgIGlmIChtX211dGVkIHx8ICFtX2lucHV0U2FtcGxl
T2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9zaG91bGRDb21wdXRl
T3V0cHV0U2FtcGxlT2Zmc2V0KSB7CiAgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBs
ZU9mZnNldCA9IGZhbHNlOwotICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IG1faW5wdXRT
YW1wbGVPZmZzZXQudGltZVZhbHVlKCkgKiBtX291dHB1dERlc2NyaXB0aW9uLT5zYW1wbGVSYXRl
KCkgLyBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVTY2FsZSgpOworICAgICAgICBtX291dHB1dFNh
bXBsZU9mZnNldCA9ICptX2lucHV0U2FtcGxlT2Zmc2V0OwogICAgIH0KIAogICAgIHRpbWVTdGFt
cCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKQEAgLTM1NCw2ICszMTIsMTAgQEAgYm9vbCBBdWRp
b1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVzQXNDaHVua3MoQXVkaW9CdWZm
ZXJMaXN0JiBidWZmZXIKIAogICAgIHN0YXJ0RnJhbWUgPSB0aW1lU3RhbXA7CiAKKyAgICBBU1NF
UlQoZW5kRnJhbWUgPj0gc3RhcnRGcmFtZSk7CisgICAgaWYgKGVuZEZyYW1lIDwgc3RhcnRGcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKG1fbXV0ZWQpIHsKICAgICAgICAg
QXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKGJ1ZmZlciwgc2FtcGxlQ291bnRQZXJDaHVu
ayAqIG1fb3V0cHV0RGVzY3JpcHRpb24tPmJ5dGVzUGVyRnJhbWUoKSk7CiAgICAgICAgIHdoaWxl
IChlbmRGcmFtZSAtIHN0YXJ0RnJhbWUgPj0gc2FtcGxlQ291bnRQZXJDaHVuaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1No
YXJlZFVuaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
QXVkaW9TaGFyZWRVbml0LmgKaW5kZXggYTA1Njg0YzczMjBiZmJiY2M2ZDYxYTliYmRhNmMxZjY3
OTQyNmZlZi4uMWE4OTZhYjczODUyODU0YmE3NzdiYzRkMTY2ZjljYTJlNWRhMmFmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1No
YXJlZFVuaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TW9ja0F1ZGlvU2hhcmVkVW5pdC5oCkBAIC02MiwxNSArNjIsMTYgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGVsYXlTYW1wbGVzKFNlY29uZHMpIGZpbmFsOwogCisgICAgdm9pZCBzdGFydCgpOwog
ICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Ugc2FtcGxlUmF0ZUNhcGFjaXRpZXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDQ0MTAwLCA0ODAwMCk7IH0KIAog
ICAgIHZvaWQgdGljaygpOwogCi0gICAgdm9pZCByZW5kZXIoU2Vjb25kcyk7CisgICAgdm9pZCBy
ZW5kZXIoTW9ub3RvbmljVGltZSk7CiAgICAgdm9pZCBlbWl0U2FtcGxlQnVmZmVycyh1aW50MzJf
dCBmcmFtZUNvdW50KTsKICAgICB2b2lkIHJlY29uZmlndXJlKCk7CiAKLSAgICBzdGF0aWMgU2Vj
b25kcyByZW5kZXJJbnRlcnZhbCgpIHsgcmV0dXJuIDYwX21zOyB9CisgICAgc3RhdGljIFNlY29u
ZHMgcmVuZGVySW50ZXJ2YWwoKSB7IHJldHVybiAyMF9tczsgfQogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CiAKQEAgLTgzLDYgKzg0
LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxmbG9hdD4gbV9iaXBCb3BCdWZmZXI7CiAgICAg
Ym9vbCBtX2hhc0F1ZGlvVW5pdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0
YSB7IGZhbHNlIH07CiAKICAgICBSdW5Mb29wOjpUaW1lcjxNb2NrQXVkaW9TaGFyZWRVbml0PiBt
X3RpbWVyOwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0UmVuZGVyVGltZSB7IE1vbm90b25pY1Rp
bWU6Om5hbigpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tCmluZGV4IDYyNzJhNTM2MDBi
MDdiZDQ1ZDJmZGJlZDk0MTgxYjYwYTJmMjM5ZWEuLjBkZDNkNzFjYWU3YTYzYjYzNzIwOGYyODM4
MjIwZTY1OWU0MjEzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tCkBAIC0xMDEsOCAr
MTAxLDggQEAgTW9ja0F1ZGlvU2hhcmVkVW5pdCYgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6c2luZ2xl
dG9uKCkKIH0KIAogTW9ja0F1ZGlvU2hhcmVkVW5pdDo6TW9ja0F1ZGlvU2hhcmVkVW5pdCgpCi0g
ICAgOiBtX3RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk1vY2tBdWRpb1NoYXJlZFVu
aXQ6OnRpY2spCi0gICAgLCBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiTW9ja0F1ZGlv
U2hhcmVkVW5pdCBDYXB0dXJlIFF1ZXVlIikpCisgICAgOiBtX3RpbWVyKFJ1bkxvb3A6OmN1cnJl
bnQoKSwgdGhpcywgJk1vY2tBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0KQorICAgICwgbV93b3JrUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIk1vY2tBdWRpb1NoYXJlZFVuaXQgQ2FwdHVyZSBRdWV1ZSIs
IFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQogewogfQogCkBAIC0xMjcsMTMgKzEy
NywxMSBAQCBPU1N0YXR1cyBNb2NrQXVkaW9TaGFyZWRVbml0OjpyZWNvbmZpZ3VyZUF1ZGlvVW5p
dCgpCiAgICAgaWYgKCFoYXNBdWRpb1VuaXQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBt
X3RpbWVyLnN0b3AoKTsKICAgICBtX2xhc3RSZW5kZXJUaW1lID0gTW9ub3RvbmljVGltZTo6bmFu
KCk7CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgIHJlY29uZmln
dXJlKCk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKLSAgICAgICAgICAgIG1f
bGFzdFJlbmRlclRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAgICAgIG1fdGlt
ZXIuc3RhcnRSZXBlYXRpbmcocmVuZGVySW50ZXJ2YWwoKSk7CisgICAgICAgICAgICBzdGFydElu
dGVybmFsKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogICAgIHJldHVybiAwOwpAQCAtMTQyLDU3
ICsxNDAsNDUgQEAgT1NTdGF0dXMgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6cmVjb25maWd1cmVBdWRp
b1VuaXQoKQogdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0OjpjbGVhbnVwQXVkaW9Vbml0KCkKIHsK
ICAgICBtX2hhc0F1ZGlvVW5pdCA9IGZhbHNlOwotICAgIG1fdGltZXIuc3RvcCgpOworICAgIG1f
aXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7CiAgICAgbV9sYXN0UmVuZGVyVGltZSA9IE1vbm90b25p
Y1RpbWU6Om5hbigpOwogfQogCiBPU1N0YXR1cyBNb2NrQXVkaW9TaGFyZWRVbml0OjpzdGFydElu
dGVybmFsKCkKK3sKKyAgICBzdGFydCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE1vY2tB
dWRpb1NoYXJlZFVuaXQ6OnN0YXJ0KCkKIHsKICAgICBpZiAoIW1faGFzQXVkaW9Vbml0KQogICAg
ICAgICBtX2hhc0F1ZGlvVW5pdCA9IHRydWU7CiAKICAgICBtX2xhc3RSZW5kZXJUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCk7Ci0gICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhyZW5kZXJJbnRl
cnZhbCgpKTsKLSAgICByZXR1cm4gMDsKKyAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7Cisg
ICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCByZW5kZXJUaW1lID0gbV9sYXN0UmVuZGVy
VGltZV0geworICAgICAgICByZW5kZXIocmVuZGVyVGltZSk7CisgICAgfSk7CiB9CiAKIHZvaWQg
TW9ja0F1ZGlvU2hhcmVkVW5pdDo6c3RvcEludGVybmFsKCkKIHsKKyAgICBtX2lzUHJvZHVjaW5n
RGF0YSA9IGZhbHNlOwogICAgIGlmICghbV9oYXNBdWRpb1VuaXQpCiAgICAgICAgIHJldHVybjsK
LSAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX2xhc3RSZW5kZXJUaW1lID0gTW9ub3RvbmljVGlt
ZTo6bmFuKCk7CiB9CiAKIGJvb2wgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6aXNQcm9kdWNpbmdEYXRh
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90aW1lci5pc0FjdGl2ZSgpOwotfQotCi12b2lkIE1v
Y2tBdWRpb1NoYXJlZFVuaXQ6OnRpY2soKQotewotICAgIGlmIChzdGQ6OmlzbmFuKG1fbGFzdFJl
bmRlclRpbWUpKQotICAgICAgICBtX2xhc3RSZW5kZXJUaW1lID0gTW9ub3RvbmljVGltZTo6bm93
KCk7Ci0KLSAgICBNb25vdG9uaWNUaW1lIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotCi0g
ICAgaWYgKG1fZGVsYXlVbnRpbCkgewotICAgICAgICBpZiAobV9kZWxheVVudGlsIDwgbm93KQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2RlbGF5VW50aWwgPSBNb25vdG9uaWNUaW1l
KCk7Ci0gICAgfQotCi0gICAgU2Vjb25kcyBkZWx0YSA9IG5vdyAtIG1fbGFzdFJlbmRlclRpbWU7
Ci0gICAgbV9sYXN0UmVuZGVyVGltZSA9IG5vdzsKLQotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgZGVsdGFdIHsKLSAgICAgICAgcmVuZGVyKGRlbHRhKTsKLSAgICB9KTsKKyAgICBy
ZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGE7CiB9CiAKIHZvaWQgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6
ZGVsYXlTYW1wbGVzKFNlY29uZHMgZGVsdGEpCiB7Ci0gICAgbV9kZWxheVVudGlsID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgKyBkZWx0YTsKKyAgICBzdG9wSW50ZXJuYWwoKTsKKyAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdChkZWx0YSk7CiB9CiAKIHZvaWQgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6cmVj
b25maWd1cmUoKQpAQCAtMjQ0LDkgKzIzMCwyNCBAQCB2b2lkIE1vY2tBdWRpb1NoYXJlZFVuaXQ6
OmVtaXRTYW1wbGVCdWZmZXJzKHVpbnQzMl90IGZyYW1lQ291bnQpCiAgICAgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRUaW1lKSwgKm1fYXVkaW9CdWZmZXJMaXN0
LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obV9zdHJlYW1Gb3JtYXQpLCBmcmFtZUNvdW50KTsK
IH0KIAotdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0OjpyZW5kZXIoU2Vjb25kcyBkZWx0YSkKK3Zv
aWQgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6cmVuZGVyKE1vbm90b25pY1RpbWUgcmVuZGVyVGltZSkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWlzUHJvZHVjaW5nRGF0
YSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRlbHRhID0gcmVuZGVySW50ZXJ2YWwo
KTsKKyAgICBhdXRvIGN1cnJlbnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgYXV0
byBuZXh0UmVuZGVyVGltZSA9IHJlbmRlclRpbWUgKyBkZWx0YTsKKyAgICBTZWNvbmRzIG5leHRS
ZW5kZXJEZWxheSA9IG5leHRSZW5kZXJUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkgLSBjdXJyZW50
VGltZS5zZWNvbmRzU2luY2VFcG9jaCgpOworICAgIGlmIChuZXh0UmVuZGVyRGVsYXkuc2Vjb25k
cygpIDwgMCkgeworICAgICAgICBuZXh0UmVuZGVyVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAg
ICBuZXh0UmVuZGVyRGVsYXkgPSAwX3M7CisgICAgfQorICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aEFmdGVyKG5leHRSZW5kZXJEZWxheSwgW3RoaXMsIG5leHRSZW5kZXJUaW1lXSB7CisgICAgICAg
IHJlbmRlcihuZXh0UmVuZGVyVGltZSk7CisgICAgfSk7CisKICAgICBpZiAoIW1fYXVkaW9CdWZm
ZXJMaXN0IHx8ICFtX2JpcEJvcEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJlY29uZmlndXJlKCk7
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>