<?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>214911</bug_id>
          
          <creation_ts>2020-07-28 22:22:13 -0700</creation_ts>
          <short_desc>Special HID mapping for the Dualshock 3 controller</short_desc>
          <delta_ts>2020-07-31 12:50:39 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>214910</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1675907</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-28 22:22:13 -0700</bug_when>
    <thetext>Special HID mapping for the Dualshock 3 controller

Of the controllers that work on macOS out of the box that are not supported by GameController framework, the DS3 is by far the most popular. It also happens to cleanly map to the Web Gamepad &quot;standard&quot; gamepad mapping.

This will be easy after https://bugs.webkit.org/show_bug.cgi?id=214910</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675909</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-28 22:22:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/66255198&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676680</commentid>
    <comment_count>2</comment_count>
      <attachid>405651</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-30 19:01:50 -0700</bug_when>
    <thetext>Created attachment 405651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676688</commentid>
    <comment_count>3</comment_count>
      <attachid>405651</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-30 19:37:17 -0700</bug_when>
    <thetext>Comment on attachment 405651
Patch

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

&gt; Source/WebCore/platform/gamepad/GamepadConstants.h:30
&gt; +#import &lt;IOKit/hid/IOHIDUsageTables.h&gt;

This doesn&apos;t seem like this belongs in a platform file that is not OS(DARWIN) specific, or at least guarded by OS(DARWIN) in someway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676691</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-30 19:59:26 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #3)
&gt; Comment on attachment 405651 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405651&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/GamepadConstants.h:30
&gt; &gt; +#import &lt;IOKit/hid/IOHIDUsageTables.h&gt;
&gt; 
&gt; This doesn&apos;t seem like this belongs in a platform file that is not
&gt; OS(DARWIN) specific, or at least guarded by OS(DARWIN) in someway.

