<?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>236487</bug_id>
          
          <creation_ts>2022-02-10 23:30:39 -0800</creation_ts>
          <short_desc>WebGL context should use discrete gpu if the context is created when the window is on external monitor, ANGLE Metal backend</short_desc>
          <delta_ts>2022-03-14 05:46:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237597</see_also>
          <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>
          <dependson>237313</dependson>
    
    <dependson>237522</dependson>
          <blocked>223434</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>geofflang</cc>
    
    <cc>gman</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonahr</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1840226</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-10 23:30:39 -0800</bug_when>
    <thetext>WebGL context should use discrete gpu if the context is created when the window is on external monitor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843297</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-17 23:31:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/89131272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848274</commentid>
    <comment_count>2</comment_count>
      <attachid>453837</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-04 06:34:16 -0800</bug_when>
    <thetext>Created attachment 453837
WIP for monday</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849212</commentid>
    <comment_count>3</comment_count>
      <attachid>454109</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-08 05:22:47 -0800</bug_when>
    <thetext>Created attachment 454109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849387</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2022-03-08 13:16:20 -0800</bug_when>
    <thetext>Adding Kyle and ANGLE folks as FYI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849389</commentid>
    <comment_count>5</comment_count>
      <attachid>454109</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2022-03-08 13:21:10 -0800</bug_when>
    <thetext>Comment on attachment 454109
Patch

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

Looks great. A couple of small comments, but r+.

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm:161
&gt; +            // is anyway already powered on.

Perhaps mention here that this code relies on the assumption that EGL_ANGLE_platform_angle_device_id uses the IOKit registry ID of the GPU on Mac platforms?

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm:163
&gt; +                displayAttributes.append(EGL_PLATFORM_ANGLE_DEVICE_ID_HIGH_ANGLE);

Would you like to at least ASSERT the availability of the EGL_ANGLE_platform_angle_device_id EGL client extension somewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849578</commentid>
    <comment_count>6</comment_count>
      <attachid>454207</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-09 01:19:39 -0800</bug_when>
    <thetext>Created attachment 454207
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850842</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-14 05:46:47 -0700</bug_when>
    <thetext>Committed r291224 (248379@main): &lt;https://commits.webkit.org/248379@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454207.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453837</attachid>
            <date>2022-03-04 06:34:16 -0800</date>
            <delta_ts>2022-03-08 05:22:41 -0800</delta_ts>
            <desc>WIP for monday</desc>
            <filename>bug-236487-20220304163414.patch</filename>
            <type>text/plain</type>
            <size>29685</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJjMTRjYzcwNTc1NGE2
