<?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>237224</bug_id>
          
          <creation_ts>2022-02-25 13:46:15 -0800</creation_ts>
          <short_desc>add a mechanism to request a UA shadow tree update before styling</short_desc>
          <delta_ts>2022-02-27 17:17:32 -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>DOM</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>
          
          <blocked>236747</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1846166</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-25 13:46:15 -0800</bug_when>
    <thetext>SVG &lt;use&gt; elements register themselves with the document when their shadow tree contents need updating, and this updating is done in Document::resolveStyle.  For lazy HTML &lt;input&gt; element UA shadow trees (in bug 236747) we need something similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846169</commentid>
    <comment_count>1</comment_count>
      <attachid>453254</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-25 13:49:15 -0800</bug_when>
    <thetext>Created attachment 453254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846177</commentid>
    <comment_count>2</comment_count>
      <attachid>453257</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-25 13:57:29 -0800</bug_when>
    <thetext>Created attachment 453257
Patch for bug 236747 with dependencies for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846178</commentid>
    <comment_count>3</comment_count>
      <attachid>453258</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-25 13:58:20 -0800</bug_when>
    <thetext>Created attachment 453258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846198</commentid>
    <comment_count>4</comment_count>
      <attachid>453257</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-25 14:47:07 -0800</bug_when>
    <thetext>Comment on attachment 453257
Patch for bug 236747 with dependencies for EWS