Yup quite right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676692</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-30 19:59:58 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #4)
&gt; (In reply to Sam Weinig from comment #3)
&gt; &gt; Comment on attachment 405651 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=405651&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/gamepad/GamepadConstants.h:30
&gt; &gt; &gt; +#import &lt;IOKit/hid/IOHIDUsageTables.h&gt;
&gt; &gt; 
&gt; &gt; This doesn&apos;t seem like this belongs in a platform file that is not
&gt; &gt; OS(DARWIN) specific, or at least guarded by OS(DARWIN) in someway.
&gt; 
&gt; Yup quite right.

That said only the Darwin platforms are broken and all the linucies work lol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676726</commentid>
    <comment_count>6</comment_count>
      <attachid>405669</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-30 22:27:45 -0700</bug_when>
    <thetext>Created attachment 405669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676886</commentid>
    <comment_count>7</comment_count>
      <attachid>405669</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-07-31 11:28:31 -0700</bug_when>
    <thetext>Comment on attachment 405669
Patch

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

&gt; Source/WebCore/platform/gamepad/GamepadConstants.h:58
&gt; +extern const size_t numberStandardGamepadButtonsWithoutHomeButton;

number... Of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676894</commentid>
    <comment_count>8</comment_count>
      <attachid>405718</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-31 11:45:09 -0700</bug_when>
    <thetext>Created attachment 405718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676926</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-31 12:50:38 -0700</bug_when>
    <thetext>Committed r265156: &lt;https://trac.webkit.org/changeset/265156&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405718.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405651</attachid>
            <date>2020-07-30 19:01:50 -0700</date>
            <delta_ts>2020-07-30 22:27:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214911-20200730190149.patch</filename>
            <type>text/plain</type>
            <size>58574</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmY2E3ZGUzNzc1ZWZm
ZWQ3ODRhNTJkNDI3N2EwZmUyMzJiNjBjZC4uMTgyZjk3NjJhNzVmOTdlM2RiNWUyMjUyODBlYzIx
MzA3NWI2YzQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTA3LTMwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGVjaWFsIEhJRCBtYXBw
aW5nIGZvciB0aGUgRHVhbHNob2NrIDMgY29udHJvbGxlcgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjYyNTUxOTg+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgLSBNb3ZlIEdhbWVwYWRCdXR0b25zIGlu
dG8gYSBHYW1lcGFkQ29uc3RhbnRzIGhlYWRlcgorICAgICAgICAtIEFkZCBhICJLbm93bkdhbWVw
YWRzIiBoZWFkZXIgdG8gaG9sZCBhbGwgdmVuZG9yL3Byb2R1Y3QgcGFpcnMgdGhhdCBXZWJLaXQg
a25vd3MgYWJvdXQKKyAgICAgICAgLSBBZGQgYSBEdWFsc2hvY2szIGNvbnRyb2xsZXIgbWFwcGlu
ZyBiYXNlZCBvbiBpdHMgSElEIHJlcG9ydAorICAgICAgICAtIEFkZCBhIGJhc2ljIERTMyB0ZXN0
IGJhc2VkIG9uIHRoZSBISUQgcmVwb3J0CisgICAgICAgIAorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFk
Q29uc3RhbnRzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuaC4KKyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJkR2Ft
ZXBhZE1hcHBpbmdTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENv
bnN0YW50cy5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvS25vd25HYW1l
cGFkcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9H
ZW5lcmljSElER2FtZXBhZC5oLgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9H
YW1lQ29udHJvbGxlckdhbWVwYWQubW06CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxl
ckdhbWVwYWQ6OnNldHVwQXNFeHRlbmRlZEdhbWVwYWQpOgorCisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvRHVhbHNob2NrM0hJREdhbWVwYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkR1YWxzaG9jazNISURHYW1lcGFkOjpEdWFsc2hvY2szSElER2FtZXBhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvRHVhbHNob2NrM0hJREdhbWVwYWQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVw
YWQuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNISURHYW1lcGFkOjpHZW5lcmljSElER2Ft
ZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljSElER2FtZXBhZDo6aWQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFkLmg6CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhJREdhbWVwYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1l
cGFkOjpISURHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWQ6OmluaXRpYWxp
emUpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaDoKKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9ISUREZXZpY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhJRERl
dmljZTo6ZnVsbFByb2R1Y3RJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvSElERWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SElERWxlbWVudDo6ZnVsbFVzYWdl
IGNvbnN0KToKKwogMjAyMC0wNy0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVmYWN0b3IgSElEIGdhbWVwYWQgY29kZSB0byBiZSBtdWNoIGxlc3MgZnJh
Z2lsZSBhbmQgbXVjaCBlYXNpZXIgdG8gaGFjayBvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggODgyODBi
OTE0ODk0MTZlMmNlNjJlMTliNTE1MjAzNTljMDEzZDYwZi4uMDQ1MzZjMzY0OGY2YThmZTYyOTA4
ZjA0M2QzMDcyM2ExYjI5ZGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4MTYsNiArMTgxNiw3IEBA
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwCiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcAogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHku
Y3BwCiBwbGF0Zm9ybS9nYW1lcGFkL0VtcHR5R2FtZXBhZFByb3ZpZGVyLmNwcAorcGxhdGZvcm0v
Z2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcAogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJv
dmlkZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
Y2ZkOWEzNjE3ODhmMGZjMmMwYmVjZDI0ZGI3NjFjMjg2NTgzYzY5OC4uODlhNDcwZDZkMzJmZWVk
OWI1MDU1MzAyYWFmNDk0ZDYxMWUwOWVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0y
NTcsNiArMjU3LDcgQEAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbSBAbm8tdW5p
ZnkKIHBsYXRmb3JtL2NvY29hL1dlYkNvcmVOU0Vycm9yRXh0cmFzLm1tCiBwbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQorcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
RHVhbHNob2NrM0hJREdhbWVwYWQuY3BwCiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElE
R2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCiBwbGF0Zm9y
bS9nYW1lcGFkL21hYy9ISURHYW1lcGFkRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZDYyMzRkNzY0Nzk1MmQz
ZTdjZWIwZWFjY2UyMzhlNTUyODAyZjNkLi5iN2ZiZmQxMWI5NTEwMDQxMzNiMTE5MjNkZDM2ZWZk
NmQ5M2NkYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDAyLDYgKzE0MDIsNyBAQAogCQk1MTBBOTFEQzI0Q0Y0NkZFMDBC
RkQ4OUMgLyogU2hhcmVkR2FtZXBhZFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBOTFEQjI0Q0Y0NDE4MDBCRkQ4OUMgLyogU2hhcmVkR2Ft
ZXBhZFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTEwQTkxRUEyNEQwMDRDMzAwQkZEODlDIC8qIEhJREVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE5MUUzMjRDRkNDMTgwMEJG
RDg5QyAvKiBISURFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTEwQTkxRUIyNEQwMDRDODAwQkZEODlDIC8qIEhJRERldmljZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTkxRTIyNENG
Q0MxODAwQkZEODlDIC8qIEhJRERldmljZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTUxMEE5MUY2MjREMzJEREMwMEJGRDg5QyAvKiBEdWFsc2hv
Y2szSElER2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwQTkxRjQyNEQzMjRGRjAwQkZEODlDIC8qIER1YWxzaG9jazNISURHYW1lcGFkLmgg
Ki87IH07CiAJCTUxMEQ0QTM0MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMkUx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRDRBMzcxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMyMTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODIyNSw2ICs4MjI2LDkgQEAK
IAkJNTEwQTkxRTUyNENGQ0MxODAwQkZEODlDIC8qIEhJRERldmljZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBISUREZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTBBOTFFNzI0Q0ZFQTE3MDBCRkQ4OUMgLyogR2VuZXJpY0hJREdhbWVw
YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0hJREdh
bWVwYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBOTFFOTI0Q0ZFQTMy
MDBCRkQ4OUMgLyogR2VuZXJpY0hJREdhbWVwYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2VuZXJpY0hJREdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTEwQTkxRjIyNEQzMjRDNjAwQkZEODlDIC8qIEtub3duR2FtZXBhZHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS25vd25HYW1lcGFkcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTBBOTFGNDI0RDMyNEZGMDBCRkQ4OUMgLyogRHVhbHNob2NrM0hJREdh
bWVwYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVhbHNob2NrM0hJREdh
bWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwQTkxRjUyNEQzMjUwMDAw
QkZEODlDIC8qIER1YWxzaG9jazNISURHYW1lcGFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IER1YWxzaG9jazNISURHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVy
cm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjYxLDYgKzE5NjY1LDcgQEAKIAkJCQk1MTVC
RTE4QTFENTRGNUY2MDBERDdDNjggLyogR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKIAkJCQk1MTVC
RTE4QjFENTRGNUY2MDBERDdDNjggLyogR2FtZXBhZFByb3ZpZGVyLmggKi8sCiAJCQkJNTE1QkUx
OEMxRDU0RjVGNjAwREQ3QzY4IC8qIEdhbWVwYWRQcm92aWRlckNsaWVudC5oICovLAorCQkJCTUx
MEE5MUYyMjREMzI0QzYwMEJGRDg5QyAvKiBLbm93bkdhbWVwYWRzLmggKi8sCiAJCQkJNTE1QkUx
OEUxRDU0RjVGNjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oICovLAogCQkJCTUxMEE5MURC
MjRDRjQ0MTgwMEJGRDg5QyAvKiBTaGFyZWRHYW1lcGFkVmFsdWUuaCAqLywKIAkJCSk7CkBAIC0x
OTY3MCw2ICsxOTY3NSw4IEBACiAJCTUxNUJFMTk2MUQ1NEY2NDUwMEREN0M2OCAvKiBtYWMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxMEE5MUY1MjRE
MzI1MDAwMEJGRDg5QyAvKiBEdWFsc2hvY2szSElER2FtZXBhZC5jcHAgKi8sCisJCQkJNTEwQTkx
RjQyNEQzMjRGRjAwQkZEODlDIC8qIER1YWxzaG9jazNISURHYW1lcGFkLmggKi8sCiAJCQkJNTEw
QTkxRTcyNENGRUExNzAwQkZEODlDIC8qIEdlbmVyaWNISURHYW1lcGFkLmNwcCAqLywKIAkJCQk1
MTBBOTFFOTI0Q0ZFQTMyMDBCRkQ4OUMgLyogR2VuZXJpY0hJREdhbWVwYWQuaCAqLywKIAkJCQk1
MTVCRTE5NzFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5jcHAgKi8sCkBAIC0zMDc1NCw2
ICszMDc2MSw3IEBACiAJCQkJQTdDRkIzRDIwQjdFRDEwQTAwNzBDMzJEIC8qIERyYWdJbWFnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNUU0RDkxRTU2NzdBOTAwNEExRjAxIC8qIERyYWdJdGVt
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0
YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBBOTFGNjI0RDMyRERDMDBCRkQ4OUMgLyogRHVh
bHNob2NrM0hJREdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkE2NkYxMTc0MkJEODYw
MEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZENkVEMkM4MTM2QjhFNjYwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZENTM3MzU3MTM3QjY1M0IwMDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNz
b3JLZXJuZWwuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU3OWEwYTMyMjMw
MWE4NWE5ZGEwY2JjOGUzMGRiOTM3YTQ4MjZjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFk
Q29uc3RhbnRzLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjb25zdCBHYW1lcGFkQnV0dG9uUm9sZSBtYXhpbXVtR2FtZXBhZEJ1dHRv
biA9IEdhbWVwYWRCdXR0b25Sb2xlOjpDZW50ZXJDbHVzdGVyQ2VudGVyOworY29uc3Qgc2l6ZV90
IG51bWJlclN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRob3V0SG9tZUJ1dHRvbiA9IHN0YXRpY19j
YXN0PHNpemVfdD4obWF4aW11bUdhbWVwYWRCdXR0b24pOworY29uc3Qgc2l6ZV90IG51bWJlclN0
YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRoSG9tZUJ1dHRvbiA9IG51bWJlclN0YW5kYXJkR2FtZXBh
ZEJ1dHRvbnNXaXRob3V0SG9tZUJ1dHRvbiArIDE7CisKK2NvbnN0IFdURjo6U3RyaW5nJiBzdGFu
ZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nID0gInN0YW5kYXJkIjsKKyAgICByZXR1cm4g
c3RhbmRhcmRHYW1lcGFkTWFwcGluZzsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODU2MGJkZTFjNTM2OTRk
MDQyZDc0NzVjZGMxNDg4ZDBiNDc3YmQ4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW1w
b3J0IDxJT0tpdC9oaWQvSU9ISURVc2FnZVRhYmxlcy5oPgorCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIFN0cmluZzsKK307CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQnV0dG9ucyBpbiB0
aGUgInN0YW5kYXJkIiBnYW1lcGFkIGxheW91dCBpbiB0aGUgV2ViIEdhbWVwYWQgc3BlYworLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL2dhbWVwYWQvI2Rmbi1zdGFuZGFyZC1nYW1lcGFkLWxheW91
dAorZW51bSBjbGFzcyBHYW1lcGFkQnV0dG9uUm9sZSA6IHVpbnQ4X3QgeworICAgIFJpZ2h0Q2x1
c3RlckJvdHRvbSA9IDAsCisgICAgUmlnaHRDbHVzdGVyUmlnaHQgPSAxLAorICAgIFJpZ2h0Q2x1
c3RlckxlZnQgPSAyLAorICAgIFJpZ2h0Q2x1c3RlclRvcCA9IDMsCisgICAgTGVmdFNob3VsZGVy
RnJvbnQgPSA0LAorICAgIFJpZ2h0U2hvdWxkZXJGcm9udCA9IDUsCisgICAgTGVmdFNob3VsZGVy
QmFjayA9IDYsCisgICAgUmlnaHRTaG91bGRlckJhY2sgPSA3LAorICAgIENlbnRlckNsdXN0ZXJM
ZWZ0ID0gOCwKKyAgICBDZW50ZXJDbHVzdGVyUmlnaHQgPSA5LAorICAgIExlZnRTdGljayA9IDEw
LAorICAgIFJpZ2h0U3RpY2sgPSAxMSwKKyAgICBMZWZ0Q2x1c3RlclRvcCA9IDEyLAorICAgIExl
ZnRDbHVzdGVyQm90dG9tID0gMTMsCisgICAgTGVmdENsdXN0ZXJMZWZ0ID0gMTQsCisgICAgTGVm
dENsdXN0ZXJSaWdodCA9IDE1LAorICAgIENlbnRlckNsdXN0ZXJDZW50ZXIgPSAxNiwKK307CisK
K2V4dGVybiBjb25zdCBzaXplX3QgbnVtYmVyU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhvdXRI
b21lQnV0dG9uOworZXh0ZXJuIGNvbnN0IHNpemVfdCBudW1iZXJTdGFuZGFyZEdhbWVwYWRCdXR0
b25zV2l0aEhvbWVCdXR0b247CitleHRlcm4gY29uc3QgR2FtZXBhZEJ1dHRvblJvbGUgbWF4aW11
bUdhbWVwYWRCdXR0b247CisKK2NvbnN0ZXhwciBjb25zdCB1aW50NjRfdCBoaWRQb2ludGVyRnVs
bFVzYWdlID0gKCh1aW50NjRfdClrSElEUGFnZV9HZW5lcmljRGVza3RvcCkgPDwgMzIgfCBrSElE
VXNhZ2VfR0RfUG9pbnRlcjsKK2NvbnN0ZXhwciBjb25zdCB1aW50NjRfdCBoaWRYQXhpc0Z1bGxV
c2FnZSA9ICgodWludDY0X3Qpa0hJRFBhZ2VfR2VuZXJpY0Rlc2t0b3ApIDw8IDMyIHwga0hJRFVz
YWdlX0dEX1g7Citjb25zdGV4cHIgY29uc3QgdWludDY0X3QgaGlkWUF4aXNGdWxsVXNhZ2UgPSAo
KHVpbnQ2NF90KWtISURQYWdlX0dlbmVyaWNEZXNrdG9wKSA8PCAzMiB8IGtISURVc2FnZV9HRF9Z
OworY29uc3RleHByIGNvbnN0IHVpbnQ2NF90IGhpZFpBeGlzRnVsbFVzYWdlID0gKCh1aW50NjRf
dClrSElEUGFnZV9HZW5lcmljRGVza3RvcCkgPDwgMzIgfCBrSElEVXNhZ2VfR0RfWjsKK2NvbnN0
ZXhwciBjb25zdCB1aW50NjRfdCBoaWRSekF4aXNGdWxsVXNhZ2UgPSAoKHVpbnQ2NF90KWtISURQ
YWdlX0dlbmVyaWNEZXNrdG9wKSA8PCAzMiB8IGtISURVc2FnZV9HRF9SejsKK2NvbnN0ZXhwciBj
b25zdCB1aW50NjRfdCBoaWRCdXR0b24xRnVsbFVzYWdlID0gKCh1aW50NjRfdClrSElEUGFnZV9C
dXR0b24pIDw8IDMyIHwga0hJRFVzYWdlX0J1dHRvbl8xOworY29uc3RleHByIGNvbnN0IHVpbnQ2
NF90IGhpZEJ1dHRvbjJGdWxsVXNhZ2UgPSAoKHVpbnQ2NF90KWtISURQYWdlX0J1dHRvbikgPDwg
MzIgfCBrSElEVXNhZ2VfQnV0dG9uXzI7Citjb25zdGV4cHIgY29uc3QgdWludDY0X3QgaGlkQnV0
dG9uM0Z1bGxVc2FnZSA9ICgodWludDY0X3Qpa0hJRFBhZ2VfQnV0dG9uKSA8PCAzMiB8IGtISURV
c2FnZV9CdXR0b25fMzsKK2NvbnN0ZXhwciBjb25zdCB1aW50NjRfdCBoaWRCdXR0b240RnVsbFVz
YWdlID0gKCh1aW50NjRfdClrSElEUGFnZV9CdXR0b24pIDw8IDMyIHwga0hJRFVzYWdlX0J1dHRv
bl80OworY29uc3RleHByIGNvbnN0IHVpbnQ2NF90IGhpZEJ1dHRvbjE3RnVsbFVzYWdlID0gKCh1
aW50NjRfdClrSElEUGFnZV9CdXR0b24pIDw8IDMyIHwga0hJRFVzYWdlX0J1dHRvbl8xNzsKKwor
Y29uc3QgV1RGOjpTdHJpbmcmIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0tub3duR2FtZXBhZHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvS25vd25HYW1lcGFkcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZhNDFkNmM3OTBlOGFlZTg0NDg1OTVkMjg0MmQ3YjM5NTYxNDUzYWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0tub3duR2FtZXBhZHMuaApAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR0FN
RVBBRCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIEtub3duR2FtZXBhZCB7CisgICAg
TmltYnVzMSA9IDB4MDExMTE0MjAsCisgICAgTmltYnVzMiA9IDB4MTAzODE0MjAsCisgICAgU3Ry
YXR1c1hMMSA9IDB4MDExMTE0MTgsCisgICAgU3RyYXR1c1hMMiA9IDB4MTAzODE0MTgsCisgICAg
U3RyYXR1c1hMMyA9IDB4MDExMTE0MTksCisgICAgU3RyYXR1c1hMNCA9IDB4MTAzODE0MTksCisg
ICAgSG9yaXBhZFVsdGltYXRlID0gMHgwZjBkMDA5MCwKKyAgICBHYW1lc2lyTTIgPSAweDBlYzIw
NDc1LAorICAgIFhib3hPbmUxID0gMHgwNDVlMDJlMCwKKyAgICBYYm94T25lMiA9IDB4MDQ1ZTAy
ZWEsCisgICAgWGJveE9uZTMgPSAweDA0NWUwMmZkLAorICAgIER1YWxzaG9jazMgPSAweDA1NGMw
MjY4LAorICAgIER1YWxzaG9jazRfMSA9IDB4MDU0YzA1YzQsCisgICAgRHVhbHNob2NrNF8yID0g
MHgwNTRjMDljYywKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQppbmRleCA0MTMzZmRiNjgw
NzE4MjM0N2Q2ZWY0Y2JlNGEzZDRjMTEwNTdmZjU4Li4zOTcxMjliMTAyZWY0YTM5ZmExNTRlYjc2
ZDRhMTllYjNlMzZmNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQpAQCAtMjcsMzUg
KzI3LDEyIEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKICNpbXBvcnQgIkdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgiCi0jaW1wb3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCisj
aW1wb3J0ICJHYW1lcGFkQ29uc3RhbnRzLmgiCiAjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HYW1l
Q29udHJvbGxlci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW1wb3J0ICJHYW1lQ29udHJv
bGxlclNvZnRMaW5rLmgiCiAKLS8vIEJ1dHRvbnMgaW4gdGhlICJzdGFuZGFyZCIgZ2FtZXBhZCBs
YXlvdXQgaW4gdGhlIFdlYiBHYW1lcGFkIHNwZWMKLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9n
YW1lcGFkLyNkZm4tc3RhbmRhcmQtZ2FtZXBhZC1sYXlvdXQKLWVudW0gY2xhc3MgR2FtZXBhZEJ1
dHRvbnMgOiB1aW50OF90IHsKLSAgICBSaWdodENsdXN0ZXJCb3R0b20gPSAwLAotICAgIFJpZ2h0
Q2x1c3RlclJpZ2h0ID0gMSwKLSAgICBSaWdodENsdXN0ZXJMZWZ0ID0gMiwKLSAgICBSaWdodENs
dXN0ZXJUb3AgPSAzLAotICAgIExlZnRTaG91bGRlckZyb250ID0gNCwKLSAgICBSaWdodFNob3Vs
ZGVyRnJvbnQgPSA1LAotICAgIExlZnRTaG91bGRlckJhY2sgPSA2LAotICAgIFJpZ2h0U2hvdWxk
ZXJCYWNrID0gNywKLSAgICBDZW50ZXJDbHVzdGVyTGVmdCA9IDgsCi0gICAgQ2VudGVyQ2x1c3Rl
clJpZ2h0ID0gOSwKLSAgICBMZWZ0U3RpY2sgPSAxMCwKLSAgICBSaWdodFN0aWNrID0gMTEsCi0g
ICAgTGVmdENsdXN0ZXJUb3AgPSAxMiwKLSAgICBMZWZ0Q2x1c3RlckJvdHRvbSA9IDEzLAotICAg
IExlZnRDbHVzdGVyTGVmdCA9IDE0LAotICAgIExlZnRDbHVzdGVyUmlnaHQgPSAxNSwKLSAgICBD
ZW50ZXJDbHVzdGVyQ2VudGVyID0gMTYsCi19OwotCi1zdGF0aWMgY29uc3RleHByIGF1dG8gbnVt
R2FtZXBhZEJ1dHRvbnNXaXRob3V0SG9tZUJ1dHRvbiA9IHN0YXRpY19jYXN0PHNpemVfdD4oR2Ft
ZXBhZEJ1dHRvbnM6OkNlbnRlckNsdXN0ZXJDZW50ZXIpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRv
IG51bUdhbWVwYWRCdXR0b25zV2l0aEhvbWVCdXR0b24gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KEdh
bWVwYWRCdXR0b25zOjpDZW50ZXJDbHVzdGVyQ2VudGVyKSArIDE7CituYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEdhbWVDb250cm9sbGVyR2FtZXBhZDo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkKEdDQ29u
dHJvbGxlciAqY29udHJvbGxlciwgdW5zaWduZWQgaW5kZXgpCiAgICAgOiBQbGF0Zm9ybUdhbWVw
YWQoaW5kZXgpCkBAIC05OCwxMCArNzUsMTAgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWQ6
OnNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKQogICAgIEFTU0VSVChtX2V4dGVuZGVkR2FtZXBhZCk7
CiAKICAgICBtX2lkID0gbWFrZVN0cmluZyhTdHJpbmcobV9nY0NvbnRyb2xsZXIuZ2V0KCkudmVu
ZG9yTmFtZSksICIgRXh0ZW5kZWQgR2FtZXBhZCJfcyk7Ci0gICAgbV9tYXBwaW5nID0gU3RyaW5n
KCJzdGFuZGFyZCIpOworICAgIG1fbWFwcGluZyA9IHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJp
bmcoKTsKIAogICAgIGF1dG8gKmhvbWVCdXR0b24gPSBob21lQnV0dG9uRnJvbUV4dGVuZGVkR2Ft
ZXBhZChtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKSk7Ci0gICAgbV9idXR0b25WYWx1ZXMucmVzaXpl
KGhvbWVCdXR0b24gPyBudW1HYW1lcGFkQnV0dG9uc1dpdGhIb21lQnV0dG9uIDogbnVtR2FtZXBh
ZEJ1dHRvbnNXaXRob3V0SG9tZUJ1dHRvbik7CisgICAgbV9idXR0b25WYWx1ZXMucmVzaXplKGhv
bWVCdXR0b24gPyBudW1iZXJTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aEhvbWVCdXR0b24gOiBu
dW1iZXJTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0b24pOwogCiAgICAgbV9l
eHRlbmRlZEdhbWVwYWQuZ2V0KCkudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NFeHRlbmRlZEdh
bWVwYWQgKiwgR0NDb250cm9sbGVyRWxlbWVudCAqKSB7CiAgICAgICAgIG1fbGFzdFVwZGF0ZVRp
bWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTEwOSw3ICs4Niw3IEBAIHZvaWQgR2FtZUNv
bnRyb2xsZXJHYW1lcGFkOjpzZXR1cEFzRXh0ZW5kZWRHYW1lcGFkKCkKICAgICAgICAgbV9oYWRC
dXR0b25QcmVzc2VzID0gZmFsc2U7CiAgICAgfTsKIAotICAgIGF1dG8gYmluZEJ1dHRvbiA9IF4o
R0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKmJ1dHRvbiwgR2FtZXBhZEJ1dHRvbnMgaW5kZXgpIHsK
KyAgICBhdXRvIGJpbmRCdXR0b24gPSBeKEdDQ29udHJvbGxlckJ1dHRvbklucHV0ICpidXR0b24s
IEdhbWVwYWRCdXR0b25Sb2xlIGluZGV4KSB7CiAgICAgICAgIG1fYnV0dG9uVmFsdWVzWyhzaXpl
X3QpaW5kZXhdLnNldFZhbHVlKGJ1dHRvbi52YWx1ZSk7CiAgICAgICAgIGJ1dHRvbi52YWx1ZUNo
YW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwg
Qk9PTCBwcmVzc2VkKSB7CiAgICAgICAgICAgICBtX2J1dHRvblZhbHVlc1soc2l6ZV90KWluZGV4
XS5zZXRWYWx1ZSh2YWx1ZSk7CkBAIC0xMTksMzAgKzk2LDMwIEBAIHZvaWQgR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkOjpzZXR1cEFzRXh0ZW5kZWRHYW1lcGFkKCkKICAgICB9OwogCiAgICAgLy8gQnV0
dG9uIFBhZAotICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uQSwg
R2FtZXBhZEJ1dHRvbnM6OlJpZ2h0Q2x1c3RlckJvdHRvbSk7Ci0gICAgYmluZEJ1dHRvbihtX2V4
dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25CLCBHYW1lcGFkQnV0dG9uczo6UmlnaHRDbHVzdGVy
UmlnaHQpOwotICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWCwg
R2FtZXBhZEJ1dHRvbnM6OlJpZ2h0Q2x1c3RlckxlZnQpOwotICAgIGJpbmRCdXR0b24obV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWSwgR2FtZXBhZEJ1dHRvbnM6OlJpZ2h0Q2x1c3RlclRv
cCk7CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25BLCBHYW1l
cGFkQnV0dG9uUm9sZTo6UmlnaHRDbHVzdGVyQm90dG9tKTsKKyAgICBiaW5kQnV0dG9uKG1fZXh0
ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkIsIEdhbWVwYWRCdXR0b25Sb2xlOjpSaWdodENsdXN0
ZXJSaWdodCk7CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25Y
LCBHYW1lcGFkQnV0dG9uUm9sZTo6UmlnaHRDbHVzdGVyTGVmdCk7CisgICAgYmluZEJ1dHRvbiht
X2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25ZLCBHYW1lcGFkQnV0dG9uUm9sZTo6UmlnaHRD
bHVzdGVyVG9wKTsKIAogICAgIC8vIFNob3VsZGVycywgVHJpZ2dlcnMKLSAgICBiaW5kQnV0dG9u
KG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRTaG91bGRlciwgR2FtZXBhZEJ1dHRvbnM6Okxl
ZnRTaG91bGRlckZyb250KTsKLSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgp
LnJpZ2h0U2hvdWxkZXIsIEdhbWVwYWRCdXR0b25zOjpSaWdodFNob3VsZGVyRnJvbnQpOwotICAg
IGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIsIEdhbWVwYWRC
dXR0b25zOjpMZWZ0U2hvdWxkZXJCYWNrKTsKLSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1l
cGFkLmdldCgpLnJpZ2h0VHJpZ2dlciwgR2FtZXBhZEJ1dHRvbnM6OlJpZ2h0U2hvdWxkZXJCYWNr
KTsKKyAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRTaG91bGRlciwg
R2FtZXBhZEJ1dHRvblJvbGU6OkxlZnRTaG91bGRlckZyb250KTsKKyAgICBiaW5kQnV0dG9uKG1f
ZXh0ZW5kZWRHYW1lcGFkLmdldCgpLnJpZ2h0U2hvdWxkZXIsIEdhbWVwYWRCdXR0b25Sb2xlOjpS
aWdodFNob3VsZGVyRnJvbnQpOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0
KCkubGVmdFRyaWdnZXIsIEdhbWVwYWRCdXR0b25Sb2xlOjpMZWZ0U2hvdWxkZXJCYWNrKTsKKyAg
ICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLnJpZ2h0VHJpZ2dlciwgR2FtZXBh
ZEJ1dHRvblJvbGU6OlJpZ2h0U2hvdWxkZXJCYWNrKTsKIAogICAgIC8vIEQgUGFkCi0gICAgYmlu
ZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLnVwLCBHYW1lcGFkQnV0dG9uczo6
TGVmdENsdXN0ZXJUb3ApOwotICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCku
ZHBhZC5kb3duLCBHYW1lcGFkQnV0dG9uczo6TGVmdENsdXN0ZXJCb3R0b20pOwotICAgIGJpbmRC
dXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC5sZWZ0LCBHYW1lcGFkQnV0dG9uczo6
TGVmdENsdXN0ZXJMZWZ0KTsKLSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgp
LmRwYWQucmlnaHQsIEdhbWVwYWRCdXR0b25zOjpMZWZ0Q2x1c3RlclJpZ2h0KTsKKyAgICBiaW5k
QnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmRwYWQudXAsIEdhbWVwYWRCdXR0b25Sb2xl
OjpMZWZ0Q2x1c3RlclRvcCk7CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQo
KS5kcGFkLmRvd24sIEdhbWVwYWRCdXR0b25Sb2xlOjpMZWZ0Q2x1c3RlckJvdHRvbSk7CisgICAg
YmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLmxlZnQsIEdhbWVwYWRCdXR0
b25Sb2xlOjpMZWZ0Q2x1c3RlckxlZnQpOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVw
YWQuZ2V0KCkuZHBhZC5yaWdodCwgR2FtZXBhZEJ1dHRvblJvbGU6OkxlZnRDbHVzdGVyUmlnaHQp
OwogCiAgICAgaWYgKGhvbWVCdXR0b24pCi0gICAgICAgIGJpbmRCdXR0b24oaG9tZUJ1dHRvbiwg
R2FtZXBhZEJ1dHRvbnM6OkNlbnRlckNsdXN0ZXJDZW50ZXIpOworICAgICAgICBiaW5kQnV0dG9u
KGhvbWVCdXR0b24sIEdhbWVwYWRCdXR0b25Sb2xlOjpDZW50ZXJDbHVzdGVyQ2VudGVyKTsKIAog
ICAgIC8vIFNlbGVjdCwgU3RhcnQKICNpZiBIQVZFKEdDRVhURU5ERURHQU1FUEFEX0JVVFRPTlNf
T1BUSU9OU19NRU5VKQotICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0
dG9uT3B0aW9ucywgR2FtZXBhZEJ1dHRvbnM6OkNlbnRlckNsdXN0ZXJMZWZ0KTsKLSAgICBiaW5k
QnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbk1lbnUsIEdhbWVwYWRCdXR0b25z
OjpDZW50ZXJDbHVzdGVyUmlnaHQpOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQu
Z2V0KCkuYnV0dG9uT3B0aW9ucywgR2FtZXBhZEJ1dHRvblJvbGU6OkNlbnRlckNsdXN0ZXJMZWZ0
KTsKKyAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbk1lbnUsIEdh
bWVwYWRCdXR0b25Sb2xlOjpDZW50ZXJDbHVzdGVyUmlnaHQpOwogI2VuZGlmCiAKICAgICAvLyBM
MywgUjMKQEAgLTE1MSw4ICsxMjgsOCBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZDo6c2V0
dXBBc0V4dGVuZGVkR2FtZXBhZCgpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5ndWFyZGVkLWF2YWlsYWJpbGl0eSIK
ICAgICBpZiAoW21fZXh0ZW5kZWRHYW1lcGFkLmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IobGVmdFRodW1ic3RpY2tCdXR0b24pXSkgewotICAgICAgICBiaW5kQnV0dG9uKG1fZXh0
ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrQnV0dG9uLCBHYW1lcGFkQnV0dG9uczo6
TGVmdFN0aWNrKTsKLSAgICAgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5y
aWdodFRodW1ic3RpY2tCdXR0b24sIEdhbWVwYWRCdXR0b25zOjpSaWdodFN0aWNrKTsKKyAgICAg
ICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJzdGlja0J1dHRv
biwgR2FtZXBhZEJ1dHRvblJvbGU6OkxlZnRTdGljayk7CisgICAgICAgIGJpbmRCdXR0b24obV9l
eHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRUaHVtYnN0aWNrQnV0dG9uLCBHYW1lcGFkQnV0dG9u
Um9sZTo6UmlnaHRTdGljayk7CiAgICAgfQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQppbmRleCAx
NjY2MzkxYzY3ZTBmMzkyMTJlOGQ5ZTAyZmJkZjJlYWVmNTBkNDU0Li5hMjIxMzNjYTU5M2VkNjMy
NDc0YTQ3MmRjNGJmMjFmN2JmMWIwOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkLmgiCiAjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKKyNpbXBvcnQg
Iktub3duR2FtZXBhZHMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPEdhbWVDb250
cm9sbGVyL0dhbWVDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9JT0tpdFNQSU1h
Yy5oPgpAQCAtNDQsNDIgKzQ1LDI3IEBAIGJvb2wgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlk
ZXI6OndpbGxIYW5kbGVWZW5kb3JBbmRQcm9kdWN0KHVpbnQxNl90IHZlbmRvcklECiB7CiAgICAg
Ly8gQ2hlY2sgdGhlIHZlbmRvci9wcm9kdWN0IElEcyBhZ2FpbnMgYSBoYXJkIGNvZGVkIGxpc3Qg
b2YgY29udHJvbGxlcnMgd2UgZXhwZWN0IHRvIHdvcmsgd2VsbCB3aXRoCiAgICAgLy8gR2FtZUNv
bnRyb2xsZXIuZnJhbWV3b3JrIG9uIDEwLjE1LgotICAgIGVudW0gR2FtZUNvbnRyb2xsZXJDb21w
YXRpYmxlIHsKLSAgICAgICAgTmltYnVzMSA9IDB4MDExMTE0MjAsCi0gICAgICAgIE5pbWJ1czIg
PSAweDEwMzgxNDIwLAotICAgICAgICBTdHJhdHVzWEwxID0gMHgwMTExMTQxOCwKLSAgICAgICAg
U3RyYXR1c1hMMiA9IDB4MTAzODE0MTgsCi0gICAgICAgIFN0cmF0dXNYTDMgPSAweDAxMTExNDE5
LAotICAgICAgICBTdHJhdHVzWEw0ID0gMHgxMDM4MTQxOSwKLSAgICAgICAgSG9yaXBhZFVsdGlt
YXRlID0gMHgwZjBkMDA5MCwKLSAgICAgICAgR2FtZXNpck0yID0gMHgwZWMyMDQ3NSwKLSAgICAg
ICAgWGJveE9uZTEgPSAweDA0NWUwMmUwLAotICAgICAgICBYYm94T25lMiA9IDB4MDQ1ZTAyZWEs
Ci0gICAgICAgIFhib3hPbmUzID0gMHgwNDVlMDJmZCwKLSAgICAgICAgRHVhbHNob2NrNF8xID0g
MHgwNTRjMDVjNCwKLSAgICAgICAgRHVhbHNob2NrNF8yID0gMHgwNTRjMDljYywKLSAgICB9Owot
Ci0gICAgR2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlIGZ1bGxQcm9kdWN0SUQgPSAoR2FtZUNvbnRy
b2xsZXJDb21wYXRpYmxlKSgodmVuZG9ySUQgPDwgMTYpIHwgKHByb2R1Y3RJRCAmIDB4RkZGRikp
OwotCi0gICAgc3dpdGNoIChmdWxsUHJvZHVjdElEKSB7Ci0gICAgY2FzZSBOaW1idXMxOgotICAg
IGNhc2UgTmltYnVzMjoKLSAgICBjYXNlIFN0cmF0dXNYTDE6Ci0gICAgY2FzZSBTdHJhdHVzWEwy
OgotICAgIGNhc2UgU3RyYXR1c1hMMzoKLSAgICBjYXNlIFN0cmF0dXNYTDQ6Ci0gICAgY2FzZSBI
b3JpcGFkVWx0aW1hdGU6Ci0gICAgY2FzZSBHYW1lc2lyTTI6Ci0gICAgY2FzZSBYYm94T25lMToK
LSAgICBjYXNlIFhib3hPbmUyOgotICAgIGNhc2UgWGJveE9uZTM6Ci0gICAgY2FzZSBEdWFsc2hv
Y2s0XzE6Ci0gICAgY2FzZSBEdWFsc2hvY2s0XzI6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8dWludDMyX3Q+PiBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVHYW1l
cGFkczsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVH
YW1lcGFkcy0+YWRkKE5pbWJ1czEpOworICAgICAgICBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVH
YW1lcGFkcy0+YWRkKE5pbWJ1czIpOworICAgICAgICBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVH
YW1lcGFkcy0+YWRkKFN0cmF0dXNYTDEpOworICAgICAgICBnYW1lQ29udHJvbGxlckNvbXBhdGli
bGVHYW1lcGFkcy0+YWRkKFN0cmF0dXNYTDIpOworICAgICAgICBnYW1lQ29udHJvbGxlckNvbXBh
dGlibGVHYW1lcGFkcy0+YWRkKFN0cmF0dXNYTDMpOworICAgICAgICBnYW1lQ29udHJvbGxlckNv
bXBhdGlibGVHYW1lcGFkcy0+YWRkKFN0cmF0dXNYTDQpOworICAgICAgICBnYW1lQ29udHJvbGxl
ckNvbXBhdGlibGVHYW1lcGFkcy0+YWRkKEhvcmlwYWRVbHRpbWF0ZSk7CisgICAgICAgIGdhbWVD
b250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQoR2FtZXNpck0yKTsKKyAgICAgICAgZ2Ft
ZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFkZChYYm94T25lMSk7CisgICAgICAgIGdh
bWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQoWGJveE9uZTIpOworICAgICAgICBn
YW1lQ29udHJvbGxlckNvbXBhdGlibGVHYW1lcGFkcy0+YWRkKFhib3hPbmUzKTsKKyAgICAgICAg
Z2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFkZChEdWFsc2hvY2s0XzEpOworICAg
ICAgICBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVHYW1lcGFkcy0+YWRkKER1YWxzaG9jazRfMik7
CisgICAgfSk7CisKKyAgICB1aW50MzJfdCBmdWxsUHJvZHVjdElEID0gKCgodWludDMyX3QpdmVu
ZG9ySUQpIDw8IDE2KSB8IHByb2R1Y3RJRDsKKyAgICByZXR1cm4gZ2FtZUNvbnRyb2xsZXJDb21w
YXRpYmxlR2FtZXBhZHMtPmNvbnRhaW5zKGZ1bGxQcm9kdWN0SUQpOwogfQogI2VuZGlmIC8vICFI
QVZFKEdDQ09OVFJPTExFUl9ISURfREVWSUNFX0NIRUNLKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9EdWFsc2hvY2szSElER2FtZXBhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9EdWFsc2hvY2szSElER2FtZXBhZC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTZlNmY5NGVkZTVmNmQwMjA5ZTM5NDFhMWJjOTUzNmQ4NzNiY2JjNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0R1
YWxzaG9jazNISURHYW1lcGFkLmNwcApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEdWFsc2hvY2szSElER2FtZXBhZC5oIgorCisj
aWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkdhbWVwYWRD
b25zdGFudHMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8SU9LaXQvaGlkL0lP
SElEVXNhZ2VUYWJsZXMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworRHVhbHNob2NrM0hJREdhbWVwYWQ6OkR1YWxzaG9jazNISURHYW1lcGFk
KEhJRERldmljZSYmIGRldmljZSwgdW5zaWduZWQgaW5kZXgpCisgICAgOiBISURHYW1lcGFkKFdU
Rk1vdmUoZGV2aWNlKSwgaW5kZXgpCit7CisgICAgTE9HKEdhbWVwYWQsICJDcmVhdGluZyBEdWFs
c2hvY2szSElER2FtZXBhZCAlcCIsIHRoaXMpOworCisgICAgbV9tYXBwaW5nID0gc3RhbmRhcmRH
YW1lcGFkTWFwcGluZ1N0cmluZygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1i
ZXJTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aEhvbWVCdXR0b247ICsraSkKKyAgICAgICAgbV9i
dXR0b25WYWx1ZXMuYXBwZW5kKDAuMCk7CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF4aXND
b3VudCA9IDQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBheGlzQ291bnQ7ICsraSkKKyAg
ICAgICAgbV9heGlzVmFsdWVzLmFwcGVuZCgwLjApOworCisgICAgYXV0byBpbnB1dEVsZW1lbnRz
ID0gaGlkRGV2aWNlKCkudW5pcXVlSW5wdXRFbGVtZW50c0luRGV2aWNlVHJlZU9yZGVyKCk7CisK
KyAgICBWZWN0b3I8SElERWxlbWVudD4gcG9pbnRlckVsZW1lbnRzOworCisgICAgYXV0byBtYXBC
dXR0b24gPSBbdGhpc10gKEhJREVsZW1lbnQmIGVsZW1lbnQsIEdhbWVwYWRCdXR0b25Sb2xlIHJv
bGUpIHsKKyAgICAgICAgbV9lbGVtZW50TWFwLnNldChlbGVtZW50LmNvb2tpZSgpLCBtYWtlVW5p
cXVlPEhJREdhbWVwYWRCdXR0b24+KGVsZW1lbnQsIG1fYnV0dG9uVmFsdWVzWyhzaXplX3Qpcm9s
ZV0pKTsKKyAgICB9OworCisgICAgLy8gTG9vayBzcGVjaWZpY2FsbHkgZm9yIHRoZSBheGVzIGFu
ZCBkaWdpdGFsIGJ1dHRvbnMKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBpbnB1dEVsZW1lbnRz
KSB7CisgICAgICAgIHN3aXRjaCAoZWxlbWVudC5mdWxsVXNhZ2UoKSkgeworICAgICAgICBjYXNl
IGhpZFBvaW50ZXJGdWxsVXNhZ2U6CisgICAgICAgICAgICBwb2ludGVyRWxlbWVudHMuYXBwZW5k
KGVsZW1lbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgaGlkWEF4aXNGdWxs
VXNhZ2U6CisgICAgICAgICAgICBtX2VsZW1lbnRNYXAuc2V0KGVsZW1lbnQuY29va2llKCksIG1h
a2VVbmlxdWU8SElER2FtZXBhZEF4aXM+KGVsZW1lbnQsIG1fYXhpc1ZhbHVlc1swXSkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgaGlkWUF4aXNGdWxsVXNhZ2U6CisgICAgICAg
ICAgICBtX2VsZW1lbnRNYXAuc2V0KGVsZW1lbnQuY29va2llKCksIG1ha2VVbmlxdWU8SElER2Ft
ZXBhZEF4aXM+KGVsZW1lbnQsIG1fYXhpc1ZhbHVlc1sxXSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgaGlkWkF4aXNGdWxsVXNhZ2U6CisgICAgICAgICAgICBtX2VsZW1lbnRN
YXAuc2V0KGVsZW1lbnQuY29va2llKCksIG1ha2VVbmlxdWU8SElER2FtZXBhZEF4aXM+KGVsZW1l
bnQsIG1fYXhpc1ZhbHVlc1syXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
aGlkUnpBeGlzRnVsbFVzYWdlOgorICAgICAgICAgICAgbV9lbGVtZW50TWFwLnNldChlbGVtZW50
LmNvb2tpZSgpLCBtYWtlVW5pcXVlPEhJREdhbWVwYWRBeGlzPihlbGVtZW50LCBtX2F4aXNWYWx1
ZXNbM10pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGhpZEJ1dHRvbjFGdWxs
VXNhZ2U6CisgICAgICAgICAgICBtYXBCdXR0b24oZWxlbWVudCwgR2FtZXBhZEJ1dHRvblJvbGU6
OkNlbnRlckNsdXN0ZXJMZWZ0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGhp
ZEJ1dHRvbjJGdWxsVXNhZ2U6CisgICAgICAgICAgICBtYXBCdXR0b24oZWxlbWVudCwgR2FtZXBh
ZEJ1dHRvblJvbGU6OkxlZnRTdGljayk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBoaWRCdXR0b24zRnVsbFVzYWdlOgorICAgICAgICAgICAgbWFwQnV0dG9uKGVsZW1lbnQsIEdh
bWVwYWRCdXR0b25Sb2xlOjpSaWdodFN0aWNrKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIGhpZEJ1dHRvbjRGdWxsVXNhZ2U6CisgICAgICAgICAgICBtYXBCdXR0b24oZWxlbWVu
dCwgR2FtZXBhZEJ1dHRvblJvbGU6OkNlbnRlckNsdXN0ZXJSaWdodCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBoaWRCdXR0b24xN0Z1bGxVc2FnZToKKyAgICAgICAgICAgIG1h
cEJ1dHRvbihlbGVtZW50LCBHYW1lcGFkQnV0dG9uUm9sZTo6Q2VudGVyQ2x1c3RlckNlbnRlcik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3Qgc2l6ZV90IGV4cGVjdGVkR2VuZXJpY1Bv
aW50ZXJFbGVtZW50cyA9IDQwOworICAgIGlmIChwb2ludGVyRWxlbWVudHMuc2l6ZSgpICE9IGV4
cGVjdGVkR2VuZXJpY1BvaW50ZXJFbGVtZW50cykgeworICAgICAgICBMT0coR2FtZXBhZCwgIkR1
YWxzaG9jazMgY29udHJvbGxlciB3YXMgZXhwZWN0ZWQgdG8gaGF2ZSAlbHUgZ2VuZXJpYyBwb2lu
dGVyIGVsZW1lbnRzLCBoYXMgJWx1IGluc3RlYWQiLCBleHBlY3RlZEdlbmVyaWNQb2ludGVyRWxl
bWVudHMsIHBvaW50ZXJFbGVtZW50cy5zaXplKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbWFwQnV0dG9uKHBvaW50ZXJFbGVtZW50c1s1XSwgR2FtZXBhZEJ1dHRvblJvbGU6Okxl
ZnRDbHVzdGVyVG9wKTsKKyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzZdLCBHYW1lcGFk
QnV0dG9uUm9sZTo6TGVmdENsdXN0ZXJSaWdodCk7CisgICAgbWFwQnV0dG9uKHBvaW50ZXJFbGVt
ZW50c1s3XSwgR2FtZXBhZEJ1dHRvblJvbGU6OkxlZnRDbHVzdGVyQm90dG9tKTsKKyAgICBtYXBC
dXR0b24ocG9pbnRlckVsZW1lbnRzWzhdLCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVmdENsdXN0ZXJM
ZWZ0KTsKKyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzldLCBHYW1lcGFkQnV0dG9uUm9s
ZTo6TGVmdFNob3VsZGVyQmFjayk7CisgICAgbWFwQnV0dG9uKHBvaW50ZXJFbGVtZW50c1sxMF0s
IEdhbWVwYWRCdXR0b25Sb2xlOjpSaWdodFNob3VsZGVyQmFjayk7CisgICAgbWFwQnV0dG9uKHBv
aW50ZXJFbGVtZW50c1sxMV0sIEdhbWVwYWRCdXR0b25Sb2xlOjpMZWZ0U2hvdWxkZXJGcm9udCk7
CisgICAgbWFwQnV0dG9uKHBvaW50ZXJFbGVtZW50c1sxMl0sIEdhbWVwYWRCdXR0b25Sb2xlOjpS
aWdodFNob3VsZGVyRnJvbnQpOworICAgIG1hcEJ1dHRvbihwb2ludGVyRWxlbWVudHNbMTNdLCBH
YW1lcGFkQnV0dG9uUm9sZTo6UmlnaHRDbHVzdGVyVG9wKTsKKyAgICBtYXBCdXR0b24ocG9pbnRl
ckVsZW1lbnRzWzE0XSwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0Q2x1c3RlclJpZ2h0KTsKKyAg
ICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzE1XSwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0
Q2x1c3RlckJvdHRvbSk7CisgICAgbWFwQnV0dG9uKHBvaW50ZXJFbGVtZW50c1sxNl0sIEdhbWVw
YWRCdXR0b25Sb2xlOjpSaWdodENsdXN0ZXJMZWZ0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0R1YWxzaG9jazNISURH
YW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9EdWFsc2hvY2sz
SElER2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MTkzZjM5ZWRhZDMxN2YxMzNjMjVmMzlkYjY0Mjg5
NTQwMTkzMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9EdWFsc2hvY2szSElER2FtZXBhZC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMp
CisKKyNpbmNsdWRlICJISURHYW1lcGFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRHVhbHNob2NrM0hJREdhbWVwYWQgZmluYWwgOiBwdWJsaWMgSElER2FtZXBhZCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRHVhbHNob2NrM0hJREdhbWVw
YWQoSElERGV2aWNlJiYsIHVuc2lnbmVkIGluZGV4KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElER2Ft
ZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElE
R2FtZXBhZC5jcHAKaW5kZXggNzMwMGViMzIxYTk0ZWMyNDY2NDA5N2Y3ZWMyMTY4MjIyODk0YTEw
OC4uMzkzZTIzNzAxZjVmY2I4ZWFhNzYxY2ZhNGFlNTA5YjhlOTJjM2ZjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1l
cGFkLmNwcApAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBHZW5lcmljSElE
R2FtZXBhZDo6R2VuZXJpY0hJREdhbWVwYWQoSElERGV2aWNlJiYgZGV2aWNlLCB1bnNpZ25lZCBp
bmRleCkKICAgICA6IEhJREdhbWVwYWQoV1RGTW92ZShkZXZpY2UpLCBpbmRleCkKIHsKKyAgICBM
T0coR2FtZXBhZCwgIkNyZWF0aW5nIEdlbmVyaWNISURHYW1lcGFkICVwIiwgdGhpcyk7CisKICAg
ICBhdXRvIGlucHV0RWxlbWVudHMgPSBoaWREZXZpY2UoKS51bmlxdWVJbnB1dEVsZW1lbnRzSW5E
ZXZpY2VUcmVlT3JkZXIoKTsKIAogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGlucHV0RWxlbWVu
dHMpIHsKQEAgLTUyLDEzICs1NCw2IEBAIEdlbmVyaWNISURHYW1lcGFkOjpHZW5lcmljSElER2Ft
ZXBhZChISUREZXZpY2UmJiBkZXZpY2UsIHVuc2lnbmVkIGluZGV4KQogICAgIH0KIH0KIAotU3Ry
aW5nIEdlbmVyaWNISURHYW1lcGFkOjppZCgpCi17Ci0gICAgLy8gQ3VycmVudGx5IHRoZSBzcGVj
IGhhcyBubyBmb3JtYXR0aW5nIGZvciB0aGUgaWQgc3RyaW5nLgotICAgIC8vIFRoaXMgc3RyaW5n
IGZvcm1hdHRpbmcgbWF0Y2hlcyBGaXJlZm94LgotICAgIHJldHVybiBtYWtlU3RyaW5nKGhleCho
aWREZXZpY2UoKS52ZW5kb3JJRCgpLCBMb3dlcmNhc2UpLCAnLScsIGhleChoaWREZXZpY2UoKS5w
cm9kdWN0SUQoKSwgTG93ZXJjYXNlKSwgJy0nLCBoaWREZXZpY2UoKS5wcm9kdWN0TmFtZSgpKTsK
LX0KLQogdm9pZCBHZW5lcmljSElER2FtZXBhZDo6bWF5YmVBZGRHZW5lcmljRGVza3RvcEVsZW1l
bnQoSElERWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBzd2l0Y2ggKGVsZW1lbnQudXNhZ2UoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJp
Y0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVy
aWNISURHYW1lcGFkLmgKaW5kZXggZTdhN2NiZDk1Mzk4MWZjODY1NDhlMGYzMjAzODI0NWY3OGE5
YWUxNS4uZDY2ZWIxNGIwOGE4ZTM3MjNmODgxZmNhMmZjNmNiOGJlYTE3NDQ3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElER2Ft
ZXBhZC5oCkBAIC0zNiw4ICszNiw2IEBAIHB1YmxpYzoKICAgICBHZW5lcmljSElER2FtZXBhZChI
SUREZXZpY2UmJiwgdW5zaWduZWQgaW5kZXgpOwogCiBwcml2YXRlOgotICAgIFN0cmluZyBpZCgp
IGZpbmFsOwotCiAgICAgdm9pZCBtYXliZUFkZEdlbmVyaWNEZXNrdG9wRWxlbWVudChISURFbGVt
ZW50Jik7CiAgICAgdm9pZCBtYXliZUFkZEJ1dHRvbkVsZW1lbnQoSElERWxlbWVudCYpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVw
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5j
cHAKaW5kZXggMWUxYjI2MzE3NjVkNGY2OTJmNDA4YTQ5ZTZiMzM2YTA3NTE3NGFlYy4uNTFkYzQ0
YWYzZDg5ZTEwYjhlYzhjYjIyNWRkYzc0MmI2Y2QyM2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKQEAgLTI4LDcgKzI4LDkg
QEAKIAogI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCiAKKyNpbmNsdWRlICJE
dWFsc2hvY2szSElER2FtZXBhZC5oIgogI2luY2x1ZGUgIkdlbmVyaWNISURHYW1lcGFkLmgiCisj
aW5jbHVkZSAiS25vd25HYW1lcGFkcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
IDxJT0tpdC9oaWQvSU9ISURFbGVtZW50Lmg+CiAjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElEVXNh
Z2VUYWJsZXMuaD4KQEAgLTQyLDEyICs0NCwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBh
ZD4gSElER2FtZXBhZDo6Y3JlYXRlKElPSElERGV2aWNlUmVmIHJhd0RldmljZSwgdW5zaWduZQog
ewogICAgIGF1dG8gZGV2aWNlID0gSElERGV2aWNlIHsgcmF3RGV2aWNlIH07CiAKLSAgICAvLyBX
aGVuIHdlIHN1cHBvcnQgc3BlY2lmaWMgbWFwcGluZyBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZSwg
aGVyZSBpcyB3aGVyZSB3ZSdsbCBkZWNpZGUgd2hhdCBraW5kIG9mIEhJREdhbWVwYWQgdG8gbWFr
ZS4KLSAgICAvLyBGb3Igbm93LCBpdCdzIG9ubHkgdGhlIEdlbmVyaWNISURHYW1lcGFkCi0gICAg
YXV0byBuZXdHYW1lcGFkID0gbWFrZVVuaXF1ZTxHZW5lcmljSElER2FtZXBhZD4oV1RGTW92ZShk
ZXZpY2UpLCBpbmRleCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IG5ld0dhbWVw
YWQ7CisKKyAgICBzd2l0Y2ggKChLbm93bkdhbWVwYWQpZGV2aWNlLmZ1bGxQcm9kdWN0SWRlbnRp
ZmllcigpKSB7CisgICAgY2FzZSBEdWFsc2hvY2szOgorICAgICAgICBuZXdHYW1lcGFkID0gbWFr
ZVVuaXF1ZTxEdWFsc2hvY2szSElER2FtZXBhZD4oV1RGTW92ZShkZXZpY2UpLCBpbmRleCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5ld0dhbWVwYWQgPSBtYWtlVW5p
cXVlPEdlbmVyaWNISURHYW1lcGFkPihXVEZNb3ZlKGRldmljZSksIGluZGV4KTsKKyAgICB9CiAK
ICAgICBuZXdHYW1lcGFkLT5pbml0aWFsaXplKCk7Ci0gICAgcmV0dXJuIFdURk1vdmUobmV3R2Ft
ZXBhZCk7CisgICAgcmV0dXJuIG5ld0dhbWVwYWQ7CiB9CiAKIEhJREdhbWVwYWQ6OkhJREdhbWVw
YWQoSElERGV2aWNlJiYgZGV2aWNlLCB1bnNpZ25lZCBpbmRleCkKQEAgLTU1LDEyICs2MywxNCBA
QCBISURHYW1lcGFkOjpISURHYW1lcGFkKEhJRERldmljZSYmIGRldmljZSwgdW5zaWduZWQgaW5k
ZXgpCiAgICAgLCBtX2RldmljZShXVEZNb3ZlKGRldmljZSkpCiB7CiAgICAgbV9jb25uZWN0VGlt
ZSA9IG1fbGFzdFVwZGF0ZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKworICAgIC8vIEN1
cnJlbnRseSB0aGUgc3BlYyBoYXMgbm8gZm9ybWF0dGluZyBmb3IgdGhlIGlkIHN0cmluZy4KKyAg
ICAvLyBUaGlzIHN0cmluZyBmb3JtYXR0aW5nIG1hdGNoZXMgRmlyZWZveC4KKyAgICBtX2lkID0g
bWFrZVN0cmluZyhoZXgobV9kZXZpY2UudmVuZG9ySUQoKSwgTG93ZXJjYXNlKSwgJy0nLCBoZXgo
bV9kZXZpY2UucHJvZHVjdElEKCksIExvd2VyY2FzZSksICctJywgbV9kZXZpY2UucHJvZHVjdE5h
bWUoKSk7CiB9CiAKIHZvaWQgSElER2FtZXBhZDo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgbV9pZCA9
IGlkKCk7Ci0KICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRNYXAudmFsdWVzKCkp
CiAgICAgICAgIGVsZW1lbnQtPnJlZnJlc2hDdXJyZW50VmFsdWUoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAppbmRleCBhMzgyYzll
NjQxMzQzOGFmZjlmODJhYWZkNzU2MWIwMDAxNmM0N2I0Li42MGYzMzk0YTNiNThkZmVmMWZjODk4
OWI0MzgwN2YzOWVjYzgwMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZC5oCkBAIC01Miw4ICs1Miw2IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBISURHYW1lcGFkKEhJRERldmljZSYmLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICB2
aXJ0dWFsIFN0cmluZyBpZCgpID0gMDsKLQogICAgIEhhc2hNYXA8SU9ISURFbGVtZW50Q29va2ll
LCBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZEVsZW1lbnQ+PiBtX2VsZW1lbnRNYXA7CiAgICAg
VmVjdG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4gbV9idXR0b25WYWx1ZXM7CiAgICAgVmVjdG9yPFNo
YXJlZEdhbWVwYWRWYWx1ZT4gbV9heGlzVmFsdWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0hJRERldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0hJRERldmljZS5oCmluZGV4IGRkYzhlNjE5OGMyYmUxZjc2YTI4YTJhZjE1MWNkM2U3MWFhOTM1
ZmYuLjAyMmRiOTc4MzI2YmY2OTMxZmJkOGYyYTlhMjgwMjVlYzcwNDYyMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISUREZXZpY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvSElERGV2aWNlLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgog
CiAgICAgdWludDE2X3QgdmVuZG9ySUQoKSBjb25zdCB7IHJldHVybiBtX3ZlbmRvcklEOyB9CiAg
ICAgdWludDE2X3QgcHJvZHVjdElEKCkgY29uc3QgeyByZXR1cm4gbV9wcm9kdWN0SUQ7IH0KKyAg
ICB1aW50MzJfdCBmdWxsUHJvZHVjdElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlbmRv
cklEIDw8IDE2IHwgbV9wcm9kdWN0SUQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHByb2R1Y3ROYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9kdWN0TmFtZTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJREVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9ISURFbGVtZW50LmgKaW5kZXggMTM2N2NiODg5MDc2YTc2MGIzMDI1
NTRhZDNkNzJiMTZiZTFiODFmYS4uYTIxYjRlZDM5Mzc0NjYwZDlhZTRiOWM1ZTFmNTE5ODU1YWVi
MWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJREVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSElERWxlbWVudC5oCkBAIC00NCw2
ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDRkluZGV4IHBoeXNpY2FsVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3BoeXNpY2FsVmFsdWU7IH0KICAgICB1aW50MzJfdCB1c2FnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNhZ2U7IH0KICAgICB1aW50MzJfdCB1c2FnZVBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X3VzYWdlUGFnZTsgfQorICAgIHVpbnQ2NF90IGZ1bGxVc2FnZSgpIGNvbnN0IHsgcmV0dXJuICgo
dWludDY0X3QpbV91c2FnZVBhZ2UpIDw8IDMyIHwgbV91c2FnZTsgfQogICAgIElPSElERWxlbWVu
dENvb2tpZSBjb29raWUoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZTsgfQogCiAgICAgdm9pZCB2
YWx1ZUNoYW5nZWQoSU9ISURWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjc4OGIxM2FjY2JiODRjYzkwNGYwZjA4ZWQ4OTZlZGZk
YWZhOWM1Yy4uYzBhYTg2ZGQ0YTUxMmU2NDY4YTQyODU3MDg1ZjEzYzMzM2VmOTAwOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDIwLTA3LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGVjaWFsIEhJRCBtYXBwaW5nIGZvciB0aGUgRHVhbHNob2NrIDMgY29udHJvbGxlcgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYyNTUxOTg+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdmlydHVhbCBEdWFsc2hvY2szIGFuZCB2ZXJpZnkg
YSBmZXcgYXR0cmlidXRlcyBhYm91dCBpdC4KKyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSElER2FtZXBhZHMubW06CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9tYWMvR2FtZXBhZE1hcHBpbmdzL1NvbnlEdWFsU2hvY2szLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnB1Ymxpc2hSZXBvcnRDYWxsYmFjayk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpWaXJ0dWFsR2FtZXBhZDo6c29ueUR1YWxzaG9jazNNYXBwaW5nKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9WaXJ0dWFsR2FtZXBhZC5oOgorCiAyMDIwLTA3LTMw
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVtb3ZlIG5vbi1pbmNsdXNpdmUgdGVybWlub2xvZ3kgZnJvbSBXZWJLaXQgdmFyaWFibGUgbmFt
ZXMgYW5kIHRlc3Qtb25seSBTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWJlNTViZTgz
YjkwYzU3YzIyYTFhZjY5MmI2YWU0YjJkOWFlN2E4OS4uOWIxZWM4NTllMGJiMjc4MWM5NTA5YjYy
YjU5OTU3ODAyOTkyZjlmZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3Niw2ICsyNzYs
NyBAQAogCQk1MTA0Nzc3NDFEMjk4REREMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3Fs
aXRlMy13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwNDc3NzExRDI5OEQ4NTAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0
ZTMtd2FsICovOyB9OwogCQk1MTA0Nzc3NzFEMjk4RTcyMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVj
b3ZlcnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTA0Nzc3NjFEMjk4RTU3MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3ZlcnkuaHRt
bCAqLzsgfTsKIAkJNTEwNDc3NzgxRDI5OTIzQjAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNDc3
NzUxRDI5OEUwMzAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5Lm1tICovOyB9OworCQk1MTBB
OTFGODI0RDM2MjIxMDBCRkQ4OUMgLyogU29ueUR1YWxTaG9jazMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBOTFGNzI0RDM2MjE5MDBCRkQ4OUMg
LyogU29ueUR1YWxTaG9jazMubW0gKi87IH07CiAJCTUxMTBGQ0YxMUUwMUNENjQwMDZGOEQwQiAv
KiBJREJJbmRleFVwZ3JhZGVUb1YyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEZDRjAxRTAxQ0Q1MzAwNkY4RDBCIC8qIElEQklu
ZGV4VXBncmFkZVRvVjIuaHRtbCAqLzsgfTsKIAkJNTExMEZDRjYxRTAxQ0Q4MzAwNkY4RDBCIC8q
IEluZGV4VXBncmFkZS5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0YzMUUwMUNENzcwMDZGOEQwQiAvKiBJbmRleFVwZ3Jh
ZGUuc3FsaXRlMyAqLzsgfTsKIAkJNTExMEZDRjkxRTAxQ0Q4QTAwNkY4RDBCIC8qIEluZGV4VXBn
cmFkZS5ibG9iIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMTBGQ0YyMUUwMUNENzcwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuYmxvYiAqLzsg
fTsKQEAgLTE5NzAsNiArMTk3MSw3IEBACiAJCTUxMDQ3NzcxMUQyOThEODUwMDk3NDdFQiAvKiBJ
REJEZWxldGVSZWNvdmVyeS5zcWxpdGUzLXdhbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiSURCRGVsZXRlUmVjb3Zlcnkuc3Fs
aXRlMy13YWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA0Nzc3NTFEMjk4RTAz
MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3ZlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBJREJEZWxldGVSZWNvdmVyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwNDc3NzYxRDI5OEU1NzAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJREJEZWxldGVSZWNvdmVyeS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBBOTFGNzI0RDM2MjE5MDBCRkQ4OUMg
LyogU29ueUR1YWxTaG9jazMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTb255RHVhbFNob2NrMy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEx
MEZDRUYxRTAxQ0JBQTAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJREJJbmRleFVwZ3JhZGVUb1YyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTEwRkNGMDFFMDFDRDUzMDA2RjhEMEIgLyog
SURCSW5kZXhVcGdyYWRlVG9WMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSURC
SW5kZXhVcGdyYWRlVG9WMi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTEw
RkNGMjFFMDFDRDc3MDA2RjhEMEIgLyogSW5kZXhVcGdyYWRlLmJsb2IgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSW5kZXhVcGdyYWRlLmJsb2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zNDY2LDYgKzM0NjgsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTFFQjEyNjAyNENBNkI1
RjAwMENCMDMwIC8qIE1pY3Jvc29mdFhib3hPbmUubW0gKi8sCiAJCQkJNTFFQjEyNUUyNENBNkI1
RjAwMENCMDMwIC8qIFNoZW56aGVuTG9uZ3NoZW5nd2VpVGVjaG5vbG9neUdhbWVwYWQubW0gKi8s
CisJCQkJNTEwQTkxRjcyNEQzNjIxOTAwQkZEODlDIC8qIFNvbnlEdWFsU2hvY2szLm1tICovLAog
CQkJCTUxRUIxMjVGMjRDQTZCNUYwMDBDQjAzMCAvKiBTb255RHVhbFNob2NrNC5tbSAqLywKIAkJ
CQk1MUVCMTI2MTI0Q0E2QjVGMDAwQ0IwMzAgLyogU3RlZWxTZXJpZXNOaW1idXMubW0gKi8sCiAJ
CQkJNTFFQjEyNjYyNENCODQ5MzAwMENCMDMwIC8qIFN1bkxpZ2h0QXBwbGljYXRpb25HZW5lcmlj
TkVTLm1tICovLApAQCAtNTMxMyw2ICs1MzE2LDcgQEAKIAkJCQlDMTQ5RDU1MDI0MkU5OERGMDAz
RUJCMTIgLyogU2xlZXBEaXNhYmxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJERkY3QjZEMURB
NDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0
RkZBOUUxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTEwQTkxRjgyNEQzNjIyMTAwQkZEODlDIC8qIFNvbnlEdWFsU2hv
Y2szLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFQjEyNjQyNENBNkI2NjAwMENCMDMwIC8qIFNv
bnlEdWFsU2hvY2s0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTUxQTQxMUFFNjAwNDQ3
QzRDIC8qIFNwYWNlYmFyU2Nyb2xsaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3RjRBQUEw
MjA4RkFFRjAwMEE2OEU5RSAvKiBTU0xLZXlHZW5lcmF0b3IubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hJREdhbWVwYWRzLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSElER2FtZXBhZHMubW0KaW5kZXggODc1Yjgx
MTU3MGZmMjY1MmU0OWZkZjA2NjQ0NWZmNTMxMWYyNjdkYi4uMmUwZjQ5MWQ5MDVkMzkyZmEyYTU0
YWQ1YTUzMTYyMGVkMjJmMDk3NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvSElER2FtZXBhZHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
SElER2FtZXBhZHMubW0KQEAgLTM1OCw2ICszNTgsNjkgQEAgVEVTVChHYW1lcGFkLCBHYW1lcGFk
U3RhdGUpCiAgICAgRVhQRUNUX1RSVUUoW21lc3NhZ2VIYW5kbGVyLmdldCgpLm1lc3NhZ2VzWzFd
IGlzRXF1YWxUb1N0cmluZzpAIkRpc2Nvbm5lY3Q6IFwiNzktMTEtVmlydHVhbCBTaGVuemhlbiBM
b25nc2hlbmd3ZWkgVGVjaG5vbG9neSBHYW1lcGFkXCIiXSk7CiB9CiAKK1RFU1QoR2FtZXBhZCwg
RHVhbHNob2NrM0Jhc2ljKQoreworICAgIGF1dG8ga2V5V2luZG93U3dpenpsZXIgPSBtYWtlVW5p
cXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtOU0FwcGxpY2F0aW9uIGNsYXNzXSwgQHNlbGVj
dG9yKGtleVdpbmRvdyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihnZXRLZXlXaW5kb3dGb3JUZXN0
aW5nKSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9w
dE5TKFtbR2FtZXBhZE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVz
c2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAImdhbWVwYWQiXTsKKworICAgIGF1dG8gc2NoZW1lSGFu
ZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBm
b3JVUkxTY2hlbWU6QCJnYW1lcGFkIl07CisKKyAgICBbc2NoZW1lSGFuZGxlciBzZXRTdGFydFVS
TFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFz
aykgeworICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4
cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczptYWluQnl0ZXMgbGVuZ3RoOnN0cmxl
bihtYWluQnl0ZXMpXV07CisgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAgfV07CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICBrZXlXaW5kb3dGb3JUZXN0aW5nID0gW3dlYlZpZXcgd2luZG93XTsK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImdhbWVwYWQ6Ly9ob3N0L21haW4uaHRt
bCJdXV07CisKKyAgICBbW3dlYlZpZXcgd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6d2ViVmll
dy5nZXQoKV07CisKKyAgICAvLyBSZXNpZ25pbmcvcmVpbnN0YXRpbmcgdGhlIGtleSB3aW5kb3cg
c3RhdGUgdHJpZ2dlcnMgdGhlICJrZXkgd2luZG93IGRpZCBjaGFuZ2UiIG5vdGlmaWNhdGlvbiB0
aGF0IFdLV2ViVmlldyBjdXJyZW50bHkKKyAgICAvLyBuZWVkcyB0byBjb252aW5jZSBpdCB0byBt
b25pdG9yIGdhbWVwYWQgZGV2aWNlcworICAgIFtbd2ViVmlldyB3aW5kb3ddIHJlc2lnbktleVdp
bmRvd107CisgICAgW1t3ZWJWaWV3IHdpbmRvd10gbWFrZUtleVdpbmRvd107CisKKyAgICAvLyBD
b25uZWN0IGEgZ2FtZXBhZCBhbmQgbWFrZSBpdCB2aXNpYmxlIHRvIHRoZSBwYWdlCisgICAgYXV0
byBnYW1lcGFkID0gbWFrZVVuaXF1ZTxWaXJ0dWFsR2FtZXBhZD4oVmlydHVhbEdhbWVwYWQ6OnNv
bnlEdWFsc2hvY2szTWFwcGluZygpKTsKKyAgICB3aGlsZSAoIVt3ZWJWaWV3LmdldCgpLmNvbmZp
Z3VyYXRpb24ucHJvY2Vzc1Bvb2wgX251bWJlck9mQ29ubmVjdGVkR2FtZXBhZHNGb3JUZXN0aW5n
XSkKKyAgICAgICAgVXRpbDo6c2xlZXAoMC4wMSk7CisKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcu
Z2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfbnVtYmVyT2ZDb25uZWN0ZWRISURHYW1l
cGFkc0ZvclRlc3RpbmddLCAxdSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3LmdldCgpLmNvbmZp
Z3VyYXRpb24ucHJvY2Vzc1Bvb2wgX251bWJlck9mQ29ubmVjdGVkR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmtHYW1lcGFkc0ZvclRlc3RpbmddLCAwdSk7CisKKyAgICBnYW1lcGFkLT5zZXRCdXR0b25W
YWx1ZSgwLCAwLjc1KTsKKyAgICBnYW1lcGFkLT5wdWJsaXNoUmVwb3J0KCk7CisKKyAgICAvLyBX
YWl0IGZvciB0aGUgcGFnZSB0byB0ZWxsIHVzIGEgZ2FtZXBhZCBjb25uZWN0ZWQKKyAgICBVdGls
OjpydW4oJmRpZFJlY2VpdmVNZXNzYWdlKTsKKyAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZhbHNl
OworCisgICAgRVhQRUNUX0VRKG1lc3NhZ2VIYW5kbGVyLmdldCgpLm1lc3NhZ2VzLnNpemUoKSwg
MXUpOworICAgIEVYUEVDVF9UUlVFKFttZXNzYWdlSGFuZGxlci5nZXQoKS5tZXNzYWdlc1swXSBp
c0VxdWFsVG9TdHJpbmc6QCJcIjU0Yy0yNjgtVmlydHVhbCBEdWFsc2hvY2szXCIiXSk7CisKKyAg
ICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBhdXRvIHJlc3VsdEJsb2NrID0gWyZdIChpZCByZXN1
bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdFtAImdhbWVwYWRDb3VudCJdIGlzRXF1YWxUb051bWJlcjpA
KDEpXSk7CisgICAgICAgIEVYUEVDVF9FUSgoKE5TQXJyYXkgKilyZXN1bHRbQCJnYW1lcGFkQnV0
dG9ucyJdWzBdKS5jb3VudCwgMTd1KTsKKyAgICAgICAgRVhQRUNUX0VRKCgoTlNBcnJheSAqKXJl
c3VsdFtAImdhbWVwYWRBeGVzIl1bMF0pLmNvdW50LCA0dSk7CisKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QChwb2xsR2Ft
ZXBhZFN0YXRlRnVuY3Rpb24pIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpuaWwgaW5Db250ZW50V29y
bGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOnJlc3VsdEJsb2Nr
XTsKKworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgZGlkUmVjZWl2ZU1lc3NhZ2UgPSB0cnVl
OworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKEhJ
RF9GUkFNRVdPUkspICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9HYW1lcGFkTWFwcGluZ3MvU29ueUR1YWxTaG9jazMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL21hYy9HYW1lcGFkTWFwcGluZ3MvU29ueUR1YWxTaG9jazMubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDBmZDAzNTMxNGM4NGYxZDkwZDMwZWY3Y2FhMjUyYzg1NjNkODJkNQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0dhbWVwYWRNYXBwaW5ncy9T
b255RHVhbFNob2NrMy5tbQpAQCAtMCwwICsxLDIwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiVmlydHVhbEdhbWVwYWQuaCIKKworI2lmIEhBVkUoSElEX0ZS
QU1FV09SSykgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8SElEL0hJRFVz
ZXJEZXZpY2UuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjb25zdCB1aW50OF90
IER1YWxzaG9jazNEZXNjcmlwdG9yW10gPSB7CisgICAgMHgwNSwgMHgwMSwgICAgICAgIC8vIFVz
YWdlIFBhZ2UgKEdlbmVyaWMgRGVza3RvcCBDdHJscykKKyAgICAweDA5LCAweDA0LCAgICAgICAg
Ly8gVXNhZ2UgKEpveXN0aWNrKQorICAgIDB4QTEsIDB4MDEsICAgICAgICAvLyBDb2xsZWN0aW9u
IChBcHBsaWNhdGlvbikKKyAgICAweEExLCAweDAyLCAgICAgICAgLy8gICBDb2xsZWN0aW9uIChM
b2dpY2FsKQorICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgUmVwb3J0IElEIC0gVG90YWwg
KDEpIGJ5dGUKKyAgICAweDg1LCAweDAxLCAgICAgICAgLy8gICAgIFJlcG9ydCBJRCAoMSkKKyAg
ICAweDc1LCAweDA4LCAgICAgICAgLy8gICAgIFJlcG9ydCBTaXplICg4KQorICAgIDB4OTUsIDB4
MDEsICAgICAgICAvLyAgICAgUmVwb3J0IENvdW50ICgxKQorICAgIDB4MTUsIDB4MDAsICAgICAg
ICAvLyAgICAgTG9naWNhbCBNaW5pbXVtICgwKQorICAgIDB4MjYsIDB4RkYsIDB4MDAsICAvLyAg
ICAgTG9naWNhbCBNYXhpbXVtICgyNTUpCisgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAo
MSkgYnl0ZSByZXBvcnQgZm9yIHVua25vd24gcG9pbnRlciAtIFRvdGFsICgyKSBieXRlcworICAg
IDB4ODEsIDB4MDMsICAgICAgICAvLyAgICAgSW5wdXQgKENvbnN0LFZhcixBYnMsTm8gV3JhcCxM
aW5lYXIsUHJlZmVycmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24pCisgICAgMHg3NSwgMHgwMSwg
ICAgICAgIC8vICAgICBSZXBvcnQgU2l6ZSAoMSkKKyAgICAweDk1LCAweDEzLCAgICAgICAgLy8g
ICAgIFJlcG9ydCBDb3VudCAoMTkpCisgICAgMHgxNSwgMHgwMCwgICAgICAgIC8vICAgICBMb2dp
Y2FsIE1pbmltdW0gKDApCisgICAgMHgyNSwgMHgwMSwgICAgICAgIC8vICAgICBMb2dpY2FsIE1h
eGltdW0gKDEpCisgICAgMHgzNSwgMHgwMCwgICAgICAgIC8vICAgICBQaHlzaWNhbCBNaW5pbXVt
ICgwKQorICAgIDB4NDUsIDB4MDEsICAgICAgICAvLyAgICAgUGh5c2ljYWwgTWF4aW11bSAoMSkK
KyAgICAweDA1LCAweDA5LCAgICAgICAgLy8gICAgIFVzYWdlIFBhZ2UgKEJ1dHRvbikKKyAgICAw
eDE5LCAweDAxLCAgICAgICAgLy8gICAgIFVzYWdlIE1pbmltdW0gKDB4MDEpCisgICAgMHgyOSwg
MHgxMywgICAgICAgIC8vICAgICBVc2FnZSBNYXhpbXVtICgweDEzKQorICAgICAgICAgICAgICAg
ICAgICAgICAvLyAgICAgKDE5KSBiaXRzIGZvciBkaWdpdGFsIGJ1dHRvbnMgLSBUb3RhbCAoNCkg
Ynl0ZXMgKDMpIGJpdHMKKyAgICAweDgxLCAweDAyLCAgICAgICAgLy8gICAgIElucHV0IChEYXRh
LFZhcixBYnMsTm8gV3JhcCxMaW5lYXIsUHJlZmVycmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24p
CisgICAgMHg3NSwgMHgwMSwgICAgICAgIC8vICAgICBSZXBvcnQgU2l6ZSAoMSkKKyAgICAweDk1
LCAweDBELCAgICAgICAgLy8gICAgIFJlcG9ydCBDb3VudCAoMTMpCisgICAgMHgwNiwgMHgwMCwg
MHhGRiwgIC8vICAgICBVc2FnZSBQYWdlIChWZW5kb3IgRGVmaW5lZCAweEZGMDApCisgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgICAoMTMpIGJpdHMgcGFkZGluZyAtIFRvdGFsICg2KSBieXRl
cworICAgIDB4ODEsIDB4MDMsICAgICAgICAvLyAgICAgSW5wdXQgKENvbnN0LFZhcixBYnMsTm8g
V3JhcCxMaW5lYXIsUHJlZmVycmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24pCisgICAgMHgxNSwg
MHgwMCwgICAgICAgIC8vICAgICBMb2dpY2FsIE1pbmltdW0gKDApCisgICAgMHgyNiwgMHhGRiwg
MHgwMCwgIC8vICAgICBMb2dpY2FsIE1heGltdW0gKDI1NSkKKyAgICAweDA1LCAweDAxLCAgICAg
ICAgLy8gICAgIFVzYWdlIFBhZ2UgKEdlbmVyaWMgRGVza3RvcCBDdHJscykKKyAgICAweDA5LCAw
eDAxLCAgICAgICAgLy8gICAgIFVzYWdlIChQb2ludGVyKQorICAgIDB4QTEsIDB4MDAsICAgICAg
ICAvLyAgICAgQ29sbGVjdGlvbiAoUGh5c2ljYWwpCisgICAgMHg3NSwgMHgwOCwgICAgICAgIC8v
ICAgICAgIFJlcG9ydCBTaXplICg4KQorICAgIDB4OTUsIDB4MDQsICAgICAgICAvLyAgICAgICBS
ZXBvcnQgQ291bnQgKDQpCisgICAgMHgzNSwgMHgwMCwgICAgICAgIC8vICAgICAgIFBoeXNpY2Fs
IE1pbmltdW0gKDApCisgICAgMHg0NiwgMHhGRiwgMHgwMCwgIC8vICAgICAgIFBoeXNpY2FsIE1h
eGltdW0gKDI1NSkKKyAgICAweDA5LCAweDMwLCAgICAgICAgLy8gICAgICAgVXNhZ2UgKFgpCisg
ICAgMHgwOSwgMHgzMSwgICAgICAgIC8vICAgICAgIFVzYWdlIChZKQorICAgIDB4MDksIDB4MzIs
ICAgICAgICAvLyAgICAgICBVc2FnZSAoWikKKyAgICAweDA5LCAweDM1LCAgICAgICAgLy8gICAg
ICAgVXNhZ2UgKFJ6KQorICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAoNCkgYXhlcyBh
dCAxIGJ5dGUgZWFjaCAtIFRvdGFsICgxMCkgYnl0ZXMKKyAgICAweDgxLCAweDAyLCAgICAgICAg
Ly8gICAgICAgSW5wdXQgKERhdGEsVmFyLEFicyxObyBXcmFwLExpbmVhcixQcmVmZXJyZWQgU3Rh
dGUsTm8gTnVsbCBQb3NpdGlvbikKKyAgICAweEMwLCAgICAgICAgICAgICAgLy8gICAgIEVuZCBD
b2xsZWN0aW9uCisgICAgMHgwNSwgMHgwMSwgICAgICAgIC8vICAgICBVc2FnZSBQYWdlIChHZW5l
cmljIERlc2t0b3AgQ3RybHMpCisgICAgMHg3NSwgMHgwOCwgICAgICAgIC8vICAgICBSZXBvcnQg
U2l6ZSAoOCkKKyAgICAweDk1LCAweDI3LCAgICAgICAgLy8gICAgIFJlcG9ydCBDb3VudCAoMzkp
CisgICAgMHgwOSwgMHgwMSwgICAgICAgIC8vICAgICBVc2FnZSAoUG9pbnRlcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICAgICgzOSkgcG9pbnRlcnMgYXQgMSBieXRlIGVhY2ggLSBUb3Rh
bCAoNDkpIGJ5dGVzCisgICAgMHg4MSwgMHgwMiwgICAgICAgIC8vICAgICBJbnB1dCAoRGF0YSxW
YXIsQWJzLE5vIFdyYXAsTGluZWFyLFByZWZlcnJlZCBTdGF0ZSxObyBOdWxsIFBvc2l0aW9uKQor
ICAgIDB4NzUsIDB4MDgsICAgICAgICAvLyAgICAgUmVwb3J0IFNpemUgKDgpCisgICAgMHg5NSwg
MHgzMCwgICAgICAgIC8vICAgICBSZXBvcnQgQ291bnQgKDQ4KQorICAgIDB4MDksIDB4MDEsICAg
ICAgICAvLyAgICAgVXNhZ2UgKFBvaW50ZXIpCisgICAgMHg5MSwgMHgwMiwgICAgICAgIC8vICAg
ICBPdXRwdXQgKERhdGEsVmFyLEFicyxObyBXcmFwLExpbmVhcixQcmVmZXJyZWQgU3RhdGUsTm8g
TnVsbCBQb3NpdGlvbixOb24tdm9sYXRpbGUpCisgICAgMHg3NSwgMHgwOCwgICAgICAgIC8vICAg
ICBSZXBvcnQgU2l6ZSAoOCkKKyAgICAweDk1LCAweDMwLCAgICAgICAgLy8gICAgIFJlcG9ydCBD
b3VudCAoNDgpCisgICAgMHgwOSwgMHgwMSwgICAgICAgIC8vICAgICBVc2FnZSAoUG9pbnRlcikK
KyAgICAweEIxLCAweDAyLCAgICAgICAgLy8gICAgIEZlYXR1cmUgKERhdGEsVmFyLEFicyxObyBX
cmFwLExpbmVhcixQcmVmZXJyZWQgU3RhdGUsTm8gTnVsbCBQb3NpdGlvbixOb24tdm9sYXRpbGUp
CisgICAgMHhDMCwgICAgICAgICAgICAgIC8vICAgRW5kIENvbGxlY3Rpb24KKyAgICAweEExLCAw
eDAyLCAgICAgICAgLy8gICBDb2xsZWN0aW9uIChMb2dpY2FsKQorICAgIDB4ODUsIDB4MDIsICAg
ICAgICAvLyAgICAgUmVwb3J0IElEICgyKQorICAgIDB4NzUsIDB4MDgsICAgICAgICAvLyAgICAg
UmVwb3J0IFNpemUgKDgpCisgICAgMHg5NSwgMHgzMCwgICAgICAgIC8vICAgICBSZXBvcnQgQ291
bnQgKDQ4KQorICAgIDB4MDksIDB4MDEsICAgICAgICAvLyAgICAgVXNhZ2UgKFBvaW50ZXIpCisg
ICAgMHhCMSwgMHgwMiwgICAgICAgIC8vICAgICBGZWF0dXJlIChEYXRhLFZhcixBYnMsTm8gV3Jh
cCxMaW5lYXIsUHJlZmVycmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24sTm9uLXZvbGF0aWxlKQor
ICAgIDB4QzAsICAgICAgICAgICAgICAvLyAgIEVuZCBDb2xsZWN0aW9uCisgICAgMHhBMSwgMHgw
MiwgICAgICAgIC8vICAgQ29sbGVjdGlvbiAoTG9naWNhbCkKKyAgICAweDg1LCAweEVFLCAgICAg
ICAgLy8gICAgIFJlcG9ydCBJRCAoLTE4KQorICAgIDB4NzUsIDB4MDgsICAgICAgICAvLyAgICAg
UmVwb3J0IFNpemUgKDgpCisgICAgMHg5NSwgMHgzMCwgICAgICAgIC8vICAgICBSZXBvcnQgQ291
bnQgKDQ4KQorICAgIDB4MDksIDB4MDEsICAgICAgICAvLyAgICAgVXNhZ2UgKFBvaW50ZXIpCisg
ICAgMHhCMSwgMHgwMiwgICAgICAgIC8vICAgICBGZWF0dXJlIChEYXRhLFZhcixBYnMsTm8gV3Jh
cCxMaW5lYXIsUHJlZmVycmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24sTm9uLXZvbGF0aWxlKQor
ICAgIDB4QzAsICAgICAgICAgICAgICAvLyAgIEVuZCBDb2xsZWN0aW9uCisgICAgMHhBMSwgMHgw
MiwgICAgICAgIC8vICAgQ29sbGVjdGlvbiAoTG9naWNhbCkKKyAgICAweDg1LCAweEVGLCAgICAg
ICAgLy8gICAgIFJlcG9ydCBJRCAoLTE3KQorICAgIDB4NzUsIDB4MDgsICAgICAgICAvLyAgICAg
UmVwb3J0IFNpemUgKDgpCisgICAgMHg5NSwgMHgzMCwgICAgICAgIC8vICAgICBSZXBvcnQgQ291
bnQgKDQ4KQorICAgIDB4MDksIDB4MDEsICAgICAgICAvLyAgICAgVXNhZ2UgKFBvaW50ZXIpCisg
ICAgMHhCMSwgMHgwMiwgICAgICAgIC8vICAgICBGZWF0dXJlIChEYXRhLFZhcixBYnMsTm8gV3Jh
cCxMaW5lYXIsUHJlZmVycmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24sTm9uLXZvbGF0aWxlKQor
ICAgIDB4QzAsICAgICAgICAgICAgICAvLyAgIEVuZCBDb2xsZWN0aW9uCisgICAgMHhDMCwgICAg
ICAgICAgICAgIC8vIEVuZCBDb2xsZWN0aW9uCit9OworCisvLyBGSVhNRTogSGF0c3dpdGNoIGlz
IG5vdCB5ZXQgYWRkcmVzc2FibGUgYnkgdGVzdAorY29uc3Qgc2l6ZV90IER1YWxzaG9jazNCdXR0
b25Db3VudCA9IDE5OworY29uc3Qgc2l6ZV90IER1YWxzaG9jazNBeGlzQ291bnQgPSA0OworY29u
c3Qgc2l6ZV90IER1YWxzaG9jazNSZXBvcnRTaXplID0gNDk7Citjb25zdCBjaGFyKiBEdWFsc2hv
Y2szTmFtZSA9ICJWaXJ0dWFsIER1YWxzaG9jazMiOworCisvLyBSZXBvcnQgbGF5b3V0OgorLy8g
fFJlcG9ydElEfCB8PG5vbmU+fCB8YjEtYjh8IHxiOS1iMTZ8IHwoNSBiaXRzIHBhZGRpbmcgaGln
aCkgYjE3LWIxOXwgfHBhZGRpbmd8IHxBeGlzMXwgfEF4aXMyfCB8QXhpczN8IHxBeGlzNHwKKy8v
ICgzOXgpIHxHZW5lcmljIHBvaW50ZXJ8CisvLyBBbmFsb2cgYnV0dG9uIHJlYWRvdXRzIHNob3cg
dXAgYXQgc3BlY2lmaWMgcGxhY2VzIGluIHRob3NlIDM5IGdlbmVyaWMgMSBieXRlIHBvaW50ZXJz
CisvLyBQaHlzaWNhbCBidXR0b25zIG9uIHRoZSBkZXZpY2UgbWFwIHRvIGJ1dHRvbiBiaXRzIDEt
MTcsIGJ1dCB0aGVyZSBpcyBubyBhY3R1YXRvciBmb3IgYjE4IGFuZCBiMTkKKy8vIDEyIG9mIHRo
b3NlIHBoeXNpY2FsIGJ1dHRvbnMgYWxzbyBoYXZlIGFuIGFuYWxvZyB2YWx1ZSBtYXBwaW5nIGlu
dG8gdGhlIGdlbmVyaWMgcG9pbnRlcnMKKworc3RhdGljIHZvaWQgcHVibGlzaFJlcG9ydENhbGxi
YWNrKFZlY3RvcjxmbG9hdD4mIGJ1dHRvblZhbHVlcywgVmVjdG9yPGZsb2F0PiYgYXhpc1ZhbHVl
cywgSElEVXNlckRldmljZSAqdXNlckRldmljZSkKK3sKKyAgICB1aW50OF90IHJlcG9ydERhdGFb
RHVhbHNob2NrM1JlcG9ydFNpemVdOworICAgIGJ6ZXJvKHJlcG9ydERhdGEsIER1YWxzaG9jazNS
ZXBvcnRTaXplKTsKKyAgICBzaXplX3QgcmVwb3J0SW5kZXggPSAwOworCisgICAgLy8gUmVwb3J0
IElECisgICAgcmVwb3J0RGF0YVtyZXBvcnRJbmRleCsrXSA9IDB4MDE7CisKKyAgICAvLyBDb25z
dGFudAorICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAweDAwOworCisgICAgLy8gRGln
aXRhbCBidXR0b25zIHNwYW4gdGhlIG5leHQgMyBieXRlcworICAgIHVpbnQ4X3QgYnV0dG9uQnl0
ZSA9IDB4MDA7CisgICAgbG9uZyBidXR0b25CaXQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCA4OyArK2kpIHsKKyAgICAgICAgYnV0dG9uQml0ID0gbHJvdW5kKGJ1dHRvblZhbHVlc1tpXSk7
CisgICAgICAgIGJ1dHRvbkJ5dGUgfD0gYnV0dG9uQml0IDw8IGk7CisgICAgfQorICAgIHJlcG9y
dERhdGFbcmVwb3J0SW5kZXgrK10gPSBidXR0b25CeXRlOworCisgICAgYnV0dG9uQnl0ZSA9IDB4
MDA7CisgICAgZm9yIChzaXplX3QgaSA9IDg7IGkgPCAxNjsgKytpKSB7CisgICAgICAgIGJ1dHRv
bkJpdCA9IGxyb3VuZChidXR0b25WYWx1ZXNbaV0pOworICAgICAgICBidXR0b25CeXRlIHw9IGJ1
dHRvbkJpdCA8PCAoaSAtIDgpOworICAgIH0KKyAgICByZXBvcnREYXRhW3JlcG9ydEluZGV4Kytd
ID0gYnV0dG9uQnl0ZTsKKworICAgIGJ1dHRvbkJ5dGUgPSAweDAwOworICAgIGZvciAoc2l6ZV90
IGkgPSAxNjsgaSA8IDE5OyArK2kpIHsKKyAgICAgICAgYnV0dG9uQml0ID0gbHJvdW5kKGJ1dHRv
blZhbHVlc1tpXSk7CisgICAgICAgIGJ1dHRvbkJ5dGUgfD0gYnV0dG9uQml0IDw8IChpIC0gMTYp
OworICAgIH0KKyAgICByZXBvcnREYXRhW3JlcG9ydEluZGV4KytdID0gYnV0dG9uQnl0ZTsKKwor
ICAgIC8vIFBhZGRpbmcgYnl0ZQorICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAweDAw
OworCisgICAgLy8gQXhlcyAoMSBieXRlIGVhY2gpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCA0OyArK2kpCisgICAgICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAodWludDhfdCko
YXhpc1ZhbHVlc1tpXSAqIDI1NSk7CisKKyAgICAvLyBGaXJzdCA0IGdlbmVyaWMgcG9pbnRzIGFy
ZSBhbHdheXMgMHgwMAorICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAweDAwOworICAg
IHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAweDAwOworICAgIHJlcG9ydERhdGFbcmVwb3J0
SW5kZXgrK10gPSAweDAwOworICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAweDAwOwor
CisgICAgLy8gVGhlIG5leHQgdHdlbHZlIGdlbmVyaWMgcG9pbnRlcnMgbWFwIHRvIHNwZWNpZmlj
IGJ1dHRvbnMgaW4gb3JkZXIKKyAgICBmb3IgKHNpemVfdCBpID0gNDsgaSA8IDE2OyArK2kpCisg
ICAgICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAodWludDhfdCkoYnV0dG9uVmFsdWVz
W2ldICogMjU1KTsKKworICAgIGF1dG8gbnNSZXBvcnREYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlczpyZXBvcnREYXRhIGxlbmd0aDpEdWFsc2hvY2szUmVwb3J0U2l6
ZV0pOworICAgIFt1c2VyRGV2aWNlIGhhbmRsZVJlcG9ydDpuc1JlcG9ydERhdGEuZ2V0KCkgZXJy
b3I6bmlsXTsKK30KKworR2FtZXBhZE1hcHBpbmcgVmlydHVhbEdhbWVwYWQ6OnNvbnlEdWFsc2hv
Y2szTWFwcGluZygpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgRHVhbHNob2NrM0Rlc2NyaXB0
b3IsCisgICAgICAgIHNpemVvZihEdWFsc2hvY2szRGVzY3JpcHRvciksCisgICAgICAgIER1YWxz
aG9jazNOYW1lLAorICAgICAgICBISURWZW5kb3JJRDo6U29ueSwKKyAgICAgICAgSElEUHJvZHVj
dElEOjpEdWFsc2hvY2szLAorICAgICAgICBEdWFsc2hvY2szQnV0dG9uQ291bnQsCisgICAgICAg
IER1YWxzaG9jazNBeGlzQ291bnQsCisgICAgICAgIHB1Ymxpc2hSZXBvcnRDYWxsYmFjaworICAg
IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEhBVkUo
SElEX0ZSQU1FV09SSykgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1ZpcnR1YWxHYW1lcGFkLmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9WaXJ0dWFsR2FtZXBhZC5oCmluZGV4IDJhMDUzZjRhNDI4ODBjMGM2ZDY2ZDc5MDlk
NjhkOWNmODMzOGQ0ZGMuLjliMTY1NmEwY2Q0MDc1YjdmOTYzOGNmZjEzZDI1MTkwZDdmZTA3NWMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1ZpcnR1YWxHYW1lcGFkLmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVmlydHVhbEdhbWVwYWQuaApAQCAtNjAsNiArNjAs
NyBAQCBlbnVtIGNsYXNzIEhJRFByb2R1Y3RJRCA6IHVpbnQxNl90IHsKICAgICBYYm94T25lMSA9
IDB4MDJlYSwKICAgICBYYm94T25lMiA9IDB4MDJlMCwKICAgICBYYm94T25lMyA9IDB4MDJmZCwK
KyAgICBEdWFsc2hvY2szID0gMHgwMjY4LAogICAgIER1YWxzaG9jazRfMSA9IDB4MDVjNCwKICAg
ICBEdWFsc2hvY2s0XzIgPSAweDA5Y2MsCiB9OwpAQCAtODIsNiArODMsNyBAQCBjbGFzcyBWaXJ0
dWFsR2FtZXBhZCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEdhbWVwYWRNYXBwaW5nIG1pY3Jvc29m
dFhib3hPbmVNYXBwaW5nKCk7CiAgICAgc3RhdGljIEdhbWVwYWRNYXBwaW5nIHNoZW56aGVuTG9u
Z3NoZW5nd2VpVGVjaG5vbG9neUdhbWVwYWRNYXBwaW5nKCk7CisgICAgc3RhdGljIEdhbWVwYWRN
YXBwaW5nIHNvbnlEdWFsc2hvY2szTWFwcGluZygpOwogICAgIHN0YXRpYyBHYW1lcGFkTWFwcGlu
ZyBzb255RHVhbHNob2NrNE1hcHBpbmcoKTsKICAgICBzdGF0aWMgR2FtZXBhZE1hcHBpbmcgc3Rl
ZWxTZXJpZXNOaW1idXNNYXBwaW5nKCk7CiAgICAgc3RhdGljIEdhbWVwYWRNYXBwaW5nIHN1bkxp
Z2h0QXBwbGljYXRpb25HZW5lcmljTkVTTWFwcGluZygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405669</attachid>
            <date>2020-07-30 22:27:45 -0700</date>
            <delta_ts>2020-07-31 11:45:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214911-20200730222744.patch</filename>
            <type>text/plain</type>
            <size>61626</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmY2E3ZGUzNzc1ZWZm
ZWQ3ODRhNTJkNDI3N2EwZmUyMzJiNjBjZC4uMTgyZjk3NjJhNzVmOTdlM2RiNWUyMjUyODBlYzIx
MzA3NWI2YzQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTA3LTMwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGVjaWFsIEhJRCBtYXBw
aW5nIGZvciB0aGUgRHVhbHNob2NrIDMgY29udHJvbGxlcgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjYyNTUxOTg+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgLSBNb3ZlIEdhbWVwYWRCdXR0b25zIGlu
dG8gYSBHYW1lcGFkQ29uc3RhbnRzIGhlYWRlcgorICAgICAgICAtIEFkZCBhICJLbm93bkdhbWVw
YWRzIiBoZWFkZXIgdG8gaG9sZCBhbGwgdmVuZG9yL3Byb2R1Y3QgcGFpcnMgdGhhdCBXZWJLaXQg
a25vd3MgYWJvdXQKKyAgICAgICAgLSBBZGQgYSBEdWFsc2hvY2szIGNvbnRyb2xsZXIgbWFwcGlu
ZyBiYXNlZCBvbiBpdHMgSElEIHJlcG9ydAorICAgICAgICAtIEFkZCBhIGJhc2ljIERTMyB0ZXN0
IGJhc2VkIG9uIHRoZSBISUQgcmVwb3J0CisgICAgICAgIAorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFk
Q29uc3RhbnRzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuaC4KKyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJkR2Ft
ZXBhZE1hcHBpbmdTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENv
bnN0YW50cy5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvS25vd25HYW1l
cGFkcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9H
ZW5lcmljSElER2FtZXBhZC5oLgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9H
YW1lQ29udHJvbGxlckdhbWVwYWQubW06CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxl
ckdhbWVwYWQ6OnNldHVwQXNFeHRlbmRlZEdhbWVwYWQpOgorCisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvRHVhbHNob2NrM0hJREdhbWVwYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkR1YWxzaG9jazNISURHYW1lcGFkOjpEdWFsc2hvY2szSElER2FtZXBhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvRHVhbHNob2NrM0hJREdhbWVwYWQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVw
YWQuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNISURHYW1lcGFkOjpHZW5lcmljSElER2Ft
ZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljSElER2FtZXBhZDo6aWQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFkLmg6CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhJREdhbWVwYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1l
cGFkOjpISURHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWQ6OmluaXRpYWxp
emUpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaDoKKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9ISUREZXZpY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhJRERl
dmljZTo6ZnVsbFByb2R1Y3RJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvSElERWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SElERWxlbWVudDo6ZnVsbFVzYWdl
IGNvbnN0KToKKwogMjAyMC0wNy0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVmYWN0b3IgSElEIGdhbWVwYWQgY29kZSB0byBiZSBtdWNoIGxlc3MgZnJh
Z2lsZSBhbmQgbXVjaCBlYXNpZXIgdG8gaGFjayBvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggODgyODBi
OTE0ODk0MTZlMmNlNjJlMTliNTE1MjAzNTljMDEzZDYwZi4uMDQ1MzZjMzY0OGY2YThmZTYyOTA4
ZjA0M2QzMDcyM2ExYjI5ZGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4MTYsNiArMTgxNiw3IEBA
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwCiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcAogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHku
Y3BwCiBwbGF0Zm9ybS9nYW1lcGFkL0VtcHR5R2FtZXBhZFByb3ZpZGVyLmNwcAorcGxhdGZvcm0v
Z2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcAogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJv
dmlkZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
Y2ZkOWEzNjE3ODhmMGZjMmMwYmVjZDI0ZGI3NjFjMjg2NTgzYzY5OC4uODlhNDcwZDZkMzJmZWVk
OWI1MDU1MzAyYWFmNDk0ZDYxMWUwOWVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0y
NTcsNiArMjU3LDcgQEAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbSBAbm8tdW5p
ZnkKIHBsYXRmb3JtL2NvY29hL1dlYkNvcmVOU0Vycm9yRXh0cmFzLm1tCiBwbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQorcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
RHVhbHNob2NrM0hJREdhbWVwYWQuY3BwCiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElE
R2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCiBwbGF0Zm9y
bS9nYW1lcGFkL21hYy9ISURHYW1lcGFkRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZDYyMzRkNzY0Nzk1MmQz
ZTdjZWIwZWFjY2UyMzhlNTUyODAyZjNkLi42NjViNDc3NDc5ZTdiYzI3ZDBjZDM5ZTY4NjNmMWMx
MzQzNTc0MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDAyLDYgKzE0MDIsOSBAQAogCQk1MTBBOTFEQzI0Q0Y0NkZFMDBC
RkQ4OUMgLyogU2hhcmVkR2FtZXBhZFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBOTFEQjI0Q0Y0NDE4MDBCRkQ4OUMgLyogU2hhcmVkR2Ft
ZXBhZFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTEwQTkxRUEyNEQwMDRDMzAwQkZEODlDIC8qIEhJREVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE5MUUzMjRDRkNDMTgwMEJG
RDg5QyAvKiBISURFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTEwQTkxRUIyNEQwMDRDODAwQkZEODlDIC8qIEhJRERldmljZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTkxRTIyNENG
Q0MxODAwQkZEODlDIC8qIEhJRERldmljZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTUxMEE5MUY2MjREMzJEREMwMEJGRDg5QyAvKiBEdWFsc2hv
Y2szSElER2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwQTkxRjQyNEQzMjRGRjAwQkZEODlDIC8qIER1YWxzaG9jazNISURHYW1lcGFkLmgg
Ki87IH07CisJCTUxMEE5MUZEMjREM0MxNjIwMEJGRDg5QyAvKiBHYW1lcGFkQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxNUZFOTI0
Q0QwNUREMDAyQzk3RTYgLyogR2FtZXBhZENvbnN0YW50cy5oICovOyB9OworCQk1MTBBOTFGRTI0
RDNDMTY3MDBCRkQ4OUMgLyogR2FtZXBhZENvbnN0YW50c01hYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTkxRkIyNEQzQzBGRDAwQkZEODlDIC8q
IEdhbWVwYWRDb25zdGFudHNNYWMuaCAqLzsgfTsKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJy
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC04MjI1LDYgKzgyMjgsMTAgQEAKIAkJNTEwQTkxRTUyNENGQ0MxODAwQkZEODlDIC8qIEhJ
RERldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBISUREZXZp
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBOTFFNzI0Q0ZFQTE3MDBC
RkQ4OUMgLyogR2VuZXJpY0hJREdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR2VuZXJpY0hJREdhbWVwYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTBBOTFFOTI0Q0ZFQTMyMDBCRkQ4OUMgLyogR2VuZXJpY0hJREdhbWVwYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY0hJREdhbWVwYWQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwQTkxRjIyNEQzMjRDNjAwQkZEODlDIC8qIEtu
b3duR2FtZXBhZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS25vd25HYW1l
cGFkcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBBOTFGNDI0RDMyNEZGMDBC
RkQ4OUMgLyogRHVhbHNob2NrM0hJREdhbWVwYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRHVhbHNob2NrM0hJREdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTEwQTkxRjUyNEQzMjUwMDAwQkZEODlDIC8qIER1YWxzaG9jazNISURHYW1lcGFkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IER1YWxzaG9jazNISURHYW1l
cGFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwQTkxRkIyNEQzQzBGRDAw
QkZEODlDIC8qIEdhbWVwYWRDb25zdGFudHNNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2FtZXBhZENvbnN0YW50c01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtRXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
b2NrZXRTdHJlYW1IYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBE
NEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTk2NjEsNiArMTk2NjgsNyBAQAogCQkJCTUxNUJFMThBMUQ1NEY1
RjYwMEREN0M2OCAvKiBHYW1lcGFkUHJvdmlkZXIuY3BwICovLAogCQkJCTUxNUJFMThCMUQ1NEY1
RjYwMEREN0M2OCAvKiBHYW1lcGFkUHJvdmlkZXIuaCAqLywKIAkJCQk1MTVCRTE4QzFENTRGNUY2
MDBERDdDNjggLyogR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmggKi8sCisJCQkJNTEwQTkxRjIyNEQz
MjRDNjAwQkZEODlDIC8qIEtub3duR2FtZXBhZHMuaCAqLywKIAkJCQk1MTVCRTE4RTFENTRGNUY2
MDBERDdDNjggLyogUGxhdGZvcm1HYW1lcGFkLmggKi8sCiAJCQkJNTEwQTkxREIyNENGNDQxODAw
QkZEODlDIC8qIFNoYXJlZEdhbWVwYWRWYWx1ZS5oICovLAogCQkJKTsKQEAgLTE5NjcwLDYgKzE5
Njc4LDkgQEAKIAkJNTE1QkUxOTYxRDU0RjY0NTAwREQ3QzY4IC8qIG1hYyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTEwQTkxRjUyNEQzMjUwMDAwQkZE
ODlDIC8qIER1YWxzaG9jazNISURHYW1lcGFkLmNwcCAqLywKKwkJCQk1MTBBOTFGNDI0RDMyNEZG
MDBCRkQ4OUMgLyogRHVhbHNob2NrM0hJREdhbWVwYWQuaCAqLywKKwkJCQk1MTBBOTFGQjI0RDND
MEZEMDBCRkQ4OUMgLyogR2FtZXBhZENvbnN0YW50c01hYy5oICovLAogCQkJCTUxMEE5MUU3MjRD
RkVBMTcwMEJGRDg5QyAvKiBHZW5lcmljSElER2FtZXBhZC5jcHAgKi8sCiAJCQkJNTEwQTkxRTky
NENGRUEzMjAwQkZEODlDIC8qIEdlbmVyaWNISURHYW1lcGFkLmggKi8sCiAJCQkJNTE1QkUxOTcx
RDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWQuY3BwICovLApAQCAtMzA3NTQsNiArMzA3NjUs
NyBAQAogCQkJCUE3Q0ZCM0QyMEI3RUQxMEEwMDcwQzMyRCAvKiBEcmFnSW1hZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBRjVFNEQ5MUU1Njc3QTkwMDRBMUYwMSAvKiBEcmFnSXRlbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTEwQTkxRjYyNEQzMkREQzAwQkZEODlDIC8qIER1YWxzaG9jazNI
SURHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJBNjZGMTE3NDJCRDg2MDBDMjAyNTEg
LyogRHluYW1pY0xpbmtlckludGVycG9zaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDZFRDJD
ODEzNkI4RTY2MDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDUzNzM1NzEzN0I2NTNCMDAwMDhEQ0UgLyogRHluYW1pY3NDb21wcmVzc29yS2VybmVs
LmggaW4gSGVhZGVycyAqLywKQEAgLTMwOTc5LDYgKzMwOTkxLDggQEAKIAkJCQlGRDMxNjAwRDEy
QjAyNjc2MDBDMUEzNTkgLyogR2Fpbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM5OTAw
MUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxRTM5OTAyMUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwQTkxRkQyNEQzQzE2MjAwQkZEODlDIC8q
IEdhbWVwYWRDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEE5MUZFMjREM0MxNjcw
MEJGRDg5QyAvKiBHYW1lcGFkQ29uc3RhbnRzTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTZD
NjIyMTE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUE5RDlFQTE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxNUJFMTkyMUQ1NEY1RkIwMEREN0M2OCAvKiBHYW1lcGFkUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9HYW1lcGFkQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
R2FtZXBhZENvbnN0YW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU3OWEwYTMyMjMwMWE4NWE5ZGEwY2Jj
OGUzMGRiOTM3YTQ4MjZjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkQ29uc3RhbnRzLmgi
CisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Citjb25zdCBHYW1lcGFkQnV0dG9uUm9sZSBtYXhpbXVtR2FtZXBhZEJ1dHRvbiA9IEdhbWVwYWRC
dXR0b25Sb2xlOjpDZW50ZXJDbHVzdGVyQ2VudGVyOworY29uc3Qgc2l6ZV90IG51bWJlclN0YW5k
YXJkR2FtZXBhZEJ1dHRvbnNXaXRob3V0SG9tZUJ1dHRvbiA9IHN0YXRpY19jYXN0PHNpemVfdD4o
bWF4aW11bUdhbWVwYWRCdXR0b24pOworY29uc3Qgc2l6ZV90IG51bWJlclN0YW5kYXJkR2FtZXBh
ZEJ1dHRvbnNXaXRoSG9tZUJ1dHRvbiA9IG51bWJlclN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRo
b3V0SG9tZUJ1dHRvbiArIDE7CisKK2NvbnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRN
YXBwaW5nU3RyaW5nKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzdGFu
ZGFyZEdhbWVwYWRNYXBwaW5nID0gInN0YW5kYXJkIjsKKyAgICByZXR1cm4gc3RhbmRhcmRHYW1l
cGFkTWFwcGluZzsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvR2FtZXBhZENvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9H
YW1lcGFkQ29uc3RhbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQwZmIzZWFmNjU3MzI3MmUzOTg1ODA3NDFl
ZDExMDU1Zjc5NGI3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCituYW1lc3BhY2UgV1RGIHsK
K2NsYXNzIFN0cmluZzsKK307CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQnV0dG9ucyBp
biB0aGUgInN0YW5kYXJkIiBnYW1lcGFkIGxheW91dCBpbiB0aGUgV2ViIEdhbWVwYWQgc3BlYwor
Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2dhbWVwYWQvI2Rmbi1zdGFuZGFyZC1nYW1lcGFkLWxh
eW91dAorZW51bSBjbGFzcyBHYW1lcGFkQnV0dG9uUm9sZSA6IHVpbnQ4X3QgeworICAgIFJpZ2h0
Q2x1c3RlckJvdHRvbSA9IDAsCisgICAgUmlnaHRDbHVzdGVyUmlnaHQgPSAxLAorICAgIFJpZ2h0
Q2x1c3RlckxlZnQgPSAyLAorICAgIFJpZ2h0Q2x1c3RlclRvcCA9IDMsCisgICAgTGVmdFNob3Vs
ZGVyRnJvbnQgPSA0LAorICAgIFJpZ2h0U2hvdWxkZXJGcm9udCA9IDUsCisgICAgTGVmdFNob3Vs
ZGVyQmFjayA9IDYsCisgICAgUmlnaHRTaG91bGRlckJhY2sgPSA3LAorICAgIENlbnRlckNsdXN0
ZXJMZWZ0ID0gOCwKKyAgICBDZW50ZXJDbHVzdGVyUmlnaHQgPSA5LAorICAgIExlZnRTdGljayA9
IDEwLAorICAgIFJpZ2h0U3RpY2sgPSAxMSwKKyAgICBMZWZ0Q2x1c3RlclRvcCA9IDEyLAorICAg
IExlZnRDbHVzdGVyQm90dG9tID0gMTMsCisgICAgTGVmdENsdXN0ZXJMZWZ0ID0gMTQsCisgICAg
TGVmdENsdXN0ZXJSaWdodCA9IDE1LAorICAgIENlbnRlckNsdXN0ZXJDZW50ZXIgPSAxNiwKK307
CisKK2V4dGVybiBjb25zdCBzaXplX3QgbnVtYmVyU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhv
dXRIb21lQnV0dG9uOworZXh0ZXJuIGNvbnN0IHNpemVfdCBudW1iZXJTdGFuZGFyZEdhbWVwYWRC
dXR0b25zV2l0aEhvbWVCdXR0b247CitleHRlcm4gY29uc3QgR2FtZXBhZEJ1dHRvblJvbGUgbWF4
aW11bUdhbWVwYWRCdXR0b247CisKK2NvbnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRN
YXBwaW5nU3RyaW5nKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9Lbm93bkdhbWVwYWRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0tub3du
R2FtZXBhZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTQxZDZjNzkwZThhZWU4NDQ4NTk1ZDI4NDJkN2IzOTU2
MTQ1M2FjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9Lbm93bkdhbWVwYWRzLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51
bSBLbm93bkdhbWVwYWQgeworICAgIE5pbWJ1czEgPSAweDAxMTExNDIwLAorICAgIE5pbWJ1czIg
PSAweDEwMzgxNDIwLAorICAgIFN0cmF0dXNYTDEgPSAweDAxMTExNDE4LAorICAgIFN0cmF0dXNY
TDIgPSAweDEwMzgxNDE4LAorICAgIFN0cmF0dXNYTDMgPSAweDAxMTExNDE5LAorICAgIFN0cmF0
dXNYTDQgPSAweDEwMzgxNDE5LAorICAgIEhvcmlwYWRVbHRpbWF0ZSA9IDB4MGYwZDAwOTAsCisg
ICAgR2FtZXNpck0yID0gMHgwZWMyMDQ3NSwKKyAgICBYYm94T25lMSA9IDB4MDQ1ZTAyZTAsCisg
ICAgWGJveE9uZTIgPSAweDA0NWUwMmVhLAorICAgIFhib3hPbmUzID0gMHgwNDVlMDJmZCwKKyAg
ICBEdWFsc2hvY2szID0gMHgwNTRjMDI2OCwKKyAgICBEdWFsc2hvY2s0XzEgPSAweDA1NGMwNWM0
LAorICAgIER1YWxzaG9jazRfMiA9IDB4MDU0YzA5Y2MsCit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWQubW0KaW5kZXggNDEzM2ZkYjY4MDcxODIzNDdkNmVmNGNiZTRhM2Q0YzExMDU3ZmY1OC4uMzk3
MTI5YjEwMmVmNGEzOWZhMTU0ZWI3NmQ0YTE5ZWIzZTM2ZjU4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWQubW0KQEAgLTI3LDM1ICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAj
aW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgotI2ltcG9ydCAiR2FtZUNv
bnRyb2xsZXJTb2Z0TGluay5oIgorI2ltcG9ydCAiR2FtZXBhZENvbnN0YW50cy5oIgogI2ltcG9y
dCA8R2FtZUNvbnRyb2xsZXIvR2FtZUNvbnRyb2xsZXIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUg
eworI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgogCi0vLyBCdXR0b25zIGluIHRo
ZSAic3RhbmRhcmQiIGdhbWVwYWQgbGF5b3V0IGluIHRoZSBXZWIgR2FtZXBhZCBzcGVjCi0vLyBo
dHRwczovL3d3dy53My5vcmcvVFIvZ2FtZXBhZC8jZGZuLXN0YW5kYXJkLWdhbWVwYWQtbGF5b3V0
Ci1lbnVtIGNsYXNzIEdhbWVwYWRCdXR0b25zIDogdWludDhfdCB7Ci0gICAgUmlnaHRDbHVzdGVy
Qm90dG9tID0gMCwKLSAgICBSaWdodENsdXN0ZXJSaWdodCA9IDEsCi0gICAgUmlnaHRDbHVzdGVy
TGVmdCA9IDIsCi0gICAgUmlnaHRDbHVzdGVyVG9wID0gMywKLSAgICBMZWZ0U2hvdWxkZXJGcm9u
dCA9IDQsCi0gICAgUmlnaHRTaG91bGRlckZyb250ID0gNSwKLSAgICBMZWZ0U2hvdWxkZXJCYWNr
ID0gNiwKLSAgICBSaWdodFNob3VsZGVyQmFjayA9IDcsCi0gICAgQ2VudGVyQ2x1c3RlckxlZnQg
PSA4LAotICAgIENlbnRlckNsdXN0ZXJSaWdodCA9IDksCi0gICAgTGVmdFN0aWNrID0gMTAsCi0g
ICAgUmlnaHRTdGljayA9IDExLAotICAgIExlZnRDbHVzdGVyVG9wID0gMTIsCi0gICAgTGVmdENs
dXN0ZXJCb3R0b20gPSAxMywKLSAgICBMZWZ0Q2x1c3RlckxlZnQgPSAxNCwKLSAgICBMZWZ0Q2x1
c3RlclJpZ2h0ID0gMTUsCi0gICAgQ2VudGVyQ2x1c3RlckNlbnRlciA9IDE2LAotfTsKLQotc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIG51bUdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0b24gPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KEdhbWVwYWRCdXR0b25zOjpDZW50ZXJDbHVzdGVyQ2VudGVyKTsK
LXN0YXRpYyBjb25zdGV4cHIgYXV0byBudW1HYW1lcGFkQnV0dG9uc1dpdGhIb21lQnV0dG9uID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihHYW1lcGFkQnV0dG9uczo6Q2VudGVyQ2x1c3RlckNlbnRlcikg
KyAxOworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHYW1lQ29udHJvbGxlckdhbWVwYWQ6OkdhbWVD
b250cm9sbGVyR2FtZXBhZChHQ0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIHVuc2lnbmVkIGluZGV4
KQogICAgIDogUGxhdGZvcm1HYW1lcGFkKGluZGV4KQpAQCAtOTgsMTAgKzc1LDEwIEBAIHZvaWQg
R2FtZUNvbnRyb2xsZXJHYW1lcGFkOjpzZXR1cEFzRXh0ZW5kZWRHYW1lcGFkKCkKICAgICBBU1NF
UlQobV9leHRlbmRlZEdhbWVwYWQpOwogCiAgICAgbV9pZCA9IG1ha2VTdHJpbmcoU3RyaW5nKG1f
Z2NDb250cm9sbGVyLmdldCgpLnZlbmRvck5hbWUpLCAiIEV4dGVuZGVkIEdhbWVwYWQiX3MpOwot
ICAgIG1fbWFwcGluZyA9IFN0cmluZygic3RhbmRhcmQiKTsKKyAgICBtX21hcHBpbmcgPSBzdGFu
ZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CiAKICAgICBhdXRvICpob21lQnV0dG9uID0gaG9t
ZUJ1dHRvbkZyb21FeHRlbmRlZEdhbWVwYWQobV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkpOwotICAg
IG1fYnV0dG9uVmFsdWVzLnJlc2l6ZShob21lQnV0dG9uID8gbnVtR2FtZXBhZEJ1dHRvbnNXaXRo
SG9tZUJ1dHRvbiA6IG51bUdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0b24pOworICAgIG1f
YnV0dG9uVmFsdWVzLnJlc2l6ZShob21lQnV0dG9uID8gbnVtYmVyU3RhbmRhcmRHYW1lcGFkQnV0
dG9uc1dpdGhIb21lQnV0dG9uIDogbnVtYmVyU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhvdXRI
b21lQnV0dG9uKTsKIAogICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLnZhbHVlQ2hhbmdlZEhh
bmRsZXIgPSBeKEdDRXh0ZW5kZWRHYW1lcGFkICosIEdDQ29udHJvbGxlckVsZW1lbnQgKikgewog
ICAgICAgICBtX2xhc3RVcGRhdGVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CkBAIC0xMDks
NyArODYsNyBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZDo6c2V0dXBBc0V4dGVuZGVkR2Ft
ZXBhZCgpCiAgICAgICAgIG1faGFkQnV0dG9uUHJlc3NlcyA9IGZhbHNlOwogICAgIH07CiAKLSAg
ICBhdXRvIGJpbmRCdXR0b24gPSBeKEdDQ29udHJvbGxlckJ1dHRvbklucHV0ICpidXR0b24sIEdh
bWVwYWRCdXR0b25zIGluZGV4KSB7CisgICAgYXV0byBiaW5kQnV0dG9uID0gXihHQ0NvbnRyb2xs
ZXJCdXR0b25JbnB1dCAqYnV0dG9uLCBHYW1lcGFkQnV0dG9uUm9sZSBpbmRleCkgewogICAgICAg
ICBtX2J1dHRvblZhbHVlc1soc2l6ZV90KWluZGV4XS5zZXRWYWx1ZShidXR0b24udmFsdWUpOwog
ICAgICAgICBidXR0b24udmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9u
SW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wgcHJlc3NlZCkgewogICAgICAgICAgICAgbV9idXR0
b25WYWx1ZXNbKHNpemVfdClpbmRleF0uc2V0VmFsdWUodmFsdWUpOwpAQCAtMTE5LDMwICs5Niwz
MCBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZDo6c2V0dXBBc0V4dGVuZGVkR2FtZXBhZCgp
CiAgICAgfTsKIAogICAgIC8vIEJ1dHRvbiBQYWQKLSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLmJ1dHRvbkEsIEdhbWVwYWRCdXR0b25zOjpSaWdodENsdXN0ZXJCb3R0b20p
OwotICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uQiwgR2FtZXBh
ZEJ1dHRvbnM6OlJpZ2h0Q2x1c3RlclJpZ2h0KTsKLSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLmJ1dHRvblgsIEdhbWVwYWRCdXR0b25zOjpSaWdodENsdXN0ZXJMZWZ0KTsK
LSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblksIEdhbWVwYWRC
dXR0b25zOjpSaWdodENsdXN0ZXJUb3ApOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVw
YWQuZ2V0KCkuYnV0dG9uQSwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0Q2x1c3RlckJvdHRvbSk7
CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25CLCBHYW1lcGFk
QnV0dG9uUm9sZTo6UmlnaHRDbHVzdGVyUmlnaHQpOworICAgIGJpbmRCdXR0b24obV9leHRlbmRl
ZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWCwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0Q2x1c3Rlckxl
ZnQpOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWSwgR2Ft
ZXBhZEJ1dHRvblJvbGU6OlJpZ2h0Q2x1c3RlclRvcCk7CiAKICAgICAvLyBTaG91bGRlcnMsIFRy
aWdnZXJzCi0gICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0U2hvdWxk
ZXIsIEdhbWVwYWRCdXR0b25zOjpMZWZ0U2hvdWxkZXJGcm9udCk7Ci0gICAgYmluZEJ1dHRvbiht
X2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3VsZGVyLCBHYW1lcGFkQnV0dG9uczo6Umln
aHRTaG91bGRlckZyb250KTsKLSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgp
LmxlZnRUcmlnZ2VyLCBHYW1lcGFkQnV0dG9uczo6TGVmdFNob3VsZGVyQmFjayk7Ci0gICAgYmlu
ZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRyaWdnZXIsIEdhbWVwYWRCdXR0
b25zOjpSaWdodFNob3VsZGVyQmFjayk7CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBh
ZC5nZXQoKS5sZWZ0U2hvdWxkZXIsIEdhbWVwYWRCdXR0b25Sb2xlOjpMZWZ0U2hvdWxkZXJGcm9u
dCk7CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3VsZGVy
LCBHYW1lcGFkQnV0dG9uUm9sZTo6UmlnaHRTaG91bGRlckZyb250KTsKKyAgICBiaW5kQnV0dG9u
KG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUcmlnZ2VyLCBHYW1lcGFkQnV0dG9uUm9sZTo6
TGVmdFNob3VsZGVyQmFjayk7CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQo
KS5yaWdodFRyaWdnZXIsIEdhbWVwYWRCdXR0b25Sb2xlOjpSaWdodFNob3VsZGVyQmFjayk7CiAK
ICAgICAvLyBEIFBhZAotICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBh
ZC51cCwgR2FtZXBhZEJ1dHRvbnM6OkxlZnRDbHVzdGVyVG9wKTsKLSAgICBiaW5kQnV0dG9uKG1f
ZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmRwYWQuZG93biwgR2FtZXBhZEJ1dHRvbnM6OkxlZnRDbHVz
dGVyQm90dG9tKTsKLSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmRwYWQu
bGVmdCwgR2FtZXBhZEJ1dHRvbnM6OkxlZnRDbHVzdGVyTGVmdCk7Ci0gICAgYmluZEJ1dHRvbiht
X2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLnJpZ2h0LCBHYW1lcGFkQnV0dG9uczo6TGVmdENs
dXN0ZXJSaWdodCk7CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFk
LnVwLCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVmdENsdXN0ZXJUb3ApOworICAgIGJpbmRCdXR0b24o
bV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC5kb3duLCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVm
dENsdXN0ZXJCb3R0b20pOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCku
ZHBhZC5sZWZ0LCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVmdENsdXN0ZXJMZWZ0KTsKKyAgICBiaW5k
QnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmRwYWQucmlnaHQsIEdhbWVwYWRCdXR0b25S
b2xlOjpMZWZ0Q2x1c3RlclJpZ2h0KTsKIAogICAgIGlmIChob21lQnV0dG9uKQotICAgICAgICBi
aW5kQnV0dG9uKGhvbWVCdXR0b24sIEdhbWVwYWRCdXR0b25zOjpDZW50ZXJDbHVzdGVyQ2VudGVy
KTsKKyAgICAgICAgYmluZEJ1dHRvbihob21lQnV0dG9uLCBHYW1lcGFkQnV0dG9uUm9sZTo6Q2Vu
dGVyQ2x1c3RlckNlbnRlcik7CiAKICAgICAvLyBTZWxlY3QsIFN0YXJ0CiAjaWYgSEFWRShHQ0VY
VEVOREVER0FNRVBBRF9CVVRUT05TX09QVElPTlNfTUVOVSkKLSAgICBiaW5kQnV0dG9uKG1fZXh0
ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbk9wdGlvbnMsIEdhbWVwYWRCdXR0b25zOjpDZW50ZXJD
bHVzdGVyTGVmdCk7Ci0gICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0
b25NZW51LCBHYW1lcGFkQnV0dG9uczo6Q2VudGVyQ2x1c3RlclJpZ2h0KTsKKyAgICBiaW5kQnV0
dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbk9wdGlvbnMsIEdhbWVwYWRCdXR0b25S
b2xlOjpDZW50ZXJDbHVzdGVyTGVmdCk7CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBh
ZC5nZXQoKS5idXR0b25NZW51LCBHYW1lcGFkQnV0dG9uUm9sZTo6Q2VudGVyQ2x1c3RlclJpZ2h0
KTsKICNlbmRpZgogCiAgICAgLy8gTDMsIFIzCkBAIC0xNTEsOCArMTI4LDggQEAgdm9pZCBHYW1l
Q29udHJvbGxlckdhbWVwYWQ6OnNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKQogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vu
Z3VhcmRlZC1hdmFpbGFiaWxpdHkiCiAgICAgaWYgKFttX2V4dGVuZGVkR2FtZXBhZC5nZXQoKSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGxlZnRUaHVtYnN0aWNrQnV0dG9uKV0pIHsKLSAg
ICAgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJzdGlja0J1
dHRvbiwgR2FtZXBhZEJ1dHRvbnM6OkxlZnRTdGljayk7Ci0gICAgICAgIGJpbmRCdXR0b24obV9l
eHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRUaHVtYnN0aWNrQnV0dG9uLCBHYW1lcGFkQnV0dG9u
czo6UmlnaHRTdGljayk7CisgICAgICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0
KCkubGVmdFRodW1ic3RpY2tCdXR0b24sIEdhbWVwYWRCdXR0b25Sb2xlOjpMZWZ0U3RpY2spOwor
ICAgICAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLnJpZ2h0VGh1bWJzdGlj
a0J1dHRvbiwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0U3RpY2spOwogICAgIH0KICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIubW0KaW5kZXggMTY2NjM5MWM2N2UwZjM5MjEyZThkOWUwMmZiZGYyZWFlZjUw
ZDQ1NC4uYTIyMTMzY2E1OTNlZDYzMjQ3NGE0NzJkYzRiZjIxZjdiZjFiMDkxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZC5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3Zp
ZGVyQ2xpZW50LmgiCisjaW1wb3J0ICJLbm93bkdhbWVwYWRzLmgiCiAjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HYW1lQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
cGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaD4KQEAgLTQ0LDQyICs0NSwyNyBAQCBib29sIEdhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjp3aWxsSGFuZGxlVmVuZG9yQW5kUHJvZHVjdCh1aW50
MTZfdCB2ZW5kb3JJRAogewogICAgIC8vIENoZWNrIHRoZSB2ZW5kb3IvcHJvZHVjdCBJRHMgYWdh
aW5zIGEgaGFyZCBjb2RlZCBsaXN0IG9mIGNvbnRyb2xsZXJzIHdlIGV4cGVjdCB0byB3b3JrIHdl
bGwgd2l0aAogICAgIC8vIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBvbiAxMC4xNS4KLSAgICBl
bnVtIEdhbWVDb250cm9sbGVyQ29tcGF0aWJsZSB7Ci0gICAgICAgIE5pbWJ1czEgPSAweDAxMTEx
NDIwLAotICAgICAgICBOaW1idXMyID0gMHgxMDM4MTQyMCwKLSAgICAgICAgU3RyYXR1c1hMMSA9
IDB4MDExMTE0MTgsCi0gICAgICAgIFN0cmF0dXNYTDIgPSAweDEwMzgxNDE4LAotICAgICAgICBT
dHJhdHVzWEwzID0gMHgwMTExMTQxOSwKLSAgICAgICAgU3RyYXR1c1hMNCA9IDB4MTAzODE0MTks
Ci0gICAgICAgIEhvcmlwYWRVbHRpbWF0ZSA9IDB4MGYwZDAwOTAsCi0gICAgICAgIEdhbWVzaXJN
MiA9IDB4MGVjMjA0NzUsCi0gICAgICAgIFhib3hPbmUxID0gMHgwNDVlMDJlMCwKLSAgICAgICAg
WGJveE9uZTIgPSAweDA0NWUwMmVhLAotICAgICAgICBYYm94T25lMyA9IDB4MDQ1ZTAyZmQsCi0g
ICAgICAgIER1YWxzaG9jazRfMSA9IDB4MDU0YzA1YzQsCi0gICAgICAgIER1YWxzaG9jazRfMiA9
IDB4MDU0YzA5Y2MsCi0gICAgfTsKLQotICAgIEdhbWVDb250cm9sbGVyQ29tcGF0aWJsZSBmdWxs
UHJvZHVjdElEID0gKEdhbWVDb250cm9sbGVyQ29tcGF0aWJsZSkoKHZlbmRvcklEIDw8IDE2KSB8
IChwcm9kdWN0SUQgJiAweEZGRkYpKTsKLQotICAgIHN3aXRjaCAoZnVsbFByb2R1Y3RJRCkgewot
ICAgIGNhc2UgTmltYnVzMToKLSAgICBjYXNlIE5pbWJ1czI6Ci0gICAgY2FzZSBTdHJhdHVzWEwx
OgotICAgIGNhc2UgU3RyYXR1c1hMMjoKLSAgICBjYXNlIFN0cmF0dXNYTDM6Ci0gICAgY2FzZSBT
dHJhdHVzWEw0OgotICAgIGNhc2UgSG9yaXBhZFVsdGltYXRlOgotICAgIGNhc2UgR2FtZXNpck0y
OgotICAgIGNhc2UgWGJveE9uZTE6Ci0gICAgY2FzZSBYYm94T25lMjoKLSAgICBjYXNlIFhib3hP
bmUzOgotICAgIGNhc2UgRHVhbHNob2NrNF8xOgotICAgIGNhc2UgRHVhbHNob2NrNF8yOgotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PHVpbnQzMl90Pj4gZ2FtZUNv
bnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHM7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgZ2Ft
ZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFkZChOaW1idXMxKTsKKyAgICAgICAgZ2Ft
ZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFkZChOaW1idXMyKTsKKyAgICAgICAgZ2Ft
ZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFkZChTdHJhdHVzWEwxKTsKKyAgICAgICAg
Z2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFkZChTdHJhdHVzWEwyKTsKKyAgICAg
ICAgZ2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFkZChTdHJhdHVzWEwzKTsKKyAg
ICAgICAgZ2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFkZChTdHJhdHVzWEw0KTsK
KyAgICAgICAgZ2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFkZChIb3JpcGFkVWx0
aW1hdGUpOworICAgICAgICBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVHYW1lcGFkcy0+YWRkKEdh
bWVzaXJNMik7CisgICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQo
WGJveE9uZTEpOworICAgICAgICBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVHYW1lcGFkcy0+YWRk
KFhib3hPbmUyKTsKKyAgICAgICAgZ2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBhZHMtPmFk
ZChYYm94T25lMyk7CisgICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5h
ZGQoRHVhbHNob2NrNF8xKTsKKyAgICAgICAgZ2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBh
ZHMtPmFkZChEdWFsc2hvY2s0XzIpOworICAgIH0pOworCisgICAgdWludDMyX3QgZnVsbFByb2R1
Y3RJRCA9ICgoKHVpbnQzMl90KXZlbmRvcklEKSA8PCAxNikgfCBwcm9kdWN0SUQ7CisgICAgcmV0
dXJuIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5jb250YWlucyhmdWxsUHJvZHVj
dElEKTsKIH0KICNlbmRpZiAvLyAhSEFWRShHQ0NPTlRST0xMRVJfSElEX0RFVklDRV9DSEVDSykK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvRHVhbHNo
b2NrM0hJREdhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
RHVhbHNob2NrM0hJREdhbWVwYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYWQyOTY4ODgyYmJmMjdhNDVi
MmQ0NzU5ODgxOGUzNGMzYTM3Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9EdWFsc2hvY2szSElER2FtZXBhZC5jcHAKQEAgLTAsMCArMSwx
MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRHVhbHNo
b2NrM0hJREdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMp
CisKKyNpbmNsdWRlICJHYW1lcGFkQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiR2FtZXBhZENvbnN0
YW50c01hYy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxJT0tpdC9oaWQvSU9I
SURVc2FnZVRhYmxlcy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitEdWFsc2hvY2szSElER2FtZXBhZDo6RHVhbHNob2NrM0hJREdhbWVwYWQo
SElERGV2aWNlJiYgZGV2aWNlLCB1bnNpZ25lZCBpbmRleCkKKyAgICA6IEhJREdhbWVwYWQoV1RG
TW92ZShkZXZpY2UpLCBpbmRleCkKK3sKKyAgICBMT0coR2FtZXBhZCwgIkNyZWF0aW5nIER1YWxz
aG9jazNISURHYW1lcGFkICVwIiwgdGhpcyk7CisKKyAgICBtX21hcHBpbmcgPSBzdGFuZGFyZEdh
bWVwYWRNYXBwaW5nU3RyaW5nKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
clN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRoSG9tZUJ1dHRvbjsgKytpKQorICAgICAgICBtX2J1
dHRvblZhbHVlcy5hcHBlbmQoMC4wKTsKKworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXhpc0Nv
dW50ID0gNDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF4aXNDb3VudDsgKytpKQorICAg
ICAgICBtX2F4aXNWYWx1ZXMuYXBwZW5kKDAuMCk7CisKKyAgICBhdXRvIGlucHV0RWxlbWVudHMg
PSBoaWREZXZpY2UoKS51bmlxdWVJbnB1dEVsZW1lbnRzSW5EZXZpY2VUcmVlT3JkZXIoKTsKKwor
ICAgIFZlY3RvcjxISURFbGVtZW50PiBwb2ludGVyRWxlbWVudHM7CisKKyAgICBhdXRvIG1hcEJ1
dHRvbiA9IFt0aGlzXSAoSElERWxlbWVudCYgZWxlbWVudCwgR2FtZXBhZEJ1dHRvblJvbGUgcm9s
ZSkgeworICAgICAgICBtX2VsZW1lbnRNYXAuc2V0KGVsZW1lbnQuY29va2llKCksIG1ha2VVbmlx
dWU8SElER2FtZXBhZEJ1dHRvbj4oZWxlbWVudCwgbV9idXR0b25WYWx1ZXNbKHNpemVfdClyb2xl
XSkpOworICAgIH07CisKKyAgICAvLyBMb29rIHNwZWNpZmljYWxseSBmb3IgdGhlIGF4ZXMgYW5k
IGRpZ2l0YWwgYnV0dG9ucworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGlucHV0RWxlbWVudHMp
IHsKKyAgICAgICAgc3dpdGNoIChlbGVtZW50LmZ1bGxVc2FnZSgpKSB7CisgICAgICAgIGNhc2Ug
aGlkUG9pbnRlckZ1bGxVc2FnZToKKyAgICAgICAgICAgIHBvaW50ZXJFbGVtZW50cy5hcHBlbmQo
ZWxlbWVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBoaWRYQXhpc0Z1bGxV
c2FnZToKKyAgICAgICAgICAgIG1fZWxlbWVudE1hcC5zZXQoZWxlbWVudC5jb29raWUoKSwgbWFr
ZVVuaXF1ZTxISURHYW1lcGFkQXhpcz4oZWxlbWVudCwgbV9heGlzVmFsdWVzWzBdKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBoaWRZQXhpc0Z1bGxVc2FnZToKKyAgICAgICAg
ICAgIG1fZWxlbWVudE1hcC5zZXQoZWxlbWVudC5jb29raWUoKSwgbWFrZVVuaXF1ZTxISURHYW1l
cGFkQXhpcz4oZWxlbWVudCwgbV9heGlzVmFsdWVzWzFdKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBoaWRaQXhpc0Z1bGxVc2FnZToKKyAgICAgICAgICAgIG1fZWxlbWVudE1h
cC5zZXQoZWxlbWVudC5jb29raWUoKSwgbWFrZVVuaXF1ZTxISURHYW1lcGFkQXhpcz4oZWxlbWVu
dCwgbV9heGlzVmFsdWVzWzJdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBo
aWRSekF4aXNGdWxsVXNhZ2U6CisgICAgICAgICAgICBtX2VsZW1lbnRNYXAuc2V0KGVsZW1lbnQu
Y29va2llKCksIG1ha2VVbmlxdWU8SElER2FtZXBhZEF4aXM+KGVsZW1lbnQsIG1fYXhpc1ZhbHVl
c1szXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgaGlkQnV0dG9uMUZ1bGxV
c2FnZToKKyAgICAgICAgICAgIG1hcEJ1dHRvbihlbGVtZW50LCBHYW1lcGFkQnV0dG9uUm9sZTo6
Q2VudGVyQ2x1c3RlckxlZnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgaGlk
QnV0dG9uMkZ1bGxVc2FnZToKKyAgICAgICAgICAgIG1hcEJ1dHRvbihlbGVtZW50LCBHYW1lcGFk
QnV0dG9uUm9sZTo6TGVmdFN0aWNrKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IGhpZEJ1dHRvbjNGdWxsVXNhZ2U6CisgICAgICAgICAgICBtYXBCdXR0b24oZWxlbWVudCwgR2Ft
ZXBhZEJ1dHRvblJvbGU6OlJpZ2h0U3RpY2spOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgaGlkQnV0dG9uNEZ1bGxVc2FnZToKKyAgICAgICAgICAgIG1hcEJ1dHRvbihlbGVtZW50
LCBHYW1lcGFkQnV0dG9uUm9sZTo6Q2VudGVyQ2x1c3RlclJpZ2h0KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIGhpZEJ1dHRvbjE3RnVsbFVzYWdlOgorICAgICAgICAgICAgbWFw
QnV0dG9uKGVsZW1lbnQsIEdhbWVwYWRCdXR0b25Sb2xlOjpDZW50ZXJDbHVzdGVyQ2VudGVyKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBzaXplX3QgZXhwZWN0ZWRHZW5lcmljUG9p
bnRlckVsZW1lbnRzID0gNDA7CisgICAgaWYgKHBvaW50ZXJFbGVtZW50cy5zaXplKCkgIT0gZXhw
ZWN0ZWRHZW5lcmljUG9pbnRlckVsZW1lbnRzKSB7CisgICAgICAgIExPRyhHYW1lcGFkLCAiRHVh
bHNob2NrMyBjb250cm9sbGVyIHdhcyBleHBlY3RlZCB0byBoYXZlICVsdSBnZW5lcmljIHBvaW50
ZXIgZWxlbWVudHMsIGhhcyAlbHUgaW5zdGVhZCIsIGV4cGVjdGVkR2VuZXJpY1BvaW50ZXJFbGVt
ZW50cywgcG9pbnRlckVsZW1lbnRzLnNpemUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzVdLCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVm
dENsdXN0ZXJUb3ApOworICAgIG1hcEJ1dHRvbihwb2ludGVyRWxlbWVudHNbNl0sIEdhbWVwYWRC
dXR0b25Sb2xlOjpMZWZ0Q2x1c3RlclJpZ2h0KTsKKyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1l
bnRzWzddLCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVmdENsdXN0ZXJCb3R0b20pOworICAgIG1hcEJ1
dHRvbihwb2ludGVyRWxlbWVudHNbOF0sIEdhbWVwYWRCdXR0b25Sb2xlOjpMZWZ0Q2x1c3Rlckxl
ZnQpOworICAgIG1hcEJ1dHRvbihwb2ludGVyRWxlbWVudHNbOV0sIEdhbWVwYWRCdXR0b25Sb2xl
OjpMZWZ0U2hvdWxkZXJCYWNrKTsKKyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzEwXSwg
R2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0U2hvdWxkZXJCYWNrKTsKKyAgICBtYXBCdXR0b24ocG9p
bnRlckVsZW1lbnRzWzExXSwgR2FtZXBhZEJ1dHRvblJvbGU6OkxlZnRTaG91bGRlckZyb250KTsK
KyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzEyXSwgR2FtZXBhZEJ1dHRvblJvbGU6OlJp
Z2h0U2hvdWxkZXJGcm9udCk7CisgICAgbWFwQnV0dG9uKHBvaW50ZXJFbGVtZW50c1sxM10sIEdh
bWVwYWRCdXR0b25Sb2xlOjpSaWdodENsdXN0ZXJUb3ApOworICAgIG1hcEJ1dHRvbihwb2ludGVy
RWxlbWVudHNbMTRdLCBHYW1lcGFkQnV0dG9uUm9sZTo6UmlnaHRDbHVzdGVyUmlnaHQpOworICAg
IG1hcEJ1dHRvbihwb2ludGVyRWxlbWVudHNbMTVdLCBHYW1lcGFkQnV0dG9uUm9sZTo6UmlnaHRD
bHVzdGVyQm90dG9tKTsKKyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzE2XSwgR2FtZXBh
ZEJ1dHRvblJvbGU6OlJpZ2h0Q2x1c3RlckxlZnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvRHVhbHNob2NrM0hJREdh
bWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0R1YWxzaG9jazNI
SURHYW1lcGFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYxOTNmMzllZGFkMzE3ZjEzM2MyNWYzOWRiNjQyODk1
NDAxOTMzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL0R1YWxzaG9jazNISURHYW1lcGFkLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykK
KworI2luY2x1ZGUgIkhJREdhbWVwYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBEdWFsc2hvY2szSElER2FtZXBhZCBmaW5hbCA6IHB1YmxpYyBISURHYW1lcGFkIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEdWFsc2hvY2szSElER2FtZXBh
ZChISUREZXZpY2UmJiwgdW5zaWduZWQgaW5kZXgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dhbWVwYWRDb25zdGFu
dHNNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dhbWVwYWRDb25z
dGFudHNNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjNlNzljYmUxN2ZmYzU5MTQ5ZDhjZGY3ZWIwZmM3Y2Mw
ZWZjMzg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvR2FtZXBhZENvbnN0YW50c01hYy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCisK
KyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJRFVzYWdlVGFibGVzLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY29uc3RleHByIGNvbnN0IHVpbnQ2NF90IGhpZFBvaW50ZXJGdWxsVXNhZ2UgPSAo
KHVpbnQ2NF90KWtISURQYWdlX0dlbmVyaWNEZXNrdG9wKSA8PCAzMiB8IGtISURVc2FnZV9HRF9Q
b2ludGVyOworY29uc3RleHByIGNvbnN0IHVpbnQ2NF90IGhpZFhBeGlzRnVsbFVzYWdlID0gKCh1
aW50NjRfdClrSElEUGFnZV9HZW5lcmljRGVza3RvcCkgPDwgMzIgfCBrSElEVXNhZ2VfR0RfWDsK
K2NvbnN0ZXhwciBjb25zdCB1aW50NjRfdCBoaWRZQXhpc0Z1bGxVc2FnZSA9ICgodWludDY0X3Qp
a0hJRFBhZ2VfR2VuZXJpY0Rlc2t0b3ApIDw8IDMyIHwga0hJRFVzYWdlX0dEX1k7Citjb25zdGV4
cHIgY29uc3QgdWludDY0X3QgaGlkWkF4aXNGdWxsVXNhZ2UgPSAoKHVpbnQ2NF90KWtISURQYWdl
X0dlbmVyaWNEZXNrdG9wKSA8PCAzMiB8IGtISURVc2FnZV9HRF9aOworY29uc3RleHByIGNvbnN0
IHVpbnQ2NF90IGhpZFJ6QXhpc0Z1bGxVc2FnZSA9ICgodWludDY0X3Qpa0hJRFBhZ2VfR2VuZXJp
Y0Rlc2t0b3ApIDw8IDMyIHwga0hJRFVzYWdlX0dEX1J6OworY29uc3RleHByIGNvbnN0IHVpbnQ2
NF90IGhpZEJ1dHRvbjFGdWxsVXNhZ2UgPSAoKHVpbnQ2NF90KWtISURQYWdlX0J1dHRvbikgPDwg
MzIgfCBrSElEVXNhZ2VfQnV0dG9uXzE7Citjb25zdGV4cHIgY29uc3QgdWludDY0X3QgaGlkQnV0
dG9uMkZ1bGxVc2FnZSA9ICgodWludDY0X3Qpa0hJRFBhZ2VfQnV0dG9uKSA8PCAzMiB8IChrSElE
VXNhZ2VfQnV0dG9uXzEgKyAxKTsKK2NvbnN0ZXhwciBjb25zdCB1aW50NjRfdCBoaWRCdXR0b24z
RnVsbFVzYWdlID0gKCh1aW50NjRfdClrSElEUGFnZV9CdXR0b24pIDw8IDMyIHwgKGtISURVc2Fn
ZV9CdXR0b25fMSArIDIpOworY29uc3RleHByIGNvbnN0IHVpbnQ2NF90IGhpZEJ1dHRvbjRGdWxs
VXNhZ2UgPSAoKHVpbnQ2NF90KWtISURQYWdlX0J1dHRvbikgPDwgMzIgfCAoa0hJRFVzYWdlX0J1
dHRvbl8xICsgMyk7Citjb25zdGV4cHIgY29uc3QgdWludDY0X3QgaGlkQnV0dG9uMTdGdWxsVXNh
Z2UgPSAoKHVpbnQ2NF90KWtISURQYWdlX0J1dHRvbikgPDwgMzIgfCAoa0hJRFVzYWdlX0J1dHRv
bl8xICsgMTYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuY3BwCmluZGV4IDczMDBlYjMy
MWE5NGVjMjQ2NjQwOTdmN2VjMjE2ODIyMjg5NGExMDguLjM5M2UyMzcwMWY1ZmNiOGVhYTc2MWNm
YTRhZTUwOWI4ZTkyYzNmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElER2FtZXBhZC5jcHAKQEAgLTM2LDYgKzM2LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogR2VuZXJpY0hJREdhbWVwYWQ6OkdlbmVyaWNISURHYW1lcGFk
KEhJRERldmljZSYmIGRldmljZSwgdW5zaWduZWQgaW5kZXgpCiAgICAgOiBISURHYW1lcGFkKFdU
Rk1vdmUoZGV2aWNlKSwgaW5kZXgpCiB7CisgICAgTE9HKEdhbWVwYWQsICJDcmVhdGluZyBHZW5l
cmljSElER2FtZXBhZCAlcCIsIHRoaXMpOworCiAgICAgYXV0byBpbnB1dEVsZW1lbnRzID0gaGlk
RGV2aWNlKCkudW5pcXVlSW5wdXRFbGVtZW50c0luRGV2aWNlVHJlZU9yZGVyKCk7CiAKICAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBpbnB1dEVsZW1lbnRzKSB7CkBAIC01MiwxMyArNTQsNiBAQCBH
ZW5lcmljSElER2FtZXBhZDo6R2VuZXJpY0hJREdhbWVwYWQoSElERGV2aWNlJiYgZGV2aWNlLCB1
bnNpZ25lZCBpbmRleCkKICAgICB9CiB9CiAKLVN0cmluZyBHZW5lcmljSElER2FtZXBhZDo6aWQo
KQotewotICAgIC8vIEN1cnJlbnRseSB0aGUgc3BlYyBoYXMgbm8gZm9ybWF0dGluZyBmb3IgdGhl
IGlkIHN0cmluZy4KLSAgICAvLyBUaGlzIHN0cmluZyBmb3JtYXR0aW5nIG1hdGNoZXMgRmlyZWZv
eC4KLSAgICByZXR1cm4gbWFrZVN0cmluZyhoZXgoaGlkRGV2aWNlKCkudmVuZG9ySUQoKSwgTG93
ZXJjYXNlKSwgJy0nLCBoZXgoaGlkRGV2aWNlKCkucHJvZHVjdElEKCksIExvd2VyY2FzZSksICct
JywgaGlkRGV2aWNlKCkucHJvZHVjdE5hbWUoKSk7Ci19Ci0KIHZvaWQgR2VuZXJpY0hJREdhbWVw
YWQ6Om1heWJlQWRkR2VuZXJpY0Rlc2t0b3BFbGVtZW50KEhJREVsZW1lbnQmIGVsZW1lbnQpCiB7
CiAgICAgc3dpdGNoIChlbGVtZW50LnVzYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElER2FtZXBhZC5oCmluZGV4IGU3YTdj
YmQ5NTM5ODFmYzg2NTQ4ZTBmMzIwMzgyNDVmNzhhOWFlMTUuLmQ2NmViMTRiMDhhOGUzNzIzZjg4
MWZjYTJmYzZjYjhiZWExNzQ0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuaApAQCAtMzYsOCArMzYsNiBAQCBw
dWJsaWM6CiAgICAgR2VuZXJpY0hJREdhbWVwYWQoSElERGV2aWNlJiYsIHVuc2lnbmVkIGluZGV4
KTsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaWQoKSBmaW5hbDsKLQogICAgIHZvaWQgbWF5YmVB
ZGRHZW5lcmljRGVza3RvcEVsZW1lbnQoSElERWxlbWVudCYpOwogICAgIHZvaWQgbWF5YmVBZGRC
dXR0b25FbGVtZW50KEhJREVsZW1lbnQmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCmluZGV4IDFlMWIyNjMxNzY1ZDRmNjky
ZjQwOGE0OWU2YjMzNmEwNzUxNzRhZWMuLjUxZGM0NGFmM2Q4OWUxMGI4ZWM4Y2IyMjVkZGM3NDJi
NmNkMjNmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWQuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkg
JiYgUExBVEZPUk0oTUFDKQogCisjaW5jbHVkZSAiRHVhbHNob2NrM0hJREdhbWVwYWQuaCIKICNp
bmNsdWRlICJHZW5lcmljSElER2FtZXBhZC5oIgorI2luY2x1ZGUgIktub3duR2FtZXBhZHMuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElERWxlbWVudC5o
PgogI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJRFVzYWdlVGFibGVzLmg+CkBAIC00MiwxMiArNDQs
MTggQEAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IEhJREdhbWVwYWQ6OmNyZWF0ZShJT0hJ
RERldmljZVJlZiByYXdEZXZpY2UsIHVuc2lnbmUKIHsKICAgICBhdXRvIGRldmljZSA9IEhJRERl
dmljZSB7IHJhd0RldmljZSB9OwogCi0gICAgLy8gV2hlbiB3ZSBzdXBwb3J0IHNwZWNpZmljIG1h
cHBpbmcgZm9yIGEgcGFydGljdWxhciBkZXZpY2UsIGhlcmUgaXMgd2hlcmUgd2UnbGwgZGVjaWRl
IHdoYXQga2luZCBvZiBISURHYW1lcGFkIHRvIG1ha2UuCi0gICAgLy8gRm9yIG5vdywgaXQncyBv
bmx5IHRoZSBHZW5lcmljSElER2FtZXBhZAotICAgIGF1dG8gbmV3R2FtZXBhZCA9IG1ha2VVbmlx
dWU8R2VuZXJpY0hJREdhbWVwYWQ+KFdURk1vdmUoZGV2aWNlKSwgaW5kZXgpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxISURHYW1lcGFkPiBuZXdHYW1lcGFkOworCisgICAgc3dpdGNoICgoS25vd25H
YW1lcGFkKWRldmljZS5mdWxsUHJvZHVjdElkZW50aWZpZXIoKSkgeworICAgIGNhc2UgRHVhbHNo
b2NrMzoKKyAgICAgICAgbmV3R2FtZXBhZCA9IG1ha2VVbmlxdWU8RHVhbHNob2NrM0hJREdhbWVw
YWQ+KFdURk1vdmUoZGV2aWNlKSwgaW5kZXgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBuZXdHYW1lcGFkID0gbWFrZVVuaXF1ZTxHZW5lcmljSElER2FtZXBhZD4oV1RG
TW92ZShkZXZpY2UpLCBpbmRleCk7CisgICAgfQogCiAgICAgbmV3R2FtZXBhZC0+aW5pdGlhbGl6
ZSgpOwotICAgIHJldHVybiBXVEZNb3ZlKG5ld0dhbWVwYWQpOworICAgIHJldHVybiBuZXdHYW1l
cGFkOwogfQogCiBISURHYW1lcGFkOjpISURHYW1lcGFkKEhJRERldmljZSYmIGRldmljZSwgdW5z
aWduZWQgaW5kZXgpCkBAIC01NSwxMiArNjMsMTQgQEAgSElER2FtZXBhZDo6SElER2FtZXBhZChI
SUREZXZpY2UmJiBkZXZpY2UsIHVuc2lnbmVkIGluZGV4KQogICAgICwgbV9kZXZpY2UoV1RGTW92
ZShkZXZpY2UpKQogewogICAgIG1fY29ubmVjdFRpbWUgPSBtX2xhc3RVcGRhdGVUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCk7CisKKyAgICAvLyBDdXJyZW50bHkgdGhlIHNwZWMgaGFzIG5vIGZv
cm1hdHRpbmcgZm9yIHRoZSBpZCBzdHJpbmcuCisgICAgLy8gVGhpcyBzdHJpbmcgZm9ybWF0dGlu
ZyBtYXRjaGVzIEZpcmVmb3guCisgICAgbV9pZCA9IG1ha2VTdHJpbmcoaGV4KG1fZGV2aWNlLnZl
bmRvcklEKCksIExvd2VyY2FzZSksICctJywgaGV4KG1fZGV2aWNlLnByb2R1Y3RJRCgpLCBMb3dl
cmNhc2UpLCAnLScsIG1fZGV2aWNlLnByb2R1Y3ROYW1lKCkpOwogfQogCiB2b2lkIEhJREdhbWVw
YWQ6OmluaXRpYWxpemUoKQogewotICAgIG1faWQgPSBpZCgpOwotCiAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogbV9lbGVtZW50TWFwLnZhbHVlcygpKQogICAgICAgICBlbGVtZW50LT5yZWZyZXNo
Q3VycmVudFZhbHVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkLmgKaW5kZXggYTM4MmM5ZTY0MTM0MzhhZmY5ZjgyYWFmZDc1NjFiMDAw
MTZjNDdiNC4uNjBmMzM5NGEzYjU4ZGZlZjFmYzg5ODliNDM4MDdmMzllY2M4MDEzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAt
NTIsOCArNTIsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSElER2FtZXBhZChISUREZXZp
Y2UmJiwgdW5zaWduZWQgaW5kZXgpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgaWQoKSA9IDA7Ci0K
ICAgICBIYXNoTWFwPElPSElERWxlbWVudENvb2tpZSwgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVw
YWRFbGVtZW50Pj4gbV9lbGVtZW50TWFwOwogICAgIFZlY3RvcjxTaGFyZWRHYW1lcGFkVmFsdWU+
IG1fYnV0dG9uVmFsdWVzOwogICAgIFZlY3RvcjxTaGFyZWRHYW1lcGFkVmFsdWU+IG1fYXhpc1Zh
bHVlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISUREZXZpY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISUREZXZpY2UuaAppbmRleCBkZGM4ZTYx
OThjMmJlMWY3NmEyOGEyYWYxNTFjZDNlNzFhYTkzNWZmLi4wMjJkYjk3ODMyNmJmNjkzMWZiZDhm
MmE5YTI4MDI1ZWM3MDQ2MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvSElERGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJRERldmlj
ZS5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHVpbnQxNl90IHZlbmRvcklEKCkg
Y29uc3QgeyByZXR1cm4gbV92ZW5kb3JJRDsgfQogICAgIHVpbnQxNl90IHByb2R1Y3RJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvZHVjdElEOyB9CisgICAgdWludDMyX3QgZnVsbFByb2R1Y3RJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV92ZW5kb3JJRCA8PCAxNiB8IG1fcHJvZHVjdElEOyB9
CiAgICAgY29uc3QgU3RyaW5nJiBwcm9kdWN0TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZHVj
dE5hbWU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9ISURFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSElERWxlbWVu
dC5oCmluZGV4IDEzNjdjYjg4OTA3NmE3NjBiMzAyNTU0YWQzZDcyYjE2YmUxYjgxZmEuLmEyMWI0
ZWQzOTM3NDY2MGQ5YWU0YjljNWUxZjUxOTg1NWFlYjFjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9ISURFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0hJREVsZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgQ0ZJ
bmRleCBwaHlzaWNhbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9waHlzaWNhbFZhbHVlOyB9CiAg
ICAgdWludDMyX3QgdXNhZ2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlOyB9CiAgICAgdWludDMy
X3QgdXNhZ2VQYWdlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZVBhZ2U7IH0KKyAgICB1aW50NjRf
dCBmdWxsVXNhZ2UoKSBjb25zdCB7IHJldHVybiAoKHVpbnQ2NF90KW1fdXNhZ2VQYWdlKSA8PCAz
MiB8IG1fdXNhZ2U7IH0KICAgICBJT0hJREVsZW1lbnRDb29raWUgY29va2llKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb29raWU7IH0KIAogICAgIHZvaWQgdmFsdWVDaGFuZ2VkKElPSElEVmFsdWVSZWYp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY3
ODhiMTNhY2NiYjg0Y2M5MDRmMGYwOGVkODk2ZWRmZGFmYTljNWMuLmMwYWE4NmRkNGE1MTJlNjQ2
OGE0Mjg1NzA4NWYxM2MzMzNlZjkwMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNy0zMCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3BlY2lhbCBISUQgbWFwcGluZyBm
b3IgdGhlIER1YWxzaG9jayAzIGNvbnRyb2xsZXIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2
MjU1MTk4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDkx
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
IHZpcnR1YWwgRHVhbHNob2NrMyBhbmQgdmVyaWZ5IGEgZmV3IGF0dHJpYnV0ZXMgYWJvdXQgaXQu
CisgICAgICAgIAorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hJ
REdhbWVwYWRzLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL0dhbWVwYWRNYXBwaW5n
cy9Tb255RHVhbFNob2NrMy5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwdWJs
aXNoUmVwb3J0Q2FsbGJhY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VmlydHVhbEdhbWVw
YWQ6OnNvbnlEdWFsc2hvY2szTWFwcGluZyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMv
VmlydHVhbEdhbWVwYWQuaDoKKwogMjAyMC0wNy0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBub24taW5jbHVzaXZlIHRlcm1p
bm9sb2d5IGZyb20gV2ViS2l0IHZhcmlhYmxlIG5hbWVzIGFuZCB0ZXN0LW9ubHkgU1BJCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDFiZTU1YmU4M2I5MGM1N2MyMmExYWY2OTJiNmFlNGIyZDlh
ZTdhODkuLjliMWVjODU5ZTBiYjI3ODFjOTUwOWI2MmI1OTk1NzgwMjk5MmY5ZmYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yNzYsNiArMjc2LDcgQEAKIAkJNTEwNDc3NzQxRDI5OERERDAw
OTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMtd2FsIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDQ3NzcxMUQyOThEODUwMDk3
NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzLXdhbCAqLzsgfTsKIAkJNTEwNDc3Nzcx
RDI5OEU3MjAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNDc3NzYxRDI5OEU1NzAw
OTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5Lmh0bWwgKi87IH07CiAJCTUxMDQ3Nzc4MUQyOTky
M0IwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDQ3Nzc1MUQyOThFMDMwMDk3NDdFQiAvKiBJREJE
ZWxldGVSZWNvdmVyeS5tbSAqLzsgfTsKKwkJNTEwQTkxRjgyNEQzNjIyMTAwQkZEODlDIC8qIFNv
bnlEdWFsU2hvY2szLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwQTkxRjcyNEQzNjIxOTAwQkZEODlDIC8qIFNvbnlEdWFsU2hvY2szLm1tICovOyB9
OwogCQk1MTEwRkNGMTFFMDFDRDY0MDA2RjhEMEIgLyogSURCSW5kZXhVcGdyYWRlVG9WMi5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MTBGQ0YwMUUwMUNENTMwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLmh0bWwgKi87IH07
CiAJCTUxMTBGQ0Y2MUUwMUNEODMwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuc3FsaXRlMyBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEwRkNG
MzFFMDFDRDc3MDA2RjhEMEIgLyogSW5kZXhVcGdyYWRlLnNxbGl0ZTMgKi87IH07CiAJCTUxMTBG
Q0Y5MUUwMUNEOEEwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuYmxvYiBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEwRkNGMjFFMDFDRDc3MDA2
RjhEMEIgLyogSW5kZXhVcGdyYWRlLmJsb2IgKi87IH07CkBAIC0xOTcwLDYgKzE5NzEsNyBAQAog
CQk1MTA0Nzc3MTFEMjk4RDg1MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMy13
YWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBwYXRoID0gIklEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMtd2FsIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTEwNDc3NzUxRDI5OEUwMzAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292
ZXJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSURCRGVsZXRl
UmVjb3ZlcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDQ3Nzc2MUQyOThF
NTcwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gSURCRGVsZXRlUmVjb3ZlcnkuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTEwQTkxRjcyNEQzNjIxOTAwQkZEODlDIC8qIFNvbnlEdWFsU2hvY2szLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU29ueUR1YWxTaG9jazMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTBGQ0VGMUUwMUNCQUEwMDZGOEQwQiAvKiBJ
REJJbmRleFVwZ3JhZGVUb1YyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gSURCSW5kZXhVcGdyYWRlVG9WMi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTExMEZDRjAxRTAxQ0Q1MzAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElEQkluZGV4VXBncmFkZVRvVjIuaHRtbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExMEZDRjIxRTAxQ0Q3NzAwNkY4RDBCIC8qIElu
ZGV4VXBncmFkZS5ibG9iICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEluZGV4VXBncmFkZS5ibG9i
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ2Niw2ICszNDY4LDcgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTUxRUIxMjYwMjRDQTZCNUYwMDBDQjAzMCAvKiBNaWNyb3NvZnRYYm94
T25lLm1tICovLAogCQkJCTUxRUIxMjVFMjRDQTZCNUYwMDBDQjAzMCAvKiBTaGVuemhlbkxvbmdz
aGVuZ3dlaVRlY2hub2xvZ3lHYW1lcGFkLm1tICovLAorCQkJCTUxMEE5MUY3MjREMzYyMTkwMEJG
RDg5QyAvKiBTb255RHVhbFNob2NrMy5tbSAqLywKIAkJCQk1MUVCMTI1RjI0Q0E2QjVGMDAwQ0Iw
MzAgLyogU29ueUR1YWxTaG9jazQubW0gKi8sCiAJCQkJNTFFQjEyNjEyNENBNkI1RjAwMENCMDMw
IC8qIFN0ZWVsU2VyaWVzTmltYnVzLm1tICovLAogCQkJCTUxRUIxMjY2MjRDQjg0OTMwMDBDQjAz
MCAvKiBTdW5MaWdodEFwcGxpY2F0aW9uR2VuZXJpY05FUy5tbSAqLywKQEAgLTUzMTMsNiArNTMx
Niw3IEBACiAJCQkJQzE0OUQ1NTAyNDJFOThERjAwM0VCQjEyIC8qIFNsZWVwRGlzYWJsZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyREZGN0I2RDFEQTQ4N0FGMDA4MTQ2MTQgLyogU25hcHNob3RT
dG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNEZGQTlFMUVEM0FBODUwMEY3MTExRiAvKiBT
bmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxMEE5MUY4
MjREMzYyMjEwMEJGRDg5QyAvKiBTb255RHVhbFNob2NrMy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRUIxMjY0MjRDQTZCNjYwMDBDQjAzMCAvKiBTb255RHVhbFNob2NrNC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RjE1MUE0MTFBRTYwMDQ0N0M0QyAvKiBTcGFjZWJhclNjcm9sbGluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0Y0QUFBMDIwOEZBRUYwMDBBNjhFOUUgLyogU1NMS2V5
R2VuZXJhdG9yLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9ISURHYW1lcGFkcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0hJREdhbWVwYWRzLm1tCmluZGV4IDg3NWI4MTE1NzBmZjI2NTJlNDlmZGYwNjY0NDVmZjUz
MTFmMjY3ZGIuLjJlMGY0OTFkOTA1ZDM5MmZhMmE1NGFkNWE1MzE2MjBlZDIyZjA5NzQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hJREdhbWVwYWRzLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hJREdhbWVwYWRzLm1tCkBAIC0zNTgsNiAr
MzU4LDY5IEBAIFRFU1QoR2FtZXBhZCwgR2FtZXBhZFN0YXRlKQogICAgIEVYUEVDVF9UUlVFKFtt
ZXNzYWdlSGFuZGxlci5nZXQoKS5tZXNzYWdlc1sxXSBpc0VxdWFsVG9TdHJpbmc6QCJEaXNjb25u
ZWN0OiBcIjc5LTExLVZpcnR1YWwgU2hlbnpoZW4gTG9uZ3NoZW5nd2VpIFRlY2hub2xvZ3kgR2Ft
ZXBhZFwiIl0pOwogfQogCitURVNUKEdhbWVwYWQsIER1YWxzaG9jazNCYXNpYykKK3sKKyAgICBh
dXRvIGtleVdpbmRvd1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
PihbTlNBcHBsaWNhdGlvbiBjbGFzc10sIEBzZWxlY3RvcihrZXlXaW5kb3cpLCByZWludGVycHJl
dF9jYXN0PElNUD4oZ2V0S2V5V2luZG93Rm9yVGVzdGluZykpOworCisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW0dhbWVwYWRNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJn
YW1lcGFkIl07CisKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNj
aGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiZ2FtZXBhZCJdOwor
CisgICAgW3NjaGVtZUhhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpeKFdLV2Vi
VmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgYXV0byByZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVl
c3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0
RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVz
cG9uc2UuZ2V0KCldOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6bWFpbkJ5dGVzIGxlbmd0aDpzdHJsZW4obWFpbkJ5dGVzKV1dOworICAgICAgICBb
dGFzayBkaWRGaW5pc2hdOworICAgIH1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAga2V5V2luZG93
Rm9yVGVzdGluZyA9IFt3ZWJWaWV3IHdpbmRvd107CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJnYW1lcGFkOi8vaG9zdC9tYWluLmh0bWwiXV1dOworCisgICAgW1t3ZWJWaWV3IHdp
bmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOndlYlZpZXcuZ2V0KCldOworCisgICAgLy8gUmVzaWdu
aW5nL3JlaW5zdGF0aW5nIHRoZSBrZXkgd2luZG93IHN0YXRlIHRyaWdnZXJzIHRoZSAia2V5IHdp
bmRvdyBkaWQgY2hhbmdlIiBub3RpZmljYXRpb24gdGhhdCBXS1dlYlZpZXcgY3VycmVudGx5Cisg
ICAgLy8gbmVlZHMgdG8gY29udmluY2UgaXQgdG8gbW9uaXRvciBnYW1lcGFkIGRldmljZXMKKyAg
ICBbW3dlYlZpZXcgd2luZG93XSByZXNpZ25LZXlXaW5kb3ddOworICAgIFtbd2ViVmlldyB3aW5k
b3ddIG1ha2VLZXlXaW5kb3ddOworCisgICAgLy8gQ29ubmVjdCBhIGdhbWVwYWQgYW5kIG1ha2Ug
aXQgdmlzaWJsZSB0byB0aGUgcGFnZQorICAgIGF1dG8gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8Vmly
dHVhbEdhbWVwYWQ+KFZpcnR1YWxHYW1lcGFkOjpzb255RHVhbHNob2NrM01hcHBpbmcoKSk7Cisg
ICAgd2hpbGUgKCFbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9udW1i
ZXJPZkNvbm5lY3RlZEdhbWVwYWRzRm9yVGVzdGluZ10pCisgICAgICAgIFV0aWw6OnNsZWVwKDAu
MDEpOworCisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vz
c1Bvb2wgX251bWJlck9mQ29ubmVjdGVkSElER2FtZXBhZHNGb3JUZXN0aW5nXSwgMXUpOworICAg
IEVYUEVDVF9FUShbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9udW1i
ZXJPZkNvbm5lY3RlZEdhbWVDb250cm9sbGVyRnJhbWV3b3JrR2FtZXBhZHNGb3JUZXN0aW5nXSwg
MHUpOworCisgICAgZ2FtZXBhZC0+c2V0QnV0dG9uVmFsdWUoMCwgMC43NSk7CisgICAgZ2FtZXBh
ZC0+cHVibGlzaFJlcG9ydCgpOworCisgICAgLy8gV2FpdCBmb3IgdGhlIHBhZ2UgdG8gdGVsbCB1
cyBhIGdhbWVwYWQgY29ubmVjdGVkCisgICAgVXRpbDo6cnVuKCZkaWRSZWNlaXZlTWVzc2FnZSk7
CisgICAgZGlkUmVjZWl2ZU1lc3NhZ2UgPSBmYWxzZTsKKworICAgIEVYUEVDVF9FUShtZXNzYWdl
SGFuZGxlci5nZXQoKS5tZXNzYWdlcy5zaXplKCksIDF1KTsKKyAgICBFWFBFQ1RfVFJVRShbbWVz
c2FnZUhhbmRsZXIuZ2V0KCkubWVzc2FnZXNbMF0gaXNFcXVhbFRvU3RyaW5nOkAiXCI1NGMtMjY4
LVZpcnR1YWwgRHVhbHNob2NrM1wiIl0pOworCisgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAg
YXV0byByZXN1bHRCbG9jayA9IFsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHRbQCJn
YW1lcGFkQ291bnQiXSBpc0VxdWFsVG9OdW1iZXI6QCgxKV0pOworICAgICAgICBFWFBFQ1RfRVEo
KChOU0FycmF5ICopcmVzdWx0W0AiZ2FtZXBhZEJ1dHRvbnMiXVswXSkuY291bnQsIDE3dSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgoKE5TQXJyYXkgKilyZXN1bHRbQCJnYW1lcGFkQXhlcyJdWzBdKS5j
b3VudCwgNHUpOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisKKyAgICBbd2ViVmll
dyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAocG9sbEdhbWVwYWRTdGF0ZUZ1bmN0aW9uKSBhcmd1bWVu
dHM6bmlsIGluRnJhbWU6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3Js
ZCBjb21wbGV0aW9uSGFuZGxlcjpyZXN1bHRCbG9ja107CisKKyAgICBVdGlsOjpydW4oJmRvbmUp
OworICAgIGRpZFJlY2VpdmVNZXNzYWdlID0gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShISURfRlJBTUVXT1JLKSAmJiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvR2FtZXBh
ZE1hcHBpbmdzL1NvbnlEdWFsU2hvY2szLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvR2Ft
ZXBhZE1hcHBpbmdzL1NvbnlEdWFsU2hvY2szLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwZmQwMzUzMTRjODRm
MWQ5MGQzMGVmN2NhYTI1MmM4NTYzZDgyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9HYW1lcGFkTWFwcGluZ3MvU29ueUR1YWxTaG9jazMubW0KQEAgLTAsMCAr
MSwyMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlZpcnR1
YWxHYW1lcGFkLmgiCisKKyNpZiBIQVZFKEhJRF9GUkFNRVdPUkspICYmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisKKyNpbXBvcnQgPEhJRC9ISURVc2VyRGV2aWNlLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworY29uc3QgdWludDhfdCBEdWFsc2hvY2szRGVzY3JpcHRvcltdID0g
eworICAgIDB4MDUsIDB4MDEsICAgICAgICAvLyBVc2FnZSBQYWdlIChHZW5lcmljIERlc2t0b3Ag
Q3RybHMpCisgICAgMHgwOSwgMHgwNCwgICAgICAgIC8vIFVzYWdlIChKb3lzdGljaykKKyAgICAw
eEExLCAweDAxLCAgICAgICAgLy8gQ29sbGVjdGlvbiAoQXBwbGljYXRpb24pCisgICAgMHhBMSwg
MHgwMiwgICAgICAgIC8vICAgQ29sbGVjdGlvbiAoTG9naWNhbCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICAgIFJlcG9ydCBJRCAtIFRvdGFsICgxKSBieXRlCisgICAgMHg4NSwgMHgwMSwg
ICAgICAgIC8vICAgICBSZXBvcnQgSUQgKDEpCisgICAgMHg3NSwgMHgwOCwgICAgICAgIC8vICAg
ICBSZXBvcnQgU2l6ZSAoOCkKKyAgICAweDk1LCAweDAxLCAgICAgICAgLy8gICAgIFJlcG9ydCBD
b3VudCAoMSkKKyAgICAweDE1LCAweDAwLCAgICAgICAgLy8gICAgIExvZ2ljYWwgTWluaW11bSAo
MCkKKyAgICAweDI2LCAweEZGLCAweDAwLCAgLy8gICAgIExvZ2ljYWwgTWF4aW11bSAoMjU1KQor
ICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgKDEpIGJ5dGUgcmVwb3J0IGZvciB1bmtub3du
IHBvaW50ZXIgLSBUb3RhbCAoMikgYnl0ZXMKKyAgICAweDgxLCAweDAzLCAgICAgICAgLy8gICAg
IElucHV0IChDb25zdCxWYXIsQWJzLE5vIFdyYXAsTGluZWFyLFByZWZlcnJlZCBTdGF0ZSxObyBO
dWxsIFBvc2l0aW9uKQorICAgIDB4NzUsIDB4MDEsICAgICAgICAvLyAgICAgUmVwb3J0IFNpemUg
KDEpCisgICAgMHg5NSwgMHgxMywgICAgICAgIC8vICAgICBSZXBvcnQgQ291bnQgKDE5KQorICAg
IDB4MTUsIDB4MDAsICAgICAgICAvLyAgICAgTG9naWNhbCBNaW5pbXVtICgwKQorICAgIDB4MjUs
IDB4MDEsICAgICAgICAvLyAgICAgTG9naWNhbCBNYXhpbXVtICgxKQorICAgIDB4MzUsIDB4MDAs
ICAgICAgICAvLyAgICAgUGh5c2ljYWwgTWluaW11bSAoMCkKKyAgICAweDQ1LCAweDAxLCAgICAg
ICAgLy8gICAgIFBoeXNpY2FsIE1heGltdW0gKDEpCisgICAgMHgwNSwgMHgwOSwgICAgICAgIC8v
ICAgICBVc2FnZSBQYWdlIChCdXR0b24pCisgICAgMHgxOSwgMHgwMSwgICAgICAgIC8vICAgICBV
c2FnZSBNaW5pbXVtICgweDAxKQorICAgIDB4MjksIDB4MTMsICAgICAgICAvLyAgICAgVXNhZ2Ug
TWF4aW11bSAoMHgxMykKKyAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICgxOSkgYml0cyBm
b3IgZGlnaXRhbCBidXR0b25zIC0gVG90YWwgKDQpIGJ5dGVzICgzKSBiaXRzCisgICAgMHg4MSwg
MHgwMiwgICAgICAgIC8vICAgICBJbnB1dCAoRGF0YSxWYXIsQWJzLE5vIFdyYXAsTGluZWFyLFBy
ZWZlcnJlZCBTdGF0ZSxObyBOdWxsIFBvc2l0aW9uKQorICAgIDB4NzUsIDB4MDEsICAgICAgICAv
LyAgICAgUmVwb3J0IFNpemUgKDEpCisgICAgMHg5NSwgMHgwRCwgICAgICAgIC8vICAgICBSZXBv
cnQgQ291bnQgKDEzKQorICAgIDB4MDYsIDB4MDAsIDB4RkYsICAvLyAgICAgVXNhZ2UgUGFnZSAo
VmVuZG9yIERlZmluZWQgMHhGRjAwKQorICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgKDEz
KSBiaXRzIHBhZGRpbmcgLSBUb3RhbCAoNikgYnl0ZXMKKyAgICAweDgxLCAweDAzLCAgICAgICAg
Ly8gICAgIElucHV0IChDb25zdCxWYXIsQWJzLE5vIFdyYXAsTGluZWFyLFByZWZlcnJlZCBTdGF0
ZSxObyBOdWxsIFBvc2l0aW9uKQorICAgIDB4MTUsIDB4MDAsICAgICAgICAvLyAgICAgTG9naWNh
bCBNaW5pbXVtICgwKQorICAgIDB4MjYsIDB4RkYsIDB4MDAsICAvLyAgICAgTG9naWNhbCBNYXhp
bXVtICgyNTUpCisgICAgMHgwNSwgMHgwMSwgICAgICAgIC8vICAgICBVc2FnZSBQYWdlIChHZW5l
cmljIERlc2t0b3AgQ3RybHMpCisgICAgMHgwOSwgMHgwMSwgICAgICAgIC8vICAgICBVc2FnZSAo
UG9pbnRlcikKKyAgICAweEExLCAweDAwLCAgICAgICAgLy8gICAgIENvbGxlY3Rpb24gKFBoeXNp
Y2FsKQorICAgIDB4NzUsIDB4MDgsICAgICAgICAvLyAgICAgICBSZXBvcnQgU2l6ZSAoOCkKKyAg
ICAweDk1LCAweDA0LCAgICAgICAgLy8gICAgICAgUmVwb3J0IENvdW50ICg0KQorICAgIDB4MzUs
IDB4MDAsICAgICAgICAvLyAgICAgICBQaHlzaWNhbCBNaW5pbXVtICgwKQorICAgIDB4NDYsIDB4
RkYsIDB4MDAsICAvLyAgICAgICBQaHlzaWNhbCBNYXhpbXVtICgyNTUpCisgICAgMHgwOSwgMHgz
MCwgICAgICAgIC8vICAgICAgIFVzYWdlIChYKQorICAgIDB4MDksIDB4MzEsICAgICAgICAvLyAg
ICAgICBVc2FnZSAoWSkKKyAgICAweDA5LCAweDMyLCAgICAgICAgLy8gICAgICAgVXNhZ2UgKFop
CisgICAgMHgwOSwgMHgzNSwgICAgICAgIC8vICAgICAgIFVzYWdlIChSeikKKyAgICAgICAgICAg
ICAgICAgICAgICAgLy8gICAgICAgKDQpIGF4ZXMgYXQgMSBieXRlIGVhY2ggLSBUb3RhbCAoMTAp
IGJ5dGVzCisgICAgMHg4MSwgMHgwMiwgICAgICAgIC8vICAgICAgIElucHV0IChEYXRhLFZhcixB
YnMsTm8gV3JhcCxMaW5lYXIsUHJlZmVycmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24pCisgICAg
MHhDMCwgICAgICAgICAgICAgIC8vICAgICBFbmQgQ29sbGVjdGlvbgorICAgIDB4MDUsIDB4MDEs
ICAgICAgICAvLyAgICAgVXNhZ2UgUGFnZSAoR2VuZXJpYyBEZXNrdG9wIEN0cmxzKQorICAgIDB4
NzUsIDB4MDgsICAgICAgICAvLyAgICAgUmVwb3J0IFNpemUgKDgpCisgICAgMHg5NSwgMHgyNywg
ICAgICAgIC8vICAgICBSZXBvcnQgQ291bnQgKDM5KQorICAgIDB4MDksIDB4MDEsICAgICAgICAv
LyAgICAgVXNhZ2UgKFBvaW50ZXIpCisgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAoMzkp
IHBvaW50ZXJzIGF0IDEgYnl0ZSBlYWNoIC0gVG90YWwgKDQ5KSBieXRlcworICAgIDB4ODEsIDB4
MDIsICAgICAgICAvLyAgICAgSW5wdXQgKERhdGEsVmFyLEFicyxObyBXcmFwLExpbmVhcixQcmVm
ZXJyZWQgU3RhdGUsTm8gTnVsbCBQb3NpdGlvbikKKyAgICAweDc1LCAweDA4LCAgICAgICAgLy8g
ICAgIFJlcG9ydCBTaXplICg4KQorICAgIDB4OTUsIDB4MzAsICAgICAgICAvLyAgICAgUmVwb3J0
IENvdW50ICg0OCkKKyAgICAweDA5LCAweDAxLCAgICAgICAgLy8gICAgIFVzYWdlIChQb2ludGVy
KQorICAgIDB4OTEsIDB4MDIsICAgICAgICAvLyAgICAgT3V0cHV0IChEYXRhLFZhcixBYnMsTm8g
V3JhcCxMaW5lYXIsUHJlZmVycmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24sTm9uLXZvbGF0aWxl
KQorICAgIDB4NzUsIDB4MDgsICAgICAgICAvLyAgICAgUmVwb3J0IFNpemUgKDgpCisgICAgMHg5
NSwgMHgzMCwgICAgICAgIC8vICAgICBSZXBvcnQgQ291bnQgKDQ4KQorICAgIDB4MDksIDB4MDEs
ICAgICAgICAvLyAgICAgVXNhZ2UgKFBvaW50ZXIpCisgICAgMHhCMSwgMHgwMiwgICAgICAgIC8v
ICAgICBGZWF0dXJlIChEYXRhLFZhcixBYnMsTm8gV3JhcCxMaW5lYXIsUHJlZmVycmVkIFN0YXRl
LE5vIE51bGwgUG9zaXRpb24sTm9uLXZvbGF0aWxlKQorICAgIDB4QzAsICAgICAgICAgICAgICAv
LyAgIEVuZCBDb2xsZWN0aW9uCisgICAgMHhBMSwgMHgwMiwgICAgICAgIC8vICAgQ29sbGVjdGlv
biAoTG9naWNhbCkKKyAgICAweDg1LCAweDAyLCAgICAgICAgLy8gICAgIFJlcG9ydCBJRCAoMikK
KyAgICAweDc1LCAweDA4LCAgICAgICAgLy8gICAgIFJlcG9ydCBTaXplICg4KQorICAgIDB4OTUs
IDB4MzAsICAgICAgICAvLyAgICAgUmVwb3J0IENvdW50ICg0OCkKKyAgICAweDA5LCAweDAxLCAg
ICAgICAgLy8gICAgIFVzYWdlIChQb2ludGVyKQorICAgIDB4QjEsIDB4MDIsICAgICAgICAvLyAg
ICAgRmVhdHVyZSAoRGF0YSxWYXIsQWJzLE5vIFdyYXAsTGluZWFyLFByZWZlcnJlZCBTdGF0ZSxO
byBOdWxsIFBvc2l0aW9uLE5vbi12b2xhdGlsZSkKKyAgICAweEMwLCAgICAgICAgICAgICAgLy8g
ICBFbmQgQ29sbGVjdGlvbgorICAgIDB4QTEsIDB4MDIsICAgICAgICAvLyAgIENvbGxlY3Rpb24g
KExvZ2ljYWwpCisgICAgMHg4NSwgMHhFRSwgICAgICAgIC8vICAgICBSZXBvcnQgSUQgKC0xOCkK
KyAgICAweDc1LCAweDA4LCAgICAgICAgLy8gICAgIFJlcG9ydCBTaXplICg4KQorICAgIDB4OTUs
IDB4MzAsICAgICAgICAvLyAgICAgUmVwb3J0IENvdW50ICg0OCkKKyAgICAweDA5LCAweDAxLCAg
ICAgICAgLy8gICAgIFVzYWdlIChQb2ludGVyKQorICAgIDB4QjEsIDB4MDIsICAgICAgICAvLyAg
ICAgRmVhdHVyZSAoRGF0YSxWYXIsQWJzLE5vIFdyYXAsTGluZWFyLFByZWZlcnJlZCBTdGF0ZSxO
byBOdWxsIFBvc2l0aW9uLE5vbi12b2xhdGlsZSkKKyAgICAweEMwLCAgICAgICAgICAgICAgLy8g
ICBFbmQgQ29sbGVjdGlvbgorICAgIDB4QTEsIDB4MDIsICAgICAgICAvLyAgIENvbGxlY3Rpb24g
KExvZ2ljYWwpCisgICAgMHg4NSwgMHhFRiwgICAgICAgIC8vICAgICBSZXBvcnQgSUQgKC0xNykK
KyAgICAweDc1LCAweDA4LCAgICAgICAgLy8gICAgIFJlcG9ydCBTaXplICg4KQorICAgIDB4OTUs
IDB4MzAsICAgICAgICAvLyAgICAgUmVwb3J0IENvdW50ICg0OCkKKyAgICAweDA5LCAweDAxLCAg
ICAgICAgLy8gICAgIFVzYWdlIChQb2ludGVyKQorICAgIDB4QjEsIDB4MDIsICAgICAgICAvLyAg
ICAgRmVhdHVyZSAoRGF0YSxWYXIsQWJzLE5vIFdyYXAsTGluZWFyLFByZWZlcnJlZCBTdGF0ZSxO
byBOdWxsIFBvc2l0aW9uLE5vbi12b2xhdGlsZSkKKyAgICAweEMwLCAgICAgICAgICAgICAgLy8g
ICBFbmQgQ29sbGVjdGlvbgorICAgIDB4QzAsICAgICAgICAgICAgICAvLyBFbmQgQ29sbGVjdGlv
bgorfTsKKworLy8gRklYTUU6IEhhdHN3aXRjaCBpcyBub3QgeWV0IGFkZHJlc3NhYmxlIGJ5IHRl
c3QKK2NvbnN0IHNpemVfdCBEdWFsc2hvY2szQnV0dG9uQ291bnQgPSAxOTsKK2NvbnN0IHNpemVf
dCBEdWFsc2hvY2szQXhpc0NvdW50ID0gNDsKK2NvbnN0IHNpemVfdCBEdWFsc2hvY2szUmVwb3J0
U2l6ZSA9IDQ5OworY29uc3QgY2hhciogRHVhbHNob2NrM05hbWUgPSAiVmlydHVhbCBEdWFsc2hv
Y2szIjsKKworLy8gUmVwb3J0IGxheW91dDoKKy8vIHxSZXBvcnRJRHwgfDxub25lPnwgfGIxLWI4
fCB8YjktYjE2fCB8KDUgYml0cyBwYWRkaW5nIGhpZ2gpIGIxNy1iMTl8IHxwYWRkaW5nfCB8QXhp
czF8IHxBeGlzMnwgfEF4aXMzfCB8QXhpczR8CisvLyAoMzl4KSB8R2VuZXJpYyBwb2ludGVyfAor
Ly8gQW5hbG9nIGJ1dHRvbiByZWFkb3V0cyBzaG93IHVwIGF0IHNwZWNpZmljIHBsYWNlcyBpbiB0
aG9zZSAzOSBnZW5lcmljIDEgYnl0ZSBwb2ludGVycworLy8gUGh5c2ljYWwgYnV0dG9ucyBvbiB0
aGUgZGV2aWNlIG1hcCB0byBidXR0b24gYml0cyAxLTE3LCBidXQgdGhlcmUgaXMgbm8gYWN0dWF0
b3IgZm9yIGIxOCBhbmQgYjE5CisvLyAxMiBvZiB0aG9zZSBwaHlzaWNhbCBidXR0b25zIGFsc28g
aGF2ZSBhbiBhbmFsb2cgdmFsdWUgbWFwcGluZyBpbnRvIHRoZSBnZW5lcmljIHBvaW50ZXJzCisK
K3N0YXRpYyB2b2lkIHB1Ymxpc2hSZXBvcnRDYWxsYmFjayhWZWN0b3I8ZmxvYXQ+JiBidXR0b25W
YWx1ZXMsIFZlY3RvcjxmbG9hdD4mIGF4aXNWYWx1ZXMsIEhJRFVzZXJEZXZpY2UgKnVzZXJEZXZp
Y2UpCit7CisgICAgdWludDhfdCByZXBvcnREYXRhW0R1YWxzaG9jazNSZXBvcnRTaXplXTsKKyAg
ICBiemVybyhyZXBvcnREYXRhLCBEdWFsc2hvY2szUmVwb3J0U2l6ZSk7CisgICAgc2l6ZV90IHJl
cG9ydEluZGV4ID0gMDsKKworICAgIC8vIFJlcG9ydCBJRAorICAgIHJlcG9ydERhdGFbcmVwb3J0
SW5kZXgrK10gPSAweDAxOworCisgICAgLy8gQ29uc3RhbnQKKyAgICByZXBvcnREYXRhW3JlcG9y
dEluZGV4KytdID0gMHgwMDsKKworICAgIC8vIERpZ2l0YWwgYnV0dG9ucyBzcGFuIHRoZSBuZXh0
IDMgYnl0ZXMKKyAgICB1aW50OF90IGJ1dHRvbkJ5dGUgPSAweDAwOworICAgIGxvbmcgYnV0dG9u
Qml0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIGJ1dHRv
bkJpdCA9IGxyb3VuZChidXR0b25WYWx1ZXNbaV0pOworICAgICAgICBidXR0b25CeXRlIHw9IGJ1
dHRvbkJpdCA8PCBpOworICAgIH0KKyAgICByZXBvcnREYXRhW3JlcG9ydEluZGV4KytdID0gYnV0
dG9uQnl0ZTsKKworICAgIGJ1dHRvbkJ5dGUgPSAweDAwOworICAgIGZvciAoc2l6ZV90IGkgPSA4
OyBpIDwgMTY7ICsraSkgeworICAgICAgICBidXR0b25CaXQgPSBscm91bmQoYnV0dG9uVmFsdWVz
W2ldKTsKKyAgICAgICAgYnV0dG9uQnl0ZSB8PSBidXR0b25CaXQgPDwgKGkgLSA4KTsKKyAgICB9
CisgICAgcmVwb3J0RGF0YVtyZXBvcnRJbmRleCsrXSA9IGJ1dHRvbkJ5dGU7CisKKyAgICBidXR0
b25CeXRlID0gMHgwMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMTY7IGkgPCAxOTsgKytpKSB7Cisg
ICAgICAgIGJ1dHRvbkJpdCA9IGxyb3VuZChidXR0b25WYWx1ZXNbaV0pOworICAgICAgICBidXR0
b25CeXRlIHw9IGJ1dHRvbkJpdCA8PCAoaSAtIDE2KTsKKyAgICB9CisgICAgcmVwb3J0RGF0YVty
ZXBvcnRJbmRleCsrXSA9IGJ1dHRvbkJ5dGU7CisKKyAgICAvLyBQYWRkaW5nIGJ5dGUKKyAgICBy
ZXBvcnREYXRhW3JlcG9ydEluZGV4KytdID0gMHgwMDsKKworICAgIC8vIEF4ZXMgKDEgYnl0ZSBl
YWNoKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICByZXBvcnRE
YXRhW3JlcG9ydEluZGV4KytdID0gKHVpbnQ4X3QpKGF4aXNWYWx1ZXNbaV0gKiAyNTUpOworCisg
ICAgLy8gRmlyc3QgNCBnZW5lcmljIHBvaW50cyBhcmUgYWx3YXlzIDB4MDAKKyAgICByZXBvcnRE
YXRhW3JlcG9ydEluZGV4KytdID0gMHgwMDsKKyAgICByZXBvcnREYXRhW3JlcG9ydEluZGV4Kytd
ID0gMHgwMDsKKyAgICByZXBvcnREYXRhW3JlcG9ydEluZGV4KytdID0gMHgwMDsKKyAgICByZXBv
cnREYXRhW3JlcG9ydEluZGV4KytdID0gMHgwMDsKKworICAgIC8vIFRoZSBuZXh0IHR3ZWx2ZSBn
ZW5lcmljIHBvaW50ZXJzIG1hcCB0byBzcGVjaWZpYyBidXR0b25zIGluIG9yZGVyCisgICAgZm9y
IChzaXplX3QgaSA9IDQ7IGkgPCAxNjsgKytpKQorICAgICAgICByZXBvcnREYXRhW3JlcG9ydElu
ZGV4KytdID0gKHVpbnQ4X3QpKGJ1dHRvblZhbHVlc1tpXSAqIDI1NSk7CisKKyAgICBhdXRvIG5z
UmVwb3J0RGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVwb3J0
RGF0YSBsZW5ndGg6RHVhbHNob2NrM1JlcG9ydFNpemVdKTsKKyAgICBbdXNlckRldmljZSBoYW5k
bGVSZXBvcnQ6bnNSZXBvcnREYXRhLmdldCgpIGVycm9yOm5pbF07Cit9CisKK0dhbWVwYWRNYXBw
aW5nIFZpcnR1YWxHYW1lcGFkOjpzb255RHVhbHNob2NrM01hcHBpbmcoKQoreworICAgIHJldHVy
biB7CisgICAgICAgIER1YWxzaG9jazNEZXNjcmlwdG9yLAorICAgICAgICBzaXplb2YoRHVhbHNo
b2NrM0Rlc2NyaXB0b3IpLAorICAgICAgICBEdWFsc2hvY2szTmFtZSwKKyAgICAgICAgSElEVmVu
ZG9ySUQ6OlNvbnksCisgICAgICAgIEhJRFByb2R1Y3RJRDo6RHVhbHNob2NrMywKKyAgICAgICAg
RHVhbHNob2NrM0J1dHRvbkNvdW50LAorICAgICAgICBEdWFsc2hvY2szQXhpc0NvdW50LAorICAg
ICAgICBwdWJsaXNoUmVwb3J0Q2FsbGJhY2sKKyAgICB9OworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBIQVZFKEhJRF9GUkFNRVdPUkspICYmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9WaXJ0
dWFsR2FtZXBhZC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVmlydHVhbEdhbWVwYWQuaApp
bmRleCAyYTA1M2Y0YTQyODgwYzBjNmQ2NmQ3OTA5ZDY4ZDljZjgzMzhkNGRjLi45YjE2NTZhMGNk
NDA3NWI3Zjk2MzhjZmYxM2QyNTE5MGQ3ZmUwNzVjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9WaXJ0dWFsR2FtZXBhZC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFj
L1ZpcnR1YWxHYW1lcGFkLmgKQEAgLTYwLDYgKzYwLDcgQEAgZW51bSBjbGFzcyBISURQcm9kdWN0
SUQgOiB1aW50MTZfdCB7CiAgICAgWGJveE9uZTEgPSAweDAyZWEsCiAgICAgWGJveE9uZTIgPSAw
eDAyZTAsCiAgICAgWGJveE9uZTMgPSAweDAyZmQsCisgICAgRHVhbHNob2NrMyA9IDB4MDI2OCwK
ICAgICBEdWFsc2hvY2s0XzEgPSAweDA1YzQsCiAgICAgRHVhbHNob2NrNF8yID0gMHgwOWNjLAog
fTsKQEAgLTgyLDYgKzgzLDcgQEAgY2xhc3MgVmlydHVhbEdhbWVwYWQgewogcHVibGljOgogICAg
IHN0YXRpYyBHYW1lcGFkTWFwcGluZyBtaWNyb3NvZnRYYm94T25lTWFwcGluZygpOwogICAgIHN0
YXRpYyBHYW1lcGFkTWFwcGluZyBzaGVuemhlbkxvbmdzaGVuZ3dlaVRlY2hub2xvZ3lHYW1lcGFk
TWFwcGluZygpOworICAgIHN0YXRpYyBHYW1lcGFkTWFwcGluZyBzb255RHVhbHNob2NrM01hcHBp
bmcoKTsKICAgICBzdGF0aWMgR2FtZXBhZE1hcHBpbmcgc29ueUR1YWxzaG9jazRNYXBwaW5nKCk7
CiAgICAgc3RhdGljIEdhbWVwYWRNYXBwaW5nIHN0ZWVsU2VyaWVzTmltYnVzTWFwcGluZygpOwog
ICAgIHN0YXRpYyBHYW1lcGFkTWFwcGluZyBzdW5MaWdodEFwcGxpY2F0aW9uR2VuZXJpY05FU01h
cHBpbmcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405718</attachid>
            <date>2020-07-31 11:45:09 -0700</date>
            <delta_ts>2020-07-31 12:50:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214911-20200731114508.patch</filename>
            <type>text/plain</type>
            <size>61634</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmY2E3ZGUzNzc1ZWZm
ZWQ3ODRhNTJkNDI3N2EwZmUyMzJiNjBjZC4uZWVhODc2NDQ3MTYwYTJlNTQxYWY5ZjUwNjE2ZDUw
ZDNiNThjODYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTA3LTMwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGVjaWFsIEhJRCBtYXBw
aW5nIGZvciB0aGUgRHVhbHNob2NrIDMgY29udHJvbGxlcgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjYyNTUxOTg+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBDb3Zl
cmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAtIE1vdmUgR2FtZXBhZEJ1dHRvbnMgaW50byBh
IEdhbWVwYWRDb25zdGFudHMgaGVhZGVyCisgICAgICAgIC0gQWRkIGEgIktub3duR2FtZXBhZHMi
IGhlYWRlciB0byBob2xkIGFsbCB2ZW5kb3IvcHJvZHVjdCBwYWlycyB0aGF0IFdlYktpdCBrbm93
cyBhYm91dAorICAgICAgICAtIEFkZCBhIER1YWxzaG9jazMgY29udHJvbGxlciBtYXBwaW5nIGJh
c2VkIG9uIGl0cyBISUQgcmVwb3J0CisgICAgICAgIC0gQWRkIGEgYmFzaWMgRFMzIHRlc3QgYmFz
ZWQgb24gdGhlIEhJRCByZXBvcnQKKyAgICAgICAgCisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25z
dGFudHMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
Yy9HZW5lcmljSElER2FtZXBhZC5oLgorICAgICAgICAoV2ViQ29yZTo6c3RhbmRhcmRHYW1lcGFk
TWFwcGluZ1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3Rh
bnRzLmg6IEFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9Lbm93bkdhbWVwYWRz
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVy
aWNISURHYW1lcGFkLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2Ft
ZXBhZDo6c2V0dXBBc0V4dGVuZGVkR2FtZXBhZCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1l
cGFkL21hYy9EdWFsc2hvY2szSElER2FtZXBhZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RHVhbHNob2NrM0hJREdhbWVwYWQ6OkR1YWxzaG9jazNISURHYW1lcGFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9EdWFsc2hvY2szSElER2FtZXBhZC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElER2FtZXBhZC5o
LgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0hJREdhbWVwYWQ6OkdlbmVyaWNISURHYW1lcGFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNISURHYW1lcGFkOjppZCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuaDoKKworICAg
ICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SElER2FtZXBhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWQ6
OkhJREdhbWVwYWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZDo6aW5pdGlhbGl6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oOgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0hJRERldmljZS5oOgorICAgICAgICAoV2ViQ29yZTo6SElERGV2aWNl
OjpmdWxsUHJvZHVjdElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9I
SURFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpISURFbGVtZW50OjpmdWxsVXNhZ2UgY29u
c3QpOgorCiAyMDIwLTA3LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWZhY3RvciBISUQgZ2FtZXBhZCBjb2RlIHRvIGJlIG11Y2ggbGVzcyBmcmFnaWxl
IGFuZCBtdWNoIGVhc2llciB0byBoYWNrIG9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4ODI4MGI5MTQ4
OTQxNmUyY2U2MmUxOWI1MTUyMDM1OWMwMTNkNjBmLi4wNDUzNmMzNjQ4ZjZhOGZlNjI5MDhmMDQz
ZDMwNzIzYTFiMjlkZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTgxNiw2ICsxODE2LDcgQEAgcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTG9nZ2luZy5jcHAKIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuY3BwCiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAK
IHBsYXRmb3JtL2dhbWVwYWQvRW1wdHlHYW1lcGFkUHJvdmlkZXIuY3BwCitwbGF0Zm9ybS9nYW1l
cGFkL0dhbWVwYWRDb25zdGFudHMuY3BwCiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92aWRl
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBjZmQ5
YTM2MTc4OGYwZmMyYzBiZWNkMjRkYjc2MWMyODY1ODNjNjk4Li44OWE0NzBkNmQzMmZlZWQ5YjUw
NTUzMDJhYWY0OTRkNjExZTA5ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1Nyw2
ICsyNTcsNyBAQCBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tIEBuby11bmlmeQog
cGxhdGZvcm0vY29jb2EvV2ViQ29yZU5TRXJyb3JFeHRyYXMubW0KIHBsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCitwbGF0Zm9ybS9nYW1lcGFkL21hYy9EdWFs
c2hvY2szSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1l
cGFkLmNwcAogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWRFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNkNjIzNGQ3NjQ3OTUyZDNlN2Nl
YjBlYWNjZTIzOGU1NTI4MDJmM2QuLjY2NWI0Nzc0NzllN2JjMjdkMGNkMzllNjg2M2YxYzEzNDM1
NzQzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE0MDIsNiArMTQwMiw5IEBACiAJCTUxMEE5MURDMjRDRjQ2RkUwMEJGRDg5
QyAvKiBTaGFyZWRHYW1lcGFkVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMEE5MURCMjRDRjQ0MTgwMEJGRDg5QyAvKiBTaGFyZWRHYW1lcGFk
VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTBBOTFFQTI0RDAwNEMzMDBCRkQ4OUMgLyogSElERWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTkxRTMyNENGQ0MxODAwQkZEODlD
IC8qIEhJREVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTBBOTFFQjI0RDAwNEM4MDBCRkQ4OUMgLyogSElERGV2aWNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBOTFFMjI0Q0ZDQzE4
MDBCRkQ4OUMgLyogSElERGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNTEwQTkxRjYyNEQzMkREQzAwQkZEODlDIC8qIER1YWxzaG9jazNI
SURHYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTBBOTFGNDI0RDMyNEZGMDBCRkQ4OUMgLyogRHVhbHNob2NrM0hJREdhbWVwYWQuaCAqLzsg
fTsKKwkJNTEwQTkxRkQyNEQzQzE2MjAwQkZEODlDIC8qIEdhbWVwYWRDb25zdGFudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE1RkU5MjRDRDA1
REQwMDJDOTdFNiAvKiBHYW1lcGFkQ29uc3RhbnRzLmggKi87IH07CisJCTUxMEE5MUZFMjREM0Mx
NjcwMEJGRDg5QyAvKiBHYW1lcGFkQ29uc3RhbnRzTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBOTFGQjI0RDNDMEZEMDBCRkQ4OUMgLyogR2Ft
ZXBhZENvbnN0YW50c01hYy5oICovOyB9OwogCQk1MTBENEEzNDEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEQ0
QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTgyMjUsNiArODIyOCwxMCBAQAogCQk1MTBBOTFFNTI0Q0ZDQzE4MDBCRkQ4OUMgLyogSElERGV2
aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhJRERldmljZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEE5MUU3MjRDRkVBMTcwMEJGRDg5
QyAvKiBHZW5lcmljSElER2FtZXBhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHZW5lcmljSElER2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMEE5MUU5MjRDRkVBMzIwMEJGRDg5QyAvKiBHZW5lcmljSElER2FtZXBhZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljSElER2FtZXBhZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTBBOTFGMjI0RDMyNEM2MDBCRkQ4OUMgLyogS25vd25H
YW1lcGFkcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLbm93bkdhbWVwYWRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEE5MUY0MjREMzI0RkYwMEJGRDg5
QyAvKiBEdWFsc2hvY2szSElER2FtZXBhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEdWFsc2hvY2szSElER2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTBBOTFGNTI0RDMyNTAwMDBCRkQ4OUMgLyogRHVhbHNob2NrM0hJREdhbWVwYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHVhbHNob2NrM0hJREdhbWVwYWQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBBOTFGQjI0RDNDMEZEMDBCRkQ4
OUMgLyogR2FtZXBhZENvbnN0YW50c01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHYW1lcGFkQ29uc3RhbnRzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tl
dFN0cmVhbUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMx
MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xOTY2MSw2ICsxOTY2OCw3IEBACiAJCQkJNTE1QkUxOEExRDU0RjVGNjAw
REQ3QzY4IC8qIEdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJCQkJNTE1QkUxOEIxRDU0RjVGNjAw
REQ3QzY4IC8qIEdhbWVwYWRQcm92aWRlci5oICovLAogCQkJCTUxNUJFMThDMUQ1NEY1RjYwMERE
N0M2OCAvKiBHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCAqLywKKwkJCQk1MTBBOTFGMjI0RDMyNEM2
MDBCRkQ4OUMgLyogS25vd25HYW1lcGFkcy5oICovLAogCQkJCTUxNUJFMThFMUQ1NEY1RjYwMERE
N0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCAqLywKIAkJCQk1MTBBOTFEQjI0Q0Y0NDE4MDBCRkQ4
OUMgLyogU2hhcmVkR2FtZXBhZFZhbHVlLmggKi8sCiAJCQkpOwpAQCAtMTk2NzAsNiArMTk2Nzgs
OSBAQAogCQk1MTVCRTE5NjFENTRGNjQ1MDBERDdDNjggLyogbWFjICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTBBOTFGNTI0RDMyNTAwMDBCRkQ4OUMg
LyogRHVhbHNob2NrM0hJREdhbWVwYWQuY3BwICovLAorCQkJCTUxMEE5MUY0MjREMzI0RkYwMEJG
RDg5QyAvKiBEdWFsc2hvY2szSElER2FtZXBhZC5oICovLAorCQkJCTUxMEE5MUZCMjREM0MwRkQw
MEJGRDg5QyAvKiBHYW1lcGFkQ29uc3RhbnRzTWFjLmggKi8sCiAJCQkJNTEwQTkxRTcyNENGRUEx
NzAwQkZEODlDIC8qIEdlbmVyaWNISURHYW1lcGFkLmNwcCAqLywKIAkJCQk1MTBBOTFFOTI0Q0ZF
QTMyMDBCRkQ4OUMgLyogR2VuZXJpY0hJREdhbWVwYWQuaCAqLywKIAkJCQk1MTVCRTE5NzFENTRG
NkJEMDBERDdDNjggLyogSElER2FtZXBhZC5jcHAgKi8sCkBAIC0zMDc1NCw2ICszMDc2NSw3IEBA
CiAJCQkJQTdDRkIzRDIwQjdFRDEwQTAwNzBDMzJEIC8qIERyYWdJbWFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFGNUU0RDkxRTU2NzdBOTAwNEExRjAxIC8qIERyYWdJdGVtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MTBBOTFGNjI0RDMyRERDMDBCRkQ4OUMgLyogRHVhbHNob2NrM0hJREdh
bWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkE2NkYxMTc0MkJEODYwMEMyMDI1MSAvKiBE
eW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENkVEMkM4MTM2
QjhFNjYwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZENTM3MzU3MTM3QjY1M0IwMDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBp
biBIZWFkZXJzICovLApAQCAtMzA5NzksNiArMzA5OTEsOCBAQAogCQkJCUZEMzE2MDBEMTJCMDI2
NzYwMEMxQTM1OSAvKiBHYWluTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMzk5MDAxRDZF
NDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBBOTFGRDI0RDNDMTYyMDBCRkQ4OUMgLyogR2Ft
ZXBhZENvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwQTkxRkUyNEQzQzE2NzAwQkZE
ODlDIC8qIEdhbWVwYWRDb25zdGFudHNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNkM2MjIx
MTk1MEQ0ODcwMDMzN0U3NSAvKiBHYW1lcGFkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QTlEOUVBMTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE1QkUxOTIxRDU0RjVGQjAwREQ3QzY4IC8qIEdhbWVwYWRQcm92aWRlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dh
bWVwYWRDb25zdGFudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1l
cGFkQ29uc3RhbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTIyNzk4NGNkNTczMjI5YmRmOWZhOTVlZTAy
MjM4MGZlNGI3ZmZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRDb25zdGFudHMuaCIKKwor
I2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Nv
bnN0IEdhbWVwYWRCdXR0b25Sb2xlIG1heGltdW1HYW1lcGFkQnV0dG9uID0gR2FtZXBhZEJ1dHRv
blJvbGU6OkNlbnRlckNsdXN0ZXJDZW50ZXI7Citjb25zdCBzaXplX3QgbnVtYmVyT2ZTdGFuZGFy
ZEdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0b24gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1h
eGltdW1HYW1lcGFkQnV0dG9uKTsKK2NvbnN0IHNpemVfdCBudW1iZXJPZlN0YW5kYXJkR2FtZXBh
ZEJ1dHRvbnNXaXRoSG9tZUJ1dHRvbiA9IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dp
dGhvdXRIb21lQnV0dG9uICsgMTsKKworY29uc3QgV1RGOjpTdHJpbmcmIHN0YW5kYXJkR2FtZXBh
ZE1hcHBpbmdTdHJpbmcoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0
YW5kYXJkR2FtZXBhZE1hcHBpbmcgPSAic3RhbmRhcmQiOworICAgIHJldHVybiBzdGFuZGFyZEdh
bWVwYWRNYXBwaW5nOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L0dhbWVwYWRDb25zdGFudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjkwZTc4ZDE0OGNlOTA4MjViNTA1NWU1
ZWY2YjkxNGZkZWUwNzM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKK25hbWVzcGFjZSBXVEYg
eworY2xhc3MgU3RyaW5nOworfTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBCdXR0b25z
IGluIHRoZSAic3RhbmRhcmQiIGdhbWVwYWQgbGF5b3V0IGluIHRoZSBXZWIgR2FtZXBhZCBzcGVj
CisvLyBodHRwczovL3d3dy53My5vcmcvVFIvZ2FtZXBhZC8jZGZuLXN0YW5kYXJkLWdhbWVwYWQt
bGF5b3V0CitlbnVtIGNsYXNzIEdhbWVwYWRCdXR0b25Sb2xlIDogdWludDhfdCB7CisgICAgUmln
aHRDbHVzdGVyQm90dG9tID0gMCwKKyAgICBSaWdodENsdXN0ZXJSaWdodCA9IDEsCisgICAgUmln
aHRDbHVzdGVyTGVmdCA9IDIsCisgICAgUmlnaHRDbHVzdGVyVG9wID0gMywKKyAgICBMZWZ0U2hv
dWxkZXJGcm9udCA9IDQsCisgICAgUmlnaHRTaG91bGRlckZyb250ID0gNSwKKyAgICBMZWZ0U2hv
dWxkZXJCYWNrID0gNiwKKyAgICBSaWdodFNob3VsZGVyQmFjayA9IDcsCisgICAgQ2VudGVyQ2x1
c3RlckxlZnQgPSA4LAorICAgIENlbnRlckNsdXN0ZXJSaWdodCA9IDksCisgICAgTGVmdFN0aWNr
ID0gMTAsCisgICAgUmlnaHRTdGljayA9IDExLAorICAgIExlZnRDbHVzdGVyVG9wID0gMTIsCisg
ICAgTGVmdENsdXN0ZXJCb3R0b20gPSAxMywKKyAgICBMZWZ0Q2x1c3RlckxlZnQgPSAxNCwKKyAg
ICBMZWZ0Q2x1c3RlclJpZ2h0ID0gMTUsCisgICAgQ2VudGVyQ2x1c3RlckNlbnRlciA9IDE2LAor
fTsKKworZXh0ZXJuIGNvbnN0IHNpemVfdCBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNX
aXRob3V0SG9tZUJ1dHRvbjsKK2V4dGVybiBjb25zdCBzaXplX3QgbnVtYmVyT2ZTdGFuZGFyZEdh
bWVwYWRCdXR0b25zV2l0aEhvbWVCdXR0b247CitleHRlcm4gY29uc3QgR2FtZXBhZEJ1dHRvblJv
bGUgbWF4aW11bUdhbWVwYWRCdXR0b247CisKK2NvbnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdh
bWVwYWRNYXBwaW5nU3RyaW5nKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9Lbm93bkdhbWVwYWRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L0tub3duR2FtZXBhZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTQxZDZjNzkwZThhZWU4NDQ4NTk1ZDI4NDJk
N2IzOTU2MTQ1M2FjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9Lbm93bkdhbWVwYWRzLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworZW51bSBLbm93bkdhbWVwYWQgeworICAgIE5pbWJ1czEgPSAweDAxMTExNDIwLAorICAgIE5p
bWJ1czIgPSAweDEwMzgxNDIwLAorICAgIFN0cmF0dXNYTDEgPSAweDAxMTExNDE4LAorICAgIFN0
cmF0dXNYTDIgPSAweDEwMzgxNDE4LAorICAgIFN0cmF0dXNYTDMgPSAweDAxMTExNDE5LAorICAg
IFN0cmF0dXNYTDQgPSAweDEwMzgxNDE5LAorICAgIEhvcmlwYWRVbHRpbWF0ZSA9IDB4MGYwZDAw
OTAsCisgICAgR2FtZXNpck0yID0gMHgwZWMyMDQ3NSwKKyAgICBYYm94T25lMSA9IDB4MDQ1ZTAy
ZTAsCisgICAgWGJveE9uZTIgPSAweDA0NWUwMmVhLAorICAgIFhib3hPbmUzID0gMHgwNDVlMDJm
ZCwKKyAgICBEdWFsc2hvY2szID0gMHgwNTRjMDI2OCwKKyAgICBEdWFsc2hvY2s0XzEgPSAweDA1
NGMwNWM0LAorICAgIER1YWxzaG9jazRfMiA9IDB4MDU0YzA5Y2MsCit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFk
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWQubW0KaW5kZXggNDEzM2ZkYjY4MDcxODIzNDdkNmVmNGNiZTRhM2Q0YzExMDU3ZmY1
OC4uNGY1ZjQ4MTE2OTg0NzQwYTBkZjdmNWViMzJjOGM1OTUyNGZlNjAxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlckdhbWVwYWQubW0KQEAgLTI3LDM1ICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKEdBTUVQ
QUQpCiAjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgotI2ltcG9ydCAi
R2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgorI2ltcG9ydCAiR2FtZXBhZENvbnN0YW50cy5oIgog
I2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR2FtZUNvbnRyb2xsZXIuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgogCi0vLyBCdXR0b25z
IGluIHRoZSAic3RhbmRhcmQiIGdhbWVwYWQgbGF5b3V0IGluIHRoZSBXZWIgR2FtZXBhZCBzcGVj
Ci0vLyBodHRwczovL3d3dy53My5vcmcvVFIvZ2FtZXBhZC8jZGZuLXN0YW5kYXJkLWdhbWVwYWQt
bGF5b3V0Ci1lbnVtIGNsYXNzIEdhbWVwYWRCdXR0b25zIDogdWludDhfdCB7Ci0gICAgUmlnaHRD
bHVzdGVyQm90dG9tID0gMCwKLSAgICBSaWdodENsdXN0ZXJSaWdodCA9IDEsCi0gICAgUmlnaHRD
bHVzdGVyTGVmdCA9IDIsCi0gICAgUmlnaHRDbHVzdGVyVG9wID0gMywKLSAgICBMZWZ0U2hvdWxk
ZXJGcm9udCA9IDQsCi0gICAgUmlnaHRTaG91bGRlckZyb250ID0gNSwKLSAgICBMZWZ0U2hvdWxk
ZXJCYWNrID0gNiwKLSAgICBSaWdodFNob3VsZGVyQmFjayA9IDcsCi0gICAgQ2VudGVyQ2x1c3Rl
ckxlZnQgPSA4LAotICAgIENlbnRlckNsdXN0ZXJSaWdodCA9IDksCi0gICAgTGVmdFN0aWNrID0g
MTAsCi0gICAgUmlnaHRTdGljayA9IDExLAotICAgIExlZnRDbHVzdGVyVG9wID0gMTIsCi0gICAg
TGVmdENsdXN0ZXJCb3R0b20gPSAxMywKLSAgICBMZWZ0Q2x1c3RlckxlZnQgPSAxNCwKLSAgICBM
ZWZ0Q2x1c3RlclJpZ2h0ID0gMTUsCi0gICAgQ2VudGVyQ2x1c3RlckNlbnRlciA9IDE2LAotfTsK
LQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIG51bUdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0
b24gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KEdhbWVwYWRCdXR0b25zOjpDZW50ZXJDbHVzdGVyQ2Vu
dGVyKTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBudW1HYW1lcGFkQnV0dG9uc1dpdGhIb21lQnV0
dG9uID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihHYW1lcGFkQnV0dG9uczo6Q2VudGVyQ2x1c3RlckNl
bnRlcikgKyAxOworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHYW1lQ29udHJvbGxlckdhbWVwYWQ6
OkdhbWVDb250cm9sbGVyR2FtZXBhZChHQ0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIHVuc2lnbmVk
IGluZGV4KQogICAgIDogUGxhdGZvcm1HYW1lcGFkKGluZGV4KQpAQCAtOTgsMTAgKzc1LDEwIEBA
IHZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkOjpzZXR1cEFzRXh0ZW5kZWRHYW1lcGFkKCkKICAg
ICBBU1NFUlQobV9leHRlbmRlZEdhbWVwYWQpOwogCiAgICAgbV9pZCA9IG1ha2VTdHJpbmcoU3Ry
aW5nKG1fZ2NDb250cm9sbGVyLmdldCgpLnZlbmRvck5hbWUpLCAiIEV4dGVuZGVkIEdhbWVwYWQi
X3MpOwotICAgIG1fbWFwcGluZyA9IFN0cmluZygic3RhbmRhcmQiKTsKKyAgICBtX21hcHBpbmcg
PSBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CiAKICAgICBhdXRvICpob21lQnV0dG9u
ID0gaG9tZUJ1dHRvbkZyb21FeHRlbmRlZEdhbWVwYWQobV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkp
OwotICAgIG1fYnV0dG9uVmFsdWVzLnJlc2l6ZShob21lQnV0dG9uID8gbnVtR2FtZXBhZEJ1dHRv
bnNXaXRoSG9tZUJ1dHRvbiA6IG51bUdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0b24pOwor
ICAgIG1fYnV0dG9uVmFsdWVzLnJlc2l6ZShob21lQnV0dG9uID8gbnVtYmVyT2ZTdGFuZGFyZEdh
bWVwYWRCdXR0b25zV2l0aEhvbWVCdXR0b24gOiBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRv
bnNXaXRob3V0SG9tZUJ1dHRvbik7CiAKICAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS52YWx1
ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0V4dGVuZGVkR2FtZXBhZCAqLCBHQ0NvbnRyb2xsZXJFbGVt
ZW50ICopIHsKICAgICAgICAgbV9sYXN0VXBkYXRlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwpAQCAtMTA5LDcgKzg2LDcgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWQ6OnNldHVwQXNF
eHRlbmRlZEdhbWVwYWQoKQogICAgICAgICBtX2hhZEJ1dHRvblByZXNzZXMgPSBmYWxzZTsKICAg
ICB9OwogCi0gICAgYXV0byBiaW5kQnV0dG9uID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAq
YnV0dG9uLCBHYW1lcGFkQnV0dG9ucyBpbmRleCkgeworICAgIGF1dG8gYmluZEJ1dHRvbiA9IF4o
R0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKmJ1dHRvbiwgR2FtZXBhZEJ1dHRvblJvbGUgaW5kZXgp
IHsKICAgICAgICAgbV9idXR0b25WYWx1ZXNbKHNpemVfdClpbmRleF0uc2V0VmFsdWUoYnV0dG9u
LnZhbHVlKTsKICAgICAgICAgYnV0dG9uLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJv
bGxlckJ1dHRvbklucHV0ICosIGZsb2F0IHZhbHVlLCBCT09MIHByZXNzZWQpIHsKICAgICAgICAg
ICAgIG1fYnV0dG9uVmFsdWVzWyhzaXplX3QpaW5kZXhdLnNldFZhbHVlKHZhbHVlKTsKQEAgLTEx
OSwzMCArOTYsMzAgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWQ6OnNldHVwQXNFeHRlbmRl
ZEdhbWVwYWQoKQogICAgIH07CiAKICAgICAvLyBCdXR0b24gUGFkCi0gICAgYmluZEJ1dHRvbiht
X2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25BLCBHYW1lcGFkQnV0dG9uczo6UmlnaHRDbHVz
dGVyQm90dG9tKTsKLSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRv
bkIsIEdhbWVwYWRCdXR0b25zOjpSaWdodENsdXN0ZXJSaWdodCk7Ci0gICAgYmluZEJ1dHRvbiht
X2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25YLCBHYW1lcGFkQnV0dG9uczo6UmlnaHRDbHVz
dGVyTGVmdCk7Ci0gICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25Z
LCBHYW1lcGFkQnV0dG9uczo6UmlnaHRDbHVzdGVyVG9wKTsKKyAgICBiaW5kQnV0dG9uKG1fZXh0
ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkEsIEdhbWVwYWRCdXR0b25Sb2xlOjpSaWdodENsdXN0
ZXJCb3R0b20pOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9u
QiwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0Q2x1c3RlclJpZ2h0KTsKKyAgICBiaW5kQnV0dG9u
KG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblgsIEdhbWVwYWRCdXR0b25Sb2xlOjpSaWdo
dENsdXN0ZXJMZWZ0KTsKKyAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1
dHRvblksIEdhbWVwYWRCdXR0b25Sb2xlOjpSaWdodENsdXN0ZXJUb3ApOwogCiAgICAgLy8gU2hv
dWxkZXJzLCBUcmlnZ2VycwotICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCku
bGVmdFNob3VsZGVyLCBHYW1lcGFkQnV0dG9uczo6TGVmdFNob3VsZGVyRnJvbnQpOwotICAgIGJp
bmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRTaG91bGRlciwgR2FtZXBhZEJ1
dHRvbnM6OlJpZ2h0U2hvdWxkZXJGcm9udCk7Ci0gICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2Ft
ZXBhZC5nZXQoKS5sZWZ0VHJpZ2dlciwgR2FtZXBhZEJ1dHRvbnM6OkxlZnRTaG91bGRlckJhY2sp
OwotICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRUcmlnZ2VyLCBH
YW1lcGFkQnV0dG9uczo6UmlnaHRTaG91bGRlckJhY2spOworICAgIGJpbmRCdXR0b24obV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkubGVmdFNob3VsZGVyLCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVmdFNo
b3VsZGVyRnJvbnQpOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmln
aHRTaG91bGRlciwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0U2hvdWxkZXJGcm9udCk7CisgICAg
YmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VHJpZ2dlciwgR2FtZXBhZEJ1
dHRvblJvbGU6OkxlZnRTaG91bGRlckJhY2spOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdh
bWVwYWQuZ2V0KCkucmlnaHRUcmlnZ2VyLCBHYW1lcGFkQnV0dG9uUm9sZTo6UmlnaHRTaG91bGRl
ckJhY2spOwogCiAgICAgLy8gRCBQYWQKLSAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFk
LmdldCgpLmRwYWQudXAsIEdhbWVwYWRCdXR0b25zOjpMZWZ0Q2x1c3RlclRvcCk7Ci0gICAgYmlu
ZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLmRvd24sIEdhbWVwYWRCdXR0b25z
OjpMZWZ0Q2x1c3RlckJvdHRvbSk7Ci0gICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5kcGFkLmxlZnQsIEdhbWVwYWRCdXR0b25zOjpMZWZ0Q2x1c3RlckxlZnQpOwotICAgIGJp
bmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC5yaWdodCwgR2FtZXBhZEJ1dHRv
bnM6OkxlZnRDbHVzdGVyUmlnaHQpOworICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQu
Z2V0KCkuZHBhZC51cCwgR2FtZXBhZEJ1dHRvblJvbGU6OkxlZnRDbHVzdGVyVG9wKTsKKyAgICBi
aW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmRwYWQuZG93biwgR2FtZXBhZEJ1dHRv
blJvbGU6OkxlZnRDbHVzdGVyQm90dG9tKTsKKyAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRHYW1l
cGFkLmdldCgpLmRwYWQubGVmdCwgR2FtZXBhZEJ1dHRvblJvbGU6OkxlZnRDbHVzdGVyTGVmdCk7
CisgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLnJpZ2h0LCBHYW1l
cGFkQnV0dG9uUm9sZTo6TGVmdENsdXN0ZXJSaWdodCk7CiAKICAgICBpZiAoaG9tZUJ1dHRvbikK
LSAgICAgICAgYmluZEJ1dHRvbihob21lQnV0dG9uLCBHYW1lcGFkQnV0dG9uczo6Q2VudGVyQ2x1
c3RlckNlbnRlcik7CisgICAgICAgIGJpbmRCdXR0b24oaG9tZUJ1dHRvbiwgR2FtZXBhZEJ1dHRv
blJvbGU6OkNlbnRlckNsdXN0ZXJDZW50ZXIpOwogCiAgICAgLy8gU2VsZWN0LCBTdGFydAogI2lm
IEhBVkUoR0NFWFRFTkRFREdBTUVQQURfQlVUVE9OU19PUFRJT05TX01FTlUpCi0gICAgYmluZEJ1
dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25PcHRpb25zLCBHYW1lcGFkQnV0dG9u
czo6Q2VudGVyQ2x1c3RlckxlZnQpOwotICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQu
Z2V0KCkuYnV0dG9uTWVudSwgR2FtZXBhZEJ1dHRvbnM6OkNlbnRlckNsdXN0ZXJSaWdodCk7Cisg
ICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25PcHRpb25zLCBHYW1l
cGFkQnV0dG9uUm9sZTo6Q2VudGVyQ2x1c3RlckxlZnQpOworICAgIGJpbmRCdXR0b24obV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uTWVudSwgR2FtZXBhZEJ1dHRvblJvbGU6OkNlbnRlckNs
dXN0ZXJSaWdodCk7CiAjZW5kaWYKIAogICAgIC8vIEwzLCBSMwpAQCAtMTUxLDggKzEyOCw4IEBA
IHZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkOjpzZXR1cEFzRXh0ZW5kZWRHYW1lcGFkKCkKICNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVd1bmd1YXJkZWQtYXZhaWxhYmlsaXR5IgogICAgIGlmIChbbV9leHRlbmRlZEdhbWVw
YWQuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihsZWZ0VGh1bWJzdGlja0J1dHRv
bildKSB7Ci0gICAgICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRo
dW1ic3RpY2tCdXR0b24sIEdhbWVwYWRCdXR0b25zOjpMZWZ0U3RpY2spOwotICAgICAgICBiaW5k
QnV0dG9uKG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLnJpZ2h0VGh1bWJzdGlja0J1dHRvbiwgR2Ft
ZXBhZEJ1dHRvbnM6OlJpZ2h0U3RpY2spOworICAgICAgICBiaW5kQnV0dG9uKG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrQnV0dG9uLCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVm
dFN0aWNrKTsKKyAgICAgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdo
dFRodW1ic3RpY2tCdXR0b24sIEdhbWVwYWRCdXR0b25Sb2xlOjpSaWdodFN0aWNrKTsKICAgICB9
CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IDE2NjYzOTFjNjdlMGYzOTIxMmU4ZDllMDJm
YmRmMmVhZWY1MGQ0NTQuLmEyMjEzM2NhNTkzZWQ2MzI0NzRhNDcyZGM0YmYyMWY3YmYxYjA5MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWQuaCIKICNpbXBvcnQgIkdh
bWVwYWRQcm92aWRlckNsaWVudC5oIgorI2ltcG9ydCAiS25vd25HYW1lcGFkcy5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR2FtZUNvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL0lPS2l0U1BJTWFjLmg+CkBAIC00NCw0MiArNDUsMjcgQEAg
Ym9vbCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6d2lsbEhhbmRsZVZlbmRvckFuZFBy
b2R1Y3QodWludDE2X3QgdmVuZG9ySUQKIHsKICAgICAvLyBDaGVjayB0aGUgdmVuZG9yL3Byb2R1
Y3QgSURzIGFnYWlucyBhIGhhcmQgY29kZWQgbGlzdCBvZiBjb250cm9sbGVycyB3ZSBleHBlY3Qg
dG8gd29yayB3ZWxsIHdpdGgKICAgICAvLyBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgb24gMTAu
MTUuCi0gICAgZW51bSBHYW1lQ29udHJvbGxlckNvbXBhdGlibGUgewotICAgICAgICBOaW1idXMx
ID0gMHgwMTExMTQyMCwKLSAgICAgICAgTmltYnVzMiA9IDB4MTAzODE0MjAsCi0gICAgICAgIFN0
cmF0dXNYTDEgPSAweDAxMTExNDE4LAotICAgICAgICBTdHJhdHVzWEwyID0gMHgxMDM4MTQxOCwK
LSAgICAgICAgU3RyYXR1c1hMMyA9IDB4MDExMTE0MTksCi0gICAgICAgIFN0cmF0dXNYTDQgPSAw
eDEwMzgxNDE5LAotICAgICAgICBIb3JpcGFkVWx0aW1hdGUgPSAweDBmMGQwMDkwLAotICAgICAg
ICBHYW1lc2lyTTIgPSAweDBlYzIwNDc1LAotICAgICAgICBYYm94T25lMSA9IDB4MDQ1ZTAyZTAs
Ci0gICAgICAgIFhib3hPbmUyID0gMHgwNDVlMDJlYSwKLSAgICAgICAgWGJveE9uZTMgPSAweDA0
NWUwMmZkLAotICAgICAgICBEdWFsc2hvY2s0XzEgPSAweDA1NGMwNWM0LAotICAgICAgICBEdWFs
c2hvY2s0XzIgPSAweDA1NGMwOWNjLAotICAgIH07Ci0KLSAgICBHYW1lQ29udHJvbGxlckNvbXBh
dGlibGUgZnVsbFByb2R1Y3RJRCA9IChHYW1lQ29udHJvbGxlckNvbXBhdGlibGUpKCh2ZW5kb3JJ
RCA8PCAxNikgfCAocHJvZHVjdElEICYgMHhGRkZGKSk7Ci0KLSAgICBzd2l0Y2ggKGZ1bGxQcm9k
dWN0SUQpIHsKLSAgICBjYXNlIE5pbWJ1czE6Ci0gICAgY2FzZSBOaW1idXMyOgotICAgIGNhc2Ug
U3RyYXR1c1hMMToKLSAgICBjYXNlIFN0cmF0dXNYTDI6Ci0gICAgY2FzZSBTdHJhdHVzWEwzOgot
ICAgIGNhc2UgU3RyYXR1c1hMNDoKLSAgICBjYXNlIEhvcmlwYWRVbHRpbWF0ZToKLSAgICBjYXNl
IEdhbWVzaXJNMjoKLSAgICBjYXNlIFhib3hPbmUxOgotICAgIGNhc2UgWGJveE9uZTI6Ci0gICAg
Y2FzZSBYYm94T25lMzoKLSAgICBjYXNlIER1YWxzaG9jazRfMToKLSAgICBjYXNlIER1YWxzaG9j
azRfMjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDx1aW50MzJf
dD4+IGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzOworCisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQoTmltYnVzMSk7Cisg
ICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQoTmltYnVzMik7Cisg
ICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQoU3RyYXR1c1hMMSk7
CisgICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQoU3RyYXR1c1hM
Mik7CisgICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQoU3RyYXR1
c1hMMyk7CisgICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQoU3Ry
YXR1c1hMNCk7CisgICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdhbWVwYWRzLT5hZGQo
SG9yaXBhZFVsdGltYXRlKTsKKyAgICAgICAgZ2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlR2FtZXBh
ZHMtPmFkZChHYW1lc2lyTTIpOworICAgICAgICBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVHYW1l
cGFkcy0+YWRkKFhib3hPbmUxKTsKKyAgICAgICAgZ2FtZUNvbnRyb2xsZXJDb21wYXRpYmxlR2Ft
ZXBhZHMtPmFkZChYYm94T25lMik7CisgICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0aWJsZUdh
bWVwYWRzLT5hZGQoWGJveE9uZTMpOworICAgICAgICBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVH
YW1lcGFkcy0+YWRkKER1YWxzaG9jazRfMSk7CisgICAgICAgIGdhbWVDb250cm9sbGVyQ29tcGF0
aWJsZUdhbWVwYWRzLT5hZGQoRHVhbHNob2NrNF8yKTsKKyAgICB9KTsKKworICAgIHVpbnQzMl90
IGZ1bGxQcm9kdWN0SUQgPSAoKCh1aW50MzJfdCl2ZW5kb3JJRCkgPDwgMTYpIHwgcHJvZHVjdElE
OworICAgIHJldHVybiBnYW1lQ29udHJvbGxlckNvbXBhdGlibGVHYW1lcGFkcy0+Y29udGFpbnMo
ZnVsbFByb2R1Y3RJRCk7CiB9CiAjZW5kaWYgLy8gIUhBVkUoR0NDT05UUk9MTEVSX0hJRF9ERVZJ
Q0VfQ0hFQ0spCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL0R1YWxzaG9jazNISURHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL0R1YWxzaG9jazNISURHYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzQwZThiODg5
Mjg3M2ZmMDcyMDYxOGNmZTgzOTY0YzgwZWMzNDFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvRHVhbHNob2NrM0hJREdhbWVwYWQuY3BwCkBA
IC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkR1YWxzaG9jazNISURHYW1lcGFkLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExB
VEZPUk0oTUFDKQorCisjaW5jbHVkZSAiR2FtZXBhZENvbnN0YW50cy5oIgorI2luY2x1ZGUgIkdh
bWVwYWRDb25zdGFudHNNYWMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8SU9L
aXQvaGlkL0lPSElEVXNhZ2VUYWJsZXMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworRHVhbHNob2NrM0hJREdhbWVwYWQ6OkR1YWxzaG9jazNI
SURHYW1lcGFkKEhJRERldmljZSYmIGRldmljZSwgdW5zaWduZWQgaW5kZXgpCisgICAgOiBISURH
YW1lcGFkKFdURk1vdmUoZGV2aWNlKSwgaW5kZXgpCit7CisgICAgTE9HKEdhbWVwYWQsICJDcmVh
dGluZyBEdWFsc2hvY2szSElER2FtZXBhZCAlcCIsIHRoaXMpOworCisgICAgbV9tYXBwaW5nID0g
c3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRoSG9tZUJ1dHRvbjsgKytpKQor
ICAgICAgICBtX2J1dHRvblZhbHVlcy5hcHBlbmQoMC4wKTsKKworICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgYXhpc0NvdW50ID0gNDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF4aXNDb3Vu
dDsgKytpKQorICAgICAgICBtX2F4aXNWYWx1ZXMuYXBwZW5kKDAuMCk7CisKKyAgICBhdXRvIGlu
cHV0RWxlbWVudHMgPSBoaWREZXZpY2UoKS51bmlxdWVJbnB1dEVsZW1lbnRzSW5EZXZpY2VUcmVl
T3JkZXIoKTsKKworICAgIFZlY3RvcjxISURFbGVtZW50PiBwb2ludGVyRWxlbWVudHM7CisKKyAg
ICBhdXRvIG1hcEJ1dHRvbiA9IFt0aGlzXSAoSElERWxlbWVudCYgZWxlbWVudCwgR2FtZXBhZEJ1
dHRvblJvbGUgcm9sZSkgeworICAgICAgICBtX2VsZW1lbnRNYXAuc2V0KGVsZW1lbnQuY29va2ll
KCksIG1ha2VVbmlxdWU8SElER2FtZXBhZEJ1dHRvbj4oZWxlbWVudCwgbV9idXR0b25WYWx1ZXNb
KHNpemVfdClyb2xlXSkpOworICAgIH07CisKKyAgICAvLyBMb29rIHNwZWNpZmljYWxseSBmb3Ig
dGhlIGF4ZXMgYW5kIGRpZ2l0YWwgYnV0dG9ucworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGlu
cHV0RWxlbWVudHMpIHsKKyAgICAgICAgc3dpdGNoIChlbGVtZW50LmZ1bGxVc2FnZSgpKSB7Cisg
ICAgICAgIGNhc2UgaGlkUG9pbnRlckZ1bGxVc2FnZToKKyAgICAgICAgICAgIHBvaW50ZXJFbGVt
ZW50cy5hcHBlbmQoZWxlbWVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBo
aWRYQXhpc0Z1bGxVc2FnZToKKyAgICAgICAgICAgIG1fZWxlbWVudE1hcC5zZXQoZWxlbWVudC5j
b29raWUoKSwgbWFrZVVuaXF1ZTxISURHYW1lcGFkQXhpcz4oZWxlbWVudCwgbV9heGlzVmFsdWVz
WzBdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBoaWRZQXhpc0Z1bGxVc2Fn
ZToKKyAgICAgICAgICAgIG1fZWxlbWVudE1hcC5zZXQoZWxlbWVudC5jb29raWUoKSwgbWFrZVVu
aXF1ZTxISURHYW1lcGFkQXhpcz4oZWxlbWVudCwgbV9heGlzVmFsdWVzWzFdKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBoaWRaQXhpc0Z1bGxVc2FnZToKKyAgICAgICAgICAg
IG1fZWxlbWVudE1hcC5zZXQoZWxlbWVudC5jb29raWUoKSwgbWFrZVVuaXF1ZTxISURHYW1lcGFk
QXhpcz4oZWxlbWVudCwgbV9heGlzVmFsdWVzWzJdKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBoaWRSekF4aXNGdWxsVXNhZ2U6CisgICAgICAgICAgICBtX2VsZW1lbnRNYXAu
c2V0KGVsZW1lbnQuY29va2llKCksIG1ha2VVbmlxdWU8SElER2FtZXBhZEF4aXM+KGVsZW1lbnQs
IG1fYXhpc1ZhbHVlc1szXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgaGlk
QnV0dG9uMUZ1bGxVc2FnZToKKyAgICAgICAgICAgIG1hcEJ1dHRvbihlbGVtZW50LCBHYW1lcGFk
QnV0dG9uUm9sZTo6Q2VudGVyQ2x1c3RlckxlZnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgaGlkQnV0dG9uMkZ1bGxVc2FnZToKKyAgICAgICAgICAgIG1hcEJ1dHRvbihlbGVt
ZW50LCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVmdFN0aWNrKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIGhpZEJ1dHRvbjNGdWxsVXNhZ2U6CisgICAgICAgICAgICBtYXBCdXR0b24o
ZWxlbWVudCwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0U3RpY2spOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgaGlkQnV0dG9uNEZ1bGxVc2FnZToKKyAgICAgICAgICAgIG1hcEJ1
dHRvbihlbGVtZW50LCBHYW1lcGFkQnV0dG9uUm9sZTo6Q2VudGVyQ2x1c3RlclJpZ2h0KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGhpZEJ1dHRvbjE3RnVsbFVzYWdlOgorICAg
ICAgICAgICAgbWFwQnV0dG9uKGVsZW1lbnQsIEdhbWVwYWRCdXR0b25Sb2xlOjpDZW50ZXJDbHVz
dGVyQ2VudGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBzaXplX3QgZXhwZWN0
ZWRHZW5lcmljUG9pbnRlckVsZW1lbnRzID0gNDA7CisgICAgaWYgKHBvaW50ZXJFbGVtZW50cy5z
aXplKCkgIT0gZXhwZWN0ZWRHZW5lcmljUG9pbnRlckVsZW1lbnRzKSB7CisgICAgICAgIExPRyhH
YW1lcGFkLCAiRHVhbHNob2NrMyBjb250cm9sbGVyIHdhcyBleHBlY3RlZCB0byBoYXZlICVsdSBn
ZW5lcmljIHBvaW50ZXIgZWxlbWVudHMsIGhhcyAlbHUgaW5zdGVhZCIsIGV4cGVjdGVkR2VuZXJp
Y1BvaW50ZXJFbGVtZW50cywgcG9pbnRlckVsZW1lbnRzLnNpemUoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzVdLCBHYW1lcGFkQnV0
dG9uUm9sZTo6TGVmdENsdXN0ZXJUb3ApOworICAgIG1hcEJ1dHRvbihwb2ludGVyRWxlbWVudHNb
Nl0sIEdhbWVwYWRCdXR0b25Sb2xlOjpMZWZ0Q2x1c3RlclJpZ2h0KTsKKyAgICBtYXBCdXR0b24o
cG9pbnRlckVsZW1lbnRzWzddLCBHYW1lcGFkQnV0dG9uUm9sZTo6TGVmdENsdXN0ZXJCb3R0b20p
OworICAgIG1hcEJ1dHRvbihwb2ludGVyRWxlbWVudHNbOF0sIEdhbWVwYWRCdXR0b25Sb2xlOjpM
ZWZ0Q2x1c3RlckxlZnQpOworICAgIG1hcEJ1dHRvbihwb2ludGVyRWxlbWVudHNbOV0sIEdhbWVw
YWRCdXR0b25Sb2xlOjpMZWZ0U2hvdWxkZXJCYWNrKTsKKyAgICBtYXBCdXR0b24ocG9pbnRlckVs
ZW1lbnRzWzEwXSwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0U2hvdWxkZXJCYWNrKTsKKyAgICBt
YXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzExXSwgR2FtZXBhZEJ1dHRvblJvbGU6OkxlZnRTaG91
bGRlckZyb250KTsKKyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRzWzEyXSwgR2FtZXBhZEJ1
dHRvblJvbGU6OlJpZ2h0U2hvdWxkZXJGcm9udCk7CisgICAgbWFwQnV0dG9uKHBvaW50ZXJFbGVt
ZW50c1sxM10sIEdhbWVwYWRCdXR0b25Sb2xlOjpSaWdodENsdXN0ZXJUb3ApOworICAgIG1hcEJ1
dHRvbihwb2ludGVyRWxlbWVudHNbMTRdLCBHYW1lcGFkQnV0dG9uUm9sZTo6UmlnaHRDbHVzdGVy
UmlnaHQpOworICAgIG1hcEJ1dHRvbihwb2ludGVyRWxlbWVudHNbMTVdLCBHYW1lcGFkQnV0dG9u
Um9sZTo6UmlnaHRDbHVzdGVyQm90dG9tKTsKKyAgICBtYXBCdXR0b24ocG9pbnRlckVsZW1lbnRz
WzE2XSwgR2FtZXBhZEJ1dHRvblJvbGU6OlJpZ2h0Q2x1c3RlckxlZnQpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvRHVh
bHNob2NrM0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0R1YWxzaG9jazNISURHYW1lcGFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYxOTNmMzllZGFkMzE3ZjEzM2My
NWYzOWRiNjQyODk1NDAxOTMzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFjL0R1YWxzaG9jazNISURHYW1lcGFkLmgKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBM
QVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkhJREdhbWVwYWQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBEdWFsc2hvY2szSElER2FtZXBhZCBmaW5hbCA6IHB1YmxpYyBISURHYW1l
cGFkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEdWFsc2hv
Y2szSElER2FtZXBhZChISUREZXZpY2UmJiwgdW5zaWduZWQgaW5kZXgpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dh
bWVwYWRDb25zdGFudHNNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0dhbWVwYWRDb25zdGFudHNNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjNlNzljYmUxN2ZmYzU5MTQ5ZDhj
ZGY3ZWIwZmM3Y2MwZWZjMzg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvR2FtZXBhZENvbnN0YW50c01hYy5oCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFU
Rk9STShNQUMpCisKKyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJRFVzYWdlVGFibGVzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3RleHByIGNvbnN0IHVpbnQ2NF90IGhpZFBvaW50ZXJG
dWxsVXNhZ2UgPSAoKHVpbnQ2NF90KWtISURQYWdlX0dlbmVyaWNEZXNrdG9wKSA8PCAzMiB8IGtI
SURVc2FnZV9HRF9Qb2ludGVyOworY29uc3RleHByIGNvbnN0IHVpbnQ2NF90IGhpZFhBeGlzRnVs
bFVzYWdlID0gKCh1aW50NjRfdClrSElEUGFnZV9HZW5lcmljRGVza3RvcCkgPDwgMzIgfCBrSElE
VXNhZ2VfR0RfWDsKK2NvbnN0ZXhwciBjb25zdCB1aW50NjRfdCBoaWRZQXhpc0Z1bGxVc2FnZSA9
ICgodWludDY0X3Qpa0hJRFBhZ2VfR2VuZXJpY0Rlc2t0b3ApIDw8IDMyIHwga0hJRFVzYWdlX0dE
X1k7Citjb25zdGV4cHIgY29uc3QgdWludDY0X3QgaGlkWkF4aXNGdWxsVXNhZ2UgPSAoKHVpbnQ2
NF90KWtISURQYWdlX0dlbmVyaWNEZXNrdG9wKSA8PCAzMiB8IGtISURVc2FnZV9HRF9aOworY29u
c3RleHByIGNvbnN0IHVpbnQ2NF90IGhpZFJ6QXhpc0Z1bGxVc2FnZSA9ICgodWludDY0X3Qpa0hJ
RFBhZ2VfR2VuZXJpY0Rlc2t0b3ApIDw8IDMyIHwga0hJRFVzYWdlX0dEX1J6OworY29uc3RleHBy
IGNvbnN0IHVpbnQ2NF90IGhpZEJ1dHRvbjFGdWxsVXNhZ2UgPSAoKHVpbnQ2NF90KWtISURQYWdl
X0J1dHRvbikgPDwgMzIgfCBrSElEVXNhZ2VfQnV0dG9uXzE7Citjb25zdGV4cHIgY29uc3QgdWlu
dDY0X3QgaGlkQnV0dG9uMkZ1bGxVc2FnZSA9ICgodWludDY0X3Qpa0hJRFBhZ2VfQnV0dG9uKSA8
PCAzMiB8IChrSElEVXNhZ2VfQnV0dG9uXzEgKyAxKTsKK2NvbnN0ZXhwciBjb25zdCB1aW50NjRf
dCBoaWRCdXR0b24zRnVsbFVzYWdlID0gKCh1aW50NjRfdClrSElEUGFnZV9CdXR0b24pIDw8IDMy
IHwgKGtISURVc2FnZV9CdXR0b25fMSArIDIpOworY29uc3RleHByIGNvbnN0IHVpbnQ2NF90IGhp
ZEJ1dHRvbjRGdWxsVXNhZ2UgPSAoKHVpbnQ2NF90KWtISURQYWdlX0J1dHRvbikgPDwgMzIgfCAo
a0hJRFVzYWdlX0J1dHRvbl8xICsgMyk7Citjb25zdGV4cHIgY29uc3QgdWludDY0X3QgaGlkQnV0
dG9uMTdGdWxsVXNhZ2UgPSAoKHVpbnQ2NF90KWtISURQYWdlX0J1dHRvbikgPDwgMzIgfCAoa0hJ
RFVzYWdlX0J1dHRvbl8xICsgMTYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuY3BwCmlu
ZGV4IDczMDBlYjMyMWE5NGVjMjQ2NjQwOTdmN2VjMjE2ODIyMjg5NGExMDguLjM5M2UyMzcwMWY1
ZmNiOGVhYTc2MWNmYTRhZTUwOWI4ZTkyYzNmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElER2FtZXBhZC5jcHAKQEAgLTM2
LDYgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogR2VuZXJpY0hJREdhbWVwYWQ6OkdlbmVy
aWNISURHYW1lcGFkKEhJRERldmljZSYmIGRldmljZSwgdW5zaWduZWQgaW5kZXgpCiAgICAgOiBI
SURHYW1lcGFkKFdURk1vdmUoZGV2aWNlKSwgaW5kZXgpCiB7CisgICAgTE9HKEdhbWVwYWQsICJD
cmVhdGluZyBHZW5lcmljSElER2FtZXBhZCAlcCIsIHRoaXMpOworCiAgICAgYXV0byBpbnB1dEVs
ZW1lbnRzID0gaGlkRGV2aWNlKCkudW5pcXVlSW5wdXRFbGVtZW50c0luRGV2aWNlVHJlZU9yZGVy
KCk7CiAKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBpbnB1dEVsZW1lbnRzKSB7CkBAIC01Miwx
MyArNTQsNiBAQCBHZW5lcmljSElER2FtZXBhZDo6R2VuZXJpY0hJREdhbWVwYWQoSElERGV2aWNl
JiYgZGV2aWNlLCB1bnNpZ25lZCBpbmRleCkKICAgICB9CiB9CiAKLVN0cmluZyBHZW5lcmljSElE
R2FtZXBhZDo6aWQoKQotewotICAgIC8vIEN1cnJlbnRseSB0aGUgc3BlYyBoYXMgbm8gZm9ybWF0
dGluZyBmb3IgdGhlIGlkIHN0cmluZy4KLSAgICAvLyBUaGlzIHN0cmluZyBmb3JtYXR0aW5nIG1h
dGNoZXMgRmlyZWZveC4KLSAgICByZXR1cm4gbWFrZVN0cmluZyhoZXgoaGlkRGV2aWNlKCkudmVu
ZG9ySUQoKSwgTG93ZXJjYXNlKSwgJy0nLCBoZXgoaGlkRGV2aWNlKCkucHJvZHVjdElEKCksIExv
d2VyY2FzZSksICctJywgaGlkRGV2aWNlKCkucHJvZHVjdE5hbWUoKSk7Ci19Ci0KIHZvaWQgR2Vu
ZXJpY0hJREdhbWVwYWQ6Om1heWJlQWRkR2VuZXJpY0Rlc2t0b3BFbGVtZW50KEhJREVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgc3dpdGNoIChlbGVtZW50LnVzYWdlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9HZW5lcmljSElER2FtZXBhZC5o
CmluZGV4IGU3YTdjYmQ5NTM5ODFmYzg2NTQ4ZTBmMzIwMzgyNDVmNzhhOWFlMTUuLmQ2NmViMTRi
MDhhOGUzNzIzZjg4MWZjYTJmYzZjYjhiZWExNzQ0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0dlbmVyaWNISURHYW1lcGFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvR2VuZXJpY0hJREdhbWVwYWQuaApAQCAtMzYs
OCArMzYsNiBAQCBwdWJsaWM6CiAgICAgR2VuZXJpY0hJREdhbWVwYWQoSElERGV2aWNlJiYsIHVu
c2lnbmVkIGluZGV4KTsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaWQoKSBmaW5hbDsKLQogICAg
IHZvaWQgbWF5YmVBZGRHZW5lcmljRGVza3RvcEVsZW1lbnQoSElERWxlbWVudCYpOwogICAgIHZv
aWQgbWF5YmVBZGRCdXR0b25FbGVtZW50KEhJREVsZW1lbnQmKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCmluZGV4IDFlMWIy
NjMxNzY1ZDRmNjkyZjQwOGE0OWU2YjMzNmEwNzUxNzRhZWMuLjUxZGM0NGFmM2Q4OWUxMGI4ZWM4
Y2IyMjVkZGM3NDJiNmNkMjNmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFC
TEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQogCisjaW5jbHVkZSAiRHVhbHNob2NrM0hJREdh
bWVwYWQuaCIKICNpbmNsdWRlICJHZW5lcmljSElER2FtZXBhZC5oIgorI2luY2x1ZGUgIktub3du
R2FtZXBhZHMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8SU9LaXQvaGlkL0lP
SElERWxlbWVudC5oPgogI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJRFVzYWdlVGFibGVzLmg+CkBA
IC00MiwxMiArNDQsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IEhJREdhbWVwYWQ6
OmNyZWF0ZShJT0hJRERldmljZVJlZiByYXdEZXZpY2UsIHVuc2lnbmUKIHsKICAgICBhdXRvIGRl
dmljZSA9IEhJRERldmljZSB7IHJhd0RldmljZSB9OwogCi0gICAgLy8gV2hlbiB3ZSBzdXBwb3J0
IHNwZWNpZmljIG1hcHBpbmcgZm9yIGEgcGFydGljdWxhciBkZXZpY2UsIGhlcmUgaXMgd2hlcmUg
d2UnbGwgZGVjaWRlIHdoYXQga2luZCBvZiBISURHYW1lcGFkIHRvIG1ha2UuCi0gICAgLy8gRm9y
IG5vdywgaXQncyBvbmx5IHRoZSBHZW5lcmljSElER2FtZXBhZAotICAgIGF1dG8gbmV3R2FtZXBh
ZCA9IG1ha2VVbmlxdWU8R2VuZXJpY0hJREdhbWVwYWQ+KFdURk1vdmUoZGV2aWNlKSwgaW5kZXgp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBuZXdHYW1lcGFkOworCisgICAgc3dp
dGNoICgoS25vd25HYW1lcGFkKWRldmljZS5mdWxsUHJvZHVjdElkZW50aWZpZXIoKSkgeworICAg
IGNhc2UgRHVhbHNob2NrMzoKKyAgICAgICAgbmV3R2FtZXBhZCA9IG1ha2VVbmlxdWU8RHVhbHNo
b2NrM0hJREdhbWVwYWQ+KFdURk1vdmUoZGV2aWNlKSwgaW5kZXgpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBuZXdHYW1lcGFkID0gbWFrZVVuaXF1ZTxHZW5lcmljSElE
R2FtZXBhZD4oV1RGTW92ZShkZXZpY2UpLCBpbmRleCk7CisgICAgfQogCiAgICAgbmV3R2FtZXBh
ZC0+aW5pdGlhbGl6ZSgpOwotICAgIHJldHVybiBXVEZNb3ZlKG5ld0dhbWVwYWQpOworICAgIHJl
dHVybiBuZXdHYW1lcGFkOwogfQogCiBISURHYW1lcGFkOjpISURHYW1lcGFkKEhJRERldmljZSYm
IGRldmljZSwgdW5zaWduZWQgaW5kZXgpCkBAIC01NSwxMiArNjMsMTQgQEAgSElER2FtZXBhZDo6
SElER2FtZXBhZChISUREZXZpY2UmJiBkZXZpY2UsIHVuc2lnbmVkIGluZGV4KQogICAgICwgbV9k
ZXZpY2UoV1RGTW92ZShkZXZpY2UpKQogewogICAgIG1fY29ubmVjdFRpbWUgPSBtX2xhc3RVcGRh
dGVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisKKyAgICAvLyBDdXJyZW50bHkgdGhlIHNw
ZWMgaGFzIG5vIGZvcm1hdHRpbmcgZm9yIHRoZSBpZCBzdHJpbmcuCisgICAgLy8gVGhpcyBzdHJp
bmcgZm9ybWF0dGluZyBtYXRjaGVzIEZpcmVmb3guCisgICAgbV9pZCA9IG1ha2VTdHJpbmcoaGV4
KG1fZGV2aWNlLnZlbmRvcklEKCksIExvd2VyY2FzZSksICctJywgaGV4KG1fZGV2aWNlLnByb2R1
Y3RJRCgpLCBMb3dlcmNhc2UpLCAnLScsIG1fZGV2aWNlLnByb2R1Y3ROYW1lKCkpOwogfQogCiB2
b2lkIEhJREdhbWVwYWQ6OmluaXRpYWxpemUoKQogewotICAgIG1faWQgPSBpZCgpOwotCiAgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50TWFwLnZhbHVlcygpKQogICAgICAgICBlbGVt
ZW50LT5yZWZyZXNoQ3VycmVudFZhbHVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKaW5kZXggYTM4MmM5ZTY0MTM0MzhhZmY5Zjgy
YWFmZDc1NjFiMDAwMTZjNDdiNC4uNjBmMzM5NGEzYjU4ZGZlZjFmYzg5ODliNDM4MDdmMzllY2M4
MDEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElE
R2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdh
bWVwYWQuaApAQCAtNTIsOCArNTIsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSElER2Ft
ZXBhZChISUREZXZpY2UmJiwgdW5zaWduZWQgaW5kZXgpOwogCi0gICAgdmlydHVhbCBTdHJpbmcg
aWQoKSA9IDA7Ci0KICAgICBIYXNoTWFwPElPSElERWxlbWVudENvb2tpZSwgc3RkOjp1bmlxdWVf
cHRyPEhJREdhbWVwYWRFbGVtZW50Pj4gbV9lbGVtZW50TWFwOwogICAgIFZlY3RvcjxTaGFyZWRH
YW1lcGFkVmFsdWU+IG1fYnV0dG9uVmFsdWVzOwogICAgIFZlY3RvcjxTaGFyZWRHYW1lcGFkVmFs
dWU+IG1fYXhpc1ZhbHVlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9ISUREZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISUREZXZpY2UuaApp
bmRleCBkZGM4ZTYxOThjMmJlMWY3NmEyOGEyYWYxNTFjZDNlNzFhYTkzNWZmLi4wMjJkYjk3ODMy
NmJmNjkzMWZiZDhmMmE5YTI4MDI1ZWM3MDQ2MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvSElERGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0hJRERldmljZS5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHVpbnQxNl90
IHZlbmRvcklEKCkgY29uc3QgeyByZXR1cm4gbV92ZW5kb3JJRDsgfQogICAgIHVpbnQxNl90IHBy
b2R1Y3RJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZHVjdElEOyB9CisgICAgdWludDMyX3QgZnVs
bFByb2R1Y3RJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV92ZW5kb3JJRCA8PCAxNiB8IG1f
cHJvZHVjdElEOyB9CiAgICAgY29uc3QgU3RyaW5nJiBwcm9kdWN0TmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvZHVjdE5hbWU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9ISURFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvSElERWxlbWVudC5oCmluZGV4IDEzNjdjYjg4OTA3NmE3NjBiMzAyNTU0YWQzZDcyYjE2YmUx
YjgxZmEuLmEyMWI0ZWQzOTM3NDY2MGQ5YWU0YjljNWUxZjUxOTg1NWFlYjFjMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISURFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJREVsZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJs
aWM6CiAgICAgQ0ZJbmRleCBwaHlzaWNhbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9waHlzaWNh
bFZhbHVlOyB9CiAgICAgdWludDMyX3QgdXNhZ2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlOyB9
CiAgICAgdWludDMyX3QgdXNhZ2VQYWdlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZVBhZ2U7IH0K
KyAgICB1aW50NjRfdCBmdWxsVXNhZ2UoKSBjb25zdCB7IHJldHVybiAoKHVpbnQ2NF90KW1fdXNh
Z2VQYWdlKSA8PCAzMiB8IG1fdXNhZ2U7IH0KICAgICBJT0hJREVsZW1lbnRDb29raWUgY29va2ll
KCkgY29uc3QgeyByZXR1cm4gbV9jb29raWU7IH0KIAogICAgIHZvaWQgdmFsdWVDaGFuZ2VkKElP
SElEVmFsdWVSZWYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGY3ODhiMTNhY2NiYjg0Y2M5MDRmMGYwOGVkODk2ZWRmZGFmYTljNWMuLjM4N2Nm
OTExMzBlMzlmNTY4ODE5OTFhMDUyZTQ0ZDI4MTBmNDQ5OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNy0z
MCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3BlY2lhbCBI
SUQgbWFwcGluZyBmb3IgdGhlIER1YWxzaG9jayAzIGNvbnRyb2xsZXIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY2MjU1MTk4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAg
ICAgQWRkIGEgdmlydHVhbCBEdWFsc2hvY2szIGFuZCB2ZXJpZnkgYSBmZXcgYXR0cmlidXRlcyBh
Ym91dCBpdC4KKyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvSElER2FtZXBhZHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvR2FtZXBh
ZE1hcHBpbmdzL1NvbnlEdWFsU2hvY2szLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnB1Ymxpc2hSZXBvcnRDYWxsYmFjayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpWaXJ0
dWFsR2FtZXBhZDo6c29ueUR1YWxzaG9jazNNYXBwaW5nKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL21hYy9WaXJ0dWFsR2FtZXBhZC5oOgorCiAyMDIwLTA3LTMwICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG5vbi1pbmNsdXNp
dmUgdGVybWlub2xvZ3kgZnJvbSBXZWJLaXQgdmFyaWFibGUgbmFtZXMgYW5kIHRlc3Qtb25seSBT
UEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWJlNTViZTgzYjkwYzU3YzIyYTFhZjY5MmI2
YWU0YjJkOWFlN2E4OS4uOWIxZWM4NTllMGJiMjc4MWM5NTA5YjYyYjU5OTU3ODAyOTkyZjlmZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3Niw2ICsyNzYsNyBAQAogCQk1MTA0Nzc3NDFE
Mjk4REREMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMy13YWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNDc3NzExRDI5
OEQ4NTAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMtd2FsICovOyB9OwogCQk1
MTA0Nzc3NzFEMjk4RTcyMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3ZlcnkuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA0Nzc3NjFE
Mjk4RTU3MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3ZlcnkuaHRtbCAqLzsgfTsKIAkJNTEwNDc3
NzgxRDI5OTIzQjAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNDc3NzUxRDI5OEUwMzAwOTc0N0VC
IC8qIElEQkRlbGV0ZVJlY292ZXJ5Lm1tICovOyB9OworCQk1MTBBOTFGODI0RDM2MjIxMDBCRkQ4
OUMgLyogU29ueUR1YWxTaG9jazMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBBOTFGNzI0RDM2MjE5MDBCRkQ4OUMgLyogU29ueUR1YWxTaG9jazMu
bW0gKi87IH07CiAJCTUxMTBGQ0YxMUUwMUNENjQwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVU
b1YyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTExMEZDRjAxRTAxQ0Q1MzAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIuaHRt
bCAqLzsgfTsKIAkJNTExMEZDRjYxRTAxQ0Q4MzAwNkY4RDBCIC8qIEluZGV4VXBncmFkZS5zcWxp
dGUzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMTBGQ0YzMUUwMUNENzcwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuc3FsaXRlMyAqLzsgfTsK
IAkJNTExMEZDRjkxRTAxQ0Q4QTAwNkY4RDBCIC8qIEluZGV4VXBncmFkZS5ibG9iIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0YyMUUw
MUNENzcwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuYmxvYiAqLzsgfTsKQEAgLTE5NzAsNiArMTk3
MSw3IEBACiAJCTUxMDQ3NzcxMUQyOThEODUwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5z
cWxpdGUzLXdhbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGZpbGU7IHBhdGggPSAiSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMy13YWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA0Nzc3NTFEMjk4RTAzMDA5NzQ3RUIgLyogSURCRGVs
ZXRlUmVjb3ZlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJ
REJEZWxldGVSZWNvdmVyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNDc3
NzYxRDI5OEU1NzAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5Lmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBJREJEZWxldGVSZWNvdmVyeS5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTBBOTFGNzI0RDM2MjE5MDBCRkQ4OUMgLyogU29ueUR1YWxTaG9jazMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTb255RHVhbFNob2Nr
My5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExMEZDRUYxRTAxQ0JBQTAwNkY4
RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBJREJJbmRleFVwZ3JhZGVUb1YyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTEwRkNGMDFFMDFDRDUzMDA2RjhEMEIgLyogSURCSW5kZXhVcGdyYWRlVG9W
Mi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSURCSW5kZXhVcGdyYWRlVG9WMi5o
dG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTEwRkNGMjFFMDFDRDc3MDA2RjhE
MEIgLyogSW5kZXhVcGdyYWRlLmJsb2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW5kZXhVcGdy
YWRlLmJsb2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDY2LDYgKzM0NjgsNyBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTFFQjEyNjAyNENBNkI1RjAwMENCMDMwIC8qIE1pY3Jv
c29mdFhib3hPbmUubW0gKi8sCiAJCQkJNTFFQjEyNUUyNENBNkI1RjAwMENCMDMwIC8qIFNoZW56
aGVuTG9uZ3NoZW5nd2VpVGVjaG5vbG9neUdhbWVwYWQubW0gKi8sCisJCQkJNTEwQTkxRjcyNEQz
NjIxOTAwQkZEODlDIC8qIFNvbnlEdWFsU2hvY2szLm1tICovLAogCQkJCTUxRUIxMjVGMjRDQTZC
NUYwMDBDQjAzMCAvKiBTb255RHVhbFNob2NrNC5tbSAqLywKIAkJCQk1MUVCMTI2MTI0Q0E2QjVG
MDAwQ0IwMzAgLyogU3RlZWxTZXJpZXNOaW1idXMubW0gKi8sCiAJCQkJNTFFQjEyNjYyNENCODQ5
MzAwMENCMDMwIC8qIFN1bkxpZ2h0QXBwbGljYXRpb25HZW5lcmljTkVTLm1tICovLApAQCAtNTMx
Myw2ICs1MzE2LDcgQEAKIAkJCQlDMTQ5RDU1MDI0MkU5OERGMDAzRUJCMTIgLyogU2xlZXBEaXNh
Ymxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJERkY3QjZEMURBNDg3QUYwMDgxNDYxNCAvKiBT
bmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0RkZBOUUxRUQzQUE4NTAwRjcx
MTFGIC8qIFNuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTEwQTkxRjgyNEQzNjIyMTAwQkZEODlDIC8qIFNvbnlEdWFsU2hvY2szLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFFQjEyNjQyNENBNkI2NjAwMENCMDMwIC8qIFNvbnlEdWFsU2hvY2s0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTUxQTQxMUFFNjAwNDQ3QzRDIC8qIFNwYWNlYmFyU2Ny
b2xsaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3RjRBQUEwMjA4RkFFRjAwMEE2OEU5RSAv
KiBTU0xLZXlHZW5lcmF0b3IubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hJREdhbWVwYWRzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvSElER2FtZXBhZHMubW0KaW5kZXggODc1YjgxMTU3MGZmMjY1MmU0OWZkZjA2
NjQ0NWZmNTMxMWYyNjdkYi4uMmUwZjQ5MWQ5MDVkMzkyZmEyYTU0YWQ1YTUzMTYyMGVkMjJmMDk3
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSElER2FtZXBhZHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSElER2FtZXBhZHMubW0KQEAg
LTM1OCw2ICszNTgsNjkgQEAgVEVTVChHYW1lcGFkLCBHYW1lcGFkU3RhdGUpCiAgICAgRVhQRUNU
X1RSVUUoW21lc3NhZ2VIYW5kbGVyLmdldCgpLm1lc3NhZ2VzWzFdIGlzRXF1YWxUb1N0cmluZzpA
IkRpc2Nvbm5lY3Q6IFwiNzktMTEtVmlydHVhbCBTaGVuemhlbiBMb25nc2hlbmd3ZWkgVGVjaG5v
bG9neSBHYW1lcGFkXCIiXSk7CiB9CiAKK1RFU1QoR2FtZXBhZCwgRHVhbHNob2NrM0Jhc2ljKQor
eworICAgIGF1dG8ga2V5V2luZG93U3dpenpsZXIgPSBtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9k
U3dpenpsZXI+KFtOU0FwcGxpY2F0aW9uIGNsYXNzXSwgQHNlbGVjdG9yKGtleVdpbmRvdyksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihnZXRLZXlXaW5kb3dGb3JUZXN0aW5nKSk7CisKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbR2FtZXBhZE1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkg
bmFtZTpAImdhbWVwYWQiXTsKKworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tU
ZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNl
dFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJnYW1l
cGFkIl07CisKKyAgICBbc2NoZW1lSGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVy
Ol4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBhdXRv
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRh
c2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0
aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczptYWluQnl0ZXMgbGVuZ3RoOnN0cmxlbihtYWluQnl0ZXMpXV07Cisg
ICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAgfV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBr
ZXlXaW5kb3dGb3JUZXN0aW5nID0gW3dlYlZpZXcgd2luZG93XTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImdhbWVwYWQ6Ly9ob3N0L21haW4uaHRtbCJdXV07CisKKyAgICBbW3dl
YlZpZXcgd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6d2ViVmlldy5nZXQoKV07CisKKyAgICAv
LyBSZXNpZ25pbmcvcmVpbnN0YXRpbmcgdGhlIGtleSB3aW5kb3cgc3RhdGUgdHJpZ2dlcnMgdGhl
ICJrZXkgd2luZG93IGRpZCBjaGFuZ2UiIG5vdGlmaWNhdGlvbiB0aGF0IFdLV2ViVmlldyBjdXJy
ZW50bHkKKyAgICAvLyBuZWVkcyB0byBjb252aW5jZSBpdCB0byBtb25pdG9yIGdhbWVwYWQgZGV2
aWNlcworICAgIFtbd2ViVmlldyB3aW5kb3ddIHJlc2lnbktleVdpbmRvd107CisgICAgW1t3ZWJW
aWV3IHdpbmRvd10gbWFrZUtleVdpbmRvd107CisKKyAgICAvLyBDb25uZWN0IGEgZ2FtZXBhZCBh
bmQgbWFrZSBpdCB2aXNpYmxlIHRvIHRoZSBwYWdlCisgICAgYXV0byBnYW1lcGFkID0gbWFrZVVu
aXF1ZTxWaXJ0dWFsR2FtZXBhZD4oVmlydHVhbEdhbWVwYWQ6OnNvbnlEdWFsc2hvY2szTWFwcGlu
ZygpKTsKKyAgICB3aGlsZSAoIVt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bv
b2wgX251bWJlck9mQ29ubmVjdGVkR2FtZXBhZHNGb3JUZXN0aW5nXSkKKyAgICAgICAgVXRpbDo6
c2xlZXAoMC4wMSk7CisKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlv
bi5wcm9jZXNzUG9vbCBfbnVtYmVyT2ZDb25uZWN0ZWRISURHYW1lcGFkc0ZvclRlc3RpbmddLCAx
dSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bv
b2wgX251bWJlck9mQ29ubmVjdGVkR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtHYW1lcGFkc0ZvclRl
c3RpbmddLCAwdSk7CisKKyAgICBnYW1lcGFkLT5zZXRCdXR0b25WYWx1ZSgwLCAwLjc1KTsKKyAg
ICBnYW1lcGFkLT5wdWJsaXNoUmVwb3J0KCk7CisKKyAgICAvLyBXYWl0IGZvciB0aGUgcGFnZSB0
byB0ZWxsIHVzIGEgZ2FtZXBhZCBjb25uZWN0ZWQKKyAgICBVdGlsOjpydW4oJmRpZFJlY2VpdmVN
ZXNzYWdlKTsKKyAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZhbHNlOworCisgICAgRVhQRUNUX0VR
KG1lc3NhZ2VIYW5kbGVyLmdldCgpLm1lc3NhZ2VzLnNpemUoKSwgMXUpOworICAgIEVYUEVDVF9U
UlVFKFttZXNzYWdlSGFuZGxlci5nZXQoKS5tZXNzYWdlc1swXSBpc0VxdWFsVG9TdHJpbmc6QCJc
IjU0Yy0yNjgtVmlydHVhbCBEdWFsc2hvY2szXCIiXSk7CisKKyAgICBib29sIGRvbmUgPSBmYWxz
ZTsKKyAgICBhdXRvIHJlc3VsdEJsb2NrID0gWyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jl
c3VsdFtAImdhbWVwYWRDb3VudCJdIGlzRXF1YWxUb051bWJlcjpAKDEpXSk7CisgICAgICAgIEVY
UEVDVF9FUSgoKE5TQXJyYXkgKilyZXN1bHRbQCJnYW1lcGFkQnV0dG9ucyJdWzBdKS5jb3VudCwg
MTd1KTsKKyAgICAgICAgRVhQRUNUX0VRKCgoTlNBcnJheSAqKXJlc3VsdFtAImdhbWVwYWRBeGVz
Il1bMF0pLmNvdW50LCA0dSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKworICAg
IFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QChwb2xsR2FtZXBhZFN0YXRlRnVuY3Rpb24p
IGFyZ3VtZW50czpuaWwgaW5GcmFtZTpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQu
cGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOnJlc3VsdEJsb2NrXTsKKworICAgIFV0aWw6OnJ1
bigmZG9uZSk7CisgICAgZGlkUmVjZWl2ZU1lc3NhZ2UgPSB0cnVlOworfQorCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKEhJRF9GUkFNRVdPUkspICYmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9HYW1lcGFkTWFwcGluZ3MvU29ueUR1YWxTaG9jazMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L21hYy9HYW1lcGFkTWFwcGluZ3MvU29ueUR1YWxTaG9jazMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBmZDAz
NTMxNGM4NGYxZDkwZDMwZWY3Y2FhMjUyYzg1NjNkODJkNQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0dhbWVwYWRNYXBwaW5ncy9Tb255RHVhbFNob2NrMy5tbQpA
QCAtMCwwICsxLDIwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiVmlydHVhbEdhbWVwYWQuaCIKKworI2lmIEhBVkUoSElEX0ZSQU1FV09SSykgJiYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8SElEL0hJRFVzZXJEZXZpY2UuaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjb25zdCB1aW50OF90IER1YWxzaG9jazNEZXNjcmlw
dG9yW10gPSB7CisgICAgMHgwNSwgMHgwMSwgICAgICAgIC8vIFVzYWdlIFBhZ2UgKEdlbmVyaWMg
RGVza3RvcCBDdHJscykKKyAgICAweDA5LCAweDA0LCAgICAgICAgLy8gVXNhZ2UgKEpveXN0aWNr
KQorICAgIDB4QTEsIDB4MDEsICAgICAgICAvLyBDb2xsZWN0aW9uIChBcHBsaWNhdGlvbikKKyAg
ICAweEExLCAweDAyLCAgICAgICAgLy8gICBDb2xsZWN0aW9uIChMb2dpY2FsKQorICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgICAgUmVwb3J0IElEIC0gVG90YWwgKDEpIGJ5dGUKKyAgICAweDg1
LCAweDAxLCAgICAgICAgLy8gICAgIFJlcG9ydCBJRCAoMSkKKyAgICAweDc1LCAweDA4LCAgICAg
ICAgLy8gICAgIFJlcG9ydCBTaXplICg4KQorICAgIDB4OTUsIDB4MDEsICAgICAgICAvLyAgICAg
UmVwb3J0IENvdW50ICgxKQorICAgIDB4MTUsIDB4MDAsICAgICAgICAvLyAgICAgTG9naWNhbCBN
aW5pbXVtICgwKQorICAgIDB4MjYsIDB4RkYsIDB4MDAsICAvLyAgICAgTG9naWNhbCBNYXhpbXVt
ICgyNTUpCisgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAoMSkgYnl0ZSByZXBvcnQgZm9y
IHVua25vd24gcG9pbnRlciAtIFRvdGFsICgyKSBieXRlcworICAgIDB4ODEsIDB4MDMsICAgICAg
ICAvLyAgICAgSW5wdXQgKENvbnN0LFZhcixBYnMsTm8gV3JhcCxMaW5lYXIsUHJlZmVycmVkIFN0
YXRlLE5vIE51bGwgUG9zaXRpb24pCisgICAgMHg3NSwgMHgwMSwgICAgICAgIC8vICAgICBSZXBv
cnQgU2l6ZSAoMSkKKyAgICAweDk1LCAweDEzLCAgICAgICAgLy8gICAgIFJlcG9ydCBDb3VudCAo
MTkpCisgICAgMHgxNSwgMHgwMCwgICAgICAgIC8vICAgICBMb2dpY2FsIE1pbmltdW0gKDApCisg
ICAgMHgyNSwgMHgwMSwgICAgICAgIC8vICAgICBMb2dpY2FsIE1heGltdW0gKDEpCisgICAgMHgz
NSwgMHgwMCwgICAgICAgIC8vICAgICBQaHlzaWNhbCBNaW5pbXVtICgwKQorICAgIDB4NDUsIDB4
MDEsICAgICAgICAvLyAgICAgUGh5c2ljYWwgTWF4aW11bSAoMSkKKyAgICAweDA1LCAweDA5LCAg
ICAgICAgLy8gICAgIFVzYWdlIFBhZ2UgKEJ1dHRvbikKKyAgICAweDE5LCAweDAxLCAgICAgICAg
Ly8gICAgIFVzYWdlIE1pbmltdW0gKDB4MDEpCisgICAgMHgyOSwgMHgxMywgICAgICAgIC8vICAg
ICBVc2FnZSBNYXhpbXVtICgweDEzKQorICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgKDE5
KSBiaXRzIGZvciBkaWdpdGFsIGJ1dHRvbnMgLSBUb3RhbCAoNCkgYnl0ZXMgKDMpIGJpdHMKKyAg
ICAweDgxLCAweDAyLCAgICAgICAgLy8gICAgIElucHV0IChEYXRhLFZhcixBYnMsTm8gV3JhcCxM
aW5lYXIsUHJlZmVycmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24pCisgICAgMHg3NSwgMHgwMSwg
ICAgICAgIC8vICAgICBSZXBvcnQgU2l6ZSAoMSkKKyAgICAweDk1LCAweDBELCAgICAgICAgLy8g
ICAgIFJlcG9ydCBDb3VudCAoMTMpCisgICAgMHgwNiwgMHgwMCwgMHhGRiwgIC8vICAgICBVc2Fn
ZSBQYWdlIChWZW5kb3IgRGVmaW5lZCAweEZGMDApCisgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgICAoMTMpIGJpdHMgcGFkZGluZyAtIFRvdGFsICg2KSBieXRlcworICAgIDB4ODEsIDB4MDMs
ICAgICAgICAvLyAgICAgSW5wdXQgKENvbnN0LFZhcixBYnMsTm8gV3JhcCxMaW5lYXIsUHJlZmVy
cmVkIFN0YXRlLE5vIE51bGwgUG9zaXRpb24pCisgICAgMHgxNSwgMHgwMCwgICAgICAgIC8vICAg
ICBMb2dpY2FsIE1pbmltdW0gKDApCisgICAgMHgyNiwgMHhGRiwgMHgwMCwgIC8vICAgICBMb2dp
Y2FsIE1heGltdW0gKDI1NSkKKyAgICAweDA1LCAweDAxLCAgICAgICAgLy8gICAgIFVzYWdlIFBh
Z2UgKEdlbmVyaWMgRGVza3RvcCBDdHJscykKKyAgICAweDA5LCAweDAxLCAgICAgICAgLy8gICAg
IFVzYWdlIChQb2ludGVyKQorICAgIDB4QTEsIDB4MDAsICAgICAgICAvLyAgICAgQ29sbGVjdGlv
biAoUGh5c2ljYWwpCisgICAgMHg3NSwgMHgwOCwgICAgICAgIC8vICAgICAgIFJlcG9ydCBTaXpl
ICg4KQorICAgIDB4OTUsIDB4MDQsICAgICAgICAvLyAgICAgICBSZXBvcnQgQ291bnQgKDQpCisg
ICAgMHgzNSwgMHgwMCwgICAgICAgIC8vICAgICAgIFBoeXNpY2FsIE1pbmltdW0gKDApCisgICAg
MHg0NiwgMHhGRiwgMHgwMCwgIC8vICAgICAgIFBoeXNpY2FsIE1heGltdW0gKDI1NSkKKyAgICAw
eDA5LCAweDMwLCAgICAgICAgLy8gICAgICAgVXNhZ2UgKFgpCisgICAgMHgwOSwgMHgzMSwgICAg
ICAgIC8vICAgICAgIFVzYWdlIChZKQorICAgIDB4MDksIDB4MzIsICAgICAgICAvLyAgICAgICBV
c2FnZSAoWikKKyAgICAweDA5LCAweDM1LCAgICAgICAgLy8gICAgICAgVXNhZ2UgKFJ6KQorICAg
ICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAoNCkgYXhlcyBhdCAxIGJ5dGUgZWFjaCAtIFRv
dGFsICgxMCkgYnl0ZXMKKyAgICAweDgxLCAweDAyLCAgICAgICAgLy8gICAgICAgSW5wdXQgKERh
dGEsVmFyLEFicyxObyBXcmFwLExpbmVhcixQcmVmZXJyZWQgU3RhdGUsTm8gTnVsbCBQb3NpdGlv
bikKKyAgICAweEMwLCAgICAgICAgICAgICAgLy8gICAgIEVuZCBDb2xsZWN0aW9uCisgICAgMHgw
NSwgMHgwMSwgICAgICAgIC8vICAgICBVc2FnZSBQYWdlIChHZW5lcmljIERlc2t0b3AgQ3RybHMp
CisgICAgMHg3NSwgMHgwOCwgICAgICAgIC8vICAgICBSZXBvcnQgU2l6ZSAoOCkKKyAgICAweDk1
LCAweDI3LCAgICAgICAgLy8gICAgIFJlcG9ydCBDb3VudCAoMzkpCisgICAgMHgwOSwgMHgwMSwg
ICAgICAgIC8vICAgICBVc2FnZSAoUG9pbnRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICAgICgzOSkgcG9pbnRlcnMgYXQgMSBieXRlIGVhY2ggLSBUb3RhbCAoNDkpIGJ5dGVzCisgICAg
MHg4MSwgMHgwMiwgICAgICAgIC8vICAgICBJbnB1dCAoRGF0YSxWYXIsQWJzLE5vIFdyYXAsTGlu
ZWFyLFByZWZlcnJlZCBTdGF0ZSxObyBOdWxsIFBvc2l0aW9uKQorICAgIDB4NzUsIDB4MDgsICAg
ICAgICAvLyAgICAgUmVwb3J0IFNpemUgKDgpCisgICAgMHg5NSwgMHgzMCwgICAgICAgIC8vICAg
ICBSZXBvcnQgQ291bnQgKDQ4KQorICAgIDB4MDksIDB4MDEsICAgICAgICAvLyAgICAgVXNhZ2Ug
KFBvaW50ZXIpCisgICAgMHg5MSwgMHgwMiwgICAgICAgIC8vICAgICBPdXRwdXQgKERhdGEsVmFy
LEFicyxObyBXcmFwLExpbmVhcixQcmVmZXJyZWQgU3RhdGUsTm8gTnVsbCBQb3NpdGlvbixOb24t
dm9sYXRpbGUpCisgICAgMHg3NSwgMHgwOCwgICAgICAgIC8vICAgICBSZXBvcnQgU2l6ZSAoOCkK
KyAgICAweDk1LCAweDMwLCAgICAgICAgLy8gICAgIFJlcG9ydCBDb3VudCAoNDgpCisgICAgMHgw
OSwgMHgwMSwgICAgICAgIC8vICAgICBVc2FnZSAoUG9pbnRlcikKKyAgICAweEIxLCAweDAyLCAg
ICAgICAgLy8gICAgIEZlYXR1cmUgKERhdGEsVmFyLEFicyxObyBXcmFwLExpbmVhcixQcmVmZXJy
ZWQgU3RhdGUsTm8gTnVsbCBQb3NpdGlvbixOb24tdm9sYXRpbGUpCisgICAgMHhDMCwgICAgICAg
ICAgICAgIC8vICAgRW5kIENvbGxlY3Rpb24KKyAgICAweEExLCAweDAyLCAgICAgICAgLy8gICBD
b2xsZWN0aW9uIChMb2dpY2FsKQorICAgIDB4ODUsIDB4MDIsICAgICAgICAvLyAgICAgUmVwb3J0
IElEICgyKQorICAgIDB4NzUsIDB4MDgsICAgICAgICAvLyAgICAgUmVwb3J0IFNpemUgKDgpCisg
ICAgMHg5NSwgMHgzMCwgICAgICAgIC8vICAgICBSZXBvcnQgQ291bnQgKDQ4KQorICAgIDB4MDks
IDB4MDEsICAgICAgICAvLyAgICAgVXNhZ2UgKFBvaW50ZXIpCisgICAgMHhCMSwgMHgwMiwgICAg
ICAgIC8vICAgICBGZWF0dXJlIChEYXRhLFZhcixBYnMsTm8gV3JhcCxMaW5lYXIsUHJlZmVycmVk
IFN0YXRlLE5vIE51bGwgUG9zaXRpb24sTm9uLXZvbGF0aWxlKQorICAgIDB4QzAsICAgICAgICAg
ICAgICAvLyAgIEVuZCBDb2xsZWN0aW9uCisgICAgMHhBMSwgMHgwMiwgICAgICAgIC8vICAgQ29s
bGVjdGlvbiAoTG9naWNhbCkKKyAgICAweDg1LCAweEVFLCAgICAgICAgLy8gICAgIFJlcG9ydCBJ
RCAoLTE4KQorICAgIDB4NzUsIDB4MDgsICAgICAgICAvLyAgICAgUmVwb3J0IFNpemUgKDgpCisg
ICAgMHg5NSwgMHgzMCwgICAgICAgIC8vICAgICBSZXBvcnQgQ291bnQgKDQ4KQorICAgIDB4MDks
IDB4MDEsICAgICAgICAvLyAgICAgVXNhZ2UgKFBvaW50ZXIpCisgICAgMHhCMSwgMHgwMiwgICAg
ICAgIC8vICAgICBGZWF0dXJlIChEYXRhLFZhcixBYnMsTm8gV3JhcCxMaW5lYXIsUHJlZmVycmVk
IFN0YXRlLE5vIE51bGwgUG9zaXRpb24sTm9uLXZvbGF0aWxlKQorICAgIDB4QzAsICAgICAgICAg
ICAgICAvLyAgIEVuZCBDb2xsZWN0aW9uCisgICAgMHhBMSwgMHgwMiwgICAgICAgIC8vICAgQ29s
bGVjdGlvbiAoTG9naWNhbCkKKyAgICAweDg1LCAweEVGLCAgICAgICAgLy8gICAgIFJlcG9ydCBJ
RCAoLTE3KQorICAgIDB4NzUsIDB4MDgsICAgICAgICAvLyAgICAgUmVwb3J0IFNpemUgKDgpCisg
ICAgMHg5NSwgMHgzMCwgICAgICAgIC8vICAgICBSZXBvcnQgQ291bnQgKDQ4KQorICAgIDB4MDks
IDB4MDEsICAgICAgICAvLyAgICAgVXNhZ2UgKFBvaW50ZXIpCisgICAgMHhCMSwgMHgwMiwgICAg
ICAgIC8vICAgICBGZWF0dXJlIChEYXRhLFZhcixBYnMsTm8gV3JhcCxMaW5lYXIsUHJlZmVycmVk
IFN0YXRlLE5vIE51bGwgUG9zaXRpb24sTm9uLXZvbGF0aWxlKQorICAgIDB4QzAsICAgICAgICAg
ICAgICAvLyAgIEVuZCBDb2xsZWN0aW9uCisgICAgMHhDMCwgICAgICAgICAgICAgIC8vIEVuZCBD
b2xsZWN0aW9uCit9OworCisvLyBGSVhNRTogSGF0c3dpdGNoIGlzIG5vdCB5ZXQgYWRkcmVzc2Fi
bGUgYnkgdGVzdAorY29uc3Qgc2l6ZV90IER1YWxzaG9jazNCdXR0b25Db3VudCA9IDE5OworY29u
c3Qgc2l6ZV90IER1YWxzaG9jazNBeGlzQ291bnQgPSA0OworY29uc3Qgc2l6ZV90IER1YWxzaG9j
azNSZXBvcnRTaXplID0gNDk7Citjb25zdCBjaGFyKiBEdWFsc2hvY2szTmFtZSA9ICJWaXJ0dWFs
IER1YWxzaG9jazMiOworCisvLyBSZXBvcnQgbGF5b3V0OgorLy8gfFJlcG9ydElEfCB8PG5vbmU+
fCB8YjEtYjh8IHxiOS1iMTZ8IHwoNSBiaXRzIHBhZGRpbmcgaGlnaCkgYjE3LWIxOXwgfHBhZGRp
bmd8IHxBeGlzMXwgfEF4aXMyfCB8QXhpczN8IHxBeGlzNHwKKy8vICgzOXgpIHxHZW5lcmljIHBv
aW50ZXJ8CisvLyBBbmFsb2cgYnV0dG9uIHJlYWRvdXRzIHNob3cgdXAgYXQgc3BlY2lmaWMgcGxh
Y2VzIGluIHRob3NlIDM5IGdlbmVyaWMgMSBieXRlIHBvaW50ZXJzCisvLyBQaHlzaWNhbCBidXR0
b25zIG9uIHRoZSBkZXZpY2UgbWFwIHRvIGJ1dHRvbiBiaXRzIDEtMTcsIGJ1dCB0aGVyZSBpcyBu
byBhY3R1YXRvciBmb3IgYjE4IGFuZCBiMTkKKy8vIDEyIG9mIHRob3NlIHBoeXNpY2FsIGJ1dHRv
bnMgYWxzbyBoYXZlIGFuIGFuYWxvZyB2YWx1ZSBtYXBwaW5nIGludG8gdGhlIGdlbmVyaWMgcG9p
bnRlcnMKKworc3RhdGljIHZvaWQgcHVibGlzaFJlcG9ydENhbGxiYWNrKFZlY3RvcjxmbG9hdD4m
IGJ1dHRvblZhbHVlcywgVmVjdG9yPGZsb2F0PiYgYXhpc1ZhbHVlcywgSElEVXNlckRldmljZSAq
dXNlckRldmljZSkKK3sKKyAgICB1aW50OF90IHJlcG9ydERhdGFbRHVhbHNob2NrM1JlcG9ydFNp
emVdOworICAgIGJ6ZXJvKHJlcG9ydERhdGEsIER1YWxzaG9jazNSZXBvcnRTaXplKTsKKyAgICBz
aXplX3QgcmVwb3J0SW5kZXggPSAwOworCisgICAgLy8gUmVwb3J0IElECisgICAgcmVwb3J0RGF0
YVtyZXBvcnRJbmRleCsrXSA9IDB4MDE7CisKKyAgICAvLyBDb25zdGFudAorICAgIHJlcG9ydERh
dGFbcmVwb3J0SW5kZXgrK10gPSAweDAwOworCisgICAgLy8gRGlnaXRhbCBidXR0b25zIHNwYW4g
dGhlIG5leHQgMyBieXRlcworICAgIHVpbnQ4X3QgYnV0dG9uQnl0ZSA9IDB4MDA7CisgICAgbG9u
ZyBidXR0b25CaXQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAgICAg
ICAgYnV0dG9uQml0ID0gbHJvdW5kKGJ1dHRvblZhbHVlc1tpXSk7CisgICAgICAgIGJ1dHRvbkJ5
dGUgfD0gYnV0dG9uQml0IDw8IGk7CisgICAgfQorICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgr
K10gPSBidXR0b25CeXRlOworCisgICAgYnV0dG9uQnl0ZSA9IDB4MDA7CisgICAgZm9yIChzaXpl
X3QgaSA9IDg7IGkgPCAxNjsgKytpKSB7CisgICAgICAgIGJ1dHRvbkJpdCA9IGxyb3VuZChidXR0
b25WYWx1ZXNbaV0pOworICAgICAgICBidXR0b25CeXRlIHw9IGJ1dHRvbkJpdCA8PCAoaSAtIDgp
OworICAgIH0KKyAgICByZXBvcnREYXRhW3JlcG9ydEluZGV4KytdID0gYnV0dG9uQnl0ZTsKKwor
ICAgIGJ1dHRvbkJ5dGUgPSAweDAwOworICAgIGZvciAoc2l6ZV90IGkgPSAxNjsgaSA8IDE5OyAr
K2kpIHsKKyAgICAgICAgYnV0dG9uQml0ID0gbHJvdW5kKGJ1dHRvblZhbHVlc1tpXSk7CisgICAg
ICAgIGJ1dHRvbkJ5dGUgfD0gYnV0dG9uQml0IDw8IChpIC0gMTYpOworICAgIH0KKyAgICByZXBv
cnREYXRhW3JlcG9ydEluZGV4KytdID0gYnV0dG9uQnl0ZTsKKworICAgIC8vIFBhZGRpbmcgYnl0
ZQorICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAweDAwOworCisgICAgLy8gQXhlcyAo
MSBieXRlIGVhY2gpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAg
IHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAodWludDhfdCkoYXhpc1ZhbHVlc1tpXSAqIDI1
NSk7CisKKyAgICAvLyBGaXJzdCA0IGdlbmVyaWMgcG9pbnRzIGFyZSBhbHdheXMgMHgwMAorICAg
IHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAweDAwOworICAgIHJlcG9ydERhdGFbcmVwb3J0
SW5kZXgrK10gPSAweDAwOworICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAweDAwOwor
ICAgIHJlcG9ydERhdGFbcmVwb3J0SW5kZXgrK10gPSAweDAwOworCisgICAgLy8gVGhlIG5leHQg
dHdlbHZlIGdlbmVyaWMgcG9pbnRlcnMgbWFwIHRvIHNwZWNpZmljIGJ1dHRvbnMgaW4gb3JkZXIK
KyAgICBmb3IgKHNpemVfdCBpID0gNDsgaSA8IDE2OyArK2kpCisgICAgICAgIHJlcG9ydERhdGFb
cmVwb3J0SW5kZXgrK10gPSAodWludDhfdCkoYnV0dG9uVmFsdWVzW2ldICogMjU1KTsKKworICAg
IGF1dG8gbnNSZXBvcnREYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRl
czpyZXBvcnREYXRhIGxlbmd0aDpEdWFsc2hvY2szUmVwb3J0U2l6ZV0pOworICAgIFt1c2VyRGV2
aWNlIGhhbmRsZVJlcG9ydDpuc1JlcG9ydERhdGEuZ2V0KCkgZXJyb3I6bmlsXTsKK30KKworR2Ft
ZXBhZE1hcHBpbmcgVmlydHVhbEdhbWVwYWQ6OnNvbnlEdWFsc2hvY2szTWFwcGluZygpCit7Cisg
ICAgcmV0dXJuIHsKKyAgICAgICAgRHVhbHNob2NrM0Rlc2NyaXB0b3IsCisgICAgICAgIHNpemVv
ZihEdWFsc2hvY2szRGVzY3JpcHRvciksCisgICAgICAgIER1YWxzaG9jazNOYW1lLAorICAgICAg
ICBISURWZW5kb3JJRDo6U29ueSwKKyAgICAgICAgSElEUHJvZHVjdElEOjpEdWFsc2hvY2szLAor
ICAgICAgICBEdWFsc2hvY2szQnV0dG9uQ291bnQsCisgICAgICAgIER1YWxzaG9jazNBeGlzQ291
bnQsCisgICAgICAgIHB1Ymxpc2hSZXBvcnRDYWxsYmFjaworICAgIH07Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEhBVkUoSElEX0ZSQU1FV09SSykgJiYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL1ZpcnR1YWxHYW1lcGFkLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9WaXJ0dWFsR2Ft
ZXBhZC5oCmluZGV4IDJhMDUzZjRhNDI4ODBjMGM2ZDY2ZDc5MDlkNjhkOWNmODMzOGQ0ZGMuLjli
MTY1NmEwY2Q0MDc1YjdmOTYzOGNmZjEzZDI1MTkwZDdmZTA3NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL1ZpcnR1YWxHYW1lcGFkLmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvVmlydHVhbEdhbWVwYWQuaApAQCAtNjAsNiArNjAsNyBAQCBlbnVtIGNsYXNzIEhJ
RFByb2R1Y3RJRCA6IHVpbnQxNl90IHsKICAgICBYYm94T25lMSA9IDB4MDJlYSwKICAgICBYYm94
T25lMiA9IDB4MDJlMCwKICAgICBYYm94T25lMyA9IDB4MDJmZCwKKyAgICBEdWFsc2hvY2szID0g
MHgwMjY4LAogICAgIER1YWxzaG9jazRfMSA9IDB4MDVjNCwKICAgICBEdWFsc2hvY2s0XzIgPSAw
eDA5Y2MsCiB9OwpAQCAtODIsNiArODMsNyBAQCBjbGFzcyBWaXJ0dWFsR2FtZXBhZCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEdhbWVwYWRNYXBwaW5nIG1pY3Jvc29mdFhib3hPbmVNYXBwaW5nKCk7
CiAgICAgc3RhdGljIEdhbWVwYWRNYXBwaW5nIHNoZW56aGVuTG9uZ3NoZW5nd2VpVGVjaG5vbG9n
eUdhbWVwYWRNYXBwaW5nKCk7CisgICAgc3RhdGljIEdhbWVwYWRNYXBwaW5nIHNvbnlEdWFsc2hv
Y2szTWFwcGluZygpOwogICAgIHN0YXRpYyBHYW1lcGFkTWFwcGluZyBzb255RHVhbHNob2NrNE1h
cHBpbmcoKTsKICAgICBzdGF0aWMgR2FtZXBhZE1hcHBpbmcgc3RlZWxTZXJpZXNOaW1idXNNYXBw
aW5nKCk7CiAgICAgc3RhdGljIEdhbWVwYWRNYXBwaW5nIHN1bkxpZ2h0QXBwbGljYXRpb25HZW5l
cmljTkVTTWFwcGluZygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>