NTQyNWY1YmM3MmZiMGJlMjNiYjJjN2RmMC4uZmQ3NmIzZjk0MWExYjljMWUyNTAxMzYwNWQ4Mjhm
ZTM3ZGE2M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAzLTA0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgY29udGV4
dCBzaG91bGQgdXNlIGRpc2NyZXRlIGdwdSBpZiB0aGUgY29udGV4dCBpcyBjcmVhdGVkIHdoZW4g
dGhlIHdpbmRvdyBpcyBvbiBleHRlcm5hbCBtb25pdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0ODcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgV0lQIHByb2JhYmx5IG5lZWRzIGEgYml0IG9mIGRpZmZl
cmVudCBzdHJ1Y3R1cmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojpj
cmVhdGVHcmFwaGljc0NvbnRleHRHTCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0
Zm9ybUluaXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpp
c0Rpc3BsYXlPbkhpZ2hQZXJmb3JtYW5jZUdQVSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpncHVJREZvckRpc3BsYXlNYXNrKToKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmlj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6aW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKToKKwogMjAyMi0wMy0wNCAgS2ltbW8gS2lubnVuZW4gIDxra2lu
bnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEl0ZXJhdGlvbiB0byBzZWFyY2ggZm9yIGxlYXN0
IGFjdGl2ZSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIGNvdWxkIHVzZSBtaW5fZWxlbWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBjZTlhMDU5ZDNiMTE4MGU1NjBlODkxMjg2NzA0MjI5OWMyYzE2ZWE1Li4zNzAw
MjdlZGE1OWNmODJlZjYyMzg3NWRmZTZjMTBiZGRkNTE2Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDIyLTAzLTA0ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViR0wgY29udGV4dCBzaG91bGQgdXNlIGRpc2NyZXRlIGdwdSBpZiB0aGUg
Y29udGV4dCBpcyBjcmVhdGVkIHdoZW4gdGhlIHdpbmRvdyBpcyBvbiBleHRlcm5hbCBtb25pdG9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwbGF0Zm9ybVdvcmtRdWV1
ZUluaXRpYWxpemUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hOjpwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUpOgorCiAyMDIyLTAzLTAzICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyOTA4MTUpOiBGaXggZXZlbiBtb3JlIGluY29ycmVjdCAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKSB1c2FnZSBpbiBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1YjE4ODYw
NzI2ZjI5OTAzN2JlMGNhYzk3NjhjYmM1ODRmNTk0ZGM2Li5iYTU5YmM4ZDY1M2QxZDMzMDYzY2Zm
ZmM2NjIyYWQ3YThmMTA4OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtOTE1LDcgKzkxNSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgICAgIGNvbnRleHQgPSBob3N0V2luZG93LT5j
cmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKTsKICAgICBlbHNlIHsKICAgICAgICAg
Ly8gRklYTUU6IE9mZnNjcmVlbkNhbnZhcyBkb2VzIG5vdCBzdXBwb3J0IEdQVSBwcm9jZXNzLgot
ICAgICAgICBjb250ZXh0ID0gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMpOworICAgICAgICBjb250ZXh0ID0gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4
dEdMKGF0dHJpYnV0ZXMsIHsgfSk7CiAgICAgfQogICAgIGlmICghY29udGV4dCkgewogICAgICAg
ICBpZiAoY2FudmFzRWxlbWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDZmNGJkY2Q1MGNhNmNlMDdjNmU3MTY4NmYwODdhZWE1ZGVlNjkwNzUuLjg0YzhjY2FiYjE5
MjU4YTA4NWMyNTIzYzRlMWEwYjI1MTYzMGFhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5jcHAKQEAgLTM3LDkgKzM3LDkgQEAgQ2hyb21lQ2xpZW50OjpDaHJvbWVDbGllbnQoKSA9
IGRlZmF1bHQ7CiBDaHJvbWVDbGllbnQ6On5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICNp
ZiBFTkFCTEUoV0VCR0wpCi1SZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IENocm9tZUNsaWVudDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QKK1JlZlB0cjxH
cmFwaGljc0NvbnRleHRHTD4gQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3JlYXRlV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIHJldHVybiBjcmVhdGVX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZGlzcGxheUlEKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVl
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAppbmRleCBiZTM3
M2YwODAxNDA3MjhkM2UwYmZjMWU3ZGI5ZjE2M2VkM2FlZGM4Li42MWU2MGU0MmE4OTNhNjZjN2I4
ODRmZTRiMjAzZTZiYTU4ZTA1NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U2NyZWVuLmgKQEAgLTY1LDcgKzY1LDcgQEAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50
MzJfdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotdXNpbmcgSU9SZWdpc3RyeUdQVUlEID0gaW50
NjRfdDsgLy8gR2xvYmFsIElPS2l0IEkvTyByZWdpc3RyeUlEIHRoYXQgY2FuIG1hdGNoIGEgR1BV
IGFjcm9zcyBwcm9jZXNzIGJvdW5kYXJpZXMuCit1c2luZyBJT1JlZ2lzdHJ5R1BVSUQgPSB1aW50
NjRfdDsgLy8gR2xvYmFsIElPS2l0IEkvTyByZWdpc3RyeUlEIHRoYXQgY2FuIG1hdGNoIGEgR1BV
IGFjcm9zcyBwcm9jZXNzIGJvdW5kYXJpZXMuCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA2ODk4
NzdjNGMwNWNjY2ViZTZhMGNhMmJkNjNlNmI3NDAxZmRhMGJlLi5iZjY1NzdjYWEzMjQxZGQyNTgy
OTcwMzA3ZTBmNDEyYTU5ZjU0ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTU4LDYgKzU4LDggQEAgY2xhc3Mg
TWVkaWFQbGF5ZXI7CiBjbGFzcyBNZWRpYVNhbXBsZTsKICNlbmRpZgogCit1c2luZyBQbGF0Zm9y
bURpc3BsYXlJRCA9IHVpbnQzMl90OworCiAvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250
ZXh0IGZvciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVi
bGljOgpAQCAtMTUyMCw3ICsxNTIyLDcgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgbV9hdHRyczsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUGxhdGZvcm1EaXNwbGF5SUQpOwogCiBpbmxpbmUgR0NH
TGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdChHQ0dMZW51bSBwbmFtZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggODcyMTI1NDFjNjA2OGMwYWNlMmMy
OTA1Nzc5ODIzMjEzMTFlZWQwNS4uYTVkNGEzNWY2MmQyZGNjNWFjNDJmNzUyMzIyOGNlZDUzNmRm
NjY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTY5LDkgKzY5LDkg
QEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXgKICNlbmRpZgogCiAKLWJvb2wgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6aW5pdGlhbGl6ZSgpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewotICAgIGlmICghcGxhdGZv
cm1Jbml0aWFsaXplQ29udGV4dCgpKQorICAgIGlmICghcGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dChkaXNwbGF5SUQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIGV4dGVuc2lv
bnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3Ry
aW5nKEdMX0VYVEVOU0lPTlMpKSk7CiAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNp
b25zU3RyaW5nLnNwbGl0KCcgJykpCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6aW5pdGlhbGl6ZSgpCiAgICAgcmV0dXJuIHBsYXRmb3JtSW5pdGlhbGl6ZSgp
OwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNv
bnRleHQoKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemVD
b250ZXh0KFBsYXRmb3JtRGlzcGxheUlEKQogewogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGRjMGMxMzFlNDE4YzU1NWFiMGNiY2E3ZDAxZWRl
MWFiMjdiM2FiMzMuLmI2MTkwNzdmZDUxNzk1MGQyOWZkMDdhMGM0ODU4ZDU4YTFkMDdhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTM3MSwxMCArMzcxLDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
IAogICAgIC8vIEluaXRpYWxpemVzIHRoZSBpbnN0YW5jZS4gUmV0dXJucyBmYWxzZSBpZiB0aGUg
aW5zdGFuY2Ugc2hvdWxkIG5vdCBiZSB1c2VkLgotICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworICAg
IGJvb2wgaW5pdGlhbGl6ZShXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgLy8gQ2Fs
bGVkIGZpcnN0IGJ5IGluaXRpYWxpemUoKS4gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdG8g
aW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJpdHMgb2YgRUdMQ29udGV4dC4KICAg
ICAvLyBGSVhNRTogQ3VycmVudGx5IHBsYXRmb3JtcyBkbyBub3Qgc2hhcmUgdGhlIGNvbnRleHQg
Y3JlYXRpb24uIFRoZXkgc2hvdWxkLgotICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxp
emVDb250ZXh0KCk7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQo
V2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOwogICAgIC8vIENhbGxlZCBsYXN0IGJ5IGluaXRp
YWxpemUoKS4gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdG8gaW5zdGFudGlhdGUgcGxhdGZv
cm0gc3BlY2lmaWMgc3RhdGUgdGhhdCBkZXBlbmQgb24KICAgICAvLyB0aGUgc2hhcmVkIHN0YXRl
LgogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuaAppbmRleCBjMzFmNWVmYmUyZWE4MjBkYzcwZmQ1MGQ1N2EyODcxY2MzOTZm
OTBmLi4zNzYwNDIxYWU0NTQyYjBhODhmYTMyZTNmMjllMGNkYWUwNzQ4ZDdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIEltYWdlUm90YXRp
b25TZXNzaW9uVlQ7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiYsIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIpOwor
ICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJj
ZU93bmVyLCBQbGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgfkdyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KTsKICAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKTsKICAgICB2b2lkIG1hcmtEaXNwbGF5
QnVmZmVySW5Vc2UoKTsKQEAgLTg4LDcgKzg4LDcgQEAgcHJvdGVjdGVkOgogICAgIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYsIFBy
b2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIpOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRSBvdmVycmlkZXMuCi0gICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkg
ZmluYWw7CisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KFBsYXRmb3JtRGlzcGxh
eUlEKSBmaW5hbDsKICAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIHZv
aWQgaW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpIGZpbmFsOwogICAgIGJv
b2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5tbQppbmRleCA3YmZlODVkNWYwNjUxN2QzOTQ3MWQzM2Y3YjlmN2E4MDAxZGE5
NGJkLi4yMGQ1YWE4NWMyNzZkN2FkNjI1YTJiNmVhOTc2MjQ0ZTU2ZWNmYWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIlBpeGVs
QnVmZmVyLmgiCiAjaW1wb3J0ICJQcm9jZXNzSWRlbnRpdHkuaCIKICNpbXBvcnQgIlJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oIgorI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbXBvcnQg
PENvcmVHcmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KICNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL01ldGFsU1BJLmg+CkBAIC0xODUsMTAgKzE4NiwyNSBA
QCBzdGF0aWMgYm9vbCBuZWVkc0VBR0xPbk1hYygpCiB9CiAjZW5kaWYKIAotUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMQ29jb2E+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNv
dXJjZU93bmVyKQorI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBib29sIGlzRGlzcGxheU9uSGln
aFBlcmZvcm1hbmNlR1BVKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICBhdXRv
IGRldmljZXMgPSBhZG9wdE5TKE1UTENvcHlBbGxEZXZpY2VzKCkpOworICAgIGlmIChbZGV2aWNl
cyBjb3VudF0gPD0gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gZ3B1SUQgPSBn
cHVJREZvckRpc3BsYXkoZGlzcGxheUlEKTsKKyAgICBmb3IgKGF1dG8gZGV2aWNlIGluIGRldmlj
ZXMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKFtkZXZpY2UgcmVnaXN0cnlJRF0gPT0gZ3B1SUQpCisg
ICAgICAgICAgICByZXR1cm4gIWRldmljZS5sb3dQb3dlcjsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorI2VuZGlmCisKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTENvY29hPiBHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0
cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lciwgUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQogewogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBXVEZNb3ZlKHJlc291cmNlT3du
ZXIpKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCisgICAgaWYgKCFjb250ZXh0
LT5pbml0aWFsaXplKGRpc3BsYXlJRCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBjb250ZXh0OwogfQpAQCAtMjE4LDcgKzIzNCw3IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJzCiB7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFs
aXplQ29udGV4dCgpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRmb3JtSW5pdGlh
bGl6ZUNvbnRleHQoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogICAgIEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICAg
ICBtX2lzRm9yV2ViR0wyID0gYXR0cmlidXRlcy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250
ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMjsKQEAgLTIzOSw2ICsyNTUsMTIgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkKICAgICAgICAg
c2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQogI2VuZGlmCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIGlmICghYXR0cmlidXRlcy5mb3JjZVJlcXVlc3RGb3JIaWdoUGVyZm9y
bWFuY2VHUFUpCisgICAgICAgIGF0dHJpYnV0ZXMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1h
bmNlR1BVID0gaXNEaXNwbGF5T25IaWdoUGVyZm9ybWFuY2VHUFUoZGlzcGxheUlEKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGRpc3BsYXlJRCk7CisjZW5kaWYKIAogICAgIG1fZGlzcGxheU9i
aiA9IGluaXRpYWxpemVFR0xEaXNwbGF5KGF0dHJpYnV0ZXMpOwogICAgIGlmICghbV9kaXNwbGF5
T2JqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpp
bmRleCBiOTlhYjZlMmI2Mzk4Yzg5YWNmNDQ0OTg4ZmQ3MWEwNDdhNmRmZTg2Li40MWU4YmY5ODQ3
OTM2OWE5NWJiZmE1YjZiOWU1ODc4NjMyYzliODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6
CiAgICAgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYpOwogCiAgICAgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKLSAgICBmcmllbmQgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dEdMPiBXZWJDb3JlOjpjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgZnJpZW5kIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFBsYXRmb3JtRGlzcGxheUlEKTsK
ICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiB9OwogCkBAIC0xNDMs
MTAgKzE0MywxMCBAQCB2b2lkIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hOjpkaXNw
bGF5V2FzUmVjb25maWd1cmVkKCkKIAogfQogCi1SZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKICAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KSk7Ci0gICAgaWYgKCFj
b250ZXh0LT5pbml0aWFsaXplKCkpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKGRpc3Bs
YXlJRCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBjb250ZXh0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IDc1YmMz
MmYzZmJlYmU3OTEwNjRiOWE1YjEzZWFkNzRkYzllNzk3YmUuLmNhNGI4YTA4NjczMDYwMTQ3ZDc4
N2M4NzNjYzkzZGUxMmQ1MWM4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lm
IFVTRShBTkdMRSkKLSAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKSBmaW5hbDsK
KyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoV2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5SUQpIGZpbmFsOwogI2VuZGlmCiAgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBmaW5h
bDsKICAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggYTJkNzFkMWU5NzY4YWFlZTUxYmRlMzFl
MjE5NjQxZmQ2NmNiMGM4Mi4uNzIyNTNlOWE2ZWE5MTVmMGQ1ZjA3OGI0ZDJmYTAxMzBmOWJmNDBl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBo
aWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpCiB7CiB9
CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUluaXRpYWxp
emVDb250ZXh0KCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9y
bUluaXRpYWxpemVDb250ZXh0KFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKQogewogICAgIEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMo
KTsKICNpZiBFTkFCTEUoV0VCR0wyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtU2NyZWVuTWFjLm1tCmluZGV4IDY0MjkwY2FjZjIzMjc1NTM3M2I4YjJkMDBjMmM3
ZDQ5NTQ5YWEwMmQuLmEzOTI0YWQ5NzVmOTY0NDZkYTUwODA1ZTY0YzNjYzk3Y2I4YzdjMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0K
QEAgLTIzOCw3ICsyMzgsNyBAQCBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JEaXNwbGF5TWFzayhH
THVpbnQgZGlzcGxheU1hc2spCiAgICAgfQogCiAgICAgQ0dMRGVzdHJveVJlbmRlcmVySW5mbyhy
ZW5kZXJlckluZm8pOwotICAgIHJldHVybiAoSU9SZWdpc3RyeUdQVUlEKSBncHVJREhpZ2ggPDwg
MzIgfCBncHVJRExvdzsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SU9SZWdpc3RyeUdQVUlEPihn
cHVJREhpZ2gpIDw8IDMyIHwgc3RhdGljX2Nhc3Q8R0x1aW50PihncHVJRExvdyk7CiB9CiAKIHN0
YXRpYyBjb25zdCBTY3JlZW5EYXRhKiBzY3JlZW5Qcm9wZXJ0aWVzKFdpZGdldCogd2lkZ2V0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCmluZGV4IGVkNGNlYzJh
MjRkNzQ1OWNjMjZkNWIyYWI0MDllMTU5ZWRjMTcxMDIuLjU4NzQ3NWZkMDFmYTlhZTc5NDE4MGI2
YWRkM2FjZjg5MDQwN2MyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2Vi
RmFrZVhSRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRl
dmljZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjppbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpCiAgICAg
YXR0cmlidXRlcy5kZXB0aCA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IGZhbHNl
OwogICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7Ci0gICAgbV9nbCA9IGNyZWF0ZVdl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKTsKKyAgICBtX2dsID0gY3JlYXRl
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIHsgfSk7CiAKICAgICBpZiAo
bV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCkgewogICAgICAgICAvLyBXZWJYUiBGYWtlRGV2
aWNlIHdhaXRzIGZvciBzaW11bGF0ZUlucHV0Q29ubmVjdGlvbiBjYWxscyB0byBhZGQgaW5wdXQg
c291cmNlcy0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBiNDNkYmJlZjg0NjQ2MjMwN2Y4MjZkZDBhZTFkODJk
YTk2ZGI4NzEzLi40ZWQyYjVhNWFjMmQ0NTQ3NTJhMjJjOTdjZDhiNmUyZDlmMmZlNWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKIH0K
IAogI2lmIEVOQUJMRShXRUJHTCkKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCit2b2lkIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJDb3JlOjpQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0p
CiB7CiAgICAgYXV0byBpdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5maW5kKHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICBpZiAoaXQgPT0gbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWFwLmVuZCgpKQpAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0CiAgICAgYXV0byogcmVuZGVyaW5nQmFja2VuZCA9IGl0LT52YWx1ZS5nZXQoKTsKIAogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBJUEM6OlNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsICpyZW5kZXJpbmdCYWNrZW5kLCBXVEZNb3ZlKHN0cmVhbSkpIH07CisgICAgICAgIHJl
dHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBkaXNwbGF5SUQs
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgKnJlbmRlcmluZ0JhY2tlbmQsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYjcyYzBiMzczNjJiNzM5ZGJmYTNlZDlh
MGM0YTAxZTNiMjFiMWU5OS4uYjFjZWM5ZmE0MmExOWUyNDM3NTAwMjZiZWE4ZWNiYzk0ZmQ4MjE5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC03MSw2ICs3MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7Cit1c2luZyBQbGF0
Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIy
MSw3ICsyMjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQo
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZv
aWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgdm9pZCBjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIFdl
YkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7
CiAgICAgdm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDFiODMy
YTMxODNmODI5NGVjMDU3Y2NhOWM3NmZhYmEwMDI0ZTU0YmIuLmU2MDY3NjY3OTU1ZjM5N2QxM2Qx
OWVlN2QxYTM2YmFmNjI3NDQwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0y
Niw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNE
aXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9u
UGFyYW1ldGVycywgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbUJ1ZmZlcikKICAg
ICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQot
ICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdlYktpdDo6UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciBzdHJlYW0pCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRH
TChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMs
IHVpbnQzMl90IGRpc3BsYXlJRCwgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIgc3RyZWFtKQogICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikK
ICNlbmRpZgogICAgIHZvaWQgQ3JlYXRlUmVtb3RlR1BVKFdlYktpdDo6V2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggYTY1OGZhZDk1YjRiMjNjYTc4YWNmYTQ1MDRi
NmFhYTczYzM2MGVmNS4uNzc2YzkyOTk5NTJiZTI2ZTU5ZDE4YzM2YTQ2MWI4N2JmMGU1MTZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC01NCwxMSArNTQsMTEgQEAgSVBDOjpTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtR
dWV1ZSgpCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShXSU4pCi1SZWY8
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUo
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3Ry
ZWFtKQorUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVu
ZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9wdFJlZigq
bmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwgV1RGTW92ZShzdHJl
YW0pKSk7Ci0gICAgaW5zdGFuY2UtPmluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7Cisg
ICAgaW5zdGFuY2UtPmluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSwgZGlzcGxheUlEKTsK
ICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAjZW5kaWYKQEAgLTgzLDExICs4MywxMSBAQCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKICAgICBBU1NF
UlQoIW1fY29udGV4dCk7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRp
YWxpemUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiYgYXR0cmlidXRlcywgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogICAgIGFz
c2VydElzTWFpblJ1bkxvb3AoKTsKLSAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdv
cmtRdWV1ZSgpLmRpc3BhdGNoKFthdHRyaWJ1dGVzID0gV1RGTW92ZShhdHRyaWJ1dGVzKSwgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7Ci0gICAgICAgIHByb3RlY3Rl
ZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAgcmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmlidXRl
cyA9IFdURk1vdmUoYXR0cmlidXRlcyksIGRpc3BsYXlJRCwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH1dKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZUlu
aXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSwgZGlzcGxheUlEKTsKICAgICB9KTsKICAgICBt
X3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KQEAgLTExMywxMCArMTEzLDEw
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQo
KQogfQogI2VuZGlmCiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUlu
aXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRl
cykKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcywgV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogICAgIGFzc2VydElzQ3VycmVudCh3b3Jr
UXVldWUoKSk7Ci0gICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmli
dXRlcykpOworICAgIHBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXVEZNb3ZlKGF0dHJpYnV0
ZXMpLCBkaXNwbGF5SUQpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgbV9jb250ZXh0
LT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4
dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmgKaW5kZXggOWUwNTRjZGI3MTQ4NzkxYmNlOGEwMWZlM2VlOWQ1ZTdkMGY1NWZlMC4u
MzU0ZDBjNDA1YWNhMjViYWFjYWMyYjMxZmNkM2ZhYjkzZDQ4OTg1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmgKQEAgLTY0LDYgKzY0LDEwIEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CiAjZW5k
aWYKIAorbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50
MzJfdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAjaWYgRU5BQkxFKFZJREVPKQogY2xhc3Mg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CkBAIC03OCw3ICs4Miw3IEBAIElQQzo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSYgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVl
dWUoKTsKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIDogcHJpdmF0ZSBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6Q2xpZW50LCBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciYmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCwgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOwogCkBAIC04OSwxMSArOTMsMTEgQEAgcHVibGlj
OgogCiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZCYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKLSAgICB2b2lkIGlu
aXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOworICAgIHZv
aWQgaW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgV2Vi
Q29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOwogICAgIElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZSYgd29ya1F1ZXVlKCkgY29uc3QgeyByZXR1cm4gcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xT
dHJlYW1Xb3JrUXVldWUoKTsgfQogCi0gICAgdm9pZCB3b3JrUXVldWVJbml0aWFsaXplKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmKSB7IH07CisgICAgdm9pZCB3b3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIHsg
fTsKICAgICB2b2lkIHdvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiAgICAgYm9vbCBzZW5kKFQmJiBtZXNzYWdlKSBjb25zdCB7IHJldHVybiBtX3N0cmVh
bUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Y3BwCmluZGV4IDBlMTZkYmFmODA3NTUzN2MxNDc0MzY3ZTM5OWVlZjVmMzRlODJmMjQuLmM2ZWM0
MGNlN2M3ZjIzY2IzMjI3MmE2OTIyNWJiMDg4OTg3NWMyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIH5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0OwogCiAgICAgLy8gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgotICAgIHZvaWQgcGxhdGZvcm1Xb3JrUXVldWVJ
bml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKSBmaW5hbDsK
KyAgICB2b2lkIHBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGZpbmFsOwog
ICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1h
Y2hTZW5kUmlnaHQmJik+JiYpIGZpbmFsOwogcHJpdmF0ZToKICAgICBjb25zdCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVyOwpAQCAtOTUsMTAgKzk1LDEwIEBAIHByaXZh
dGU6CiAKIH0KIAotUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJp
YnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRH
TD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKIHsKICAgICBhdXRvIGluc3RhbmNlID0gYWRv
cHRSZWYoKm5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwg
V1RGTW92ZShzdHJlYW0pKSk7Ci0gICAgaW5zdGFuY2UtPmluaXRpYWxpemUoV1RGTW92ZShhdHRy
aWJ1dGVzKSk7CisgICAgaW5zdGFuY2UtPmluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSwg
ZGlzcGxheUlEKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKQEAgLTEwOCwxMCArMTA4LDEw
IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EoR1BVQ29ubmVjdGlvblRvV2ViUHJvCiB7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsK
LSAgICBtX2NvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUo
V1RGTW92ZShhdHRyaWJ1dGVzKSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5IHsgbV9yZXNvdXJj
ZU93bmVyIH0pOworICAgIG1fY29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkg
eyBtX3Jlc291cmNlT3duZXIgfSwgZGlzcGxheUlEKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454109</attachid>
            <date>2022-03-08 05:22:47 -0800</date>
            <delta_ts>2022-03-09 01:19:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236487-20220308152244.patch</filename>
            <type>text/plain</type>
            <size>27051</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA2ZjFhNjNmYjA2ZTNh