(Attached this to the wrong bug, but I don&apos;t want to cancel the EWS jobs, so leaving it here for now.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846344</commentid>
    <comment_count>5</comment_count>
      <attachid>453309</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-26 14:03:33 -0800</bug_when>
    <thetext>Created attachment 453309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846347</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-26 14:08:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/89517318&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846510</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-27 17:17:24 -0800</bug_when>
    <thetext>Committed r290574 (247852@main): &lt;https://commits.webkit.org/247852@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453309.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453254</attachid>
            <date>2022-02-25 13:49:15 -0800</date>
            <delta_ts>2022-02-26 14:03:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237224-20220226084914.patch</filename>
            <type>text/plain</type>
            <size>12057</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwOGMyNTI5OTcwYzQx
MTRjOThhZmQ1YjU5NGVhNTRkZWRmOWU1ZC4uZmMxOWRjZjUxODY4NzE1NTczN2M2ZjRlM2JmNTBj
YzVhYjBjMWMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTAyLTI1ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbWVjaGFu
aXNtIHRvIHJlcXVlc3QgYSBVQSBzaGFkb3cgdHJlZSB1cGRhdGUgYmVmb3JlIHN0eWxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkcgPHVzZT4gZWxl
bWVudHMgcmVnaXN0ZXIgdGhlbXNlbHZlcyB3aXRoIHRoZSBkb2N1bWVudCB3aGVuIHRoZWlyCisg
ICAgICAgIHNoYWRvdyB0cmVlIGNvbnRlbnRzIG5lZWQgdXBkYXRpbmcsIGFuZCB0aGlzIHVwZGF0
aW5nIGlzIGRvbmUgaW4KKyAgICAgICAgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZS4gRm9yIGxhenkg
SFRNTCA8aW5wdXQ+IGVsZW1lbnQgVUEgc2hhZG93IHRyZWVzCisgICAgICAgIChpbiBidWcgMjM2
NzQ3KSB3ZSBuZWVkIHNvbWV0aGluZyBzaW1pbGFyLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXNvbHZlU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRv
d1RyZWVVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUVsZW1lbnRX
aXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojp1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6flNWR0RvY3VtZW50RXh0ZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVV
cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjpyZW1vdmVVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnVzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVl
VXBkYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnVwZGF0ZVVzZXJBZ2VudFNoYWRvd1Ry
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1Ry
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAyMi0wMi0yMyAg
Um9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyOTAzNTEgYW5kIHIyOTA0MDQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA5NTVmNzQ2NmMzYWU3NTQ3NjM0YjQ5NzBmOWU5NmI0NjM4YWQ3NGI1Li4zNTM0MWNiZTdmOTAy
MTliMDA3NTNkNmI4MTE2N2M4Y2I0MDI3ZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTIwMDUsMTQgKzIwMDUsMTcgQEAgdm9pZCBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlKFJlc29sdmVT
dHlsZVR5cGUgdHlwZSkKIAogICAgIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRv
ciByZXBhaW50UmVnaW9uQWNjdW11bGF0b3IocmVuZGVyVmlldygpKTsKIAotICAgIC8vIEZJWE1F
OiBEbyB0aGlzIHVwZGF0ZSBwZXIgdHJlZSBzY29wZS4KLSAgICBpZiAoYXV0byogZXh0ZW5zaW9u
cyA9IG1fc3ZnRXh0ZW5zaW9ucy5nZXQoKSkgewotICAgICAgICBhdXRvIGVsZW1lbnRzID0gY29w
eVRvVmVjdG9yT2Y8UmVmPFNWR1VzZUVsZW1lbnQ+PihleHRlbnNpb25zLT51c2VFbGVtZW50c1dp
dGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSgpKTsKLSAgICAgICAgLy8gV2UgY2FuJ3QgY2xlYXIg
bV9zdmdVc2VFbGVtZW50cyBoZXJlIGJlY2F1c2UgdXBkYXRlU2hhZG93VHJlZSBtYXkgZW5kIHVw
IGV4ZWN1dGluZyBhcmJpdHJhcnkgc2NyaXB0cwotICAgICAgICAvLyB3aGljaCBtYXkgaW5zZXJ0
IG5ldyBTVkcgdXNlIGVsZW1lbnRzIG9yIHJlbW92ZSBleGlzdGluZyBvbmVzIGluc2lkZSBzeW5j
IElQQyB2aWEgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50LgotICAgICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBlbGVtZW50cykKLSAgICAgICAgICAgIGVsZW1lbnQtPnVwZGF0ZVNoYWRv
d1RyZWUoKTsKLSAgICB9CisgICAgLy8gRklYTUU6IERvIHRoaXMgdXNlciBhZ2VudCBzaGFkb3cg
dHJlZSB1cGRhdGUgcGVyIHRyZWUgc2NvcGUuCisKKyAgICAvLyBXZSBjYW4ndCBjbGVhciBtX2Vs
ZW1lbnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlcyBoZXJlCisgICAgLy8g
YmVjYXVzZSBTVkdVc2VFbGVtZW50Ojp1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlIG1heSBlbmQg
dXAgZXhlY3V0aW5nCisgICAgLy8gYXJiaXRyYXJ5IHNjcmlwdHMgd2hpY2ggbWF5IGluc2VydCBu
ZXcgU1ZHIHVzZSBlbGVtZW50cyBvciByZW1vdmUKKyAgICAvLyBleGlzdGluZyBvbmVzIGluc2lk
ZSBzeW5jIElQQyB2aWEgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50LgorICAgIC8vCisg
ICAgLy8gSW5zdGVhZCwgaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHVwZGF0ZVVzZXJBZ2Vu
dFNoYWRvd1RyZWUgdG8KKyAgICAvLyByZW1vdmUgdGhlIGVsZW1lbnQuCisgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmPEVsZW1lbnQ+PihtX2VsZW1lbnRzV2l0aFBl
bmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlcykpCisgICAgICAgIGVsZW1lbnQtPnVwZGF0
ZVVzZXJBZ2VudFNoYWRvd1RyZWUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRl
IHN0eWxlIG9uIG91ciBhbmNlc3RvciBjaGFpbiBiZWZvcmUgcHJvY2VlZGluZywgaG93ZXZlciBk
b2luZyBzbyBhdAogICAgIC8vIHRoZSB0aW1lIHRoaXMgY29tbWVudCB3YXMgb3JpZ2luYWxseSB3
cml0dGVuIGNhdXNlZCBzZXZlcmFsIHRlc3RzIHRvIGNyYXNoLgpAQCAtOTA4Niw2ICs5MDg5LDIw
IEBAIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IERvY3VtZW50OjpzZXNzaW9uSUQoKSBj
b25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmFkZEVs
ZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYgZWxlbWVu
dCkKK3sKKyAgICBBU1NFUlQoJmVsZW1lbnQuZG9jdW1lbnQoKSA9PSB0aGlzKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGVz
LmFkZChlbGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBEb2N1bWVudDo6cmVtb3ZlRWxlbWVu
dFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZShFbGVtZW50JiBlbGVtZW50KQor
eworICAgIEFTU0VSVCgmZWxlbWVudC5kb2N1bWVudCgpID09IHRoaXMpOworICAgIG1fZWxlbWVu
dHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGVzLnJlbW92ZShlbGVtZW50KTsK
KyAgICAvLyBGSVhNRTogQXNzZXJ0IHRoYXQgZWxlbWVudCB3YXMgaW4gbV9lbGVtZW50c1dpdGhQ
ZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZXMgb25jZSByZS1lbnRyYW5jeSB0byB1cGRh
dGUgc3R5bGUgYW5kIGxheW91dCBoYXZlIGJlZW4gcmVtb3ZlZC4KK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjdW5kZWYgRE9DVU1FTlRfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggYzFiZWNjZDIxYWIxMzE2YWUwMzA0ZTk3OTM5YzdhMjY2MjQyMzYxMy4uMDU3MzVm
NWMyYjMxOGZmNmNlNTY4NTUxOTJkYmMwMWQ3Yjk0ZDEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTE2NzMsNiArMTY3Myw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3JlYXRlTmV3SWRlbnRp
ZmllcigpOwogCisgICAgdm9pZCBhZGRFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dU
cmVlVXBkYXRlKEVsZW1lbnQmKTsKKyAgICB2b2lkIHJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1Vz
ZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYpOworCiBwcm90ZWN0ZWQ6CiAgICAgZW51
bSBDb25zdHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhv
bGRlciA9IDEgPDwgMSB9OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KEZyYW1lKiwgY29u
c3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmLCBEb2N1bWVudENsYXNzZXMgPSB7IH0sIHVuc2lnbmVk
IGNvbnN0cnVjdGlvbkZsYWdzID0gMCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIg
PSB7IH0pOwpAQCAtMjI2NCw2ICsyMjY3LDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TW9kYWxDb250YWluZXJPYnNlcnZlcj4gbV9tb2RhbENvbnRhaW5lck9ic2VydmVyOwogCiAg
ICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fd2hlbklzVmlzaWJsZUhhbmRsZXJzOworCisg
ICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hh
ZG93VHJlZVVwZGF0ZXM7CiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1
bWVudChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjIwOWJlNjJhNzA0NjRmZWM3
MzMzNDVlNjU1MzYzZGNjZmU5ZjU4OC4uNjllYjMzYjUyM2E4OTJhYjhiOGFmZDgyMTExNWIwMDVi
ZjU2OWQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02NjQsNiArNjY0LDggQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzRHVwbGljYXRlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEdXBs
aWNhdGVBdHRyaWJ1dGU7IH07CiAgICAgdm9pZCBzZXRIYXNEdXBsaWNhdGVBdHRyaWJ1dGUoYm9v
bCBoYXNEdXBsaWNhdGVBdHRyaWJ1dGUpIHsgbV9oYXNEdXBsaWNhdGVBdHRyaWJ1dGUgPSBoYXNE
dXBsaWNhdGVBdHRyaWJ1dGU7IH07CiAKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVXNlckFnZW50
U2hhZG93VHJlZSgpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmLCBDb25zdHJ1Y3Rpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCA4NjMyZjAyZjRiZjZiZDVjMjAx
NzVmMzEzNjMzNTYxMzJjYWFmNGViLi44NDBlNGQ5OGMwM2EyMjNlNzI4OWFkYzFmNjIwYjc5NjFk
MWQzNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNw
cApAQCAtNDgsMTAgKzQ4LDcgQEAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnMoRG9jdW1lbnQmIGRvY3VtZW50KQogewogfQogCi1TVkdEb2N1bWVudEV4dGVuc2lv
bnM6On5TVkdEb2N1bWVudEV4dGVuc2lvbnMoKQotewotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04obV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVw
ZGF0ZS5jb21wdXRlc0VtcHR5KCkpOwotfQorU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp+U1ZHRG9j
dW1lbnRFeHRlbnNpb25zKCkgPSBkZWZhdWx0OwogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6YWRkVGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50JiBlbGVtZW50KQogewpAQCAtOTAsMjAg
Kzg3LDYgQEAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIFNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6cmVzb3VyY2VCeUlkKGNvbnN0IEF0b21TdHJpbmcKICAgICByZXR1cm4gbV9yZXNvdXJjZXMu
Z2V0KGlkKTsKIH0KIAotCi12b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkVXNlRWxlbWVu
dFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZShTVkdVc2VFbGVtZW50JiBlbGVtZW50KQotewot
ICAgIGF1dG8gcmVzdWx0ID0gbV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0
ZS5hZGQoZWxlbWVudCk7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihyZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjpyZW1vdmVVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKFNWR1VzZUVsZW1l
bnQmIGVsZW1lbnQpCi17Ci0gICAgbV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVw
ZGF0ZS5yZW1vdmUoZWxlbWVudCk7Ci0gICAgLy8gRklYTUU6IEFzc2VydCB0aGF0IGVsZW1lbnQg
d2FzIGluIG1fc3ZnVXNlRWxlbWVudHMgb25jZSByZS1lbnRyYW5jeSB0byB1cGRhdGUgc3R5bGUg
YW5kIGxheW91dCBoYXZlIGJlZW4gcmVtb3ZlZC4KLX0KLQotCiB2b2lkIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6c3RhcnRBbmltYXRpb25zKCkKIHsKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSBl
dmVyeSAiVGltZSBDb250YWluZXIiIHdpbGwgbmVlZCBhIHdheSB0byBsYXRjaCBvbiB0byBzb21l
IGdsb2JhbCB0aW1lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5o
CmluZGV4IGRjMjg2OWVhNDYwNjM4MWRlNGYyZDg5MDY0YjI1MTZkZWE2Y2I1ZjAuLjliYmQ3N2Ji
Y2M1M2I1OGY4ZDkwNTE2Y2RiYzEzOWEzYmRkMWZlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTVkdEb2N1bWVudEV4dGVuc2lv
bnMoRG9jdW1lbnQmKTsKICAgICB+U1ZHRG9jdW1lbnRFeHRlbnNpb25zKCk7Ci0gICAgCisKICAg
ICB2b2lkIGFkZFRpbWVDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3Zl
VGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50Jik7CiAKQEAgLTUxLDEwICs1MSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKGNvbnN0IEF0b21TdHJpbmcmIGlkKTsKICAgICBS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogcmVzb3VyY2VCeUlkKGNvbnN0IEF0b21TdHJpbmcm
IGlkKSBjb25zdDsKIAotICAgIHZvaWQgYWRkVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJl
ZVVwZGF0ZShTVkdVc2VFbGVtZW50Jik7Ci0gICAgdm9pZCByZW1vdmVVc2VFbGVtZW50V2l0aFBl
bmRpbmdTaGFkb3dUcmVlVXBkYXRlKFNWR1VzZUVsZW1lbnQmKTsKLSAgICBjb25zdCBXZWFrSGFz
aFNldDxTVkdVc2VFbGVtZW50PiYgdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRh
dGUoKSBjb25zdCB7IHJldHVybiBtX3VzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBk
YXRlOyB9Ci0KICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9ucygpOwogICAgIHZvaWQgcGF1c2VBbmlt
YXRpb25zKCk7CiAgICAgdm9pZCB1bnBhdXNlQW5pbWF0aW9ucygpOwpAQCAtODYsNyArODIsNiBA
QCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdSZXNvdXJjZXNDYWNoZT4gbV9yZXNv
dXJjZXNDYWNoZTsKIAogICAgIFZlY3RvcjxSZWY8U1ZHRWxlbWVudD4+IG1fcmVidWlsZEVsZW1l
bnRzOwotICAgIFdlYWtIYXNoU2V0PFNWR1VzZUVsZW1lbnQ+IG1fdXNlRWxlbWVudHNXaXRoUGVu
ZGluZ1NoYWRvd1RyZWVVcGRhdGU7CiAgICAgYm9vbCBtX2FyZUFuaW1hdGlvbnNQYXVzZWQ7CiAK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCAwNTQ3Y2NhOWQy
NmZiZDBmMzk1OTUzYWFhNDllZGJhNTIyMjA2NDJkLi5iOWVkZWY2MzFlNjZlNjBmZjU4Yzc1MjM0
OTgxZTIxNDUzMGU0ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0x
MDAsNyArMTAwLDcgQEAgTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgU1ZHVXNlRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHkKICAgICBTVkdHcmFwaGljc0Vs
ZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0
ZWRUcmVlKTsKICAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KSB7CiAg
ICAgICAgIGlmIChtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSkKLSAgICAgICAgICAgIGRvY3VtZW50
KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1Ry
ZWVVcGRhdGUoKnRoaXMpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5hZGRFbGVtZW50V2l0aFBl
bmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0
ZVNoYWRvd1RyZWUoKTsKICAgICAgICAgLy8gRklYTUU6IE1vdmUgYmFjayB0aGUgY2FsbCB0byB1
cGRhdGVFeHRlcm5hbERvY3VtZW50KCkgaGVyZSBvbmNlIG5vdGlmeUZpbmlzaGVkIGlzIG1hZGUg
YWx3YXlzIGFzeW5jLgogICAgICAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6
Ok5lZWRzUG9zdEluc2VydGlvbkNhbGxiYWNrOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgU1ZH
VXNlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwg
Q29udGFpbmVyTm9kZSYKICAgICAvLyBhbmQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlRXh0ZXJuYWxE
b2N1bWVudCB3aGljaCBjYWxscyBpbnZhbGlkYXRlU2hhZG93VHJlZSgpLgogICAgIGlmIChyZW1v
dmFsVHlwZS5kaXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQpIHsKICAgICAgICAgaWYgKG1fc2hhZG93
VHJlZU5lZWRzVXBkYXRlKQotICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNp
b25zKCkucmVtb3ZlVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7
CisgICAgICAgICAgICBkb2N1bWVudCgpLnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2Vu
dFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOwogICAgIH0KICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6
OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUp
OwogICAgIGlmIChyZW1vdmFsVHlwZS5kaXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQpIHsKQEAgLTIx
Nyw3ICsyMTcsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkK
ICAgICBpbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogfQogCi12b2lkIFNWR1VzZUVsZW1lbnQ6OnVw
ZGF0ZVNoYWRvd1RyZWUoKQordm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVVc2VyQWdlbnRTaGFk
b3dUcmVlKCkKIHsKICAgICBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOwogCkBAIC0y
MjYsNyArMjI2LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKCkKIAog
ICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50KCku
YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZVVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1Ry
ZWVVcGRhdGUoKnRoaXMpOworICAgIGRvY3VtZW50KCkucmVtb3ZlRWxlbWVudFdpdGhQZW5kaW5n
VXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CiAKICAgICBTdHJpbmcgdGFyZ2V0SUQ7
CiAgICAgYXV0byogdGFyZ2V0ID0gZmluZFRhcmdldCgmdGFyZ2V0SUQpOwpAQCAtNTMwLDcgKzUz
MCw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1RyZWUoKQogICAgIGlu
dmFsaWRhdGVTdHlsZUFuZFJlbmRlcmVyc0ZvclN1YnRyZWUoKTsKICAgICBpbnZhbGlkYXRlRGVw
ZW5kZW50U2hhZG93VHJlZXMoKTsKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgZG9j
dW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hh
ZG93VHJlZVVwZGF0ZSgqdGhpcyk7CisgICAgICAgIGRvY3VtZW50KCkuYWRkRWxlbWVudFdpdGhQ
ZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CiB9CiAKIHZvaWQgU1ZHVXNl
RWxlbWVudDo6aW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5oCmluZGV4IDY5ZWZhZmZhOTQwZjAyMDg5MTU1ODYwNzVjOTE1NTI4ZDFlY2M0
NzkuLmM0MmQ4ZTUzMmU2YTIxYzY2ZGQ3NTI1M2ZiNzE4MjUxMjAwZTI3NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuaApAQCAtMzgsOCArMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+U1ZHVXNlRWxlbWVudCgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlU2hhZG93VHJlZSgpOwot
ICAgIGJvb2wgc2hhZG93VHJlZU5lZWRzVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dU
cmVlTmVlZHNVcGRhdGU7IH0KLSAgICB2b2lkIHVwZGF0ZVNoYWRvd1RyZWUoKTsKKyAgICB2b2lk
IHVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUoKSBmaW5hbDsKIAogICAgIFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyQ2xpcENoaWxkKCkgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453257</attachid>
            <date>2022-02-25 13:57:29 -0800</date>
            <delta_ts>2022-02-26 14:03:28 -0800</delta_ts>
            <desc>Patch for bug 236747 with dependencies for EWS</desc>
            <filename>bug-237224-20220226085727.patch</filename>
            <type>text/plain</type>
            <size>56143</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYwZDdhOTgxNWU3MGNl
Mjc3MDJkNjMwOWYxZjZhNGM4NDVlOTQzMy4uZmExNzVkM2Y2NGMzMTViODQxNzcxMGUxM2NkNDBl
MGUwYjY0ZDc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNyBAQAorMjAyMi0wMi0yNSAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIG1lY2hh
bmlzbSB0byByZXF1ZXN0IGEgVUEgc2hhZG93IHRyZWUgdXBkYXRlIGJlZm9yZSBzdHlsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjI0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU1ZHIDx1c2U+IGVs
ZW1lbnRzIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCB0aGUgZG9jdW1lbnQgd2hlbiB0aGVpcgor
ICAgICAgICBzaGFkb3cgdHJlZSBjb250ZW50cyBuZWVkIHVwZGF0aW5nLCBhbmQgdGhpcyB1cGRh
dGluZyBpcyBkb25lIGluCisgICAgICAgIERvY3VtZW50OjpyZXNvbHZlU3R5bGUuIEZvciBsYXp5
IEhUTUwgPGlucHV0PiBlbGVtZW50IFVBIHNoYWRvdyB0cmVlcworICAgICAgICAoaW4gYnVnIDIz
Njc0Nykgd2UgbmVlZCBzb21ldGhpbmcgc2ltaWxhci4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzb2x2ZVN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFk
b3dUcmVlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVFbGVtZW50
V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6On5TVkdEb2N1bWVudEV4dGVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVl
VXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6cmVtb3ZlVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp1c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJl
ZVVwZGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVVc2VyQWdlbnRTaGFkb3dU
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmludmFsaWRhdGVTaGFkb3dU
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnVwZGF0ZVNoYWRvd1RyZWUp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisKKzIwMjItMDItMjUg
IENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGlu
cHV0IGVsZW1lbnQgVUEgc2hhZG93IHRyZWUgY3JlYXRpb24gbGF6eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWRpdHlhIEtlZXJ0aGkuCisKKyAgICAgICAgV2UgY3VycmVudGx5IGRlbGF5IElucHV0
VHlwZSBjcmVhdGlvbiBmb3IgcGFyc2VyIGluc2VydGVkIGVsZW1lbnRzIHVudGlsCisgICAgICAg
IGp1c3QgYWZ0ZXIgdGhlIGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHNldCwgc28gdGhhdCB3ZSBkb24n
dCB3YXN0ZWZ1bGx5CisgICAgICAgIGNyZWF0ZSBhbiBJbnB1dFR5cGUgYW5kIHRoZSBVQSBzaGFk
b3cgdHJlZSBjcmVhdGlvbiBpZiBhIG5vbi10ZXh0CisgICAgICAgIHR5cGU9IiIgd2FzIHNwZWNp
ZmllZCBvbiB0aGUgdGFnLiBXZSBkb24ndCBkbyBhbnl0aGluZyBzaW1pbGFyIGZvcgorICAgICAg
ICBzY3JpcHQgaW5zZXJ0ZWQgaW5wdXQgZWxlbWVudHMuIFdlIGNvdWxkIG1ha2UgdGhlIElucHV0
VHlwZSBjcmVhdGlvbgorICAgICAgICBsYXp5LCBidXQgbW9zdCBvZiB0aGUgd2FzdGVkIHRpbWUg
aXMgZHVlIHRvIHRoZSBzaGFkb3cgdHJlZSBjcmVhdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNo
IG1ha2VzIElucHV0VHlwZSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5IGJ5IGRlbGF5aW5nIGl0
CisgICAgICAgIHVudGlsIG9uZSBvZiB0aGUgZm9sbG93aW5nIGhhcHBlbnM6CisKKyAgICAgICAg
MS4gdGhlIGVsZW1lbnQgaXMgaW5zZXJ0ZWQgaW50byB0aGUgZG9jdW1lbnQKKyAgICAgICAgMi4g
dGhlIHR5cGU9IiIgb3IgdmFsdWU9IiIgYXR0cmlidXRlcyBhcmUgY2hhbmdlZCBiZWZvcmUgdGhl
IGVsZW1lbnQKKyAgICAgICAgICAgaXMgaW5zZXJ0ZWQgaW50byB0aGUgZG9jdW1lbnQKKyAgICAg
ICAgMy4gYW55IERPTSBtZXRob2RzIHRoYXQgbmVlZCBhY2Nlc3MgdG8gdGhlIGlubmVyVGV4dEVs
ZW1lbnQoKSBhcmUKKyAgICAgICAgICAgY2FsbGVkIG9uIHRoZSBlbGVtZW50IGJlZm9yZSB0aGUg
ZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZQorICAgICAgICAgICBkb2N1bWVudAorCisgICAg
ICAgIE5vdCBhbGwgcGxhY2VzIHdoZXJlIHdlIGNhbGwgaW5uZXJUZXh0RWxlbWVudCgpIG9uIHRo
ZQorICAgICAgICBIVE1MSW5wdXRFbGVtZW50IGFyZSBzYWZlIHRvIGxhemlseSBjcmVhdGUgdGhl
IHNoYWRvdyB0cmVlcywgc28gd2UKKyAgICAgICAgaGF2ZSB0d28gYWNjZXNzb3JzOgorCisgICAg
ICAgIC0gaW5uZXJUZXh0RWxlbWVudCgpIHJldHVybnMgdGhlIGlubmVyIHRleHQgZWxlbWVudCBp
ZiBpdCdzIGJlZW4KKyAgICAgICAgICBjcmVhdGVkIGFscmVhZHkKKyAgICAgICAgLSBpbm5lclRl
eHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQgd2lsbCBwZXJmb3JtIHRoZSBs
YXp5CisgICAgICAgICAgc2hhZG93IHRyZWUgY29uc3RydWN0aW9uIGlmIGl0IGhhc24ndCBhbHJl
YWR5IGJlZW4gZG9uZQorCisgICAgICAgIFNpbmNlIHRoZSBleGlzdGluZworICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IGZ1bmN0
aW9uIGhhcworICAgICAgICBtb3JlIHJlc3BvbnNpYmlsaXR5IHRoYW4ganVzdCBjcmVhdGluZyB0
aGUgc3VidHJlZSBhbmQgZW5zdXJpbmcgdGhlCisgICAgICAgIGVkaXRhYmlsaXR5IGlzIHNldCBh
cHByb3ByaWF0ZWx5LCBpdCdzIHJlbmFtZWQgdG8gYSBtb3JlIG1hbmFnZWFibGUKKyAgICAgICAg
Y3JlYXRlU2hhZG93U3VidHJlZS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBhIDAuNSUgcHJv
Z3Jlc3Npb24gb24gU3BlZWRvbWV0ZXIgMi4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL2xh
enktc2hhZG93LXRyZWUtY3JlYXRpb24uaHRtbAorCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KToKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9D
b2xvcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y3Jl
YXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6Cisg
ICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRt
bC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFk
b3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRt
bC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvU2VhcmNo
SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgIFJlbmFtZWQgY3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSB0bworICAgICAg
ICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGFuZCByZW1vdmUgdGhlICJpc0lubmVyVGV4dEVsZW1lbnRF
ZGl0YWJsZSIKKyAgICAgICAgYXJndW1lbnQsIHNpbmNlIHdlIGNhbiBhc2sgdGhlIGVsZW1lbnQo
KSBmb3IgaXRzIHZhbHVlIGlmIG5lZWRlZC4KKyAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZSBp
cyBub3cgYWxzbyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIHNoYWRvdworICAgICAgICBy
b290LgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBo
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZC4gRW5zdXJlIGFsbCBzaGFkb3cgdHJlZSBz
dGF0ZSBpcyB1cCB0byBkYXRlIG5vdyB0aGF0IGl0IGNhbiBiZQorICAgICAgICBjcmVhdGVkIGxh
dGVyLgorCisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpoYXNDcmVhdGVkU2hhZG93U3VidHJl
ZSBjb25zdCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gY3JlYXRlIHRoZSBzaGFkb3cgc3Vi
dHJlZSBpZiBpdCBoYXNuJ3QgYmVlbiBkb25lCisgICAgICAgIGFscmVhZHksIGFuZCB0byBxdWVy
eSB3aGV0aGVyIGl0J3MgYmVlbiBkb25lLgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1
YnRyZWVJZk5lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRy
ZWVJZk5lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50Q3JlYXRp
bmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQpOgorICAgICAgICBOZXcgZnVuY3Rpb25zIHRvIGZpcnN0
IGNyZWF0ZSB0aGUgc2hhZG93IHN1YnRyZWUgYmVmb3JlIHJldHVybmluZworICAgICAgICBpbm5l
clRleHRFbGVtZW50KCkuIEhUTUxUZXh0QXJlYUVsZW1lbnQgbmV2ZXIgbGF6aWx5IGNyZWF0ZXMg
aXRzCisgICAgICAgIHNoYWRvdyBzdWJ0cmVlIGFuZCBzbyBqdXN0IHJldHVybnMgaW5uZXJUZXh0
RWxlbWVudCgpLgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBEZWxldGVkLiBKdXN0IGNhbGwgdGhyb3VnaCB0byBtX2lucHV0
VHlwZS0+Y3JlYXRlU2hhZG93VHJlZSgpCisgICAgICAgIGRpcmVjdGx5LgorCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUpOgorICAgICAgICBEb24ndCBpbW1lZGlhdGVseSBj
cmVhdGUgdGhlIHNoYWRvdyB0cmVlLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKToKKyAgICAgICAgQ3JlYXRlIHRoZSBzaGFkb3cg
c3VidHJlZSBub3cgdGhhdCB0aGUgZWxlbWVudCdzIGJlZW4gaW5zZXJ0ZWQuIE5vCisgICAgICAg
IG5lZWQgdG8gY2FsbCBkYXRhTGlzdE1heUhhdmVDaGFuZ2VkIHNpbmNlCisgICAgICAgIFRleHRG
aWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSB3aWxsIG5vdyBkbyB0aGlzLgorCisg
ICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6Cisg
ICAgICAgIEVuc3VyZSB0aGUgc2hhZG93IHN1YnRyZWUgaXMgY3JlYXRlZCBzaW5jZSB3ZSBuZWVk
IHRvIHBva2UgYXQgaXQuCisKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpm
b3J3YXJkRXZlbnQpOgorICAgICAgICBEb24ndCBmb3J3YXJkIHRoZSBldmVudCBpZiB0aGUgc2hh
ZG93IHRyZWUgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQuCisKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgIEVu
c3VyZSB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4gY3JlYXRlZC4gVGhpcyBpcyBuZWVkZWQgaWYg
dGhlCisgICAgICAgIHNlbGVjdGlvbiBBUElzIGFyZSBjYWxsZWQgb24gdGhlIGlucHV0IGVsZW1l
bnQgYmVmb3JlIGl0J3MgaW5zZXJ0ZWQKKyAgICAgICAgaW50byB0aGUgZG9jdW1lbnQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2aXNpYmxlUG9zaXRp
b25Gb3JJbmRleCBjb25zdCk6CisgICAgICAgIEFzc2VydCB0aGF0IHRoZSBzaGFkb3cgdHJlZSBo
YXMgYmVlbiBjcmVhdGVkLCBzaW5jZSBlZGl0aW5nCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgc2hv
dWxkIG9ubHkgYmUgbmVlZGVkIGlmIHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZAorICAgICAg
ICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgRW5zdXJlIHRoZSBzaGFk
b3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLgorCisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3du
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVu
dCk6CisgICAgICAgIEVuc3VyZSB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4gY3JlYXRlZCBpbiBj
YXNlIHRoZSBldmVudCB3aWxsIGNoYW5nZQorICAgICAgICB0aGUgdmFsdWUuCisKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAg
ICAgICBPbmx5IHJldHVybiB0aGUgZWxlbWVudCBpZiBpdCdzIGJlZW4gY3JlYXRlZC4KKworICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNv
bnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIGVsZW1lbnQgaGFzIGJlZW4gY3JlYXRlZC4K
KworICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5n
ZWQpOgorICAgICAgICBPbmx5IHRyeSB0byByZS1sYXlvdXQgaWYgdGhlIHNoYWRvdyB0cmVlIGhh
cyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlzRW1wdHlWYWx1ZSBjb25z
dCk6CisgICAgICAgIEF2b2lkIGNyZWF0aW5nIHRoZSBzaGFkb3cgc3VidHJlZS4KKworICAgICAg
ICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICBN
b3ZlIHRoZSBlbGVtZW50IGFzc2VydGlvbiB1cCB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIg
ZnVuY3Rpb25zLgorCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVy
VGV4dEVsZW1lbnQgY29uc3QpOgorICAgICAgICBEb24ndCBhc3NlcnQsIHNpbmNlIHRoaXMgbm93
IGNhbiBsZWdpdGltYXRlbHkgcmV0dXJuIG51bGwuCisKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmRpc2Fi
bGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
cmVhZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RmllbGRJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorICAgICAgICBEb24ndCB1
cGRhdGUgdGhlIHNoYWRvdyB0cmVlIGNvbnRlbnRzIGlmIGl0IGhhc24ndCBiZWVuIGNyZWF0ZWQg
eWV0LgorICAgICAgICBjcmVhdGVTaGFkb3dUcmVlIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmlu
ZyBpdCBjcmVhdGVzIHRoZSBzaGFkb3cKKyAgICAgICAgdHJlZSBjb250ZW50cyByZWZsZWN0aW5n
IHRoZSBjdXJyZW50IHN0YXRlLgorCiAyMDIyLTAyLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5
NTVmNzQ2NmMzYWU3NTQ3NjM0YjQ5NzBmOWU5NmI0NjM4YWQ3NGI1Li4zNTM0MWNiZTdmOTAyMTli
MDA3NTNkNmI4MTE2N2M4Y2I0MDI3ZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIw
MDUsMTQgKzIwMDUsMTcgQEAgdm9pZCBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlKFJlc29sdmVTdHls
ZVR5cGUgdHlwZSkKIAogICAgIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvciBy
ZXBhaW50UmVnaW9uQWNjdW11bGF0b3IocmVuZGVyVmlldygpKTsKIAotICAgIC8vIEZJWE1FOiBE
byB0aGlzIHVwZGF0ZSBwZXIgdHJlZSBzY29wZS4KLSAgICBpZiAoYXV0byogZXh0ZW5zaW9ucyA9
IG1fc3ZnRXh0ZW5zaW9ucy5nZXQoKSkgewotICAgICAgICBhdXRvIGVsZW1lbnRzID0gY29weVRv
VmVjdG9yT2Y8UmVmPFNWR1VzZUVsZW1lbnQ+PihleHRlbnNpb25zLT51c2VFbGVtZW50c1dpdGhQ
ZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSgpKTsKLSAgICAgICAgLy8gV2UgY2FuJ3QgY2xlYXIgbV9z
dmdVc2VFbGVtZW50cyBoZXJlIGJlY2F1c2UgdXBkYXRlU2hhZG93VHJlZSBtYXkgZW5kIHVwIGV4
ZWN1dGluZyBhcmJpdHJhcnkgc2NyaXB0cwotICAgICAgICAvLyB3aGljaCBtYXkgaW5zZXJ0IG5l
dyBTVkcgdXNlIGVsZW1lbnRzIG9yIHJlbW92ZSBleGlzdGluZyBvbmVzIGluc2lkZSBzeW5jIElQ
QyB2aWEgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50LgotICAgICAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBlbGVtZW50cykKLSAgICAgICAgICAgIGVsZW1lbnQtPnVwZGF0ZVNoYWRvd1Ry
ZWUoKTsKLSAgICB9CisgICAgLy8gRklYTUU6IERvIHRoaXMgdXNlciBhZ2VudCBzaGFkb3cgdHJl
ZSB1cGRhdGUgcGVyIHRyZWUgc2NvcGUuCisKKyAgICAvLyBXZSBjYW4ndCBjbGVhciBtX2VsZW1l
bnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlcyBoZXJlCisgICAgLy8gYmVj
YXVzZSBTVkdVc2VFbGVtZW50Ojp1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlIG1heSBlbmQgdXAg
ZXhlY3V0aW5nCisgICAgLy8gYXJiaXRyYXJ5IHNjcmlwdHMgd2hpY2ggbWF5IGluc2VydCBuZXcg
U1ZHIHVzZSBlbGVtZW50cyBvciByZW1vdmUKKyAgICAvLyBleGlzdGluZyBvbmVzIGluc2lkZSBz
eW5jIElQQyB2aWEgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50LgorICAgIC8vCisgICAg
Ly8gSW5zdGVhZCwgaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHVwZGF0ZVVzZXJBZ2VudFNo
YWRvd1RyZWUgdG8KKyAgICAvLyByZW1vdmUgdGhlIGVsZW1lbnQuCisgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmPEVsZW1lbnQ+PihtX2VsZW1lbnRzV2l0aFBlbmRp
bmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlcykpCisgICAgICAgIGVsZW1lbnQtPnVwZGF0ZVVz
ZXJBZ2VudFNoYWRvd1RyZWUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIHN0
eWxlIG9uIG91ciBhbmNlc3RvciBjaGFpbiBiZWZvcmUgcHJvY2VlZGluZywgaG93ZXZlciBkb2lu
ZyBzbyBhdAogICAgIC8vIHRoZSB0aW1lIHRoaXMgY29tbWVudCB3YXMgb3JpZ2luYWxseSB3cml0
dGVuIGNhdXNlZCBzZXZlcmFsIHRlc3RzIHRvIGNyYXNoLgpAQCAtOTA4Niw2ICs5MDg5LDIwIEBA
IHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IERvY3VtZW50OjpzZXNzaW9uSUQoKSBjb25z
dAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmFkZEVsZW1l
bnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYgZWxlbWVudCkK
K3sKKyAgICBBU1NFUlQoJmVsZW1lbnQuZG9jdW1lbnQoKSA9PSB0aGlzKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGVzLmFk
ZChlbGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBEb2N1bWVudDo6cmVtb3ZlRWxlbWVudFdp
dGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZShFbGVtZW50JiBlbGVtZW50KQorewor
ICAgIEFTU0VSVCgmZWxlbWVudC5kb2N1bWVudCgpID09IHRoaXMpOworICAgIG1fZWxlbWVudHNX
aXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGVzLnJlbW92ZShlbGVtZW50KTsKKyAg
ICAvLyBGSVhNRTogQXNzZXJ0IHRoYXQgZWxlbWVudCB3YXMgaW4gbV9lbGVtZW50c1dpdGhQZW5k
aW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZXMgb25jZSByZS1lbnRyYW5jeSB0byB1cGRhdGUg
c3R5bGUgYW5kIGxheW91dCBoYXZlIGJlZW4gcmVtb3ZlZC4KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjdW5kZWYgRE9DVU1FTlRfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggYzFiZWNjZDIxYWIxMzE2YWUwMzA0ZTk3OTM5YzdhMjY2MjQyMzYxMy4uMDU3MzVmNWMy
YjMxOGZmNmNlNTY4NTUxOTJkYmMwMWQ3Yjk0ZDEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTE2NzMsNiArMTY3Myw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3JlYXRlTmV3SWRlbnRpZmll
cigpOwogCisgICAgdm9pZCBhZGRFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVl
VXBkYXRlKEVsZW1lbnQmKTsKKyAgICB2b2lkIHJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJB
Z2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYpOworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBD
b25zdHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRl
ciA9IDEgPDwgMSB9OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KEZyYW1lKiwgY29uc3Qg
U2V0dGluZ3MmLCBjb25zdCBVUkwmLCBEb2N1bWVudENsYXNzZXMgPSB7IH0sIHVuc2lnbmVkIGNv
bnN0cnVjdGlvbkZsYWdzID0gMCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgPSB7
IH0pOwpAQCAtMjI2NCw2ICsyMjY3LDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TW9kYWxDb250YWluZXJPYnNlcnZlcj4gbV9tb2RhbENvbnRhaW5lck9ic2VydmVyOwogCiAgICAg
VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fd2hlbklzVmlzaWJsZUhhbmRsZXJzOworCisgICAg
V2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93
VHJlZVVwZGF0ZXM7CiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVu
dChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjIwOWJlNjJhNzA0NjRmZWM3MzMz
NDVlNjU1MzYzZGNjZmU5ZjU4OC4uNjllYjMzYjUyM2E4OTJhYjhiOGFmZDgyMTExNWIwMDViZjU2
OWQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02NjQsNiArNjY0LDggQEAgcHVibGljOgogICAg
IGJvb2wgaGFzRHVwbGljYXRlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEdXBsaWNh
dGVBdHRyaWJ1dGU7IH07CiAgICAgdm9pZCBzZXRIYXNEdXBsaWNhdGVBdHRyaWJ1dGUoYm9vbCBo
YXNEdXBsaWNhdGVBdHRyaWJ1dGUpIHsgbV9oYXNEdXBsaWNhdGVBdHRyaWJ1dGUgPSBoYXNEdXBs
aWNhdGVBdHRyaWJ1dGU7IH07CiAKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVXNlckFnZW50U2hh
ZG93VHJlZSgpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmLCBDb25zdHJ1Y3Rpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmluZGV4IGNiZjYxMjAwZWU2OTE2
MWNhZmE1NjkxOWU3ZWY5YzFhZmRhMzVjNDYuLmNmN2NjMzFmMzQyZjdiNWE3NDc0NzVlNGNjYTE4
OWJkMTNhNzQxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpCiAgICAgfQogfQogCi12b2lk
IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlu
bmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1
YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CkBAIC0zMzQsNiArMzM0LDkgQEAgdm9p
ZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHZvaWQg
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSgpCiB7CiAgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsK
KwogICAgIGlmICghbV9kYXRlVGltZUVkaXRFbGVtZW50KSB7CiAgICAgICAgIGF1dG8gbm9kZSA9
IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgICAg
IGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5kZXggM2ViNmQ1NWYxY2EzOWYxMTliYzA1Mjc1ZWNh
YzFlMGU1ZTFiMjY5MC4uYjY4NWY4ZTE5ZmZiNDg4NTVmNGUyZmU4MmUzYjEyMWJlNDkzYTczZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBA
IC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRy
ZWUoKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAg
dm9pZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgpIGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9j
dXNMb2dpYygpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cAppbmRleCAwNjY1M2ZkM2NkNTY3NTkxNzFmNWQwNmE2YjUzYmRiZmNiMTE3ZDUxLi5mMTE5ZTgy
YjM3N2RkYjQxZmNkOWU4YjkzYWE3ZmNlZmEwZjVkYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBl
Ojp2YWx1ZUFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUo
ZWxlbWVudCgpLT52YWx1ZSgpKS52YWx1ZSgpOwogfQogCi12b2lkIENvbG9ySW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJv
b2wpCit2b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBB
U1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCmluZGV4IDliNTcwZDA4ODAyMmQ1NGQ3OWZlZjQ1
YjgwMGQ2MDUyNGY5NDkzMTIuLjExNmRhYjExN2I5NzU5YjIzNjE3MzcwZWQ0ODM3OWE4Yzc3YTMz
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKQEAgLTYyLDcgKzYyLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzUmVxdWlyZWQoKSBjb25zdCBmaW5hbDsKICAgICBT
dHJpbmcgZmFsbGJhY2tWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBzYW5pdGl6ZVZh
bHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAg
ICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIHNldFZhbHVlKGNv
bnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBm
aW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZp
bmFsOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggZTgzOGU1Yzg3NGJmYWQ4MjZlMjcx
OGE3MWRlODExYTQ2MWNlZmEwZi4uZWE3ZGZhY2Y2MmI3ODI1NTlkNjVlM2JmYjZiM2QwY2NkZmUy
NTIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0yNjIsMTggKzI2
MiwyMCBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2ws
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiAgICAgZWxlbWVudCgpLT5pbnZhbGlkYXRlU3R5bGVG
b3JTdWJ0cmVlKCk7CiB9CiAKLXZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBGaWxlSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dT
dWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkt
PnNoYWRvd1Jvb3QoKSk7Ci0gICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFw
cGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgZWxl
bWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlw
bGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTogVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVs
ZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOworCisgICAgYXV0byBidXR0b24gPSBlbGVtZW50KCktPm11
bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGVGb3JNdWx0aXBsZShlbGVtZW50
KCktPmRvY3VtZW50KCkpIDogVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+
ZG9jdW1lbnQoKSk7CisgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVu
ZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgYnV0dG9u
KTsKKyAgICBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwogfQogCiB2b2lkIEZpbGVJbnB1dFR5cGU6
OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBB
U1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkpOwogCiAgICAgYXV0byByb290ID0gZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgaWYgKCFyb290KQpAQCAtMjg3LDcgKzI4
OSw2IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKQogewogICAgIGlmIChuYW1lID09IG11bHRpcGxlQXR0cikgewogICAgICAg
ICBpZiAoYXV0byogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKSkgewotICAgICAgICAgICAgQVNT
RVJUKGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSk7CiAgICAgICAgICAgICBpZiAoYXV0byByb290ID0g
ZWxlbWVudC0+dXNlckFnZW50U2hhZG93Um9vdCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFJl
ZlB0ciBidXR0b24gPSBjaGlsZHJlbk9mVHlwZTxVcGxvYWRCdXR0b25FbGVtZW50Pigqcm9vdCku
Zmlyc3QoKSkKICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLT5zZXRWYWx1ZShlbGVtZW50LT5t
dWx0aXBsZSgpID8gZmlsZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCgpIDogZmlsZUJ1
dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5k
ZXggN2IyYzA5NjYxZDU1YTM1NDI5NDQ1NmIxY2JlNjRkODQwZGI1NzFmZi4uOTE1N2IxNzkwMjky
MDBmM2M0MzA4OGNiNmE0YzZiZTU1ZTAwMDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgSWNvbiogaWNv
bigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlu
bmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNo
YWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmlu
YWw7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5h
bDsKICAgICBTdHJpbmcgZGVmYXVsdFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGYxMGM0ODNhNTQ2YzgwOTViMWMyMzkx
YWZlOGQ0YjM3NzA3M2RjYzUuLjQ3YjRiMzk3YTk4OWI5ZmE3MGUzYmFlZmZkNWI2YzhhZjJlMmVl
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTM2LDgg
KzEzNiw4IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAjZW5kaWYKICAgICAsIG1faXNTcGVs
bGNoZWNrRGlzYWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQoZmFsc2UpCiB7Ci0gICAgLy8gbV9p
bnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2Vy
IHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUgYW5k
Ci0gICAgLy8gaXRzIHNoYWRvdyBzdWJ0cmVlLCBqdXN0IHRvIGRlc3Ryb3kgdGhlbSB3aGVuIHRo
ZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0IGJ5IHRoZSBwYXJzZXIgdG8gc29tZXRoaW5nIGVs
c2UgdGhhbiAndGV4dCcuCisgICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hl
biBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vz
c2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUsCisgICAgLy8ganVzdCB0byBkZXN0cm95IHRoZW0gd2hl
biB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2VyIHRvIHNvbWV0aGlu
ZyBlbHNlIHRoYW4gJ3RleHQnLgogICAgIGlmICghY3JlYXRlZEJ5UGFyc2VyKQogICAgICAgICBt
X2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcyk7CiAKQEAgLTE0NywxNCAr
MTQ3LDcgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogUmVmPEhUTUxJbnB1dEVsZW1lbnQ+
IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIpCiB7Ci0gICAgYm9vbCBzaG91bGRDcmVhdGVTaGFkb3dSb290TGF6aWx5ID0gY3JlYXRl
ZEJ5UGFyc2VyOwotICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dEVsZW1lbnQgPSBhZG9w
dFJlZigqbmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0
ZWRCeVBhcnNlcikpOwotICAgIGlmICghc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExhemlseSkgewot
ICAgICAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5tX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0
cmVlKCkpOwotICAgICAgICBpbnB1dEVsZW1lbnQtPmNyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3Qo
KTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQotICAgIHJldHVybiBpbnB1dEVsZW1l
bnQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKIEhUTUxJbWFnZUxvYWRlciYg
SFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQpAQCAtMTY0LDEyICsxNTcsNiBA
QCBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkK
ICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgp
Ci17Ci0gICAgUmVmPElucHV0VHlwZT4gcHJvdGVjdGVkSW5wdXRUeXBlKCptX2lucHV0VHlwZSk7
Ci0gICAgcHJvdGVjdGVkSW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkpOwot
fQotCiBIVE1MSW5wdXRFbGVtZW50Ojp+SFRNTElucHV0RWxlbWVudCgpCiB7CiAgICAgaWYgKG5l
ZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkpCkBAIC0yMTIsNiArMTk5LDExIEBAIFJlZlB0cjxUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmlubmVyVGV4dEVsZW1l
bnQoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJUZXh0RWxlbWVudCgpOwog
fQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50
Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAg
IHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCk7Cit9CisKIEhUTUxFbGVtZW50KiBIVE1MSW5wdXRFbGVtZW50Ojppbm5lckJs
b2NrRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pbm5lckJsb2Nr
RWxlbWVudCgpOwpAQCAtNTgwLDEwICs1NzIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVw
ZGF0ZVR5cGUoKQogICAgIG1faW5wdXRUeXBlLT5kZXRhY2hGcm9tRWxlbWVudCgpOwogCiAgICAg
bV9pbnB1dFR5cGUgPSBXVEZNb3ZlKG5ld1R5cGUpOwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVl
ZHNTaGFkb3dTdWJ0cmVlKCkpIHsKLSAgICAgICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgp
OwotICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmlsaXR5KCk7Ci0gICAgfQorICAgIG1faW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVl
SWZOZWVkZWQoKTsKIAogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAKQEAg
LTczNiwxOSArNzI1LDEyIEBAIGlubGluZSB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmluaXRpYWxp
emVJbnB1dFR5cGUoKQogICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUgPSBhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKTsKICAgICBpZiAodHlwZS5pc051bGwoKSkgewog
ICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcyk7Ci0gICAg
ICAgIEFTU0VSVChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwotICAgICAgICBj
cmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVB
bmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKICAgICAgICAgdXBkYXRlV2ls
bFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1f
aGFzVHlwZSA9IHRydWU7CiAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZSgqdGhp
cywgdHlwZSk7Ci0gICAgaWYgKG1faW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1YnRyZWUoKSkgewot
ICAgICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKLSAgICB9CiAg
ICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICByZWdpc3RlckZvclN1c3Bl
bnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAgICAgcnVuUG9zdFR5cGVVcGRhdGVUYXNrcygpOwpA
QCAtMTU5MSwxOCArMTU3MywyMiBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBI
VE1MSW5wdXRFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpbwogI2VuZGlmCiAg
ICAgaWYgKGlzUmFkaW9CdXR0b24oKSkKICAgICAgICAgdXBkYXRlVmFsaWRpdHkoKTsKKyAgICBp
ZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICBkb2N1bWVudCgp
LmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOwog
ICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9u
Q2FsbGJhY2s7CiB9CiAKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVXNlckFnZW50U2hh
ZG93VHJlZSgpCit7CisgICAgZG9jdW1lbnQoKS5yZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2Vy
QWdlbnRTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hh
ZG93U3VidHJlZUlmTmVlZGVkKCk7Cit9CisKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlkRmlu
aXNoSW5zZXJ0aW5nTm9kZSgpCiB7CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
ZEZpbmlzaEluc2VydGluZ05vZGUoKTsKICAgICBpZiAoaXNJblRyZWVTY29wZSgpICYmICFmb3Jt
KCkpCiAgICAgICAgIGFkZFRvUmFkaW9CdXR0b25Hcm91cCgpOwotI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQotICAgIGlmIChpc0Nvbm5lY3RlZCgpICYmIG1faGFzTm9uRW1wdHlMaXN0KQot
ICAgICAgICBkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBl
LCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA5MzA3MjljOTU2YjRjZmQ0NDQwZmIwODkyODE4OTVj
NTBjNmJkMzBlLi5jNjRkYTQxZDExMmNlZGFmYWI4MmI3NjI3ZDE2M2ViM2UyNTMxMzhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1
YmxpYzoKICAgICBIVE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgpIGNvbnN0OwogICAgIAog
ICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQo
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBp
bm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAg
ICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZp
bmFsOwogCiAgICAgSFRNTEVsZW1lbnQqIGlubmVyQmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0z
NTYsNiArMzU3LDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyByZXN1bHRGb3JEaWFsb2dTdWJt
aXQoKSBjb25zdCBmaW5hbDsKIAorICAgIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigp
ICYmIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJs
ZSgpOyB9CisKKyAgICB2b2lkIHVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUoKSBmaW5hbDsKKwog
cHJvdGVjdGVkOgogICAgIEhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC0z
NzEsOCArMzc2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVt
b3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5h
bDsKIAotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eSgpOwotCiAgICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
aXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CkBAIC0zODQs
OCArMzg3LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBj
b25zdCBmaW5hbDsKIAotICAgIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAhaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9
Ci0KICAgICBib29sIGNhblRyaWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBpc1RleHRGaWVsZCgpOyB9CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwCmluZGV4IDY2OGRkN2Y5ZGZkNmE1ODdiOTgyYWI5NTQ0YmY5NjFlNTA2MzJl
MjUuLmFhNTJmMDBkYjVkYzA2ZGQzMDQ4MTZlMTMzMTU1YTczOWE0YTEyM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzQ1LDYgKzM0NSwxMSBA
QCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50
Ojppbm5lclRleHRFbGVtZW50KCkgY29ucwogICAgIHJldHVybiBjaGlsZHJlbk9mVHlwZTxUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+KCpyb290KS5maXJzdCgpOwogfQogCitSZWZQdHI8VGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRF
bGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIHJldHVybiBpbm5l
clRleHRFbGVtZW50KCk7Cit9CisKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cmVuZGVyZXJX
aWxsQmVEZXN0cm95ZWQoKQogewogICAgIHVwZGF0ZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IDNiZTVhZTk2YzIzOWM1NmRhMjkyMmQ4YjVi
YWQ4OWY1ZTYwZWIyZjMuLjAwNzdmMDI1MzI2ZDc4ZjAyMWRhYzBjYjI3MWQ5Yzk2OGZjY2JhZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC01Nyw2ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25z
dDsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENy
ZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgZmluYWw7CiAgICAgUmVuZGVyU3R5bGUgY3Jl
YXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsKICAgICB2b2lkIGNv
cHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCmluZGV4IDk2NGNjMWEyMWQwMzUxZTA1OTVkN2I3ZmViYzg5ZjYyMWZjMGYxOWIuLjc5
MGRkMGNmNGM4NmVkOWRmYjE4NmIwMjk3YWZlOGQ0YTk5MDU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xNTcsNyAr
MTU3LDkgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2
ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVy
RXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50KQogICAgICAg
ICByZXR1cm47Ci0gICAgaW5uZXJUZXh0RWxlbWVudCgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2
ZW50KTsKKworICAgIGlmIChhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKSkKKyAg
ICAgICAgaW5uZXJUZXh0LT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogc3RhdGlj
IGJvb2wgaXNOb3RMaW5lQnJlYWsoVUNoYXIgY2gpIHsgcmV0dXJuIGNoICE9IG5ld2xpbmVDaGFy
YWN0ZXIgJiYgY2ggIT0gY2FycmlhZ2VSZXR1cm47IH0KQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lk
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQs
IGludCBlbmQsIFRleHRGaWVsZAogICAgIGVuZCA9IHN0ZDo6bWF4KGVuZCwgMCk7CiAgICAgc3Rh
cnQgPSBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwgMCksIGVuZCk7CiAKLSAgICBhdXRvIGlubmVy
VGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKKyAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4
dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogICAgIGJvb2wgaGFzRm9j
dXMgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgPT0gdGhpczsKICAgICBpZiAoIWhhc0Zv
Y3VzICYmIGlubmVyVGV4dCkgewogICAgICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKQEAgLTM2
OSw2ICszNzEsNyBAQCBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlz
aWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcAogCiBWaXNpYmxlUG9zaXRpb24g
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBp
bmRleCkgY29uc3QKIHsKKyAgICBBU1NFUlQoaW5uZXJUZXh0RWxlbWVudCgpKTsKICAgICBWaXNp
YmxlUG9zaXRpb24gcG9zaXRpb24gPSBwb3NpdGlvbkZvckluZGV4KGlubmVyVGV4dEVsZW1lbnQo
KS5nZXQoKSwgaW5kZXgpOwogICAgIEFTU0VSVChpbmRleEZvclZpc2libGVQb3NpdGlvbihwb3Np
dGlvbikgPT0gaW5kZXgpOwogICAgIHJldHVybiBwb3NpdGlvbjsKQEAgLTU4Nyw3ICs1OTAsNyBA
QCBzdGF0aWMgU3RyaW5nIGlubmVyVGV4dFZhbHVlRnJvbShUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQmIGlubmVyVGV4dCkKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElu
bmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgTGF5b3V0RGlzYWxsb3dl
ZFNjb3BlIGxheW91dERpc2FsbG93ZWRTY29wZShMYXlvdXREaXNhbGxvd2VkU2NvcGU6OlJlYXNv
bjo6UGVyZm9ybWFuY2VPcHRpbWl6YXRpb24pOwotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJU
ZXh0RWxlbWVudCgpOworICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0
aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFpbm5lclRleHQpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5oCmluZGV4IDk5ODZhYzU1NDA4ZWJhNzAzYTU3NjIyNTE4MGZmMWRmYTQ2YzllY2Iu
LmEwMzFlMTQ2OGVjMWM4MjRlYTA1Y2YxNWZjZDEzMjkzMzM2ZGMyMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTg5LDYgKzg5
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAg
ICAgdmlydHVhbCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRF
bGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFRleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVk
KCkgPSAwOwogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmKSA9IDA7CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCBz
aG91bGRGaXJlU2VsZWN0RXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDdh
MDUwNTAyYjNlYWJlZDVjZDE3MWZlZjhmM2Y2YjUxOTZlYTMzMmIuLjc0ZTBkZGViMThjMGI2MDIw
ZTg1YzkxNDIxYTE0YjYyZmI3ZGQ5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAg
LTU2MSw3ICs1NjEsNyBAQCB2b2lkIElucHV0VHlwZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5k
ZWZhdWx0Qmx1cigpOwogfQogCi12b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogfQogCkBAIC0xMTE5LDEwICsxMTE5LDI2IEBAIFJl
ZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxl
bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hh
ZG93U3VidHJlZUlmTmVlZGVkKCkKK3sKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gaW5uZXJUZXh0RWxlbWVudCgpOworfQorCiBTdHJpbmcgSW5wdXRUeXBl
OjpyZXN1bHRGb3JEaWFsb2dTdWJtaXQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkp
OwogICAgIHJldHVybiBlbGVtZW50KCktPnZhbHVlKCk7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIGlmIChtX2hhc0NyZWF0ZWRTaGFk
b3dTdWJ0cmVlIHx8ICFuZWVkc1NoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKKyAgICBlbGVtZW50KCktPmVuc3VyZVVzZXJB
Z2VudFNoYWRvd1Jvb3QoKTsKKyAgICBtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlID0gdHJ1ZTsK
KyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDA0NWZmNDU3ZmIzMmVlNmFiOTEwNWI1M2FhMjBk
Njc4Yzg5MzFjZWUuLjgxMmQ1ODhiNmVkOGQwMzg5MmM0YmIzZDNkY2YwZWYxMGY2ZTY4ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdDsKICAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29u
c3Q7CiAgICAgYm9vbCBuZWVkc1NoYWRvd1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiAhbm9uU2hh
ZG93Um9vdFR5cGVzLmNvbnRhaW5zKG1fdHlwZSk7IH0KKyAgICBib29sIGhhc0NyZWF0ZWRTaGFk
b3dTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDcmVhdGVkU2hhZG93U3VidHJlZTsgfQog
CiAgICAgLy8gRm9ybSB2YWx1ZSBmdW5jdGlvbnMuCiAKQEAgLTMwNiw3ICszMDcsOCBAQCBwdWJs
aWM6CiAKICAgICAvLyBTaGFkb3cgdHJlZSBoYW5kbGluZy4KIAotICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJv
b2wpOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CisgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNo
YWRvd1N1YnRyZWUoKTsKIAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CkBAIC0zMjMsNiArMzI1LDcgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQq
IGRhdGFMaXN0QnV0dG9uRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRp
ZgorICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1l
bnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogCiAgICAgLy8gTWlzY2VsbGFuZW91
cyBmdW5jdGlvbnMuCiAKQEAgLTQxMyw2ICs0MTYsNyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IGFwcGx5U3RlcChpbnQgY291bnQsIEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxk
RXZlbnRCZWhhdmlvcik7CiAKICAgICBjb25zdCBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1faGFz
Q3JlYXRlZFNoYWRvd1N1YnRyZWUgeyBmYWxzZSB9OwogICAgIC8vIG1fZWxlbWVudCBpcyBudWxs
IGlmIHRoaXMgSW5wdXRUeXBlIGlzIG5vIGxvbmdlciBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVu
dCAoZWl0aGVyIHRoZSBlbGVtZW50IGRpZWQgb3IgY2hhbmdlZCBpbnB1dCB0eXBlKS4KICAgICBX
ZWFrUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG1fZWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDgwOWQ1ODljZjNkODcxMmViYzcxYzMxMzBjNDQzMmRk
ZTgxNWU5OWEuLmY5Mjk2N2M0NDE2M2UwZjA3NDU5NDljMWI4YjQ5MzUxMjRmMGUzMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0xMzMsNiArMTMzLDEwIEBAIFN0
ZXBSYW5nZSBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBh
bnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURv
d25FdmVudChNb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwor
ICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMTUxLDEwICsxNTUsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91
c2VEb3duRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCYgZXZlbnQp
CiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dT
dWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5oYW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNl
bGlmIEVOQUJMRShUT1VDSF9TTElERVIpCi0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBp
ZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xODMsMTIgKzE5MiwxOCBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50
SGFuZGxlcigpIGNvbnN0CiAKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFu
Z2VkKCkKIHsKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJl
dHVybjsKICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLmhvc3REaXNhYmxlZFN0YXRlQ2hh
bmdlZCgpOwogfQogCiBhdXRvIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5
Ym9hcmRFdmVudCYgZXZlbnQpIC0+IFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyCiB7CiAgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkp
CisgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOworCiAgICAg
aWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBT
aG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOwogCkBAIC0yNDEsNyArMjU2LDcgQEAgYXV0
byBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50
KSAtPiBTaG91bGRDYWxsQmFzZUUKICAgICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRs
ZXI6OlllczsKIH0KIAotdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBSYW5nZUlucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3Vi
dHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKQEAgLTI1OSw2ICsyNzQsMTAgQEAgdm9p
ZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib28KIEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVy
VHJhY2tFbGVtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlm
ICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
ICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCkpOwogICAgIEFTU0VS
VChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gY29u
dGFpbmVyCiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJz
dENoaWxkKCktPmlzSFRNTEVsZW1lbnQoKSk7CkBAIC0yNzcsNiArMjk2LDcgQEAgSFRNTEVsZW1l
bnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdAogCiBTbGlkZXJU
aHVtYkVsZW1lbnQmIFJhbmdlSW5wdXRUeXBlOjp0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpIGNv
bnN0CiB7CisgICAgQVNTRVJUKGhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VS
VChzbGlkZXJUcmFja0VsZW1lbnQoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gdGh1bWIKICAgICBBU1NF
UlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsK
IApAQCAtMzIyLDcgKzM0Miw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5o
YXNEaXJ0eVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0VmFsdWUoZWxlbWVu
dC0+dmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQo
KS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgICAgICBpZiAoaGFzQ3JlYXRlZFNoYWRvd1N1
YnRyZWUoKSkKKyAgICAgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRp
b25Gcm9tVmFsdWUoKTsKICAgICB9CiAgICAgSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKG5h
bWUpOwogfQpAQCAtMzM5LDcgKzM2MCw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVl
KGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFCiAgICAg
ICAgIGVsZW1lbnQoKS0+c2V0VGV4dEFzT2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudCh2YWx1
ZSk7CiAgICAgfQogCi0gICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZy
b21WYWx1ZSgpOworICAgIGlmIChoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICB0
eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CiB9CiAKIFN0
cmluZyBSYW5nZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CkBAIC0zNjgsNyArMzkw
LDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpCiB7CiAg
ICAgbV90aWNrTWFya1ZhbHVlc0RpcnR5ID0gdHJ1ZTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+
IHNsaWRlclRyYWNrRWxlbWVudCA9IHRoaXMtPnNsaWRlclRyYWNrRWxlbWVudCgpOwotICAgIGlm
IChzbGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKHNsaWRlclRyYWNrRWxl
bWVudCAmJiBzbGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHNsaWRlclRy
YWNrRWxlbWVudC0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IDI5NjRjNjRlOWQzZGY0MGZlOTViYjU3MmI5MTc2
M2Q0M2ZlYzdjYmIuLjEwZmQzYTcyZTdkNmQwYjAxN2VmNmJiMmI0Yjk1NTA0OGMwMTU5YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmKSBmaW5hbDsKICAg
ICBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlciBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRF
dmVudCYpIGZpbmFsOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1i
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIFN0cmlu
ZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWNjZXNz
S2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCBmNzBiMTJlMjQzN2ZmYzFhODY0NWVhMDM5OGFkOTQw
ZDUyNTAyNjU1Li42ZTViMWU3ZmJlNzJiYmQzMWJiOTg0NTdlMDJlY2Q0YzZhNDdkZTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBA
QCBib29sIFNlYXJjaElucHV0VHlwZTo6bmVlZHNDb250YWluZXIoKSBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sIGlzSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmxlKQordm9pZCBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQog
ewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKCFtX3Jlc3Vs
dHNCdXR0b24pOwogICAgIEFTU0VSVCghbV9jYW5jZWxCdXR0b24pOwogCi0gICAgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmlsaXR5KGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsKKyAgICBUZXh0RmllbGRJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNv
bnRhaW5lciA9IGNvbnRhaW5lckVsZW1lbnQoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHRl
eHRXcmFwcGVyID0gaW5uZXJCbG9ja0VsZW1lbnQoKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCmluZGV4IDIyZjY4YzkyNWQ4Njc5NjQx
MzBlOGVmMzE3OTdiYzkwZWRiOGVmNjEuLjIzYTYyOTc0ZTIyZGE3NTdkZTIyZDk3YTI4Mzg3MDc3
NDg4MWVmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAtNTEsNyAr
NTEsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBj
b25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRl
eHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOwog
ICAgIEhUTUxFbGVtZW50KiByZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAg
IEhUTUxFbGVtZW50KiBjYW5jZWxCdXR0b25FbGVtZW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggNWU4Nzc4YmJkOTAwOWE1
ZGFiNzgxZTJkZmUzNzg4ZTkwOTdmYWM4Yy4uMzcwNTZlNDVlYjFhNzVjMTRmZDQzZTY1NmYxMzE0
OWZhNTFmMDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cApAQCAtMTA4LDcgKzEwOCwxMSBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNNb3VzZUZv
Y3VzYWJsZSgpIGNvbnN0CiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlKCkg
Y29uc3QKIHsKICAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKLSAgICBB
U1NFUlQoaW5uZXJUZXh0KTsKKyAgICBpZiAoIWlubmVyVGV4dCkgeworICAgICAgICAvLyBTaW5j
ZSB3ZSBhbHdheXMgY3JlYXRlIHRoZSBzaGFkb3cgc3VidHJlZSBpZiBhIHZhbHVlIGlzIHNldCwg
d2Uga25vdworICAgICAgICAvLyB0aGF0IHRoZSB2YWx1ZSBpcyBlbXB0eS4KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogCiAgICAgZm9yIChUZXh0KiB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJz
YWw6OmZpcnN0V2l0aGluKCppbm5lclRleHQpOyB0ZXh0OyB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJz
YWw6Om5leHQoKnRleHQsIGlubmVyVGV4dC5nZXQoKSkpIHsKICAgICAgICAgaWYgKHRleHQtPmxl
bmd0aCgpKQpAQCAtMjIxLDYgKzIyNSw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5k
bGVLZXlkb3duRXZlbnRGb3JTcGluQnV0dG9uKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKKyAgICBB
U1NFUlQoZWxlbWVudCgpKTsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikgewogICAgICAg
ICBtX2lubmVyU3BpbkJ1dHRvbi0+Zm9yd2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2
ZW50LmRlZmF1bHRIYW5kbGVkKCkpCkBAIC0yMzEsMTAgKzIzNyw4IEBAIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIGJvb2wgaXNCbHVyRXZl
bnQgPSBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudDsKICAgICBpZiAoaXNG
b2N1c0V2ZW50IHx8IGlzQmx1ckV2ZW50KQogICAgICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNo
YW5nZWQoKTsKLSAgICBpZiAoZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8
IGlzQmx1ckV2ZW50KSB7Ci0gICAgICAgIEFTU0VSVChlbGVtZW50KCkpOworICAgIGlmIChldmVu
dC5pc01vdXNlRXZlbnQoKSB8fCBpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAg
IGVsZW1lbnQoKS0+Zm9yd2FyZEV2ZW50KGV2ZW50KTsKLSAgICB9CiB9CiAKIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjplbGVtZW50RGlkQmx1cigpCkBAIC0zMTYsMTEgKzMyMCwxMiBAQCBib29s
IFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCkgY29uc3QK
ICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnNob3VsZEhhdmVDYXBzTG9ja0lu
ZGljYXRvcigqZWxlbWVudCgpKTsKIH0KIAotdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCBp
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwog
ICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3Qo
KSk7CisgICAgQVNTRVJUKCFlbGVtZW50KCktPnNoYWRvd1Jvb3QoKS0+aGFzQ2hpbGROb2Rlcygp
KTsKIAogICAgIEFTU0VSVCghbV9pbm5lclRleHQpOwogICAgIEFTU0VSVCghbV9pbm5lckJsb2Nr
KTsKQEAgLTMzMSw5ICszMzYsMTcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKICAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7CiAgICAgYm9vbCBzaG91bGRI
YXZlU3BpbkJ1dHRvbiA9IHRoaXMtPnNob3VsZEhhdmVTcGluQnV0dG9uKCk7CiAgICAgYm9vbCBz
aG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IgPSB0aGlzLT5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRp
Y2F0b3IoKTsKLSAgICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRv
biB8fCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IgfHwgbmVlZHNDb250YWluZXIoKTsKKyAg
ICBib29sIHNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbiA9IHRoaXMtPnNob3VsZERyYXdBdXRvRmls
bEJ1dHRvbigpOworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGJvb2wgaGFzRGF0
YUxpc3QgPSBlbGVtZW50KCktPmxpc3QoKTsKKyNlbmRpZgorICAgIGJvb2wgY3JlYXRlc0NvbnRh
aW5lciA9IHNob3VsZEhhdmVTcGluQnV0dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRv
ciB8fCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24KKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKKyAgICAgICAgfHwgaGFzRGF0YUxpc3QKKyNlbmRpZgorICAgICAgICB8fCBuZWVkc0NvbnRh
aW5lcigpOwogCi0gICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCwgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOworICAgIG1faW5u
ZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGVs
ZW1lbnQoKS0+aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CiAKICAgICBpZiAoIWNyZWF0
ZXNDb250YWluZXIpIHsKICAgICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCkt
PmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
Km1faW5uZXJUZXh0KTsKQEAgLTM1OCw3ICszNzEsMTIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkKIAogICAgICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCAqbV9jYXBzTG9ja0luZGljYXRvcik7CiAgICAgfQor
CiAgICAgdXBkYXRlQXV0b0ZpbGxCdXR0b24oKTsKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKQorICAgIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKTsKKyNlbmRpZgogfQogCiBIVE1MRWxl
bWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjpjb250YWluZXJFbGVtZW50KCkgY29uc3QKQEAgLTM3
Myw3ICszOTEsNiBAQCBIVE1MRWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lckJsb2Nr
RWxlbWVudCgpIGNvbnN0CiAKIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IFRl
eHRGaWVsZElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KG1faW5uZXJUZXh0KTsKICAgICByZXR1cm4gbV9pbm5lclRleHQ7CiB9CiAKQEAgLTQyNSw2ICs0
NDIsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRT
dGF0ZUNoYW5nZWQoKQogeworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lu
bmVyU3BpbkJ1dHRvbi0+cmVsZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2
ZUNoYW5nZWQoKTsKQEAgLTQzMyw2ICs0NTMsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6
ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6cmVhZE9u
bHlTdGF0ZUNoYW5nZWQoKQogeworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBt
X2lubmVyU3BpbkJ1dHRvbi0+cmVsZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5
SGF2ZUNoYW5nZWQoKTsKQEAgLTYxNiw5ICs2MzksMTQgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5
cGU6OnNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRlKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisK
KyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGlmICghc3VwcG9ydHNQbGFjZWhvbGRlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgQVNT
RVJUKGVsZW1lbnQoKSk7CisKICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gZWxlbWVudCgp
LT5wbGFjZWhvbGRlcigpOwogICAgIGlmIChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGlmIChtX3BsYWNlaG9sZGVyKSB7CkBAIC04MTYsMTMgKzg0NCwxNyBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxCdXR0b24oQXV0b0ZpbGxCdXR0b25UeXBl
IGF1dG9GaWxsQnV0dG9uVAogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0Zp
bGxCdXR0b24oKQogeworICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVh
dGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBjYXBzTG9ja1N0YXRl
TWF5SGF2ZUNoYW5nZWQoKTsKIAogICAgIGlmIChzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKSkg
ewogICAgICAgICBpZiAoIW1fY29udGFpbmVyKQogICAgICAgICAgICAgY3JlYXRlQ29udGFpbmVy
KCk7CiAKLSAgICAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgICAgIEF1dG9GaWxsQnV0dG9u
VHlwZSBhdXRvRmlsbEJ1dHRvblR5cGUgPSBlbGVtZW50KCktPmF1dG9GaWxsQnV0dG9uVHlwZSgp
OwogICAgICAgICBpZiAoIW1fYXV0b0ZpbGxCdXR0b24pCiAgICAgICAgICAgICBjcmVhdGVBdXRv
RmlsbEJ1dHRvbihhdXRvRmlsbEJ1dHRvblR5cGUpOwpAQCAtODQ2LDYgKzg3OCw5IEBAIHZvaWQg
VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiAKIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWhhc0Ny
ZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY2FjaGVkU3Vn
Z2VzdGlvbnMgPSB7IH07CiAKICAgICBpZiAoIW1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IDVhMjQzMjc2NWYx
Y2Q2OGE0NjFhODg1MzUzMjU4Mjg1ZmU0OTlmNDkuLjRlMWJiMTU0YzVhN2I1NjFjYjU0NGZlMmQ2
ZmZiODdmMDJhYzllM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
aApAQCAtNzAsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlc3Ryb3lTaGFk
b3dTdWJ0cmVlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmlu
ZGV4IDg2MzJmMDJmNGJmNmJkNWMyMDE3NWYzMTM2MzM1NjEzMmNhYWY0ZWIuLjg0MGU0ZDk4YzAz
YTIyM2U3Mjg5YWRjMWY2MjBiNzk2MWQxZDM1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC00OCwxMCArNDgsNyBAQCBTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9
CiAKLVNWR0RvY3VtZW50RXh0ZW5zaW9uczo6flNWR0RvY3VtZW50RXh0ZW5zaW9ucygpCi17Ci0g
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX3VzZUVsZW1lbnRz
V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlLmNvbXB1dGVzRW1wdHkoKSk7Ci19CitTVkdEb2N1
bWVudEV4dGVuc2lvbnM6On5TVkdEb2N1bWVudEV4dGVuc2lvbnMoKSA9IGRlZmF1bHQ7CiAKIHZv
aWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRUaW1lQ29udGFpbmVyKFNWR1NWR0VsZW1lbnQm
IGVsZW1lbnQpCiB7CkBAIC05MCwyMCArODcsNiBAQCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ciogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZXNvdXJjZUJ5SWQoY29uc3QgQXRvbVN0cmluZwog
ICAgIHJldHVybiBtX3Jlc291cmNlcy5nZXQoaWQpOwogfQogCi0KLXZvaWQgU1ZHRG9jdW1lbnRF
eHRlbnNpb25zOjphZGRVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKFNWR1Vz
ZUVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX3VzZUVsZW1lbnRzV2l0
aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlLmFkZChlbGVtZW50KTsKLSAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9p
ZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRv
d1RyZWVVcGRhdGUoU1ZHVXNlRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBtX3VzZUVsZW1lbnRz
V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlLnJlbW92ZShlbGVtZW50KTsKLSAgICAvLyBGSVhN
RTogQXNzZXJ0IHRoYXQgZWxlbWVudCB3YXMgaW4gbV9zdmdVc2VFbGVtZW50cyBvbmNlIHJlLWVu
dHJhbmN5IHRvIHVwZGF0ZSBzdHlsZSBhbmQgbGF5b3V0IGhhdmUgYmVlbiByZW1vdmVkLgotfQot
Ci0KIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpzdGFydEFuaW1hdGlvbnMoKQogewogICAg
IC8vIEZJWE1FOiBFdmVudHVhbGx5IGV2ZXJ5ICJUaW1lIENvbnRhaW5lciIgd2lsbCBuZWVkIGEg
d2F5IHRvIGxhdGNoIG9uIHRvIHNvbWUgZ2xvYmFsIHRpbWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKaW5kZXggZGMyODY5ZWE0NjA2MzgxZGU0ZjJkODkwNjRi
MjUxNmRlYTZjYjVmMC4uOWJiZDc3YmJjYzUzYjU4ZjhkOTA1MTZjZGJjMTM5YTNiZGQxZmVkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaApAQCAtNDMsNyAr
NDMsNyBAQCBjbGFzcyBTVkdEb2N1bWVudEV4dGVuc2lvbnMgewogcHVibGljOgogICAgIGV4cGxp
Y2l0IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudCYpOwogICAgIH5TVkdEb2N1bWVudEV4
dGVuc2lvbnMoKTsKLSAgICAKKwogICAgIHZvaWQgYWRkVGltZUNvbnRhaW5lcihTVkdTVkdFbGVt
ZW50Jik7CiAgICAgdm9pZCByZW1vdmVUaW1lQ29udGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKIApA
QCAtNTEsMTAgKzUxLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UoY29uc3Qg
QXRvbVN0cmluZyYgaWQpOwogICAgIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiByZXNvdXJj
ZUJ5SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0OwogCi0gICAgdm9pZCBhZGRVc2VFbGVt
ZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKFNWR1VzZUVsZW1lbnQmKTsKLSAgICB2b2lk
IHJlbW92ZVVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoU1ZHVXNlRWxlbWVu
dCYpOwotICAgIGNvbnN0IFdlYWtIYXNoU2V0PFNWR1VzZUVsZW1lbnQ+JiB1c2VFbGVtZW50c1dp
dGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlRWxlbWVudHNX
aXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGU7IH0KLQogICAgIHZvaWQgc3RhcnRBbmltYXRpb25z
KCk7CiAgICAgdm9pZCBwYXVzZUFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHVucGF1c2VBbmltYXRp
b25zKCk7CkBAIC04Niw3ICs4Miw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNW
R1Jlc291cmNlc0NhY2hlPiBtX3Jlc291cmNlc0NhY2hlOwogCiAgICAgVmVjdG9yPFJlZjxTVkdF
bGVtZW50Pj4gbV9yZWJ1aWxkRWxlbWVudHM7Ci0gICAgV2Vha0hhc2hTZXQ8U1ZHVXNlRWxlbWVu
dD4gbV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZTsKICAgICBib29sIG1f
YXJlQW5pbWF0aW9uc1BhdXNlZDsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCmluZGV4IDA1NDdjY2E5ZDI2ZmJkMGYzOTU5NTNhYWE0OWVkYmE1MjIyMDY0MmQuLmI5
ZWRlZjYzMWU2NmU2MGZmNThjNzUyMzQ5ODFlMjE0NTMwZTRmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBOb2RlOjpJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBTVkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRp
b25UeQogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0
aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwogICAgIGlmIChpbnNlcnRpb25UeXBlLmNv
bm5lY3RlZFRvRG9jdW1lbnQpIHsKICAgICAgICAgaWYgKG1fc2hhZG93VHJlZU5lZWRzVXBkYXRl
KQotICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkVXNlRWxl
bWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CisgICAgICAgICAgICBkb2N1
bWVudCgpLmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoKnRo
aXMpOwogICAgICAgICBpbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAgICAgICAvLyBGSVhNRTog
TW92ZSBiYWNrIHRoZSBjYWxsIHRvIHVwZGF0ZUV4dGVybmFsRG9jdW1lbnQoKSBoZXJlIG9uY2Ug
bm90aWZ5RmluaXNoZWQgaXMgbWFkZSBhbHdheXMgYXN5bmMuCiAgICAgICAgIHJldHVybiBJbnNl
cnRlZEludG9BbmNlc3RvclJlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7CkBAIC0x
MTksNyArMTE5LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJl
bW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJgogICAgIC8vIGFuZCBTVkdVc2VF
bGVtZW50Ojp1cGRhdGVFeHRlcm5hbERvY3VtZW50IHdoaWNoIGNhbGxzIGludmFsaWRhdGVTaGFk
b3dUcmVlKCkuCiAgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkg
ewogICAgICAgICBpZiAobV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUpCi0gICAgICAgICAgICBkb2N1
bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVVc2VFbGVtZW50V2l0aFBlbmRpbmdT
aGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkucmVtb3ZlRWxl
bWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CiAgICAgfQog
ICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwg
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3Rl
ZEZyb21Eb2N1bWVudCkgewpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6
YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgIGludmFsaWRhdGVTaGFkb3dUcmVlKCk7CiB9CiAK
LXZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSgpCit2b2lkIFNWR1VzZUVsZW1l
bnQ6OnVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUoKQogewogICAgIG1fc2hhZG93VHJlZU5lZWRz
VXBkYXRlID0gZmFsc2U7CiAKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6
OnVwZGF0ZVNoYWRvd1RyZWUoKQogCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVtb3ZlVXNlRWxl
bWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CisgICAgZG9jdW1lbnQoKS5y
ZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsK
IAogICAgIFN0cmluZyB0YXJnZXRJRDsKICAgICBhdXRvKiB0YXJnZXQgPSBmaW5kVGFyZ2V0KCZ0
YXJnZXRJRCk7CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjppbnZhbGlk
YXRlU2hhZG93VHJlZSgpCiAgICAgaW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3VidHJl
ZSgpOwogICAgIGludmFsaWRhdGVEZXBlbmRlbnRTaGFkb3dUcmVlcygpOwogICAgIGlmIChpc0Nv
bm5lY3RlZCgpKQotICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRV
c2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKKyAgICAgICAgZG9j
dW1lbnQoKS5hZGRFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKCp0
aGlzKTsKIH0KIAogdm9pZCBTVkdVc2VFbGVtZW50OjppbnZhbGlkYXRlRGVwZW5kZW50U2hhZG93
VHJlZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKaW5kZXggNjllZmFmZmE5NDBmMDIw
ODkxNTU4NjA3NWM5MTU1MjhkMWVjYzQ3OS4uYzQyZDhlNTMyZTZhMjFjNjZkZDc1MjUzZmI3MTgy
NTEyMDBlMjc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC0zOCw4ICszOCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdVc2VFbGVtZW50KCk7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGVTaGFkb3dUcmVlKCk7Ci0gICAgYm9vbCBzaGFkb3dUcmVlTmVlZHNVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZTsgfQotICAgIHZvaWQgdXBkYXRl
U2hhZG93VHJlZSgpOworICAgIHZvaWQgdXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSgpIGZpbmFs
OwogCiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXJDbGlwQ2hpbGQoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGY4Y2ViZGQ2MzBhODcwMzMxM2NhODU0NzBmYjYyMTc4Mjc2ZGRlMmMuLmY2NWY1OGRlZDI4
NWJiYmQxNTM3YmRiYmYxNjA4ZTZhODQ4ZTAyODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
Mi0wMi0yNSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgaW5wdXQgZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBBZGl0eWEgS2VlcnRoaS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvbGF6
eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHN1cHBvcnRzVHlwZSk6CisgICAgICAgIChtYWtlQW5kQXBwZW5kSW5wdXQpOgorCiAyMDIy
LTAyLTI1ICBSb2JlcnQgSmVubmVyICA8SmVubmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1h
YyB3azEgXSA3WCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BvaW50ZXJldmVudHMv
cG9pbnRlcmV2ZW50IChsYXlvdXQtdGVzdHMpIGFyZSBmbGFreSB0ZXh0IGZhaWx1cmVzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24t
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1j
cmVhdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjJjYzQ0MGFlNGQxMDYzYmM0Nzgw
MjI0ODhhNjRjMjkzMWRjY2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ibGF6eS1zaGFkb3ctdHJl
ZS1jcmVhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcnVuKHsgdXNlUGFyc2VyOiB0cnVl
IH0pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenkt
c2hhZG93LXRyZWUtY3JlYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MjhhMGQ5YjllNGY3OWY0NDRh
ZDkwNDVlZDNjOTI1OWViMGFjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uaHRtbApAQCAtMCwwICsxLDYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ibGF6eS1zaGFkb3ctdHJlZS1jcmVh
dGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcnVuKHsgdXNlUGFyc2VyOiBmYWxzZSB9KTsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRv
dy10cmVlLWNyZWF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10
cmVlLWNyZWF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliOGZiOWY5ZmM5Y2Y1YTUzM2MwNWJmMWQ3NmIw
OTMxNTM3N2Q5NDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xh
enktc2hhZG93LXRyZWUtY3JlYXRpb24uanMKQEAgLTAsMCArMSw1NyBAQAorY29uc3QgdHlwZXMg
PSB7CisgICAgImNvbG9yIjogeyB2YWx1ZTogIiMwMDgwMDAiIH0sCisgICAgImRhdGUiOiB7IHZh
bHVlOiAiMjAyMi0wMS0wMSIgfSwKKyAgICAiZGF0ZXRpbWUtbG9jYWwiOiB7IHZhbHVlOiAiMjAy
Mi0wMS0wMSIgfSwKKyAgICAiZW1haWwiOiB7IHZhbHVlOiAiaGVsbG9AZXhhbXBsZS5jb20iIH0s
CisgICAgImZpbGUiOiB7IH0sCisgICAgIm1vbnRoIjogeyB2YWx1ZTogIjIwMjItMDEiIH0sCisg
ICAgIm51bWJlciI6IHsgdmFsdWU6ICIxMjMiIH0sCisgICAgInBhc3N3b3JkIjogeyB9LAorICAg
ICJyYW5nZSI6IHsgdmFsdWU6ICI3NSIgfSwKKyAgICAic2VhcmNoIjogeyB2YWx1ZTogImFiYyIg
fSwKKyAgICAidGVsZXBob25lIjogeyB2YWx1ZTogIis2MTMwMDAwMDAwMCIgfSwKKyAgICAidGV4
dCI6IHsgdmFsdWU6ICJhYmMiIH0sCisgICAgInRpbWUiOiB7IHZhbHVlOiAiMTA6MDAiIH0sCisg
ICAgInVybCI6IHsgdmFsdWU6ICJodHRwczovL2V4YW1wbGUuY29tLyIgfSwKKyAgICAid2VlayI6
IHsgdmFsdWU6ICIyMDIyLVcxIiB9LAorfTsKKworZnVuY3Rpb24gc3VwcG9ydHNUeXBlKHR5cGVO
YW1lKSB7CisgICAgbGV0IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAg
IGUudHlwZSA9IHR5cGVOYW1lOworICAgIHJldHVybiBlLnR5cGUgPT0gdHlwZU5hbWU7Cit9CisK
K2Z1bmN0aW9uIG1ha2VBbmRBcHBlbmRJbnB1dChvcHRpb25zLCB0eXBlTmFtZSwgYXR0cmlidXRl
cyA9IHsgfSkgeworICAgIGxldCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNwYW4pOworCisgICAgaWYgKG9wdGlvbnMudXNl
UGFyc2VyKSB7CisgICAgICAgIGxldCB0YWcgPSBgPGlucHV0IHR5cGU9IiR7dHlwZU5hbWV9ImA7
CisgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0cmlidXRlcykKKyAgICAgICAgICAgIHRhZyAr
PSBgICR7bmFtZX09IiR7YXR0cmlidXRlc1tuYW1lXX0iYDsKKyAgICAgICAgdGFnICs9ICI+IjsK
KyAgICAgICAgc3Bhbi5pbm5lckhUTUwgPSB0YWc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbGV0
IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgaW5wdXQu
dHlwZSA9IHR5cGVOYW1lOworICAgICAgICBmb3IgKGxldCBuYW1lIGluIGF0dHJpYnV0ZXMpCisg
ICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlc1tuYW1lXSk7Cisg
ICAgICAgIHNwYW4uYXBwZW5kKGlucHV0KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bihvcHRp
b25zKSB7CisgICAgZm9yIChsZXQgdHlwZU5hbWUgaW4gdHlwZXMpIHsKKyAgICAgICAgaWYgKCFz
dXBwb3J0c1R5cGUodHlwZU5hbWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
bGV0IHR5cGUgPSB0eXBlc1t0eXBlTmFtZV07CisgICAgICAgIG1ha2VBbmRBcHBlbmRJbnB1dChv
cHRpb25zLCB0eXBlTmFtZSk7CisKKyAgICAgICAgaWYgKHR5cGUudmFsdWUpCisgICAgICAgICAg
ICBtYWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywgdHlwZU5hbWUsIHsgdmFsdWU6IHR5cGUudmFs
dWUgfSk7CisKKyAgICAgICAgbWFrZUFuZEFwcGVuZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCB7
IHZhbHVlOiB0eXBlLnZhbHVlLCBkaXNhYmxlZDogImRpc2FibGVkIiB9KTsKKyAgICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453258</attachid>
            <date>2022-02-25 13:58:20 -0800</date>
            <delta_ts>2022-02-25 14:45:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237224-20220226085819.patch</filename>
            <type>text/plain</type>
            <size>44553</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlZGExYWVkMDI2Y2U3
YmFjNTRkNWY0ZTI4MWIyZGMzODllODlmOS4uZmExNzVkM2Y2NGMzMTViODQxNzcxMGUxM2NkNDBl
MGUwYjY0ZDc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMzEsNiArMzEsMTg3IEBACiAgICAgICAgIChXZWJD
b3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKTogRGVsZXRlZC4KICAgICAgICAg
KiBzdmcvU1ZHVXNlRWxlbWVudC5oOgogCisyMDIyLTAyLTI1ICBDYW1lcm9uIE1jQ29ybWFjayAg
PGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpbnB1dCBlbGVtZW50IFVBIHNoYWRv
dyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEFkaXR5YSBLZWVydGhp
LgorCisgICAgICAgIFdlIGN1cnJlbnRseSBkZWxheSBJbnB1dFR5cGUgY3JlYXRpb24gZm9yIHBh
cnNlciBpbnNlcnRlZCBlbGVtZW50cyB1bnRpbAorICAgICAgICBqdXN0IGFmdGVyIHRoZSBhdHRy
aWJ1dGVzIGhhdmUgYmVlbiBzZXQsIHNvIHRoYXQgd2UgZG9uJ3Qgd2FzdGVmdWxseQorICAgICAg
ICBjcmVhdGUgYW4gSW5wdXRUeXBlIGFuZCB0aGUgVUEgc2hhZG93IHRyZWUgY3JlYXRpb24gaWYg
YSBub24tdGV4dAorICAgICAgICB0eXBlPSIiIHdhcyBzcGVjaWZpZWQgb24gdGhlIHRhZy4gV2Ug
ZG9uJ3QgZG8gYW55dGhpbmcgc2ltaWxhciBmb3IKKyAgICAgICAgc2NyaXB0IGluc2VydGVkIGlu
cHV0IGVsZW1lbnRzLiBXZSBjb3VsZCBtYWtlIHRoZSBJbnB1dFR5cGUgY3JlYXRpb24KKyAgICAg
ICAgbGF6eSwgYnV0IG1vc3Qgb2YgdGhlIHdhc3RlZCB0aW1lIGlzIGR1ZSB0byB0aGUgc2hhZG93
IHRyZWUgY3JlYXRpb24uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBJbnB1dFR5cGUgc2hh
ZG93IHRyZWUgY3JlYXRpb24gbGF6eSBieSBkZWxheWluZyBpdAorICAgICAgICB1bnRpbCBvbmUg
b2YgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorCisgICAgICAgIDEuIHRoZSBlbGVtZW50IGlzIGlu
c2VydGVkIGludG8gdGhlIGRvY3VtZW50CisgICAgICAgIDIuIHRoZSB0eXBlPSIiIG9yIHZhbHVl
PSIiIGF0dHJpYnV0ZXMgYXJlIGNoYW5nZWQgYmVmb3JlIHRoZSBlbGVtZW50CisgICAgICAgICAg
IGlzIGluc2VydGVkIGludG8gdGhlIGRvY3VtZW50CisgICAgICAgIDMuIGFueSBET00gbWV0aG9k
cyB0aGF0IG5lZWQgYWNjZXNzIHRvIHRoZSBpbm5lclRleHRFbGVtZW50KCkgYXJlCisgICAgICAg
ICAgIGNhbGxlZCBvbiB0aGUgZWxlbWVudCBiZWZvcmUgdGhlIGVsZW1lbnQgaXMgaW5zZXJ0ZWQg
aW50byB0aGUKKyAgICAgICAgICAgZG9jdW1lbnQKKworICAgICAgICBOb3QgYWxsIHBsYWNlcyB3
aGVyZSB3ZSBjYWxsIGlubmVyVGV4dEVsZW1lbnQoKSBvbiB0aGUKKyAgICAgICAgSFRNTElucHV0
RWxlbWVudCBhcmUgc2FmZSB0byBsYXppbHkgY3JlYXRlIHRoZSBzaGFkb3cgdHJlZXMsIHNvIHdl
CisgICAgICAgIGhhdmUgdHdvIGFjY2Vzc29yczoKKworICAgICAgICAtIGlubmVyVGV4dEVsZW1l
bnQoKSByZXR1cm5zIHRoZSBpbm5lciB0ZXh0IGVsZW1lbnQgaWYgaXQncyBiZWVuCisgICAgICAg
ICAgY3JlYXRlZCBhbHJlYWR5CisgICAgICAgIC0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hh
ZG93U3VidHJlZUlmTmVlZGVkIHdpbGwgcGVyZm9ybSB0aGUgbGF6eQorICAgICAgICAgIHNoYWRv
dyB0cmVlIGNvbnN0cnVjdGlvbiBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRvbmUKKworICAg
ICAgICBTaW5jZSB0aGUgZXhpc3RpbmcKKyAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVw
ZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSBmdW5jdGlvbiBoYXMKKyAgICAgICAgbW9y
ZSByZXNwb25zaWJpbGl0eSB0aGFuIGp1c3QgY3JlYXRpbmcgdGhlIHN1YnRyZWUgYW5kIGVuc3Vy
aW5nIHRoZQorICAgICAgICBlZGl0YWJpbGl0eSBpcyBzZXQgYXBwcm9wcmlhdGVseSwgaXQncyBy
ZW5hbWVkIHRvIGEgbW9yZSBtYW5hZ2VhYmxlCisgICAgICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWUu
CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgYSAwLjUlIHByb2dyZXNzaW9uIG9uIFNwZWVkb21l
dGVyIDIuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0
aW9uLmh0bWwKKworICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6Cisg
ICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRt
bC9Db2xvcklucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvRmlsZUlu
cHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRl
eHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRl
eHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuaDoK
KyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOgorICAgICAg
ICAqIGh0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJ
bm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgdG8KKyAgICAgICAgY3JlYXRlU2hhZG93U3VidHJl
ZSBhbmQgcmVtb3ZlIHRoZSAiaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUiCisgICAgICAgIGFy
Z3VtZW50LCBzaW5jZSB3ZSBjYW4gYXNrIHRoZSBlbGVtZW50KCkgZm9yIGl0cyB2YWx1ZSBpZiBu
ZWVkZWQuCisgICAgICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWUgaXMgbm93IGFsc28gcmVzcG9uc2li
bGUgZm9yIGNyZWF0aW5nIHRoZSBzaGFkb3cKKyAgICAgICAgcm9vdC4KKworICAgICAgICAqIGh0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFk
b3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRl
U2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAg
ICAgIFJlbmFtZWQuIEVuc3VyZSBhbGwgc2hhZG93IHRyZWUgc3RhdGUgaXMgdXAgdG8gZGF0ZSBu
b3cgdGhhdCBpdCBjYW4gYmUKKyAgICAgICAgY3JlYXRlZCBsYXRlci4KKworICAgICAgICAqIGh0
bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6aGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUgY29uc3QpOgorICAgICAgICBO
ZXcgZnVuY3Rpb25zIHRvIGNyZWF0ZSB0aGUgc2hhZG93IHN1YnRyZWUgaWYgaXQgaGFzbid0IGJl
ZW4gZG9uZQorICAgICAgICBhbHJlYWR5LCBhbmQgdG8gcXVlcnkgd2hldGhlciBpdCdzIGJlZW4g
ZG9uZS4KKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50
Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQpOgorICAgICAg
ICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVl
ZGVkKToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBmaXJzdCBjcmVhdGUgdGhlIHNoYWRvdyBz
dWJ0cmVlIGJlZm9yZSByZXR1cm5pbmcKKyAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLiBIVE1M
VGV4dEFyZWFFbGVtZW50IG5ldmVyIGxhemlseSBjcmVhdGVzIGl0cworICAgICAgICBzaGFkb3cg
c3VidHJlZSBhbmQgc28ganVzdCByZXR1cm5zIGlubmVyVGV4dEVsZW1lbnQoKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFk
b3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAg
RGVsZXRlZC4gSnVzdCBjYWxsIHRocm91Z2ggdG8gbV9pbnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1Ry
ZWUoKQorICAgICAgICBkaXJlY3RseS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aW5pdGlh
bGl6ZUlucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRh
dGVUeXBlKToKKyAgICAgICAgRG9uJ3QgaW1tZWRpYXRlbHkgY3JlYXRlIHRoZSBzaGFkb3cgdHJl
ZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0
aW5nTm9kZSk6CisgICAgICAgIENyZWF0ZSB0aGUgc2hhZG93IHN1YnRyZWUgbm93IHRoYXQgdGhl
IGVsZW1lbnQncyBiZWVuIGluc2VydGVkLiBObworICAgICAgICBuZWVkIHRvIGNhbGwgZGF0YUxp
c3RNYXlIYXZlQ2hhbmdlZCBzaW5jZQorICAgICAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUgd2lsbCBub3cgZG8gdGhpcy4KKworICAgICAgICAqIGh0bWwvQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNo
YWRvdyBzdWJ0cmVlIGlzIGNyZWF0ZWQgc2luY2Ugd2UgbmVlZCB0byBwb2tlIGF0IGl0LgorCisg
ICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KToKKyAgICAg
ICAgRG9uJ3QgZm9yd2FyZCB0aGUgZXZlbnQgaWYgdGhlIHNoYWRvdyB0cmVlIGhhc24ndCBiZWVu
IGNyZWF0ZWQgeWV0LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0cmVl
IGhhcyBiZWVuIGNyZWF0ZWQuIFRoaXMgaXMgbmVlZGVkIGlmIHRoZQorICAgICAgICBzZWxlY3Rp
b24gQVBJcyBhcmUgY2FsbGVkIG9uIHRoZSBpbnB1dCBlbGVtZW50IGJlZm9yZSBpdCdzIGluc2Vy
dGVkCisgICAgICAgIGludG8gdGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXggY29uc3QpOgor
ICAgICAgICBBc3NlcnQgdGhhdCB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4gY3JlYXRlZCwgc2lu
Y2UgZWRpdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHNob3VsZCBvbmx5IGJlIG5lZWRlZCBp
ZiB0aGUgZWxlbWVudCdzIGJlZW4gaW5zZXJ0ZWQKKyAgICAgICAgaW50byB0aGUgZG9jdW1lbnQu
CisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5l
clRleHRWYWx1ZSk6CisgICAgICAgIEVuc3VyZSB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4gY3Jl
YXRlZC4KKworICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICBFbnN1cmUg
dGhlIHNoYWRvdyB0cmVlIGhhcyBiZWVuIGNyZWF0ZWQgaW4gY2FzZSB0aGUgZXZlbnQgd2lsbCBj
aGFuZ2UKKyAgICAgICAgdGhlIHZhbHVlLgorCisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0
VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50IGNvbnN0KToKKyAgICAgICAgT25seSByZXR1cm4gdGhl
IGVsZW1lbnQgaWYgaXQncyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdl
SW5wdXRUeXBlOjp0eXBlZFNsaWRlclRodW1iRWxlbWVudCBjb25zdCk6CisgICAgICAgIEFzc2Vy
dCB0aGF0IHRoZSBlbGVtZW50IGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKToKKyAgICAgICAgT25seSB0
cnkgdG8gcmUtbGF5b3V0IGlmIHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLgorCisg
ICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjppc0VtcHR5VmFsdWUgY29uc3QpOgorICAgICAgICBBdm9pZCBj
cmVhdGluZyB0aGUgc2hhZG93IHN1YnRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KToKKyAgICAgICAgTW92ZSB0aGUgZWxlbWVudCBhc3Nl
cnRpb24gdXAgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGZ1bmN0aW9ucy4KKworICAgICAg
ICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50IGNvbnN0KToK
KyAgICAgICAgRG9uJ3QgYXNzZXJ0LCBzaW5jZSB0aGlzIG5vdyBjYW4gbGVnaXRpbWF0ZWx5IHJl
dHVybiBudWxsLgorCisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0
bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6
OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBl
OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpz
ZXRWYWx1ZSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnJlYWRPbmx5U3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xk
ZXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0
b0ZpbGxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpkYXRh
TGlzdE1heUhhdmVDaGFuZ2VkKToKKyAgICAgICAgRG9uJ3QgdXBkYXRlIHRoZSBzaGFkb3cgdHJl
ZSBjb250ZW50cyBpZiBpdCBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKyAgICAgICAgY3JlYXRl
U2hhZG93VHJlZSBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgaXQgY3JlYXRlcyB0aGUgc2hh
ZG93CisgICAgICAgIHRyZWUgY29udGVudHMgcmVmbGVjdGluZyB0aGUgY3VycmVudCBzdGF0ZS4K
KwogMjAyMi0wMi0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlLWFkZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQsIHJlbW92ZWQgaW4g
cjI4NTI1MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwCmluZGV4IGNiZjYxMjAwZWU2OTE2MWNhZmE1NjkxOWU3ZWY5YzFhZmRhMzVjNDYuLmNm
N2NjMzFmMzQyZjdiNWE3NDc0NzVlNGNjYTE4OWJkMTNhNzQxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTMwNiw3ICszMDYs
NyBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVu
dChFdmVudCYpCiAgICAgfQogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29s
KQordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQog
ewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQo
KSk7CkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRl
c3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRh
dGVJbm5lclRleHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKwogICAgIGlmICghbV9kYXRlVGltZUVkaXRFbGVt
ZW50KSB7CiAgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9v
dCgpLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5kZXgg
M2ViNmQ1NWYxY2EzOWYxMTliYzA1Mjc1ZWNhYzFlMGU1ZTFiMjY5MC4uYjY4NWY4ZTE5ZmZiNDg4
NTVmNGUyZmU4MmUzYjEyMWJlNDkzYTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgaGFuZGxl
RE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsK
KyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lT
aGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgpIGZp
bmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAwNjY1M2ZkM2NkNTY3NTkxNzFmNWQw
NmE2YjUzYmRiZmNiMTE3ZDUxLi5mMTE5ZTgyYjM3N2RkYjQxZmNkOWU4YjkzYWE3ZmNlZmEwZjVk
YzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTM2LDcgKzEz
Niw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25zdAogICAgIHJl
dHVybiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoZWxlbWVudCgpLT52YWx1ZSgpKS52YWx1ZSgpOwog
fQogCi12b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwog
ICAgIEFTU0VSVChlbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xvcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCmlu
ZGV4IDliNTcwZDA4ODAyMmQ1NGQ3OWZlZjQ1YjgwMGQ2MDUyNGY5NDkzMTIuLjExNmRhYjExN2I5
NzU5YjIzNjE3MzcwZWQ0ODM3OWE4Yzc3YTMzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sb3JJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5w
dXRUeXBlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzUmVx
dWlyZWQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmFsbGJhY2tWYWx1ZSgpIGNvbnN0IGZp
bmFsOwogICAgIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFs
OwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRF
ZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBm
aW5hbDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2Vk
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBmaW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZh
dGVFdmVudChFdmVudCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
aW5kZXggZTgzOGU1Yzg3NGJmYWQ4MjZlMjcxOGE3MWRlODExYTQ2MWNlZmEwZi4uZWE3ZGZhY2Y2
MmI3ODI1NTlkNjVlM2JmYjZiM2QwY2NkZmUyNTIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCkBAIC0yNjIsMTggKzI2MiwyMCBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNl
dFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiAgICAg
ZWxlbWVudCgpLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiB9CiAKLXZvaWQgRmlsZUlu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eShib29sKQordm9pZCBGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkK
IHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50
KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7Ci0gICAgZWxlbWVudCgp
LT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxk
Q2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0
dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTogVXBs
b2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOworCisgICAg
YXV0byBidXR0b24gPSBlbGVtZW50KCktPm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVtZW50
OjpjcmVhdGVGb3JNdWx0aXBsZShlbGVtZW50KCktPmRvY3VtZW50KCkpIDogVXBsb2FkQnV0dG9u
RWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CisgICAgZWxlbWVudCgpLT51
c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2U6OlBhcnNlciwgYnV0dG9uKTsKKyAgICBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgp
OwogfQogCiB2b2lkIEZpbGVJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKICAg
ICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkp
OwogCiAgICAgYXV0byByb290ID0gZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCk7CiAg
ICAgaWYgKCFyb290KQpAQCAtMjg3LDcgKzI4OSw2IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6YXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGlmIChuYW1l
ID09IG11bHRpcGxlQXR0cikgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHRoaXMtPmVs
ZW1lbnQoKSkgewotICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSk7CiAg
ICAgICAgICAgICBpZiAoYXV0byByb290ID0gZWxlbWVudC0+dXNlckFnZW50U2hhZG93Um9vdCgp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBidXR0b24gPSBjaGlsZHJlbk9mVHlwZTxV
cGxvYWRCdXR0b25FbGVtZW50Pigqcm9vdCkuZmlyc3QoKSkKICAgICAgICAgICAgICAgICAgICAg
YnV0dG9uLT5zZXRWYWx1ZShlbGVtZW50LT5tdWx0aXBsZSgpID8gZmlsZUJ1dHRvbkNob29zZU11
bHRpcGxlRmlsZXNMYWJlbCgpIDogZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggN2IyYzA5NjYxZDU1YTM1NDI5NDQ1NmIxY2Jl
NjRkODQwZGI1NzFmZi4uOTE1N2IxNzkwMjkyMDBmM2M0MzA4OGNiNmE0YzZiZTU1ZTAwMDIzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgSWNvbiogaWNvbigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29s
KSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lk
IGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBTdHJpbmcgZGVmYXVsdFRvb2xUaXAo
KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmlu
ZGV4IGYxMGM0ODNhNTQ2YzgwOTViMWMyMzkxYWZlOGQ0YjM3NzA3M2RjYzUuLjQ3YjRiMzk3YTk4
OWI5ZmE3MGUzYmFlZmZkNWI2YzhhZjJlMmVlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcApAQCAtMTM2LDggKzEzNiw4IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhU
TUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtCiAjZW5kaWYKICAgICAsIG1faXNTcGVsbGNoZWNrRGlzYWJsZWRFeGNlcHRUZXh0UmVwbGFj
ZW1lbnQoZmFsc2UpCiB7Ci0gICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hl
biBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vz
c2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUgYW5kCi0gICAgLy8gaXRzIHNoYWRvdyBzdWJ0cmVlLCBq
dXN0IHRvIGRlc3Ryb3kgdGhlbSB3aGVuIHRoZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0IGJ5
IHRoZSBwYXJzZXIgdG8gc29tZXRoaW5nIGVsc2UgdGhhbiAndGV4dCcuCisgICAgLy8gbV9pbnB1
dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRv
IGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUsCisgICAg
Ly8ganVzdCB0byBkZXN0cm95IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNl
dCBieSB0aGUgcGFyc2VyIHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgogICAgIGlmICgh
Y3JlYXRlZEJ5UGFyc2VyKQogICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRl
VGV4dCgqdGhpcyk7CiAKQEAgLTE0NywxNCArMTQ3LDcgQEAgSFRNTElucHV0RWxlbWVudDo6SFRN
TElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW0KIAogUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxl
bWVudCogZm9ybSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgYm9vbCBzaG91bGRDcmVh
dGVTaGFkb3dSb290TGF6aWx5ID0gY3JlYXRlZEJ5UGFyc2VyOwotICAgIFJlZjxIVE1MSW5wdXRF
bGVtZW50PiBpbnB1dEVsZW1lbnQgPSBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwotICAgIGlmICghc2hvdWxk
Q3JlYXRlU2hhZG93Um9vdExhemlseSkgewotICAgICAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5t
X2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwotICAgICAgICBpbnB1dEVsZW1lbnQt
PmNyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0g
ICAgfQotICAgIHJldHVybiBpbnB1dEVsZW1lbnQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SFRNTElucHV0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2Vy
KSk7CiB9CiAKIEhUTUxJbWFnZUxvYWRlciYgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VM
b2FkZXIoKQpAQCAtMTY0LDEyICsxNTcsNiBAQCBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9
CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlu
bmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpCi17Ci0gICAgUmVmPElucHV0VHlwZT4gcHJvdGVj
dGVkSW5wdXRUeXBlKCptX2lucHV0VHlwZSk7Ci0gICAgcHJvdGVjdGVkSW5wdXRUeXBlLT5jcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkpOwotfQotCiBIVE1MSW5wdXRFbGVtZW50Ojp+SFRNTElu
cHV0RWxlbWVudCgpCiB7CiAgICAgaWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkpCkBAIC0y
MTIsNiArMTk5LDExIEBAIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxJ
bnB1dEVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0
VHlwZS0+aW5uZXJUZXh0RWxlbWVudCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJUZXh0
RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7Cit9CisKIEhUTUxFbGVtZW50
KiBIVE1MSW5wdXRFbGVtZW50Ojppbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1faW5wdXRUeXBlLT5pbm5lckJsb2NrRWxlbWVudCgpOwpAQCAtNTgwLDEwICs1NzIsNyBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAgIG1faW5wdXRUeXBlLT5k
ZXRhY2hGcm9tRWxlbWVudCgpOwogCiAgICAgbV9pbnB1dFR5cGUgPSBXVEZNb3ZlKG5ld1R5cGUp
OwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpIHsKLSAgICAgICAg
ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQorICAgIG1faW5w
dXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKIAogICAgIHVwZGF0ZVdpbGxW
YWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAKQEAgLTczNiwxOSArNzI1LDEyIEBAIGlubGluZSB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUoKQogICAgIGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKTsK
ICAgICBpZiAodHlwZS5pc051bGwoKSkgewogICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlw
ZTo6Y3JlYXRlVGV4dCgqdGhpcyk7Ci0gICAgICAgIEFTU0VSVChtX2lucHV0VHlwZS0+bmVlZHNT
aGFkb3dTdWJ0cmVlKCkpOwotICAgICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0g
ICAgICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFi
aWxpdHkoKTsKICAgICAgICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1faGFzVHlwZSA9IHRydWU7CiAgICAgbV9pbnB1dFR5
cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZSgqdGhpcywgdHlwZSk7Ci0gICAgaWYgKG1faW5wdXRUeXBl
LT5uZWVkc1NoYWRvd1N1YnRyZWUoKSkgewotICAgICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dS
b290KCk7Ci0gICAgICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoKTsKLSAgICB9CiAgICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRp
dHkoKTsKICAgICByZWdpc3RlckZvclN1c3BlbnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAgICAg
cnVuUG9zdFR5cGVVcGRhdGVUYXNrcygpOwpAQCAtMTU5MSwxOCArMTU3MywyMiBAQCBOb2RlOjpJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1MSW5wdXRFbGVtZW50OjppbnNlcnRlZEludG9B
bmNlc3RvcihJbnNlcnRpbwogI2VuZGlmCiAgICAgaWYgKGlzUmFkaW9CdXR0b24oKSkKICAgICAg
ICAgdXBkYXRlVmFsaWRpdHkoKTsKKyAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0Rv
Y3VtZW50KQorICAgICAgICBkb2N1bWVudCgpLmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2Vu
dFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOwogICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3Rv
clJlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7CiB9CiAKK3ZvaWQgSFRNTElucHV0
RWxlbWVudDo6dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSgpCit7CisgICAgZG9jdW1lbnQoKS5y
ZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsK
KyAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7Cit9CisKIHZv
aWQgSFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpCiB7CiAgICAgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKTsKICAgICBp
ZiAoaXNJblRyZWVTY29wZSgpICYmICFmb3JtKCkpCiAgICAgICAgIGFkZFRvUmFkaW9CdXR0b25H
cm91cCgpOwotI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgIGlmIChpc0Nvbm5lY3Rl
ZCgpICYmIG1faGFzTm9uRW1wdHlMaXN0KQotICAgICAgICBkYXRhTGlzdE1heUhhdmVDaGFuZ2Vk
KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2Vz
dG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJl
bW92ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA5MzA3
MjljOTU2YjRjZmQ0NDQwZmIwODkyODE4OTVjNTBjNmJkMzBlLi5jNjRkYTQxZDExMmNlZGFmYWI4
MmI3NjI3ZDE2M2ViM2UyNTMxMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBIVE1MRWxlbWVudCogY29udGFp
bmVyRWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8VGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dT
dWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAgSFRNTEVsZW1lbnQqIGlubmVy
QmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0zNTYsNiArMzU3LDEwIEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyByZXN1bHRGb3JEaWFsb2dTdWJtaXQoKSBjb25zdCBmaW5hbDsKIAorICAgIGJvb2wg
aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhaGFzQXV0
b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9CisKKyAgICB2b2lkIHVwZGF0ZVVzZXJB
Z2VudFNoYWRvd1RyZWUoKSBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxJbnB1dEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC0zNzEsOCArMzc2LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5h
bDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAotICAgIHZvaWQgY3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotCiAgICAgaW50IGRl
ZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dp
YygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2
ZW50KikgY29uc3QgZmluYWw7CkBAIC0zODQsOCArMzg3LDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdCBmaW5hbDsKIAotICAgIGJvb2wgaXNJbm5l
clRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhaGFzQXV0b0ZpbGxT
dHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojppc0lu
bmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9Ci0KICAgICBib29sIGNhblRyaWdnZXJJbXBsaWNp
dFN1Ym1pc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc1RleHRGaWVsZCgpOyB9CiAKICAg
ICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDY2OGRkN2Y5ZGZk
NmE1ODdiOTgyYWI5NTQ0YmY5NjFlNTA2MzJlMjUuLmFhNTJmMDBkYjVkYzA2ZGQzMDQ4MTZlMTMz
MTU1YTczOWE0YTEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcApAQCAtMzQ1LDYgKzM0NSwxMSBAQCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50KCkgY29ucwogICAg
IHJldHVybiBjaGlsZHJlbk9mVHlwZTxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+KCpyb290
KS5maXJzdCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1M
VGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQoKQoreworICAgIHJldHVybiBpbm5lclRleHRFbGVtZW50KCk7Cit9CisKIHZvaWQgSFRN
TFRleHRBcmVhRWxlbWVudDo6cmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoKQogewogICAgIHVwZGF0
ZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4
IDNiZTVhZTk2YzIzOWM1NmRhMjkyMmQ4YjViYWQ4OWY1ZTYwZWIyZjMuLjAwNzdmMDI1MzI2ZDc4
ZjAyMWRhYzBjYjI3MWQ5Yzk2OGZjY2JhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmFs
aWRWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkgY29u
c3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkg
ZmluYWw7CiAgICAgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmKSBmaW5hbDsKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVs
ZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDk2NGNjMWEyMWQwMzUxZTA1
OTVkN2I3ZmViYzg5ZjYyMWZjMGYxOWIuLjc5MGRkMGNmNGM4NmVkOWRmYjE4NmIwMjk3YWZlOGQ0
YTk5MDU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCkBAIC0xNTcsNyArMTU3LDkgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQu
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50
TmFtZXMoKS5mb2N1c0V2ZW50KQogICAgICAgICByZXR1cm47Ci0gICAgaW5uZXJUZXh0RWxlbWVu
dCgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChhdXRvIGlubmVyVGV4
dCA9IGlubmVyVGV4dEVsZW1lbnQoKSkKKyAgICAgICAgaW5uZXJUZXh0LT5kZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKIH0KIAogc3RhdGljIGJvb2wgaXNOb3RMaW5lQnJlYWsoVUNoYXIgY2gp
IHsgcmV0dXJuIGNoICE9IG5ld2xpbmVDaGFyYWN0ZXIgJiYgY2ggIT0gY2FycmlhZ2VSZXR1cm47
IH0KQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpz
ZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIFRleHRGaWVsZAogICAgIGVuZCA9
IHN0ZDo6bWF4KGVuZCwgMCk7CiAgICAgc3RhcnQgPSBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwg
MCksIGVuZCk7CiAKLSAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKKyAg
ICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJ
Zk5lZWRlZCgpOwogICAgIGJvb2wgaGFzRm9jdXMgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50
KCkgPT0gdGhpczsKICAgICBpZiAoIWhhc0ZvY3VzICYmIGlubmVyVGV4dCkgewogICAgICAgICBp
ZiAoIWlzQ29ubmVjdGVkKCkpIHsKQEAgLTM2OSw2ICszNzEsNyBAQCBpbnQgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcAogCiBWaXNpYmxlUG9zaXRpb24gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZp
c2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKKyAgICBBU1NFUlQoaW5u
ZXJUZXh0RWxlbWVudCgpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBwb3NpdGlv
bkZvckluZGV4KGlubmVyVGV4dEVsZW1lbnQoKS5nZXQoKSwgaW5kZXgpOwogICAgIEFTU0VSVChp
bmRleEZvclZpc2libGVQb3NpdGlvbihwb3NpdGlvbikgPT0gaW5kZXgpOwogICAgIHJldHVybiBw
b3NpdGlvbjsKQEAgLTU4Nyw3ICs1OTAsNyBAQCBzdGF0aWMgU3RyaW5nIGlubmVyVGV4dFZhbHVl
RnJvbShUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQmIGlubmVyVGV4dCkKIHZvaWQgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7CiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlIGxheW91dERpc2FsbG93ZWRTY29wZShM
YXlvdXREaXNhbGxvd2VkU2NvcGU6OlJlYXNvbjo6UGVyZm9ybWFuY2VPcHRpbWl6YXRpb24pOwot
ICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOworICAgIGF1dG8gaW5uZXJU
ZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAg
ICAgaWYgKCFpbm5lclRleHQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDk5ODZhYzU1NDA4ZWJh
NzAzYTU3NjIyNTE4MGZmMWRmYTQ2YzllY2IuLmEwMzFlMTQ2OGVjMWM4MjRlYTA1Y2YxNWZjZDEz
MjkzMzM2ZGMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3Ry
aW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBSZWZQdHI8VGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENy
ZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgUmVuZGVyU3R5
bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSA9IDA7CiAKICAgICB2
b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91bGRGaXJlU2VsZWN0RXZlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDdhMDUwNTAyYjNlYWJlZDVjZDE3MWZlZjhmM2Y2YjUx
OTZlYTMzMmIuLjc0ZTBkZGViMThjMGI2MDIwZTg1YzkxNDIxYTE0YjYyZmI3ZGQ5ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIElucHV0VHlw
ZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1cigpOwogfQogCi12b2lkIElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShib29sKQordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogfQog
CkBAIC0xMTE5LDEwICsxMTE5LDI2IEBAIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IElucHV0VHlwZTo6
aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkKK3sKKyAgICBj
cmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gaW5uZXJUZXh0RWxlbWVu
dCgpOworfQorCiBTdHJpbmcgSW5wdXRUeXBlOjpyZXN1bHRGb3JEaWFsb2dTdWJtaXQoKSBjb25z
dAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIHJldHVybiBlbGVtZW50KCktPnZhbHVl
KCk7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQor
eworICAgIGlmIChtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIHx8ICFuZWVkc1NoYWRvd1N1YnRy
ZWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsK
KyAgICBlbGVtZW50KCktPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAgICBtX2hhc0Ny
ZWF0ZWRTaGFkb3dTdWJ0cmVlID0gdHJ1ZTsKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDA0
NWZmNDU3ZmIzMmVlNmFiOTEwNWI1M2FhMjBkNjc4Yzg5MzFjZWUuLjgxMmQ1ODhiNmVkOGQwMzg5
MmM0YmIzZDNkY2YwZWYxMGY2ZTY4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMjA2
LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdDsKICAg
ICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBuZWVkc1NoYWRvd1N1YnRy
ZWUoKSBjb25zdCB7IHJldHVybiAhbm9uU2hhZG93Um9vdFR5cGVzLmNvbnRhaW5zKG1fdHlwZSk7
IH0KKyAgICBib29sIGhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNDcmVhdGVkU2hhZG93U3VidHJlZTsgfQogCiAgICAgLy8gRm9ybSB2YWx1ZSBmdW5jdGlvbnMu
CiAKQEAgLTMwNiw3ICszMDcsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBTaGFkb3cgdHJlZSBoYW5k
bGluZy4KIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3Vi
dHJlZUlmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKTsKIAogICAgIHZpcnR1YWwg
SFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CkBAIC0zMjMsNiArMzI1LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGRhdGFMaXN0QnV0dG9uRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRl
ZCgpOwogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMuCiAKQEAgLTQxMyw2ICs0MTYs
NyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGx5U3RlcChpbnQgY291bnQs
IEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcik7CiAKICAgICBjb25zdCBU
eXBlIG1fdHlwZTsKKyAgICBib29sIG1faGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUgeyBmYWxzZSB9
OwogICAgIC8vIG1fZWxlbWVudCBpcyBudWxsIGlmIHRoaXMgSW5wdXRUeXBlIGlzIG5vIGxvbmdl
ciBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCAoZWl0aGVyIHRoZSBlbGVtZW50IGRpZWQgb3Ig
Y2hhbmdlZCBpbnB1dCB0eXBlKS4KICAgICBXZWFrUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG1fZWxl
bWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDgwOWQ1
ODljZjNkODcxMmViYzcxYzMxMzBjNDQzMmRkZTgxNWU5OWEuLmY5Mjk2N2M0NDE2M2UwZjA3NDU5
NDljMWI4YjQ5MzUxMjRmMGUzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
Y3BwCkBAIC0xMzMsNiArMTMzLDEwIEBAIFN0ZXBSYW5nZSBSYW5nZUlucHV0VHlwZTo6Y3JlYXRl
U3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB2b2lkIFJh
bmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50JiBldmVudCkKIHsK
ICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRy
ZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTUxLDEwICsxNTUsMTUgQEAgdm9p
ZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYgZXZlbnQp
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRv
dWNoRXZlbnQoVG91Y2hFdmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisK
KyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5o
YW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJMRShUT1VDSF9TTElERVIpCi0gICAg
QVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMsMTIgKzE5MiwxOCBAQCBib29sIFJh
bmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0CiAKIHZvaWQgUmFuZ2VJ
bnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWhhc0NyZWF0ZWRT
aGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKICAgICB0eXBlZFNsaWRlclRodW1iRWxl
bWVudCgpLmhvc3REaXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwogfQogCiBhdXRvIFJhbmdlSW5wdXRU
eXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpIC0+IFNob3VsZENh
bGxCYXNlRXZlbnRIYW5kbGVyCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAo
IWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFz
ZUV2ZW50SGFuZGxlcjo6WWVzOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1D
b250cm9sKCkpCiAgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVz
OwogCkBAIC0yNDEsNyArMjU2LDcgQEAgYXV0byBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93
bkV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KSAtPiBTaG91bGRDYWxsQmFzZUUKICAgICByZXR1
cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIH0KIAotdm9pZCBSYW5nZUlucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShib29sKQordm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7
CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgp
KTsKQEAgLTI1OSw2ICsyNzQsMTAgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib28KIEhUTUxFbGVt
ZW50KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50KCkgY29uc3QKIHsKICAgICBB
U1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdl
bnRTaGFkb3dSb290KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gY29udGFpbmVyCiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+
dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCktPmlzSFRNTEVsZW1lbnQoKSk7CkBA
IC0yNzcsNiArMjk2LDcgQEAgSFRNTEVsZW1lbnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFj
a0VsZW1lbnQoKSBjb25zdAogCiBTbGlkZXJUaHVtYkVsZW1lbnQmIFJhbmdlSW5wdXRUeXBlOjp0
eXBlZFNsaWRlclRodW1iRWxlbWVudCgpIGNvbnN0CiB7CisgICAgQVNTRVJUKGhhc0NyZWF0ZWRT
aGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChzbGlkZXJUcmFja0VsZW1lbnQoKS0+Zmlyc3RD
aGlsZCgpKTsgLy8gdGh1bWIKICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0
Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKIApAQCAtMzIyLDcgKzM0Miw4IEBAIHZvaWQgUmFu
Z2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkK
ICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNEaXJ0eVZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgZWxlbWVudC0+c2V0VmFsdWUoZWxlbWVudC0+dmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAg
ICAgICBpZiAoaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgICAgIHR5cGVkU2xp
ZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKICAgICB9CiAgICAgSW5w
dXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUpOwogfQpAQCAtMzM5LDcgKzM2MCw4IEBAIHZv
aWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgdmFs
dWVDaGFuZ2VkLCBUZXh0RmllbGRFCiAgICAgICAgIGVsZW1lbnQoKS0+c2V0VGV4dEFzT2ZMYXN0
Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudCh2YWx1ZSk7CiAgICAgfQogCi0gICAgdHlwZWRTbGlkZXJU
aHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgIGlmIChoYXNDcmVhdGVk
U2hhZG93U3VidHJlZSgpKQorICAgICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLnNldFBv
c2l0aW9uRnJvbVZhbHVlKCk7CiB9CiAKIFN0cmluZyBSYW5nZUlucHV0VHlwZTo6ZmFsbGJhY2tW
YWx1ZSgpIGNvbnN0CkBAIC0zNjgsNyArMzkwLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6ZGF0
YUxpc3RNYXlIYXZlQ2hhbmdlZCgpCiB7CiAgICAgbV90aWNrTWFya1ZhbHVlc0RpcnR5ID0gdHJ1
ZTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHNsaWRlclRyYWNrRWxlbWVudCA9IHRoaXMtPnNs
aWRlclRyYWNrRWxlbWVudCgpOwotICAgIGlmIChzbGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVy
KCkpCisgICAgaWYgKHNsaWRlclRyYWNrRWxlbWVudCAmJiBzbGlkZXJUcmFja0VsZW1lbnQtPnJl
bmRlcmVyKCkpCiAgICAgICAgIHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKS0+c2V0TmVl
ZHNMYXlvdXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IDI5
NjRjNjRlOWQzZGY0MGZlOTViYjU3MmI5MTc2M2Q0M2ZlYzdjYmIuLjEwZmQzYTcyZTdkNmQwYjAx
N2VmNmJiMmI0Yjk1NTA0OGMwMTU5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZU1vdXNlRG93bkV2
ZW50KE1vdXNlRXZlbnQmKSBmaW5hbDsKICAgICBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlciBo
YW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYpIGZpbmFsOwogICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwot
ICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5h
bDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1h
bCYpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRz
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCBmNzBi
MTJlMjQzN2ZmYzFhODY0NWVhMDM5OGFkOTQwZDUyNTAyNjU1Li42ZTViMWU3ZmJlNzJiYmQzMWJi
OTg0NTdlMDJlY2Q0YzZhNDdkZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Nl
YXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5
cGUuY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBib29sIFNlYXJjaElucHV0VHlwZTo6bmVlZHND
b250YWluZXIoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNlYXJjaElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9pZCBTZWFyY2hJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRy
ZWUoKSk7CiAgICAgQVNTRVJUKCFtX3Jlc3VsdHNCdXR0b24pOwogICAgIEFTU0VSVCghbV9jYW5j
ZWxCdXR0b24pOwogCi0gICAgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmxlKTsKKyAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsK
ICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNvbnRhaW5lciA9IGNvbnRhaW5lckVsZW1lbnQoKTsK
ICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHRleHRXcmFwcGVyID0gaW5uZXJCbG9ja0VsZW1lbnQo
KTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvU2VhcmNoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlw
ZS5oCmluZGV4IDIyZjY4YzkyNWQ4Njc5NjQxMzBlOGVmMzE3OTdiYzkwZWRiOGVmNjEuLjIzYTYy
OTc0ZTIyZGE3NTdkZTIyZDk3YTI4Mzg3MDc3NDg4MWVmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9T
ZWFyY2hJbnB1dFR5cGUuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIGZpbmFs
OwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmlu
YWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkZXN0
cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIEhUTUxFbGVtZW50KiByZXN1bHRzQnV0dG9u
RWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEhUTUxFbGVtZW50KiBjYW5jZWxCdXR0b25FbGVt
ZW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlw
ZS5jcHAKaW5kZXggNWU4Nzc4YmJkOTAwOWE1ZGFiNzgxZTJkZmUzNzg4ZTkwOTdmYWM4Yy4uMzcw
NTZlNDVlYjFhNzVjMTRmZDQzZTY1NmYxMzE0OWZhNTFmMDMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMTA4LDcgKzEwOCwxMSBAQCBib29sIFRl
eHRGaWVsZElucHV0VHlwZTo6aXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0CiBib29sIFRleHRGaWVs
ZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRvIGlubmVyVGV4dCA9
IGlubmVyVGV4dEVsZW1lbnQoKTsKLSAgICBBU1NFUlQoaW5uZXJUZXh0KTsKKyAgICBpZiAoIWlu
bmVyVGV4dCkgeworICAgICAgICAvLyBTaW5jZSB3ZSBhbHdheXMgY3JlYXRlIHRoZSBzaGFkb3cg
c3VidHJlZSBpZiBhIHZhbHVlIGlzIHNldCwgd2Uga25vdworICAgICAgICAvLyB0aGF0IHRoZSB2
YWx1ZSBpcyBlbXB0eS4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgZm9yIChU
ZXh0KiB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKCppbm5lclRleHQpOyB0
ZXh0OyB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJzYWw6Om5leHQoKnRleHQsIGlubmVyVGV4dC5nZXQo
KSkpIHsKICAgICAgICAgaWYgKHRleHQtPmxlbmd0aCgpKQpAQCAtMjIxLDYgKzIyNSw4IEBAIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnRGb3JTcGluQnV0dG9uKEtl
eWJvYXJkRXZlbnQmIGV2ZW50KQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2
ZW50KEV2ZW50JiBldmVudCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIGlmICht
X2lubmVyU3BpbkJ1dHRvbikgewogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+Zm9yd2FyZEV2
ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRIYW5kbGVkKCkpCkBAIC0yMzEs
MTAgKzIzNyw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQm
IGV2ZW50KQogICAgIGJvb2wgaXNCbHVyRXZlbnQgPSBldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmJsdXJFdmVudDsKICAgICBpZiAoaXNGb2N1c0V2ZW50IHx8IGlzQmx1ckV2ZW50KQogICAg
ICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKLSAgICBpZiAoZXZlbnQuaXNNb3Vz
ZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8IGlzQmx1ckV2ZW50KSB7Ci0gICAgICAgIEFTU0VS
VChlbGVtZW50KCkpOworICAgIGlmIChldmVudC5pc01vdXNlRXZlbnQoKSB8fCBpc0ZvY3VzRXZl
bnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGVsZW1lbnQoKS0+Zm9yd2FyZEV2ZW50KGV2ZW50
KTsKLSAgICB9CiB9CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjplbGVtZW50RGlkQmx1cigp
CkBAIC0zMTYsMTEgKzMyMCwxMiBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkSGF2
ZUNhcHNMb2NrSW5kaWNhdG9yKCkgY29uc3QKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnNpbmds
ZXRvbigpLnNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcigqZWxlbWVudCgpKTsKIH0KIAotdm9p
ZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRl
eHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKK3Zv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NF
UlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFT
U0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKCFlbGVtZW50KCktPnNo
YWRvd1Jvb3QoKS0+aGFzQ2hpbGROb2RlcygpKTsKIAogICAgIEFTU0VSVCghbV9pbm5lclRleHQp
OwogICAgIEFTU0VSVCghbV9pbm5lckJsb2NrKTsKQEAgLTMzMSw5ICszMzYsMTcgQEAgdm9pZCBU
ZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50KCktPmRv
Y3VtZW50KCk7CiAgICAgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbiA9IHRoaXMtPnNob3VsZEhh
dmVTcGluQnV0dG9uKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IgPSB0
aGlzLT5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoKTsKLSAgICBib29sIGNyZWF0ZXNDb250
YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0
b3IgfHwgbmVlZHNDb250YWluZXIoKTsKKyAgICBib29sIHNob3VsZERyYXdBdXRvRmlsbEJ1dHRv
biA9IHRoaXMtPnNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbigpOworI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQorICAgIGJvb2wgaGFzRGF0YUxpc3QgPSBlbGVtZW50KCktPmxpc3QoKTsKKyNl
bmRpZgorICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhhdmVTcGluQnV0dG9uIHx8
IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24K
KyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgfHwgaGFzRGF0YUxpc3QKKyNl
bmRpZgorICAgICAgICB8fCBuZWVkc0NvbnRhaW5lcigpOwogCi0gICAgbV9pbm5lclRleHQgPSBU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgaXNJbm5lclRleHRF
bGVtZW50RWRpdGFibGUpOworICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGVsZW1lbnQoKS0+aXNJbm5lclRleHRFbGVtZW50RWRp
dGFibGUoKSk7CiAKICAgICBpZiAoIWNyZWF0ZXNDb250YWluZXIpIHsKICAgICAgICAgZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1faW5uZXJUZXh0KTsKQEAgLTM1OCw3ICszNzEs
MTIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKIAogICAgICAgICBtX2NvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCAqbV9j
YXBzTG9ja0luZGljYXRvcik7CiAgICAgfQorCiAgICAgdXBkYXRlQXV0b0ZpbGxCdXR0b24oKTsK
KworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGRhdGFMaXN0TWF5SGF2ZUNoYW5n
ZWQoKTsKKyNlbmRpZgogfQogCiBIVE1MRWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjpjb250
YWluZXJFbGVtZW50KCkgY29uc3QKQEAgLTM3Myw3ICszOTEsNiBAQCBIVE1MRWxlbWVudCogVGV4
dEZpZWxkSW5wdXRUeXBlOjppbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0CiAKIFJlZlB0cjxUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IFRleHRGaWVsZElucHV0VHlwZTo6aW5uZXJUZXh0RWxl
bWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faW5uZXJUZXh0KTsKICAgICByZXR1cm4gbV9p
bm5lclRleHQ7CiB9CiAKQEAgLTQyNSw2ICs0NDIsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogCiB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogeworICAgIGlmICghaGFz
Q3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1faW5u
ZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+cmVsZWFzZUNhcHR1cmUo
KTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAgLTQzMyw2ICs0NTMsOSBA
QCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogCiB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQoKQogeworICAgIGlmICgh
aGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1f
aW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+cmVsZWFzZUNhcHR1
cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAgLTYxNiw5ICs2Mzks
MTQgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRl
KCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiB7
CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0
cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghc3VwcG9ydHNQbGFjZWhvbGRlcigp
KQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBTdHJpbmcg
cGxhY2Vob2xkZXJUZXh0ID0gZWxlbWVudCgpLT5wbGFjZWhvbGRlcigpOwogICAgIGlmIChwbGFj
ZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3BsYWNlaG9sZGVyKSB7CkBA
IC04MTYsMTMgKzg0NCwxNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0Zp
bGxCdXR0b24oQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9uVAogCiB2b2lkIFRleHRG
aWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogeworICAgIEFTU0VSVChlbGVt
ZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKIAogICAgIGlmIChz
aG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKSkgewogICAgICAgICBpZiAoIW1fY29udGFpbmVyKQog
ICAgICAgICAgICAgY3JlYXRlQ29udGFpbmVyKCk7CiAKLSAgICAgICAgQVNTRVJUKGVsZW1lbnQo
KSk7CiAgICAgICAgIEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblR5cGUgPSBlbGVt
ZW50KCktPmF1dG9GaWxsQnV0dG9uVHlwZSgpOwogICAgICAgICBpZiAoIW1fYXV0b0ZpbGxCdXR0
b24pCiAgICAgICAgICAgICBjcmVhdGVBdXRvRmlsbEJ1dHRvbihhdXRvRmlsbEJ1dHRvblR5cGUp
OwpAQCAtODQ2LDYgKzg3OCw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRv
RmlsbEJ1dHRvbigpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVD
aGFuZ2VkKCkKIHsKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAg
IHJldHVybjsKKwogICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07CiAKICAgICBpZiAoIW1f
ZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5oCmluZGV4IDVhMjQzMjc2NWYxY2Q2OGE0NjFhODg1MzUzMjU4Mjg1ZmU0OTlmNDku
LjRlMWJiMTU0YzVhN2I1NjFjYjU0NGZlMmQ2ZmZiODdmMDJhYzllM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNzAsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0OwotICAg
IHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjhjZWJkZDYzMGE4NzAz
MzEzY2E4NTQ3MGZiNjIxNzgyNzZkZGUyYy4uZjY1ZjU4ZGVkMjg1YmJiZDE1MzdiZGJiZjE2MDhl
NmE4NDhlMDI4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTI1ICBDYW1lcm9uIE1j
Q29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpbnB1dCBlbGVtZW50
IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEFkaXR5
YSBLZWVydGhpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0
aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbGF6eS1zaGFk
b3ctdHJlZS1jcmVhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xhenkt
c2hhZG93LXRyZWUtY3JlYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoc3VwcG9ydHNUeXBlKToK
KyAgICAgICAgKG1ha2VBbmRBcHBlbmRJbnB1dCk6CisKIDIwMjItMDItMjUgIFJvYmVydCBKZW5u
ZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjIHdrMSBdIDdYIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyZXZlbnQgKGxheW91
dC10ZXN0cykgYXJlIGZsYWt5IHRleHQgZmFpbHVyZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWV4cGVjdGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWE2MmNjNDQwYWU0ZDEwNjNiYzQ3ODAyMjQ4OGE2NGMyOTMxZGNjYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJl
ZS1jcmVhdGlvbi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJsYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitydW4oeyB1c2VQYXJzZXI6IHRydWUgfSk7Cis8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDYyOGEwZDliOWU0Zjc5ZjQ0NGFkOTA0NWVkM2M5MjU5ZWIwYWM3
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ct
dHJlZS1jcmVhdGlvbi5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJsYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitydW4oeyB1c2VQYXJzZXI6IGZhbHNlIH0pOworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWI4ZmI5ZjlmYzljZjVhNTMzYzA1YmYxZDc2YjA5MzE1Mzc3ZDk0NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVh
dGlvbi5qcwpAQCAtMCwwICsxLDU3IEBACitjb25zdCB0eXBlcyA9IHsKKyAgICAiY29sb3IiOiB7
IHZhbHVlOiAiIzAwODAwMCIgfSwKKyAgICAiZGF0ZSI6IHsgdmFsdWU6ICIyMDIyLTAxLTAxIiB9
LAorICAgICJkYXRldGltZS1sb2NhbCI6IHsgdmFsdWU6ICIyMDIyLTAxLTAxIiB9LAorICAgICJl
bWFpbCI6IHsgdmFsdWU6ICJoZWxsb0BleGFtcGxlLmNvbSIgfSwKKyAgICAiZmlsZSI6IHsgfSwK
KyAgICAibW9udGgiOiB7IHZhbHVlOiAiMjAyMi0wMSIgfSwKKyAgICAibnVtYmVyIjogeyB2YWx1
ZTogIjEyMyIgfSwKKyAgICAicGFzc3dvcmQiOiB7IH0sCisgICAgInJhbmdlIjogeyB2YWx1ZTog
Ijc1IiB9LAorICAgICJzZWFyY2giOiB7IHZhbHVlOiAiYWJjIiB9LAorICAgICJ0ZWxlcGhvbmUi
OiB7IHZhbHVlOiAiKzYxMzAwMDAwMDAwIiB9LAorICAgICJ0ZXh0IjogeyB2YWx1ZTogImFiYyIg
fSwKKyAgICAidGltZSI6IHsgdmFsdWU6ICIxMDowMCIgfSwKKyAgICAidXJsIjogeyB2YWx1ZTog
Imh0dHBzOi8vZXhhbXBsZS5jb20vIiB9LAorICAgICJ3ZWVrIjogeyB2YWx1ZTogIjIwMjItVzEi
IH0sCit9OworCitmdW5jdGlvbiBzdXBwb3J0c1R5cGUodHlwZU5hbWUpIHsKKyAgICBsZXQgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgZS50eXBlID0gdHlwZU5hbWU7
CisgICAgcmV0dXJuIGUudHlwZSA9PSB0eXBlTmFtZTsKK30KKworZnVuY3Rpb24gbWFrZUFuZEFw
cGVuZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCBhdHRyaWJ1dGVzID0geyB9KSB7CisgICAgbGV0
IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmQoc3Bhbik7CisKKyAgICBpZiAob3B0aW9ucy51c2VQYXJzZXIpIHsKKyAgICAgICAg
bGV0IHRhZyA9IGA8aW5wdXQgdHlwZT0iJHt0eXBlTmFtZX0iYDsKKyAgICAgICAgZm9yIChsZXQg
bmFtZSBpbiBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgdGFnICs9IGAgJHtuYW1lfT0iJHthdHRy
aWJ1dGVzW25hbWVdfSJgOworICAgICAgICB0YWcgKz0gIj4iOworICAgICAgICBzcGFuLmlubmVy
SFRNTCA9IHRhZzsKKyAgICB9IGVsc2UgeworICAgICAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICBpbnB1dC50eXBlID0gdHlwZU5hbWU7Cisg
ICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0cmlidXRlcykKKyAgICAgICAgICAgIGlucHV0LnNl
dEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGVzW25hbWVdKTsKKyAgICAgICAgc3Bhbi5hcHBlbmQo
aW5wdXQpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuKG9wdGlvbnMpIHsKKyAgICBmb3IgKGxl
dCB0eXBlTmFtZSBpbiB0eXBlcykgeworICAgICAgICBpZiAoIXN1cHBvcnRzVHlwZSh0eXBlTmFt
ZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBsZXQgdHlwZSA9IHR5cGVzW3R5
cGVOYW1lXTsKKyAgICAgICAgbWFrZUFuZEFwcGVuZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lKTsK
KworICAgICAgICBpZiAodHlwZS52YWx1ZSkKKyAgICAgICAgICAgIG1ha2VBbmRBcHBlbmRJbnB1
dChvcHRpb25zLCB0eXBlTmFtZSwgeyB2YWx1ZTogdHlwZS52YWx1ZSB9KTsKKworICAgICAgICBt
YWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywgdHlwZU5hbWUsIHsgdmFsdWU6IHR5cGUudmFsdWUs
IGRpc2FibGVkOiAiZGlzYWJsZWQiIH0pOworICAgIH0KK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453309</attachid>
            <date>2022-02-26 14:03:33 -0800</date>
            <delta_ts>2022-02-27 17:17:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237224-20220227090331.patch</filename>
            <type>text/plain</type>
            <size>12061</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU4NDk4NzY5NWJlM2Jh
ZmY3NTY1NTA2OTVkM2U5ODc0NjllMzc1OC4uMjVjYTk1ZDdlYTU1ZmFjNDE2NzE1NDkyMjM5ZDNl
OTQ1OGYwMjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTAyLTI2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbWVjaGFu
aXNtIHRvIHJlcXVlc3QgYSBVQSBzaGFkb3cgdHJlZSB1cGRhdGUgYmVmb3JlIHN0eWxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkcgPHVzZT4gZWxl
bWVudHMgcmVnaXN0ZXIgdGhlbXNlbHZlcyB3aXRoIHRoZSBkb2N1bWVudCB3aGVuIHRoZWlyCisg
ICAgICAgIHNoYWRvdyB0cmVlIGNvbnRlbnRzIG5lZWQgdXBkYXRpbmcsIGFuZCB0aGlzIHVwZGF0
aW5nIGlzIGRvbmUgaW4KKyAgICAgICAgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZS4gRm9yIGxhenkg
SFRNTCA8aW5wdXQ+IGVsZW1lbnQgVUEgc2hhZG93IHRyZWVzCisgICAgICAgIChpbiBidWcgMjM2
NzQ3KSB3ZSBuZWVkIHNvbWV0aGluZyBzaW1pbGFyLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXNvbHZlU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRv
d1RyZWVVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUVsZW1lbnRX
aXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojp1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6flNWR0RvY3VtZW50RXh0ZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVV
cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjpyZW1vdmVVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnVzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVl
VXBkYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnVwZGF0ZVVzZXJBZ2VudFNoYWRvd1Ry
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1Ry
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAyMi0wMi0yNiAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRh
dGUgQ1NQIGhhbmRsaW5nIG9mIGphdmFzY3JpcHQgVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggOTU1Zjc0NjZjM2FlNzU0NzYzNGI0OTcwZjllOTZiNDYzOGFkNzRiNS4uMzUzNDFjYmU3
ZjkwMjE5YjAwNzUzZDZiODExNjdjOGNiNDAyN2RkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0yMDA1LDE0ICsyMDA1LDE3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNv
bHZlU3R5bGVUeXBlIHR5cGUpCiAKICAgICBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11
bGF0b3IgcmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKHJlbmRlclZpZXcoKSk7CiAKLSAgICAvLyBG
SVhNRTogRG8gdGhpcyB1cGRhdGUgcGVyIHRyZWUgc2NvcGUuCi0gICAgaWYgKGF1dG8qIGV4dGVu
c2lvbnMgPSBtX3N2Z0V4dGVuc2lvbnMuZ2V0KCkpIHsKLSAgICAgICAgYXV0byBlbGVtZW50cyA9
IGNvcHlUb1ZlY3Rvck9mPFJlZjxTVkdVc2VFbGVtZW50Pj4oZXh0ZW5zaW9ucy0+dXNlRWxlbWVu
dHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoKSk7Ci0gICAgICAgIC8vIFdlIGNhbid0IGNs
ZWFyIG1fc3ZnVXNlRWxlbWVudHMgaGVyZSBiZWNhdXNlIHVwZGF0ZVNoYWRvd1RyZWUgbWF5IGVu
ZCB1cCBleGVjdXRpbmcgYXJiaXRyYXJ5IHNjcmlwdHMKLSAgICAgICAgLy8gd2hpY2ggbWF5IGlu
c2VydCBuZXcgU1ZHIHVzZSBlbGVtZW50cyBvciByZW1vdmUgZXhpc3Rpbmcgb25lcyBpbnNpZGUg
c3luYyBJUEMgdmlhIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudC4KLSAgICAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCi0gICAgICAgICAgICBlbGVtZW50LT51cGRhdGVT
aGFkb3dUcmVlKCk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiBEbyB0aGlzIHVzZXIgYWdlbnQgc2hh
ZG93IHRyZWUgdXBkYXRlIHBlciB0cmVlIHNjb3BlLgorCisgICAgLy8gV2UgY2FuJ3QgY2xlYXIg
bV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZXMgaGVyZQorICAg
IC8vIGJlY2F1c2UgU1ZHVXNlRWxlbWVudDo6dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSBtYXkg
ZW5kIHVwIGV4ZWN1dGluZworICAgIC8vIGFyYml0cmFyeSBzY3JpcHRzIHdoaWNoIG1heSBpbnNl
cnQgbmV3IFNWRyB1c2UgZWxlbWVudHMgb3IgcmVtb3ZlCisgICAgLy8gZXhpc3Rpbmcgb25lcyBp
bnNpZGUgc3luYyBJUEMgdmlhIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudC4KKyAgICAv
LworICAgIC8vIEluc3RlYWQsIGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB1cGRhdGVVc2Vy
QWdlbnRTaGFkb3dUcmVlIHRvCisgICAgLy8gcmVtb3ZlIHRoZSBlbGVtZW50LgorICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZjxFbGVtZW50Pj4obV9lbGVtZW50c1dp
dGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZXMpKQorICAgICAgICBlbGVtZW50LT51
cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVw
ZGF0ZSBzdHlsZSBvbiBvdXIgYW5jZXN0b3IgY2hhaW4gYmVmb3JlIHByb2NlZWRpbmcsIGhvd2V2
ZXIgZG9pbmcgc28gYXQKICAgICAvLyB0aGUgdGltZSB0aGlzIGNvbW1lbnQgd2FzIG9yaWdpbmFs
bHkgd3JpdHRlbiBjYXVzZWQgc2V2ZXJhbCB0ZXN0cyB0byBjcmFzaC4KQEAgLTkwODYsNiArOTA4
OSwyMCBAQCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBEb2N1bWVudDo6c2Vzc2lvbklE
KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCit2b2lkIERvY3VtZW50Ojph
ZGRFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmIGVs
ZW1lbnQpCit7CisgICAgQVNTRVJUKCZlbGVtZW50LmRvY3VtZW50KCkgPT0gdGhpcyk7CisgICAg
YXV0byByZXN1bHQgPSBtX2VsZW1lbnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBk
YXRlcy5hZGQoZWxlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihyZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZUVs
ZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYgZWxlbWVu
dCkKK3sKKyAgICBBU1NFUlQoJmVsZW1lbnQuZG9jdW1lbnQoKSA9PSB0aGlzKTsKKyAgICBtX2Vs
ZW1lbnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlcy5yZW1vdmUoZWxlbWVu
dCk7CisgICAgLy8gRklYTUU6IEFzc2VydCB0aGF0IGVsZW1lbnQgd2FzIGluIG1fZWxlbWVudHNX
aXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGVzIG9uY2UgcmUtZW50cmFuY3kgdG8g
dXBkYXRlIHN0eWxlIGFuZCBsYXlvdXQgaGF2ZSBiZWVuIHJlbW92ZWQuCit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIERPQ1VNRU5UX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IGMxYmVjY2QyMWFiMTMxNmFlMDMwNGU5NzkzOWM3YTI2NjI0MjM2MTMuLjA1
NzM1ZjVjMmIzMThmZjZjZTU2ODU1MTkyZGJjMDFkN2I5NGQxMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC0xNjczLDYgKzE2NzMsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNyZWF0ZU5ld0lk
ZW50aWZpZXIoKTsKIAorICAgIHZvaWQgYWRkRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hh
ZG93VHJlZVVwZGF0ZShFbGVtZW50Jik7CisgICAgdm9pZCByZW1vdmVFbGVtZW50V2l0aFBlbmRp
bmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmKTsKKwogcHJvdGVjdGVkOgogICAg
IGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxh
Y2Vob2xkZXIgPSAxIDw8IDEgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudChGcmFtZSos
IGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJiwgRG9jdW1lbnRDbGFzc2VzID0geyB9LCB1bnNp
Z25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDAsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyID0geyB9KTsKQEAgLTIyNjQsNiArMjI2Nyw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI+IG1fbW9kYWxDb250YWluZXJPYnNlcnZlcjsK
IAogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX3doZW5Jc1Zpc2libGVIYW5kbGVyczsK
KworICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQ+IG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2Vu
dFNoYWRvd1RyZWVVcGRhdGVzOwogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9y
RG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDYyMDliZTYyYTcwNDY0
ZmVjNzMzMzQ1ZTY1NTM2M2RjY2ZlOWY1ODguLjY5ZWIzM2I1MjNhODkyYWI4YjhhZmQ4MjExMTVi
MDA1YmY1NjlkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjY0LDYgKzY2NCw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0R1cGxpY2F0ZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
RHVwbGljYXRlQXR0cmlidXRlOyB9OwogICAgIHZvaWQgc2V0SGFzRHVwbGljYXRlQXR0cmlidXRl
KGJvb2wgaGFzRHVwbGljYXRlQXR0cmlidXRlKSB7IG1faGFzRHVwbGljYXRlQXR0cmlidXRlID0g
aGFzRHVwbGljYXRlQXR0cmlidXRlOyB9OwogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVVzZXJB
Z2VudFNoYWRvd1RyZWUoKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggODYzMmYwMmY0YmY2YmQ1
YzIwMTc1ZjMxMzYzMzU2MTMyY2FhZjRlYi4uODQwZTRkOThjMDNhMjIzZTcyODlhZGMxZjYyMGI3
OTYxZDFkMzVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAKQEAgLTQ4LDEwICs0OCw3IEBAIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1l
bnRFeHRlbnNpb25zKERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0KIAotU1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjp+U1ZHRG9jdW1lbnRFeHRlbnNpb25zKCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1Ry
ZWVVcGRhdGUuY29tcHV0ZXNFbXB0eSgpKTsKLX0KK1NWR0RvY3VtZW50RXh0ZW5zaW9uczo6flNW
R0RvY3VtZW50RXh0ZW5zaW9ucygpID0gZGVmYXVsdDsKIAogdm9pZCBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OmFkZFRpbWVDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKQEAgLTkw
LDIwICs4Nyw2IEBAIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OnJlc291cmNlQnlJZChjb25zdCBBdG9tU3RyaW5nCiAgICAgcmV0dXJuIG1fcmVzb3Vy
Y2VzLmdldChpZCk7CiB9CiAKLQotdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFVzZUVs
ZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoU1ZHVXNlRWxlbWVudCYgZWxlbWVudCkK
LXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVV
cGRhdGUuYWRkKGVsZW1lbnQpOwotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04ocmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cmVtb3ZlVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZShTVkdVc2VF
bGVtZW50JiBlbGVtZW50KQotewotICAgIG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1Ry
ZWVVcGRhdGUucmVtb3ZlKGVsZW1lbnQpOwotICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhhdCBlbGVt
ZW50IHdhcyBpbiBtX3N2Z1VzZUVsZW1lbnRzIG9uY2UgcmUtZW50cmFuY3kgdG8gdXBkYXRlIHN0
eWxlIGFuZCBsYXlvdXQgaGF2ZSBiZWVuIHJlbW92ZWQuCi19Ci0KLQogdm9pZCBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OnN0YXJ0QW5pbWF0aW9ucygpCiB7CiAgICAgLy8gRklYTUU6IEV2ZW50dWFs
bHkgZXZlcnkgIlRpbWUgQ29udGFpbmVyIiB3aWxsIG5lZWQgYSB3YXkgdG8gbGF0Y2ggb24gdG8g
c29tZSBnbG9iYWwgdGltZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1
bWVudEV4dGVuc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuaAppbmRleCBkYzI4NjllYTQ2MDYzODFkZTRmMmQ4OTA2NGIyNTE2ZGVhNmNiNWYwLi45YmJk
NzdiYmNjNTNiNThmOGQ5MDUxNmNkYmMxMzlhM2JkZDFmZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucyB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHRG9jdW1lbnRFeHRl
bnNpb25zKERvY3VtZW50Jik7CiAgICAgflNWR0RvY3VtZW50RXh0ZW5zaW9ucygpOwotICAgIAor
CiAgICAgdm9pZCBhZGRUaW1lQ29udGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKICAgICB2b2lkIHJl
bW92ZVRpbWVDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYpOwogCkBAIC01MSwxMCArNTEsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CiAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHJlc291cmNlQnlJZChjb25zdCBBdG9tU3Ry
aW5nJiBpZCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRv
d1RyZWVVcGRhdGUoU1ZHVXNlRWxlbWVudCYpOwotICAgIHZvaWQgcmVtb3ZlVXNlRWxlbWVudFdp
dGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZShTVkdVc2VFbGVtZW50Jik7Ci0gICAgY29uc3QgV2Vh
a0hhc2hTZXQ8U1ZHVXNlRWxlbWVudD4mIHVzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVl
VXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJl
ZVVwZGF0ZTsgfQotCiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHBhdXNl
QW5pbWF0aW9ucygpOwogICAgIHZvaWQgdW5wYXVzZUFuaW1hdGlvbnMoKTsKQEAgLTg2LDcgKzgy
LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUmVzb3VyY2VzQ2FjaGU+IG1f
cmVzb3VyY2VzQ2FjaGU7CiAKICAgICBWZWN0b3I8UmVmPFNWR0VsZW1lbnQ+PiBtX3JlYnVpbGRF
bGVtZW50czsKLSAgICBXZWFrSGFzaFNldDxTVkdVc2VFbGVtZW50PiBtX3VzZUVsZW1lbnRzV2l0
aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlOwogICAgIGJvb2wgbV9hcmVBbmltYXRpb25zUGF1c2Vk
OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggMDU0N2Nj
YTlkMjZmYmQwZjM5NTk1M2FhYTQ5ZWRiYTUyMjIwNjQyZC4uYjllZGVmNjMxZTY2ZTYwZmY1OGM3
NTIzNDk4MWUyMTQ1MzBlNGZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApA
QCAtMTAwLDcgKzEwMCw3IEBAIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR1Vz
ZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5CiAgICAgU1ZHR3JhcGhp
Y3NFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZklu
c2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkg
ewogICAgICAgICBpZiAobV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUpCi0gICAgICAgICAgICBkb2N1
bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFk
b3dUcmVlVXBkYXRlKCp0aGlzKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkRWxlbWVudFdp
dGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CiAgICAgICAgIGludmFs
aWRhdGVTaGFkb3dUcmVlKCk7CiAgICAgICAgIC8vIEZJWE1FOiBNb3ZlIGJhY2sgdGhlIGNhbGwg
dG8gdXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpIGhlcmUgb25jZSBub3RpZnlGaW5pc2hlZCBpcyBt
YWRlIGFsd2F5cyBhc3luYy4KICAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVz
dWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25DYWxsYmFjazsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lk
IFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5
cGUsIENvbnRhaW5lck5vZGUmCiAgICAgLy8gYW5kIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZUV4dGVy
bmFsRG9jdW1lbnQgd2hpY2ggY2FsbHMgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKS4KICAgICBpZiAo
cmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CiAgICAgICAgIGlmIChtX3No
YWRvd1RyZWVOZWVkc1VwZGF0ZSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0
ZW5zaW9ucygpLnJlbW92ZVVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoKnRo
aXMpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5yZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2Vy
QWdlbnRTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKICAgICB9CiAgICAgU1ZHR3JhcGhpY3NFbGVt
ZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlKTsKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CkBA
IC0yMTcsNyArMjE3LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJj
ZSgpCiAgICAgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50
Ojp1cGRhdGVTaGFkb3dUcmVlKCkKK3ZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlVXNlckFnZW50
U2hhZG93VHJlZSgpCiB7CiAgICAgbV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgPSBmYWxzZTsKIApA
QCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSgp
CiAKICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBkb2N1bWVu
dCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFk
b3dUcmVlVXBkYXRlKCp0aGlzKTsKKyAgICBkb2N1bWVudCgpLnJlbW92ZUVsZW1lbnRXaXRoUGVu
ZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOwogCiAgICAgU3RyaW5nIHRhcmdl
dElEOwogICAgIGF1dG8qIHRhcmdldCA9IGZpbmRUYXJnZXQoJnRhcmdldElEKTsKQEAgLTUzMCw3
ICs1MzAsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmludmFsaWRhdGVTaGFkb3dUcmVlKCkKICAg
ICBpbnZhbGlkYXRlU3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CiAgICAgaW52YWxpZGF0
ZURlcGVuZGVudFNoYWRvd1RyZWVzKCk7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCi0gICAgICAg
IGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZFVzZUVsZW1lbnRXaXRoUGVuZGlu
Z1NoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOworICAgICAgICBkb2N1bWVudCgpLmFkZEVsZW1lbnRX
aXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOwogfQogCiB2b2lkIFNW
R1VzZUVsZW1lbnQ6OmludmFsaWRhdGVEZXBlbmRlbnRTaGFkb3dUcmVlcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuaAppbmRleCA2OWVmYWZmYTk0MGYwMjA4OTE1NTg2MDc1YzkxNTUyOGQx
ZWNjNDc5Li5jNDJkOGU1MzJlNmEyMWM2NmRkNzUyNTNmYjcxODI1MTIwMGUyNzU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTM4LDggKzM4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgflNWR1VzZUVsZW1lbnQoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVNoYWRvd1RyZWUo
KTsKLSAgICBib29sIHNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
ZG93VHJlZU5lZWRzVXBkYXRlOyB9Ci0gICAgdm9pZCB1cGRhdGVTaGFkb3dUcmVlKCk7CisgICAg
dm9pZCB1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlKCkgZmluYWw7CiAKICAgICBSZW5kZXJFbGVt
ZW50KiByZW5kZXJlckNsaXBDaGlsZCgpIGNvbnN0OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>