ODBiZmUxNTQ3ZTAwNTBkN2U0ZjBiOWE2OS4uYjgzYmI0NjgyNDA3YTU1MGJmZDMxYTdmMTBiYzRk
ODNiMTljZGMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAzLTA4ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgY29udGV4
dCBzaG91bGQgdXNlIGRpc2NyZXRlIGdwdSBpZiB0aGUgY29udGV4dCBpcyBjcmVhdGVkIHdoZW4g
dGhlIHdpbmRvdyBpcyBvbiBleHRlcm5hbCBtb25pdG9yLCBBTkdMRSBNZXRhbCBiYWNrZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzOjp3aW5kb3dHUFVJRCB3aGljaCBkZXNjcmliZXMgdGhlIEdQ
VSBJRAorICAgICAgICBmb3IgdGhlIHdpbmRvdyB0aGF0IHRoZSBjb250ZXh0IGlzIG9uLgorICAg
ICAgICBDcmVhdGUgdGhlIEFOR0xFIE1ldGFsIGNvbnRleHQgYmFzZWQgb24gdGhpcywgdW5sZXNz
IGhpZ2gtcGVyZm9ybWFuY2UgR1BVCisgICAgICAgIGlzIHJlcXVlc3RlZC4KKworICAgICAgICBD
aGFuZ2VzIHRoZSBiZWhhdmlvciBzbyB0aGF0IG5ldyBXZWJHTCBjb250ZXh0cyB3aWxsIHVzZSBk
Z3B1IGlzIGFsd2F5cyB3aGVuIHVzZXIgaGFzCisgICAgICAgIGV4dGVybmFsIGRpc3BsYXkgcGx1
Z2dlZCBpbi4gVGhlIHN5c3RlbSBjaGFuZ2VzIGFsbCB0aGUgd2luZG93cyB0byB0aGUgZGdwdSwg
c28KKyAgICAgICAgdGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIHN5c3RlbSBleHBlY3RhdGlv
bi4KKworICAgICAgICBOb3RhYmxlIGRpZmZlcmVuY2UgZHVlIHRvIHRoZSBhYm92ZSBpcyB0aGF0
IHdlIGdldCBkaWZmZXJlbnQgbGF5b3V0IHRlc3RzIGZvciBhIGRldmVsb3BlcgorICAgICAgICB0
aGF0IGhhcyBhIGV4dGVybmFsIG1vbml0b3IgdGhhbiBiZWZvcmUuCisKKyAgICAgICAgVGVzdGVk
IGJ5IG5ldyB1bml0IHRlc3RzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplRUdM
RGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFNjcmVlblByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6cHJpbWFyeUdQVUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmdwdUlERm9yRGlzcGxheSk6
CisgICAgICAgIChXZWJDb3JlOjpncHVJREZvckRpc3BsYXlNYXNrKToKKwogMjAyMi0wMy0wNyAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
TEJTRV0gQmVnaW4gbGF5ZXItYXdhcmUgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lciBp
bXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZWNkMWU2MmQxYjNlZDQ1MDhhNTM3MDlkY2Y2MDc2
OGY5ZDZlODg4Li4zOWY1YjUyNzJiYmVhOTJmNjhlYmY2YWM2ZTAwOTQ1ZGM0ZTIzMTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAzLTA4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgY29udGV4dCBzaG91bGQgdXNlIGRpc2Ny
ZXRlIGdwdSBpZiB0aGUgY29udGV4dCBpcyBjcmVhdGVkIHdoZW4gdGhlIHdpbmRvdyBpcyBvbiBl
eHRlcm5hbCBtb25pdG9yLCBBTkdMRSBNZXRhbCBiYWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0ODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUsIHRoZSBDaHJvbWVDbGllbnQgcGFz
c2VkIFBsYXRmb3JtRGlzcGxheUlEIHRvIHRoZSBjcmVhdGVHcmFwaGljc0NvbnRleHRHTC4gVGhp
cyB3YXMgaWdub3JlZC4KKyAgICAgICAgQWZ0ZXIsIHBhc3MgdGhlIFBsYXRmb3JtR1BVSUQgYXMg
cGFydCBvZiBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuIAorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDIy
LTAzLTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1NdIExheWVyIHRyZWUgY2FuIGdldCBpbmRlZmluaXRlbHkgZnJvemVuIGlmIFdLV2ViVmll
dyBpcyB1bnBhcmVudGVkIHVuZGVybmVhdGggLVtVSVdpbmRvdyBkZWFsbG9jXQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAppbmRleCA1YjE4ODYwNzI2ZjI5OTAzN2JlMGNhYzk3NjhjYmM1ODRmNTk0ZGM2Li4yZjQy
N2JjNDlmYzBjNmFmMzEyZDcxNDM0MDc4MzNkYjhjMzY2NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApA
QCAtMTUwLDYgKzE1MCwxMCBAQAogI2VuZGlmCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykK
KyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UpOwpAQCAtODkzLDcgKzg5NywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENhbgogICAgIGF0
dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSBmYWxzZTsKICAgICBhdHRyaWJ1dGVzLmluaXRpYWxQ
b3dlclByZWZlcmVuY2UgPSBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsKICAgICBhdHRyaWJ1
dGVzLndlYkdMVmVyc2lvbiA9IHR5cGU7Ci0KKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gRklY
TUU6IEFkZCBNQUNDQVRBTFlTVCBzdXBwb3J0IGZvciBncHVJREZvckRpc3BsYXkuCisgICAgaWYg
KGhvc3RXaW5kb3cpCisgICAgICAgIGF0dHJpYnV0ZXMud2luZG93R1BVSUQgPSBncHVJREZvckRp
c3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpOworI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNl
dHRpbmdzVmFsdWVzKCkud2ViR0xVc2luZ01ldGFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggNWUyY2Y2MzZhMjAwMGQ4NDE3NjczN2I3ZjVhMmM5M2NkNjIwNTQyNi4uZGE3NWNl
MDE5NzU0ZjZiNzg0Mzg4ZWZhNDE1NmI4NmJmYmY4NTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cApAQCAtNTQyLDcgKzU0Miw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vCiAjaWYgRU5BQkxF
KFdFQkdMKQogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBDaHJvbWU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0
cmlidXRlcywgZGlzcGxheUlEKCkpOworICAgIHJldHVybiBtX2NsaWVudC5jcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChhdHRyaWJ1dGVzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5jcHAKaW5kZXggNmY0YmRjZDUwY2E2Y2UwN2M2ZTcxNjg2ZjA4N2FlYTVkZWU2OTA3
NS4uMzQ3YzQwMWUzNDk0ODc2MjE4NWFlYmY5ODRkOWNhNTQxZjhkZDMzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBDaHJvbWVDbGllbnQ6OkNo
cm9tZUNsaWVudCgpID0gZGVmYXVsdDsKIENocm9tZUNsaWVudDo6fkNocm9tZUNsaWVudCgpID0g
ZGVmYXVsdDsKIAogI2lmIEVOQUJMRShXRUJHTCkKLVJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4g
Q2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBj
b25zdAorUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cykgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
KGF0dHJpYnV0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYzFmODFk
ZGRjODdhZGQ1OTZhMGE5YTNiNDZlYzhmMmYyYmQ5OGZhNS4uYWQ2MmNiYzZmYmMwMjZiMmM1N2U5
ZTJkYzZhNGViZDMxZDZkYjAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0z
NjQsNyArMzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJp
bmdQdXJwb3NlLCBmbG9hdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3Jt
YXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
UmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25zdDsKICNlbmRpZgogCiAgICAgdmlydHVh
bCBSZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4gY3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3QgeyBy
ZXR1cm4gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgK
aW5kZXggYmUzNzNmMDgwMTQwNzI4ZDNlMGJmYzFlN2RiOWYxNjNlZDNhZWRjOC4uNDQ3OTllMGIy
YTkzY2JjZjI1ZjQzMTVkNjJhM2Q5NTg5NmMwMmYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNjcmVlbi5oCkBAIC02MywxMSArNjMsNyBAQCBjbGFzcyBXaWRnZXQ7CiAKIHVz
aW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAKLSNpZiBQTEFURk9STShNQUMpCi0K
LXVzaW5nIElPUmVnaXN0cnlHUFVJRCA9IGludDY0X3Q7IC8vIEdsb2JhbCBJT0tpdCBJL08gcmVn
aXN0cnlJRCB0aGF0IGNhbiBtYXRjaCBhIEdQVSBhY3Jvc3MgcHJvY2VzcyBib3VuZGFyaWVzLgot
Ci0jZW5kaWYKK3VzaW5nIFBsYXRmb3JtR1BVSUQgPSB1aW50NjRfdDsgLy8gT24gTUFDLCBNQUND
QVRBTFlTVCwgZ2xvYmFsIElPS2l0IHJlZ2lzdHJ5SUQgdGhhdCBjYW4gaWRlbnRpZnkgYSBHUFUg
YWNyb3NzIHByb2Nlc3MgYm91bmRhcmllcy4KIAogaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwog
aW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopOwpAQCAtMTM2LDkgKzEzMiw5IEBA
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvdWxkT3ZlcnJpZGVTY3JlZW5TdXBwb3J0c0hpZ2hE
eW5hbWljUmFuZ2UoYm9vbCBzaG91bGRPCiB1aW50MzJfdCBwcmltYXJ5T3BlbkdMRGlzcGxheU1h
c2soKTsKIHVpbnQzMl90IGRpc3BsYXlNYXNrRm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCk7
CiAKLUlPUmVnaXN0cnlHUFVJRCBwcmltYXJ5R1BVSUQoKTsKLUlPUmVnaXN0cnlHUFVJRCBncHVJ
REZvckRpc3BsYXkoUGxhdGZvcm1EaXNwbGF5SUQpOwotSU9SZWdpc3RyeUdQVUlEIGdwdUlERm9y
RGlzcGxheU1hc2sodWludDMyX3QpOworUGxhdGZvcm1HUFVJRCBwcmltYXJ5R1BVSUQoKTsKK1Bs
YXRmb3JtR1BVSUQgZ3B1SURGb3JEaXNwbGF5KFBsYXRmb3JtRGlzcGxheUlEKTsKK1BsYXRmb3Jt
R1BVSUQgZ3B1SURGb3JEaXNwbGF5TWFzayh1aW50MzJfdCk7CiAKIFdFQkNPUkVfRVhQT1JUIEZs
b2F0UmVjdCBzYWZlU2NyZWVuRnJhbWUoTlNTY3JlZW4gKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAppbmRleCBlM2EzM2NhOWQ5OWYyMDBmMGNjZGU0MDFh
MGVjOThiYjRhODQxMjRkLi45ZDVmZjdmZjFjMmNjNzVkNjQ2NTYzYTYyNjRjYjM1MjkzOTYyOGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHN0cnVjdCBTY3JlZW5EYXRhIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9v
bCBzY3JlZW5Jc01vbm9jaHJvbWUgeyBmYWxzZSB9OwogICAgIHVpbnQzMl90IGRpc3BsYXlNYXNr
IHsgMCB9OwotICAgIElPUmVnaXN0cnlHUFVJRCBncHVJRCB7IDAgfTsKKyAgICBQbGF0Zm9ybUdQ
VUlEIGdwdUlEIHsgMCB9OwogICAgIER5bmFtaWNSYW5nZU1vZGUgcHJlZmVycmVkRHluYW1pY1Jh
bmdlTW9kZSB7IER5bmFtaWNSYW5nZU1vZGU6OlN0YW5kYXJkIH07CiAjZW5kaWYKIApAQCAtMTU5
LDcgKzE1OSw3IEBAIHN0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkaXNwbGF5TWFzaykKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8SU9SZWdpc3RyeUdQVUlEPiBncHVJ
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtR1BVSUQ+IGdwdUlEOwogICAgIGRlY29kZXIg
Pj4gZ3B1SUQ7CiAgICAgaWYgKCFncHVJRCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmgKaW5kZXggMjc4MjI1NDAwNmE0YmUwODhjZDkwOTA3
YjA2OWY5NjU2MjBhM2IyMS4uOWFlYTZiYzYyYWIwZWRkNTEwYjNkZGE4OTIzYWMyMGY1NjhkN2Fk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIGVudW0g
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb24gewogI2VuZGlmCiB9OwogCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKK3VzaW5nIFBsYXRmb3JtR1BV
SUQgPSB1aW50NjRfdDsKKyNlbmRpZgorCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIHsKICAgICAvLyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzCiAgICAgYm9vbCBhbHBoYSB7IHRy
dWUgfTsKQEAgLTY0LDEyICs2OCwxNiBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIHsKICAgICB1c2luZyBXZWJHTFZlcnNpb24gPSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVy
c2lvbjsKICAgICBXZWJHTFZlcnNpb24gd2ViR0xWZXJzaW9uIHsgV2ViR0xWZXJzaW9uOjpXZWJH
TDEgfTsKICAgICBib29sIGZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSB7IGZhbHNl
IH07CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBQbGF0
Zm9ybUdQVUlEIHdpbmRvd0dQVUlEIHsgMCB9OworI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgYm9vbCB1c2VNZXRhbCB7IHRydWUgfTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJYUikK
ICAgICBib29sIHhyQ29tcGF0aWJsZSB7IGZhbHNlIH07CiAjZW5kaWYKKwogICAgIFBvd2VyUHJl
ZmVyZW5jZSBlZmZlY3RpdmVQb3dlclByZWZlcmVuY2UoKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKGZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSkKQEAgLTEwMiw2ICsxMTAsOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgICAgIDw8IGluaXRpYWxQb3dlclByZWZlcmVuY2UKICAgICAgICAgPDwg
d2ViR0xWZXJzaW9uCiAgICAgICAgIDw8IGZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQ
VTsKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIGVuY29k
ZXIgPDwgd2luZG93R1BVSUQ7CisjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNv
ZGVyIDw8IHVzZU1ldGFsOwogI2VuZGlmCkBAIC0xMjcsNiArMTM4LDkgQEAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlczoKICAgICBhdXRvIGluaXRpYWxQb3dlclByZWZlcmVuY2UgPSBkZWNvZGVyLnRl
bXBsYXRlIGRlY29kZTxQb3dlclByZWZlcmVuY2U+KCk7CiAgICAgYXV0byB3ZWJHTFZlcnNpb24g
PSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxXZWJHTFZlcnNpb24+KCk7CiAgICAgYXV0byBmb3Jj
ZVJlcXVlc3RGb3JIaWdoUGVyZm9ybWFuY2VHUFUgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxi
b29sPigpOworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAg
YXV0byB3aW5kb3dHUFVJRCA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFBsYXRmb3JtR1BVSUQ+
KCk7CisjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvIHVzZU1ldGFsID0gZGVj
b2Rlci50ZW1wbGF0ZSBkZWNvZGU8Ym9vbD4oKTsKICNlbmRpZgpAQCAtMTUwLDYgKzE2NCw5IEBA
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXM6CiAgICAgICAgICppbml0aWFsUG93ZXJQcmVmZXJlbmNl
LAogICAgICAgICAqd2ViR0xWZXJzaW9uLAogICAgICAgICAqZm9yY2VSZXF1ZXN0Rm9ySGlnaFBl
cmZvcm1hbmNlR1BVLAorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CisgICAgICAgICp3aW5kb3dHUFVJRCwKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICAgICAqdXNlTWV0YWwsCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmlu
ZGV4IDI3NjhiMWM4MDI0NjRjMzVjNGEwZDFmNDY1YjgxM2NjNTE0NDY5ZDUuLjMwNDkzZGFiNzli
OGE4NmRjNjZiZDFiZDA5ZjRmZWZjODJmOWQxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQpAQCAtMTQ2LDEyICsxNDYsMjYgQEAgc3RhdGljIEVHTERpc3BsYXkgaW5pdGlhbGl6
ZUVHTERpc3BsYXkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKICAg
ICAgICAgLy8gVGhlc2UgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBmb3IgRUdMX0FOR0xFX3Bvd2Vy
X3ByZWZlcmVuY2UgYXMgRUdMQ29udGV4dCBhdHRyaWJ1dGVzLAogICAgICAgICAvLyBidXQgTWV0
YWwgYmFja2VuZCB1c2VzIEVHTERpc3BsYXkgYXR0cmlidXRlcy4KICAgICAgICAgYXV0byBwb3dl
clByZWZlcmVuY2UgPSBhdHRycy5lZmZlY3RpdmVQb3dlclByZWZlcmVuY2UoKTsKLSAgICAgICAg
aWYgKHBvd2VyUHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM6OlBvd2Vy
UHJlZmVyZW5jZTo6TG93UG93ZXIpIHsKLSAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLmFw
cGVuZChFR0xfUE9XRVJfUFJFRkVSRU5DRV9BTkdMRSk7Ci0gICAgICAgICAgICBkaXNwbGF5QXR0
cmlidXRlcy5hcHBlbmQoRUdMX0xPV19QT1dFUl9BTkdMRSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
cG93ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczo6UG93ZXJQcmVm
ZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpIHsKKyAgICAgICAgaWYgKHBvd2VyUHJlZmVyZW5jZSA9
PSBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM6OlBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlKSB7CiAgICAgICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5hcHBlbmQoRUdMX1BPV0VS
X1BSRUZFUkVOQ0VfQU5HTEUpOwogICAgICAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMuYXBwZW5k
KEVHTF9ISUdIX1BPV0VSX0FOR0xFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlm
IChwb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzOjpQb3dlclBy
ZWZlcmVuY2U6Okxvd1Bvd2VyKSB7CisgICAgICAgICAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMu
YXBwZW5kKEVHTF9QT1dFUl9QUkVGRVJFTkNFX0FOR0xFKTsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5QXR0cmlidXRlcy5hcHBlbmQoRUdMX0xPV19QT1dFUl9BTkdMRSk7CisgICAgICAgICAgICB9
CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICAgICAgICAg
IC8vIElmIHRoZSBwb3dlciBwcmVmZXJlbmNlIGlzIGRlZmF1bHQsIHVzZSB0aGUgR1BVIHRoZSBj
b250ZXh0IHdpbmRvdyBpcyBpbi4KKyAgICAgICAgICAgIC8vIElmIHRoZSBwb3dlciBwcmVmZXJl
bmNlIGlzIGxvdyBwb3dlciwgYW5kIHdlIGtub3cgd2hpY2ggR1BVIHRoZSBjb250ZXh0IHdpbmRv
dyBpcyBpbiwKKyAgICAgICAgICAgIC8vIG1vc3QgbGlrZWx5IHRoZSBsb3dlc3QgcG93ZXIgaXMg
dGhlIEdQVSB0aGF0IGRyaXZlcyB0aGUgY29udGV4dCB3aW5kb3csIGFzIHRoYXQgR1BVCisgICAg
ICAgICAgICAvLyBpcyBhbnl3YXkgYWxyZWFkeSBwb3dlcmVkIG9uLgorICAgICAgICAgICAgaWYg
KGF0dHJzLndpbmRvd0dQVUlEKSB7CisgICAgICAgICAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMu
YXBwZW5kKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfSURfSElHSF9BTkdMRSk7CisgICAgICAg
ICAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMuYXBwZW5kKHN0YXRpY19jYXN0PEVHTEF0dHJpYj4o
YXR0cnMud2luZG93R1BVSUQgPj4gMzIpKTsKKyAgICAgICAgICAgICAgICBkaXNwbGF5QXR0cmli
dXRlcy5hcHBlbmQoRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9JRF9MT1dfQU5HTEUpOworICAg
ICAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLmFwcGVuZChzdGF0aWNfY2FzdDxFR0xBdHRy
aWI+KGF0dHJzLndpbmRvd0dQVUlEKSk7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtU2NyZWVuTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2Ny
ZWVuTWFjLm1tCmluZGV4IDY0MjkwY2FjZjIzMjc1NTM3M2I4YjJkMDBjMmM3ZDQ5NTQ5YWEwMmQu
LmQxNDAxOWVmYWE1NzVkMjBlMTljNjFiNTc4MGQ2MjBjNjc3NjkwMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KQEAgLTEzNiw3ICsx
MzYsNyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCkKICAgICAg
ICAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBbc2NyZWVuIGNhblJlcHJlc2Vu
dERpc3BsYXlHYW11dDpOU0Rpc3BsYXlHYW11dFAzXTsKICAgICAgICAgYm9vbCBzY3JlZW5Jc01v
bm9jaHJvbWUgPSBDR0Rpc3BsYXlVc2VzRm9yY2VUb0dyYXkoKTsKICAgICAgICAgdWludDMyX3Qg
ZGlzcGxheU1hc2sgPSBDR0Rpc3BsYXlJRFRvT3BlbkdMRGlzcGxheU1hc2soZGlzcGxheUlEKTsK
LSAgICAgICAgSU9SZWdpc3RyeUdQVUlEIGdwdUlEID0gMDsKKyAgICAgICAgUGxhdGZvcm1HUFVJ
RCBncHVJRCA9IDA7CiAgICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1Jhbmdl
ID0gZmFsc2U7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc2NyZWVuLmJhY2tpbmdTY2Fs
ZUZhY3RvcjsKICAgICAgICAgRHluYW1pY1JhbmdlTW9kZSBkeW5hbWljUmFuZ2VNb2RlID0gRHlu
YW1pY1JhbmdlTW9kZTo6Tm9uZTsKQEAgLTE5MywxMiArMTkzLDEyIEBAIHVpbnQzMl90IGRpc3Bs
YXlNYXNrRm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgcmV0dXJu
IDA7CiB9CiAKLUlPUmVnaXN0cnlHUFVJRCBwcmltYXJ5R1BVSUQoKQorUGxhdGZvcm1HUFVJRCBw
cmltYXJ5R1BVSUQoKQogewogICAgIHJldHVybiBncHVJREZvckRpc3BsYXkocHJpbWFyeVNjcmVl
bkRpc3BsYXlJRCgpKTsKIH0KIAotSU9SZWdpc3RyeUdQVUlEIGdwdUlERm9yRGlzcGxheShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCitQbGF0Zm9ybUdQVUlEIGdwdUlERm9yRGlzcGxheShQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7CiAgICAgaWYgKGF1dG8gZGF0YSA9IHNjcmVl
bkRhdGEoZGlzcGxheUlEKSkKICAgICAgICAgcmV0dXJuIGRhdGEtPmdwdUlEOwpAQCAtMjA2LDcg
KzIwNiw3IEBAIElPUmVnaXN0cnlHUFVJRCBncHVJREZvckRpc3BsYXkoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQogICAgIHJldHVybiAwOwogfQogCi1JT1JlZ2lzdHJ5R1BVSUQgZ3B1SURG
b3JEaXNwbGF5TWFzayhHTHVpbnQgZGlzcGxheU1hc2spCitQbGF0Zm9ybUdQVUlEIGdwdUlERm9y
RGlzcGxheU1hc2soR0x1aW50IGRpc3BsYXlNYXNrKQogewogICAgIEdMaW50IG51bVJlbmRlcmVy
cyA9IDA7CiAgICAgQ0dMUmVuZGVyZXJJbmZvT2JqIHJlbmRlcmVySW5mbyA9IG51bGxwdHI7CkBA
IC0yMjIsNiArMjIyLDkgQEAgSU9SZWdpc3RyeUdQVUlEIGdwdUlERm9yRGlzcGxheU1hc2soR0x1
aW50IGRpc3BsYXlNYXNrKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICAvLyAoa0NH
TFJQUmVnaXN0cnlJREhpZ2gsIGtDR0xSUFJlZ2lzdHJ5SURMb3cpIGFyZSBkZWZpbmVkIGFzICh1
cHBlciwgbG93ZXIpIDMyLWJpdHMKKyAgICAvLyBvZiB0aGUgdWludDY0X3QgSU9SZWdpc3RyeUdQ
VUlELCBldmVuIHRob3VnaCB0aGV5J3JlIG9idGFpbmVkIHRocm91Z2ggdGhlIHNpZ25lZCBHTGlu
dCBnZXR0ZXIuCisgICAgLy8gVGh1cyBjYXJlIG11c3QgYmUgdGFrZW4gd2hlbiBjb252ZXJ0aW5n
IHRoZW0gdG8gdW5zaWduZWQgUGxhdGZvcm1HUFVJRC4KICAgICBHTGludCBncHVJRExvdyA9IDA7
CiAgICAgR0xpbnQgZ3B1SURIaWdoID0gMDsKIApAQCAtMjM4LDcgKzI0MSw3IEBAIElPUmVnaXN0
cnlHUFVJRCBncHVJREZvckRpc3BsYXlNYXNrKEdMdWludCBkaXNwbGF5TWFzaykKICAgICB9CiAK
ICAgICBDR0xEZXN0cm95UmVuZGVyZXJJbmZvKHJlbmRlcmVySW5mbyk7Ci0gICAgcmV0dXJuIChJ
T1JlZ2lzdHJ5R1BVSUQpIGdwdUlESGlnaCA8PCAzMiB8IGdwdUlETG93OworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxQbGF0Zm9ybUdQVUlEPihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3B1SURIaWdo
KSkgPDwgMzIgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3B1SURMb3cpOwogfQogCiBzdGF0aWMg
Y29uc3QgU2NyZWVuRGF0YSogc2NyZWVuUHJvcGVydGllcyhXaWRnZXQqIHdpZGdldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKaW5kZXggMDVlM2YzZjFiOGQ0Y2NkYTI1ZmQ3YjQ1NzUyNWUyM2M1YzI4
MWYyMy4uOGI0MzIwYTQwOGFlZDQwYmIxOWE1YzQyODEyMWU5MWY3ODA2YzFlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKQEAgLTk0MSw3ICs5NDEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBS
ZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi1SZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QK
K1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMp
IGNvbnN0CiB7CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiAoUExBVEZPUk0oQ09DT0EpIHx8
IFBMQVRGT1JNKFdJTikpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMTc0YWJk
YjZjZGY2OGExNjhiZjk2NGRmMDUzZDgwYmVlNTJkODA2Mi4uMjY1MGMyMmMzNGNhZjY4ZmExZTZj
YWNmYThmYjI3YzA2ODFhNjAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjUwLDcgKzI1MCw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
LCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBj
b25zdCBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAog
ICAgIFJlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBhNWJjMDRjYTc0MTJkZTY5MGRhZmRjZDhjNTY4YmYyODgzZDQ0OTIzLi5lODM3ZTNiZGE5ODVm
MzJhZjU1ZWUxYjQ0YjIyM2M5MjE3MGNhZDBlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDMtMDggIEtpbW1v
IEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBjb250ZXh0
IHNob3VsZCB1c2UgZGlzY3JldGUgZ3B1IGlmIHRoZSBjb250ZXh0IGlzIGNyZWF0ZWQgd2hlbiB0
aGUgd2luZG93IGlzIG9uIGV4dGVybmFsIG1vbml0b3IsIEFOR0xFIE1ldGFsIGJhY2tlbmQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQ4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0
byB0ZXN0IHRoYXQgdGhlIHdpbmRvd0dQVUlEIGFmZmVjdHMgdGhlIGNvbnRleHRzIGJlaW5nIGNy
ZWF0ZWQuCisgICAgICAgIEF2b2lkIGlmZGVmcyBieSBhbHdheXMgY29tcGlsaW5nIHRoZSB0ZXN0
cyBhbmQgbW92ZSB0aGUgInBsYXRmb3JtIGNhbiBoYXZlCisgICAgICAgIG11bHRpcGxlIGdwdXMg
LyB0aGVyZSBpcyBubyBtdWx0aXBsZSBncHVzIGluIHRoZSBwbGF0Zm9ybSIgaWZkZWYgYXNwZWN0
cworICAgICAgICB0byBoZWxwZXIgZnVuY3Rpb25zLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6YWxsRGV2aWNlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojpsb3dQb3dlckRldmljZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpoaWdoUGVyZm9ybWFu
Y2VEZXZpY2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6aGFzTXVsdGlwbGVHUFVzKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjItMDMtMDYgIExhdXJvIE1vdXJh
ICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0ZsYXRwYWsgU0RLXSBGaXgga2V5IGV4
cGlyZWQgdHJlYXRtZW50IHdpdGggUHl0aG9uMwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tCmluZGV4IDMyY2NlM2Y4ZWUwMTJlOTcxZGNjYzFiZjc1NmNmMzYxY2RkY2Ez
ZDguLjM2OWQ3YjY5ZGJkYTVkMjliN2I5MzczNjU3ZjhhYmIxNGJkOTQwMTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTExMCwyOSArMTEwLDU2IEBAIHN0
YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMoVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDCiAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3Vj
Y2VzcygpOwogfQogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkK
K3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxpZDxNVExEZXZpY2U+Pj4gYWxsRGV2aWNlcygpCit7
CisgICAgcmV0dXJuIGFkb3B0TlMoTVRMQ29weUFsbERldmljZXMoKSk7Cit9CisKK3N0YXRpYyBS
ZXRhaW5QdHI8aWQ8TVRMRGV2aWNlPj4gbG93UG93ZXJEZXZpY2UoKQoreworICAgIGF1dG8gZGV2
aWNlcyA9IGFsbERldmljZXMoKTsKKyAgICBmb3IgKGlkPE1UTERldmljZT4gZGV2aWNlIGluIGRl
dmljZXMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKGRldmljZS5sb3dQb3dlcikKKyAgICAgICAgICAg
IHJldHVybiBkZXZpY2U7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMg
UmV0YWluUHRyPGlkPE1UTERldmljZT4+IGhpZ2hQZXJmb3JtYW5jZURldmljZSgpCit7CisgICAg
YXV0byBkZXZpY2VzID0gYWxsRGV2aWNlcygpOworICAgIGZvciAoaWQ8TVRMRGV2aWNlPiBkZXZp
Y2UgaW4gZGV2aWNlcy5nZXQoKSkgeworICAgICAgICBpZiAoIWRldmljZS5sb3dQb3dlciAmJiAh
ZGV2aWNlLnJlbW92YWJsZSkKKyAgICAgICAgICAgIHJldHVybiBkZXZpY2U7CisgICAgfQorICAg
IHJldHVybiBudWxscHRyOworfQorCiBzdGF0aWMgYm9vbCBoYXNNdWx0aXBsZUdQVXMoKQogewot
I2lmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKLSAgICBhdXRvIGRl
dmljZXMgPSBhZG9wdE5TKE1UTENvcHlBbGxEZXZpY2VzKCkpOwotICAgIHJldHVybiBbZGV2aWNl
cyBjb3VudF0gPiAxOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKKyAgICByZXR1
cm4gaGlnaFBlcmZvcm1hbmNlRGV2aWNlKCkgJiYgbG93UG93ZXJEZXZpY2UoKTsKK30KKworLy8g
U2FuaXR5IGNoZWNrIGZvciB0aGUgTXVsdGlwbGVHUFVzKiB0ZXN0cy4KK1RFU1RfRihHcmFwaGlj
c0NvbnRleHRHTENvY29hVGVzdCwgTXVsdGlwbGVHUFVzSGF2ZURpZmZlcmVudEdQVXMpCit7Cisg
ICAgaWYgKCFoYXNNdWx0aXBsZUdQVXMoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gYSA9
IGhpZ2hQZXJmb3JtYW5jZURldmljZSgpOworICAgIGF1dG8gYiA9IGxvd1Bvd2VyRGV2aWNlKCk7
CisgICAgRVhQRUNUX05FKGEuZ2V0KCksIG51bGxwdHIpOworICAgIEVYUEVDVF9ORShiLmdldCgp
LCBudWxscHRyKTsKKyAgICBFWFBFQ1RfTkUoYS5nZXQoKSwgYi5nZXQoKSk7CiB9CiAKLSNpZiBI
QVZFKFdFQkdMX0NPTVBBVElCTEVfTUVUQUwpICYmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KE1BQ0NBVEFMWVNUKSkKLSNkZWZpbmUgTUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQ
cmVmZXJlbmNlTWV0YWwgTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVmZXJlbmNlTWV0YWwK
LSNlbHNlCi0jZGVmaW5lIE1BWUJFX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5j
ZU1ldGFsIERJU0FCTEVEX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldGFs
Ci0jZW5kaWYKIC8vIFRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBoaWdoLXBlcmZvcm1hbmNlIGNvbnRl
eHQgd291bGQgdXNlIGxvdy1wb3dlciBHUFUgaWYgbG93LXBvd2VyIG9yIGRlZmF1bHQKIC8vIGNv
bnRleHQgd2FzIGNyZWF0ZWQgZmlyc3QuIFRlc3QgaXMgYXBwbGljYWJsZSBvbmx5IGZvciBNZXRh
bCwgc2luY2UgR1BVIHNlbGVjdGlvbiBmb3IgT3BlbkdMIGlzCiAvLyB2ZXJ5IGRpZmZlcmVudC4K
LVRFU1RfRihHcmFwaGljc0NvbnRleHRHTENvY29hVGVzdCwgTUFZQkVfTXVsdGlwbGVHUFVzRGlm
ZmVyZW50UG93ZXJQcmVmZXJlbmNlTWV0YWwpCitURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YVRlc3QsIE11bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldGFsKQogewogICAg
IGlmICghaGFzTXVsdGlwbGVHUFVzKCkpCiAgICAgICAgIHJldHVybjsKLQogICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMu
dXNlTWV0YWwgPSB0cnVlOwogICAgIEVYUEVDVF9FUShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5j
ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQpOwpA
QCAtMTUxLDYgKzE3OCw5MyBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRlc3QsIE1B
WUJFX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldAogICAgIEVYUEVDVF9F
UShkZWZhdWx0Q29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpS
RU5ERVJFUiksIGxvd1Bvd2VyQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpSRU5ERVJFUikpOwogfQogCisvLyBUZXN0cyB0aGF0IHJlcXVlc3RpbmcgY29udGV4
dCB3aXRoIHdpbmRvd0dQVUlEIGZyb20gbG93IHBvd2VyIGRldmljZSByZXN1bHRzCisvLyB0byBz
YW1lIHRoaW5nIGFzIHJlcXVlc3RpbmcgZGVmYXVsdCBsb3cgcG93ZXIgY29udGV4dC4KKy8vIFRl
c3RzIHRoYXQgd2luZG93R1BVSUQgZnJvbSBsb3cgcG93ZXIgZGV2aWNlIHN0aWxsIHJlc3BlY3Rz
IGhpZ2ggcGVyZm9ybWFuY2UgcmVxdWVzdC4KK1RFU1RfRihHcmFwaGljc0NvbnRleHRHTENvY29h
VGVzdCwgTXVsdGlwbGVHUFVzRXhwbGljaXRMb3dQb3dlckRldmljZU1ldGFsKQoreworICAgIGlm
ICghaGFzTXVsdGlwbGVHUFVzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczE7CisgICAgYXR0cmlidXRlczEudXNl
TWV0YWwgPSB0cnVlOworICAgIGF0dHJpYnV0ZXMxLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcjsKKyAgICBhdXRvIGxv
d1Bvd2VyQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzMSB9KTsKKyAgICBB
U1NFUlRfTkUobG93UG93ZXJDb250ZXh0LCBudWxscHRyKTsKKworICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzMjsKKyAgICBhdHRyaWJ1dGVzMi51c2VN
ZXRhbCA9IHRydWU7CisgICAgYXR0cmlidXRlczIud2luZG93R1BVSUQgPSBbbG93UG93ZXJEZXZp
Y2UoKSByZWdpc3RyeUlEXTsKKyAgICBhdXRvIGV4cGxpY2l0RGV2aWNlQ29udGV4dCA9IFRlc3Rl
ZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzMiB9KTsKKyAgICBBU1NFUlRfTkUoZXhwbGljaXREZXZp
Y2VDb250ZXh0LmdldCgpLCBudWxscHRyKTsKKworICAgIC8vIENvbnRleHQgd2l0aCB3aW5kb3dH
UFVJRCBmcm9tIGxvdyBwb3dlciBkZXZpY2UgcmVzdWx0cyB0byBzYW1lIHRoaW5nIGFzIHJlcXVl
c3RpbmcgZGVmYXVsdCBsb3cgcG93ZXIgY29udGV4dC4KKyAgICBFWFBFQ1RfRVEobG93UG93ZXJD
b250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSwg
ZXhwbGljaXREZXZpY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OlJFTkRFUkVSKSk7CisKKyAgICAvLyBIaWdoIHBlcmZvcm1hbmNlIHJlcXVlc3Qgb24gYSBs
b3cgcG93ZXIgZXhwbGljaXQgZGV2aWNlIGFzIHdpbmRvd0dQVUlEIHJlc3BlY3RzIHRoZSBoaWdo
IHBlcmZvcm1hbmNlIHJlcXVlc3QuCisgICAgYXR0cmlidXRlczIucG93ZXJQcmVmZXJlbmNlID0g
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5j
ZTsKKyAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUV4cGxpY2l0RGV2aWNlQ29udGV4dCA9IFRlc3Rl
ZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzMiB9KTsKKyAgICBBU1NFUlRfTkUoaGlnaFBlcmZvcm1h
bmNlRXhwbGljaXREZXZpY2VDb250ZXh0LmdldCgpLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfTkUo
aGlnaFBlcmZvcm1hbmNlRXhwbGljaXREZXZpY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSwgZXhwbGljaXREZXZpY2VDb250ZXh0LT5nZXRT
dHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgcmVxdWVzdGluZyBjb250ZXh0IHdpdGggd2luZG93R1BVSUQgZnJvbSBoaWdoIHBl
cmZvcm1hbmNlIGRldmljZSByZXN1bHRzIHRvIHNhbWUgdGhpbmcKKy8vIGFzIHJlcXVlc3Rpbmcg
ZGVmYXVsdCBoaWdoIHBlcmZvcm1hbmNlIGNvbnRleHQuCisvLyBUZXN0cyB0aGF0IHdpbmRvd0dQ
VUlEIGZyb20gaGlnaCBwZXJmb3JtYW5jZSBkZXZpY2Ugc3RpbGwgdXNlcyB0aGF0IGRldmljZSBl
dmVuIHdoZW4gbG93LXBvd2VyIGNvbnRleHQgaXMgcmVxdWVzdGVkLgorLy8gSXQgaXMgbGlrZWx5
IHRoYXQgY29udGV4dCBvbiBhIHNwZWNpZmljIHdpbmRvdyArIGdwdSBpcyB0aGUgbG93ZXN0IHBv
d2VyIGlmIHRoZSB3aW5kb3cgaXMgb24gdGhhdCBncHUuCitURVNUX0YoR3JhcGhpY3NDb250ZXh0
R0xDb2NvYVRlc3QsIE11bHRpcGxlR1BVc0V4cGxpY2l0SGlnaFBlcmZvcm1hbmNlRGV2aWNlTWV0
YWwpCit7CisgICAgaWYgKCFoYXNNdWx0aXBsZUdQVXMoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzMTsKKyAgICBh
dHRyaWJ1dGVzMS51c2VNZXRhbCA9IHRydWU7CisgICAgYXR0cmlidXRlczEucG93ZXJQcmVmZXJl
bmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJm
b3JtYW5jZTsKKyAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIHsgYXR0cmlidXRlczEgfSk7CisgICAgQVNTRVJUX05FKGhpZ2hQZXJmb3JtYW5jZUNvbnRl
eHQsIG51bGxwdHIpOworCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMyOworICAgIGF0dHJpYnV0ZXMyLnVzZU1ldGFsID0gdHJ1ZTsKKyAgICBhdHRy
aWJ1dGVzMi53aW5kb3dHUFVJRCA9IFtoaWdoUGVyZm9ybWFuY2VEZXZpY2UoKSByZWdpc3RyeUlE
XTsKKyAgICBhdXRvIGV4cGxpY2l0RGV2aWNlQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBh
dHRyaWJ1dGVzMiB9KTsKKyAgICBBU1NFUlRfTkUoZXhwbGljaXREZXZpY2VDb250ZXh0LmdldCgp
LCBudWxscHRyKTsKKworICAgIC8vIENvbnRleHQgd2l0aCB3aW5kb3dHUFVJRCBmcm9tIGhpZ2gg
cGVyZm9ybWFuY2UgZGV2aWNlIHJlc3VsdHMgdG8gc2FtZSB0aGluZyBhcyByZXF1ZXN0aW5nIGRl
ZmF1bHQgaGlnaCBwZXJmb3JtYW5jZSBjb250ZXh0LgorICAgIEVYUEVDVF9FUShoaWdoUGVyZm9y
bWFuY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRF
UkVSKSwgZXhwbGljaXREZXZpY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OlJFTkRFUkVSKSk7CisKKyAgICAvLyBMb3cgcG93ZXIgcmVxdWVzdCBvbiBhIGhp
Z2ggcGVyZm9ybWFuY2UgZXhwbGljaXQgZGV2aWNlIGFzIHdpbmRvd0dQVUlEIGlnbm9yZXMgdGhl
IGxvdyBwb3dlciByZXF1ZXN0LgorICAgIGF0dHJpYnV0ZXMyLnBvd2VyUHJlZmVyZW5jZSA9IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcjsKKyAgICBh
dXRvIGxvd1Bvd2VyRXhwbGljaXREZXZpY2VDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0
dHJpYnV0ZXMyIH0pOworICAgIEFTU0VSVF9ORShsb3dQb3dlckV4cGxpY2l0RGV2aWNlQ29udGV4
dC5nZXQoKSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VRKGxvd1Bvd2VyRXhwbGljaXREZXZpY2VD
b250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSwg
ZXhwbGljaXREZXZpY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OlJFTkRFUkVSKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgcmVxdWVzdGluZyBHcmFwaGljc0Nv
bnRleHRHTCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgZGV2aWNlcyByZXN1bHRzIGluIGRpZmZl
cmVudCB1bmRlcmx5aW5nCisvLyBFR0xEaXNwbGF5cy4KK1RFU1RfRihHcmFwaGljc0NvbnRleHRH
TENvY29hVGVzdCwgTXVsdGlwbGVHUFVzRGlmZmVyZW50R1BVSURzTWV0YWwpCit7CisgICAgaWYg
KCFoYXNNdWx0aXBsZUdQVXMoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxSZWY8VGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4+IGNvbnRleHRzOworICAgIGF1dG8gZGV2aWNlcyA9
IGFsbERldmljZXMoKTsKKyAgICBmb3IgKGlkPE1UTERldmljZT4gZGV2aWNlIGluIGRldmljZXMu
Z2V0KCkpIHsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXM7CisgICAgICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVlOworICAgICAgICBh
dHRyaWJ1dGVzLndpbmRvd0dQVUlEID0gW2RldmljZSByZWdpc3RyeUlEXTsKKyAgICAgICAgYXV0
byBjb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgICAgIEVY
UEVDVF9ORShjb250ZXh0LmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFjb250ZXh0KQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNvbnRleHRzLmFwcGVuZChjb250ZXh0LnJl
bGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICBFWFBFQ1RfR1QoY29udGV4dHMuc2l6ZSgpLCAx
dSk7CisKKyAgICAvLyBUaGUgcmVxdWVzdGVkIEVHTERpc3BsYXlzIG11c3QgZGlmZmVyIGlmIHRo
ZSBkZXZpY2VzIGRpZmZlci4KKyAgICBmb3IgKGF1dG8gaXRBID0gY29udGV4dHMuYmVnaW4oKTsg
aXRBICE9IGNvbnRleHRzLmVuZCgpOyArK2l0QSkgeworICAgICAgICBmb3IgKGF1dG8gaXRCID0g
aXRBICsgMTsgaXRCICE9IGNvbnRleHRzLmVuZCgpOyArK2l0QikKKyAgICAgICAgICAgIEVYUEVD
VF9ORSgoKml0QSktPnBsYXRmb3JtRGlzcGxheSgpLCAoKml0QiktPnBsYXRmb3JtRGlzcGxheSgp
KTsKKyAgICB9Cit9CisjZW5kaWYKKwogVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0
LCBEaXNwbGF5QnVmZmVyc0FyZVJlY3ljbGVkKQogewogICAgIGF1dG8gY29udGV4dCA9IGNyZWF0
ZURlZmF1bHRUZXN0Q29udGV4dCh7IDIwLCAyMCB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454207</attachid>
            <date>2022-03-09 01:19:39 -0800</date>
            <delta_ts>2022-03-14 05:46:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236487-20220309111937.patch</filename>
            <type>text/plain</type>
            <size>28303</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA2ZjFhNjNmYjA2ZTNh
ODBiZmUxNTQ3ZTAwNTBkN2U0ZjBiOWE2OS4uNzU0ZTljZGQwYzkzYTczODlhMjZkNTJhNjg3YWUw
Y2UwMTE3NTQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAzLTA4ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgY29udGV4
dCBzaG91bGQgdXNlIGRpc2NyZXRlIGdwdSBpZiB0aGUgY29udGV4dCBpcyBjcmVhdGVkIHdoZW4g
dGhlIHdpbmRvdyBpcyBvbiBleHRlcm5hbCBtb25pdG9yLCBBTkdMRSBNZXRhbCBiYWNrZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgQWRkIEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlczo6d2luZG93R1BVSUQgd2hpY2ggZGVzY3JpYmVzIHRoZSBH
UFUgSUQKKyAgICAgICAgZm9yIHRoZSB3aW5kb3cgdGhhdCB0aGUgY29udGV4dCBpcyBvbi4KKyAg
ICAgICAgQ3JlYXRlIHRoZSBBTkdMRSBNZXRhbCBjb250ZXh0IGJhc2VkIG9uIHRoaXMsIHVubGVz
cyBoaWdoLXBlcmZvcm1hbmNlIEdQVQorICAgICAgICBpcyByZXF1ZXN0ZWQuCisKKyAgICAgICAg
Q2hhbmdlcyB0aGUgYmVoYXZpb3Igc28gdGhhdCBuZXcgV2ViR0wgY29udGV4dHMgd2lsbCB1c2Ug
ZGdwdSBpcyBhbHdheXMgd2hlbiB1c2VyIGhhcworICAgICAgICBleHRlcm5hbCBkaXNwbGF5IHBs
dWdnZWQgaW4uIFRoZSBzeXN0ZW0gY2hhbmdlcyBhbGwgdGhlIHdpbmRvd3MgdG8gdGhlIGRncHUs
IHNvCisgICAgICAgIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBzeXN0ZW0gZXhwZWN0YXRp
b24uCisKKyAgICAgICAgTm90YWJsZSBkaWZmZXJlbmNlIGR1ZSB0byB0aGUgYWJvdmUgaXMgdGhh
dCB3ZSBnZXQgZGlmZmVyZW50IGxheW91dCB0ZXN0cyBmb3IgYSBkZXZlbG9wZXIKKyAgICAgICAg
dGhhdCBoYXMgYSBleHRlcm5hbCBtb25pdG9yIHRoYW4gYmVmb3JlLgorCisgICAgICAgIFRlc3Rl
ZCBieSBuZXcgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL0Nocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAgICog
cGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlczo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUVH
TERpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OnByaW1hcnlHUFVJRCk6CisgICAgICAgIChXZWJDb3JlOjpncHVJREZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6Z3B1SURGb3JEaXNwbGF5TWFzayk6CisKIDIwMjItMDMtMDcg
IE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0xCU0VdIEJlZ2luIGxheWVyLWF3YXJlIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIg
aW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVjZDFlNjJkMWIzZWQ0NTA4YTUzNzA5ZGNmNjA3
NjhmOWQ2ZTg4OC4uYWZlYzY3MDJlMDgyODlmOWUyZWY0MTUyMGI0NzljMzRjZjgwYTdjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMy0wOCAgS2ltbW8gS2lubnVuZW4gIDxra2lu
bnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIGNvbnRleHQgc2hvdWxkIHVzZSBkaXNj
cmV0ZSBncHUgaWYgdGhlIGNvbnRleHQgaXMgY3JlYXRlZCB3aGVuIHRoZSB3aW5kb3cgaXMgb24g
ZXh0ZXJuYWwgbW9uaXRvciwgQU5HTEUgTWV0YWwgYmFja2VuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDg3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSdXNzZWxsLgorCisgICAgICAgIEJlZm9yZSwgdGhlIENocm9tZUNsaWVudCBw
YXNzZWQgUGxhdGZvcm1EaXNwbGF5SUQgdG8gdGhlIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMLiBU
aGlzIHdhcyBpZ25vcmVkLgorICAgICAgICBBZnRlciwgcGFzcyB0aGUgUGxhdGZvcm1HUFVJRCBh
cyBwYXJ0IG9mIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy4gCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIw
MjItMDMtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gTGF5ZXIgdHJlZSBjYW4gZ2V0IGluZGVmaW5pdGVseSBmcm96ZW4gaWYgV0tXZWJW
aWV3IGlzIHVucGFyZW50ZWQgdW5kZXJuZWF0aCAtW1VJV2luZG93IGRlYWxsb2NdCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCmluZGV4IDViMTg4NjA3MjZmMjk5MDM3YmUwY2FjOTc2OGNiYzU4NGY1OTRkYzYuLjJm
NDI3YmM0OWZjMGM2YWYzMTJkNzE0MzQwNzgzM2RiOGMzNjY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CkBAIC0xNTAsNiArMTUwLDEwIEBACiAjZW5kaWYKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFD
KQorI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSk7CkBAIC04OTMsNyArODk3LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAg
YXR0cmlidXRlcy5zaGFyZVJlc291cmNlcyA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZXMuaW5pdGlh
bFBvd2VyUHJlZmVyZW5jZSA9IGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlOwogICAgIGF0dHJp
YnV0ZXMud2ViR0xWZXJzaW9uID0gdHlwZTsKLQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBG
SVhNRTogQWRkIE1BQ0NBVEFMWVNUIHN1cHBvcnQgZm9yIGdwdUlERm9yRGlzcGxheS4KKyAgICBp
ZiAoaG9zdFdpbmRvdykKKyAgICAgICAgYXR0cmlidXRlcy53aW5kb3dHUFVJRCA9IGdwdUlERm9y
RGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSk7CisjZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2V0dGluZ3NWYWx1ZXMoKS53ZWJHTFVzaW5nTWV0YWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAppbmRleCA1ZTJjZjYzNmEyMDAwZDg0MTc2NzM3YjdmNWEyYzkzY2Q2MjA1NDI2Li5kYTc1
Y2UwMTk3NTRmNmI3ODQzODhlZmE0MTU2Yjg2YmZiZjg1NzE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCkBAIC01NDIsNyArNTQyLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBDaHJvbWU6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW8KICNpZiBFTkFC
TEUoV0VCR0wpCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IENocm9tZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
KSBjb25zdAogewotICAgIHJldHVybiBtX2NsaWVudC5jcmVhdGVHcmFwaGljc0NvbnRleHRHTChh
dHRyaWJ1dGVzLCBkaXNwbGF5SUQoKSk7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmNwcAppbmRleCA2ZjRiZGNkNTBjYTZjZTA3YzZlNzE2ODZmMDg3YWVhNWRlZTY5
MDc1Li4zNDdjNDAxZTM0OTQ4NzYyMTg1YWViZjk4NGQ5Y2E1NDFmOGRkMzMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIENocm9tZUNsaWVudDo6
Q2hyb21lQ2xpZW50KCkgPSBkZWZhdWx0OwogQ2hyb21lQ2xpZW50Ojp+Q2hyb21lQ2xpZW50KCkg
PSBkZWZhdWx0OwogCiAjaWYgRU5BQkxFKFdFQkdMKQotUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQp
IGNvbnN0CitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IENocm9tZUNsaWVudDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzKSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0woYXR0cmlidXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBjMWY4
MWRkZGM4N2FkZDU5NmEwYTlhM2I0NmVjOGYyZjJiZDk4ZmE1Li5hZDYyY2JjNmZiYzAyNmIyYzU3
ZTllMmRjNmE0ZWJkMzFkNmRiMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAg
LTM2NCw3ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRl
cmluZ1B1cnBvc2UsIGZsb2F0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZv
cm1hdCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2aXJ0
dWFsIFJlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4u
aAppbmRleCBiZTM3M2YwODAxNDA3MjhkM2UwYmZjMWU3ZGI5ZjE2M2VkM2FlZGM4Li40NDc5OWUw
YjJhOTNjYmNmMjVmNDMxNWQ2MmEzZDk1ODk2YzAyZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU2NyZWVuLmgKQEAgLTYzLDExICs2Myw3IEBAIGNsYXNzIFdpZGdldDsKIAog
dXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKIAotI2lmIFBMQVRGT1JNKE1BQykK
LQotdXNpbmcgSU9SZWdpc3RyeUdQVUlEID0gaW50NjRfdDsgLy8gR2xvYmFsIElPS2l0IEkvTyBy
ZWdpc3RyeUlEIHRoYXQgY2FuIG1hdGNoIGEgR1BVIGFjcm9zcyBwcm9jZXNzIGJvdW5kYXJpZXMu
Ci0KLSNlbmRpZgordXNpbmcgUGxhdGZvcm1HUFVJRCA9IHVpbnQ2NF90OyAvLyBPbiBNQUMsIE1B
Q0NBVEFMWVNULCBnbG9iYWwgSU9LaXQgcmVnaXN0cnlJRCB0aGF0IGNhbiBpZGVudGlmeSBhIEdQ
VSBhY3Jvc3MgcHJvY2VzcyBib3VuZGFyaWVzLgogCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7
CiBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CkBAIC0xMzYsOSArMTMyLDkg
QEAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaG91bGRPdmVycmlkZVNjcmVlblN1cHBvcnRzSGln
aER5bmFtaWNSYW5nZShib29sIHNob3VsZE8KIHVpbnQzMl90IHByaW1hcnlPcGVuR0xEaXNwbGF5
TWFzaygpOwogdWludDMyX3QgZGlzcGxheU1hc2tGb3JEaXNwbGF5KFBsYXRmb3JtRGlzcGxheUlE
KTsKIAotSU9SZWdpc3RyeUdQVUlEIHByaW1hcnlHUFVJRCgpOwotSU9SZWdpc3RyeUdQVUlEIGdw
dUlERm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCk7Ci1JT1JlZ2lzdHJ5R1BVSUQgZ3B1SURG
b3JEaXNwbGF5TWFzayh1aW50MzJfdCk7CitQbGF0Zm9ybUdQVUlEIHByaW1hcnlHUFVJRCgpOwor
UGxhdGZvcm1HUFVJRCBncHVJREZvckRpc3BsYXkoUGxhdGZvcm1EaXNwbGF5SUQpOworUGxhdGZv
cm1HUFVJRCBncHVJREZvckRpc3BsYXlNYXNrKHVpbnQzMl90KTsKIAogV0VCQ09SRV9FWFBPUlQg
RmxvYXRSZWN0IHNhZmVTY3JlZW5GcmFtZShOU1NjcmVlbiAqKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCmluZGV4IGUzYTMzY2E5ZDk5ZjIwMGYwY2NkZTQw
MWEwZWM5OGJiNGE4NDEyNGQuLjlkNWZmN2ZmMWMyY2M3NWQ2NDY1NjNhNjI2NGNiMzUyOTM5NjI4
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgc3RydWN0IFNjcmVlbkRhdGEgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBi
b29sIHNjcmVlbklzTW9ub2Nocm9tZSB7IGZhbHNlIH07CiAgICAgdWludDMyX3QgZGlzcGxheU1h
c2sgeyAwIH07Ci0gICAgSU9SZWdpc3RyeUdQVUlEIGdwdUlEIHsgMCB9OworICAgIFBsYXRmb3Jt
R1BVSUQgZ3B1SUQgeyAwIH07CiAgICAgRHluYW1pY1JhbmdlTW9kZSBwcmVmZXJyZWREeW5hbWlj
UmFuZ2VNb2RlIHsgRHluYW1pY1JhbmdlTW9kZTo6U3RhbmRhcmQgfTsKICNlbmRpZgogCkBAIC0x
NTksNyArMTU5LDcgQEAgc3RkOjpvcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRpc3BsYXlNYXNrKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgc3RkOjpvcHRpb25hbDxJT1JlZ2lzdHJ5R1BVSUQ+IGdw
dUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1HUFVJRD4gZ3B1SUQ7CiAgICAgZGVjb2Rl
ciA+PiBncHVJRDsKICAgICBpZiAoIWdwdUlEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAppbmRleCAyNzgyMjU0MDA2YTRiZTA4OGNkOTA5
MDdiMDY5Zjk2NTYyMGEzYjIxLi45YWVhNmJjNjJhYjBlZGQ1MTBiM2RkYTg5MjNhYzIwZjU2OGQ3
YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaApAQCAtNDQsNiArNDQsMTAgQEAgZW51
bSBjbGFzcyBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbiB7CiAjZW5kaWYKIH07CiAKKyNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQordXNpbmcgUGxhdGZvcm1H
UFVJRCA9IHVpbnQ2NF90OworI2VuZGlmCisKIHN0cnVjdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgewogICAgIC8vIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMKICAgICBib29sIGFscGhhIHsg
dHJ1ZSB9OwpAQCAtNjQsMTIgKzY4LDE2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgewogICAgIHVzaW5nIFdlYkdMVmVyc2lvbiA9IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xW
ZXJzaW9uOwogICAgIFdlYkdMVmVyc2lvbiB3ZWJHTFZlcnNpb24geyBXZWJHTFZlcnNpb246Oldl
YkdMMSB9OwogICAgIGJvb2wgZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNlR1BVIHsgZmFs
c2UgfTsKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIFBs
YXRmb3JtR1BVSUQgd2luZG93R1BVSUQgeyAwIH07CisjZW5kaWYKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBib29sIHVzZU1ldGFsIHsgdHJ1ZSB9OwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhS
KQogICAgIGJvb2wgeHJDb21wYXRpYmxlIHsgZmFsc2UgfTsKICNlbmRpZgorCiAgICAgUG93ZXJQ
cmVmZXJlbmNlIGVmZmVjdGl2ZVBvd2VyUHJlZmVyZW5jZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNlR1BVKQpAQCAtMTAyLDYgKzExMCw5
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICAgICAgPDwgaW5pdGlhbFBvd2VyUHJlZmVyZW5jZQogICAgICAgICA8
PCB3ZWJHTFZlcnNpb24KICAgICAgICAgPDwgZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNl
R1BVOworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgZW5j
b2RlciA8PCB3aW5kb3dHUFVJRDsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVu
Y29kZXIgPDwgdXNlTWV0YWw7CiAjZW5kaWYKQEAgLTEyNyw2ICsxMzgsOSBAQCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzOgogICAgIGF1dG8gaW5pdGlhbFBvd2VyUHJlZmVyZW5jZSA9IGRlY29kZXIu
dGVtcGxhdGUgZGVjb2RlPFBvd2VyUHJlZmVyZW5jZT4oKTsKICAgICBhdXRvIHdlYkdMVmVyc2lv
biA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFdlYkdMVmVyc2lvbj4oKTsKICAgICBhdXRvIGZv
cmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2Rl
PGJvb2w+KCk7CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAg
ICBhdXRvIHdpbmRvd0dQVUlEID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8UGxhdGZvcm1HUFVJ
RD4oKTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8gdXNlTWV0YWwgPSBk
ZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxib29sPigpOwogI2VuZGlmCkBAIC0xNTAsNiArMTY0LDkg
QEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczoKICAgICAgICAgKmluaXRpYWxQb3dlclByZWZlcmVu
Y2UsCiAgICAgICAgICp3ZWJHTFZlcnNpb24sCiAgICAgICAgICpmb3JjZVJlcXVlc3RGb3JIaWdo
UGVyZm9ybWFuY2VHUFUsCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKKyAgICAgICAgKndpbmRvd0dQVUlELAorI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgICp1c2VNZXRhbCwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0K
aW5kZXggMjc2OGIxYzgwMjQ2NGMzNWM0YTBkMWY0NjViODEzY2M1MTQ0NjlkNS4uNDgzMWVjMWI5
MTBmNzczMDdmZGJjODE1OTJmN2Y4MmNkOWY3MmQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCkBAIC0xMjAsMTAgKzEyMCwxMCBAQCBzdGF0aWMgRUdMRGlzcGxheSBpbml0aWFs
aXplRUdMRGlzcGxheShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQog
ICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBsb2FkIEFOR0xFIHNoYXJlZCBsaWJyYXJ5
LiIpOwogICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgfQotCi0gICAgRUdMaW50
IG1ham9yVmVyc2lvbiA9IDA7Ci0gICAgRUdMaW50IG1pbm9yVmVyc2lvbiA9IDA7Ci0gICAgRUdM
RGlzcGxheSBkaXNwbGF5OworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgY29uc3QgY2hhciogY2xp
ZW50RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0cmluZyhFR0xfTk9fRElTUExBWSwgRUdMX0VYVEVO
U0lPTlMpOworICAgIEFTU0VSVChjbGllbnRFeHRlbnNpb25zKTsKKyNlbmRpZgogCiAgICAgVmVj
dG9yPEVHTGludD4gZGlzcGxheUF0dHJpYnV0ZXM7CiAKQEAgLTE0NiwxOCArMTQ2LDM1IEBAIHN0
YXRpYyBFR0xEaXNwbGF5IGluaXRpYWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cnMpCiAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGRl
ZmluZWQgZm9yIEVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIGFzIEVHTENvbnRleHQgYXR0cmli
dXRlcywKICAgICAgICAgLy8gYnV0IE1ldGFsIGJhY2tlbmQgdXNlcyBFR0xEaXNwbGF5IGF0dHJp
YnV0ZXMuCiAgICAgICAgIGF1dG8gcG93ZXJQcmVmZXJlbmNlID0gYXR0cnMuZWZmZWN0aXZlUG93
ZXJQcmVmZXJlbmNlKCk7Ci0gICAgICAgIGlmIChwb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzOjpQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyKSB7Ci0gICAgICAg
ICAgICBkaXNwbGF5QXR0cmlidXRlcy5hcHBlbmQoRUdMX1BPV0VSX1BSRUZFUkVOQ0VfQU5HTEUp
OwotICAgICAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9MT1dfUE9XRVJfQU5H
TEUpOwotICAgICAgICB9IGVsc2UgaWYgKHBvd2VyUHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM6OlBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlKSB7CisgICAg
ICAgIGlmIChwb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzOjpQ
b3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgewogICAgICAgICAgICAgZGlzcGxheUF0
dHJpYnV0ZXMuYXBwZW5kKEVHTF9QT1dFUl9QUkVGRVJFTkNFX0FOR0xFKTsKICAgICAgICAgICAg
IGRpc3BsYXlBdHRyaWJ1dGVzLmFwcGVuZChFR0xfSElHSF9QT1dFUl9BTkdMRSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpZiAocG93ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlczo6UG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcikgeworICAgICAgICAg
ICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLmFwcGVuZChFR0xfUE9XRVJfUFJFRkVSRU5DRV9BTkdM
RSk7CisgICAgICAgICAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9MT1dfUE9X
RVJfQU5HTEUpOworICAgICAgICAgICAgfQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCisgICAgICAgICAgICBBU1NFUlQoc3Ryc3RyKGNsaWVudEV4dGVuc2lvbnMs
ICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZGV2aWNlX2lkIikpOworICAgICAgICAgICAgLy8g
SWYgdGhlIHBvd2VyIHByZWZlcmVuY2UgaXMgZGVmYXVsdCwgdXNlIHRoZSBHUFUgdGhlIGNvbnRl
eHQgd2luZG93IGlzIG9uLgorICAgICAgICAgICAgLy8gSWYgdGhlIHBvd2VyIHByZWZlcmVuY2Ug
aXMgbG93IHBvd2VyLCBhbmQgd2Uga25vdyB3aGljaCBHUFUgdGhlIGNvbnRleHQgd2luZG93IGlz
IG9uLAorICAgICAgICAgICAgLy8gbW9zdCBsaWtlbHkgdGhlIGxvd2VzdCBwb3dlciBpcyB0aGUg
R1BVIHRoYXQgZHJpdmVzIHRoZSBjb250ZXh0IHdpbmRvdywgYXMgdGhhdCBHUFUKKyAgICAgICAg
ICAgIC8vIGlzIGFueXdheSBhbHJlYWR5IHBvd2VyZWQgb24uCisgICAgICAgICAgICBpZiAoYXR0
cnMud2luZG93R1BVSUQpIHsKKyAgICAgICAgICAgICAgICAvLyBFR0xfUExBVEZPUk1fQU5HTEVf
REVWSUNFX0lEXypfQU5HTEUgaXMgdGhlIElPS2l0IHJlZ2lzdHJ5IGlkIG9uIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX01FVEFMX0FOR0xFLgorICAgICAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1
dGVzLmFwcGVuZChFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX0lEX0hJR0hfQU5HTEUpOworICAg
ICAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLmFwcGVuZChzdGF0aWNfY2FzdDxFR0xBdHRy
aWI+KGF0dHJzLndpbmRvd0dQVUlEID4+IDMyKSk7CisgICAgICAgICAgICAgICAgZGlzcGxheUF0
dHJpYnV0ZXMuYXBwZW5kKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfSURfTE9XX0FOR0xFKTsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8RUdM
QXR0cmliPihhdHRycy53aW5kb3dHUFVJRCkpOworICAgICAgICAgICAgfQorI2VuZGlmCiAgICAg
ICAgIH0KICAgICB9Ci0KICAgICBkaXNwbGF5QXR0cmlidXRlcy5hcHBlbmQoRUdMX05PTkUpOwot
ICAgIGRpc3BsYXkgPSBFR0xfR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9BTkdM
RV9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRUdMX0RFRkFVTFRfRElTUExBWSksIGRp
c3BsYXlBdHRyaWJ1dGVzLmRhdGEoKSk7CiAKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBFR0xf
R2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oRUdMX0RFRkFVTFRfRElTUExBWSksIGRpc3BsYXlBdHRyaWJ1dGVzLmRh
dGEoKSk7CisgICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CisgICAgRUdMaW50IG1pbm9yVmVy
c2lvbiA9IDA7CiAgICAgaWYgKEVHTF9Jbml0aWFsaXplKGRpc3BsYXksICZtYWpvclZlcnNpb24s
ICZtaW5vclZlcnNpb24pID09IEVHTF9GQUxTRSkgewogICAgICAgICBMT0coV2ViR0wsICJFR0xE
aXNwbGF5IEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKICAgICAgICAgcmV0dXJuIEVHTF9OT19E
SVNQTEFZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVu
TWFjLm1tCmluZGV4IDY0MjkwY2FjZjIzMjc1NTM3M2I4YjJkMDBjMmM3ZDQ5NTQ5YWEwMmQuLmQx
NDAxOWVmYWE1NzVkMjBlMTljNjFiNTc4MGQ2MjBjNjc3NjkwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KQEAgLTEzNiw3ICsxMzYs
NyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCkKICAgICAgICAg
Ym9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBbc2NyZWVuIGNhblJlcHJlc2VudERp
c3BsYXlHYW11dDpOU0Rpc3BsYXlHYW11dFAzXTsKICAgICAgICAgYm9vbCBzY3JlZW5Jc01vbm9j
aHJvbWUgPSBDR0Rpc3BsYXlVc2VzRm9yY2VUb0dyYXkoKTsKICAgICAgICAgdWludDMyX3QgZGlz
cGxheU1hc2sgPSBDR0Rpc3BsYXlJRFRvT3BlbkdMRGlzcGxheU1hc2soZGlzcGxheUlEKTsKLSAg
ICAgICAgSU9SZWdpc3RyeUdQVUlEIGdwdUlEID0gMDsKKyAgICAgICAgUGxhdGZvcm1HUFVJRCBn
cHVJRCA9IDA7CiAgICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlID0g
ZmFsc2U7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc2NyZWVuLmJhY2tpbmdTY2FsZUZh
Y3RvcjsKICAgICAgICAgRHluYW1pY1JhbmdlTW9kZSBkeW5hbWljUmFuZ2VNb2RlID0gRHluYW1p
Y1JhbmdlTW9kZTo6Tm9uZTsKQEAgLTE5MywxMiArMTkzLDEyIEBAIHVpbnQzMl90IGRpc3BsYXlN
YXNrRm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgcmV0dXJuIDA7
CiB9CiAKLUlPUmVnaXN0cnlHUFVJRCBwcmltYXJ5R1BVSUQoKQorUGxhdGZvcm1HUFVJRCBwcmlt
YXJ5R1BVSUQoKQogewogICAgIHJldHVybiBncHVJREZvckRpc3BsYXkocHJpbWFyeVNjcmVlbkRp
c3BsYXlJRCgpKTsKIH0KIAotSU9SZWdpc3RyeUdQVUlEIGdwdUlERm9yRGlzcGxheShQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQpCitQbGF0Zm9ybUdQVUlEIGdwdUlERm9yRGlzcGxheShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7CiAgICAgaWYgKGF1dG8gZGF0YSA9IHNjcmVlbkRh
dGEoZGlzcGxheUlEKSkKICAgICAgICAgcmV0dXJuIGRhdGEtPmdwdUlEOwpAQCAtMjA2LDcgKzIw
Niw3IEBAIElPUmVnaXN0cnlHUFVJRCBncHVJREZvckRpc3BsYXkoUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEKQogICAgIHJldHVybiAwOwogfQogCi1JT1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JE
aXNwbGF5TWFzayhHTHVpbnQgZGlzcGxheU1hc2spCitQbGF0Zm9ybUdQVUlEIGdwdUlERm9yRGlz
cGxheU1hc2soR0x1aW50IGRpc3BsYXlNYXNrKQogewogICAgIEdMaW50IG51bVJlbmRlcmVycyA9
IDA7CiAgICAgQ0dMUmVuZGVyZXJJbmZvT2JqIHJlbmRlcmVySW5mbyA9IG51bGxwdHI7CkBAIC0y
MjIsNiArMjIyLDkgQEAgSU9SZWdpc3RyeUdQVUlEIGdwdUlERm9yRGlzcGxheU1hc2soR0x1aW50
IGRpc3BsYXlNYXNrKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICAvLyAoa0NHTFJQ
UmVnaXN0cnlJREhpZ2gsIGtDR0xSUFJlZ2lzdHJ5SURMb3cpIGFyZSBkZWZpbmVkIGFzICh1cHBl
ciwgbG93ZXIpIDMyLWJpdHMKKyAgICAvLyBvZiB0aGUgdWludDY0X3QgSU9SZWdpc3RyeUdQVUlE
LCBldmVuIHRob3VnaCB0aGV5J3JlIG9idGFpbmVkIHRocm91Z2ggdGhlIHNpZ25lZCBHTGludCBn
ZXR0ZXIuCisgICAgLy8gVGh1cyBjYXJlIG11c3QgYmUgdGFrZW4gd2hlbiBjb252ZXJ0aW5nIHRo
ZW0gdG8gdW5zaWduZWQgUGxhdGZvcm1HUFVJRC4KICAgICBHTGludCBncHVJRExvdyA9IDA7CiAg
ICAgR0xpbnQgZ3B1SURIaWdoID0gMDsKIApAQCAtMjM4LDcgKzI0MSw3IEBAIElPUmVnaXN0cnlH
UFVJRCBncHVJREZvckRpc3BsYXlNYXNrKEdMdWludCBkaXNwbGF5TWFzaykKICAgICB9CiAKICAg
ICBDR0xEZXN0cm95UmVuZGVyZXJJbmZvKHJlbmRlcmVySW5mbyk7Ci0gICAgcmV0dXJuIChJT1Jl
Z2lzdHJ5R1BVSUQpIGdwdUlESGlnaCA8PCAzMiB8IGdwdUlETG93OworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxQbGF0Zm9ybUdQVUlEPihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3B1SURIaWdoKSkg
PDwgMzIgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3B1SURMb3cpOwogfQogCiBzdGF0aWMgY29u
c3QgU2NyZWVuRGF0YSogc2NyZWVuUHJvcGVydGllcyhXaWRnZXQqIHdpZGdldCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggMDVlM2YzZjFiOGQ0Y2NkYTI1ZmQ3YjQ1NzUyNWUyM2M1YzI4MWYy
My4uOGI0MzIwYTQwOGFlZDQwYmIxOWE1YzQyODEyMWU5MWY3ODA2YzFlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTk0MSw3ICs5NDEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi1SZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiAoUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKFdJTikpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMTc0YWJkYjZj
ZGY2OGExNjhiZjk2NGRmMDUzZDgwYmVlNTJkODA2Mi4uMjY1MGMyMmMzNGNhZjY4ZmExZTZjYWNm
YThmYjI3YzA2ODFhNjAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjUwLDcgKzI1MCw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25z
dCBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBSZWZQdHI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
IGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogICAg
IFJlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBh
NWJjMDRjYTc0MTJkZTY5MGRhZmRjZDhjNTY4YmYyODgzZDQ0OTIzLi4yN2VkMWY3YzQ2ODNhZTI1
M2FlYzY4NGNiMGI3NjMxODdlNTFiZDQ0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDMtMDggIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBjb250ZXh0IHNo
b3VsZCB1c2UgZGlzY3JldGUgZ3B1IGlmIHRoZSBjb250ZXh0IGlzIGNyZWF0ZWQgd2hlbiB0aGUg
d2luZG93IGlzIG9uIGV4dGVybmFsIG1vbml0b3IsIEFOR0xFIE1ldGFsIGJhY2tlbmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQ4NworCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KKworICAgICAgICBBZGQgdGVzdHMgdG8g
dGVzdCB0aGF0IHRoZSB3aW5kb3dHUFVJRCBhZmZlY3RzIHRoZSBjb250ZXh0cyBiZWluZyBjcmVh
dGVkLgorICAgICAgICBBdm9pZCBpZmRlZnMgYnkgYWx3YXlzIGNvbXBpbGluZyB0aGUgdGVzdHMg
YW5kIG1vdmUgdGhlICJwbGF0Zm9ybSBjYW4gaGF2ZQorICAgICAgICBtdWx0aXBsZSBncHVzIC8g
dGhlcmUgaXMgbm8gbXVsdGlwbGUgZ3B1cyBpbiB0aGUgcGxhdGZvcm0iIGlmZGVmIGFzcGVjdHMK
KyAgICAgICAgdG8gaGVscGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmFsbERldmljZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
bG93UG93ZXJEZXZpY2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6aGlnaFBlcmZvcm1hbmNl
RGV2aWNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Omhhc011bHRpcGxlR1BVcyk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIyLTAzLTA2ICBMYXVybyBNb3VyYSAg
PGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gRml4IGtleSBleHBp
cmVkIHRyZWF0bWVudCB3aXRoIFB5dGhvbjMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQppbmRleCAzMmNjZTNmOGVlMDEyZTk3MWRjY2MxYmY3NTZjZjM2MWNkZGNhM2Q4
Li4zNjlkN2I2OWRiZGE1ZDI5YjdiOTM3MzY1N2Y4YWJiMTRiZDk0MDE0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC0xMTAsMjkgKzExMCw1NiBAQCBzdGF0
aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRzKFRlc3Rl
ZEdyYXBoaWNzQ29udGV4dEdMQwogICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nl
c3MoKTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCitz
dGF0aWMgUmV0YWluUHRyPE5TQXJyYXk8aWQ8TVRMRGV2aWNlPj4+IGFsbERldmljZXMoKQorewor
ICAgIHJldHVybiBhZG9wdE5TKE1UTENvcHlBbGxEZXZpY2VzKCkpOworfQorCitzdGF0aWMgUmV0
YWluUHRyPGlkPE1UTERldmljZT4+IGxvd1Bvd2VyRGV2aWNlKCkKK3sKKyAgICBhdXRvIGRldmlj
ZXMgPSBhbGxEZXZpY2VzKCk7CisgICAgZm9yIChpZDxNVExEZXZpY2U+IGRldmljZSBpbiBkZXZp
Y2VzLmdldCgpKSB7CisgICAgICAgIGlmIChkZXZpY2UubG93UG93ZXIpCisgICAgICAgICAgICBy
ZXR1cm4gZGV2aWNlOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJl
dGFpblB0cjxpZDxNVExEZXZpY2U+PiBoaWdoUGVyZm9ybWFuY2VEZXZpY2UoKQoreworICAgIGF1
dG8gZGV2aWNlcyA9IGFsbERldmljZXMoKTsKKyAgICBmb3IgKGlkPE1UTERldmljZT4gZGV2aWNl
IGluIGRldmljZXMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFkZXZpY2UubG93UG93ZXIgJiYgIWRl
dmljZS5yZW1vdmFibGUpCisgICAgICAgICAgICByZXR1cm4gZGV2aWNlOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIGJvb2wgaGFzTXVsdGlwbGVHUFVzKCkKIHsKLSNp
ZiAoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpCi0gICAgYXV0byBkZXZp
Y2VzID0gYWRvcHROUyhNVExDb3B5QWxsRGV2aWNlcygpKTsKLSAgICByZXR1cm4gW2RldmljZXMg
Y291bnRdID4gMTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCisgICAgcmV0dXJu
IGhpZ2hQZXJmb3JtYW5jZURldmljZSgpICYmIGxvd1Bvd2VyRGV2aWNlKCk7Cit9CisKKy8vIFNh
bml0eSBjaGVjayBmb3IgdGhlIE11bHRpcGxlR1BVcyogdGVzdHMuCitURVNUX0YoR3JhcGhpY3ND
b250ZXh0R0xDb2NvYVRlc3QsIE11bHRpcGxlR1BVc0hhdmVEaWZmZXJlbnRHUFVzKQoreworICAg
IGlmICghaGFzTXVsdGlwbGVHUFVzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGEgPSBo
aWdoUGVyZm9ybWFuY2VEZXZpY2UoKTsKKyAgICBhdXRvIGIgPSBsb3dQb3dlckRldmljZSgpOwor
ICAgIEVYUEVDVF9ORShhLmdldCgpLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfTkUoYi5nZXQoKSwg
bnVsbHB0cik7CisgICAgRVhQRUNUX05FKGEuZ2V0KCksIGIuZ2V0KCkpOwogfQogCi0jaWYgSEFW
RShXRUJHTF9DT01QQVRJQkxFX01FVEFMKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShN
QUNDQVRBTFlTVCkpCi0jZGVmaW5lIE1BWUJFX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJl
ZmVyZW5jZU1ldGFsIE11bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldGFsCi0j
ZWxzZQotI2RlZmluZSBNQVlCRV9NdWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VN
ZXRhbCBESVNBQkxFRF9NdWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXRhbAot
I2VuZGlmCiAvLyBUZXN0cyBmb3IgYSBidWcgd2hlcmUgaGlnaC1wZXJmb3JtYW5jZSBjb250ZXh0
IHdvdWxkIHVzZSBsb3ctcG93ZXIgR1BVIGlmIGxvdy1wb3dlciBvciBkZWZhdWx0CiAvLyBjb250
ZXh0IHdhcyBjcmVhdGVkIGZpcnN0LiBUZXN0IGlzIGFwcGxpY2FibGUgb25seSBmb3IgTWV0YWws
IHNpbmNlIEdQVSBzZWxlY3Rpb24gZm9yIE9wZW5HTCBpcwogLy8gdmVyeSBkaWZmZXJlbnQuCi1U
RVNUX0YoR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRlc3QsIE1BWUJFX011bHRpcGxlR1BVc0RpZmZl
cmVudFBvd2VyUHJlZmVyZW5jZU1ldGFsKQorVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMQ29jb2FU
ZXN0LCBNdWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXRhbCkKIHsKICAgICBp
ZiAoIWhhc011bHRpcGxlR1BVcygpKQogICAgICAgICByZXR1cm47Ci0KICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVz
ZU1ldGFsID0gdHJ1ZTsKICAgICBFWFBFQ1RfRVEoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2Us
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0KTsKQEAg
LTE1MSw2ICsxNzgsOTMgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0LCBNQVlC
RV9NdWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXQKICAgICBFWFBFQ1RfRVEo
ZGVmYXVsdENvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVO
REVSRVIpLCBsb3dQb3dlckNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSRVIpKTsKIH0KIAorLy8gVGVzdHMgdGhhdCByZXF1ZXN0aW5nIGNvbnRleHQg
d2l0aCB3aW5kb3dHUFVJRCBmcm9tIGxvdyBwb3dlciBkZXZpY2UgcmVzdWx0cworLy8gdG8gc2Ft
ZSB0aGluZyBhcyByZXF1ZXN0aW5nIGRlZmF1bHQgbG93IHBvd2VyIGNvbnRleHQuCisvLyBUZXN0
cyB0aGF0IHdpbmRvd0dQVUlEIGZyb20gbG93IHBvd2VyIGRldmljZSBzdGlsbCByZXNwZWN0cyBo
aWdoIHBlcmZvcm1hbmNlIHJlcXVlc3QuCitURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRl
c3QsIE11bHRpcGxlR1BVc0V4cGxpY2l0TG93UG93ZXJEZXZpY2VNZXRhbCkKK3sKKyAgICBpZiAo
IWhhc011bHRpcGxlR1BVcygpKQorICAgICAgICByZXR1cm47CisgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMxOworICAgIGF0dHJpYnV0ZXMxLnVzZU1l
dGFsID0gdHJ1ZTsKKyAgICBhdHRyaWJ1dGVzMS5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI7CisgICAgYXV0byBsb3dQ
b3dlckNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlczEgfSk7CisgICAgQVNT
RVJUX05FKGxvd1Bvd2VyQ29udGV4dCwgbnVsbHB0cik7CisKKyAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczI7CisgICAgYXR0cmlidXRlczIudXNlTWV0
YWwgPSB0cnVlOworICAgIGF0dHJpYnV0ZXMyLndpbmRvd0dQVUlEID0gW2xvd1Bvd2VyRGV2aWNl
KCkgcmVnaXN0cnlJRF07CisgICAgYXV0byBleHBsaWNpdERldmljZUNvbnRleHQgPSBUZXN0ZWRH
cmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIHsgYXR0cmlidXRlczIgfSk7CisgICAgQVNTRVJUX05FKGV4cGxpY2l0RGV2aWNl
Q29udGV4dC5nZXQoKSwgbnVsbHB0cik7CisKKyAgICAvLyBDb250ZXh0IHdpdGggd2luZG93R1BV
SUQgZnJvbSBsb3cgcG93ZXIgZGV2aWNlIHJlc3VsdHMgdG8gc2FtZSB0aGluZyBhcyByZXF1ZXN0
aW5nIGRlZmF1bHQgbG93IHBvd2VyIGNvbnRleHQuCisgICAgRVhQRUNUX0VRKGxvd1Bvd2VyQ29u
dGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGV4
cGxpY2l0RGV2aWNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpSRU5ERVJFUikpOworCisgICAgLy8gSGlnaCBwZXJmb3JtYW5jZSByZXF1ZXN0IG9uIGEgbG93
IHBvd2VyIGV4cGxpY2l0IGRldmljZSBhcyB3aW5kb3dHUFVJRCByZXNwZWN0cyB0aGUgaGlnaCBw
ZXJmb3JtYW5jZSByZXF1ZXN0LgorICAgIGF0dHJpYnV0ZXMyLnBvd2VyUHJlZmVyZW5jZSA9IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7
CisgICAgYXV0byBoaWdoUGVyZm9ybWFuY2VFeHBsaWNpdERldmljZUNvbnRleHQgPSBUZXN0ZWRH
cmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIHsgYXR0cmlidXRlczIgfSk7CisgICAgQVNTRVJUX05FKGhpZ2hQZXJmb3JtYW5j
ZUV4cGxpY2l0RGV2aWNlQ29udGV4dC5nZXQoKSwgbnVsbHB0cik7CisgICAgRVhQRUNUX05FKGhp
Z2hQZXJmb3JtYW5jZUV4cGxpY2l0RGV2aWNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGV4cGxpY2l0RGV2aWNlQ29udGV4dC0+Z2V0U3Ry
aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUikpOworfQorCisvLyBUZXN0
cyB0aGF0IHJlcXVlc3RpbmcgY29udGV4dCB3aXRoIHdpbmRvd0dQVUlEIGZyb20gaGlnaCBwZXJm
b3JtYW5jZSBkZXZpY2UgcmVzdWx0cyB0byBzYW1lIHRoaW5nCisvLyBhcyByZXF1ZXN0aW5nIGRl
ZmF1bHQgaGlnaCBwZXJmb3JtYW5jZSBjb250ZXh0LgorLy8gVGVzdHMgdGhhdCB3aW5kb3dHUFVJ
RCBmcm9tIGhpZ2ggcGVyZm9ybWFuY2UgZGV2aWNlIHN0aWxsIHVzZXMgdGhhdCBkZXZpY2UgZXZl
biB3aGVuIGxvdy1wb3dlciBjb250ZXh0IGlzIHJlcXVlc3RlZC4KKy8vIEl0IGlzIGxpa2VseSB0
aGF0IGNvbnRleHQgb24gYSBzcGVjaWZpYyB3aW5kb3cgKyBncHUgaXMgdGhlIGxvd2VzdCBwb3dl
ciBpZiB0aGUgd2luZG93IGlzIG9uIHRoYXQgZ3B1LgorVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdM
Q29jb2FUZXN0LCBNdWx0aXBsZUdQVXNFeHBsaWNpdEhpZ2hQZXJmb3JtYW5jZURldmljZU1ldGFs
KQoreworICAgIGlmICghaGFzTXVsdGlwbGVHUFVzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczE7CisgICAgYXR0
cmlidXRlczEudXNlTWV0YWwgPSB0cnVlOworICAgIGF0dHJpYnV0ZXMxLnBvd2VyUHJlZmVyZW5j
ZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9y
bWFuY2U7CisgICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyB7IGF0dHJpYnV0ZXMxIH0pOworICAgIEFTU0VSVF9ORShoaWdoUGVyZm9ybWFuY2VDb250ZXh0
LCBudWxscHRyKTsKKworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBh
dHRyaWJ1dGVzMjsKKyAgICBhdHRyaWJ1dGVzMi51c2VNZXRhbCA9IHRydWU7CisgICAgYXR0cmli
dXRlczIud2luZG93R1BVSUQgPSBbaGlnaFBlcmZvcm1hbmNlRGV2aWNlKCkgcmVnaXN0cnlJRF07
CisgICAgYXV0byBleHBsaWNpdERldmljZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRH
TENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0
cmlidXRlczIgfSk7CisgICAgQVNTRVJUX05FKGV4cGxpY2l0RGV2aWNlQ29udGV4dC5nZXQoKSwg
bnVsbHB0cik7CisKKyAgICAvLyBDb250ZXh0IHdpdGggd2luZG93R1BVSUQgZnJvbSBoaWdoIHBl
cmZvcm1hbmNlIGRldmljZSByZXN1bHRzIHRvIHNhbWUgdGhpbmcgYXMgcmVxdWVzdGluZyBkZWZh
dWx0IGhpZ2ggcGVyZm9ybWFuY2UgY29udGV4dC4KKyAgICBFWFBFQ1RfRVEoaGlnaFBlcmZvcm1h
bmNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJF
UiksIGV4cGxpY2l0RGV2aWNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpSRU5ERVJFUikpOworCisgICAgLy8gTG93IHBvd2VyIHJlcXVlc3Qgb24gYSBoaWdo
IHBlcmZvcm1hbmNlIGV4cGxpY2l0IGRldmljZSBhcyB3aW5kb3dHUFVJRCBpZ25vcmVzIHRoZSBs
b3cgcG93ZXIgcmVxdWVzdC4KKyAgICBhdHRyaWJ1dGVzMi5wb3dlclByZWZlcmVuY2UgPSBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI7CisgICAgYXV0
byBsb3dQb3dlckV4cGxpY2l0RGV2aWNlQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRy
aWJ1dGVzMiB9KTsKKyAgICBBU1NFUlRfTkUobG93UG93ZXJFeHBsaWNpdERldmljZUNvbnRleHQu
Z2V0KCksIG51bGxwdHIpOworICAgIEVYUEVDVF9FUShsb3dQb3dlckV4cGxpY2l0RGV2aWNlQ29u
dGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGV4
cGxpY2l0RGV2aWNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpSRU5ERVJFUikpOworfQorCisvLyBUZXN0cyB0aGF0IHJlcXVlc3RpbmcgR3JhcGhpY3NDb250
ZXh0R0wgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGRldmljZXMgcmVzdWx0cyBpbiBkaWZmZXJl
bnQgdW5kZXJseWluZworLy8gRUdMRGlzcGxheXMuCitURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xD
b2NvYVRlc3QsIE11bHRpcGxlR1BVc0RpZmZlcmVudEdQVUlEc01ldGFsKQoreworICAgIGlmICgh
aGFzTXVsdGlwbGVHUFVzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8UmVmPFRlc3Rl
ZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+PiBjb250ZXh0czsKKyAgICBhdXRvIGRldmljZXMgPSBh
bGxEZXZpY2VzKCk7CisgICAgZm9yIChpZDxNVExEZXZpY2U+IGRldmljZSBpbiBkZXZpY2VzLmdl
dCgpKSB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRy
aWJ1dGVzOworICAgICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1ZTsKKyAgICAgICAgYXR0
cmlidXRlcy53aW5kb3dHUFVJRCA9IFtkZXZpY2UgcmVnaXN0cnlJRF07CisgICAgICAgIGF1dG8g
Y29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgICAgICBFWFBF
Q1RfTkUoY29udGV4dC5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIGlmICghY29udGV4dCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb250ZXh0cy5hcHBlbmQoY29udGV4dC5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgRVhQRUNUX0dUKGNvbnRleHRzLnNpemUoKSwgMXUp
OworCisgICAgLy8gVGhlIHJlcXVlc3RlZCBFR0xEaXNwbGF5cyBtdXN0IGRpZmZlciBpZiB0aGUg
ZGV2aWNlcyBkaWZmZXIuCisgICAgZm9yIChhdXRvIGl0QSA9IGNvbnRleHRzLmJlZ2luKCk7IGl0
QSAhPSBjb250ZXh0cy5lbmQoKTsgKytpdEEpIHsKKyAgICAgICAgZm9yIChhdXRvIGl0QiA9IGl0
QSArIDE7IGl0QiAhPSBjb250ZXh0cy5lbmQoKTsgKytpdEIpCisgICAgICAgICAgICBFWFBFQ1Rf
TkUoKCppdEEpLT5wbGF0Zm9ybURpc3BsYXkoKSwgKCppdEIpLT5wbGF0Zm9ybURpc3BsYXkoKSk7
CisgICAgfQorfQorI2VuZGlmCisKIFRFU1RfRihHcmFwaGljc0NvbnRleHRHTENvY29hVGVzdCwg
RGlzcGxheUJ1ZmZlcnNBcmVSZWN5Y2xlZCkKIHsKICAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVE
ZWZhdWx0VGVzdENvbnRleHQoeyAyMCwgMjAgfSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>